i18n toolkit

Translate, validate, and lint your locales

locallingo extends i18n-tasks with AI translation, source-hash drift detection, and quality linting — one config, one CLI, for every app and package.

Gemfile
gem "locallingo", group: :development
AI translation

Translate missing and changed keys through RubyLLM — OpenAI, Anthropic, and more, chosen by config. Only what actually changed.

Drift detection

Per-key source hashes mark translations outdated when the English text changes, so nothing silently goes stale.

CI validation

lingo validate --strict gates missing and outdated keys; --strict-all adds duplicate-value and manual-edit checks.

Quality linting

Static rules, terminology lists, British-spelling drift, and an optional AI review pass — with auto-fix for the fixable.

Multi-package

One default config plus per-package overrides, so an engine or gem can translate to its own locales with its own prompt.

RuboCop cops

Ships RelativeI18nKey (with autocorrect) and StrftimeInView so fully-qualified keys and locale-aware dates are enforced.