确定已经有人问过并已经回答了,但是我找不到合适的教程。 我希望将文本显示给其他地方的用户,以防止我的代码变得太大而且不可读。 我的网站不会国际化。我只想拥有一些带键值结构的文件并从中获取文本。我希望将文本保存在文件中,而不是像某些教程所建议的那样保存在数据库中。 我找到了一个可行的解决方案,但我不确定这是否是一个好方法。 我正在考虑使用parse_ini_file并将我的文本保存在.ini文件中。这种方法有问题吗?你能提出更好的建议吗?
答案 0 :(得分:6)
我把所有语言数据放在数组中。它很简单,我们也可以添加多语言支持
<强>郎/ en.php 强>
<?php
return array(
'index' => 'Homepage',
'feedback' => 'Feedback'
'logout' => 'Logout from profile',
)
?>
<强>郎/ ru.php 强>
<?php
return array(
'logout' => 'Выйти из профиля',
)
?>
然后我们可以加载语言:
$lang = include('lang/en.php');
if(isset($_GET['lang']))
{
$lang = array_merge($lang, include('lang/ru.php'));
}
毕竟,$ lang看起来像是:
Array
(
[index] => Homepage
[feedback] => Feedback
[logout] => Выйти из профиля
)
我们可以非常简单地使用它:
function __($name) {
global $lang;
return $lang[$name];
}
网站模板中的某处:
...
<title><?=__('index')?></title>
</head>
<body>
<?=__('feedback')?>
答案 1 :(得分:1)
为什么不使用逗号或一些不常见字符的纯文本文件来保存这些数据?你可以阅读它并用
将其解析成一个数组$file = file_get_contents("/path/to/file");
$lines = explode('\r', $file);
foreach($lines as $line) $message[substr($line, 0, strpos($line, ','))] = substr($line, strpos($line, ','));
然后你应该有一个像$messages[3] = "No soup for you!";
文件可能如下所示:
1,The site is down.
2,Try again.
3,No soup for you!
4,Signs point to yes.
(我可能在这些函数中放错了一些参数 - 我总是忘记哪个是针,哪个是干草堆。)
答案 2 :(得分:0)
您可以在脚本中处理数据。在此脚本中,您可以调用某个源(例如您建议的ini文件)。然后使用模板引擎。对于此引擎,您指向模板文件并为模板提供所有变量。
模板生成html并在正确的位置插入变量。这样,您可以保持php(业务逻辑)代码干净,远离演示文稿(模板)。您也可以在一个文件中管理变量(ini / xml,但这可能完全不同)。
对于模板引擎,Smarty是最知名的。还有纯粹的基于php的模板系统,只有Google才能找到适合您需求的模板系统。
答案 3 :(得分:0)
我喜欢这个:
$defaultLang = array('Home','Logout',etc)
$otherLang=array( 'ru' => array('Home_in_ru','logout_in_ru',etc);
你这样翻译:
echo translate('Home');
功能是:
function translate($msg) {
if ($_GET['lang']=='en')
return $msg;
return $otherLang[$_GET['lang']][array_search($msg,$defaultLang)];
}
//注意函数在那里被简化
正如你可以看到默认情况deosnt'需要加载任何东西或做任何操作,该函数只返回传递的参数
答案 4 :(得分:0)
我喜欢lang / en.php文件的答案。但是我没有为每种语言使用文件,而是为每个网页(或类等)使用一个文件。这样可以降低文件大小,并创建一个3D数组:
`返回数组(&#34; EN&#34; =&gt;数组(&#34;标题&#34; =&gt;&#34;欢迎 - 早安&#34;,......), &#34; TG&#34; =&GT;数组(&#34;标题&#34; =&gt;&#34; Mabuhay - Magandang Umaga Po&#34;,...) );&#39;
真的很容易添加新的语言字符串......
这使语言翻译承包商变得非常容易,因为他们可以在1个编辑器中看到与外国人非常接近的母语,