hilfdirselbst.ch
Facebook Twitter gamper-media
Ralf Hobirk p
Beiträge: 5772
4. Sep 2013, 02:28
Beitrag #1 von 11
Bewertung:
(4194 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


Hallo zusammen,

ich muss demnächst einen 124-seitigen Katalog auf Englisch und Niederländisch übersetzen. Dazu kopiere ich sämtliche ID-Dokumente und wechsle zunächst pauschal die Spracheinstellungen (mit SpracheWechseln.js). Die "normalen" Texte kommen aus einer Datenbank und werden per Script in der entsprechenden Sprache ersetzt. Natürlich dank eurer Hilfe vor ca. einem Jahr ;-)

Ich habe in dem Katalog aber auch reichlich Bildunterschriften, die ich teilweise per Suchen & Ersetzen, aber zu einem gewissen Teil auch manuell übersetzt habe.

Ich lasse gerade alle zu übersetzenden Begriffe bzw. Bildunterschriften in eine Excel-Tabelle kopieren, damit ich sie zur Übersetzung auf Niederländisch wegschicken kann. Jetzt stellt sich die Frage, ob ich diese Tabelle (im CSV-Format) nicht auch nutzen kann, um die Übersetzung per Script auf ein ID-Dokument anzuwenden.

Der Aufbau der Tabelle ist einfach:

Spalte A = Original Deutsch
Spalte B = Übersetzung z.B. Niederländisch

Ale Bildunterschriften haben das gleiche, eindeutige Absatzformat.

Ich möchte gern vermeiden, jeden Begriff in ein bereits vorhandenes Script kopieren zu müssen, nach diesem Muster:

Code
app.findTextPreferences = null;  
app.changeTextPreferences = null;
app.findTextPreferences.findWhat = 'Nationalpark Krka-Wasserfälle';
app.findGrepPreferences.appliedParagraphStyle = 'Caption';
app.changeTextPreferences.changeTo = 'Nationaal park Krka watervallen';
app.activeDocument.changeText();


Lässt sich da vielleicht was mit obigem Code oder FindChangeByList machen bzw. modifizieren?

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1) Top
 
X
WernerPerplies
Beiträge: 2200
4. Sep 2013, 06:23
Beitrag #2 von 11
Beitrag ID: #516927
Bewertung:
(4170 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


Hallo Ralf,

klar geht das, es gibt einige Tools, mit denen Du aus Deiner CSV-Datei eine passende FindChangeByList-Liste erzeugen könntest.

Aber irgendwie erscheint mir der von Dir gewählte Weg recht kompliziert zu sein.

Ich gehe mal davon aus, das diese Arbeit regelmäßig vorkommt, dehalb die Frage:

Wäre es nicht am sinnvollsten, für die Bildunterschriften Platzhalter zu verwenden, die dann direkt aus der CSV-Datei per Skript ersetzt werden?

Wenn aber die zu ersetzen Begriffe aus der/die InDesigndatei(en) kommen sollen, warum denn so?
Zitat Ich lasse gerade alle zu übersetzenden Begriffe bzw. Bildunterschriften in eine Excel-Tabelle kopieren...

und nicht so?
Die Excel-Datei (als CSV-Datei) direkt mit einem Skript erzeugen.

Zitat Jetzt stellt sich die Frage, ob ich diese Tabelle (im CSV-Format) nicht auch nutzen kann, um die Übersetzung per Script auf ein ID-Dokument anzuwenden.


Klar geht das:
Lese die CSV-Datei in ein Array ein und ersetzte dann die Begriffe in einer Scheife über dieses Array.

Ich würde dann alles (Im- und Export) in ein einziges, kleines dialoggeführtes Skript packen, das bei richtigem Aufbau in einem Rutsch eine Exceltabelle für alle Sprachen, oder alternativ für jede Sprache eine einzelne Tabelle zum verschicken erzeugt.

Beim Import könnte dieses Skript dann alle notwendigen Arbeiten für alle zur Verfügung stehenden Spachen in einem Durchgang erledigen.

Das wäre dann Adobe-Indesign-Automatisierung, wie ich sie mir vorstelle.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#516926] Top
 
Gerald Singelmann  M  p
Beiträge: 6178
4. Sep 2013, 10:20
Beitrag #3 von 11
Beitrag ID: #516936
Bewertung:
(4121 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


Quick und dirty, aber vielleicht macht es ja schon, was du brauchst.

Zeile 4 und 5 müssen noch angepasst werden.

Das Script enthält keinerlei Kontrollen. Wenn es also z.B. das Absatzformat nicht gibt, kommt der ungebremste InDesign-Fehler.

Code
app.doScript (main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "change by csv") 

function main() {
var datenfeldtrenner = "\t";
var absatzformatname = "test";

var doc = app.activeDocument;
var absatzformat = doc.paragraphStyles.item( absatzformatname );

//------------------------------------------------------------------------
// csv einlesen
//------------------------------------------------------------------------
var csv_file = File.openDialog("Welche csv Datei?");
if (csv_file == null) return;
csv_file.open("r");
var csv = [];
var n = 0;
while (!csv_file.eof) {
csv[n] = csv_file.readln();
n++;
}
csv_file.close();

app.findTextPreferences = NothingEnum.NOTHING;
app.changeTextPreferences = NothingEnum.NOTHING;
app.findTextPreferences.appliedParagraphStyle = absatzformat;

for (var n = 0; n < csv.length; n++) {
var line = csv[n].split( datenfeldtrenner );
if (line.length == 2) {
app.findTextPreferences.findWhat = line[0];
app.changeTextPreferences.changeTo = line[1];
app.changeText();
}
}
}

--------------------------

InDesign-Wissen und Automatisierung nicht nur rund um die Suite.

http://www.cuppascript.com
als Antwort auf: [#516926] Top
 
Ralf Hobirk p
Beiträge: 5772
4. Sep 2013, 16:48
Beitrag #4 von 11
Beitrag ID: #516949
Bewertung:
(4068 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


Danke euch beiden! Ich werde Geralds Lösung heute Abend testen, sobald die Liste steht.

@Werner: Die Liste/Tabelle aus ID zu generieren ist kaum möglich, da die Daten konkret in 84 Einzeldokumenten stecken. Es handelt sich um einen sich jährlich wiederholenden Job, und ich werde im nächsten Jahr usw. einfach nur neu hinzukommende Begriffe ergänzen.

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)
als Antwort auf: [#516936] Top
 
Gerald Singelmann  M  p
Beiträge: 6178
4. Sep 2013, 16:59
Beitrag #5 von 11
Beitrag ID: #516950
Bewertung:
(4067 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


>Ich werde Geralds Lösung heute Abend testen, sobald die Liste steht.

Mit Kopien der Dateien und nicht mit den Originalen etc.pp.

Nicht wahr?

;)
--------------------------

InDesign-Wissen und Automatisierung nicht nur rund um die Suite.

http://www.cuppascript.com
als Antwort auf: [#516949] Top
 
Ralf Hobirk p
Beiträge: 5772
4. Sep 2013, 17:02
Beitrag #6 von 11
Beitrag ID: #516951
Bewertung:
(4062 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


Och, ich teste immer alles mit Originalen ;-) Dafür hab ich doch Backups.

Spaß beiseite: Ich habe keinerlei Suizid-Absichten.

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)
als Antwort auf: [#516950] Top
 
Ralf Hobirk p
Beiträge: 5772
5. Sep 2013, 23:06
Beitrag #7 von 11
Beitrag ID: #516981
Bewertung:
(3928 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


Hallo Gerald,

hab's gerade getestet. Es löscht mir alle BUs aus den Textrahmen, setzt aber nix Neues rein. Egal, ob ich als Datenfeldtrenner den Tab oder das Semikolon nehme (natürlich auch im Sctript angepasst).

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)
als Antwort auf: [#516936] Top
 
WernerPerplies
Beiträge: 2200
6. Sep 2013, 07:29
Beitrag #8 von 11
Beitrag ID: #516982
Bewertung:
(3894 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


Hallo Ralf,

eine CSV-Datei kann sehr viel komplexer sein, als eine mit Tab oder Semikolon separierte Zeile, so könnte natürlich auch der eigentliche Separator oder ein Zeilenende in einem Feld vorkommen.

Da Herr Singelman die Anzahl der Felder prüft und es so aussieht, dass die eigentliche Ersetzung vorgenommen wird, könnte die Ursache im Inhalt des zweiten Feldes liegen.

Zeige doch mal eine Zeile der CSV-Datei.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#516981] Top
 
WernerPerplies
Beiträge: 2200
6. Sep 2013, 08:49
Beitrag #9 von 11
Beitrag ID: #516984
Bewertung:
(3879 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


Hallo Ralf,

noch eine Ergänzung:

Zitat @Werner: Die Liste/Tabelle aus ID zu generieren ist kaum möglich, da die Daten konkret in 84 Einzeldokumenten stecken. Es handelt sich um einen sich jährlich wiederholenden Job, und ich werde im nächsten Jahr usw. einfach nur neu hinzukommende Begriffe ergänzen.


Ich hatte diesen Teil überlesen.
Zitat Die Liste/Tabelle aus ID zu generieren ist kaum möglich, da die Daten konkret in 84 Einzeldokumenten stecken.

Das spricht doch gerade für eine Skriptlösung.
Verstehe ich das richtig?
Du erstellst Deine Liste manuell aus 84 Dokumenten, weißt zukünftig genau, welche Begriffe dazu gekommen sind und öffnest dann manuell 84 Dokumente, um das Suchen- und Ersetzenskript auszuführen und die Einzeldateien dann zu speichern und zu schließen?

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#516949] Top
 
Ralf Hobirk p
Beiträge: 5772
6. Sep 2013, 13:35
Beitrag #10 von 11
Beitrag ID: #516994
Bewertung:
(3831 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


Hallo Werner,

das Problem hat Gerald gestern per PN gelöst. Ich hatte eine Leerzeile in der CSV übersehen, die den Fehler verursacht hatte.

Für die manuelle Listenerstellung hat meine Frau eine knappe halbe Stunde gebraucht, ist also vernachlässigbar. Es handelt sich insgesamt um ca. 70 verschiedene Bildunterschriften, die übersetzt werden müssen. Der Rest sind sprachneutrale Begriffe wie Namen von Orten und Personen. Die Liste wird sich sich noch verkürzen, da wir uns firmenintern bei der "capitalization" auf eine bestimmte Regelung geeinigt haben ;-)

Da ich selbst Autor des Kataloges bin und auch maßgebend für die Produktentwicklung (Kreuzfahrten/Blaue Reise) verantwortlich bin, lege ich auch selbst die Bildunterschriften fest. Und da wird es mir schon auffallen, wenn ich eine Bildunterschrift ändere oder neu einführe.

Antwort auf: öffnest dann manuell 84 Dokumente, um das Suchen- und Ersetzenskript auszuführen und die Einzeldateien dann zu speichern und zu schließen?

Nein, ich starte nur ein Mal das Script "DoScriptWithDocsOfFolder.jsx" und gut ist. Geralds Script wird entsprechend angepasst, so dass keine Abfrage der CSV mehr erfolgt, sondern sie fix im Script eingetragen wird ;-)

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)
als Antwort auf: [#516984] Top
 
WernerPerplies
Beiträge: 2200
6. Sep 2013, 13:58
Beitrag #11 von 11
Beitrag ID: #516998
Bewertung:
(3827 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suchen & Ersetzen nach CSV-Datei


Hallo Ralf,

Dann ist ja alles klar. ;-)

Zitat Ich hatte eine Leerzeile in der CSV übersehen, die den Fehler verursacht hatte.


Na ja, Leerzeilen sind in einer CSV genauso zulässig, wie Zeilenenden in Feldern.

In beiden Fällen, die vermulich bei Dir jetzt nicht mehr vorkommen, wird das Skript Probleme bekommen.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING
als Antwort auf: [#516994] Top
 
X