Mailinglist Archive: opensuse-translation (62 mails)

< Previous Next >
Re: [opensuse-translation] Adding a new language
  • From: "The NetsaSoft Foundation GLP" <netsasoft@xxxxxxxxx>
  • Date: Fri, 12 Oct 2007 16:14:46 +0200
  • Message-id: <fd77b3060710120714o6632fdb0o82b32e198ae95918@xxxxxxxxxxxxxx>
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@xxxxxxx> wrote:
> Mike FABIAN <mfabian@xxxxxxx> 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@xxxxxxxxxxxxxxxx>' 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@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-translation+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups