Skip to content

Commit

Permalink
Merge pull request #8 from pCyril/prepare-app-for-multilanguage
Browse files Browse the repository at this point in the history
Prepare code for multilingual
  • Loading branch information
pCyril committed Jan 23, 2016
2 parents 7e6d4cf + 5294122 commit ba731a6
Show file tree
Hide file tree
Showing 11 changed files with 210 additions and 58 deletions.
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
CHANGELOG for v2.0.x
====================

* v2.0.0
* feature #7 Prepare code for multilingual support (pCyril)


CHANGELOG for v1.0.x
====================

* v1.0.0
* Migrate Symfony3 to Silex (youknowriad)
* Use pdo_sqlite instead of mysql (youknowriad)
* fix miss typed words (aduroy)
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ Il est souvent laborieux de passer une commande groupée, c'est pourquoi j'ai d
* Créer la base de données : `.bin/doctrine orm:schema-tool:create`
* Il vous faudra ensuite installer l'application sur un serveur web classique avec une petite base de données et pouvoir appeler l'url en HTTPS
* Ensuite vous devrez configurer votre [commande dans l'interface de Slack](https://my.slack.com/services/new/slash-commands) (les droits admin sont nécessaires)
* Appeler l'url https://yourdomain.tld/{_locale}/order
* Choisir de l'appeler en GET

## Configuration

Expand Down
6 changes: 5 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,16 @@
"autoload": {
"psr-4": { "SlackOrder\\": "src/" }
},
"suggest": {
"ext-pdo_sqlite": "For SQLite databases"
},
"require": {
"php": ">=5.5.9",
"silex/silex": "^1.3",
"doctrine/orm": "^2.5",
"symfony/yaml": "^3.0",
"swiftmailer/swiftmailer": "^5.4",
"twig/twig": "^1.23"
"twig/twig": "^1.23",
"symfony/translation": "^3.0"
}
}
68 changes: 66 additions & 2 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions config/config.yml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,6 @@ order:
send_by_mail: true
example: test
sender_email: sender@host.com

translator:
locale_fallbacks: [fr]
Empty file modified data/.gitkeep
100644 → 100755
Empty file.
15 changes: 14 additions & 1 deletion src/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@
use Doctrine\Common\Annotations\AnnotationRegistry;
use Doctrine\ORM\Configuration;
use Silex\Provider\SwiftmailerServiceProvider;
use Silex\Provider\TranslationServiceProvider;
use Silex\Provider\TwigServiceProvider;
use SlackOrder\Controller\OrderController;
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Symfony\Component\Translation\Loader\YamlFileLoader;
use Symfony\Component\Yaml\Yaml;

class Application extends \Silex\Application {
Expand Down Expand Up @@ -39,12 +41,23 @@ public function init($debug = false)
'twig.path' => __DIR__.'/views',
]);

// Configure Translator
$this->register(new TranslationServiceProvider(), array(
'locale_fallbacks' => $config['translator']['locale_fallbacks'],
));
$this['translator'] = $this->share($this->extend('translator', function ($translator, $this) {
$translator->addLoader('yaml', new YamlFileLoader());
$translator->addResource('yaml', __DIR__.'/locales/fr.yml', 'fr');

return $translator;
}));

// Controllers
$orderController = new OrderController();
$this->get('/', function() {
return 'Server Running';
});
$this->get('/order', [$orderController, 'orderAction']);
$this->get('/{_locale}/order', [$orderController, 'orderAction']);
}

}
14 changes: 7 additions & 7 deletions src/Controller/OrderController.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,27 @@ public function orderAction(Application $app, Request $request)
}

$orderCommandService = new OrderCommandService(
$app['doctrine.manager'], $app['mailer'], $app['twig'], $config['order']);
$app['doctrine.manager'], $app['mailer'], $app['twig'], $app['translator'], $config['order']);

$text = $request->get('text');
$text = !empty($text) ? $text : OrderCommandService::ORDER_COMMAND_HELP;
$text = !empty($text) ? $text : $app['translator']->trans('command.options.help');
$textExploded = explode(' ', $text);
switch($textExploded[0]) {
case OrderCommandService::ORDER_COMMAND_HELP:
case $app['translator']->trans('command.options.help'):
default:
$data = $orderCommandService->help();
break;
case OrderCommandService::ORDER_COMMAND_CANCEL:
case $app['translator']->trans('command.options.cancel'):
$data = $orderCommandService->cancelOrder($request->get('user_name'));
break;
case OrderCommandService::ORDER_COMMAND_LIST:
case $app['translator']->trans('command.options.list'):
$data = $orderCommandService->orderList();
break;
case OrderCommandService::ORDER_COMMAND_ORDER:
case $app['translator']->trans('command.options.place'):
unset($textExploded[0]);
$data = $orderCommandService->addOrder($request->get('user_name'), implode(" ", $textExploded));
break;
case OrderCommandService::ORDER_COMMAND_SEND:
case $app['translator']->trans('command.options.send'):
unset($textExploded[0]);
$data = $orderCommandService->send($request->get('user_name'), $textExploded);
break;
Expand Down

0 comments on commit ba731a6

Please sign in to comment.