【问题标题】:Symfony/Doctrine: Fallback to default culture for i18n contentSymfony/Doctrine:回退到 i18n 内容的默认文化
【发布时间】:2011-10-25 17:40:55
【问题描述】:

我正在使用 Symfon 1.4/Doctrine 构建一个多语言网站,将英语定义为主要语言。 其他语言的内容翻译逐渐增加,经常会出现请求的内容无法翻译成请求的语言的情况。在这些情况下,我想用英语显示请求的内容。 这在全球范围内是否可以实现,例如对于所有 i18n 内容?

正如 Grad van Horck 所指出的,这在默认情况下可以很好地用于界面翻译。 我需要的是存储在 DB 中的内容的相同功能(具有“actAs i18n”行为的模型)。

【问题讨论】:

    标签: symfony1 internationalization doctrine symfony-1.4


    【解决方案1】:

    默认方式完全可以做到这一点。只需确保您的所有文本默认为英文,并在需要时进行翻译。因此,只需执行<?php echo __('Hello'); ?>,然后根据需要进行翻译。如果找不到翻译,它就会退回到它的“原始”。

    要在您的数据库中做同样的事情,您最好复制 i18n 行为(模板/侦听器)并添加您自己的一些逻辑以使用英语。

    【讨论】:

    • 谢谢,但我的意思是如何对数据库中的内容做同样的事情。更准确地编辑了我的问题。
    【解决方案2】:

    可以在 sfDoctrineRecord 上设置默认区域性(请参阅 http://trac.symfony-project.org/ticket/5458

    sfDoctrineRecord::setDefaultCulture('nl'); // default = 'en'
    

    当翻译在数据库中不可用时,这会更改 i18n 后备。

    【讨论】:

    • 这不是正确的方法:),默认情况下,它使用我现在看到的 settings.yml 中设置的“sf_default_culture”。然而,有点令人困惑的是规范化文化的使用,例如。 'en' vs 'en_EN' 最终是相同的文化,但在 symfony 文档中也混合使用...
    猜你喜欢
    • 2011-01-08
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    相关资源
    最近更新 更多