2011-08-21 138 views
1

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

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

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

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

最佳regarsds的, 亚历山大

回答

4

我认为这可能是最好保存用户的语言在cookie中,因此你不需要通过查询参数周围通过。您也可以将其设置为$_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']; 
    } 
} 
+0

也可以考虑使用HTTP内容协商头在请求中选择默认语言,如果您既没有看到也没有饼干明确的参数。 –

+0

+1,让我再提一下'url = lang ='的另一个好处是你可以提供永久链接到页面的某个语言版本。 – nobody

0

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

如果有人进入域calculla.pl那么我确实假设默认值是波兰语。如果有人输入域名calculla.com,我认为它是英文。但后来,网站内部的每个“链接”都可以像calculla.pl/en/something - 这会变成英语而忽略默认的域名。

用户始终可以通过单击 - 重新选择语言,然后将所有链接“切换”为所选语言。

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

1

如果您可以选择在主域上使用CNAME别名,那么一种广泛使用的方法是使用语言特定的域名,例如。除了www.site.comno.site.com挪威,en.site.com英语等等,这些都指向同一个网站。然后使用当前域名检测要使用的语言。

这样检测的语言看起来是这样的:

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