Lingo.dev + XLIFF

Lingo.dev CLI는 문서 구조, 번역 단위 및 워크플로우 상태를 보존하면서 XLIFF(XML 지역화 교환 파일 형식) 파일을 번역합니다. CLI는 XLIFF 1.2 및 2.0 형식을 모두 지원하고, 소스 언어 메타데이터를 유지하며, 파일/그룹/단위 계층 구조를 보존하고, XML에 민감한 콘텐츠를 위한 CDATA 섹션을 처리하며, 전문 번역 워크플로우 및 CAT 도구와 통합됩니다.

빠른 설정

XLIFF 파일 구성:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja"]
  },
  "buckets": {
    "xliff": {
      "include": ["localization/[locale].xliff"]
    }
  }
}

주의사항: [locale]은 CLI 실행 중에 실제 로케일로 대체되므로 구성에 그대로 유지해야 하는 플레이스홀더입니다.

XLIFF 파일 번역

npx lingo.dev@latest i18n

콘텐츠를 번역하는 동안 XLIFF 구조, 번역 상태 및 전문 번역 워크플로우 메타데이터를 보존합니다.

XLIFF 파일 구조

XLIFF 1.2 형식

<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
  <file original="app.strings" source-language="en" target-language="es" datatype="plaintext">
    <header></header>
    <body>
      <trans-unit id="welcome" resname="welcome.message">
        <source>Welcome to our application</source>
        <target state="translated">Bienvenido a nuestra aplicación</target>
      </trans-unit>
      <trans-unit id="login" resname="auth.login">
        <source>Log In</source>
        <target state="new"></target>
      </trans-unit>
    </body>
  </file>
</xliff>

XLIFF 2.0 형식

<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="en">
  <file id="messages">
    <unit id="welcome">
      <segment>
        <source>Welcome to our application</source>
      </segment>
    </unit>
    <group id="auth">
      <unit id="login">
        <segment>
          <source>Log In</source>
        </segment>
      </unit>
    </group>
  </file>
</xliff>

키 생성

XLIFF 키는 URL 인코딩으로 결정론적으로 생성됩니다:

XLIFF 1.2 키

  • resname 속성, 그 다음 id, 그 다음 소스 텍스트를 기반으로 함
  • 간단한 형식: welcome.message, auth.login

XLIFF 2.0 키

  • 계층적 경로 구조: resources/{fileId}/{groupPath}{unitId}/source
  • URL 인코딩된 경로: resources%2Fmessages%2Fauth%2FgroupUnits%2Flogin%2Fsource
  • 그룹은 groupUnits 구분자로 중첩된 경로 생성

XLIFF 특정 기능

번역 상태

<!-- XLIFF 1.2 target states -->
<target state="new">Untranslated content</target>
<target state="translated">Translated content</target>
<target state="reviewed">Reviewed translation</target>
<target state="final">Final approved translation</target>

처리 과정에서 번역 상태가 보존되고 업데이트됩니다.

소스 언어 메타데이터

<!-- XLIFF 1.2 -->
<file source-language="en-US" target-language="es-ES">

<!-- XLIFF 2.0 -->
<xliff srcLang="en-US" trgLang="es-ES">

소스 언어 정보는 자동으로 보존되고 업데이트됩니다.

CDATA 섹션

<source><![CDATA[Content with <tags> & "special" characters]]></source>

XML에 민감한 문자가 포함된 콘텐츠의 경우 CDATA 섹션이 자동으로 사용됩니다.

그룹 구성

<!-- XLIFF 2.0 groups for logical organization -->
<group id="navigation">
  <unit id="home"><segment><source>Home</source></segment></unit>
  <unit id="settings"><segment><source>Settings</source></segment></unit>
</group>

계층적 그룹 구조는 보존되며 키 경로에 반영됩니다.

고급 구성

다중 XLIFF 파일

"xliff": {
  "include": [
    "localization/app_[locale].xliff",
    "localization/ui_[locale].xliff"
  ]
}

파일 확장자

"xliff": {
  "include": [
    "translations/[locale].xliff",
    "translations/[locale].xlf"
  ]
}

.xliff.xlf 확장자 모두 지원됩니다.

번역 단위 잠금

"xliff": {
  "include": ["localization/[locale].xliff"],
  "lockedKeys": ["app.version", "build.number"]
}

전문 번역 워크플로우

XLIFF 파일은 다음과 원활하게 통합됩니다:

  • CAT(컴퓨터 지원 번역) 도구
  • 번역 관리 시스템(TMS)
  • 전문 번역가 워크플로우
  • 품질 보증 프로세스
  • 번역 메모리 시스템

CLI는 빠른 현지화를 위한 AI 기반 번역을 지원하면서 모든 워크플로우 메타데이터를 보존합니다.