Worlds: language switch
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled

This commit is contained in:
sto
2026-09-06 16:34:21 +02:00
parent 699e1eb3de
commit 0912a9f408
7 changed files with 40 additions and 28 deletions

View File

@@ -1,16 +1,22 @@
class WorldsController < ApplicationController class WorldsController < ApplicationController
allow_unauthenticated_access allow_unauthenticated_access
before_action :set_w_lang
before_action :set_title before_action :set_title
before_action :set_fr_lang
def set_title def set_title
@title = I18n.t("worlds.title") @title = I18n.t("worlds.title")
@nonav = true @nonav = true
end end
def set_fr_lang def set_w_lang
if params.has_key?(:lang) && params[:lang] == "en"
I18n.locale = "en"
@lang = "en"
else
I18n.locale = "fr" I18n.locale = "fr"
@lang = "fr"
end
end end
def main def main
@@ -90,7 +96,7 @@ class WorldsController < ApplicationController
end end
if w_set.length == 10 && f_set.length == 10 && @world_bet.save if w_set.length == 10 && f_set.length == 10 && @world_bet.save
redirect_to "/wjpc_bets/main", notice: t("worlds.new.notice") redirect_to "/wjpc_bets/#{@lang}/main", notice: t("worlds.new.notice")
else else
@world_participants = WorldParticipant.all.sort_by { |p| p.name } @world_participants = WorldParticipant.all.sort_by { |p| p.name }
france = WorldCountry.where(code: "FR").first france = WorldCountry.where(code: "FR").first
@@ -117,9 +123,9 @@ class WorldsController < ApplicationController
b.save b.save
end end
end end
redirect_back(fallback_location: root_path, notice: t("worlds.collab.notice")) redirect_back(fallback_location: "/wjpc_bets/#{@lang}/main", notice: t("worlds.collab.notice"))
else else
redirect_to "/wjpc_bets/collab", notice: t("worlds.collab.error") redirect_to "/wjpc_bets/#{@lang}/collab", notice: t("worlds.collab.error")
end end
end end

View File

@@ -2,14 +2,14 @@
.col .col
ul.nav.nav-tabs.mb-4 ul.nav.nav-tabs.mb-4
li.nav-item li.nav-item
a.nav-link class=active_page("/wjpc_bets/main") href="/wjpc_bets/main" a.nav-link class=active_page("/wjpc_bets/#{@lang}/main") href="/wjpc_bets/#{@lang}/main"
= t("worlds.main.tab") = t("worlds.main.tab")
li.nav-item li.nav-item
a.nav-link class=active_page("/wjpc_bets/about") href="/wjpc_bets/about" a.nav-link class=active_page("/wjpc_bets/#{@lang}/about") href="/wjpc_bets/#{@lang}/about"
= t("worlds.about.tab") = t("worlds.about.tab")
li.nav-item li.nav-item
a.nav-link class=active_page("/wjpc_bets/collaborative_filling") href="/wjpc_bets/collaborative_filling" a.nav-link class=active_page("/wjpc_bets/#{@lang}/collaborative_filling") href="/wjpc_bets/#{@lang}/collaborative_filling"
= t("worlds.collab.tab") = t("worlds.collab.tab")
li.nav-item li.nav-item
a.nav-link class=active_page("/wjpc_bets/new") href="/wjpc_bets/new" a.nav-link class=active_page("/wjpc_bets/#{@lang}/new") href="/wjpc_bets/#{@lang}/new"
= t("worlds.new.tab") = t("worlds.new.tab")

View File

@@ -15,6 +15,12 @@ html
a.navbar-brand href=user_path(@current_user) class="btn btn-light" a.navbar-brand href=user_path(@current_user) class="btn btn-light"
= t("nav.settings") = t("nav.settings")
= button_to t("nav.log_out"), session_path, method: :delete, class: "btn btn-danger" = button_to t("nav.log_out"), session_path, method: :delete, class: "btn btn-danger"
- if active_page("/wjpc_bets")
.float-end
a.navbar-brand href="/wjpc_bets/en/main" class="btn btn-light" style="margin-right: 0"
= Flags.get_flag("GB")
a.navbar-brand href="/wjpc_bets/fr/main" class="btn btn-light" style="margin-right: 0"
= Flags.get_flag("FR")
css: css:
.toast { .toast {

View File

@@ -14,7 +14,7 @@ h4.mt-4 Round A
- if p.round == 'a' - if p.round == 'a'
.row.mt-3 .row.mt-3
.col .col
= form_with model: WorldParticipant, url: "/wjpc_bets/update/#{p.id}", method: :patch do |form| = form_with model: WorldParticipant, url: "/wjpc_bets/#{@lang}/update/#{p.id}", method: :patch do |form|
.input-group .input-group
.input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name} .input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank") .input-group-text = t("worlds.main.rank")
@@ -55,7 +55,7 @@ h4.mt-5 Round B
- if p.round == 'b' - if p.round == 'b'
.row.mt-3 .row.mt-3
.col .col
= form_with model: WorldParticipant, url: "/wjpc_bets/update/#{p.id}", method: :patch do |form| = form_with model: WorldParticipant, url: "/wjpc_bets/#{@lang}/update/#{p.id}", method: :patch do |form|
.input-group .input-group
.input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name} .input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank") .input-group-text = t("worlds.main.rank")
@@ -70,7 +70,7 @@ h4.mt-5 Round C
- if p.round == 'c' - if p.round == 'c'
.row.mt-3 .row.mt-3
.col .col
= form_with model: WorldParticipant, url: "/wjpc_bets/update/#{p.id}", method: :patch do |form| = form_with model: WorldParticipant, url: "/wjpc_bets/#{@lang}/update/#{p.id}", method: :patch do |form|
.input-group .input-group
.input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name} .input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank") .input-group-text = t("worlds.main.rank")
@@ -85,7 +85,7 @@ h4.mt-5 Round D
- if p.round == 'd' - if p.round == 'd'
.row.mt-3 .row.mt-3
.col .col
= form_with model: WorldParticipant, url: "/wjpc_bets/update/#{p.id}", method: :patch do |form| = form_with model: WorldParticipant, url: "/wjpc_bets/#{@lang}/update/#{p.id}", method: :patch do |form|
.input-group .input-group
.input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name} .input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank") .input-group-text = t("worlds.main.rank")
@@ -100,7 +100,7 @@ h4.mt-5 = "#{t("worlds.collab.semifinal")} 1"
- if p.round == 'a' || p.round == 'b' - if p.round == 'a' || p.round == 'b'
.row.mt-3 .row.mt-3
.col .col
= form_with model: WorldParticipant, url: "/wjpc_bets/update/#{p.id}", method: :patch do |form| = form_with model: WorldParticipant, url: "/wjpc_bets/#{@lang}/update/#{p.id}", method: :patch do |form|
.input-group .input-group
.input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name} .input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank") .input-group-text = t("worlds.main.rank")
@@ -115,7 +115,7 @@ h4.mt-5 = "#{t("worlds.collab.semifinal")} 2"
- if p.round == 'c' || p.round == 'd' - if p.round == 'c' || p.round == 'd'
.row.mt-3 .row.mt-3
.col .col
= form_with model: WorldParticipant, url: "/wjpc_bets/update/#{p.id}", method: :patch do |form| = form_with model: WorldParticipant, url: "/wjpc_bets/#{@lang}/update/#{p.id}", method: :patch do |form|
.input-group .input-group
.input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name} .input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank") .input-group-text = t("worlds.main.rank")
@@ -129,7 +129,7 @@ h4.mt-5 = "#{t("worlds.collab.final")}"
- @participants.each do |p| - @participants.each do |p|
.row.mt-3 .row.mt-3
.col .col
= form_with model: WorldParticipant, url: "/wjpc_bets/update/#{p.id}", method: :patch do |form| = form_with model: WorldParticipant, url: "/wjpc_bets/#{@lang}/update/#{p.id}", method: :patch do |form|
.input-group .input-group
.input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name} .input-group-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank") .input-group-text = t("worlds.main.rank")

View File

@@ -23,7 +23,7 @@
td #{b.name} td #{b.name}
td #{b.world_score} td #{b.world_score}
td td
a.btn.btn-sm.btn-secondary href="/wjpc_bets/view/#{b.id}" a.btn.btn-sm.btn-secondary href="/wjpc_bets/#{@lang}/view/#{b.id}"
= t("worlds.main.view_bet") = t("worlds.main.view_bet")
.row.mt-3 .row.mt-3
@@ -49,5 +49,5 @@
td #{b.name} td #{b.name}
td #{b.french_score} td #{b.french_score}
td td
a.btn.btn-sm.btn-secondary href="/wjpc_bets/view/#{b.id}" a.btn.btn-sm.btn-secondary href="/wjpc_bets/#{@lang}/view/#{b.id}"
= t("worlds.main.view_bet") = t("worlds.main.view_bet")

View File

@@ -1,6 +1,6 @@
= render "worlds_nav" = render "worlds_nav"
= form_with model: @world_bet, url: "/wjpc_bets/new", method: :post do |form| = form_with model: @world_bet, url: "/wjpc_bets/#{@lang}/new", method: :post do |form|
.alert.alert-primary role="alert" .alert.alert-primary role="alert"
= t("worlds.new.message") = t("worlds.new.message")

View File

@@ -83,12 +83,12 @@ Rails.application.routes.draw do
"/public/#{contest.friendly_id}/offline/#{offline.generate_token_for(:token)}/completed" "/public/#{contest.friendly_id}/offline/#{offline.generate_token_for(:token)}/completed"
end end
get "wjpc_bets", to: redirect("/wjpc_bets/main") get "wjpc_bets", to: redirect("/wjpc_bets/fr/main")
get "wjpc_bets/main", to: "worlds#main" get "wjpc_bets/:lang/main", to: "worlds#main"
get "wjpc_bets/about", to: "worlds#about" get "wjpc_bets/:lang/about", to: "worlds#about"
get "wjpc_bets/collaborative_filling", to: "worlds#collab" get "wjpc_bets/:lang/collaborative_filling", to: "worlds#collab"
get "wjpc_bets/new", to: "worlds#new" get "wjpc_bets/:lang/new", to: "worlds#new"
post "wjpc_bets/new", to: "worlds#create" post "wjpc_bets/:lang/new", to: "worlds#create"
patch "wjpc_bets/update/:participant_id", to: "worlds#update" patch "wjpc_bets/:lang/update/:participant_id", to: "worlds#update"
get "wjpc_bets/view/:bet_id", to: "worlds#view" get "wjpc_bets/:lang/view/:bet_id", to: "worlds#view"
end end