Backbone Relational мега-тормозная.
Я описывал руками связи между вложенными коллекциями и глобальной. Каждая локальная коллекция заполняет себя из глобальной во время инициализации.
Если записей не много (меньше тысячи) можно просто грузить в коллекции, и доставать во время рендера то количество которое нужно собирая дерево налету.
Я приложение структурирую с помощью require.js, для него есть модуль с примерами requirejs.org/docs/api.html#i18n
Изменение локали — это глобальное событие (если только у вас не интерфейс словаря или чего-то где есть несколько частей на разных языках). Я бы и оставил его глобальным, а не таскал за собой модель. Кроме того тянуть все локали одновременно, это же много.
Все зависит от синхронности/асинхронности foo. Если она синхронна, то есть как описал megahertz будет alert(1). Если она асинхронна, то будет alert(0), так как alert выполнится раньше чем анонимная функция foo.
Удалять js со страницы мне кажется очень странным костылем.
Пересекающийся код решается замыканиями. Пересекающиеся селекторы решаются префиксами (либо принудительным unbind).
А вообще это очень странная проблема, растущая, скорее, из неправильной организации кода на клиенте.