WordPress I18N:準備您的插件翻譯
鑰匙要點
國際化(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是翻譯文件的相對路徑。
如果翻譯mo文件在插件自己的目錄中,則使用如下:<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>
登入後複製登入後複製登入後複製> >您不僅要調用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><?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翻譯
在可翻譯字符串中包括HTML取決於上下文。<span>_e( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>
登入後複製> 一個示例是一個鏈接(與周圍的文本分開):
另一個示例是段落中的鏈接(未與周圍的文本分開):> ><span>echo 'Your city is $city.'</span>
登入後複製此函數接受4個參數,即:<span>printf( </span> <span>__( 'Your city is %s.', 'espw-plugin' ), </span> <span>$city </span><span>);</span>
登入後複製>
單數 - 字符串的單數形式
>複數 - 字符串的複數形式
- 計數 - 將確定是否應返回單數或複數形式的對像數量
- >文本域 - 插件文本域
- >讓我們來了解一些示例,以理解_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>
登入後複製登入後複製登入後複製第一個參數傳遞給_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()顯示它。
>6。逃避翻譯字符串<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
登入後複製登入後複製登入後複製具有許多用於驗證和消毒數據的功能。 列表中的
是用於逃脫翻譯文本的函數 - 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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

博客是人們在網上表達觀點、意見和見解的理想平台。許多新手渴望建立自己的網站,卻因擔心技術障礙或成本問題而猶豫不決。然而,隨著平台不斷發展以滿足初學者的能力和需求,現在開始變得比以往任何時候都更容易。 本文將逐步指導您如何建立一個WordPress博客,從主題選擇到使用插件提升安全性和性能,助您輕鬆創建自己的網站。 選擇博客主題和方向 在購買域名或註冊主機之前,最好先確定您計劃涵蓋的主題。個人網站可以圍繞旅行、烹飪、產品評論、音樂或任何激發您興趣的愛好展開。專注於您真正感興趣的領域可以鼓勵持續寫作

最近,我們向您展示瞭如何通過允許用戶將自己喜歡的帖子保存在個性化庫中來為用戶創建個性化體驗。您可以通過在某些地方(即歡迎屏幕)使用他們的名字,將個性化結果提升到另一個水平。幸運的是,WordPress使獲取登錄用戶的信息變得非常容易。在本文中,我們將向您展示如何檢索與當前登錄用戶相關的信息。我們將利用get_currentuserinfo(); 功能。這可以在主題中的任何地方使用(頁眉、頁腳、側邊欄、頁面模板等)。為了使其工作,用戶必須登錄。因此我們需要使用

您想了解如何在父分類存檔頁面上顯示子分類嗎?在自定義分類存檔頁面時,您可能需要執行此操作,以使其對訪問者更有用。在本文中,我們將向您展示如何在父分類存檔頁面上輕鬆顯示子分類。為什麼在父分類存檔頁面上顯示子分類?通過在父分類存檔頁面上顯示所有子分類,您可以使其不那麼通用,對訪問者更有用。例如,如果您運行一個關於書籍的WordPress博客,並且有一個名為“主題”的分類法,那麼您可以添加“小說”、“非小說”等子分類法,以便您的讀者可以

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

有四種方法可以調整 WordPress 文章列表:使用主題選項、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代碼(在 functions.php 文件中添加設置)或直接修改 WordPress 數據庫。

過去,我們分享過如何使用PostExpirator插件使WordPress中的帖子過期。好吧,在創建活動列表網站時,我們發現這個插件非常有用。我們可以輕鬆刪除過期的活動列表。其次,多虧了這個插件,按帖子過期日期對帖子進行排序也非常容易。在本文中,我們將向您展示如何在WordPress中按帖子過期日期對帖子進行排序。更新了代碼以反映插件中更改自定義字段名稱的更改。感謝Tajim在評論中讓我們知道。在我們的特定項目中,我們將事件作為自定義帖子類型。現在

我們的一位用戶詢問其他網站如何在頁腳中顯示查詢數量和頁面加載時間。您經常會在網站的頁腳中看到這一點,它可能會顯示類似以下內容:“1.248秒內64個查詢”。在本文中,我們將向您展示如何在WordPress中顯示查詢數量和頁面加載時間。只需將以下代碼粘貼到主題文件中您喜歡的任何位置(例如footer.php)。 queriesin

能在三天內學會WordPress。 1.掌握基礎知識,如主題、插件等。 2.理解核心功能,包括安裝和工作原理。 3.通過示例學習基本和高級用法。 4.了解調試技巧和性能優化建議。
