
# PO Editor — Obsidian Plugin
### Edit, validate, and convert **PO/Gettext translation files** directly inside Obsidian — grid view, raw editor, multi-format export, and full plural form support.
[](https://github.com/Kodaskills/obsidian-po-editor/releases/latest)
[](https://obsidian.md)
[](LICENSE)
[](https://github.com/Kodaskills/obsidian-po-editor/commits/main)
### Built with:
[](https://www.typescriptlang.org)
[](https://vitejs.dev)
[](https://docs.obsidian.md)
---
## ✨ Features
| Area | What PO Editor provides |
| --------------------- | ----------------------------------------------------------------------------------------------------- |
| **Editor** | Dual-mode editing — interactive grid table and raw PO text editor with CodeMirror syntax highlighting |
| **Format Conversion** | Convert PO ↔ XLIFF, ARB, ARB Enhanced, JSON, YAML, ICU MessageFormat |
| **Entry Management** | Singular and plural forms, translator comments, flags, `msgctxt` context, source references |
| **Filtering** | Filter by status (translated / untranslated / fuzzy), format flag, comment, or context |
| **Validation** | Flag conflicts, plural integrity, empty `msgstr`, fuzzy/obsolete detection, strict mode |
| **Commands** | Create, view, validate, mark/unmark fuzzy — all accessible from the command palette |
| **Project Mode** | Manage multiple related PO files from a single folder |
| **Settings** | Default language, output directory, custom keybindings, quick-action buttons, placeholder patterns |
---
## 🚀 Installation
### Community Plugins _(when listed)_
1. Open Obsidian → **Settings → Community plugins → Browse**
2. Search **"PO Editor"**
3. Click **Install**, then **Enable**
### BRAT _(beta testing)_
1. Install [BRAT](https://github.com/TfTHacker/obsidian42-brat) from Community plugins
2. Open BRAT settings → **Add Beta Plugin**
3. Enter `Kodaskills/obsidian-po-editor`
### Manual
Download the latest release from [GitHub Releases](https://github.com/Kodaskills/obsidian-po-editor/releases/latest), copy `main.js`, `manifest.json`, and `styles.css` to:
```