Skip to content

번역 파일 구조 ​

22.2.1. 파일 구조 ​

번역 파일은 언어별, 네임스페이스별로 분리하여 관리해야 합니다.

src/locales/
├── ko/                  # 한국어
│   ├── common.json
│   ├── pages.json
│   ├── components.json
│   └── validation.json
├── en/                  # 영어
│   └── (동일 구조)
└── ja/                  # 일본어
    └── (동일 구조)
  • 번역 파일은 src/locales/{lang}/{namespace}.json 경로에 위치해야 합니다.
  • 각 언어 디렉토리는 동일한 네임스페이스 파일 구조를 유지해야 합니다.
  • 단일 파일에 모든 번역을 넣지 않고, 네임스페이스별로 분리하여 유지보수성을 확보해야 합니다.
  • JSON 포맷을 사용해야 합니다. YAML 등 다른 포맷은 허용되지 않습니다.

22.2.2. 키 네이밍 규칙 ​

번역 키는 일관된 네이밍 규칙을 따라야 합니다.

규칙설명예시
도트 표기법계층 구조를 도트로 구분pages.user.title
camelCase개별 단어 구분errorMessage, submitButton
의미 기반UI 위치가 아닌 의미 기준으로 작명validation.required
json
{
  "pages": {
    "user": {
      "title": "사용자 관리",
      "empty": "등록된 사용자가 없습니다."
    },
    "dashboard": {
      "title": "대시보드",
      "welcome": "환영합니다, {name}님."
    }
  }
}
  • 키 이름은 camelCase를 사용해야 합니다. snake_case 또는 kebab-case는 사용하지 않습니다.
  • 키 이름은 해당 텍스트의 의미를 반영해야 합니다. UI 위치(leftSidebarTitle)를 기준으로 작명하지 않습니다.
  • 동적 값은 중괄호({name})를 사용한 보간 문법으로 처리합니다.
  • 키 깊이는 최대 4단계까지 허용합니다. 그 이상 중첩이 필요한 경우 네임스페이스를 분리해야 합니다.

22.2.3. 네임스페이스 ​

다음 표준 네임스페이스를 사용하여 번역 키를 분류해야 합니다.

네임스페이스용도예시
common공통 UI 요소 (버튼, 라벨, 상태)common.save, common.cancel
pages페이지별 고유 텍스트pages.login.title
components공용 컴포넌트 내부 텍스트components.modal.close
validation폼 유효성 검사 메시지validation.required
error오류 메시지error.notFound, error.serverError
  • 여러 페이지에서 공통으로 사용하는 텍스트는 반드시 common 네임스페이스에 정의해야 합니다.
  • 특정 페이지에서만 사용하는 텍스트는 pages 네임스페이스에 정의합니다.
  • 프로젝트 규모에 따라 네임스페이스를 추가할 수 있으나, 표준 네임스페이스의 용도를 변경하지 않아야 합니다.

22.2.4. 복수형 처리 ​

복수형이 필요한 텍스트는 vue-i18n의 복수형 문법을 사용하여 처리해야 합니다.

json
{
  "items": "항목 없음 | {count}개 항목 | {count}개 항목"
}
vue
<template>
  <p>{{ $t('items', { count: itemCount }, itemCount) }}</p>
</template>
  • 복수형 구분은 파이프(|)로 구분합니다. 순서는 없음 | 단수 | 복수입니다.
  • 한국어는 복수형 구분이 없으므로 단수와 복수를 동일하게 작성합니다.
  • 영어 번역 파일에서는 단수({count} item)와 복수({count} items)를 구분하여 작성해야 합니다.
  • 숫자 0에 대한 별도 표현이 필요한 경우 세 가지 형태를 모두 정의합니다.
  • 복수형 규칙이 복잡한 언어(아랍어 등)를 추가 지원할 경우, vue-i18n의 pluralRules 옵션을 설정해야 합니다.

TIENIPIA QUALIFIED STANDARD