회사 제품의 수출 계획이 세워지고, 당연하게도 앱의 다국어 언어 지원이 결정되었다.
그냥 단순히 손이 좀 많이 가는 작업이라고 생각했는데, 생각지도 못한 부분에서 하나씩 문제가 생겼다.

현재 앱에는 이런 디자인의 텍스트가 존재한다.
compose로 구성되어 있어 당연히 buildAnnotatedString으로 처리해놨는데, 문제는 텍스트 구성을 [정확한 분석을 위해 해당 부위를 / 3회 / 측정합니다.] 이런식으로 나누어 놓았다는 것이다.
공식문서와 같이 append를 사용해서 색상마다 끊어 놓았는데, 이걸 String Resource로 처리하려고 하니 번역이 애매해졌다.
때문에 이 문장을 끊지 않고 통째로 사용하며 강조할 부분에만 스타일을 따로 줘야 했다.
<string name="message">정확한 분석을 위해 해당 부위를 3회 측정합니다.</string>
<string name="message_highlighted_word">3회</string>
전체 문장과 하이라이팅 할 부분의 단어를 분리해서 각각의 리소스로 만들고!

addStyle을 활용했다.
start와 end 인덱스를 지정해 startIndex~endIndex까지 스타일을 줄 수 있는 방법!
val highlightedWord = stringResource(R.string.message_highlighted_word)
val fullText = stringResource(R.string.message)
val highlightStart = fullText.indexOf(highlightedWord)
val highlightEnd = highlightStart + highlightedWord.length
전체 문장에서 하이라이팅 처리 할 단어의 시작 인덱스와 끝 인덱스를 찾아서
Text(
buildAnnotatedString {
withStyle(
style = SpanStyle(
fontSize = 26.sp
)
) {
append(fullText)
addStyle(
style = SpanStyle(
color = Color.Red
),
start = highlightStart,
end = highlightEnd
)
}
}
)
append로 전체 문장을 넣고, addStyle을 이용해서 해당 인덱스에만 빨간색을 주는 방식으로 처리했다!
다국어화는 현재진행중~_~
의외로 신경써야할게 많아서, 언어지원 되는 앱들 번역 좀 이상해도 속으로 뭐라고 하지 않기로 혼자서 반성중이다...