PHP的多语言网站

时间:2011-08-21 19:31:25

标签: php

我目前正在建立一个国际化的网站,因此需要使用不同的语言。

我有一个名为“lang”的文件夹,其中包含en.php,no.php等文件。这些文件由一个包含不同单词的数组组成。

我的问题是我应该如何使用它。我应该用cookie来保存个人计算机中的语言吗?或者我应该保存ip地址并为其分配语言并将其保存在数据库中,还是应该在整个网站的网址中传递& land = en参数?

关于如何处理多语言网站的任何想法和想法?

最好的regarsds, 亚历山大

3 个答案:

答案 0 :(得分:5)

我认为最好将用户的语言保存在cookie中,因此您不需要通过querystring参数传递它。您也可以在$_SESSION中进行设置。但是,您应该在每个页面中接受lang=参数,这样任何用户都可以轻松地立即更改语言。然后,新语言将覆盖现有的cookie。

$valid_langs = array('en','fr','de','no');
if (isset($_GET['lang'])) {
  // verify that it is a valid language choice before attempting to use it
  // you may store an array of possibilities.

  if (in_array($_GET['lang'], $valid_langs)) {
    $language = $_GET['lang'];
    setcookie('lang', $_GET['lang']);
  }
}
else if (isset($_COOKIE['lang'])) {

  // also be sure to check that the language is a valid choice in a cookie too.
  if (in_array($_GET['lang'], $valid_langs)) {
    $language = $_COOKIE['lang'];
  }
}

答案 1 :(得分:1)

如果您可以选择在主域上使用CNAME别名,那么一种广泛使用的方法是使用特定于语言的域名,例如。除 www.site.com 之外,还有 no.site.com 代表挪威语, en.site.com 代表英语等,其中都指向同一个网站。然后从当前域名中检测要使用的语言。

这种检测语言的方式如下:

$language = substr($_SERVER['HTTP_HOST'],0,2);

答案 2 :(得分:0)

我使用了一些简单的方法......我确实维护了calculla的网站。它就像两个语言:波兰语(PL)和英语(EN)。

如果有人进入域calculla.pl,那么我认为默认为波兰语。如果有人进入域calculla.com我认为它是英语。但是后来,网站内的每个“链接”都可以像calculla.pl/en/something一样 - 转向英语忽略域名默认。

用户可以通过单击 - 然后所有链接“切换”到所选语言来重新选择语言。

这只是可能的方法之一,但我认为它可能符合您的需求 - 根本没有cookie,没有其他依赖,只有URL决定。