【问题标题】:android: programmatically localize a dynamic stringandroid:以编程方式本地化动态字符串
【发布时间】:2014-02-09 08:58:59
【问题描述】:

我有一个存储在局部变量中的计算字符串。 我无法事先知道该字符串,但是我确定最终它将是字符串之一,其不同语言的翻译位于 string.xml 文件中。

如何将这样的动态字符串翻译成当前的语言环境?

【问题讨论】:

  • 对于动态翻译,不要将字符串放入 string.xml。 string.xml 仅用于静态资源。在这里使用编程方法。

标签: android mobile localization internationalization translation


【解决方案1】:

虽然这需要很长时间,但您可以遍历所有字符串,检查它们是否匹配,如果匹配则返回本地化版本:

public String translatedString(String s)
    //Set the locale to en-us
    Resources standardResources = context.getResources();
    AssetManager assets = standardResources.getAssets();
    DisplayMetrics metrics = standardResources.getDisplayMetrics();
    Configuration config = new Configuration(standardResources.getConfiguration());
    config.locale = Locale.US;
    Resources defaultResources = new Resources(assets, metrics, config);

    //Iterate over string res
    Field fields[] = R.string.class.getFields();
    for (Field field : fields) {
        String value = defaultResources.getString(defaultResources.getIdentifier(field.getName(), "string", this.getPackageName())));
        if (value.equals(s)){
            return getResources().getString(getResources().getIdentifier(field.getName(), "string", this.getPackageName())));
        }

    }

    return null;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多