Angular Translate - 使用StaticFilesLoader进行FallbackLanguage

时间:2015-09-25 14:39:03

标签: javascript angularjs angular-translate

所以我在我的项目中使用Angular Translate v2.0.0并创建了三个语言文件:“en.json”,“en-US.json”和“en-EU.json”,它们通过StaticFilesLoader。我想要发生的是当一个“en- *”文件中的密钥不存在以在“en.json”文件中查找它时。这可能吗?它通过$ translateProvider.translations()定义我的翻译时有效,但我需要加载静态文件。

这是我的代码:

/i18n/en.json

{ "sidebar": { "HEADING": "I AM HEADING" }}

/i18n/en-US.json

{ "formats": { "date": "MM/DD/YYYY" }}

/i18n/en-EU.json

{ "formats": { "date": "DD/MM/YYYY" }}

然后,在我的配置中,我有:

 // Register a loader for the static files
// So, the module will search missing translation tables under the specified urls.
// Those urls are [prefix][langKey][suffix].
$translateProvider.useStaticFilesLoader({
    prefix: 'i18n/',
    suffix: '.json'
});

// Tell the module what language to use by default
$translateProvider.preferredLanguage('en-US');

// Set the fallback language to use if the string cannot be found in the default locale
$translateProvider.fallbackLanguage('en');

// Tell the module to store the language in the cookies
$translateProvider.useCookieStorage();

// For security, we set the sanitize strategy to make sure our strings are sanitized correctly
$translateProvider.useSanitizeValueStrategy('sanitize');

// For debugging missing translations, uncomment to use
$translateProvider.useMissingTranslationHandlerLog();

但是在加载应用程序时,只有“formats.date”呈现,并且说“sidebar.HEADING”不存在。

1 个答案:

答案 0 :(得分:0)

事实证明,如果没有CustomLoader或其他东西,我无法做我想做的事情。我刚开始使用https://github.com/RobbinHabermehl/gulp-angular-translate并将其添加到构建步骤的一部分中。无论如何它会更好,因为语言会立即加载而不是异步。