Sourced from i18next-cli's changelog.
1.73.0
- feat:
initruns without the wizard.--yestakes the detected defaults for every question not answered by--locales,--input,--output,--backend <local|locize|other>or--file-type <ts|js>;--project-id <id>(orLOCIZE_PROJECTID) supplies the Locize project id and skips the signup page and the credential prompts. Made for scripts and AI coding agents, which cannot drive the prompts.- feat:
init --agent-note(also the last wizard question, default No) appends a short## Internationalizationsection toAGENTS.md(andCLAUDE.mdwhen present; when neither exists,AGENTS.mdis created, plus aCLAUDE.mdimporting it if the project has a.claude/folder) so the next agent session knows where the locale files are and how translations are managed. The exact text is in the README;--no-agent-noteskips the question. Nothing is written unless you say yes.- change: the
localizeagent prompt (--print-agent-prompt) and thei18next-localizationskill no longer presume Locize. The agent asks the developer once, before creating the config, whether to manage the translations with Locize or keep the files in the repository, and never creates a project or asks for an API key unless they chose Locize. The prompt now creates the config withinit --yes ...instead of the interactive wizard.1.72.4
- docs: the README shows the skills.sh install badge for the
i18next-localizationAgent Skill, andi18next-cli --helpnow ends with a one-line hint on installing it (npx skills add i18next/i18next-cli). No other command prints anything new.1.72.3
- feat(funnel): the Locize hint after
status,extractandsyncis now a single line that names the untranslated-key gap and the one command that fills it (npx i18next-cli localize), each with its own?from=tagged register link. It only appears when secondary locales actually have untranslated keys; the 24h cooldown and the CI/non-TTY suppression are unchanged.1.72.2
- fix: extract dynamic keys built from
for...ofloop variables.for (const unit of UNITS)over anas conststring array now bindsunitwhile the loop body is walked, just like.map()/.forEach()callback parameters already did.- fix: capture
as constarrays of object literals (e.g.[{ unit: 'day' }, { unit: 'hour' }]), so bothfor (const { unit } of UNITS)andUNITS.forEach(({ unit }) => ...)resolve the destructured properties.- fix: resolve object destructuring of a known
as constobject, e.g.const { unit } = rate;followed byt(`msg ${unit}`)(#289).
bf7f167
1.73.08a38aa0
feat(init): non-interactive options, --project-id and an opt-in agent
note; t...7fb1095
docs(skill): single-line description in the SKILL.md frontmatter9224c6e
1.72.4dcd0298
docs: skills.sh badge and a --help hint for the i18next-localization
skill285716d
1.72.3ce1c77d
feat(funnel): one-line Locize hint after status, extract and sync87103c7
1.72.2bb1c07e
fix: extract dynamic keys from for-of loops and destructured as-const
objects