TL; DR: Nếu bạn sử dụng các chuỗi trong chủ đề gốc, exaclty cách chúng được sử dụng trong chủ đề gốc, bạn không cần phải có một miền văn bản cho chủ đề con của mình.
Nhưng nếu bạn sử dụng các chuỗi không được sử dụng trong chủ đề gốc, để làm cho chúng có thể dịch được, bạn sẽ cần một miền văn bản khác với các .mo
tệp dịch ( ) có liên quan .
Quy trình dịch thuật
Khi WordPress gặp một chuỗi trong chức năng dịch, nó:
- Kiểm tra xem một bản dịch cho miền văn bản yêu cầu đã được tải (thông qua
load_plugin_textdomain
hoặc load_theme_textdomain
hoặc load_textdomain
), nếu vậy đi đến điểm 3.
- Kiểm tra xem thư mục dịch (theo mặc định
wp-content/languages
) có chứa tệp văn bản phù hợp không. Phù hợp với tập tin textdomain là "{$domain}-{$locale}.mo"
nơi $domain
là miền văn bản của chuỗi dịch và $locale
là miền địa phương hiện cho trang web. Nếu không tìm thấy tệp đó, chuỗi gốc được trả về, nếu không nó sẽ được tải và chuyển tiếp sang điểm tiếp theo.
- Khi tên miền văn bản được tải, WP sẽ xem nếu chuỗi yêu cầu được chứa trong tệp đó, nếu không trả về chuỗi gốc, nếu không, WP sẽ chuyển tiếp đến điểm tiếp theo.
- Nếu chuỗi dịch được tìm thấy cần một số độ phân giải số ít / số nhiều (ví dụ như khi sử dụng
_n()
), chúng được thực hiện. Nếu không thì WP chuyển tiếp đến điểm tiếp theo.
- Các móc lọc được áp dụng trên chuỗi dịch (xem https://developer.wordpress.org/?s=gettext&post_type%5B%5D=wp-parser-hook ) và cuối cùng kết quả được trả về.
Vì thế?
Khi bạn sử dụng miền văn bản chủ đề gốc trong chức năng dịch từ chủ đề con (giả sử chủ đề gốc gửi và tải tệp văn bản hoặc có tệp dịch trong thư mục dịch), WordPress sẽ đến điểm 3. trong danh sách trên, và nếu chuỗi có sẵn trong tệp (vì được sử dụng trong chủ đề gốc) nên nó sẽ được dịch, nếu không thì không.
Nó có nghĩa là các chuỗi tùy chỉnh trong chủ đề gốc cần tệp dịch riêng.
Về lý thuyết, có thể sử dụng tên miền văn bản gốc trong một tệp dịch khác, vì WordPress có khả năng tải nhiều lần hơn cùng một tên miền văn bản, "hợp nhất" chúng, nhưng điều đó có vấn đề vì chỉ một tệp có thể tồn tại ở định dạng "{$domain}-{$locale}.mo"
trong các thư mục dịch ( xem điểm 2. trong danh sách trên).
Vì vậy, kết luận, cách khả thi duy nhất để làm cho một chủ đề con có thể dịch được, nếu nó chứa các chuỗi không được sử dụng trong chủ đề gốc, là sử dụng miền văn bản riêng và tệp dịch riêng.