Skip to content

Releases: minios-linux/lokit

v0.12.3

Choose a tag to compare

@github-actions github-actions released this 29 Jul 17:24

Changes

Fix Android targets using the universal schema

Make Android targets consistently use the public to field as the resource directory.

Android path resolution:

  • Resolve to: app/src/main/res as the Android res directory at runtime.
  • Use the same path for source loading, status, translation, lock collection, and language detection.
  • Detect existing Android locales such as values-de and values-pt-rBR when the target uses to.

Public schema:

  • Remove legacy dir, pattern, source, target, pot, sources, exclude, and config fields from lokit.schema.json.
  • Keep from, except, to, and template as the documented public path schema.

Coverage:

  • Add a full config-resolution regression test for an Android target configured only with root and to.

v0.12.2

Choose a tag to compare

@github-actions github-actions released this 16 Jul 18:58

Changes

Preserve translation identity across provider responses

Prevent reordered or incomplete provider responses from assigning translations to neighboring source entries.

Translation identity:

  • Assign stable opaque IDs to gettext entries and key-value source keys.
  • Require providers to return identified JSON objects instead of positional string arrays.
  • Map reordered responses back to their exact source IDs.
  • Reject missing, duplicate, unknown, null, and empty response items.
  • Retry rejected responses with the validation error included in the correction prompt.

Validation:

  • Validate gettext Python brace, printf-style, and Qt placeholders before applying translations.
  • Validate printf and brace/interpolation placeholders in the shared key-value pipeline.
  • Apply translations and update lock checksums only after identity and placeholder validation succeeds.
  • Remove the Markdown raw-response fallback that bypassed source identity.

Parallel translation:

  • Use plural-aware translation handling in the full-parallel gettext path.
  • Preserve exact source-to-translation association across concurrent languages and chunks.

Coverage:

  • Add regression tests for reordered responses and missing, duplicate, or unknown IDs.
  • Add placeholder-loss tests for gettext and key-value formats.
  • Add sequential and parallel end-to-end identity mapping tests.

v0.12.1

Choose a tag to compare

@github-actions github-actions released this 07 Jul 19:03

Changes

Fix POT templates copied from PO sources

When gettext extraction runs on a .po file used as a source catalog (for example grub-theme from po/en_US.po), xgettext copies msgstr values into the generated .pot file. A POT template must keep empty msgstr for non-header entries.

  • Clear non-header msgstr after RunXgettext writes the POT file.
  • Keep doExtract normalization as a second safety pass.
  • Add ClearTranslationsForPOT on the PO file model.
  • Add regression tests for PO-source extraction and POT clearing.

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 07 Jul 18:12

Changes

Add universal config schema

Introduce the new public lokit.yaml schema built around from, except, to, and template. The new shape replaces older public examples based on source, target, dir, pattern, pot, sources, records_path, key_field, and config while keeping runtime normalization for the internal target model.

Configuration changes:

  • Add first-class from, except, to, and template fields.
  • Support from as either a list of file/glob sources or an indexed source object.
  • Support indexed source objects with index, records, key, and fields.
  • Use to as the public output path template for translated files.
  • Use template for generated intermediate catalogs such as gettext POT files.
  • Keep source exclusions explicit through except instead of hardcoded vendor defaults.

Markdown changes:

  • Fix source discovery for explicit Markdown files, glob patterns, and single-file targets.
  • Support translated Markdown layouts based on {path} and {id}.
  • Preserve fenced code blocks with placeholders so code is not sent to translation providers.
  • Restore fenced code blocks verbatim when writing translated Markdown files.

Translation robustness:

  • Parse the first complete JSON array from provider responses and ignore trailing extra text.
  • Avoid failing otherwise valid translations when providers append comments or explanations.

Format fixes:

  • Fix vue-i18n JSON output so HTML fragments such as
    are not escaped as Unicode sequences.
  • Improve lock and status source collection for Markdown targets using the new schema.

Documentation:

  • Update README, configuration, format, advanced, and command documentation for the new schema.
  • Refresh examples for gettext, po4a, Markdown, i18next, vue-i18n, Android, YAML, properties, Flutter, JS-KV, desktop, and polkit.

Release v0.11.4

Choose a tag to compare

@crim50n crim50n released this 22 Jun 12:51

What's New

  • Fix JS-KV target handling

Installation

Download the appropriate binary for your platform from the assets below.

Linux/macOS

# Download and extract
tar -xzf lokit-v0.11.4-linux-amd64.tar.gz

# Move to PATH
sudo mv lokit-v0.11.4-linux-amd64 /usr/local/bin/lokit

# Verify
lokit version

Supported Platforms

  • Linux (amd64, arm64)
  • macOS (amd64/Intel, arm64/Apple Silicon)

Release v0.11.3

Choose a tag to compare

@github-actions github-actions released this 20 Jun 13:27

Fixes

  • Preserve groff font escapes, multiline newlines, and technical identifiers in PO translations.
  • Retry invalid or truncated translation JSON responses before failing.
  • Make --force retranslate eligible entries consistently across PO and key-value targets.
  • Allow repeated or comma-separated --target values for lock clean.
  • Avoid trailing whitespace when writing empty translator comments.

Release v0.11.2

Choose a tag to compare

@crim50n crim50n released this 19 Jun 17:29

What's New

  • Improve lock cleanup and model guidance

Installation

Download the appropriate binary for your platform from the assets below.

Linux/macOS

# Download and extract
tar -xzf lokit-v0.11.2-linux-amd64.tar.gz

# Move to PATH
sudo mv lokit-v0.11.2-linux-amd64 /usr/local/bin/lokit

# Verify
lokit version

Supported Platforms

  • Linux (amd64, arm64)
  • macOS (amd64/Intel, arm64/Apple Silicon)

Release v0.11.1

Choose a tag to compare

@crim50n crim50n released this 18 Jun 17:23

What's New

  • Fix po4a target coverage and OpenAI OAuth responses

Installation

Download the appropriate binary for your platform from the assets below.

Linux/macOS

# Download and extract
tar -xzf lokit-v0.11.1-linux-amd64.tar.gz

# Move to PATH
sudo mv lokit-v0.11.1-linux-amd64 /usr/local/bin/lokit

# Verify
lokit version

Supported Platforms

  • Linux (amd64, arm64)
  • macOS (amd64/Intel, arm64/Apple Silicon)

Release v0.11.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 14:23

Improvements

  • Expanded gettext extraction across mixed source formats, including Desktop, Glade, and Polkit inputs.
  • Seeded inline desktop translations into gettext PO files during init and translate workflows.
  • Improved PO merge behavior for restored obsolete entries and context-qualified strings.
  • Ensured untranslated gettext entries are still sent for translation even when lock data is unchanged.
  • Updated the installer default path to use XDG-friendly user binaries.

Release v0.10.1

Choose a tag to compare

@crim50n crim50n released this 13 Mar 17:53

What's New

  • Release v0.10.1: fix lock semantics and index target UX

Installation

Download the appropriate binary for your platform from the assets below.

Linux/macOS

# Download and extract
tar -xzf lokit-v0.10.1-linux-amd64.tar.gz

# Move to PATH
sudo mv lokit-v0.10.1-linux-amd64 /usr/local/bin/lokit

# Verify
lokit version

Supported Platforms

  • Linux (amd64, arm64)
  • macOS (amd64/Intel, arm64/Apple Silicon)