• 练习 6:Bash:语言设置,LANGlocaledpkg-reconfigure locales
    • 这样做
    • 你会看到什么
    • 解释
    • 附加题

    练习 6:Bash:语言设置,LANGlocaledpkg-reconfigure locales

    原文:Exercise 6. Bash: language settings, LANG, locale, dpkg-reconfigure locales

    译者:飞龙

    协议:CC BY-NC-SA 4.0

    自豪地采用谷歌翻译

    在 Linux 中,语言选择像导出变量一样简单。这是正确的,通过查看这个变量,程序决定如何和你交流。当然,为了使其工作,程序必须支持区域设置,并将其翻译成可用和安装的语言。让我们通过安装法语区域设置,看看它的工作原理。

    现在,你将学习如何安装和选择一个区域设置。

    这样做

    1. 1: echo $LANG
    2. 2: locale
    3. 3: man man # press q to exit man
    4. 4: sudo dpkg-reconfigure locales

    现在,选择fr_FR.UTF-8 locale,通过使用方向键来浏览列表,并使用看空格来选择区域设置。选择en_US.UTF-8作为默认的系统区域。

    1. 5: export LANG=fr_FR.UTF-8
    2. 6: echo $LANG
    3. 7: locale # press q to exit man
    4. 8: man man
    5. 9: export LANG=en_US.UTF-8

    你会看到什么

    1. user1@vm1:~$ echo $LANG
    2. en_US.UTF-8
    3. user1@vm1:~$ locale
    4. LANG=en_US.UTF-8
    5. LANGUAGE=en_US:en
    6. LC_CTYPE="en_US.UTF-8"
    7. LC_NUMERIC="en_US.UTF-8"
    8. LC_TIME="en_US.UTF-8"
    9. LC_COLLATE="en_US.UTF-8"
    10. LC_MONETARY="en_US.UTF-8"
    11. LC_MESSAGES="en_US.UTF-8"
    12. LC_PAPER="en_US.UTF-8"
    13. LC_NAME="en_US.UTF-8"
    14. LC_ADDRESS="en_US.UTF-8"
    15. LC_TELEPHONE="en_US.UTF-8"
    16. LC_MEASUREMENT="en_US.UTF-8"
    17. LC_IDENTIFICATION="en_US.UTF-8"
    18. LC_ALL=
    19. user1@vm1:~$ man man
    20. MAN(1) Manual pager utils MAN(1)
    21. NAME
    22. man - an interface to the on-line reference manuals
    23. user1@vm1:~$ sudo dpkg-reconfigure locales
    24. ---------------| Configuring locales |-----------------------
    25. | |
    26. | Locales are a framework to switch between multiple |
    27. | languages and allow users to use their language, |
    28. | country, characters, collation order, etc. |
    29. | |
    30. | Please choose which locales to generate. UTF-8 locales |
    31. | should be chosen by default, particularly for new |
    32. | installations. Other character sets may be useful for |
    33. | backwards compatibility with older systems and software. |
    34. | |
    35. | <Ok> |
    36. | |
    37. -------------------------------------------------------------
    38. -----------| Configuring locales |--------
    39. | Locales to be generated: |
    40. | |
    41. | [ ] fr_BE@euro ISO-8859-15 |
    42. | [ ] fr_CA ISO-8859-1 |
    43. | [ ] fr_CA.UTF-8 UTF-8 |
    44. | [ ] fr_CH ISO-8859-1 |
    45. | [ ] fr_CH.UTF-8 UTF-8 |
    46. | [*] fr_FR ISO-8859-1 |
    47. | [ ] fr_FR.UTF-8 UTF-8 |
    48. | [ ] fr_FR@euro ISO-8859-15 |
    49. | |
    50. | |
    51. | <Ok> <Cancel> |
    52. | |
    53. ------------------------------------------
    54. ------------------ Configuring locales ----------------------
    55. | |
    56. | Many packages in Debian use locales to display text in |
    57. | the correct language for the user. You can choose a |
    58. | default locale for the system from the generated |
    59. | locales. |
    60. | |
    61. | This will select the default language for the entire |
    62. | system. If this system is a multi-user system where not |
    63. | all users are able to speak the default language, they |
    64. | will experience difficulties. |
    65. | |
    66. | <Ok> |
    67. | |
    68. -------------------------------------------------------------
    69. ------------ Configuring locales --------------
    70. | Default locale for the system environment: |
    71. | |
    72. | None |
    73. | en_US.UTF-8 |
    74. | fr_FR.UTF-8 |
    75. | |
    76. | |
    77. | <Ok> <Cancel> |
    78. | |
    79. -----------------------------------------------
    80. Generating locales (this might take a while)...
    81. en_US.UTF-8... done
    82. fr_FR.UTF-8... done
    83. Generation complete.
    84. user1@vm1:~$ export LANG=fr_FR.UTF-8
    85. user1@vm1:~$ echo $LANG
    86. fr_FR.UTF-8
    87. user1@vm1:~$ locale
    88. LANG=fr_FR.UTF-8
    89. LANGUAGE=en_US:en
    90. LC_CTYPE="fr_FR.UTF-8"
    91. LC_NUMERIC="fr_FR.UTF-8"
    92. LC_TIME="fr_FR.UTF-8"
    93. LC_COLLATE="fr_FR.UTF-8"
    94. LC_MONETARY="fr_FR.UTF-8"
    95. LC_MESSAGES="fr_FR.UTF-8"
    96. LC_PAPER="fr_FR.UTF-8"
    97. LC_NAME="fr_FR.UTF-8"
    98. LC_ADDRESS="fr_FR.UTF-8"
    99. LC_TELEPHONE="fr_FR.UTF-8"
    100. LC_MEASUREMENT="fr_FR.UTF-8"
    101. LC_IDENTIFICATION="fr_FR.UTF-8"
    102. LC_ALL=
    103. user1@vm1:~$ man man
    104. MAN(1) Utilitaires de l'afficheur des pages de manuel MAN(1)
    105. NOM
    106. man - interface de consultation des manuels de
    107. référence en ligne
    108. user1@vm1:~$ export LANG=en_US.UTF-8
    109. user1@vm1:~$

    解释

    1. 打印你当前使用的LANG变量,程序用它来确定与你进行交互时要使用的语言。

    2. 按照指定的国家/地区的格式,打印所有区域变量,程序员使用它们来设置数字,地址,电话格式,以及其它。

    3. 显示 unix 手册系统的手册页。注意我如何使用#来注释一个动作,#之后的所有内容都不执行。

    4. 执行程序来重新配置你的区域设置。因为这个变化是系统层次的,你需要以 root 身份运行这个命令,这就是在dpkg-reconfigure locales前面有sudo的原因。现在不要纠结sudo,我会让你熟悉它。

    5. 导出LANG变量,用于设置所有其他区域变量。

    6. 打印出LANG变量,你可以看到它已经改变了,按照你的预期。

    7. 打印其它已更改的区域变量。

    8. 以法语显示man手册页。

    9. 将`LANG变量恢复为英文。

    附加题

    • 阅读区域设置的手册页。为此,请输入man locale

    • 现在,阅读man 7 locale页面。注意我 在这里使用7,来调用关于约定的手册页。如果你愿意, 现在阅读man man,了解其他可能的代码是什么,或者只是等待涵盖它的练习。