Contenido parla l'Italiano

ruetolo
Beiträge: 6
Registriert: Sa 3. Sep 2005, 15:04
Kontaktdaten:

Interesse angemeldet

Beitrag von ruetolo » Mi 7. Jun 2006, 10:00

Hallo Zusammen

Meine Kunden sprechen oft italienisch, daher wäre ich auch interessiert daran das Backend in Italienisch benutzen zu können und ein Forum in dessen Sprache wäre natürlich auch super!

Wenn man nun noch Spanisch und Französisch hinzufügen würde, wäre das CMS International gesehen extrem tauglich! :D

Liebe Grüsse
Rodolfo

knb
Beiträge: 224
Registriert: Fr 9. Sep 2005, 14:03
Wohnort: Potsdam
Kontaktdaten:

Beitrag von knb » Mi 7. Jun 2006, 15:23

Eine neue Französisch -Version ist gerade in Arbeit! Kann aber noch ein paar Tage oder wochen dauern da dies von einer Praktikantin (und mir) so nebenbei erledigt wird.

Es gab zwar schon mal ein Lokalisierungsprojekt für 4.4.4 aber die seite mit dem .po file mit den nach FR übersetzten Strings ist nicht mehr online. (Kann notfalls aber bei mir "angefordert" werden).

Nur ist das aktuelle Release ja 4.6.8, und wir haben festgestellt dass die Anzahl der Strings sich mal aben verdoppelt hat. Also das 4.4.4 er .po File enthält ca 500 zu übersetzende Strings, die 4.6.8 er Version ca 1000.

Daran kann man vielleicht sehen was für ein grosser Schritt der Releasewechsel von 4.4. nach 4.6. eigentlich war. (Wenn man annimmt dass die anzahl zu übersetzender Strings direkt proportional zur gesamtanzahl der Codezeilen ist.)

Der größte Brocken Arbeit ist aber die Übersetzung der Handbücher in weitere Sprachen. Das müßte 4fb machen.
Gruss,
Knut

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » Mi 7. Jun 2006, 15:41

knb hat geschrieben:... Der größte Brocken Arbeit ist aber die Übersetzung der Handbücher in weitere Sprachen. Das müßte 4fb machen.
vor monaten hatte ich mich angeboten die contenido-translation auf italienisch weiterzuführen ein erstes draft hatte ich bereits erstellt, allerdings kam von 4fb auch auf eine mailanfarge keine antwort. etwas später würde dann auch von timo geposted was stand der dinge ist. mal bisis rückwärts lesen.
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

knb
Beiträge: 224
Registriert: Fr 9. Sep 2005, 14:03
Wohnort: Potsdam
Kontaktdaten:

Beitrag von knb » Do 8. Jun 2006, 09:31

Was wir nach französisch übersetzen ist die Italienischversion von Forum-User Alessandro, siehe download link in diesem Thread.

Also alle italienischen msgstr "..." Einträge raus, ersetzt durch franz.Übersetzung, und in den Konfig-Metadaten it_IT durch fr_FR ersetzt.

Ich ging einfach davon aus dass diese Version vollständig ist.
Wie vollständig ist die Italienischversion (das .po File) denn nun? Fehlt noch was substanzielles?
Gruss,
Knut

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » Do 8. Jun 2006, 10:33

knb hat geschrieben:Ich ging einfach davon aus dass diese Version vollständig ist.
Wie vollständig ist die Italienischversion (das .po File) denn nun? Fehlt noch was substanzielles?
ich hatte mit der 4.6.4 begonnen und einen ersten draft erstellt, http://contenido.funjumping.de/front_co ... 7&idart=83, alles weitere habe ich dann aufgrund der aussage con timo eingestellt
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » Sa 17. Jun 2006, 15:16

@knb:

es geht vieleicht doch weiter ;)
http://contenido.org/forum/viewtopic.ph ... highlight=
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

knb
Beiträge: 224
Registriert: Fr 9. Sep 2005, 14:03
Wohnort: Potsdam
Kontaktdaten:

Beitrag von knb » Mo 19. Jun 2006, 09:16

Die neue französisch-version ist inzwischen komplett übersetzt, aber die Qualitätssicherung dauert noch an.
Scheint unabdingbar zu sein, da ich einige 100 Strings von Google/Babelfish habe übersetzen lassen, und die maschinell generierten Übersetzungen nur zum Teil brauchbar sind. (Je länger der String desto dubioser die Übersetzung. War aber für sich genommen ein ganz interessantes Programmierprojekt.) Diese werden also allmählich von uns noch korrigiert.

Wahrscheinlich muss ich noch mal den Code der 4.6.8.5 neu durchforsten da wohl inzwischen ein paar neue Strings hinzugekommen sind und bei dem Hin-und Hertransferieren zwischen den verschiedenen Editoren ein paar (multiline-) Strings verloren gegangen sein könnten.

Wer ein französisches po- und mo file unbedingt sofort braucht kann sich ja bei mir melden. Das XML File mit Menüeinträgen hatte ich hier im Forum schon mal gepostet.

Ich könnte auch das Script posten das Google, Yahoo, Babelfish Übersetzungen macht, andere Sprachpaarungen als en => fr habe ich noch nicht ausprobiert. Wär doch mal interessant in ein paar minuten ein .po file in Portugiesisch zu erstellen, nicht wahr?! Wäre allerdings ein perlscript.
Gruss,
Knut

MichFress
Beiträge: 750
Registriert: Mo 5. Jan 2004, 22:32
Wohnort: Bochum
Kontaktdaten:

Beitrag von MichFress » Mo 19. Jun 2006, 09:18

lohnt sich die automatisierte Übersetzung denn trotz Nacharbeitens?
Vielleicht würde damit meine polnische Version also noch in diesem Jahrhundert fertig...

das Script könntest du auf jeden Fall mal zur Verfügung stellen... danke!
"Es wird keine Handlung geben, keine Geschichte mit ihrer Versprechung auf einen Anfang und ihrer Hoffnung auf ein Ende." (Andrzej Stasiuk)

knb
Beiträge: 224
Registriert: Fr 9. Sep 2005, 14:03
Wohnort: Potsdam
Kontaktdaten:

Beitrag von knb » Mo 19. Jun 2006, 11:11

von dem was der "Übersetzerwebservice" liefert geht so ca 30% sofort (da viele Strings sehr kurz und eindeutig sind) , 30% mit kleinen Korrekturen und der rest erfordert grössere Korrekturen oder ist ganz unbrauchbar.

Ich hatte Google, Babelfish und Yahoo ausprobiert. Mit Screenscraping, kein Webservice-mit-SOAP-Api.

Fazit: Alle drei benutzen intern die Babelfish-Technologie; Yahoo und Google machen sich noch etwas zusätzliche Arbeit um das Ergebnis aufzuhübschen.

Google ist schnell/blockiert nicht und liefert das am leichtesten zu parsende UTF-8.
Babelfish hat etwas mehr sprachpaare aber ich glaube Polnisch ist auch da nicht dabei.
Yahoo liefert ein UTF-8 zurück mit dem ich nicht zurechtgekommen bin.

Google bietet anscheinend kein Polnisch an, weiss nicht ob Du bei deinem Projekt damit weiterkommst.
Gruss,
Knut

knb
Beiträge: 224
Registriert: Fr 9. Sep 2005, 14:03
Wohnort: Potsdam
Kontaktdaten:

Beitrag von knb » Mo 19. Jun 2006, 11:32

Hier das erwähnte Perlscript. Im Code wird noch eine Datenbank aufgerufen, das habe ich aber auskommentiert.

Das Script liest hier aus dem DATA Block und schreibt mit Print nach STDOUT. Viele Terminals mit UTF-8 nicht richtig klar kommen, kann die Ausgabe von Zeichen mit Akzent ggf. schlecht aussehen.

Wie gesagt ich habe eine andere Version im Einsatz mit Lesen und Zurückschreiben in Access-DB, und ein zweites Script was aus einem po File liest und ein neues po file schreibt, aber das hab ich gerade nicht hier.

Code: Alles auswählen


#!/usr/bin/perl
##############################################################################
# read strings from a database, or a __DATA__ section
# get eng-french translations from web services,
# write it back to the database (this code is commented out)
##############################################################################
use strict;
use WWW::Babelfish;

#use DBI;
use DBI qw(:utils);
#use DBD::ADO;
#Win32::OLE->Option( CP => Win32::OLE::CP_UTF8 );

#use Devel::Peek;
#  use utf8;

use Text::Unidecode;
use Encode;
use constant NOTRANS => "*** not translated ***";

#database connection; use ADO because it works better with UTF-8
#our $dbh = DBI->connect( "dbi:ADO:Provider=Microsoft." . "Jet.OLEDB.4.0;Data Source=G:\\someDir\\translation-french.mdb" );

#some variables
my ( $i, $j, $c, $u, $sql, $msgid, $msgstr, $srv, $bab_tr, $goog_tr, $yahoo_tr, $sth, $dat );

# what must be translated? we read from a database
#$sql = qq{select ID, msgid , msgstr from [eng-italian] where msgid like "msgid%" order by ID};


#enable slurp mode
undef $/;

# we read from the __DATA__ block
# we are dealing with pairs of strings, eng-fr
# some of which are untranslated
# make a hash of
my $file = <DATA>;
my %str  =  map { /msgid "(.*)"\nmsgstr "(.*)"/; $1 => $2 } split /\n\n/msi, $file;

#counters
$i = $j = 1;

# count untranslated strings
foreach my $k ( keys %str ) {
    $u++ unless $str{$k};
    $c++;
}

# the web sites return unicode / utf8, thus make print happy
binmode( STDOUT, ":utf8" );

#translate untranslated strings
#for ( my $j = 0 ; $j < @$dat ; $j++ ) {
foreach my $k ( sort { length($a) <=> length($b) } keys %str ){
    #my $k  =  $dat->[$j]{msgid} ;
    #my $id = $dat->[$j]{ID};
    $i = sprintf( "%03d", $j );
    $j++;
    chomp $k;
    if ($k) {
        $sql = ""; 
        my $id = 0;

        print "\n$i of $c  ($u total untranslated)\n";
        print "\t$k\t" . data_string_desc($k) . "\n";

        $srv = "Babelfish";
        $bab_tr = translate_string( $k, $srv );
        update_db( $srv, qq{"$bab_tr"}, $id);

        $srv = "Google";
        $goog_tr = translate_string( $k, $srv );
        update_db( $srv, qq{"$goog_tr"}, $id );

        $srv      = "Yahoo";
        $yahoo_tr = translate_string( $k, $srv );
        #$yahoo_tr = unidecode($yahoo_tr);           #remove weird chars
        update_db( $srv, $yahoo_tr, $id );

    } else {
        print "\t### $sql\n";
        $sql = "";
    }
    $k = "";

    #print "$k\t$str{$k}\n";
    $i++;
}



#######################################
# End of "main program"
#######################################
sub update_db {
    my ( $srv, $tr, $id) = @_;
    #my $sql = qq{ update [eng-italian] set [msgstr-fr-$srv] = 'msgstr $tr' where ID = $id};    #and [msgstr-fr-google]  is null

    #$dbh->do($sql) or warn "$srv: can't execute $sql: $! \ndb said: " . $dbh->errstr unless (index($tr, NOTRANS) || $tr =~ /UNAVAIL/i);

    print "\t" . data_string_desc($tr) . "\n";
    print "\t$srv:\t$tr\n";
    #print "\t$sql\n";
}


sub translate_string {
    my ( $text, $objstr ) = @_;

    # define translator objects
    my $obj = new WWW::Babelfish( service => $objstr, agent => 'Mozilla/8.0' );    
    return "$objstr Translation server unavailable\n" unless defined($obj) && ref($obj) eq "WWW::Babelfish";

    my $french_text = $obj->translate(
        'source'      => 'English',
        'destination' => 'French',
        'text'        => Encode::decode_utf8($text),
        'delimiter'   => "\n\t"
    );
    sleep(1);
    warn( "Could not translate: " . $obj->error ) unless defined($french_text);

    #Encode::_utf8_on($french_text) if $objstr eq "Yahoo";
    
    chomp($french_text);
    $french_text =~ s/(?:l')?\s*identification\s+de\s+message\s*//ig;    #cleanup
    $french_text =~ s/'/''/g;
    $french_text =~ s/^(\W+)(.*)$/$1\u$2/;                               #uppercase first char, even with nonword chars at first position


    if ( Encode::is_utf8($french_text) ) {

        #Dump $french_text;
        #eval{$french_text = Encode::from_to($french_text, "utf8", "iso-8859-15")};
        #Encode::_utf8_on($french_text);
        #print "$objstr: UTF-8 text found\n";
        #Dump $french_text;
    } else {
        #print "\t $objstr: text not UTF-8\n";
        Encode::decode_utf8($french_text);                               # decode it to utf-8, DBD:ADO wants it this way
    }

    $french_text ||= NOTRANS;
    undef $obj;

    #return $dbh->quote($french_text);
    return $french_text;
}


#######################################
# test data
#######################################
__DATA__

msgid "OK"
msgstr ""

msgid "Cancel"
msgstr ""

msgid "Colorpicker"
msgstr ""

msgid "Insert Link"
msgstr ""

msgid "Internal link"
msgstr ""

msgid "Please choose"
msgstr ""

msgid "None"
msgstr ""

msgid "PDF"
msgstr ""

msgid "Media"
msgstr ""

msgid "External link"
msgstr ""

msgid "Target"
msgstr ""

msgid "Open in same window"
msgstr ""

msgid "Open in new window"
msgstr ""

msgid "Open in parent frame"
msgstr ""

msgid "Open in top frame"
msgstr ""





Gruss,
Knut

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mi 4. Okt 2006, 22:29

Gibt es denn schon weitere Sprachen?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » Mi 4. Okt 2006, 22:35

HerrB hat geschrieben:Gibt es denn schon weitere Sprachen?

Gruß
HerrB
ich habe immernoch ne 4.6.4 italiano hier rumzuliegen und (auch wenn halber italiener) bräuchte noch 'nen native-italian der das bereinigt

andererseits habe ich grosses interesse an einer französichen version, falls schon was rumschwirrt :?

kollege djavet hatte sichper pm angeboten, allerdings habe ich es noch nicht weiter verfolgt
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

Gesperrt