- 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]