- Grav 插件
- Grav - 插件基础
- Grav - 插件教程
- Grav - 事件钩子
- Grav 管理面板
- Grav - 管理面板简介
- Grav - 管理面板仪表盘
- Grav - 配置系统
- Grav - 站点配置
- Grav - 管理面板页面
- Grav - 页面编辑器选项
- Grav - 页面编辑器高级功能
- Grav 高级功能
- Grav - 蓝图
- Grav - 性能和缓存
- Grav - 调试和日志记录
- Grav - 命令行界面 (CLI)
- Grav - GPM (Grav 包管理器)
- Grav - 开发
- Grav - 生命周期
- Grav - YAML 语法
- Grav - 表单
- Grav 托管
- Grav - 网络主机
- Grav 故障排除
- Grav - 服务器错误
- Grav - 权限
- Grav 有用资源
- Grav - 面试问题
- Grav - 快速指南
- Grav - 有用资源
- Grav - 讨论
Grav 多语言支持
多语言是指在您的网站中使用不同的语言。我们将学习不同的步骤,帮助您在 Grav 网站中使用多语言。
多语言基础
基本上,Grav 需要一个 .md 文件来表示任何页面。启用多语言支持后,它将查找类似 default.en.md 或 default.fr.md 的文件。
语言配置
您必须首先在您的 user/config/system.yaml 文件中设置一些基本的语言配置。
Language: Supported: - en - Fr
通过这样做,您已启用 Grav 的多语言支持。在上面的代码中,en 表示英语,fr 表示法语。这意味着您的网站将支持这两种语言。这里默认语言是 en (英语)。如果您将 fr (法语) 放在前面,那么它就成为您的默认语言。
多语言页面
如果您的默认语言设置为英语,则 Grav 将查找default.en.md文件。如果找不到该文件,则 Grav 将查找您设置的另一种语言。如果两种语言都找不到,则它将查找default.md文件。
示例
default.en.md 文件
--- title: Home --- # Grav is Running! ## You have installed **Grav** successfully
以上代码将生成以下输出:
对于法语作为默认语言,default.fr.md 文件将是:
--- titre: Accueil --- # Grav est en marche! ## Vous avez installé ** ** Grav succès
以上代码将生成以下输出:
通过 URL 激活语言
如果您想使用语言代码更新网站的 URL,请按照以下步骤操作:
示例
如果您希望您的网站使用英语,请在浏览器中输入以下内容:
http://www.mysite.com/en
如果您希望您的网站使用法语,请在浏览器中输入以下内容:
http://www.mysite.com/fr
通过浏览器激活语言
Grav 能够获取http_accept_language值并将其与当前支持的语言进行比较。如果您希望此功能生效,请在语言部分启用您的user/system.yaml文件,如下所示:
language : http_accept_language : true
基于语言的首页
要拥有基于语言的首页,您必须在您的site.yaml文件中启用以下代码:
home: aliases: en: /homepage fr: /page-d-accueil
这样,Grav 将根据活动语言确定要使用哪种语言。
以下代码将强制 Grav 将您重定向到您的默认语言路由。而include_route选项强制在您的 URL 中添加语言代码,例如http://www.mysite.com/en/home
languages: home_redirect: include_lang: true include_route: false
基于语言的 Twig 模板
如果您的文件是default.en.md,则 Grav 将查找default.html.twig的 Twig 文件。当您需要特定语言的 Twig 文件时,您必须将其上传到语言文件夹的根级别。如果您的当前主题位于templates/default.html.twig,您必须创建一个templates/en/文件夹,并将您的英语特定文件夹放在其中,如下所示:templates/en/default.html.twig
语言切换器
语言切换器插件可在Grav 包管理器 (GPM)找到。
通过 Twig 进行翻译
使用 Twig 过滤器和t()函数。这两个函数的功能类似。如果您有另一个 Twig 文件,它允许您从数组中进行翻译。
插件和主题语言翻译
通过在主题或插件的根目录中创建languages.yaml文件(例如 /user/plugins/error/languages.yaml)来提供插件和主题的翻译,并且必须包含所有支持的语言。
翻译覆盖
如果您想覆盖翻译,则必须将键值对放在您user/languages/文件夹中的语言文件中。
高级功能
基于环境的语言处理
可以根据 URL 将用户路由到您网站的正确版本。如果您的网站 URL 是http://english.yoursite.com,它是标准http://www.yoursite.com的别名,那么您可以创建一个名为/user/english.yoursite.com/config/system.yaml的配置。
languages: supported: - fr - en
它使用反向语言顺序。在上面的代码中,fr是默认语言。如果您将en放在顶部,fr放在底部来更改顺序,则en成为默认语言。
语言别名路由
在同一页面的不同语言版本之间切换非常困难,您可以使用页面对象上的Page.rawRoute()方法。它获取单个页面的不同语言翻译的相同原始路由。将语言代码放在前面以获得正确的路由。
如果您在法语页面上,自定义路由为:
/ma-page-francaise-personnalisee
英语页面的自定义路由为:
/my-custom-french-page
您将获得法语页面的原始页面,这可能是:
/blog/custom/my-page
然后只需添加您想要的语言,这将成为您的新 URL。
/en/blog/custom/my-page
翻译支持
Grav 提供了一种简单的机制,用于通过 PHP 在 Twig 中提供翻译,可在主题和插件中使用。它默认启用,如果未定义特定语言,则使用en语言。要启用或禁用,请转到 system.yaml 文件并进行更改。
languages: translations: true
您可以通过多种方式和不同的位置提供翻译。第一个位置是 system/languages 文件夹。必须创建en.yaml、fr.yaml等格式的文件。每个 yaml 文件必须包含一个数组或嵌套数组的键值对。
SITE_NAME: My Blog Site HEADER: MAIN_TEXT: Welcome to my new blog site SUB_TEXT: Check back daily for the latest news
基于会话的活动语言
您可以激活基于会话的活动语言存储。要启用,您必须在 system.yaml 中具有session : enables : true并启用语言设置。
languages: session_store_active: true
语言切换器
从 GPM 安装语言切换插件。
使用特定语言的域名设置
进行基于环境的语言处理配置以分配默认语言。将此选项添加到您的 system.yaml;它必须设置为 true。
pages.redirect_default_route: true
将以下内容添加到您的.htaccess文件,并根据您的需求选择语言代码和域名。
# http://www.cheat-sheets.org/saved-copy/mod_rewrite_cheat_sheet.pdf # http://www.workingwith.me.uk/articles/scripting/mod_rewrite # handle top level e.g. http://Grav-site.com/de RewriteRule ^en/?$ "http://Grav-site.com" [R = 301, L] RewriteRule ^de/?$ "http://Grav-site.de" [R = 301, L] # handle sub pages, exclude admin path RewriteCond %{REQUEST_URI} !(admin) [NC] RewriteRule ^en/(.*)$ "http://Grav-site.com/$1" [R = 301, L] RewriteCond %{REQUEST_URI} !(admin) [NC] RewriteRule ^de/(.*)$ "http://Grav-site.de/$1" [R = 301, L]