nowo-tech/translation-yaml-tools-bundle

Symfony console tools for YAML translations: nested tree conversion, key sorting, and machine translation for missing keys (Google, DeepL, LibreTranslate; pluggable).

Maintainers

Package info

github.com/nowo-tech/TranslationYamlToolsBundle

Documentation

Type:symfony-bundle

pkg:composer/nowo-tech/translation-yaml-tools-bundle

Statistics

Installs: 21

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.3.1 2026-04-10 17:27 UTC

This package is auto-updated.

Last update: 2026-04-10 17:32:24 UTC


README

CI Packagist Version Packagist Downloads License PHP Symfony GitHub stars Coverage

Found this useful? Install from Packagist and consider starring the repository.

Symfony developer tools for YAML translation files: discover configured translation directories, convert flat dot-keys to a nested tree (with structural validation), flatten nested maps back to dot-keys at the file root, sort keys alphabetically, and fill missing keys in a target locale using Google Cloud Translation, DeepL, or LibreTranslate (pluggable MachineTranslatorInterface). The default source locale follows Symfony’s translator / kernel default locale (see docs/CONFIGURATION.md) unless you set nowo_translation_yaml_tools.default_locale.

Features

  • Resolves translation paths from translator.default_path and from config/packages/**/translation.yaml (framework.translator.default_path and paths).
  • Interactive console flow (arrow keys) to pick domain and locale, with non-interactive --domain / --locale flags.
  • nowo:translation-yaml:tree — validates that dot-keys can be represented as a tree; on failure prints the conflicting prefix.
  • nowo:translation-yaml:flatten — writes a one-level map with dot-separated keys (inverse of the tree layout).
  • nowo:translation-yaml:sort — recursive alphabetical sort of associative keys.
  • nowo:translation-yaml:fill-missing — merges missing keys into a target locale using the configured machine translator (Google, DeepL, or LibreTranslate); optional --tree output with the same validation as the tree command.
  • nowo:translation-yaml:audit — read-only report: tree-safe YAML, alphabetical key order, missing keys vs source locale; compact OK line per domain when everything passes.
  • Configurable YAML indent (yaml_tree_indent) for dumps.

Requirements

  • PHP >=8.1 <8.6
  • Symfony ^6.0 || ^7.0 || ^8.0 (FrameworkBundle, Console, HttpClient, Yaml, …)
  • For fill-missing: enable framework.http_client: true, choose machine_translator in config, and set GOOGLE_TRANSLATE_API_KEY (Google) or DEEPL_AUTH_KEY (DeepL) when using those backends; LibreTranslate needs no paid key for open instances (see docs/CONFIGURATION.md).

Quick install

composer require --dev nowo-tech/translation-yaml-tools-bundle

Register the bundle in config/bundles.php for dev (Flex recipe does this). See Installation.

Demos (Symfony 7 & 8)

FrankenPHP sample apps live under demo/: Web Profiler, Twig Inspector (nowo-tech/twig-inspector-bundle), explicit framework.enabled_locales / translator configuration, two translation directories (translations/ + translations_extra/), and a web page at / that summarizes default locale, enabled locales, YAML paths, missing files per domain, and missing keys vs the default locale. In dev, the demos also enable missing_translation_log (SQLite, event_dispatcher flush strategy, optional Web UI) — see demo/README.md.

make -C demo up-symfony7   # default PORT 8037 — see demo/symfony7/.env.example
make -C demo up-symfony8   # default PORT 8038

FrankenPHP worker mode: Supported in production Caddyfile; development uses Caddyfile.dev without worker (see docs/DEMO-FRANKENPHP.md).

Documentation

Additional documentation

Tests and coverage

  • PHP: run make test-coverage and read the final Global PHP coverage (Lines): … line in the output.
  • TS/JS: N/A
  • Python: N/A

Version information

See SECURITY POLICY for supported versions.

License

This bundle is released under the MIT License. See LICENSE.