本文作者是Alconost。我們是一家為應用、游戲、以及其它軟件提供本地化服務的公司,業(yè)務涉及70多種語言。
我們能夠?qū)懗鲞@篇文章,得益于我們客戶提出的不計其數(shù)的問題
我的游戲哪里有問題?本地化做到這種程度還不夠嗎?應該如何解決呢?
在引入新游戲時,不少人會采取一些投機取巧的方法。如果你不打算循序漸進地增長,這甚至還算得上是一個高效的策略。
然而,期待已久的本地化版本一切就緒之后,大多數(shù)游戲開發(fā)商才開始思考如何才能吸引更多海外玩家。自己的游戲在更多國家發(fā)行后,或早或晚他們就會提出幾個與本地化相關的點子。
首先我們要明確——本地化翻譯的意思是將用戶界面翻譯成目標語言,并根據(jù)文化、宗教和政治因素進行調(diào)整,從而迎合某個國家或地區(qū)的市場需求。
要強調(diào)的是,本地化翻譯是為了“解釋”,而不是“改變”。
舉個例子,某游戲中包含了一個關于英語民間故事角色的笑話,翻譯成德語時,本地化翻譯的處理方法應該是用在一個在德國廣為人知的笑話來代替。但是,如果用戶界面中沒有足夠的空間來容納文字量較大的德文文本,有時就需額外花費更多精力。
另一個體現(xiàn)本地化涉及之廣的例子是數(shù)字的翻譯。比如說,在美式英語中,有些時候就要求用單詞來表達數(shù)字,不能用阿拉伯數(shù)字。其他地區(qū)的本地化可能需要注意數(shù)詞與名詞的復數(shù)單數(shù)形式保持一致。例如在俄語中,單復數(shù)還存在一些特殊情況,而日語和漢語中則沒有復數(shù)形式。但是,如果數(shù)字和文字是以硬編碼的形式存在于游戲的靜態(tài)圖像中,僅僅翻譯是不夠的。
這兩種情況還只是冰山一角——在本地化過程中,你還會遇到各種各樣跟本地化無關的問題。有些人稱之為偽本地化或者國際化錯誤——指的是一些本可以預測和避免,但需要開發(fā)人員花費很多精力才能解決的問題。
這就是為什么Alconost公司為開發(fā)人員羅列出了一份規(guī)則,讓他們在項目啟動時就按照這些建議走,以便在開發(fā)過程中可以輕松一些,為本地化早早打好基礎。
1.提前選擇本地化翻譯語言
正如在我們之前專門討論APP本地化工作流程的文章中提及,行動清單的第一項就是“評估你的潛力”。我們將在這里重復一遍。
你可能會反對說,在一款游戲真正上線之前,你不可能預見到所有潛在的市場語言。嗯,這在一定程度上是正確的:你得先用非本地化翻譯版本做個測試,看看用戶的反響,然后你再進行本地化翻譯。但是,你并不用每次都按這個步驟來。
首先,你的游戲可能包含了太多文化和地域方面的禁忌,如果沒有本地化,即使游戲敘事一流,你的游戲也會被拒之門外。
那么在開始之前,預測有希望的語言環(huán)境的最佳方法是什么?
分析競品的本地化。一般來說,如果競爭對手的游戲在某一市場上找到了肥沃的土壤,那么你也有很大的機會那里獲得成功。
按風格評估本地化。例如,如果你是一個獨立開發(fā)者,正在考慮發(fā)行一款復古風格的roguelike游戲,你可以通過觀察成功的同類游戲來確定哪些市場是比較有前景的——比如說《地痞街區(qū)》,已經(jīng)被本地化成七種語言,外加英語。另外一種辦法就是從地域角度去分析。比如說電子游戲是日本文化中不可分割的一部分,那么開發(fā)初期你可能就要把日本列為目標市場了。
研究游戲本地化需求最強烈的那門語言。說到這里,你可能想看看我們之前在 “游戲本地化的最佳語言”一文[1]中的研究報告。
但是,我們的“0號規(guī)則”是盡可能地將英語作為游戲的源語言。我們建議在開發(fā)的第一天起,我們建議從第一天開始就考慮兩種語言環(huán)境進行開發(fā)。
兩個“默認”語言環(huán)境可能應該是英語和您的母語(如果不是英語)。這種方法有幾個不可否認的好處:首先,以后可以使用英語作為源材料將你的游戲翻譯成新的語言,這有助于確保一致性。第二,一開始就準備兩種語言,這會讓你提前認識到本地化前期工作中的所有陷阱。到時游戲擴展到20種語言,你就會熟練很多了。
2.為目標語言調(diào)整界面
在設計界面元素時,人們一般會為其它語言文本留出30%的空間(甚至更多,如果能夠做到的話)。這對短字符串(菜單選項、UI等)尤其有用。
但是,我們還有更好的方法。如果你已經(jīng)考慮到了規(guī)則1,并且有了一個初步的目標語言列表,那么我告訴你一個很有幫助的方法:為最棘手的語言設計界面。
就比如說,德語的文字量一般都會比英語多平均30%,俄語是10%。阿拉伯語也是這種情況。另一方面,繁體中文所占用的空間一般比英文少30%。
再說到字節(jié),一個拉丁文字母等于一個字節(jié),但西里爾文和阿拉伯文是兩個,你在規(guī)劃數(shù)據(jù)存儲時也需要考慮到這一點。
3.不要把字符串直接嵌入到代碼中
轉(zhuǎn)換文本進行本地化,會導致這些硬編碼字符串丟失。記住這條本地化規(guī)則:每一個可本地化的字符串都應該是可編輯的,不要觸及任何代碼。
實際上,為了本地化而做的這些工程都可以被歸結(jié)為“國際化”,簡稱“i18n”——指讓產(chǎn)品無需做大的改變就能夠適應不同的語言和地區(qū)的需要。從程序角度來說,就是在不修改內(nèi)部代碼的情況下,能根據(jù)不同語言及地區(qū)顯示相應的界面。
另一個重要的技巧是避免用較小的單個單詞組成字段。為StackExchange做出貢獻的谷歌程序員給我們提供了這樣一個典型例子:
String currency = Locale::getCurrencyString() + money.toString(); // creates $123
這就體現(xiàn)出了一個問題——其他語言可能會把幣種符號放在數(shù)字后面。
你可以使用需要本地化的格式化字符串。就比如說:
String format = Locale::get(“currency format”); // returns “${0}” in English String currency = String::Format(format, money.toString());
后一種方法允許本地化人員在實際格式化字符串中重新排列單詞。
4.記住,時間、日期、計量單位和數(shù)字也需要本地化
作為上一條規(guī)則的延伸,我們想明確指出,數(shù)字方面的信息也需要從代碼中提取出來進行本地化,因此也不能硬編碼。
你還需要準備好重新設計界面上的數(shù)字。比如說游戲時間線上的計時,應該也是需要本土化的。原因是,西方國家大多是單向性時間模式,也就是說,他們習慣于用一條延伸的線來表示時間的流動,而亞洲國家則喜歡多樣性時間模式,用圓圈來表示。
更不用說不同語言的日期格式、計量單位各不相同了。
所以我們的建議是,在本地化的時候要做好準備,考慮好每一個細節(jié)。
5.使用占位符和格式化控件,并使其易于訪問
涉及到本地化和文本編輯時,使用占位符有時也是一個很好的選擇。但如果不提供占位符的訪問權限,那么它可能成為一把雙刃劍。
這個問題牽涉到不同語種中的不同語序。所以我們的建議是:讓你的占位符成為短語的一部分,這樣就可以在上下文中插入。舉個小例子來對比一下:
反面例子:“Mommy ate ” + %num + ” apples.”
正面例子:“Mommy ate %num apples.”
對占位符的簡短描述也會有很大幫助。這樣一來,當占位符被認為是與前面的文字有錯誤的關聯(lián)或不相關的時候,就可以避免疑惑。
6.避免往圖片里加文字
如果你的游戲中有圖片,記得也要本地化,尤其是那種帶有文字的。這就意味著你要從頭設計圖片。
重新設計圖片和創(chuàng)意素材有時是個好主意,這樣你就可以根據(jù)目標市場的需求對元素做出調(diào)整。然而,如果你只是單純替換翻譯文本,那就完全是浪費時間了。
7.使用正確的編碼和字體
如果你需要某些跟你字符串類不同的特殊字符, 比如“spéc??l ”這樣的,編碼問題是不可避免的。如果你的目標語言在本地化后出現(xiàn)了編碼不匹配的情況,可能需要花費大量的時間和精力來刪除這些可怕的字符, 比如???這樣的。
字體方面也會出現(xiàn)同樣的問題。特別是某些花哨的游戲字體只涵蓋了某些語言的字形。結(jié)果就是,你可能得為不同的語言挑選不同的字體。在選擇字體時請注意這一點,否則游戲中可能會出現(xiàn)一堆方框(□□□)而不是文字。
我們建議還是盡可能地使用Unicode而不是ASCII。UTF-8是最常用的,而且是空間利用率最高的編碼。所以,請確保你的輸入文件沒有出現(xiàn)編碼錯誤。
關于這一點,我們就先講到這里了。關于編碼的詳盡教程可以在Alconost另一篇關于尋找“mojibakes”的文章[2]中找到。
8.如果已經(jīng)為本地化做好準備,你可以試試偽翻譯
當你把上面所講的技術方面的事都搞定了,你可以試運行看看。網(wǎng)絡上有很多很棒的偽本地化工具,可以將你的界面模仿成外語界面,包括調(diào)整文本長度、檢查編碼和硬編碼字符串。
這些工具基本上都會運行一個模仿目標語言的腳本,并生成一個測試版本,然后必須在常規(guī)流程中作為非本地化版本進行QA測試。
這種提前測試并不是什么靈丹妙藥,但是的確很有幫助。而對于開發(fā)者來說也是一件很有趣的事。
9.早點制作術語表
術語表是游戲內(nèi)專有詞匯和概念的整合,在游戲中必須保持前后一致。這些詞匯主要包括物品、人物名稱、器物和屬性狀態(tài)。
保持術語翻譯一致是非常重要的,試想一下,如果某個游戲內(nèi)的東西在一個地方被翻譯成 “藥水”(potion),在另一個地方被翻譯成 “靈藥”(elixir)——你在無意中為玩家制造了額外的邏輯難題。
10.準備好提供上下文
與提供詞匯表同樣重要的是確保本地化團隊擁有他們需要的所有上下文。從我們的經(jīng)驗來看,譯員、本地化項目經(jīng)理和游戲開發(fā)者之間的充分交流有助于語境的建立。
我們意識到要讓開發(fā)團隊做到24小時待機是很難的。然而在本地化階段,我們的建議是指定一個代表作為您的聯(lián)系人——錯誤或模糊不清的語境確實會對本地化的最終結(jié)果產(chǎn)生很大影響。
除此之外,本地化工作流平臺主要是根據(jù)客戶的喜好來選擇的,這樣是為了最大程度地保證溝通的便利和高效。
充分的準備工作最終會讓你看到好的回報。
我們希望這些簡單的規(guī)則、建議能對你的游戲開發(fā)有所幫助。Alconost祝你能夠取得輝煌成功,讓玩家們沉浸其中!
延伸文章
[1]游戲本地化的最佳語言 https://alconost.medium.com/best-languages-for-game-translation-836c467db417
[2]"mojibakes"來自哪里?https://medium.com/swlh/where-do-mojibakes-come-from-a-smart-guide-to-encodings-fa96de357123