dictionary.js
dictionary.js 파일이란 무엇인가요? 어떻게 사용되나요?
소개
dictionary.js
는 Lingo.dev 컴파일러가 빌드 시 생성하는 파일입니다. 이 파일은 애플리케이션의 번역을 런타임에 효율적으로 로드할 수 있는 형식으로 저장합니다.
참고: dictionary.js
파일의 모든 변경 사항은 리포지토리에 커밋해야 합니다.
예제 파일
다음은 (매우 간단한) dictionary.js
파일의 예시입니다:
export default {
version: 0.1,
files: {
"components/hero.tsx": {
entries: {
"3/declaration/body/0/argument/1/1": {
content: {
en: "Welcome to our app",
es: "Bienvenido a nuestra aplicación",
},
hash: "a1b2c3d4e5f6...",
},
},
},
},
};
사용 가능한 속성에 대한 전체 설명은 스키마 속성을 참조하세요.
파일 위치
기본적으로 dictionary.js
파일은 컴파일러 구성(예: vite.config.ts
파일)의 위치를 기준으로 src/lingo
디렉토리에 출력됩니다.
이 위치를 사용자 지정하는 방법은 컴파일러 옵션을 참조하세요.
사전 로딩
lingo.dev
패키지는 여러 loadDictionary
함수를 제공합니다. 이 함수들은 사용자의 현재 로케일(로케일 쿠키의 현재 값 기준)에 대한 사전을 로드하는 역할을 합니다.
각 함수 변형은 서로 다른 환경에서 사용하도록 설계되었습니다. 다음은 클라이언트 측 버전의 함수를 사용하는 예시입니다:
<LingoProviderWrapper loadDictionary={(locale) => loadDictionary(locale)}>
<App />
</LingoProviderWrapper>
사전을 수동으로 로드하려고 시도하기보다는 제공된 함수만 사용하여 사전을 로드해야 합니다.
사전 편집
dictionary.js
파일은 자동 생성되지만 편집 가능합니다. 예를 들어, 번역 내용 편집을 통해 번역을 수동으로 변경할 수 있습니다.
그러나 소스 콘텐츠가 변경되면 수동 편집 내용이 덮어쓰여지므로, 일반적으로 data-lingo-override 속성을 사용하는 것이 더 유지 관리하기 쉽습니다.
스키마 속성
이 섹션에서는 dictionary.js
파일에 포함된 모든 속성에 대해 설명합니다.
version
호환성 검사 및 향후 마이그레이션을 위해 사용되는 스키마 버전 식별자입니다.
- 타입:
number
- 필수 여부: 예
files
모든 번역 항목을 소스 파일 경로별로 구성하는 컨테이너 객체입니다. 각 키는 소스 루트로부터의 상대 경로를 나타냅니다(예: "components/hero.tsx"
, "pages/home.jsx"
).
- 타입:
object
- 필수 여부: 예
files[filePath].entries
특정 소스 파일에서 발견된 모든 번역 항목을 위한 컨테이너입니다. 각 키는 파일 내에서 번역 가능한 콘텐츠를 고유하게 식별하는 AST 기반 식별자입니다.
- 타입:
object
- 필수 여부: 예
files[filePath].entries[astKey].content
로케일 식별자를 해당 번역 문자열에 매핑합니다. 프로젝트에 구성된 모든 로케일에 대한 번역을 포함합니다.
- 타입:
object
- 필수 여부: 예
files[filePath].entries[astKey].hash
변경 감지 및 캐시 무효화에 사용되는 원본 소스 콘텐츠의 SHA-256 해시입니다. 소스 콘텐츠가 변경되면 이 해시가 변경되어 해당 항목의 재번역이 트리거됩니다.
- 타입:
string
- 필수 여부: 예