Grav - Đa ngôn ngữ

Đa ngôn ngữ được định nghĩa là việc sử dụng các ngôn ngữ khác nhau trong trang web của bạn. Chúng tôi sẽ tìm hiểu các quy trình khác nhau sẽ giúp bạn sử dụng nhiều ngôn ngữ trong trang Grav của mình.

Kiến thức cơ bản về đa ngôn ngữ

Về cơ bản, Grav cần một tệp .md để thể hiện bất kỳ trang nào. Khi bạn bật hỗ trợ đa ngôn ngữ, nó sẽ tìm kiếm một tệp nhưdefault.en.md hoặc là default.fr.md..

Cấu hình ngôn ngữ

Trước tiên, bạn phải thiết lập một số cấu hình ngôn ngữ cơ bản trong user/config/system.yamltập tin. tập tin.

Language:
   Supported:
      - en
      - Fr

Bằng cách này, bạn đã bật hỗ trợ đa ngôn ngữ trong Grav. Trong đoạn mã trên,en nghĩa là ngôn ngữ tiếng Anh và frnghĩa là tiếng Pháp. Điều này có nghĩa là trang web của bạn sẽ hỗ trợ hai ngôn ngữ này. Ở đây ngôn ngữ mặc định là en (tiếng Anh) . Nếu bạn viết Fr (tiếng Pháp) trước, thì ngôn ngữ đó sẽ trở thành ngôn ngữ mặc định của bạn.

Nhiều trang ngôn ngữ

Nếu ngôn ngữ mặc định của bạn được đặt là English, sau đó Grav sẽ tìm kiếm default.en.mdtập tin. Nếu không tìm thấy tệp đó, thì Grav sẽ tìm một ngôn ngữ khác mà bạn đã đặt. Nếu cả hai ngôn ngữ không được tìm thấy, thì nó sẽ tìm kiếmdefault.md tập tin.

Example

tệp default.en.md

---
title: Home
---

# Grav is Running!
## You have installed **Grav** successfully

Đoạn mã trên sẽ tạo ra kết quả sau:

Đối với tiếng Pháp là ngôn ngữ mặc định, tệp default.fr.md sẽ là:

---
titre: Accueil
---

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

Đoạn mã trên sẽ tạo ra kết quả sau:

Ngôn ngữ hoạt động qua URL

Nếu bạn muốn cập nhật URL cho trang web của mình bằng mã ngôn ngữ, hãy làm theo các bước sau:

Example

Nếu bạn muốn trang web của mình bằng tiếng Anh, hãy nhập dòng dưới đây vào trình duyệt của bạn -

http://www.mysite.com/en

Nếu bạn muốn trang web của mình bằng tiếng Pháp, hãy nhập dòng dưới đây vào trình duyệt của bạn -

http://www.mysite.com/fr

Ngôn ngữ hoạt động qua trình duyệt

Grav có khả năng lấy http_accept_languagegiá trị và so sánh chúng với ngôn ngữ được hỗ trợ. Nếu bạn muốn điều này hoạt động, hãy bậtuser/system.yaml nộp trong phần ngôn ngữ dưới dạng -

language :
   http_accept_language : true

Trang chủ dựa trên ngôn ngữ

Để có trang chủ dựa trên ngôn ngữ, bạn phải bật mã sau trong site.yaml tập tin -

home:
   aliases:
      en: /homepage
      fr: /page-d-accueil

Bằng cách này, Grav sẽ tìm ra ngôn ngữ cần sử dụng từ các ngôn ngữ đang hoạt động.

Đoạn mã sau sẽ buộc Grav chuyển hướng bạn đến tuyến ngôn ngữ mặc định của bạn. Và tùy chọn include_route buộc phải thêm mã ngôn ngữ vào url của bạn nhưhttp://www.mysite.com/en/home

languages:
   home_redirect:
      include_lang: true
      include_route: false

Mẫu cành dựa trên ngôn ngữ

Nếu tệp của bạn là default.en.md , thì Grav sẽ tìm một tệp twig dưới dạng default.html.twig . Khi bạn cần một tệp twig dành riêng cho ngôn ngữ, thì bạn phải tải nó lên ở cấp cơ sở của thư mục ngôn ngữ. Nếu chủ đề hiện tại của bạn làtemplates/default.html.twig bạn phải tạo một templates/en/ thư mục và đặt thư mục dành riêng cho tiếng Anh của bạn trong đó như: templates/en/default.html.twig

Trình chuyển đổi ngôn ngữ

Plugin trình chuyển đổi ngôn ngữ có sẵn tại Trình quản lý gói Grav (GPM) .

Bản dịch qua Twig

Sử dụng bộ lọc cành cây và hàm t () . Cả hai chức năng tương tự nhau. Nếu bạn có một tệp twig khác, thì nó cho phép bạn dịch từ một mảng.

Bản dịch ngôn ngữ chủ đề và plugin

Cung cấp bản dịch của bạn trong các plugin và chủ đề bằng cách tạo languages.yaml tệp trong thư mục gốc của chủ đề hoặc plugin của bạn (/user/plugins/error/languages.yaml) và phải chứa tất cả các ngôn ngữ được hỗ trợ.

Ghi đè bản dịch

Nếu bạn muốn ghi đè bản dịch, thì bạn phải đặt cặp giá trị trong tệp ngôn ngữ trong thư mục người dùng / ngôn ngữ / của bạn .

Nâng cao

Environment – Based Language Handling

Có thể định tuyến người dùng đến đúng phiên bản trang web của bạn theo URL. Nếu url trang web của bạn làhttp://english.yoursite.com, một bí danh cho tiêu chuẩn của bạn http://www.yoursite.com, sau đó bạn có thể tạo cấu hình dưới dạng /user/english.yoursite.com/config/system.yaml..

languages:
   supported:
      - fr
      - en

Nó sử dụng trật tự ngôn ngữ đảo ngược. Trong đoạn mã trên, fr là ngôn ngữ mặc định. Nếu bạn thay đổi thứ tự bằng cách giữ en ở trên cùng và fr ở dưới cùng, thì en sẽ trở thành ngôn ngữ mặc định.

Định tuyến bí danh ngôn ngữ

Rất khó để chuyển đổi giữa các phiên bản ngôn ngữ khác nhau của cùng một trang, bạn có thể sử dụng Page.rawRoute()trên đối tượng trang của bạn. Nó có cùng một lộ trình thô cho các bản dịch ngôn ngữ khác nhau của một trang. Đặt mã ngôn ngữ ở phía trước để có một lộ trình thích hợp.

Nếu bạn đang truy cập trang bằng tiếng Pháp với lộ trình tùy chỉnh là -

/ma-page-francaise-personnalisee

Trang tiếng Anh có lộ trình tùy chỉnh là -

/my-custom-french-page

Bạn nhận được trang thô của trang tiếng Pháp và đó có thể là -

/blog/custom/my-page

Sau đó, chỉ cần thêm ngôn ngữ bạn muốn mà sẽ là URL mới của bạn.

/en/blog/custom/my-page

Hỗ trợ bản dịch

Grav cung cấp cơ chế đơn giản để cung cấp các bản dịch trong Twig thông qua PHP để được sử dụng trong các chủ đề và plugin. Nó được bật theo mặc định và sử dụngenngôn ngữ nếu không có ngôn ngữ cụ thể nào được xác định. Để bật hoặc tắt, hãy truy cập tệp system.yaml và thực hiện các thay đổi.

languages:
   translations: true

Bạn có thể cung cấp bản dịch theo nhiều cách và nhiều nơi khác nhau. Vị trí đầu tiên là thư mục hệ thống / ngôn ngữ. Tệp phải được tạo trongen.yaml, fr.yaml, v.v. định dạng. Mỗi tệp yaml phải bao gồm một mảng hoặc các mảng lồng nhau của các cặp khóa.

SITE_NAME: My Blog Site
HEADER:
   MAIN_TEXT: Welcome to my new blog site
   SUB_TEXT: Check back daily for the latest news

Session Based Active Language

Bạn có thể kích hoạt lưu trữ ngôn ngữ hoạt động dựa trên phiên. Để kích hoạt bạn phải cósession : enables : true trong system.yaml và bật cài đặt ngôn ngữ.

languages:
   session_store_active: true

Language Switcher

Cài đặt một plugin chuyển đổi ngôn ngữ từ GPM.

Setup with language specific domains

Có cấu hình xử lý ngôn ngữ dựa trên Môi trường để gán các ngôn ngữ mặc định. Thêm tùy chọn này vào system.yaml của bạn; nó phải được đặt thành true.

pages.redirect_default_route: true

Thêm phần sau vào của bạn .htaccess tập tin và chọn các slugs ngôn ngữ và tên miền theo yêu cầu của bạn.

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