多语言网络:php+;mysql+;饼干

多语言网络:php+;mysql+;饼干,php,mysql,session,cookies,multilingual,Php,Mysql,Session,Cookies,Multilingual,我用php和mysql编写了一个多语言web。 现在我面临的问题(主要是机器人、搜索引擎优化和搜索引擎) 因为语言选择器基于cookies 它现在的工作原理:user=>index.php: function cookies() { if (!isset($_COOKIE["lang"])){ setcookie('lang','ukr', time()+(60*60*24*31)); header('Location: index.php'); }}; 并将所选语言输出到功能所需

我用php和mysql编写了一个多语言web。 现在我面临的问题(主要是机器人、搜索引擎优化和搜索引擎) 因为语言选择器基于cookies

它现在的工作原理: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.='\ux'$_曲奇饼将被替换为常量,基于用户选择,机器人和搜索引擎可以读取,因此它是必须的,而不是cookie

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

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

我看到了一种方法,可以改用[GET]变量,每次都将其传递到另一个页面,但如果用户下次回来,如何存储这个[GET]数据(与会话的问题相同)


如果您有任何想法和解决方案,我将不胜感激:)

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


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

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

,我每次都必须进行if/else检查
(!isset($\u COOKIE[“lang”])
。用户第一次来到页面,假设默认的lang='eng',如果用户更改了lang,下次我将阅读cookie并将他选择的lang返回给他。但是机器人不使用cookies,这意味着他们总是只能看到一个=默认lang@正如我所说,当get中的值被设置时,重定向用户并忽略cookie。此外,在网页上的所有链接中使用该变量。当收到的链接有lang=en时,网站上的每个链接都会添加lang=en。我理解你们。但若get中的值设置为默认值该怎么办。机器人会爬过其他语言吗@A1exandr否,与其他情况一样,您必须提供每种语言的URL,例如在网站顶部,带有允许用户更改语言的标志。这个链接还将允许机器人找到其他语言。创建所有版本的站点地图也是个好主意。好的!目前我将坚持这个决定:如果(!isset($_COOKIE[“lang”]){global$lang;$lang=“ukr”;}否则{setcookie('lang','ukr',time()+(60*60*24*31));$lang=$_COOKIE[“lang”;};好的,这是一个选项,但我可以用webAdministration面板编辑mysql,我不确定编辑PO文件是否会这么容易。@ElonThan-当然SEO完全是另一个问题,但在我的情况下,我需要机器人从一开始就查看所有语言。@A1exandr我们可以轻松编辑.PO文件POEDIT或文本编辑器,然后我们将其转换为加载到内存中的.mo。@PraveenDeshmukh好的,谢谢,我将学习这个问题。用户选择的语言是如何存储的?