summaryrefslogtreecommitdiff
path: root/modules/translation/translation.module
diff options
context:
space:
mode:
Diffstat (limited to 'modules/translation/translation.module')
-rw-r--r--modules/translation/translation.module28
1 files changed, 26 insertions, 2 deletions
diff --git a/modules/translation/translation.module b/modules/translation/translation.module
index 03bf079c9..9a6a54924 100644
--- a/modules/translation/translation.module
+++ b/modules/translation/translation.module
@@ -126,6 +126,24 @@ function translation_form_node_type_form_alter(&$form, &$form_state) {
function translation_form_node_form_alter(&$form, &$form_state) {
if (translation_supported_type($form['#node']->type)) {
$node = $form['#node'];
+ $languages = language_list('enabled');
+ $disabled_languages = isset($languages[0]) ? $languages[0] : FALSE;
+ $translator_widget = $disabled_languages && user_access('translate content');
+ $groups = array(t('Disabled'), t('Enabled'));
+ // Allow translators to enter content in disabled languages. Translators
+ // might need to distinguish between enabled and disabled languages, hence
+ // we divide them in two option groups.
+ if ($translator_widget) {
+ $options = array();
+ $language_list = locale_language_list('name', TRUE);
+ foreach (array(1, 0) as $status) {
+ $group = $groups[$status];
+ foreach ($languages[$status] as $langcode => $language) {
+ $options[$group][$langcode] = $language_list[$langcode];
+ }
+ }
+ $form['language']['#options'] = $options;
+ }
if (!empty($node->translation_source)) {
// We are creating a translation. Add values and lock language field.
$form['translation_source'] = array('#type' => 'value', '#value' => $node->translation_source);
@@ -136,9 +154,15 @@ function translation_form_node_form_alter(&$form, &$form_state) {
// node to some language which is already in the translation set. Also remove the
// language neutral option.
unset($form['language']['#options'][LANGUAGE_NONE]);
- foreach (translation_node_get_translations($node->tnid) as $translation) {
+ foreach (translation_node_get_translations($node->tnid) as $langcode => $translation) {
if ($translation->nid != $node->nid) {
- unset($form['language']['#options'][$translation->language]);
+ if ($translator_widget) {
+ $group = $groups[(int)!isset($disabled_languages[$langcode])];
+ unset($form['language']['#options'][$group][$langcode]);
+ }
+ else {
+ unset($form['language']['#options'][$langcode]);
+ }
}
}
// Add translation values and workflow options.