GWT gwt i18n Gin Module - PullRequest
       4

GWT gwt i18n Gin Module

1 голос
/ 12 октября 2010

У меня следующий вопрос:

У меня есть одно приложение, работающее с GWT. При запуске приложения загружается один GWTClientModule, который расширяет AbstractGinModule, или другой GWTClientModule.

На основании этого переключателя я хотел бы установить локальный. Есть ли способ установить локальный не напрямую в .html, выполнив следующее:

<meta name="gwt:property" content="locale=fr">

но непосредственно в одном из выбранных GWTClientModule?

Большое спасибо за вашу помощь; -)

Ответы [ 2 ]

1 голос
/ 13 октября 2010

Вы не можете сделать это, если используете статическую строковую интернационализацию , так как она использует отложенное связывание : компилятор GWT генерирует один файл JavaScript для каждой локали, а при загрузке вашей страницысценарий начальной загрузки GWT ищет свойство «locale» внутри страницы (или в URL) перед загрузкой соответствующей версии кода.

Программный выбор языкового стандарта (внутри вашего GWTClientModule) невозможен, посколькулокализованная версия вашего кода уже загружена после выполнения этого кода ...

Если вам действительно нужно выбрать локаль во время выполнения, вы можете захотеть взглянуть на динамическую интернационализацию строк, но он менее производительный, и вы теряете статическую проверку типов.

0 голосов
/ 22 марта 2012

Мы использовали обходной путь, основанный на this , чтобы установить языковой стандарт в соответствии с языком браузера клиента.

Просто добавьте следующий Javascript в ваш .html:

<script type="text/javascript"> 
var search = location.search;  
if(search.indexOf("locale") == -1){  
    var lang = navigator.language!= null ? navigator.language : navigator.browserLanguage;  
    lang = lang.replace("-", "_");
    var metaTag = document.createElement('meta');
    metaTag.name = "gwt:property";
    metaTag.content = "locale=" + lang;
    document.getElementsByTagName('head')[0].appendChild(metaTag);
}
</script>

Он ищет, не установлен ли метатег, соответствующий локали, если нет, то ищет язык браузера и добавляет правильный метатег, например:

<meta name="gwt:property" content="locale=fr">
...