diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-04-07 05:15:51 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-04-07 05:15:51 +0000 |
commit | 97c14a993ee998e8856d940c9f3fd35b520f4362 (patch) | |
tree | 237716784fc68a5cf6b50586b86254d50a32a589 | |
parent | 8173fc1aa338a21bc2ea119fba37437cf3209a44 (diff) | |
download | brdo-97c14a993ee998e8856d940c9f3fd35b520f4362.tar.gz brdo-97c14a993ee998e8856d940c9f3fd35b520f4362.tar.bz2 |
- Patch #642782 by plach, Dave Reid, greggles, mfb: hook_language_init() is a bootstrap hook and needs bootstrap_invoke_all().
-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 |