New language adding error('Unknown language code si.')

659 views
Skip to first unread message

lakshitha kumara

unread,
Apr 29, 2018, 10:17:45 PM4/29/18
to Django users
Hello Guys 

I added new language to django . language called Sinhala. My code is look like this.

On settings page 

LANGUAGE_CODE = 'en'
LANGUAGES = [
    ('si', _('Sinhala')),
    ('en', _('English')),
]
TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

LOCALE_PATHS = (
    os.path.join(os.path.dirname(__file__), "../locale"),
)

On locale folder 

__init__.py

LANG_INFO = {
    'si': {
        'bidi': False,
        'code': 'si',
        'name': 'Sinhala',
        'name_local': 'Sinhala',
    },
}
I ran this command after that 
manage.py makemessages -l si
manage.py compilemessages

When i goes to admin URL with sinhala language its working fine i try get all supported language give this error 
<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
    <input name="next" type="hidden" value="{{ redirect_to }}" />
    <select name="language">
        {% get_current_language as LANGUAGE_CODE %}
        {% get_available_languages as LANGUAGES %}
        {% get_language_info_list for LANGUAGES as languages %}
        {% for language in languages %}
            <option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected{% endif %}>
                {{ language.name_local }} ({{ language.code }})
            </option>
        {% endfor %}
    </select>
    <input type="submit" value="Go" />
</form>

lakshitha kumara

unread,
Apr 30, 2018, 6:37:36 AM4/30/18
to Django users
Hello guys sorry this is the error.

KeyError at /accounts/login/

'Unknown language code si.'
Request Method:GET
Request URL:http://localhost.test:8000/accounts/login/
Django Version:2.0.4
Exception Type:KeyError
Exception Value:
'Unknown language code si.'
Exception Location:E:\HiveProject\DjangoWeb\lib\site-packages\django\utils\translation\__init__.py in get_language_info, line 244
Python Executable:E:\HiveProject\DjangoWeb\Scripts\python.exe
Python Version:3.6.4
Python Path:
['E:\\HiveProject\\DjangoWeb\\hive',
 'E:\\HiveProject\\DjangoWeb\\Scripts\\python36.zip',
 'E:\\HiveProject\\DjangoWeb\\DLLs',
 'E:\\HiveProject\\DjangoWeb\\lib',
 'E:\\HiveProject\\DjangoWeb\\Scripts',
 'c:\\python36\\Lib',
 'c:\\python36\\DLLs',
 'E:\\HiveProject\\DjangoWeb',
 'E:\\HiveProject\\DjangoWeb\\lib\\site-packages']
Server time:Mon, 30 Apr 2018 06:34:03 +0000

Jason

unread,
Apr 30, 2018, 7:00:21 AM4/30/18
to Django users
The reason is that language code is not supported by django, but there's a procedure to add custom languages.


Specifically, this StackOverflow post describes the method to add the translation files, but you also need those translation files from somewhere.

lakshitha kumara

unread,
Apr 30, 2018, 8:04:01 AM4/30/18
to Django users
Hello Jason,

Thanks you for your reply but unfortunately that example not working any more with django 2 and python 3 .

Thanks

On Monday, April 30, 2018 at 7:47:45 AM UTC+5:30, lakshitha kumara wrote:

Deniz Bazan

unread,
Aug 9, 2018, 11:31:58 AM8/9/18
to Django users
Hi Kumara, did you  find a solution for your question, because i have same problem. 
Message has been deleted

lakshitha kumara

unread,
Aug 31, 2018, 12:41:39 AM8/31/18
to Django users
Hello Bazan

you can be fixed this issue this override Django locale file. setting up your settings.py file like the below.

EXTRA_LANG_INFO = {
    'si': {
        'bidi': False,
        'code': 'si',
        'name': 'Sinhala',
        'name_local': 'සිංහල',
    },
    'en': {
        'bidi': False,
        'code': 'en',
        'name': 'English',
        'name_local': 'English',
    },
}
LANG_INFO = dict(EXTRA_LANG_INFO.items())
django.conf.locale.LANG_INFO = LANG_INFO

LANGUAGE_CODE = 'en'
LANGUAGES = [
    ('en', _('English')),
    ('si', _('Sinhala')),
]

This one fixed the issue. should remember to add all language details your using to EXTRA_LANG_INFO variable 

Thanks
Reply all
Reply to author
Forward
0 new messages