Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] simple as that ... Re: Re: locale

From: petr::krenzelok::trz::cz at: 26-Aug-2002 10:44

Boleslav Brezovsky wrote:
>>... just kidding ... I think that they think of many things. But - >>everything is about priorities I think. However - they sell IOS. IF >> >> >they > >>want to sell to non English speaking areas, the right aproach to >>localisation is needed. And no, sorry, - I am not about to edit each >>reblet and replace strings in there - forget it - that's not >>architecture, that's not a concept - I want to be able to switch >> >> >between > >>the languages freely ... ;-) >> >> > >Yes, me to :) >But the question is HOW and if we pick some solution can we hope RT will >make some use of it or will they come in 3-4 years (maybe less ;) with >their own solution (of course incompatible) ? >
Yes, it is always the risk :-) OTOH, as you can see, RT included some community code into latest Core updates. So it is upon us, what becomes widely used. I propose following: REBOL [] preferred-language: "Enlish" locale: context [ set 'compose-cat-name func [app language /local blk][ blk: parse last split-path app "." remove back tail blk append blk join "." [language ".cat"] join first split-path app blk ] set 'get-languages func [app /local available][ available: copy [] foreach file read first split-path app [ if %.cat == suffix? file [append available second head reverse parse file "."] ] either empty? available [none][available] ] set 'load-locale func [app /language lang /local available][ language: either language [lang][preferred-language] either all [ not none? available: get-languages app find available language ] [load compose-cat-name app language][none] ] ] requirements: 1) preferred-language item being set either in config file, or system/options/locale 2) to have catalogues of app-name.language.cat placed into app directory .... 3) the only thing needed is to call: load-locale %/C/rebol/view/app.r ; will load preferred language locale file or load-locale/language %/C/rebol/view/app.r "czech" ; will force requested language .... That's really all, you can assign it to whateve word you want, e.g. msgs: load-locale .... Some issues: - versioning (other functions can be added into object, but imo only load-locale should be used, so e.g. load-locale/language/version .... let's not complicate it further .... could be checked easily, if locale file is an object, it could look like: [ version: 1.2.3 app: "app-name" ; not necessary, if we recognize it from file name itself language: "czeh" ; dtto icon: %czech-flag.jpg menu-item_1: "Otevrit ..." ; open etc ] - someone should clean my script - return issues, naming conventions, path issues etc. - I tried to find out script name to allow only load-locale, or load-locale/language "czech", but if script header doesn't contain file-name, you will not find it in system structure .... well, otoh it is maybe good as it is now, as you can call/load locale strings from outside the app itself - e.g. from translation tool, which could follow and help to translate apps ... What do you think? -pekr-