Translation system using neon files, supports plurals and string replacements, fallback language. Extension to Nette Framework ^3.0
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ů.
Put your translations to
%appDir%/translations directory as
# register extension extensions: translate: ElCheco\Translator\Extension # configuration translate: default: en_US fallback: cs_CZ
<?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__)); $translator->setLocale('cs_CZ'); $translator->translate('Welcome!');
- PHP 7.2+