問題描述

我想翻譯 this 外掛。

該外掛已經被翻譯成其他語言,它具有新增新語言的.pot 檔案 (據我所知) 。

如何為我的新語言建立.po.mo 檔案,並使其可訪問以供外掛使用?我試圖在 wp-config.php 檔案中定義俄語,方法是插入下面的定義:

define ('WPLANG', 'ru_RU');

最佳解決方案

編輯

還有其他的,但這是最常用的:Poedit,一個 cross-platform gettext 目錄 (.po 檔案) 編輯器。

格式

  •  .mo 代表機器物件 – 編譯出來的 WordPress 使用的.po 檔案
  •  .po 代表行動式物件 – 具有翻譯字串的可編輯文字檔案 – 基於主.pot 檔案,使用從 POT 檔案更新 PoEdit 功能 – 一些人將其分發為主檔案,但應僅用於翻譯
  •  .pot 代表行動式物件模板 – 可編輯的文字檔案,用於從 WordPress 本身和主題和外掛中獲取所有可翻譯的字串,使用從源更新 PoEdit 功能

步驟

  • 複製.pot 檔案並重新命名為 plugin-basename-lang_COUNTRY.po
  • 引用外掛案例的示例:subscribe-reloaded-pt_BR.po – pt_BR 表示葡萄牙語巴西,但許多語言沒有國家/地區變化… – 您必須用自己的語言填寫
  •  必須將 wp-config.php 檔案中的 WPLANG 設定為您的語言,例如 pt_BR
  • 每次儲存.po 檔案時,PoEdit 會自動生成一個.mo 檔案,這是 WordPress 使用的檔案,基本上只需要上傳

Observations

  • 如果你做一個完整的或一個體面的部分翻譯,提交到外掛的作者,所以他可以把它包括在儲存庫和你的 get credited 為它
  • 不要忘記備份您的翻譯,因為如果您升級外掛,您的檔案將丟失
  • @ user17078 外掛建議是相當不錯的,但我從來沒有用過
  • 我離開了這個答案的寫作一段時間,@Pippin 在臨時回答,但正在出版… 🙂

次佳解決方案

你可以試試這個 codestyling-localization plugin: 。你可以使用這個翻譯你的外掛和主題。

第三種解決方案

(以下是 DEUTSCH 的翻譯例項,將您的使用者更改為所需的習慣。)

在每個外掛頭中,都有一個獨特的名稱。 (例如:

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

然後在該外掛的資料夾中建立一個資料夾”languages”;

然後,進入你的外掛.php 檔案 (頂部的某處),插入初始化程式碼:

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;

然後開啟任何文字編輯器,然後插入這樣的程式碼 (注意,我們只新增兩個示例訊息,”hello” 和”bye”,所以你可以按照類似的方式新增你想要的訊息) 。

# 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.0n"
"Report-Msgid-Bugs-To: n"
"POT-Creation-Date: 2012-08-06 13:46-0400n"
"PO-Revision-Date: 2013-03-21 11:20+0400n"
"Last-Translator: Automatically generatedn"
"Language-Team: nonen"
"MIME-Version: 1.0n"
"Content-Type: text/plain; charset=utf-8n"
"X-Poedit-SourceCharset: iso-8859-1n"
"Content-Transfer-Encoding: 8bitn"
"Plural-Forms: nplurals=2; plural=(n != 1);n"
"X-Generator: Poedit 1.5.4n"


#: 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"

然後將該檔案儲存為”my-pluginname-en_US.po”(注意,.po 是檔案的副檔名,因此請檢查您的文字編輯器程式是否未儲存到”my-pluginname-en_US.po.TXT”) 。

然後下載 POEDIT 軟體,並開啟此檔案。然後編輯”translation” 欄位,然後儲存為”my-pluginname-de_DE” 將會生成兩個檔案 (如果 poEdit 不自動生成第二個.mo 檔案,只需轉到檔案 – > 首選項 – > 編輯器,然後選中 「自動」 編譯.mo 檔案儲存 「),

然後將這兩個檔案放入”languages” 資料夾。

之後,開啟 wp-config.php,找到這段程式碼:

define ('WPLANG, '');

並改為

define ('WPLANG, 'de_DE');

就這樣。當 WordPress 載入時,它會讀取您的外掛語言檔案,字首為-de_DE 。

所以,在外掛的.php 檔案中,而不是:

echo "Something string";

你應該使用:

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

 成品。現在你應該測試你的外掛。

附:已使用的連結:

第四種方案

您將需要使用 POEdit 。這是一個用於建立.po / .mo 檔案的免費應用程式。

我在整個主題 here 上寫了一個漂亮的 in-depth 教程。您可以跳到步驟 3 – 建立文字域的翻譯檔案。

第五種方案

我也建議 ttp://poeditor.com/。它是一個 web-based 翻譯工具,非常適合.po,.mo,.pot 和其他型別的檔案。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。