本地化网站

时间:2011-01-18 20:30:30

标签: php mysql localization internationalization multilingual

您应该使用哪个中型网站(我不知道确切的页数,单词数等):

A)具有静态资源的PHP文件:

en.php

    $lang_welcome = 'Welcome';

de.php

    $lang_welcome = 'Willkommen';

B)包含翻译的MySQL表:

+------+-----------+---------+-------------+
| lang |   path    |  term   | translation |
+------+-----------+---------+-------------+
|  en  | index.php | welcome |   Welcome   |
+------+-----------+---------+-------------+
|  de  | index.php | welcome |  Willkommen |
+------+-----------+---------+-------------+
|  en  |           |  cancel |   Cancel    |
+------+-----------+---------+-------------+
|  de  |           |  cancel |  Abbrechen  |
+------+-----------+---------+-------------+

(我现在能想到的唯一解决方案。)

C。)其他一些解决方案。

4 个答案:

答案 0 :(得分:1)

数据库中的文本转换表通常是一个可怕的想法。

对于文件转换方法,存在多种变体。对于非常小的应用程序,助记符id->文本方法是可以的(通常是常量或文本数组)。但是,如果可行且可行,您应该更喜欢gettext。 (有仿真作为本机PHP脚本。)

数据文件通常采用以下形式:

 "Welcome at" => "Willkommen bei",

制作更易读和可维护的代码,不依赖于缩写或缩短的数组索引/常量/变量名称:

 print _("Welcome at");

答案 1 :(得分:0)

我认为php文件更标准。你的文字不会改变。 DB不是真正的最佳选择,因为它是只读数据。

答案 2 :(得分:0)

对静态内容使用Gettext,为动态内容使用数据库架构。

答案 3 :(得分:0)

我们使用包含文件名(主题/部分)和标识符

的密钥名称的平面php文件
$lang['nav_home_link'] = 'Home';

然后是一个用语言代码

标记的文件夹结构
language |
           |
           | - en 
           |      | - nav.php
           | - ja
           |      | - nav.php

当然,我们使用自己的工具来管理文件,并为我们支持的每种语言完成翻译。看看,也可能对你有用。

myGengo's String