PHP-如何将网站翻译成多种语言?

PHP-如何将网站翻译成多种语言?,php,internationalization,translation,Php,Internationalization,Translation,我有一个网站,目前在英语;我想能够切换到一个不同的语言时,用户点击一个不同的语言(有小国旗图标在网站上)。我目前尝试的方法是使用数组,例如: $english = array('index', array('h1' => 'this is some h1 text', 'h2' => 'this is some h2 text')); $japanese = array('index', array(

我有一个网站,目前在英语;我想能够切换到一个不同的语言时,用户点击一个不同的语言(有小国旗图标在网站上)。我目前尝试的方法是使用数组,例如:

$english = array('index',
           array('h1' => 'this is some h1 text', 
                 'h2' => 'this is some h2 text'));

$japanese = array('index',
            array('h1' => '世界交換への歓迎',
                  'h2' => 世界交換への'));


print $english[index][h1];
print $japanese[index][h2];

正如您所看到的,如果我用一种单独的语言对每个页面都这样做,那将是一个疯狂的代码量。我还可以尝试其他方法吗?

您可以使用Google translate api:

它有大量的文档,并且有一些如何在google代码平台上使用它的示例:


只需浏览ajax>translation

我建议将您的站点连接到Windows Live或Google translation API。我不知道GoogleOne,但WindowsLive API似乎真的很容易使用

或者,您可以用两种语言写出页面上的所有内容,将它们存储在“内容”数据库中的不同表中,然后在用户单击“更改语言”按钮时更改加载的表。现在,你的大部分苦差将是用两种语言重写内容。

  • 内容数据库(或我猜是文件)
  • 每种语言每页的条目
  • ID引用的语言
  • $\u会话变量中设置的ID
  • 可选择在cookie中记住以供后续访问

我已将此系统用于定制CMS@。当你需要考虑小册子和其他下载内容时,它会变得特别有趣。

考虑到你正在寻找完全的i18n支持,最终会得到l10n支持,我建议在一个PHP框架中编写你的页面,支持这些现成的东西

就我个人而言,我只使用Symfony框架进行过翻译。他们将DB中的i18n表扩展名用于内容,XLIFF文件用于接口的翻译。一旦设置好,它就相当透明,使用框架避免了手工编写所有这些支持


我还知道i18n在Zend、CakePHP和Code Igniter中都得到了支持。

谷歌api和live api似乎与我做阵列的方式是一样的。为了节省时间,我将其硬编码,而不是使用数据库。我排列数组的方式如何根据url中的参数调用英语或日语?例如:index.php?l=enThe google api(idk about live),可以通过url完成。而且,你不必将翻译后的文本存储在数组中,谷歌会为你做所有的工作。只需将javascript函数的参数传递给它。查看谷歌代码操场,了解更多的信息苦工,但在我们拥有强大的人工智能之前,机器翻译输出将毫无用处。是的,你会得到一些看起来是用你想要的语言写的东西,但是“看起来很相似”,这可能是可以理解的(需要一些努力),但是你想在你的网站上有这样的文本吗?你看起来太便宜了,顶多也雇不到翻译,或者只是一个文盲。+1对Piskvor来说,我们只是没有能进行近乎精确翻译的人工智能。我支持Symfony。它可以很容易地提取字符串并将其转换为文件。+1对于Symfony。它使本地化和国际化变得容易!“依靠它,自动翻译将是适用的,在我非常勇敢的情况下——并非所有语言都有相同的句子结构”(谷歌的自动翻译)。原意:“依赖自动翻译对我来说非常乐观,(…)”案例结束。这将产生非常糟糕的翻译。