📜  Grav-多语言

📅  最后修改于: 2020-10-25 05:21:09             🧑  作者: Mango


多语言定义为在您的网站中使用不同的语言。我们将学习不同的过程,以帮助您在Grav站点中使用多种语言。

多国语言基础

基本上Grav需要一个.md文件来表示任何页面。启用多语言支持后,它将查找文件default.en.mddefault.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

上面的代码将生成以下输出-

Grav多国语言

对于法语作为默认语言,default.fr.md文件将为-

---
titre: Accueil
---

# Grav est en marche!
## Vous avez installé ** ** Grav succès

上面的代码将生成以下输出-

Grav多国语言

通过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选项会强制在您的网址中添加语言代码,例如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.yamlfr.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]