Subject: Re: [boost] [locale] Review results for Boost.Locale library
From: Gevorg Voskanyan (v_gevorg_at_[hidden])
Date: 2011-04-24 12:18:48
Ryou Ezoe wrote:
> I can't believe it is accepted.
> There were just 15 people explicitly stated their opinion.
> There was only one native non-western language speaker. Me.
What is your definition of a western and a non-western language?
> I really hate to complain much, but this library is totally useless
> for the Non-English speaker.
I understand the message translation module of Boost.Locale is not currently
well-suited for use with non-ASCII keys. But what about other modules: number
formatting, collation, boundary analysis, etc.? Do you consider them useless for
non-English speakers too?
> Library author said it is important to use English.
> Because it allow us to easily translate to other languages.
> Does it really matter if Non-English people don't bother to use this library?
> Believe me, There are so many Boost users who don't know English at all.
> They are good at using Boost library because there are enough translations.
> This English-dependent library cannot be used by these users.
> They CAN use English identifier in the source file. like name of
> functions, classes, variables etc(badly If you ask me)
> But text is written in their language.
> There is no way they use English text.
> The text in software is not just written by programmer alone.
> Non-programmers also write text.
> So this library requires English for anybody.
> If anybody can use English. There is no need for localization in the
> first place.
I can't follow the logic here. Even if all programmers have known English, there
still will be need for localization, because not all *users* necessarily know
English. Unless all users of the software are programmers themselves.
> That means, if everybody can use this English-dependent library, the
> purpose of this library, the localization, is unnecessary.
Not true. Software localization is primarily aimed at users, not developers, as
I already stressed above. Boost.Locale is not a localized library. It is a
library which can help create localized software.
And even when people know English, that doesn't mean they don't want software to
speak their language. Moreover localization is not all about the language. It's
more about local culture, and conventions used within that culture. For example,
I can read and understand English well. That means I can use just fine software
with English as the user interface language without any need for translation
(even though I prefer Armenian translation if available, but English will do for
me otherwise). The same cannot be said about other cultural aspects. For
example, if some software shows me distances in miles and masses in pounds,
those values will not make any sense to me, and I'd be forced to convert those
values in kilometers and kilograms to understand how much they are. And of
course I'll be angry and dissatisfied with that software.
Localization is a much larger domain than just message text translation, so
Boost.Locale needs to be evaluated in that whole context, rather than in just a
specific (even if very important) aspect.
> I think I found a another issue.
> Even the English text cannot be express by ASCII alone.
> There are many characters ASCII doesn't have. such as ®.
> So this library need to maintain two almost identical English texts.
> One for real English text which contains non-ASCII characters, and one
> for unique ASCII identifier that is a argument of translate().
That's a working approach. Do you have a proposal for another approach which
could be implemented in Boost.Locale to make it better in that regard?
> But enough of argument.
The arguments you made earlier have convinced me that using English keys is not
always appropriate. Not only because programmers might not be able to write
English, but also because the product being developed might not target English
speaking audience at all. E.g. a product targeting Chinese, Korean and Japanese
markets only. In that case making an English translation would be just a waste
of time and money.
However your arguments didn't convince me that Boost.Locale should be rejected
on that ground, with the following reasons:
1. Using C++11 u8 encoding prefix will resolve the problem
2. Current message translation system is based on widely accepted existing
practice, and works well in the majority of use cases
3. I have not yet seen a truly working proposal from you which can address the
problem properly in Boost.Locale using C++03 features only
4. Boost.Locale is much more than just message translation. I can imagine many
legitimate usages of Boost.Locale not involving message translation at all
> I just want to assure you all, this library will never be used by
> non-English speaker.
Not even when they have u8 prefix? Not even when they don't need message
translation but other features of Boost.Locale?
> Blaming people for not to use English doesn't work. They don't care.
I don't think anyone was making such blames in these discussions. There were
only suggestions to use ASCII-based keys for now as they are more portable.
> Just like you don't care their language.
If Artyom didn't care what language is being used by different users, he
wouldn't have developed a localization library in the first place. He would
rather declare "In order to use my software, you should talk to it in my
language". And note that English is not Artyom's native language either.
> Ryou Ezoe
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk