【问题标题】:How to dynamically modify localization values in android app如何在android应用程序中动态修改本地化值
【发布时间】:2011-02-22 16:59:56
【问题描述】:

我们要实现以下本地化要求 -

  1. 存储在 strings.xml(和其他语言变体)中的参数值需要定期(几乎每天)刷新。这是因为需要根据语言显示一些动态文本。可以添加、修改或删除 strings.xml 中的条目。这些值是从后端 api 调用定期获取的(基于定义的刷新策略)。 如果我的理解是正确的,那么我们不能在apk文件中动态修改strings.xml。

我们正在考虑两种可能的方法 -

  1. 利用设备数据库并从那里加载值(我个人不太喜欢这种方法,因为我无法预测对性能的影响。任何 cmets?)

  2. 创建一个包装器实现来解析 xml,并将这些值存储在特定的 xml 中。

根据选择的语言解析相应的 xml 并使用它来填充地图。然后从此映射中获取值(代替 android 资源文件)

如果有人遇到过类似问题, 您能否提供您的意见和可能的方法。 如果我缺少 Android api 中的某些默认值并且可以在这种情况下使用?

期待大家对上述内容的意见。

【问题讨论】:

    标签: android localization internationalization


    【解决方案1】:

    问题是您需要依赖 Android 根据语言环境、屏幕尺寸、方向等发现正确本地化的能力。这些条件超出了您的影响能力,您不想尝试重现搜索逻辑。

    也许您可以在每个单独的 string.xml 文件中放置一个标记字符串。这个标签会有一个关键字,可能是一个在运行时用你翻译的字符串填充的表的名称。

    【讨论】:

    • 嗯,感谢您的回复 eric。关于这个的一个快速问题(jsut 是从 android 开发开始的,我还在学习,如果我太天真了,请原谅),如果我们必须从数据库中获取东西,对性能有什么影响(这是相对而言的)从 xml 读取)
    • 嗨 Gaurav。我会说这个建议不会是高性能的。运行时在 android 中查找字符串和诸如此类的东西会相当快,但是在 SQLite 中搜索键对值不会很有效。这只是解决问题的一种方法,不一定是最好的或 CPU 效率最高的方法。
    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多