On Jul 12, 2010, at 4:02 PM, mdipierro wrote: > How about ## instead? ((...)) looks better but as I tried to implement > it I realized that it ((opens and closes)) but there is no need to > close unless we want to allow more than one set of ((..)). Do we? > moreover it requires nasty regex.
That would reduce the likelihood of a collision, yes. And you're right; the close is superfluous, given that there's nothing following the variant string. > > > > > > On 12 Lug, 17:56, Jonathan Lundell <jlund...@pobox.com> wrote: >> On Jul 12, 2010, at 3:50 PM, mdipierro wrote: >> >>> As a test, I implemented this in trunk >> >>> T(' hello world ') -> ' hello world >>> ' >>> T(' hello world # token') -> 'hello >>> world' >>> T('hello # world # token') -> 'hello # world' >> >>> I.e. if no # nothing changes. If one '#', everything on its right is >>> not translated, everything is stripped. More than one '#' is ignored >>> and this would allow to have '#' in the translated string. >> >> That seems about right. I'm a *little* wary of using #, since it's pretty >> likely that there are existing T strings with a # in them, and they'll have >> to be fixed, no? >> >> >> >>> What do you think? >> >>> On 12 Lug, 17:30, Jonathan Lundell <jlund...@pobox.com> wrote: >>>> On Jul 12, 2010, at 3:26 PM, mdipierro wrote: >> >>>>> I like ((...)). If I understand you suggest stripping the whitespaces >>>>> ONLY inside ((..)). Did I understand? >> >>>> Stripping the main string, too--wasn't that the point of this exercise in >>>> the first place? I don't have a strong opinion, though. >> >>>>> On 12 Lug, 17:22, Jonathan Lundell <jlund...@pobox.com> wrote: >>>>>> On Jul 12, 2010, at 3:15 PM, mdipierro wrote: >> >>>>>>> Ok but can I propose we use >> >>>>>>> T('canto /* my room */') instead of [[...]] to avoid confusion with >>>>>>> markmin syntax? This would b easy to implement. >> >>>>>> Or ((my room)). >> >>>>>> Or <<my room>>. >> >>>>>> Regardless, you'd want to specify what happens to white space. Strip >>>>>> everything, I think, so T(' canto /* my room */') is equivalent to >>>>>> T('canto/*my room*/'). >> >>>>>> (That's why I don't much like /*...*/, though; it's sort of ugly without >>>>>> extra spaces.) >> >>>>>>> On 12 Lug, 15:39, Jonathan Lundell <jlund...@pobox.com> wrote: >>>>>>>> On Jul 12, 2010, at 1:32 PM, Álvaro Justen wrote: >> >>>>>>>>> On Mon, Jul 12, 2010 at 17:16, Jonathan Lundell <jlund...@pobox.com> >>>>>>>>> wrote: >>>>>>>>>> On Jul 12, 2010, at 12:51 PM, mdipierro wrote: >> >>>>>>>>>>> suggestions? :-) >> >>>>>>>>>> Ideally (from a usability pov), a variant="something" argument to >>>>>>>>>> T(), I suppose. But I can't think of a non-messy way to do it. >> >>>>>>>>>> How about something like this: >> >>>>>>>>>> T('string to translate [[VARIANT something]]') >>>>>>>>>> T('string to translate [[VARIANT something else]]') >> >>>>>>>>>> If there's no translation in effect, then [[VARIANT .*?]] *$ gets >>>>>>>>>> stripped from the string. Otherwise it's part of the lookup. It >>>>>>>>>> could just be >> >>>>>>>>>> [[something]] >>>>>>>>>> [[something else]] >> >>>>>>>>>> ...keeping in mind that if you really wanted that at the end of a >>>>>>>>>> T() string, you could write: >> >>>>>>>>>> T('blah blah [[blah]][[]]') >> >>>>>>>>>> ...and only the trailing [[]] would be stripped. >> >>>>>>>>>> BTW, there's a typo in languages.py: >> >>>>>>>>>> # patter for a valid accept_language >> >>>>>>>>>> (and the pattern could use a comment or three) >> >>>>>>>>> I don't like the idea of changing the string to be translated. We can >>>>>>>>> use a 'context' parameter as I said in other email some time ago, >>>>>>>>> like: >>>>>>>>> T('canto', context='my room') #translating from pt-BR to English >>>>>>>>> should be 'corner' >>>>>>>>> T('canto', context='music') #translating from pt-BR to English should >>>>>>>>> be 'sing' >> >>>>>>>> That is, btw, my 'variant=' suggestion, above. If it's practical, I'd >>>>>>>> prefer it. But embedding the variant/context into the string would be >>>>>>>> (I think) less disruptive. >> >>>>>>>> T('canto [[my room]]') >>>>>>>> T('canto [[music]]') >> >>>>>>>> Not as pretty, but almost identical in effect.