国际化

由于WordPress原生的翻译仅支持PHP而不支持JS,因此本主题使用的翻译方法是主题开发者自己发明的。因此,本主题中的翻译可同时支持JS和PHP并且无需使用翻译编辑器来进行编译,直接编写json文件即可实现

国际化

本主题使用了主题专用的 _t8() _t8n() _et8() _et8n() 来实现文本的翻译。
并配合 语言名称.json 翻译文件来实现页面上的文本替换。下面介绍翻译方法和原理。

主题翻译

主题默认使用“WordPress后台设置选择的语言”,在不修改WordPress默认语言的前提下,也可使用主题的翻译功能强制修改主题语言。详见PHP过滤器:pf_get_translation部分。

开始翻译
假定:当前已经将WordPress切换到英文语言(或:在 pf_get_translation 过滤波器中返回”en_US”)。以此来翻译主题的英文版
步骤:R\pandastudio_plugins\public_translation\lang文件夹中将主题默认的default.json翻译文件复制一份,命名为en_US.json,然后对文件中的JSON对象进行翻译即可
注意:翻译时务必注意JSON文件格式,不要出现JSON格式错误的情况。

代码实现

在二次开发的过程中,无论是 Javascript 还是 PHP 都可能出现文本,那么这些文本在 Javascript 和 PHP 中是怎么实现翻译的呢?

简单翻译

_t8("待翻译的文字",多个替换参数);

t8表示:translate,t后面有8个字符,因此被简化为t8
待翻译的文字中可使用{{number}}来替换参数,参数可有多个,将一一对应替换

使用示例

_t8("{{2}}班有{{1}}个学生", 53, 3);

默认显示时,将第一个替换参数 53 替换到{{1}}的位置,第二个替换参数 3 替换到{{2}}的位置。默认语言显示结果为:“3班有53个学生”。

若此时有翻译文件内容如下:

{    "{{2}}班有{{1}}个学生": "There are {{1}} students in class {{2}}"}

则参数 53 将替换到 {{1}} 的位置,参数 3 将替换到 {{2}} 的位置。翻译结果为:“There are 53 students in class 3”

单复数翻译

_t8n("待翻译的单数文字","待翻译的复数文字",多个替换参数);

在上面的例子中我们看到了:当出现数量为单数时,students的翻译明显是错误的。因此引入单复数识别的翻译。在原有的t8名称后加上了n。单复数识别仅识别第一个替换参数,若第一个替换参数为1,则显示单数翻译,否则使用复数翻译。类似于:

if (number <= 1) {    _t8("单数内容");} else {    _t8("复数内容");}

使用示例

_t8n(    "{{2}}班有{{1}}个学生{{备注:单数}}",    "{{2}}班有{{1}}个学生{{备注:复数}}",    1,    3);

我们可以看到,中间加入了双花括号的备注来进行区分,在显示时,备注将自动去除。若此时有语言文件JSON内容如下:

{    "{{2}}班有{{1}}个学生{{备注:单数}}": "There is only {{1}} student in class {{2}}",    "{{2}}班有{{1}}个学生{{备注:复数}}": "There are {{1}} students in class {{2}}"}

由于学生数量1是单数,因此在翻译时候将使用单数翻译,翻译结果为:“There is only 1 student in class 3”

若调用时参数仍然为53:

_t8n(    "{{2}}班有{{1}}个学生{{备注:单数}}",    "{{2}}班有{{1}}个学生{{备注:复数}}",    53,    3);

则翻译结果为:“There are 53 students in class 3”

其他

上述_t8()_t8n()方法在自定义JS与自定义PHP中均有效。且翻译文件不存在时,将自动回退为代码中的语言。因此,在编写完二次开发的 Javascript 或 PHP 代码后,应手动将待翻译的字符串添加到 JSON 语言文件中,才可以实现翻译。

PHP独有

在PHP中存在显示文字的情况(echo),为方便使用,在上述两个方法前加上e来进行标识。如:_et8()_et8n(),使用方法一致。

关于备注
替换参数仅识别 {{number}} 的情况。凡是待翻译内容 、翻译内容中的双花括号,都被识别为备注,将默认去除。备注可为翻译者提供翻译帮助,如语言文件JSON翻译为:

{    "编辑{{名词}}": "Editor",    "编辑{{动词}}": "Edit",}

如何翻译/文本替换

翻译功能不仅可以用于真正的某种语言,还可以用于文本替换。原理:将主题语言定义为当前地区使用的语言,再次进行翻译

例:对中文语言本身实现文本替换:

  1. 复制lang文件夹的default.json,并重命名为当前WP后台选中的当地语言:zh_CN.json
  2. 对内容进行翻译,例如将 “阅读全文” 翻译为 “去看看”

这样就实现了主题的翻译/文本替换。

注:翻译时请严格按照 JSON 格式编辑,任何格式错误都将导致翻译失败或报错!

附:语言文件名称一览表

文件名 (.json)语言名称
en_USEnglish (United States)
zh_CN中文 (简体)
zh_TW中文 (台湾)
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日本語
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_RORomână
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 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索