feat v1.11.0: full English translation + en/ru UI localization

- All card UI strings moved to src/i18n.ts (en/ru); language follows the HA
  profile automatically, new 'language: en|ru' card option forces it; GUI
  editor localized and got the language dropdown; generated device names
  localized via BuildCtx.loc.
- English-only codebase: comments, docstrings, test names, backend error
  messages and logs. Russian remains only in the ru dictionary, ru.json,
  iconFor regexes matching Russian device names (+their fixtures) and README.ru.md.
- Docs English-first: README (EN) + README.ru.md, ARCHITECTURE/DEVELOPMENT/
  ROADMAP/CHANGELOG fully translated; translations/en.json had Russian - fixed.
- Removed obsolete RELEASE_NOTES_v1.9.3.md and scripts_publish.sh.
This commit is contained in:
Matysh
2026-07-05 21:43:58 +03:00
parent f1b372f0e6
commit 94fb4af14c
29 changed files with 1692 additions and 1210 deletions
+4 -4
View File
@@ -1,8 +1,8 @@
/**
* Правила прототипа — перенесены 1-в-1 из index.html/build_data.py (см. DOCUMENTATION.md §4.24.5).
* Prototype rules — ported 1-to-1 from index.html/build_data.py (see DOCUMENTATION.md §4.24.5).
*/
/** Интеграции-домены, чьи устройства скрываются (курирование). */
/** Integration domains whose devices are hidden (curation). */
export const EXCLUDED_DOMAINS = new Set([
'hacs', 'sun', 'backup', 'hassio', 'met', 'telegram_bot', 'mobile_app',
'systemmonitor', 'better_thermostat', 'adaptive_lighting', 'yandex_pogoda',
@@ -38,7 +38,7 @@ const ICON_RULES: Array<[RegExp, string]> = [
[/slzb|координат|zigbee/, 'mdi:zigbee'],
];
/** Подбор MDI-иконки по имени/модели устройства. */
/** Pick an MDI icon by device name/model. */
export function iconFor(name?: string, model?: string): string {
const s = ((name || '') + ' ' + (model || '')).toLowerCase();
for (const [pat, icon] of ICON_RULES) {
@@ -47,7 +47,7 @@ export function iconFor(name?: string, model?: string): string {
return 'mdi:chip';
}
/** Приоритет доменов для выбора «первичной» сущности устройства (more-info). */
/** Domain priority for picking the device's “primary” entity (more-info). */
export const DOMAIN_PRIORITY = [
'light', 'switch', 'cover', 'valve', 'lock', 'climate', 'fan',
'media_player', 'camera', 'vacuum', 'humidifier', 'water_heater',