1

Угловой перевод отлично работает как фильтр в представлении. Я использую угловой переводить-погрузчик-статические-файлы с внешними файлами, такие как locale-en.json и т.д.Угловой перевод синхронности в JS

Проблемы заключается в том, когда я пытаюсь сделать что-то вроде этого:

var placeholder = $translate('placeholder.NAME') 
        .then(function (translatedValue) { 
         return translatedValue; 
        }); 

Я всегда получаю обещание назад, и в пользовательском интерфейсе он отображается как {} вместо слова NAME для английского и т. д.

Каков правильный способ перевода в JS с использованием углового перевода?

EDIT: Пробовал это и получил следующий результат (до сих пор не решена)

var placeholder = ''; 
       $translate('placeholder.NAME').then(function (translatedValue) { 
        console.log(translatedValue); 
        placeholder = translatedValue; 
       }, function(err){ 
        console.log(err); // returns placeholder.NAME 
       }); 
       console.log(placeholder); // returns empty string 

ответ

0
var placeholder = ''; 
$translate('placeholder.NAME').then(function (translatedValue) { 
    placeholder = translatedValue; 
}); 
+0

Я попробовал это, тоже - но я попробую еще раз. – itamar

+0

@itamar Это зависит от того, как вы в конечном итоге используете переменную 'placeholder'. Вероятно, это должен быть '$ scope.placeholder'. – zeroflagL

+0

Он фактически используется для удаления в массив областей видимости, поэтому я сохраняю его как локальную переменную. – itamar

0

Я рекомендую держать контроллер свободным от логики перевода и перевести ваши строки прямо внутри вашей точки зрения, как это:

<h1>{{ 'TITLE.HELLO_WORLD' | translate }}</h1> 
+0

есть. Дело в том, что это уже работает - мне нужно делать переводы в пути контроллера до отображения данных. – itamar

0

Вы можете использовать instant функцию, чтобы получить значение без обещания:

var translation = $translate.instant('placeholder.NAME'); 

Однако это не дожидаясь, когда файлы перевода будут загружены. Вы должны убедиться, что вы вызываете это после загрузки файлов перевода.