1

@StringDefEnum을 대체하는 데 적합합니다.i18n이있는 앱에서 @StringDef를 사용하는 방법

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

하지만 내 앱이 영어, 프랑스어 및 중국어를 지원해야하는 경우 어떻게해야합니까?

따라서 세 가지 다른 국가에서 표준은 "표준", "표준"및 "표준"일 수 있습니다. 이 경우 표준 및 미니는 실제 가치를 얻기 위해 상황을 필요로 할 수 있습니다.

i18n이있는 앱에서 어떻게 여전히 @StringDef을 사용할 수 있습니까?

답변

1

즉시 사용 가능한 솔루션이 없습니다. (XXfren이고, res/values-XX/strings.xml)

권장되는 방법은 다른 디렉토리에 지역화 된 문자열 리소스를 저장하는 것입니다.

당신이 지역화 된 문자열을 얻기 위해 문자열 ID를 사용하기 위해 필요한이 방법에서 https://developer.android.com/guide/topics/resources/localization.html

. 다음을 시도 할 수 있습니다 : 문자열 대신

  1. 사용 IDS :

    @IntDef({R.string.standard, R.string.mini}) 
    
  2. 지역화 된 문자열 resorce에 @StringDef의 문자열과 일치하는 몇 가지 도우미를 사용합니다.

  3. enum을 사용하십시오.
+0

해결책 2에 대해서는 잘 이해하지 못합니다. 더 설명해 주시겠습니까? 첫 번째 솔루션은 훌륭합니다! – songzhw

+0

# 2 -'@ StringDef' 아이템을'R.string.xxx' 자원과'switch' 또는 유사한 것을 사용하여 일치시키기 위해'StringHelper' 유틸리티를 작성할 수 있습니다. 그것은 선호하지 않지만 가능한 옵션 : –

관련 문제