Added site locales
This commit is contained in:
@@ -29,13 +29,13 @@ class Ajax
|
||||
loadSearchPage: ->
|
||||
$.get '/templates/search.html', (data) ->
|
||||
_ajax.setArchor '/search/'
|
||||
_pages.renderSearch data
|
||||
_pages.renderSearch _beathaven.localizeHTML $(data)
|
||||
false
|
||||
|
||||
loadSettingsPage: ->
|
||||
$.get '/templates/settings.html', (data) ->
|
||||
_ajax.setArchor '/settings/'
|
||||
_pages.renderSettings data
|
||||
_pages.renderSettings _beathaven.localizeHTML $(data)
|
||||
false
|
||||
|
||||
load404Page: ->
|
||||
|
||||
@@ -18,13 +18,16 @@ $ ->
|
||||
|
||||
$(window).resize ->
|
||||
_beathaven.adjustSizes()
|
||||
false
|
||||
window.setTimeout ->
|
||||
_beathaven.checkRedrawScrollbar()
|
||||
false
|
||||
, 500
|
||||
|
||||
class BeatHaven
|
||||
|
||||
last_height: false
|
||||
lang: 'ru'
|
||||
|
||||
init: ->
|
||||
this.adjustSizes()
|
||||
@@ -44,6 +47,8 @@ class BeatHaven
|
||||
_pages = new Pages()
|
||||
|
||||
_settings = new Settings()
|
||||
|
||||
false
|
||||
|
||||
adjustSizes: ->
|
||||
$('.data-container').height $(window).height() - $('.header-container').height()
|
||||
@@ -53,6 +58,7 @@ class BeatHaven
|
||||
|
||||
$('.data-container').scrollbar()
|
||||
$('.playlist').scrollbar()
|
||||
false
|
||||
|
||||
checkRedrawScrollbar: ->
|
||||
focused_id = false
|
||||
@@ -67,11 +73,33 @@ class BeatHaven
|
||||
focused_id = false
|
||||
window.setTimeout ->
|
||||
_beathaven.checkRedrawScrollbar()
|
||||
false
|
||||
, 500
|
||||
false
|
||||
|
||||
redrawScrollbar: ->
|
||||
$('.data-container').html $('.data-container').find('.inner').first()
|
||||
$('.data-container').scrollbar()
|
||||
false
|
||||
|
||||
localizeHTML: (obj) ->
|
||||
unless obj?
|
||||
obj = $('body')
|
||||
$(obj).find('[data-ls]').each ->
|
||||
if _locale[$(this).attr 'data-ls']? and _locale[$(this).attr 'data-ls'][_beathaven.lang]?
|
||||
if this.nodeName is 'INPUT'
|
||||
$(this).val _locale[$(this).attr 'data-ls'][_beathaven.lang]
|
||||
else
|
||||
$(this).text _locale[$(this).attr 'data-ls'][_beathaven.lang]
|
||||
return obj
|
||||
|
||||
ls: (id, lang) ->
|
||||
unless lang?
|
||||
lang = _beathaven.lang
|
||||
if _locale[id]? and _locale[id][lang]?
|
||||
_locale[id][lang]
|
||||
else
|
||||
id
|
||||
|
||||
|
||||
String::htmlsafe = ->
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
_locale =
|
||||
# Global
|
||||
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: "Привет"
|
||||
|
||||
# Search
|
||||
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
|
||||
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: "Чтобы изменить язык приложения, необходимо перезагрузить страницу. Ваш текущий плей-лист будет очищен и музыка остановится. Вы действительно хотите продолжить?"
|
||||
|
||||
# Player
|
||||
ADD_TO_NOW_PLAYING:
|
||||
en: "Add to Now Playing"
|
||||
ru: "Добавить в плей-лист"
|
||||
@@ -21,7 +21,7 @@ class Pages
|
||||
<div class="pic">
|
||||
<img src="' +(if album.pic then album.pic else '/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>
|
||||
|
||||
@@ -13,6 +13,8 @@ class Session
|
||||
|
||||
setUser: (user) ->
|
||||
@user = user
|
||||
_beathaven.lang = @user.lang
|
||||
_beathaven.localizeHTML()
|
||||
false
|
||||
|
||||
getUser: ->
|
||||
|
||||
@@ -12,6 +12,7 @@ class Settings
|
||||
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
|
||||
@@ -44,13 +45,20 @@ $('.lastfm-connect') .live 'click', ->
|
||||
setTimeout _settings.updateLastfmLogin, 100
|
||||
false
|
||||
|
||||
$('.settings-container .form input').live 'blur', ->
|
||||
$('.settings-container .form input, .settings-container .form select').live 'blur', ->
|
||||
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()
|
||||
lang: $('.settings-container .form select').first().val()
|
||||
lang_changed = params.lang != _session.getUser().lang
|
||||
if lang_changed
|
||||
if not confirm _beathaven.ls 'WINDOW_LANG_RELOAD', params.lang
|
||||
$('.settings-container .form select').val _session.getUser().lang
|
||||
_settings.saveAccountInfo params, ->
|
||||
if lang_changed
|
||||
window.location.reload()
|
||||
$('.header-container .hello .greating span').text (if params.username.length > 0 then params.username else '%username%')
|
||||
false
|
||||
false
|
||||
@@ -18,14 +18,14 @@ class Vkontakte
|
||||
|
||||
|
||||
setTimeout ->
|
||||
$('#vk_api_transport').append('<script async="async" src="http://vkontakte.ru/js/api/openapi.js"></script>')
|
||||
$('#vk_api_transport').append('<script async="async" type="text/javascript" src="http://vkontakte.ru/js/api/openapi.js"></script>')
|
||||
, 0
|
||||
|
||||
authInfo: (response) ->
|
||||
if typeof response isnt 'undefined' and response.session
|
||||
_session = new Session(response.session)
|
||||
|
||||
$('#vk_login, .auth_notice').hide()
|
||||
$('#vk_login, .auth-notice').hide()
|
||||
$('#vk_logout').css display: 'block'
|
||||
|
||||
$('#search_field').focus() if $('#search_field').length > 0
|
||||
@@ -36,7 +36,7 @@ class Vkontakte
|
||||
_session.query '/user/update', name: r.response, (ar2) ->
|
||||
_session.setUser ar2.user
|
||||
$('.header-container .hello .greating')
|
||||
.html 'Tēnā koe, <span class="settings">' +(if _session.getUser().name then _session.getUser().name else '%username%')+ '</span>!'
|
||||
.html _beathaven.ls('HELLO')+', <span class="settings">' +(if _session.getUser().name then _session.getUser().name else '%username%')+ '</span>!'
|
||||
window._session = _session
|
||||
_ajax.detectPage()
|
||||
$('.fullscreen').hide();
|
||||
@@ -45,7 +45,7 @@ class Vkontakte
|
||||
|
||||
$('.header-container .hello').show()
|
||||
$('.header-container .hello .greating')
|
||||
.html 'Tēnā koe, <span class="settings">' +(if _session.getUser().name then _session.getUser().name else '%username%')+ '</span>!'
|
||||
.html _beathaven.ls('HELLO')+', <span class="settings">' +(if _session.getUser().name then _session.getUser().name else '%username%')+ '</span>!'
|
||||
window._session = _session
|
||||
_ajax.detectPage()
|
||||
$('.fullscreen').hide();
|
||||
@@ -58,7 +58,8 @@ class Vkontakte
|
||||
else
|
||||
_session = new Session({})
|
||||
_session.setUser {}
|
||||
$('#vk_login, .auth_notice').css display: 'block'
|
||||
$('#vk_login').css display: 'block'
|
||||
$('.auth-notice').css('left', $('#vk_login').offset().left).show()
|
||||
$('.header-container .hello').hide()
|
||||
window._session = _session
|
||||
_ajax.detectPage()
|
||||
@@ -128,7 +129,7 @@ class Vkontakte
|
||||
@qr[query]
|
||||
false
|
||||
|
||||
$('#vk_login').live 'click', ->
|
||||
$('#vk_login, .auth-notice').live 'click', ->
|
||||
VK.Auth.login (response) ->
|
||||
_vkontakte.authInfo(response)
|
||||
false
|
||||
|
||||
@@ -8,6 +8,7 @@ class UserController < ApplicationController
|
||||
if user.nil?
|
||||
user = User.new
|
||||
user.vkid = params[:mid]
|
||||
user.lang = 'ru'
|
||||
user.save
|
||||
@res[:newbie] = true
|
||||
end
|
||||
@@ -20,10 +21,13 @@ class UserController < ApplicationController
|
||||
:name => user.name,
|
||||
:email => user.email,
|
||||
:vkid => user.vkid,
|
||||
:lastfm_username => user.lastfm_username,
|
||||
:lastfm_login_url => 'http://www.last.fm/api/auth?api_key='+ LastFmController.api_key +
|
||||
'&cb=http://'+ request.host << '/lastfm/connect/?sid='+ user.session.key
|
||||
:lang => user.lang,
|
||||
:lastfm_username => user.lastfm_username
|
||||
}
|
||||
unless user.lastfm_username
|
||||
@res[:lastfm_login_url] = 'http://www.last.fm/api/auth?api_key='+ LastFmController.api_key +
|
||||
'&cb=http://'+ request.host << '/lastfm/connect/?sid='+ user.session.key
|
||||
end
|
||||
|
||||
render :json => @res
|
||||
end
|
||||
@@ -36,6 +40,7 @@ class UserController < ApplicationController
|
||||
unless params[:username].nil? or params[:email].nil?
|
||||
user.name = params[:username]
|
||||
user.email = params[:email]
|
||||
user.lang = params[:lang] if ['ru', 'en'].include? params[:lang]
|
||||
user.save
|
||||
end
|
||||
@res[:user] = {
|
||||
@@ -43,10 +48,13 @@ class UserController < ApplicationController
|
||||
:name => user.name,
|
||||
:email => user.email,
|
||||
:vkid => user.vkid,
|
||||
:lastfm_username => user.lastfm_username,
|
||||
:lastfm_login_url => 'http://www.last.fm/api/auth?api_key='+ LastFmController.api_key +
|
||||
'&cb=http://'+ request.host << '/lastfm/connect/?sid='+ user.session.key
|
||||
:lang => user.lang,
|
||||
:lastfm_username => user.lastfm_username
|
||||
}
|
||||
unless user.lastfm_username
|
||||
@res[:lastfm_login_url] = 'http://www.last.fm/api/auth?api_key='+ LastFmController.api_key +
|
||||
'&cb=http://'+ request.host << '/lastfm/connect/?sid='+ user.session.key
|
||||
end
|
||||
|
||||
render :json => @res
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>BetaHaven</title>
|
||||
<title>BeatHaven</title>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel="shortcut icon" href="/favicon.ico" />
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/stylesheets/beathaven.css" />
|
||||
@@ -12,6 +12,7 @@
|
||||
<%= javascript_include_tag "jquery/jquery.jplayer.js", :type => "text/javascript", :charset => "utf-8" %>
|
||||
<%= javascript_include_tag "jquery/jquery.scroll.js", :type => "text/javascript", :charset => "utf-8" %>
|
||||
<%= javascript_include_tag "coffee/beathaven.js", :type => "text/javascript", :charset => "utf-8" %>
|
||||
<%= javascript_include_tag "coffee/locale.js", :type => "text/javascript", :charset => "utf-8" %>
|
||||
<%= javascript_include_tag "coffee/vkontakte.js", :type => "text/javascript", :charset => "utf-8" %>
|
||||
<%= javascript_include_tag "coffee/session.js", :type => "text/javascript", :charset => "utf-8" %>
|
||||
<%= javascript_include_tag "coffee/ajax.js", :type => "text/javascript", :charset => "utf-8" %>
|
||||
@@ -27,7 +28,7 @@
|
||||
<div class="player-container">
|
||||
<div class="player">
|
||||
<div id="jplayer"></div>
|
||||
<div class="now-playing">Add some music to playlist</div>
|
||||
<div class="now-playing" data-ls="ADD_SOME_MUSIC"></div>
|
||||
<div class="progress">
|
||||
<div class="loaded">
|
||||
<div class="played"></div>
|
||||
@@ -45,13 +46,13 @@
|
||||
</div>
|
||||
<div class="additional-controls">
|
||||
<div class="item active" id="repeat">
|
||||
<img src="/images/icns/repeat.png" alt=""/><div class="annotation">Repeat</div>
|
||||
<img src="/images/icns/repeat.png" alt=""/><div class="annotation" data-ls="REPEAT"></div>
|
||||
</div>
|
||||
<div class="item" id="shuffle">
|
||||
<img src="/images/icns/shuffle.png" alt=""/><div class="annotation">Shuffle</div>
|
||||
<img src="/images/icns/shuffle.png" alt=""/><div class="annotation" data-ls="SHUFFLE"></div>
|
||||
</div>
|
||||
<div class="item" id="empty-playlist">
|
||||
<img src="/images/icns/empty.png" alt=""/><div class="annotation">Empty Playlist</div>
|
||||
<img src="/images/icns/empty.png" alt=""/><div class="annotation" data-ls="EMPTY_PLAYLIST"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -62,10 +63,10 @@
|
||||
</div>
|
||||
<ul class="navigation">
|
||||
<li class="logo search">BeatHaven<div class="version">0.4b</div></li>
|
||||
<li class="search">Search</li>
|
||||
<li><a href="https://twitter.com/#!/beat_haven" target="_blank">News</a></li>
|
||||
<li class="about">About</li>
|
||||
<li class="vk_auth" id="vk_login">Login</li>
|
||||
<li class="search" data-ls="SEARCH"></li>
|
||||
<li><a href="http://blog.beathaven.org/" target="_blank" data-ls="NEWS"></a></li>
|
||||
<li class="about" data-ls="ABOUT"></li>
|
||||
<li class="vk_auth" id="vk_login" data-ls="LOGIN"></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="data-container" class="css-scrollbar">
|
||||
@@ -73,7 +74,10 @@
|
||||
</div>
|
||||
|
||||
<div id="vk_api_transport"></div>
|
||||
<div class="auth_notice"><div class="arrow">↑</div>Don't forget to log in, please. It's simple.</div>
|
||||
<div class="auth-notice">
|
||||
<div class="arrow">↑</div>
|
||||
<span data-ls="LOGIN_PLEASE"></span>
|
||||
</div>
|
||||
<div class="fullscreen">
|
||||
<div class="inner">
|
||||
<img src="/images/loader.gif" alt=""/>
|
||||
|
||||
Reference in New Issue
Block a user