123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- <?php
- /**
- * @file
- * Hooks provided by the Translation Management module.
- */
- /**
- * @addtogroup tmgmt_source
- * @{
- */
- /**
- * Provide information about source plugins.
- *
- * @see TMGMTTestSourcePluginController
- */
- function hook_tmgmt_source_plugin_info() {
- return array(
- 'test_source' => array(
- 'label' => t('Test source'),
- 'description' => t('Simple source for testing purposes.'),
- 'controller class' => 'TMGMTTestSourcePluginController',
- ),
- );
- }
- /**
- * Alter source plugins information.
- *
- * @param $info
- * The defined source plugin information.
- *
- * @see hook_tmgmt_source_plugin_info()
- */
- function hook_tmgmt_source_plugin_info_alter(&$info) {
- $info['test_source']['description'] = t('Updated description');
- }
- /**
- * Return a list of suggested sources for job items.
- *
- * @param array $items
- * An array with TMGMTJobItem objects which must be checked for suggested
- * translations.
- * - TMGMTJobItem A JobItem to check for suggestions.
- * - ...
- * @param TMGMTJob $job
- * The current translation job to check for additional translation items.
- *
- * @return array
- * An array with all additional translation suggestions.
- * - job_item: A TMGMTJobItem instance.
- * - referenced: A string which indicates where this suggestion comes from.
- * - from_job: The main TMGMTJob-ID which suggests this translation.
- */
- function hook_tmgmt_source_suggestions(array $items, TMGMTJob $job) {
- return array(
- array(
- 'job_item' => tmgmt_job_item_create('entity', 'node', 0),
- 'reason' => t('Referenced @type of field @label', array('@type' => 'entity', '@label' => 'label')),
- 'from_item' => $items[1]->tjiid,
- )
- );
- }
- /**
- * @} End of "addtogroup tmgmt_source".
- */
- /**
- * @addtogroup tmgmt_translator
- * @{
- */
- /**
- * Provide information about translator plugins.
- *
- * @see TMGMTTestTranslatorPluginController
- */
- function hook_tmgmt_translator_plugin_info() {
- return array(
- 'test_translator' => array(
- 'label' => t('Test translator'),
- 'description' => t('Simple translator for testing purposes.'),
- 'plugin controller class' => 'TMGMTTestTranslatorPluginController',
- 'ui controller class' => 'TMGMTTestTranslatorUIController',
- 'default settings' => array(
- 'expose_settings' => TRUE,
- ),
- // By default, a translator is automatically created with the default
- // settings. Set auto create to FALSE to prevent this.
- 'auto create' => TRUE,
- // If the translator should provide remote languages mappings feature.
- // It defaults to TRUE.
- 'map remote languages' => FALSE,
- // Flag defining if job settings are handled by plugin itself.
- // Defaults to FALSE.
- 'job settings custom handling' => FALSE,
- ),
- );
- }
- /**
- * Alter information about translator plugins.
- */
- function hook_tmgmt_translator_plugin_info_alter(&$info) {
- $info['test_source']['description'] = t('Updated description');
- }
- /**
- * @} End of "addtogroup tmgmt_translator".
- */
- /**
- * @defgroup tmgmt_job Translation Jobs
- *
- * A single task to translate something into a given language using a @link
- * translator translator @endlink.
- *
- * Attached to these jobs are job items, which specify which @link source
- * sources @endlink are to be translated.
- *
- * To create a new translation job, first create a job and then assign items to
- * each. Each item needs to specify the source plugin that should be used
- * and the type and id, which the source plugin then uses to identify it later
- * on.
- *
- * @code
- * $job = tmgmt_job_create('en', $target_language);
- *
- * for ($i = 1; $i < 3; $i++) {
- * $job->addItem('test_source', 'test', $i);
- * }
- * @endcode
- *
- * Once a job has been created, it can be assigned to a translator plugin, which
- * is the service that is going to do the translation.
- *
- * @code
- * $job->translator = 'test_translator';
- * // Translator specific settings.
- * $job->settings = array(
- * 'priority' => 5,
- * );
- * $job->save();
- *
- * // Get the translator plugin and request a translation.
- * if ($job->isTranslatable()) {
- * $job->requestTranslation();
- * }
- * @endcode
- *
- * The translation plugin will then request the text from the source plugin.
- * Depending on the plugin, the text might be sent to an external service
- * or assign it to a local user or team of users. At some point, a translation
- * will be returned and saved in the job items.
- *
- * The translation can now be reviewed, accepted and the source plugins be told
- * to save the translation.
- *
- * @code
- * $job->accepted('Optional message');
- * @endcode
- */
- /**
- * @defgroup tmgmt_translator Translators
- *
- * A translator plugin integrates a translation service.
- *
- * To define a translator, hook_tmgmt_translator_plugin_info() needs to be
- * implemented and a controller class (specified in the info) created.
- *
- * A translator plugin is then responsible for sending out a translation job and
- * storing the translated texts back into the job and marking it as needs review
- * once it's finished.
- *
- * TBD.
- */
- /**
- * @defgroup tmgmt_source Translation source
- *
- * A source plugin represents translatable elements on a site.
- *
- * For example nodes, but also plain strings, menu items, other entities and so
- * on.
- *
- * To define a source, hook_tmgmt_source_plugin_info() needs to be implemented
- * and a controller class (specified in the info) created.
- *
- * A source has three separate tasks.
- *
- * - Allows to create a new @link job translation job @endlink and assign job
- * items to itself.
- * - Extract the translatable text into a nested array when
- * requested to do in their implementation of
- * TMGMTSourcePluginControllerInterface::getData().
- * - Save the accepted translations returned by the translation plugin in their
- * sources in their implementation of
- * TMGMTSourcePluginControllerInterface::saveTranslation().
- */
- /**
- * @defgroup tmgmt_remote_languages_mapping Remote languages mapping
- *
- * Logic to deal with different language codes at client and server that stand
- * for the same language.
- *
- * Each tmgmt plugin is expected to support this feature. However for those
- * plugins where such feature has no use there is a plugin setting
- * "map remote languages" which can be set to FALSE.
- *
- * @section mappings_info Mappings info
- *
- * There are several methods defined by
- * TMGMTTranslatorPluginControllerInterface and implemented in
- * TMGMTDefaultTranslatorPluginController that deal with mappings info.
- *
- * - getRemoteLanguagesMappings() - provides pairs of local_code => remote_code.
- * - mapToRemoteLanguage() & mapToLocalLanguage() - helpers to map local/remote.
- * Note that methods with same names and functionality are provided by the
- * TMGMTTranslator entity. These are convenience methods.
- *
- * The above methods should not need reimplementation unless special logic is
- * needed. However following methods provide only the fallback behaviour and
- * therefore it is recommended that each plugin provides its specific
- * implementation.
- *
- * - getDefaultRemoteLanguagesMappings() - we might know some mapping pairs
- * prior to configuring a plugin, this is the place where we can define these
- * mappings. The default implementation returns an empty array.
- * - getSupportedRemoteLanguages() - gets array of language codes in lang_code =>
- * lang_code format. It says with what languages the remote system can deal
- * with. These codes are in the remote format.
- *
- * @section mapping_remote_to_local Mapping remote to local
- *
- * Mapping remote to local language codes is done when determining the
- * language capabilities of the remote system. All following logic should then
- * solely work with local language codes. There are two methods defined by
- * the TMGMTTranslatorPluginControllerInterface interface. To do the mapping
- * a plugin must implement getSupportedTargetLanguages().
- *
- * - getSupportedTargetLanguages() - should return local language codes. So
- * within this method the mapping needs to be executed.
- * - getSupportedLanguagePairs() - gets language pairs for which translations
- * can be done. The language codes must be in local form. The default
- * implementation uses getSupportedTargetLanguages() so mapping occur. However
- * this approach is not effective and therefore each plugin should provide
- * its specific implementation with regard to performance.
- *
- * @section mapping_local_to_remote Mapping local to remote
- *
- * Mapping of local to remote language codes is done upon translation job
- * request in the TMGMTTranslatorPluginControllerInterface::requestTranslation()
- * plugin implementation.
- */
- /**
- * @defgroup tmgmt_ui_cart Translation cart
- *
- * The translation cart can collect multiple source items of different types
- * which are meant for translation into a list. The list then provides
- * functionality to request translation of the items into multiple target
- * languages.
- *
- * Each source can easily plug into the cart system utilising the
- * tmgmt_ui_add_cart_form() on either the source overview page as well as the
- * translate tab.
- */
|