[REBOL] Re: locale
From: petr:krenzelok:trz:cz at: 25-Aug-2002 23:38
Francesco De Napoli wrote:
>Hello Petr
>
>On 24-Ago-02, Petr Krenzelok wrote:
>
>>Yes, I know. But then we have to decide, if we add system-wide
>>directories as /catalogues, /skins, etc., or each app will use its own
>>directory? Because - in rebol, the app = few KB script in many cases, so
>>maybe it would be sufficient to look at app directory subdir, or
>>directly at directory where script resides (no /catalogues subdir, just
>>catalogue files)
>>
>>
>
>I think to put %app-name.r & %catalog/ in the same directory, so they
>maybe installed, copied, removed together :)
>
OK, then remember the directory can contain more than one app (script)
.... just a note :-)
>Yes! Rebol applications requires few KB and to collect many catalogs colud
>enlarge them, but we should consider to distribute them with few or only
>one catalog file (p.e. english one) and modify make-catalog function or add
>another function to autodownload prefered catalog file(s) if in the user
>setup are specified different languages, so only first application launch
>needs to start with "wrong" catalog and download correct one if we can't do
>catalogs download during app installation and then re-define catalog.
>
>Another approch could be this: an application is distributed with all
>avaible
>catalog files and on the first launch are removed unused ones or user force
>their deletion.
>
>I think first solution is the best one :)
>
hmm, IIRC Amiga has some organisation called ATO (Amiga Translation
Organisation). If someone develops app, he/she can contact ATO to do
translation to other languages, which can be ready till app release
time. I am not sure ppl here + RT will agree to:
1) have default language pack external to script. It would mean EVERY
script would have to have two files - script itself, and catalogue. On
the other hand - if author doesn't wish to support localisation, he does
not need to create catalogue.
2) to have it downloadable. I am not sure app itself should download it
dynamically. Such capability should be provided by app itself, if author
wishes to do so.
>Do you want a global locale/catalog directory? No problem!!
>app-name-language.cat works fine even with global locale/catalog directory
>until two or more application haven't the same "app-name" :)
>
correct :-)
>I've an opened mind: that was only my first experiment on "Rebol Scripts
>Localization" not the ultimate solution :)
>
hey, I am not guru either :-)
>>we could e.g. use app-name.czech.cat or even app-name.czech and use
>>suffix? func to get language name. But it could look confusing having
>>
>>
>
>Their are both valid solution, but I think .cat suffix is better to make
>searches or use wildcard ;)
>
hmm, you are right here. What about .catalogue or .language suffix? Are
we really all influenced by MS Win3.1 era crap? :-)
>>app-name.r containing app itself, default catalogue and app-name.czech
>>to contain only language catalogue, not script ...
>>
>>
>
>If app-name.r contains code & default catalog we may waste KB, i.e. I'm
>Italian and I like use Italian Language but default catalog is Czech,
>source code contains Czech strings definition even if at runtime them will
>be replaced by Italian ones, but they are still there and even on harddisk!
>Otherwise if all catalog are external file I could delete Czech and all
>other unused catalogs, app-name.r will be as tiny as it needs to be and
>only one or few catalogs will be stored on harddisk. To have default
>catalog as an external file may help translators to make their dirty job :)
>
Well, I always liked componentisation, but some ppl here will tell you
stories about so called "dll hell" - if you don't find a component, your
app is not operable. That's why we have Rebol in one executable file and
scripts are mostly one .r files and everything-inside-aproach is often
used :-)
Think e.g. of Rebol itself. It contains many messages. They are in
English. How to translate them? Well, main rebol dir could contain
something like suggested rebol.czech.cat. Then we need to tell Rebol to
use Czech language, right? How? Is the user.r the right place? What word
should be used? What about using system/locale object?
System/locale/preferred-language: "Czech". Then:
- Rebol - would load that catalogue, checking version number of course
- other app :
a) does not support localisation and nothing happens
b) support localisation - should call some helper function
switch-to-language doing two things - 1) look at
system/locale/preferred-language 2) checking its dir if
app-name.czech.cat is available
-pekr-