WIP traducciones, ya se pueden editar

This commit is contained in:
f 2020-05-23 13:52:58 -03:00
parent 8d991c4c75
commit b41696c15c
9 changed files with 51 additions and 1 deletions

View file

@ -16,6 +16,7 @@ class PostsController < ApplicationController
@site = find_site
@category = params.dig(:category)
@layout = params.dig(:layout).try(:to_sym)
@locale = locale
# XXX: Cada vez que cambiamos un Post tocamos el sitio con lo que es
# más simple saber si hubo cambios.

View file

@ -235,6 +235,8 @@ class Site < ApplicationRecord
#
# TODO: Traer recursivamente, si el campo contiene Hash
#
# TODO: Mover a PostRelation#pluck
#
# @param attr [Symbol|String] El atributo a buscar
# @return Array
def everything_of(attr, lang: nil)

View file

@ -4,6 +4,7 @@
.taggable{ data: { values: metadata.value.join(','),
name: "post[#{attribute}][]", list: id_for_datalist(attribute),
remove: 'false', legend: post_label_t(attribute, post: post),
button: t('posts.attributes.add'),
described: id_for_help(attribute) } }
= text_field(*field_name_for('post', attribute, '[]'),

View file

@ -0,0 +1,36 @@
-#
Crea un input-map para cada idioma por separado. Podríamos hacer uno
solo que tenga todos los idiomas pero puede ser una interfaz confusa.
TODO: Esto permite seleccionar más de una traducción por idioma...
- site.locales.each do |locale|
-# Ignorar el idioma actual
- next if post.lang.value == locale
- values = metadata.value.select do |x|
- metadata.values[locale.to_sym].values.include? x
.form-group
= label_tag "post_#{attribute}_#{locale}", t(locale)
.mapable{ data: { values: values.to_json,
'default-values': metadata.values[locale.to_sym].to_json,
name: "post[#{attribute}][]",
list: id_for_datalist(attribute, locale),
button: t('posts.attributes.add'),
remove: 'false', legend: t(locale),
described: id_for_help(attribute, locale) } }
= text_field(*field_name_for('post', attribute, '[]'),
value: values.join(', '),
**field_options(attribute, metadata))
= render 'posts/attribute_feedback',
post: post,
attribute: [attribute, 'mapable'].flatten,
metadata: metadata
%datalist{ id: id_for_datalist(attribute, locale) }
- metadata.values[locale.to_sym].keys.each do |value|
%option{ value: value }

View file

@ -5,6 +5,7 @@
'default-values': metadata.values.to_json,
name: "post[#{attribute}][]", list: id_for_datalist(attribute),
remove: 'false', legend: post_label_t(attribute, post: post),
button: t('posts.attributes.add'),
described: id_for_help(attribute) } }
= text_field(*field_name_for('post', attribute, '[]'),

View file

@ -5,6 +5,7 @@
'default-values': metadata.values.to_json,
name: "post[#{attribute}][]", list: id_for_datalist(attribute),
remove: 'false', legend: post_label_t(attribute, post: post),
button: t('posts.attributes.add'),
described: id_for_help(attribute) } }
= text_field(*field_name_for('post', attribute, '[]'),

View file

@ -39,7 +39,7 @@
.locales
- @site.locales.each do |locale|
= link_to t(locale), site_posts_path(@site, locale: locale),
class: 'mr-2 mt-2 mb-2'
class: "mr-2 mt-2 mb-2#{locale == @locale ? 'active font-weight-bold' : ''}"
%table.table.table-condensed.table-draggable
%tbody
- @posts.each_with_index do |post, i|

View file

@ -368,6 +368,7 @@ en:
invalid_help: 'Some fields need attention! Please search for the fields marked as invalid.'
sending_help: Saving, please wait...
attributes:
add: Add
lang:
label: Language
date:
@ -381,6 +382,9 @@ en:
geo:
uri: 'Open in app'
osm: 'Open in web map'
locales:
mapable:
help: You can link to the article's translation by looking up its title here and pressing Add
reorder: 'Reorder posts'
sort:
by: 'Sort by'

View file

@ -376,6 +376,7 @@ es:
invalid_help: '¡Te faltan completar algunos campos! Busca los que estén marcados como inválidos'
sending_help: Guardando, por favor espera...
attributes:
add: Agregar
lang:
label: Idioma
date:
@ -389,6 +390,9 @@ es:
geo:
uri: 'Abrir en aplicación'
osm: 'Abrir en mapa web'
locales:
mapable:
help: Puedes vincular traducciones buscando el título aquí y presionando Agregar
reorder: 'Reordenar artículos'
sort:
by: 'Ordenar por'