2017-07-20 65 views
0

有些日子以來,我一直在努力解決插件翻譯問題。 我有一個免費的插件版本,並使用:WP本地化:如何翻譯2合併pugins?

function my_plugin_l10n(){ 
load_plugin_textdomain('free-plugin', false, dirname(plugin_basename(__FILE__)).'/languages/'); 
} 
add_action('plugins_loaded','my_plugin_l10n'); 

然後我有一個附加的依賴於免費的,並增加了功能和屏幕的免費版本,有時在免費頁面合併功能,有時創建新頁面。我如何合併翻譯文件?我一直使用翻譯插件,如'codestyling localization'或'loco translate',但從來沒有處理這種情況。

我試過幾種方法,如:

function addon_l10n(){ 
load_plugin_textdomain("addon", false, dirname(plugin_basename(__FILE__)).'/languages/'); 
} 

add_action('plugins_loaded','addon_l10n'); 

OR

function addon_l10n(){ 
load_plugin_textdomain("addon", false, ABSPATH . 'wp-content/plugins/my_free_plugin/languages/'); 
} 
add_action('plugins_loaded','addon_l10n'); 

我試圖手動合併寶串,但沒有成功,在插件的頁面,只是字符串從未來(本地化文件「free-plugin- {locale} .po,free-plugin- {locale} .mo」位於/ free/languages/dir中。)

我也試着使用相同的textdomain跨越2個插件,但do't知道是否正確,在哪裏存儲ㄆㄇ文件..

所以其實我很困惑.. 任何人可以幫幫我?

+0

任何想法任何人? –

回答

0

每個插件都應該有自己的textdomain和自己的語言文件(的.po,的.mo),所以你應該重寫addon_l10n()這樣的:

function addon_l10n(){ 
    load_plugin_textdomain("addon", false, dirname(plugin_basename(__FILE__)).'/languages/'); 
} 
add_action('plugins_loaded','addon_l10n'); 

事實上,一個是另一個沒有按的插件不影響這一點。每個插件的.po/.mo文件應該包含相應插件中使用的文本,即使它們似乎共享一些字符串。

您可能會說共享字符串需要翻譯兩次,但這正是大多數翻譯工具(如Poedit)實施某種Translation Memory的原因。

+0

看起來你的答案是複製我的第一個陳述,那是第一次嘗試,但沒辦法,它沒有工作。插件函數是免費插件的(事實上)擴展,函數和頁面被「嵌入」在免費插件中,唯一的翻譯字符串是包含在免費/語言/免費{locale} .po.mo中的。位於addon/languages/addon {locale} .po.mo中的字符串被完全忽略。目前,我發現翻譯插件的唯一方法是合併「free」.po中的字符串,並在插件中使用「free」作爲textdomain。不是最佳做法,我知道.. –