dictionary.js

dictionary.js 파일이란 무엇인가요? 어떻게 사용되나요?

소개

dictionary.jsLingo.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
  • 필수 여부: