DownloadPHP Language library
Based on i18next http://i18next.com
Interpolate direct with ATK4 - Agile Toolkit Models https://www.agiletoolkit.org/
 
 
 
 
 
 
  
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 TranslatorMock();
$this->translator->setTranslationsPath(__DIR__.'/data/locales');
 
Define if filename will be used has namespace : $this->translator->useFilenameAsNamespace(true);
 
Define primary and fallback language (name of the folders where library load files) : $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
http://i18next.com
- 
[x] Read translations files from folder, every folder is a language code
- [x] JSON
- [ ] YAML
- [ ] PHP Array
 
- 
[ ] Write translations files to a folder, every folder is a language code
- [ ] JSON
- [ ] YAML
- [ ] PHP Array
 
- 
[x] Get a defined translation in primary language
- [x] If not found try in fallback language
    - [x] If not found return original string
 
- 
[x] Namespaces
- [x] Get defined translation based on prioritized fallback namespaces
 
- 
[x] Context as {key}_{context}
 
- 
[x] Plurals
- [x] Singular as {key}
- [x] Plurals as {key}_plural
- [x] Multiple plurals as {key}_{int $counter}
    - [x] Manage when $counter is bigger than max defined plurals
- [x] Nested interpolate plurals
- [x] Intervals
 
- 
[x] Interpolate        
- [x] Replace {{key}} with defined $paramater value
    - [x] If {{key}} has a point like {{key.index}} and $parameters[index] is an array or object will retrive the value
 
- 
[x] Nesting 
- [x] Basic
- [x] Plurals
 
- 
[ ] Formatting
 
- 
[x] Adding Helper for use method Translator::_ as global functions __
 
- 
[x] 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
 
- 
[x] Added direct translations using key as translation    
 
 
Support ATK4 - Agile Toolkit Model
https://www.agiletoolkit.org
- [x] Interpolate with \atk4\data\Model
 
  |