/ / Sincronización del traductor angular en JS - javascript, angularjs, internacionalización, traductor angular

Angular Translate problema de sincronicidad en JS - javascript, angularjs, internacionalización, traducción angular

El traductor angular funciona muy bien como filtro en la vista. Estoy usando archivos-estáticos-traductor-angulares con archivos externos como locale-en.json etc.

El problema es cuando trato de hacer algo como esto:

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

Siempre recibo una promesa, y en la interfaz de usuario se muestra como {} en lugar de la palabra nombre para inglés etc.

¿Cuál es la forma correcta de traducir en JS utilizando la traducción angular?

EDITAR: Intenté esto y obtuve el siguiente resultado (aún no resuelto)

 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

Respuestas

0 para la respuesta № 1
var placeholder = "";
$translate("placeholder.NAME").then(function (translatedValue) {
placeholder = translatedValue;
});

0 para la respuesta № 2

Recomiendo mantener su controlador libre de la lógica de traducción y traducir sus cadenas directamente dentro de su vista de esta manera:

<h1>{{ "TITLE.HELLO_WORLD" | translate }}</h1>

0 para la respuesta № 3

Puedes usar instant Función para obtener el valor sin la promesa:

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

Sin embargo, esto no espera a que se carguen los archivos de traducción. Debe asegurarse de que está llamando a esto después de que se carguen los archivos de traducción.


0 para la respuesta № 4

Desde el sitio web http://angular-translate.github.io/docs/#/guide/03_using-translate-service635

app.controller("Ctrl", ["$scope", "$translate", function ($scope, $translate) {
$translate(["HEADLINE", "PARAGRAPH", "NAMESPACE.PARAGRAPH"]).then(function (translations) {
$scope.headline = translations.HEADLINE;
$scope.paragraph = translations.PARAGRAPH;
$scope.namespaced_paragraph = translations["NAMESPACE.PARAGRAPH"];
});
}]);