我正在使用SilverStripe 3.4并尝试翻译我的网站。但是在Windows上,我无法运行http://localhost/dev/tasks/i18nTextCollectorTask我得ERR_CONNECTION_RESET
。
我尝试手动创建翻译文件并将它们添加到mysite目录中:
/lang/de_DE.php
/lang/en_GB.php
包含以下代码:
<?php
global $lang;
$lang['en_GB']['Header']['Contact'] = 'Get in Contact';
并在模板中:
<h5><% _t('Header.Contact', 'Nehmen Sie Kontakt auf') %></h5>
但是文本总是用德语...为什么不翻译?为什么我不能在Windows上打开文本收集器?
更新
我通过cli
启动了收藏家framework/sake dev/tasks/BetterI18nTextCollectorTask "targetlocale=de,en&module=themes/xxx&flush=1"
我的theme / lang目录中有两个yml文件。但该文本仍未翻译。
de.yml:
de:
Footer.ss:
__IMAGE: '%2.2s'
Header:
__Contact: 'Nehmen Sie Kontakt auf'
en.yml
en:
Footer.ss:
__IMAGE: '%2.2s'
Header:
__Contact: 'Get in Contact'
答案 0 :(得分:3)
要使用文本收集器任务,您必须安装PHPUnit 3.7。
您可以通过编辑器将其添加为开发依赖项,以便它不会包含在生产环境中:
composer require --dev phpunit/phpunit ~3.7
作为文本收集器任务的替代方法,您还可以使用better-i18n模块:
composer require --dev zauberfisch/silverstripe-better-i18n
它还需要PHPUnit,因此必须安装。
用PHP编写的语言文件很久以前就被弃用了。您应该切换到基于YAML的语言文件,如下所示:
# File stored in lang/en.yml
en:
Header:
Contact: 'Get in contact'
# etc.
更新:还有更新的语法如何在模板中进行翻译。您正在使用将被弃用的旧语法
此:
<h5><% _t('Header.Contact', 'Nehmen Sie Kontakt auf') %></h5>
应该成为这个:
<h5><%t Header.Contact 'Nehmen Sie Kontakt auf' %></h5>