CSV
Lingo.dev CLI를 사용한 CSV 파일 AI 번역
CSV란 무엇인가요?
CSV(Comma-Separated Values)는 표 형식의 데이터를 저장하는 일반 텍스트 파일 형식으로, 각 줄은 행을 나타내며 각 행 내의 값은 쉼표로 구분됩니다.
예시:
KEY,en
welcome_message,Welcome to our application
button_save,Save
error_invalid_email,Please enter a valid email address
Lingo.dev CLI란 무엇인가요?
Lingo.dev CLI는 AI를 사용하여 앱과 콘텐츠를 번역하는 무료 오픈소스 CLI입니다. 기존 파이프라인과 통합하면서 기존 번역 관리 소프트웨어를 대체하도록 설계되었습니다.
자세한 내용은 개요를 참조하세요.
이 가이드에 대하여
이 가이드는 Lingo.dev CLI를 사용하여 CSV 파일을 번역하는 방법을 설명합니다.
다음 내용을 배우게 됩니다:
- 처음부터 프로젝트 생성하기
- 번역 파이프라인 구성하기
- AI로 번역 생성하기
사전 요구사항
Lingo.dev CLI를 사용하려면 Node.js v18 이상이 설치되어 있어야 합니다:
❯ node -v
v22.17.0
1단계. 프로젝트 설정하기
프로젝트 디렉토리에서 i18n.json 파일을 생성하세요:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
이 파일은 번역할 언어와 파일 시스템에서 현지화 가능한 콘텐츠가 존재하는 위치를 포함하여 번역 파이프라인의 동작을 정의합니다.
사용 가능한 속성에 대한 자세한 내용은 i18n.json을 참조하세요.
2단계. 소스 로케일 구성하기
_소스 로케일_은 콘텐츠가 작성된 원본 언어 및 지역입니다. 소스 로케일을 구성하려면 i18n.json 파일에서 locale.source 속성을 설정하세요:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
소스 로케일은 BCP 47 언어 태그로 제공되어야 합니다.
Lingo.dev CLI가 지원하는 로케일 코드의 전체 목록은 지원되는 로케일 코드를 참조하세요.
단계 3. 타겟 로케일 구성하기
_타겟 로케일_은 콘텐츠를 번역하려는 언어 및 지역입니다. 타겟 로케일을 구성하려면 i18n.json 파일에서 locale.targets 속성을 설정하세요:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
단계 4. 소스 콘텐츠 생성하기
아직 생성하지 않았다면, 번역할 콘텐츠가 포함된 CSV 파일을 생성하세요.
CSV 파일의 경우 다음 요구사항이 적용됩니다:
- 첫 번째 열의 이름은 "KEY"여야 합니다.
- "KEY" 열의 각 행은 번역 메시지에 대한 고유 ID를 지정해야 합니다.
- 두 번째 열은
i18n.json파일에 정의된 소스 로케일과 일치해야 합니다. - 두 번째 열의 각 행에는 번역될 콘텐츠가 포함되어야 합니다.
참고: 번역 프로세스 중에 소스 콘텐츠 파일은 번역된 콘텐츠를 포함하도록 덮어쓰기됩니다(소스 콘텐츠와 함께).
단계 5. 버킷 생성하기
-
i18n.json파일에서buckets객체에"csv"객체를 추가하세요:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "csv": {} } } -
"csv"객체에서 하나 이상의include패턴 배열을 정의하세요:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "csv": { "include": ["./example.csv"] } } }이 패턴들은 번역할 파일을 정의하며 다음 중 하나를 사용할 수 있습니다:
- 특정 파일 경로 지정(예:
"some/dir/file.csv") - 와일드카드 플레이스홀더로 별표 사용(예:
"some/dir/*.csv")
재귀적 glob 패턴(예:
**/*.csv)은 지원되지 않습니다. - 특정 파일 경로 지정(예:
단계 6. LLM 구성하기
Lingo.dev CLI는 대규모 언어 모델(LLM)을 사용하여 AI로 콘텐츠를 번역합니다. 이러한 모델 중 하나를 사용하려면 지원되는 제공업체의 API 키가 필요합니다.
가능한 한 빠르게 시작하고 실행하려면 Lingo.dev Engine 사용을 권장합니다. 이는 매월 10,000 토큰의 무료 사용량을 제공하는 자체 호스팅 플랫폼입니다:
-
다음 명령을 실행하세요:
npx lingo.dev@latest login기본 브라우저가 열리고 인증을 요청합니다.
-
안내에 따라 진행하세요.
7단계. 번역 생성
i18n.json 파일이 포함된 디렉토리에서 다음 명령을 실행하세요:
npx lingo.dev@latest run
이 명령은:
i18n.json파일을 읽습니다.- 번역이 필요한 파일을 찾습니다.
- 파일에서 번역 가능한 콘텐츠를 추출합니다.
- 구성된 LLM을 사용하여 추출된 콘텐츠를 번역합니다.
- 번역된 콘텐츠를 파일 시스템에 다시 작성합니다.
번역이 처음 생성될 때 i18n.lock 파일이 생성됩니다. 이 파일은 번역된 콘텐츠를 추적하여 후속 실행 시 불필요한 재번역을 방지합니다.
예제
example.csv (번역 전)
KEY,en
welcome_message,Welcome to our application
button_save,Save
error_invalid_email,Please enter a valid email address
product_name,Premium Widget
empty_row_key,
whitespace_only,
new_feature,This is a new feature
example.csv (번역 후)
KEY,en,es
welcome_message,Welcome to our application,Bienvenido a nuestra aplicación
button_save,Save,Guardar
error_invalid_email,Please enter a valid email address,"Por favor, introduce una dirección de correo electrónico válida"
product_name,Premium Widget,Widget Premium
empty_row_key,,
whitespace_only, ,
new_feature,This is a new feature,Esta es una nueva función
i18n.json
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"csv": {
"include": ["./example.csv"]
}
}
}
i18n.lock
version: 1
checksums:
e8b273672f895de0944f0a2317670d7c:
welcome_message: 1308168cca4fa5d8d7a0cf24e55e93fc
button_save: f7a2929f33bc420195e59ac5a8bcd454
error_invalid_email: 8de4bc8832b11b380bc4cbcedc16e48b
product_name: d3d99b147cc363dc6db8a48e8a13d4c1
new_feature: 7cd986af1fe5e89abe7ecffba5413110
d0f33bd41270762260010c4723a564f5:
welcome_message: 1308168cca4fa5d8d7a0cf24e55e93fc
button_save: f7a2929f33bc420195e59ac5a8bcd454
error_invalid_email: 8de4bc8832b11b380bc4cbcedc16e48b
product_name: d3d99b147cc363dc6db8a48e8a13d4c1
new_feature: 7cd986af1fe5e89abe7ecffba5413110