[Android/Kotlin] μ–Έμ–΄μ„€μ • (Eng / Kor) λ³€κ²½ν•˜κΈ°

2021. 1. 1. 03:21γ†πŸ“±Android/πŸ“ Android Study

λ°˜μ‘ν˜•

2020 슀마트 κ΄€κ΄‘ μ•± 개발 곡λͺ¨μ „에 K-Pop λͺ…μ†Œ μΆ”μ²œ ν”Œλž«νΌμΈ 'Kravel'을 κ°œλ°œν•˜μ˜€λŠ”λ°μš”.

외ꡭ인을 νƒ€κ²ŸμœΌλ‘œ ν•œ 앱이닀 λ³΄λ‹ˆ μ˜μ–΄/쀑ꡭ어,λ“± μ„€μ •μ–Έμ–΄λ₯Ό λ³€κ²½ν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” κΈ°λŠ₯ 이 ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€!

λ‹€μ–‘ν•œ μ–Έμ–΄νŒ©μ„ μ œκ³΅ν•˜μ§€λŠ” λͺ»ν•˜μ˜€μ§€λ§Œ κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” 언어인 μ˜μ–΄μ™€ ν•œκ΅­μ–΄μ€‘ μ–Έμ–΄λ₯Ό λ§ˆμŒλŒ€λ‘œ λ³€κ²½ν•˜κ³  μ„€μ •ν•  수 μžˆλ„λ‘ ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

λ‹€μ–‘ν•œ μ–Έμ–΄νŒ©μ„ μ œκ³΅ν•˜λŠ” 점과 전세계에 열풍쀑인 K-Pop λͺ…μ†Œλ“€μ„ μΆ”μ²œν•΄μ€€λ‹€λŠ” μ μ—μ„œ 운이 μ’‹κ²Œ μ™Έκ΅­μ–΄ μ•± νŠΉλ³„μƒμ„ 받을 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€ : )

 

μ˜€λŠ˜μ€ μ œκ°€ κ΅¬ν˜„ν–ˆμ—ˆλ˜ μ–Έμ–΄λ₯Ό μ„€μ •/λ³€κ²½ ν•  수 μžˆλŠ” 방법에 λŒ€ν•΄ μ†Œκ°œν•΄λ“œλ¦¬κ³ μž ν•©λ‹ˆλ‹€ : )

 

String 값듀이 λͺ¨λ‘ μ„€μ •λœ 언어에 따라 λ³€κ²½λ˜μ•Όν•˜κΈ° 떄문에 κ½€ 번거둜운 μž‘μ—…μ΄ λ˜μ‹€ μˆ˜λ„ μžˆμ§€λ§Œ, λ‹€μ–‘ν•œ μ–Έμ–΄νŒ©μ„ μ œκ³΅ν•˜λŠ” 앱을 κ°œλ°œν•˜μ‹ λ‹€λŠ” μ μ—μ„œ μœ μš©ν•˜κ²Œ 쓰일 수 μžˆλŠ” κΈ°λŠ₯인거 κ°™μŠ΅λ‹ˆλ‹€.

 

πŸ“Œ string.xml μΆ”κ°€ν•˜κΈ°

μ„€μ • 언어에 λ”°λ₯Έ string 값이 λ³€κ²½λ˜μ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— μ›ν•˜λŠ” Language에 따라 strings.xml을 각각 λ§Œλ“€μ–΄ μ€˜μ•Ό ν•©λ‹ˆλ‹€.

 

values 였λ₯Έμͺ½ 클릭 -> New -> Values Resource File 

μ›ν•˜λŠ” 언어와 지역을 선택해주며, Filename은 strings둜 ν•΄μ£Όμ„Έμš” : )

(μ €λŠ” en - US , ko - KR λ‘κ°œλ₯Ό λ™μΌν•œ λ°©λ²•μœΌλ‘œ λ§Œλ“€μ–΄ μ£Όμ—ˆμŠ΅λ‹ˆλ‹€!)

μ˜¬λ°”λ₯΄κ²Œ string.xml을 μΆ”κ°€ν•˜μ˜€λ‹€λ©΄ μ•„λž˜μ™€ 같이 string.xml이 3개 μƒκΈ°κ²Œ λ©λ‹ˆλ‹€ : )

 

string.xml에 String κ°’ λ§Œλ“€κΈ°

κΈ°λ³Έμ„€μ • string / Kor μΌλ•Œ string / English μΌλ•Œ string 총 3개의 string 값이 ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— ν•˜λ‚˜ν•˜λ‚˜ <string name = ""> </string> 을 λ§Œλ“€μ–΄μ£Όμ‹œλŠ” κ²ƒλ³΄λ‹€λŠ” 상단에 μƒκΈ°λŠ” Open editor을 μ΄μš©ν•˜μ‹œλŠ”κ²Œ μ’‹μŠ΅λ‹ˆλ‹€ : )

Open editorλ₯Ό ν΄λ¦­μ‹œ Defalut Value / English / Korean Valueλ₯Ό ν•œλ²ˆμ— 적을 수 μžˆλ„λ‘ λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€!

 

πŸ“Œ μ–Έμ–΄ μ„€μ • λ³€κ²½ν•˜κΈ°

μ–Έμ–΄ λ³€κ²½μ‹œμ— Locale을 λ³€κ²½ν•΄μ£ΌλŠ” ν˜•μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜μ˜€μ–΄μš” (string.xml을 λ§Œλ“€μ—ˆμ„ λ•Œ μ§€μ •ν•΄μ€¬λ˜ Locale둜!)

configuration의 locale을 μ›ν•˜λŠ” Locale.λ‚˜λΌ 둜 μ„€μ •ν•΄μ£Όμ‹œλ©΄λ©λ‹ˆλ‹€.

resources의 Configuration을 μœ„μ—μ„œ μ„€μ •ν•΄ μ€€ configuration으둜 update ν•΄μ£Όμ‹œλ©΄ λμž…λ‹ˆλ‹€ !! 맀우 κ°„νŽΈν•˜μ£  !?

private lateinit var configuration: Configuration

configuration.locale = Locale.KOREA
configuration.locale = Locale.US


resources.updateConfiguration(configuration,resources.displayMetrics)

 

μ €λŠ” μ–Έμ–΄λ₯Ό Update ν›„, μ„œλ²„μ—μ„œ 언어에 맞게 λ‹€μ‹œ 톡신을 ν•΄μ•Όν–ˆκΈ° λ•Œλ¬Έμ— intentλ₯Ό μ΄μš©ν•˜μ—¬ λ‹€μ‹œ 앱을 μ‹œμž‘ν•˜λŠ” λ°©λ²•μœΌλ‘œ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

Intent.FLAG_ACTIVITY_CLEAR_TASK 와 Intent.FLAG_ACTIVITY_NEW_TASK λ₯Ό μ΄μš©ν•˜μ—¬ Stack에 μŒ“μΈ Activityλ₯Ό λͺ¨λ‘ μ§€μ›Œμ£Όμ—ˆμ–΄μš”!

 

 

val intent = baseContext.packageManager.getLaunchIntentForPackage(baseContext.packageName)
intent!!.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
intent!!.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
finish()
startActivity(intent)

 

 

λ°˜μ‘ν˜•