Psycojoker / prosopopee

a static website generator to make beautiful customizable pictures galleries that tell a story
http://prosopopee.readthedocs.org
GNU General Public License v3.0
331 stars 56 forks source link

internationalization #13

Open julienmalik opened 8 years ago

julienmalik commented 8 years ago

I need to make prosopopee multilingual. Probably it is not so much work and modifications, so i'd like to implement it.

Opening this issue in the hope to get feedback first (so that it has a chance to get merged upstream in the future).

My initial thoughts:

Any title/subtitle/text could have :

title: Hello
  fr : Salut
  es: Ola

The list of translations might need to be referenced from the main settings. Then for each page we render the different flavors :

and in all headers, we put a small widget with flags to switch between languages (ideas welcome for that, i'm far from fluent in html/css/js).

julienmalik commented 8 years ago

Also, loading of the proper translated flavor of the site depending on user's settings would be awesome, but this is probably impossible with a static website. is it really ?

julienmalik commented 8 years ago

See https://www.flag-sprites.com/ for free flags with css code ready

julienmalik commented 8 years ago

with a small javascript snippet it should be possible to redirect to the user's language specific version of the page (more or less like simone does for yunohost doc ?)

julienmalik commented 8 years ago

See https://github.com/yunohost/yunohost-admin/blob/unstable/src%2Fjs%2Fyunohost%2Fmain.js#L111-L119

redirect in js with : document.location.href = "https://tonporn.com"

julienmalik commented 8 years ago

Jinja has a gettext extension : http://jinja.pocoo.org/docs/dev/extensions/#i18n-extension This could probably help a lot, and decouple quite well localization functionnalities from the core of prosopopee.

I made an attempt with stuff like :

title:
  fr: Salut
  es: Ola

but I fear this will become complex to handle all the different text attributes of individual sections which all have a different data model (e.g. full-picture and text).

Psycojoker commented 8 years ago

Regarding flags: I've been taugh that using flag is apparently bad for i18n and that language name or short name should be used instead.

julienmalik commented 8 years ago

An experiment i'm relatively happy with : https://gist.github.com/julienmalik/e6544ad26e82bae4381c

julienmalik commented 8 years ago

beginning of a solution here : https://github.com/julienmalik/prosopopee/tree/internationalization it generates index.$lang.html for all langs if you put e.g. :

multilingual: 
  - fr
  - es

in the root settings.yaml

to be multilingual the gallery .yaml then needs to be like :

title:
    fr: Salut
    es: Ola

but the monolingual case is still supported as before. when generating a multilingual version, if a string is not translated (title: Hello) then it is used for all languages.

multi langages are supported only for title, subtitle and text keys.