jekyll-polyglot 尚未在 github-actions 中原生支持
gem install jekyll-polyglot在 _config.yml 中,以下属性管理您网站支持的语言。您可以通过将新语言添加到这些值来提供支持(见下文)。语言通过其官方区域代码来识别。
languages: ["en", "es", "fr", "de"]
default_lang: "en"
exclude_from_localization: ["images", "fonts", "sitemap"]
url: https://polyglot.untra.io
languages: 标识网站支持的语言的区域代码数组。default_lang: 网站的默认语言。exclude_from_localization: 属于构建网站但不需要本地化的文件夹和目录。这主要是为了缩短构建时间,由于图片和字体等资源文件是网站的重要部分,这确保它们不会在输出中被不必要地”翻译”或复制。url 您的生产静态网站的 URL。假设您已经有一个功能正常的单语言网站,添加新语言并不简单。要真正创建一个多语言网站,您应该预期需要用新语言重新创建所有内容。 这可能看起来是一项艰巨的任务,但请分部分考虑翻译。内容为王;新页面和帖子获得更新的翻译更为重要。只有当您要求从一开始就完美翻译时,创建多语言网站才会困难。
首先,您(和您的团队,以及您的经理,如果有的话)应该讨论并选择需要为新网站翻译哪些内容。您必须选择首选的基础内容进行翻译。考虑分析数据、热门页面和博客帖子,以及当前和未来用户访问您网站的流量。如有疑问,优先考虑页面而非旧博客帖子。如果这意味着可以更早推出新语言,旧帖子的翻译可能不值得付出那么多努力。
其次,您必须(或强烈建议)在整个网站提供100%的富内容覆盖。这些是以更复杂方式嵌入的小字符串。有多种方法可以遍历富内容。请记住,您必须在富内容中支持所有语言的所有小字符串。
网站内容分为两种类型:基础和富内容。
基础内容是博客帖子、页面和非交互式内容的纯文本。想想页面和帖子。基础内容是网站点击的燃料。Polyglot 为基础内容提供回退支持。
富内容是交互式的、华丽的,由较短的字符串组成。想想导航栏和下拉菜单。富内容更具技术性,让访客留在网站上。缺失的富内容没有回退支持。
以下 Liquid 工具可与 jekyll-polyglot 一起使用:
{% for lang in site.languages %}
{{lang}}
{% endfor %}site.languages 直接指向 _config.yml 中的 languages 数组。可以通过 Liquid 访问。
{{site.default_lang}}site.default_lang 直接指向 _config.yml 中的 default_lang 字符串。可以通过 Liquid 访问。
{% if site.active_lang == "es" %}
<h1>Hola! Como estas?</h1>
{% endif %}site.active_lang 是正在构建页面的区域代码。德语版页面是 "de",西班牙语版是 "es",依此类推。可以通过 Liquid 访问。
使用这些工具,您可以指定如何附加正确的富内容。
{% if page.rendered_lang == site.active_lang %}
<p>Welcome to our {{ site.active_lang }} webpage!</p>
{% else %}
<p>webpage available in {{ page.rendered_lang }} only.</p>
{% endif %}page.rendered_lang 变量表示页面内容的实际语言,允许模板检测页面何时作为回退内容提供。
默认情况下,Github 阻止 Jekyll 博客使用插件。这是故意的,以防止恶意代码在 Github 服务器上执行。虽然这使得使用 Polyglot(和其他 Jekyll 插件)更加困难,但仍然可行。
_site/ 构建到 gh-pages您可以在单独的分支上开发 Jekyll 网站,然后将构建的 _site/ 内容推送到 gh-pages 分支,而不是在 Github 上托管 Jekyll 博客引擎。这允许您使用 Github 管理和源代码控制您的网站开发,而无需依赖 Github 来构建您的网站!
您可以通过在单独的分支上维护 Jekyll 内容,只将 _site/ 文件夹提交到 gh-pages 分支来实现。因为这些只是文件夹中的静态 HTML 页面,Github 会像其他任何 gh-pages 内容一样托管它们。
这个过程通过一个简单的脚本大大简化,该脚本将构建您的网站并将 _site/ 文件夹提交到您的 gh-pages。很多人都有一个。这里有一个。这里还有一个。这是我的发布脚本:
#! /bin/sh
# 相应地更改分支名称
rm -rf site/_site/
cd site && bundle exec jekyll build && cd ..
git add site/_site/ && git commit -m "$(date)"
git subtree push --prefix site/_site origin gh-pages