我需要用多种语言翻译我的网站。我正在考虑使用一个名为language的数据库并将翻译放在那里。
database : translation
tables: language
column: id, english, french, german, italian, spanish
或者我正在考虑像以下的PHP解决方案:
english.php
french.php
german.php
italian.php
spanish.php
所以你只需要包含你需要的文件。
现在,我可以看到两者的利弊,我想知道的是业内标准是做什么样的事情?
您可以使用 gettext的,此功能是针对此功能提出的,不是“标准”,而是足够快。
使用带有大数组的PHP文件的第二个选项(对于每个字符串来说真的很大),这是最常见的解决方案。
对于数据库内容(这里的大问题,不要忘记),如果所有内容都必须有翻译,每种语言一列,否则在数据库上使用每行语言标记。
没有行业标准。我已经看到(并实现了)使用平面文件,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框架(警予)和我曾经参与的一个巨大的开源项目(Moodle的)也使用这种方法。
这两种解决方案中没有一个对我来说似乎很棒。从长远来看,你应该考虑一个解决方案。
如果您选择使用与您认为的俄语或中文不同的其他语言翻译您的网站,该怎么办?在第一种情况下,您必须添加越来越多的列,在第二种情况下,您需要创建越来越多的文件。另一个缺点是,如果你翻译意大利语和西班牙语的页面但尚未用法语翻译?
我认为好的方面是拥有基于数据库的解决方案和主要语言。现在你可以这样做:
- 创建一个表'page'(id,title,...),你将以主语言存储页面,你也可以在那里获得翻译页面的信息
- 创建表'翻译'(idsource,idtranslation,language)
- 每次检查可用的翻译并将其提供给用户
在数据库本地化中,您有四个主要策略。每个都有特定的优点和缺点。从长远来看,我肯定会推荐克隆。您可以在以下链接中看到以下四种方法:
http://www.sisulizer.com/localization/software/server-desktop-database.shtml
您希望确保实施两个主要想法。首先,请确保您正在整合某种形式的翻译记忆库。您的语言供应商应该指导您如何执行此操作并可能为您执行此操作。
第二种,对于您定位的每种其他语言,您的数据将至少复杂2倍。当你前进时,请记住这一点。不仅是您的数据,还有您的文件集,管理等。
希望有所帮助。如果您还有其他问题,请与我们联系。
罗素