在安装新系统时,我曾经使用过怪异的en_DK.UTF-8语言环境,因为即使我不在丹麦,这也会产生(大致)我想要的语言环境结果。


Measurements metric
日期和时间格式合理,但英文的日期和月份名称

24小时制时间格式
工作周从星期一开始
数字日期(至少类似于)ISO格式,yyyy-mm-dd
非正式日期为dd / mm,反之则相反


A4纸张尺寸
欧元
英文系统消息

A,Ubuntu和Debian似乎不再支持en_DK语言环境。我一直认为“欧洲英语”应该像en_EU这样。

我工作过的每个地方都有这样的要求-该组织的官方语言是英语,但是我们希望在其他所有方面都遵循欧洲默认设置。

我是想象我不是第一个认为“位置不可知”的英语区域设置将使我个人和工作单位受益的人。那么为什么不存在它?我应该在哪里寻找进一步的讨论和理由呢?

...还是应该继续提出它?给谁?

评论

我敢肯定,这在StackExchange网络上某个地方是个好问题,但这不是真正的编程问题,是吗?

你让我感到困惑。丹麦从未采用过欧元AFAIK,并且Debian测试和不稳定版本仍然具有en_DK语言环境(使用DKK / kr货币)

实际上,我只是忍受货币汇率错误的事实。我并不是真的需要该功能,但是出于完整性考虑,它是问题中要包含的内容之一。 en_DK的这种语言环境令人好奇。它起源于何处?为什么其他国家没有随机的英语语言环境?丹麦几乎不会说英语的人比例异常高。

@Jeach:谁会失去控制?什么呢那是一件坏事?为什么主权国家是一个好国,和/或对此唯一可接受的利益相关者?北美的西班牙语设置听起来与我的情况非常相似。我敢肯定会有需求。而且,尽管现实世界的需求将是标准化机构的明智要求,但我也看不出为什么应该排除Cree方案。

我很同情,但我也感到很有趣,您在用特定于两个或三个国家(例如en_US,也许是en_CA)的拼写来拼写“ organization”,而不是大多数讲英语的人在国际上会使用的拼写。真正的解决方案,恕我直言,是针对不同的上下文具有单独的设置。例如,当我住在美国时,我更喜欢使用普通的英语和标准尺寸,但使用美国的纸张尺寸。但是,美国人称其奇数球测量结果为“英语”的事实确实增加了困惑-数十年来,英语一直使用公制,并且他们的许多单位与美国不同。

#1 楼

(a)一个称为Unicode Common Locale Data Repository的实体似乎是处理语言环境的地方。 glibc Wiki指示它们将遵循CLDR。(b)它们具有称为“ en_150”的语言环境,似乎旨在执行您想要的操作。我不确定glibc是否已实现它。还有一个类似于en_BE的语言环境,与en_150相同,只是它具有BE的区域覆盖范围,而不是全球范围。

评论


这是在区域设置数据资源管理器中的“ 150”

–tripleee
2015年10月1日在7:14

有趣,但是我尝试在Xubuntu 14.04 LTS上导出LC_TIME = en_150.UTF-8(和en_BE),并且显示bash:警告:setlocale:LC_TIME:无法更改语言环境(en_150.UTF-8):没有这样的文件或目录

–baptx
16-2-21在21:47



#2 楼

en_IE.UTF-8英语(爱尔兰)语言环境满足您的所有要求:


测量指标—是

24小时制-是

工作周从星期一开始—是的

数字日期(至少类似于)ISO格式yyyy-mm-dd
—不,该语言环境为dd/mm/yy。但这似乎已经足够您习惯了
非正式日期是dd / mm,而不是相反-是

A4纸张尺寸—是

欧元货币-是

英语系统消息-是


我实际上正在使用此语言环境,即使我在阿姆斯特丹,因为据我所知,没有英语(巴勒斯坦)语言环境。

顺便说一句。选择ga_IE.UTF-8爱尔兰(爱尔兰)语言环境时不要犯错误,因为它是爱尔兰盖尔语。

评论


啊,好老的爱尔兰人!很棒的发现。

– Marjan Venema
2013年1月23日14:17在

我接受此答案,因为它可以使我完全满意地解决了该问题。我仍然想找到一个指示,指出过去是否曾经提出过“通用英语”语言环境,以及/或者应该将这种提议发送到何处。这个问题的库标准化过程部分是我最初将其发布到PSE的原因,但是我不知道它是否适合那里(或* SE网络中的其他任何地方)。

–tripleee
13年1月24日在11:18

@tripleee:唯一想到的就是Windows 98泛欧版本,该版本为英语,但具有欧洲语言环境并支持欧洲字符。我还没有听说过创建正式的泛欧语言环境的任何尝试。

–vartec
13年1月24日,11:50

通用的英语语言环境可能需要考虑成千上万的分隔符。是的,所有(母语)英语使用者都使用逗号(我认为吗?),但是即使写英语,许多欧洲人也使用句点(。)。我开始确信'撇号'(由瑞士人使用)带有。对于小数部分,将是一个不错的选择。它可以在csv文件中工作,我不知道在任何地方都使用'作为小数。

–亚伦·麦克戴(Aaron McDaid)
2015年8月17日14:29



更新至我的最后一条评论:要在Linux上的Thunderbird中显示ISO 8601日期(yyyy-mm-dd),可以在/ etc / default / locale kb.mozillazine.org/Date_display_format中使用LC_TIME = en_DK.utf8

–baptx
16-2-21在21:44



#3 楼

en_DK语言环境除了名称之外,与丹麦实际上没有任何关系。它最初是由想要与此处要求相同的人创建的-欧洲英语使用者的合理默认设置。名称“ en_DK”有点像个玩笑-当时所有的语言环境名称都由语言代码和国家/地区代码组成(第二位没有大洲代码或其他任何内容),并且出于任何原因选择丹麦作为占位符国家/地区代码。 (...自那时以来,可能已经导致一个以上的神秘人士研究了丹麦第一语言是英语的人口比例。:))

评论


您是否有异想天开的DK来源? (我同意这是唯一具有合理设置的语言环境...)

–塞拉达
16-3-28在17:27

同意此答案将至少从传闻中受益,以便进一步研究。但是,已经感谢您的花絮。

–tripleee
16 Mar 28 '16 at 18:55

显然在unicode中实际上有en_DK语言环境

– Sanmai
16 Dec 17'8:26

唯一的问题是它使用DKK作为货币。

–艾伦·西利亚克(Alen Siljak)
18年4月15日在11:25

#4 楼

这就是为什么您对不同的事物使用不同的语言环境的原因。
在我的情况下,我将en_GB和sv_SE混合使用以获得所需的内容,它看起来像这样:

$> locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC=sv_SE.utf8
LC_TIME=sv_SE.utf8
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY=sv_SE.utf8
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER=sv_SE.utf8
LC_NAME=sv_SE.UTF-8
LC_ADDRESS=sv_SE.UTF-8
LC_TELEPHONE=sv_SE.UTF-8
LC_MEASUREMENT=sv_SE.utf8
LC_IDENTIFICATION=sv_SE.UTF-8
LC_ALL=


,但是您可能会用dk_DK替换sv_SE。

要获得€,请使用LC_MONETARY = en_IE.UTF-8

,然后将配置保存为〜/ .profile中的大量出口商品

export LC_MONETARY="en_IE.UTF-8"


这将使您有机会从不同领域中选择“正确的”东西。

评论


实际上,我不会用dk_DK替换sv_SE -就像我在问题中所说的那样,我选择丹麦语设置是因为它们巧合并有些混乱地提供了我想要的功能,即使我没有理由也不希望在我的丹麦语中有任何特定的东西设置,实际上,这就是我要避免的事情。与此类似,无论您身在何处,sv_SE都对LC_TIME有意义(某种程度上),因为与许多其他语言环境不同,瑞典按标准使用ISO日期。

–tripleee
2015年10月1日7:06



#5 楼

实际上,我相信有一个比en_IE更适合您要求的语言环境。这是非官方的,但它是en_SE.UTF-8。这是一个指向语言环境文件的链接。

它基本上复制了sv-SE,它可以为您提供所需的一切(尽管我没有仔细检查),但可以为您提供英语系统消息,菜单等。我曾经使用过它,尽管文件顶部的注释块中有警告,但它在实践中对我来说非常有效。

要安装:


下载,以便可以通过/usr/share/i18n/locales/en_SE访问该语言环境文件。

运行sudo localedef -i en_SE -f UTF-8 en_SE.UTF-8

/var/lib/locales/supported.d/local行添加到en_SE.UTF-8 UTF-8(根据发布情况可能有所不同; Debian Squeeze / 6.0似乎对/etc/locale.gen感到满意)
运行sudo locale-gen

将系统或帐户默认语言环境设置为en_SE.UTF-8(例如,在类似Debian的系统上通过/etc/default/locale
重新引导,或先注销然后再登录,以激活新的语言环境


评论


但是瑞典没有采用欧元。

–mouviciel
13年1月23日在19:09

@mouviciel爱尔兰吗?

–用户
13年1月24日在8:21



–mouviciel
13年1月24日在8:24

此外,这还有一个明显的缺点(与en_DK一起使用),对于不在该特定国家/地区居住的人来说,这是绝对不明显的解决方法。您可能会争辩说,en_IE也没有完全通过该(附加)要求;但是至少可以合理地对问题进行推理,并得出足够合理的结论(尽管我个人并没有得出结论,这是基于对爱尔兰工作方式的多种错误假设得出的)。

–tripleee
13年1月24日,11:32



另外,当您使用ssh到远程系统时,语言环境会随您一起旅行,如果您的语言环境也未安装在远程系统上,您将收到各种烦人的警告。

–tripleee
13年1月25日在6:11

#6 楼

我使用en_IE@euro ISO-8859-15

$ export LC_MONETARY= "en_IE@euro ISO-8859-15" 


...但是我不确定测量,考虑使用nl_NL.UTF-8nl_BE.UTF-8,我唯一遇到的问题是一旦允许对于这样的库,其他应用可能最终将其用作本地lib的参考,并再次开始下载荷兰语甚至德语的应用和服务。

winetricks昨晚用vcrun6驱使我陷入困境更改locale-gen删除了德语库的任何提示后,它仍然继续下载德语版本的redistributablec++,最终完全通过用wine启动exe来手动完成。

令人难以置信的是,我再次在同一问题上再次出现;这次是APT,而比利时本地仓库正致力于编辑我的语言环境配置,这不能因为我编辑了权限,所以我只收到错误投诉:

Fetched 207 kB in 0s (1381 kB/s)
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en",
    LC_ALL = (unset),
    LC_TIME = "nl_BE.UTF-8",
    LC_MONETARY = "en_IE@euro ISO-8859-15",
    LC_ADDRESS = "nl_BE.UTF-8",
    LC_TELEPHONE = "nl_BE.UTF-8",
    LC_MESSAGES = "en_IE.UTF-8",
    LC_NAME = "en_IE.UTF-8",
    LC_MEASUREMENT = "nl_BE.UTF-8",
    LC_IDENTIFICATION = "en_GB.UTF-8",
    LC_NUMERIC = "nl_BE.UTF-8",
    LC_PAPER = "en_IE.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
locale: Cannot set LC_ALL to default locale: No such file or directory 


毫不妥协,全有或全无..我猜唯一的其他解决方案是更改回购,但由于键盘是AZERTY,而且根据法律,它只会比利时比利时语的法语...,我永远不会完全没有麻烦。 '(

评论


这听起来很奇怪。当然,不应将LC_MONETARY或LC_MEASUREMENT设置影响消息目录语言。

–tripleee
17年7月22日在14:48

#7 楼

请参见https://github.com/PanderMusubi/locale-en-nl以获取适用于荷兰的正确英语语言环境,无法通过其LC_环境设置重新混合现有语言环境来进行设置。