0

Gettext および Poedit ソフトウェアを使用して、PHP で文字列を翻訳しています。翻訳された文字列を JavaScript でも使用したいのですが、コードを HTML ドキュメントにインライン化するのではなく、外部ファイルで使用したいと考えています。インライン JS コードもレンダリングされるため、HTML ドキュメントのインライン化は問題ありません。例:

var hello = <?=_("hello");?>

トランスレータは、php コードと同じ変換テーブルを使用する必要があります (文字列が重複しているため)。

そこで私の考えは、JavaScript ファイルを PHP で「コンパイル」することでした。たとえば、外部 JS ファイルには次のコードがあります。

if (window.confirm("_translate('are_you_sure')")) {
location.href = this.href;
}

PHP スクリプトは上記のコードを読み取り、 内のすべての文字列を見つけます_translate()_translate('are_you_sure')コードは翻訳された文字列に置き換えられます。_translate()ソースのキーに _translate を追加しても、Poedit ソフトウェアは文字列を見つけられないため、動作しますが、決して翻訳されません。したがって、翻訳対象の翻訳文字列はありません。

だから私の質問は、Poeditに_translate()javascriptファイル内の文字列を読むべきだと伝える方法ですか?

4

2 に答える 2

0

JavaScriptファイルで翻訳を行うphpスクリプトを含めることができます

$js = $_GET['js'];

// security check
if (preg_match('~[^a-z0-9_-]~', $js)) {
    die("invalid js");
}

$content = file_get_contents('path_to_js/' . $js . '.js');
preg_match_all('~_translate\(\'([^\']+)\'\)~', $content, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
    $content = str_replace($match[0], _($match[1]), $content);
}
echo $content;

yourscript.jsそのため、phpファイルの代わりに含める必要がありますscript.php?js=yourscript

于 2013-07-22T22:37:15.360 に答える