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

Symfony 2-双向翻译

  •  0
  • aurelienC  · 技术社区  · 8 年前


    因此,我在翻译库中创建了两个文件:

    • message.en。yml(翻译 法语转英语 )
    • message.fr.yml(翻译 英语到法语 当区域设置为 fr )

    为了解释我的问题,我将举一个例子,一对单词 Hardware | Matériel .

    使用查看页面时 fr 场所 Hardware 需要翻译 Matériel .
    Hardware: Matériel 在我 message.fr.yml .

    使用查看页面时 en_us或en_gb 场所 雨天使 需要翻译 硬件 .
    所以我说: Matériel: Hardware 在我 message.en.yml .

    此时,翻译行为为:
    使用fr语言环境查看页面时 硬件 正确翻译。
    使用en_gb语言环境查看页面时 硬件 未正确翻译。
    使用en_us语言环境查看页面时 硬件 被错误地翻译为 雨天使 .

    为了增加乐趣,如果我清除Symfony缓存,行为会发生变化,有时一切都会被 雨天使 或者,有时什么也做不到。。。
    一周前,我只需要将法语翻译成英语,只需使用message.en就可以完美地工作。yml文件,当你使用多个文件时,可能有一些我没有注意到的事情。
    有人能告诉我如何处理这种双向翻译吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Canser Yanbakan    8 年前

    使用变量。

    我正在使用这样的翻译:

    messages.en.yml

    string.hardware: Hardware
    

    messages.fr.yml

    string.hardware: Matériel
    

    在树枝上:

    {{ "string.hardware"|trans }}
    

    与动态变量一起使用:

    string.hardware: %variable% Hardware
    

    细枝中的用法:

    {{ "string.hardware"|trans({"%variable%": your_variable_or_string}) }}
    
        2
  •  0
  •   aurelienC    8 年前

    好吧,我明白我做错了什么。 对于这种情况,您必须:

    • 把: Hardware: Matériel Hardware 通过 Matériel )
    • 把: Matériel: Hardware 在我的消息中。(如果是现场翻译 雨天使 通过 硬件 )
    • 把: Hardware: Hardware 不要翻译 硬件 )

    我认为这一切都是因为翻译的倒退,我要求翻译 硬件 所以symfony在message.en.yml中查找一个。首先(因为语言环境是en),如果找不到,则在message.fr.yml中查找 硬件:Matriel 所以它使用它。
    我仍然不明白为什么有时,根据缓存,翻译在en_gb语言环境下运行良好。。。