2011-06-24 59 views
4

我有個想法讓用戶將我的應用程序翻譯成他們自己的語言。 我這樣想象一下:Android應用程序中的「社交」國際化 - 動態加載資源

如果應用程序沒有被翻譯到用戶的系統語言,則顯示英語版本的用戶界面和用戶的要求在翻譯的幫助(很明顯) 接下來,用戶被要求翻譯一些從英語到他母語的短語。並要求檢查一些其他翻譯。 (這是一些工作,但沒有什麼複雜的) 我的想法困難的部分是: 用戶按下「更新翻譯」和文本資源,這種應用是更新最新版本。 當然它可能使頻繁的更新,但這種方法也有一些缺點:1。 我必須讓所有這些更新的頻繁,而且並非所有的用戶會喜歡它。即使更新每週進行一次,大部分用戶的努力時間和獲得結果的時間都會太長,並且很可能,響應的效果可能不盡如人意。

你有什麼想法如何加載譯文「上線」?

回答

1

Android目前不支持此操作。爲了完成你想要的任務,你需要插入你自己的資源處理代碼,以便在用戶界面中使用它們的任何地方返回字符串。這意味着你不能讓框架自己加載字符串(例如在你的佈局中不使用android:text =「@ string/something」),並調用你自己的函數來檢索一個包含Resources.getString()/ gettext的()。

而且你還需要應對的事實,資源ID是不是穩定的,可與您的應用程序的每個生成改變。

那麼您正在尋找的東西相當不平凡。

+0

有沒有辦法做一些像「resources.loadResourceFromFile(custom_strings.xml)」?將代碼中的資源調用很容易,但如果我選擇這種方式,我也可以處理layout.xml中的問題。 – piotrpo

0

你可以緩存任何當前用戶的翻譯中對SD /存儲文件,並顯示給特定用戶。然後,當它獲得每週更新時,刪除緩存的文件並重新開始?

+0

好的,但它有可能嗎?資源被編譯爲.apk,並且還生成了一些代碼。我不知道如何強制應用程序使用「外部」strings.xml翻譯邏輯是很容易的部分。 – piotrpo