我的网站上有2种语言。我想根据所选语言添加适当的文件。例如,<a href='index.php?lang=en'>English</a>
和<a href='index.php?lang=tr'>Turkish</a>
。如果用户点击第一个超链接(英文),我想显示此信息(带有HTML标签):
<h1>Hello</h1>
How are you
否则:
<h1>Selam</h1>
Nasılsın
如果用户访问网站内的其他页面,我也不希望用户选择的语言发生变化。
我该怎么做?
答案 0 :(得分:4)
最适合您的解决方案名为Gettext
见:
PHP manual Gettext
Localizing PHP web sites using gettext
这是没有任何讨论,拥有多语言网站的最佳方式。 Gettext比任何其他解决方案都快。
答案 1 :(得分:2)
您可以使用.ini文件来保存您文本的翻译版本,例如,en.ini将包含:
hello = "Hello"
greeting = "How are you"
虽然tr.ini将包含:
hello = "Selam"
greeting = "Nasılsın"
两者都是简单的文本文件(以UTF-8格式保存)。 现在你可以看到这些字符串在所有语言中都有通用名称(hello&amp; greeting),这些字符串可以在代码中使用,如下所示:
// First, load the appropriate language file:
$lang = "en";
$strings = parse_ini_file( "$lang.ini" );
// Now we can use the following code no matter what $lang indicates (tr or en):
echo( "<h1>{$strings[ "hello" ]}</h1><br/>{$strings[ "greeting" ]}" );
你应该对此有所了解:
parse_ini_file
从文件系统中读取文件,因此您必须非常小心地验证$ lang中的值!不要以任何方式依赖用户输入$lang
的值,因为它可能是恶意的(链接到page.php?lang=en
不够好)。
检查$ lang的值是否符合您自己的白名单,例如:$langs = array( "en", "tr" );
如果失败,请重定向到常规错误页面或其他内容...... 答案 2 :(得分:0)
我想最好的方法是在数据库中映射所有单词,检测哪种语言,然后通过映射语言ID(英语为EN,土耳其语为TU)和指定单词来检索数据库中的所有数据。你可以用“If,else”来做同样的方法......