Guido: > publishers often turn 'foo' into `foo' It gets worse. The opposite of ` isn't ' -- it's =B4. Besides, these are apostrophes and not quotes. _Real_ symmetric=20 quotes are " " or =AB =BB or =93 " or ' ' or =92 ' or ..., but you can'= t use=20 any of these with just ASCII. Apple's MPW Shell language played with=20 some of these. Anyway, I agree that real languages use ${} or $WORD and that=20 formatting is best done with ${NAME:format}. Personally, the "${foo}".sub(foo=3D"bar") syntax (using keyword=20 arguments) looks good and works reasonably well for i18n. A possible=20 simplification would be to use the local+global variables if no=20 arguments are given. > def f(x, y): > return e"The sum of $x and $y is $(x+y)" How would that work with i18n? Proposal: The compiler should translate _"foo is ${foo}" to _("foo is ${foo}") and e"foo is ${foo}" to "foo is ${foo}".sub() >That looks OK to me, especially if it can be combined with u and r to > create unicode and raw strings. > Exactly. > PEP 292 is an attempt to do this *without* involving the parser: > > def f(x, y): > return "The sum of $x and $y is $(x+y)".sub() > > Downsides are that it invites using non-literals as formats, with al= l > the security aspects, and that its parsing happens at run-time (no b= ig > deal IMO). > You can't do it any other way if you want to use i18nalized strings=20 and formats. Note that some sentences cannot be internationalized without=20 rearranging some parameters... --=20 Matthias Urlichs
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4