本地化是让程序按照地区特定方式运行的行为,如果一个程序的格式、数字或者是日期是你的本地方式,或者是打印的信息(或者是接受的输入)是你本地的语言,这个程序被叫做已经本地化了,这部分描述了针对本地化的Subversion的步骤。
许多现代操作系统都有一个“当前地区”的概念—也就是本地化习惯服务的国家和地区。这些习惯—通常是被一些运行配置机制选择—影响程序展现数据的方式,也有接受用户输入的方式。
On most Unix-like systems, you can check the values of the locale-related runtime configuration options by running the locale command:
$ locale LANG= LC_COLLATE="C" LC_CTYPE="C" LC_MESSAGES="C" LC_MONETARY="C" LC_NUMERIC="C" LC_TIME="C" LC_ALL="C"
The output is a list of locale-related environment
variables and their current values. In this example, the
variables are all set to the default C
locale, but users can set these variables to specific
country/language code combinations. For example, if one were
to set the LC_TIME variable to
fr_CA, then programs would know to present
time and date information formatted according a
French-speaking Canadian's expectations. And if one were to
set the LC_MESSAGES variable to
zh_TW, then programs would know to present
human-readable messages in Traditional Chinese. Setting the
LC_ALL variable has the effect of changing
every locale variable to the same value. The value of
LANG is used as a default value for any
locale variable that is unset. To see the list of available
locales on a Unix system, run the command locale
-a.
在Windows,地区配置是通过“地区和语言选项”控制面板管理的,可以从已存在的地区查看选择,甚至可以自定义(会是个很讨厌的复杂事情)许多显示格式习惯。
The Subversion client, svn, honors the
current locale configuration in two ways. First, it notices
the value of the LC_MESSAGES variable and
attempts to print all messages in the specified language. For
example:
$ export LC_MESSAGES=de_DE $ svn help cat cat: Gibt den Inhalt der angegebenen Dateien oder URLs aus. Aufruf: cat ZIEL[@REV]... …
This behavior works identically on both Unix and Windows
systems. Note, though, that while your operating system might
have support for a certain locale, the Subversion client still
may not be able to speak the particular language. In order to
produce localized messages, human volunteers must provide
translations for each language. The translations are written
using the GNU gettext package, which results in translation
modules that end with the .mo filename
extension. For example, the German translation file is named
de.mo. These translation files are
installed somewhere on your system. On Unix, they typically
live in /usr/share/locale/, while
on Windows they're often found in the
\share\locale\ folder in Subversion's
installation area. Once installed, a module is named after
the program it provides translations for. For example, the
de.mo file may ultimately end up
installed as
/usr/share/locale/de/LC_MESSAGES/subversion.mo.
By browsing the installed .mo files, you
can see which languages the Subversion client is able to
speak.
The second way in which the locale is honored involves how svn interprets your input. The repository stores all paths, filenames, and log messages in Unicode, encoded as UTF-8. In that sense, the repository is internationalized—that is, the repository is ready to accept input in any human language. This means, however, that the Subversion client is responsible for sending only UTF-8 filenames and log messages into the repository. In order to do this, it must convert the data from the native locale into UTF-8.
For example, suppose you create a file named
caffè.txt, and then when committing the
file, you write the log message as “Adesso il caffè è
più forte”. Both the filename and log message contain
non-ASCII characters, but because your locale is set to
it_IT, the Subversion client knows to
interpret them as Italian. It uses an Italian character set
to convert the data to UTF-8 before sending them off to the
repository.
注意当版本库要求UTF-8文件名和日志信息时,它不会注意到文件的内容,Subversion会把文件内容看作字节串,没有任何客户端和服务器会尝试理解或是编码这些内容。