3dc85ebdcd
Stack de display extraído del monorepo: compositor teselante (Cuerpo smithay + Cerebro WM agnóstico), greeter PAM, portal XDG, CLI de control. Llimphi se consume por git desde su repo publicado; las hojas compartidas (format, auth-core, rimay-localize, wawa-config, app-bus) y el widget menubar van vendorizados. Sin el asistente IA (pluma-llm) ni la barra web wasm — el compositor no los necesita. cargo check --workspace pasa (18 crates, 0 warn). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
35 lines
1.2 KiB
Markdown
35 lines
1.2 KiB
Markdown
# rimay-localize — localización (i18n) declarativa
|
|
|
|
Catálogos de cadenas por idioma + una API de lookup minimalista para las apps de
|
|
gioser. Los catálogos son **datos** (JSON) cargables en tiempo de ejecución; el
|
|
código pide una clave y un idioma y obtiene la cadena, con interpolación de
|
|
placeholders `{nombre}`.
|
|
|
|
## Qué expone
|
|
|
|
- `Lang` — etiqueta de idioma (BCP-47 simplificado).
|
|
- `Catalog` — mapa clave → cadena para un idioma.
|
|
- `Localizer` — colección de catálogos + idioma activo + fallback.
|
|
- Lookup con sustitución de placeholders por argumentos con nombre.
|
|
|
|
## Nota de naming
|
|
|
|
`rimay` es el dominio de lenguaje/voz; este crate es su utilidad de localización
|
|
transversal (no es parte del núcleo de `rimay`).
|
|
|
|
## Estado (2026-05-31)
|
|
|
|
### Hecho
|
|
- Carga de catálogos JSON por idioma.
|
|
- Lookup con idioma activo + fallback y tests.
|
|
- Interpolación de placeholders `{nombre}`.
|
|
|
|
### Pendiente
|
|
- Pluralización compleja (ICU) y reglas por idioma.
|
|
- Detección del idioma del sistema (hoy lo decide la app).
|
|
- Herramienta de extracción/validación de claves faltantes.
|
|
|
|
## Lugar en el repo
|
|
|
|
`shared/rimay-localize` — utilidad i18n transversal para apps gioser.
|