【问题标题】:I18n in symfony with partial translations and multiple prefered languagessymfony 中的 I18n 带有部分翻译和多种首选语言
【发布时间】:2011-08-21 07:02:42
【问题描述】:

我正在开发一个网站来培训学生参加编程比赛。目前该网站主要是法语,但将翻译成西班牙语(另一个国家想要使用我们的培训网站)。

界面国际化很容易,但1500+的练习用不了多久就翻译完了。

我需要一种以用户选择的语言本地化内容(和界面)的方法,但如果该语言没有特定的翻译,那么应该使用默认的翻译(法语)。 我们甚至想概括一下:想象一些法语练习被翻译成英语,你是西班牙人,不会说法语。您首先想要西班牙语版本,然后是英语版本,然后是法语版本。

在这种情况下有没有使用国际化的好方法?

我可以尝试一种语言,如果没有任何结果,请尝试另一种语言,但效率不会很高......

【问题讨论】:

    标签: symfony1 internationalization translation


    【解决方案1】:

    对于模板内容,如果您使用 Symfony i18n 行为,则后备默认语言将自动可用。如果找不到已翻译的字符串,您在 __('string') 助手中放入的任何内容都将使用默认区域性(在 settings.yml 中声明)。对于多语言数据库内容,您要么需要使用 Symfony i18n 表行为,要么自己构建它。如果找不到特定语言的内容,我不知道在默认语言的情况下 Symfony i18n 数据库处理是如何工作的。查询可能会变得复杂。我的一般意见是,您最好自己构建与数据库相关的功能,但这只是我。

    为了订购语言(首先是翻译,然后是英语,然后是默认语言),我的理解是开箱即用的 Symfony i18n 行为不支持这一点。您可以通过确保在西班牙语 XML/XLIFF 文件中将英语翻译放在提供英语(但不是西班牙语)翻译的 <target> 标记中来破解某种类型的解决方案。这会给你 ES -> EN -> FR。不过,我也建议您以干净利落的“管理”翻译为目标,以免变得过于复杂/混乱。

    希望对您有所帮助。

    【讨论】:

    • 感谢您的回答。对于接口(快速翻译),后备应该就足够了。对于内容,我认为我会发送“此语言不可用”的电子邮件或将用户重定向到页面的不同版本。 site.com/fr/post/20/en 其中“fr”代表界面,“en”代表内容。这种方式便于使用缓存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2020-02-10
    • 1970-01-01
    • 2016-12-23
    相关资源
    最近更新 更多