在php或mysql中翻译网站?

时间:2011-12-05 02:23:10

标签: php mysql translation

我需要用多种语言翻译我的网站。我正在考虑使用一个名为language的数据库并将翻译放在那里。

database : translation
tables:  language
column: id, english, french, german, italian, spanish

或者我正在考虑像这样的PHP解决方案:

english.php
french.php
german.php
italian.php
spanish.php

所以你只需要包含你需要的文件。

现在,我可以看到两者的利弊,我想知道的是业内标准是做什么样的事情?

4 个答案:

答案 0 :(得分:12)

您可以使用gettext,此功能是针对此功能提出的,不是“标准”但足够快。

使用带有大数组的PHP文件的第二个选项(对于每个字符串来说真的很大),这是最常见的解决方案。

对于数据库内容(这里的大问题,不要忘记),如果您的所有内容都必须有翻译,每种语言都有一列,否则在数据库中为每一行使用语言标记。

答案 1 :(得分:2)

没有行业标准。我已经看到(并实现)使用平面文件,XML,PHP代码,数据库和gettext文件来存储本地化字符串的解决方案。这是一个更适合的问题。

我的PHP的首选方法只是包含字符串数组的文件,例如

<强> en.php

return array (
    'How are you?' => 'How are you?',
    'Goodbye' => 'Goodbye',
);

<强> de.php

return array (
    'How are you?' => 'Wie gehts?',
    'Goodbye' => 'Auf wiedersehen',
);

这可以以合理的粒度集成到应用程序中(可以有许多这样的文件,例如每个组件一个)和控制(如果你找不到字符串,你可以很容易地回退到任何其他语言)和它修改也很方便,无需特殊工具。

我最喜欢的PHP框架(Yii)和我参与过的一个巨大的开源项目(Moodle)也使用了这种方法。

答案 2 :(得分:2)

这两种解决方案中的任何一种对我来说都不是很好。从长远来看,你应该考虑一个解决方案。

如果您选择使用与您认为的俄语或中文不同的其他语言翻译您的网站,该怎么办?在第一种情况下,您必须添加越来越多的列,在第二种情况下,您需要创建越来越多的文件。另一个缺点是,如果你翻译意大利语和西班牙语的页面但尚未用法语翻译?

我认为好的方面是拥有基于数据库的解决方案和主要语言。现在你可以这样做:

  • 创建一个表'page'(id,title,...),您将以主语言存储页面,并且您将获得翻译页面的信息
  • 创建表'翻译'(idsource,idtranslation,language)
  • 每次检查可用的翻译并将其提供给用户

答案 3 :(得分:0)

在数据库本地化中,您有四种主要策略。每个都有特定的优点和缺点。从长远来看,我肯定会推荐克隆。您可以在以下链接中看到以下四种方法:

http://www.sisulizer.com/localization/software/server-desktop-database.shtml

您希望确保实施两个主要想法。首先,请确保您正在整合某种形式的翻译记忆库。您的语言供应商应该指导您如何执行此操作,并且可能正在为您执行此操作。

第二种,对于您定位的每种其他语言,您的数据将至少复杂2倍。当你前进时,请记住这一点。不仅是您的数据,还有您的文件集,管理等。

希望有所帮助。如果您有其他问题,请与我们联系。 罗素