0

我用 php 和 mysql 编写了一个多语言网络。现在我遇到了问题(主要是机器人、seo 和搜索引擎),因为语言选择器是基于cookie的。

它现在是如何工作的: user => index.php :

function cookies() {
 if (!isset($_COOKIE["lang"])){
 setcookie('lang','ukr', time()+(60*60*24*31)); 
 header('Location: index.php');  
}};

并将所选语言输出到需要使用该功能的每个地方:

function catSet($source, $link, $item){
 $item .= '_'. $_COOKIE['lang'];
 global $connection;
 $link = mysqli_real_escape_string($connection, $link);
 $result = mysqli_query($connection, "SELECT * FROM  $source WHERE link_item = '". $link ."'");
if (!$result) { die("DB Query failed: " . mysql_error()); }
while ($row = mysqli_fetch_array ($result)) {
 echo $row[$item]; }}

我现在想要的是必须根据机器人和搜索引擎可读的用户选择$item .= '_'. $_COOKIE['lang'];替换为常量,所以它必须不是cookie

我不想使用session,因为这样用户每次会话到期后都必须重新选择语言。

AFAIK 无法检测浏览器语言,将其设置为默认值。

我看到了一种使用 [GET] 变量的方法,并且每次都将其传递给其他页面,但是如果用户下次回来,如何存储此 [GET] 数据(与会话相同的问题)。

我将不胜感激任何想法和解决方案:)

4

2 回答 2

1

您仍然可以使用 cookie 来保存用户的决定。当用户在 url ( GET) 中没有语言访问您的网站但获得了具有所选语言的 cookie 时,将他重定向到带有选择的 url。

它将允许您使用给定语言的地址,还允许用户复制/粘贴他当前的 URL,这将始终引导他到他的语言版本。

于 2013-09-27T06:54:46.077 回答
0

对于本地化,您可以使用 PHP 的 gettext 扩展名,它使用 .po 和 .mo 文件格式进行内容翻译。这也将解决SEO的问题。所有内容以对象的形式加载到服务器的内存中,并按照请求的语言在浏览器上显示。有关更多详细信息,请阅读此处

于 2013-09-27T07:01:34.867 回答