Files
hustoj/web/python-docs/library/locale.html
2025-03-09 17:10:56 +08:00

767 lines
65 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>locale --- 国际化服务 &#8212; Python 3.8.20 文档</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script src="../_static/translations.js"></script>
<script src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="在 Python 3.8.20 文档 中搜索"
href="../_static/opensearch.xml"/>
<link rel="author" title="关于这些文档" href="../about.html" />
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="copyright" title="版权所有" href="../copyright.html" />
<link rel="next" title="程序框架" href="frameworks.html" />
<link rel="prev" title="gettext --- 多语种国际化服务" href="gettext.html" />
<link rel="canonical" href="https://docs.python.org/3/library/locale.html" />
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
<link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/menu.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<nav class="nav-content" role="navigation">
<a href="https://www.python.org/" class="nav-logo">
<img src="../_static/py.svg" alt="Logo"/>
</a>
<div class="version_switcher_placeholder"></div>
<form role="search" class="search" action="../search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero"
d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
</svg>
<input type="text" name="q" aria-label="快速搜索"/>
<input type="submit" value="转向"/>
</form>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<h3><a href="../contents.html">目录</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">locale</span></code> --- 国际化服务</a><ul>
<li><a class="reference internal" href="#background-details-hints-tips-and-caveats">背景、细节、提示、技巧和注意事项</a></li>
<li><a class="reference internal" href="#for-extension-writers-and-programs-that-embed-python">针对扩展程序编写人员和嵌入Python 运行的程序</a></li>
<li><a class="reference internal" href="#access-to-message-catalogs">访问消息目录</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="gettext.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gettext</span></code> --- 多语种国际化服务</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="frameworks.html"
title="下一章">程序框架</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/locale.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
这个文档所针对的是一个已不再受支持的 Python 旧版本。
你应当升级版本,并阅读
<a href="/3/library/locale.html"> Python 当前稳定版本的文档</a>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
accesskey="I">索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="frameworks.html" title="程序框架"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="gettext.html" title="gettext --- 多语种国际化服务"
accesskey="P">上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="i18n.html" accesskey="U">国际化</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-locale">
<span id="locale-internationalization-services"></span><h1><a class="reference internal" href="#module-locale" title="locale: Internationalization services."><code class="xref py py-mod docutils literal notranslate"><span class="pre">locale</span></code></a> --- 国际化服务<a class="headerlink" href="#module-locale" title="永久链接至标题"></a></h1>
<p><strong>源代码:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.8/Lib/locale.py">Lib/locale.py</a></p>
<hr class="docutils" />
<p><a class="reference internal" href="#module-locale" title="locale: Internationalization services."><code class="xref py py-mod docutils literal notranslate"><span class="pre">locale</span></code></a> 模块开通了 POSIX 本地化数据库和功能的访问。POSIX 本地化机制让程序员能够为应用程序处理某些本地化的问题,而不需要去了解运行软件的每个国家的全部语言习惯。</p>
<p id="index-0"><a class="reference internal" href="#module-locale" title="locale: Internationalization services."><code class="xref py py-mod docutils literal notranslate"><span class="pre">locale</span></code></a> 模块是在 <code class="xref py py-mod docutils literal notranslate"><span class="pre">_locale</span></code> 模块的基础上实现的,而 _locale 则又用到了 ANSI C 语言实现的本地化功能。</p>
<p><a class="reference internal" href="#module-locale" title="locale: Internationalization services."><code class="xref py py-mod docutils literal notranslate"><span class="pre">locale</span></code></a> 模块定义了以下异常和函数:</p>
<dl class="exception">
<dt id="locale.Error">
<em class="property">exception </em><code class="sig-prename descclassname">locale.</code><code class="sig-name descname">Error</code><a class="headerlink" href="#locale.Error" title="永久链接至目标"></a></dt>
<dd><p>当传给 <a class="reference internal" href="#locale.setlocale" title="locale.setlocale"><code class="xref py py-func docutils literal notranslate"><span class="pre">setlocale()</span></code></a> 的 locale 无法识别时,会触发异常。</p>
</dd></dl>
<dl class="function">
<dt id="locale.setlocale">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">setlocale</code><span class="sig-paren">(</span><em class="sig-param">category</em>, <em class="sig-param">locale=None</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.setlocale" title="永久链接至目标"></a></dt>
<dd><p>如果给定了 <em>locale</em> 而不是 <code class="docutils literal notranslate"><span class="pre">None</span></code><a class="reference internal" href="#locale.setlocale" title="locale.setlocale"><code class="xref py py-func docutils literal notranslate"><span class="pre">setlocale()</span></code></a> 会修改 <em>category</em> 的 locale 设置。可用的类别会在下面的数据描述中列出。<em>locale</em> 可以是一个字符串,也可以是两个字符串(语言代码和编码)组成的可迭代对象。若为可迭代对象,则会用地区别名引擎转换为一个地区名称。若为空字符串则指明采用用户的默认设置。如果 locale 设置修改失败,会触发 <a class="reference internal" href="#locale.Error" title="locale.Error"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Error</span></code></a> 异常。如果成功则返回新的 locale 设置。</p>
<p>如果省略 <em>locale</em> 或为 <code class="docutils literal notranslate"><span class="pre">None</span></code>,将返回 <em>category</em> 但当前设置。</p>
<p><a class="reference internal" href="#locale.setlocale" title="locale.setlocale"><code class="xref py py-func docutils literal notranslate"><span class="pre">setlocale()</span></code></a> 在大多数系统上都不是线程安全的。应用程序通常会如下调用:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">locale</span>
<span class="n">locale</span><span class="o">.</span><span class="n">setlocale</span><span class="p">(</span><span class="n">locale</span><span class="o">.</span><span class="n">LC_ALL</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>这会把所有类别的 locale 都设为用户的默认设置(通常在 <span class="target" id="index-12"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">LANG</span></code> 环境变量中指定)。如果后续 locale 没有改动,则使用多线程应该不会产生问题。</p>
</dd></dl>
<dl class="function">
<dt id="locale.localeconv">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">localeconv</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#locale.localeconv" title="永久链接至目标"></a></dt>
<dd><p>以字典的形式返回本地约定的数据库。此字典具有以下字符串作为键:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 24%" />
<col style="width: 41%" />
<col style="width: 35%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>类别</p></th>
<th class="head"><p></p></th>
<th class="head"><p>含意</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><a class="reference internal" href="#locale.LC_NUMERIC" title="locale.LC_NUMERIC"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_NUMERIC</span></code></a></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'decimal_point'</span></code></p></td>
<td><p>小数点字符。</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'grouping'</span></code></p></td>
<td><p>数字列表,指定 <code class="docutils literal notranslate"><span class="pre">'thousands_sep'</span></code> 应该出现的位置。 如果列表以 <a class="reference internal" href="#locale.CHAR_MAX" title="locale.CHAR_MAX"><code class="xref py py-const docutils literal notranslate"><span class="pre">CHAR_MAX</span></code></a> 结束,则不会作分组。如果列表以 <code class="docutils literal notranslate"><span class="pre">0</span></code> 结束,则重复使用最后的分组大小。</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'thousands_sep'</span></code></p></td>
<td><p>组之间使用的字符。</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference internal" href="#locale.LC_MONETARY" title="locale.LC_MONETARY"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_MONETARY</span></code></a></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'int_curr_symbol'</span></code></p></td>
<td><p>国际货币符号。</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'currency_symbol'</span></code></p></td>
<td><p>当地货币符号。</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'p_cs_precedes/n_cs_precedes'</span></code></p></td>
<td><p>货币符号是否在值之前(对于正值或负值)。</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'p_sep_by_space/n_sep_by_space'</span></code></p></td>
<td><p>货币符号是否通过空格与值分隔(对于正值或负值)。</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'mon_decimal_point'</span></code></p></td>
<td><p>用于货币金额的小数点。</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'frac_digits'</span></code></p></td>
<td><p>货币值的本地格式中使用的小数位数。</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'int_frac_digits'</span></code></p></td>
<td><p>货币价值的国际格式中使用的小数位数。</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'mon_thousands_sep'</span></code></p></td>
<td><p>用于货币值的组分隔符。</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'mon_grouping'</span></code></p></td>
<td><p>相当于 <code class="docutils literal notranslate"><span class="pre">'grouping'</span></code> ,用于货币价值。</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'positive_sign'</span></code></p></td>
<td><p>用于标注正货币价值的符号。</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'negative_sign'</span></code></p></td>
<td><p>用于注释负货币价值的符号。</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">'p_sign_posn/n_sign_posn'</span></code></p></td>
<td><p>符号的位置(对于正值或负值),见下文。</p></td>
</tr>
</tbody>
</table>
<p>可以将所有数值设置为 <a class="reference internal" href="#locale.CHAR_MAX" title="locale.CHAR_MAX"><code class="xref py py-const docutils literal notranslate"><span class="pre">CHAR_MAX</span></code></a> ,以指示本 locale 中未指定任何值。</p>
<p>下面给出了 <code class="docutils literal notranslate"><span class="pre">'p_sign_posn'</span></code><code class="docutils literal notranslate"><span class="pre">'n_sign_posn'</span></code> 的可能值。</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 25%" />
<col style="width: 75%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p></p></th>
<th class="head"><p>说明</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">0</span></code></p></td>
<td><p>被括号括起来的货币和金额。</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">1</span></code></p></td>
<td><p>该标志应位于值和货币符号之前。</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">2</span></code></p></td>
<td><p>该标志应位于值和货币符号之后。</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">3</span></code></p></td>
<td><p>标志应该紧跟在值之前。</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">4</span></code></p></td>
<td><p>标志应该紧跟在值之后。</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">CHAR_MAX</span></code></p></td>
<td><p>该地区未指定内容。</p></td>
</tr>
</tbody>
</table>
<p>该函数将 <code class="docutils literal notranslate"><span class="pre">LC_CTYPE</span></code> 地区设为 <code class="docutils literal notranslate"><span class="pre">LC_NUMERIC</span></code> 地区,若地区不同且数字或货币字符为非 ASCII则设置为 <code class="docutils literal notranslate"><span class="pre">LC_MONETARY</span></code> 地区。这个临时的改变会影响到其他线程。</p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.7 版更改: </span>现在在某些情况下,该函数会将 <code class="docutils literal notranslate"><span class="pre">LC_CTYPE</span></code> 地区设为 <code class="docutils literal notranslate"><span class="pre">LC_NUMERIC</span></code> 地区。</p>
</div>
</dd></dl>
<dl class="function">
<dt id="locale.nl_langinfo">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">nl_langinfo</code><span class="sig-paren">(</span><em class="sig-param">option</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.nl_langinfo" title="永久链接至目标"></a></dt>
<dd><p>以字符串形式返回一些地区相关的信息。本函数并非在所有系统都可用,而且可用的 option 在不同平台上也可能不同。可填的参数值为数值,在 locale 模块中提供了对应的符号常量。</p>
<p><a class="reference internal" href="#locale.nl_langinfo" title="locale.nl_langinfo"><code class="xref py py-func docutils literal notranslate"><span class="pre">nl_langinfo()</span></code></a> 函数可接受以下值。大部分含义都取自 GNU C 库。</p>
<dl class="data">
<dt id="locale.CODESET">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">CODESET</code><a class="headerlink" href="#locale.CODESET" title="永久链接至目标"></a></dt>
<dd><p>获取一个字符串,代表所选地区采用的字符编码名称。</p>
</dd></dl>
<dl class="data">
<dt id="locale.D_T_FMT">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">D_T_FMT</code><a class="headerlink" href="#locale.D_T_FMT" title="永久链接至目标"></a></dt>
<dd><p>获取一个字符串,可用作 <a class="reference internal" href="time.html#time.strftime" title="time.strftime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.strftime()</span></code></a> 的格式串,以便以地区特定格式表示日期和时间。</p>
</dd></dl>
<dl class="data">
<dt id="locale.D_FMT">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">D_FMT</code><a class="headerlink" href="#locale.D_FMT" title="永久链接至目标"></a></dt>
<dd><p>获取一个字符串,可用作 <a class="reference internal" href="time.html#time.strftime" title="time.strftime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.strftime()</span></code></a> 的格式串,以便以地区特定格式表示日期。</p>
</dd></dl>
<dl class="data">
<dt id="locale.T_FMT">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">T_FMT</code><a class="headerlink" href="#locale.T_FMT" title="永久链接至目标"></a></dt>
<dd><p>获取一个字符串,可用作 <a class="reference internal" href="time.html#time.strftime" title="time.strftime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.strftime()</span></code></a> 的格式串,以便以地区特定格式表示时间。</p>
</dd></dl>
<dl class="data">
<dt id="locale.T_FMT_AMPM">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">T_FMT_AMPM</code><a class="headerlink" href="#locale.T_FMT_AMPM" title="永久链接至目标"></a></dt>
<dd><p>获取一个字符串,可用作 <a class="reference internal" href="time.html#time.strftime" title="time.strftime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.strftime()</span></code></a> 的格式串,以便以 am/pm 的格式表示时间。</p>
</dd></dl>
<dl class="data">
<dt>
<code class="sig-name descname">DAY_1 ... DAY_7</code></dt>
<dd><p>获取一周中第 n 天的名称。</p>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p>这里遵循美国惯例,即 <code class="xref py py-const docutils literal notranslate"><span class="pre">DAY_1</span></code> 是星期天而不是国际惯例ISO 8601即星期一是一周的第一天。</p>
</div>
</dd></dl>
<dl class="data">
<dt>
<code class="sig-name descname">ABDAY_1 ... ABDAY_7</code></dt>
<dd><p>获取一周中第 n 天的缩写名称。</p>
</dd></dl>
<dl class="data">
<dt>
<code class="sig-name descname">MON_1 ... MON_12</code></dt>
<dd><p>获取第 n 个月的名称。</p>
</dd></dl>
<dl class="data">
<dt>
<code class="sig-name descname">ABMON_1 ... ABMON_12</code></dt>
<dd><p>获取第 n 个月的缩写名称。</p>
</dd></dl>
<dl class="data">
<dt id="locale.RADIXCHAR">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">RADIXCHAR</code><a class="headerlink" href="#locale.RADIXCHAR" title="永久链接至目标"></a></dt>
<dd><p>获取小数点字符(小数点、小数逗号等)。</p>
</dd></dl>
<dl class="data">
<dt id="locale.THOUSEP">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">THOUSEP</code><a class="headerlink" href="#locale.THOUSEP" title="永久链接至目标"></a></dt>
<dd><p>获取千位数(三位数一组)的分隔符。</p>
</dd></dl>
<dl class="data">
<dt id="locale.YESEXPR">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">YESEXPR</code><a class="headerlink" href="#locale.YESEXPR" title="永久链接至目标"></a></dt>
<dd><p>获取一个可供 regex 函数使用的正则表达式,用于识别需要回答是或否的问题的肯定回答。</p>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p>该表达式的语法适用于 C 库的 <code class="xref c c-func docutils literal notranslate"><span class="pre">regex()</span></code> 函数,可能与 <a class="reference internal" href="re.html#module-re" title="re: Regular expression operations."><code class="xref py py-mod docutils literal notranslate"><span class="pre">re</span></code></a> 中的语法不一样。</p>
</div>
</dd></dl>
<dl class="data">
<dt id="locale.NOEXPR">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">NOEXPR</code><a class="headerlink" href="#locale.NOEXPR" title="永久链接至目标"></a></dt>
<dd><p>获取一个可供 regex(3) 函数使用的正则表达式,用于识别需要回答是或否的问题的否定回答。</p>
</dd></dl>
<dl class="data">
<dt id="locale.CRNCYSTR">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">CRNCYSTR</code><a class="headerlink" href="#locale.CRNCYSTR" title="永久链接至目标"></a></dt>
<dd><p>获取货币符号,如果符号应位于数字之前,则在其前面加上“-”;如果符号应位于数字之后,则前面加“+”;如果符号应取代小数点字符,则前面加“.”。</p>
</dd></dl>
<dl class="data">
<dt id="locale.ERA">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">ERA</code><a class="headerlink" href="#locale.ERA" title="永久链接至目标"></a></dt>
<dd><p>获取一个字符串,代表当前地区使用的纪元。</p>
<p>大多数地区都没有定义该值。定义了该值的一个案例日本。日本传统的日期表示方法中,包含了当时天皇统治朝代的名称。</p>
<p>通常没有必要直接使用该值。在格式串中指定 <code class="docutils literal notranslate"><span class="pre">E</span></code> 符号,会让 <a class="reference internal" href="time.html#time.strftime" title="time.strftime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.strftime()</span></code></a> 函数启用此信息。返回字符串的格式并没有定义,因此不得假定各个系统都能理解。</p>
</dd></dl>
<dl class="data">
<dt id="locale.ERA_D_T_FMT">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">ERA_D_T_FMT</code><a class="headerlink" href="#locale.ERA_D_T_FMT" title="永久链接至目标"></a></dt>
<dd><p>获取一个字符串,可用作 <a class="reference internal" href="time.html#time.strftime" title="time.strftime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.strftime()</span></code></a> 的格式串,以便以地区特定格式表示带纪元的日期和时间。</p>
</dd></dl>
<dl class="data">
<dt id="locale.ERA_D_FMT">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">ERA_D_FMT</code><a class="headerlink" href="#locale.ERA_D_FMT" title="永久链接至目标"></a></dt>
<dd><p>获取一个字符串,可用作 <a class="reference internal" href="time.html#time.strftime" title="time.strftime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.strftime()</span></code></a> 的格式串,以便以地区特定格式表示带纪元的日期。</p>
</dd></dl>
<dl class="data">
<dt id="locale.ERA_T_FMT">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">ERA_T_FMT</code><a class="headerlink" href="#locale.ERA_T_FMT" title="永久链接至目标"></a></dt>
<dd><p>获取一个字符串,可用作 <a class="reference internal" href="time.html#time.strftime" title="time.strftime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.strftime()</span></code></a> 的格式串,以便以地区特定格式表示带纪元的时间。</p>
</dd></dl>
<dl class="data">
<dt id="locale.ALT_DIGITS">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">ALT_DIGITS</code><a class="headerlink" href="#locale.ALT_DIGITS" title="永久链接至目标"></a></dt>
<dd><p>获取 0 到 99 的表示法,最多不超过 100 个值。</p>
</dd></dl>
</dd></dl>
<dl class="function">
<dt id="locale.getdefaultlocale">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">getdefaultlocale</code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param">envvars</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#locale.getdefaultlocale" title="永久链接至目标"></a></dt>
<dd><p>尝试确定默认的地区设置,并以 <code class="docutils literal notranslate"><span class="pre">(language</span> <span class="pre">code,</span> <span class="pre">encoding)</span></code> 元组的形式返回。</p>
<p>根据 POSIX 的规范,未调用 <code class="docutils literal notranslate"><span class="pre">setlocale(LC_ALL,</span> <span class="pre">'')</span></code> 的程序采用可移植的 <code class="docutils literal notranslate"><span class="pre">'C'</span></code> 区域设置运行。 调用 <code class="docutils literal notranslate"><span class="pre">setlocale(LC_ALL,</span> <span class="pre">'')</span></code> 则可采用 <span class="target" id="index-13"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">LANG</span></code> 变量定义的默认区域。 由于不想干扰当前的区域设置,因此就以上述方式进行了模拟。</p>
<p>为了维持与其他平台的兼容性,不仅需要检测 <span class="target" id="index-14"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">LANG</span></code> 变量,还需要检测 envvars 参数给出的变量列表。首先发现的定义将被采用。 <em>envvars</em> 默认为 GNU gettext 采用的搜索路径;必须包含 <code class="docutils literal notranslate"><span class="pre">'LANG'</span></code> 变量。 GNU gettext 的搜索路径依次包含了 <code class="docutils literal notranslate"><span class="pre">'LC_ALL'</span></code><code class="docutils literal notranslate"><span class="pre">'LC_CTYPE'</span></code><code class="docutils literal notranslate"><span class="pre">'LANG'</span></code><code class="docutils literal notranslate"><span class="pre">'LANGUAGE'</span></code></p>
<p>除了 <code class="docutils literal notranslate"><span class="pre">'C'</span></code> 之外,语言代码对应 <span class="target" id="index-15"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc1766.html"><strong>RFC 1766</strong></a> 标准。若 <em>语言代码</em><em>编码</em> 无法确定,则可为 <code class="docutils literal notranslate"><span class="pre">None</span></code></p>
</dd></dl>
<dl class="function">
<dt id="locale.getlocale">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">getlocale</code><span class="sig-paren">(</span><em class="sig-param">category=LC_CTYPE</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.getlocale" title="永久链接至目标"></a></dt>
<dd><p>以列表的形式返回指定地区类别的当前设置,结果包括 <em>语言代码</em><em>编码</em><em>category</em> 可以是 <code class="xref py py-const docutils literal notranslate"><span class="pre">LC_*</span></code> 之一, <a class="reference internal" href="#locale.LC_ALL" title="locale.LC_ALL"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_ALL</span></code></a> 除外。默认为 <a class="reference internal" href="#locale.LC_CTYPE" title="locale.LC_CTYPE"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_CTYPE</span></code></a></p>
<p>除了 <code class="docutils literal notranslate"><span class="pre">'C'</span></code> 之外,语言代码对应 <span class="target" id="index-16"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc1766.html"><strong>RFC 1766</strong></a> 标准。若 <em>语言代码</em><em>编码</em> 无法确定,则可为 <code class="docutils literal notranslate"><span class="pre">None</span></code></p>
</dd></dl>
<dl class="function">
<dt id="locale.getpreferredencoding">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">getpreferredencoding</code><span class="sig-paren">(</span><em class="sig-param">do_setlocale=True</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.getpreferredencoding" title="永久链接至目标"></a></dt>
<dd><p>Return the encoding used for text data, according to user preferences. User
preferences are expressed differently on different systems, and might not be
available programmatically on some systems, so this function only returns a
guess.</p>
<p>某些系统必须调用 <a class="reference internal" href="#locale.setlocale" title="locale.setlocale"><code class="xref py py-func docutils literal notranslate"><span class="pre">setlocale()</span></code></a> 才能获取用户偏好,所以本函数不是线程安全的。如果不需要或不希望调用 setlocale<em>do_setlocale</em> 应设为 <code class="docutils literal notranslate"><span class="pre">False</span></code></p>
<p>On Android or in the UTF-8 mode (<a class="reference internal" href="../using/cmdline.html#id5"><code class="xref std std-option docutils literal notranslate"><span class="pre">-X</span></code></a> <code class="docutils literal notranslate"><span class="pre">utf8</span></code> option), always
return <code class="docutils literal notranslate"><span class="pre">'UTF-8'</span></code>, the locale and the <em>do_setlocale</em> argument are ignored.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.7 版更改: </span>The function now always returns <code class="docutils literal notranslate"><span class="pre">UTF-8</span></code> on Android or if the UTF-8 mode
is enabled.</p>
</div>
</dd></dl>
<dl class="function">
<dt id="locale.normalize">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">normalize</code><span class="sig-paren">(</span><em class="sig-param">localename</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.normalize" title="永久链接至目标"></a></dt>
<dd><p>为给定的区域名称返回标准代码。返回的区域代码已经格式化,可供 <a class="reference internal" href="#locale.setlocale" title="locale.setlocale"><code class="xref py py-func docutils literal notranslate"><span class="pre">setlocale()</span></code></a> 使用。 如果标准化操作失败,则返回原名称。</p>
<p>如果给出的编码无法识别,则本函数默认采用区域代码的默认编码,这正类似于 <a class="reference internal" href="#locale.setlocale" title="locale.setlocale"><code class="xref py py-func docutils literal notranslate"><span class="pre">setlocale()</span></code></a></p>
</dd></dl>
<dl class="function">
<dt id="locale.resetlocale">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">resetlocale</code><span class="sig-paren">(</span><em class="sig-param">category=LC_ALL</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.resetlocale" title="永久链接至目标"></a></dt>
<dd><p><em>category</em> 的区域设为默认值。</p>
<p>默认设置通过调用 <a class="reference internal" href="#locale.getdefaultlocale" title="locale.getdefaultlocale"><code class="xref py py-func docutils literal notranslate"><span class="pre">getdefaultlocale()</span></code></a> 确定。<em>category</em> 默认为 <a class="reference internal" href="#locale.LC_ALL" title="locale.LC_ALL"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_ALL</span></code></a></p>
</dd></dl>
<dl class="function">
<dt id="locale.strcoll">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">strcoll</code><span class="sig-paren">(</span><em class="sig-param">string1</em>, <em class="sig-param">string2</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.strcoll" title="永久链接至目标"></a></dt>
<dd><p>根据当前的 <a class="reference internal" href="#locale.LC_COLLATE" title="locale.LC_COLLATE"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_COLLATE</span></code></a> 设置,对两个字符串进行比较。与其他比较函数一样,根据 <em>string1</em> 位于 <em>string2</em> 之前、之后或是相同,返回负值、、正值或者 <code class="docutils literal notranslate"><span class="pre">0</span></code></p>
</dd></dl>
<dl class="function">
<dt id="locale.strxfrm">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">strxfrm</code><span class="sig-paren">(</span><em class="sig-param">string</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.strxfrm" title="永久链接至目标"></a></dt>
<dd><p>将字符串转换为可用于本地化比较的字符串。例如 <code class="docutils literal notranslate"><span class="pre">strxfrm(s1)</span> <span class="pre">&lt;</span> <span class="pre">strxfrm(s2)</span></code> 相当于 <code class="docutils literal notranslate"><span class="pre">strcoll(s1,</span> <span class="pre">s2)</span> <span class="pre">&lt;</span> <span class="pre">0</span></code>。在重复比较同一个字符串时,可能会用到本函数,比如整理字符串列表时。</p>
</dd></dl>
<dl class="function">
<dt id="locale.format_string">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">format_string</code><span class="sig-paren">(</span><em class="sig-param">format</em>, <em class="sig-param">val</em>, <em class="sig-param">grouping=False</em>, <em class="sig-param">monetary=False</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.format_string" title="永久链接至目标"></a></dt>
<dd><p>根据当前的 <a class="reference internal" href="#locale.LC_NUMERIC" title="locale.LC_NUMERIC"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_NUMERIC</span></code></a> 设置,对数字 <em>val</em> 进行格式化。格式将遵循 <code class="docutils literal notranslate"><span class="pre">%</span></code> 运算符的约定。浮点值的小数点会按需修改。若 <em>grouping</em> 为 True则还会考虑分组。</p>
<p><em>monetary</em> 为 True则会用到货币千位分隔符和分组字符串。</p>
<p>格式化符的处理类似 <code class="docutils literal notranslate"><span class="pre">format</span> <span class="pre">%</span> <span class="pre">val</span></code> ,但会考虑到当前的区域设置。</p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.7 版更改: </span>增加了关键字参数 <em>monetary</em></p>
</div>
</dd></dl>
<dl class="function">
<dt id="locale.format">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">format</code><span class="sig-paren">(</span><em class="sig-param">format</em>, <em class="sig-param">val</em>, <em class="sig-param">grouping=False</em>, <em class="sig-param">monetary=False</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.format" title="永久链接至目标"></a></dt>
<dd><p>请注意,本函数的工作原理与 <a class="reference internal" href="#locale.format_string" title="locale.format_string"><code class="xref py py-meth docutils literal notranslate"><span class="pre">format_string()</span></code></a> 类似,但只认一种 <code class="docutils literal notranslate"><span class="pre">%char</span></code> 格式符。 比如 <code class="docutils literal notranslate"><span class="pre">'%f'</span></code><code class="docutils literal notranslate"><span class="pre">'%.0f'</span></code> 都是有效的格式符,但 <code class="docutils literal notranslate"><span class="pre">'%f</span> <span class="pre">KiB'</span></code> 则不是。</p>
<p>若想用到全部的格式化串,请采用 <a class="reference internal" href="#locale.format_string" title="locale.format_string"><code class="xref py py-func docutils literal notranslate"><span class="pre">format_string()</span></code></a></p>
<div class="deprecated">
<p><span class="versionmodified deprecated">3.7 版后已移除: </span>请改用 <a class="reference internal" href="#locale.format_string" title="locale.format_string"><code class="xref py py-meth docutils literal notranslate"><span class="pre">format_string()</span></code></a> 。</p>
</div>
</dd></dl>
<dl class="function">
<dt id="locale.currency">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">currency</code><span class="sig-paren">(</span><em class="sig-param">val</em>, <em class="sig-param">symbol=True</em>, <em class="sig-param">grouping=False</em>, <em class="sig-param">international=False</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.currency" title="永久链接至目标"></a></dt>
<dd><p>根据当前的 <a class="reference internal" href="#locale.LC_MONETARY" title="locale.LC_MONETARY"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_MONETARY</span></code></a> 设置,对数字 <em>val</em> 进行格式化。</p>
<p>如果 <em>symbol</em> 为 True默认值则返回的字符串将包含货币符号。如果 <em>grouping</em> 为 True非默认值则会进行分组。如果 <em>international</em> 为 True非默认值将采用国际货币符号。</p>
<p>请注意,本函数对区域 “C” 无效,所以必须先通过 <a class="reference internal" href="#locale.setlocale" title="locale.setlocale"><code class="xref py py-func docutils literal notranslate"><span class="pre">setlocale()</span></code></a> 设置一个区域。</p>
</dd></dl>
<dl class="function">
<dt id="locale.str">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">str</code><span class="sig-paren">(</span><em class="sig-param">float</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.str" title="永久链接至目标"></a></dt>
<dd><p>对浮点数进行格式化,格式要求与内置函数 <code class="docutils literal notranslate"><span class="pre">str(float)</span></code> 相同,但会考虑小数点。</p>
</dd></dl>
<dl class="function">
<dt id="locale.delocalize">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">delocalize</code><span class="sig-paren">(</span><em class="sig-param">string</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.delocalize" title="永久链接至目标"></a></dt>
<dd><p>根据 <a class="reference internal" href="#locale.LC_NUMERIC" title="locale.LC_NUMERIC"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_NUMERIC</span></code></a> 的设置,将字符串转换为标准化的数字字符串。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.5 新版功能.</span></p>
</div>
</dd></dl>
<dl class="function">
<dt id="locale.atof">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">atof</code><span class="sig-paren">(</span><em class="sig-param">string</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.atof" title="永久链接至目标"></a></dt>
<dd><p>根据 <a class="reference internal" href="#locale.LC_NUMERIC" title="locale.LC_NUMERIC"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_NUMERIC</span></code></a> 的设置,将字符串转换为浮点数。</p>
</dd></dl>
<dl class="function">
<dt id="locale.atoi">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">atoi</code><span class="sig-paren">(</span><em class="sig-param">string</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.atoi" title="永久链接至目标"></a></dt>
<dd><p>按照 <a class="reference internal" href="#locale.LC_NUMERIC" title="locale.LC_NUMERIC"><code class="xref py py-const docutils literal notranslate"><span class="pre">LC_NUMERIC</span></code></a> 的约定,将字符串转换为整数。</p>
</dd></dl>
<dl class="data">
<dt id="locale.LC_CTYPE">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">LC_CTYPE</code><a class="headerlink" href="#locale.LC_CTYPE" title="永久链接至目标"></a></dt>
<dd><p id="index-6">字符型函数的区域类别。根据该类别的设置,模块 <a class="reference internal" href="string.html#module-string" title="string: Common string operations."><code class="xref py py-mod docutils literal notranslate"><span class="pre">string</span></code></a> 中处理大小写的函数会改变操作方式。</p>
</dd></dl>
<dl class="data">
<dt id="locale.LC_COLLATE">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">LC_COLLATE</code><a class="headerlink" href="#locale.LC_COLLATE" title="永久链接至目标"></a></dt>
<dd><p>字符串排序会用到的区域类别。 将会影响 <a class="reference internal" href="#module-locale" title="locale: Internationalization services."><code class="xref py py-mod docutils literal notranslate"><span class="pre">locale</span></code></a> 模块的 <a class="reference internal" href="#locale.strcoll" title="locale.strcoll"><code class="xref py py-func docutils literal notranslate"><span class="pre">strcoll()</span></code></a><a class="reference internal" href="#locale.strxfrm" title="locale.strxfrm"><code class="xref py py-func docutils literal notranslate"><span class="pre">strxfrm()</span></code></a> 函数。</p>
</dd></dl>
<dl class="data">
<dt id="locale.LC_TIME">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">LC_TIME</code><a class="headerlink" href="#locale.LC_TIME" title="永久链接至目标"></a></dt>
<dd><p>格式化时间时会用到的区域类别。 <a class="reference internal" href="time.html#time.strftime" title="time.strftime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.strftime()</span></code></a> 函数会参考这些约定。</p>
</dd></dl>
<dl class="data">
<dt id="locale.LC_MONETARY">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">LC_MONETARY</code><a class="headerlink" href="#locale.LC_MONETARY" title="永久链接至目标"></a></dt>
<dd><p>格式化货币值时会用到的区域类别。可用值可由 <a class="reference internal" href="#locale.localeconv" title="locale.localeconv"><code class="xref py py-func docutils literal notranslate"><span class="pre">localeconv()</span></code></a> 函数获取。</p>
</dd></dl>
<dl class="data">
<dt id="locale.LC_MESSAGES">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">LC_MESSAGES</code><a class="headerlink" href="#locale.LC_MESSAGES" title="永久链接至目标"></a></dt>
<dd><p>显示消息时用到的区域类别。目前 Python 不支持应用定制的本地化消息。 由操作系统显示的消息,比如由 <a class="reference internal" href="os.html#os.strerror" title="os.strerror"><code class="xref py py-func docutils literal notranslate"><span class="pre">os.strerror()</span></code></a> 返回的消息可能会受到该类别的影响。</p>
</dd></dl>
<dl class="data">
<dt id="locale.LC_NUMERIC">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">LC_NUMERIC</code><a class="headerlink" href="#locale.LC_NUMERIC" title="永久链接至目标"></a></dt>
<dd><p>格式化数字时用到的区域类别。 <a class="reference internal" href="#module-locale" title="locale: Internationalization services."><code class="xref py py-mod docutils literal notranslate"><span class="pre">locale</span></code></a> 模块的 <a class="reference internal" href="#locale.format" title="locale.format"><code class="xref py py-func docutils literal notranslate"><span class="pre">format()</span></code></a><a class="reference internal" href="#locale.atoi" title="locale.atoi"><code class="xref py py-func docutils literal notranslate"><span class="pre">atoi()</span></code></a><a class="reference internal" href="#locale.atof" title="locale.atof"><code class="xref py py-func docutils literal notranslate"><span class="pre">atof()</span></code></a><a class="reference internal" href="#locale.str" title="locale.str"><code class="xref py py-func docutils literal notranslate"><span class="pre">str()</span></code></a> 函数会受到该类别的影响。其他所有数字格式化操作不受影响。</p>
</dd></dl>
<dl class="data">
<dt id="locale.LC_ALL">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">LC_ALL</code><a class="headerlink" href="#locale.LC_ALL" title="永久链接至目标"></a></dt>
<dd><p>混合所有的区域设置。如果在区域改动时使用该标志,将尝试设置所有类别的区域参数。只要有任何一个类别设置失败,就不会修改任何类别。在使用此标志获取区域设置时,会返回一个代表所有类别设置的字符串。之后可用此字符串恢复设置。</p>
</dd></dl>
<dl class="data">
<dt id="locale.CHAR_MAX">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">CHAR_MAX</code><a class="headerlink" href="#locale.CHAR_MAX" title="永久链接至目标"></a></dt>
<dd><p>一个符号常量, <a class="reference internal" href="#locale.localeconv" title="locale.localeconv"><code class="xref py py-func docutils literal notranslate"><span class="pre">localeconv()</span></code></a> 返回多个值时将会用到。</p>
</dd></dl>
<p>示例:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">locale</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">loc</span> <span class="o">=</span> <span class="n">locale</span><span class="o">.</span><span class="n">getlocale</span><span class="p">()</span> <span class="c1"># get current locale</span>
<span class="go"># use German locale; name might vary with platform</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">locale</span><span class="o">.</span><span class="n">setlocale</span><span class="p">(</span><span class="n">locale</span><span class="o">.</span><span class="n">LC_ALL</span><span class="p">,</span> <span class="s1">&#39;de_DE&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">locale</span><span class="o">.</span><span class="n">strcoll</span><span class="p">(</span><span class="s1">&#39;f</span><span class="se">\xe4</span><span class="s1">n&#39;</span><span class="p">,</span> <span class="s1">&#39;foo&#39;</span><span class="p">)</span> <span class="c1"># compare a string containing an umlaut</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">locale</span><span class="o">.</span><span class="n">setlocale</span><span class="p">(</span><span class="n">locale</span><span class="o">.</span><span class="n">LC_ALL</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="c1"># use user&#39;s preferred locale</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">locale</span><span class="o">.</span><span class="n">setlocale</span><span class="p">(</span><span class="n">locale</span><span class="o">.</span><span class="n">LC_ALL</span><span class="p">,</span> <span class="s1">&#39;C&#39;</span><span class="p">)</span> <span class="c1"># use default (C) locale</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">locale</span><span class="o">.</span><span class="n">setlocale</span><span class="p">(</span><span class="n">locale</span><span class="o">.</span><span class="n">LC_ALL</span><span class="p">,</span> <span class="n">loc</span><span class="p">)</span> <span class="c1"># restore saved locale</span>
</pre></div>
</div>
<section id="background-details-hints-tips-and-caveats">
<h2>背景、细节、提示、技巧和注意事项<a class="headerlink" href="#background-details-hints-tips-and-caveats" title="永久链接至标题"></a></h2>
<p>The C standard defines the locale as a program-wide property that may be
relatively expensive to change. On top of that, some implementation are broken
in such a way that frequent locale changes may cause core dumps. This makes the
locale somewhat painful to use correctly.</p>
<p>当程序第一次启动时,无论用户偏好定义成什么,区域值都是 <code class="docutils literal notranslate"><span class="pre">C</span></code>。不过有一个例外,就是在启动时修改 <a class="reference internal" href="#locale.LC_CTYPE" title="locale.LC_CTYPE"><code class="xref py py-data docutils literal notranslate"><span class="pre">LC_CTYPE</span></code></a> 类别,设置当前区域编码为用户偏好编码。程序必须调用 <code class="docutils literal notranslate"><span class="pre">setlocale(LC_ALL,</span> <span class="pre">'')</span></code> 明确表示用户偏好区域将设为其他类别。</p>
<p>若要从库程序中调用 <a class="reference internal" href="#locale.setlocale" title="locale.setlocale"><code class="xref py py-func docutils literal notranslate"><span class="pre">setlocale()</span></code></a> ,通常这不是个好主意,因为副作用是会影响整个程序。保存和恢复区域设置也几乎一样糟糕:不仅代价高昂,而且会影响到恢复之前运行的其他线程。</p>
<p>如果是要编写通用模块,需要有一种不受区域设置影响的操作方式(比如某些用到 <a class="reference internal" href="time.html#time.strftime" title="time.strftime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.strftime()</span></code></a> 的格式),将不得不寻找一种不用标准库的方案。更好的办法是说服自己,可以采纳区域设置。只有在万不得已的情况下,才能用文档标注出模块与非 <code class="docutils literal notranslate"><span class="pre">C</span></code> 区域设置不兼容。</p>
<p>根据区域设置进行数字运算的唯一方法,就是采用本模块定义的函数:<a class="reference internal" href="#locale.atof" title="locale.atof"><code class="xref py py-func docutils literal notranslate"><span class="pre">atof()</span></code></a><a class="reference internal" href="#locale.atoi" title="locale.atoi"><code class="xref py py-func docutils literal notranslate"><span class="pre">atoi()</span></code></a><a class="reference internal" href="#locale.format" title="locale.format"><code class="xref py py-func docutils literal notranslate"><span class="pre">format()</span></code></a><a class="reference internal" href="#locale.str" title="locale.str"><code class="xref py py-func docutils literal notranslate"><span class="pre">str()</span></code></a></p>
<p>无法根据区域设置进行大小写转换和字符分类。对于Unicode文本字符串来说这些操作都是根据字符值进行的而对于字节符串来说转换和分类则是根据字节的 ASCII 值进行的,高位被置位的字节(即非 ASCII 字节)永远不会被转换或被视作字母或空白符之类。</p>
</section>
<section id="for-extension-writers-and-programs-that-embed-python">
<span id="embedding-locale"></span><h2>针对扩展程序编写人员和嵌入Python 运行的程序<a class="headerlink" href="#for-extension-writers-and-programs-that-embed-python" title="永久链接至标题"></a></h2>
<p>除了要查询当前区域,扩展模块不应去调用 <a class="reference internal" href="#locale.setlocale" title="locale.setlocale"><code class="xref py py-func docutils literal notranslate"><span class="pre">setlocale()</span></code></a>。但由于返回值只能用于恢复设置,所以也没什么用(也许只能用于确认是否为 <code class="docutils literal notranslate"><span class="pre">C</span></code>)。</p>
<p>当 Python 代码利用 <a class="reference internal" href="#module-locale" title="locale: Internationalization services."><code class="xref py py-mod docutils literal notranslate"><span class="pre">locale</span></code></a> 模块修改区域设置时,也会影响到嵌入 Python 运行的应用程序。如果嵌入运行的程序不希望发生这种情况,则应从 <code class="file docutils literal notranslate"><span class="pre">config.c</span></code> 文件的内置模块表中删除 <code class="xref py py-mod docutils literal notranslate"><span class="pre">_locale</span></code> 扩展模块(所有操作均是由它完成的),并确保 <code class="xref py py-mod docutils literal notranslate"><span class="pre">_locale</span></code> 模块不能成为一个共享库。</p>
</section>
<section id="access-to-message-catalogs">
<span id="locale-gettext"></span><h2>访问消息目录<a class="headerlink" href="#access-to-message-catalogs" title="永久链接至标题"></a></h2>
<dl class="function">
<dt id="locale.gettext">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">gettext</code><span class="sig-paren">(</span><em class="sig-param">msg</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.gettext" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="locale.dgettext">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">dgettext</code><span class="sig-paren">(</span><em class="sig-param">domain</em>, <em class="sig-param">msg</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.dgettext" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="locale.dcgettext">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">dcgettext</code><span class="sig-paren">(</span><em class="sig-param">domain</em>, <em class="sig-param">msg</em>, <em class="sig-param">category</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.dcgettext" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="locale.textdomain">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">textdomain</code><span class="sig-paren">(</span><em class="sig-param">domain</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.textdomain" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="locale.bindtextdomain">
<code class="sig-prename descclassname">locale.</code><code class="sig-name descname">bindtextdomain</code><span class="sig-paren">(</span><em class="sig-param">domain</em>, <em class="sig-param">dir</em><span class="sig-paren">)</span><a class="headerlink" href="#locale.bindtextdomain" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<p>在提供 gettext 接口的系统中locale 模块暴露出了 C 库的接口。它由 <code class="xref py py-func docutils literal notranslate"><span class="pre">gettext()</span></code><code class="xref py py-func docutils literal notranslate"><span class="pre">dgettext()</span></code><code class="xref py py-func docutils literal notranslate"><span class="pre">dcgettext()</span></code><code class="xref py py-func docutils literal notranslate"><span class="pre">textdomain()</span></code><code class="xref py py-func docutils literal notranslate"><span class="pre">bindtextdomain()</span></code><code class="xref py py-func docutils literal notranslate"><span class="pre">bind_textdomain_codeset()</span></code> 等函数组成。 他们与 <a class="reference internal" href="gettext.html#module-gettext" title="gettext: Multilingual internationalization services."><code class="xref py py-mod docutils literal notranslate"><span class="pre">gettext</span></code></a> 模块中的同名函数类似,但采用了 C 库二进制格式的消息目录,以及 C 库的搜索算法来查找消息目录。</p>
<p>Python 应用程序通常不需要调用这些函数,而应改用 <a class="reference internal" href="gettext.html#module-gettext" title="gettext: Multilingual internationalization services."><code class="xref py py-mod docutils literal notranslate"><span class="pre">gettext</span></code></a>。这条规则的一个已知例外,是与附加 C 库链接的应用程序,他们在内部调用了 <code class="xref c c-func docutils literal notranslate"><span class="pre">gettext()</span></code><code class="xref c c-func docutils literal notranslate"><span class="pre">dcgettext()</span></code>。对于这些应用程序,可能有必要绑定文本域,以便库可以准确找到其消息目录。</p>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">目录</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">locale</span></code> --- 国际化服务</a><ul>
<li><a class="reference internal" href="#background-details-hints-tips-and-caveats">背景、细节、提示、技巧和注意事项</a></li>
<li><a class="reference internal" href="#for-extension-writers-and-programs-that-embed-python">针对扩展程序编写人员和嵌入Python 运行的程序</a></li>
<li><a class="reference internal" href="#access-to-message-catalogs">访问消息目录</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="gettext.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gettext</span></code> --- 多语种国际化服务</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="frameworks.html"
title="下一章">程序框架</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/locale.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
>索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="frameworks.html" title="程序框架"
>下一页</a> |</li>
<li class="right" >
<a href="gettext.html" title="gettext --- 多语种国际化服务"
>上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="i18n.html" >国际化</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">版权所有</a> 2001-2024, Python Software Foundation.
<br />
This page is licensed under the Python Software Foundation License Version 2.
<br />
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br />
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
<br />
最后更新于 12月 09, 2024.
<a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
<br />
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 2.4.4.
</div>
</body>
</html>