6

私は、GetText で Zend フレームワーク Zend_Translate を使用する PHP 部分の複数の言語に翻訳したいプロジェクトを持っています。今度はJS部分も翻訳したいです。

私は jQuery JS Framework を使用しています。JS ファイルの翻訳についてのご意見をお待ちしております。

4

7 に答える 7

13

3 つのプロジェクトで JavaScript ファイルの翻訳に GetText を使用しました。

もちろん、GetText はネイティブで JavaScript をサポートしておらず、JavaScript も GetText をサポートしていません。私の解決策は次のとおりです。

  • JavaScript では、翻訳可能な文字列を . で囲みますgettext("your text here")
  • 次に、JavaScript ファイルから文字列を取り出して C ファイルを作成するスクリプトを作成します。これは、C が gettext でサポートされているためです。
  • 次にxgettext、生成された C ファイルと、プロジェクト内のその他のファイルに対して を使用して、POT ファイルと PO ファイルを生成します。

PO ファイルを翻訳した後、翻訳を JavaScript に戻す必要があります...

  • JavaScript ファイルを再度解析し、翻訳可能な文字列のリストを記憶してから、ロケールごとに解析します。
  • GetText をサポートする言語 (私の場合は PHP) を使用して、すべての文字列を翻訳し、JavaScript ファイルを出力します。

たとえば、エストニア語 (例: et_EE.js) のロケール ファイルは次のようになります。

var LOCALE = {
  "Hello": "Tere",
  "My name is %s": "Minu nimi on %s",
  "Enter your credit card number": "Sisesta oma krediitkaardi number"
};

function gettext(string) {
  return LOCALE[string] ? LOCALE[string] : string;
}

選択したロケールに応じて、含めるet_EE.jsか、en_US.jsまたは...

en_US.jsおそらく次のものだけが含まれます。

function gettext(string) {
  return string;
}

については少しトリッキーですngettext()が、一般的な考え方は理解できるはずです。

素晴らしい点は、既に利用可能なすべての gettext ツールを使用できることです。特に、PHP と JavaScript の両方に翻訳可能なテキストがある場合、同じツールを使用して両方を翻訳でき、同じ文字列が JavaScript と PHP の両方で同じ方法で翻訳されるようにすることもできます。

注: JavaScript を多用する Web アプリを扱っていない場合は、最初に JavaScript によってページ コンテンツを作成する前によく考えてください。

于 2009-01-10T20:59:18.313 に答える
3

これも興味深いかもしれません: jQuery の gettext プラグイン

于 2009-01-11T08:46:10.960 に答える
3

文字列を拡張して、ロケール内の受信者をルックアップする、変換された関数を与えることができます。

次のように使用します。

alert("あなたの好きな言語は英語です!".translated());

そして、「tu idiom prefiero es Espanol」などのアラートが表示されます。

ニコ

于 2009-01-11T08:51:46.923 に答える
3

http://24ways.org/2007/javascript-internationalisation

于 2009-01-11T05:53:45.910 に答える
2
// just for some idea 
//var language ="fr_FR";
var language ="sp_SP";

var FRLOCALE = {
  "Hello": "bonjure ",
  "My name is %s": "mo nome oc ",
  "what": "some french thing"
};

var SPLOCALE = {
  "Hello": "Spanish for hello",
  "My name is %s": "spanish for my name is ",
  "what": "qu"
};

function translated(language, string){
    if (language.indexOf("fr") > -1) {
        return FRLOCALE[string] ? FRLOCALE[string] : string;
    } 

    if (language.indexOf("sp") > -1) {
      return SPLOCALE[string] ? SPLOCALE[string] : string;
    }

    return string; 
}

alert(translated(language,"Hello"));

alert(translated(language,"some thing not translated "));
于 2015-04-11T01:34:39.320 に答える
0

http://plugins.jquery.com/project/jquery-localizeがこれを見つけました。これは、letmegooglethatforyou.com によって使用され、http: //plugins.jquery.com/project/l10n どちらが優れているかを見つけました。

于 2009-01-10T20:34:21.373 に答える
0

いくつかの言語でも存在する PHP Web ページがあります。私は PHP で独自の言語クラスを作成しました。JavaScript ファイルのローカライズに関しては、.js ファイルも PHP として実行するようにサーバーを構成し、PHP クラスを使用して JavaScript 文字列を変換しました。

このようなもの:

alert ( '<?php echo $l->Get ( 'MyString' ); ?>' );

すべての JavaScript ファイルの先頭に「$l」を初期化するファイルを含めるだけです。これで問題ありません。

于 2009-01-12T18:14:18.210 に答える