@bf-i18n/cli
v0.5.7
Published
CLI tool for backend-friendly i18n
Downloads
29
Maintainers
Readme
@bf-i18n/cli
CLI tool for bf-i18n. Parse, validate, convert, and extract translation keys from Rails/Laravel format files.
Part of the bf-i18n project.
Installation
npm install -g @bf-i18n/cliOr use with npx:
npx @bf-i18n/cli <command>Commands
parse
Parse and display translation files (YAML, JSON, PHP).
bf-i18n parse <file>
# Examples
bf-i18n parse locales/en.yml
bf-i18n parse locales/en.json
bf-i18n parse lang/en/messages.phpvalidate
Validate translation files for consistency across locales.
bf-i18n validate <files...>
# Example
bf-i18n validate locales/en.yml locales/ja.yml locales/fr.ymlChecks for:
- Missing keys between locales
- Extra keys in some locales
- Type mismatches (string vs object)
convert
Convert translation files between Rails and Laravel formats.
bf-i18n convert <file> --from <mode> --to <mode> [--output <file>]
# Examples
bf-i18n convert locales/en.yml --from rails --to laravel
bf-i18n convert lang/en.json --from laravel --to rails --output locales/en.yml
# Check compatibility without converting
bf-i18n convert locales/en.yml --from rails --to laravel --check-only
# Fail on warnings
bf-i18n convert locales/en.yml --from rails --to laravel --strictOptions:
--from- Source format (railsorlaravel)--to- Target format (railsorlaravel)--output, -o- Output file path--check-only- Only check compatibility, don't convert--strict- Fail if there are warnings
extract
Extract translation keys from source code.
bf-i18n extract <dir> [options]
# Examples
bf-i18n extract src/
bf-i18n extract src/ --unique
bf-i18n extract src/ --json
bf-i18n extract src/ --output keys.txtOptions:
--unique, -u- Show only unique keys--json- Output as JSON--output, -o- Write results to file
Supported patterns:
t('key'),$t('key')i18n.t('key')useTranslationhook patterns
Supported file extensions:
.ts,.tsx,.js,.jsx,.vue
Format Differences
Rails Format
en:
greeting: "Hello, %{name}!"
items:
zero: "No items"
one: "1 item"
other: "%{count} items"Laravel Format
en:
greeting: "Hello, :name!"
items: "{0} No items|{1} 1 item|[2,*] :count items"Exit Codes
0- Success1- Error (invalid input, conversion failed, etc.)
License
MIT
