无法让Django本地化工作

时间:2010-07-26 20:01:01

标签: python django locale

我搜索了几个线程和错误报告,但找不到解决方案。

我将Django项目的语言环境更改为pt-br,但没有任何区别。我排除了所有输入字段和输出以本地化日期和数字,特别是DECIMAL_SEPARATORTHOUSAND_SEPARATOR,包括在管理API中。但是那里的日期继续显示为yyyy-mm-dd和小数分隔符“,”在输入时会产生错误。

我做了我发现的所有事情:更改了设置,添加了本地化中间件类,启用了USE_I18N和USE_L10N,尝试手动强制setlocale等等。以下是我的settings.py的一瞥:

LANGUAGE_CODE = 'pt-br'
USE_I18N = True
USE_L10N = True

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
)

DATE_FORMAT = 'd/m/Y'
SHORT_DATE_FORMAT = 'd/m/Y'
DATE_INPUT_FORMATS = ('%d/%m/%Y', '%d/%m/%y', '%Y-%m-%d')
DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.'

我在巴西葡萄牙语Windows上运行的Python控制台是否输出了这个奇怪的结果?

>>> locale.setlocale(locale.LC_ALL, ('pt_BR', 'cp1252'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python25\lib\locale.py", line 478, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

我忘记尝试的任何想法?

4 个答案:

答案 0 :(得分:1)

Windows使用不同的区域设置ID。以下内容应该有效(从Microsoft's site上的表格中获得):

In [15]: locale.setlocale(locale.LC_ALL, 'Portuguese_Brazil')
Out[15]: 'Portuguese_Brazil.1252'

答案 1 :(得分:1)

根据Django Track,如果INPUT_FORMATS设置为USE_L10N,则会忽略True设置。

答案 2 :(得分:0)

也许有点OT,但我想在网络翻译上添加我的观点。

我强烈建议您使用Bablic。这是一种完全客户端的翻译方法。它们跟踪您网站上显示的字符串,构建“字典”,并通知您新的或未翻译的文本。它们还可以与基于云的翻译提供程序集成,以便即使是新提交的内容也可以立即翻译,而无需您跟踪或更新服务器端代码或配置。

我喜欢它,你不需要做整个收集字符串 - > send-mo-file-to-translators-&gt; compile-&gt; deploy-&gt; debug-&gt; repeat。而作为一个网络开发者,这个解决方案在我的最终没有摩擦。

答案 3 :(得分:0)

在某些情况下,在服务器上未启用,您需要运行此命令以启用区域设置(在我的服务器Ubuntu示例中)

/images/user

然后运行

if ($_POST['submit']) {
    $title = $_POST['title'];
    $deadline = $_POST['deadline'];
    $content = $_POST['content'];
    $logoname = basename($_FILES["fileToUpload"]["logoname"]; // <-- Make sure your form is ready to submit an file
   // Update below as per your need.
   $target = 'images/users/' . $logoname;
   move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target);

   $sql_blog = "INSERT INTO blog (title, deadline, content, logoname)     VALUES    ('$title', '$deadline', '$content', '$logoname')";

   $query_blog =  mysqli_query($dbcon, $sql_blog);
   echo "<script>alert('Your inquiry has been posted')</script>";
 }