我目前正在建立一个国际化的网站,因此需要使用不同的语言。
我有一个名为“lang”的文件夹,其中包含en.php,no.php等文件。这些文件由一个包含不同单词的数组组成。
我的问题是我应该如何使用它。我应该用cookie来保存个人计算机中的语言吗?或者我应该保存ip地址并为其分配语言并将其保存在数据库中,还是应该在整个网站的网址中传递& land = en参数?
关于如何处理多语言网站的任何想法和想法?
最好的regarsds, 亚历山大
答案 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决定。