--- Localization
Localization
BUPA Chat은 완벽하게 번역할 수 있습니다. 번역 파일은 locales/ 경로 아래의 일반 JSON 파일 형태이며, ox_lib에 의해 로드되고(매니페스트에 ox_lib 'locale' 선언됨), t() 래퍼를 통해 읽혀집니다.
Shipped languages
locales/*.json — 기본 제공되는 10가지 언어:
| Code | Language | Code | Language |
|---|---|---|---|
en |
English | nl |
Dutch |
tr |
Turkish | pl |
Polish |
de |
German | pt |
Portuguese |
es |
Spanish | ru |
Russian |
fr |
French | it |
Italian |
모든 UI 문자열, 카테고리 레이블, 플레이스홀더, 감정 표현(emote) 설명 및 시스템 메시지는 이 파일들에서 불러와집니다.
Selecting the language
사용할 언어는 shared/config/core.lua에서 설정됩니다:
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))적용 우선순위:
bupa-chat:locale— BUPA Chat 전용 개별 리소스 오버라이드.ox:locale— 서버 전반에서 사용되는 공통 ox_lib 로케일.en— 둘 다 설정되지 않은 경우 기본값인 영어.
setr ox:locale "tr" # 서버 전체 언어
setr bupa-chat:locale "en" # 선택 사항: 채팅에만 강제로 영어 적용Runtime switching — bupa:changeLanguage
서버를 재시작하지 않고도 세션별로 플레이어의 언어를 실시간으로 변경할 수 있습니다. 언어 코드가 포함된 클라이언트 이벤트(event)를 트리거하면, BUPA Chat이 ox_lib를 통해 해당 로케일을 다시 로드하고 React UI로 즉시 전달합니다:
TriggerEvent("bupa:changeLanguage", "de")내부적으로 이 과정은 loadLang(newLang)(ox_lib의 활성 로케일을 전환함)을 호출한 다음 changeUiLang을 호출하므로, Lua 측과 UI가 동시에 업데이트됩니다.
Adding or editing a language
locales/는 escrow_ignore에 포함되어 있으므로 JSON을 직접 수정할 수 있습니다. 새 언어를 추가하려면 en.json을 복사하고 값을 번역한 뒤 <code>.json(예: sv.json)으로 저장하고, ox:locale 또는 bupa-chat:locale을 해당 코드로 지정하면 됩니다.
{
"CATEGORY_COMMANDS_LABEL": "Commands",
"CATEGORY_COMMANDS_PLACEHOLDER": "Type a command...",
"CATEGORY_ADMIN_LABEL": "Admin Chat",
"EMOTE_ME_COMMAND_DESC": "Describe an action you are doing"
}번역이 누락된 경우 t()(및 ox_lib의 locale())는 키 값 자체를 반환합니다. 기준점으로 사용할 수 있도록 en.json을 완성된 상태로 유지하고, 동적 값에는 %s / %d 플레이스홀더를 사용하세요(예: "Reason: %s").