std - locale - global(...) 执行时机

1. 进程的入口
2. 不适合多次调用
示例如下
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
#include <xlocale>
using namespace std;
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
            std::locale::global(std::locale::locale("")); 
        break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
    }
<think>好的,我需要帮助用户更新Linux或类Unix系统的区域设置,使用en_US.utf8,并设置LANGUAGE为en_US:en。首先,我得回忆一下相关的步骤和可能的配置文件。 首先,区域设置在Linux中通常通过locale来管理,相关的环境变量有LANG、LC_*等。用户需要设置LANG为en_US.UTF-8,同时设置LANGUAGE为en_US:en。这应该通过修改/etc/locale.gen文件生成所需的locale,然后运行locale-gen命令。接着,更新/etc/locale.conf文件来设置LANG变量。对于LANGUAGE,可能需要用户级的配置文件,比如~/.pam_environment或者~/.profile,因为系统级的设置可能不包含LANGUAGE。 不过,不同的发行版可能有不同的方法。比如Debian和Ubuntu可能使用/etc/default/locale,而Arch则用/etc/locale.conf。需要确保用户生成en_US.UTF-8的locale,有时候系统默认没有启用,需要取消在locale.gen中的注释。 然后,检查是否安装了必要的语言包,比如locales包是否已经安装。如果用户运行locale -a看不到en_US.utf8,可能需要先安装相应的语言包,再重新生成locale。 还有,设置LANGUAGE为en_US:en,这里en是英语的后备语言。需要注意环境变量的优先级,LANGUAGE通常用于GNU gettext的消息语言,而LANG是默认的区域设置。可能需要同时设置LANG和LANGUAGE,确保正确覆盖。 另外,用户可能需要重新登录或重启才能生效。或者通过source命令使配置文件立即生效,不过对于全局设置可能需要重启服务。 可能的错误包括没有正确生成locale,或者配置文件的位置不对。比如在Debian中,修改/etc/locale.gen后需要运行locale-gen,而在其他系统可能步骤不同。此外,用户可能混淆了系统级和用户级的配置,需要明确说明两者的区别。 需要提醒用户验证设置是否生效,使用locale命令检查输出中的LANG和LANGUAGE是否正确。如果出现问题,可以检查配置文件是否有语法错误,或者是否缺少必要的包。 最后,生成相关问题,可能涉及如何永久设置环境变量,如何解决区域设置不生效的问题,或者不同发行版之间的差异。</think>### 更新系统区域设置并配置LANGUAGE环境变量 #### 步骤1: 验证当前可用区域设置 首先检查系统是否已支持`en_US.utf8`: ```bash locale -a | grep en_US.utf8 ``` 如果未显示结果,需生成该区域设置。 #### 步骤2: 编辑区域配置文件 打开区域生成配置文件(路径因系统而异): - Debian/Ubuntu: `/etc/locale.gen` - Arch: `/etc/locale.gen` - Red Hat系: `/etc/locale.conf` 取消注释以下行: ``` en_US.UTF-8 UTF-8 ``` #### 步骤3: 生成新区域设置 执行生成命令: ```bash sudo locale-gen ``` #### 步骤4: 设置系统级区域 创建或修改系统级配置文件: - Systemd系统(多数现代发行版): ```bash echo "LANG=en_US.UTF-8" | sudo tee /etc/locale.conf ``` - 旧版系统(如Ubuntu 14.04): ```bash echo "LANG=en_US.UTF-8" | sudo tee /etc/default/locale ``` #### 步骤5: 配置用户级语言偏好 在用户配置文件中添加: ```bash echo 'export LANGUAGE="en_US:en"' >> ~/.profile # 或 echo 'export LANGUAGE="en_US:en"' >> ~/.bashrc ``` #### 步骤6: 应用配置 立即生效: ```bash source ~/.profile # 或 source ~/.bashrc ``` #### 验证配置 ```bash locale ``` 输出应包含: ``` LANG=en_US.UTF-8 LANGUAGE=en_US:en ``` [^1]: 关于Linux系统UTF-8支持的技术讨论建议订阅linux-utf8邮件列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值