/ Formato de moneda de la directiva / angularjs de acuerdo con el idioma de traducción elegido - angularjs, directiva angularjs, configuración regional, traducción angular, formato de moneda

Formato de la moneda de la directiva angularjs de acuerdo con el idioma de traducción elegido - angularjs, directiva angularjs, configuración regional, traducción angular, formato de moneda

Estoy formateando un número en el formato de moneda, con decimales y coma / punto para marcar los miles.

app.directive("format", ["$filter", function ($filter) {
return {
require: "?ngModel",
link: function (scope, elem, attrs, ctrl) {
if (!ctrl) return;
ctrl.$formatters.unshift(function (a) {
return $filter(attrs.format)(ctrl.$modelValue)
});
elem.bind("blur", function(event) {
var plainNumber = elem.val().replace(/[^d|-+|.+]/g, "");
elem.val($filter(attrs.format)(plainNumber));
});
}
};
}]);

Mi aplicación tiene dos interfaces de idioma, en alemán e inglés, que difieren en la notación de los números relacionados con la moneda.
¿Cómo puedo tener en cuenta el idioma elegido por el usuario para que el formato se adapte a la elección del usuario?

Aquí está mi código de traducción de idioma:

app.config(["$translateProvider",
function ($translateProvider) {
$translateProvider.useStaticFilesLoader({
prefix: "assets/i18n/",
suffix: ".json"
});
$translateProvider.preferredLanguage("en");
$translateProvider.useLocalStorage();

}]);

el controlador principal:

$scope.language = {
listIsOpen: false,
available: {
"en": "English",
"de_DE": "Deutsch"
},
init: function () {
var proposedLanguage = $translate.proposedLanguage() || $translate.use();
var preferredLanguage = $translate.preferredLanguage();
$scope.language.selected = $scope.language.available[(proposedLanguage || preferredLanguage)];
},
set: function (localeId, ev) {
$translate.use(localeId);
$scope.language.selected = $scope.language.available[localeId];
$scope.language.listIsOpen = !$scope.language.listIsOpen;
}
};

$rootScope.$on("$translateChangeSuccess", function () {
var lang = $translate.use();
$http.get("assets/i18n/"+lang+".json").success(function(data) {
$rootScope.i18nTranslationJSON = data;
$rootScope.$emit("myTranslationsLoaded");
});
});
$scope.language.init();

Respuestas

0 para la respuesta № 1

¿Has mirado al nativo? $locale ¿Servicio antes de intentar reinventar la rueda? Usted tiene filtros nativos para formatear la moneda, la fecha y el número según la lugar quieres usar

Para cambiar el idioma sobre la marcha sin volver a cargar la página, puede utilizar el angular-dinámica-locale módulo.