Changelog

全名 页面 提交时间 (Ascending) Unsort 内容 注释 ...
ySJ 2.0/chapter19/#116 2010-04-26 17:25:09 一个<literal>ugettext_lazy()</literal>对象并不知道如何把它自己转换成一个字节串。如果你尝试在一个需要字节串的地方使用它,事情将不会如你期待的那样。
ySJ 2.0/chapter19/#121 2010-04-26 17:26:46 如果你曾经见到到像<literal>"hello"</literal>这样的输出,你就可能在一个字节串中插入了<literal>ugettext_lazy()</literal>的结果。
ySJ 2.0/chapter19/#129 2010-04-26 17:31:54 这意味着在<literal>Meta</literal>类中显式地编写<literal>verbose_nane</literal><literal>verbose_name_plural</literal>选项,而不是依赖于Django默认的<literal>verbose_name</literal><literal>verbose_name_plural</literal>(通过检查model的类名得到)。
ySJ 2.0/chapter19/#149 2010-04-27 09:31:33 如果有<literal>noop</literal> 选项,变量查询还是有效但翻译会跳过。
ySJ 2.0/chapter19/#150 2010-04-27 09:34:07 当空缺内容要求将来再翻译时,这很有用。
ySJ 2.0/chapter19/#200 2010-04-27 09:48:32 当你在你的代码中其它地方使用这些对象时,你应当确定你不会意外地转换它们成一个字符串,因为它们应被尽量晚地转换(以便正确的地域生效)
ySJ 2.0/chapter19/#218 2010-04-27 10:10:17 如果你写你自己的类似函数并且与翻译打交道,当第一个参数是惰性翻译对象时,你会面临“做什么”的难题。
ySJ 2.0/chapter19/#222 2010-04-27 10:13:19 它修改这个函数以便 <emphasis>假如</emphasis>第一个参数是一个惰性翻译, 这个函数的赋值会被延后直到它需要被转化为一个字符串为止。
ySJ 2.0/chapter19/#239 2010-04-27 10:18:21 Django不支持把你的应用本地化到一个连它自己都还没被翻译的地域。
ySJ 2.0/chapter19/#247 2010-04-27 10:22:55 信息文件是包含了某一语言翻译字符串和对这些字符串的翻译的一个文本文件。
ySJ 2.0/chapter19/#256 2010-04-27 10:25:23 例如,巴西地区的葡萄牙语为 <literal>pt_BR</literal> ,澳大利亚地区的德语为 <literal>de_AT</literal>
ySJ 2.0/chapter19/#260 2010-04-27 10:29:52 Django项目根目录。
ySJ 2.0/chapter19/#264 2010-04-27 10:30:25 <literal>django</literal> 根目录(不是Subversion检出目录,而是通过 <literal>$PYTHONPATH</literal> 链接或位于该路径的某处)。
ySJ 2.0/chapter19/#268 2010-04-27 10:32:11 它在 <literal>locale/LANG/LC_MESSAGES</literal> 目录下创建(或更新)了一个信息文件。针对上面的<literal>de</literal>,应该是<literal>locale/de/LC_MESSAGES/django.po</literal>
ySJ 2.0/chapter19/#271 2010-04-27 10:56:33 以备你要重载缺省值,使用 <literal>--extension</literal><literal>-e</literal> 选项指定文件扩展名来检测。
ySJ 2.0/chapter19/#274 2010-04-27 10:57:14 用逗号和(或)使用<literal>-e</literal><literal>--extension</literal>来分隔多项扩展名:
ySJ 2.0/chapter19/#299 2010-04-27 10:59:31 快速解释:
ySJ 2.0/chapter19/#316 2010-04-27 11:02:32 若要对新创建的翻译字符串校验所有的源代码和模板,并且更新所有语言的信息文件,可以运行以下命令:
ySJ 2.0/chapter19/#321 2010-04-27 11:24:47 创建信息文件之后,每次对其做了修改,都需要将它重新编译成一种更有效率的形式,供 <literal>gettext</literal> 使用。可以使用<literal>django-admin.py compilemessages</literal>完成。
ySJ 2.0/chapter19/#323 2010-04-27 11:27:33 这个工具作用于所有有效的 <literal>.po</literal> 文件,创建优化过的二进制 <literal>.mo</literal> 文件供 <literal>gettext</literal> 使用。在你可以运行<literal>django-admin.py makemessages</literal>的目录下,运行<literal>django-admin.py compilemessages</literal>
ySJ 2.0/chapter19/#342 2010-04-27 13:16:50 使用 <literal>LocaleMiddleware</literal> 需要在 <literal>MIDDLEWARE_CLASSES</literal> 设置中增加 <literal>'django.middleware.locale.LocaleMiddleware'</literal>
ySJ 2.0/chapter19/#343 2010-04-27 13:17:04 中间件的顺序是有影响的,最好按照依照以下要求:
ySJ 2.0/chapter19/#349 2010-04-27 13:19:39 如果你使用<literal>CacheMiddleware</literal>,把<literal>LocaleMiddleware</literal>放在它后面。
ySJ 2.0/chapter19/#385 2010-04-27 13:24:40 解决方案就是使用一个“虚假的” <literal>gettext()</literal> 。以
ySJ 2.0/chapter19/#386 2010-04-27 13:24:51 下是一个settings文件的例子:
ySJ 2.0/chapter19/#389 2010-04-27 13:26:00 这样做的话, <literal>make-messages.py</literal> 仍会寻找并标记出将要被翻译的这些字符串,但翻译不会在运行时进行,故而需要在任何使用 <emphasis>LANGUAGES</emphasis> 的代码中用“真实的”
ySJ 2.0/chapter19/#390 2010-04-27 13:26:39 <literal>ugettext()</literal>
ySJ 2.0/chapter19/#398 2010-04-27 13:27:52 技术相关的信息ID很容易被认出来:它们都是大写的。
ySJ 2.0/chapter19/#399 2010-04-27 13:28:29 这些信息ID的翻译与其他信息不同:你需要提供其对应的本地化内容。
ySJ 2.0/chapter19/#400 2010-04-27 13:29:06 例如,对于 DATETIME_FORMAT (或 DATE_FORMAT 、 TIME_FORMAT ),应该提供希望在该语言中使用的格式化字符串。
ySJ 2.0/chapter19/#401 2010-04-27 13:30:41 格式被模板标签<literal>now</literal>用来识别格式字符串。
ySJ 2.0/chapter19/#436 2010-04-27 13:34:06 要创建信息文件,也是使用 <literal>django-admin.py makemessages.py</literal> 工具,和Django信息文件一样。
ySJ 2.0/chapter19/#437 2010-04-27 13:44:01 需要做的就是进入正确的目录—— <literal>conf/locale</literal> (在源码树的情况下)或者 <literal>locale/</literal> (在应用程序信息或项目信息的情况下)所在的目录下。
ySJ 2.0/chapter19/#446 2010-04-27 14:27:43 但是,使用应用程序相关的翻译和项目翻译在使用 <literal>make-messages</literal> 时会产生古怪的问题。它会遍历当前路径下所有的文件夹,这样可能会把应用消息文件里存在的消息ID重复放入项目消息文件中。
ySJ 2.0/chapter19/#458 2010-04-27 14:30:54 (注意这个例子使得这个视图在 <literal>/i18n/setlang/</literal> 中有效。)
ySJ 2.0/chapter19/#460 2010-04-27 14:32:00 这个视图是通过 <literal>GET</literal> 方法调用的,在请求中包含了 <literal>language</literal> 参数。
ySJ 2.0/chapter19/#490 2010-04-27 14:35:51 这些问题的主要解决方案就是 <literal>javascript_catalog</literal> 视图。该视图生成一个JavaScript代码库,包括模仿 gettext 接口的函数,和翻译字符串的数组。
ySJ 2.0/chapter19/#491 2010-04-27 14:37:46 这些翻译字符串来自于你在info_dict或URl中指定的应用,工程或Django内核。
ySJ 2.0/chapter19/#516 2010-04-27 14:45:54 也有一个<literal>ngettext</literal>接口:
ySJ 2.0/chapter19/#525 2010-04-27 14:47:26 <literal>obj</literal>包括一个JavaScript数组对象,元素值在它们对应于<literal>fmt</literal>的占位符中以它们出现的相同次序顺序插值 。
ySJ 2.0/chapter19/#535 2010-04-27 14:49:07 但是,你不应重复编写字符串插值:
ySJ 2.0/chapter19/#541 2010-04-27 14:51:08 你可以创建和更改翻译目录,
ySJ 2.0/chapter19/#541 2010-04-27 14:51:21 你可以创建和更改翻译目录,就像其他
ySJ 2.0/chapter19/#543 2010-04-27 14:51:56 Django翻译目录一样,使用django-admin.py makemessages 工具。
ySJ 2.0/chapter19/#554 2010-04-27 14:57:14 字符串域为 <literal>django</literal><literal>djangojs</literal> 。字符串域是用来区别将数据存储在同一信息文件库(一般是 <literal>/usr/share/locale/</literal> )的不同程序。django 域是为Python和模板翻译字符串服务的,被加载到全局翻译目录。
ySJ 2.0/chapter19/#555 2010-04-27 15:00:39 <literal>djangojs</literal> 域只是用来尽可能缩小JavaScript翻译的体积。
ySJ 2.0/chapter19/#562 2010-04-27 15:03:39 对于那些要提取消息或编译消息文件的人们来说,需要的只有这么多。翻译工作本身仅仅包含编辑这个类型的现存文件,但如果你要创建你自己的消息文件,或想要测试或编译一个更改过的消息文件,你将需要这个<literal>gettext</literal>公用程序。
ySJ 2.0/chapter19/#572 2010-04-27 15:04:06 在同一文件夹下展开这3个文件。(也就是
ySJ 2.0/chapter19/#577 2010-04-27 15:04:48 <literal>控制面板 > 系统> 高级 > 环境变量</literal>
ySJ 2.0/chapter19/#579 2010-04-27 15:05:09 <literal>系统变量</literal>列表中,点击<literal>Path</literal>,点击<literal>Edit</literal>
« < 90 91 92 93 94 95 96 > 96 pages