Added site locales

This commit is contained in:
magnolia-fan
2011-06-30 09:12:52 +04:00
parent 124e9e481e
commit 13a233ac72
26 changed files with 406 additions and 112 deletions
+2 -2
View File
@@ -32,14 +32,14 @@ Ajax = (function() {
Ajax.prototype.loadSearchPage = function() {
$.get('/templates/search.html', function(data) {
_ajax.setArchor('/search/');
return _pages.renderSearch(data);
return _pages.renderSearch(_beathaven.localizeHTML($(data)));
});
return false;
};
Ajax.prototype.loadSettingsPage = function() {
$.get('/templates/settings.html', function(data) {
_ajax.setArchor('/settings/');
return _pages.renderSettings(data);
return _pages.renderSettings(_beathaven.localizeHTML($(data)));
});
return false;
};
+40 -7
View File
@@ -16,15 +16,18 @@ $(function() {
_beathaven = new BeatHaven();
_beathaven.init();
$(window).resize(function() {
return _beathaven.adjustSizes();
_beathaven.adjustSizes();
return false;
});
return window.setTimeout(function() {
return _beathaven.checkRedrawScrollbar();
_beathaven.checkRedrawScrollbar();
return false;
}, 500);
});
BeatHaven = (function() {
function BeatHaven() {}
BeatHaven.prototype.last_height = false;
BeatHaven.prototype.lang = 'ru';
BeatHaven.prototype.init = function() {
this.adjustSizes();
this.checkRedrawScrollbar();
@@ -35,7 +38,8 @@ BeatHaven = (function() {
_player.initJplayer();
_search = new Search();
_pages = new Pages();
return _settings = new Settings();
_settings = new Settings();
return false;
};
BeatHaven.prototype.adjustSizes = function() {
$('.data-container').height($(window).height() - $('.header-container').height());
@@ -43,7 +47,8 @@ BeatHaven = (function() {
$('.player-container').height($(window).height());
$('.playlist').height($(window).height() - $('.player').height() - $('.player-container .additional-controls').height());
$('.data-container').scrollbar();
return $('.playlist').scrollbar();
$('.playlist').scrollbar();
return false;
};
BeatHaven.prototype.checkRedrawScrollbar = function() {
var focused_id, outer_height;
@@ -60,13 +65,41 @@ BeatHaven = (function() {
document.getElementById(focused_id).focus();
focused_id = false;
}
return window.setTimeout(function() {
return _beathaven.checkRedrawScrollbar();
window.setTimeout(function() {
_beathaven.checkRedrawScrollbar();
return false;
}, 500);
return false;
};
BeatHaven.prototype.redrawScrollbar = function() {
$('.data-container').html($('.data-container').find('.inner').first());
return $('.data-container').scrollbar();
$('.data-container').scrollbar();
return false;
};
BeatHaven.prototype.localizeHTML = function(obj) {
if (obj == null) {
obj = $('body');
}
$(obj).find('[data-ls]').each(function() {
if ((_locale[$(this).attr('data-ls')] != null) && (_locale[$(this).attr('data-ls')][_beathaven.lang] != null)) {
if (this.nodeName === 'INPUT') {
return $(this).val(_locale[$(this).attr('data-ls')][_beathaven.lang]);
} else {
return $(this).text(_locale[$(this).attr('data-ls')][_beathaven.lang]);
}
}
});
return obj;
};
BeatHaven.prototype.ls = function(id, lang) {
if (lang == null) {
lang = _beathaven.lang;
}
if ((_locale[id] != null) && (_locale[id][lang] != null)) {
return _locale[id][lang];
} else {
return id;
}
};
return BeatHaven;
})();
+99
View File
@@ -0,0 +1,99 @@
var _locale;
_locale = {
SEARCH: {
en: "Search",
ru: "Поиск"
},
NEWS: {
en: "News",
ru: "Новости"
},
ABOUT: {
en: "About",
ru: "О проекте"
},
LOGIN: {
en: "Log in",
ru: "Войти"
},
LOGOUT: {
en: "Log out",
ru: "Выйти"
},
ADD_SOME_MUSIC: {
en: "Add some music to playlist",
ru: "Добавьте музыку в плей-лист"
},
LOGIN_PLEASE: {
en: "Don't forget to log in, please. It's simple.",
ru: "Авторизуйтесь, пожалуйста. Это действительно просто."
},
REPEAT: {
en: "Repeat",
ru: "Повторять"
},
SHUFFLE: {
en: "Shuffle",
ru: "Перемешать"
},
EMPTY_PLAYLIST: {
en: "Empty playlist",
ru: "Очистить"
},
HELLO: {
en: "Hi there",
ru: "Привет"
},
ARTIST_LOADING_FAILED: {
en: "Something very bad happened while we tried out to load some info about this artist. How about some other one?",
ru: "Что-то ужасное произошло пока мы собирали информацию об этом исполнителе. Может пока поищем другого?"
},
ARTIST_LOADING_IN_PROCESS: {
en: "Artist info is loading for the first time now. Usually it takes less than a minute, please wait a bit.",
ru: "Прямо сейчас мы собираем всю возможною информацию об этом исполнителе в первый раз. Обычно это занимает меньше минуты."
},
MISSPELLED: {
en: "Misspelled?",
ru: "Опечатались?"
},
SETTINGS_ACCOUNT: {
en: "Account",
ru: "Аккаунт"
},
SETTINGS_LASTFM: {
en: "Last.fm",
ru: "Last.fm"
},
USERNAME: {
en: "Username",
ru: "Имя"
},
EMAIL: {
en: "Email",
ru: "Почта"
},
LANG: {
en: "Language",
ru: "Язык"
},
USELESS_BUTTON: {
en: "Hello, my name is Useless Button",
ru: "Привет, меня зовут Бесполезная Кнопка"
},
NOT_CONNECTED: {
en: "Not connected",
ru: "Не подключен"
},
CONNECT: {
en: "Connect",
ru: "Подключить"
},
WINDOW_LANG_RELOAD: {
en: "To change application language it is needed to reload page. Your current playlist will be emptied and music will stop. Do you really wish to continue?",
ru: "Чтобы изменить язык приложения, необходимо перезагрузить страницу. Ваш текущий плей-лист будет очищен и музыка остановится. Вы действительно хотите продолжить?"
},
ADD_TO_NOW_PLAYING: {
en: "Add to Now Playing",
ru: "Добавить в плей-лист"
}
};
+1 -1
View File
@@ -23,7 +23,7 @@ Pages = (function() {
<div class="pic">\
<img src="' + (album.pic ? album.pic : '/images/kitteh.png') + '" alt="' + album.name + ' by ' + data.artist.name + '" width="250" height="250"/>\
<div class="add-album-button-container">\
<div class="add-album button gray">Add to Now Playing</div>\
<div class="add-album button gray">' + _beathaven.ls('ADD_TO_NOW_PLAYING') + '</div>\
</div>\
</div>\
<div class="tracklist"><ul></ul></div>\
+2
View File
@@ -16,6 +16,8 @@ Session = (function() {
}
Session.prototype.setUser = function(user) {
this.user = user;
_beathaven.lang = this.user.lang;
_beathaven.localizeHTML();
return false;
};
Session.prototype.getUser = function() {
+14 -3
View File
@@ -13,6 +13,7 @@ Settings = (function() {
if (form === 'account') {
$('.settings-container .form input[name$="username"]').val(_session.getUser().name);
$('.settings-container .form input[name$="email"]').val(_session.getUser().email);
$('.settings-container .form select').val(_session.getUser().lang);
} else if (form === 'lastfm') {
if (_session.getUser().lastfm_username) {
$('.form-container input[name$="username"]').first().val(_session.getUser().lastfm_username);
@@ -51,15 +52,25 @@ $('.lastfm-connect').live('click', function() {
setTimeout(_settings.updateLastfmLogin, 100);
return false;
});
$('.settings-container .form input').live('blur', function() {
var active_tab, params;
$('.settings-container .form input, .settings-container .form select').live('blur', function() {
var active_tab, lang_changed, params;
active_tab = $('.settings-container .tabs .tab.active').attr('data-fieldset');
if (active_tab === 'account') {
params = {
username: $('.settings-container .form input[name$="username"]').first().val(),
email: $('.settings-container .form input[name$="email"]').first().val()
email: $('.settings-container .form input[name$="email"]').first().val(),
lang: $('.settings-container .form select').first().val()
};
lang_changed = params.lang !== _session.getUser().lang;
if (lang_changed) {
if (!confirm(_beathaven.ls('WINDOW_LANG_RELOAD', params.lang))) {
$('.settings-container .form select').val(_session.getUser().lang);
}
}
_settings.saveAccountInfo(params, function() {
if (lang_changed) {
window.location.reload();
}
$('.header-container .hello .greating span').text((params.username.length > 0 ? params.username : '%username%'));
return false;
});
+7 -6
View File
@@ -19,14 +19,14 @@ Vkontakte = (function() {
});
};
return setTimeout(function() {
return $('#vk_api_transport').append('<script async="async" src="http://vkontakte.ru/js/api/openapi.js"></script>');
return $('#vk_api_transport').append('<script async="async" type="text/javascript" src="http://vkontakte.ru/js/api/openapi.js"></script>');
}, 0);
};
Vkontakte.prototype.authInfo = function(response) {
var _session;
if (typeof response !== 'undefined' && response.session) {
_session = new Session(response.session);
$('#vk_login, .auth_notice').hide();
$('#vk_login, .auth-notice').hide();
$('#vk_logout').css({
display: 'block'
});
@@ -42,7 +42,7 @@ Vkontakte = (function() {
name: r.response
}, function(ar2) {
_session.setUser(ar2.user);
$('.header-container .hello .greating').html('Tēnā koe, <span class="settings">' + (_session.getUser().name ? _session.getUser().name : '%username%') + '</span>!');
$('.header-container .hello .greating').html(_beathaven.ls('HELLO') + ', <span class="settings">' + (_session.getUser().name ? _session.getUser().name : '%username%') + '</span>!');
window._session = _session;
_ajax.detectPage();
return $('.fullscreen').hide();
@@ -52,7 +52,7 @@ Vkontakte = (function() {
_session.setUser(ar.user);
}
$('.header-container .hello').show();
$('.header-container .hello .greating').html('Tēnā koe, <span class="settings">' + (_session.getUser().name ? _session.getUser().name : '%username%') + '</span>!');
$('.header-container .hello .greating').html(_beathaven.ls('HELLO') + ', <span class="settings">' + (_session.getUser().name ? _session.getUser().name : '%username%') + '</span>!');
window._session = _session;
_ajax.detectPage();
return $('.fullscreen').hide();
@@ -66,9 +66,10 @@ Vkontakte = (function() {
} else {
_session = new Session({});
_session.setUser({});
$('#vk_login, .auth_notice').css({
$('#vk_login').css({
display: 'block'
});
$('.auth-notice').css('left', $('#vk_login').offset().left).show();
$('.header-container .hello').hide();
window._session = _session;
_ajax.detectPage();
@@ -152,7 +153,7 @@ Vkontakte = (function() {
};
return Vkontakte;
})();
$('#vk_login').live('click', function() {
$('#vk_login, .auth-notice').live('click', function() {
VK.Auth.login(function(response) {
_vkontakte.authInfo(response);
return false;