3

我有一个目前是英文的网站;当用户单击不同的语言时,我希望能够切换到不同的语言(网站上几乎没有国家标志图标)。我目前正在尝试的方式是使用数组,例如:

$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];

如您所见,如果我用单独的语言对每一页都这样做,那将是大量的代码。我还可以尝试什么其他方法?

4

4 回答 4

6

鉴于您正在寻找最终将导致 l10n 支持的完整 i18n 支持,我建议您在支持这些东西的 PHP 框架中编写您的页面。

就我个人而言,我只使用 Symfony 框架进行过翻译。他们将数据库中的 i18n 表扩展名组合用于内容,并将 XLIFF 文件用于界面翻译。一旦设置它就相当透明,并且使用框架避免了必须手动编写所有这些支持。

我还知道 Zend、CakePHP 和 Code Igniter 支持 i18n。

于 2009-06-05T04:17:29.160 回答
1
  • 内容数据库(或我猜的文件)
  • 每种语言的每页条目
  • ID 引用的语言
  • $_SESSION 变量中设置的 ID
  • 可选择在 cookie 中记住以供后续访问

我已经将此系统与自定义 CMS @ www.grandhall.eu一起使用。当您需要考虑小册子和其他下载等内容时,它会变得特别有趣。

于 2009-06-05T04:01:52.483 回答
-2

我建议将您的网站挂接到 Windows Live 或 Google Translate API 中。我不知道谷歌,但 Windows Live API 似乎真的很容易使用。

http://msdn.microsoft.com/en-us/magazine/dd569750.aspx

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

于 2009-06-05T03:52:35.747 回答
-4

你可以只使用谷歌翻译 api:

http://code.google.com/apis/ajaxlanguage/

它有大量的文档,并且有如何在 google 代码游乐场上使用它的示例:

http://code.google.com/apis/ajax/playground/

只需浏览到 ajax > 翻译

于 2009-06-05T03:45:01.470 回答