同じ問題が発生しました。 iはpoeditと同期する場合
例えば、私はPHPで
//Gives FORM_HEADER_ADD or FORM_HEADER_EDIT
echo $this->translate('FORM_HEADER_' . strtoupper($this->data));
を有し、それはコードで私は(生成)している識別子ではない 'FORM_HEADER_' をピックアップします。
だから私はこの問題に私は、私はPHP
echo ($this->data === 'add') ? $this->translate('FORM_HEADER_ADD') : $this->translate('FORM_HEADER_EDIT');
UPDATEで以下を実行していることを解決しPoedit完全な識別子を与えることを修正する必要がありました!
私はこの問題を探し続けました。私は現在、ソースからのインポートを諦めています。これは、私がより良い解決策を見つけるまで続けます。
- 可能な限り多くの静的識別子を使用し、使用します。
ソースと同期して検出された文字列を翻訳する翻訳されない(動的)識別子
protected function _initMyTranslate(){
$date = new Zend_Date();
$fileName = sprintf('/../logs/translation_%1$s.log', $date->toString('dd-MM'));
$writer = new Zend_Log_Writer_Stream(APPLICATION_PATH . $fileName);
$log = new Zend_Log($writer);
// get the translate resource from the ini file and fire it up
$resource = $this->getPluginResource('translate');
$translate = $resource->getTranslate();
// add the log to the translate
$translate->setOptions(
array(
'log' => $log,
'logUntranslated' => true
)
);
// return the translate to get it in the registry and so on
return $translate;
}
利用Poeditのロギングを有効にします。
- テスト/デバッグ中に、未翻訳文字列のログを確認します。
翻訳されていない文字列を.poファイルに追加します。
msgid "IDENTIFIER"
msgstr "TRANSLATION STRING"
オープンpoファイルとMOファイルを作成するためにそれを保存(ソースと同期またはすべてが失われません)。
UPDATE 2.
私は今、テキストエディタ(geditの/メモ帳)を使用して、私のマニュアル識別子の別々のファイルを使用します。今、私は2つのファイルがいる:poeditによって生成されたオートは私にはapplication.iniに変換するように構成
_manual.po <言語>と呼ばれる手動edittedファイル>の.po
<言語を
- と呼ばれます言語ディレクトリのすべてのファイルをスキャンする
resources.translate.adapter = gettext
resources.translate.content = APPLICATION_PATH "/../library/languages/"
resources.translate.locale = auto ;use en to force english or nl for dutch..etc
resources.translate.scan = directory
resources.translate.options.disableNotices = false
翻訳する場合はpoeditでファイルを別の言語に変換する - > POTファイルから新しいカタログを作成し、手動で追加した文字列の翻訳を開始します。
:に
クレジット:あなたは、その後に翻訳することができます
:たとえば
。あなたはそれをもっと明確に説明できますか? – farzad