diff options
-rw-r--r-- | includes/bootstrap.inc | 8 | ||||
-rw-r--r-- | modules/locale/locale.api.php | 27 |
2 files changed, 31 insertions, 4 deletions
diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc index ebb476f8d..d2c739aab 100644 --- a/includes/bootstrap.inc +++ b/includes/bootstrap.inc @@ -859,10 +859,10 @@ function drupal_page_is_cacheable($allow_caching = NULL) { } /** - * Call all init or exit hooks without including all modules. + * Invoke a bootstrap hook in all bootstrap modules that implement it. * * @param $hook - * The name of the bootstrap hook we wish to invoke. + * The name of the bootstrap hook to invoke. */ function bootstrap_invoke_all($hook) { // _drupal_bootstrap_page_cache() already loaded the bootstrap modules, so we @@ -1163,7 +1163,7 @@ function drupal_serve_page_from_cache(stdClass $cache) { * Define the critical hooks that force modules to always be loaded. */ function bootstrap_hooks() { - return array('boot', 'exit', 'watchdog'); + return array('boot', 'exit', 'watchdog', 'language_init'); } /** @@ -2086,7 +2086,7 @@ function drupal_language_initialize() { } // Allow modules to react on language system initialization in multilingual // environments. - module_invoke_all('language_init', $types); + bootstrap_invoke_all('language_init'); } } diff --git a/modules/locale/locale.api.php b/modules/locale/locale.api.php index 90f6132dd..488b2bbed 100644 --- a/modules/locale/locale.api.php +++ b/modules/locale/locale.api.php @@ -25,6 +25,33 @@ function hook_locale($op = 'groups') { } /** + * Allows modules to act after language initialization has been performed. + * + * This is primarily needed to provide translation for configuration variables + * in the proper bootstrap phase. Variables are user-defined strings and + * therefore should not be translated via t(), since the source string can + * change without notice and any previous translation would be lost. Moreover, + * since variables can be used in the bootstrap phase, we need a bootstrap hook + * to provide a translation early enough to avoid misalignments between code + * using the original values and code using the translated values. However + * modules implementing hook_boot() should be aware that language initialization + * did not happen yet and thus they cannot rely on translated variables. + */ +function hook_language_init() { + global $language, $conf; + + switch ($language->language) { + case 'it': + $conf['site_name'] = 'Il mio sito Drupal'; + break; + + case 'fr': + $conf['site_name'] = 'Mon site Drupal'; + break; + } +} + +/** * Perform alterations on language switcher links. * * A language switcher link may need to point to a different path or use a |