这更像是一个分析性问题。
我需要知道如何最好地制作多语言系统,例如用户可以更改语言的系统。语言将存储在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');
如您所见,这个系统既低效又不安全。有没有更好的方法呢? 我可以想到一些方法来做到这一点,但我真的不知道哪一个会好。
任何人都可以帮我吗?请不要只是说"这样做!"还告诉我为什么这是一个很好的方法。
答案 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)
首先,您不需要在文件中包含更多语言。将每种语言保存在不同的文件中
不要忘记您可以保留和其他设置语言文件,如:日期格式,数字格式等/