mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-14 18:01:42 +00:00
Merge branch 'locale-fixes' into rails
This commit is contained in:
commit
e935fb5433
9 changed files with 47 additions and 98 deletions
|
@ -40,11 +40,21 @@ class ApplicationController < ActionController::Base
|
|||
site
|
||||
end
|
||||
|
||||
# Devuelve el idioma actual y si no lo encuentra obtiene uno por
|
||||
# defecto.
|
||||
#
|
||||
# Esto se refiere al idioma de la interfaz, no de los artículos.
|
||||
def current_locale(include_params: true, site: nil)
|
||||
return params[:locale] if include_params && params[:locale].present?
|
||||
|
||||
current_usuarie&.lang || I18n.locale
|
||||
end
|
||||
|
||||
# El idioma es el preferido por le usuarie, pero no necesariamente se
|
||||
# corresponde con el idioma de los artículos, porque puede querer
|
||||
# traducirlos.
|
||||
def set_locale(&action)
|
||||
I18n.with_locale(current_usuarie&.lang || I18n.default_locale, &action)
|
||||
I18n.with_locale(current_locale(include_params: false), &action)
|
||||
end
|
||||
|
||||
# Muestra una página 404
|
||||
|
|
|
@ -14,7 +14,7 @@ class PostsController < ApplicationController
|
|||
|
||||
# Las URLs siempre llevan el idioma actual o el de le usuarie
|
||||
def default_url_options
|
||||
{ locale: params[:locale] || current_usuarie&.lang || I18n.locale }
|
||||
{ locale: current_locale }
|
||||
end
|
||||
|
||||
def index
|
||||
|
@ -27,7 +27,7 @@ class PostsController < ApplicationController
|
|||
|
||||
# XXX: Cada vez que cambiamos un Post tocamos el sitio con lo que es
|
||||
# más simple saber si hubo cambios.
|
||||
if @category || @layout || stale?(@site)
|
||||
if @category || @layout || stale?([current_usuarie, @site])
|
||||
@posts = @site.posts(lang: locale)
|
||||
@posts = @posts.where(categories: @category) if @category
|
||||
@posts = @posts.where(layout: @layout) if @layout
|
||||
|
@ -120,7 +120,7 @@ class PostsController < ApplicationController
|
|||
# TODO: Notificar si se pudo o no
|
||||
service.destroy
|
||||
site.touch
|
||||
redirect_to site_posts_path(site)
|
||||
redirect_to site_posts_path(site, locale: post.locale.value)
|
||||
end
|
||||
|
||||
# Reordenar los artículos
|
||||
|
@ -133,7 +133,7 @@ class PostsController < ApplicationController
|
|||
|
||||
service.reorder
|
||||
site.touch
|
||||
redirect_to site_posts_path(site)
|
||||
redirect_to site_posts_path(site, locale: site.default_locale)
|
||||
end
|
||||
|
||||
# Devuelve el idioma solicitado a través de un parámetro, validando
|
||||
|
@ -144,7 +144,7 @@ class PostsController < ApplicationController
|
|||
# solicite a le usuarie crear el nuevo idioma y que esto lo agregue al
|
||||
# _config.yml del sitio en lugar de mezclar idiomas.
|
||||
def locale
|
||||
@locale ||= site&.locales&.find(-> { I18n.locale }) do |l|
|
||||
@locale ||= site&.locales&.find(-> { site&.default_locale }) do |l|
|
||||
l.to_s == params[:locale]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -23,7 +23,7 @@ class SitesController < ApplicationController
|
|||
def show
|
||||
authorize site
|
||||
|
||||
redirect_to site_posts_path(site)
|
||||
redirect_to site_posts_path(site, locale: site.default_locale)
|
||||
end
|
||||
|
||||
def new
|
||||
|
@ -40,7 +40,7 @@ class SitesController < ApplicationController
|
|||
params: site_params)
|
||||
|
||||
if (@site = service.create).persisted?
|
||||
redirect_to site_posts_path(@site)
|
||||
redirect_to site_posts_path(@site, locale: @site.default_locale)
|
||||
else
|
||||
render 'new'
|
||||
end
|
||||
|
@ -49,7 +49,7 @@ class SitesController < ApplicationController
|
|||
def edit
|
||||
authorize site
|
||||
|
||||
breadcrumb site.title, site_posts_path(site), match: :exact
|
||||
breadcrumb site.title, site_posts_path(site, locale: site.default_locale), match: :exact
|
||||
breadcrumb 'sites.edit', site_path(site)
|
||||
|
||||
SiteService.new(site: site).build_deploys
|
||||
|
@ -62,7 +62,7 @@ class SitesController < ApplicationController
|
|||
usuarie: current_usuarie)
|
||||
|
||||
if service.update.valid?
|
||||
redirect_to site_posts_path(site)
|
||||
redirect_to site_posts_path(site, locale: site.default_locale)
|
||||
else
|
||||
render 'edit'
|
||||
end
|
||||
|
@ -74,7 +74,7 @@ class SitesController < ApplicationController
|
|||
# XXX: Convertir en una máquina de estados?
|
||||
DeployJob.perform_async site.id if site.enqueue!
|
||||
|
||||
redirect_to site_posts_path(site)
|
||||
redirect_to site_posts_path(site, locale: site.default_locale)
|
||||
end
|
||||
|
||||
def reorder_posts
|
||||
|
@ -94,7 +94,7 @@ class SitesController < ApplicationController
|
|||
flash[:danger] = I18n.t('errors.posts.reorder')
|
||||
end
|
||||
|
||||
redirect_to site_posts_path(site)
|
||||
redirect_to site_posts_path(site, locale: site.default_locale)
|
||||
end
|
||||
|
||||
def fetch
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
- metadata = post[attribute]
|
||||
- type = metadata.type
|
||||
|
||||
- cache metadata do
|
||||
- cache [metadata, I18n.locale] do
|
||||
= render("posts/attributes/#{type}",
|
||||
base: 'post', post: post, attribute: attribute,
|
||||
metadata: metadata, site: site,
|
||||
|
|
|
@ -73,10 +73,7 @@
|
|||
-#
|
||||
TODO: Solo les usuaries cachean porque tenemos que separar
|
||||
les botones por permisos.
|
||||
|
||||
TODO: Verificar qué pasa cuando se gestiona el sitio en
|
||||
distintos idiomas a la vez
|
||||
- cache_if @usuarie, post do
|
||||
- cache_if @usuarie, [post, I18n.locale] do
|
||||
- checkbox_id = "checkbox-#{post.uuid.value}"
|
||||
%tr{ id: post.uuid.value, data: { target: 'reorder.row' } }
|
||||
%td
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
- metadata = @post[attr]
|
||||
- next unless metadata.front_matter?
|
||||
|
||||
- cache metadata do
|
||||
- cache [metadata, I18n.locale] do
|
||||
= render("posts/attribute_ro/#{metadata.type}",
|
||||
post: @post, attribute: attr,
|
||||
metadata: metadata,
|
||||
|
@ -36,6 +36,6 @@
|
|||
- metadata = @post[attr]
|
||||
- next if metadata.front_matter?
|
||||
|
||||
- cache metadata do
|
||||
- cache [metadata, I18n.locale] do
|
||||
%section.editor{ id: attr, dir: dir }
|
||||
= @post.public_send(attr).to_s.html_safe
|
||||
|
|
|
@ -18,12 +18,12 @@
|
|||
-#
|
||||
TODO: Solo les usuaries cachean porque tenemos que separar
|
||||
les botones por permisos.
|
||||
- cache_if (rol.usuarie? && !rol.temporal), site do
|
||||
- cache_if (rol.usuarie? && !rol.temporal), [site, I18n.locale] do
|
||||
%tr
|
||||
%td
|
||||
%h2
|
||||
- if policy(site).show?
|
||||
= link_to site.title, site_path(site)
|
||||
= link_to site.title, site_posts_path(site, locale: site.default_locale)
|
||||
- else
|
||||
= site.title
|
||||
%p.lead= site.description
|
||||
|
|
|
@ -84,10 +84,6 @@ en:
|
|||
title: Link to www
|
||||
success: Success!
|
||||
error: Error
|
||||
deploy_private:
|
||||
title: Private version
|
||||
success: Success!
|
||||
error: Error
|
||||
deploy_zip:
|
||||
title: Build ZIP file
|
||||
success: Available for download
|
||||
|
@ -96,6 +92,10 @@ en:
|
|||
title: Host as Tor Hidden Service
|
||||
success: Success!
|
||||
error: Error
|
||||
deploy_private:
|
||||
title: Private version
|
||||
success: Success!
|
||||
error: Error
|
||||
deploy_alternative_domain:
|
||||
title: Alternative domain name
|
||||
success: Success!
|
||||
|
@ -123,6 +123,7 @@ en:
|
|||
models:
|
||||
usuarie: User
|
||||
licencia: License
|
||||
design: Design
|
||||
attributes:
|
||||
usuarie:
|
||||
email: 'E-mail address'
|
||||
|
@ -130,27 +131,22 @@ en:
|
|||
password_confirmation: 'Password confirmation'
|
||||
current_password: 'Current password'
|
||||
lang: 'Main language'
|
||||
remember_me: Remember me
|
||||
site:
|
||||
name: 'Name'
|
||||
title: 'Title'
|
||||
description: 'Description'
|
||||
colaboracion_anonima: Enable anonymous collaboration
|
||||
acepta_invitades: Enable collaboration
|
||||
colaboracion_anonima: Enable anonymous collaboration
|
||||
contact: Enable contact forms
|
||||
tienda_url: Store URL
|
||||
tienda_api_key: Store access key
|
||||
errors:
|
||||
models:
|
||||
site:
|
||||
attributes:
|
||||
deploys:
|
||||
deploy_local_presence: 'We need to be build the site!'
|
||||
invitadx:
|
||||
attributes:
|
||||
email:
|
||||
taken: 'This e-mail address is already taken, please choose a different one'
|
||||
password_confirmation:
|
||||
confirmation: "The passwords don't match"
|
||||
acepta_politicas_de_privacidad:
|
||||
no_acepta_politicas_de_privacidad: "Please read and accept the privacy policy"
|
||||
design_id:
|
||||
layout_incompatible:
|
||||
error: "Design can't be changed because there are posts with incompatible layouts"
|
||||
|
@ -182,30 +178,6 @@ en:
|
|||
usuarie:
|
||||
edit: Edit my profile
|
||||
category: 'Category'
|
||||
i18n:
|
||||
top: 'Back to top'
|
||||
index: "Here is where you edit the text on your site that doesn't belong to a post, such as its description, sections, buttons... If you change languages up there in the title to be the same, you can edit them. If they're different, you can translate from one into the other."
|
||||
count: 'This is the amount of texts.'
|
||||
toc: 'Jump to this section'
|
||||
meta: 'Metadata'
|
||||
navegacion: 'Navigation'
|
||||
inicio: 'Home'
|
||||
volver: 'Back'
|
||||
entrar: 'Enter'
|
||||
cerrar: 'Close'
|
||||
anchor: 'Internal links'
|
||||
nav: 'Menu'
|
||||
nav-lang: 'Language menu'
|
||||
modulos: 'Modules'
|
||||
header: 'Header'
|
||||
sobre: 'About'
|
||||
metodologia: 'Methodology'
|
||||
planeando_recursos: 'Planning resources'
|
||||
rutas: 'Agendas'
|
||||
complementarios: 'Materials'
|
||||
recursos: 'Resources'
|
||||
contacta: 'Contact us'
|
||||
agradecimientos: 'Acknowledgments'
|
||||
sites:
|
||||
index: 'This is the list of sites you can edit.'
|
||||
enqueued: "The site is on queue to be generated. Once this
|
||||
|
@ -217,6 +189,7 @@ en:
|
|||
invitations:
|
||||
accept: "Someone invited you to collaborate on their site. If you accept the invitation, you can access the site's edit mode."
|
||||
reject: "If you decline, you won't have access."
|
||||
pull: 'You have pending upgrades!'
|
||||
close: 'Close help'
|
||||
deploys:
|
||||
deploy_local:
|
||||
|
@ -321,15 +294,19 @@ en:
|
|||
new:
|
||||
title: 'Create site'
|
||||
submit: 'Create site'
|
||||
help: 'You can edit any of these options after site creation.'
|
||||
edit:
|
||||
title: 'Edit %{site}'
|
||||
submit: 'Save changes'
|
||||
btn: 'Configuration'
|
||||
form:
|
||||
errors:
|
||||
title: There were errors and we couldn't save your changes :(
|
||||
help: Please, look for the invalid fields to fix them
|
||||
help:
|
||||
name: "The name of your site. It can only include numbers and letters."
|
||||
title: 'The title can be anything you want'
|
||||
description: 'You site description that appears in search engines. Between 50 and 160 characters.'
|
||||
design: 'Select the design for your site. You can change it later. We add more designs from time to time!'
|
||||
licencia: 'Everything we publish has automatic copyright. This
|
||||
means nobody can use our works without explicit permission. By
|
||||
|
@ -399,6 +376,7 @@ en:
|
|||
en: 'English'
|
||||
ar: 'Arabic'
|
||||
posts:
|
||||
caption: Post list
|
||||
attribute_ro:
|
||||
file:
|
||||
download: Download file
|
||||
|
@ -480,6 +458,10 @@ en:
|
|||
blank: Nothing
|
||||
destroy: Delete
|
||||
confirm_destroy: Are you sure?
|
||||
form:
|
||||
errors:
|
||||
title: There are some errors on the form
|
||||
help: Please, verify that all values are correct.
|
||||
usuaries:
|
||||
invite_as:
|
||||
usuaries: users
|
||||
|
|
|
@ -178,45 +178,8 @@ es:
|
|||
usuarie:
|
||||
edit: Editar mi perfil
|
||||
category: 'Categoría'
|
||||
i18n:
|
||||
top: 'Volver al principio'
|
||||
index: 'Aquí puedes editar todos los textos del sitio que no se
|
||||
corresponden con artículos, como la descripción, secciones, textos
|
||||
de botones... Si cambias los idiomas arriba para que coincidan,
|
||||
puedes editar los textos en el mismo idioma. Si los idiomas no
|
||||
coinciden, puedes traducirlos de uno a otro.'
|
||||
count: 'Esta es la cantidad de textos.'
|
||||
toc: 'Saltar hasta esta sección'
|
||||
meta: 'Metadata'
|
||||
navegacion: 'Navegación'
|
||||
inicio: 'Inicio'
|
||||
volver: 'Volver'
|
||||
entrar: 'Entrar'
|
||||
cerrar: 'Cerrar'
|
||||
anchor: 'Links internos'
|
||||
nav: 'Menú'
|
||||
nav-lang: 'Menú de idiomas'
|
||||
modulos: 'Módulos'
|
||||
header: 'Portada'
|
||||
sobre: 'Acerca'
|
||||
metodologia: 'Metodología'
|
||||
planeando_recursos: 'Planeando recursos'
|
||||
rutas: 'Rutas'
|
||||
complementarios: 'Materiales complementarios'
|
||||
recursos: 'Recursos'
|
||||
contacta: 'Contacta'
|
||||
agradecimientos: 'Agradecimientos'
|
||||
sesion: 'Sesiones'
|
||||
sesiones: 'Sesiones'
|
||||
anexo: 'Anexo'
|
||||
simple: 'Simple'
|
||||
sites:
|
||||
index: 'Este es el listado de sitios que puedes editar.'
|
||||
edit_translations: 'Puedes editar los textos que salen en tu sitio
|
||||
que no corresponden a artículos aquí, además de traducirlos a
|
||||
otros idiomas.'
|
||||
edit_posts: 'Aquí verás el listado de todos los artículos y podrás
|
||||
editarlos o crear nuevos'
|
||||
enqueued: 'El sitio está en la cola de espera para ser generado.
|
||||
Una vez que este proceso termine, recibirás un correo indicando el
|
||||
estado y si todo fue bien, se publicarán los cambios en tu sitio
|
||||
|
@ -224,9 +187,6 @@ es:
|
|||
enqueue: 'Cuando termines de hacer cambios en tu sitio, puedes
|
||||
publicarlos con esta acción. Al finalizar recibirás un correo
|
||||
avisándote cómo fue todo.'
|
||||
build_log: 'Este es el registro de lo que sucedió mientras se
|
||||
generaba el sitio. Si hubo algún problema, saldrá aquí.'
|
||||
invitade: 'Les invitades a un sitio solo pueden crear y modificar entradas propias y no pueden publicar sin la revisión de une usuarie'
|
||||
invitations:
|
||||
accept: 'Alguien te invitó a colaborar en su sitio. Si aceptas la invitación, tendrás acceso a este sitio.'
|
||||
reject: 'Si rechazas la invitación, no tendrás acceso.'
|
||||
|
|
Loading…
Reference in a new issue