Android Jetpack Compose 多語系(i18n) 示範

在 Android Studio 中,游標只要在的字串上停留(或是按下 Alt + Enter),左側就會出現黃色的小電燈泡,點選 Extract string resource

就可以將字串提取到資源檔中

此時程式碼就會從原本的字串:
    
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
    Text(
        text = "Hello $name!",
        modifier = modifier
    )
}
    

變更為使用資源檔中的文字:
    
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
    Text(
        text = stringResource(R.string.hello, name),
        modifier = modifier
    )
}
    

這些文字會儲存在 res\values\strings.xml 中:
    
<resources>
    <string name="hello">Hello %1$s!</string>
</resources>
    

開啟 res\values\strings.xml 檔案後會發現上面有一個 Edit translations for all locales in the translations editor 的提示,點選 Open editor 就可以開啟翻譯編輯器

點選左上角的地球圖示,找到想要翻譯的語言,筆者這裡以繁體中文做示範,選擇 Chinese (zh) in Taiwan (TW)

就會多出剛剛選擇語言的欄位,填入要翻譯的內容

翻譯的內容會依照不同的語言儲存在不同的資料夾,以繁體中文為例,會儲存在 res\values-zh-rTW\strings.xml 中:
    
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">你好 %1$s!</string>
</resources>
    

執行程式後,只要到設定把預設語言變更為繁體中文,就會替換為剛剛翻譯的文字,其他語言則會顯示預設 res\values\strings.xml 中的內容。



參考資料:
Android Developers - Localize your app

留言