國外軟體的界面語言中文本地化一般是如何做的?
介紹一個平台 Crowdin。多語種翻譯平台,我們公司就在用這個做15種語言的適配。
背景:Onefootball作為一個用15種語言直播全球400多個聯賽的足球App(這句是廣告),翻譯的內容其實包括兩部分,一部分是App內置的文本內容,一部分是足球數據相關的內容。後者來自OPTA等數據提供商,他們提供了後台用來微調例如球隊名球員名等的翻譯工具。
這裡主要提到前者,App內的文本翻譯。我們適配的語言不僅僅包括中英德,而且不僅是系統功能性內容,還有很多是文本內容,這就涉及到多語言多人協作的部分。這點Crowdin做的很好。
See Crowdin in Action: collaborative internationalization and quality translation tool: collaborative internationalization and simple translation service Crowdin有興趣的可以直接在Demo里體驗一下。
進入後先選你要翻譯的語言。這裡的翻譯分為兩個步驟,第一步是翻譯,第二步是確認。因此先會顯示不同語言的翻譯進度。點開某個語言就是這樣的,左側是統一字元,右側是文本,翻譯,情景(可以附圖,這個很實用),注釋。翻譯的時候有些功能非常實用,下面有建議翻譯,來自Google和微軟的智能翻譯,以及同App同語言不同平台(iOS, Android等等)同字元串的翻譯。很多時候可以直接選擇就好了。翻譯還有個功能,支持動態參數,比如球隊名可以標識出來,自動替換。這就是我們Onefootball的15種語言適配的主要工作方式。
我知道很多開源項目的 i18n 都是用 GNU gettext。
gettext 會根據代碼生成個 .pot 文件存放需要翻譯的字元串列表,然後編輯器參照 .pot 文件提示翻譯者進行翻譯,每個語言的翻譯保存到一個對應的 .po 文件。
.po 文件會被編譯到 .mo 文件。程序運行時,直接從 .mo 文件中載入本地語言的該文字片段。如果 .mo 中暫時缺失該字元串,則 fallback 到原語言顯示該文字片段。
可以使用的 gettext 編輯器一找一大把,Vim 也可以編輯。於是社區里有能力翻譯的人直接改 .po 文件,提 pull request。
gettext 對於單複數、語序什麼的都有所考慮。上兩張偷來的截圖:
我高中時提交過幾個 WordPress 插件的中文 .po,後來就一直沒用過了…我曾經回答過類似的問題
國外的知名軟體是怎麼漢化的,自己公司有漢化部門嗎還是找第三方公司? - 翻譯軟體
外語的 App 一般都是找誰翻譯成中文版本的?如何找到專業的翻譯人士? - 應用(軟體)把字元串導出成excel類似的格式,發給翻譯,再導回去。具體程序具體實現。馬住,要是有人有興趣我再慢慢展開回答……
大公司自己翻譯,小公司外包。
作者:劉朋鏈接:開發 Android 應用,要兼容漢日英3個語言版本,需要哪些考量?來源:知乎著作權歸作者所有,轉載請聯繫作者獲得授權。
在任何情況下,從您的應用代碼中提取 UI 字元串並將其存放在外部文件中都是個好辦法。Android 在每個 Android 項目中都提供一個資源目錄,從而簡化了這一過程。
如果您是使用 Android SDK 工具創建的項目(請閱讀創建 Android 項目),工具會在項目的頂層創建一個 res/ 目錄。此 res/ 目錄中包含用於存放各類資源的子目錄。此外,還包含幾個默認文件(如 res/values/strings.xml),用於存放您的字元串值。
創建語言區域目錄和字元串文件如需添加對更多語言的支持,請在 內創建額外的 valuesres/ 目錄,並在目錄名稱末尾加上連字元和 ISO 語言代碼。例如,values-es/ 目錄包含的簡單資源用於語言代碼為「es」的語言區域。Android 根據運行時設備的語言區域設置載入相應的資源。如需了解詳細信息,請參閱提供備用資源 。
一旦您決定了為哪些語言提供支持,便可創建資源子目錄和字元串資源文件例如:
MyProject/
res/
values/
strings.xml
values-es/
strings.xml
values-fr/
strings.xml
將各個語言區域的字元串值添加到相應文件中。
在運行時,Android 系統會根據當前為用戶設備設置的語言區域使用相應的字元串資源集。
例如,以下是一些面向不同語言的不同字元串資源文件。英語(默認語言區域),/values/strings.xml:
&
&
&
&
&
西班牙語,/values-es/strings.xml:
&
&
&
&
&
法語,/values-fr/strings.xml:
&
&
&
&
&
註:您可以在任何資源類型上使用語言區域限定符(或任何配置限定符),例如,您可以提供本地化版本的可繪製點陣圖。
使用字元串資源
您可以使用由 元素的 name 屬性定義的資源名稱在您的源代碼和其他 XML 文件中引用您的字元串資源。
在您的源代碼中,可以使用語法 R.string. 引用字元串資源。有許多方法都接受以這種方式引用的字元串資源。例如:
// Get a string resource from your app"s Resources
String hello = getResources().getString(R.string.hello_world);
// Or supply a string resource to a method that requires a string
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);
在其他 XML 文件中,只要 XML 屬性接受字元串值,您就可以使用語法 @string/ 引用字元串資源。
例如:
&
1.一般軟體都會設置語言包(中文包,英語包,日語包等),拆開看會發現是一些按照一定規律排列的名稱,例如常見軟體菜單上的:「文件」,「編輯」,「工具」。2.每個語言包只要按照同樣的規律處理這些名稱,就可以被軟體運用。3.在軟體設置裡面設置選中的語言包,軟體系統就會自動讀取語言包中的名稱,放到特定位置。4.翻譯的時候也很簡單,除了一些句子之外,固定名稱都可以直接複製到某道詞典直接翻譯然後保存到新的語言包。
總得來說,是軟體公司自己找人做的。一是找專門的公司,二是招收實習生。
德國有的大學開了該學科(比如我們學校HS Anhalt),叫做「Softwarelokalisierung」,翻譯過來就是「軟體本土化」,專業隸屬於信息系,需要學習軟體和專業語言語法等等。雖然德國的這門課是以德英為主,但是也有中國人在上。就業前景當然是軟體本土化公司。可能是因為歐洲語言種類較多吧,歐洲這類公司還是比較多的。當然他們接單應該都是專業大型軟體公司的翻譯外包項目。
也有不公司的軟體翻譯是通過招收中國實習生的方式,在幾個月的時間內,把軟體界面和操作手冊翻譯成中文。他們如果要在我們國家推廣,自己會漢化,比如office
推薦閱讀:
※你用過哪些好的 Windows軟體?
※如何評價 Steam 上的軟體 Wallpaper Engine?
※將圖片上的文字轉成文本的軟體有哪些?
※嵌入式軟體開發需要學習哪些內容?
※為什麼有些iOS軟體需要很高版本的iOS才能運行?