在PHP中使用Multilanguage创建一个网页

Sak*_*vel 3 html php

我想用PHP开发一个多语言页面,例如英语/德语/日语..所以当我点击德语页面语言将改为德语,然后我点击英语它变成英语.请指导我这样做.提前致谢....

sou*_*rge 8

奇怪的是,很多php开发人员似乎都认为所有自然语言都有相同的语法.制作一个没有参数的翻译框架是不可能的.虽然字符串$lang['welcomeTo'] $sitename可能会为大多数语言正确翻译(欢迎使用stackoverflow),但它不适合土耳其语,例如它应该是$sitename $lang['welcomeTo'](stackoverflow'a hos geldiniz)或德语,无论哪种方式都可行(Willkommen auf stackoverflow /StackoverflowheißtSiewillkommen ).当你试图用多个变量翻译句子时,这会变得更糟.

唯一的选择是使用参数化翻译(例如:函数)

Language::getCurrentLanguage()->translate('welcomeTo', array('sitename' => $sitename));

# Translation file for english (configfile-style):
welcomeTo=Welcome to $sitename

# Translation file for turkish:
welcomeTo=$sitename'a hos geldiniz

# Translation file for german:
welcomeTo=Willkommen auf $sitename
# Or
welcomeTo=$sitename heißt sie willkommen
Run Code Online (Sandbox Code Playgroud)

简而言之:如果你想要真正的i18n,使用函数来检索你的翻译,而不是变量.您可能也想查看php 的intl扩展.


Gre*_*gor 7

我们使用http://php.net/manual/en/intro.gettext.php方式.工作正常,我们已经在其他项目(非PHP项目)中使用http://www.gnu.org/software/gettext/manual/gettext.html.所以很容易开始.

我认为正确的方法取决于谁翻译文本!如果是开发人员,您可以为每种语言提供自己的视图.但是,如果你有其他人翻译文本,像gettext(翻译是在一个专门的文件,有工具来处理这种文件)是正确的选择!

  • Gettext绝对是最佳选择.它使第三方更容易翻译您的网站.基本上,你得到你的网站文本,将.po文件发送给翻译,然后他们会给你一个包含所有翻译过的字符串的.po文件.没有代码修改. (3认同)