Hi Ian, gettext itself allows this pattern [1] but django compilemessage expects variables with same names are used in all plural forms (See Note in [2]). IMHO it is better to use same variables in all plural forms in code as possible as we can. As translator, I try to use the second pattern (i.e., plural form) as source string as a plural form contains sufficient and full pattern in most cases. What I am not sure is this happens only for languages with nplural==1 (like Korean, Japanese and so on).
Akihiro [1] https://www.gnu.org/software/gettext/manual/html_node/Translating-plural-forms.html#Translating-plural-forms [2] https://docs.djangoproject.com/en/1.10/topics/i18n/translation/#pluralization 2016-09-16 18:57 GMT+09:00 Ian Y. Choi <[email protected]>: > Hello, > > Recently, thanks to the help from Andreas, I am investigating on a broken > job > for the translation import of Horizon project [1]. > The actual error message is > : openstack_dashboard/locale/ko_KR/LC_MESSAGES/django.po:8273: a format > specification for argument 'req' doesn't exist in 'msgstr[0]' > > And then I have found that this error was from a string in horizon - > openstack_dashboard [2] > > error_message = ungettext_lazy( > 'The requested instance cannot be launched as you only ' > 'have %(avail)i of your quota available. ', > 'The requested %(req)i instances cannot be launched as you ' > 'only have %(avail)i of your quota available.', > count) > params = {'req': count, > 'avail': available_count} > > In i18n translation infrastructure, only one of two (for singular and > plural) strings should be > selected, translated, saved, and finally imported back to Horizon project as > [1]. > However, the first string only used "%(avail)i" string variable, > and the second string used both "%(req)i" and "%(avail)i" string variables. > > Since one Korean translator selected the first string, there will be no > "%(req)i" in Korean po file, which generates such an error. > So my suggestion is to use the same string variables for both two strings > when we use ungettext_lazy function. > > Is it a bug from Horizon? Would it be other issues when we change like > : from 'The requested instance cannot be launched as you only ' to 'The > requested %(req)i instance cannot be launched as you only '? > > > [1] > http://logs.openstack.org/periodic/horizon-propose-translation-update/c038aab/console.html#_2016-09-16_07_37_22_312092 > [2] > http://git.openstack.org/cgit/openstack/horizon/tree/openstack_dashboard/dashboards/project/instances/workflows/create_instance.py#n214 > > > With many thanks, > > /Ian > > _______________________________________________ > OpenStack-I18n mailing list > [email protected] > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-i18n __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: [email protected]?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
