3

他们在stackoverflow上已经有一些关于这个的问题,但没有一个关于“最佳实践”的真正清楚。

对于内容设计,有哪些选择,什么是更好的选择?

我知道的一些选项正在使用文件夹:site.com/en/ 和 site.com/fr/ 或重定向 site.com/index.php?language=en

更简单的做法是使用新的 url:en.site.com 和 fr.site.com

但是,如果我想保留 site.com/index.php 而仅此而已呢?我有什么选择?

例如,如果您更改 LinkedIn 上的语言,则 URL 中没有任何变化。他们如何在那里工作?

更新:在我的情况下,网站是一个平台,使用 LAMP 堆栈。也欢迎技术建议(例如如何存储/链接所有不同的语言文件)

4

4 回答 4

5

你有一些选择,每个都有自己的优势。

如果您有一个不应该被搜索引擎索引的网络应用程序,那么您可以自由地做任何您想做的事情。您可以在会话中保留语言设置并以所选语言显示字符串。这将简化 URL 和管理。

但是,如果您有一个应该进入 Google 的标准网站,那么您的选择就会受到限制。如果您使用前一种方法,谷歌会感到困惑并且只会索引一种语言,或者更糟糕的是,将这些语言混合在一起。Google 在为您的网页编制索引时不会保留会话,因此如果您有两种不同语言的同一网页的两个版本,则它们需要具有不同的 URL。而且每次将语言作为 GET 参数传递是丑陋的、容易出错的,而且对用户不友好。

因此,您应该将语言作为文件夹(例如 site.com/en/),这是最好的选择,或者使用子域。然而,这可能是一个问题,因为每个子域都被编入索引,就好像它是一个单独的网站一样,所以像 pagerank 和网站声誉这样的东西在两者之间是分开的。

于 2013-05-29T08:12:50.400 回答
1

以下是我基于多语言网站经验的建议

  • 您可以在 Javascript 中确定浏览器的语言(请参阅内容),这是拥有可能适合用户需求的语言的良好开端

  • 用于utf8编码,无处不在(浏览器标题、编程、数据库)。我知道的唯一缺点utf8是,在某些情况下,它占用的字节数大于与给定语言更接近匹配的另一种编码(utf8对任何语言开放)。很大的优势,它涵盖了任何语言,ASCII 部分(字节 < 128)与西方编码相同(只需要一个字节)......

  • 存储用户首选项(不在 URL 中)。

    • 要么在 cookie 中(+:用户不必在他的计算机上登录以保留她的偏好;-:当用户从另一台计算机访问页面时,cookie 不存在,他/她必须重新选择偏好)。
    • 或在会话中(需要用户登录才能确定当前正在使用该站点的用户)

  • 关于站点结构,如果不存储用户偏好,通用/us /fr /jp...解决方案有优势:搜索引擎机器人将从根目录查找所有语言(页面显示不取决于用户选择)。或者您可以仅加载依赖于语言的 Javascript,该 Javascript 会立即(在 JS 下载后)以所选语言显示页面,而无需重新加载/重定向页面。

于 2013-05-29T08:22:12.127 回答
1

您可以通过 Google 的网站管理员工具告诉 Google URL 中的参数是什么意思。因此,如果您使用诸如index.php主页之类的标准约定和诸如?lang=fr针对 SEO 的法语内容之类的参数,只要它是真正的翻译。同样,当 Google.fr 抓取该站点时,您会根据他们在浏览器中的默认设置向他们的用户展示该页面的法语版本。这将增加网站的粘性,然后提高所选搜索词在法语中的排名。您可以在 PHP 中使用它检查他们的默认语言,以减轻用户端的负担:

<?php

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
echo $lang;

?>

然后,您只需将选择的语言(作为覆盖)连接到查询字符串的末尾(如果它不是默认语言),而无需存储 cookie。从用户体验的角度来看,这也应该有所帮助。它不是“漂亮”,但如果人们不输入它,它会更加用户友好:

  1. 人们可以通过改变变量来切换语言
  2. 人们可以向另一个国家的用户提供链接,并且当 PHP 检查他们的语言时,他们可以直观地看到以他们的母语显示的页面。“你想用法语看这个内容吗?”
  3. 理论上,母语可以通过Google Translate WidgetGoogle Chrome的内置功能即时翻译。
  4. 内容仅在每页一个 URI 上提供,这意味着如果内容陈旧,您不必在版本之间重写多个重定向。因为您不太可能同时翻译成两种语言。

来自Chrome 上的维基百科

根据 StatCounter 的数据,截至 2013 年 2 月,Google Chrome 拥有 37% 的全球网络浏览器使用份额,使其成为世界上使用最广泛的网络浏览器。

至于存储文件,您可以在数据库中为每种语言创建单独的表,以母语输入内容,然后将该内容复制到另一种语言的表中。然后,如果需要,您可以在屏幕上实时翻译该内容,或者允许可以翻译内容的人访问您的 CMS。两条记录在数据库中将具有相同的 ID,因此在查找语言时页面将得到适当的服务。

大型企业网站以多种方式处理 URL,它们会http://www.some_website.fr/http://www.some_website.com/. 像维基百科这样的网站使用 subdns sohttp://fr.wikipedia.org/http://en.wikipedia.org.

HTML5 支持lang='fr'在屏幕上声明内容的方法。

于 2013-05-29T08:38:32.023 回答
0

我不知道你的情况是什么,但是,恕我直言,你不应该使用新的网址。这只会浪费资源(各种资源)。如果你的网站的客户端是基于javascript的,你可以使用i18next 之类的库,它为您提供了本地化的强大支持。如果您同意将本地化留在应用程序的客户端,这是一个有效的选择。

对于 php 中的服务器端本地化,我不会有任何帮助..

于 2013-05-29T08:07:42.203 回答