[Rails 3.1][ExtJS] Asset Pipeline i dołączenie plików językowych

Witam szanowne grono,

Mam zagadkę. Jak w Rails 3.1 zintegrować z bibliotekami javascriptowymi ExtJS, gdzie mamy główną bibliotekę:

ext-all.js

oraz pliki językowe:

ext-lang-pl.js
ext-lang-en.js

gdzie w zależności od ustawionej lokalizacji dołączam jeden z tych plików, którzy nadpisuje co trzeba w głównej bibliotece.

Jak to zintegrować? Nie mogę tego wkleić do pliku manifestu application.js:

//= require ext-all
//= require ext-lang-pl
//= require ext-lang-en

gdyż angielska wersja zastąpi zmiany wprowadzone przez polską wersję…

Ma ktoś z Was może w miarę optymalne rozwiązanie tego problemu? Będę bardzo wdzięczny…

Dodaj w widoku odpowiedzialnym za nagłówek html (head) warunek, dokładający odpowiedni plik javascript w zależności od wersji językowej. W application.js zostaw tylko:

//= require ext-all

Poniżej przykład, który ja stosuję - inny, ale w zasadzie chodzi o to samo.

<%= stylesheet_link_tag "application" %> <%= javascript_include_tag "application" %> <%= javascript_include_tag params[:controller] %>
Wynik po rake assets:precompile na produkcji:

[code]

[/code]

Dziękuję, to dobra idea… Mam jednak problem… Podczas prekompilowania:

bundle exec rake assets:precompile

Nie kompiluje mi zasobów z:

vendor/assets/javascripts/

Jak się z tym uporać?

Ja bym zrobił to tak:

w layoucie aplikacji:

!!! %html{lang: I18n.locale}

window.currentLocale = function() { return $('html').attr('lang'); }
w pliku językowym ext-lang-pl.js:

if (currentLocale() === 'pl') { // kod pliku }
Wszystkie pliki js wrzucałbym do application.js, dzięki temu cały kod javascriptowy aplikacji będzie w miejscu.

sevos, znakomite, proste rozwiązanie! jestem pod wrażeniem!!! :slight_smile:

Lekki OT: Moim zdaniem najlepiej jest includować jeden plik JS per aplikację, ale np. w aplikacji, gdzie jest wersja na przeglądarki zwykłe i mobilne, miałbym dwa pliki:

  • application.js
  • mobile/application.js