minor #36670 [Translations] Throw exception if xFileLoader dependencies don't exist. (jrushlow)
This PR was squashed before being merged into the 5.1-dev branch.
Discussion
----------
[Translations] Throw exception if xFileLoader dependencies don't exist.
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | Fix #36658
| License | MIT
| Doc PR |
`XliffFileLoader` & `QtFileLoader` both require `XmlUtils::class` from the `Config` component. This PR throws a friendly exception is the `Config` component does not exist.
Original idea by @xabbuh was to throw the exception from the __constructor. This PR throws the exception from the `load()` method to be consistent with the `YamlFileLoader::class`. But that can easily be changed.
Commits
-------
627e476eb4
[Translations] Throw exception if xFileLoader dependencies don't exist.
This commit is contained in:
commit
362c5d4700
@ -15,6 +15,7 @@ use Symfony\Component\Config\Resource\FileResource;
|
|||||||
use Symfony\Component\Config\Util\XmlUtils;
|
use Symfony\Component\Config\Util\XmlUtils;
|
||||||
use Symfony\Component\Translation\Exception\InvalidResourceException;
|
use Symfony\Component\Translation\Exception\InvalidResourceException;
|
||||||
use Symfony\Component\Translation\Exception\NotFoundResourceException;
|
use Symfony\Component\Translation\Exception\NotFoundResourceException;
|
||||||
|
use Symfony\Component\Translation\Exception\RuntimeException;
|
||||||
use Symfony\Component\Translation\MessageCatalogue;
|
use Symfony\Component\Translation\MessageCatalogue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,6 +30,10 @@ class QtFileLoader implements LoaderInterface
|
|||||||
*/
|
*/
|
||||||
public function load($resource, string $locale, string $domain = 'messages')
|
public function load($resource, string $locale, string $domain = 'messages')
|
||||||
{
|
{
|
||||||
|
if (!class_exists(XmlUtils::class)) {
|
||||||
|
throw new RuntimeException('Loading translations from the QT format requires the Symfony Config component.');
|
||||||
|
}
|
||||||
|
|
||||||
if (!stream_is_local($resource)) {
|
if (!stream_is_local($resource)) {
|
||||||
throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
|
throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ use Symfony\Component\Config\Resource\FileResource;
|
|||||||
use Symfony\Component\Config\Util\XmlUtils;
|
use Symfony\Component\Config\Util\XmlUtils;
|
||||||
use Symfony\Component\Translation\Exception\InvalidResourceException;
|
use Symfony\Component\Translation\Exception\InvalidResourceException;
|
||||||
use Symfony\Component\Translation\Exception\NotFoundResourceException;
|
use Symfony\Component\Translation\Exception\NotFoundResourceException;
|
||||||
|
use Symfony\Component\Translation\Exception\RuntimeException;
|
||||||
use Symfony\Component\Translation\MessageCatalogue;
|
use Symfony\Component\Translation\MessageCatalogue;
|
||||||
use Symfony\Component\Translation\Util\XliffUtils;
|
use Symfony\Component\Translation\Util\XliffUtils;
|
||||||
|
|
||||||
@ -30,6 +31,10 @@ class XliffFileLoader implements LoaderInterface
|
|||||||
*/
|
*/
|
||||||
public function load($resource, string $locale, string $domain = 'messages')
|
public function load($resource, string $locale, string $domain = 'messages')
|
||||||
{
|
{
|
||||||
|
if (!class_exists(XmlUtils::class)) {
|
||||||
|
throw new RuntimeException('Loading translations from the Xliff format requires the Symfony Config component.');
|
||||||
|
}
|
||||||
|
|
||||||
if (!stream_is_local($resource)) {
|
if (!stream_is_local($resource)) {
|
||||||
throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
|
throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user