PO Editor

approvedunreviewed

by Kodaskills

Editing PO (Gettext) translation files with format conversion support (ICU, XLIFF, ARB, JSON, YAML)

★ 1 stars↓ 133 downloadsUpdated 4mo agoMIT
PO Editor logo

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.

Version Obsidian License Last Commit

Built with:

TypeScript Vite Obsidian API


✨ Features

AreaWhat PO Editor provides
EditorDual-mode editing — interactive grid table and raw PO text editor with CodeMirror syntax highlighting
Format ConversionConvert PO ↔ XLIFF, ARB, ARB Enhanced, JSON, YAML, ICU MessageFormat
Entry ManagementSingular and plural forms, translator comments, flags, msgctxt context, source references
FilteringFilter by status (translated / untranslated / fuzzy), format flag, comment, or context
ValidationFlag conflicts, plural integrity, empty msgstr, fuzzy/obsolete detection, strict mode
CommandsCreate, view, validate, mark/unmark fuzzy — all accessible from the command palette
Project ModeManage multiple related PO files from a single folder
SettingsDefault 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 from Community plugins
  2. Open BRAT settings → Add Beta Plugin
  3. Enter Kodaskills/obsidian-po-editor

Manual

Download the latest release from GitHub Releases, copy main.js, manifest.json, and styles.css to:

<vault>/.obsidian/plugins/po-editor/

Then reload Obsidian and enable the plugin.

Note: Desktop only — isDesktopOnly: true.


⚡ Quick Start

1. Click the 🌐 ribbon icon (or run "Create PO File" from the command palette)
2. Choose a language and output directory → file is created and opens in grid view
3. Click any row to edit an entry — add/update msgstr, set flags, add comments
4. Toggle to raw text mode (top-right) for direct PO source editing
5. Run "Validate PO File" to check for errors and incomplete translations
6. Use "Convert" to export the file to XLIFF, JSON, YAML, ARB, or ICU format

📂 Supported Formats

FormatExtensionDirection
Gettext PO.poRead & Write
Gettext Template.potRead & Write
XLIFF.xliffPO ↔ XLIFF
Flutter ARB.arbPO ↔ ARB
ARB Enhanced.arbPO ↔ ARB (with metadata)
JSON.jsonPO ↔ JSON
YAML.yamlPO ↔ YAML
ICU MessageFormat.jsonPO ↔ ICU

🛠 Commands

CommandIDDescription
Create PO Filepo-createOpen dialog to create a new .po file
View Active PO Filepo-view-activeOpen the currently active .po file in the editor
Validate PO Filepo-validateRun validation and show a detailed error/warning report
Mark as Fuzzypo-mark-fuzzyAdd the fuzzy flag to the selected entry
Unmark Fuzzypo-unmark-fuzzyRemove the fuzzy flag from the selected entry

All commands are available via Ctrl/Cmd + P.


⚙️ Settings

SettingDefaultDescription
outputDirectory(vault root)Where new PO files are saved
showCommentstrueShow translator comments in the grid
preserveCommentstrueKeep comments during format conversion
preserveFlagstrueKeep flags during format conversion
preserveReferencestrueKeep source references during format conversion
autoValidatefalseRun validation automatically on save
strictModefalseTreat untranslated and fuzzy entries as errors
showLineNumberstrueShow line numbers in the raw text editor
projectModeFolders[]Folders that activate project mode
placeholderPatterns(printf, ICU)Regex patterns for placeholder detection

Custom Keybindings

Map editor actions to keyboard shortcuts via keyMapping in settings. Bind any action to a key combination — no restart required.

Quick Actions

Configure quickActions buttons in settings to insert frequently used flags or comment snippets with a single click inside the entry editor.


📊 Validation

Run "Validate PO File" to get a full report:

CheckSeverity
Empty msgstr on non-header entryError
Conflicting format flags (e.g. c-format + no-c-format)Error
Multiple conflicting format flags on one entryError
Incorrect plural form countError
Untranslated entriesWarning
Fuzzy entriesWarning
Obsolete entriesInfo

In strict mode, untranslated and fuzzy entries are promoted to errors.


📄 License

MIT — see LICENSE for details.


Maintained with ⚡ by the Kodaskills team

TypeScript

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.