Closed juanrein closed 4 months ago
Tosi hyvä!
Meillä on TIMissa olemassa seuraava funktio, joka palauttaa kielen ja osaa käsitellä eri tapaukset :
Onko tuo kuinka käyttökelpoinen babelille? Meneekö sellaisenaan?
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
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.
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ä 👍
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.
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 🎊.
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
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 🙂
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