Page Menu
Home
WMGMC Issues
搜索
Configure Global Search
登录
Files
F16339
LoggingTranslator.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
订阅
标记用于日后
授予令牌
Size
3 KB
Referenced Files
None
订阅者
None
LoggingTranslator.php
View Options
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace
Symfony\Component\Translation
;
use
Psr\Log\LoggerInterface
;
use
Symfony\Component\Translation\Exception\InvalidArgumentException
;
use
Symfony\Contracts\Translation\LocaleAwareInterface
;
use
Symfony\Contracts\Translation\TranslatorInterface
;
/**
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
*/
class
LoggingTranslator
implements
TranslatorInterface
,
TranslatorBagInterface
,
LocaleAwareInterface
{
private
TranslatorInterface
$translator
;
private
LoggerInterface
$logger
;
/**
* @param TranslatorInterface&TranslatorBagInterface&LocaleAwareInterface $translator The translator must implement TranslatorBagInterface
*/
public
function
__construct
(
TranslatorInterface
$translator
,
LoggerInterface
$logger
)
{
if
(!
$translator
instanceof
TranslatorBagInterface
||
!
$translator
instanceof
LocaleAwareInterface
)
{
throw
new
InvalidArgumentException
(
sprintf
(
'The Translator "%s" must implement TranslatorInterface, TranslatorBagInterface and LocaleAwareInterface.'
,
get_debug_type
(
$translator
)));
}
$this
->
translator
=
$translator
;
$this
->
logger
=
$logger
;
}
public
function
trans
(?
string
$id
,
array
$parameters
=
[],
?
string
$domain
=
null
,
?
string
$locale
=
null
):
string
{
$trans
=
$this
->
translator
->
trans
(
$id
=
(
string
)
$id
,
$parameters
,
$domain
,
$locale
);
$this
->
log
(
$id
,
$domain
,
$locale
);
return
$trans
;
}
/**
* @return void
*/
public
function
setLocale
(
string
$locale
)
{
$prev
=
$this
->
translator
->
getLocale
();
$this
->
translator
->
setLocale
(
$locale
);
if
(
$prev
===
$locale
)
{
return
;
}
$this
->
logger
->
debug
(
sprintf
(
'The locale of the translator has changed from "%s" to "%s".'
,
$prev
,
$locale
));
}
public
function
getLocale
():
string
{
return
$this
->
translator
->
getLocale
();
}
public
function
getCatalogue
(?
string
$locale
=
null
):
MessageCatalogueInterface
{
return
$this
->
translator
->
getCatalogue
(
$locale
);
}
public
function
getCatalogues
():
array
{
return
$this
->
translator
->
getCatalogues
();
}
/**
* Gets the fallback locales.
*/
public
function
getFallbackLocales
():
array
{
if
(
$this
->
translator
instanceof
Translator
||
method_exists
(
$this
->
translator
,
'getFallbackLocales'
))
{
return
$this
->
translator
->
getFallbackLocales
();
}
return
[];
}
/**
* @return mixed
*/
public
function
__call
(
string
$method
,
array
$args
)
{
return
$this
->
translator
->{
$method
}(...
$args
);
}
/**
* Logs for missing translations.
*/
private
function
log
(
string
$id
,
?
string
$domain
,
?
string
$locale
):
void
{
$domain
??=
'messages'
;
$catalogue
=
$this
->
translator
->
getCatalogue
(
$locale
);
if
(
$catalogue
->
defines
(
$id
,
$domain
))
{
return
;
}
if
(
$catalogue
->
has
(
$id
,
$domain
))
{
$this
->
logger
->
debug
(
'Translation use fallback catalogue.'
,
[
'id'
=>
$id
,
'domain'
=>
$domain
,
'locale'
=>
$catalogue
->
getLocale
()]);
}
else
{
$this
->
logger
->
warning
(
'Translation not found.'
,
[
'id'
=>
$id
,
'domain'
=>
$domain
,
'locale'
=>
$catalogue
->
getLocale
()]);
}
}
}
File Metadata
详情
附加的
Mime Type
text/x-php
Expires
9月 12 Fri, 3:10 AM (20 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5785
默认替代文本
LoggingTranslator.php (3 KB)
Attached To
Mode
rMAILCOW mailcow-tracking
附加的
Detach File
Event Timeline
Log In to Comment