REST API (これは i18n をサポートしています) の前面に Web サイトを構築していますが、国際化についてどの方法を使用すればよいかわかりません。私はjsとhtmlのソリューションを調べましたが、それらはすべてサーバー側のオプションよりも劣っているようです.
ほとんどのページにロケールのサポートだけが必要な静的コンテンツが含まれていることを考えると、jsp は適切な解決策でしょうか? jsf はやり過ぎのようです。
REST API (これは i18n をサポートしています) の前面に Web サイトを構築していますが、国際化についてどの方法を使用すればよいかわかりません。私はjsとhtmlのソリューションを調べましたが、それらはすべてサーバー側のオプションよりも劣っているようです.
ほとんどのページにロケールのサポートだけが必要な静的コンテンツが含まれていることを考えると、jsp は適切な解決策でしょうか? jsf はやり過ぎのようです。
さまざまな 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>
このサンプルのコードは、ここにあります。
1)静的コンテンツしかない場合は、異なる言語で異なるhtmlファイルを作成し、それを別のフォルダーに入れて、次のようなサイトにアクセスします
for English
http://yourdomain.com/en/english_index.html
for French
http://yourdomain.com/fr/french_index.html
2)動的操作がある場合は、JSPも良いオプションです。i18n リソース バウンドを維持するための適切なオプションがあります。
オプション1を使用することをお勧めします