Adresu http://www.vistalive.vhost.lt/drupal/node/9 išdėsčiau savo požiūrį į lietuviškame vertime naudojamą Plural-Forms taisyklę. Siūlau ją keisti iš

nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2;

į

nplurals=4; plural=n==1 ? 0 : n%10>=2 && (n%100<10 || n%100>20) ? 1 : n%10==0 || n%100>10 && n%100<20 ? 2 : 3;

Gilesnė analizė ar papildoma diskusija, žinoma, nepamaišytų - nes pakeitus taisyklę reiktų pildyti esamus vertimus.

Comments

darius’s picture

Sveiki,

puiku, kad atsirado daugiau Drupal bendradarbių.

Gal ne viską supratau, bet nesu įtikintas plural=4 variantu. Manau, kad jei ištaisytume visas frazes "1 valanda" į "@count valanda", problema išsispręstų. O neišverstos frazės šiaip ar taip bus rodomos angliškai.

Mano nuomone, geriau būtų sutelkt jėgas vertimui ir klaidų taisymui. Nebent aš praleidau kokį siūlomo varianto privalumą.

Darius

operatorius’s picture

Pritariu, ištaisyti į "@count" (ar "%count") pilnai užtenka. Šį sprendimą aš ir rekomenduočiau.

Tradicinis variantas lyginant su keturių formų turi du trūkumus:

  1. Vietoj "1" reikia versti "@count" - lengva suklysti, ypač Drupal naujokui, bet taip pat ir patyrusiems vilkams - užmiršus apie niuansą arba per skubėjimą;
  2. Jeigu frazė neišversta, tai bus pateikiamas klaidingas angliškas analogas (ne "21 vote", o "1 vote").

Siūlau šituos trūkumus pašalinti šitaip:

  1. Bent jau vertimo readme.txt informuoti lietuvius drupaliečius, kad "1" reikia versti "@count" (arba "%count");
  2. Taip pat informuoti, kad yra trys formos, o ne dvi - kaip gali pamanyti naujokas, nematęs .po failo turinio ir bandantis versti per Drupal vertimo sąsają (trečia forma net nebūna sugeneruota, kol jos neprireikia). Pateikti kokį pavyzdį, kaip visos trys formos atrodo. Gal reiktų apie šį nesklandumą pranešti locale.module kūrėjams? Jei tik problema ne pačiame Drupal.

Pašalinus šituos nedidelius trūkumus neliktų nė menkiausio motyvo užsikrauti papildomo darbo su ketvirta forma. Galų gale visi lietuviški vertimai turėtų lygiuotis į oficialų ir naudoti tą patį daugiskaitos formų variantą.

amfis’s picture

Čia jei kam įdomu ir nori pasidaryti rankiniu būdu savo modulyje, tai atsakymas toks:

function cfg_format_plural($count, $langcode = NULL) {
  if ($langcode == 'lt') {
    
    if ($count % 10 == 1 && $count != 11) {
      return t('Šiuo metu naršo @count lankytojas', array('@count' => $count));
    } elseif (($count >= 10 && $count <= 20) || ($count % 10 == 0)) {
      return t('Šiuo metu naršo @count lankytojų', array('@count' => $count));
    } else {
      return t('Šiuo metu naršo @count lankytojai', array('@count' => $count));
    }
        
  } else {
    format_plural($count, '@count comment', '@count comments');
  } 
}