Translation system using neon files, supports plurals and string replacements, fallback language. Extension to Nette Framework ^3.0

v0.2.2 2019-10-14 14:56 UTC


Downloads this Month License

Lightweight and powerful translation system for PHP 7.2+, build as component not only for Nette framework

Note: Inspired by rostenkowski/translate, but I needed support for Nette Framework ^2.4 and fallback translation possibility. I also refactored a bit the plurals to be naturally understandable.


composer require elcheco/translator


Translations are stored in *.neon files in this format:

# simple message
Hi!: Ahoj!

# supporting placeholder
Hi %s!: Ahoj %s! 

# supporting also plurals in multiple forms

# in English it's easy to use
You have %s points.: 
  0: You have no points
  1: You have %s point.
  2: You have %s points.

# but for example in Czech plurals are a bit more complicated  
You have %s points.: 
  0: Nemáte žádné body.
  1: Máte %s bod.
  "2-4": Máte %s body.
  5: Máte %s bodů.

Usage with Nette Framework

Put your translations to %appDir%/translations directory as cs_CZ.neon etc.

# register extension
  translate: ElCheco\Translator\Extension
# configuration
  default: en_US
  fallback: cs_CZ

Usage with plain PHP


namespace App;

require __DIR__ . '/vendor/autoload.php';

use ElCheco\Translator\Translator;
use ElCheco\Translator\NeonDictionary\NeonDictionaryFactory;

// both translations and cache are in the same directory
$translator = new Translator(new NeonDictionaryFactory(__DIR__, __DIR__));


  • PHP 7.2+
  • nette/di
  • nette/neon
  • nette/safe-stream
  • nette/utils
  • nette/tester