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?