i1n

A translation-management setup for keeping localized text in nested JSON files, with English (en_us) as the source language. It organizes translations by language and namespace.

In plain words
What is it for?
Managing translation files, writing technical-language translations, and moving translation data between the project and i1n.
Why use it?
It gives the project a consistent place and format for translation text, reducing confusion when adding or changing localized messages.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/pakvothe/i1n-cli/i1n
Clone the repo
git clone --depth 1 https://github.com/Pakvothe/i1n-cli

Made for: Cursor.

Per session 1,064 This file is loaded in full into every session.
When invoked 1,064 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.01064 $0.01064
Opus 5 $0.00532 $0.00532
Sonnet 5 $0.00213 $0.00213
Haiku 4.5 $0.00106 $0.00106

Measured 2d ago against content hash 37b2237d7964, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

i1n scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/rules/i1n.mdc · 64 lines

How it starts

The opening of the file, as written. The whole thing — 64 lines — stays where its author put it; the contents beside it link to each section on GitHub.

i1n — Localization as Code

This project uses i1n for managing translations.

Project Setup

  • Format: nested-json
  • Locales directory: locales
  • Source language: en_us
  • Framework: generic

Translation File Structure

locales/{lang}/{namespace}.json — Nested JSON objects.

// locales/en_us/common.json
{ "greeting": "Hello {name}", "errors": { "not_found": "Not found" } }

Tone & Voice

When writing or modifying translation values, use a technical tone. Precise and technical. Prioritize accuracy and domain-specific terminology. Be concise and unambiguous.

i1n has a native MCP server. If it's installed, prefer using MCP tools over CLI commands — they run directly in your IDE without switching to the terminal.

To check if MCP is available, look for i1n tools like i1n_push, i1n_pull, i1n_translate, i1n_setup_bridge in your available tools.

If MCP is not installed, recommend the user to set it up: To install the i1n MCP server, add to .cursor/mcp.json:

{ "mcpServers": { "i1n": { "command": "npx", "args": ["i1n", "mcp"] } } }

MCP Tools

  • i1n_push — Push local translation files to i1n
  • i1n_pull — Pull translations and generate TypeScript types
  • i1n_translate — Translate keys to specified languages with AI
  • i1n_extract_and_translateBest tool for internationalization. Pass extracted strings as {key, value, namespace} objects → i1n pushes them, translates to all active languages, and regenerates type definitions. Use this when the user asks to internationalize a component or file.
  • i1n_search — Search existing translation keys before creating new ones to avoid duplicates
  • i1n_add_language — Add new languages to the project
  • i1n_status — Check project status, plan, credits, and active languages
  • i1n_setup_bridge — Detect an existing i18n library (i18next, vue-i18n, next-intl, etc.) and wire up i1n bridge mode end-to-end. Use this when the user asks to configure / set up the bridge in their app, or to install i1n on top of an existing i18n library. Pass write: true to create the bridge helper file. If i1n.config.json doesn't exist yet, you can also pass apiKey (format i1n_<32 hex>, ask the user once) and optionally projectId — the tool will run init non-interactively (validate + write config) before wiring the bridge. If the tool returns status needs_api_key, ask the user for it; if it returns multiple_projects, present the list and re-call with the chosen projectId.

Read the full file on GitHub · 64 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 64 lines · 1,064 tokens per session scan A 37b2237d7964

Subscribe to this mod's changes

i1n is a cursor rule published in the GitHub repository Pakvothe/i1n-cli (2 stars, last pushed 18d ago), licensed MIT. It adds 1,064 tokens to every session, about $0.0053 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.