import 'angular-dynamic-locale'; import moment from 'moment'; import {gettext} from 'core/utils'; import {loadTranslations} from 'index'; /** * Translate module * * This module provides localization support. * It's using angular-gettext. */ export default angular.module('superdesk.core.translate', [ 'gettext', 'superdesk.core.auth.session', 'tmh.dynamicLocale', 'ngLocale', ]) .config(['tmhDynamicLocaleProvider', (tmhDynamicLocaleProvider) => { tmhDynamicLocaleProvider.localeLocationPattern('locales/angular-locale_{{locale}}.js'); }]) .run(['gettextCatalog', '$location', '$rootScope', 'SESSION_EVENTS', 'tmhDynamicLocale', function(gettextCatalog, $location, $rootScope, SESSION_EVENTS, tmhDynamicLocale) { $rootScope.$on(SESSION_EVENTS.IDENTITY_LOADED, (event) => { loadTranslations() .then((res) => { const {translations, language} = res; gettextCatalog.setCurrentLanguage(language); gettextCatalog.setStrings(language, translations); moment.locale(language); // set locale for date/time management // set locale for angular-i18n tmhDynamicLocale.set(language.replace('_', '-').toLowerCase()); }); }); var params = $location.search(); if ('lang' in params) { gettextCatalog.currentLanguage = params.lang; gettextCatalog.debug = true; } // make it available in templates $rootScope.gettext = gettext; }]) /** * @ngdoc factory * @module superdesk.core.services * @name gettext * * @description * Gettext service to be used in controllers/services/directives. * * Usage: * ```js * function($scope, gettext) { $scope.translatedMessage = gettext("Translate Me"); } * ``` * * This way "Translate Me" can be found by the string extractor and it will return * translated string if appropriet. */ .factory('gettext', ['gettextCatalog', function(gettextCatalog) { return function(input) { return gettextCatalog.getString(input); }; }]);