Dịch plugin bằng tệp .po .mo


34

Tôi muốn dịch plugin này .

Plugin đã được dịch sang các ngôn ngữ khác và nó có .potcác tệp để thêm ngôn ngữ mới (theo như tôi hiểu từ mô tả).

Làm cách nào để tôi tạo .po.motệp cho ngôn ngữ mới của mình và làm cho chúng có thể truy cập để plugin được sử dụng? Tôi đã cố gắng xác định ngôn ngữ tiếng Nga trong wp-config.phptệp của mình bằng cách chèn định nghĩa bên dưới:

define ('WPLANG', 'ru_RU');

Câu trả lời:


43

Biên tập viên

Có những cái khác, nhưng cái này được sử dụng nhiều nhất: Poedit , một trình soạn thảo danh mục gettext đa nền tảng (tệp .po).

Các định dạng

  • .molà viết tắt của Machine Object
    - xuất khẩu .potệp được biên dịch bởi WordPress
  • .polà viết tắt của Đối tượng di động
    - tệp văn bản có thể chỉnh sửa với các chuỗi dịch
    - dựa trên .pottệp chính, sử dụng Cập nhật từ tệp POT Hàm PoEdit
    - một số người phân phối tệp này dưới dạng tệp chính, nhưng chỉ nên sử dụng cho bản dịch
  • .potlà viết tắt của Mẫu đối tượng di động
    - tệp văn bản có thể chỉnh sửa được sử dụng để lấy tất cả các chuỗi có thể dịch từ chính WordPress và Chủ đề và Plugin, sử dụng Cập nhật từ chức năng Nguồn PoEdit

Thủ tục

  • Sao y tệp .pot và đổi tên thành plugin-basename-lang_COUNTRY.po
  • Ví dụ cho trường hợp plugin được tham chiếu: - pt_BR có nghĩa là tiếng Bồ Đào Nha Brazil, nhưng nhiều ngôn ngữ không có biến thể quốc gia ... - bạn sẽ phải điền vào ngôn ngữ của riêng bạnsubscribe-reloaded-pt_BR.po

  • WPLANGtrong wp-config.phptập tin phải được đặt thành ngôn ngữ của bạn, vdpt_BR
  • Mỗi khi bạn lưu .potệp, PoEdit sẽ tự động tạo một .motệp, đây là thứ mà WordPress sử dụng và về cơ bản là thứ duy nhất bạn cần tải lên

Quan sát

  • Nếu bạn thực hiện một bản dịch đầy đủ hoặc một phần đàng hoàng, hãy gửi nó cho tác giả plugin để anh ta có thể đưa nó vào Kho lưu trữ và bạn được ghi có cho nó
  • Đừng quên tạo bản sao lưu bản dịch của bạn, vì nếu bạn nâng cấp plugin, tệp của bạn sẽ bị mất
  • Đề xuất plugin @ user17078 khá hay, nhưng tôi chưa bao giờ sử dụng nó nhiều

1
Tập tin mo / po mới sẽ mất bao lâu để có hiệu lực?
Nemo

8

Bạn có thể thử plugin mã hóa nội địa hóa này : . Bạn có thể dịch các plugin và chủ đề của bạn bằng cách sử dụng này.


1
Đây là plugin dịch tốt nhất tôi từng thấy. Plugin này có thể sở hữu poedit bất kỳ ngày nào và phần tốt nhất là nó miễn phí và thân thiện với người dùng. Câu trả lời này nên được bình chọn ít nhất.
Gogol

1
Không còn tồn tại.
Chris Cox

1
Điều này có vẻ như là một thay thế tốt: wordpress.org/plugins/say-what
jetlej

@jetlej thú vị, dường như không làm việc cho tập tin po của tôi mặc dù: /
Nemo

8

(Đây là một ví dụ về bản dịch sang DEUTSCH. THAY ĐỔI phong tục tập quán của bạn.)

trong mỗi đầu plugin, có một tên duy nhất. (ví dụ:

/*
Plugin Name: my-pluginname
.......
*/

sau đó, trong thư mục của plugin đó, tạo thư mục "ngôn ngữ";

sau đó, vào tệp .php plugin của bạn (ở đâu đó trên cùng), chèn mã khởi tạo:

class load_language 
{
    public function __construct()
    {
    add_action('init', array($this, 'load_my_transl'));
    }

     public function load_my_transl()
    {
        load_plugin_textdomain('my-pluginname', FALSE, dirname(plugin_basename(__FILE__)).'/languages/');
    }
}

$zzzz = new load_language;

sau đó mở bất kỳ trình soạn thảo văn bản nào, sau đó chèn như mã này (LƯU Ý, RATNG chúng tôi chỉ thêm hai tin nhắn mẫu là "xin chào" và "tạm biệt", vì vậy, bạn có thể THÊM NHIỀU tin nhắn NHƯ BẠN MUỐN với các dòng tương tự).

# English translations for PACKAGE package.
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Automatically generated, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: my-pluginname 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-08-06 13:46-0400\n"
"PO-Revision-Date: 2013-03-21 11:20+0400\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"X-Poedit-SourceCharset: iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"


#: mypluginindex.php:87 (it is just a line of a note, to remind where our code appears)
msgid "mymessage1"
msgstr "Hello"

#: mypluginindex.php:88
msgid "mymessage2"
msgstr "Bye"

sau đó lưu tệp này dưới dạng "my-pluginname-en_US.po" (lưu ý rằng .po là phần mở rộng của tệp, vì vậy hãy kiểm tra xem chương trình soạn thảo văn bản của bạn chưa được lưu vào "my-pluginname-en_US.po.TXT").

sau đó tải xuống phần mềm POEDIT và mở tệp này. sau đó chỉnh sửa trường "dịch" và sau đó lưu thành "my-pluginname-de_DE", sẽ có hai tệp được tạo ra (Nếu poEdit không tự động tạo tệp .mo thứ hai, chỉ cần đi tới Tệp -> Tùy chọn -> Trình chỉnh sửa và kiểm tra hộp có nội dung "Tự động biên dịch tệp .mo khi lưu"),

sau đó đặt hai tập tin đó vào thư mục "ngôn ngữ".

sau đó, mở wp-config.php và tìm mã này:

define ('WPLANG, '');

và thay đổi thành

define ('WPLANG, 'de_DE');

Đó là tất cả. Khi WordPress được tải, nó sẽ đọc tệp ngôn ngữ plugin của bạn, với tiền tố -de_DE.

Vì vậy, trong tệp .php của plugin, thay vì:

echo "Something string";

bạn nên sử dụng:

echo __("mymessage1", 'my-pluginname');



Đã kết thúc. Bây giờ bạn nên kiểm tra plugin của bạn.

liên kết sử dụng ps:


Tôi đã thử điều này với chủ đề của tôi. Trong tiêu đề.php, tôi có echo __("thanks-for-visiting", 'transparent');. Trong theme \ Languages ​​\ trong suốt-en_US.po, tôi có msgid "thanks-for-visiting" msgstr "Hello! Thank you for visiting. Take a look around and subscribe to the ". Điều này xuất ra "cảm ơn bạn đã ghé thăm" ở mặt trước.
Steve

5

Bạn sẽ muốn sử dụng POEdit . Đây là một ứng dụng miễn phí để tạo tệp .po / .mo.

Tôi đã viết một hướng dẫn khá sâu về toàn bộ chủ đề ở đây . Bạn có thể bỏ qua Bước 3 - Tạo tệp dịch cho miền văn bản.


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.