makemessages的Unicode问题 - 所有Django 1.6.2 Python 3.3

 绿林VS逍遥 发布于 2023-01-20 17:04

Python 2.7升级项目- > 3.3.1Django 1.4 - > 1.6.2.

更新代码后,我们的应用程序再次运行(在py3中).
翻译是从.mo文件中提取的.

唯一的问题是我们的旧.po文件无法使用

django-admin.py makemessages -a

它显示了一个可爱的

UnicodeDecodeError: 'ascii' codec can't decode byte...

我们可以makemessages第一次运行并获取骨架文件.一旦我们将任何非ASCII(ǹ,è等)的翻译添加到msgstr值中,就makemessages无法完成.
(如果我们运行带有更高详细程度模板的makemessages,则会跳过任何非ASCII字符.)

我发现了类似问题的错误报告,但它们又回到了1.3.x版本,但没有真正适用于上述版本.


更新,更多信息:

这是异常发生的地方:
../ python3.3 /subprocess.py第847行

def _translate_newlines(self, data, encoding):
    data = data.decode(encoding)
    return data.replace("\r\n", "\n").replace("\r", "\n")

encodingANSI_X3.4-1968.我已经将模板文件保存为UTF-8以及.po文件.

这是.po标题(只是从makemessages自动创建的骨架):

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-28 22:42+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"  

这在Python 2.7和Django 1.5下使用(相同的文件)


更新#2

项目清单

创建了一个新的裸项目(django-admin.py startproject blah)

启用i18n等

创建了一个翻译(仅在settings.py中)

跑`makemessages -l de

Py2.7(#python manage.py makemessages -a)按预期工作

Py3.3(#python3 manage.py makemessages -a)失败

可能提交错误,将更新.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有