espruino / espruino/BangleApps
[locale] Improve support for meridians
- Dominant language
- JavaScript
- Stars
- 571
- Forks
- 1.3k
- Avg merge
- 17h 38m
- Merged PRs (30d)
- 17
Description
Right now it is impossible to properly implement support for meridians on clocks. You can use `require("locale").meridian(new Date())` to get the current meridian and display that somewhere in your clock. This will work in some cases but not in the following cases:
1. The user's locale includes meridians but the user chose `24 hour clock` in settings. In this case, you will still be showing the meridians even though you are displaying a 24-hour clock. To remove the meridians, you must manually read the settings file and check if the setting is set to 12-hour or 24-hour, then you must stop displaying the meridian based on that information. That is not a very nice solution.
2. The user's locale does not include meridians but the user chose `12 hour clock` in settings. All locales that traditionally use 24-hour clocks do not have meridian information. If the user chooses a 12-hour clock here, you have no way of displaying a meridian.
Another issue is that there is no documentation on how to use the meridians. It seems like most clocks have simply opted to never show meridians, probably because they were not aware of it, or because they couldn't figure out how to use it properly.
I think we need the following changes to properly support meridians:
- [x] `locale` should return an empty string for meridian when the user has chosen a 24-hour clock. (fixes problem 1) - #3535
- [ ] Include meridian names in all locales. (fixes problem 2)
- [x] Document how to use meridians correctly in [Bangle.js Internationalisation](https://www.espruino.com/Bangle.js+Locale) - https://github.com/espruino/EspruinoDocs/pull/735
- [x] Add a section in [Bangle.js Clock Faces](https://www.espruino.com/Bangle.js+Clock) on using `locale` correctly - https://github.com/espruino/EspruinoDocs/pull/736
- [x] Add an `is12Hour` function to `locale` so apps can easily know which clock format the user has chosen. - #3535
The last one is not as important as the others, but I could imagine that some apps would want to change the layout depending on the clock format.
What do you think?
Contributor guide
Research direction
Start with the `locale` module's `meridian` entry point and the locale data, checking how meridians are represented for locales that traditionally use 24-hour clocks. Done means meridian names are available across all locales so users selecting a 12-hour clock can display them; the other requested changes are already marked complete.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- internationalization, localization
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100