不是亂碼,更不是火星文——什么是偽本地化(原理及意義)

(這期專欄是下面這期視頻前半部分的文字版本(因?yàn)橛腥朔从晨匆曨l有點(diǎn)累,所以寫成文字版))

(我也不是本地化的專業(yè)人員,我只是借助一些資料向大家簡(jiǎn)要介紹一下偽本地化,果出現(xiàn)錯(cuò)誤請(qǐng)大家多多包涵,并歡迎來指正)
引入
接觸過 Windows 測(cè)試版(尤其是Win8)的構(gòu)建的人,應(yīng)該對(duì)“偽本地化”這一名詞并不陌生。
事實(shí)上,偽本地化一直是 Windows 進(jìn)行本地化測(cè)試的重要方式之一。


定義
偽本地化(英文:pseudo-localization)是在正式的本地化之前,通過模擬本地化過程幫助發(fā)現(xiàn)本地化的潛在問題。它是軟件測(cè)試中用來測(cè)試軟件是否符合本地化與國(guó)際化的方法之一。
偽本地化的幾種方式及對(duì)應(yīng)解決的問題
1. 添加來自其他語言的重音符號(hào),或?qū)⑦@個(gè)字母替換為其它語言中與這個(gè)字母形態(tài)相似的字母
這一方法可以發(fā)現(xiàn)并修復(fù)某些語言的字符無法正常顯示的問題。

如 a 可以替換成 ā á ǎ à ? ? ? α ? ,t 可以替換成 ? ? ? ? т ,等等。
以 “Turn off the power(關(guān)閉電源)” 為例,
它可以被“翻譯”成 ?ù?η ??? ??? ρ??ēя

2. 擴(kuò)展字符串以模擬翻譯可能產(chǎn)生的較長(zhǎng)字符串
這主要是為了解決“在將源語言翻譯成其他語言后,由于字符串過長(zhǎng)而導(dǎo)致語段顯示不完整”的問題。
以源語言是英語為例,常見情況下:
法語、西班牙語、葡萄牙語、意大利語、阿拉伯語、希伯來語和波蘭語文本可以擴(kuò)展 15% 到 30%;
德語和荷蘭語文本可以擴(kuò)展 35% 或更多;
中文、日文或韓文文本可以收縮 30% 到 55%。

有不同的方法可以擴(kuò)展字符串。
Windows 中主要采取了在字符串后加 ! 的方法(添加標(biāo)識(shí)符也能達(dá)到這一目的,但標(biāo)識(shí)符的主要作用還是標(biāo)識(shí)字符串,這個(gè)后面再講)
具體做法為:一個(gè)詞組3個(gè) ! ;一個(gè)單詞1-3個(gè) ! ,或者直接加空格。
如 [Гз?гē?н ??? рá?? ī? а ?êω мīлúт??. !!! !!! !](Refresh in a page in a few minutes,幾分鐘后再刷新頁(yè)面)

而在 Android 中,則采取了在字符串后加 one two three four 等 1-20 的英文基數(shù)詞(標(biāo)到了 20 再?gòu)?1 開始,不斷循環(huán))的方法

也可以采用“將所有元音加倍”的方法,等等

3.添加分隔符
如 [Turn off the power,][Sit back and relax.]
它可以發(fā)現(xiàn)并解決字符串分割的問題
注:字符串分割,表現(xiàn)為一個(gè)字符串被拆分成兩個(gè)或多個(gè)部分。
這可能會(huì)增加翻譯的難度,因?yàn)榉g人員必須獨(dú)立地翻譯每個(gè)部分,而不知道這些部分是相關(guān)的。而且,不同的語言可能會(huì)要求以不同的順序組織各個(gè)部分或采用完全不同的句子結(jié)構(gòu)。這可能會(huì)導(dǎo)致翻譯出的句子結(jié)構(gòu)混亂。
在 Windows 中,由字符串分割引起的最為知名的翻譯問題是“該內(nèi)存不能為 read/written”(正確翻譯應(yīng)為“該內(nèi)存不能被讀取/寫入”),該語段的英文原文是:The memory could not be %s. (其中%s表示占位符,將被替換為 read 或 written),由于 read/written 在原句中僅表示為占位符,與原句分開了,所以該詞無法被翻譯。(不只是中文。這一翻譯問題在其他語言中也廣泛存在)


除此之外,偽本地化還能解決的問題有:
一些字符串在源代碼中被硬編碼(hard code)
也就是說,一些字符串被直接寫進(jìn)了源代碼中,而并非可用于本地化的資源文件中,在本地化過程中這種字符串可能不會(huì)被翻譯。
而在偽本地化的過程中,如果有單詞未被“翻譯”,則它們有可能是被直接寫進(jìn)了源代碼中。
還有有關(guān)從右到左書寫的語言的問題等,這里不再一一列舉。
而為了更輕松地識(shí)別字符串,可以采用添加唯一標(biāo)識(shí)符的做法以標(biāo)識(shí)字符串。
如 [1Dw2L][??mрμτ?? !]
(在 Windows 中這一標(biāo)識(shí)符被稱為“Hash ID”,而在 Windows 的偽本地化構(gòu)建中會(huì)包含一個(gè)“Hash ID Spy”應(yīng)用程序,可以查詢標(biāo)識(shí)符所對(duì)應(yīng)的字符串等信息。)

意義
通過偽本地化,開發(fā)人員可以在真正的本地化開始之前,就可以發(fā)現(xiàn)并修復(fù)上述問題。
同時(shí),偽本地化可以幫助開發(fā)人員了解產(chǎn)品的 UI 在翻譯后的外觀,而無需實(shí)際進(jìn)行真正的翻譯。
開發(fā)人員在開發(fā)或調(diào)試產(chǎn)品時(shí),甚至可以直接將偽語言作為默認(rèn)語言,這有助于他們將本地化視為優(yōu)先事項(xiàng)而不是事后考慮,并讓他們有機(jī)會(huì)在設(shè)計(jì)階段,或在翻譯開始之前解決問題。
正如微軟前員工 Michael S. Kaplan 所說 ,
“實(shí)際上,我們用偽語言構(gòu)建了很多Windows,并將它們‘本地化’ 為英語!” 偽本地化就像“一個(gè)熱心、勤奮但天真的實(shí)習(xí)本地化人員,他(她)將‘翻譯’ 每一個(gè)字符串,并且可以找到我們從來沒有希望在每種語言中都有相同覆蓋率的問題——而且比我們以前任何時(shí)候都要快?!?/p>
附:偽本地化對(duì)應(yīng)的語言環(huán)境
微軟為偽本地化設(shè)置了三個(gè)語言環(huán)境:
qps-ploc —— 用于類似英語的語言的偽本地化;
qps-mirr(現(xiàn)為 qps-plocm)—— 用于阿拉伯語等從右往左的書寫語言的偽本地化;
qps-asia(現(xiàn)為 qps-ploca) —— 用于東亞語言的偽本地化。
(從 Windows 10 開始,偽語言環(huán)境 qps-Latn-x-sh 也可用。)


注:你可能會(huì)在 Win8 的偽本地化構(gòu)建中發(fā)現(xiàn)另一種表示偽語言的語言環(huán)境名稱:ps-PS
但實(shí)際上:
該名稱不遵循 IETF 標(biāo)準(zhǔn)的規(guī)則,該標(biāo)準(zhǔn)已被確立為表示未注冊(cè)的私人使用標(biāo)簽的最佳方式。
ps-PS可以用于表示普什圖語。
(盡管微軟內(nèi)部有人員指出了這一點(diǎn) ,但 ps-PS 依然作為偽本地化對(duì)應(yīng)的語言環(huán)境寫進(jìn)了 Windows 偽本地化構(gòu)建中的說明文件里……)
而在 Unicode 國(guó)際組件中,提供了兩個(gè)偽語言環(huán)境名稱:
en-XA(用于類似英語的語言的偽本地化)
en-XB(用于阿拉伯語等從右往左的書寫語言的偽本地化)

在下期,我將介紹 Windows 偽本地化的(部分)歷史。

附自制偽本地化翻譯器:https://suntrise.github.io/pseudo


參考資料:
維基百科 - 偽本地化
https://zh.wikipedia.org/zh-cn/%E4%BC%AA%E7%BF%BB%E8%AF%91
微軟 - 偽本地化
https://docs.microsoft.com/zh-cn/globalization/methodology/pseudolocalization
安卓 - 使用偽語言區(qū)域測(cè)試您的應(yīng)用
https://developer.android.google.cn/guide/topics/resources/pseudolocales?hl=zh-cn
Shopify - 偽本地化:它是什么以及它為什么重要
https://www.shopify.com/partners/blog/pseudo-localization
什么是偽本地化?
https://www.globalizationpartners.com/2015/04/17/what-is-pseudo-localization/
Michael S. Kaplan 的博客
http://blogs.msdn.com/b/michkap/archive/2011/04/11/10152035.aspx
(網(wǎng)址現(xiàn)已不可用,但存檔可見于網(wǎng)頁(yè)時(shí)光機(jī))