[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Dt. Sprachen über ihre Namen adressieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Dt. Sprachen über ihre Namen adressieren

Martin Fischer
  
Beiträge gesamt: 12783

1. Mär 2014, 10:16
Beitrag # 1 von 27
Bewertung:
(7996 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebe Kollegen,

im Moment habe ich Probleme, die deutschen Sprachen, welche die app zur Verfügung stellt, über ihre Namen anzusprechen. 
Auch die englischsprachige Notation und die lokalisierungs-unabhängige Variante wollen nicht funktionieren.
Bei anderen Sprachen ist es mir gelungen, sie über die englische Notation (nicht aber über die lokalisierungs-unabhängige '$ID/...') zu adressieren.

Code
$.writeln( app.languagesWithVendors.everyItem().name.join('\n')); 

var lan_arr = ['Deutsch: 2006 Rechtschreibreform', 'German: 2006 Reform', '$ID/de_DE_2006', 'Englisch: Großbritannien', 'English: UK', '$ID/English: UK', 'French']
for (var i = 0; i < lan_arr.length; i++)
$.writeln( lan_arr[i] + ':\t' + app.languagesWithVendors.itemByName(lan_arr[i]).isValid);


Kann mir jemand sagen, wie ich 'Deutsch: 2006 Rechtschreibreform' als app.languagesWithVendors-Objekt korrekt adressieren kann?
X

Dt. Sprachen über ihre Namen adressieren

Uwe Laubender
Beiträge gesamt: 5316

1. Mär 2014, 10:22
Beitrag # 2 von 27
Beitrag ID: #524294
Bewertung:
(7931 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!

Ich schätze mal über deren ID.
Einen Hinweis hier:

Pierre Lef
Changing language preferences (dictionary) in all the documents in an Incopy assignement?
02.01.2014 06:39

Beitrag #3
Jump_Over (Jarek)
http://forums.adobe.com/message/5976161#5976161


als Antwort auf: [#524293]

Dt. Sprachen über ihre Namen adressieren

Martin Fischer
  
Beiträge gesamt: 12783

1. Mär 2014, 10:33
Beitrag # 3 von 27
Beitrag ID: #524296
Bewertung:
(7925 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

das könnte tatsächlich eine Lösung für meine Zwecke sein.
Aber ist die ID denn immer zuverlässig?
Angenommen der Entwickler und der Kunde haben unterschiedliche Sprachmodule zur Verfügung (z.B. zusätzlich für 'Deutsch: Österreich', wie im Duden-Plugin oder 'Lateinisch' als zusätzliches Modul).
Hat dann auf ENGLISH in beiden Umgebungen garantiert dieselbe ID oder können die IDs bei unterschiedlicher Sprachen-Zahl unterschiedlich sein?

Ich hatte gehofft, durch die Adressierung über die Namen (englisch oder locale-independent) mich diesem Risiko nicht aussetzen zu müssen.

Weshalb sind gerade die dt. Sprachen gegenüber der Adressierung über den Namen so sperrig?
Liegt es eventuell daran, dass bei mir ein anderer Sprachanbieter (InDihyph/InDitect) installiert ist?

Hab's auch mit InDesign CS4 ME unter Windows getestet.
Auch dort lassen sich die nicht-deutschen Sprachen über ihre englische Namen adressieren. Die deutschen Sprachen bleiben außen vor. :-(


als Antwort auf: [#524294]

Dt. Sprachen über ihre Namen adressieren

Uwe Laubender
Beiträge gesamt: 5316

1. Mär 2014, 10:45
Beitrag # 4 von 27
Beitrag ID: #524299
Bewertung:
(7913 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!

Ja, das wäre eine Untersuchung wert…
Die ID-Nummern könnten da flexibel sein.

Für eine Standardinstallation von InDesign liegt der Nummern-Bereich für die Sprachen jedenfalls in den ersten Zahlen von 2 bis schätzungsweise 100.

Die 1 ist immer dem geöffneten InDesign-Dokument zugeordnet.
Das läuft dann über die pageItems-Klasse:

Code
app.documents[0].pageItems.itemByID(1).getElements(); 


Ob auch negative Zahlen als Wert von ID vorkommen können?
Könnte ich mir vorstellen. Das ist mir jedenfalls bei den menuActions nach ID aufgefallen…


als Antwort auf: [#524296]

Dt. Sprachen über ihre Namen adressieren

Martin Fischer
  
Beiträge gesamt: 12783

1. Mär 2014, 10:59
Beitrag # 5 von 27
Beitrag ID: #524301
Bewertung:
(7889 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Uwe,

hast Du denn auch eine einleuchtende Erklärung, warum ausgerechnet bei den dt. Sprachen (vielleicht sogar nur bei diesen) die Adressierung über die Namen nicht funktioniert?

Oder funktioniert das bei Dir/anderen und nur bei mir nicht, wie da ein Plugin-Anbieter dazwischenfunkt?


als Antwort auf: [#524299]

Dt. Sprachen über ihre Namen adressieren

Martin Fischer
  
Beiträge gesamt: 12783

1. Mär 2014, 11:32
Beitrag # 6 von 27
Beitrag ID: #524304
Bewertung:
(7849 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

mit einer Behelfsfunktion funktioniert's über die id.

Code
var lan_id = get_lanID('Deutsch: 2006 Rechtschreibreform'); 
var lan = app.languagesWithVendors.itemByID( lan_id );
$.writeln( lan.isValid);

function get_lanID(str)
{
var id = null;
for (var i = 0; i < app.languagesWithVendors.length; i++)
if (app.languagesWithVendors.item(i).name == str)
{
id = app.languagesWithVendors.item(i).id;
break;
}
return id;
}


Danke nochmals für den Hinweis mit der id.


als Antwort auf: [#524301]
(Dieser Beitrag wurde von Martin Fischer am 1. Mär 2014, 11:35 geändert)

Dt. Sprachen über ihre Namen adressieren

Uwe Laubender
Beiträge gesamt: 5316

1. Mär 2014, 11:51
Beitrag # 7 von 27
Beitrag ID: #524305
Bewertung:
(7843 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
/EDIT: AH. Sehe gerade, Du bist bereits fündig geworden…

Hallo, Martin!

Nö. Ne Erkärung habe ich (noch) nicht…

Aber Du kannst ja mal Folgende Abfrage auswerten. Vielleicht findet sich was Brauchbares.

Code
var newDoc = app.documents.add(); 
var limit = newDoc.rectangles.add().id;

for(var n=1;n<limit;n++){
try{

var myObject = newDoc.pageItems.itemByID(n);

for(x in myObject){
$.writeln(x+"\t"+myObject[x]);
};

$.writeln("*********");


}catch(e){};
};


Bei einer ersten Durchsicht bin ich u.a. auf die Property icuLocaleName gestoßen.

Außerdem gäbe es daneben auch noch (Liste unvollständig):

Code
name 
hyphenationVendor
spellingVendor
isValid
index


Für folgendes Snippet das Resultat für mein deutsches InDesign CS5.5 unten am Code angehängt (ist ne lange Liste). Zusammen mit den IDs der pageItems-Klasse.

Die IDs 101-103 beinhalten die drei deutschen Sprachvarianten.

Code
//Deutsches InDesign CS5.5 
//OSX 10.6.8
//Proximity

var newDoc = app.documents.add();
var limit = newDoc.rectangles.add().id;

for(var n=1;n<limit;n++){
try{
$.writeln(n+"\t"+newDoc.pageItems.itemByID(n).icuLocaleName);
}catch(e){};
};

/*
RESULTS:

69 en_US_POSIX
70 en_US
71 en_US
72 en_US
73 fr_FR
74 es_ES
75 it_IT
76 en_GB
77 sv_SE
78 da_DK
79 nb_NO
80 pt_PT
81 pt_BR
82 fr_CA
83 nn_NO
84 fi_FI
85 ca_ES
86 ru_RU
87 bg_BG
88 cs_CZ
89 pl_PL
90 ro_RO
91 el_GR
92 tr_TR
93 hu_HU
94 en_CA
95 sk_SK
96 hr_HR
97 et_EE
98 lv_LV
99 lt_LT
100 sl_SI
101 de_DE
102 de_DE
103 de_DE
104 nl_NL
105 nl_NL
106 de_CH
107 de_CH
108 pt_BR
109 uk_UA

*/



als Antwort auf: [#524301]
(Dieser Beitrag wurde von Uwe Laubender am 1. Mär 2014, 11:53 geändert)

Dt. Sprachen über ihre Namen adressieren

WernerPerplies
Beiträge gesamt: 2762

1. Mär 2014, 15:04
Beitrag # 8 von 27
Beitrag ID: #524307
Bewertung:
(7778 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer,

Zitat Aber ist die ID denn immer zuverlässig?


Ich habe jetzt hier nur ein wenig mitgelesen und nichts selbst überprüft, aber ich finde, die Doku ist doch ganz eindeutig:

Zitat The unique ID of the LanguageWithVendors.


Für mich bedeutet das, das die ID eindeutig ist, und anders, als die ID sonst in InDesign, unveränderlich ist.

Anders ausgedrückt, es ist m. E. möglich, und vermutlich auch wahrscheinlich, dass Namen nicht eindeutig sind, aber jede ID in diesem Fall in irgendeiner Formm bei Adobe registriert werden muss und nur einmal vergeben wird.


als Antwort auf: [#524296]

Dt. Sprachen über ihre Namen adressieren

Martin Fischer
  
Beiträge gesamt: 12783

1. Mär 2014, 16:16
Beitrag # 9 von 27
Beitrag ID: #524308
Bewertung:
(7749 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Perplies,

es ist die Frage, auf was sich der Begriff "unique" bezieht.
Auf alle ID-Installationen und -Versionen weltweit?
Oder auf die aktuell, lokal ausgeführte Version.

Spontan vermute ich, dass sich zumindest meine IDs von denjenigen von Uwe unterscheiden.

Code
var lan = app.languagesWithVendors; 
for (var i = 0; i < lan.length; i++)
$.writeln( lan[i].id + ':\t' + lan[i].name);


Ergebnis:
Code
58:	[Keine Sprache] 
59: Deutsch: Alte Rechtschreibung
60: Deutsch: 1996 Rechtschreibreform
61: Deutsch: 2006 Rechtschreibreform
62: Deutsch: Schweiz
63: Deutsch: Schweiz 2006 Rechtschreibreform
64: Lateinisch
65: Bengalisch (Indien)
66: Gujarati (Indien)
67: Hindi (Indien)
68: Kannada (Indien)
69: Malayalam (Indie)
70: Marathi (Indien)
71: Oriya (Indie)
72: Pandschabisch (Indien)
73: Tamilisch (Indien)
74: Telugu (Indien)
75: Bulgarisch
76: Katalanisch
77: Tschechisch
78: Dänisch
79: Griechisch
80: Englisch: Kanada
81: Englisch: Großbritannien
82: Englisch: USA
83: Englisch: USA Medizin
84: Spanisch
85: Estnisch
86: Finnisch
87: Französisch: Kanada
88: Französisch
89: Kroatisch
90: Ungarisch
91: Italienisch
92: Litauisch
93: Lettisch
94: Norwegisch: Bokmål
95: Niederländisch: Alte Rechtschreibung
96: Niederländisch: 2005 Rechtschreibreform
97: Norwegisch: Nynorsk
98: Polnisch
99: Portugiesisch: Brasilien
100: Portugiesisch: Rechtschreibreform
101: Portugiesisch
102: Rumänisch
103: Russisch
104: Slowakisch
105: Slowenisch
106: Schwedisch
107: Türkisch
108: Ukrainisch
109: Englisch: USA Recht
110: Hebräisch
111: Arabisch
579: Deutsch: Österreich
698: Farsi


Freilich arbeiten wir mit unterschiedlichen InDesign-Versionen. ;-)
Wer wagt den Vergleich mit seinen InDesign CS6-Sprachen gegen die meinigen?


----
edit: Gerade sehe ich, Uwe interessiert sich mehr für die IDs von PageItems als für die von Sprachen. Aber wie kommt er von den PageItems auf die icuLocaleNames?
Ist da beim Kopieren was durcheinandergeraten?


als Antwort auf: [#524307]
(Dieser Beitrag wurde von Martin Fischer am 1. Mär 2014, 16:19 geändert)

Dt. Sprachen über ihre Namen adressieren

Martin Fischer
  
Beiträge gesamt: 12783

1. Mär 2014, 16:33
Beitrag # 10 von 27
Beitrag ID: #524309
Bewertung:
(7739 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
InDesign CS4 (Mac):
Code
58:	[Keine Sprache] 
59: Deutsch: Alte Rechtschreibung
60: Deutsch: Rechtschreibreform 1996
61: Deutsch: Rechtschreibreform 2006
62: Deutsch: Schweiz
63: Deutsch: Schweiz Rechtschreibreform 2006
64: Lateinisch
65: Deutsch: Österreich
66: Englisch: USA
67: Englisch: USA Medizin
68: Englisch: USA Recht
69: Französisch
70: Spanisch
71: Italienisch
72: Englisch: Großbritannien
73: Schwedisch
74: Dänisch
75: Norwegisch: Bokmål
76: Portugiesisch
77: Portugiesisch: Brasilien
78: Französisch: Kanada
79: Norwegisch: Nynorsk
80: Finnisch
81: Katalanisch
82: Russisch
83: Bulgarisch
84: Tschechisch
85: Polnisch
86: Rumänisch
87: Griechisch
88: Türkisch
89: Ungarisch
90: Englisch: Kanada
91: Slowakisch
92: Kroatisch
93: Estnisch
94: Lettisch
95: Litauisch
96: Slowenisch
97: Niederländisch: Alte Rechtschreibung
98: Niederländisch: Rechtschreibreform 2005
99: Ukrainisch
100: Hebräisch
101: Arabisch
Execution finished.


InDesign CS4 (Win):
Code
58:	[No Language] 
59: English: USA
60: English: USA Medical
61: English: USA Legal
62: French
63: Spanish
64: Italian
65: English: UK
66: Swedish
67: Danish
68: Norwegian: Bokmål
69: Portuguese
70: Portuguese: Brazilian
71: French: Canadian
72: Norwegian: Nynorsk
73: Finnish
74: Catalan
75: Russian
76: Bulgarian
77: Czech
78: Polish
79: Romanian
80: Greek
81: Turkish
82: Hungarian
83: English: Canadian
84: Slovak
85: Croatian
86: Estonian
87: Hebrew
88: Latvian
89: Lithuanian
90: Slovenian
91: German: Old Rules
92: German: 1996 Reform
93: German: 2006 Reform
94: Dutch: Old Rules
95: Dutch: 2005 Reform
96: German: Swiss
97: German: Swiss 2006 Reform
98: Ukrainian
99: Arabic
100: Farsi


Das schafft bei mir nicht die nötige Vertrauensgrundlage, dass die IDs der Sprachen bei meinem Nachbarn mit denjenigen von meinem Arbeitsplatz korrespondieren. ;-)

Aber sei's drum.
Wer interessiert sich jetzt noch für IDs, wo eine - zumindest für mich – bequemere Methode zur Adressierung der Sprache über den Namen gefunden ist.


als Antwort auf: [#524308]
(Dieser Beitrag wurde von Martin Fischer am 1. Mär 2014, 16:35 geändert)

Dt. Sprachen über ihre Namen adressieren

WernerPerplies
Beiträge gesamt: 2762

1. Mär 2014, 16:45
Beitrag # 11 von 27
Beitrag ID: #524310
Bewertung:
(7734 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer,

Zitat es ist die Frage, auf was sich der Begriff "unique" bezieht.
Auf alle ID-Installationen und -Versionen weltweit?
Oder auf die aktuell, lokal ausgeführte Version.


Meine Vermutung war falsch, uniqe ist für InDesign nicht eindeutig, meine IDs unterscheiden sich von Ihren, jetzt vermute ich, dass Sie vielleicht vom Hersteller der Module abhängig sind.


als Antwort auf: [#524308]

Dt. Sprachen über ihre Namen adressieren

WernerPerplies
Beiträge gesamt: 2762

1. Mär 2014, 17:11
Beitrag # 12 von 27
Beitrag ID: #524311
Bewertung:
(7703 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer,

was halten von dieser Funktion für den Zugriff?

Code
alert(getBy(app.languagesWithVendors, "name", "Deutsch: Schweiz 2006 Rechtschreibreform").name); 
function getBy(/*objectCollection*/oc, /*String*/property, /*Any*/what)
{
for (var i = 0; i<oc.length; i++)
{
if (property in oc[i])
{
if ((oc[i][property] != null) && (oc[i][property]==what))
return oc[i];
}
}
return null;
}


Diese Funktion sollte das jeweils erste übereinstimmende Objekt für eine beliebige Eigenschaft finden.


als Antwort auf: [#524309]

Dt. Sprachen über ihre Namen adressieren

Uwe Laubender
Beiträge gesamt: 5316

1. Mär 2014, 18:36
Beitrag # 13 von 27
Beitrag ID: #524312
Bewertung:
(7671 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Martin Fischer Aber wie kommt er von den PageItems auf die icuLocaleNames?
Ist da beim Kopieren was durcheinandergeraten?


Hallo, Martin!
Nein, da ist nichts durcheinandergeraten. Ich untersuchte eben die document.pageItems.itemByID(n) nach fortlaufenden Zahlen.

Und nicht die unter app.languageWithVendors. Das darf man nicht verwechseln. Das sind unterschiedliche Indices…

Ich habe dann einfach bei jeder Drehung der Hauptschleife eine for x in object-Schleife gedreht und mir im ESTK alle property/value-Paare geben lassen. Und dabei war dann eben auch unter vielen anderen icuLocalNames.


als Antwort auf: [#524308]

Dt. Sprachen über ihre Namen adressieren

Martin Fischer
  
Beiträge gesamt: 12783

1. Mär 2014, 19:01
Beitrag # 14 von 27
Beitrag ID: #524315
Bewertung:
(7663 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Perplies,

Antwort auf: was halten von dieser Funktion für den Zugriff?


Das sieht auch interessant aus.
Bin mobil unterwegs und dann's im Moment leider nicht testen.


als Antwort auf: [#524311]

Dt. Sprachen über ihre Namen adressieren

Uwe Laubender
Beiträge gesamt: 5316

1. Mär 2014, 19:04
Beitrag # 15 von 27
Beitrag ID: #524316
Bewertung:
(7660 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Werner Für mich bedeutet das, das die ID eindeutig ist, und anders, als die ID sonst in InDesign, unveränderlich ist.


Hallo, Werner!

Für mich bedeutet das "nur", dass die ID innerhalb einer bestimmten Klasse unique, also einzigartig ist. Also z.B. innerhalb aller IDs der Klasse pageItems.

Ein schöner Fall ist zum Beispiel die ID einer Tabellenzelle, die ausschließlich innerhalb einer bestimmten Tabelle einzigartig ist. Anderen Tabellenzellen aus anderen Tabellen können selbstverständlich die gleiche ID haben.


als Antwort auf: [#524307]
X