<?php
/**
* Implements qtag LANGUAGE.
*
* Returns language code of the current language.
*
* @param Environment $env
* The Environment.
*
* @param string $target
* The qtag's target.
*
* @param array $attributes
* The qtag's attributes.
*
* @return string
* The rendered qtag.
*/
function qtag_LANGUAGE($env, $target, $attributes) {
return Localization::getLanguage($env);
}
/**
* Implements qtag FALLBACK_LANGUAGE.
*
* Return the language code of the fallback language.
*
* @param Environment $env
* The Environment.
*
* @param string $target
* The qtag's target.
*
* @param array $attributes
* The qtag's attributes.
*
* @return string
* The rendered qtag.
*/
function qtag_FALLBACK_LANGUAGE($env, $target, $attributes) {
return Localization::getFallbackLanguage($env);
}
/**
* Implements qtag LANGUAGE_SWITCHER.
*
* Renders a language switcher, allowing to switch between active languages.
*
* @param Environment $env
* The Environment.
*
* @param string $target
* The qtag's target.
*
* @param array $attributes
* The qtag's attributes.
*
* @return string
* The rendered qtag.
*/
function qtag_LANGUAGE_SWITCHER($env, $target, $attributes) {
$node = empty($target) ? NodeFactory::current($env) : NodeFactory::load($env, $target);
$language_switcher_tpl = 'language_switcher';
// We don't want translate links to be considered as editable nodes.
$attributes['editable'] = 'false';
$attributes['active_items'] = Localization::getLanguage($env);
$attributes['symlinks'] = 'no';
if (isset($attributes['compact'])){
// Uses name for label instead of title.
$language_switcher_tpl = 'language_switcher_compact';
}
$dirlist = new DirList($env, DIR_LANGUAGES, $language_switcher_tpl, $attributes, 'localization');
// Don't show language switch link, if node is not available in that language.
foreach ($dirlist->getItems() as $langcode => $lang) {
if (!$node->hasTranslation($langcode)) {
$dirlist->removeDir($langcode);
}
}
return $dirlist->render();
}
/**
* Implements qtag TRANSLATE_LINKS.
*
* Renders Translate links.
*
* @param Environment $env
* The Environment.
*
* @param string $target
* The qtag's target.
*
* @param array $attributes
* The qtag's attributes.
*
* @return string
* The rendered qtag.
*/
function qtag_TRANSLATE_LINKS($env, $target, $attributes) {
$attributes['active_items'] = Localization::getLanguage($env);
// We don't want translate links to be considered as editable nodes.
$attributes['editable'] = 'false';
$attributes['symlinks'] = 'no';
$dirlist = new DirList($env, DIR_LANGUAGES, 'translate_links', $attributes, 'localization');
return $dirlist->render();
}
/**
* Implements qtag TRANSLATE.
*
* Renders a translate link.
*
* @param Environment $env
* The Environment.
*
* @param string $target
* The qtag's target.
*
* @param array $attributes
* The qtag's attributes.
*
* @return string
* The rendered qtag.
*/
function qtag_TRANSLATE($env, $target, $attributes) {
$node = NodeFactory::load($env, $target);
$current = NodeFactory::current($env);
if (!$node->exists) {
return '';
}
$attributes['language'] = $node->getName();
$attributes['title'] = $node->getTitle();
return qtag_EDIT($env, $current->getName(), $attributes);
}
|