SilverStripe i18n Textcollector任务未加载

时间:2016-07-21 07:15:08

标签: internationalization silverstripe

我正在使用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'

1 个答案:

答案 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>

相关documentation