webclient: the small UI components in en, uk and ru
The sixth and last area of the interface translation. The components in
components/ui/ now build their text through t(): the login screen, the welcome
screen, the confirmation dialog, the offline banner, the image lightbox, the
selection toolbar, the card grid and the form, plus the sidebar's close button,
which is one of the strings that moved.

24 new slugs in all three dictionaries, and one moved:

- 24 in ui.* — the login and welcome screens (the heading, the tagline they
  both show, the GNEXUS button), the confirmation dialog, the offline banner,
  the lightbox (its heading, its close button, the failed-to-load message), the
  selection toolbar's Reply and its tooltip, the card grid's three section
  headings and its "+{n} more", and the form's submit button, its submitted
  note and its ten validation messages;
- common.close, moved out of sidebar.*: the sidebar's close button and the
  lightbox's say the same word, so it sits in the vocabulary area now.

Four details worth knowing:

- OfflineBanner's sentence was hard-coded Russian inside an otherwise English
  file — for a reader in English or Ukrainian it was the one Russian sentence
  in the app. It is a slug now, and the Russian value is that same sentence
  verbatim, so nothing changes for the reader who could already read it.
- The form's validation messages interpolate: "{field} is required" carries the
  field's own label, and the numeric limits carry {n}. The two length messages
  are dictionary plurals now, so English says "Minimum length is 1 character"
  where it used to say "1 characters", and Russian and Ukrainian get the three
  forms a numeral needs — "1 символ", "2 символа", "5 символов".
- The card grid's "+4 more" is one slug with a count, not a sentence glued
  together in the template.
- ui.tagline is written once and read by both the login and the welcome screen,
  which show the same words.

The English values are verbatim the literals the code hard-coded, so the
English interface is unchanged and no test needed editing.

Checked live in Chromium against the built bundle on the dev backend, all three
languages: the login screen (reached with no account at all, its language
coming from navi.locale), the offline banner with the context put offline under
it, the selection toolbar over a real selection in a message, and the
confirmation dialog opened from a session row's Delete. Two further passes open
a session whose tool output carries a card grid and one that carries images, for
the card grid's section headings and the lightbox's heading and close button.

The form is the one component no saved session renders — nothing in the dev
database carries a form payload — so its messages were printed through t()
instead, including the plural ones: "Поле «Email» обязательно", "Минимальная
длина — 2 символа", "Мінімальна довжина — 5 символів", "Minimum length is 1
character".
1 parent f729491 commit e995de410fb69e26d21088c1358536145b0ca0b0
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 23 hours ago
Showing 19 changed files
View
docs/i18n.md
View
webclient/dist/assets/index--pnFAqTO.css 0 → 100644
View
webclient/dist/assets/index-CGO7_0kO.js 100644 → 0
Not supported
View
webclient/dist/assets/index-DcDmCgWc.css 100644 → 0
View
webclient/dist/assets/index-_ULQ__AM.js 0 → 100644
Not supported
View
webclient/dist/index.html
View
webclient/dist/sw.js
View
webclient/src/components/sidebar/AppSidebar.vue
View
webclient/src/components/ui/CardGrid.vue
View
webclient/src/components/ui/ConfirmDialog.vue
View
webclient/src/components/ui/Form.vue
View
webclient/src/components/ui/ImageLightbox.vue
View
webclient/src/components/ui/LoginScreen.vue
View
webclient/src/components/ui/OfflineBanner.vue
View
webclient/src/components/ui/SelectionToolbar.vue
View
webclient/src/components/ui/WelcomeScreen.vue
View
webclient/src/i18n/messages/en.js
View
webclient/src/i18n/messages/ru.js
View
webclient/src/i18n/messages/uk.js