IT

strings.xml의 매개 변수가 가능합니까?

lottoking 2020. 3. 28. 10:44
반응형

strings.xml의 매개 변수가 가능합니까? [복제]


이 질문에는 이미 답변이 있습니다.

내 안드로이드 앱에서 국제화로 문자열을 구현하려고합니다. 문법과 문장이 다른 언어로 작성되는 방식에 문제가 있습니다.

예를 들면 다음과 같습니다.

"5 분 전"-영어

"vor 5 Minuten"-독일어

strings.xml에서 다음과 같은 작업을 수행 할 수 있습니까?

<string name="timeFormat">{0} minutes ago</string>

그리고 같은 마술

getString(R.id.timeFormat, dynamicTimeValue)

이 동작은 단어 순서가 다른 다른 문제도 해결합니다.


예, 문자열을 표준 String.format()방식으로 포맷하십시오 .

메소드 Context.getString(int, Object...)Android 또는 Java Formatter 문서를 참조하십시오 .

귀하의 경우 문자열 정의는 다음과 같습니다.

<string name="timeFormat">%1$d minutes ago</string>

XML에 두 개의 변수가 필요한 경우 다음을 사용할 수 있습니다.

%1$d text... %2$d또는 %1$s text... %2$s문자열 변수의 경우.

예:

strings.xml

<string name="notyet">Website %1$s isn\'t yet available, I\'m working on it, please wait %2$s more days</string>

activity.java

String site = "mywebsite";
String days = "11";

//Toast example
String notyet = getString(R.string.notyet, site, days);
Toast.makeText(getApplicationContext(), notyet, Toast.LENGTH_LONG).show();

String.format (String, Object ...)을 사용하여 문자열을 형식화해야하는 경우 문자열 인수에 형식 인수를 넣어서 수행 할 수 있습니다. 예를 들어 다음 리소스를 사용하십시오.

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

이 예에서 형식 문자열에는 두 개의 인수가 있습니다. % 1 $ s는 문자열이고 % 2 $ d는 10 진수입니다. 다음과 같이 애플리케이션의 인수로 문자열을 형식화 할 수 있습니다.

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);

자세한 내용은 http://developer.android.com/intl/pt-br/guide/topics/resources/string-resource.html#FormattingAndStyling을 참조하십시오.


이 특정 응용 프로그램에는 표준 라이브러리 함수 인이 android.text.format.DateUtils.getRelativeTimeSpanString()있습니다.


그것을 사용하는 많은 방법이 있으며 문자열 형식에 대한이 문서를 볼 것을 권장합니다.

http://developer.android.com/intl/pt-br/reference/java/util/Formatter.html

그러나 변수가 하나만 필요한 경우 % [type] 을 사용해야 합니다. 여기서 [type] 은 임의의 플래그 일 수 있습니다 (위 사이트 내부의 플래그 유형 참조). (예 : "내 이름은 % s "이거나 내 이름을 대문자로 설정하려면이 "내 이름은 % S "입니다.)

<string name="welcome_messages">Hello, %1$S! You have %2$d new message(s) and your quote is %3$.2f%%.</string>

Hello, ANDROID! You have 1 new message(s) and your quote is 80,50%.

참고 URL : https://stackoverflow.com/questions/2397613/are-parameters-in-strings-xml-possible

반응형