鑰匙要點
國際化(I18N)是開發插件以容易翻譯成其他語言的過程,而本地化(L10N)是將國際化插件轉換為新語言的隨後過程。
>“準備WordPress插件”翻譯對於吸引全球受眾,增強用戶體驗並通過使使用不同語言的用戶可以訪問用戶群至關重要。
>- 準備翻譯的插件的過程涉及設置翻譯標題(文本域和域路徑),加載文本域以及國際化各種元素,例如字符串,佔位符,佔位符,html,html,plurals,proceponts ,context and context and casting translation strings。 >
- > WordPress I18N使用GNU getText本地化框架,該框架提供了翻譯文本的工具。這涉及將所有文本字符串包裝在__()或_e()函數中,並創建.pot(Portable Object Template)文件,該文件包含插件中的所有可翻譯字符串。
- 國際化和本地化之間的差異 多年來,開發人員傾向於誤解這些術語的含義 - 國際化和本地化。
- 國際化是開發插件的過程,因此可以輕鬆地翻譯成其他語言。
- >本地化描述了將國際化插件轉換為新語言的後續過程。
為什麼國際化?
答案很簡單; WordPress以許多不同的語言在世界範圍內使用。當插件被國際化時,它們會吸引來自世界其他地區的較大受眾,他們顯然會通過使用自己的語言使用插件來受益。
- >
作為開發人員,您可能沒有時間提供插件的本地版本,因為您不會說其他語言。但是,當您國際化插件時,您會為他人打開大門,以創建本地化而不一定要修改源代碼。
-
插件國際化
>現在我們已經熟悉了插件國際化和本地化的概念,讓我們開始研究準備翻譯的插件的過程。
>>設置翻譯頭
進行插件可翻譯的第一步是在插件標題中包含翻譯標題。
翻譯標題是文本域和域路徑。
>文本域用於表示屬於插件的所有文本。 這是一個唯一的標識符,可確保WordPress可以區分所有加載的翻譯。這增加了可移植性,並且使用已經存在的WordPress工具可以更好地發揮作用。> >
>文本域必須匹配插件的slug。例如,如果您的插件是一個稱為sample-plugin.php的單個文件,或者它包含在稱為sample-plugin的文件夾中,則應為sample-plugin。>文本域上的註釋 文本域名必須使用破折號而不是下劃線。
>還記得我說過文本域必須與插件slug匹配嗎?畢竟這可能不是真的。我對我的一個插件進行了快速實驗,而不是插件的插件,我使用了一個唯一的文本,並且沒有任何問題。道德:確保文本域是唯一的,以免與其他插件相衝突。
>域路徑是文件夾WordPress將搜索.mo Translation Files。
默認情況下,WordPress搜索要使用的翻譯文件的插件目錄。將翻譯文件放在插件的根文件夾中可能會使您的插件結構混亂。> 例如,如果您想將翻譯文件保存在文件夾中,例如; /語言,您需要使用域路徑標頭通知WordPress。
下面是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></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>
該教程的這一段將分為以下:- >字符串翻譯
- 使用佔位符
- html翻譯
- 與復數打交道 通過上下文
- 逃脫翻譯字符串
<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></span>
<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
如果您在字符串中使用變量,例如下面的示例,則應使用佔位符。
><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取決於上下文。> 一個示例是一個鏈接(與周圍的文本分開):
另一個示例是段落中的鏈接(未與周圍的文本分開):> <span>echo 'Your city is $city.'</span>
><span>printf( </span> <span>__( 'Your city is %s.', 'espw-plugin' ), </span> <span>$city </span><span>);</span>
此函數接受4個參數,即:>
單數 - 字符串的單數形式
>複數 - 字符串的複數形式
- 計數 - 將確定是否應返回單數或複數形式的對像數量
- >文本域 - 插件文本域
- >讓我們來了解一些示例,以理解_n()函數的工作方式。
- 在英語中,您有“一個評論”和“兩個評論”。在其他語言中,您可以具有多種複數形式。 下面的代碼演示瞭如何使用_n()函數來處理此類情況。
- >
<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></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函數。
>它類似於__()和_e(),但是它有一個額外的參數 - $上下文。
在兩種情況下,使用此方法都使用此方法,我們將獲得原始版本的字符串註釋,但是翻譯人員將在不同的上下文中看到兩個評論字符串。
>當通過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的目標之一是使世界各地的用戶輕鬆發佈內容。作為插件開發人員,您可以在國際化插件時幫助進一步簡化用戶的發布流程。>
>本教程的第一部分本質上是關於您需要了解的有關插件I18N的所有內容。>
我希望您從本教程中學到了新知識。>
>快樂編碼!>使WordPress插件準備就緒?
>使WordPress插件轉換準備就緒對於吸引全球受眾至關重要的重要性是什麼。並非所有WordPress用戶都是說英語的人。通過國際化您的插件,您可以將講不同語言的用戶訪問,從而增加用戶群。它還可以增強用戶體驗,因為用戶可以用母語與您的插件進行交互,從而使其更友好。使插件的文本字符串可翻譯成其他語言。這是通過將這些文本字符串包裹在一個特殊功能中,可以翻譯它們來實現。 WordPress為此目的使用gnu getText本地化框架,該框架提供了一組用於翻譯文本的工具。
是哪些步驟可以使WordPress插件轉換準備?插件翻譯就緒涉及多個步驟。首先,您需要通過包裝__()或_e()函數中的所有文本字符串來國際化插件。接下來,您需要創建一個.pot(Portable對像模板)文件,該文件包含插件中的所有可翻譯字符串。該文件用作創建.po(Portable Object)和.mo(Machine Object)文件的模板,該模板包含翻譯字符串。
__()和_e()函數之間有什麼區別WordPress I18N? __()和_e()函數都在WordPress I18N中使用,以使文本字符串可翻譯。它們之間的主要區別是__()返回翻譯的字符串,而_e()迴聲或直接輸出翻譯的字符串。因此,當要將翻譯的字符串存儲在變量中時,您將使用__(),當要向用戶顯示翻譯字符串時_e()。>如何將WordPress插件轉換為不同的語言?
>將您的WordPress插件轉換為不同的語言,您需要為每種語言創建.po和.mo文件。這些文件包含翻譯的字符串,並根據ISO-639語言代碼命名(例如,英語en_us,fr_fr,法語)。您可以使用poedit或loco等工具來創建和管理這些翻譯文件。
我可以使用哪些工具用於WordPress I18N?
> >如何測試我的WordPress插件以進行翻譯準備?可以通過更改WordPress設置中的語言並檢查插件的文本字符串是否正確翻譯來測試您的WordPress插件是否準備轉換。您還可以使用WordPress I18N Checker插件之類的工具,該工具會檢查您的插件中的常見i18n錯誤。
>我如何為WordPress插件翻譯貢獻?
您可以為WordPress插件翻譯貢獻通過WordPress Polyglots團隊。他們負責將WordPress定位為不同的語言。您可以加入團隊並開始將插件和主題轉換為母語。
> .pot,.po和.mo文件在WordPress I18N?
進行WordPress主題翻譯準備涉及與插件類似的過程。您需要通過將所有文本字符串包裝在__()或_e()函數中來國際化主題。然後,您需要創建一個.pot文件並將其用作為每種語言創建.po和.mo文件的模板。
以上是WordPress I18N:準備您的插件翻譯的詳細內容。更多資訊請關注PHP中文網其他相關文章!

我為WordPress開發選擇了正確的綜合開發環境(IDE)十年後,我探索了WordPress開發的眾多集成開發環境(IDE)。 純粹的品種 - 從免費到商業,基本到FEA

本教程演示了使用面向對象的編程(OOP)原理構建WordPress插件,利用Dribbble API。 讓我們在保留原始含義和結構的同時完善文本以清晰和簡潔。 object-ori

將PHP數據傳遞給JavaScript的最佳實踐:WP_LOCALIZE_SCRIPT和WP_ADD_INLINE_SCRIPT的比較是PHP文件中靜態字符串中數據存儲數據的最佳實踐。 如果在您的JavaScript代碼中需要此數據,請合併

本指南演示瞭如何使用WordPress PDF插件在WordPress帖子和頁面中嵌入和保護PDF文件。 PDFS為從目錄到演示文稿提供了一種用戶友好的,普遍訪問的格式。 此方法ENS

WordPress對初學者來說容易上手。 1.登錄後台後,用戶界面直觀,簡潔的儀表板提供所有必要功能鏈接。 2.基本操作包括創建和編輯內容,所見即所得的編輯器簡化了內容創建。 3.初學者可以通過插件和主題擴展網站功能,學習曲線存在但可以通過實踐掌握。

人們選擇使用WordPress是因為其強大和靈活性。 1)WordPress是一個開源的CMS,易用性和可擴展性強,適合各種網站需求。 2)它有豐富的主題和插件,生態系統龐大,社區支持強大。 3)WordPress的工作原理基於主題、插件和核心功能,使用PHP和MySQL處理數據,支持性能優化。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)