4

有沒有辦法在運行時將當前語言更改爲另一種語言?Mvvm跨越本地化:在運行時切換

例如:能夠在單擊按鈕或啓動應用程序時進行切換,獲取用戶語言和切換。

如何告訴插件在啓動時檢查用戶語言?

在此先感謝您的幫助。

回答

2

有沒有辦法在運行時將當前語言更改爲另一種語言?

是的,叫builder.LoadResources(whichLanguage)MvxTextProviderBuilder.cs

例如:能夠切換按鈕被點擊

時,UI框架是不是真的設置執行切換現場。當您在語言之間切換時,新的JSON資源文件將全部加載成功 - 但現有的顯示文本將不會更新。這有點像大多數移動操作系統 - 如果你想切換語言,你經常需要重新啓動!

如果你想添加動態切換,那麼你必須找到一種方法來告訴UI完全刷新所有文本 - 我懷疑這不會很難做到,但是可能需要一些手動編碼頁/視圖已經被創建並顯示:/

或啓動應用程序時,得到了用戶的語言和開關。

這是一個更直接的做國際化的方法。這通常是正常的,因爲MvvmCross主要針對手機 - 而手機通常是單用戶設備,不會經常切換語言。

  • 你可以,例如,使用一些變量(例如System.Globalization.CultureInfo.CurrentUICulture)制定,顯示最好的語言。

  • 或者你檢測負載用戶是否已經選擇了一個語言,但 - 如果他們有,則表明HomeViewModel - 如果他們沒有再展LanguagePickerViewModel - 這就是我們在做StarWarsKinect - 的StartNavigationObject是一個完美的這種邏輯的地方!

SWK Language Pick

如何告訴插件,以檢查在啓動時用戶語言?

目前,您必須將此邏輯作爲您應用程序啓動的一部分進行編碼。

我一定會對此提供一個改進的插件 - 也許是一個演示!


如果您正在尋找國際化,那麼一個替代方案的實施要考慮的是白話 - 球隊在RDIO有單聲道和MS平臺非常好的產品 - https://github.com/rdio/vernacular

+1

我添加語言BaseConferenceApp構造是樣本進行本地化,然後我的Android Setup.cs CreateApp返回新的NoSplashScreenConferenceApp(Java.Util.Locale.Default.Language);所以使用默認語言。 – Alphapage

+0

您的實現似乎完美地完成了這項工作,現在我不會考慮其他框架,並按照您的建議進行操作。 – Alphapage

+1

現在,無法重新加載MvvmCross本地化插件後,無法使用與帖子結尾相同的內容:http://wp7wonders.wordpress.com/2010/10/17/localize-a-windows-phone-7 -application/ – Alphapage