diff --git a/admin_language.api.php b/admin_language.api.php new file mode 100644 index 0000000..b6160eb --- /dev/null +++ b/admin_language.api.php @@ -0,0 +1,34 @@ + 'admin'))); + foreach (module_implements('admin_language_switch_language') as $module) { + if (($switch_language = module_invoke($module, 'admin_language_switch_language', $sections))) { + break; + } + } if ($access && $count > 1 && $switch_language) { - $languages = language_list('enabled'); - $languages = $languages[1]; + $languages = language_list(); global $language; $admin_language = variable_get('admin_language_default', 'en'); @@ -145,40 +150,35 @@ function admin_language_languages_overview_form_submit($form, &$form_state) { /* --- UTILITY -------------------------------------------------------------- */ /** + * Implements hook_admin_switch_language(). + * * Determine whether the language needs to be switched on the current path. * - * @return boolean - * TRUE to switch to the selected administration language or FALSE to use the - * default language. + * @param $sections */ -function _admin_language_switch_language() { - $switch = FALSE; - $sections = variable_get('admin_language_sections', array('admin' => 'admin')); - +function admin_language_admin_language_switch_language($sections) { foreach ($sections as $section) { - if (!$section) { - continue; - } switch ($section) { case 'admin': - if (arg(0) == 'admin') { - $switch = TRUE; + // Temporary also switch on admin_menu callback - remove this as soon as + // admin_menu implements this hook. + if (arg(0) == 'admin' || (arg(0) == 'js' && arg(1) == 'admin_menu')) { + return TRUE; } break; case 'node': - if ((arg(0) == 'node' && arg(1) == 'add') || (arg(0) == 'node' && arg(2) == 'edit')) { - $switch = TRUE; + if (arg(0) == 'node' && (arg(1) == 'add' || arg(2) == 'edit' || arg(2) == 'translate')) { + return TRUE; } break; case 'user': if (arg(0) == 'user' && arg(2) == 'edit') { - $switch = TRUE; + return TRUE; } break; } } - - return $switch; + return FALSE; } /* --- THEME ---------------------------------------------------------------- */