如何制作多语言网站?

How to make a mulitlingual website?

我是一名业余程序员,我想制作一个多语言网站。我的问题是:(为了我的目的,让英语网站成为网站 nr 1 和波兰语网站 nr 2)

  1. 应该是 en.example.com 和 pl.example.com 还是 example.com/en and example.com/pl?
  2. 我应该用一种语言制作完整的网站然后翻译吗?
  3. 怎么翻译呢?使用 XML 还是什么?网站 1 和网站 2 应该是不同的 html 文件,还是有办法翻译 html 文件,然后使用 XML 或其他方式显示翻译?

如果您需要任何代码或其他信息,请告诉我。提前谢谢你:)

您可以创建 2 个不同的语言文件并使用 php 常量来定义您要翻译的文本,例如:

lang_pl.php:
define("_TEST", "polish translation");

 lang_en.php:
 define("_TEST", "English translation");

现在您可以为用户选择波兰语或英语翻译,并在此基础上包含语言文件。

因此,如果您有一个文本字段,请将其值设为 _TEST(在 php 括号之间)。

它会显示所选选项的翻译。

我工作的地方是这样做的:他们不需要在他们的网站上写太多东西,所以他们把它保存在数据库中。由于您的标签有一个 php ,我假设您知道如何使用数据库。他们有一个 mysql table 称为带有语言 ID 的语言(在您的例子中,1 代表 en,2 代表 pl)和列中的文本。所以列名是主标题,intro_text、about_us...当用户来时它选择语言并且 php 请求获取该语言的页面。这很容易,因为您的内容是静态的,可以在网站上线之前翻译,如果您的内容是动态的(用户添加内容),您可能需要使用翻译机,因为您不能期望您的用户用所有语言编写他们的条目。

我的建议是您开始使用任何框架。

例如,如果您使用 CakePHP,那么您必须编写

__('My name is')

并在翻译文件中

msgid "My name is"
msgstr "Nazywam się"

然后您可以轻松翻译成任何其他语言,而且非常容易实现。

此外,如果您不想使用 Framework,您可以检查此 link 以查看其工作原理示例: http://tympanus.net/codrops/2009/12/30/easy-php-site-translation/

虽然由于其广泛性,这个问题可能不是一个很好的 SO 问题。它可能与许多用户相关。

我的方法是模板。 由于明显的重复原因,您建议拥有两个 html 文件是错误的 - 假设您需要更改站点中的某些内容。您总是需要更改两个 html 文件 - 不好。

拥有一个 html 文件,然后对其进行解析和翻译,这听起来很头疼。

一些模板框架可以为您提供大量帮助。我一直在使用 Smarty,但这是个人选择,这里有很多选择。

我们的想法是为您的 html 创建一个模板文件,而不是使用标签的实际内容。然后在您的 php 代码中根据 cookie、用户设置或会话数据包含正确的语言。

存储标签是这里的另一个问题。将它们存储在数据库中是一个不错的选择,但是请记住,您不希望对数据库进行 100 次查询来获取每个标签。您可以做的是将它们存储在数据库中,然后让它生成一个语言文件 - 一组标签 -> 翻译以便更快地访问并在您 add/update 标签时重新生成这些文件。

或者您可以完全跳过数据库,只将它们存储在文件中,但是,随着这些文件的增长,它们可能不那么容易维护。

1) 我认为这没有太大区别。最重要的是要确保Google可以抓取两种语言,所以不要依赖JavaScript在语言之间切换,一切都在服务器端完成,以便抓取两种语言并在[=中排名18=].

2) 您可以先进行一种翻译,然后再进行另一种翻译,您只需确保布局扩展以容纳 more/less 文本而不破坏它。也许在设计时使用 lorem ipsum。

3) 我会将翻译放入数据库,然后根据域名中是 EN 还是 PL 来调用该特定翻译。确保网页和数据库是 UTF-8 编码,否则您会发现显示 'funny' 个字符。

我认为 "amateur programmer" 在这方面最容易犯的错误是允许网站的两种(或更多)语言版本不同。 (我见过所谓的专业人士也犯过这个错误......)你需要设计它以便共享两个版本之间的所有共同点,这样当需要进行更改时,你只需要进行更改在一个地方。您执行此操作的方式将取决于您选择的工具,我不会开始就此提出建议,因为它取决于许多因素,例如您的内容在多大程度上是面向数据库的。

与此密切相关的是谁在做翻译,技术开发人员和翻译人员如何协同工作,以及当哪些内容发生变化时如何跟踪需要重新翻译的问题。这些本质上是过程问题而不是编码问题,因此不适合 SO。

不要指望一种语言的网站可以在没有任何技术影响的情况下被翻译;您会发现您对字符串的长度、字段的顺序、字符编码和字体以及邮政编码等文化事物做出了各种假设,当您尝试将站点转换为不同的网站时,这些假设都是无效的语言。