Import von Modul-Package leider ohne Übersetzung (gelöst)

Gesperrt
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Import von Modul-Package leider ohne Übersetzung (gelöst)

Beitrag von OliverL » Do 13. Dez 2007, 17:19

Hallo Leute,

Gelöst und eingecheckt

verwende Con. 4.6.23 und bin begeistert von der Modul-Package-Funktion.
Die erleichtert einem so dermassen die Arbeit (wenn man 3 CMS im Monataufsetzt inkl. >10 Modulen).

Habe aber das folgende Scenario:
hab gerade nen Modul als Packege (ab 4.6.23) exportiert und in einen anderen Mandanten importiert. Dabei wurden aber die gesamten Übersetzungen nicht übernommen.

Meine Überlegung:
die beiden Mandanten haben unterschidliche Sprach-IDs
Mandant-ID 1: "deutsch" ID 1
Mandant-ID 2: "deutsch" ID 8
Ich weise zwar beim Package-Import bei der Sprache die neue Sprache zu aber Importiert er diese nicht.

ich habe mir auch schon die Datei "include.mod_package.php" & "class.module.php" angeschaut aber blicke da nicht ganz so durch.
Kann sich das mal einer anschauen der mehr davon versteht als wie ich?

Besten DANK für alles was mich weiter bring.
oli
Zuletzt geändert von OliverL am Fr 27. Jun 2008, 14:04, insgesamt 3-mal geändert.

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Do 13. Dez 2007, 17:33

Verschoben, muss man sich mal anschauen.
OliverL hat geschrieben:Da ich nicht in Bugs Posten kann dacht ich mir in meinem Jugendlichem leicht sinn ich poste das mal hier.
Zitat aus der Beschreibung zu Bugs 4.6.x:
Bugs in der Version 4.6. Read-Only, bitte Probleme zuerst in Misc 4.6.x schildern.

OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL » Mo 5. Mai 2008, 22:04

So keine Ahnung ob das in 4.8.x behoben ist aber ich habe mir das mal angeschaut. Dabei ist mir aufgefallen das die Zuordnung der Sprachen sehr suspekt realisiert wurde.

Ausschnitt aus der Sprach-Seleceterbox:
<select name="selAssignTrans[deutsch]">
<option value="0">- Auswählen -</option>
<option value="1">deutsch</option>
...
</select>

- Selectbox-Name ist der Sprach-Name (besser Original-Sprach-ID)
- Value ist ein Array-Key (Aktuelle-Sprach-ID)
- Option-Name ist der Sprach-Name (OK)
> In Klammern was besser wäre

Alles sehr schwammig!

Hier kommt es bei mir zu dem Problem das Übersetzungen verwinden.
Ich vermute das es daranliegt das ich 2 Clients mit dem Sprachnamen 'deutsch' habe und die Übersetzung in den Client-1 eingetragen wird und nicht in Client-2.

Info:
1. Ich würde auch die Zuweisung umkehren.
So kann ich wenn ich eine Website in Sprachbereiche aufteile z.B.: GB, US habe, beiden könnte ich so die Übersetzung 'englisch' zuweisen.

2. Bei beiden Sprachnamen würde ich die Sprach-ID anhängen.

mfg
Oli
Zuletzt geändert von OliverL am Fr 10. Okt 2008, 21:27, insgesamt 1-mal geändert.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Fr 9. Mai 2008, 17:46

Werde mir den Bereich nochmal ansehen. Grundsätzlich ist es aber weniger suspekt, wenn man daran denkt, dass auf einem beliebigen, anderen System die Sprachen nicht die gleiche ID haben oder überhaupt existieren müssen.

Daher wird auch der im Package enthaltene Sprach-Name als SelectBox-Name verwendet. Auch die Original-ID kann nicht verwendet werden (wozu auch). Dass der option box ein array-key statt der eigentlichen Sprach-ID ist, gucke ich mir an.
Alles sehr schwammig!
Ich fühle mit Dir...
So kann ich wenn ich eine Website in Sprachbereiche aufteile z.B.: GB, US habe, beiden könnte ich so die Übersetzung 'englisch' zuweisen.
Habe ich nicht verstanden.
Bei beiden Sprachnamen würde ich die Sprach-ID anhängen
Wozu? Nö.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL » Sa 10. Mai 2008, 01:14

Moin Moin HerrB,

erstmal Danke das du dir das anschaust. Ich hab es versucht aber blickte irgendwann nicht mehr ganz durch (nen bischen zuviel für meinen Kopf).

Mal gucken ob ich mein Problem (die schwierigkeit die ich sehe) einbischen genauer beschreiben kann.


Prinzipell wäre es erledigt wenn die Array-Keys durch die Sprach-IDs in den Selecter-Boxen ersetzt werden.

File: classes/contenido/class.module.php
Zeile: 672

Code: Alles auswählen

$oTranslations->create($iID, $aOptions["translations"][$sPackageLang], $sOriginal, $sTranslation);
Wenn in $aOptions["translations"][$sPackageLang] momentan anstelle der Sprach-ID der Array-Key drin ist (wovon ich ausgehe) funktioniert das nur bei einem Mandanten aber beim zweiten solle es schon schwer werden :).


--- Teil 1 ----
Mit schwammig meine ich das momentane die folgende Zuordnung beim Imprt gemacht wird:
Kann mich aber auch irren

Ist:
XML-Sprache-ID "1" --> CMS-Sprach-Name "deutsch"
XML-Sprache-ID "2" --> CMS-Sprach-Name "englisch"

Besser:
XML-Sprache-ID "1" --> CMS-ID-Name "3" (wäre: deutsch)
XML-Sprache-ID "2" --> CMS-ID-Name "4" (wäre: englisch)

Sollte der unwarscheinliche fall auftretten das ich in einem Mandanten zwei sprachen mit "deutsch" angebe. Ist natürlich Idiotisch aber könnte sein :)

Sollte die Datei geändert werden sollte man bei der Zeile: 303 noch die übergebene ModID ändern:
jetzt wird: ... $this->export($this->get("idmod").".xml", true) ...
solte aber: ... $this->export($this->get("idmod"), true) ...


--- Teil 2 ----
Habe ich nicht verstanden.
Bei langen Posts komme ich manch mal durcheinander (siehe Uhrzeit des jetzigen Post) 8). Also Versuch 2.

Nehm ich noch mal das Beispiel von Oben aber mit zwei englischen Sprachen US und UK.
(Weil ich im Content alle technischen Daten in UK in "cm" hab und in US in "inch")
In beiden Sprachen könnte ich die englischen XML-Übersetzungen nutzen.
(Natürlich ist mir klar das mit mi18n() ein englischer Text übersetzt werden soll aber mir geht es um ein logische Beispiel)

IST:
XML-Sprache-ID "3" (englisch) --> CMS-ID-Name "1" (wäre: US)
[ nix ] ------------------------------> CMS-ID-Name "2" (wäre: UK)

ANDERSRUM:
CMS-ID-Name "1" (wäre: US) --> XML-Sprache-ID "3" (englisch)
CMS-ID-Name "2" (wäre: UK) --> XML-Sprache-ID "3" (englisch)

(Beispiel unter: http://www.argelith.de)


--- Teil 3 ----
Bei beiden Sprachnamen würde ich die Sprach-ID anhängen
Naja, bei der XML-Sprache find ich es jetzt auch unsinnig :).
Bei der CMS-Sprache fänd ich es gut, denn wenn ich in Contenido nach oben-rechts zu Sprach umschaltung schaue wird dort für die eindeutigen Identifizierung auch die ID angehängt. Mir solls egal sein mir ist nur der Punkt 1 sehr wichtig.



@@HerrB: Der Post sollte kein gequengel sein nur eine (Bug-)Info sein.
Jeder der Professionel Websites umsetzt ist auf die Knie gefallen und hat dich schon beim HTML-Newsletter huldigen, dann noch die Mod-Packete, FAQs und Forum. So mehr sag ich jetzt nicht sonst wird es noch gegen mich verwendet.


mfg
Oli





TIPP ALLE ENTWICKLER:
1. Module können automatisch mit dem speichern exortiert werden.
Unter: Administration > System > Systemeinstellungen
Einstellungen: Typ = "modules" - Name ="storeasfiles" - Wert = "true"
Speicherort: root:\Contenido\Modules\ClientID\ModulID.xml

@Herrb: Richtig geil wäre das für die Packete :)


2. Laden aus dem Order get mit:
Einstellungen: Typ = "modules" - Name ="loadfromfiles" - Wert = "true"
(sehe selber wenig sinn den die ModulID muss gleich dem Datei-Namen sein und die XML-Datei kann man so leider nicht editieren)
Zuletzt geändert von OliverL am Fr 10. Okt 2008, 21:24, insgesamt 1-mal geändert.

OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL » Di 27. Mai 2008, 22:59

OK, ich hab jetzt gerade nen bischen Zeit gehabt und habe an meinem Modul-Edit-Howto bebastelt.

Dabei habe ich mir die Autofill-Metode für die Selecter-Box in class.HTMLElements.php angeschaut.
Dabei ist mir glaubeich die Lösung formlich in die Hände gefallen.

array_meng:
Prinzipiell würde das ganze auch ohne die neu strukturierung des Array für "autoFill" funktionieren.
ABER das array_meng Zeile:245 (ich muste es auch erst nach schauen) sortiert das Array neu.
www.php.net hat geschrieben:Falls nur ein Array angegeben und dieses numerisch indiziert ist, wird das Array fortlaufend neu nummeriert.
Danach ist es egal ob vorher in Zeile: 72 die Sprach IDs als Key übergeben werden.

cHTMLSelectElement->autoFill(): Zeile: 1157-1165
Die Werte können in 2 Versionen übergeben werden:
Beispiel 1: (Key ist gleich Value)

Code: Alles auswählen

$array[] = "Titel1";
$array[] = "Titel2";
$array[] = "Titel3";
Beispiel 2: (definition der Values)

Code: Alles auswählen

$array[] = array("Value1", "Titel1");
$array[] = array("Value2", "Titel2");
$array[] = array("Value3", "Titel3");
Bei Beispiel 2 ist es egal was array_meng meng mach und die Classe kann es verarbeiten.
Mach doch was du willst aber mach es Junge!

Lösung:
Hier für müssen diverse Zeilen angepasst werden:
Zeile - Code:
72 - $aFiles[] = array($iID, strtolower($oLang->get("name")).' ('.$iID.')' );
245 - $oSelLang->autoFill(array_merge(array(array(0 , $sMsg["- Select -"])), $aDataFiles)); // ja ist so
142 ----------------------------------------------------
if (is_array($sFile))
{
if (in_array($sFile[0], $aSelected))
{
$oOption = new cHTMLOptionElement(htmlspecialchars($sFile[1]), $sFile[0], true);
} else {
$oOption = new cHTMLOptionElement(htmlspecialchars($sFile[1]), $sFile[0]);
}
} else {

if (in_array($sID, $aSelected))
{
$oOption = new cHTMLOptionElement(htmlspecialchars($sFile), $sID, true);
} else {
$oOption = new cHTMLOptionElement(htmlspecialchars($sFile), $sID);
}
}
---------------------------------------------------------


Hab es Final im Test-System geprüfen.
Und es funktionieren!


P.S.: So funktioniert es, aber ich werde noch mal mir das ganze anschauen und die oben genanten "Verbesserungen" vornehmen. Dann gibst auch ein Vollständiges File.

+ Das "Alles sehr schwammig!" muss ich zurück nehmen. Es ist/war ja mit eindeutigen Sprach IDs.
Zuletzt geändert von OliverL am Mo 2. Jun 2008, 06:30, insgesamt 2-mal geändert.

OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL » Mo 2. Jun 2008, 06:15

Viele sagen jetzt sicher Pfennig-fuckser aber viele kleine Sachen ergeben was grosses.

mir ist aufgefallen das beim Package Import die (ich nenne sie mal) Aktions-Tabellen folgende Titel haben z.B. Template:

Code: Alles auswählen

Status ; Name ; Aktion
tpl.html ; Konflikt; Überspringen ...
Müste der Titel nicht so aussehen?

Code: Alles auswählen

Name ; Status ; Aktion
tpl.html ; Konflikt; Überspringen ...
somit Name und Status tauschen?
Wenn ja dann in Zeile: 224+225 die lWerte in i18n() tauschen.

- - - - - - - - -

Für die eindeutige Zuordnung der BE-Srache sollte man in der Zeile: 72 noch die ID ergänzen. So ist es einheitlich (s. Sprachswitch im Frame: Header)

Code: Alles auswählen

$aFiles[$iID] = strtolower($oLang->get("name").' ('.$iID.')');

mfg OliverL

OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

@HerrB / 4fb: schonmal angeguckt?

Beitrag von OliverL » Fr 13. Jun 2008, 11:11

gelöst

(für 4.8.7 eingecheckt am 2008-06-27 15:00:00)

mfg OliverL

Gesperrt