练习 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,了解其他可能的代码是什么,或者只是等待涵盖它的练习。