#29853: Exported jsi18n ngettext() function doesn't check existence of plural
translation before attempting to access it
------------------------------------------------+------------------------
               Reporter:  itsmemohamed          |          Owner:  nobody
                   Type:  Uncategorized         |         Status:  new
              Component:  Internationalization  |        Version:  2.1
               Severity:  Normal                |       Keywords:
           Triage Stage:  Unreviewed            |      Has patch:  0
    Needs documentation:  0                     |    Needs tests:  0
Patch needs improvement:  0                     |  Easy pickings:  0
                  UI/UX:  0                     |
------------------------------------------------+------------------------
 In https://docs.djangoproject.com/en/2.0/_modules/django/views/i18n/ the
 following exported javascript function
 {{{
 django.ngettext = function(singular, plural, count) {
       var value = django.catalog[singular];
       if (typeof(value) == 'undefined') {
         return (count == 1) ? singular : plural;
       } else {
         return value[django.pluralidx(count)];
       }
     };
 }}}
 doesn't check the existence of {{{value[1]}}} or {{{value[2]}}} before
 attempting to access them if {{{value}}} itself is defined. Therefore will
 return undefined if user attempts to access plural translation, when none
 is defined.

 - If user provides no translations at all for singular or plural strings
 it will return formatted un-translated string (Works as expected)
 - If user provides translations for singular and plural strings it will
 return formatted translated string (Works as expected)
 - If user provides singular translation BUT no plural translation it will
 return undefined (Unexpected and extremely difficult to debug)

 This function should rather fallback to singular translation OR use un-
 translated plural string in cases where a singular translation is provided
 but no plural translation is provided.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/29853>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/055.c6877d320e05b0cddaea4ca72029c9c5%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to