# eloqnt/cli > eloqnt/cli is a linter for your translation files. It catches errors before they ship, and optionally fills in missing translations. Every page below links to its markdown version. Drop the `.md` suffix for the HTML page. ## Getting started - [Introduction](https://cli.eloqnt.dev/docs.md): eloqnt/cli is a linter for your translation files. It catches errors before they ship, and optionally fills in missing translations. - [Quickstart](https://cli.eloqnt.dev/docs/quickstart.md): Install eloqnt/cli and lint your project. ## Project files - [Configuration](https://cli.eloqnt.dev/docs/configuration.md): Configuration for eloqnt/cli is defined locally in your project repository. - [Styleguides](https://cli.eloqnt.dev/docs/styleguides.md): A styleguide is a free-form markdown document that steers aspects like tone, terminology, and consistency. You write what is specific to your project, and eloqnt/engine layers on translation best practices automatically. ## eloqnt/cli - [eloqnt lint](https://cli.eloqnt.dev/docs/cli/lint.md): Catch common problems in your source code and messages with static analysis. - [eloqnt review](https://cli.eloqnt.dev/docs/cli/review.md): Catch typos, grammar slips and inconsistent terminology in your source strings before they fan out into all your translations. - [eloqnt translate](https://cli.eloqnt.dev/docs/cli/translate.md): Fill in missing translations across your target locales. - [eloqnt login](https://cli.eloqnt.dev/docs/cli/login.md): Log in to eloqnt/engine from your terminal to unlock AI-based features. - [eloqnt logout](https://cli.eloqnt.dev/docs/cli/logout.md): Disconnect the CLI from your eloqnt account on this machine. - [eloqnt whoami](https://cli.eloqnt.dev/docs/cli/whoami.md): Check which account and plan the CLI is currently using. - [eloqnt crowdin](https://cli.eloqnt.dev/docs/cli/crowdin.md): Sync messages with an existing Crowdin project. ## Lint rules - [duplicate-id](https://cli.eloqnt.dev/docs/lint-rules/duplicate-id.md): Flags a message ID that more than one messages folder defines. Only applies when `messages.path` lists multiple folders. - [inconsistent-args](https://cli.eloqnt.dev/docs/lint-rules/inconsistent-args.md): Flags a translation whose ICU features don't match the source message. - [inconsistent-exact-plurals](https://cli.eloqnt.dev/docs/lint-rules/inconsistent-exact-plurals.md): Flags a translation whose exact plural cases (e.g. `"=0"`) differ from the source. - [invalid-locale](https://cli.eloqnt.dev/docs/lint-rules/invalid-locale.md): Flags a messages file whose locale the runtime doesn't recognize. - [missing-other-case](https://cli.eloqnt.dev/docs/lint-rules/missing-other-case.md): Flags a plural, selectordinal, or select block that has no `other` case. - [missing-translation](https://cli.eloqnt.dev/docs/lint-rules/missing-translation.md): Flags a message the source locale defines that a target locale leaves absent or empty. - [orphan-message](https://cli.eloqnt.dev/docs/lint-rules/orphan-message.md): Flags a message in your source locale that is not referenced by source code. - [structure-mismatch](https://cli.eloqnt.dev/docs/lint-rules/structure-mismatch.md): Flags a key whose value has a different shape in a target locale than in the source locale. - [superfluous-key](https://cli.eloqnt.dev/docs/lint-rules/superfluous-key.md): Flags a key that a target locale defines but the source locale doesn't. - [undefined-key](https://cli.eloqnt.dev/docs/lint-rules/undefined-key.md): Flags a message your source code references that is not present in your source locale messages. Only applies when `srcPath` is set, and currently only supports `next-intl`. - [unreachable-plural-case](https://cli.eloqnt.dev/docs/lint-rules/unreachable-plural-case.md): Flags a translation that carries a plural case its own locale never selects. ## Guides - [Static analysis](https://cli.eloqnt.dev/docs/guides/static-analysis.md): eloqnt/cli can read and understand your source code, which unlocks usage-aware lint rules and call-site context for translations (`next-intl`-only). - [GitHub Actions](https://cli.eloqnt.dev/docs/guides/github-actions.md): To streamline a continuous localization workflow, you can lint and translate strings automatically on CI systems like GitHub Actions. ## Formats - [JSON (built-in)](https://cli.eloqnt.dev/docs/formats/json.md): Store messages in JSON files, with one file per locale. - [PO (built-in)](https://cli.eloqnt.dev/docs/formats/po.md): Store messages in gettext-style PO files. - [Apple .xcstrings (iOS)](https://cli.eloqnt.dev/docs/formats/apple-xcstrings.md): Translate Apple String Catalogs, the localization format of Xcode 15 and later. - [Android XML](https://cli.eloqnt.dev/docs/formats/android-xml.md): Translate Android string resources (strings.xml) across res/values folders. - [i18next JSON](https://cli.eloqnt.dev/docs/formats/i18next-json.md): Translate i18next JSON translation files (v4), including plural-suffix keys and interpolation. - [vue-i18n JSON](https://cli.eloqnt.dev/docs/formats/vue-i18n-json.md): Translate vue-i18n JSON translation files, including interpolation, literals, plural forms, and linked messages. - [Custom formats](https://cli.eloqnt.dev/docs/formats/custom.md): Store messages in any file format by defining a codec that reads and writes your files. ## Changelog - [@eloqnt/cli](https://cli.eloqnt.dev/docs/changelog/cli.md): Release notes for every published version of the CLI. - [@eloqnt/engine](https://cli.eloqnt.dev/docs/changelog/engine.md): Release notes for every version of the hosted engine. - [@eloqnt/sdk](https://cli.eloqnt.dev/docs/changelog/sdk.md): Release notes for every published version of the SDK.