with one click
localization
// Use when adding, editing, or reviewing user-facing strings in the Alkaa project — UI labels, button text, content descriptions, empty states, error messages, plurals, or any text visible to the user.
// Use when adding, editing, or reviewing user-facing strings in the Alkaa project — UI labels, button text, content descriptions, empty states, error messages, plurals, or any text visible to the user.
Use when writing or modifying end-to-end tests in the Alkaa project — triggers on tasks like "add an E2E test", "write a flow test", "test this feature end-to-end", "add a test to shared module", or "cover this user journey with a test".
Use when writing or modifying UI/Compose instrumented tests in the Alkaa project — triggers on tasks like "add a UI test", "test this composable", "add instrumented test", "test this screen behavior".
Use when the user asks to commit changes, stage and commit, or says "commit my changes" — stages all uncommitted changes and creates a structured commit message with emoji, title, and summary
Use when adding a new screen or modifying navigation in the Alkaa project — triggers on tasks like "add a new screen", "navigate to X", "add destination", "wire up navigation", or "create a navigation event". Also triggers when connecting UI actions to routes in NavGraph.
Use when creating a new Composable or modifying an existing one in the Alkaa project — screen structure, state handling, adaptive layouts, Kuvio usage, or previews.
Use when implementing a new Kuvio component for the Alkaa Design System after design spec and structure decisions are finalized
| name | localization |
| description | Use when adding, editing, or reviewing user-facing strings in the Alkaa project — UI labels, button text, content descriptions, empty states, error messages, plurals, or any text visible to the user. |
All user-facing strings live in the resources module and must be translated for every supported language. Non-user-facing strings (previews, logs) may be hardcoded.
<feature-name>_<component-name>_<description>
| Example | Feature | Component | Description |
|---|---|---|---|
task_list_header_empty | task | list | header_empty |
category_cd_add_category | category | — | cd_add_category |
task_alarm_permission_dialog_title | task | alarm_permission_dialog | title |
Use _cd_ in the component/description segment for content descriptions.
resources/src/commonMain/composeResources/values/strings.xmlresources/src/commonMain/composeResources/values/plurals.xmlPlace new strings:
<!-- Feature --> comment block if no block exists yet<!-- MyFeature -->
<string name="myfeature_screen_title">My Title</string>
<string name="myfeature_button_save">Save</string>
<string name="myfeature_cd_close">Close</string>
Provide a translation in all four language files:
| Directory | Language |
|---|---|
values/ | English (default) |
values-es/ | Spanish |
values-fr/ | French |
values-pt-rBR/ | Portuguese (Brazil) |
Each language directory contains strings.xml and plurals.xml. Add the new entry to the matching location in each file.
Same rules apply. Use plurals.xml instead of strings.xml:
<!-- Tracker -->
<plurals name="tracker_message_title">
<item quantity="one">%1$d completed task</item>
<item quantity="other">%1$d completed tasks</item>
</plurals>
Hardcode strings that are not user-facing:
name = "TaskItem - Loading")| Mistake | Fix |
|---|---|
| Reusing a string across two features | Create a separate entry per feature, even if text is identical |
Adding only to values/ | Add to all four language directories |
| Hardcoding a content description | Content descriptions are user-facing — add to resources |
| Skipping plurals translation | Apply the same four-language rule to plurals.xml |