【问题标题】:Locale keyword translation in English英语语言环境关键字翻译
【发布时间】:2012-12-28 13:38:35
【问题描述】:

我阅读了教程,翻译工作正常。我的问题是处理关键字。在这里你可以看到一个例子:

http://symfony.com/doc/current/book/translation.html#creating-translations

当我的语言是法语时,我可以运行关键字symfony.is.great -> J'aime Symfony2。但是如何翻译symfony.is.great -> Symfony2 is great?把它翻译成英文。我错过了文档中的那部分,或者我真的不明白!我的默认语言是英语!

我确实有一个 messages.fr.xliff 和 messages.en.xliff。

我的部分消息.en.xliff:

<?xml version="1.0" encoding="UTF-8" ?>
    <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
        <file source-language="en" datatype="plaintext" original="file.ext">
            <trans-unit id="3">
                <source>symfony2.is.great</source>
                <target>Symfony is great</target>
            </trans-unit>
...

【问题讨论】:

    标签: symfony locale


    【解决方案1】:

    您分享的section of the doc 只是向您展示了定义翻译键(真实消息或关键字)的不同方式。

    查看文档的this part。要使translation process 正常工作,您必须在两个消息目录文件中使用相同的键。然后根据会话中存储的_locale 加载正确的翻译。

    此外,每次创建新翻译资源时,请务必清除缓存,以便将新文件考虑在内。

    【讨论】:

    • 是的,我看过这个,但不是这个。我如何翻译 symfony.is.great -> Symfony2 很棒。我确实有一个messages.en.xliff。是的,我清除了缓存。
    • 当 _locale 设置为 "en_XX" 时,Symfony 将从正确的目录 "messages.en.xliff" 中加载翻译消息。检查您的语言环境?你也可以force it
    • 好的,我试过用法语和英语强制它。我猜 symfony 没有加载我的 messages.en.xliff 文件。但是我通过命令rm清除了缓存。我想这是另一个问题。当我执行缓存时出现错误:clear...vendor/twig/twig/lib/Twig/Lexer.php...llowed 内存大小为 33554432 字节已用尽。有什么想法吗?
    【解决方案2】:

    尝试设置翻译服务

    $translator = $this->get('translator');
    

    然后设置用户语言环境($language = 'en' or 'fr')

    $translator->setLocale($language);
    

    或者

    $translator->setFallbackLocales(array($language));
    

    之后就可以调用翻译函数了

    $translator->trans('symfony.is.great');
    

    确保您在法语和英语目录中使用相同的关键字,并尝试清除缓存

    php bin/console cache:clear --no-warmup
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2012-03-25
      • 1970-01-01
      相关资源
      最近更新 更多