2009-10-29 25 views
7

Mam problem z implementacją niestandardowej kompilacji w domenach w Dojo. Sytuacja wygląda następująco: Mam dość dużych aplikacji, z dobrym liczby wiązek lokalizacyjnych, więc w zasadzie struktury katalogów jest jak
rdzenia \ (mój moduł)
nls \
fR \
pl \
....
Podczas budowania mojego modułu wynikiem jest duży plik core.js/core.xd.js, który, bien sur, nie zawiera lokalizacji. W lokalizacji katalogi nls (en/fr/etc) znajduję po kompilacji każdy pakiet zbudowany/minifikowany i większy plik dla każdego języka, core_fr.js/core_en.fs, który zawiera tylko łańcuchy związane z Dojo/Dijit.Niestandardowa kompilacja Dojo z NLS/lokalizacją

więc mój skrypt kompilacji jest

  layers: [ 
      { 
    resourceName: "core", 
      name: "../core/trusted.js", 
      dependencies: [ 
         "dojo.i18n", 
         //data 
         "dojox.data.JsonRestStore", 
         "dojox.data.XmlStore", 
         "dojox.rpc.Service", 
         "dojox.form.FileInput", 
         ... 
         "core.controller.Fusebox"       
], 
        prefixes: [ 
       ["dijit","../dijit"], 
      ["dojox","../dojox"], 
        ["core", "../core"] 
        ] 

W klasie core.controller.Fusebox próbuję załadować 1 NLS

dojo["requireLocalization"]("core", "FuseboxContent"); 

tutaj umrze, jednak z

availableFlatLocales is undefined 
[Break on this error] var locales = availableFlatLocales.split(",");\r\n 

Moja konfiguracja w pliku html to:

// version build 
    var djConfig = { 
    baseUrl: 'https://..../', 
    modulePaths: { 'core': 'core'}, 
    useXDomain: true, 
    xdWaitSeconds: 10, 
    parseOnLoad: true, 
    afterOnLoad: true, 
// debugAtAllCosts: true, 
    isDebug: true, 
    locale: "fr" 
    }; 

a następnie

<script type="text/javascript" src="http://xd.woopic.com/dojoroot/1.3.2-xd/dojo/dojo.xd.js.uncompressed.js"></script> 
<script type="text/javascript" src="https://..../core/trusted.js.uncompressed.js"></script> 

użyłem nieskompresowane do debugowania, oczywiście. Problem polega na tym, że w czasie wykonywania Dojo próbuje załadować moje pakiety i nie może ich znaleźć, a ja chciałbym je osadzić w pliku warstwy, więc żadne dodatkowe obciążenia nie będą wymagane. Czy można to osiągnąć? A skoro już to robimy, czy istnieją jakieś działające witryny/przykłady z lokalizacjami między domenami? AKTUALIZACJA: kontynuowałem analizę, a problem wydaje się polegać na tym, że dynamicznie ładuję nls, więc parser kompilacji nie może znaleźć wywołań requireLocalization(). Dlatego plik nls projektu zawiera tylko zawartość związaną z dojo/dijit. Jednak dodałem kilka pakietów ładunków w pliku fikcyjnym, a zawartość core/nls jest nadal ignorowana przez program budujący.

Dzięki za wszelkie informacje, jestem prawie na końcu moich wyszukiwań, nie ma zbyt wiele w Internecie na ten temat.

+0

Nie jestem ekspertem w kwestiach xd, ale byłem ciekawy, aby zobaczyć wpisy nls w modulePaths. Nie powinny być konieczne. Czy korzystasz z nich i czy ma to znaczenie, jeśli je wyeliminujesz? – peller

+0

Usunąłem je, bez zmian, lokalizacje nadal nie są załadowane. Myślę, że tam, gdzie są ze względu na starsze przyczyny ... ale miałeś rację są bezużyteczne. Odpowiednio zaktualizowałem wpis. – aciobanu

Odpowiedz

5

Podobny problem miałem kilka dni temu. Przede wszystkim można obejść błąd, ustawiając dostępne ustawienia regionalne jako 4 parametr wywołania requireLocalization.

np.

dojo.requireLocalization("core", "FuseboxContent", null, "en,fr"); 

chociaż nie powinieneś tego robić.

Czy próbowałeś włączyć lokalizację w następujący sposób?

dojo.requireLocalization("core", "FuseboxContent"); // and not dojo["require..."] 
+0

Cóż, robię to, ponieważ ładuję pliki nls, więc w ten sposób nie wchodzę w drogę budowniczego. Przypuszczam, że problem polega na tym, że budowniczy nie łączy pakietów w pliku [modulename] _fr.xd.js, gdzie łączy dojo/dijit localisations. Tak więc, w fazie xd, kiedy wykonuje wstępną lokalizację na końcu warstwy, moje lokalizacje nie są ładowane. Stworzyłem plik obojętny, który wymaga wszystkich lokalizacji, aby zobaczyć, czy w ten sposób "zobaczy" je i zbuduje, bezskutecznie. – aciobanu