Skip to content

文言 ​

assertPulseResourceConventions() は、アプリを翻訳できる状態に保ちます。描画するモジュール(feature、core/ui、core/designsystem)は、それぞれ自分の文言を Compose Multiplatform の composeResources に文字列リソースとして持ち、stringResource(Res.string.…) で読みます。翻訳は values の隣に置く values-<言語> ディレクトリです。Android だけのアプリなら、Android のリソースと stringResource(R.string.…) を使ってもかまいません。検査が見るのはリテラルで、文言をどこから持ってくるかではないからです。モジュールの検査と同じ PulseModuleLayout を使い、デスクトップでもモバイルでも同じように当てはまります。

ラベルが必要なエンティティには、描画するモジュールでラベルを付けます。検査を表に、デモがエリアの位置にラベルを付ける例をその下に示します。

検査ルール理由
domain は文言を持たないdomain の文字列リテラルに文字を含めないdomain に置いたラベルは、それを表示するすべての画面で 1 つの言語になる。domain はケースを型で表し、描画するモジュールが文字列リソースに対応付ける
Composable は文言をリソースから読むComposable は Text("…") や、text・title・label・placeholder・contentDescription の引数にリテラルを渡さないそこに書いたリテラルは 1 つの言語でしか読めない。"$count" のように値を埋め込むだけのリテラルと、@Preview の中は対象外
kotlin
// feature/count — domain の enum は自分のラベルを持たない
internal val PulseAreaPosition.label: StringResource
    get() =
        when (this) {
            PulseAreaPosition.TopLeft -> Res.string.position_top_left
            PulseAreaPosition.TopRight -> Res.string.position_top_right
            PulseAreaPosition.BottomLeft -> Res.string.position_bottom_left
            PulseAreaPosition.BottomRight -> Res.string.position_bottom_right
        }

次のステップ ​

  • ルール — テストを用意し、ルールを選ぶ

Apache 2.0 License の下で公開されています。