Resources

Internationalization

Multi-language support in Resume Matcher

Language Support

Resume Matcher supports multiple languages for both the interface and AI-generated content.

Supported Languages

CodeLanguageNative Name
enEnglishEnglish
esSpanishEspañol
zhChinese (Simplified)中文
jaJapanese日本語

Two Language Settings

You can set these independently in Settings:

UI Language

Changes buttons, labels, navigation, and error messages. Stored locally in your browser.

Content Language

Controls the language of AI-generated content: tailored resumes, cover letters, and outreach messages. Synced with the backend.

Note: Existing resumes in your database stay in their original language. Only new AI-generated content uses the selected language.

How to Change Language

  1. Go to Settings (/settings)
  2. Find the Language section
  3. Select your preferred UI language
  4. Select your preferred content language
  5. Save

Changes take effect immediately for the UI. Content language applies to your next AI generation.

What Gets Translated

ContentUI LanguageContent Language
Navigation and buttonsYes-
Form labelsYes-
Error messagesYes-
New tailored resumes-Yes
New cover letters-Yes
Existing saved resumes-No (stays as-is)

Adding a New Language

Resume Matcher supports UI translations and AI-generated content in multiple languages. Here’s how to add a new one.

Step 1: Create UI Translations

Copy an existing translation file and translate the values:

cp apps/frontend/messages/en.json apps/frontend/messages/fr.json

Edit the new file. Translate the values, not the keys:

{
  "common": {
    "save": "Enregistrer",
    "cancel": "Annuler",
    "delete": "Supprimer"
  },
  "nav": {
    "dashboard": "Tableau de bord",
    "settings": "Paramètres"
  }
}

Step 2: Register the Locale

Edit apps/frontend/i18n/config.ts:

export const locales = ['en', 'es', 'zh', 'ja', 'fr'] as const;

export const localeNames: Record<Locale, string> = {
  en: 'English',
  es: 'Español',
  zh: '中文',
  ja: '日本語',
  fr: 'Français',  // Add your language
};

Step 3: Add Backend Language Name

Edit apps/backend/app/prompts/templates.py:

LANGUAGE_NAMES = {
    "en": "English",
    "es": "Spanish",
    "zh": "Chinese (Simplified)",
    "ja": "Japanese",
    "fr": "French",  # Add your language
}

Step 4: Update Supported Languages List

Edit apps/backend/app/routers/config.py:

SUPPORTED_LANGUAGES = ["en", "es", "zh", "ja", "fr"]

Testing Your Translation

  1. Run npm run dev
  2. Go to Settings
  3. Select your new language from the dropdown
  4. Verify UI text displays correctly
  5. Generate a tailored resume to test content language

Fixing Existing Translations

Found a typo or awkward phrasing? Edit the relevant apps/frontend/messages/{code}.json file and submit a PR. No other files need changes for translation fixes.

Storage

  • UI language: Browser localStorage only
  • Content language: localStorage + backend config

This means UI preferences stay on your device, while content language syncs if you access from multiple browsers.

Next Steps