Skip to content

hugo-fixit/cmpt-translate

Repository files navigation

Auto Translate | FixIt

auto-translate

一个基于 translate.js 实现网站自动翻译的组件。

简体中文 | 繁體中文 | English | Français | Русский язык | Español | हिन्दी | deutsch | 한국어 | しろうと

Demo

无论原站点是多语言还是单语言,都可以通过此组件额外增加自动翻译功能。

在网站右上角切换配置的翻译语言,或者在 URL 中添加 ?lang= 参数指定任意支持的翻译语言。例如:?lang=korean

特性

每日翻译字符 200 万
无语言配置文件、无 API Key、对 SEO 友好!

  • 支持整页自动翻译
  • 支持指定翻译语言
  • 支持可选翻译服务
  • 支持忽略翻译元素
  • 支持忽略选择器
  • 支持忽略关键词翻译
  • 支持检测本地语言
  • 支持自定义翻译术语
  • 支持 CDN
  • 支持企业级翻译通道 *

要求

  • Hugo v0.139.0 或更高版本。
  • FixIt v0.3.16 或更高版本。

安装组件

安装方式与 安装主题 相同,有多种安装方式,任选一种即可,这里介绍两种主流方式。

作为 Hugo 模块安装

首先确保你的项目本身是一个 Hugo 模块

然后将此主题组件添加到你的 hugo.toml 配置文件中:

[module]
  [[module.imports]]
    path = "github.com/hugo-fixit/FixIt"
  [[module.imports]]
    path = "github.com/hugo-fixit/cmpt-translate"

在 Hugo 的第一次启动时,它将下载所需的文件。

要更新到模块的最新版本,请运行:

hugo mod get -u
hugo mod tidy

作为 Git 子模块安装

FixIt 和此 git 存储库克隆到你的主题文件夹中,并将其作为网站目录的子模块添加。

git submodule add https://github.com/hugo-fixit/FixIt.git themes/FixIt
git submodule add https://github.com/hugo-fixit/cmpt-translate.git themes/cmpt-translate

接下来编辑项目的 hugo.toml 并将此主题组件添加到你的主题中:

theme = ["FixIt", "cmpt-translate"]

配置

为了通过 FixIt 主题在 layouts/partials/custom.html 文件中开放的 自定义块cmpt-translate.html 注入到 custom-assets 中,你需要填写以下必要配置:

[params]
  [params.customPartials]
    head = []
    menuDesktop = [
      "inject/translate-menu-desktop.html",
    ]
    menuMobile = [
      "inject/translate-menu-mobile.html",
    ]
    profile = []
    aside = []
    comment = []
    footer = []
    widgets = []
    assets = [
      "inject/cmpt-translate.html",
    ]
    postFooterBefore = []
    postFooterAfter = []

另外,你还可以通过以下配置来自定义翻译的语言:

[languages]
  [languages.zh-cn]
    languageCode = "zh-CN"
    languageName = "简体中文"

[params]
  [params.autoTranslate]
    enable = true
    service = 'client.edge'
    languages = []
    ignoreID = []
    ignoreClass = []
    ignoreTag = []
    detectLocalLanguage = false
    cdn = ""
    enterprise = false
  • enable:是否启用自动翻译。
  • service:翻译服务提供商,可选值为 client.edgetranslate.service,详见:翻译服务提供商
  • languages:要翻译到的语言 ID 列表,例如 ["english", "chinese_simplified", "chinese_traditional", ...],详见:完整语言列表
  • ignoreID:需要忽略翻译的元素 ID,例如 ["comment", ...]
  • ignoreClass:需要忽略翻译的类名,例如 ["post-category", ...]
  • ignoreTag:需要忽略翻译的标签,例如 ["title", ...]
  • ignoreText:需要忽略翻译的文本,例如 ["FixIt", "Lruihao", ...]
  • detectLocalLanguage:是否检测本地语言。
  • cdn: translate.js CDN。
  • enterprise: 是否启用企业级翻译通道

Note

为了避免翻译语言获取失败,即使你的站点本身是单语言的,也需要配置 languageCodelanguageName,例如:

[languages]
  [languages.zh-cn]
    languageCode = "zh-CN"
    languageName = "简体中文"

Front Matter

autoTranslate:
  local: ''
  fromLanguages: []
  onlyLocalLang: false
  • local: String 用于指定当前页面的本地语言,例如 local: english

    默认本地语言同 Hugo 站点配置相同,如果某个页面实际语言与站点配置不同,可以通过 local 参数指定。

  • fromLanguages: Array 类型,用于指定当前页面内容中出现的语种是否需要翻译。

    例如:网页本身是中文,但是内容中还有其他语言,你可以指定需要翻译的语种,例如:

    fromLanguages:
      - chinese_simplified
      - chinese_traditional
  • onlyLocalLang: Boolean 类型,用于指定是否只翻译当前页面本地语言,默认为 false

    例如:网页本身是中文,但是内容中其他语言的摘要引用,设置 onlyLocalLang: true 可以只翻译中文。

自定义翻译术语

在你的项目目录 data 文件夹下创建 nomenclature.yml 文件,然后添加自定义翻译术语,例如:

- from: english
  to: chinese_simplified
  properties:
    Hello: 你好
    World: 世界
- from: english
  to: french
  properties:
    Hello: Bonjour
    World: Monde

企业级翻译通道

企业级稳定翻译通道,仅针对付费用户开放。
体验额度:每天有 5 万字符的体验额度,超出部分将不再翻译!

在 FixIt 里启用企业级翻译通道,设置 params.autoTranslate.enterprisetrue 即可,企业级翻译通道相对于普通翻译通道有以下优势:

服务 开源翻译通道 企业级翻译通道
服务端缓存层数 1 层 (文件式缓存) 1 层 (内存 + 文件式缓存)
翻译响应速度 1.5~5 秒 0.8~1.5 秒
翻译服务器 1 台 >=3 台
网络节点 2 个 >=4 个
翻译通道 手动设置 自动匹配最优
国内缓存节点
每日翻译字符 200 万 5000 万

赞助费用

FixIt 项目补贴价:¥50 ¥10 / 域名 / 月
到期自动禁用,需要重新赞助续费。

考虑到 FixIt 生态受众群体大多为个人用户,因此我(@Lruihao)以个人名义使用赞助收入进行补贴。

另外,Hugo FixIt 星球 成员每人补贴赠送 6 个月服务 / 年

符合以下性质的可以免费联系我开通企业级翻译通道:

  • translate.js 及相关生态产品的开发者
  • FixIt 及相关生态产品的开发者

赞助方式

选择赞助金额,然后在留言中备注 AutoTranslate: 你的域名 即可。

通过以下方式联系作者:

致谢

translate.js 提供技术支持和赞助企业级翻译通道