[英]Django: Not working the translation of strings
我正在研究Django,并面临翻译字符串的问题。 该代码是Telegram机器人的发送键盘。 在代码中,您将看到SQL请求,因为该漫游器是在纯python上编写的。 我需要根据用户发送的文本在“ ru”或“ en”(默认)上翻译键盘文本。
def bot_message(request):
def settinngs(chat_id, message):
con = lite.connect('db.sqlite3')
cur = con.cursor()
sql = "SELECT City, Lang FROM Userprofile WHERE Id={} ".format(chat_id)
cur.execute(sql)
result = cur.fetchall()[0]
keyboard = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
button_change_city = types.KeyboardButton(text=_('Change name city'))
button_subs = types.KeyboardButton(text=_('Subscriptions'))
button_change_language = types.KeyboardButton(text=_('Change language'))
backs_button = types.KeyboardButton(text=_('Back'))
keyboard.add(button_change_city, button_subs, button_change_language, backs_button)
bot.send_message(message.chat.id,
'{}{}\n{}{}'.format(_('Your city: '), result[0].capitalize(), _('Language: '),
result[1]), reply_markup=keyboard)
我创建了.po和compilemessages .mo文件中的翻译
LANGUAGES = (
('ru', 'Russian'),
('en', 'English'),
)
USE_I18N = True
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
并在MIDDLEWARE中设置
MIDDLEWARE = [
'django.middleware.locale.LocaleMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
我究竟做错了什么?
尚未完全理解您的问题,您可能会描述得更多,但是当您遵循翻译模块时,代码应该可以正常工作。
正如我在您的代码中看到的那样,这是您在代码中缺少的一些设置:
# in your setting file
# define default language code 'ru' or 'en'
LANGUAGE_CODE = 'en'
在您的视图或控制器中,不要忘记导入翻译模块-
# for translation, in your case
from django.utils.translation import ugettext as _
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.