Là một miền văn bản cần thiết cho một chủ đề con


8

Xin lỗi cho câu hỏi của Noob.

Là một miền văn bản cần thiết cho một chủ đề con? Tôi đang xây dựng một chủ đề con đơn giản không có tên miền văn bản được khai báo. Vì vậy, khi tôi sử dụng các chuỗi cần dịch, tôi nên sử dụng miền văn bản chủ đề gốc (có chủ đề gốc có tải tên miền văn bản và cũng có tệp .mo / .po).

Ví dụ: thêm dòng này trong mẫu chủ đề con của tôi

<?php __('Some String', 'parent-text-domain');> 

Chuỗi trên sẽ được dịch?

Cảm ơn trước

Câu trả lời:


7

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 .motệ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ó:

  1. 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_textdomainhoặc load_theme_textdomainhoặc load_textdomain), nếu vậy đi đến điểm 3.
  2. 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 $domainlà miền văn bản của chuỗi dịch và $localelà 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.
  3. 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.
  4. 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.
  5. 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.


Câu trả lời tuyệt vời! Thêm một câu hỏi nữa - giả sử chủ đề gốc có chuỗi "màu nền" và trong phần con cũng tồn tại chuỗi này. Vì vậy, trong trường hợp này tôi có thể sử dụng miền văn bản chủ đề chính một cách an toàn không? __ ('màu nền', 'tên miền văn bản gốc')?
Ayanize

có @Ayanize nếu chủ đề gốc có __('background-color', 'parent-text-domain')bạn có thể sử dụng tương tự trong chủ đề con mà không cần phải làm gì khác để dịch nó.
gmazzap

0

Nếu chủ đề con của bạn có các chuỗi khác với chủ đề gốc.

Cách thích hợp để sử dụng một tên miền văn bản khác trong một chủ đề con là load_child_theme_textdomain()chức năng bây giờ. Bạn có thể sử dụng nó giống như các hàm tải văn bản _..._ khác.

Coi chừng!

Không giống như các tệp ngôn ngữ plugin, một tên như my_child_theme-de_DE.mo sẽ KHÔNG hoạt động. Mặc dù các tệp ngôn ngữ plugin cho phép bạn chỉ định miền văn bản trong tên tệp, nhưng điều này sẽ KHÔNG hoạt động với các chủ đề và chủ đề con. Tệp ngôn ngữ cho chủ đề nên bao gồm phím tắt ngôn ngữ CHỈ .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.