31

PHPコードで使用gettextしていますが、大きな問題があります。私のすべてのJavaScriptファイルは翻訳の影響を受けません。選択した言語の翻訳をJavaScriptに変換する簡単な方法を誰かに教えてもらえますか。

4

8 に答える 8

22

最も簡単な方法は、PHP ファイルで変換gettextを JavaScript 変数に書き込むことです。

js_lang.php:

word_hello = "<?php echo gettext("hello"); ?>"
word_world = "<?php echo gettext("world"); ?>"
word_how_are_you = "<?php echo gettext("how_are_you"); ?>"

そしてそれを含めます:

<script type="text/javascript" src="js_lang.php"></script>

また、S.Mark が言及している翻訳プラグイン (非常に興味深いものです!) と組み合わせてこの方法をお勧めします。

外部ファイルを含めずに、現在のページのヘッダーで辞書を定義することもできますが、その方法では、ページの読み込みごとにデータを検索して送信する必要があります。辞書はめったに変更されない傾向があるため、まったく不要です。

于 2010-03-08T08:47:44.890 に答える
15

私は通常、JavaScript 構造で翻訳をエクスポートします。

var app = {};
var app.translations = {
  en: {
    hello: "Hello, World!",
    bye: "Goodbye!"
  },
  nl: {
    hello: "Hallo, Wereld!",
    bye: "Tot ziens!"
  }
};

ページ テキストの現在の言語は、次を使用して定義できます。<html xml:lang="en" lang="nl">

これは JavaScript で読むことができます:

var currentLanguage = document.documentElement.lang || "en";
app.lang = app.translations[ currentLanguage ] || app.translations.en;

そして、次のようなコードを書くことができます:

alert( app.lang.hello );

オプションで、i18n()またはgettext()関数は、キーが存在しない場合にデフォルトのテキストを返すために、ある程度のインテリジェンスをもたらすことができます)。例えば:

function gettext( key )
{
  return app.lang[ key ] || app.translations.en[ key ] || "{translation key not found: " + key + "}";
}
于 2010-03-08T09:08:57.610 に答える
8

jQuery i18nまたはjQuery ローカリゼーションを試してください

jQuery i18n の例です。もちろん、php の言語ファイルから JSON ベースの辞書を生成する必要があります

var my_dictionary = { 
    "some text"  : "a translation",
    "some more text"  : "another translation"
}
$.i18n.setDictionary(my_dictionary);


$('div#example').text($.i18n._('some text'));
于 2010-03-08T08:47:20.397 に答える
4

JSGettext (アーカイブされたリンク) は、GNU gettext 仕様の最適な実装です。最初に JSGETTEXT パッケージをダウンロードし、ページに /js/Gettext.js を含めます。

<?php
$locale = "ja_JP.utf8";
if(isSet($_GET["locale"]))$locale = $_GET["locale"];
?>
<html>
<head>
<link rel="gettext" type="application/x-po" href="/locale/<?php echo $locale ?>/LC_MESSAGES/messages.po" />
<script type="text/javascript" src="/js/Gettext.js"></script>
<script type="text/javascript" src="/js/test.js"></script>
</head>
<body>
Test!
</body>
</html>

たとえば、javascript コード

window.onload = function init(){
var gt = new Gettext({ 'domain' : 'messages' });
alert(gt.gettext('Hello world'));
}

参考までに、以下のリンクを見つけてください。.js ファイルを .php に変換しなくても問題なく動作しています。

ここをクリック

于 2013-09-26T05:27:22.077 に答える
2

コードで文字列リテラルを使用する悪い習慣を取り除くと、作業がずっと楽になります。つまり、代わりに

 alert("Some message")

使用する

alert($("#some_message_id").text())

ここで、「#some_message_id」は、サーバー側で生成された非表示の div またはスパンです。

于 2010-03-08T09:19:12.947 に答える
2

さらにヒントとして、.po ファイルから json を生成する po2json という perl スクリプトがあります。

于 2011-04-08T15:11:27.563 に答える