# Languages & Translations

> Install WPsigner language packs and Signed PDF fonts so the admin UI and flattened signed PDFs support Vietnamese and other languages.

edition: both
Edition: Lite + Pro
AI note: This page applies to Lite and Pro. Call out Lite limits (PDF only, max 2 signers, email OTP, local timestamp) when they apply. Do not invent Pro-only features.
HTML: https://docs.wpsigner.com/customization/languages/
Markdown: https://docs.wpsigner.com/md/customization/languages.md
Source file: customization/languages.md

---

WPsigner ships in **English** by default. Additional languages are delivered as **language packs** you install from **WPsigner → Languages** (requires an active license). Packs are not bundled inside the public plugin ZIP.

> **note**
WPsigner uses its own language pack system (License Manager catalog). It is **not** translated via translate.wordpress.org.

---

## Available languages

Official packs currently cover these locales (core + matching addon strings when included in the pack):

| Language | Locale codes |
|----------|----------------|
| English (default) | `en` / `en_US` (source strings — no pack required) |
| Español | `es`, `es_ES`, plus regional variants such as `es_MX`, `es_AR`, `es_CL`, `es_CO`, `es_CR`, `es_GT`, `es_HN`, `es_PE`, `es_US`, `es_VE` |
| Français | `fr`, `fr_FR` |
| Deutsch | `de`, `de_DE` |
| Italiano | `it`, `it_IT` |
| Português | `pt`, `pt_BR` (Brasil), `pt_PT` (Portugal) |

The exact list shown on your site comes from the **live catalog** at **WPsigner → Languages**. If a locale is missing from the catalog, it is not published yet — see [Add a missing language](#add-a-missing-language).

### What language packs cover

| Component | Text domain | Included in packs |
|-----------|-------------|-------------------|
| WPsigner core | `insigner` | Required |
| Smart Signing Forms | `insigner-smart-forms` | Optional (when present) |
| Document Builder | `insigner-document-builder` | Optional |
| WPSigner for MainWP | `insigner-mainwp` | Optional |
| ApproveMe Importer | `wpsigner-approveme-importer` | Optional |

> **tip**
Installing a language pack translates the **WordPress admin UI** and plugin strings for that locale. Document PDF content created by users is not auto-translated — only interface strings. Names and typed text in flattened signed PDFs need a **Signed PDF fonts** pack if they use characters beyond basic Latin.

---

## Signed PDF fonts

Language packs do **not** change the font used when WPsigner flattens a signed PDF. Core still uses Helvetica (Latin-1) until you install a PDF font pack (**Pro 3.2.0+**).

This is what you need for **Vietnamese** names and typed text (ă, â, ê, ô, ơ, ư, đ, and tone marks) on the completed PDF. It does **not** translate the WPsigner screens.

1. Go to **WPsigner → Languages**
2. Open the **Signed PDF fonts** section
3. For Vietnamese and other Latin languages with accents, install **Accented Latin**
4. Click **Use for signed PDFs** if it is not already active
5. Send a test document and download the completed PDF

The site needs internet only during install. After that, flattening uses the font stored on your server.

Each pack downloads a [Noto](https://fonts.google.com/noto) font (SIL Open Font License) after install and stores it in `wp-content/uploads/wps-pdf-fonts/{pack}/`. Packs are not bundled in the plugin ZIP.

| Pack | Works for |
|------|-----------|
| Accented Latin | Vietnamese, Turkish, Polish, Czech, Slovak, Romanian, Hungarian, Croatian, Slovenian, Baltic languages, Finnish, Icelandic, Maltese, Welsh, Basque, Catalan, plus French / German / Spanish / Portuguese / Italian / Nordic accents |
| Japanese | Japanese (kanji, hiragana, katakana) |
| Chinese (Simplified) | Simplified Chinese (mainland China, Singapore) |
| Chinese (Traditional) | Traditional Chinese (Taiwan, Hong Kong, Macau) |
| Korean | Korean (Hangul) |
| Arabic | Arabic; Persian and Urdu that use the Arabic script |
| Hebrew | Hebrew |
| Thai | Thai |

Install only the pack you need. You can keep several on disk; **one** pack is used for new signed PDFs at a time.

PDF font packs do **not** translate the WPsigner screens. For a translated UI, install a language pack (or a custom `.mo`) separately.

Arabic and Hebrew embed the characters. Right-to-left line layout in certificates is limited.

---

## Install and activate a language

1. Activate your WPsigner license (**WPsigner → Settings / License**)
2. Go to **WPsigner → Languages**
3. Find the language in the catalog
4. Click **Install** (downloads the pack ZIP)
5. Click **Activate**

WPsigner stores installed `.mo` files under WordPress’s languages directory:

```text
wp-content/languages/plugins/
  insigner-{locale}.mo
  insigner-smart-forms-{locale}.mo
  …
```

You can leave the WordPress site language as-is; WPsigner’s **active pack** controls which translation the plugin loads.

---

## Where translation files live

### On your WordPress site (runtime)

| Location | Purpose |
|----------|---------|
| `wp-content/languages/plugins/` | Installed language packs (`.mo`) used in production |
| Plugin `languages/` folders | Only present in development / source trees — **not** required on customer sites |

### In the product source (developers / translators)

| Path | Contents |
|------|----------|
| `insigner/languages/` | Core template `insigner.pot` + `insigner-{locale}.po` / `.mo` |
| `insigner-smart-forms/languages/` | Addon POT/PO/MO |
| `insigner-document-builder/languages/` | Addon POT/PO/MO |
| `insigner-mainwp/languages/` | Addon POT/MO |
| `wpsigner-approveme-importer/languages/` | Addon POT/PO/MO |

File naming pattern:

```text
{text-domain}-{locale}.po   ← editable translation source
{text-domain}-{locale}.mo   ← compiled file WordPress loads
{text-domain}.pot           ← template of all translatable strings
```

Examples:

```text
insigner-es_ES.po
insigner-es_ES.mo
insigner-fr_FR.mo
insigner-smart-forms-de_DE.mo
```

---

## Add a missing language

Use this when your locale is not in **WPsigner → Languages**, or you need a custom/override translation.

### Option A — Loco Translate (recommended for site admins)

1. Install [Loco Translate](https://wordpress.org/plugins/loco-translate/)
2. Open **Loco Translate → Plugins → WPsigner** (domain `insigner`)
3. Click **New language** → choose your locale (for example `nl_NL`)
4. Translate strings in the editor
5. Save — Loco writes `.po` / `.mo` under `wp-content/languages/plugins/` (or the plugin `languages/` folder, depending on your Loco settings)
6. Repeat for active addons (`insigner-smart-forms`, etc.) if needed
7. In **WPsigner → Languages**, keep English or another pack inactive if it conflicts; prefer loading your custom `.mo` for that locale

Loco is listed as compatible with WPsigner’s standard WordPress i18n APIs.

### Option B — Poedit (recommended for professional translators)

1. Download [Poedit](https://poedit.net/)
2. Open the template: `insigner.pot` (from the core `languages/` folder, or request it from support)
3. **Create new translation** → select your language / locale code (e.g. `nl_NL`, `ja`, `pl_PL`)
4. Translate strings and save as:
   ```text
   insigner-{locale}.po
   ```
   Poedit generates the matching `.mo` automatically
5. Optional: create matching files for each addon domain you use
6. Upload the `.mo` files to:
   ```text
   wp-content/languages/plugins/
   ```
7. Set WordPress / WPsigner to that locale so the files load

### Option C — WP-CLI (developers)

From the plugin root (development environment):

```bash
# Refresh the template from source
wp i18n make-pot . languages/insigner.pot --domain=insigner

# Create a new PO from the template
wp i18n make-po languages/insigner.pot languages/insigner-nl_NL.po

# Compile MO after translating the PO
wp i18n make-mo languages/
```

Copy the compiled `insigner-nl_NL.mo` to `wp-content/languages/plugins/` on the site.

---

## Contribute an official language pack

If you want the language published in the **WPsigner → Languages** catalog for all customers:

1. Complete `.po` / `.mo` files for core (`insigner`) and ideally the addons you care about
2. Package a ZIP with **forward-slash** paths and this layout:

```text
wpsigner-lang-{locale}-{version}.zip
├── insigner-{locale}.mo                          (required)
├── insigner-smart-forms-{locale}.mo              (optional)
├── insigner-document-builder-{locale}.mo         (optional)
├── insigner-mainwp-{locale}.mo                   (optional)
└── wpsigner-approveme-importer-{locale}.mo       (optional)
```

3. Send the ZIP to WPsigner support / your account manager, **or** (partners with License Manager access) upload it under **License Manager → Language Packs**
4. After publication, customers can install it from **WPsigner → Languages**

> **important**
Do not rely on translate.wordpress.org for WPsigner. Packs must go through the WPsigner language pack catalog.

---

## Troubleshooting

| Symptom | Fix |
|---------|-----|
| Languages page empty / cannot install | Activate a valid WPsigner license |
| Pack installed but UI still English | Click **Activate** on the pack; confirm the `.mo` exists under `wp-content/languages/plugins/` |
| Only some screens translated | Translate / include the matching addon domain `.mo` |
| Custom PO ignored | Check file name `{domain}-{locale}.mo`; clear caches; avoid conflicting active pack |
| Need a new locale ASAP | Use Loco or Poedit locally while waiting for an official pack |
| Vietnamese / accented names missing or boxes on the signed PDF | Install **Accented Latin** under **Signed PDF fonts**, then **Use for signed PDFs**. Re-complete a test document — already flattened PDFs are not rewritten |
| Chinese / Japanese / Korean / Arabic / Thai / Hebrew look wrong | Install that language’s PDF font pack (not Accented Latin) and make it the active pack |
| Font install fails | The site must reach the Noto download URL once. Check outbound HTTPS, then retry |
| Two packs installed, wrong script in new PDFs | Only one pack is active. Click **Use for signed PDFs** on the pack you need |

---

## Next Steps

- [Creating Documents](/core-features/creating-documents/) — Add signers and send a test PDF after installing a font pack
- [Whitelabeling](/customization/whitelabeling/) — Brand the signing experience
- [Email Templates](/customization/email-templates/) — Customize notification copy (per language workflow as needed)
- [Account Portal](/addons/account-portal/) — License and downloads
- [Support](/support/) — Contact WPsigner if you need a pack published
