deanc/silex-web-translator

一个用于开始使用silex的样板

dev-master 2015-10-14 08:09 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:10:42 UTC


README

简介

这个Silex Provider允许您通过基于Web的界面轻松管理应用程序的翻译文件。当前功能包括:

  • 仪表板,快速查看应用程序当前翻译状态,包括总翻译数、总区域和总未翻译字符串。

dashboard

  • 简单的翻译字符串编辑器,允许您快速查看每个区域缺少哪些翻译字符串。

translation screen 1 translation screen 2

要求

  • PHP 5.4+
  • 使用YAML文件进行翻译。它们必须格式化为<domain>.<locale>.yml。如果您不使用Symfony Translation组件提供的域,请确保您的翻译文件命名为messages.<locale>.yml
  • 在您的应用程序中所有区域的使用中,请使用ISO 639-1语言代码,一个下划线(_),然后是ISO 3166-1 alpha-2国家代码(例如fr_FR代表法语/法国)。
  • 确保在设置TranslationProvider时将所有区域配置为后备。

安装

  • 以类似方式配置默认的Silex TranslationServiceProvider
$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;
}));
  • 确保您正在使用并已注册以下服务提供商
$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());
  • 注册服务提供商并配置选项
$app['webtranslator.options'] = array(
    'translator_file_path' => __DIR__ . '/../translations/'
);
$app->register(new DC\WebTranslator\Provider\WebTranslatorServiceProvider());
  • 挂载控制器提供商
$app->mount('/webtranslator', new DC\WebTranslator\Controller\WebTranslatorControllerProvider());

常见问题解答

如何通过用户身份验证保护界面?

  • 您可以使用Symfony安全组件,像任何其他路由一样,保护挂载控制器上的路由。

已知问题

  • 如果您导入具有新行(管道)语法的嵌套YML文件,它将使用\r\n替换新行

感谢/致谢