鑰匙要點
國際化(I18N)是開發插件以容易翻譯成其他語言的過程,而本地化(L10N)是將國際化插件轉換為新語言的隨後過程。
答案很簡單; WordPress以許多不同的語言在世界範圍內使用。當插件被國際化時,它們會吸引來自世界其他地區的較大受眾,他們顯然會通過使用自己的語言使用插件來受益。
>現在我們已經熟悉了插件國際化和本地化的概念,讓我們開始研究準備翻譯的插件的過程。
>進行插件可翻譯的第一步是在插件標題中包含翻譯標題。
翻譯標題是文本域和域路徑。
>
>文本域必須匹配插件的slug。例如,如果您的插件是一個稱為sample-plugin.php的單個文件,或者它包含在稱為sample-plugin的文件夾中,則應為sample-plugin。>文本域上的註釋 文本域名必須使用破折號而不是下劃線。
>還記得我說過文本域必須與插件slug匹配嗎?畢竟這可能不是真的。我對我的一個插件進行了快速實驗,而不是插件的插件,我使用了一個唯一的文本,並且沒有任何問題。域路徑是文件夾WordPress將搜索.mo Translation Files。
默認情況下,WordPress搜索要使用的翻譯文件的插件目錄。將翻譯文件放在插件的根文件夾中可能會使您的插件結構混亂。> 例如,如果您想將翻譯文件保存在文件夾中,例如; /語言,您需要使用域路徑標頭通知WordPress。
下面是WordPress插件的典型標題。>加載文本域
>現在,我們將使用load_plugin_textdomain()函數告訴WordPress如果使用用戶的語言,請加載翻譯文件。
>
以下是函數概要。
第一個參數$域應該是文本域; $ abs_rel_path已被棄用,應設置為false;最後,$ plugin_rel_path是翻譯文件的相對路徑。
<span><span><?php </span></span><span><span>/* </span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget </span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/ </span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget </span></span><span><span> Author: Agbonghama Collins </span></span><span><span> Version: 1.2 </span></span><span><span> Author URI: http://w3guy.com </span></span><span><span> Text Domain: espw-plugin </span></span><span><span> Domain Path: /languages/ </span></span><span><span> */</span></span>如果翻譯mo文件在插件自己的目錄中,則使用如下:
>您不僅要調用load_plugin_textdomain函數,還應在插件中以插件_loaded這樣的操作在插件中調用:
><span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
>深入研究插件i18n
>現在設置了文本域和域路徑標頭,是時候學習如何國際化插件了。
<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>該教程的這一段將分為以下:
請注意:字符串ESPW-Plugin將在本教程中用作文本域。
要在插件中翻譯一個字符串,請將原始字符串包裝在__()函數調用中如下:
<span><span><?php </span></span><span><span>/* </span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget </span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/ </span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget </span></span><span><span> Author: Agbonghama Collins </span></span><span><span> Version: 1.2 </span></span><span><span> Author URI: http://w3guy.com </span></span><span><span> Text Domain: espw-plugin </span></span><span><span> Domain Path: /languages/ </span></span><span><span> */</span></span>
如果您想將字符串與瀏覽器相呼應,而不是Echo語言構造,請使用_e函數:
<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
作為PHP和WordPress開發人員,我認為您知道什麼是佔位符。您可以快速瀏覽Sprintf和printf()PHP文檔以獲取更多信息。
如果您在字符串中使用變量,例如下面的示例,則應使用佔位符。
><span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
正確的方法是使用printf()函數如下:
><span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );</span>
瀏覽WordPress插件存儲庫中某些插件的代碼,我確實看到了這樣的內容:
><span>function load_plugin_textdomain() { </span> <span>load_plugin_textdomain( 'espw-plugin', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); </span><span>} </span> <span>add_action( 'plugins_loaded', 'load_plugin_textdomain' );</span>
<span>$text = __( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>
儘管現在可以翻譯字符串,但php變量$ city也可以翻譯。
這是一個不好的做法,因為翻譯器可能會錯誤地將變量或將惡意代碼更改為插件代碼庫,這最終將導致插件故障。sprintf函數與printf相似,因為他們使用佔位符格式字符串,而printf輸出格式的字符串,sprintf返回字符串。
>示例:以下代碼將格式的字符串分配給變量$ text。3。 html翻譯
<span>_e( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>在可翻譯字符串中包括HTML取決於上下文。
4。處理複數
>當可以使用_n()函數國際化的項目數量時,該字符串會更改。
<span>echo 'Your city is $city.'</span>>
<span>printf( </span> <span>__( 'Your city is %s.', 'espw-plugin' ), </span> <span>$city </span><span>);</span>此函數接受4個參數,即:
單數 - 字符串的單數形式
>複數 - 字符串的複數形式
>易於同化,將用所述的每個函數組件剖析功能代碼。
<span><span><?php </span></span><span><span>/* </span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget </span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/ </span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget </span></span><span><span> Author: Agbonghama Collins </span></span><span><span> Version: 1.2 </span></span><span><span> Author URI: http://w3guy.com </span></span><span><span> Text Domain: espw-plugin </span></span><span><span> Domain Path: /languages/ </span></span><span><span> */</span></span>
第一個參數傳遞給_n函數是當評論數是單數時要顯示的文本。
第二個是當評論數大於一個時顯示的文本。佔位符%s將包含number_format_i18n(get_comments_number())的值。
第三個參數get_comments_number()被認為是返回註釋計數的函數。如果它返回1,則第一個參數一個註釋將由printf輸出,否則第二個參數%s如果大於1。
請注意:佔位符%s被Number_format_i18n返回的整數(get_comments_number()),這是傳遞給printf函數的第二個參數。>最後,第四個參數是翻譯
文本域。
>。>函數number_format_i18n()根據語言環境將註釋計數轉換為格式。有關更多信息,請參見文檔。
>類似於number_format_i18n()是基於時間戳的局部格式的日期。 仍在_n()函數上,下面是該函數如何工作的另一個演示。
>如果變量$ count返回1,我們將顯示一條垃圾郵件消息的文本;但是,如果它大於1,我們將刪除%d垃圾郵件消息,佔位符%d被$ count的整數替換。>
5。通過上下文歧義
>有時在幾種情況下使用一個術語,儘管它是英語中的一個和相同的單詞,它必須以其他語言的方式翻譯不同。>
例如,單詞帖子可以用作動詞,例如“單擊此處以發布您的評論”和名詞“編輯此帖子”。<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>>
在這種情況下,應使用_x或_ex函數。
>在兩種情況下,使用此方法都使用此方法,我們將獲得原始版本的字符串註釋,但是翻譯人員將在不同的上下文中看到兩個評論字符串。
>當通過poedit等翻譯工具(例如poedit)解析函數_x()的字符串時,上下文參數為翻譯器提供了在上下文上使用字符串/文本的提示。 在德語中,作為一個名詞的帖子是beitrag,而動詞為詞。> 下面的
是Poedit的屏幕截圖,將字符串柱翻譯為德語,並帶有上下文平方。
_x()檢索翻譯的字符串,_ex()顯示它。
><span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>6。逃避翻譯字符串
列表中的 是用於逃脫翻譯文本的函數 - esc_html(),ESC_HTML_E(),ESC_HTML_X(),ESC_ATTR(),ESC_ATTR_E()和ESC_ATTR_E()和ESC_ATTR_X()。您可以在WordPress codex中獲取有關這些功能的更多信息。 >我不需要解釋其中的每一個,但是他們所做的基本上是逃脫可翻譯的文本。 >
>
>
是哪些步驟可以使WordPress插件轉換準備?插件翻譯就緒涉及多個步驟。首先,您需要通過包裝__()或_e()函數中的所有文本字符串來國際化插件。接下來,您需要創建一個.pot(Portable對像模板)文件,該文件包含插件中的所有可翻譯字符串。該文件用作創建.po(Portable Object)和.mo(Machine Object)文件的模板,該模板包含翻譯字符串。 >將您的WordPress插件轉換為不同的語言,您需要為每種語言創建.po和.mo文件。這些文件包含翻譯的字符串,並根據ISO-639語言代碼命名(例如,英語en_us,fr_fr,法語)。您可以使用poedit或loco等工具來創建和管理這些翻譯文件。 >如何測試我的WordPress插件以進行翻譯準備?可以通過更改WordPress設置中的語言並檢查插件的文本字符串是否正確翻譯來測試您的WordPress插件是否準備轉換。您還可以使用WordPress I18N Checker插件之類的工具,該工具會檢查您的插件中的常見i18n錯誤。 您可以為WordPress插件翻譯貢獻通過WordPress Polyglots團隊。他們負責將WordPress定位為不同的語言。您可以加入團隊並開始將插件和主題轉換為母語。 進行WordPress主題翻譯準備涉及與插件類似的過程。您需要通過將所有文本字符串包裝在__()或_e()函數中來國際化主題。然後,您需要創建一個.pot文件並將其用作為每種語言創建.po和.mo文件的模板。總結
WordPress的目標之一是使世界各地的用戶輕鬆發佈內容。作為插件開發人員,您可以在國際化插件時幫助進一步簡化用戶的發布流程。 >使WordPress插件準備就緒?
>使WordPress插件轉換準備就緒對於吸引全球受眾至關重要的重要性是什麼。並非所有WordPress用戶都是說英語的人。通過國際化您的插件,您可以將講不同語言的用戶訪問,從而增加用戶群。它還可以增強用戶體驗,因為用戶可以用母語與您的插件進行交互,從而使其更友好。使插件的文本字符串可翻譯成其他語言。這是通過將這些文本字符串包裹在一個特殊功能中,可以翻譯它們來實現。 WordPress為此目的使用gnu getText本地化框架,該框架提供了一組用於翻譯文本的工具。
>如何將WordPress插件轉換為不同的語言?
我可以使用哪些工具用於WordPress I18N?
>我如何為WordPress插件翻譯貢獻?
> .pot,.po和.mo文件在WordPress I18N?
以上是WordPress I18N:準備您的插件翻譯的詳細內容。更多資訊請關注PHP中文網其他相關文章!