First time here? Check out the FAQ!

Why language code changed by itself?

Someday I found that I cann't voteup for somebody. Although the upvote sign turned green, but his karma doesn't go up.

In, I have

LANGUAGES = (('zh-TW', 'Chinese'),)

And I found that in the database, the repute table's language code changed by it self to lowercase after some day.

image description

Does anyone know how to fix this?
Why it set the language_code to 'zh-tw' for my language_code is 'zh-TW'?

AaronHuang's avatar
asked 2016-12-25 18:56:54 -0500, updated 2016-12-25 19:23:02 -0500
edit flag offensive 0 remove flag close merge delete


@AaronHuang what was the solution?

Evgeny's avatar Evgeny (2017-03-02 14:53:09 -0500) edit

First, I set `LANGUAGE_CODE = 'zh-tw'` and `LANGUAGES = (('zh-tw', 'Chinese'),)` in ``. And then, I change the existing `zh-TW` language code in the database table (`repute`, `askbot_post`, `askbot_thread`) to `zh-tw`. It seems to solve the problem.

AaronHuang's avatar AaronHuang (2017-03-02 23:18:14 -0500) edit
add a comment see more comments

1 Answer


This is a strange thing.

But According to Django:

zh_TW is a Locale Name: The language part is always in lower case and the country part in upper case. The separator is an underscore.

zh-tw is a Language Codes: It is generally represented in lower case, but the HTTP Accept-Language header is case-insensitive. The separator is a dash.

It is better to user those codes with all lower case (eg. zh-tw)

more info is available at Official Django Documentation.

gopalraha's avatar
answered 2017-02-24 11:31:50 -0500
edit flag offensive 0 remove flag delete link


add a comment see more comments