5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-06-02 11:44:17 +00:00

garantizar que todos los locales son simbolos

This commit is contained in:
f 2021-03-03 09:43:15 -03:00
parent 3bcdc5a00f
commit c006ed7f29
11 changed files with 27 additions and 34 deletions

View file

@ -159,8 +159,8 @@ class PostsController < ApplicationController
# solicite a le usuarie crear el nuevo idioma y que esto lo agregue al # solicite a le usuarie crear el nuevo idioma y que esto lo agregue al
# _config.yml del sitio en lugar de mezclar idiomas. # _config.yml del sitio en lugar de mezclar idiomas.
def locale def locale
@site&.locales&.find(-> { I18n.locale.to_s }) do |l| @site&.locales&.find(-> { I18n.locale }) do |l|
l == params[:locale] l.to_s == params[:locale]
end end
end end

View file

@ -117,16 +117,11 @@ module ApplicationHelper
"#{attribute.join('-')}-datalist" "#{attribute.join('-')}-datalist"
end end
def local_channel
"sutty-#{I18n.locale}"
end
private private
def post_t(*attribute, post:, type:) def post_t(*attribute, post:, type:)
post.layout.metadata.dig(*attribute, type.to_s, I18n.locale.to_s) || post.layout.metadata.dig(*attribute, type.to_s, I18n.locale.to_s) ||
post.layout.metadata.dig(*attribute, post.layout.metadata.dig(*attribute, type.to_s, I18n.default_locale.to_s) ||
type.to_s, I18n.default_locale.to_s) ||
I18n.t("posts.attributes.#{attribute.join('.')}.#{type}") I18n.t("posts.attributes.#{attribute.join('.')}.#{type}")
end end
end end

View file

@ -7,7 +7,7 @@ class MetadataLang < MetadataTemplate
end end
def value_from_document def value_from_document
document.collection.label document.collection.label.to_sym
end end
def value def value

View file

@ -14,9 +14,9 @@ class MetadataLocales < MetadataTemplate
# @return { lang: { title: uuid } } # @return { lang: { title: uuid } }
def values def values
@values ||= site.locales.map do |locale| @values ||= site.locales.map do |locale|
[locale.to_sym, site.posts(lang: locale).map do |post| [locale, site.posts(lang: locale).map do |post|
[post.title.value, post.uuid.value] [post.title.value, post.uuid.value]
end.to_h] end.to_h]
end.to_h end.to_h
end end
end end

View file

@ -3,8 +3,8 @@
# Una lista de valores predefinidos # Una lista de valores predefinidos
class MetadataPredefinedArray < MetadataArray class MetadataPredefinedArray < MetadataArray
def values def values
@values ||= layout[:metadata][name]['values'].map do |k, v| @values ||= layout.dig(:metadata, name, 'values')&.map do |k, v|
[v[I18n.locale.to_s], k] [v[I18n.locale.to_s], k]
end.to_h end&.to_h
end end
end end

View file

@ -57,12 +57,12 @@ MetadataTemplate = Struct.new(:site, :document, :name, :label, :type,
# Trae el idioma actual del sitio o del panel # Trae el idioma actual del sitio o del panel
# @return [String] # @return [String]
def lang def lang
@lang ||= post&.lang&.value || I18n.locale.to_s @lang ||= post&.lang&.value || I18n.locale
end end
# El valor por defecto # El valor por defecto
def default_value def default_value
layout.metadata.dig(name, 'default', lang) layout.metadata.dig(name, 'default', lang.to_s)
end end
# Valores posibles, busca todos los valores actuales en otros # Valores posibles, busca todos los valores actuales en otros

View file

@ -69,16 +69,16 @@ class Post
# date_local # date_local
# #
# TODO: Cambiar el locale en otro lado # TODO: Cambiar el locale en otro lado
site.jekyll.config['lang'] = lang.value l = lang.value.to_s
site.jekyll.config['locale'] = lang.value site.jekyll.config['locale'] = site.jekyll.config['lang'] = l
# Payload básico con traducciones. # Payload básico con traducciones.
document.renderer.payload = { document.renderer.payload = {
'site' => { 'site' => {
'data' => site.data, 'data' => site.data,
'i18n' => site.data[lang.value], 'i18n' => site.data[l],
'lang' => lang.value, 'lang' => l,
'locale' => lang.value 'locale' => l
}, },
'page' => document.to_liquid 'page' => document.to_liquid
} }

View file

@ -161,7 +161,7 @@ class Site < ApplicationRecord
# incorporadas a los sitios de Sutty, aunque les usuaries no traduzcan # incorporadas a los sitios de Sutty, aunque les usuaries no traduzcan
# sus sitios. # sus sitios.
def locales def locales
config.fetch('locales', I18n.available_locales.map(&:to_s)) @locales ||= config.fetch('locales', I18n.available_locales).map(&:to_sym)
end end
# Similar a site.i18n en jekyll-locales # Similar a site.i18n en jekyll-locales
@ -230,7 +230,7 @@ class Site < ApplicationRecord
# Crea un Struct dinámico con los valores de los locales, si # Crea un Struct dinámico con los valores de los locales, si
# llegamos a pasar un idioma que no existe vamos a tener una # llegamos a pasar un idioma que no existe vamos a tener una
# excepción NoMethodError # excepción NoMethodError
@posts ||= Struct.new(*locales.map(&:to_sym)).new @posts ||= Struct.new(*locales).new
return @posts[lang] unless @posts[lang].blank? return @posts[lang] unless @posts[lang].blank?
@ -372,7 +372,7 @@ class Site < ApplicationRecord
# Si estamos usando nuestro propio plugin de i18n, los posts están # Si estamos usando nuestro propio plugin de i18n, los posts están
# en "colecciones" # en "colecciones"
locales.each do |i| locales.map(&:to_s).each do |i|
@configuration['collections'][i] = {} @configuration['collections'][i] = {}
end end

View file

@ -103,7 +103,7 @@ PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
end end
def locale def locale
params.dig(:post, :lang) || I18n.locale params.dig(:post, :lang)&.to_sym || I18n.locale
end end
def layout def layout

View file

@ -2,7 +2,6 @@
# Se encargar de guardar cambios en sitios # Se encargar de guardar cambios en sitios
# TODO: Implementar rollback en la configuración # TODO: Implementar rollback en la configuración
# rubocop:disable Metrics/BlockLength
SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
# Crea un sitio, agrega un rol nuevo y guarda los cambios a la # Crea un sitio, agrega un rol nuevo y guarda los cambios a la
# configuración en el repositorio git # configuración en el repositorio git
@ -11,7 +10,7 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
add_role temporal: false, rol: 'usuarie' add_role temporal: false, rol: 'usuarie'
I18n.with_locale(usuarie&.lang || I18n.default_locale) do I18n.with_locale(usuarie&.lang&.to_sym || I18n.default_locale) do
site.save && site.save &&
site.config.write && site.config.write &&
commit_config(action: :create) commit_config(action: :create)
@ -24,7 +23,7 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
# Actualiza el sitio y guarda los cambios en la configuración # Actualiza el sitio y guarda los cambios en la configuración
def update def update
I18n.with_locale(usuarie&.lang || I18n.default_locale) do I18n.with_locale(usuarie&.lang&.to_sym || I18n.default_locale) do
site.update(params) && site.update(params) &&
site.config.write && site.config.write &&
commit_config(action: :update) commit_config(action: :update)
@ -80,7 +79,7 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
# Crea la licencia del sitio para cada locale disponible en el sitio # Crea la licencia del sitio para cada locale disponible en el sitio
def add_licencias def add_licencias
site.locales.map(&:to_sym).each do |locale| site.locales.each do |locale|
next unless I18n.available_locales.include? locale next unless I18n.available_locales.include? locale
Mobility.with_locale(locale) do Mobility.with_locale(locale) do
@ -110,7 +109,7 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
# TODO: Crear un layout específico para licencias así es más certera # TODO: Crear un layout específico para licencias así es más certera
# la búsqueda. # la búsqueda.
def change_licencias def change_licencias
site.locales.map(&:to_sym).each do |locale| site.locales.each do |locale|
Mobility.with_locale(locale) do Mobility.with_locale(locale) do
permalink = "#{I18n.t('activerecord.models.licencia').downcase}/" permalink = "#{I18n.t('activerecord.models.licencia').downcase}/"
post = site.posts(lang: locale).find_by(permalink: permalink) post = site.posts(lang: locale).find_by(permalink: permalink)
@ -132,4 +131,3 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
params: params).update params: params).update
end end
end end
# rubocop:enable Metrics/BlockLength

View file

@ -10,14 +10,14 @@
- next if post.lang.value == locale - next if post.lang.value == locale
- locale_t = t("locales.#{locale}.name") - locale_t = t("locales.#{locale}.name")
- values = metadata.value.select do |x| - values = metadata.value.select do |x|
- metadata.values[locale.to_sym].values.include? x - metadata.values[locale].values.include? x
.form-group .form-group
= label_tag "#{base}_#{attribute}_#{locale}", locale_t = label_tag "#{base}_#{attribute}_#{locale}", locale_t
.mapable{ dir: t("locales.#{locale}.dir"), lang: locale, .mapable{ dir: t("locales.#{locale}.dir"), lang: locale,
data: { values: values.to_json, data: { values: values.to_json,
'default-values': metadata.values[locale.to_sym].to_json, 'default-values': metadata.values[locale].to_json,
name: "#{base}[#{attribute}][]", name: "#{base}[#{attribute}][]",
list: id_for_datalist(attribute, locale), list: id_for_datalist(attribute, locale),
button: t('posts.attributes.add'), button: t('posts.attributes.add'),
@ -35,5 +35,5 @@
metadata: metadata metadata: metadata
%datalist{ id: id_for_datalist(attribute, locale) } %datalist{ id: id_for_datalist(attribute, locale) }
- metadata.values[locale.to_sym].keys.each do |value| - metadata.values[locale].keys.each do |value|
%option{ value: value } %option{ value: value }