Skip to content

drago-ex/translator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

294 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Drago Translator

Lightweight translator for Nette Framework using NEON files, supporting global and module-specific translations.

License: MIT PHP version Tests Coding Style CodeFactor Coverage Status

Requirements

  • PHP >= 8.3
  • Nette Framework
  • Composer

Installation

composer require drago-ex/translator

Extension registration

Register the DI extension in your NEON configuration.

extensions:
	translator: Drago\Localization\DI\TranslatorExtension(%appDir%, %tempDir%)

Optional configuration

translator:
	autoFinder: false
	translateDirs:
		- %appDir%/First/Translate
		- %appDir%/Second/Translate

Translator Behavior

  • All directories listed in translateDirs are loaded in order.
  • Later directories override translations from earlier ones.
  • If autoFinder is enabled, the entire application directory is scanned for NEON files.

Translation files must be named by language code:

cs.neon
en.neon

Translation File Format

"Hello, world!": "Hello, world!"

Using Translator in Presenters

Add the TranslatorAdapter trait to your presenter:

use Drago\Localization\TranslatorAdapter;

The trait provides:

  • persistent language parameter ($lang)
  • automatic translator initialization
  • template integration

Accessing the Current Language

You can access the currently set language using the following property:

$this->lang;

Getting Translator Instance

To get the initialized translator for the current language:

$this->getTranslator()

Using Translations in Templates

The translator is automatically registered in templates. Example usage in Latte:

{_"Hello, world!"}
{$label|translate}

Using Translator in Forms

To enable translations in forms, set the translator explicitly:

$form->setTranslator($this->getTranslator());

Routing for Language Switching

To support language prefixes, configure your routes accordingly:

$router->addRoute('[<lang=en cs|en>/]<presenter>/<action>', 'Presenter:action');

Switching Languages in Templates

You can switch languages by passing the lang parameter:

<a n:href="this, lang => cs">Czech</a>
<a n:href="this, lang => en">English</a>

Notes

  • Translator loads translations lazily on first use
  • Translations are loaded once per request
  • Missing keys return the original message

About

🌍 Lightweight translator for Nette Framework using NEON files, supporting global and module-specific translations.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages