Android 应用程序本地化 - 在运行时下载翻译

标签 android facebook xamarin localization

我正在开发一款需要支持多种语言的应用。我不想在应用程序资源中 bundle 所有语言,而是希望能够在用户从设置菜单中选择一种新语言时下载该语言。

Facebook 移动应用程序在这方面做得很好。如果您已登录,请转至设置> 语言> 切换语言> 选择一种不同的语言。

我认为 Facebook 正在下载这些语言资源,因为如果我将手机设置为飞行模式,它就不起作用(提示重试,或默认使用英语)。

由于无法在运行时编辑应用程序资源,我猜 Facebook 正在使用数据库下载语言,然后从那里加载翻译?!

p.s 我实际上正在尝试在 Xamarin 中执行此操作...试图了解 Facebook Android 方法,以便我可以自己实现它。

最佳答案

我不太了解 Facebook,但我知道有些人正在使用这种技术——我看过其他公司关于类似设置的介绍。有几个明显的好处:

  • 通过不 bundle 30 种语言的字符串来缩减整体应用大小。
  • 无需强制用户下载应用更新即可改进本地化字符串的能力。
  • 更好地了解您的用户使用的语言。

当我在 presented 中看到(同样,这不是 Facebook 特有的)时,它的工作原理与您建议的差不多——用户选择首选语言,应用程序从服务器获取字符串包,然后开始使用它。设置语言后,应用程序甚至可以定期刷新本地化字符串包以获取更新。

但是,需要注意一些缺点,尤其是当本地化字符串随时间变化时。它会使支持变得棘手——如果一个字符串发生了变化,一个按钮(例如)可能会被称为不同的东西,具体取决于用户使用该应用程序的确切时间。它还会对您的 i18n 策略和 QA 施加压力,以确保 UI 看起来不错,字符串可能会经常更改。

关于Android 应用程序本地化 - 在运行时下载翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278416/

相关文章:

java - RxJava 允许多次 onError 调用

android - HERE Maps 在 libMAPSJNI.so 崩溃

android - android 中的 java.lang.NoClassDefFoundError : com. parse.FacebookAuthenticationProvider

macos - 删除 Xamarin 后 mtbserver 需要钥匙串(keychain)访问

Xamarin Forms 应用架构

java - 存储盒装基元/字符串列表?

Android - Relative_to_Parent 对比。相对于自己

javascript - 在调用 FB.init() 之前调用 FB.getLoginStatus()。如何使用 Facebook API?

iphone - 可以使用 native facebook 应用程序登录移动 html5 应用程序吗?在 iPhone 上

xamarin - (何时)Xamarin.iOS 垃圾收集器是否停止整个应用程序?