📅  最后修改于: 2020-10-25 05:21:09             🧑  作者: Mango
多语言定义为在您的网站中使用不同的语言。我们将学习不同的过程,以帮助您在Grav站点中使用多种语言。
基本上Grav需要一个.md文件来表示任何页面。启用多语言支持后,它将查找文件default.en.md或default.fr.md。 。
您必须首先在user / config / system.yaml文件中设置一些基本语言配置。文件。
Language:
Supported:
- en
- Fr
这样,您已经在Grav中启用了多语言支持。在上面的代码中, en表示英语, fr表示法语。这意味着您的站点将支持这两种语言。此处的默认语言是en(英语) 。如果您首先编写Fr(法语) ,那么它将成为您的默认语言。
如果您的默认语言设置为English ,则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,请遵循以下步骤-
例
如果您希望您的网站为英文,请在浏览器中输入以下内容-
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选项会强制在您的网址中添加语言代码,例如http://www.mysite.com/en/home
languages:
home_redirect:
include_lang: true
include_route: false
如果您的文件是default.en.md ,那么Grav将寻找一个树枝文件作为default.html.twig 。当需要特定于语言的树枝文件时,必须将其上传到语言文件夹的根目录。如果您当前的主题在templates / default.html.twig中,则必须创建一个templates / en /文件夹,并将特定于英语的文件夹放在其中: templates / en / default.html.twig
语言切换程序插件可从Grav软件包管理器(GPM)获得。
使用树枝过滤器和t()函数。两者的函数相似。如果您有另一个树枝文件,则可以从数组中进行翻译。
通过在主题或插件的根目录(/user/plugins/error/languages.yaml)中创建一个languages.yaml文件来提供插件和主题的翻译,并且必须包含所有受支持的语言。
如果要覆盖翻译,则必须将值对放在用户/语言/文件夹中的语言文件中。
基于环境的语言处理
可以根据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: enabled :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]