[opensuse-translation] Adding a new language
Hi, I'm interested in starting a translation project. Name: Alemayehu Gemeda Language: Amharic (am) Novell login: netsasoft Contact email: netsasoft@gmail.com Sincerely, Alemayehu alias Alex --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-translation+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-translation+help@opensuse.org
"The NetsaSoft Foundation GLP" <netsasoft@gmail.com> writes:
I'm interested in starting a translation project.
Name: Alemayehu Gemeda Language: Amharic (am) Novell login: netsasoft Contact email: netsasoft@gmail.com
Alemayehu alias Alex
Hello Alemayehu, thanks for your interest! Before starting with translation, we must make sure, a font suitable for displaying Amharic is available for openSUSE. Mike, will you please check it? Once we know this I will initialize the *.am.po files and give you commit permissions. Cheers, Karl -- Karl Eichwalder R&D / Documentation SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-translation+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-translation+help@opensuse.org
Karl Eichwalder <ke@suse.de> さんは書きました:
"The NetsaSoft Foundation GLP" <netsasoft@gmail.com> writes:
I'm interested in starting a translation project.
Name: Alemayehu Gemeda Language: Amharic (am) Novell login: netsasoft Contact email: netsasoft@gmail.com
Alemayehu alias Alex
Hello Alemayehu,
thanks for your interest! Before starting with translation, we must make sure, a font suitable for displaying Amharic is available for openSUSE. Mike, will you please check it?
We have a suitable font since openSUSE 10.3. Family name: "Abyssinica SIL" File name: /usr/share/fonts/truetype/Abyssinica_SIL.ttf Package name: sil-abyssinica :lang=aa|am|ast|ay|bi|br|ch|co|da|de|en|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gez|gl|gv|ho|ia|id|ie|io|is|it|lb|mg|nb|nds|nl|nn|no|oc|om|pt|rm|sma|smj|so|sq|sv|sw|tig|tn|ts|vo|vot|wa|xh|yap|zu mfabian@magellan:~$
Once we know this I will initialize the *.am.po files and give you commit permissions.
-- Mike FABIAN <mfabian@suse.de> http://www.suse.de/~mfabian 睡眠不足はいい仕事の敵だ。 I � Unicode --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-translation+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-translation+help@opensuse.org
Mike FABIAN <mfabian@suse.de> writes:
We have a suitable font since openSUSE 10.3.
Family name: "Abyssinica SIL" File name: /usr/share/fonts/truetype/Abyssinica_SIL.ttf Package name: sil-abyssinica
:lang=aa|am|ast|ay|bi|br|ch|co|da|de|en|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gez|gl|gv|ho|ia|id|ie|io|is|it|lb|mg|nb|nds|nl|nn|no|oc|om|pt|rm|sma|smj|so|sq|sv|sw|tig|tn|ts|vo|vot|wa|xh|yap|zu
That's great--thanks for verifying, Mike. Alex, is there more than 1 plural form in your language? Please, translate: 0 (zero) trees 1 (one) tree 2 (two) trees 3 trees 10 trees 100 trees For more info about plural form, see the gettext manual: ... After the first complaints from people internationalizing the code people either completely avoided formulations like this or used strings like `"file(s)"'. Both look unnatural and should be avoided. First tries to solve the problem correctly looked like this: if (n == 1) printf ("%d file deleted", n); else printf ("%d files deleted", n); But this does not solve the problem. It helps languages where the plural form of a noun is not simply constructed by adding an `s' but that is all. Once again people fell into the trap of believing the rules their language is using are universal. But the handling of plural forms differs widely between the language families. For example, Rafal Maszkowski `<rzm@mat.uni.torun.pl>' reports: In Polish we use e.g. plik (file) this way: 1 plik 2,3,4 pliki 5-21 pliko'w 22-24 pliki 25-31 pliko'w and so on (o' means 8859-2 oacute which should be rather okreska, similar to aogonek). There are two things which can differ between languages (and even inside language families); * The form how plural forms are built differs. This is a problem with languages which have many irregularities. German, for instance, is a drastic case. Though English and German are part of the same language family (Germanic), the almost regular forming of plural noun forms (appending an `s') is hardly found in German. * The number of plural forms differ. This is somewhat surprising for those who only have experiences with Romanic and Germanic languages since here the number is the same (there are two). But other language families have only one form or many forms. More information on this in an extra section. ... The information about the plural form selection has to be stored in the header entry of the PO file (the one with the empty `msgid' string). The plural form information looks like this: Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1; The `nplurals' value must be a decimal number which specifies how many different plural forms exist for this language. The string following `plural' is an expression which is using the C language syntax. Exceptions are that no negative numbers are allowed, numbers must be decimal, and the only variable allowed is `n'. Spaces are allowed in the expression, but backslash-newlines are not; in the examples below the backslash-newlines are present for formatting purposes only. This expression will be evaluated whenever one of the functions `ngettext', `dngettext', or `dcngettext' is called. The numeric value passed to these functions is then substituted for all uses of the variable `n' in the expression. The resulting value then must be greater or equal to zero and smaller than the value given as the value of `nplurals'. The following rules are known at this point. The language with families are listed. But this does not necessarily mean the information can be generalized for the whole family (as can be easily seen in the table below).(1) Only one form: Some languages only require one single form. There is no distinction between the singular and plural form. An appropriate header entry would look like this: Plural-Forms: nplurals=1; plural=0; Languages with this property include: Asian family Japanese, Korean, Vietnamese Turkic/Altaic family Turkish Two forms, singular used for one only This is the form used in most existing programs since it is what English is using. A header entry would look like this: Plural-Forms: nplurals=2; plural=n != 1; (Note: this uses the feature of C expressions that boolean expressions have to value zero or one.) Languages with this property include: Germanic family Danish, Dutch, English, Faroese, German, Norwegian, Swedish Finno-Ugric family Estonian, Finnish Latin/Greek family Greek Semitic family Hebrew Romanic family Italian, Portuguese, Spanish Artificial Esperanto Another language using the same header entry is: Finno-Ugric family Hungarian Hungarian does not appear to have a plural if you look at sentences involving cardinal numbers. For example, "1 apple" is "1 alma", and "123 apples" is "123 alma". But when the number is not explicit, the distinction between singular and plural exists: "the apple" is "az alma", and "the apples" is "az alma'k". Since `ngettext' has to support both types of sentences, it is classified here, under "two forms". Two forms, singular used for zero and one Exceptional case in the language family. The header entry would be: Plural-Forms: nplurals=2; plural=n>1; Languages with this property include: Romanic family French, Brazilian Portuguese Three forms, special case for zero The header entry would be: Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2; Languages with this property include: Baltic family Latvian Three forms, special cases for one and two The header entry would be: Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2; Languages with this property include: Celtic Gaeilge (Irish) Three forms, special case for numbers ending in 00 or [2-9][0-9] The header entry would be: Plural-Forms: nplurals=3; \ plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2; Languages with this property include: Romanic family Romanian Three forms, special case for numbers ending in 1[2-9] The header entry would look like this: Plural-Forms: nplurals=3; \ plural=n%10==1 && n%100!=11 ? 0 : \ n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2; Languages with this property include: Baltic family Lithuanian Three forms, special cases for numbers ending in 1 and 2, 3, 4, except those ending in 1[1-4] The header entry would look like this: Plural-Forms: nplurals=3; \ plural=n%10==1 && n%100!=11 ? 0 : \ n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; Languages with this property include: Slavic family Croatian, Serbian, Russian, Ukrainian Three forms, special cases for 1 and 2, 3, 4 The header entry would look like this: Plural-Forms: nplurals=3; \ plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; Languages with this property include: Slavic family Slovak, Czech Three forms, special case for one and some numbers ending in 2, 3, or 4 The header entry would look like this: Plural-Forms: nplurals=3; \ plural=n==1 ? 0 : \ n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; Languages with this property include: Slavic family Polish Four forms, special case for one and all numbers ending in 02, 03, or 04 The header entry would look like this: Plural-Forms: nplurals=4; \ plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3; Languages with this property include: Slavic family Slovenian -- Karl Eichwalder R&D / Documentation SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-translation+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-translation+help@opensuse.org
Karl Eichwalder wrote:
Mike FABIAN <mfabian@suse.de> writes:
Only one form: Some languages only require one single form. There is no distinction between the singular and plural form. [...] Turkic/Altaic family Turkish [...]
Sorry to step in, but this seems incomplete. Turkish is my native language and I can help with the rules if necessary. It is true that we say: 1 elma (1 apple) 2 elma (2 apples) ...but we also distinguish between: Elma güzel. (The apple is nice) Elmalar güzel. (The apples are nice) which is similar to the Hungarian case. The languages are more than similar when it comes to grammar. This distinction is made only between one and many, we do not have more than one plural form like "dual". The plural suffix is either -ler or -lar, depending on the vowel harmony, see also: http://en.wikibooks.org/wiki/Turkish/Plural . --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-translation+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-translation+help@opensuse.org
Arda Saltoglu <ardasaltoglu@gmail.com> writes:
Karl Eichwalder wrote:
Mike FABIAN <mfabian@suse.de> writes:
Only one form: Some languages only require one single form. There is no distinction between the singular and plural form. [...] Turkic/Altaic family Turkish [...]
Sorry to step in, but this seems incomplete. Turkish is my native language and I can help with the rules if necessary.
It is true that we say:
1 elma (1 apple) 2 elma (2 apples)
...but we also distinguish between:
Elma güzel. (The apple is nice) Elmalar güzel. (The apples are nice)
Thanks for the additional info. So the simple formular basically can stay as is. But honestly, IIRC, we somewhere make use of this unqualified plural usage: "Updates are available!" or something similar--maybe, we must take it into account. -- Karl Eichwalder R&D / Documentation SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-translation+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-translation+help@opensuse.org
Thanks, Mike. Thanks, Karl. Yes, although there is one widely used plural form, Amharic(Ethiopic) does have additional forms. Karl, the manual is defiantly going to be of a great help. Thanks again. So, what's the next step? On 10/12/07, Karl Eichwalder <ke@suse.de> wrote:
Mike FABIAN <mfabian@suse.de> writes:
We have a suitable font since openSUSE 10.3.
Family name: "Abyssinica SIL" File name: /usr/share/fonts/truetype/Abyssinica_SIL.ttf Package name: sil-abyssinica
:lang=aa|am|ast|ay|bi|br|ch|co|da|de|en|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gez|gl|gv|ho|ia|id|ie|io|is|it|lb|mg|nb|nds|nl|nn|no|oc|om|pt|rm|sma|smj|so|sq|sv|sw|tig|tn|ts|vo|vot|wa|xh|yap|zu
That's great--thanks for verifying, Mike.
Alex, is there more than 1 plural form in your language? Please, translate:
0 (zero) trees 1 (one) tree 2 (two) trees 3 trees 10 trees 100 trees
For more info about plural form, see the gettext manual:
... After the first complaints from people internationalizing the code people either completely avoided formulations like this or used strings like `"file(s)"'. Both look unnatural and should be avoided. First tries to solve the problem correctly looked like this:
if (n == 1) printf ("%d file deleted", n); else printf ("%d files deleted", n);
But this does not solve the problem. It helps languages where the plural form of a noun is not simply constructed by adding an `s' but that is all. Once again people fell into the trap of believing the rules their language is using are universal. But the handling of plural forms differs widely between the language families. For example, Rafal Maszkowski `<rzm@mat.uni.torun.pl>' reports:
In Polish we use e.g. plik (file) this way: 1 plik 2,3,4 pliki 5-21 pliko'w 22-24 pliki 25-31 pliko'w and so on (o' means 8859-2 oacute which should be rather okreska, similar to aogonek).
There are two things which can differ between languages (and even inside language families);
* The form how plural forms are built differs. This is a problem with languages which have many irregularities. German, for instance, is a drastic case. Though English and German are part of the same language family (Germanic), the almost regular forming of plural noun forms (appending an `s') is hardly found in German.
* The number of plural forms differ. This is somewhat surprising for those who only have experiences with Romanic and Germanic languages since here the number is the same (there are two).
But other language families have only one form or many forms. More information on this in an extra section.
...
The information about the plural form selection has to be stored in the header entry of the PO file (the one with the empty `msgid' string). The plural form information looks like this:
Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;
The `nplurals' value must be a decimal number which specifies how many different plural forms exist for this language. The string following `plural' is an expression which is using the C language syntax. Exceptions are that no negative numbers are allowed, numbers must be decimal, and the only variable allowed is `n'. Spaces are allowed in the expression, but backslash-newlines are not; in the examples below the backslash-newlines are present for formatting purposes only. This expression will be evaluated whenever one of the functions `ngettext', `dngettext', or `dcngettext' is called. The numeric value passed to these functions is then substituted for all uses of the variable `n' in the expression. The resulting value then must be greater or equal to zero and smaller than the value given as the value of `nplurals'.
The following rules are known at this point. The language with families are listed. But this does not necessarily mean the information can be generalized for the whole family (as can be easily seen in the table below).(1)
Only one form: Some languages only require one single form. There is no distinction between the singular and plural form. An appropriate header entry would look like this:
Plural-Forms: nplurals=1; plural=0;
Languages with this property include:
Asian family Japanese, Korean, Vietnamese
Turkic/Altaic family Turkish
Two forms, singular used for one only This is the form used in most existing programs since it is what English is using. A header entry would look like this:
Plural-Forms: nplurals=2; plural=n != 1;
(Note: this uses the feature of C expressions that boolean expressions have to value zero or one.)
Languages with this property include:
Germanic family Danish, Dutch, English, Faroese, German, Norwegian, Swedish
Finno-Ugric family Estonian, Finnish
Latin/Greek family Greek
Semitic family Hebrew
Romanic family Italian, Portuguese, Spanish
Artificial Esperanto
Another language using the same header entry is:
Finno-Ugric family Hungarian
Hungarian does not appear to have a plural if you look at sentences involving cardinal numbers. For example, "1 apple" is "1 alma", and "123 apples" is "123 alma". But when the number is not explicit, the distinction between singular and plural exists: "the apple" is "az alma", and "the apples" is "az alma'k". Since `ngettext' has to support both types of sentences, it is classified here, under "two forms".
Two forms, singular used for zero and one Exceptional case in the language family. The header entry would be:
Plural-Forms: nplurals=2; plural=n>1;
Languages with this property include:
Romanic family French, Brazilian Portuguese
Three forms, special case for zero The header entry would be:
Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;
Languages with this property include:
Baltic family Latvian
Three forms, special cases for one and two The header entry would be:
Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;
Languages with this property include:
Celtic Gaeilge (Irish)
Three forms, special case for numbers ending in 00 or [2-9][0-9] The header entry would be:
Plural-Forms: nplurals=3; \ plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;
Languages with this property include:
Romanic family Romanian
Three forms, special case for numbers ending in 1[2-9] The header entry would look like this:
Plural-Forms: nplurals=3; \ plural=n%10==1 && n%100!=11 ? 0 : \ n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2;
Languages with this property include:
Baltic family Lithuanian
Three forms, special cases for numbers ending in 1 and 2, 3, 4, except those ending in 1[1-4] The header entry would look like this:
Plural-Forms: nplurals=3; \ plural=n%10==1 && n%100!=11 ? 0 : \ n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
Languages with this property include:
Slavic family Croatian, Serbian, Russian, Ukrainian
Three forms, special cases for 1 and 2, 3, 4 The header entry would look like this:
Plural-Forms: nplurals=3; \ plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;
Languages with this property include:
Slavic family Slovak, Czech
Three forms, special case for one and some numbers ending in 2, 3, or 4 The header entry would look like this:
Plural-Forms: nplurals=3; \ plural=n==1 ? 0 : \ n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
Languages with this property include:
Slavic family Polish
Four forms, special case for one and all numbers ending in 02, 03, or 04 The header entry would look like this:
Plural-Forms: nplurals=4; \ plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;
Languages with this property include:
Slavic family Slovenian
-- Karl Eichwalder R&D / Documentation
SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg)
--------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-translation+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-translation+help@opensuse.org
"The NetsaSoft Foundation GLP" <netsasoft@gmail.com> writes:
Yes, although there is one widely used plural form, Amharic(Ethiopic) does have additional forms. Karl, the manual is defiantly going to be of a great help. Thanks again.
Thanks for the info. I'd propose we should start with a simple plural formular for your language. We can adjust it, if needed.
So, what's the next step?
You now have commit rights as "netsasoft". I just initalized the yast translation files in https://forgesvn1.novell.com/svn/suse-i18n/trunk/yast/am/po and we would like you to start with some basic files such as "base.am.po" and "installation.am.po". Once committed, we can run some tests. We also need to know what is the name of your language in Amharic (UTF-8 encoded) and what's the best ASCII approximation of it. Do keyboard definition files exist for Amharic? As a fully qualified locale, we should probably use am_ET. -- Karl Eichwalder R&D / Documentation SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-translation+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-translation+help@opensuse.org
Karl Eichwalder <ke@suse.de> さんは書きました:
As a fully qualified locale, we should probably use am_ET.
am_ET.UTF-8 (am_ET is UTF-8 as well, but better make it clear). -- Mike FABIAN <mfabian@suse.de> http://www.suse.de/~mfabian 睡眠不足はいい仕事の敵だ。 I � Unicode --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-translation+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-translation+help@opensuse.org
participants (4)
-
Arda Saltoglu
-
Karl Eichwalder
-
Mike FABIAN
-
The NetsaSoft Foundation GLP