| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | <?php/** * @file * Hooks provided by the Language module. *//** * @addtogroup hooks * @{ *//** * Define language types. * * @return array *   An associative array of language type definitions. The keys are the *   identifiers, which are also used as names for global variables representing *   the types in the bootstrap phase. The values are associative arrays that *   may contain the following elements: *   - name: The human-readable language type identifier. *   - description: A description of the language type. *   - locked: A boolean indicating if the user can choose whether to configure *     the language type or not using the UI. *   - fixed: A fixed array of language negotiation method identifiers to use to *     initialize this language. If locked is set to TRUE and fixed is set, it *     will always use the specified methods in the given priority order. If not *     present and locked is TRUE then language-interface will be *     used. * *  @todo Rename the 'fixed' key to something more meaningful, for instance *     'negotiation settings'. See https://www.drupal.org/node/2166879. * * @see hook_language_types_info_alter() * @ingroup language_negotiation */function hook_language_types_info() {  return [    'custom_language_type' => [      'name' => t('Custom language'),      'description' => t('A custom language type.'),      'locked' => FALSE,    ],    'fixed_custom_language_type' => [      'locked' => TRUE,      'fixed' => ['custom_language_negotiation_method'],    ],  ];}/** * Perform alterations on language types. * * @param array $language_types *   Array of language type definitions. * * @see hook_language_types_info() * @ingroup language_negotiation */function hook_language_types_info_alter(array &$language_types) {  if (isset($language_types['custom_language_type'])) {    $language_types['custom_language_type_custom']['description'] = t('A far better description.');  }}/** * Perform alterations on language negotiation methods. * * @param array $negotiation_info *   Array of language negotiation method definitions. * * @ingroup language_negotiation */function hook_language_negotiation_info_alter(array &$negotiation_info) {  if (isset($negotiation_info['custom_language_method'])) {    $negotiation_info['custom_language_method']['config'] = 'admin/config/regional/language/detection/custom-language-method';  }}/** * Allow modules to alter the language fallback candidates. * * @param array $candidates *   An array of language codes whose order will determine the language fallback *   order. * @param array $context *   A language fallback context. * * @see \Drupal\Core\Language\LanguageManagerInterface::getFallbackCandidates() */function hook_language_fallback_candidates_alter(array &$candidates, array $context) {  $candidates = array_reverse($candidates);}/** * Allow modules to alter the fallback candidates for specific operations. * * @param array $candidates *   An array of language codes whose order will determine the language fallback *   order. * @param array $context *   A language fallback context. * * @see \Drupal\Core\Language\LanguageManagerInterface::getFallbackCandidates() */function hook_language_fallback_candidates_OPERATION_alter(array &$candidates, array $context) {  // We know that the current OPERATION deals with entities so no need to check  // here.  if ($context['data']->getEntityTypeId() == 'node') {    $candidates = array_reverse($candidates);  }}/** * @} End of "addtogroup hooks". */
 |