strings.xml
파일을 사용할 때, 앱의 다국어 지원을 위해 각 지원하는 언어별로 별도의 strings.xml
파일을 관리할 수 있다. 여러개의 UI를 만들지 않아도 string.xml 파일만 바꾸면 사용이 가능하다. 이렇게 되면 여러 나라의 사용자에게 접근성이 좋은 서비스를 제공할 수 있다.String 리소스 재사용 : 앱 전반에 걸쳐 반복적으로 사용되는 문자열이 있다면, strings.xml에 정의하여 재사용함으로써 코드의 중복을 줄일 수 있다. 이는 코드의 유지보수성을 향상시키는 데 도움이 된다.
Compose에서의 string 리소스 접근 : @Composable
함수 내에서 string 리소스에 접근할 때는 stringResource(id= R.string.resource_name)
를 사용하여 간단하게 문자열을 불러올 수 있다. 이 방법은 Compose UI 구성요소 내에서 깔끔하게 리소스를 관리할 수 있게 해준다.
%s
%d
<!-- Strings.xml -->
<string name="deleted_message">%s이(가) 삭제되었습니다.</string>
//Kotlin
String.format(resources.getString(R.string.deleted_message),title)
<!-- Strings.xml -->
<string name="deleted_message">%ID 1$d,제목 %2$s이(가) 삭제되었습니다.</string>
//Kotlin
String.format(resources.getString(R.string.deleted_message),id,title)
stringResource(id=…)
이 함수는 @Composable
함수 내에서 사용되도록 설계되었기 때문에, Toast 같은 안드로이드 표준 UI 구성 요소 내에서 직접 stringResource를 사용하는 것은 불가능 하기 때문에, Context.getString()
을 활용해야 한다.MutableState<String>
이기 때문에, 모든 정보가 다 뜨게 된다. 그래서 string 값만 가져오려면 .value
를 사용해야한다.Toast.makeText(
context,
context.getString(R.string.deleted_message, title.value),
Toast.LENGTH_LONG
).show()