鑰匙要點(diǎn)
國(guó)際化(I18N)是開發(fā)插件以容易翻譯成其他語(yǔ)言的過(guò)程,而本地化(L10N)是將國(guó)際化插件轉(zhuǎn)換為新語(yǔ)言的隨後過(guò)程。
>“準(zhǔn)備WordPress插件”翻譯對(duì)於吸引全球受眾,增強(qiáng)用戶體驗(yàn)並通過(guò)使使用不同語(yǔ)言的用戶可以訪問用戶群至關(guān)重要。
>- 準(zhǔn)備翻譯的插件的過(guò)程涉及設(shè)置翻譯標(biāo)題(文本域和域路徑),加載文本域以及國(guó)際化各種元素,例如字符串,佔(zhàn)位符,佔(zhàn)位符,html,html,plurals,proceponts ,context and context and casting translation strings。 >
- > WordPress I18N使用GNU getText本地化框架,該框架提供了翻譯文本的工具。這涉及將所有文本字符串包裝在__()或_e()函數(shù)中,並創(chuàng)建.pot(Portable Object Template)文件,該文件包含插件中的所有可翻譯字符串。
- 國(guó)際化和本地化之間的差異 多年來(lái),開發(fā)人員傾向於誤解這些術(shù)語(yǔ)的含義 - 國(guó)際化和本地化。
- 國(guó)際化是開發(fā)插件的過(guò)程,因此可以輕鬆地翻譯成其他語(yǔ)言。
- >本地化描述了將國(guó)際化插件轉(zhuǎn)換為新語(yǔ)言的後續(xù)過(guò)程。
為什麼國(guó)際化?
答案很簡(jiǎn)單; WordPress以許多不同的語(yǔ)言在世界範(fàn)圍內(nèi)使用。當(dāng)插件被國(guó)際化時(shí),它們會(huì)吸引來(lái)自世界其他地區(qū)的較大受眾,他們顯然會(huì)通過(guò)使用自己的語(yǔ)言使用插件來(lái)受益。
- >
作為開發(fā)人員,您可能沒有時(shí)間提供插件的本地版本,因?yàn)槟粫?huì)說(shuō)其他語(yǔ)言。但是,當(dāng)您國(guó)際化插件時(shí),您會(huì)為他人打開大門,以創(chuàng)建本地化而不一定要修改源代碼。
-
插件國(guó)際化
>現(xiàn)在我們已經(jīng)熟悉了插件國(guó)際化和本地化的概念,讓我們開始研究準(zhǔn)備翻譯的插件的過(guò)程。
>>設(shè)置翻譯頭
進(jìn)行插件可翻譯的第一步是在插件標(biāo)題中包含翻譯標(biāo)題。
翻譯標(biāo)題是文本域和域路徑。
>文本域用於表示屬於插件的所有文本。 這是一個(gè)唯一的標(biāo)識(shí)符,可確保WordPress可以區(qū)分所有加載的翻譯。這增加了可移植性,並且使用已經(jīng)存在的WordPress工具可以更好地發(fā)揮作用。> >
>文本域必須匹配插件的slug。例如,如果您的插件是一個(gè)稱為sample-plugin.php的單個(gè)文件,或者它包含在稱為sample-plugin的文件夾中,則應(yīng)為sample-plugin。>文本域上的註釋 文本域名必須使用破折號(hào)而不是下劃線。
>還記得我說(shuō)過(guò)文本域必須與插件slug匹配嗎?畢竟這可能不是真的。我對(duì)我的一個(gè)插件進(jìn)行了快速實(shí)驗(yàn),而不是插件的插件,我使用了一個(gè)唯一的文本,並且沒有任何問題。道德:確保文本域是唯一的,以免與其他插件相衝突。
>域路徑是文件夾WordPress將搜索.mo Translation Files。
默認(rèn)情況下,WordPress搜索要使用的翻譯文件的插件目錄。將翻譯文件放在插件的根文件夾中可能會(huì)使您的插件結(jié)構(gòu)混亂。> 例如,如果您想將翻譯文件保存在文件夾中,例如; /語(yǔ)言,您需要使用域路徑標(biāo)頭通知WordPress。
下面是WordPress插件的典型標(biāo)題。>
以下是函數(shù)概要。第一個(gè)參數(shù)$域應(yīng)該是文本域; $ abs_rel_path已被棄用,應(yīng)設(shè)置為false;最後,$ plugin_rel_path是翻譯文件的相對(duì)路徑。
<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文件在插件自己的目錄中,則使用如下:> >您不僅要調(diào)用load_plugin_textdomain函數(shù),還應(yīng)在插件中以插件_loaded這樣的操作在插件中調(diào)用:
><span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
>深入研究插件i18n
>現(xiàn)在設(shè)置了文本域和域路徑標(biāo)頭,是時(shí)候?qū)W習(xí)如何國(guó)際化插件了。
<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
該教程的這一段將分為以下:- >字符串翻譯
- 使用佔(zhàn)位符
- html翻譯
- 與復(fù)數(shù)打交道 通過(guò)上下文
- 逃脫翻譯字符串
<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>
如果您在字符串中使用變量,例如下面的示例,則應(yīng)使用佔(zhàn)位符。
><span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
正確的方法是使用printf()函數(shù)如下:
><span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );</span>
瀏覽WordPress插件存儲(chǔ)庫(kù)中某些插件的代碼,我確實(shí)看到了這樣的內(nèi)容:
><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>
儘管現(xiàn)在可以翻譯字符串,但php變量$ city也可以翻譯。
這是一個(gè)不好的做法,因?yàn)榉g器可能會(huì)錯(cuò)誤地將變量或?qū)阂獯a更改為插件代碼庫(kù),這最終將導(dǎo)致插件故障。sprintf函數(shù)與printf相似,因?yàn)樗麄兪褂脕?zhàn)位符格式字符串,而printf輸出格式的字符串,sprintf返回字符串。
>示例:以下代碼將格式的字符串分配給變量$ text。3。 html翻譯
<span>_e( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>
在可翻譯字符串中包括HTML取決於上下文。> 一個(gè)示例是一個(gè)鏈接(與周圍的文本分開):
另一個(gè)示例是段落中的鏈接(未與周圍的文本分開):> <span>echo 'Your city is $city.'</span>
><span>printf( </span> <span>__( 'Your city is %s.', 'espw-plugin' ), </span> <span>$city </span><span>);</span>
此函數(shù)接受4個(gè)參數(shù),即:>
單數(shù) - 字符串的單數(shù)形式
>複數(shù) - 字符串的複數(shù)形式
- 計(jì)數(shù) - 將確定是否應(yīng)返回單數(shù)或複數(shù)形式的對(duì)像數(shù)量
- >文本域 - 插件文本域
- >讓我們來(lái)了解一些示例,以理解_n()函數(shù)的工作方式。
- 在英語(yǔ)中,您有“一個(gè)評(píng)論”和“兩個(gè)評(píng)論”。在其他語(yǔ)言中,您可以具有多種複數(shù)形式。 下面的代碼演示瞭如何使用_n()函數(shù)來(lái)處理此類情況。
- >
<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>
第一個(gè)參數(shù)傳遞給_n函數(shù)是當(dāng)評(píng)論數(shù)是單數(shù)時(shí)要顯示的文本。
第二個(gè)是當(dāng)評(píng)論數(shù)大於一個(gè)時(shí)顯示的文本。> 佔(zhàn)位符%s將包含number_format_i18n(get_comments_number())的值。
第三個(gè)參數(shù)get_comments_number()被認(rèn)為是返回註釋計(jì)數(shù)的函數(shù)。如果它返回1,則第一個(gè)參數(shù)一個(gè)註釋將由printf輸出,否則第二個(gè)參數(shù)%s如果大於1。
請(qǐng)注意:佔(zhàn)位符%s被Number_format_i18n返回的整數(shù)(get_comments_number()),這是傳遞給printf函數(shù)的第二個(gè)參數(shù)。>最後,第四個(gè)參數(shù)是翻譯
文本域。
>。>函數(shù)number_format_i18n()根據(jù)語(yǔ)言環(huán)境將註釋計(jì)數(shù)轉(zhuǎn)換為格式。有關(guān)更多信息,請(qǐng)參見文檔。
>類似於number_format_i18n()是基於時(shí)間戳的局部格式的日期。 仍在_n()函數(shù)上,下面是該函數(shù)如何工作的另一個(gè)演示。
>如果變量$ count返回1,我們將顯示一條垃圾郵件消息的文本;但是,如果它大於1,我們將刪除%d垃圾郵件消息,佔(zhàn)位符%d被$ count的整數(shù)替換。>
5。通過(guò)上下文歧義
>有時(shí)在幾種情況下使用一個(gè)術(shù)語(yǔ),儘管它是英語(yǔ)中的一個(gè)和相同的單詞,它必須以其他語(yǔ)言的方式翻譯不同。>
例如,單詞帖子可以用作動(dòng)詞,例如“單擊此處以發(fā)布您的評(píng)論”和名詞“編輯此帖子”。<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
>在這種情況下,應(yīng)使用_x或_ex函數(shù)。
>它類似於__()和_e(),但是它有一個(gè)額外的參數(shù) - $上下文。
在兩種情況下,使用此方法都使用此方法,我們將獲得原始版本的字符串註釋,但是翻譯人員將在不同的上下文中看到兩個(gè)評(píng)論字符串。
>當(dāng)通過(guò)poedit等翻譯工具(例如poedit)解析函數(shù)_x()的字符串時(shí),上下文參數(shù)為翻譯器提供了在上下文上使用字符串/文本的提示。 在德語(yǔ)中,作為一個(gè)名詞的帖子是beitrag,而動(dòng)詞為詞。> 下面的
是Poedit的屏幕截圖,將字符串柱翻譯為德語(yǔ),並帶有上下文平方。_x()檢索翻譯的字符串,_ex()顯示它。
><span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
6。逃避翻譯字符串具有許多用於驗(yàn)證和消毒數(shù)據(jù)的功能。 列表中的
是用於逃脫翻譯文本的函數(shù) - esc_html(),ESC_HTML_E(),ESC_HTML_X(),ESC_ATTR(),ESC_ATTR_E()和ESC_ATTR_E()和ESC_ATTR_X()。您可以在WordPress codex中獲取有關(guān)這些功能的更多信息。
>我不需要解釋其中的每一個(gè),但是他們所做的基本上是逃脫可翻譯的文本。
總結(jié)
WordPress的目標(biāo)之一是使世界各地的用戶輕鬆發(fā)佈內(nèi)容。作為插件開發(fā)人員,您可以在國(guó)際化插件時(shí)幫助進(jìn)一步簡(jiǎn)化用戶的發(fā)布流程。>
>本教程的第一部分本質(zhì)上是關(guān)於您需要了解的有關(guān)插件I18N的所有內(nèi)容。>
我希望您從本教程中學(xué)到了新知識(shí)。>
>快樂編碼!>使WordPress插件準(zhǔn)備就緒?
>使WordPress插件轉(zhuǎn)換準(zhǔn)備就緒對(duì)於吸引全球受眾至關(guān)重要的重要性是什麼。並非所有WordPress用戶都是說(shuō)英語(yǔ)的人。通過(guò)國(guó)際化您的插件,您可以將講不同語(yǔ)言的用戶訪問,從而增加用戶群。它還可以增強(qiáng)用戶體驗(yàn),因?yàn)橛脩艨梢杂媚刚Z(yǔ)與您的插件進(jìn)行交互,從而使其更友好。使插件的文本字符串可翻譯成其他語(yǔ)言。這是通過(guò)將這些文本字符串包裹在一個(gè)特殊功能中,可以翻譯它們來(lái)實(shí)現(xiàn)。 WordPress為此目的使用gnu getText本地化框架,該框架提供了一組用於翻譯文本的工具。
是哪些步驟可以使WordPress插件轉(zhuǎn)換準(zhǔn)備?插件翻譯就緒涉及多個(gè)步驟。首先,您需要通過(guò)包裝__()或_e()函數(shù)中的所有文本字符串來(lái)國(guó)際化插件。接下來(lái),您需要?jiǎng)?chuàng)建一個(gè).pot(Portable對(duì)像模板)文件,該文件包含插件中的所有可翻譯字符串。該文件用作創(chuàng)建.po(Portable Object)和.mo(Machine Object)文件的模板,該模板包含翻譯字符串。
__()和_e()函數(shù)之間有什麼區(qū)別WordPress I18N? __()和_e()函數(shù)都在WordPress I18N中使用,以使文本字符串可翻譯。它們之間的主要區(qū)別是__()返回翻譯的字符串,而_e()迴聲或直接輸出翻譯的字符串。因此,當(dāng)要將翻譯的字符串存儲(chǔ)在變量中時(shí),您將使用__(),當(dāng)要向用戶顯示翻譯字符串時(shí)_e()。>如何將WordPress插件轉(zhuǎn)換為不同的語(yǔ)言?
>將您的WordPress插件轉(zhuǎn)換為不同的語(yǔ)言,您需要為每種語(yǔ)言創(chuàng)建.po和.mo文件。這些文件包含翻譯的字符串,並根據(jù)ISO-639語(yǔ)言代碼命名(例如,英語(yǔ)en_us,fr_fr,法語(yǔ))。您可以使用poedit或loco等工具來(lái)創(chuàng)建和管理這些翻譯文件。
我可以使用哪些工具用於WordPress I18N?
> >如何測(cè)試我的WordPress插件以進(jìn)行翻譯準(zhǔn)備?可以通過(guò)更改WordPress設(shè)置中的語(yǔ)言並檢查插件的文本字符串是否正確翻譯來(lái)測(cè)試您的WordPress插件是否準(zhǔn)備轉(zhuǎn)換。您還可以使用WordPress I18N Checker插件之類的工具,該工具會(huì)檢查您的插件中的常見i18n錯(cuò)誤。
>我如何為WordPress插件翻譯貢獻(xiàn)?
您可以為WordPress插件翻譯貢獻(xiàn)通過(guò)WordPress Polyglots團(tuán)隊(duì)。他們負(fù)責(zé)將WordPress定位為不同的語(yǔ)言。您可以加入團(tuán)隊(duì)並開始將插件和主題轉(zhuǎn)換為母語(yǔ)。
> .pot,.po和.mo文件在WordPress I18N?
進(jìn)行WordPress主題翻譯準(zhǔn)備涉及與插件類似的過(guò)程。您需要通過(guò)將所有文本字符串包裝在__()或_e()函數(shù)中來(lái)國(guó)際化主題。然後,您需要?jiǎng)?chuàng)建一個(gè).pot文件並將其用作為每種語(yǔ)言創(chuàng)建.po和.mo文件的模板。
以上是WordPress I18N:準(zhǔn)備您的插件翻譯的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

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

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

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

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁(yè)開發(fā)工具

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

WordPress導(dǎo)致服務(wù)器CPU使用率飆升的主要原因包括插件問題、數(shù)據(jù)庫(kù)查詢效率低、主題代碼質(zhì)量差或流量激增。 1.首先通過(guò)top、htop或控制面板工具確認(rèn)是否為WordPress引起的高負(fù)載;2.進(jìn)入故障排查模式逐步啟用插件排查性能瓶頸,使用QueryMonitor分析插件執(zhí)行情況並刪除或替換低效插件;3.安裝緩存插件、清理冗餘數(shù)據(jù)、分析慢查詢?nèi)照I以優(yōu)化數(shù)據(jù)庫(kù);4.檢查主題是否存在過(guò)度加載內(nèi)容、複雜查詢或缺乏緩存機(jī)制等問題,建議用標(biāo)準(zhǔn)主題測(cè)試對(duì)比並優(yōu)化代碼邏輯。按照上述步驟逐一排查可定位並解

MinifyingJavaScript文件可通過(guò)刪除空白、註釋和無(wú)用代碼來(lái)提升WordPress網(wǎng)站加載速度。 1.使用支持合併壓縮的緩存插件如W3TotalCache,在“Minify”選項(xiàng)中啟用並選擇壓縮模式;2.使用專用壓縮插件如FastVelocityMinify,提供更精細(xì)控制;3.手動(dòng)壓縮JS文件並通過(guò)FTP上傳,適用於熟悉開發(fā)工具的用戶。注意部分主題或插件腳本可能與壓縮功能衝突,啟用後需徹底測(cè)試網(wǎng)站功能。

優(yōu)化WordPress站點(diǎn)不依賴插件的方法包括:1.使用輕量級(jí)主題,如Astra或GeneratePress,避免功能堆砌的主題;2.手動(dòng)壓縮和合併CSS、JS文件,減少HTTP請(qǐng)求;3.上傳前優(yōu)化圖片,使用WebP格式並控製文件大??;4.配置.htaccess啟用瀏覽器緩存,並接入CDN提升靜態(tài)資源加載速度;5.限製文章修訂版本並定期清理數(shù)據(jù)庫(kù)冗餘數(shù)據(jù)。

TransientsAPI是WordPress中用於臨時(shí)存儲(chǔ)可自動(dòng)過(guò)期數(shù)據(jù)的內(nèi)置工具,其核心函數(shù)為set_transient、get_transient和delete_transient。相比OptionsAPI,transients支持設(shè)置生存時(shí)間(TTL),適合緩存API請(qǐng)求結(jié)果、複雜計(jì)算數(shù)據(jù)等場(chǎng)景。使用時(shí)需注意key命名唯一性與命名空間、緩存“懶刪除”機(jī)制及對(duì)象緩存環(huán)境下可能不持久的問題。典型應(yīng)用場(chǎng)景包括減少外部請(qǐng)求頻率、控制代碼執(zhí)行節(jié)奏和提升頁(yè)面加載性能。

防止評(píng)論垃圾信息最有效的方式是通過(guò)程序化手段自動(dòng)識(shí)別並攔截。 1.使用驗(yàn)證碼機(jī)制(如GooglereCAPTCHA或hCaptcha)可有效區(qū)分人類與機(jī)器人,尤其適合公眾網(wǎng)站;2.設(shè)置隱藏字段(Honeypot技術(shù)),利用機(jī)器人自動(dòng)填寫特性識(shí)別垃圾評(píng)論,不影響用戶體驗(yàn);3.檢查評(píng)論內(nèi)容關(guān)鍵詞黑名單,通過(guò)敏感詞匹配過(guò)濾垃圾信息,需注意避免誤判;4.判斷評(píng)論頻率與來(lái)源IP,限制單位時(shí)間內(nèi)的提交次數(shù)並建立黑名單;5.使用第三方反垃圾服務(wù)(如Akismet、Cloudflare)提升識(shí)別準(zhǔn)確性。可根據(jù)網(wǎng)站

在開發(fā)Gutenberg塊時(shí),正確enqueue資產(chǎn)的方法包括:1.使用register_block_type指定editor_script、editor_style和style的路徑;2.在functions.php或插件中通過(guò)wp_register_script和wp_register_style註冊(cè)資源,並設(shè)置正確的依賴和版本;3.配置構(gòu)建工具輸出合適的模塊格式,並確保路徑一致;4.通過(guò)add_theme_support或enqueue_block_assets控制前端樣式的加載邏輯,確保

要添加自定義用戶字段需根據(jù)平臺(tái)選擇擴(kuò)展方式並註意數(shù)據(jù)驗(yàn)證與權(quán)限控制。常見做法包括:1.利用數(shù)據(jù)庫(kù)額外表或鍵值對(duì)結(jié)構(gòu)存儲(chǔ)信息;2.在前端加入輸入框並與後端集成;3.對(duì)敏感數(shù)據(jù)進(jìn)行格式校驗(yàn)和訪問權(quán)限限制;4.更新接口及模板以支持新字段展示與編輯,同時(shí)兼顧移動(dòng)端適配和用戶體驗(yàn)。

robots.txt對(duì)WordPress網(wǎng)站的SEO至關(guān)重要,能引導(dǎo)搜索引擎抓取行為,避免重複內(nèi)容並提升效率。 1.屏蔽如/wp-admin/、/wp-includes/等系統(tǒng)路徑,但避免誤封/uploads/目錄;2.添加Sitemap路徑如Sitemap:https://yourdomain.com/sitemap.xml以幫助搜索引擎快速發(fā)現(xiàn)站點(diǎn)地圖;3.限制/page/和帶參數(shù)的URL以減少爬蟲浪費(fèi),但需注意勿封重要?dú)w檔頁(yè);4.避免常見錯(cuò)誤如誤封全站、緩存插件影響更新及忽略移動(dòng)端與子域名配
