deanc / silex-web-translator
A boilerplate to get started with silex
Installs: 14
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 3
Forks: 1
Open Issues: 7
Language:HTML
Requires
- php: >=5.4.0
- doctrine/dbal: ^2.5
- silex/silex: ~1.3
- symfony/config: ^2.7
- symfony/console: ^2.7
- symfony/form: ^2.7
- symfony/security: ~2.7
- symfony/translation: ^2.7
- symfony/twig-bridge: ^2.7
- symfony/validator: ^2.7
- symfony/yaml: ^2.7
This package is not auto-updated.
Last update: 2025-01-04 19:32:14 UTC
README
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.
- A simple editor for translation strings, allowing you to quickly see which translation strings are missing for each locale
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 SymfonyTranslation
component then make sure you name your translation filesmessages.<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
- Big thanks to StartBootstrap for a few styles for the admin: https://github.com/IronSummitMedia/startbootstrap-sb-admin