Skip to content

--- 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에서 설정됩니다:

shared/config/core.lua
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))

적용 우선순위:

  1. bupa-chat:locale — BUPA Chat 전용 개별 리소스 오버라이드.
  2. ox:locale — 서버 전반에서 사용되는 공통 ox_lib 로케일.
  3. en — 둘 다 설정되지 않은 경우 기본값인 영어.
server.cfg
setr ox:locale "tr"          # 서버 전체 언어
setr bupa-chat:locale "en"   # 선택 사항: 채팅에만 강제로 영어 적용

Runtime switching — bupa:changeLanguage

서버를 재시작하지 않고도 세션별로 플레이어의 언어를 실시간으로 변경할 수 있습니다. 언어 코드가 포함된 클라이언트 이벤트(event)를 트리거하면, BUPA Chat이 ox_lib를 통해 해당 로케일을 다시 로드하고 React UI로 즉시 전달합니다:

client
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을 해당 코드로 지정하면 됩니다.

locales/en.json
{
  "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").