Grav 多語言支援



多語言是指在您的網站中使用不同的語言。我們將學習不同的步驟,幫助您在 Grav 網站中使用多語言。

多語言基礎

基本上,Grav 需要一個 .md 檔案來表示任何頁面。啟用多語言支援後,它將查詢類似 default.en.mddefault.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

以上程式碼將生成以下輸出:

Grav Multi Language

對於法語作為預設語言,default.fr.md 檔案將是:

---
titre: Accueil
---

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

以上程式碼將生成以下輸出:

Grav Multi Language

透過 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.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 : 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]
廣告
© . All rights reserved.