xref: /openbmc/webui-vue/src/env/locales/README.md (revision d2483622fc31f6b965a052d0c4f999ad963d0a0f)
1*d2483622Sjason westover# Vendor locale overlays
2*d2483622Sjason westover
3*d2483622Sjason westoverThis directory contains environment/vendor-specific translation bundles that are
4*d2483622Sjason westovermerged on top of the base, vendor-neutral locales in `src/locales/`.
5*d2483622Sjason westover
6*d2483622Sjason westover## Structure
7*d2483622Sjason westover
8*d2483622Sjason westover```text
9*d2483622Sjason westoversrc/env/locales/
10*d2483622Sjason westover  <vendor>/
11*d2483622Sjason westover    en-US.json
12*d2483622Sjason westover    ka-GE.json
13*d2483622Sjason westover    ru-RU.json
14*d2483622Sjason westover    zh-CN.json
15*d2483622Sjason westover  <vendor-variant>/
16*d2483622Sjason westover    en-US.json   # optional, only when variant overrides vendor root
17*d2483622Sjason westover    ka-GE.json   # optional
18*d2483622Sjason westover    ru-RU.json   # optional
19*d2483622Sjason westover    zh-CN.json   # optional
20*d2483622Sjason westover```
21*d2483622Sjason westover
22*d2483622Sjason westoverExamples:
23*d2483622Sjason westover
24*d2483622Sjason westover- Shared vendor folder: `src/env/locales/nvidia/`
25*d2483622Sjason westover- Variant folder: `src/env/locales/nvidia-gb/`
26*d2483622Sjason westover
27*d2483622Sjason westover## Merge order at runtime
28*d2483622Sjason westover
29*d2483622Sjason westover1. Base locales from `src/locales/` (auto-discovered)
30*d2483622Sjason westover2. Vendor root overlays (e.g., `src/env/locales/nvidia/`)
31*d2483622Sjason westover3. Variant overlays (e.g., `src/env/locales/nvidia-gb/`)
32*d2483622Sjason westover
33*d2483622Sjason westoverVariant keys overwrite vendor root keys on conflict.
34*d2483622Sjason westover
35*d2483622Sjason westover## Guidelines
36*d2483622Sjason westover
37*d2483622Sjason westover- Keep `src/locales/` vendor‑neutral. Put vendor‑specific strings here.
38*d2483622Sjason westover- Prefer the vendor root folder when multiple projects share strings to avoid
39*d2483622Sjason westover  duplication.
40*d2483622Sjason westover- Only add a variant folder if it truly needs to override vendor root strings.
41*d2483622Sjason westover- File names must match locale codes (e.g., `en-US.json`, `ru-RU.json`,
42*d2483622Sjason westover  `zh-CN.json`, `ka-GE.json`).
43*d2483622Sjason westover- Use 4‑space indentation; alphabetize object keys for readability.
44*d2483622Sjason westover- JSON must be valid (no trailing commas or comments).
45*d2483622Sjason westover
46*d2483622Sjason westover## Environment selection
47*d2483622Sjason westover
48*d2483622Sjason westoverThe active environment is selected by `VUE_APP_ENV_NAME` (e.g., `nvidia`,
49*d2483622Sjason westover`nvidia-gb`). See the `.env.*` files at the repo root (e.g., `.env.nvidia-gb`).
50*d2483622Sjason westover
51*d2483622Sjason westover## Bundling
52*d2483622Sjason westover
53*d2483622Sjason westover- All JSON files under `src/locales/` are bundled automatically.
54*d2483622Sjason westover- Matching overlays under `src/env/locales/<env>` are also bundled and merged at
55*d2483622Sjason westover  app start.
56*d2483622Sjason westover
57*d2483622Sjason westover## Testing
58*d2483622Sjason westover
59*d2483622Sjason westoverFocused unit tests exist for overlays and fallback:
60*d2483622Sjason westover
61*d2483622Sjason westover- `npm run test:unit -- i18n.vendor.spec.js`
62*d2483622Sjason westover- `npm run test:unit -- i18n.locale-alias.spec.js`
63*d2483622Sjason westover
64*d2483622Sjason westoverThese verify vendor root → variant merge behavior and locale alias handling.
65