# I18n Translation Management Script

This document describes the usage of the `tools/add-missing-i18n-variables.js` script, which helps manage internationalization (i18n) files for Super Productivity.

## Overview

The script manages translation files located in `src/assets/i18n/`. The base language is English (`en.json`), and other languages like `de.json` (German), `tr.json` (Turkish), etc., contain translations.

The script supports three modes:

- **Extract mode**: Creates work-in-progress (WIP) files with missing translations for a specific language.
- **Merge mode**: Merges translated WIP files back into the main language file.
- **Legacy mode**: Adds missing keys to all language files (default when no mode is specified).

## File Structure

- `en.json`: The reference English file with all keys.
- `{lang}.json`: Main translation files (e.g., `de.json`, `tr.json`).
- `{lang}-wip.json`: Temporary work-in-progress files containing only missing translations.

## Usage

### Extract Missing Translations

To extract missing translations for a specific language (e.g., Turkish):

```bash
node tools/add-missing-i18n-variables.js extract tr
```

This creates `tr-wip.json` with all keys that exist in `en.json` but are missing or empty in `tr.json`.

### Translate WIP File

Edit the generated `{lang}-wip.json` file and provide translations for the keys.

Example `tr-wip.json`:

```json
{
  "APP": {
    "SKIP_SYNC_WAIT": "Skip waiting for sync"
  },
  "F": {
    "CALDAV": {
      "ISSUE_CONTENT": {
        "DESCRIPTION": "Description"
      }
    }
  }
}
```

### Merge Translations

After translating the WIP file, merge it back into the main language file:

```bash
node tools/add-missing-i18n-variables.js merge tr
```

This:

- Merges translations from `tr-wip.json` into `tr.json`
- Maintains the same key order as `en.json`
- Validates that all keys are present
- Deletes the `tr-wip.json` file

### Legacy Mode (Update All Files)

To add missing keys to all language files at once (preserving existing translations):

```bash
node tools/add-missing-i18n-variables.js
```

This updates all `{lang}.json` files to include any new keys from `en.json`, placing them in the same order.

## Workflow Example

1. New features are added, updating `en.json` with new keys.
2. Run extract for your language: `node tools/add-missing-i18n-variables.js extract de`
3. Translate the keys in `de-wip.json`.
4. Run merge: `node tools/add-missing-i18n-variables.js merge de`
5. Submit a pull request with the updated `de.json`.

## Notes

- The script preserves the order of keys to match `en.json`.
- Empty strings in translation files trigger English fallback.
- WIP files are temporary and will be deleted by the merge command.
