diff --git a/src/invidious.cr b/src/invidious.cr
index 21a12ff2..ade13608 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -408,7 +408,7 @@ define_video_playback_routes()
# Users
post "/watch_ajax" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -478,7 +478,7 @@ end
# /modify_notifications?receive_all_updates=false&receive_no_updates=false
# will "unding" all subscriptions.
get "/modify_notifications" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -551,7 +551,7 @@ get "/modify_notifications" do |env|
end
post "/subscription_ajax" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -621,7 +621,7 @@ post "/subscription_ajax" do |env|
end
get "/subscription_manager" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -724,7 +724,7 @@ get "/subscription_manager" do |env|
end
get "/data_control" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
referer = get_referer(env)
@@ -739,7 +739,7 @@ get "/data_control" do |env|
end
post "/data_control" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
referer = get_referer(env)
@@ -902,7 +902,7 @@ post "/data_control" do |env|
end
get "/change_password" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -920,7 +920,7 @@ get "/change_password" do |env|
end
post "/change_password" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -976,7 +976,7 @@ post "/change_password" do |env|
end
get "/delete_account" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -994,7 +994,7 @@ get "/delete_account" do |env|
end
post "/delete_account" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -1028,7 +1028,7 @@ post "/delete_account" do |env|
end
get "/clear_watch_history" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -1046,7 +1046,7 @@ get "/clear_watch_history" do |env|
end
post "/clear_watch_history" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -1071,7 +1071,7 @@ post "/clear_watch_history" do |env|
end
get "/authorize_token" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -1099,7 +1099,7 @@ get "/authorize_token" do |env|
end
post "/authorize_token" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -1147,7 +1147,7 @@ post "/authorize_token" do |env|
end
get "/token_manager" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -1165,7 +1165,7 @@ get "/token_manager" do |env|
end
post "/token_ajax" do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -1225,7 +1225,7 @@ end
{"/channel/:ucid/live", "/user/:user/live", "/c/:user/live"}.each do |route|
get route do |env|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
# Appears to be a bug in routing, having several routes configured
# as `/a/:a`, `/b/:a`, `/c/:a` results in 404
@@ -1347,7 +1347,7 @@ error 404 do |env|
end
error 500 do |env, ex|
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
error_template(500, ex)
end
diff --git a/src/invidious/helpers/errors.cr b/src/invidious/helpers/errors.cr
index e5c77fbc..d10762c5 100644
--- a/src/invidious/helpers/errors.cr
+++ b/src/invidious/helpers/errors.cr
@@ -22,7 +22,7 @@ def github_details(summary : String, content : String)
return HTML.escape(details)
end
-def error_template_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::Any) | Nil, status_code : Int32, exception : Exception)
+def error_template_helper(env : HTTP::Server::Context, locale : String?, status_code : Int32, exception : Exception)
if exception.is_a?(InfoException)
return error_template_helper(env, locale, status_code, exception.message || "")
end
@@ -46,7 +46,7 @@ def error_template_helper(env : HTTP::Server::Context, locale : Hash(String, JSO
return templated "error"
end
-def error_template_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::Any) | Nil, status_code : Int32, message : String)
+def error_template_helper(env : HTTP::Server::Context, locale : String?, status_code : Int32, message : String)
env.response.content_type = "text/html"
env.response.status_code = status_code
error_message = translate(locale, message)
@@ -58,7 +58,7 @@ macro error_atom(*args)
error_atom_helper(env, locale, {{*args}})
end
-def error_atom_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::Any) | Nil, status_code : Int32, exception : Exception)
+def error_atom_helper(env : HTTP::Server::Context, locale : String?, status_code : Int32, exception : Exception)
if exception.is_a?(InfoException)
return error_atom_helper(env, locale, status_code, exception.message || "")
end
@@ -67,7 +67,7 @@ def error_atom_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::A
return "#{exception.inspect_with_backtrace}"
end
-def error_atom_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::Any) | Nil, status_code : Int32, message : String)
+def error_atom_helper(env : HTTP::Server::Context, locale : String?, status_code : Int32, message : String)
env.response.content_type = "application/atom+xml"
env.response.status_code = status_code
return "#{message}"
@@ -77,7 +77,7 @@ macro error_json(*args)
error_json_helper(env, locale, {{*args}})
end
-def error_json_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::Any) | Nil, status_code : Int32, exception : Exception, additional_fields : Hash(String, Object) | Nil)
+def error_json_helper(env : HTTP::Server::Context, locale : String?, status_code : Int32, exception : Exception, additional_fields : Hash(String, Object) | Nil)
if exception.is_a?(InfoException)
return error_json_helper(env, locale, status_code, exception.message || "", additional_fields)
end
@@ -90,11 +90,11 @@ def error_json_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::A
return error_message.to_json
end
-def error_json_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::Any) | Nil, status_code : Int32, exception : Exception)
+def error_json_helper(env : HTTP::Server::Context, locale : String?, status_code : Int32, exception : Exception)
return error_json_helper(env, locale, status_code, exception, nil)
end
-def error_json_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::Any) | Nil, status_code : Int32, message : String, additional_fields : Hash(String, Object) | Nil)
+def error_json_helper(env : HTTP::Server::Context, locale : String?, status_code : Int32, message : String, additional_fields : Hash(String, Object) | Nil)
env.response.content_type = "application/json"
env.response.status_code = status_code
error_message = {"error" => message}
@@ -104,11 +104,11 @@ def error_json_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::A
return error_message.to_json
end
-def error_json_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::Any) | Nil, status_code : Int32, message : String)
+def error_json_helper(env : HTTP::Server::Context, locale : String?, status_code : Int32, message : String)
error_json_helper(env, locale, status_code, message, nil)
end
-def error_redirect_helper(env : HTTP::Server::Context, locale : Hash(String, JSON::Any) | Nil)
+def error_redirect_helper(env : HTTP::Server::Context, locale : String?)
request_path = env.request.path
if request_path.starts_with?("/search") || request_path.starts_with?("/watch") ||
diff --git a/src/invidious/helpers/helpers.cr b/src/invidious/helpers/helpers.cr
index c3b356a9..96a78eb9 100644
--- a/src/invidious/helpers/helpers.cr
+++ b/src/invidious/helpers/helpers.cr
@@ -190,7 +190,7 @@ def create_notification_stream(env, topics, connection_channel)
connection = Channel(PQ::Notification).new(8)
connection_channel.send({true, connection})
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
since = env.params.query["since"]?.try &.to_i?
id = 0
diff --git a/src/invidious/helpers/i18n.cr b/src/invidious/helpers/i18n.cr
index 0380ad1e..10622517 100644
--- a/src/invidious/helpers/i18n.cr
+++ b/src/invidious/helpers/i18n.cr
@@ -64,31 +64,36 @@ def load_all_locales
return locales
end
-def translate(locale : Hash(String, JSON::Any) | Nil, translation : String, text : String | Nil = nil)
- # if locale && !locale[translation]?
- # puts "Could not find translation for #{translation.dump}"
- # end
+def translate(locale : String?, key : String, text : String | Nil = nil) : String
+ # Raise an eception if "key" doesn't exist in en-US locale
+ raise "Invalid translation key \"#{key}\"" unless LOCALES["en-US"].has_key?(key)
- if locale && locale[translation]?
- case locale[translation]
- when .as_h?
- match_length = 0
+ # Default to english, whenever the locale doesn't exist,
+ # or the key requested has not been translated
+ if locale && LOCALES.has_key?(locale) && LOCALES[locale].has_key?(key)
+ raw_data = LOCALES[locale][key]
+ else
+ raw_data = LOCALES["en-US"][key]
+ end
- locale[translation].as_h.each do |key, value|
- if md = text.try &.match(/#{key}/)
- if md[0].size >= match_length
- translation = value.as_s
- match_length = md[0].size
- end
+ case raw_data
+ when .as_h?
+ # Init
+ translation = ""
+ match_length = 0
+
+ raw_data.as_h.each do |key, value|
+ if md = text.try &.match(/#{key}/)
+ if md[0].size >= match_length
+ translation = value.as_s
+ match_length = md[0].size
end
end
- when .as_s?
- if !locale[translation].as_s.empty?
- translation = locale[translation].as_s
- end
- else
- raise "Invalid translation #{translation}"
end
+ when .as_s?
+ translation = raw_data.as_s
+ else
+ raise "Invalid translation \"#{raw_data}\""
end
if text
@@ -98,7 +103,7 @@ def translate(locale : Hash(String, JSON::Any) | Nil, translation : String, text
return translation
end
-def translate_bool(locale : Hash(String, JSON::Any) | Nil, translation : Bool)
+def translate_bool(locale : String?, translation : Bool)
case translation
when true
return translate(locale, "Yes")
diff --git a/src/invidious/helpers/serialized_yt_data.cr b/src/invidious/helpers/serialized_yt_data.cr
index f92b7b89..bfbc237c 100644
--- a/src/invidious/helpers/serialized_yt_data.cr
+++ b/src/invidious/helpers/serialized_yt_data.cr
@@ -64,7 +64,7 @@ struct SearchVideo
end
end
- def to_json(locale : Hash(String, JSON::Any) | Nil, json : JSON::Builder)
+ def to_json(locale : String?, json : JSON::Builder)
json.object do
json.field "type", "video"
json.field "title", self.title
@@ -96,7 +96,7 @@ struct SearchVideo
end
# TODO: remove the locale and follow the crystal convention
- def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
+ def to_json(locale : String?, _json : Nil)
JSON.build do |json|
to_json(locale, json)
end
@@ -130,7 +130,7 @@ struct SearchPlaylist
property videos : Array(SearchPlaylistVideo)
property thumbnail : String?
- def to_json(locale : Hash(String, JSON::Any) | Nil, json : JSON::Builder)
+ def to_json(locale : String?, json : JSON::Builder)
json.object do
json.field "type", "playlist"
json.field "title", self.title
@@ -161,7 +161,7 @@ struct SearchPlaylist
end
# TODO: remove the locale and follow the crystal convention
- def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
+ def to_json(locale : String?, _json : Nil)
JSON.build do |json|
to_json(locale, json)
end
@@ -183,7 +183,7 @@ struct SearchChannel
property description_html : String
property auto_generated : Bool
- def to_json(locale : Hash(String, JSON::Any) | Nil, json : JSON::Builder)
+ def to_json(locale : String?, json : JSON::Builder)
json.object do
json.field "type", "channel"
json.field "author", self.author
@@ -214,7 +214,7 @@ struct SearchChannel
end
# TODO: remove the locale and follow the crystal convention
- def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
+ def to_json(locale : String?, _json : Nil)
JSON.build do |json|
to_json(locale, json)
end
@@ -234,7 +234,7 @@ class Category
property description_html : String
property badges : Array(Tuple(String, String))?
- def to_json(locale : Hash(String, JSON::Any) | Nil, json : JSON::Builder)
+ def to_json(locale : String?, json : JSON::Builder)
json.object do
json.field "type", "category"
json.field "title", self.title
@@ -249,7 +249,7 @@ class Category
end
# TODO: remove the locale and follow the crystal convention
- def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
+ def to_json(locale : String?, _json : Nil)
JSON.build do |json|
to_json(locale, json)
end
diff --git a/src/invidious/routes/api/v1/authenticated.cr b/src/invidious/routes/api/v1/authenticated.cr
index cdd9e2f6..aaf728ff 100644
--- a/src/invidious/routes/api/v1/authenticated.cr
+++ b/src/invidious/routes/api/v1/authenticated.cr
@@ -36,7 +36,7 @@ module Invidious::Routes::API::V1::Authenticated
env.response.content_type = "application/json"
user = env.get("user").as(User)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
max_results = env.params.query["max_results"]?.try &.to_i?
max_results ||= user.preferences.max_results
@@ -122,7 +122,7 @@ module Invidious::Routes::API::V1::Authenticated
end
def self.list_playlists(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
user = env.get("user").as(User)
@@ -141,7 +141,7 @@ module Invidious::Routes::API::V1::Authenticated
def self.create_playlist(env)
env.response.content_type = "application/json"
user = env.get("user").as(User)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
title = env.params.json["title"]?.try &.as(String).delete("<>").byte_slice(0, 150)
if !title
@@ -167,7 +167,7 @@ module Invidious::Routes::API::V1::Authenticated
end
def self.update_playlist_attribute(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
user = env.get("user").as(User)
@@ -200,7 +200,7 @@ module Invidious::Routes::API::V1::Authenticated
end
def self.delete_playlist(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
user = env.get("user").as(User)
@@ -223,7 +223,7 @@ module Invidious::Routes::API::V1::Authenticated
end
def self.insert_video_into_playlist(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
user = env.get("user").as(User)
@@ -281,7 +281,7 @@ module Invidious::Routes::API::V1::Authenticated
end
def self.delete_video_in_playlist(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
user = env.get("user").as(User)
@@ -334,7 +334,7 @@ module Invidious::Routes::API::V1::Authenticated
def self.register_token(env)
user = env.get("user").as(User)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
case env.request.headers["Content-Type"]?
when "application/x-www-form-urlencoded"
@@ -396,7 +396,7 @@ module Invidious::Routes::API::V1::Authenticated
end
def self.unregister_token(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
user = env.get("user").as(User)
scopes = env.get("scopes").as(Array(String))
diff --git a/src/invidious/routes/api/v1/channels.cr b/src/invidious/routes/api/v1/channels.cr
index da39661c..8b6df3fd 100644
--- a/src/invidious/routes/api/v1/channels.cr
+++ b/src/invidious/routes/api/v1/channels.cr
@@ -1,6 +1,6 @@
module Invidious::Routes::API::V1::Channels
def self.home(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
@@ -124,7 +124,7 @@ module Invidious::Routes::API::V1::Channels
end
def self.latest(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
@@ -146,7 +146,7 @@ module Invidious::Routes::API::V1::Channels
end
def self.videos(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
@@ -182,7 +182,7 @@ module Invidious::Routes::API::V1::Channels
end
def self.playlists(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
@@ -219,7 +219,7 @@ module Invidious::Routes::API::V1::Channels
end
def self.community(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
@@ -242,7 +242,7 @@ module Invidious::Routes::API::V1::Channels
end
def self.search(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
diff --git a/src/invidious/routes/api/v1/feeds.cr b/src/invidious/routes/api/v1/feeds.cr
index bb8f661b..41865f34 100644
--- a/src/invidious/routes/api/v1/feeds.cr
+++ b/src/invidious/routes/api/v1/feeds.cr
@@ -1,6 +1,6 @@
module Invidious::Routes::API::V1::Feeds
def self.trending(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
@@ -25,7 +25,7 @@ module Invidious::Routes::API::V1::Feeds
end
def self.popular(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
diff --git a/src/invidious/routes/api/v1/misc.cr b/src/invidious/routes/api/v1/misc.cr
index 80b59fd5..1621c9ef 100644
--- a/src/invidious/routes/api/v1/misc.cr
+++ b/src/invidious/routes/api/v1/misc.cr
@@ -1,7 +1,7 @@
module Invidious::Routes::API::V1::Misc
# Stats API endpoint for Invidious
def self.stats(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
if !CONFIG.statistics_enabled
@@ -15,7 +15,7 @@ module Invidious::Routes::API::V1::Misc
# user playlists and Invidious playlists. This means that we can't
# reasonably split them yet. This should be addressed in APIv2
def self.get_playlist(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
plid = env.params.url["plid"]
@@ -84,7 +84,7 @@ module Invidious::Routes::API::V1::Misc
end
def self.mixes(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
diff --git a/src/invidious/routes/api/v1/search.cr b/src/invidious/routes/api/v1/search.cr
index 7234dcdd..a3b6c795 100644
--- a/src/invidious/routes/api/v1/search.cr
+++ b/src/invidious/routes/api/v1/search.cr
@@ -1,6 +1,6 @@
module Invidious::Routes::API::V1::Search
def self.search(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
region = env.params.query["region"]?
env.response.content_type = "application/json"
@@ -43,7 +43,7 @@ module Invidious::Routes::API::V1::Search
end
def self.search_suggestions(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
region = env.params.query["region"]?
env.response.content_type = "application/json"
diff --git a/src/invidious/routes/api/v1/videos.cr b/src/invidious/routes/api/v1/videos.cr
index 1edee29c..4c7179ce 100644
--- a/src/invidious/routes/api/v1/videos.cr
+++ b/src/invidious/routes/api/v1/videos.cr
@@ -1,6 +1,6 @@
module Invidious::Routes::API::V1::Videos
def self.videos(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
@@ -20,7 +20,7 @@ module Invidious::Routes::API::V1::Videos
end
def self.captions(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
@@ -149,7 +149,7 @@ module Invidious::Routes::API::V1::Videos
# thumbnails for individual scenes in a video.
# See https://support.jwplayer.com/articles/how-to-add-preview-thumbnails
def self.storyboards(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
@@ -223,7 +223,7 @@ module Invidious::Routes::API::V1::Videos
end
def self.annotations(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "text/xml"
@@ -293,7 +293,7 @@ module Invidious::Routes::API::V1::Videos
end
def self.comments(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
region = env.params.query["region"]?
env.response.content_type = "application/json"
diff --git a/src/invidious/routes/channels.cr b/src/invidious/routes/channels.cr
index 29748cd0..6cb1e1f7 100644
--- a/src/invidious/routes/channels.cr
+++ b/src/invidious/routes/channels.cr
@@ -104,7 +104,7 @@ module Invidious::Routes::Channels
# Redirects brand url channels to a normal /channel/:ucid route
def self.brand_redirect(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
# /attribution_link endpoint needs both the `a` and `u` parameter
# and in order to avoid detection from YouTube we should only send the required ones
@@ -148,7 +148,7 @@ module Invidious::Routes::Channels
end
private def self.fetch_basic_information(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
if user
diff --git a/src/invidious/routes/embed.cr b/src/invidious/routes/embed.cr
index ffbf8c14..049ee344 100644
--- a/src/invidious/routes/embed.cr
+++ b/src/invidious/routes/embed.cr
@@ -2,7 +2,7 @@
module Invidious::Routes::Embed
def self.redirect(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
if plid = env.params.query["list"]?.try &.gsub(/[^a-zA-Z0-9_-]/, "")
begin
@@ -26,7 +26,7 @@ module Invidious::Routes::Embed
end
def self.show(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
id = env.params.url["id"]
plid = env.params.query["list"]?.try &.gsub(/[^a-zA-Z0-9_-]/, "")
diff --git a/src/invidious/routes/feeds.cr b/src/invidious/routes/feeds.cr
index f4a8467b..9650bcf4 100644
--- a/src/invidious/routes/feeds.cr
+++ b/src/invidious/routes/feeds.cr
@@ -6,7 +6,7 @@ module Invidious::Routes::Feeds
end
def self.playlists(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
referer = get_referer(env)
@@ -31,7 +31,7 @@ module Invidious::Routes::Feeds
end
def self.popular(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
if CONFIG.popular_enabled
templated "feeds/popular"
@@ -42,7 +42,7 @@ module Invidious::Routes::Feeds
end
def self.trending(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
trending_type = env.params.query["type"]?
trending_type ||= "Default"
@@ -60,7 +60,7 @@ module Invidious::Routes::Feeds
end
def self.subscriptions(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -108,7 +108,7 @@ module Invidious::Routes::Feeds
end
def self.history(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
referer = get_referer(env)
@@ -137,7 +137,7 @@ module Invidious::Routes::Feeds
# RSS feeds
def self.rss_channel(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.headers["Content-Type"] = "application/atom+xml"
env.response.content_type = "application/atom+xml"
@@ -209,7 +209,7 @@ module Invidious::Routes::Feeds
end
def self.rss_private(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.headers["Content-Type"] = "application/atom+xml"
env.response.content_type = "application/atom+xml"
@@ -253,7 +253,7 @@ module Invidious::Routes::Feeds
end
def self.rss_playlist(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.headers["Content-Type"] = "application/atom+xml"
env.response.content_type = "application/atom+xml"
@@ -374,7 +374,7 @@ module Invidious::Routes::Feeds
end
def self.push_notifications_post(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
token = env.params.url["token"]
body = env.request.body.not_nil!.gets_to_end
diff --git a/src/invidious/routes/login.cr b/src/invidious/routes/login.cr
index 562d88e5..2a50561d 100644
--- a/src/invidious/routes/login.cr
+++ b/src/invidious/routes/login.cr
@@ -2,7 +2,7 @@
module Invidious::Routes::Login
def self.login_page(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
@@ -31,7 +31,7 @@ module Invidious::Routes::Login
end
def self.login(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
referer = get_referer(env, "/feed/subscriptions")
@@ -491,7 +491,7 @@ module Invidious::Routes::Login
end
def self.signout(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
diff --git a/src/invidious/routes/misc.cr b/src/invidious/routes/misc.cr
index 3ea4c272..d6bd9571 100644
--- a/src/invidious/routes/misc.cr
+++ b/src/invidious/routes/misc.cr
@@ -3,7 +3,7 @@
module Invidious::Routes::Misc
def self.home(env)
preferences = env.get("preferences").as(Preferences)
- locale = LOCALES[preferences.locale]?
+ locale = preferences.locale
user = env.get? "user"
case preferences.default_home
@@ -29,12 +29,12 @@ module Invidious::Routes::Misc
end
def self.privacy(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
templated "privacy"
end
def self.licenses(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
rendered "licenses"
end
diff --git a/src/invidious/routes/playlists.cr b/src/invidious/routes/playlists.cr
index 21126d7e..7b7bd03f 100644
--- a/src/invidious/routes/playlists.cr
+++ b/src/invidious/routes/playlists.cr
@@ -2,7 +2,7 @@
module Invidious::Routes::Playlists
def self.new(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -18,7 +18,7 @@ module Invidious::Routes::Playlists
end
def self.create(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -56,7 +56,7 @@ module Invidious::Routes::Playlists
end
def self.subscribe(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
referer = get_referer(env)
@@ -73,7 +73,7 @@ module Invidious::Routes::Playlists
end
def self.delete_page(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -96,7 +96,7 @@ module Invidious::Routes::Playlists
end
def self.delete(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -129,7 +129,7 @@ module Invidious::Routes::Playlists
end
def self.edit(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -169,7 +169,7 @@ module Invidious::Routes::Playlists
end
def self.update(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -213,7 +213,7 @@ module Invidious::Routes::Playlists
end
def self.add_playlist_items_page(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -260,7 +260,7 @@ module Invidious::Routes::Playlists
end
def self.playlist_ajax(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get? "user"
sid = env.get? "sid"
@@ -387,7 +387,7 @@ module Invidious::Routes::Playlists
end
def self.show(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
user = env.get?("user").try &.as(User)
referer = get_referer(env)
@@ -435,7 +435,7 @@ module Invidious::Routes::Playlists
end
def self.mix(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
rdid = env.params.query["list"]?
if !rdid
diff --git a/src/invidious/routes/preferences.cr b/src/invidious/routes/preferences.cr
index 8793d4e9..edf9e1e7 100644
--- a/src/invidious/routes/preferences.cr
+++ b/src/invidious/routes/preferences.cr
@@ -2,7 +2,7 @@
module Invidious::Routes::PreferencesRoute
def self.show(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
referer = get_referer(env)
@@ -12,7 +12,7 @@ module Invidious::Routes::PreferencesRoute
end
def self.update(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
referer = get_referer(env)
video_loop = env.params.body["video_loop"]?.try &.as(String)
@@ -227,7 +227,7 @@ module Invidious::Routes::PreferencesRoute
end
def self.toggle_theme(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
referer = get_referer(env, unroll: false)
redirect = env.params.query["redirect"]?
diff --git a/src/invidious/routes/search.cr b/src/invidious/routes/search.cr
index 3f1e219f..c256d156 100644
--- a/src/invidious/routes/search.cr
+++ b/src/invidious/routes/search.cr
@@ -2,7 +2,7 @@
module Invidious::Routes::Search
def self.opensearch(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/opensearchdescription+xml"
XML.build(indent: " ", encoding: "UTF-8") do |xml|
@@ -18,7 +18,7 @@ module Invidious::Routes::Search
end
def self.results(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
query = env.params.query["search_query"]?
query ||= env.params.query["q"]?
@@ -37,7 +37,7 @@ module Invidious::Routes::Search
end
def self.search(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
region = env.params.query["region"]?
query = env.params.query["search_query"]?
diff --git a/src/invidious/routes/video_playback.cr b/src/invidious/routes/video_playback.cr
index 5c64f669..cfc25782 100644
--- a/src/invidious/routes/video_playback.cr
+++ b/src/invidious/routes/video_playback.cr
@@ -1,7 +1,7 @@
module Invidious::Routes::VideoPlayback
# /videoplayback
def self.get_video_playback(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
query_params = env.params.query
fvip = query_params["fvip"]? || "3"
diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr
index abcf427e..b24222ff 100644
--- a/src/invidious/routes/watch.cr
+++ b/src/invidious/routes/watch.cr
@@ -2,7 +2,7 @@
module Invidious::Routes::Watch
def self.handle(env)
- locale = LOCALES[env.get("preferences").as(Preferences).locale]?
+ locale = env.get("preferences").as(Preferences).locale
region = env.params.query["region"]?
if env.params.query.to_s.includes?("%20") || env.params.query.to_s.includes?("+")
diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr
index d3e5800c..d6ecd326 100644
--- a/src/invidious/videos.cr
+++ b/src/invidious/videos.cr
@@ -275,7 +275,7 @@ struct Video
end
end
- def to_json(locale : Hash(String, JSON::Any) | Nil, json : JSON::Builder)
+ def to_json(locale : String?, json : JSON::Builder)
json.object do
json.field "type", "video"
@@ -475,7 +475,7 @@ struct Video
end
# TODO: remove the locale and follow the crystal convention
- def to_json(locale : Hash(String, JSON::Any) | Nil, _json : Nil)
+ def to_json(locale : String?, _json : Nil)
JSON.build { |json| to_json(locale, json) }
end
diff --git a/src/invidious/views/template.ecr b/src/invidious/views/template.ecr
index 3fb2fe18..5b6e6ab8 100644
--- a/src/invidious/views/template.ecr
+++ b/src/invidious/views/template.ecr
@@ -19,8 +19,10 @@
-<% locale = LOCALES[env.get("preferences").as(Preferences).locale]? %>
-<% dark_mode = env.get("preferences").as(Preferences).dark_mode %>
+<%
+ locale = env.get("preferences").as(Preferences).locale
+ dark_mode = env.get("preferences").as(Preferences).dark_mode
+%>
-theme">
<%= env.get("preferences").as(Preferences).dark_mode %>