Reputation: 476
conditions = []
for i in range(1, 13):
with different_locale('lt_LT'):
conditions.append(calendar.month_name[i])
Trying to get all months in my native "Lithuanian" language. Result of the code :
['sausis', 'vasaris', 'kovas', 'balandis', 'geguþë', 'birþelis', 'liepa', 'rugpjûtis', 'rugsëjis', 'spalis', 'lapkritis', 'gruodis']
expected result:
['sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', 'rugsėjis', 'spalis', 'lapkritis', 'gruodis']
Also tried "lt_LT.UTF-8" but got these results : 'gegužÄ\x97', 'birželis'
Any ideas why?
Upvotes: 2
Views: 266
Reputation: 4264
I would recommend using django's translation.override
context manager. Here is a docs example.
I've tried the following script locally and it returned the desired result.
import calendar
from django.utils import translation
from django.utils.translation import gettext as _
conditions = []
for i in range(1, 13):
with translation.override('lt_LT'):
conditions.append(_(calendar.month_name[i]))
Output:
['sausis', 'vasaris', 'kovas', 'balandis', 'gegu\xc5\xbe\xc4\x97', 'bir\xc5\xbeelis', 'liepa', 'rugpj\xc5\xabtis', 'rugs\xc4\x97jis', 'spalis', 'lapkritis', 'gruodis']
If you print them it yields:
sausis
vasaris
kovas
balandis
gegužė
birželis
liepa
rugpjūtis
rugsėjis
spalis
lapkritis
gruodis
Upvotes: 2