在我的CakePHP应用程序中, 通过使用cake.bat,我创建了POT文件,并使用PoEdit创建了PO文件。 因此,通过编写 __('myword'),我可以在我的应用程序中成功查看本地化的单词。
但现在我需要本地化“timeAgoInWords”。 当我运行 cake i18n extract 时,脚本没有在 CakeTime 中获得 _dn()字样 http://api20.cakephp.org/view_source/cake-time#line-522
所以我创建了一个 dummy.ctp 文件,并将cake-time文件中的copy-paste内容复制到了虚拟文件中。 我再次运行蛋糕脚本和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 的结果是用英文写的。
我该如何解决这个问题
答案 0 :(得分:7)
Cake的消息被提取到另一个域,在本例中为cake
域。这意味着蛋糕消息不会被提取到您的default.pot
文件中,但会进入cake.pot
文件。
奇怪的是,cake.pot似乎没有包含在下载中,i18n shell也不允许你在提取过程中传递一个包含蛋糕核心的参数。但是,它仍然很容易完成(我的评论以#
开头):
$:/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] >
现在等待提取完成并享受翻译的痛苦;)