Skip to content

deanc/silex-web-translator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Silex Web Translator

Introduction

This Silex Provider allows you to easily manage the translation files for your app via a web-based interface. Current features include:

  • Dashboard for a quick overview of the current status of translations for your app including total translations, total locales and total untranslated strings.

dashboard

  • A simple editor for translation strings, allowing you to quickly see which translation strings are missing for each locale

translation screen 1 translation screen 2

Requirements

  • PHP 5.4+
  • Using YAML files for your translations. They must be formatted as <domain>.<locale>.yml. If you aren't using the domains featured of the Symfony Translation component then make sure you name your translation files messages.<locale>.yml.
  • For all usage of locales in your app use the ISO 639-1 language code, an underscore (_), then the ISO 3166-1 alpha-2 country code (e.g. fr_FR for French/France).
  • Make sure you configure all locales as fallbacks when setting up the TranslationProvider.

Installation

  • Configuration the default Silex TranslationServiceProvider in a similar way:
$app['locale'] = 'en_GB';
$app->register(new Silex\Provider\TranslationServiceProvider(), array(
    'locale_fallbacks' => array('en_GB', 'fr_FR', 'fi_FI'),
));

$app['translator'] = $app->share($app->extend('translator', function($translator, $app) {

    $translator->addLoader('yaml', new Symfony\Component\Translation\Loader\YamlFileLoader());

    $translator->addResource('yaml', __DIR__.'/../translations/messages.en_GB.yml', 'en_GB');
    $translator->addResource('yaml', __DIR__.'/../translations/messages.fr_FR.yml', 'fr_FR');
    $translator->addResource('yaml', __DIR__.'/../translations/messages.fi_FI.yml', 'fi_FI');
    $translator->addResource('yaml', __DIR__.'/../translations/rules.en_GB.yml', 'en_GB', 'rules');

    return $translator;
}));
  • Make sure you are using and have registered the following service providers:
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
$app->register(new Silex\Provider\FormServiceProvider());
$app->register(new Silex\Provider\ValidatorServiceProvider());
$app->register(new Silex\Provider\TwigServiceProvider());
  • Register the service provider and configure the options
$app['webtranslator.options'] = array(
    'translator_file_path' => __DIR__ . '/../translations/'
);
$app->register(new DC\WebTranslator\Provider\WebTranslatorServiceProvider());
  • Mount the controller provider
$app->mount('/webtranslator', new DC\WebTranslator\Controller\WebTranslatorControllerProvider());

FAQ

How to protect the interface with user authentication?

  • You can protect the route you mount the controller on, as you would any other route, using the Symfony security component.

Known issues

  • If you import nested YML files with pretty new line (pipe) syntax, it will replace new lines with \r\n

Thanks/Credits

About

A small little provider that can be easily mounted to Silex apps to give a web translation interface

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published