4

REST API (これは i18n をサポートしています) の前面に Web サイトを構築していますが、国際化についてどの方法を使用すればよいかわかりません。私はjsとhtmlのソリューションを調べましたが、それらはすべてサーバー側のオプションよりも劣っているようです.

ほとんどのページにロケールのサポートだけが必要な静的コンテンツが含まれていることを考えると、jsp は適切な解決策でしょうか? jsf はやり過ぎのようです。

4

2 に答える 2

3

さまざまな 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>

次に、ローカライズ可能なコンテンツを抽出する必要があります。これは、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>

このサンプルのコードは、ここにあります。

于 2013-04-25T07:08:55.467 に答える
-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を使用することをお勧めします

于 2013-04-24T04:11:49.777 に答える