國(guó)際化

    由于WordPress原生的翻譯僅支持PHP而不支持JS,因此本主題使用的翻譯方法是主題開(kāi)發(fā)者自己發(fā)明的。因此,本主題中的翻譯可同時(shí)支持JS和PHP并且無(wú)需使用翻譯編輯器來(lái)進(jìn)行編譯,直接編寫(xiě)json文件即可實(shí)現(xiàn)

    國(guó)際化

    本主題使用了主題專用的?_t8()?_t8n()?_et8()?_et8n()?來(lái)實(shí)現(xiàn)文本的翻譯。
    并配合?語(yǔ)言名稱.json?翻譯文件來(lái)實(shí)現(xiàn)頁(yè)面上的文本替換。下面介紹翻譯方法和原理。

    主題翻譯

    主題默認(rèn)使用“WordPress后臺(tái)設(shè)置選擇的語(yǔ)言”,在不修改WordPress默認(rèn)語(yǔ)言的前提下,也可使用主題的翻譯功能強(qiáng)制修改主題語(yǔ)言。詳見(jiàn)PHP過(guò)濾器:pf_get_translation部分。

    開(kāi)始翻譯
    假定:當(dāng)前已經(jīng)將WordPress切換到英文語(yǔ)言(或:在 pf_get_translation 過(guò)濾波器中返回”en_US”)。以此來(lái)翻譯主題的英文版
    步驟:R\pandastudio_plugins\public_translation\lang文件夾中將主題默認(rèn)的default.json翻譯文件復(fù)制一份,命名為en_US.json,然后對(duì)文件中的JSON對(duì)象進(jìn)行翻譯即可
    注意:翻譯時(shí)務(wù)必注意JSON文件格式,不要出現(xiàn)JSON格式錯(cuò)誤的情況。

    代碼實(shí)現(xiàn)

    在二次開(kāi)發(fā)的過(guò)程中,無(wú)論是 Javascript 還是 PHP 都可能出現(xiàn)文本,那么這些文本在 Javascript 和 PHP 中是怎么實(shí)現(xiàn)翻譯的呢?

    簡(jiǎn)單翻譯

    _t8("待翻譯的文字",多個(gè)替換參數(shù));

    t8表示:translate,t后面有8個(gè)字符,因此被簡(jiǎn)化為t8
    待翻譯的文字中可使用{{number}}來(lái)替換參數(shù),參數(shù)可有多個(gè),將一一對(duì)應(yīng)替換

    使用示例

    _t8("{{2}}班有{{1}}個(gè)學(xué)生", 53, 3);

    默認(rèn)顯示時(shí),將第一個(gè)替換參數(shù) 53 替換到{{1}}的位置,第二個(gè)替換參數(shù) 3 替換到{{2}}的位置。默認(rèn)語(yǔ)言顯示結(jié)果為:“3班有53個(gè)學(xué)生”。

    若此時(shí)有翻譯文件內(nèi)容如下:

    {    "{{2}}班有{{1}}個(gè)學(xué)生": "There are {{1}} students in class {{2}}"}

    則參數(shù) 53 將替換到 {{1}} 的位置,參數(shù) 3 將替換到 {{2}} 的位置。翻譯結(jié)果為:“There are 53 students in class 3”

    單復(fù)數(shù)翻譯

    _t8n("待翻譯的單數(shù)文字","待翻譯的復(fù)數(shù)文字",多個(gè)替換參數(shù));

    在上面的例子中我們看到了:當(dāng)出現(xiàn)數(shù)量為單數(shù)時(shí),students的翻譯明顯是錯(cuò)誤的。因此引入單復(fù)數(shù)識(shí)別的翻譯。在原有的t8名稱后加上了n。單復(fù)數(shù)識(shí)別僅識(shí)別第一個(gè)替換參數(shù),若第一個(gè)替換參數(shù)為1,則顯示單數(shù)翻譯,否則使用復(fù)數(shù)翻譯。類似于:

    if (number <= 1) {    _t8("單數(shù)內(nèi)容");} else {    _t8("復(fù)數(shù)內(nèi)容");}

    使用示例

    _t8n(    "{{2}}班有{{1}}個(gè)學(xué)生{{備注:?jiǎn)螖?shù)}}",    "{{2}}班有{{1}}個(gè)學(xué)生{{備注:復(fù)數(shù)}}",    1,    3);

    我們可以看到,中間加入了雙花括號(hào)的備注來(lái)進(jìn)行區(qū)分,在顯示時(shí),備注將自動(dòng)去除。若此時(shí)有語(yǔ)言文件JSON內(nèi)容如下:

    {    "{{2}}班有{{1}}個(gè)學(xué)生{{備注:?jiǎn)螖?shù)}}": "There is only {{1}} student in class {{2}}",    "{{2}}班有{{1}}個(gè)學(xué)生{{備注:復(fù)數(shù)}}": "There are {{1}} students in class {{2}}"}

    由于學(xué)生數(shù)量1是單數(shù),因此在翻譯時(shí)候?qū)⑹褂脝螖?shù)翻譯,翻譯結(jié)果為:“There is only 1 student in class 3”

    若調(diào)用時(shí)參數(shù)仍然為53:

    _t8n(    "{{2}}班有{{1}}個(gè)學(xué)生{{備注:?jiǎn)螖?shù)}}",    "{{2}}班有{{1}}個(gè)學(xué)生{{備注:復(fù)數(shù)}}",    53,    3);

    則翻譯結(jié)果為:“There are 53 students in class 3”

    其他

    上述_t8()_t8n()方法在自定義JS與自定義PHP中均有效。且翻譯文件不存在時(shí),將自動(dòng)回退為代碼中的語(yǔ)言。因此,在編寫(xiě)完二次開(kāi)發(fā)的 Javascript 或 PHP 代碼后,應(yīng)手動(dòng)將待翻譯的字符串添加到 JSON 語(yǔ)言文件中,才可以實(shí)現(xiàn)翻譯。

    PHP獨(dú)有

    在PHP中存在顯示文字的情況(echo),為方便使用,在上述兩個(gè)方法前加上e來(lái)進(jìn)行標(biāo)識(shí)。如:_et8()_et8n(),使用方法一致。

    關(guān)于備注
    替換參數(shù)僅識(shí)別 {{number}} 的情況。凡是待翻譯內(nèi)容 、翻譯內(nèi)容中的雙花括號(hào),都被識(shí)別為備注,將默認(rèn)去除。備注可為翻譯者提供翻譯幫助,如語(yǔ)言文件JSON翻譯為:

    {    "編輯{{名詞}}": "Editor",    "編輯{{動(dòng)詞}}": "Edit",}

    如何翻譯/文本替換

    翻譯功能不僅可以用于真正的某種語(yǔ)言,還可以用于文本替換。原理:將主題語(yǔ)言定義為當(dāng)前地區(qū)使用的語(yǔ)言,再次進(jìn)行翻譯

    例:對(duì)中文語(yǔ)言本身實(shí)現(xiàn)文本替換:

    1. 復(fù)制lang文件夾的default.json,并重命名為當(dāng)前WP后臺(tái)選中的當(dāng)?shù)卣Z(yǔ)言:zh_CN.json
    2. 對(duì)內(nèi)容進(jìn)行翻譯,例如將 “閱讀全文” 翻譯為 “去看看”

    這樣就實(shí)現(xiàn)了主題的翻譯/文本替換。

    注:翻譯時(shí)請(qǐng)嚴(yán)格按照 JSON 格式編輯,任何格式錯(cuò)誤都將導(dǎo)致翻譯失敗或報(bào)錯(cuò)!

    附:語(yǔ)言文件名稱一覽表

    文件名 (.json)語(yǔ)言名稱
    en_USEnglish (United States)
    zh_CN中文 (簡(jiǎn)體)
    zh_TW中文 (臺(tái)灣)
    zh_HK中文 (香港)
    afAfrikaans
    ar???????
    ary??????? ????????
    as???????
    azAz?rbaycan dili
    azb????? ?????????
    belБеларуская мова
    bg_BGБългарски
    bn_BD?????
    bo???????
    bs_BABosanski
    caCatalà
    cebCebuano
    cs_CZ?e?tina
    cyCymraeg
    da_DKDansk
    de_CH_informalDeutsch (Schweiz, Du)
    de_DEDeutsch
    de_CHDeutsch (Schweiz)
    de_DE_formalDeutsch (Sie)
    de_ATDeutsch (?sterreich)
    dzo??????
    elΕλληνικ?
    en_GBEnglish (UK)
    en_ZAEnglish (South Africa)
    en_AUEnglish (Australia)
    en_CAEnglish (Canada)
    en_NZEnglish (New Zealand)
    eoEsperanto
    es_VEEspa?ol de Venezuela
    es_ESEspa?ol
    es_GTEspa?ol de Guatemala
    es_MXEspa?ol de México
    es_CREspa?ol de Costa Rica
    es_COEspa?ol de Colombia
    es_PEEspa?ol de Perú
    es_AREspa?ol de Argentina
    es_CLEspa?ol de Chile
    etEesti
    euEuskara
    fa_IR?????
    fiSuomi
    fr_FRFran?ais
    fr_CAFran?ais du Canada
    fr_BEFran?ais de Belgique
    furFriulian
    gdGàidhlig
    gl_ESGalego
    gu???????
    haz????? ??
    he_IL????????
    hi_IN??????
    hrHrvatski
    hu_HUMagyar
    hy???????
    id_IDBahasa Indonesia
    is_ISíslenska
    it_ITItaliano
    ja日本語(yǔ)
    jv_IDBasa Jawa
    ka_GE???????
    kabTaqbaylit
    kk?аза? т?л?
    km?????????
    kn?????
    ko_KR???
    ckb??????
    lo???????
    lt_LTLietuvi? kalba
    lvLatvie?u valoda
    mk_MKМакедонски ?азик
    ml_IN??????
    mnМонгол
    mr?????
    ms_MYBahasa Melayu
    my_MM?????
    nb_NONorsk bokm?l
    ne_NP??????
    nl_BENederlands (Belgi?)
    nl_NLNederlands
    nl_NL_formalNederlands (Formeel)
    nn_NONorsk nynorsk
    ociOccitan
    pa_IN??????
    pl_PLPolski
    ps????
    pt_BRPortuguês do Brasil
    pt_AOPortuguês de Angola
    pt_PT_ao90Português (AO90)
    pt_PTPortuguês
    rhgRuáinga
    ro_RORoman?
    ru_RUРусский
    sahСахалыы
    si_LK?????
    sk_SKSloven?ina
    skr???????
    sl_SISloven??ina
    sqShqip
    sr_RSСрпски ?език
    sv_SESvenska
    szl?lōnsk? g?dka
    ta_IN?????
    te??????
    th???
    tlTagalog
    tr_TRTürk?e
    tt_RUТатар теле
    tahReo Tahiti
    ug_CN????????
    ukУкра?нська
    ur????
    uz_UZO‘zbekcha
    viTi?ng Vi?t
    0 條回復(fù) A文章作者 M管理員
      暫無(wú)討論,說(shuō)說(shuō)你的看法吧
    ?
    購(gòu)物車
    優(yōu)惠劵
    搜索
    主站蜘蛛池模板: 中文字幕精品亚洲无线码一区应用 | 日本免费一区二区久久人人澡| 成人午夜视频精品一区| 不卡一区二区在线| 亚洲AⅤ无码一区二区三区在线| 蜜臀Av午夜一区二区三区| 国产一区二区三区小向美奈子| 亚洲Av无码一区二区二三区| 精品一区二区三区四区| 亚洲人成网站18禁止一区| 精品一区二区高清在线观看| 国产aⅴ精品一区二区三区久久 | 色久综合网精品一区二区| 中文字幕在线无码一区二区三区 | 国产亚洲福利精品一区| 在线精品国产一区二区三区| 中文字幕日韩人妻不卡一区| 国产精品亚洲综合一区| 国产成人精品一区二区三区无码| www一区二区www免费| 亚洲线精品一区二区三区影音先锋 | 国产午夜毛片一区二区三区| 不卡一区二区在线| 色一情一乱一伦一区二区三欧美 | 亚洲爽爽一区二区三区| 国产一区二区三区久久| 亚洲日本精品一区二区| 无码一区二区三区在线观看| 久久精品国产亚洲一区二区三区| 日韩精品一区二区三区毛片| 精品一区二区三区影院在线午夜 | 免费看AV毛片一区二区三区| 日韩精品无码一区二区三区不卡| 久久久一区二区三区| 日本无卡码一区二区三区| 一区二区三区国模大胆| 无码人妻品一区二区三区精99| 在线观看视频一区二区| 日本一区二区三区高清| 午夜一区二区在线观看| 国产情侣一区二区|