【问题标题】:Localizing a website本地化网站
【发布时间】:2011-01-18 20:30:29
【问题描述】:

对于中型网站,您应该使用哪个(我还不知道确切的页数、字数等):

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

zh.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.) 其他一些解决方案。

【问题讨论】:

    标签: php mysql localization internationalization multilingual


    【解决方案1】:

    数据库中的文本翻译表普遍是一个可怕的想法。

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

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

     "Welcome at" => "Willkommen bei",
    

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

     print _("Welcome at");
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        Gettext 用于静态内容,将您的数据库架构用于动态内容。

        【讨论】:

          【解决方案4】:

          我们使用包含文件名(主题/部分)和标识符的关键名称的平面 php 文件

          $lang['nav_home_link'] = 'Home';
          

          然后是由语言代码标记的文件夹结构

          language |
                     |
                     | - en 
                     |      | - nav.php
                     | - ja
                     |      | - nav.php
          

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

          myGengo's String

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-29
            • 1970-01-01
            • 2014-01-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多