2015-08-17 17:00:26 -07:00
< ? php
/**
* @ file
* Hooks provided by the Language module .
*/
/**
* @ addtogroup hooks
* @ {
*/
/**
* Define language types .
*
2016-03-02 12:40:24 -08:00
* @ return array
2015-08-17 17:00:26 -07:00
* 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 array (
'custom_language_type' => array (
'name' => t ( 'Custom language' ),
'description' => t ( 'A custom language type.' ),
'locked' => FALSE ,
),
'fixed_custom_language_type' => array (
'locked' => TRUE ,
'fixed' => array ( 'custom_language_negotiation_method' ),
),
);
}
/**
* Perform alterations on language types .
*
2016-03-02 12:40:24 -08:00
* @ param array $language_types
2015-08-17 17:00:26 -07:00
* 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 .
*
2016-03-02 12:40:24 -08:00
* @ param array $negotiation_info
2015-08-17 17:00:26 -07:00
* 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 " .
*/