JavaScript内で使用される文字列をローカライズするために、すべてのjsファイルをスキャンしてそのような文字列を探します。
次のように文字列の翻訳を要求する関数を使用してt()
います。
t("Hello world");
または動的な部分で:
t("Hello @user", {"@user": "d_inevitable"});
関数へのすべての呼び出しを検出してt()
、php "build"スクリプトの最初の引数に含まれる文字列を収集したいのですが、以下をスキップします。
function foo(t) {
t("This is not the real t, do not localize this!");
}
function bar() {
var t = function(){}; //not the real t either...
}
function zoo() {
function t() {
//This also isn't the real t() function.
}
}
t("Translate this string, because this is the real t() in its global scope");
したがって、ここでの簡単なルールは、最初の引数が変換文字列として修飾されるためには、呼び出されるt関数がグローバルスコープ内にある必要があるということです。
原則として、最初の引数としての動的ランタイムデータは許可されていません。の最初の引数t()
は、常に「定数」リテラル文字列である必要があります。
php codenifferは私がそれを行うのに役立つと思いますが、私が見つけることができるすべてのドキュメントは、コード標準の実施(またはその違反の検出)に関するものです。そのjsレクサーへの低レベルのアクセスが必要です。
私の質問は:
- phpcodesnifferのjslexerは、私の問題を解決するのに役立ちますか?
- もしそうなら、どうすればそのレクサーにアクセスできますか?
- の呼び出しを見つけるのに役立つ他のphpライブラリはあります
t()
か?
スタンドアロンの正規表現は私の問題を完全に解決できない可能性があるため、提案しないでください。
前もって感謝します。