i18nEntityProvider
interface i18nEntityProvider (View source)
Dynamically provide translatable entites for the i18n logic.
This is particularly handy for natural language strings in static variables of a class definition, as the _t() method can only be used in a runtime/instance context. The provideI18nEntities() method enables you to define your own entities with your custom naming, mostly involving either the variable name or the array key. With this in place, you can use a getter method to trigger translation of your values. For any statics containing natural language, never use the static directly - always wrap it in a getter.
Classes must be able to be constructed without mandatory arguments, otherwise this interface will have no effect.
Methods
Example usage:
class MyTestClass implements i18nEntityProvider {
function provideI18nEntities() {
$entities = array();
foreach($this->stat('my_static_array) as $key => $value) {
$entities["MyTestClass.my_static_array_{$key}"] = array(
$value,
Details
array
provideI18nEntities()
Example usage:
class MyTestClass implements i18nEntityProvider {
function provideI18nEntities() {
$entities = array();
foreach($this->stat('my_static_array) as $key => $value) {
$entities["MyTestClass.my_static_array_{$key}"] = array(
$value,
'My context description' ); } return $entities; }
public static function my_static_array() { $t_my_static_array = array(); foreach(self::$my_static_array as $k => $v) { $t_my_static_array[$k] = _t("MyTestClass.my_staticarray{$key}", $v); } return $t_my_static_array; } }
Example usage in DataObject->provideI18nEntities().
You can ask textcollector to add the provided entity to a different module
than the class is contained in by adding a 4th argument to the array:
class MyTestClass implements i18nEntityProvider { function provideI18nEntities() { $entities = array(); $entities["MyOtherModuleClass.MYENTITY"] = array( $value,
'My context description',
'myothermodule'
);
}
return $entities;
}