diff --git a/composer.json b/composer.json index 8c300f4ac3178a468d446810813036cea791a1e1..8a2cb898d3a098029dd35922b04c3c4b96e8ffc9 100644 --- a/composer.json +++ b/composer.json @@ -31,7 +31,8 @@ "robrichards/xmlseclibs": "~2.0", "whitehat101/apr1-md5": "~1.0", "twig/twig": "~1.0", - "gettext/gettext": "^3.5" + "gettext/gettext": "^3.5", + "jaimeperez/twig-configurable-i18n": "^1.0" }, "require-dev": { "ext-pdo_sqlite": "*", diff --git a/composer.lock b/composer.lock index da9c63f34989be8899004be1436fd802ed5f07ab..e29b39a0222fe25ab9671c8d6008c531a3d012ab 100644 --- a/composer.lock +++ b/composer.lock @@ -4,9 +4,167 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "705e7716f609c32a0b72136bb0dc8172", - "content-hash": "55b311b9889ea3f7d78f91850500d2fb", + "hash": "948ad498689601153216f025da46e4ef", + "content-hash": "971676ab96e3a1026280dbd735958063", "packages": [ + { + "name": "gettext/gettext", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/oscarotero/Gettext.git", + "reference": "cd3be64443551e3a693117c4bccbe53e36282456" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/oscarotero/Gettext/zipball/cd3be64443551e3a693117c4bccbe53e36282456", + "reference": "cd3be64443551e3a693117c4bccbe53e36282456", + "shasum": "" + }, + "require": { + "gettext/languages": "2.*", + "php": ">=5.3.0" + }, + "require-dev": { + "illuminate/view": "*", + "symfony/yaml": "~2", + "twig/extensions": "*", + "twig/twig": "*" + }, + "suggest": { + "illuminate/view": "Is necessary if you want to use the Blade extractor", + "symfony/yaml": "Is necessary if you want to use the Yaml extractor/generator", + "twig/extensions": "Is necessary if you want to use the Twig extractor", + "twig/twig": "Is necessary if you want to use the Twig extractor" + }, + "type": "library", + "autoload": { + "psr-4": { + "Gettext\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oscar Otero", + "email": "oom@oscarotero.com", + "homepage": "http://oscarotero.com", + "role": "Developer" + } + ], + "description": "PHP gettext manager", + "homepage": "https://github.com/oscarotero/Gettext", + "keywords": [ + "JS", + "gettext", + "i18n", + "mo", + "po", + "translation" + ], + "time": "2016-08-01 18:09:57" + }, + { + "name": "gettext/languages", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/mlocati/cldr-to-gettext-plural-rules.git", + "reference": "c43ade7e3fb68bcf2379036513dce8d20553d9c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mlocati/cldr-to-gettext-plural-rules/zipball/c43ade7e3fb68bcf2379036513dce8d20553d9c8", + "reference": "c43ade7e3fb68bcf2379036513dce8d20553d9c8", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Gettext\\Languages\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michele Locati", + "email": "mlocati@gmail.com", + "role": "Developer" + } + ], + "description": "gettext languages with plural rules", + "homepage": "https://github.com/mlocati/cldr-to-gettext-plural-rules", + "keywords": [ + "cldr", + "i18n", + "internationalization", + "l10n", + "language", + "languages", + "localization", + "php", + "plural", + "plural rules", + "plurals", + "translate", + "translations", + "unicode" + ], + "time": "2015-03-27 11:32:41" + }, + { + "name": "jaimeperez/twig-configurable-i18n", + "version": "v1.0", + "source": { + "type": "git", + "url": "https://github.com/jaimeperez/twig-configurable-i18n.git", + "reference": "9b70edae9d512b06af24196c0ba24645cfcd87bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jaimeperez/twig-configurable-i18n/zipball/9b70edae9d512b06af24196c0ba24645cfcd87bd", + "reference": "9b70edae9d512b06af24196c0ba24645cfcd87bd", + "shasum": "" + }, + "require": { + "twig/extensions": "^1.3" + }, + "type": "project", + "autoload": { + "psr-4": { + "JaimePerez\\TwigConfigurableI18n\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "Jaime Perez", + "email": "jaime.perez@uninett.no" + } + ], + "description": "This is an extension on top of Twig's i18n extension, allowing you to customize which functions to use for translations.", + "keywords": [ + "extension", + "gettext", + "i18n", + "internationalization", + "translation", + "twig" + ], + "time": "2016-08-25 13:39:05" + }, { "name": "psr/log", "version": "1.0.0", @@ -138,6 +296,58 @@ "description": "SAML2 PHP library from SimpleSAMLphp", "time": "2016-07-26 13:28:46" }, + { + "name": "twig/extensions", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig-extensions.git", + "reference": "449e3c8a9ffad7c2479c7864557275a32b037499" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/449e3c8a9ffad7c2479c7864557275a32b037499", + "reference": "449e3c8a9ffad7c2479c7864557275a32b037499", + "shasum": "" + }, + "require": { + "twig/twig": "~1.20|~2.0" + }, + "require-dev": { + "symfony/translation": "~2.3" + }, + "suggest": { + "symfony/translation": "Allow the time_diff output to be translated" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_Extensions_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Common additional features for Twig that do not directly belong in core", + "homepage": "http://twig.sensiolabs.org/doc/extensions/index.html", + "keywords": [ + "i18n", + "text" + ], + "time": "2015-08-22 16:38:35" + }, { "name": "twig/twig", "version": "v1.24.1", @@ -766,16 +976,16 @@ }, { "name": "symfony/config", - "version": "v3.1.2", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "bcf5aebabc95b56e370e13d78565f74c7d8726dc" + "reference": "a7630397b91be09cdd2fe57fd13612e258700598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/bcf5aebabc95b56e370e13d78565f74c7d8726dc", - "reference": "bcf5aebabc95b56e370e13d78565f74c7d8726dc", + "url": "https://api.github.com/repos/symfony/config/zipball/a7630397b91be09cdd2fe57fd13612e258700598", + "reference": "a7630397b91be09cdd2fe57fd13612e258700598", "shasum": "" }, "require": { @@ -815,20 +1025,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:41:56" + "time": "2016-07-26 08:04:17" }, { "name": "symfony/console", - "version": "v3.1.2", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "747154aa69b0f83cd02fc9aa554836dee417631a" + "reference": "f9e638e8149e9e41b570ff092f8007c477ef0ce5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/747154aa69b0f83cd02fc9aa554836dee417631a", - "reference": "747154aa69b0f83cd02fc9aa554836dee417631a", + "url": "https://api.github.com/repos/symfony/console/zipball/f9e638e8149e9e41b570ff092f8007c477ef0ce5", + "reference": "f9e638e8149e9e41b570ff092f8007c477ef0ce5", "shasum": "" }, "require": { @@ -875,20 +1085,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2016-06-29 07:02:31" + "time": "2016-07-26 08:04:17" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.8", + "version": "v2.8.9", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b180b70439dca70049b6b9b7e21d75e6e5d7aca9" + "reference": "889983a79a043dfda68f38c38b6dba092dd49cd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b180b70439dca70049b6b9b7e21d75e6e5d7aca9", - "reference": "b180b70439dca70049b6b9b7e21d75e6e5d7aca9", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/889983a79a043dfda68f38c38b6dba092dd49cd8", + "reference": "889983a79a043dfda68f38c38b6dba092dd49cd8", "shasum": "" }, "require": { @@ -935,20 +1145,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-07-28 16:56:28" }, { "name": "symfony/filesystem", - "version": "v3.1.2", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "322da5f0910d8aa0b25fa65ffccaba68dbddb890" + "reference": "bb29adceb552d202b6416ede373529338136e84f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/322da5f0910d8aa0b25fa65ffccaba68dbddb890", - "reference": "322da5f0910d8aa0b25fa65ffccaba68dbddb890", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/bb29adceb552d202b6416ede373529338136e84f", + "reference": "bb29adceb552d202b6416ede373529338136e84f", "shasum": "" }, "require": { @@ -984,7 +1194,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:41:56" + "time": "2016-07-20 05:44:26" }, { "name": "symfony/polyfill-mbstring", @@ -1047,7 +1257,7 @@ }, { "name": "symfony/stopwatch", - "version": "v3.1.2", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -1096,16 +1306,16 @@ }, { "name": "symfony/yaml", - "version": "v2.8.8", + "version": "v2.8.9", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "dba4bb5846798cd12f32e2d8f3f35d77045773c8" + "reference": "0ceab136f43ed9d3e97b3eea32a7855dc50c121d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/dba4bb5846798cd12f32e2d8f3f35d77045773c8", - "reference": "dba4bb5846798cd12f32e2d8f3f35d77045773c8", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0ceab136f43ed9d3e97b3eea32a7855dc50c121d", + "reference": "0ceab136f43ed9d3e97b3eea32a7855dc50c121d", "shasum": "" }, "require": { @@ -1141,7 +1351,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "time": "2016-07-17 09:06:15" } ], "aliases": [ diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php index f8ad7e968d4ba26adcc163c487bee2cd47f13361..2890ab5fada3aeabd32721c397d4ff6becfae0ec 100644 --- a/lib/SimpleSAML/XHTML/Template.php +++ b/lib/SimpleSAML/XHTML/Template.php @@ -9,6 +9,10 @@ */ +use JaimePerez\TwigConfigurableI18n\Twig\Environment as Twig_Environment; +use JaimePerez\TwigConfigurableI18n\Twig\Extensions\Extension\I18n as Twig_Extensions_Extension_I18n; + + class SimpleSAML_XHTML_Template { @@ -155,7 +159,12 @@ class SimpleSAML_XHTML_Template return null; } - $twig = new \Twig_Environment($loader, array('cache' => $cache, 'auto_reload' => $auto_reload)); + $twig = new \Twig_Environment($loader, + array('cache' => $cache, 'auto_reload' => $auto_reload, + 'translation_function' => '__', + 'translation_function_plural' => 'n__', + ) + ); // set up translation if ($this->localization->i18nBackend == 'twig.gettextgettext') { /* if something like pull request #166 is ever merged with @@ -163,8 +172,7 @@ class SimpleSAML_XHTML_Template * $twig->addExtension(new \Twig_Extensions_Extension_I18n('__', 'n__')); * instead of the two lines after this comment */ - $twig->addFilter(new Twig_SimpleFilter('trans', '__')); - $twig->addTokenParser(new \SimpleSAML_Twig_TokenParser_Trans()); + $twig->addExtension(new \Twig_Extensions_Extension_I18n()); } return $twig; }