代码之家  ›  专栏  ›  技术社区  ›  Seryoga

SilverStripe i18n Textcollector任务未加载

  •  2
  • Seryoga  · 技术社区  · 8 年前

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

    在我的主题/lang目录中有两个yml文件。但文本仍然没有翻译。

    名称:

    de:
      Footer.ss:
        __IMAGE: '%2.2s'
      Header:
        __Contact: 'Nehmen Sie Kontakt auf'
    

    英语.yml

    en:
      Footer.ss:
        __IMAGE: '%2.2s'
      Header:
        __Contact: 'Get in Contact'
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   bummzack    8 年前

    要使用文本收集器任务,您必须安装 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 .