2008-11-01 14:26:08 +01:00
|
|
|
<?php
|
2016-08-19 00:51:35 +02:00
|
|
|
|
|
|
|
namespace SilverStripe\i18n;
|
|
|
|
|
2008-11-01 14:26:08 +01:00
|
|
|
/**
|
|
|
|
* Dynamically provide translatable entites for the {@link 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.
|
2015-10-06 07:31:58 +02:00
|
|
|
*
|
2015-07-05 06:53:21 +02:00
|
|
|
* Classes must be able to be constructed without mandatory arguments, otherwise
|
|
|
|
* this interface will have no effect.
|
2015-10-06 07:31:58 +02:00
|
|
|
*
|
2008-11-02 00:16:45 +01:00
|
|
|
* @uses i18nTextCollector->collectFromEntityProviders()
|
2008-11-01 14:26:08 +01:00
|
|
|
*/
|
|
|
|
interface i18nEntityProvider {
|
2015-10-06 07:31:58 +02:00
|
|
|
|
2008-11-01 14:26:08 +01:00
|
|
|
/**
|
|
|
|
* Example usage:
|
|
|
|
* <code>
|
|
|
|
* 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,
|
2015-10-06 07:31:58 +02:00
|
|
|
*
|
2008-11-01 14:26:08 +01:00
|
|
|
* 'My context description'
|
|
|
|
* );
|
|
|
|
* }
|
|
|
|
* return $entities;
|
|
|
|
* }
|
2015-10-06 07:31:58 +02:00
|
|
|
*
|
2012-09-19 12:07:39 +02:00
|
|
|
* public static function my_static_array() {
|
2008-11-01 14:26:08 +01:00
|
|
|
* $t_my_static_array = array();
|
|
|
|
* foreach(self::$my_static_array as $k => $v) {
|
|
|
|
* $t_my_static_array[$k] = _t("MyTestClass.my_static_array_{$key}", $v);
|
|
|
|
* }
|
|
|
|
* return $t_my_static_array;
|
|
|
|
* }
|
|
|
|
* }
|
|
|
|
* </code>
|
2015-10-06 07:31:58 +02:00
|
|
|
*
|
2008-11-01 14:26:08 +01:00
|
|
|
* Example usage in {@link DataObject->provideI18nEntities()}.
|
2015-10-06 07:31:58 +02:00
|
|
|
*
|
2009-02-02 00:49:53 +01:00
|
|
|
* 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:
|
|
|
|
* <code>
|
|
|
|
* class MyTestClass implements i18nEntityProvider {
|
|
|
|
* function provideI18nEntities() {
|
|
|
|
* $entities = array();
|
|
|
|
* $entities["MyOtherModuleClass.MYENTITY"] = array(
|
|
|
|
* $value,
|
2015-10-06 07:31:58 +02:00
|
|
|
*
|
2009-02-02 00:49:53 +01:00
|
|
|
* 'My context description',
|
|
|
|
* 'myothermodule'
|
|
|
|
* );
|
|
|
|
* }
|
|
|
|
* return $entities;
|
|
|
|
* }
|
|
|
|
* </code>
|
2015-10-06 07:31:58 +02:00
|
|
|
*
|
2008-11-01 14:26:08 +01:00
|
|
|
* @return array All entites in an associative array, with
|
|
|
|
* entity name as the key, and a numerical array of pseudo-arguments
|
|
|
|
* for _t() as a value.
|
|
|
|
*/
|
2012-09-19 12:07:39 +02:00
|
|
|
public function provideI18nEntities();
|
2008-11-01 14:26:08 +01:00
|
|
|
}
|