如何在GNOME 2日历小程序中将星期一设置为每周的第一天?

什么是推荐的方法来将一周的第一天更改为星期一(而不是像下面的截图中那样是星期日)?

alt text

我在时钟首选项、系统-> 首选项或系统-> 管理中都找不到相关内容。
这可能与调整区域设置有关,所以这里是(可能相关的)locale输出:
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
...
LC_ALL=

NB: 我希望在GNOME和命令行中都保持英语作为用户界面语言。日期目前显示的格式是这样的(例如:ls -l):2010-10-06 15:32,我也希望保持原样。


1在Ubuntu论坛上有一个非常好的解释,告诉你如何做这个!点击这个链接,你将在2分钟内完成。http://ubuntuforums.org/showthread.php?t=813945 - Antonis
没错,这个方法是有效的(在注销并重新登录后;killall gnome-panel 不够)。然而,帖子中有人指出: "虽然这个方法很有用且暂时解决问题,但只能在“locales”软件包更新或重新安装之前生效,因为那时候这个文件会被覆盖或替换为来自“locales”软件包的新文件。"我还找到了另一个解决方案,马上就会发布... - Jonik
3根据prometheus在类似问题上的回答,建议在/usr/share/i18n/locales/<your_locale>文件中的LC_TIME部分添加first_weekday 2first_workday 2 - Paul Rougieux
它们应默认与ISO对齐。 - Benjam
12个回答

这是另一个解决方案,也可以从Ubuntu论坛找到此链接。我认为这个方法更加简洁和可靠:它不需要自定义Ubuntu的区域设置文件(只涉及你应该编辑的设置)。

Gnome calendar applet adheres to your locale settings. In Ubuntu, you can assign locale components by editing the file /etc/default/locale. Here is what I've got there:

LANG="en_US.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"

Which means: I want software messages in American, but time, paper size and units in British i.e.weeks starting with Mondays, A4, metric.

致敬给那位发帖的artm
当然,LC_TIME="en_GB.UTF-8"是相关设置,可以让星期从周一开始。
你需要退出并重新登录以使更改生效。

这个和Antonis建议的基于地区的解决方案都可以愉快地影响到其他类似的情况,比如cal命令行工具的输出! - Jonik
4当然,以上是一个系统范围的解决方案。如果要在每个用户的基础上进行配置,请参考Victor的回答 - Jonik
12有没有办法在不重启的情况下重新加载它? - wdev
3对我来说,使用Xubuntu 14.04,系统范围的解决方案不起作用:重启后,面板时钟(xfce时钟)中的星期仍然从星期日开始。然而,Victor的个人解决方案确实有效。 - Teemu Leisti
1这在14.04或16.04上似乎无法与fr_CA.UTF-8一起使用。 - wjandrea
4在设置LC_TIME之前,应预先生成en_GB.UTF-8区域设置,方法如下(使用sudo dpkg-reconfigure locales命令)。 - Neurotransmitter
1这可能不是理想的解决方案,因为它不仅改变了一周的第一天,还改变了LC_TIME的所有其他属性... - jII
对我来说没用(Ubuntu 20.04),实际上还引发了重新登录时的一个错误。 - ThCollignon
警告: 这将导致您的“Trash Bin”被重命名为“Rubbish Bin” - Zoltán

对我来说,最好的解决方案是在我的个人主目录中按用户进行设置。这样我就不必编辑系统范围的文件。(当然,如果您希望将此设置应用于系统上的所有用户,那么您显然需要编辑系统文件。)
我所做的是编辑文件~/.xsessionrc,在其中添加一行“export LC_TIME=en_GB.utf8”。就这样。

3看起来将那行代码放在我的.bashrc文件中也解决了问题,这很好,尽管我没想到会这样。我猜gnome在启动时会读取那个文件,或者可能是.profile文件?(我的.profile文件会读取.bashrc)我的.xsessionrc已经不存在了,所以应该可以正常工作。 - Victor
2这对我来说似乎不再适用于 GNOME 3.6。相反,我所做的是在我的主目录中创建一个名为 .gnomerc 的文件,并在其中添加一行 export LC_TIME=en_GB.UTF-8。这似乎解决了问题。 - Victor

在Ubuntu 12.04(以及后续版本),最简单的方法似乎是:系统设置>语言支持,然后点击区域格式选项卡,并从下拉列表中选择。
在我的情况下,我选择了“英语(爱尔兰)”,这使得日历中的第一天是星期一,“正确”的数字格式和货币,以及其他好处 :)
如果你在那里找不到合适的选项,可能需要安装一种语言(同一窗口的另一个选项卡)。

1前两个解决方案对我没有起作用,但这个确实有效!非常感谢!(附注:Ubuntu MATE 18.04) - egor83
如果可以接受一个同质的本地化体验,那么最简单的解决方案就是选择Pop!_OS 22.04 LTS。 - undefined

Ubuntu(尝试过12.x版本)中的时间和日期格式由区域设置控制。首先,您需要找出当前用于控制时间和日期设置的区域设置。打开终端并输入以下命令。
locale | grep LC_TIME

你应该看到一个类似的结果
LC_TIME=en_US.UTF-8

切换到区域设置目录,并复制当前的区域设置文件以创建一个新的自定义文件。根据你的区域设置进行调整。
cd /usr/share/i18n/locales
sudo cp en_US en_US_custom

现在编辑新的自定义文件。
sudo gedit en_US_custom

改变
first_weekday 1

first_weekday 2

然后在/etc/environment中进行更改,将其指向您的新自定义文件。
sudo gedit /etc/environment

在文件底部添加一行类似这样的内容,确保根据您想要使用的自定义区域设置文件进行调整。

LC_TIME="en_US_custom.UTF-8"

来源:http://tuxtweaks.com/2008/12/change-the-week-start-day-in-ubuntu/

2为什么应该更倾向于这种方法而不是编辑/etc/default/locale(更简单的方法)? - Jonik
1因为在我的情况下,编辑/etc/default/locale没有起作用。这个方法有效。 - Ondra Žižka
1在更改后,执行killall unity-panel-service以应用此更改而无需重新启动。 - Andrejs Cainikovs
3Prometheus在类似问题的回答中提到,但是他还提到需要在修改区域设置文件后运行sudo locale-gen命令;这对我很有用。 - wjandrea
在Ubuntu 16.04 LTS中,这种方法不起作用。 - Viktor
#wjandrea提到了Prometheus的解决方案,它有助于指出,如果没有现有的"first_weekday..."行可供修改,您可能需要添加一行"first_weekday 2"。 - django
所以,在Ubuntu 18.04 LTS中,这对我非常有效(只是为了更新维克托在2017年8月18日上面的评论)。 - Dɑvïd

对我来说,最简单的方法是在“区域和语言”中更新格式。前往“设置->区域和语言”,选择您的格式。
系统将强制您注销并登录以反映更改。

settings>Region&Language


根据这个页面,设置应该放在.pam_environment或.profile中。 https://help.ubuntu.com/community/EnvironmentVariables#A.2BAH4ALw.pam_environment 我的默认.profile正在源化.bashrc,所以我将这些行添加到我的.bashrc中,因为我已经将其纳入源代码控制。
#Change first day of week to Monday
export LC_TIME=en_GB.UTF-8
#Change to metric system
export LC_MEASUREMENT=en_GB.UTF-8

我正在使用14.04.1版本。

enter image description here

更新:01/15/16 Ubuntu 14.04.03
在今年早些时候,我在我的.bashrc文件中的这些行不再起作用。 将相同的行移动到.pam_environment或.profile文件中确实有效。这是用户设置,而不是系统范围内的设置。

昨天安装的14.04.1更新破坏了这个功能。 - Antonios Hadjigeorgalis
export LC_TIME=en_GB.UTF-8 放入 .personal 是第三个同样有效的选项。 - Serge Stroobandt
这应该是正确的答案。它允许自定义组合区域设置。只要/.bashrc不存在,环境变量应该放在/.profile中。不需要Eport命令。 - LUser

对我来说,https://wired-mind.info/post/528 上的建议起了作用。
编辑文件 /usr/share/i18n/locales/en_US
sudo nano /usr/share/i18n/locales/en_US

找到这个部分:
week 7;19971130;7 

first_weekday   1 

first_workday   2

first_weekday设置为2。
保存并退出文件,然后执行:
sudo locale-gen

在我的情况下,重新生成locale-gen很重要,才能开始看到变化。

这已经是一个非常旧的话题了,我添加了这些答案作为对未来读者寻找相同问题但希望有更少骇客方式的参考。

使用en_DK作为语言环境。

这个语言环境是作为在丹麦正式书写英语的一种方式而开发的,但它也被用于丹麦以外的地方,作为一种通用的欧洲大陆英语环境。它解决了en_US中最烦人的问题,并且不需要修改任何系统文件。如果需要更细致调整的解决方案 - 其他答案都很好。


感谢今天的+1,它提醒了我我知道如何解决我在这台新电脑上遇到的问题。 - Simson

设置地区中的first_weekday

首先,确定正在使用哪个时间地区。系统范围内的设置在/etc/default/locale中可能会被~\.pam_environment中的设置覆盖。

$ cat ~\.pam_environment
…
LC_TIME=en_IE.UTF-8
…

这里使用的区域设置是en_IE.UTF-8。 现在,以管理员权限编辑区域设置的源文件。 这里使用的编辑器是vim,但也可以替换为nano
$ sudo vim /usr/share/i18n/locales/en_IE

添加以下行并保存修改后的区域源文件。
first_weekday  2
first_workday  2

最后,使用以下命令重新生成本地化文件:
$ sudo locale-gen

请注销并重新登录以使更改生效。

我只想提醒一下,设置区域设置的默认用户文件夹是:~/.config/locale.conf。如果$XDG_CONFIG_HOME被设置为其他值,则可能会有所不同。正如之前指出的那样,系统配置/etc/default/locale将作为后备值使用。
设置LC_TIME="en_GB.UTF-8"就足够了。您无需设置其他变量即可正确获取星期起始日。