如何在i18n的应用程序中使用@StringDef

时间:2017-01-01 04:43:42

标签: java android internationalization android-support-library

@StringDef非常适合替换Enum

@StringDef(Standard, Mini)
public @interface Type;

但如果我的应用需要支持英语,法语和中文呢?

因此标准可能是"标准"," Norme"和"标准"在三个不同的国家。在这种情况下,标准和迷你可能需要上下文来获得真正的价值。

我们怎样才能在使用i18n的应用中使用@StringDef

1 个答案:

答案 0 :(得分:1)

没有开箱即用的解决方案。

推荐的方法是将本地化的字符串资源存储在不同的目录中(res/values-XX/strings.xmlXXenfr等)。

  

https://developer.android.com/guide/topics/resources/localization.html

在这种方法中,您需要使用字符串id来获取本地化字符串。您可以尝试以下方法:

  1. 改为使用字符串ID:

    @IntDef({R.string.standard, R.string.mini})
    
  2. 使用一些帮助器将@StringDef的字符串与本地化的字符串重新匹配。

  3. 使用枚举。