On Mon, Nov 23, 2009 at 12:47 PM, Thadeus Burgess <thade...@thadeusb.com>wrote:
> I just don't want my code littered with > > error_message=languages[0] > > print languages[1] > > alert(languages[3]) > :-) I agre, that would TRULY be terrible! If anything, if Massimo would want to go in that direction (instead of firmly back in the "translation" concept; latter has some distinct advantages down at the gluon level) then this kind of stuff would have to happen "behind the scenes", in gluon. - Yarko > > -Thadeus > > > > > > On Mon, Nov 23, 2009 at 12:23 PM, Yarko Tymciurak < > resultsinsoftw...@gmail.com> wrote: > >> >> On Mon, Nov 23, 2009 at 11:33 AM, mdipierro <mdipie...@cs.depaul.edu>wrote: >> ...... >> >>> I still stand that those apps have a bug (because when we added >>> translations I did not set the current language) not languages.py. >>> >> >> Then we must agree to disagree. >> >> For me, it is quite evident (by tracing execution of JUST >> gluon/languages.py - without consideration of any application, and BEFORE >> any application is even called by gluon/main) that languages.py selects a >> language based (incorrectly) on: >> >> >> - whatever the first match is between the http_request_language and >> an available app directory/languages translation file >> >> The concept that you will translate "from no specified language" to some >> language is in itself faulty. >> >> IFF the app/lanugages translation files held the target string by index, >> then your argument might hold some merit. >> >> AS IT IS, the design even of the translation files is that each >> translation file contains a "dictionary" pair: the DEFAULT LANGUAGE string >> as the key, and the TARGET SERVE language string as the fetched item. >> >> If the design you had was NOT of tranlation, but rather of serving strings >> / localization (e.g. indexed strings), then expecting to find a string file >> for the http_request_language would make some logical sense. >> >> As it is, you are translating from a default language (which in the >> distribution is 'en') to a target language. >> >> Perhaps this is really pointing to a need to review the overall string >> serving design. >> >> For example, with an indexed based, language string file, it would be >> possible to set [1] a site default language for error messages, and >> simultaneously a different language for an application (I'm not sure that is >> easy to do right now). >> >> To make clear what I am talking about (as an example) >> >> Current design is based on the concept of TRANSLATION, so that >> app/langes/it-it.py (for example) holds: >> >> 'Welcome to web2py': 'Ciao da wek2py', >> 'click here for online examples': 'clicca per vedere gli esempi', >> >> I am suggesting that a "serve language" concept (rather than translation) >> would have some string index (rather than translation-based index), perhaps >> something like this; in place of lanugages.py, perhaps a strings/en-us.py: >> >> controller.default[1]:'Welcome to web2py' >> controller.default[2]:'click here for online examples' >> >> and for strings/it-it.py: >> >> controller.default[1]': 'Ciao da wek2py', >> controller.default[2]: 'clicca per vedere gli esempi', >> >> This is just for illustrative purposes... >> >> What I am saying is how you talk about _this_ (is it a bug? is there >> something missing) requires a shift - to the concept that we do not do >> translations; we serve strings in some language, and to do that you must >> have the strings existing in that language (then translation becomes a >> utility function, and not a web2py term). >> >> As it currently is, mixing these two perspectives is problematic: Does >> web2py translate (if so - then FROM which language? I need a default >> language declared somewhere), or does web2py serve strings on a per-language >> basis (if so, then default language is irrelevant; all I need is that one of >> the http_request_languages exist). >> >> Massimo seems to say that languages/translate.py operates in the latter >> fashion, but this is incongruent with _even_ the name of that class (class >> translator), and the function T('string to translate from'). >> >> Consider how even the programming paradigm changes if you shift to the >> "serve string" concept (away from the translate model). >> >> Of course, it is natural to talk about "translate" to a web writer; the >> the internal model does not need to follow the external structure - it can >> do a engineering-layer translation to what Massimo is saying - but to do so, >> there must be clear separation: "here, we think of it this way; in gluon, >> it accomplishes it this way...". >> >> There is room for much discussion around this, but for now I believe this >> is simply a bug in gluon/language.py given the current design, (e.g. names >> used for classes/functions). >> >> - Yarko >> >> Nevertheless it is easier to change the default behavior than change >>> three apps. >>> >>> If no objection from people overseas, I will change this in trunk. >>> >>> To people overseas: If your app is in polish (for example) and you >>> provide an english translation, the english translation will not work >>> anymore until you re-set the current language to polish. Now it does >>> not make any assumption about the current language. >>> >>> Massimo >>> >>> On Nov 23, 11:12 am, Yarko Tymciurak <resultsinsoftw...@gmail.com> >>> wrote: >>> > On Mon, Nov 23, 2009 at 12:20 AM, Thadeus Burgess < >>> thade...@thadeusb.com>wrote: >>> > >>> > > if web2py is mostly written in English, then it needs to default to >>> > > English, and allow for easy overriding of this default. >>> > >>> > I agree. >>> > >>> > More explicitly - whatever the web2py distribution default is should >>> behave >>> > correctly; >>> > >>> > If an application declares it's own default language (and it should be >>> easy, >>> > and clear - how should that look to the application writer?), then that >>> > should override the distribution default for requests to that >>> application. >>> > >>> > To see why there is currently a bug, >>> > >>> > - set your languages to more than one in (for example) Firefox >>> > - e.g. [1] 'en'; [2] 'it' >>> > - go tohttp://www.web2py.com/examples/simple_examples/hello6 (or >>> any of >>> > the simple examples) >>> > - despite 'en' being the first language, the example displays >>> "Slave >>> > Mondo' (incorrect behavior) >>> > >>> > The current default behavior is incorrect; the proposal (which is >>> fine for >>> > overriding a site defailt) is that EACH APPLICATION must declare the >>> default >>> > language. >>> > >>> > This (currently) is necessary for the system to behave reasonably. >>> > >>> > The reason Massimo's proposed "solution" is NOT sufficient for the >>> > installation default should now be quite evident: the "patch" for the >>> bug >>> > MUST propogate to EACH AND EVERY APP for the system behavior to be >>> correct. >>> > >>> > This is NOT a bug in examples; this is a bug in gluon/languages.py. >>> To see >>> > this yet another way, write a unit test for gluon/languages.py. >>> > >>> > Since examples do not behave correctly, and - in general - with >>> Massimo's >>> > proposal multiple, and constantly changing (as applications are >>> > installed) points of correction must be made in order to accomplish >>> > reasonable behavior: this by itself is sufficient evidence to point >>> > directly to the bug in gluon/languages.py. Additionally, a suggestion >>> that >>> > "examples" has a bug (it does not) is a suggestion which breaks >>> "backward >>> > compatibility" (but backward compatibility is not the point at all >>> here - >>> > that correcting a bug at its source is the proper approach is what is >>> in >>> > discussion here) >>> > >>> > Once all recognize this clearly, then we can move on to talking about >>> what a >>> > good solution would look like. >>> > >>> > - Yarko >>> > >>> > >>> > >>> > > -Thadeus >>> > >>> > > On Sun, Nov 22, 2009 at 10:04 PM, mdipierro <mdipie...@cs.depaul.edu >>> >wrote: >>> > >>> > >> rammer always explicitly say which languages do not need >>> > >> transla >>> > >>> > >>> >>> >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---