@all Today plays with system, and want to be able to have the same current English locale, but be able to type in Russian.
And then, it come to some strange moment, that input:prefs settings didn't make any differences until i didn't set Russian locale !
I.e. i just go to input prefs, choice Russian, save, reboot , all system fonts have DejaVu (which have Russian symbols of course), and then i can't type in Russian with or without holding 'alt'.
Then if i go to prefs:locale, delete there English, and set Russian, then it start to works ! But wtf, i do not need Russian locale, i only want type in Russian.
Question is: why it didn't works with English locale, while fonts of course contain Russian symbols (as they works when i set Russian locale). Even if i set English first, and Russian next in locale it didn't work. It works only when Russian are first one in the list of preferred locales. Is settings of locale set some ENV which didn't sets by some reasons when i do choice Russian in input.prefs ? Like default-codepage or something .. Maybe i can somehow set something pure from shell, to enable what enable locale when Russian is sets ?
It must be down to the fact that the code page used by the system is defined by your choice of language.
Then imho it should be possible somehow setup code page globally without involving of setting Russian in languages ? I mean do that "code page used by system" without involving of locale settings.
Quote:
Also I couldn't see a Russian keyboard map, to try with.
That because those Russian keymaps which come by default with os4, all "classic amiga keyboard" (so you need to tick that option in input prefs to see them). In general that no big difference between PC keyboards (when option didn't ticked) so in our case it should be the same for tests. But if you want to help and to try, then there is ready new keymaps: http://kawai.spb.ru/files/amiga/rus_keymaps.zip (still you need to tick ClassicAmiga option in input.prefs to see them).
Quote:
Ultimatly to use two languages with two different completely alphabets at once you need unicode support, which we don't have.
All what i want, its to be able via SetDefaultKeymap() choice in what language to type : Russian or English, so we can then just put that code inside of switcher and be happy with.
Currently , its all works only when i set Russian in languages, but i do not want to see whole system in Russian, as it just ugly (and translation itself, and Russian itself is not so "computer" language, while in English all those terms looks clean and small).
Some time ago we discuss that problem on one Russian forum, and we come to the 3 ways of solving this:
1). Delete whole Russian translation files, so everything will be in Russian, and typing in Russian will works (but still it looks like ugly solution imho).
2). Understand how to change default codepage on amiga-1251 for English locale.
3). Understand how to set default codepage on amiga-1251 when we use 2 and more locales at one time.
Just i didn't get now , why to type in Russian i should have Russian locale, if, fonts which i use by default (DejaVu Sans) are contain and Russian and English symbols. All its need its right keymap and that should be enough imho, but for now its not.
It would make sense to separate the charset and language into two separate options if possible.
In the meantime, it should be easy to create an ISO-8859-5 English language driver, there's only a couple of things that need changing in the example source code. I just tried it myself but I can't get it to compile for some reason and don't have time to investigate right now.
It would make sense to separate the charset and language into two separate options if possible.
Where ? In prefs:locale ?
Quote:
In the meantime, it should be easy to create an ISO-8859-5 English language driver
By language drivers you mean system:locale/languages/ ?
ISO-8859-5 are old and almost didn't have use in Russian, only cp1251. And in all Russian keymaps which come with OS, for the CHARSET we have "Amiga-1251" and for LOCALINFOCHARSET also "Amiga-1251".
Quote:
there's only a couple of things that need changing in the example source code. I just tried it myself but I can't get it to compile for some reason and don't have time to investigate right now.
Yes, will be good to have just English language driver where codepage will be set to Amiga-1251. If that will solve problem, of course. Or, what can be solution too, is somehow "globaly" set codepage to Amiga-1251, and does not matter what language driver is choicen in locale.
Havent tested Serbian cyrillic support, which is a bit different in few letters from Russian one, but we might there be in a same boat: it always required special fonts.
@Kas1e: This is exactly the problem I ran into with mixing Japanese with English on Linux, Windows and Android systems.
The presentation and input of given languages are not based on where the locale settings are based.
Just because I live in Japan does not mean I know the language, Even with your own English/Russian combination where you have comprehension of both... this assumption with location and languages is annoying and detrimental.
As you have stated, you want the favored languages to not have interference from other locale settings.
@Kas1e: This is exactly the problem I ran into with mixing Japanese with English on Linux, Windows and Android systems.
The presentation and input of given languages are not based on where the locale settings are based.
Just because I live in Japan does not mean I know the language, Even with your own English/Russian combination where you have comprehension of both... this assumption with location and languages is annoying and detrimental.
As you have stated, you want the favored languages to not have interference from other locale settings.
Not need it, i mostly wait for Andy's and Chris's answers :) Problem is here, no big needs to repeat it. And its about os4 only, on win32 everything fine in that terms for me.
@All Problem is that to see russian-cp1251, i should choice russian-cp1251 locale, and while it looks logical, it do 2 different things :
1. It make whole system start to be in Russian. 2. It give ability to type/read Russian.
Not everyone want 1 with 2. Someone may want only 1 or only 2.
I do not know how it should be done in end. Maybe it can be just one single options in locale prefs in languages tab, like:
"Only set codepage, no system translate" ON/OFF
By this way it will be pretty logical. I.e. locale to choice locale/codepage as it should be. Just you can choice translate whole system (that mean enabling of necessary codepage as well of course, as it now), or just enable necessary codepage, without system translation. And if it enabled, then "preffered language" area will be just ghosted, as when there is no needs for translate, then preferred languages also have no use.
Because, if for example, it will be possible to make some language driver which will set codepage as it now, but keep option for system translate to be default, how it should be called ? "russian_Amiga-1251-no-translate-system-message.language" ?:) And then we will need to do the same language drivers for every cyrilic langauge (russian, serbian, whatever else).
While changing of prefs:locale and add that option can be good and handy, dunno if / when / else, so maybe for time begin it better to create our own language drivers ..
@Chris Quote:
In the meantime, it should be easy to create an ISO-8859-5 English language driver, there's only a couple of things that need changing in the example source code. I just tried it myself but I can't get it to compile for some reason and don't have time to investigate right now.
If talk about Russian, then it should be Amiga-1251, as in all keymaps. So should be default Language driver which will mean all system should be non-translated, just with code page setting to Amiga-1251. Preferable of course should be the same english language driver just with ISO-8859-5 instead, so both will be covered.
EDIT: i give a go to compile language driver from sdk:examples/language. All what was need to fix it just replace in cflags including of ../include, as well as use ppc makefile.
So unpack it, and just type "make", and you will have 2 elf drives (debug and no debug) ready to use.
Now, there is 2 problems. In SDK examples there is no russian_Amiga-1251.c file, while original makefiles contain it. As well, as i do not know what we need to do/change in that driver to be able to says from that code "system messages keep in english, but set codepage to Amiga-cp1251".
In end just want something like: russian_cp1251_sys-messages-eng.language russian_cp1251_sys-messages-rus.language
While it will looks like some fast fix, at least it will works , until (if ever) that "skip" for system translate can be added to whole locale thing.
Edited by kas1e on 2013/10/17 8:50:04 Edited by kas1e on 2013/10/17 8:54:09 Edited by kas1e on 2013/10/17 8:55:38 Edited by kas1e on 2013/10/17 8:58:19 Edited by kas1e on 2013/10/17 8:59:42 Edited by kas1e on 2013/10/17 9:01:09 Edited by kas1e on 2013/10/17 9:33:14 Edited by kas1e on 2013/10/17 9:35:37 Edited by kas1e on 2013/10/17 9:39:46 Edited by kas1e on 2013/10/17 9:43:57 Edited by kas1e on 2013/10/17 9:44:56 Edited by kas1e on 2013/10/17 10:37:44 Edited by kas1e on 2013/10/17 10:39:54
Now, there is 2 problems. In SDK examples there is no russian_Amiga-1251.c file, while original makefiles contain it. As well, as i do not know what we need to do/change in that driver to be able to says from that code "system messages keep in english, but set codepage to Amiga-cp1251".
In end just want something like: russian_cp1251_sys-messages-eng.language russian_cp1251_sys-messages-rus.language
That's the wrong way round - what you want is english_Amiga-1251.language
I don't have the code in front of me, but if you rename the english_ISO-8859-1.c file (to english_Amiga-1251.c), there are a few things which need changing near the top:
The codeset (MIBenum) needs to be 2104 Any mention of ISO-8859-1 needs to be changed to Amiga-1251 The language "english" local charset name should be changed to something like "english (rus)" so it can be easily identified. (I think there's a common name string as well - leave that as "english")
Right at the bottom there are translation tables for capitalising letters. These probably will need editing, but personally I'd ignore them until you have confirmed that the driver does what you expect it to do. If you can find source code for an Amiga-1251 language driver you can probably copy this section from there.
If you select your new "english (rus)" language in Locale you should then get English text with Amiga-1251 charset.
Ok, #define CODESET 111 changed to 2104 (right, its Amiga-1251 from l:charsets/character-sets file).
Quote:
Any mention of ISO-8859-1 needs to be changed to Amiga-1251
Done.
Quote:
The language "english" local charset name should be changed to something like "english (rus)" so it can be easily identified. (I think there's a common name string as well - leave that as "english")
Do you mean #define GLS_LANGNAME ? Currently its:
Quote:
#define GLS_LANGNAME "english (E)" /* native language name */ /* in this language and charset */
So just changed that on "english (rus)".
Quote:
Right at the bottom there are translation tables for capitalising letters. These probably will need editing, but personally I'd ignore them until you have confirmed that the driver does what you expect it to do. If you can find source code for an Amiga-1251 language driver you can probably copy this section from there.
If you select your new "english (rus)" language in Locale you should then get English text with Amiga-1251 charset.
Done ! Everything works !
I.e. if i choice our new language driver, i have all the system messages in the english, and can type/see in russian-cp1251. But if i choice default inbuild with os (russian_Amiga-1251), then system in Russian and everything types in russian.
Great, is it possible to do the same for Serbian cyrillic which is just few letters away?
If Serbian also uses Amiga-1251, then its all should be the same. Just use the same language driver which i upload, only your choice of keymap in input prefs will be different.
Edited by kas1e on 2013/10/17 13:47:07 Edited by kas1e on 2013/10/17 13:48:30
@Vox I upload on os4depot that driver, with small change so it will fits all the cyrilic languages (in upload query now). Try it. But pretty possible you will need to create new serbian keymap, as those which come by default with os4, seems iso-8859-2 and iso-8859-5 only.
And what about Polish? It's use ISO-2 in keyboard. I should create spacial keyboard with Amiga-1251?
If you want to use that driver which on os4depot now, then imho yep. Just grab from devs/keymaps some "rus" keymaps, and have a look how it done, and then just recreate the same for polish.
@All
Javier release KMS switcher on os4depot, so if you have setup now new dock panel with 24x24 of size, and put it on top bar of wb, then you can have tasty keymap switcher (currently without commoditie broker, so no key-combos, only choice by mouse, but javier will add it for next release).