sutty/doc/i18n.md
2018-09-05 17:25:47 -03:00

2.2 KiB

i18n

en el plugin de i18n, _posts está vacío y lo que hacemos es intercambiarlo por los directorios de los _idioma, cambiar la baseurl y generar el sitio una vez por cada uno.

en sutty, detectamos eso y para tener acceso a todos los posts por separado, le hacemos creer el reader de jekyll que estamos cargando colecciones distintas (esta a evaluar si conviene descartar el plugin y manejarse con colecciones, pero requiere un rediseño de cyber-women.com)

entonces podemos distinguir si un sitio esta traducido, accediendo a las colecciones disponibles. las colecciones no tienen valor luego, porque son solo para engañar a jekyll por ahora.

podemos mostrar los posts de distintas formas:

  • filtrar por idioma y solo mostrar esos posts (lo mas facil)
  • asumir que un post es un post con varias traducciones e intentar mostrar todo junto. esto seria visualmente pesado
  • filtrar por idioma y mostrar en una columna las traducciones asociadas

las traducciones se asocian poniendo el slug/id del post traducido en un hash llamado lang en cada frontmatter.

a partir de eso podemos buscar el post asociado en las otras colecciones

al editar un post o previsualizarlo, hay botones para saltar a las traducciones.

al crear un post nuevo, se pueden asociar traducciones y crear posts nuevos en ese idioma.

como se puede mantener el lang actualizado para todos los posts? recorrer cada post y modificarle el front matter y salvarlo?

cada post tiene un hash lang: { idioma: 'slug' }, que contiene todas las traducciones de su slug (vendrian a ser las relaciones has_and_belongs_to_many (habtm) en active record) e incluso su propio slug:

post.front_matter['lang'] = {
  es: 'slug-en-castellano',
  en: 'english-slug'
}

entonces si el idioma es castellano y el slug cambia, recorremos todos los posts y evitamos el idioma actual, actualizando el front matter de los demas, de forma que la relacion se mantenga.

esto seria mas facil de hacer en un solo lado teniendo un _data/post_relations.yml o algo asi que tenga una sola vez todas las traducciones de los slugs, pero requiere hacer cambios en themes ya existentes

Colecciones

Cómo se van a traducir las colecciones?