TIM-JYU / TIM

TIM (The Interactive Material) is an open-source cloud-based platform for creating interactive learning documents.
https://tim.education/view/about/en-US
MIT License
13 stars 4 forks source link

Add babel to tim #3597

Closed juanrein closed 4 months ago

juanrein commented 5 months ago

Otetaan babel käyttöön pythonissa ja jinja templateissa olevien tekstien kääntämiseksi.

https://python-babel.github.io/flask-babel/

Liittyy #1237

Korjattavaa

Aikavyöhykkeen voisi asettaa timezone_selector=get_timezone

Käännöksien luominen

Luodaan suomenkieliset käännökset timApp/i18n tiedostoon:

source .venv/bin/activate cd timApp/ pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot . pybabel init -i messages.pot -d i18n -l fi

Kirjoita käännökset timApp/i18n/fi/LC_MESSAGES/messages.po tiedostoon

pybabel compile -d i18n

Kun käännökset muuttuvat niin aja:

pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot .

pybabel update -i messages.pot -d i18n

Kirjoita käännökset timApp/i18n/fi/LC_MESSAGES/messages.po tiedostoon

pybabel compile -d i18n

Käännettäviä kohtia

https://github.com/TIM-JYU/TIM/blob/master/timApp/plugin/qst/qst.py#L942

https://github.com/TIM-JYU/TIM/blob/master/timApp/plugin/plugin.py#L498

dezhidki commented 5 months ago

Tosi hyvä!

Meillä on TIMissa olemassa seuraava funktio, joka palauttaa kielen ja osaa käsitellä eri tapaukset :

https://github.com/TIM-JYU/TIM/blob/073b17a7606c95008ab39b0828d40d66f271df7c/timApp/util/locale.py#L10-L25

Onko tuo kuinka käyttökelpoinen babelille? Meneekö sellaisenaan?

juanrein commented 5 months ago

Tuo get_locale palauttaa tossa yhteydessä ainakin lokaalisti aina en-US enkä keksinyt miten sen sais korjattua. Olisin testannut onko tilanne tilanne eri tossa testipalvelimella, mut en saanut sitä päivitettyä. Valittua tosta manifest unknown :sta @dezhidki

dezhidki commented 5 months ago

Pahoittelen viivettä.

Pistin tämän PR:n kontin GHCR:ään, joten nyt ./tim dc pull toimii. Laitoin PRsi timdevs01-2:een, näyttäisi käynnistyvän. Voit siis jatkaa testaamista timdevsissa.

Veikkaan, että tuo en-US tulee siitä, että lokaalisti kääntää vain bdw:llä. Jos kokeilet lokaalisti esim. sammuttaa bdw:n ja kääntää skriptit ./tim js:llä (tai PyCharmissa bdw:n sijaan vaan "b"), niin sillä saa tuotantoskriptit käännettyä. Pitäisi sitten lokaalistikin kielen vaihto toimia.

dezhidki commented 5 months ago

Tähän vähän liittyen, onko mahdollista saada babel tunnistamaan oletuskielikoodiksi "en-US" eikä vaan "en"? Silloin meidän kielikoodit olisivat samat kuin Angularissa.

Sitten jatkona, saisiko käännöstiedostot laittaa esim. polkuun timApp/i18n (tai johonkin sen alapolkuun)? Siellä on nyt meidän selain-UI;n käännökset, joten olisi ihan kiva saada myös kaikki palvelinpuolen käännökset samaan polkuun:

https://github.com/TIM-JYU/TIM/tree/master/timApp/i18n

Mutta siis tuo koko juttu vaikuttaa tosi hyvältä 👍

juanrein commented 4 months ago

Mä laitoin nuo käännökset tonne i18n polun alle. Tuon en-US sais varmaan tunnistettua jos tekisi erikseen käännökset i18n/en-us/ ja päivittäis niitä manuaalisesti.

Mä en saanut tuota get_locale:a toimimaan edes timdevsissä. Tuo palauttaa aina tuossa babel_get_locale:n kontekstissa "en-US", mutta kun joku muu kutsuu sitä niin tulee se oikea "fi". Sitä request.cookies.get("lang") ei ole tuossa olemassa.

Se ei tule tuonne endpointille https://github.com/TIM-JYU/TIM/blob/master/tim_common/pluginserver_flask.py#L426 Mutta esim tuon endpointin tapauksessa https://github.com/TIM-JYU/TIM/blob/master/timApp/plugin/quantum_circuit/quantumCircuit.py tuo lang on asetettu oikein.

dezhidki commented 4 months ago

Okei, joo, hyvä huomio. Pienen säätämisen jälkeen tuo onnistui niin, että pluginien kutsussa välittää Accept-Language-headerissa käyttäjän tämänhetkisen kielen (ks. https://github.com/TIM-JYU/TIM/pull/3597/commits/49efb705b0a23335baba288baff423332aa87b35 ). Testdevsissa tuo näyttääkin nyt oikeasti toimivan:

https://timdevs01-2.it.jyu.fi/view/users/test-user-1/kvantti/test-kvantti

Lisäsin nyt samalla yleisimmät i18n-komennot TIM CLI:hin (tim i18n extract ja tim i18n compile) sekä korjasin tuon mypyn valitukset.

Tuo muuten vaikuttaa olevan sitten valmis, vai tuleeko tähän muuta vielä olennaista? Voisin tuota vielä hieman testata ja muuten oikeastaan mergetä TIMiin. Mielestäni tuo nyt toimii aika mallikkaasti 🎊.

juanrein commented 4 months ago

Kiitti. Lisäsin vielä ton polun noihin jinja2 templateihin ja kokeilin kääntää yhen kohan, joka tulee, jos menee sivulle, jota ei ole olemassa (yläreunaan). Kokeile vaikka https://timdevs01-2.it.jyu.fi/view/users/test-user-1/kvantti/test-kvanttif

dezhidki commented 4 months ago

Jes, hyvin näyttää toimivan kyllä. Minä testaan vielä hieman lisää tänään ja jos kaikki on OK, niin mergetään tämä masteriin 🙂