我的网站目前全都是英文版。它是一个在线游戏,所以它有一堆不同的页面,包含静态文本,以及数据库中的大量内容。
我正在努力扩大全球范围,并准备发布该网站的一些本地化。但是,我不确定如何设置它的最佳方式,这对我来说是最容易管理的,也是最容易使用的用户。
我是否应该将翻译后的文本存储在数据库中,还是应该以完全不同的方式完成?如果它很重要,那么该站点是用PHP编写的并使用MySQL。
答案 0 :(得分:1)
我建议使用集中存储(这可能是一个MySQL数据库表,其中一列“语言”存储了翻译所使用的语言)。这也可以是XML文件,每种语言一个文件。
如果您正在寻找更多可能的文件格式,请查看Zend Framework的此文档页面:http://framework.zend.com/manual/en/zend.translate.adapter.html
对于翻译,如果您没有使用已包含翻译的框架,我可以创建自定义函数或自定义类。
另一种选择是使用标准的PHP函数。只需查看“_()”函数即可。我没有使用这些功能,只是发现它们,不确定它们的工作情况。
答案 1 :(得分:1)
我建议使用gettext框架集成(例如Zend)并以.po文件格式存储。 .po格式的编辑器使翻译工作公平。它也非常便携(因此得名),可以和你一起移动到其他游戏中。
答案 2 :(得分:1)
我们使用Zend框架的混合方法。页面内容(WYSIWYG页面)存储在DB中(每种语言一条记录,非本地化数据与本地化数据分开并存储在链接的不同表中),但字段标签和标准错误/反馈消息以XML或gettext文件(每种语言一个文件)。
答案 3 :(得分:1)
我们使用混合方法:
对于数据库,我们通常使用2个表:1表示主要内容,其他表单翻译,因此我们可以选择在翻译不可用时该怎么做:以原始语言显示内容,或隐藏它。
对于XML,我们使用XLIFF格式,许多框架和软件都可以轻松支持这种格式
答案 4 :(得分:1)
根据我的经验,手动完成所有翻译可能是一场真正的噩梦! % - )
我认为您必须将翻译重点放在仪表板命令网站上,例如导航菜单和所有其他用户配置文件设置,以及网站周围的按钮等等!
通过在您的网页文件中加入以下内容来执行此操作:
include "./includes/languages/english.php";
在一个名为ex。english.php
的文件中,像这样放在前面
define('LAN_USER_LOGIN' , 'User Logged In');
define('LAN_USER_LOGOUT' , 'User Logged Out');
.....
等等 italian.php,spanish.php,french.php等...并且在每个文件中都有相同的已定义变量但已翻译!
然后你可以让用户从国家列表中选择!很多方式这样做btw!
一种方法可以是使用session
// if the user haven't selected a language before!!
if (empty($_SESSION['language'])) {
$_SESSION['language'] = "EN";
} else {
$_SESSION['language'] = YOUR_LANG ;
}
对于我建议使用
等工具的所有其他内容http://code.google.com/intl/it-IT/apis/ajaxlanguage/
注意:我建议您不要使用自动识别系统,因为它可能会导致非常恼人的体验,尤其是如果您正在从另一个国家观看该网站!或者只是你想要的选择,简单地让用户最终选择! ; - )
使用自动识别自动完成注册目的! ; - )
希望这有帮助!