[sugar] Develop activity (Oops...)
Ian Bicking
ianb at colorstudy.com
Mon Aug 6 12:47:54 EDT 2007
Andrew L. Clunis wrote:
> - code internationalisation. Jameson and myself have been discussing
> various means of achieving this lofty goal, see below;
This is a really ambitious goal. I hope it doesn't keep us from having
a good non-internationalized Develop activity.
I think it is also unclear yet whether this is feasible -- not just from
a technical point of view, but whether it is feasible in terms of
community structure, whether this translation can keep pace with
upstream development, whether the abstractions will be too leaky. Lots
of people who don't speak English program, and from what I understand
they don't internationalize their languages. When they type "for" they
don't have the English word "for" to remind them what it does, but they
learn what it means independently from its meaning in any natural
language. That's what *all* programmers do; knowing English you just
get a head start because you have a hint about what "for" might mean due
to the natural language analogy.
But anyway, this is all to say that before committing fully to this
translation effort I think you should create a fully working prototype
that you can use to tell if it's really a workable goal. And Develop
shouldn't block on this goal.
A possible quick-and-dirty way to experiment with this is to hack
Python's encoding. An example of this is here:
http://timhatch.com/projects/pybraces/
Basically you'd do:
# -*- coding: lang_es -*-
And the 'lang_es' encoding would get first crack at rewriting the entire
module. Alternately you could use .py_es, and create a custom importer
that did the same thing, which might be more reasonable. Maybe an
advantage of the custom importer is that you could wrap the entire
module object, and possible wrap all the imported modules and objects
(maybe with some kind of translating proxy). Alternately you could just
translate identifiers, and maybe use a translating version of getattr.
But no matter what happens you are going to have leaking.
Another option for translation is PyLogo, which can run Python code, but
has a clearer point for adding translation. And probably a smaller
scope of things that would have to be translated. In that model, PyLogo
would be a bridge to the more "full" language of Python, and part of
crossing that bridge would involve learning some English (or at least
the English keywords and attributes; the docstrings may still be
translated). For good and bad there would also be a clearer distinction
between user and system code; user code would be in Logo, system code in
Python, and by default users would see the Python code as effectively
opaque. So, for instance, tracebacks would leave out Python frames. As
a first-programming-language-ever experience, I think this can be helpful.
Anyway, some thoughts.
--
Ian Bicking : ianb at colorstudy.com : http://blog.ianbicking.org
: Write code, do good : http://topp.openplans.org/careers
More information about the Sugar
mailing list