classes/phing/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:


Extends from
\BaseParamFilterReader
Implements
\ChainableReader
see
\BaseFilterReader
access
public
author
Hans Lellelid
copyright
© 2003 seasonfive. All rights reserved
package
phing.filters
version
$Revision: 526 $ $Date: 2009-08-11 14:11:17 +0200 (Tue, 11 Aug 2009) $

Constants

Constant  DOMAIN_KEY = 'domain'
Constant  DIR_KEY = 'dir'
Constant  LOCALE_KEY = 'locale'

Properties

Propertyprivate  $dir= ''

The dir containing LC_MESSAGES

Details
Type
Propertyprivate  $domain= 'messages'

The domain to use

Default valuemessagesDetails
Type
Propertyprivate  $locale= ''

The locale to use

Details
Type
Propertyprivate  $storedLocale= ''

The system locale before it was changed for this filter.

Details
Type

Methods

methodprivate  _initialize( ) :
Parses the parameters if this filter is being used in "generic" mode.
methodpublic  chain( \Reader $reader ) : \TranslateGettext
Creates a new TranslateGettext filter using the passed in Reader for instantiation.
Parameters
Name Type Description
$reader \Reader

A Reader object providing the underlying stream. Must not be null.

Returns
Type Description
\TranslateGettext
methodprotected  checkAttributes( ) :
Make sure that required attributes are set.
Details
throws
- if any required attribs aren't set.
methodpublic  getDir( ) : \PhingFile
Gets the root locale directory.
Returns
Type Description
\PhingFile
methodpublic  getDomain( ) : string
Get the current domain.
Returns
Type Description
string
methodpublic  getLocale( ) : string
Gets the locale to use for translation.
Returns
Type Description
string
methodprotected  initEnvironment( ) : void
Initialize the gettext/locale environment.

This method will change some env vars and locale settings; the restoreEnvironment should put them all back :)

Details
see
\restoreEnvironment()
throws
- if locale cannot be set.
methodpublic  read(  $len = null ) : mixed
Returns the filtered stream.

The original stream is first read in fully, and then translation is performed.

Parameters
Name Type Description
$len
Returns
Type Description
mixed
Details
throws
- if the underlying stream throws an IOException during reading
throws
- if the correct params are not supplied
methodprotected  restoreEnvironment( ) : void
Restores environment settings and locale.

This does not restore any gettext-specific settings (e.g. textdomain()).

methodpublic  setDir( \PhingFile $dir ) :
Sets the root locale directory.
Parameters
Name Type Description
$dir \PhingFile
methodpublic  setDomain( string $domain ) :
Set 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

Parameters
Name Type Description
$domain string
methodpublic  setLocale( string $locale ) :
Sets 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.).

Parameters
Name Type Description
$locale string
methodprivate  xlateStringCallback( array $matches ) : string
Performs 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.)

Parameters
Name Type Description
$matches array

Array of matches; we're interested in $matches[2].

Returns
Type Description
string
Documentation was generated by DocBlox 0.13.1.