summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-04-07 05:15:51 +0000
committerDries Buytaert <dries@buytaert.net>2010-04-07 05:15:51 +0000
commit97c14a993ee998e8856d940c9f3fd35b520f4362 (patch)
tree237716784fc68a5cf6b50586b86254d50a32a589
parent8173fc1aa338a21bc2ea119fba37437cf3209a44 (diff)
downloadbrdo-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.inc8
-rw-r--r--modules/locale/locale.api.php27
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