Point it at a folder and name the language everything is compared against:
bash
npx chki18n ./locales --target en
bash
dart pub global activate chki18nchki18n ./locales --target en
bash
pip install chki18nchki18n ./locales --target en
text
Path ./locales Target en Locales en, ko Layout single, 1 group, 10 keys ko ──────────────────────────────────────────────────────────────────────── 1 error · 1 warning ERROR NO_KEY (1) The key exists in the target language but is missing here. attr.folder en: "Folder" WARN NOT_TRANSLATED_VALUE (1) The value is identical to the target language, so the translation may be incomplete. desc.no-str en: "12345" Summary ─────────────────────────────────────────────────────────────────────────────────────── Compared 10 keys across 2 locales in 1 group. (3ms) 1 error · 1 warning Clean: en FAIL 1 error must be fixed before this passes.
It exits with 1 when an error level issue was found, so a CI job fails on it. Every package prints that report to the column, whichever one you install.
The same run from code returns an object instead of a page of text:
javascript
import { checkTranslationFiles } from 'chki18n';const result = await checkTranslationFiles('./locales', { target: 'en' });result.success; // falseresult.summary; // { error: 1, warn: 1, info: 0, total: 2, byCode: {…}, byLocale: {…} }result.issues[0];// {// code: 'NO_KEY',// level: 'error',// locale: 'ko',// key: 'attr.folder',// group: '',// targetValue: 'Folder',// file: '/project/locales/ko.json',// message: 'The key exists in the target language but is missing here.'// }
dart
import 'package:chki18n/chki18n.dart';final result = await checkTranslationFiles( path: './locales', options: const Chki18nOptions(target: 'en'),);result.success; // falseresult.summary.error; // 1result.issues.first;// Chki18nIssue(// code: Chki18nCheckCode.noKey,// level: Chki18nLevel.error,// locale: 'ko',// key: 'attr.folder',// group: '',// targetValue: 'Folder',// file: '/project/locales/ko.json',// message: 'The key exists in the target language but is missing here.',// )
python
from chki18n import Options, check_translation_filesresult = check_translation_files("./locales", Options(target="en"))result.success # Falseresult.summary.error # 1result.issues[0]# Issue(# code="NO_KEY",# level="error",# locale="ko",# key="attr.folder",# group="",# target_value="Folder",# file="/project/locales/ko.json",# message="The key exists in the target language but is missing here.",# )
Installing it is one page, Getting started. What each check looks for is on Checks, and every option is on Options.