問題描述
我有 a plugin 將帖子狀態放置到帖子類型的管理菜單中。我正在國際化的中間,我想知道如何處理這種情況。
該插件使用一些唯一的字符串,將獲得如下這樣的文本域:
__( 'Select the post statuses to <strong>exclude</strong> from post type admin menus', 'csmpmsi' )
但是也有一些情況我使用的是 core-related 的 core-related,意思就是這樣:__( 'Pages' )。在這種情況下,對於我排除文本域並利用已經本地化在核心的術語,似乎是完全有道理的。然而,該法典似乎非常明確:
If you’re trying to translate a plugin, the same advice as above applies, except that
you must use a domain, which is loaded in a hook of your plugin
every translation call must become __(‘text’, ‘domain-name’)
那麼這個 WP-kosher?
最佳解決方案
不要依賴核心字符串進行翻譯,他們可能隨時更改或獲取 context 參數。一旦發生這種情況,您的用户將獲得部分翻譯的界面,您的翻譯無法解決這個問題。
還要記住,同一個字符串不一定用同一個字來翻譯。即使沒有上下文參數,在某些語言中為插件使用不同的翻譯也許是有用的。但是,如果您不在插件中包含字符串,這將是不可能的。
看到這個 chat discussion 我們有幾天前關於這個話題。
次佳解決方案
是的,但請不要。這就像編碼標準,更好地跟隨它,即使你可以通過繞過它獲得小的優勢。
更好的理由:
-
在版本 3.5 中,WordPress 沒有一個整體翻譯文件,由於性能原因,它被分為 3 部分。如果這種趨勢繼續下去,當您嘗試在
__('Pages')中使用默認域時,您是否可以確保加載默認域? -
您不會將工作保存到本地化程序 – 像 poedit 這樣的翻譯工具不知道如何處理一個文件中的兩個翻譯域,在本例中,他們將生成一個.po 文件,其中包含單詞’Pages’,即使您使用它的默認域。本地化人不會檢查他翻譯的字符串的實際使用情況,除非他需要了解上下文,以便他不會注意到不同的域並將其翻譯出來。另外,如果本地化程序知道他的工具,他將有一個基於 WordPress 核心翻譯文件的翻譯 DB,使得 poedit 可以自動翻譯像’Pages’ 這樣的單詞。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。