2015-02-06 98 views
2

現在我們正在考慮將應用程序本地化爲多種語言,現在應用程序的一般概念已經確定。這是我想確保從一開始就做的正確,以降低未來頭痛的風險。iOS應用程序本地化最佳實踐和佔位符

該應用程序的目標iOS 7及以上,使用故事板,並寫在Swift中。

故事板

當一個故事板(或廈門國際銀行)工作的,什麼是標記UI元素爲「不被翻譯成」最好的方法是什麼?例如,我有一個用戶顯示名稱的佔位符字符串(Display Name),在運行時將被用戶顯示名稱替換。此顯示名稱不會本地化,但字符串「顯示名稱」也不會。有沒有一種方法不會自動將UI元素的值放入strings文件中?如果沒有,是進入該文件並手動刪除字符串我不想本地化可持續的選項?

字符串代碼

我使用的是斯威夫特功能NSLocalizedStringkeycomment參數。我見過的一些地方說基於上下文將密鑰設置爲唯一的ID(例如,intro.login-button-text),而其他人似乎只是將整個字符串置於默認語言(例如Login)。我喜歡這個關鍵的獨特ID的想法,但這不會違背「基礎」語言的想法嗎?

導出

的Xcode 6的「導出本地化」的選擇似乎用於獲取文件的正確格式發送給翻譯非常有用的。但是,如前所述,佔位符文本不需要翻譯。在導出之前,是否應將這些佔位符從導出的xliffstrings文件中刪除?

+0

另一個問題是格式。例如。 「%1 $ @ is online!」''%1 $ @'是用戶的名字還是格式是''%1 $ @%2 $ @''' 1 $ @'是用戶的名字,'%2 $ @'是本地化的字符串'「在線!」'。我認爲第一個對定位者更具描述性。但是本地化格式似乎有點過分,特別是如果您正在開發跨平臺應用程序。 – Reggian 2015-03-20 17:53:18

+0

@Reggian你需要使用第一個選擇。在很多語言中,這個名字可能會在最後或在句子的中間。翻譯者需要能夠移動文本的名稱部分。 – Pylinux 2016-03-04 14:50:53

回答

2

我自己也在尋找同樣的問題。希望這會幫助你和其他人。此外,我會建議有某種工具來組織XLIFF /字符串文件

故事板:

我見過開發商將非翻譯文本中的故事板與額外的括號。即{顯示名稱}。

通過使用這個你可以看到翻譯本身,如果它需要翻譯或沒有。我們使用oneskyapp.com並可以選擇隱藏這些翻譯,並且每次輸入該密鑰時都會隱藏這些翻譯。

字符串在代碼

按照此線索,他們建議使用的關鍵字。 Best practice for key values in translation files

導出

我不能找到一種方法,有一定的翻譯導出時自動刪除。當然,您可以將動態字段的視圖放在不同的XIB/Storyboard中,並決定不翻譯這些視圖。

再次,像onskyapp.com這樣的工具可以幫助你做到這一點。

格式

與該領域的上下文是非常重要的,當它後面即一個用戶的名字,我會去翻譯可以是不同的「%1 $ @上線了!」