5

CakePHPアプリケーションでは、cake.batを使用してPOTファイルを作成し、PoEditを使用してPOファイルを作成しました。したがって、__('myword')と書くことで、アプリケーションでローカライズされた単語を正常に確認できます。

しかし今、私は「timeAgoInWords」をローカライズする必要があります。ケーキi18n抽出を実行すると、スクリプトはCakeTime http://api20.cakephp.org/view_source/cake-time#line-522で_dn()単語を取得しませんでした

そこで、dummy.ctpファイルを作成し、ケーキタイムファイルからダミーファイルにコンテンツをコピーして貼り付けました。ケーキスクリプトとPOEditを再度実行します。そして、以下のようなインスタンスをファイルapp / Locale / tur / LC_MESSAGES/default.poに作成しました。

#: View\App\dummy.ctp:30;33
msgid "%d minute"
msgid_plural "%d minutes"
msgstr[0] "%d dakika"
msgstr[1] "%d dakika"

core.phpで、私はすでにデフォルト言語をトルコ語に設定しています。

Configure::write('Config.language', 'tur');

しかし、アプリケーションを確認すると、timeAgoInWordsの結果は英語で表示されていました。

どうすればこれを修正できますか

4

1 に答える 1

7

Cakeのメッセージは、別のドメイン(この場合はドメイン)に抽出されcakeます。これは、ケーキメッセージがファイルに抽出されるのではなく、default.potファイルに保存されることを意味しcake.potます。

不思議なことに、cake.potはダウンロードに含まれていないようです。また、i18nシェルでは、抽出中にケーキコアを含めるためのパラメータを渡すこともできません。ただし、それでも簡単に実行できます(私のコメントは#)で始まります。

$:/var/www/path/app$ cake i18n extract

# if will ask you here if you want to extract from your app folder
# simply press enter to confirm
What is the path you would like to extract?
[Q]uit [D]one  
[/var/www/path/app/]

# now it will ask you again, in this case enter the cake path
What is the path you would like to extract?
[Q]uit [D]one  
[D] > /var/www/path/lib/Cake

# third time, just press enter
What is the path you would like to extract?
[Q]uit [D]one  
[D] > 

# press enter to accept the app/Locale
What is the path you would like to output?
[Q]uit  
[/var/www/path/app//Locale] > 

# press enter to keep translation domains deparate
Would you like to merge all domains strings into the default.pot file? (y/n) 
[n] > 

抽出が完了するのを待って、翻訳の苦痛を楽しんでください;)

于 2012-05-02T10:37:12.450 に答える