Forum: PC-Programmierung Fragen zu: Projekt lokalisieren (übersetzen)


von lixx (Gast)


Lesenswert?

Hallo.
Ich bastle an nem OpenSource Projekt und möchte es lokalisieren.

Frage 1:
Ich schreib die Texte in einem für mich verständlichen English. Ich 
hoffe, dass irgendwann mal ein Muttersprachler das korrigiert. Läßt man 
dazu alle Texte im Quellcode in "Programmierer-Englisch" und legt ne 
eigene Resource in korrektem an ?

Frage 2:
Ich habe viele Wörter, die oft vorkommen wie: "Name"
Nimmt man da dann üblicherweise Platzhalter ? Sonst steht das ja zig mal 
in der Datei, die der Übersetzter bearbeiten muss. Und ich will dem die 
Arbeit natürlich erleichtern.

Euer Lixx mit xx

von Karl H. (kbuchegg)


Lesenswert?

Dein Übersetzter wird dir normalerweise sowieso etwas husten, wenn du 
ihm die Texte quer über 25 Source Code Files verstreust.

Die Texte werden alle an einer Stelle gesammelt. Und nur diese eine 
Stelle bekommt der Übersetzter zur Bearbeitung. Zusammen mit Hinweisen, 
an welchen Teilen des Textes er sich nicht vergreifen darf, bzw. wo du 
im Programm in die Texte noch Ausgaben vonm Programm aus einsetzen wirst 
(also zb. Format Strings in C oder C++)

von lixx (Gast)


Lesenswert?

zu Frage 2 nochmals:
ich meinte, ob man bei:

Label1.setText("Name");
[..]
Table2.setCaption("Name");
[..]
Field3.setHint("Name");

.. anstatt dem "Name" nicht einen Platzhalter wie _NAME nehmen sollte.
Also für die Strings, die mehr als ein mal vorkommen.

Wie machst Du das ?

Lixx

von Michael R. (dj_motionx)


Lesenswert?

Hallo !
Ich mach so lokalisierungen immer mit GNU Gettext. Hat immer noch gut 
funktioniert und ist in Windors sowie natürlich auch für Linux 
verfübgar.

http://www.gnu.org/software/gettext/


L.g. Michael

von Karl H. (kbuchegg)


Lesenswert?

lixx schrieb:
> zu Frage 2 nochmals:
> ich meinte, ob man bei:
>
> Label1.setText("Name");
> [..]
> Table2.setCaption("Name");
> [..]
> Field3.setHint("Name");
>
> .. anstatt dem "Name" nicht einen Platzhalter wie _NAME nehmen sollte.
> Also für die Strings, die mehr als ein mal vorkommen.
>
> Wie machst Du das ?

Für grundsätzliches alles werden Platzhalter benutzt.
Es spielt keine Rolle, ob der Text nur einmal vorkommt oder mehrmals.

von Markus V. (Gast)


Lesenswert?

Hi Lixx,

ein möglicher Ansatz ist der, dass für jeden zu lokalisierenden Text 
eine eigene Ressource verwendet wird. In Deinem Fall gäbe es also zwei 
verschiedene Ressourcen-Schlüssel die jeweils den Wert "Name" hätten. 
Dieser Ansatz verfolgt das Ziel, keine Abhängigkeiten zwischen einzelnen 
Dialogteilen zu haben. Stelle Dir vor, jemand kommt auf die Idee, "Name" 
in "Bezeichnung" zu ändern, weil das in einem Dialog einfach besser ist. 
In einem anderen Dialog wird die gleiche Ressource aber nochmals 
verwendet, hier ist "Bezeichnug" aber völliger Blödsinn...

Gruß
Markus

von lixx (Gast)


Lesenswert?

@Markus
>.. hier ist "Bezeichnug" aber völliger Blödsinn ...
stimmt. Du hast Recht. So hab ich das noch gar nicht gesehen. Dann wäre 
meine Frage 1 also beantwortet: Ich nehme lieber 2x einen gleichen Text 
auf, da er an verschiedenen Stellen doch unterschiedliche Bedeutung 
haben könnte. ggf füge ich für den Übersetzen 2 unterschiedlich 
Kommentare hinzu.

@kbuchegg
>Für grundsätzliches alles werden Platzhalter benutzt.
natürlich nicht.

@Michael.
Ja - ich benutze auch GNU GetText. Vor allem, weil ich's auf launchpad 
veröffentliche möchte und dort wird mit *.po gearbeitet.

Bisher hatte ich mit XCode bzw Eclipse->ExternalizeStrings gearbeitet. 
Ich habe die Texte dann  mit Kommentaren aufbereitet, in ein Office 
Dokument kopiert und mir das vom Lektoriat übersetzen lassen. (Englisch, 
Spanisch, Französisch, Italienisch). Die Texte waren aber immer recht 
kurz (max. 3 Seiten pro Sprache), so dass ich mir immer die Arbeit 
gemacht habe, und habe das korrigierte Englisch im Quelltext verwendet 
und MEIN Englisch rausgeschmissen.

Ich trau mir zwar Englisch so gut zu, dass andere das verstehen und in 
Ihre Muttersprache übersetzen können, aber ich habe auch so Wörter wie 
"holidays" benutzt und der englische Übersetzten hat das gegen 
"vacations" ausgetauscht, weil die doch unterschiedliche Bedeutungen 
haben.

Aber nochmals Frage 2:

Ich habe "holidays" in meinem Quelltext stehen.

Der Deutsche Übersetzer sagt
"holidays" -> "Urlaub"
Der englische Übersetzer sagt:
"holidays" -> "vacations".


macht Ihr dann:
DE:
"holidays" -> "Urlaub"
EN + default:
"holidays" -> "vacations"


oder ändert Ihr nachträglich den Quelltext:
DE:
"vacations" -> "Urlaub"
EN + default:
"vacations" -> "vacations"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.