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]