2016-07-05 76 views
0

我是一个业余程序员,我想制作一个多语言网站。我的问题是:(为我的目的让英文网站是网站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或其他方式显示翻译?

如果您需要任何代码或某些东西告诉我。预先感谢您:)

+0

您可以尝试使用[gettext](http://php.net/manual/en/book.gettext.php) – jcubic

+1

您真的有三个单独的问题在这里。 1是基于观点和偏离主题。 2也是基于观点和偏离主题。 3可以被认为是基于意见的或者是过于宽泛的,但在两种情况下都是无关紧要的。 – Quentin

+2

我会建议看看模板,像Smarty或同等的东西。这意味着您只需创建一个网站,然后只需使用翻译成不同语言并通过用户设置,Cookie或会话数据进行选择的标签。 – apriede

回答

0

1)我不认为它有多大的区别。最重要的是确保Google可以抓取两种语言,因此不要依赖JavaScript来在语言之间切换,将一切都完成到服务器端,这样两种语言都可以在Google中抓取并排名。

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

3)我会把翻译放到一个数据库中,然后根据域名中是EN还是PL来调用那个特定的翻译。确保网页和数据库使用UTF-8编码,否则您会发现显示的是“有趣”的字符。

-1

你可以做2个不同的语言文件,并使用PHP常量来定义你想翻译例如文本:

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

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

现在你可以做一个选择波兰之间的用户或英文翻译,并根据您可以包含的语言文件。

所以,如果你将有一个文本字段,你把它的值_TEST(介于php括号之间)。

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

+0

不知道为什么downvote,这将工作。 – kerv

-1

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

0

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

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

__('My name is') 

和翻译文件

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

然后你可以很容易翻译成其他语言和它很容易实现。

此外,如果你不想使用框架,你可以检查此链接查看例如它是如何工作的: http://tympanus.net/codrops/2009/12/30/easy-php-site-translation/

0

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

我的方法是模板。 您有两个html文件的建议不利于复制的显而易见的原因 - 说你需要改变你的网站的东西。你总是需要更改两个html文件 - 糟糕。

有一个html文件,然后解析它并翻译它听起来像一个巨大的头痛。

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

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

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

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

0

我认为在这方面“业余程序员”最容易犯的错误是允许两个(或更多)语言版本的网站发散。 (我见过所谓的专业人士也犯了这个错误......)您需要设计它,以便共享两个版本之间的所有内容,以便在需要做出更改时,只需进行更改在一个地方。你这样做的方式取决于你选择的工具,我不会就此开始建议,因为它取决于很多因素,例如你的内容是以数据库为导向的。

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

不要指望一种语言的网站可以在没有任何技术影响的情况下进行翻译;你会发现你已经对字符串的长度,字段的顺序,字符编码和字体以及有关文化事物(如邮政编码)做出各种假设,当你试图将网站转换为不同的语言。