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.
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
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