1

Тема: SPA та локалізація

Вітаю.

Кулупаюсь ниньки з власним проєктом, і хочу зробить, аби все було якомога краще.
Сам проєкт є typescript*(node + react).

Мене цікавлять відповіді на загальні питання щодо локалізації застосунків, де є сервер та клієнт.
***********************

1. Хто повинен контролювати переклад різних компонентів застосунку, і де той переклад повинен зберігатись?

Наприклад, користувач намагається автентихвікуватися, і відправляє логін та пароль. Сервер перевіряє дані в базі даних, і виявляється, шо або логін, або пароль не є правильними. Тепер сервер може відправити клієнтові інформацію про цю помилку.
Чи повинен сервер відправляти якийсь умовний код помилки, а клієнт вже отримає цей код, знайде в себе відповідний рядок з текстом помилки і покаже його користувачу, чи сервер сам повинен відправити текст помилки, при чому вже перекладений, а клієнт вже просто покаже те, що отримає від сервера?

2. Чи правильно буде, якшо весь переклад буде лише на клієнті, і тоді сервер взагалі не повинен займатись перекладом?
  2.1 Тоді це означатиме, що сервер не повинен відправляти геть ніяких текстових помилок на сервер, а лише коди помилок? Бо який сенс відправляти якийсь текст, якщо він
       a) може бути неправильною мовою
       б) все одно перезапишеться клієнтом, і не буде показаний користувачу

3. Чи можемо ми розділити весь застосунок на якісь контексти, в котрих може використовуватись переклад?
  3.1 Статичний текст на клієнті (напр. "Вітаємо, для продовження вам необхідно зареєструватись, введіть свої дані і т.д...")
  3.2 Помилка на сервері (напр. "Користувача з таким іменем та паролем не існує")
  3.3 Але якщо при реєстрації виявляється, що користувач з таким іменем вже існує, і в такому разі ми хочемо підсвітити поле "Ім'я" червоним, і написати над ним "Користувач з таким іменем вже існує, спробуйте інше", то це повідомлення має перекладатись сервером, чи клієнтом?

2

Re: SPA та локалізація

Думаю оптимально, щоб і сервер і фронт могли визначати локаль і перекладати текст.
Щодо прикладу з помилкою форми - перекладає сервер, а от тексти в html які ніколи на сервері і не були - лише на фронті)

Зберігати можна на платних якихось crowdin. Або є кейс зберігати на бекенді з gettext два набори файлів - один для бекендних рядків, інший - для fe (отриматувати по http)

Подякували: FakiNyan1

3

Re: SPA та локалізація

Щодо прикладу з помилкою форми - перекладає сервер

А от уявіть, шо у нас є декілька обмежувачів для поле. Мінімальна довжина, Максимальна довжина, Обов'язкове поле і Таке ім'я вже використовується
перші три ми можемо зберігати на клієнті, бо ми можемо зробити ті перевірки без відправлення даних на сервер, а для перевірки останнього обмеження нам треба відправити дані на сервер.
То це нам розділяти тексти помилок, аби перші три були на клієнті, а останній текст приходив від серверу?
Тоді, мабуть, варто якось форматувати такі помилки, як от

"назва поля": "текст помилки"
Подякували: Q-bart1

4

Re: SPA та локалізація

На фронтенді робите функцію, через яку робиться вивід всього тексту. Бекенд вертає текст англійською. І при запуску аплікації робиться запит до бекенду, яка повертає всі можливі фрази, що  є на бекенді і їх переклад доступними мовами. Якщо на фронтенді вибрана якась мова відмінна від англійської, то функція виводу дивиться, чи є переклад поточної фрази, поточною мовоюі якщо знаходить, то виводить перекоадену фразу заміть англійської.

5

Re: SPA та локалізація

Vo_Vik написав:

На фронтенді робите функцію, через яку робиться вивід всього тексту. Бекенд вертає текст англійською. І при запуску аплікації робиться запит до бекенду, яка повертає всі можливі фрази, що  є на бекенді і їх переклад доступними мовами. Якщо на фронтенді вибрана якась мова відмінна від англійської, то функція виводу дивиться, чи є переклад поточної фрази, поточною мовоюі якщо знаходить, то виводить перекоадену фразу заміть англійської.

Але нашо це робить, якшо сервер може повернути текст вже потрібною мовою.

6

Re: SPA та локалізація

Vo_Vik написав:

На фронтенді робите функцію, через яку робиться вивід всього тексту. Бекенд вертає текст англійською. І при запуску аплікації робиться запит до бекенду, яка повертає всі можливі фрази, що  є на бекенді і їх переклад доступними мовами. Якщо на фронтенді вибрана якась мова відмінна від англійської, то функція виводу дивиться, чи є переклад поточної фрази, поточною мовоюі якщо знаходить, то виводить перекоадену фразу заміть англійської.

looks good, але до того часу, як на бекенді буде тищі рядків. Потім половину бандла на фронті будуть займати самі транслейшини)

тому я за переклад на двох сторонах)

7

Re: SPA та локалізація

От у вас є сторінка з кількома віджетами, які щось тяжке роблять з базою. От хтось вирішив поцокати різні мови туди-сюди. Будете кожен раз з бекенду все те тягнути, щоб перекласти одне слово?

8

Re: SPA та локалізація

ні) кнопочки перекладені на бекенді і завантажуютсья на фронт при ініціалізації spa. а якщо є якийсь запит на бекенд, бекенд має повернути правильно пееркладену стр

Подякували: FakiNyan1

9

Re: SPA та локалізація

Ага, а потім якийсь запит прилетів за 2 хвилини після того як питались і за цей час вже 3 рази мову змінили. І у вас на сторінці вінігрет з 3-4х мов.

10

Re: SPA та локалізація

Vo_Vik написав:

Ага, а потім якийсь запит прилетів за 2 хвилини після того як питались і за цей час вже 3 рази мову змінили. І у вас на сторінці вінігрет з 3-4х мов.

про шо ви взагалі говорите?

11 Востаннє редагувалося Q-bart (25.05.2022 11:31:40)

Re: SPA та локалізація

Vo_Vik написав:

Ага, а потім якийсь запит прилетів за 2 хвилини після того як питались і за цей час вже 3 рази мову змінили. І у вас на сторінці вінігрет з 3-4х мов.

це вже питання імплементації перемикання мов.

Але якщо мову сетати в куки, і куки включати в http запит - запит має визначати мову без проблем

Ну і перемикання мови можна зробити з перезавантаженням аппки, але тооді вже ssr ще має бути

12

Re: SPA та локалізація

Q-bart написав:
Vo_Vik написав:

Ага, а потім якийсь запит прилетів за 2 хвилини після того як питались і за цей час вже 3 рази мову змінили. І у вас на сторінці вінігрет з 3-4х мов.

це вже питання імплементації перемикання мов.

Але якщо мову сетати в куки, і куки включати в http запит - запит має визначати мову без проблем

Ну і перемикання мови можна зробити з перезавантаженням аппки, але тооді вже ssr ще має бути

Гм, а не легше при перемиканні підтягнути новий мовний пакет і все? Чи ви думаєте, що мало людей буде, яким однієї мови мало?