开发多语言系统


Develop multilingual system

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

我需要知道如何最好地制作一个多语言系统,也就是用户可以改变语言的系统。语言将被存储在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');
如您所见,这个系统既低效又不安全。有更好的方法吗?我能马上想到几种方法来做这件事,但我真的不知道哪一种会好。 有谁能帮我一下吗?请不要只说"这样做!",也告诉我为什么这样做是一个好方法。

如果你不需要提供通过web界面更改本地化文本的功能,你可以这样做:

包括/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"];

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

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

  1. 它是清洁
  2. 您可以编写一个脚本来比较所定义的键。如果一个文件缺少一个密钥,你可以提醒人们修复这种情况。

别忘了你可以在语言文件中保留其他设置,如:日期格式,数字格式等/