跳转至

1分钟为任意网站添加100+语言

特色

此方案为目前发现的最简便的网站国际化、本地化方法,无需改动页面、无语言配置文件、无需提前准备多语言译文,使用和配置超简单。

适用于任何网站,特别适合跨境电商站点、多语言产品站点、多语言技术博客、对隐私保密有要求的内网站点管理系统等。

效果预览

本站来举例,点击导航栏上方的 直接体验。

⚠️ MkDocs 有一些插件或主题也有类似功能,但达不到这个效果,而且用起来复杂:

翻译组件

使用 translate.js,两行 JS 实现 html 全自动翻译,这里有详细的 功能介绍和使用说明

  • 使用极其简单,加入几行 JS 即刻拥有上百种语言切换能力,无需前置配置,无需改造页面本身,也不需要配置各种语种的语言文件;
  • 扩展极其灵活,可自定义翻译术语、可指定只翻译某些区域的元素、可指定不翻译某些元素;
  • 极速翻译能力,内置三层缓存,预加载机制,毫秒级瞬间翻译能力;
  • 搜索引擎友好,不会对网站进行任何元素改动,完全不影响网站本身的搜索引擎收录;

使用方法

2 步即可:

  1. 在项目或网页中引入 translate.js(可选择任意 CDN 链接)
  2. 然后设置 translate 的执行逻辑
<script src="https://cdnjs.cloudflare.com/ajax/libs/translate.js/3.18.0/translate.min.js"></script>
<script>
translate.ignore.class.push('md-select');       // 设置不翻译的元素
translate.language.setLocal('chinese_simplified'); // 设置本地语种(如果不设置,会自动识别当前网页的文本语种)
translate.setAutoDiscriminateLocalLanguage();   // 设置首次使用时自动识别语种进行切换
translate.selectLanguageTag.show = false;       // 不使用内置的语言选择框
translate.service.use('client.edge');           // 设置机器翻译服务通道
translate.execute();    
</script>    

添加语言选择框

普通站点:建议自定义语言选择框(translate.js 内置的太丑了)

MkDocs 站点:可共用 Material 主题自带的语言选择 UI 组件,直接在 mkdocs.yml 中配置 alternate 即可自动生成:

extra:
  alternate:
    - name: 🇨🇳 中文
      lang: zh
    - name: 🇺🇸 English
      lang: en
    - name: 🇩🇪 Deutsch
      lang: de
    - name: 🇷🇺 Русский
      lang: ru
    - name: 🇯🇵 日本語
      lang: ja
    - name: 🇳🇱 Dutch
      lang: nl
    - name: 🇫🇷 Français
      lang: fr
    - name: 🇪🇸 Español
      lang: es
    - name: 🇧🇷 Português
      lang: pt
    - name: 🇸🇦 العربية
      lang: ar
    - name: 🇰🇷 한국어
      lang: ko

自定义语言选择的 UI 入口后,可以在 JS 函数中统一处理选中后的动作,比如这样:

document.addEventListener('DOMContentLoaded', () => {
    document.querySelectorAll('.md-select__link').forEach(link => {
        link.addEventListener('click', function(event) {
            // 阻止默认跳转或 href 执行
            event.preventDefault();

            // 获取选中的语言
            const langCode = this.getAttribute('hreflang');
            const targetLang = translate.util.browserLanguage[langCode];
            if (!targetLang) {
                console.warn('不支持语言码:', langCode);
                return;
            }

            // 更新翻译
            if (window.translate && typeof translate.changeLanguage === 'function') {
                translate.changeLanguage(targetLang);
            }
        });
    });
});

添加更多可选语言

只需要在语言选择框中新增语言行即可,其它的都不需要动。MkDocs 站点只需在 mkdocs.yml 的 alternate 中新增语言行即可。