2012-03-02 27 views
7

Tôi đang phát triển một ứng dụng HTML5 với CSS3 và jQuery.Ứng dụng HTML5 đa ngôn ngữ

Tôi có một số văn bản mà tôi muốn hiển thị bằng ngôn ngữ của người dùng. Bạn có biết làm thế nào tôi có thể làm điều đó?

Ứng dụng này sẽ chạy trên BlackBerry Playbook và trên các thiết bị di động khác.

Tôi không biết cách sử dụng ngôn ngữ hệ điều hành của người dùng hoặc nơi tôi phải đặt các chuỗi địa phương hóa của mình, v.v.

Bất kỳ đầu mối nào?

Trả lời

0

Tôi khuyên bạn nên cố gắng phát hiện ngôn ngữ trình duyệt bằng Javascript. Tôi không thấy một cách trực tiếp để phát hiện nó bằng cách sử dụng HTML.

Dưới đây là một liên kết nhằm giải quyết vấn đề này:

Is there anyway to detect OS language using javascript?

4

tôi lưu trữ chuỗi cục bộ của tôi trong các tập tin JS (1 cho mỗi ngôn ngữ được hỗ trợ). Ví dụ :

chuỗi en.js:

MyApp.STR = {"Hi":"Hi","By":"By", etc.}; 

chuỗi fr.js:

MyApp.STR = {"Hi":"Salut","By":"Par", etc.}; 

Và lúc khởi động, tôi tải các tập tin đúng về ngôn ngữ của hoa tiêu:

loadLocalizedString: function(langParam/*optional*/) { 
    var language = window.navigator.language, lang; 
    console.log('loadLocalizedString with Navigator Language: ' + language); 
    if (!langParam) { 
     //Try to guess the best suited language 
     if(language) { 
      lang = language.substring(0,2); 
     } else { 
      lang = 'en'; 
     } 
     if($.inArray(lang, this.SUPPORTED_LANGUAGE) <= -1) { 
      lang = 'en';//If the language is not available : english by default 
     } 
    } else { 
     lang = langParam; 
    } 

    console.log('language: ' + lang); 

    this.loadString('lib/string-'+lang+'.js'); 
}, 
    SUPPORTED_LANGUAGE : ["en", "fr", "es", "it"], 
loadString:function(fileName) { 
    try { 
     $.ajaxSetup({async: false}); 
     $.getScript(fileName);//We don't use the async callback, because we need the translation in the next method 
     $.ajaxSetup({async: true}); 

    } catch (e) { 
     console.error('Error while loading : ' + fileName); 
    } 

} 

Và để sử dụng chuỗi được bản địa hóa trong ứng dụng:

html = MyApp.STR.Hi+' '+userName+' !';