我正在开发一个网站来培训学生参加编程比赛。目前该网站主要使用法语,但它将以西班牙语翻译(另一个国家希望使用我们的培训网站)。
界面国际化很容易,但1500多个练习不会在很长一段时间内全部翻译。
我需要的是一种以用户选择的语言本地化内容(和界面)的方法,但如果该语言没有特定的翻译,那么应该使用默认的(法语)。 我们甚至想要概括一下:想象一些法语练习用英语翻译,你是一个西班牙人,不会说法语。你首先想要的是西班牙语版本,然后是英语版本,然后是法语版本。
在这种情况下,是否有一种使用国际化的好方法?
我可以尝试一种语言,如果没有任何结果,请尝试另一种语言,但效率不高......
答案 0 :(得分:1)
对于模板内容,如果您使用的是Symfony i18n行为,则可以自动使用后备默认语言。无论你在__('string')
助手中放置什么,如果找不到翻译后的字符串,都会使用默认文化(在settings.yml中声明)。对于多语言数据库内容,您需要使用Symfony i18n表行为或自行构建。如果找不到特定语言的内容,我不知道Symfony i18n数据库处理如何在默认语言的情况下工作。查询可能变得复杂。我的一般意见是你最好自己建立与数据库相关的功能,但那只是我。
对于语言的排序(首先是翻译,然后是英语,然后是默认语言),我的理解是开箱即用的Symfony i18n行为不支持这一点。您可以通过确保在西班牙语XML / XLIFF文件中将英语翻译放在可以提供英语(但不是西班牙语)翻译的<target>
标签内来破解某种类型的解决方案。这将给你ES - &gt; EN - &gt; FR。但是,我还建议你的目标是干净地“管理”你的翻译,这样它就不会变得太复杂/混乱。
希望有所帮助。