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.