开发多语言系统

时间:2011-11-26 21:02:24

标签: php translation multilingual analytical

这更像是一个分析性问题。

我需要知道如何最好地制作多语言系统,例如用户可以更改语言的系统。语言将存储在cookie或数据库中 我过去曾为每种语言使用不同的文件,例如:

nl.php

$lang['hi'] = 'Hoi';
$lang['howareyou'] = 'Hoe gaat het?';

en.php

$lang['hi'] = 'Hi'];
$lang['howareyou'] = 'How are you?';

的index.php

include($language . '.php');

如您所见,这个系统既低效又不安全。有没有更好的方法呢? 我可以想到一些方法来做到这一点,但我真的不知道哪一个会好。

任何人都可以帮我吗?请不要只是说"这样做!"还告诉我为什么这是一个很好的方法。

2 个答案:

答案 0 :(得分:4)

好吧,如果你不需要提供通过网络界面更改本地化文本的能力,你可以这样做:

包括/ locales.php

<?php
    if (!isset($locales)) {
        $locales = array(
            "en" => array(
                "hi" => "Hi",
                "howareyou" => "How are you?"
            ),
            "nl" => array(
                "hi" => "Hoi",
                "howareyou" => "Hoe gaat het?"
            )
        );
    }
?>

的index.php

include("include/locales.php");
if (!isset($locales[$language])) $locale = $locales[$deflang]; // $deflang could be "en"
else $locale = $locales[$deflang];

echo $locale["hi"]." ".$locale["howareyou"];

这是最快的方法,因为使用hash解析单个包含文件的操作非常快。 如果您需要提供通过Web界面修改本地化字符串的功能,那么您需要在每次显示页面时将本地化字符串存储在DB中并从那里读取em ...这种方法更慢。

答案 1 :(得分:0)

首先,您不需要在文件中包含更多语言。将每种语言保存在不同的文件中

  1. 它更干净
  2. 您可以创建一个脚本来比较定义的键。如果文件缺少某个密钥,您可以提醒用户修复此情况。
  3. 不要忘记您可以保留和其他设置语言文件,如:日期格式,数字格式等/