i18n.admin.inc in Internationalization 6
Extended multilanguage administration and module settings UI.
File
i18n.admin.incView source
<?php
/**
* @file
* Extended multilanguage administration and module settings UI.
*/
/**
* Form builder function.
*
* TO DO: Add exclude paths for content selection
* Some options have been removed from previous versions:
* - Languages are now taken from locale module unless defined in settings file.
* - Language dependent tables are authomatically used if defined in settings file.
*/
function i18n_admin_settings() {
// Content selection options.
$form['selection'] = array(
'#type' => 'fieldset',
'#title' => t('Content selection'),
);
$form['selection']['i18n_selection_mode'] = array(
'#type' => 'radios',
'#title' => t('Content selection mode'),
'#default_value' => variable_get('i18n_selection_mode', 'simple'),
'#options' => _i18n_selection_mode(),
'#description' => t('Determines which content to show depending on the current page language and the default language of the site.'),
);
// Node translation links setting.
$form['links'] = array(
'#type' => 'fieldset',
'#title' => t('Content translation links'),
);
$form['links']['i18n_hide_translation_links'] = array(
'#type' => 'checkbox',
'#title' => t('Hide content translation links'),
'#description' => t('Hide the links to translations in content body and teasers. If you choose this option, switching language will only be available from the language switcher block.'),
'#default_value' => variable_get('i18n_hide_translation_links', 0),
);
$form['links']['i18n_translation_switch'] = array(
'#type' => 'checkbox',
'#title' => t('Switch interface for translating'),
'#default_value' => variable_get('i18n_translation_switch', 0),
'#description' => t('Switch interface language to fit node language when creating or editing a translation. If not checked the interface language will be independent from node language.'),
);
return system_settings_form($form);
}
// List of selection modes
function _i18n_selection_mode() {
return array(
'simple' => t('Current language and language neutral.'),
'mixed' => t('Mixed current language (if available) or default language (if not) and language neutral.'),
'default' => t('Only default language and language neutral.'),
'strict' => t('Only current language.'),
'off' => t('All content. No language conditions apply.'),
);
}
/**
* Variables overview form
*/
function i18n_admin_variables_form() {
$i18n_variables = i18n_variable();
$i18n_current = array();
$result = db_query("SELECT DISTINCT(name) FROM {i18n_variable}");
while ($variable = db_fetch_object($result)) {
$i18n_current[] = $variable->name;
}
$i18n_list = array_unique(array_merge($i18n_variables, $i18n_current));
foreach ($i18n_list as $name) {
$is_multilingual = in_array($name, $i18n_variables);
$has_value = in_array($name, $i18n_current);
if ($is_multilingual) {
$class = $has_value ? 'ok' : 'info';
}
elseif ($has_value) {
$class = 'error';
}
$rows[] = array(
'class' => $class,
'data' => array(
array(
'data' => $name,
'colspan' => 2,
'header' => TRUE,
),
$is_multilingual ? t('Yes') : t('No'),
$has_value ? t('Yes') : t('No'),
),
);
}
if ($i18n_list) {
$header = array(
'',
t('Variable name'),
t('Is multilingual'),
t('Has translations'),
);
$form['variables']['#value'] = theme('table', $header, $rows, array(
'class' => 'system-status-report',
));
}
else {
$form['variables']['#value'] = t('There are no multilingual variables.');
}
if (count($i18n_list) > count($i18n_variables)) {
$form['clean'] = array(
'#type' => 'fieldset',
'#description' => t('Delete all existing translations for variables that are not marked as multilingual.'),
);
$form['clean']['cleanup'] = array(
'#type' => 'submit',
'#value' => t('Clean up variables'),
);
}
if ($i18n_current) {
$form['delete'] = array(
'#type' => 'fieldset',
'#description' => t('Delete all existing translations for variables.'),
);
$form['delete']['deleteall'] = array(
'#type' => 'submit',
'#value' => t('Delete all translations'),
);
}
return $form;
}
/**
* Admin variables form submission
*/
function i18n_admin_variables_form_submit($form, &$form_state) {
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
switch ($op) {
case t('Clean up variables'):
if ($variables = i18n_variable()) {
db_query("DELETE FROM {i18n_variable} WHERE name NOT IN (" . db_placeholders($variables, 'varchar') . ')', $variables);
break;
}
// Intenational no break, if no variables defined delete all
case t('Delete all translations'):
db_query("DELETE FROM {i18n_variable}");
break;
}
// Rebuild cache
cache_clear_all('variables:', 'cache', TRUE);
}
Functions
Name![]() |
Description |
---|---|
i18n_admin_settings | Form builder function. |
i18n_admin_variables_form | Variables overview form |
i18n_admin_variables_form_submit | Admin variables form submission |
_i18n_selection_mode |