Этот сниппет появился из-за желания исключить текущий язык из блока со списком языков. На сайте используются два языка, таким образом, с этим сниппетом в блоке выбора языков показывается только один из них: Nederlands или English. Блок который создаётся модулем Internationalization не позволяет сделать это. Этот сниппет представляет из себя слегка изменённую версию стандартного сниппета используемого модулем. Блок с этим сниппетом не будет включать активный в данный момент язык.
<?php
// modified function
function excl_translation_get_links($path = '', $query = NULL, $names = NULL) {
$current = i18n_get_lang();
$names = $names ? $names : i18n_languages('native');
foreach (array_keys(i18n_supported_languages()) as $lang){
if ($lang != $current) {
$url = translation_url($path, $lang);
$links[]= theme('i18n_link', $names[$lang], i18n_path($url, $lang) , $lang, $query);
}}
return $links;
}
$lang_list = theme('item_list', excl_translation_get_links($_GET['q'], empty($query) ? NULL : $query));
echo $lang_list;
?>
<?php
// this is copy&paste from locale_block in locale.module
$languages = language_list('enabled');
$links = array();
foreach ($languages[1] as $language) {
if ($language->language != $current) {
$links[$language->language] = array(
'href' => $_GET['q'],
'title' => $language->native,
'language' => $language,
'attributes' => array('class' => 'language-link'),
);
}
}
// this adds the real paths, i.e. if we are on a german page,
// the british flag will point to en/english_alias instead of
// en/node_with_german_content
translation_translation_link_alter($links, $_GET['q']);
// This one adds extended languages, i.e. those that are not enabled.
// Disable if you want only flags for enabled languages.
i18n_translation_link_alter($links, $_GET['q']);
// now add or replace text links by flags, according to your i18n settings.
if (function_exists('languageicons_translation_link_alter'))
languageicons_translation_link_alter($links, $_GET['q']);
// Or do your own stuff, e.g. set the flags and no lang names,
// no matter what the i18n icon settings say.
//if ($icon = theme('languageicons_icon', $language, NULL)) {
// $links[$language->language]['title'] = theme('languageicons_place', $link['title'], $icon);
// $links[$language->language]['html'] = TRUE;
//}
// remove the current language again. We cannot do that
// earlier because i18n_translation_link_alter would add it
// again, thinking it was an extendeg language because it
// was not yet contained in $links. If you don't use
// i18n_translation_link_alter, you can also make a case distinction
// in the foreach loop
$current = i18n_get_lang();
unset($links[$current]);
// format as you like, e.g.
echo theme('links', $links, array());
?>