0

我的网站上有 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

如果用户转到网站内的其他页面,我也不希望用户选择的语言发生变化。

我怎样才能做到这一点?

4

3 回答 3

4

最适合您的解决方案是 Gettext

请参阅:
PHP 手册 Gettext
使用 gettext 本地化 PHP 网站

这是拥有多语言网站的最佳方式,无需任何讨论。Gettext 比任何其他解决方案都快。

于 2011-12-26T14:13:00.527 回答
3

您可以使用 .ini 文件来保存文本的翻译版本,例如,en.ini 将包含:

hello    = "Hello"
greeting = "How are you"

而 tr.ini 将包含:

hello    = "Selam"
greeting = "Nasılsın"

两者都是简单的文本文件(以 UTF-8 格式保存)。现在您可以看到字符串在所有语言中都有通用名称(hello 和问候语),这些名称可以在代码中使用,如下所示:

// 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" );如果失败,则重定向到一般错误页面或其他内容...
于 2011-12-26T15:24:05.353 回答
0

我想最好的方法是映射数据库中的所有单词,检测哪种语言,然后通过映射语言 ID(英语为 EN,土耳其语为 TU)和指定的单词从数据库中检索所有数据。你可以对相同的方法使用“If , else”...

于 2011-12-26T14:19:32.883 回答