Bookmark profile

res/values 폴더에서 마우스 오른쪽 버튼을 누른 후, New -> Values Resource File 을 선택해줍니다.

창이 뜨면, Locale을 선택한 후 >> 버튼을 눌러줍니다.

국가를 선택하고, 파일 이름을 strings.xml을 입력 후 OK 버튼을 눌러줍니다.

저는 영어와 한국어를 적용해보았습니다.

아래와 같이 작성하면 모바일 언어에 맞게 알아서 번역문구를 보여줄 수 있습니다.

@Composable
fun WelcomeMessage() {
    val welcomeMessage = stringResource(id = R.string.welcome_message)
    Text(text = welcomeMessage)
}

하지만, 앱 내부 설정으로 언어를 변경하고 싶다면?!

SharedPreference를 사용하면 됩니다!

@Composable
fun WelcomeMessage() {
    val context = LocalContext.current
    val selectedLanguage = remember { SharedPreferencesUtil.getSelectedLanguage(context) }

    val welcomeMessage = when (selectedLanguage) {
        "ko" -> stringResource(id = R.string.welcome_message_ko)
        "en" -> stringResource(id = R.string.welcome_message_en)
        else -> stringResource(id = R.string.welcome_message_default)
    }

    Text(text = welcomeMessage)
}

여기서 사용하고있는 SharedPreferencesUtil 코드는 아래에 첨부해 두겠습니다.

object SharedPreferencesUtil {
    private const val PREFS_NAME = "MyAppPrefs"
    private const val KEY_SELECTED_LANGUAGE = "selectedLanguage"

    fun getSelectedLanguage(context: Context): String {
        val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
        return prefs.getString(KEY_SELECTED_LANGUAGE, Locale.getDefault().language) ?: Locale.getDefault().language
    }

    fun setSelectedLanguage(context: Context, language: String) {
        val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
        prefs.edit().putString(KEY_SELECTED_LANGUAGE, language).apply()
    }
}