translators-packages team mailing list archive
-
translators-packages team
-
Mailing list archive
-
Message #01297
[Bug 2059766] [NEW] Snapd date localization is VERY MUCH wrong
Public bug reported:
Consider this:
```
dmitry@MUNIT-517:~$ LANG=C.UTF-8 snap info firefox | grep refresh-date
refresh-date: 3 days ago, at 11:52 EET
dmitry@MUNIT-517:~$ LANG=ru_RU.UTF-8 snap info firefox | grep refresh-date
refresh-date: 3 дня назад в 2626:52 UTC
```
2626 is a funny hour indeed.
After some research™ I've found out that:
1. Snappy asks gettext for a localized string "%d days ago, at 15:04 MST",
2. gettext finds a string from a language-pack,
3. Then this string is formatted using printf-like format and Go time formatting.
This language pack provides those:
```
msgid "%d day ago, at 15:04 MST"
msgid_plural "%d days ago, at 15:04 MST"
msgstr[0] "%d день назад в 22:04 UTC"
msgstr[1] "%d дня назад в 22:04 UTC"
msgstr[2] "%d дней назад в 22:04 UTC"
```
Unfortunately, Go time formatting layouts are made by writing out in the
way you like a particular magic datetime constant, and layout parser
extracts those magic digits to understand which parts of the date are to
be printed (see https://pkg.go.dev/time#pkg-constants). So, THE TIME
MUST NOT BE LOCALIZED. And there is no way to know that in advance if
you aren't aware of the ways of the Go language. Also, the magic
datetime is quite funny on it's own.
So, just change the lines to:
```
msgid "%d day ago, at 15:04 MST"
msgid_plural "%d days ago, at 15:04 MST"
msgstr[0] "%d день назад в 15:04 MST"
msgstr[1] "%d дня назад в 15:04 MST"
msgstr[2] "%d дней назад в 15:04 MST"
```
But you probably need to check the localization of every project written
in Go that formats time...
I guess if affects all releases...
ProblemType: Bug
DistroRelease: Ubuntu 22.04
Package: language-pack-ru-base 1:22.04+20240212
ProcVersionSignature: Ubuntu 6.5.0-26.26~22.04.1-generic 6.5.13
Uname: Linux 6.5.0-26-generic x86_64
NonfreeKernelModules: nvidia_modeset nvidia
ApportVersion: 2.20.11-0ubuntu82.5
Architecture: amd64
CasperMD5CheckResult: unknown
CurrentDesktop: ubuntu:GNOME
Date: Fri Mar 29 11:45:24 2024
InstallationDate: Installed on 2022-04-19 (710 days ago)
InstallationMedia: Ubuntu 20.04.3 LTS "Focal Fossa" - Release amd64 (20210819)
PackageArchitecture: all
SourcePackage: language-pack-ru-base
UpgradeStatus: Upgraded to jammy on 2022-08-21 (585 days ago)
** Affects: language-pack-ru-base (Ubuntu)
Importance: Undecided
Status: New
** Tags: amd64 apport-bug jammy
** Description changed:
Consider this:
```
dmitry@MUNIT-517:~$ LANG=C.UTF-8 snap info firefox | grep refresh-date
refresh-date: 3 days ago, at 11:52 EET
dmitry@MUNIT-517:~$ LANG=ru_RU.UTF-8 snap info firefox | grep refresh-date
refresh-date: 3 дня назад в 2626:52 UTC
```
2626 is a funny hour indeed.
After some research™ I've found out that:
1. Snappy asks gettext for a localized string "%d days ago, at 15:04 MST",
- 2. gettext founds a string from a language-pack,
+ 2. gettext finds a string from a language-pack,
3. Then this string is formatted using printf-like format and Go time formatting.
This language pack provides those:
```
msgid "%d day ago, at 15:04 MST"
msgid_plural "%d days ago, at 15:04 MST"
msgstr[0] "%d день назад в 22:04 UTC"
msgstr[1] "%d дня назад в 22:04 UTC"
msgstr[2] "%d дней назад в 22:04 UTC"
```
Unfortunately, Go time formatting layouts are made by writing out in the
way you like a particular magic datetime constant, and layout parser
extracts those magic digits to understand which parts of the date are to
be printed (see https://pkg.go.dev/time#pkg-constants). So, THE TIME
MUST NOT BE LOCALIZED. And there is no way to know that in advance if
you aren't aware of the ways of the Go language. Also, the magic
datetime is quite funny on it's own.
So, just change the lines to:
```
msgid "%d day ago, at 15:04 MST"
msgid_plural "%d days ago, at 15:04 MST"
msgstr[0] "%d день назад в 15:04 MST"
msgstr[1] "%d дня назад в 15:04 MST"
msgstr[2] "%d дней назад в 15:04 MST"
```
But you probably need to check the localization of every project written
in Go that formats time...
I guess if affects all releases...
ProblemType: Bug
DistroRelease: Ubuntu 22.04
Package: language-pack-ru-base 1:22.04+20240212
ProcVersionSignature: Ubuntu 6.5.0-26.26~22.04.1-generic 6.5.13
Uname: Linux 6.5.0-26-generic x86_64
NonfreeKernelModules: nvidia_modeset nvidia
ApportVersion: 2.20.11-0ubuntu82.5
Architecture: amd64
CasperMD5CheckResult: unknown
CurrentDesktop: ubuntu:GNOME
Date: Fri Mar 29 11:45:24 2024
InstallationDate: Installed on 2022-04-19 (710 days ago)
InstallationMedia: Ubuntu 20.04.3 LTS "Focal Fossa" - Release amd64 (20210819)
PackageArchitecture: all
SourcePackage: language-pack-ru-base
UpgradeStatus: Upgraded to jammy on 2022-08-21 (585 days ago)
--
You received this bug notification because you are a member of
Translators Packages, which is subscribed to language-pack-ru-base in
Ubuntu.
https://bugs.launchpad.net/bugs/2059766
Title:
Snapd date localization is VERY MUCH wrong
Status in language-pack-ru-base package in Ubuntu:
New
Bug description:
Consider this:
```
dmitry@MUNIT-517:~$ LANG=C.UTF-8 snap info firefox | grep refresh-date
refresh-date: 3 days ago, at 11:52 EET
dmitry@MUNIT-517:~$ LANG=ru_RU.UTF-8 snap info firefox | grep refresh-date
refresh-date: 3 дня назад в 2626:52 UTC
```
2626 is a funny hour indeed.
After some research™ I've found out that:
1. Snappy asks gettext for a localized string "%d days ago, at 15:04 MST",
2. gettext finds a string from a language-pack,
3. Then this string is formatted using printf-like format and Go time formatting.
This language pack provides those:
```
msgid "%d day ago, at 15:04 MST"
msgid_plural "%d days ago, at 15:04 MST"
msgstr[0] "%d день назад в 22:04 UTC"
msgstr[1] "%d дня назад в 22:04 UTC"
msgstr[2] "%d дней назад в 22:04 UTC"
```
Unfortunately, Go time formatting layouts are made by writing out in
the way you like a particular magic datetime constant, and layout
parser extracts those magic digits to understand which parts of the
date are to be printed (see https://pkg.go.dev/time#pkg-constants).
So, THE TIME MUST NOT BE LOCALIZED. And there is no way to know that
in advance if you aren't aware of the ways of the Go language. Also,
the magic datetime is quite funny on it's own.
So, just change the lines to:
```
msgid "%d day ago, at 15:04 MST"
msgid_plural "%d days ago, at 15:04 MST"
msgstr[0] "%d день назад в 15:04 MST"
msgstr[1] "%d дня назад в 15:04 MST"
msgstr[2] "%d дней назад в 15:04 MST"
```
But you probably need to check the localization of every project
written in Go that formats time...
I guess if affects all releases...
ProblemType: Bug
DistroRelease: Ubuntu 22.04
Package: language-pack-ru-base 1:22.04+20240212
ProcVersionSignature: Ubuntu 6.5.0-26.26~22.04.1-generic 6.5.13
Uname: Linux 6.5.0-26-generic x86_64
NonfreeKernelModules: nvidia_modeset nvidia
ApportVersion: 2.20.11-0ubuntu82.5
Architecture: amd64
CasperMD5CheckResult: unknown
CurrentDesktop: ubuntu:GNOME
Date: Fri Mar 29 11:45:24 2024
InstallationDate: Installed on 2022-04-19 (710 days ago)
InstallationMedia: Ubuntu 20.04.3 LTS "Focal Fossa" - Release amd64 (20210819)
PackageArchitecture: all
SourcePackage: language-pack-ru-base
UpgradeStatus: Upgraded to jammy on 2022-08-21 (585 days ago)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/language-pack-ru-base/+bug/2059766/+subscriptions