Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » Sprach-Wechsel

Sprach-Wechsel

sylvaine
Beiträge gesamt: 1

31. Okt 2005, 11:38
Bewertung:

gelesen: 45807

Beitrag als Lesezeichen
Als Uebersetzerin D - F bekomme ich InDesign-Dateien auf Deutsch und ich übersetze diese in franz. direkt in InDesign.
Um meine Dateien mit "Rechtschreibsprüfung..." in franz. dann kontrollieren zu können, muss ich immer jeder einzelner (!!) Text-Block anklicken und in franz. zu speichern!!! Sonst bleiben immer ein Paar Text-Blöcke in D (vor allem Tabellen).
Gib es eine Möglichkeit alles zu wählen, sodass alle, aber wirklich alle Text-Blöcke im franz. sind, um die "Rechtschreibsprüfung..." für franz. brauchen zu können?
Mit QuarkXpress kann man doch "Speichern unter..." und dann eine Sprache (F anstatt D) wählen und that's it.....
(sorry für mein D-schreiben... bin halt eine Welsche!!)
Vielen Dank und Gruss

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

31. Okt 2005, 12:05
Bewertung:

gelesen: 45789

Beitrag als Lesezeichen
Hallo Sylvaine,

mit folgendem JavaScript kannst Du die Sprache aller Absatzfomate auf "Französisch" setzen:
Code
// changeLanguageOfStyles.js 
//
myDoc=app.documents[0];
myLanguage="French";
myStyles=myDoc.paragraphStyles;
for (oneStyle=1;oneStyle<myStyles.length;oneStyle++){
myStyles[oneStyle].appliedLanguage=myLanguage;
}


und mit folgendem Skript kannst Du - falls im Dokument nicht strukturiert mit Absatzformaten gearbeitet wurde - die Sprache von allen Absätzen im Dokument auf "Französich" setzen:
Code
// changeLanguageOfParagraphs.js 
//
app.documents[0].stories.everyItem().paragraphs.everyItem().appliedLanguage="French";


Viele Grüße
Martin


Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

31. Okt 2005, 12:12
Bewertung:

gelesen: 45781

Beitrag als Lesezeichen
Hallo Sylvaine,

sorry, sehe jetzt erst, daß Dir vor allem die Tabellen Sorge/Probleme bereiten.
Hier ein Skript, daß die Sprache aller Tabellen im Dokument auf "Französich" setzt:
Code
// changeLanguageOfTables.js 
//
app.documents[0].stories.everyItem().tables.everyItem().cells.everyItem().paragraphs.everyItem().appliedLanguage="French";


Viele Grüße
Martin


Sprach-Wechsel

Ingo Herber
Beiträge gesamt: 454

8. Nov 2005, 16:50
Bewertung:

gelesen: 45714

Beitrag als Lesezeichen
Hallo,
ich stehe vor einem ähnlichen Problem und möchte alle Absätze und Tabellen einer Ebene ändern, nicht des ganzen Dokuments.
(Eine Ebene enthält den englischen Text, eine den deutschen.)

Wie kann man das Script umbauen, damit es nur die aktive Ebene berücksichtigt?
_______________________
Windows 10 prof. | Adobe CC 2023 | Adobe CC 2024

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

8. Nov 2005, 17:20
Bewertung:

gelesen: 45704

Beitrag als Lesezeichen
Im Prinzip würde wahrscheinlich ausreichen, zu prüfen, auf welcher Ebene der erste Textrahmen eines Textverlaufs (story) liegt und dann der ganzen story eine bestimmte Sprache zuordnen.
Theoretisch ist es aber auch möglich, daß die verschiedenen Textrahmen eines Textverlaufs auf verschiedenen Ebenen liegen.

Deswegen sollte das Skript jeden Textrahmen prüfen, auf welcher Ebene er liegt und davon abhängig dem Inhalt eine bestimmte Sprache zuordnen.

So was mache ich aber sehr ungerne, denn dann weicht die Sprache von der im Absatzformat definierten Sprache ab.
Ich würde eher empfehlen, mit neuen Absatzformaten (je Sprache) zu arbeiten. Also z.B. so:
U1_de, U1_uk, U1_fr
U2_de, U2_uk, U2_fr
Normal_de, Normal_uk, Normal_fr
...

Es wäre möglich, ausgehend von einem Basis-Satz an Absatzfomaten neue Absatzfomate mit o.a. Bezeichnungsstruktur und den entsprechenden Namen per Skript einzurichten.

Viele Grüße
Martin


Sprach-Wechsel

Ingo Herber
Beiträge gesamt: 454

8. Nov 2005, 17:30
Bewertung:

gelesen: 45698

Beitrag als Lesezeichen
Hallo Martin,
du hast wohl recht, ich habe verschiedene Absatzformate, die ich besser kopiere und die Sprache wechsle.

Dann muss ich wohl oder übel auf der englischen Ebene über Suchen/Ersetzen alle deutschen gegen die englischen austauschen...
_______________________
Windows 10 prof. | Adobe CC 2023 | Adobe CC 2024

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

8. Nov 2005, 20:27
Bewertung:

gelesen: 45683

Beitrag als Lesezeichen
Hallo Ingo,

nichtsdestotrotz hier ein kleines, simples Skript, das die Sprache abhängig vom Namen der Ebene zuordnet.

Wichtig: Der Name jeder Ebene steht für die zuzuweisende Sprache.
Soll z.B. dem Text auf einer Ebene xy die Sprache "German: Reformed" zugewiesen werden, muß die Ebene in "German: Reformed" umbenannt werden.

Hat eine Ebene einen Namen, für die InDesign mit keiner Sprache aufwarten kann (z.B. "Abbildungen"), dann wird diese Ebene ignoriert (Text auf dieser Ebene behält die Sprachattribute).

Das Skript prüft die Lage des ersten Textrahmens jedes Textflusses und verwendet den Namen der Ebene, auf welcher der erste Textrahmen liegt, als Sprachnamen für den gesamten Textfluß.
Liegt ein Textrahmen aus der Kette der verknüpften Textrahmen des Textflusses auf einer anderen Ebene, so bekommt der Text dieses Rahmens nicht die Sprache zugeordnet, die dem Namen seiner Ebene entspricht, sondern die Sprache, die dem Namen der Ebene entspricht, auf welcher der erste Textrahmen des Textflusses liegt (versteht das noch jemand? - ausprobieren).

Das Skript ignoriert Text in Tabellen!

Code
// LanguageByLayer.js 
//
var myDoc = app.documents[0];
var myStories = myDoc.stories;

for (oneStory = 0; oneStory < myStories.length; oneStory++){
myLayerName = myStories[oneStory].textFrames[0].itemLayer.name;
try{
myStories[oneStory].paragraphs.everyItem().appliedLanguage = myLayerName;
}
catch(e){};
}


Eine Übersicht über die installierten Sprachen (bzw. über die englisch-sprachige Bezeichnung der Sprachen) kann man sich auf dem MAC mit dem AppleScript von http://www.hilfdirselbst.ch/...i?post=160011#160011 anzeigen lassen.

Viele Grüße
Martin



(Dieser Beitrag wurde von MartinF am 8. Nov 2005, 20:30 geändert)

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

8. Nov 2005, 20:57
Bewertung:

gelesen: 45678

Beitrag als Lesezeichen
Hier noch ein weiteres Skript.
Es ergänzt ein vorhandenes Set an Absatzformaten mit neuen Sets, die auf das vorhandene Set aufbauen, sich aber in der Sprache (und Namensgebung) unterscheiden.

Die Sets unterscheiden sich namentlich durch ein Suffix:
"DE" steht für Deutsch (z.B. U1_DE = Überschrift 1 in deutscher Sprache)
"UK" steht für Englisch (z.B. U1_UK = Überschrift 1 in englischer Sprache)
"FR" steht für Französisch (z.B. U1_FR = Überschrift 1 in französischer Sprache)

Namensänderung der vorhandenen Absatzformate
Während der Ausführung des Skripts wird auch dem vorhandenen Set ein entsprechendes Suffix zugeordnet. Dieses Suffix (für die vorhanden Absatzformate) wird im Skript unter der Variable "myBase" definiert (hier "DE" für Deutsch). Die Sprache dieser Absatzformate bleibt erhalten (und wird nicht überprüft).

Hinzufügen von neuen Absatzformaten
Aufbauend auf diese Absatzformate werden neue Absatzformate eingerichtet.
Sie teilen also alle Eigenschaften mit dem vorhandenen Absatzformaten bis auf die Sprache und den Namen.
Die Namenskürzel sind im Array "mySLG" definiert (hier: "UK", "FR" - für Englisch und Französisch; weitere Kürzel werden mit Komma und Anführungszeichen ergänzt).
Die Sprachen sind im Array "myLG" definiert (hier: "English: UK", "French").
Die Reihenfolge der Namenskürzel in mySLG und die Reihenfolge der Sprachen in myLG müssen sich entsprechen (wird vom Skript nicht geprüft).

Das Skript steht auf etwas wackeligen Beinen: Es lebt von der Hoffnung, daß sich durch die Änderung der Namen und durch das Hinzukommen von neuen Absatzformaten die Reihenfolge der Absatzformate rückwärts nicht ändert.
Dieses Problem der möglichen Änderung der Reihenfolge habe ich noch nicht in den Griff bekommen. Deswegen kann ich im Moment auch keine Variante anbieten, die das Sprachkürzel vorne statt hinten anfügt. Bin für jeden Hinweis dankbar.

Code
// StylesByLanguage.js 
//
var myDoc = app.documents[0];
var myPS = myDoc.paragraphStyles;
var myBase = "DE"; // Suffix für die vorhandenen Absatzformate
var mySLG = ["UK", "FR"]; // Suffixe für die neuen Absatzformate
var myLG = ["English: UK", "French"]; // die neuen Sprachen


for (oneStyle = myPS.length-1; oneStyle > 1; oneStyle--){
for (oneLG = 0; oneLG < myLG.length; oneLG++){
myStyle = myDoc.paragraphStyles.add({
basedOn:myDoc.paragraphStyles[oneStyle],
name:(myDoc.paragraphStyles[oneStyle].name + "_" + mySLG[oneLG]),
appliedLanguage:myLG[oneLG]
});
}
myDoc.paragraphStyles[oneStyle].name = myDoc.paragraphStyles[oneStyle].name + "_" + myBase
}


Viele Grüße
Martin


Sprach-Wechsel

Ingo Herber
Beiträge gesamt: 454

9. Nov 2005, 10:20
Bewertung:

gelesen: 45650

Beitrag als Lesezeichen
Hallo Martin,
vielen Dank, ich habe das mal ausprobiert.

Jetzt habe ich aber folgendes Problem:
Ersetzen der Formateinstellung "Fliesstext_DE" gegen "Fliesstext_UK" nur auf einer Ebene ("englisch") ?
Mit Schrecken habe ich festgestellt, dass Suchen/Ersetzen von Formateinstellungen ALLE Vorkommen im Dokument ersetzt, unabhängig ob eine Ebene sichtbar oder geschützt ist. Jetzt wird also auch der deutsche Texte englisch getrennt.

Wie kann ich Suchen/Ersetzen nur auf der/den aktiven Ebenen?
_______________________
Windows 10 prof. | Adobe CC 2023 | Adobe CC 2024

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

9. Nov 2005, 10:50
Bewertung:

gelesen: 45640

Beitrag als Lesezeichen
Hallo Ingo,

> Wie kann ich Suchen/Ersetzen nur auf der/den aktiven Ebenen?
Um dieses Problem habe ich mich auch herumgemogelt... :-(

Suchen/Ersetzen läßt sich auf der Benutzeroberfläche nicht und per Skript nicht ohne weiteres auf eine Ebene beschränken.
Mein Skript sollte also zunächst nur eine Hilfe sein, die entsprechenden Sets für die verschiedenen Sprachen anzulegen.

Für eine Beschränkung des Suchen/Ersetzens nur auf eine bestimmte Ebene bräuchte es im Skript eine Abfrage:
1. Suche alle Absätze, die mit dem Absatzformat XY ausgezeichnet sind
2. Gehe die gefundenen Absätze einen nach dem anderen durch (Schleife)
3. prüfe, auf welcher Ebene sich der elterliche Textrahmen, in welchem sich der gefundene Absatz befindet, liegt: wenn auf Ebene "Englisch", dann weise ihm das Absatzformat "xy_UK" zu; wenn auf der Ebene "Französisch", dann weise ihm das Absatzformat "xy_FR" zu, usw.
Es ist ein ärgerlicher Fall vorstellbar: ein Absatz umbricht von einem Textrahmen in einen neuen. Textrahmen a liegt auf Ebene DE und Textrahmen b liegt auf Ebene UK. Was gilt nun?

Und diese Überprüfung müßte bei jedem Absatzformat des Ausgangssets (also z.B. xy_DE, xz_DE...) durchgeführt werden. Das würde ein recht langsames Skript werden und würde von einigen lokalen Parametern abhängen:
1. wie sind Deine Absatzfomate benannt (richten sie sich nach der in diesem Thread angeregten Bezeichnungsstruktur).
2. wie heißt die Ebene für die englische Sprache, wie für die französische Sprache
3. wie soll das Skript mit weiteren Sprachen umgehen.

Untem Strich: es ist machbar, aber relativ umständlich, da spezifisch (individuelle Vorlieben) - ich mache Skripte gern so allgemein wie möglich.
Außerdem ist es - mit praktischen Überprüfungen - nicht in 5 Minuten zu entwickeln.

Viele Grüße
Martin


Sprach-Wechsel

Ingo Herber
Beiträge gesamt: 454

9. Nov 2005, 11:24
Bewertung:

gelesen: 45636

Beitrag als Lesezeichen
Hallo Martin,
wenn ich die deutschen Textrahmen auf eine englische Ebene dupliziert habe, wie kann ich denen dann die neuen Absatzformate zuweisen? (ausser von Hand)

Meine englischen Texte sind platziert, aber die Silbentrennung ist eben noch deutsch.
Ohne Suchen/Ersetzen auf einer Ebene kann ich kein zweisprachiges Dokument erzeugen, sondern muss alles in englisch umstellen und dann die deutsche Ebene löschen. (... oder die Silbentrennung abschalten und die Absatzformate "sprachneutral" halten.)

Kann ein Script also nicht so einfach zwischen gesamtem Dokument und aktiver/sichtbarer Ebene unterscheiden?
Dann wird die Lösung für ein allgemeines Script wirklich nicht einfach sein...
_______________________
Windows 10 prof. | Adobe CC 2023 | Adobe CC 2024

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

9. Nov 2005, 11:44
Bewertung:

gelesen: 45630

Beitrag als Lesezeichen
Hallo Ingo,

ein Skript, das unabhängig von den Absatzformaten ebenenspezifisch Sprache zuordnet, habe ich hier veröffentlicht: http://www.hilfdirselbst.ch/...i?post=194981#194981
Benenne Deine englisch-sprachige Ebenevor dem Starten des Skripts kuzrfristig in "Englisch: UK" um. Danach kannst Du der Ebene wieder ihren alten Namen geben.

> sondern muss alles in englisch umstellen und dann die deutsche Ebene löschen.
Wäre das ein Problem?

> (... oder die Silbentrennung abschalten und die Absatzformate "sprachneutral" halten.)
Das kann ich nicht zulassen. ;-)

> Kann ein Script also nicht so einfach zwischen gesamtem Dokument
> und aktiver/sichtbarer Ebene unterscheiden?
Nein, genausowenig wie die Benutzeroberfläche.

> Dann wird die Lösung für ein allgemeines Script wirklich nicht einfach sein...
s.o.

Viele Grüße
Martin


Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

9. Nov 2005, 11:50
Bewertung:

gelesen: 45628

Beitrag als Lesezeichen
Hallo Ingo,

Du kannst später (nach der Zuweisung der Sprache über "LanguageByLayer.js") über Suche / Ersetze folgendes machen:
Suche Absatzformat xy_DE mit Sprache ENGLISCH und ersetze durch Absatzformat xy_UK (und so weiter für alle verwendeten Absatzformate - hoffentlich sind es nicht zu viele).
Freilich ginge das auch über Skript. Ich muß jetzt aber dringend weg.

Viele Grüße
Martin


Sprach-Wechsel

Ingo Herber
Beiträge gesamt: 454

9. Nov 2005, 15:26
Bewertung:

gelesen: 45594

Beitrag als Lesezeichen
Hallo Martin,
ich habe das getestet, komme leider aber nicht so ganz klar.
Die englische Ebene heisst "English : UK", es ändert sich aber nichts an der Sprache.
(Das Script arbeitet eine zeitlang, ich finde aber keine Veränderung.)

Info: Ich arbeite mit Windows, das Apple-Script zu den installierten Sprachen hilft mir leider nicht.
_______________________
Windows 10 prof. | Adobe CC 2023 | Adobe CC 2024

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

9. Nov 2005, 15:52
Bewertung:

gelesen: 45585

Beitrag als Lesezeichen
> Die englische Ebene heisst "English : UK"

Wenn die Ebene tatsächlich "English : UK" heißt, dann hlft's vielleicht, wenn Du das Leerzeichen vor dem Doppelpunkt löscht (danach muß er bleiben).

Viele Grüße
Martin


Sprach-Wechsel

Ingo Herber
Beiträge gesamt: 454

9. Nov 2005, 17:04
Bewertung:

gelesen: 28455

Beitrag als Lesezeichen
Klasse, da habe ich die Lösung ja fast selbst hingeschrieben.
Vielen Dank.

Ich werde den kompletten Aufbau einer zweiten Sprachebene mit neuen Stilen später nochmal testen. Kämpfe im Moment noch mit neuen Herausforderungen: (Schaltflächen mit Links zu Lesezeichen auf nicht sichtbaren Ebenen funktionieren nicht, obwohl die Lesezeichen korrekt in der PDF stehen.)
Aber das teste ich erst mal noch aus.
_______________________
Windows 10 prof. | Adobe CC 2023 | Adobe CC 2024

Sprach-Wechsel

Ingo Herber
Beiträge gesamt: 454

9. Nov 2005, 18:51
Bewertung:

gelesen: 28449

Beitrag als Lesezeichen
Erst mal ein "dickes" Dankeschön an Martin. Mail mir mal bitte deine Adresse.

Fazit: Erstellen von Sprachversion in neuer Ebene
Damit die Sprachversion auch in der richtigen Sprache steht, ist das Language_by_Layers-Skript eine tolle Sache. Jetzt habe ich auch eine korrekte Rechtschreibprüfung und Silbentrennung in der neuen Sprache.

Das Erstellen neuer Absatzformat für die 2. Sprachversion und anschliessendes Ersetzen ist ein "gefährlicher" Weg, da durch das Ersetzen alle Abweichungen von den Absatzformaten (mal was fett gemacht oder ein Tabulator verschoben) verloren gehen. (o.k., soll man ja auch nicht tun, dafür gibt´s ja Zeichenformate)
Das musste ich also lassen.
_______________________
Windows 10 prof. | Adobe CC 2023 | Adobe CC 2024

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

9. Nov 2005, 22:33
Bewertung:

gelesen: 28443

Beitrag als Lesezeichen
Hallo Ingo,

> Das Erstellen neuer Absatzformat für die 2. Sprachversion und anschliessendes
> Ersetzen ist ein "gefährlicher" Weg, da durch das Ersetzen alle Abweichungen
> von den Absatzformaten (mal was fett gemacht oder ein Tabulator
> verschoben) verloren gehen. (o.k., soll man ja auch nicht tun, dafür gibt´s
> ja Zeichenformate)

Richtig.
In diesem Fall ist das Arbeiten mit Zeichenformaten obligatorisch.
Die Zuweisung der Zeichenformate für die Schriftschnitte kursiv, fett, fett-kursiv, hochgestellt kannst Du schnell mit dem Skript assignCharstyle.jsx von http://www.hilfdirselbst.ch/...i?post=188877#188877 umsetzen.

Hier noch eine kleine Ergänzung zum Skript StylesByLanguage.js.
Wer nach Erstellung der Absatzformatsets das Namenskürzel der Sprache lieber vorne als hinten wünscht (DE_U1 statt U1_DE; damit die Absatzformate je einer Sprache untereinander stehen), kann die Umbenennung mit folgendem Skript vornehmen:


Code
// swappingPartsOfStyleName.js 
//
var myDoc = app.documents[0];
var myPS = myDoc.paragraphStyles;
var myOldNames = [];

for (oneStyle = myPS.length-1; oneStyle > 1; oneStyle--){
myOldNames.push(myDoc.paragraphStyles[oneStyle].name);
}

for (oneName = 0; oneName < myOldNames.length; oneName++){
myDoc.paragraphStyles.item(myOldNames[oneName]).name = changeNameParts(myDoc.paragraphStyles.item(myOldNames[oneName]).name, "_")
}

function changeNameParts(oldName, oneDivider){
var myNewParts = [];
var myOldParts = oldName.split(oneDivider);
for (onePart = myOldParts.length-1; onePart >= 0; onePart--){
myNewParts.push(myOldParts[onePart]);
}
var newName = myNewParts.join(oneDivider)
return newName;
}

Es vertauscht die Namensteile, die mit "_" getrennt sind.

Viele Grüße
Martin



(Dieser Beitrag wurde von MartinF am 9. Nov 2005, 22:35 geändert)

Sprach-Wechsel

Jochen Uebel
Beiträge gesamt: 3200

11. Nov 2005, 10:24
Bewertung:

gelesen: 28432

Beitrag als Lesezeichen
Antwort auf: Als Uebersetzerin D - F bekomme ich InDesign-Dateien auf Deutsch und ich übersetze diese in franz. direkt in InDesign. Um meine Dateien mit "Rechtschreibsprüfung..." in franz. dann kontrollieren zu können, muss ich immer jeder einzelner (!!) Text-Block anklicken und in franz. zu speichern

Warum erzeugst Du Dir nicht ein Duplikat des Dokumenst - für die französische Übersetzung? Wenn Du in der deutschen Version kosequent mit Absatzformaten gearbeitet hast, müßtest Du in der Lage sein, durch Umstellung aller Absatzformate auf Sprache "Französisch" das Problem ruckzuck zu lösen.
Grüße, Jochen

Sprach-Wechsel

arnolddesign
Beiträge gesamt: 75

11. Nov 2005, 18:31
Bewertung:

gelesen: 28420

Beitrag als Lesezeichen
Hallo Martin

danke für die wertvollen Scripts zum Wechseln der Sprache. Ich bitte noch um ein Ergänzung.

Dass für einen Wechsel nach Schweizerdeutsch "Deutsch: Schweiz" mit "German: Swiss" übersetzt werden muss, habe ich gleich rausgefunden. Wie aber muss "Deutsch: Neue Rechtschr." übersetzt werden?

Und falls du die Übersetzungen aller anderen Sprachen auch noch wüsstest, wäre es toll, wenn du diese gleich auch noch posten würdest.

Danke, Lukas

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

11. Nov 2005, 21:21
Bewertung:

gelesen: 28417

Beitrag als Lesezeichen
Hallo Lukas,

die Sprachen kannst Du Dir mit folgendem Skript ausgeben.
Es könnte ja sein, Du hast andere Sprachen als ich installiert.

Das Skript gibt die Sprachen am Bildschirm und in eine Datei aus.
Das Verzeichnis, in welches die Datei "InDesignSprachen.txt" geschrieben wird, ist aktuell für den MAC (Schreibtisch) eingerichtet:

myPath = '~/Desktop/';

Für Win (hier Root von Laufwerk C:) müßte diese Zeile etwa so lauten:

myPath = '/c/';

Code
// languages.js 
//
var myLan = app.languagesWithVendors;
var myLanNames = [];
for (oneLan=1; oneLan < myLan.length; oneLan++){
myLanNames.push(myLan[oneLan].name);
}
var myText = myLanNames.sort();
myText = myText.join("\n");
// Bildschirmausgabe
alert("Languages\n" + myText)
// Dateiausgabe
doExport(myText);

function doExport(myData){
myPath = '~/Desktop/'; // Pfad für MAC;
//myPath = '/c/'; // Pfad für Win
myTXT_File = 'InDesignSprachen.txt'; // Dateiname
myCreator = "R*ch"; // relevant für MAC
myType = "TEXT"; // relevant für MAC

myFile = new File( myPath + myTXT_File ); // neue Datei
myFile.open( 'w', myType, myCreator );
myFile.writeln( myData );
myFile.close();
}


Viele Grüße
Martin


Sprach-Wechsel

arnolddesign
Beiträge gesamt: 75

11. Nov 2005, 21:58
Bewertung:

gelesen: 28414

Beitrag als Lesezeichen
lieber Martin, genial - danke!

Für all diejenigen, die gleich zur Sache gehen wollen, hier das Resultat meines Scriptdurchlaufs - viel mehr Sprachen wird ja wohl kaum jemand installiert haben...

Katalanisch -> Catalan
Dänisch -> Danish
Niederländisch -> Dutch
Englisch: Großbritannien -> English: UK
English: USA -> English: USA
English: USA Recht -> English: USA Legal
English: USA Medizin -> English: USA Medical
Finnisch -> Finnish
Französisch -> French
Französisch: Kanada -> French: Canadian
Deutsch: Neue Rechtschr. -> German: Reformed
Deutsch: Schweiz -> German: Swiss
Deutsch: Alte Rechtschr. -> German: Traditional
Italienisch -> Italian
Norwegisch: Bokmål -> Norwegian: Bokmal
Norwegisch: Nynorsk -> Norwegian: Nynorsk
Portugiesisch -> Portuguese
Portugiesisch: Brasilien -> Portuguese: Brazilian
Spanisch: Standard -> Spanish: Castilian
Schwedisch -> Swedish

Einen ganz anderen Weg möchte ich noch anfügen: wir beugen der Problematik des Sprach-Wechsels vor, indem wir bei jedem Projekt als Erstes ein Absatzformat "Sprache" definieren, auf dem alle weiteren Absatzformate basieren. Hat sich gut bewährt, funktioniert aber natürlich nicht mit Sprach-Ebenen.

Gruss, Lukas

Sprach-Wechsel

meerestier
Beiträge gesamt: 277

2. Jan 2008, 09:23
Bewertung:

gelesen: 25895

Beitrag als Lesezeichen
Hallo,

zu diesem "Legacy" Thread noch eine Frage: Gibt es ein Skript, bei dem der Sprachwechsel auch im Buch funktioniert?

Gruss und Frohes Neues Jahr Euch allen....

meerestier
Viele Grüße

Lars

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

2. Jan 2008, 11:04
Bewertung:

gelesen: 25851

Beitrag als Lesezeichen
Antwort auf: Gibt es ein Skript, bei dem der Sprachwechsel auch im Buch funktioniert?


Mit dem Skript doScriptWithDocsOfBooks.jsx kann per Dialog ein Skript ausgewählt werden, das über alle Dokumente aller geöffneten Bücher hinweg ausgeführt wird.

Viele Grüße
Martin


Sprach-Wechsel

helga0202
Beiträge gesamt: 16

7. Apr 2010, 15:13
Bewertung:

gelesen: 22300

Beitrag als Lesezeichen
Hallo,

wir müssen nach der Umstellung von CS2 auf CS4 ziemlich viele Vorlagen ändern. (Vor allem in den Absatzformaten)
Sprache neu "Deutsch: Schweiz Rechtschreibreform 2006"

Gibt es hierfür ein schon funktionierendes Skript?

Liebe Grüsse
Helga

Sprach-Wechsel

Quarz
Beiträge gesamt: 3555

7. Apr 2010, 15:28
Bewertung:

gelesen: 22297

Beitrag als Lesezeichen
Hallo Helga,

schaul mal hier:
http://www.fachhefte.ch/

> JavaScripts > System > ID Version > SpracheWechseln

Oder
http://www.hilfdirselbst.ch/...i?post=228326#228326
http://www.hilfdirselbst.ch/...i?post=334718#334718


Gruß
Quarz

--------------------------------------------
InDesign CS4 ver6.04 | WinXP SP3

Sprach-Wechsel

helga0202
Beiträge gesamt: 16

7. Apr 2010, 15:52
Bewertung:

gelesen: 22281

Beitrag als Lesezeichen
Wow Super!

Danke Quarz!

auf fachhefte.ch war das rettende Skript verfügbar!

Wünsch dir noch einen schönen Tag.

Liebe Grüsse
Helga

Sprach-Wechsel

Jochen Uebel
Beiträge gesamt: 3200

7. Apr 2010, 17:54
Bewertung:

gelesen: 22243

Beitrag als Lesezeichen
Antwort auf [ arnolddesign ] Absatzformat "Sprache" definieren, auf dem alle weiteren Absatzformate basieren. Hat sich gut bewährt, funktioniert aber natürlich nicht mit Sprach-Ebenen.

In CS4 durchaus:
Format "Sprache" mitsamt seiner Derivate in eine Gruppe stellen (z.B. DE), Gruppe duplizieren und umbenennen (z.B. EN), das Format "Sprache" dort auf Englisch ändern - und siehe da: Alle Derivate von EN sind jetzt englisch.
Hat man in einem Duplikat des DE-Dokuments gearbeitet, kann die so veränderte Sprach-Ebene mit Hilfe vorhandener Skripts über die Ebene des Original-Dokuments gelegt werden.
Ist die Zahl der Formate pro Sprache überschaubar, kann man im Originaldokument bleiben und – mit der Gruppen-Technik – auch via Suchen&Ersetzen (»Ausgeblendete Ebenen einbeziehen« AUS) Sprache wechseln.
Grüße, Jochen

Sprach-Wechsel

snenk
Beiträge gesamt: 45

2. Apr 2012, 12:13
Bewertung:

gelesen: 19959

Beitrag als Lesezeichen
Jetzt muss ich doch diesen alten Thread noch aufwärmen ...
Nach dem ich LanguageByLayer jahrelang dankbar und erfolgreich in meinem ID CS3 verwendet habe, funktioniert es seit dem Upgrade auf CS 5.5 leider nicht mehr. In der Scriptkonsole steht bereits in Zeile 3 Ergebnis: undefined. Gibt es da möglicherweise inzwischen ein Update oder bietet ID 5.5 inzwischen eine bordeigene Lösung, die ich vielleicht verpasst habe? Ich würde mich freuen, wenn mir da jemand weiterhelfen könnte.

snenk

Sprach-Wechsel

Hans Haesler
Beiträge gesamt: 5826

2. Apr 2012, 12:45
Bewertung:

gelesen: 19933

Beitrag als Lesezeichen
Hallo snenk,

und wenn Du es mit dem von Quarz erwähnten Script (drei Beiträge weiter oben) probierst?

Das JavaScript SpracheGruppenKopie ist hier erhältlich: http://www.fachhefte.ch / Links "JavaScripts", "Mac OS X deutsch" (oder "Windows deutsch"), "InDesign CS3" bis "InDesign CS5". Bei jeder Version zwei Mal auf "weiter" klicken, um auf Seite 3 zu gelangen.

Sollte diese Lösung nicht zusagen, werde ich versuchen LanguageByLayer unter CS5.5 zum Laufen zu bringen.

Gruss, Hans

Sprach-Wechsel

snenk
Beiträge gesamt: 45

2. Apr 2012, 13:21
Bewertung:

gelesen: 13069

Beitrag als Lesezeichen
Hallo Hans,

danke für die schnelle Antwort. Die Formate zu kopieren wollte ich eben vermeiden, weil in dem Dokument schon recht viele Formate vorhanden sind. Ich habe gehofft, dass sich das Script recht leicht anpassen lässt, da es ja auch nicht so umfangreich ist. Ich würde mich freuen, wenn Du mir hier weiterhelfen könntest.

Viele Dank und viele Grüße
snenk

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

2. Apr 2012, 13:44
Bewertung:

gelesen: 13051

Beitrag als Lesezeichen
Hallo snenk,

auf die Schnelle ...

Ersetze in Deinen Skript 'textFrames[0]' durch 'textContainers[0]'.

quick & dirty:

Code
// LanguageByLayer_CS5.jsx  
//
var myDoc = app.documents.firstItem();
var myStories = myDoc.stories;
var myErrors = new Array;
for (oneStory = 0; oneStory < myStories.length; oneStory++){
myLayerName = myStories.item(oneStory).textContainers[0].itemLayer.name;
try
{
myStories.item(oneStory).paragraphs.everyItem().appliedLanguage = myLayerName;
}
catch(e)
{
myErrors.push(e);
};
}

if (myErrors.length > 0)
alert('Achtung!\r' + myErrors.join('\n'));



Wenn die internationale Bezeichnung der Sprache (z.B. 'English: UK') nicht akzeptiert wird, versuch's mit der lokalisierten Bezeichnung (Englisch: Großbritannien).

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 2. Apr 2012, 13:47 geändert)

Sprach-Wechsel

Hans Haesler
Beiträge gesamt: 5826

2. Apr 2012, 13:56
Bewertung:

gelesen: 13043

Beitrag als Lesezeichen
Hallo snenk,

mit SpracheGruppenKopie erhält man insgesamt nicht mehr Formate. Aber man muss anders vorgehen, d.h. mit nur einer Ebene beginnen.

Ich bin zu Zeit unterwegs und könnte mir das Script erst gegen Abend vornehmen.

Aber ich sehe, dass Martin Dir bereits einen Hinweis gegeben hat. Das werdet Ihr gemeinsam schon hinkriegen. :-)

Gruss, Hans

Sprach-Wechsel

snenk
Beiträge gesamt: 45

2. Apr 2012, 14:33
Bewertung:

gelesen: 13013

Beitrag als Lesezeichen
Hallo Martin,

danke erst einmal für dein schnelles Handanlegen. 'textFrames[0]' hatte ich bereits früher ersetzt. Darauf hattest du ja schon einmal in einem älteren Thread hingewiesen, als es um den Umstieg von CS2 auf CS3 ging.

Irgend etwas scheint nun leider noch nicht zu funktionieren. Ich bekomme jetzt ein riesiges Fenster mit einer Skriptwarnung, für dessen Größe mein Monitor nicht mehr ausreicht. Jedenfalls steht da mehrfach, und das für scheinbar sämtliche Ebenen "Ungültiger Wert für die Einrichtung der Eigenschaft "appliedLanguage". LanguageWithVendors, Language or String erwartet, aber "Deutsch: 2006" erhalten." Wobei "Deutsch: 2006" dann der jeweilige Sprachebenenname ist. - Jetzt erkenne ich gerade auch mit meinen rudimentären Skriptkenntnissen, dass das Fehler-Fenster als Ausgabe deines Scriptes geplant war. -

Die lokalisierte Sprachvariante habe ich dabei auch ausprobiert, aber ohne Erfolg.

Viele Grüße
snenk

(Dieser Beitrag wurde von snenk am 2. Apr 2012, 14:33 geändert)

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

2. Apr 2012, 14:55
Bewertung:

gelesen: 12995

Beitrag als Lesezeichen
Antwort auf: aber "Deutsch: 2006" erhalten


Es gibt keine Sprache 'Deutsch: 2006'.
Diese Sprache heißt 'Deutsch: Rechtschreibreform 2006'.
Dies entspricht der Anzeige im Feld 'Sprache' in der Zeichenpalette.

Das obige Schnippsel habe ich in InDesign CS5 getestet.
Es sollte aber auch in CS5.5 funktionieren.

Du kannst die letzten beiden Zeilen, welche die Fehlermeldung ausgeben, auch löschen, damit Du Deinen Bildschirm wieder zu Gesicht bekommst. ;-)

Viele Grüße
Martin


Sprach-Wechsel

snenk
Beiträge gesamt: 45

2. Apr 2012, 15:27
Bewertung:

gelesen: 12965

Beitrag als Lesezeichen
Tatsächlich! Jetzt klappt es. Jetzt hab ich aber auch gleich die Ursache zu meiner Annahme, dass es nicht funktioniert, gefunden: Nach dem Durchlaufen des Scriptes habe ich zuerst in die nächste Tabelle geklickt und festgestellt, dass es in der englischen Ebene alles noch deutsch war. Offensichtlich ist das ein Bug, der mir noch nie aufgefallen ist. (habe eben in die alten Dateien geschaut, da ist das auch so.) Sicherlich hängt das wieder damit zusammen, dass Indesign Tabellen als Textzeichen behandelt. So genügt es mir aber auf jeden Fall. :-)

Zitat Es gibt keine Sprache 'Deutsch: 2006'.

Ich komme vom CS3-Planeten. Da hat das noch so funktioniert ... ;-)

Vielen Dank also noch einmal an alle. Ihr habt mir sehr geholfen.
snenk

(Dieser Beitrag wurde von snenk am 2. Apr 2012, 15:29 geändert)

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

2. Apr 2012, 15:42
Bewertung:

gelesen: 12957

Beitrag als Lesezeichen
Antwort auf: Nach dem Durchlaufen des Scriptes habe ich zuerst in die nächste Tabelle geklickt und festgestellt, dass es in der englischen Ebene alles noch deutsch war. Offensichtlich ist das ein Bug, der mir noch nie aufgefallen ist.


In diesem einfachen Skript wird Text in Tabellen, Fußnoten und verankerten Objekten ignoriert. Darauf hätte ich oben hinweisen sollen.

Das wäre noch auszubauen.

Aber ich vermute, dass dies von Hans’ Skript bereits unterstützt wird.
Deswegen will ich hierfür keine Zeit mehr opfern.

Viele Grüße
Martin


Sprach-Wechsel

snenk
Beiträge gesamt: 45

2. Apr 2012, 16:06
Bewertung:

gelesen: 12931

Beitrag als Lesezeichen
Ja, das würde mich auf jeden Fall noch einmal interessieren. Leider ist auf der Fachhefte-Seite die Funktionsweise nicht weiter erklärt. Ich bin mir daher nicht ganz sicher, ob es genau das tut was ich brauche. Wie gesagt ich kann jetzt auch ganz gut mit dieser Lösung leben.

Danke noch einmal
snenk

Sprach-Wechsel

Hans Haesler
Beiträge gesamt: 5826

2. Apr 2012, 18:00
Bewertung:

gelesen: 12889

Beitrag als Lesezeichen
Liebe Freunde,

@ Martin: Die beiden Scripts haben nicht denselben Ansatz. Deshalb wäre es sicher wünschenswert, wenn Du Deines ergänzen würdest.

@ snenk: Die Funktionsweise wird in der LiesMich-Datei erklärt, welche zusammen mit dem Script heruntergeladen werden kann (mit Klick auf den Link "Sprache/Formatgruppen-Kopie").

Einleitend wird das Prinzip kurz dargestellt. Und zuletzt wird die Ausführung in 9 Punkten zusammengefasst:

Zitat *****
Ausführung

1. Ein Dokument öffnen.
2. Eine Ebene kopieren und umbenennen.
3. Das Script starten (Doppelklick auf den Namen in der Palette).
4. Im Dialog die zu kopierende Absatz- und/oder Zeichenformatgruppe (oder "[Root]") wählen.
5. In den Textfeldern die Namen der neuen Gruppen eingeben.
6. Im Menü die gewünschte Sprache einstellen.
7. Bestimmen, ob "[Keine Sprache]" erhalten bleiben oder überschrieben werden soll.
8. Als Ziel-Ebene die kopierte auswählen.
9. Mit "OK" bestätigen.

Gruss, Hans

Sprach-Wechsel

snenk
Beiträge gesamt: 45

2. Apr 2012, 18:26
Bewertung:

gelesen: 12868

Beitrag als Lesezeichen
Hallo Hans,

also werden doch die Absatz-Formate kopiert und mitder entsprechenden Sprache versehen. Das wäre für unseren Workflow nicht so ideal, da wir unser Dokument aus zeitlichen Gründen regelmäßig "recyclen". Sprich deutsche Ebene inhaltlich überarbeiten, Layout anpassen, die deutsche Ebene dann kopieren und mit dem übersetzten Text wieder füllen. (Ich weiß, das ist nicht sonderlich günstig, hat sich aber für uns als der geeignetste Weg erwiesen.) Damit müsste ich also immer wieder die alten englischen Ebenen löschen oder entsprechend der Veränderungen am Original anpassen. Das wäre einfach für unsere Aufgabe zu aufwändig.

Wie gesagt, ich bin mit der aktuellen Lösung zufrieden, wenn Martin mal der Ehrgeiz packt, kann er uns allen natürlich gerne die Feude machen, und das Script anpassen.

Viele Grüße
snenk

Sprach-Wechsel

MCMessagemaetens3D
Beiträge gesamt: 184

14. Jan 2014, 09:05
Bewertung:

gelesen: 11836

Beitrag als Lesezeichen
Lieber Martin

Du hattest in diesem Topic ganz zu Beginn ein Script reingeschrieben, welches ich anwenden möchte. Nun funktioniert das nicht. Ich vermute, weil ich mit CS6 arbeite (Dein Beitrag ist aus dem Jahr 2005) oder weil ich etwas falsch mache.

Wenn ich deine Zeilen in den Editor kopiere, meint er, für Zeile 1, dass "undefinied ist kein Objekt".

Ich danke für eure Hilfe!
Matthias


Code
myDoc=app.documents[0];  
myLanguage="French";
myStyles=myDoc.paragraphStyles;
for (oneStyle=1;oneStyle<myStyles.length;oneStyle++){
myStyles[oneStyle].appliedLanguage=myLanguage;
}


(Dieser Beitrag wurde von MCMessagemaetens3D am 14. Jan 2014, 09:23 geändert)

Sprach-Wechsel

Martin Fischer
  
Beiträge gesamt: 12783

14. Jan 2014, 09:34
Bewertung:

gelesen: 11821

Beitrag als Lesezeichen
Hallo Matthias,

hast Du ein Dokument geöffnet?

Ich empfehle Dir alternativ das Skript SpracheWechseln von Hans Haesler.
Suche danach in http://www.fachhefte.ch/...up=18&groupIDX=3.

Viele Grüße
Martin


Sprach-Wechsel

Uwe Laubender
Beiträge gesamt: 5319

14. Jan 2014, 10:04
Bewertung:

gelesen: 11800

Beitrag als Lesezeichen
Hallo, Matthias!

Ergänzend zu dem was Martin bereits gesagt hat:

Hast Du Dein ESTK (Extendscript Toolkit) auch korrekt mit InDesign als Ziel verbunden?

Siehe Screenshot-Beispiele (hier mit InDesign CS5.5) ohne und mit korrekter Anbindung.
*****
Mit herzlichem Gruß,
Uwe Laubender

Anhang:
ESTK-NICHT-KORREKTE-Anbindung-1.png (9.96 KB)   ESTK-NICHT-KORREKTE-Anbindung-2.png (9.95 KB)   ESTK-KorrekteAnbindungAnInDesign.png (11.5 KB)

Sprach-Wechsel

MCMessagemaetens3D
Beiträge gesamt: 184

14. Jan 2014, 10:19
Bewertung:

gelesen: 11788

Beitrag als Lesezeichen
Lieber Martin
Danke für den Hinweis auf das Script.

Lieber Uwe
Ja, das habe ich.

Resultat: Das ist der Hammer! Ihr habt mir gerade mindestens 2 Stunden Arbeit eingespart. Danke!

Sprach-Wechsel

Waldgeist
Beiträge gesamt: 3

13. Jul 2018, 14:11
Bewertung:

gelesen: 8916

Beitrag als Lesezeichen
hallo Martin,

zum Script LanguageByLayer.js

bekomme ich einen Object is invalid Fehler in der Zeile
myLayerName = myStories[oneStory].textFrames[0].itemLayer.name;

Was kann das sein? Sonst habe ich das Script 1zu1 so übernommen, die Textebenen korrekt benannt und es läuft nicht.

Hat jemand da eine Idee?

Lieben Dank

Sprach-Wechsel

Uwe Laubender
Beiträge gesamt: 5319

13. Jul 2018, 15:04
Bewertung:

gelesen: 6694

Beitrag als Lesezeichen
Hallo Waldgeist,
ich nehme an, dass Martins Script von 2005 für InDesign CS2 geschrieben war.
Mittlerweile hat sich aber im Document Object Model gewaltig was verändert.

Ich kann nur vermuten, dass damals der erste Textrahmen einer Story story.textFrames[0] war. Dem ist seit CS3 nicht mehr so. Ab CS3 ist das story.textContainers[0].

story.textFrames[0] ist seit CS3 der erste verankerte Textrahmen einer Story.

Also probier's mal mit:

Code
myLayerName = myStories[oneStory].textContainers[0].itemLayer.name; 


Wobei ich sagen muss, dass jedes einzelne Objekt im textContainers-Array auf unterschiedlichen Ebenen liegen könnte.
*****
Mit herzlichem Gruß,
Uwe Laubender

Sprach-Wechsel

Waldgeist
Beiträge gesamt: 3

13. Jul 2018, 15:36
Bewertung:

gelesen: 6685

Beitrag als Lesezeichen
Hallo Herr Laubender,

danke, fange jetzt erst mit Skripten an... das klappt bestens.

nun suche ich noch einen Weg die Tabellen mit einzubinden... ich habe noch ein wenig Schwierigkeiten das Pferd von hinten aufzuzäumen und die richtige Benennungskette zu finden. ich hoffe, die Übung wirds bringen. :-)

LG