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

View File

@@ -2,14 +2,14 @@
.col
ul.nav.nav-tabs.mb-4
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")
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")
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")
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")

View File

@@ -15,6 +15,12 @@ html
a.navbar-brand href=user_path(@current_user) class="btn btn-light"
= t("nav.settings")
= 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:
.toast {

View File

@@ -14,7 +14,7 @@ h4.mt-4 Round A
- if p.round == 'a'
.row.mt-3
.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-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank")
@@ -55,7 +55,7 @@ h4.mt-5 Round B
- if p.round == 'b'
.row.mt-3
.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-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank")
@@ -70,7 +70,7 @@ h4.mt-5 Round C
- if p.round == 'c'
.row.mt-3
.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-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank")
@@ -85,7 +85,7 @@ h4.mt-5 Round D
- if p.round == 'd'
.row.mt-3
.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-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.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'
.row.mt-3
.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-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.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'
.row.mt-3
.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-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank")
@@ -129,7 +129,7 @@ h4.mt-5 = "#{t("worlds.collab.final")}"
- @participants.each do |p|
.row.mt-3
.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-text style="width: 350px;" #{Flags.get_flag(p.world_country.code) + " " + p.name}
.input-group-text = t("worlds.main.rank")

View File

@@ -23,7 +23,7 @@
td #{b.name}
td #{b.world_score}
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")
.row.mt-3
@@ -49,5 +49,5 @@
td #{b.name}
td #{b.french_score}
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")

View File

@@ -1,6 +1,6 @@
= 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"
= 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"
end
get "wjpc_bets", to: redirect("/wjpc_bets/main")
get "wjpc_bets/main", to: "worlds#main"
get "wjpc_bets/about", to: "worlds#about"
get "wjpc_bets/collaborative_filling", to: "worlds#collab"
get "wjpc_bets/new", to: "worlds#new"
post "wjpc_bets/new", to: "worlds#create"
patch "wjpc_bets/update/:participant_id", to: "worlds#update"
get "wjpc_bets/view/:bet_id", to: "worlds#view"
get "wjpc_bets", to: redirect("/wjpc_bets/fr/main")
get "wjpc_bets/:lang/main", to: "worlds#main"
get "wjpc_bets/:lang/about", to: "worlds#about"
get "wjpc_bets/:lang/collaborative_filling", to: "worlds#collab"
get "wjpc_bets/:lang/new", to: "worlds#new"
post "wjpc_bets/:lang/new", to: "worlds#create"
patch "wjpc_bets/:lang/update/:participant_id", to: "worlds#update"
get "wjpc_bets/:lang/view/:bet_id", to: "worlds#view"
end