2016-05-17 92 views
0

我正在研究需要支持大量語言的應用程序。我不希望在應用程序資源中捆綁所有語言,而是希望能夠在用戶從設置菜單中選擇新語言時下載該語言。Anroid應用程序本地化 - 在運行時下載轉換

Facebook的移動應用程序做得非常好。如果您已登錄,請轉至設置>語言>切換語言>選擇其他語言。

我認爲Facebook正在下載這些語言資源,因爲如果我將手機置於飛行模式下,它不起作用(提示再次嘗試,或使用英語作爲默認值)。

由於應用程序資源無法在運行時編輯,我猜Facebook正在使用數據庫下載語言,然後從那裏加載翻譯?!

對此的任何想法?

感謝

P.S實際上,我試圖做到這一點在Xamarin ......試圖理解Facebook的Android的辦法,所以我可以實現它自己。

回答

0

如果您下載本地化文件,您將無法使用Android中的默認本地化支持。

如果你確實繼續這個策略(下載本地化文件),你將需要創建自己的類來管理它,或者搜索一個爲你做這件事的庫。

+0

感謝您的回覆。我同意你的看法,但這並不能真正回答我的問題。 – AhmedW

1

我不太瞭解Facebook的具體情況,但我知道這項技術已被某些人使用 - 我曾在其他公司的類似設置中看過演示文稿。有幾個顯而易見的好處:

  • 通過不綁定30種語言字符串來減少總體應用程序大小。
  • 在不強迫用戶下載應用更新的情況下改進本地化字符串的能力。
  • 有關您的用戶正在使用哪種語言的更好數據。

當我提出見過(同樣,這不是Facebook專),它的工作就像你所說 - 用戶選擇的首選語言,應用程序獲取從服務器字符串捆綁,然後開始使用它。一旦設置了語言,應用程序甚至可以定期刷新本地化的字符串包來獲取更新。

但是,有一些缺點需要注意,特別是如果本地化字符串隨時間變化。它可以使技術支持變得棘手 - 如果一個字符串發生了變化,一個按鈕(例如)可能被稱爲不同的東西,具體取決於用戶何時使用該應用程序。它也會對你的國際化戰略和QA真正施加壓力,以確保用戶界面看起來不錯,可能會經常變化的字符串。

+0

感謝這個信息追逐。任何鏈接到這些演示文稿?我知道在iOS上可以在運行時下載不同的語言包。但對於Android來說,我能看到的唯一方法就是將字符串下載到數據庫中,然後在那裏閱讀它們?也許這就是Facebook如何做到這一點?它只是運行得很順利,很難判斷它是數據庫還是緩存資源。 – AhmedW

+0

這是我記得最清楚的一個,雖然它很高級:http:// lingoport。COM /可溼性粉劑內容/上傳/ 2012/03 /動態語言送達換的Adobe%E2%80%99S-Mobile的應用.pdf –

相關問題