多语言网站的最佳解决方案

Best solutions for multi-language website

我目前有一个多种语言的常规 HTML 网站。我用 PHP 尝试过一些东西,但结果不是很好。我需要的是一个没有以下内容的多语言网站: - 子域(如 en.domain.tld) - 路径(如 domain.tld/en

我需要的是: - 存储在 sessions/cookies 中的语言 - 可以在整个站点使用的语言(如果需要,可以在一个地方存储语言文件) - 最好在 URL 中没有明显的指示(如 ?lang=en)。

有点像 Google 的做法,因为我也有多个 TLD,所以如果用户设置从 .com 站点将他们的语言更改为英语。

最好的解决方案是什么?我对制作网站也很陌生,所以这就是我问的原因。

我比较喜欢做的是

  1. 在您的应用的顶层创建一个本地化目录

index.html

app.js

本地化/

  1. 在本地化目录中创建两个文件

网络-en.json

{
"title":"Hello world",
"desc":"languages are fun"
}

网络-es.json

{
"title":"Hola Mundo",
"desc":"idiomas son divertidos"
}
  1. 安装这个库 "jquery-localize":“https://github.com/coderifous/jquery-localize.git

bower install jquery-localize

  1. 包含库

  2. 将属性添加到您的 HTML 标签

    Hello World 会去这里 翻译后的描述将替换此文本
  3. 就绪时调用库

$(function(){ $("[data-localize]").localize("localization/web"); };

是的,可以翻译网站并在整个网站上保存其 selected 语言,而无需更改 URL。

您可以使用 Cloud Translation,它是来自 Angry Monkey Cloud 的免费开源项目:https://github.com/angrymonkeycloud/CloudTranslation

您应该先添加对 jQuery 的引用,然后再添加对 CloudTranslation JavaScript 文件的引用:

<script crossorigin="anonymous" src="https://cdn.amcapi.com/translation/cloudtranslation-1.0.0.min.js"></script>

并在HTML头部添加如下配置:

<script type="application/json" id="CloudTranslationConfig">
    {
  "Settings": {
    "DefaultLanguage": "en",
    "UrlLanguageLocation": "", // Keep empty
    "TranslatorProvider": "Azure", // Could be empty if you want to provide the translations manually
    "TranslatorProviderKey": "{Your Microsoft Azure Translator Key}",
    "UrlLanguageLocation": "Subdirectory"
  },
  "Languages": [
    {
      "Code": "en",
      "DisplayName": "English"
    },
    {
      "Code": "de",
      "DisplayName": "Deutsch"
    }
  ]
}
</script>

并添加您自己的自定义 select(下拉菜单),其中包含 class "CloudTranslationSelect" 以显示预定义语言列表。

https://www.angrymonkeycloud.com/translation

上找到更多信息