interface i18nEntityProvider (View source)

Dynamically provide translatable entities 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

public
array
provideI18nEntities()

Returns the list of provided translations for this object.

Details

array provideI18nEntities()

Returns the list of provided translations for this object.

Note: Pluralised forms are always returned in array format.

Example usage:

class MyTestClass implements i18nEntityProvider
{
  public function provideI18nEntities()
  {
    $entities = [];
    foreach($this->config()->get('my_static_array') as $key => $value) {
      $entities["MyTestClass.my_static_array_{$key}"] = $value;
    }
    $entities["MyTestClass.PLURALS"] = [
      'one' => 'A test class',
      'other' => '{count} test classes',
    ]
    return $entities;
  }
}

Example usage in DataObject->provideI18nEntities().

You can ask textcollector to add the provided entity to a different module. Simply wrap the returned value for any item in an array with the format: [ 'default' => $defaultValue, 'module' => $module ]

class MyTestClass implements i18nEntityProvider
{
  public function provideI18nEntities()
  {
    $entities = [
      'MyOtherModuleClass.MYENTITY' => [
        'default' => $value,
        'module' => 'myothermodule',
      ]
    ];
  }
  return $entities;
}

Return Value

array

Map of keys to default values, which are strings in the default case, and array-form for pluralisations.