AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Plural world ending in different languages. (https://forums.alliedmods.net/showthread.php?t=193849)

Chuvi 08-23-2012 09:33

Plural world ending in different languages.
 
Please, check this stock, and add other languages you know.
For this stock i used:
This stock (you may not undertand nothing there :))
Plural Form(s) inumTranslation(s)
and List of ISO 639-1 codes for language codes.

For examle, we have word "second".
In english:
1 second, 2 seconds, 3 seconds, 4 seconds, 5 seconds, 10 seconds, 15 seconds, 100 seconds
In russian
1 секунда, 2 секунды, 3 секунды, 4 секунды, 5 секунд, 10 секунд, 15 секунд, 100 секунд.
hm... very poor exaple, but i think you'll understand my idea.

PHP Code:

stock get_ending(num,lang[],output[], const form1[]="", const form2[]="", const form3[]="")
{
    
    new 
num100=num%100num10=num%10;

    if(
equali(lang,"en"))//English
    
{
        if(
num==1)
            
format(output,charsmax(output),"%s",form1)
        else
            
format(output,charsmax(output),"%s",form2)
    }
    else
    if(
equali(lang,"fr"))//French
    
{
        if(
num<2)
            
format(output,charsmax(output),"%s",form1)
        else
            
format(output,charsmax(output),"%s",form2)
    }
    else
    if(
equali(lang,"cs")) //Czech
    
{
        if(
num100==1)
            
format(output,charsmax(output),"%s",form1)
        else
        if(
num100>=2&&num100<=4)
            
format(output,charsmax(output),"%s",form2)
        else
            
format(output,charsmax(output),"%s",form3)
    }
    else
    if(
equali(lang,"ga")) //Irish
    
{
        if(
num==1)
            
format(output,charsmax(output),"%s",form1)
        else
        if(
num==2)
            
format(output,charsmax(output),"%s",form2)
        else
            
format(output,charsmax(output),"%s",form3)
    }
    else
    if(
equali(lang,"lv")) //Latvian
    
{
        if(
num10 == 1&& num100 != 11)
            
format(output,charsmax(output),"%s",form1)
        else
        if(
num!= 0)
            
format(output,charsmax(output),"%s",form2)
        else
            
format(output,charsmax(output),"%s",form3)
    }
    else
    if(
equali(lang,"lt")) //Lithuanian
    
{
        if(
num10==1&& num100!=11)
            
format(output,charsmax(output),"%s",form1)
        else
        if(
num!= 0)
            
format(output,charsmax(output),"%s",form2)
        else
            
format(output,charsmax(output),"%s",form3)
    }
    else
    if(
equali(lang,"mk")) //Macedonian
    
{
        if(
num10==1)
            
format(output,charsmax(output),"%s",form1)
        else
        if(
num10==2)
            
format(output,charsmax(output),"%s",form2)
        else
            
format(output,charsmax(output),"%s",form3)
    }
    else
    if(
equali(lang,"pl")) //Polish
    
{
        if(
num==1)
            
format(output,charsmax(output),"%s",form1)
        else
        if(
num10>=2&& num10<=4&& (num100<10||num100>20))
            
format(output,charsmax(output),"%s",form2)
        else
            
format(output,charsmax(output),"%s",form3)
    }
    else
    if(
equali(lang,"ro")) //Romanian
    
{
        if(
num==1)
            
format(output,charsmax(output),"%s",form1)
        else
        if(
num==0||(num100>=1&&num100<=20))
            
format(output,charsmax(output),"%s",form2)
        else
            
format(output,charsmax(output),"%s",form3)
    }
    else
    if(
equali(lang,"ru"))//Russian
    
{
        if(
num10==1&&num100!=11)
            
format(output,charsmax(output),"%s",form1)
        else
        if(
num10>=2&&num10<=4&&(num100<10||num100>20))
            
format(output,charsmax(output),"%s",form2)
        else
            
format(output,charsmax(output),"%s",form3)
    }
    else
    if(
equali(lang,"sk")) //Slovak
    
{
        if(
num==1)
            
format(output,charsmax(output),"%s",form1)
        else
        if(
num>=2&&num<=4)
            
format(output,charsmax(output),"%s",form2)
        else
            
format(output,charsmax(output),"%s",form3)
    }
    else
    if(
equali(lang,"ja")) //Japanese
    
{
            
format(output,charsmax(output),"%s",form1)
    }
    
/*
    Other Languages
    */
    
else
    
format(output,charsmax(output),"%s",form1)




Chuvi 08-23-2012 12:09

Re: Plural world ending in different languages.
 
Can somebody help me with other languages?
for example: german?

OvidiuS 08-23-2012 12:17

Re: Plural world ending in different languages.
 
Serbian [sr]

1 sekund, 2 sekunde, 3 sekunde, 4 sekunde, 5 sekundi, 10 sekundi, 15 sekundi, 100 sekundi.

or

1 секунд, 2 секунде, 3 секунде, 4 секунде, 5 секунди, 10 секунди, 15 секунди, 100 секунди.

dark_style 08-23-2012 12:20

Re: Plural world ending in different languages.
 
Bulgarian [bg]

1 sekunda, 2 sekundi, 3 sekundi, 4 sekundi, 5 sekundi, 10 sekundi, 15 sekundi, 100 sekundi.

or

1 секунда, 2 секунди, 3 секунди, 4 секунди, 5 секунди, 10 секунди, 15 секунди, 100 секунди.

Torge 08-23-2012 13:23

Re: Plural world ending in different languages.
 
German [de]

1 Sekunde, 2 Sekunden, 3 Sekunden, 4 Sekunden, 5 Sekunden, 10 Sekunden, 15 Sekunden, 100 Sekunden

Chuvi 08-23-2012 15:43

Re: Plural world ending in different languages.
 
It would be great, if you'll write it in formulas, like this table

So, as i understood
Code:

Serbian [sr]
1 sekund, 2 sekunde, 3 sekunde, 4 sekunde, 5 sekundi, 10 sekundi, 15 sekundi, 100 sekundi.

n=1 } form1 (sekund)
n=>2&&n<=4 } form2 (sekunde)
otherwise } form3 (sekundi)

Code:

Bulgarian [bg]
1 sekunda, 2 sekundi, 3 sekundi, 4 sekundi, 5 sekundi, 10 sekundi, 15 sekundi, 100 sekundi.

n=1 } form1 (sekunda)
otherwise }form2
form3 not used.

Code:

German [de]
1 Sekunde, 2 Sekunden, 3 Sekunden, 4 Sekunden, 5 Sekunden, 10 Sekunden, 15 Sekunden, 100 Sekunden

n=1 } form1 (Secunde)
otherwise } form2 (Secunden)
form3 not used.

Am I correct?

Torge 08-24-2012 00:26

Re: Plural world ending in different languages.
 
Ok, this would be good. Instead 'c' we use 'k'.

Quote:

German [de]
1 Sekunde, 2 Sekunden, 3 Sekunden, 4 Sekunden, 5 Sekunden, 10 Sekunden, 15 Sekunden, 100 Sekunden

n=1 } form1 (Sekunde)
otherwise } form2 (Sekunden)
form3 not used.

OvidiuS 08-24-2012 20:14

Re: Plural world ending in different languages.
 
Quote:

Originally Posted by Chuvi (Post 1780550)
It would be great, if you'll write it in formulas, like this table

So, as i understood
Code:

Serbian [sr]
1 sekund, 2 sekunde, 3 sekunde, 4 sekunde, 5 sekundi, 10 sekundi, 15 sekundi, 100 sekundi.

n=1 } form1 (sekund)
n=>2&&n<=4 } form2 (sekunde)
otherwise } form3 (sekundi)

Am I correct?

Yes you are.
I guess you could also use switch statement instead of if/else
Code:
    if( equali( lang, "sr" ) ) //Serbian     {         switch( num )         {             case 1: formatex( output, charsmax( output ), "%s", form1 )             case 2..4: formatex( output, charsmax( output ), "%s", form2 )             default: formatex( output, charsmax( output ), "%s", form3 )         }     }

Torge 08-25-2012 09:04

Re: Plural world ending in different languages.
 
For german:

PHP Code:

if (equali(lang"de")) // German 



All times are GMT -4. The time now is 05:42.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.