chubbyphp/chubbyphp-translation

Chubbyphp Translation

1.1.3 2018-04-20 18:18 UTC

README

Build Status Scrutinizer Code Quality Code Coverage Total Downloads Monthly Downloads Latest Stable Version Latest Unstable Version

Description

A simple translation solution.

Requirements

  • php: ~7.0

Suggest

  • pimple/pimple: ~3.0
  • twig/twig: ^1.25.0

Installation

Through Composer as chubbyphp/chubbyphp-translation.

composer require chubbyphp/chubbyphp-translation "~1.1"

Usage

Translator

<?php

use Chubbyphp\Translation\LocaleTranslationProvider;
use Chubbyphp\Translation\Translator;

$translator = new Translator([
    new LocaleTranslationProvider('de', [
        'some.existing.key' => 'erfolgreiche Uebersetzung',
        'another.existing.key' => '%d erfolgreiche Uebersetzungen',
        'yetanother.existing.key' => '{{key}} erfolgreiche Uebersetzungen'
    ]),
    new LocaleTranslationProvider('en', [
        'some.existing.key' => 'successful translation',
        'another.existing.key' => '%d successful translations'
        'yetanother.existing.key' => '{{key}} successful translations'
    ])
]);

echo $translator->translate('de', 'some.existing.key'); // erfolgreiche Uebersetzung
echo $translator->translate('en', 'some.existing.key'); // successful translation
echo $translator->translate('fr', 'some.existing.key'); // some.existing.key

echo $translator->translate('de', 'another.existing.key', [5]); // 5 erfolgreiche Uebersetzungen
echo $translator->translate('en', 'another.existing.key', [5]); // 5 successful translations
echo $translator->translate('fr', 'another.existing.key', [5]); // some.existing.key

echo $translator->translate('de', 'yetanother.existing.key', ['key' => 5]); // 5 erfolgreiche Uebersetzungen
echo $translator->translate('en', 'yetanother.existing.key', ['key' => 5]); // 5 successful translations
echo $translator->translate('fr', 'yetanother.existing.key', ['key' => 5]); // some.existing.key

TranslationProvider (Pimple)

<?php

use Chubbyphp\Translation\Translator;
use Chubbyphp\Translation\TranslationProvider;
use Pimple\Container;

$container->register(new TranslationProvider);

$container->extend('translator.providers', function (array $providers) use ($container) {
    $providers[] = new LocaleTranslationProvider('de', [
        'some.existing.key' => 'erfolgreiche Uebersetzung',
        'another.existing.key' => '%d erfolgreiche Uebersetzungen'
    ]);
    $providers[] = new LocaleTranslationProvider('en', [
        'some.existing.key' => 'successful translation',
        'another.existing.key' => '%d successful translations'
    ]);

    return $providers;
});

/** @var Translation $translator */
$translator = $container['translator'];

TranslationTwigExtension

<?php

use Chubbyphp\Translation\LocaleTranslationProvider;
use Chubbyphp\Translation\TranslationTwigExtension;
use Chubbyphp\Translation\Translator;

$twig->addExtension(new TranslationTwigExtension(new Translator([])));
{{ 'some.existing.key'|translate('de') }}
{{ 'another.existing.key'|translate('de', [5]) }}
{{ 'yetanother.existing.key'|translate('de', ['key' => 5]) }}

Copyright

Dominik Zogg 2016