多语言网站

Website with multiple languages

所以我正在尝试以多种语言提供我的网站。

我希望有一个选项可以在不更改 url 的情况下更改页面上的语言。 (就像 YouTube)

我的问题:如何在保持 url 不变的情况下以多种语言提供我的网站?并且让每种语言都被搜索引擎收录

这是我目前的想法:

我目前的想法是让每个页面都查找一个语言变量(将在 cookie 或用户设置中设置)

然后从该变量加载一个文件,该文件包含一个包含相应语言文本的数组。

现在我只是从数组中提取值并将它们放入元素中。

对于搜索引擎,我可以将获取语言选项设置为获取变量。

但是,这个方法可能不是最好的

您将语言存储在 cookie 中。徐就在那里。 然后你加载一个基于语言的文件。此文件类似于 XML 或 YAML。

XML(英文):

<string id="title">My Page</string>

XML(德语):

<string id="title">Meine Seite</string>

XML(克林贡语):

<string id="title">DutlhHo'</string> <!-- not actually klingon -->

你现在只需解析这个。

TL;DR;使用 cookie 策略

您可以执行多项操作,选项包括

  1. 使用子域,例如en.example.com/whatever/comes/here
  2. 在你的 url 路径中使用它 example.com/en/whatever/comes/here
  3. 设置获取语言的 cookie

每种方法的缺点分别

#1

这使得添加实际的子域更加困难,因为您将语言设置为子域,而从技术上讲它是相同的内容但语言不同。

#2

如果您自己执行此操作,这会使 URL 的解析更加复杂。您必须考虑正在设置或未设置的语言(也许然后设置默认语言)。如果您没有设置默认语言,那么您还必须确保所有链接在其路径中都包含该语言(如果这还没有自动发生的话)。

#3

这样做的缺点是您要在客户端保存数据,例如用户可以清除 cookie,首选项或语言设置将消失。

结论

到目前为止,在上述选项中,第三个是实施起来最简单的解决方案。根本不会弄乱子域或 URL,只需从 cookie 中读取值并加载语言环境(如果语言受支持),否则加载默认语言环境。

这是迄今为止您在重建应用程序的某些部分时需要最少工作量的最佳选择。 (假设您没有正在使用的框架)

如果您将语言数据保存在没有其他信息的 cookie 中,那么为此使用 cookie 并没有真正的安全隐患。这是因为您没有保存敏感数据,所以任何窃取该 cookie 的人除了他们喜欢用什么语言查看您的网站之外什么都不知道——这在 99.9999% 的情况下是完全不相关的。

这当然是一个稍微有偏见的答案,因为这个问题依赖于其他人的经验/意见,但上面已经提到了事实(非常简短,不完整,但它明白了要点)。