Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在i18n应用程序中使用@StringDef_Java_Android_Internationalization_Android Support Library - Fatal编程技术网

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

Java 如何在i18n应用程序中使用@StringDef,java,android,internationalization,android-support-library,Java,Android,Internationalization,Android Support Library,@StringDef非常适合替换Enum @StringDef(Standard, Mini) public @interface Type; 但是,如果我的应用程序需要支持英语、法语和汉语怎么办 因此,标准可能是“标准”、“规范”和标准" 在三个不同的国家。在这种情况下,标准和迷你可能需要上下文来获得真正的价值 我们如何在i18n应用程序中仍然使用@StringDef。没有现成的解决方案 推荐的方法是将本地化字符串资源存储在不同的目录中(res/values XX/strings.xml,其

@StringDef
非常适合替换
Enum

@StringDef(Standard, Mini)
public @interface Type;
但是,如果我的应用程序需要支持英语、法语和汉语怎么办

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


我们如何在i18n应用程序中仍然使用
@StringDef

没有现成的解决方案

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

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

  • 请改用字符串的ID:

    @IntDef({R.string.standard, R.string.mini})
    
  • 使用一些帮助程序将
    @StringDef
    的字符串与本地化字符串资源相匹配

  • 使用枚举

  • 关于解决方案2,我不太了解。请您详细解释一下好吗?第一个解决方案很好!#2-我建议您可以编写一些util
    StringHelper
    来将
    @StringDef
    项与
    R.string.xxx
    资源相匹配,使用
    开关
    或类似的方法。这不是首选项,但可能是选项:)