Currently, when a node has 'und' language, the Langauge field will show empty value.
Also, if a node is on disabled language, empty value will be shown again, and warning probably, due to:

 $value = isset($languages[$value]) ? $languages[$value] : '';

Comments

OnkelTem’s picture

Status: Active » Needs review
StatusFileSize
new1.29 KB
OnkelTem’s picture

* changed accordingly rendering of local_language generic handler too

ygerasimov’s picture

Status: Needs review » Needs work

There is one inconsistency we should take care with this patch. If we create a filter of the node's language for 'und' we have option 'No language'.

So we should or rename language field output to 'No language' or change filter's label to 'Language neutral'.

Next consistency fix is if we use argument of language and override title. In case of 'und' and not available language we get "Unknown language". Lets have 'No language' or 'Language neutral' for "und" and same message as language shown if it is not available (patch from #2 proposes to have message "Undefined language (@langcode)").

Please review all handlers of locale module and if you find any other inconsistencies lest fix them at once.

OnkelTem’s picture

There is one inconsistency we should take care with this patch. If we create a filter of the node's language for 'und' we have option 'No language'.

So we should or rename language field output to 'No language' or change filter's label to 'Language neutral'.

I vote for "Language neutral" according to Drupal core naming. ("No language" is more alike empty value of the schema's Language field which is by the way not an impossible situation in more wider sense. For example, when creating Product Commerce entities with Rules, if we don't set language, it will get "" value.)

Next consistency fix is if we use argument of language and override title. In case of 'und' and not available language we get "Unknown language". Lets have 'No language' or 'Language neutral' for "und" and same message as language shown if it is not available (patch from #2 proposes to have message "Undefined language (@langcode)").

Ok, I just missed it. I will update views_handler_argument_locale_language.inc and views_handler_argument_node_language.inc accordingly.

OnkelTem’s picture

Status: Needs work » Needs review
StatusFileSize
new5.63 KB
ygerasimov’s picture

Status: Needs review » Reviewed & tested by the community

I think it is much better. Thanks!

OnkelTem’s picture

Priority: Normal » Major
dawehner’s picture

Status: Reviewed & tested by the community » Needs review
+++ b/modules/locale/views_handler_argument_locale_language.incundefined
@@ -33,6 +33,12 @@ class views_handler_argument_locale_language extends views_handler_argument {
+    if ($langcode == LANGUAGE_NONE || isset($languages[$langcode])) {
+      $language = $langcode == LANGUAGE_NONE ? t('Language neutral') : t($languages[$langcode]);
+    }

Couldn't we do something like if ($langcode == LANGUAGE_NONE) { ...} {elsei f (isset($languages[$langcode]) {

this would so much simplify the actual code to read.

+++ b/modules/locale/views_handler_filter_locale_language.incundefined
@@ -17,7 +17,7 @@ class views_handler_filter_locale_language extends views_handler_filter_in_opera
-        LANGUAGE_NONE => t('No language')
+        LANGUAGE_NONE => t('Language neutral')

+++ b/modules/locale/views_handler_filter_node_language.incundefined
@@ -17,7 +17,7 @@ class views_handler_filter_node_language extends views_handler_filter_in_operato
         '***CURRENT_LANGUAGE***' => t("Current user's language"),

Just for reference, core is using the same string in locale.module:

array(LANGUAGE_NONE => t('Language neutral')) 
OnkelTem’s picture

StatusFileSize
new5.65 KB

Still needs review.
I'd like to optimize the code by implementing a helper function which takes $languages list and $langcode and return correct $language name.

OnkelTem’s picture

StatusFileSize
new5.66 KB

* Now implementing helper function views_language_name($languages, $langcode) in views.module to unify language
names resolution and thus reducing the code size.
* Adding an option to return really empty language name ("") for really empty $langcode (this is the case when you LEFT JOIN Entity Translation table for example).

OnkelTem’s picture

Issue summary: View changes

Updated issue summary.

dawehner’s picture

It would be great if someone 3rd could test this patch.

chris matthews’s picture

Priority: Major » Normal
Issue summary: View changes
Status: Needs review » Needs work
Issue tags: +Needs reroll

The 6 year old patch in #10 does not apply to the latest views 7.x-3.x-dev.

Checking patch modules/locale/views_handler_argument_locale_language.inc...
error: while searching for:
  }

  function locale_language($langcode) {
    $languages = views_language_list();
    return isset($languages[$langcode]) ? $languages[$langcode] : t('Unknown language');
  }
}

error: patch failed: modules/locale/views_handler_argument_locale_language.inc:32
error: modules/locale/views_handler_argument_locale_language.inc: patch does not apply
Checking patch modules/locale/views_handler_field_locale_language.inc...
error: while searching for:

  function render($values) {
    $languages = locale_language_list(empty($this->options['native_language']) ? 'name' : 'native');
    $value = $this->get_value($values);
    return isset($languages[$value]) ? $languages[$value] : '';
  }
}

error: patch failed: modules/locale/views_handler_field_locale_language.inc:30
error: modules/locale/views_handler_field_locale_language.inc: patch does not apply
Checking patch modules/locale/views_handler_field_node_language.inc...
error: while searching for:

  function render($values) {
    $languages = views_language_list(empty($this->options['native_language']) ? 'name' : 'native');
    $value = $this->get_value($values);
    $value = isset($languages[$value]) ? $languages[$value] : '';
    return $this->render_link($value, $values);
  }
}

error: patch failed: modules/locale/views_handler_field_node_language.inc:30
error: modules/locale/views_handler_field_node_language.inc: patch does not apply
Checking patch modules/locale/views_handler_filter_locale_language.inc...
Hunk #1 succeeded at 21 (offset 4 lines).
Checking patch modules/locale/views_handler_filter_node_language.inc...
Hunk #1 succeeded at 21 (offset 4 lines).
Checking patch modules/node/views_handler_argument_node_language.inc...
error: while searching for:
  }

  function node_language($langcode) {
    $languages = views_language_list();
    return isset($languages[$langcode]) ? $languages[$langcode] : t('Unknown language');
  }
}

error: patch failed: modules/node/views_handler_argument_node_language.inc:30
error: modules/node/views_handler_argument_node_language.inc: patch does not apply
Checking patch views.module...
Hunk #1 succeeded at 980 (offset 93 lines).
chris matthews’s picture

andrew answer’s picture

Status: Needs work » Needs review
Issue tags: -Needs reroll
StatusFileSize
new4.97 KB

Patch rerolled.