![](/img/trans.png)
[英]in Angular How to Dynamically Load javascript file depending of user language
[英]Serving a language file depending on language preference settings
在余燼應用程序中,我支持不同的語言。 我這樣做是這樣的:
這是index.html
一部分:
<script src="scripts/vendor/ember.js"></script>
<script src="scripts/vendor/ember-i18n.js"></script>
...
<script>window.mynamespace = {};</script>
<script src="scripts/languages/en.js"></script>
<script src="scripts/ember_application.js"></script>
在我的languages/es.js
我按照ember-i18n的期望配置了一個翻譯對象:
var lang = {
key1 : 'Translation1',
...
};
window.mynamespace.lang = lang;
現在,在我的Ember應用程序中,我可以執行以下操作:
Ember.I18n.translations = window.mynamespace.lang;
var App = Ember.Application.createWithMixins({...});
我有三個問題:
window.mynamespace
,但是在創建余燼應用程序之前,我不知道如何共享這些設置。 scripts/languages/es.js
? 我這樣做的方法是保留幾個單獨的語言文件,弄清楚瀏覽器的語言設置,然后加載適當的文件。 這是我正在使用的功能(很可能不是很完美,但它確實達到了您的期望):
function loadLanguage() {
"use strict";
if (window.navigator.language) {
LocalLanguage = window.navigator.language;
} else if (window.navigator.userLanguage) {
LocalLanguage = window.navigator.userLanguage;
} else {
LocalLanguage = "en";
}
var fileref = document.createElement('script');
fileref.setAttribute("type", "text/javascript");
switch (LocalLanguage) {
case "cs-CZ":
case "cs":
LocalLanguage = "cs";
fileref.setAttribute("src", "Language/cz-CZ.js");
document.getElementsByTagName("head")[0].appendChild(fileref);
break;
default:
LocalLanguage = "";
fileref.setAttribute("src", "Language/en-EN.js");
document.getElementsByTagName("head")[0].appendChild(fileref);
break;
}
}
LocalLanguage是一個全局變量,無論使用什么瀏覽器,我都可以使用它來快速確定語言設置。
問題3:關於根據數據庫中的設置提供不同的文件,實際上聽起來很簡單-在代碼中,必須確定要使用哪種本地化。 只需檢查是否存在用戶定義的本地化(將其存儲在某個地方,或最初將語言首選項設置為“ none”或數據庫中的某些內容,然后檢查用戶是否已更改了語言,沿這些行進行了任何更改),並且用戶是否已定義了本地化,只需跳過檢查瀏覽器的語言設置的整個過程,然后獲取數據庫中設置的值即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.