我正在研究Django并面临翻译字符串的问题。此代码是Telegram bot的发送键盘。在代码中,您将看到SQL请求,因为机器人是在clear 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',
]
我做错了什么?
答案 0 :(得分:0)
不完全理解你的问题,你可以稍微描述一下,但是当你按照翻译模块时,代码应该有用。
正如我在您的代码中看到的,代码中缺少一些设置:
# 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 _