【问题标题】:"Social" internationalization in Android application - loading resources dynamicallyAndroid应用中的“社交”国际化——动态加载资源
【发布时间】:2011-06-24 08:32:29
【问题描述】:

我有一个想法,让用户将我的应用程序翻译成他们自己的语言。 我是这样想象的:

如果应用程序未翻译成用户的系统语言,则显示英文版本的 UI 并要求用户帮助翻译(很明显) 接下来,要求用户将一些短语从英语翻译成他的母语。并要求检查其他一些翻译。 (这有点工作,但没有什么复杂的) 我的想法中最难的部分是: 用户按下“更新翻译”,此应用程序的文本资源将更新到最新版本。 当然可以进行频繁更新,但是这种方法有一些缺点: 1. 我必须经常进行所有这些更新,并不是所有的用户都会对此感到满意。 2 即使每周更新一次,对于大多数用户来说,从努力到获得结果的时间太长了,而且响应可能不会那么好。

您知道如何“在线”加载翻译吗?

【问题讨论】:

    标签: android resources translation


    【解决方案1】:

    Android 目前不支持此功能。为了完成你想要的,你需要插入你自己的资源处理代码来在你的 UI 中使用它们的任何地方返回字符串。这意味着您不能让框架自己加载字符串(例如,在您的布局中不使用 android:text="@string/something"),并调用您自己的函数来检索包装 Resources.getString()/ 的字符串获取文本()。

    您还需要处理资源 ID 不稳定并且会随着应用的每次构建而变化的事实。

    所以你正在寻找一些非常重要的东西。

    【讨论】:

    • 有没有办法做类似“resources.loadResourceFromFile(custom_strings.xml)”的事情?在代码中替换对资源的调用很容易,但如果我选择这种方式,我也会处理 layout.xml 的问题。
    【解决方案2】:

    我已经使用以下方法进行了一些国际化:

    我会先检查他们是否有某种 api。如果没有 API,我会检查 gettext 的 java 实现并用它处理翻译。

    【讨论】:

      【解决方案3】:

      您可以将当前用户的任何翻译缓存在 SD/存储上的文件中,并将其显示给该特定用户。然后,当它获得每周更新时,删除缓存文件并重新开始?

      【讨论】:

      • 好的,但这怎么可能呢?资源被编译成 .apk,同时也生成了一些代码。我不知道如何强制应用程序使用“外部”strings.xml 翻译逻辑是简单的部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多