Start the translations: one file per language, English as the source, and how to translate
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# Translating ESP Screens
|
||||
|
||||
Every text of ESP Screens lives in one file per language: `screen_manager/translations/<code>.json`. The screens, the
|
||||
app and the editor all read the same file. English (`en.json`) is the source: every other file has the same keys, and a
|
||||
key a language doesn't have yet shows in English.
|
||||
|
||||
The code is the one Home Assistant uses for the language: `nl`, `de`, `fr`, `pt-BR`, `zh-Hans`. A screen takes Home
|
||||
Assistant's language unless someone picks another one under Settings in ESP Screens; the editor follows the language of
|
||||
your own Home Assistant profile.
|
||||
|
||||
## The sections
|
||||
|
||||
| Section | Where it shows | Keep in mind |
|
||||
| --- | --- | --- |
|
||||
| `screen` | On the screen itself: built into its firmware when it is installed or updated | Small screens: keep it as short as the English. One language per screen, so this costs almost no room. |
|
||||
| `addon` | Messages of the ESP Screens app, and the texts it sends to the screens | Error messages are whole sentences. |
|
||||
| `editor` | The ESP Screens editor in Home Assistant | |
|
||||
| `_meta` | The language itself | `name` in the language itself, `english` in English, `plural` (below), `checked` |
|
||||
|
||||
`screen.ha` holds Home Assistant's own words (on, off, open, heating, ...). They come from Home Assistant's translations
|
||||
through `tools/i18n.py`; don't change them by hand, change them in Home Assistant's translations instead.
|
||||
`screen.date` holds day and month names and date orders from the Unicode CLDR, the same data browsers use.
|
||||
|
||||
## The format
|
||||
|
||||
- **Placeholders** such as `{n}` or `{name}` stay exactly as they are; move them where the sentence needs them.
|
||||
- **Plurals** are the forms of a sentence separated by ` | `, in the order of the file's `_meta.plural` rule:
|
||||
|
||||
| Rule | Languages | Forms |
|
||||
| --- | --- | --- |
|
||||
| `one_other` | English, Dutch, German, Italian, Spanish, the Nordic languages | `1 hour ago \| {n} hours ago` |
|
||||
| `one_upto_1` | French, Portuguese | the first form for 0 and 1 |
|
||||
| `slavic_pl` | Polish | one \| few (2-4, 22-24, ...) \| many |
|
||||
| `east_slavic` | Russian, Ukrainian | one \| few \| many |
|
||||
| `none` | Chinese, Japanese, Korean | one form |
|
||||
|
||||
- Don't use `{`, `}`, `|` or `@` as ordinary characters.
|
||||
- `_meta.checked` is `true` once someone who speaks the language has checked the whole file. The settings in ESP Screens
|
||||
show a language that isn't checked yet with a request for help.
|
||||
|
||||
## Letters the screens can draw
|
||||
|
||||
The screens carry every letter European languages write with the Latin alphabet. A language in another script
|
||||
(Cyrillic, Greek, Chinese) gets its letters added only on the screens that use it, and only where they fit: a CYD has
|
||||
too little room for Chinese and shows English then. `tools/i18n.py check` says when a text uses a letter the screens
|
||||
can't draw.
|
||||
|
||||
## Checking your work
|
||||
|
||||
```bash
|
||||
python3 tools/i18n.py check
|
||||
```
|
||||
|
||||
It lists missing keys, placeholders that differ from English, the wrong number of plural forms, letters the screens
|
||||
can't draw, and screen texts that are much longer than the English.
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"_meta": {
|
||||
"name": "English",
|
||||
"english": "English",
|
||||
"script": "latin",
|
||||
"plural": "one_other",
|
||||
"checked": true
|
||||
},
|
||||
"screen": {},
|
||||
"addon": {},
|
||||
"editor": {}
|
||||
}
|
||||
Reference in New Issue
Block a user