API локалей
Всё это находится в bs_core/shared/sh_locale.lua. Как подготовить resource к переводу, описано в Языках. Эта страница - справочник.
Языки: en, pt, de, pl, tr, es, fr, it, ru. Отсутствующие ключи откатываются на en, затем на сам ключ.
Подключение
Заголовок раздела «Подключение»shared_scripts { '@bs_core/shared/sh_locale.lua' }files { 'locales/*.lua' }Каждый locales/<lang>.lua возвращает плоскую таблицу:
return { ['shop.title'] = 'Trader', ['shop.bought'] = 'You bought {item} for ${price}',}Плейсхолдеры записываются как {name}. Неизвестный плейсхолдер остаётся как есть, чтобы опечатки были видны, а не исчезали.
Lua-функции
Заголовок раздела «Lua-функции»| Функция | Сторона | Что делает |
|---|---|---|
L(key, vars) | client | Текст на языке локального игрока |
L(key, vars) | server | Текст на языке сервера по умолчанию |
L(src, key, vars) | server | Текст на языке этого игрока |
Lp(src, key, vars) | server | То же, что выше, всегда принимает source |
BSLocale.T(lang, key, vars) | обе | Текст на указанном тобой языке |
BSLocale.Lang() | обе | Язык локального игрока (client) или язык по умолчанию (server) |
BSLocale.LangOf(src) | обе | Язык игрока, откат на язык по умолчанию |
BSLocale.Default() | обе | Язык сервера по умолчанию (GlobalState.bs_defaultLang, иначе en) |
BSLocale.IsValid(lang) | обе | Один ли это из девяти кодов |
BSLocale.Dict(lang) | обе | Вся таблица с en внизу, для NUI |
BSLocale.OnChange(fn) | client | fn(lang) вызывается при смене языка |
BSLocale.Set(lang) | client | Просит bs_core сменить язык игрока |
BSLocale.Languages, BSLocale.Native | обе | Список кодов и родные названия |
Серверный export: exports.bs_core:GetLanguage(src).
На сервере всегда передавай source игрока, когда текст уходит одному игроку. L('key') без source использует язык сервера по умолчанию, а для уведомления это неверно.
TriggerClientEvent('bs:ui:notify', src, { type = 'success', message = L(src, 'shop.bought', { item = label, price = 50 }) })Состояние
Заголовок раздела «Состояние»- Выбор игрока: state bag
bs_langна игроке. - По умолчанию для сервера:
GlobalState.bs_defaultLang(F1Global.defaultLanguageили convarbs_defaultLanguage). - Сохраняется для каждого аккаунта в
bs_users.language. - Его изменение вызывает серверное событие
bs_core:setLanguage.
Если у resource есть ui_page, скрипт локалей отвечает на NUI-callback bs_i18n объектом { lang, dict } и отправляет новую таблицу при смене языка. Подключи helper и разметь свой HTML:
<script src="nui://bs_ui/html/js/i18n.js"></script><span data-i18n="ui.level">LEVEL</span>В JS: t('key', vars) и BSI18n.onChange(fn). Подробности в Языках.
bs19.org · Privacy · Terms · Cookie settings
Cookies and outside content
The site only needs two essential cookies to keep you logged in and protect forms. Videos and streams from YouTube and Twitch load from their servers, which can set their own cookies, so they stay off until you say yes. Nothing is pre-ticked and you can change your mind any time with "Cookie settings" at the bottom of every page. Details.
Questions about the server, the framework or the site? A real person reads this, usually within a day.