【问题标题】:Android App Localisation - Downloading translations at runtimeAndroid 应用本地化 - 在运行时下载翻译
【发布时间】:2023-03-31 21:21:01
【问题描述】:

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

Facebook 移动应用程序在这方面做得很好。如果您已登录,请转到设置 > 语言 > 切换语言 > 选择其他语言。

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

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

p.s 我实际上是在 Xamarin 中尝试这样做...试图了解 Facebook Android 方法,以便我可以自己实现它。

【问题讨论】:

    标签: android facebook xamarin localization


    【解决方案1】:

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

    • 通过不捆绑 30 种语言的字符串来减少整体应用程序的大小。
    • 能够在不强制用户下载应用更新的情况下改进本地化字符串。
    • 更好地了解用户使用的语言。

    当我在展示中看到时(同样,这不是专门针对 Facebook 的),它的工作方式与您的建议一样 - 用户选择首选语言,应用程序从服务器获取字符串包,然后开始使用它。设置语言后,应用甚至可以定期刷新本地化字符串包以获取更新。

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

    【讨论】:

    • 感谢大通提供此信息。这些演示文稿的任何链接?我知道在 iOS 上,您可以在运行时下载不同的语言包。但是对于Android,我能看到的唯一解决方法是将字符串下载到数据库,然后在那里读取它们?也许这就是 Facebook 的做法?它运行得非常顺利,很难判断它是数据库还是缓存资源。
    • 这是我记得最清楚的一个,虽然水平相当高:lingoport.com/wp-content/uploads/2012/03/…
    【解决方案2】:

    如果您下载本地化文件,您将无法使用 Android 中的默认本地化支持。

    如果您确实采用此策略(下载本地化文件),您将需要创建自己的类来管理此操作,或者搜索一个为您执行此操作的库。

    【讨论】:

    • 感谢您的回复。我同意你的看法,但这并不能真正回答我的问题。
    猜你喜欢
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多