PHP Class Prado\I18N\core\MessageSource
The base class for all MessageSources. Message sources must be instantiated
using the factory method. The default valid sources are
# XLIFF -- using XML XLIFF format to store the translation messages.
# gettext -- Translated messages are stored in the gettext format.
# Database -- Use an existing TDbConnection to store the messages.
# SQLite -- (Deprecated) Store the translation messages in a SQLite database.
A custom message source can be instantiated by specifying the filename
parameter to point to the custom class file. E.g.
$resource = '...'; //custom message source resource
$classfile = '../MessageSource_MySource.php'; //custom message source
$source = MessageSource::factory('MySource', $resource, $classfile);
If you are writting your own message sources, pay attention to the
loadCatalogue method. It details how the resources are loaded and cached.
See also the existing message source types as examples.
The following example instantiates a Database message source, set the culture,
set the cache handler, and use the source in a message formatter.
The messages are stored using an existing connection. The source parameter
for the factory method must contain a valid ConnectionID.
db1 must be already configured
$source = MessageSource::factory('Database', 'db1');
set the culture and cache, store the cache in the /tmp directory.
$source->setCulture('en_AU')l
$source->setCache(new MessageCache('/tmp'));
$formatter = new MessageFormat($source);
Mostrar archivo
Open project: pradosoft/prado
Class Usage Examples
Protected Properties
Public Methods
Method |
Description |
|
append ( $message ) |
Add a untranslated message to the source. Need to call save()
to save the messages to source. |
|
factory ( $type, $source = '.', $filename = '' ) : MessageSource |
Factory method to instantiate a new MessageSource depending on the
source type. The allowed source types are 'XLIFF', 'gettext' and
'Database'. The source parameter depends on the source type. |
|
getCache ( ) : MessageCache |
Get the cache handler for this source. |
|
getCulture ( ) : string |
Get the culture identifier for the source. |
|
load ( $catalogue = 'messages' ) : boolean |
Load a particular message catalogue. Use read() to
to get the array of messages. The catalogue loading sequence
is as follows |
|
read ( ) : array |
Get the array of messages. |
|
setCache ( MessageCache $cache ) |
Set the cache handler for caching the messages. |
|
setCulture ( $culture ) |
Set the culture for this message source. |
|
Protected Methods
Method |
Description |
|
getCatalogueList ( $catalogue ) : array |
Get all the variants of a particular catalogue. |
|
getLastModified ( $source ) : integer |
Get the last modified unix-time for this particular catalogue+variant. |
|
getSource ( $variant ) : string |
Get the source, this could be a filename or database ID. |
|
isValidSource ( $source ) : boolean |
Determine if the source is valid. |
|
loadData ( $variant ) : array |
Load the message for a particular catalogue+variant. |
|
Private Methods
Method |
Description |
|
__construct ( ) |
Private constructor. MessageSource must be initialized using
the factory method. |
|
Method Details
Add a untranslated message to the source. Need to call save()
to save the messages to source.
factory()
static public method
For 'gettext' and 'XLIFF', 'source' should point to the directory
where the messages are stored.
For 'Database', 'source' must be a valid connection id.
If a deprecated 'SQLite' type is used, 'source' must contain
a valid DSN.
Custom message source are possible by supplying the a filename parameter
in the factory method.
static public factory ( $type, $source = '.', $filename = '' ) : MessageSource |
return |
MessageSource |
a new message source of the specified type. |
Get the cache handler for this source.
public getCache ( ) : MessageCache |
return |
MessageCache |
cache handler |
getCatalogueList()
protected method
This method must be implemented by subclasses.
getCulture()
public method
Get the culture identifier for the source.
getLastModified()
protected method
Get the last modified unix-time for this particular catalogue+variant.
getSource()
protected method
Get the source, this could be a filename or database ID.
isValidSource()
protected method
Determine if the source is valid.
# [1] call getCatalogeList($catalogue) to get a list of
variants for for the specified $catalogue.
# [2] for each of the variants, call getSource($variant)
to get the resource, could be a file or catalogue ID.
# [3] verify that this resource is valid by calling isValidSource($source)
# [4] try to get the messages from the cache
# [5] if a cache miss, call load($source) to load the message array
# [6] store the messages to cache.
# [7] continue with the foreach loop, e.g. goto [2].
public load ( $catalogue = 'messages' ) : boolean |
return |
boolean |
true if loaded, false otherwise. |
loadData()
protected method
This methods needs to implemented by subclasses.
Get the array of messages.
Set the cache handler for caching the messages.
public setCache ( MessageCache $cache ) |
$cache |
MessageCache |
|
setCulture()
public method
Set the culture for this message source.
Property Details
$cache protected_oe property
protected MessageCache,Prado\I18N\core $cache |
return |
MessageCache |
|
$culture protected_oe property
The culture name for this message source.
protected string $culture |
return |
string |
|
$messages protected_oe property
Array of translation messages.
protected array $messages |
return |
array |
|
$source protected_oe property
The source of message translations.
protected string $source |
return |
string |
|
$untranslated protected_oe property