多语言定义为在您的网站中使用不同语言.我们将学习不同的程序,以帮助您在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
以上代码将生成以下输出 :
如果您想使用语言代码更新网站的网址,请按照以下步骤 : 去;
示例
如果您希望自己的网站使用英文,请在浏览器中键入以下行并减去;
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将寻找一个twig文件 default.html .twig 的.当您需要特定于语言的twig文件时,必须在语言文件夹的根级别上载它.如果您当前的主题位于 templates/default.html.twig ,则必须创建 templates/en/文件夹,并将特定于英语的文件夹放在其中: templates/en/default.html.twig
语言切换器插件位于 Grav Package Manager(GPM).
使用twig过滤器和 t()功能.两者功能相似.如果您有另一个twig文件,那么它允许您从数组翻译.
提供插件中的翻译和主题通过在主题或插件的根目录中创建 languages.yaml 文件(/user/plugins/error/languages.yaml),并且必须包含所有支持的语言.
如果要覆盖翻译,则必须将值对放在 user/languages/文件夹中的语言文件中.
基于环境的语言处理
这是可能的根据URL将用户路由到您网站的正确版本.如果您的网站网址是 http://english.yoursite.com ,是您的标准 http://www.yoursite.com 的别名,那么您可以创建配置as /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
然后只需添加您想要的语言即新网址.
/en/blog/custom/my-page
Grav提供了简单的机制,通过PHP在Twig中提供翻译,用于主题和插件.默认情况下启用它,如果未定义特定语言,则使用 en 语言.要启用或禁用,请转到system.yaml文件并进行更改.
languages: translations: true
您可以通过多种方式和不同的地方提供翻译.首先是系统/语言文件夹.必须以 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:enable:true 并启用语言设置.
languages: session_store_active: true
语言切换器
安装语言切换插件GPM.
使用特定于语言的域进行设置
使用基于环境的语言处理配置来分配默认语言.将此选项添加到system.yaml;它必须设置为true.
pages.redirect_default_route:true
将以下内容添加到 .htaccess 文件中,并根据您的要求选择语言slugs和域名.
# 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]