2012-11-26 33 views
11

Tôi biết cách tạo bản dịch cho các chủ đề và mẫu chung bằng cách tạo các tệp .po và .mo với Poedit chẳng hạn. Nhưng vì các tên mẫu được viết bằng các chú thích PHP ở đầu mỗi tệp mẫu nên không có cách nào để dịch nó như tôi thấy.Làm thế nào để dịch một tên mẫu WordPress?

WordPress mẫu tiêu đề:

/** 
* Template Name: Three columns 
* 
* @package WordPress 
*/ 

Template Name được bằng cách nào đó được phân tích bởi Wordpress và được sử dụng để cư template chọn thả xuống khi tạo một trang.

Vì vậy, câu hỏi của tôi là: Có cách nào để dịch tên mẫu WordPress không? Liệu WordPress cũng tìm kiếm bất kỳ biến cụ thể nào mà tôi có thể đặt trong tệp mẫu của tôi? hoặc là nó chỉ là không thể?

Trả lời

12

Tôi tình cờ gặp điều đó khá gần đây. Đây là cách tôi nhận được thông tin này:

Đầu tiên, thêm (nếu bạn chưa có) Text Domain: mytext_domain vào style.css, trong đó mytext_domain là miền văn bản thực tế cho chủ đề của bạn.

Sau đó thêm một cuộc gọi giả đến chức năng dịch ở đâu đó trong chủ đề của bạn (điều tốt nhất là để thêm nó ngay dưới khai Template Name, do đó bạn không tự hỏi tại sao bạn đã đặt nó):

/** 
* Template Name: Three columns 
* 
* @package WordPress 
*/ 
__('Three columns', 'mytext_domain'); 

Lý do để làm điều này là vì WordPress chuyển tên mẫu của bạn tới hàm translate(), nhưng vì trình biên dịch bổ sung phân tích mã của bạn, họ không biết rằng tên mẫu của bạn phải là một phần của .po (hoặc là .mo?) tập tin. Cuộc gọi giả để __() khắc phục sự cố đó.

Và lý do tại sao bạn thêm tuyên bố Text Domain vào style.cs của bạn là vì đây là nơi WordPress tìm kiếm tên miền văn bản của chủ đề khi phân tích cú pháp tên mẫu.

Tôi không thể cung cấp cho bạn nguồn chính xác, vì tôi thực sự chỉ chọc vào mã lõi, cho đến khi tôi tìm ra cách hoạt động và cách dịch tên mẫu của tôi.

PP: Tôi không chắc chắn như thế nào Poedit hoạt động - nếu bạn thêm bản dịch của bạn bằng tay, bạn có thể không cần các cuộc gọi giả - chỉ cần kiểm tra có và không có nó và sử dụng bất cứ phù hợp với bạn nhất :)

+1

Tuyệt vời! Điều đó đã làm các trick. :) Lạ là hầu như không có tài liệu về điều này. Để làm rõ cho người khác: Bạn cần thêm 'Tên miền văn bản: mytext_domain' vào các nhận xét định nghĩa chủ đề của bạn trong style.css. – jamietelin

+1

Vâng, nó hoàn toàn không có tài liệu gì cả. Tôi bắt đầu từ [vé này] (http://core.trac.wordpress.org/ticket/6007) và sau đó thực hiện theo cách của tôi thông qua các tập tin lõi cho đến khi tôi hiểu nó hoạt động như thế nào :) –

5

Better phương pháp:

  1. Thêm tiêu đề Text Domain: theme-slug vào tệp style.css của bạn, nếu bạn chưa làm như vậy.

  2. Nhận một kiểm tra của các gói phát triển chính thức WordPress bằng cách kiểm tra ra thân cây develop.svn: http://develop.svn.wordpress.org/trunk/

  3. Trong đó, bạn sẽ tìm thấy một thư mục có tên/công cụ/i18n. Trong thư mục đó là tệp makepot.php. Bạn có thể sử dụng nó cho các chủ đề như sau:

> php makepot.php wp-theme /path/to/your/theme/directory theme-slug.pot

Điều này sẽ tạo ra các tập tin POT cho bạn, sử dụng mã WordPress mới nhất. Nó nhận các chuỗi từ tiêu đề, từ tất cả các chức năng của i18n WordPress, mọi thứ.Nó cũng có nghĩa là bạn không cần phải tạo ra bất kỳ chuỗi "giả" nào như câu trả lời khác gợi ý.

Đảm bảo bạn thực hiện svn update mỗi lần một lần, vì các công cụ i18n và mã lõi chính có thể được cập nhật cho những điều mới mỗi lần trong một thời gian.

Lưu ý rằng khi sử dụng các công cụ i18n, chúng cần nằm trong thanh toán thân cây. Bạn không thể di chuyển chúng xung quanh trong hệ thống tập tin, bởi vì chúng phụ thuộc vào các chức năng của WordPress để thực hiện phân tích cú pháp các tệp, do đó chúng có các đường dẫn tương đối sao lưu cây vào thư mục lõi/src của WordPress. Thư mục thân cây cần phải được giữ nguyên vẹn để các công cụ hoạt động bình thường. Tuy nhiên, thư mục trunk có thể chưa được cấu hình, bạn không cần cài đặt WordPress, nó chỉ cần một số mã WordPress để thực hiện phân tích cú pháp các tệp một cách chính xác.

Các vấn đề liên quan