Skip to content

Agile Toolkit Translation library - Based on I18Next library

License

Notifications You must be signed in to change notification settings

abbadon1334/atk4-i18next-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

812ec8b · Apr 23, 2020

History

88 Commits
Jul 15, 2019
Jul 15, 2019
Jul 15, 2019
Jul 11, 2019
Jul 10, 2019
Jul 11, 2019
Jul 10, 2019
Jul 12, 2019
Jul 11, 2019
Jul 10, 2019
Jul 10, 2019
Jul 10, 2019
Apr 23, 2020
Aug 3, 2019
Jul 10, 2019
Jul 10, 2019

Repository files navigation

PHP Language library

Based on i18next http://i18next.com

Interpolate direct with ATK4 - Agile Toolkit Models https://www.agiletoolkit.org/

Build Status Codacy Badge Codacy Badge Coverage Status StyleCI Maintainability Test Coverage

install with composer :

composer require abbadon1334/atk4-i18next-php

All documentation about the original library can be found here : http://i18next.com/

How to use :

$this->translator = new Translator();
$this->translator->setTranslationsPath(__DIR__.'/data/locales');

Define if filename will be used has namespace :

$this->translator->useFilenameAsNamespace(true);

Define primary and fallback languages (using names of the folder) :

$this->translator->setLanguagePrimary($language);
$this->translator->setLanguageFallback($fallback);

Add additional language :

$this->translator->addLanguage('it');

Translate :

interface TranslatorInterface
{
    /**
     * Translates the given message.
     *
     * @param string      $key
     * @param array|null  $parameters Array of parameters used to translate message
     * @param string|null $context
     * @param string|null $locale     The locale or null to use the default
     *
     * @return string The translated string
     */
    public function _(string $key, ?array $parameters = null, ?string $context = null, ?string $locale = null): string;
}

// Usage

$result = $this->translator->_('definitionKey');

$result = $this->translator->_('definitionKey', ['param1' => 'test']);

$result = $this->translator->_('definitionKey', ['param1' => 'test'], 'context');

$result = $this->translator->_('definitionKey', ['param1' => 'test'], 'context', 'specificLanguage');

$result = $this->translator->_('namespace:definitionKey', ['param1' => 'test'], 'context', 'specificLanguage');

Support I18Next

  • Read translations files from folder, every folder is a language code
    • JSON
    • YAML
    • PHP Array
  • Write translations files to a folder, every folder is a language code
    • JSON
    • YAML
    • PHP Array
  • Get a defined translation in primary language
    • If not found try in fallback language
      • If not found return original string
  • Namespaces
    • Get defined translation based on prioritized fallback namespaces
  • Context as {key}_{context}
  • Plurals
    • Singular as {key}
    • Plurals as {key}_plural
    • Multiple plurals as {key}_{int $counter}
      • Manage when $counter is bigger than max defined plurals
    • Nested interpolate plurals
    • Intervals
  • Interpolate
    • Replace {{key}} with defined $paramater value
      • If {{key}} has a point like {{key.index}} and $parameters[index] is an array or object will retrive the value
  • Nesting
    • Basic
    • Plurals
  • Formatting
  • Adding Helper for use method Translator::_ as global functions __
  • Adding Helper for use Translator as a global singleton instance
  • Collect missing requested keys
  • Adding Helper for search/collect calls to method Translator _ in code
  • Added direct translations using key as translation

Support ATK4 - Agile Toolkit Model

  • Interpolate with \atk4\data\Model