android-localization-accessibilitylisted
Install: claude install-skill lenorebreakneck630/claude-zero-to-hero-android-KMP
# Android Localization and Accessibility
## Core Principles
- User-facing text must be localizable by default.
- Accessibility is a product requirement, not a later polish step.
- UI must remain understandable with screen readers, keyboard/focus navigation, and larger text.
- Layouts should tolerate language expansion and RTL direction.
- Semantics should describe intent, not just visual structure.
---
## String Resources
Do not hardcode user-facing copy in composables or ViewModels when the text should be localized.
Use resources for:
- labels
- button text
- error messages
- content descriptions
- snackbar/toast messages
- empty/loading state copy
```kotlin
Text(text = stringResource(R.string.notes_empty_title))
```
Dynamic values that are never resource-backed can remain plain `String`. See the **android-presentation-mvi** skill for `UiText` guidance.
---
## Plurals and Formatting
Use plural resources and formatted strings instead of concatenation:
```kotlin
Text(
text = pluralStringResource(
R.plurals.note_count,
state.count,
state.count
)
)
```
Avoid:
- string concatenation for localized sentences
- assuming English grammar/order
- embedding untranslated units in dynamic strings
---
## RTL Support
Design for bidirectional layouts:
- avoid hardcoded left/right concepts when start/end is correct
- prefer `start`/`end` padding and alignment
- verify icons and directional affordances in RTL
- ensure custom layouts do not assume