簡體   English   中英

根據語言首選項設置提供語言文件

[英]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({...});

我有三個問題:

  1. 是否有另一種服務於多語言頁面的方法? 具體來說,我不太喜歡使用window.mynamespace ,但是在創建余燼應用程序之前,我不知道如何共享這些設置。
  2. 如何基於瀏覽器中的語言首選項設置 (來自HTTP請求)提供其他語言文件,例如scripts/languages/es.js
  3. 而且這更困難:如何根據數據庫設置(屬於我的應用程序的用戶配置文件)提供不同的語言文件? 此設置將覆蓋HTTP請求中出現的*“語言首選項”設置。

我這樣做的方法是保留幾個單獨的語言文件,弄清楚瀏覽器的語言設置,然后加載適當的文件。 這是我正在使用的功能(很可能不是很完美,但它確實達到了您的期望):

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM