假设我正在设计一个网站,其中有英语、法语、西班牙语、德语和韩语(我不是,但让我们假装我是)。
我不能依赖谷歌翻译等服务,因为该网站的性质不是娱乐而是商业。假设我可以使用专业的翻译人员,他们可以将上下文中的某些内容翻译成另一种语言并给我那个文本。
有哪些已知且简单的方法可以通过网站提供多种语言的内容?
有很多选择,例如单独的页面、使用数据库等等……但我无法真正决定什么是最好的、这个概念将如何扩展、需要考虑什么以及如何处理丢失的翻译?
是否有任何成熟的做法?
假设我正在设计一个网站,其中有英语、法语、西班牙语、德语和韩语(我不是,但让我们假装我是)。
我不能依赖谷歌翻译等服务,因为该网站的性质不是娱乐而是商业。假设我可以使用专业的翻译人员,他们可以将上下文中的某些内容翻译成另一种语言并给我那个文本。
有哪些已知且简单的方法可以通过网站提供多种语言的内容?
有很多选择,例如单独的页面、使用数据库等等……但我无法真正决定什么是最好的、这个概念将如何扩展、需要考虑什么以及如何处理丢失的翻译?
是否有任何成熟的做法?
您询问的广泛主题称为“国际化和本地化”(或简称 I18N 和 L10N)。要记住的重要一点是,它不仅仅是翻译信息。使网站国际化还有许多其他事情。
您需要的更明显的东西是:
您需要考虑的其他事项:
String message = "Please fix the following error" + (errors.size() > 1 ? "s" : "");
只是在国际化程序中不起作用。我能找到的最好的资源是ICU 图书馆的用户指南。如果您使用 Java,这是要使用的库。
希望这个答案是一个有用的开始!
查看 google 对多区域和多语言网站的建议。希望信息能派上用场。祝你好运。
完全同意@Michael D 和其他发布答案的开发人员。虽然这个问题已经被接受,但我认为一个小选项,如 :lang() 伪类也有助于创建多语言网站。:lang() 伪类允许确定各种文档中的语言。
CSS 代码:
q:lang(fr) { /* 法语引用 */ 引号:“\00AB”“\00BB”; } q:lang(en) { 引号:“\201C”“\201D”;/* 英文引文 */ }
HTML 代码:
<html>
<body>
<pre>
<p>Quote in French: <q lang="fr">То être ou ne pas être</q>.</p>
<p>Quote in English: <q lang="en">То be or not to be</q>.</p>
</pre>
</body>
</html>
输出将是这样的:
Quote in French language: << То être ou ne pas être >>.
Quote in English language: "То be or not to be".
请注意,我们讨论的是文档,而不是一段文本,因为它们执行复杂的格式化。
我们在磁盘上有一组文件,其中包含给定小部件/模块/任何内容中的所有字符串,以及每种语言的单独文件,即:
foo.strings == generic (happens to be US english)
foo.fr.strings == french
foo.fr-CA.strings == canadian french
foo.en-CA.strings == canadian english
根据客户的 Accept-Language 标头,我们确定他想要哪种语言。
当第一次请求给定语言时,我们点击文件系统为该语言建立大字符串映射,然后将其缓存在内存中。如果给定的字符串没有在 fr-CA 中定义,我们将在堆栈上跳到 fr,然后最终到泛型
页面是动态生成的,每个 url 的生成版本会根据用户的语言标头(以及其他内容)进行缓存。
希望有帮助