hilfdirselbst.ch
Facebook Twitter gamper-media
JuMayr S
Beiträge: 88
25. Aug 2013, 23:43
Beitrag #1 von 7
Bewertung:
(1275 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Sprachvariablen für mehrere Scripte in seperate Datei auslagern.


Hallo zusammen,

ich versuche im Moment sämtliche Sprachvariablen für meine Scripte in eine Datei "languagefile.jsx" auszulagern.

Der Inhalt sieht wie folgt aus:


Code
var msg = {en:"Please restart InDesign and Bridge.", de:"Bitte InDesign und Bridge neu starten", pt:"Por favor reinicie o InDesign e Bridge."}; 


In den jeweiligen Scripten nutze ich die
#include Funktion um die Datei einzubinden.

Code
#include "../../Languagefile.jsx"; 


Verwendet werden die Variablen dann z.B. so:
Code
alert(localize(msg)); 


Nun meine Frage:
Anstatt die gleiche Sprachdatei 20 mal mit #include einzubinden suche ich einen Weg dies nur einmal beim Start von InDesign zu tun um dann global auf die darin definierten Variablen zugreifen zu können.

Noch ein Hinweis: Die Scripte liegen teilweise als JSX und teilweise als JSXBIN vor. Der Weg sollte nach Möglichkeit mit beiden funktionieren.

Diese Bedingung hat auch dafür gesorgt, dass ich mit YALT2 verzweifelt bin und dann irgendwann aufgegeben habe.
InDesign bietet mit der localize Funktion ja eine nette Möglichkeit.
Top
 
X
WernerPerplies
Beiträge: 2177
26. Aug 2013, 07:42
Beitrag #2 von 7
Beitrag ID: #516651
Bewertung:
(1241 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Sprachvariablen für mehrere Scripte in seperate Datei auslagern.


Hallo JuMayr,
Zitat ...nur einmal beim Start von InDesign zu tun um dann global auf die darin definierten Variablen zugreifen zu können.


Das würde ich nicht so machen, denn wenn etwas beim Laden der Meldungen schief geht, fehlen Dir Meldungen.

Ich würde eine Standardsprache laden, die ich dann bei Bedarf mit den Meldungen in der gewünschten Sprache überladen würde.

Zitat Noch ein Hinweis: Die Scripte liegen teilweise als JSX und teilweise als JSXBIN vor. Der Weg sollte nach Möglichkeit mit beiden funktionieren.


Die in meinen folgenden Links skizzierte Lösung funktioniert natürlich für beide Versionen, obwohl ich mir die die JSX-Version bei komplexen Skripten komplett spare, weil die Zusamenstellung des Skriptes, die Kompilierung, die Einbindung in die Wrapper.jsx und das Packen der benötigten Dateien in eine Zip-Datei komplett automatisch erfolgt.

Meine Lösung und die dazu verwendeten Tools habe ich in diesen Links skizziert:
WpsIncludesInCludes
WpsGetKeyStrings
Meldungen für Adobe InDesign-Skripte in ein globales Objekt

Vielleicht kannst Du ja etwas als Anregung gebrauchen.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#516645] Top
 
JuMayr S
Beiträge: 88
26. Aug 2013, 14:20
Beitrag #3 von 7
Beitrag ID: #516676
Bewertung:
(1202 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Sprachvariablen für mehrere Scripte in seperate Datei auslagern.


Vielen Dank für die Links. Werde ich mir gleich mal durchlesen.

Eine Frage: Kann es sein, dass #includes beim kompilieren in eine .jsxbin-Datei automatisch "eingebunden" werden und nachträgliche Änderungen an der IncludeDatei nicht mehr berücksichtigt werden?

Ist im Moment nur eine Vermutung, werde ich aber zeitnah auch mal austesten.
als Antwort auf: [#516651] Top
 
WernerPerplies
Beiträge: 2177
26. Aug 2013, 14:25
Beitrag #4 von 7
Beitrag ID: #516677
Bewertung:
(1200 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Sprachvariablen für mehrere Scripte in seperate Datei auslagern.


Zitat Eine Frage: Kann es sein, dass #includes beim kompilieren in eine .jsxbin-Datei automatisch "eingebunden" werden und nachträgliche Änderungen an der IncludeDatei nicht mehr berücksichtigt werden?

Ja.
Ich habe es nie ausprobiert, aber ich vermute, dass auch nicht kompilierte Skripte nur einmal geladen werden, und nachträgliche Änderungen auch nicht berücksichtigt werden.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#516676] Top
 
JuMayr S
Beiträge: 88
26. Aug 2013, 21:18
Beitrag #5 von 7
Beitrag ID: #516693
Bewertung:
(1149 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Sprachvariablen für mehrere Scripte in seperate Datei auslagern.


Ich glaube, wir reden aneinander vorbei.

Folgender Versuch:

Compilertest_Language.jsx beinhaltet die Sprachvariable.

Für die Compilertest_1.jsxbin habe ich vor der Convertierung jeweils eine 1 an die Sprachvariable angehängt.

Danach habe ich aus der 1 eine 2 gemacht und habe die identische Compilertest2.jsxbin kompiliert.

Wenn ich nun in InDesign CC unter Win8 64Bit die Compilertest1.jsxbin ausführe, dann bekomme ich als Ergebniss die Sprachvariable mit der 1 zurück.

Wenn ich die Compilertest2.jsxbin ausführe, dann bekomme ich als Ergebniss die Sprachvariable mit der 2 zurück.
Jeweils unabhängig davon, was in der Sprachvariable gerade steht.

Wenn ich die jeweilige .jsx Version starte, dann wird mir der Inhalt der Sprachvariablen zum Zeitpunkt der Ausführung angezeigt.

Ist das bei euch auch so?
als Antwort auf: [#516677] Top

Anhang:
 
JuMayr S
Beiträge: 88
26. Aug 2013, 21:31
Beitrag #6 von 7
Beitrag ID: #516694
Bewertung:
(1142 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Sprachvariablen für mehrere Scripte in seperate Datei auslagern.


Kleines Update:

Wenn ich statt #include die Sprachdatei mit

app.doScript( File('/pfad/Compilertest_Language.jsx') );

einbinde, dann wird die Sprachvariable zur Laufzeit geladen.

Spricht irgendetwas gegen das app.doScript???
als Antwort auf: [#516693] Top
 
WernerPerplies
Beiträge: 2177
27. Aug 2013, 06:07
Beitrag #7 von 7
Beitrag ID: #516696
Bewertung:
(1101 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Sprachvariablen für mehrere Scripte in seperate Datei auslagern.


Zitat Spricht irgendetwas gegen das app.doScript???



Nein, ich denke nicht, außer, das es vielleicht ein gewissen Overhead für die Ausführung eines Skriptes gibt.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#516694] Top
 
X