2013-04-24 2 views
3

Я создаю веб-сайт на передней панели REST API (это поддерживает i18n), и я не уверен, какой путь для интернационализации. Я просмотрел js и html-решения, но все они кажутся хуже вариантов на стороне сервера.i18n для статического содержимого html

Учитывая, что большинство страниц содержат статический контент, который просто требует поддержки локали, будет ли jsp хорошим решением? jsf кажется излишним.

ответ

-1

1) Если у вас есть только статический контент создавать различные HTML-файлы с различных языков и поместить его в отдельную папку и получить доступ к сайту как

for English 
http://yourdomain.com/en/english_index.html 

for French 
http://yourdomain.com/fr/french_index.html 

2) JSP также хороший вариант, если у вас есть динамические манипуляции. У вас есть хороший вариант для поддержки ограничения ресурсов i18n.

Предлагаю пойти с опцией 1

+3

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

+0

Ну, выбор варианта 1) или 2) зависит от ситуации, требования и удобства разработчика – Madhu

2

Я действительно не могу рекомендовать, имеющих различные HTML-файлы. Локализуемость лучших практик рекомендует отделять переводы от кода.

Самый быстрый, самый простой и наименее обструктивный метод, который я знаю, использует Google ARB. Рассмотрим следующий пример HTML:

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Testing ARB...</title> 
    </head> 

    <body> 
     <h2>This is a test.</h2> 
    </body> 
</html> 

Теперь необходимо извлечь локализуемый контент. Это можно сделать либо с помощью extractor tool ARB предоставляет или если ваши страницы очень просто, вы даже можете сделать это вручную:

<html> 
    <head arb:namespace="test"> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title arb:id="MSG_HTML_TITLE">Testing ARB...</title> 
    </head> 

    <body> 
     <h2 arb:id="MSG_BODY_TEST">This is a test.</h2> 
    </body> 
</html> 

Тогда давайте создадим файл ресурсов для этих сообщений, а также обеспечить перевод:

arb.register(
    "test", 
    { 
    "MSG_HTML_TITLE": "Testing ARB", 
    "MSG_BODY_TEST": "This is a test.", 
    "MSG_CURR_LOCALE": "...and the selected language is \"{currentLocale}\".", 
     "@MSG_CURR_LOCALE": { 
     "placeholders": { 
      "0": { 
      "description": "This variable would show the current locale.", 
      "example": "fr" 
      } 
     } 
     } 
    } 
); 

arb.register(
    "test:de", 
    { 
    "MSG_HTML_TITLE": "ARB auf Probe", 
    "MSG_BODY_TEST": "Das ist ein Test.", 
    "MSG_CURR_LOCALE": "...und die ausgewählte Sprache ist \"{currentLocale}\".", 
     "@MSG_CURR_LOCALE": { 
     "placeholders": { 
      "0": { 
      "description": "This variable would show the current locale.", 
      "example": "fr" 
      } 
     } 
     } 
    } 
); 

Наконец, добавьте JS в HTML. Кроме того, предоставите простой способ получить выбранный язык из URL; т.е. ./index.html?locale=de

<html> 
    <head arb:namespace="test"> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title arb:id="MSG_HTML_TITLE">Testing ARB...</title> 
     <script src="arb/lib/arbcore.js"></script> 
     <script src="test.arb"></script> <!-- ARB file w/ translations. --> 
    </head> 

    <body> 
     <h2 arb:id="MSG_BODY_TEST">This is a test.</h2> 

     <!-- Get locale from URL and translate page HTML --> 
     <script> 

      function main(){ 
       var locale = arb.getParamFromUrl('locale'); 
       if (!locale){ 
        locale = 'en'; 
       } 
       arb.setResourceSelector(locale); 

       // JS localization 
       var r$ = arb.getResource("test"); 
       document.write(arb.msg(r$.MSG_CURR_LOCALE, {'currentLocale': locale}));  

       // This should appear after all the translatable HTML content 
       arb.localizeHtml();        
      } 

      main(); 

     </script> 

    </body> 
</html> 

Код для этого образца можно найти here.

+0

Это решение для сторонних разработчиков? Как его производительность сравнивается с решениями на стороне сервера? –

+0

HTML, скомпилированный с переводом для каждого языка, превосходит это. Предположительно, выбор перевода на лету будет самым медленным. Очевидно, что это скорее предположения, чем фактические результаты теста. – Shervin

+0

Не могли бы вы предоставить мне, как импортировать его? это ли документ, который я должен импортировать? –