filters/TranslateGettext.php
\TranslateGettext
Replaces gettext("message id") and _("message id") with the translated string.
Gettext is great for creating multi-lingual sites, but in some cases (e.g. for performance reasons) you may wish to replace the gettext calls with the translations of the strings; that's what this task is for. Note that this is similar to ReplaceTokens, but both the find and the replace aspect is more complicated -- hence this is a separate, stand-alone filter.
<
p>
Example:
- Implements
- \ChainableReader
- Parent(s)
- \BaseParamFilterReader < \BaseFilterReader < \FilterReader < \Reader
- See
- \BaseFilterReader
- Access
- public
- Author
- Hans Lellelid
- Version
- $Revision: 526 $ $Date: 2009-08-11 14:11:17 +0200 (Tue, 11 Aug 2009) $
Constants
Properties
Methods

chain(
\Reader $reader
)
:
\TranslateGettextCreates a new TranslateGettext filter using the passed in Reader for instantiation.
| Name | Type | Description |
|---|---|---|
| $reader | \Reader | A Reader object providing the underlying stream. Must not be |
| Type | Description |
|---|---|
| \TranslateGettext | A new filter based on this configuration, but filtering the specified reader |

checkAttributes(
)
:
voidMake sure that required attributes are set.
| Exception | Description |
|---|---|
| \BuldException | - if any required attribs aren't set. |

initEnvironment(
)
:
voidInitialize the gettext/locale environment.
This method will change some env vars and locale settings; the restoreEnvironment should put them all back :)
| Exception | Description |
|---|---|
| \BuildException | - if locale cannot be set. |
- See
- \restoreEnvironment()

read(
$len
=
null
)
:
mixedReturns the filtered stream.
The original stream is first read in fully, and then translation is performed.
| Name | Type | Description |
|---|---|---|
| $len |
| Type | Description |
|---|---|
| mixed | the filtered stream, or -1 if the end of the resulting stream has been reached. |
| Exception | Description |
|---|---|
| \IOException | - if the underlying stream throws an IOException during reading |
| \BuildException | - if the correct params are not supplied |

restoreEnvironment(
)
:
voidRestores environment settings and locale.
This does not restore any gettext-specific settings (e.g. textdomain()).

setDir(
\PhingFile $dir
)
:
voidSets the root locale directory.
| Name | Type | Description |
|---|---|---|
| $dir | \PhingFile |

setDomain(
string $domain
)
:
voidSet the text domain to use.
The text domain must correspond to the name of the compiled .mo files. E.g. "messages" ==> $dir/LC_MESSAGES/messages.mo "mydomain" ==> $dir/LC_MESSAGES/mydomain.mo
| Name | Type | Description |
|---|---|---|
| $domain | string |

setLocale(
string $locale
)
:
voidSets the locale to use for translation.
Note that for gettext() to work, you have to make sure this locale is specific enough for your system (e.g. some systems may allow an 'en' locale, but others will require 'en_US', etc.).
| Name | Type | Description |
|---|---|---|
| $locale | string |

xlateStringCallback(
array $matches
)
:
stringPerforms gettext translation of msgid and returns translated text.
This function simply wraps gettext() call, but provides ability to log string replacements. (alternative would be using preg_replace with /e which would probably be faster, but no ability to debug/log.)
| Name | Type | Description |
|---|---|---|
| $matches | array | Array of matches; we're interested in $matches[2]. |
| Type | Description |
|---|---|
| string | Translated text |