Версия:

Перевод фронтэнда

При загрузке страницы, помимо прочей статики загружается словарь со сделанными ранее переводами, которые используются функциями переводов в javascript коде на фронтенде. Функция перевода, прежде всего ищет перевод в загруженном словаре и если его нет, отправляет запрос на сервер, а ответом пополняет локальный словарь. Запрос на сервер также соответственно пополняет серверный словарь и при следующей загрузки страницы, этот перевод уже будет в базовом словаре.

Функции для перевода

*Отличие между функциями без “P” в окончании и с ним: Функция с “P” ассинхронная и используется там, где предусмотренн вызов ассинхронных функций. Она, как и описано выше, берет из кэша или ожидает завершения перевода (ограниченное время) и только если перевод не был найден или сделан за отведенное время, вернет исходный текст. Там где нельзя вызвать ассинхронную функцию, вызывается обычная. Она возвращает перевод из кэша, а если нет, то запускает процесс перевода, но сама, тут же возвращает исходный текст. При следующем вызове того той же функции/метода, пользователь уже получит переведенное сообщение/верстку (если перевод успеет завершиться).

Все описанные методы имеют одинаковую сигнатуру

const toLang = (text: string, lang?: string, srcSys?:string): string =>

Хорошей практикой является внутри отдельного компонента, написать функцию обертку, которая будет вызывать основную функцию с нужным источником. См. в примерах.

Примеры

Использование в компоненте Таблиц

const toLn = (text)=>{
    return toLangGoCore(text, null, 'FRONT_CLASSIC_TABLE');
}

// ....

btnObj = {
		title: toLn('Create'),
		colorClass: 'green',
		iconClass: 'fa-plus',
		className: 'ct-btn-create-inline'
}

В формах проекта можно использовать просто не передавая необязательные параметры

const hint1 = toLang('Чтобы управлять проектом, используйте административный аккаунт')

или если есть возможность подождать (при необходимости)

async function prepareData(data) {
    
    const activeBtnTitle = await toLangP(data?.activeBtnTitle || 'Перейти в профиль')
    // ...
}