如何在带有 i18n 的应用程序中使用 @StringDef
how to use @StringDef in an app with i18n
@StringDef
非常适合替换 Enum
。
@StringDef(Standard, Mini)
public @interface Type;
但是如果我的应用程序需要支持英语、法语和中文怎么办?
因此三个不同国家/地区的标准可能是 "Standard"、"Norme" 和“标准”。在那种情况下,Standard 和 Mini 可能需要上下文才能获得实际值。
我们怎么还能在带有 i18n 的应用程序中使用 @StringDef
。
没有开箱即用的解决方案。
推荐的方式是将本地化的字符串资源存放在不同的目录中(res/values-XX/strings.xml
,其中XX
是en
、fr
等)。
https://developer.android.com/guide/topics/resources/localization.html
在这种方法中,您需要使用字符串 id 来获取本地化的字符串。您可以尝试以下方法:
改用字符串的 ID:
@IntDef({R.string.standard, R.string.mini})
使用一些帮助程序将 @StringDef
的字符串匹配到本地化的字符串资源。
- 使用枚举。
@StringDef
非常适合替换 Enum
。
@StringDef(Standard, Mini)
public @interface Type;
但是如果我的应用程序需要支持英语、法语和中文怎么办?
因此三个不同国家/地区的标准可能是 "Standard"、"Norme" 和“标准”。在那种情况下,Standard 和 Mini 可能需要上下文才能获得实际值。
我们怎么还能在带有 i18n 的应用程序中使用 @StringDef
。
没有开箱即用的解决方案。
推荐的方式是将本地化的字符串资源存放在不同的目录中(res/values-XX/strings.xml
,其中XX
是en
、fr
等)。
https://developer.android.com/guide/topics/resources/localization.html
在这种方法中,您需要使用字符串 id 来获取本地化的字符串。您可以尝试以下方法:
改用字符串的 ID:
@IntDef({R.string.standard, R.string.mini})
使用一些帮助程序将
@StringDef
的字符串匹配到本地化的字符串资源。- 使用枚举。