【问题标题】:How to make a mulitlingual website?如何制作多语种网站?
【发布时间】:2016-07-05 09:03:18
【问题描述】:

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

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

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

【问题讨论】:

  • 你可以尝试使用gettext
  • 你真的有三个不同的问题。 1 是基于意见和离题。 2也是基于意见和离题的。 3 可能被认为是基于意见或过于宽泛,但在任何一种情况下都不是主题。
  • 我建议查看模板,例如 Smarty 或类似的东西。这意味着您将创建一个网站,然后简单地处理翻译成不同语言并通过用户设置、cookie 或会话数据选择的标签。
  • 我建议example.com/enexample.com/pl,如果您希望它们在同一个域中。您应该为您的视图使用模板和单独的语言文件,也可以是 XML 或 XLIFF。因此,起始页只有一个文件,里面有{{ startpage.title }}。在您的语言文件中,您有该 ID 的翻译:startpage.title: This is my page,对波兰语翻译执行相同的操作。

标签: javascript php html xml multilingual


【解决方案1】:

1) 我认为这没有太大区别。最重要的是确保谷歌可以抓取两种语言,所以不要依赖 JavaScript 来切换语言,一切都在服务器端完成,这样两种语言都可以在谷歌中被抓取和排名。

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

3) 我会将翻译放入数据库,然后根据域名中的 EN 或 PL 调用该特定翻译。确保网页和数据库是 UTF-8 编码,否则您会发现显示的字符很“有趣”。

【讨论】:

    【解决方案2】:

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

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

    __('My name is')
    

    在翻译文件中

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      这个想法是你为你的 html 制作一个模板文件,而不是你使用标签的实际内容。然后在您的 php 代码中包含正确的语言,具体取决于 cookie、用户设置或会话数据。

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

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

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

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

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

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-01-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多