macOS: Add support for 12/24-hour time display preferences

This commit is contained in:
Jamie Kyle 2023-07-31 09:23:19 -07:00 committed by GitHub
parent 88858af144
commit 1143c0e9ba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 208 additions and 14 deletions

View file

@ -122,6 +122,7 @@ import type { LocaleType } from './locale';
import { load as loadLocale } from './locale';
import type { LoggerType } from '../ts/types/Logging';
import { HourCyclePreference } from '../ts/types/I18N';
const STICKER_CREATOR_PARTITION = 'sticker-creator';
@ -408,6 +409,19 @@ function getResolvedMessagesLocale(): LocaleType {
return resolvedTranslationsLocale;
}
function getHourCyclePreference(): HourCyclePreference {
if (process.platform !== 'darwin') {
return HourCyclePreference.UnknownPreference;
}
if (systemPreferences.getUserDefault('AppleICUForce24HourTime', 'boolean')) {
return HourCyclePreference.Prefer24;
}
if (systemPreferences.getUserDefault('AppleICUForce12HourTime', 'boolean')) {
return HourCyclePreference.Prefer12;
}
return HourCyclePreference.UnknownPreference;
}
type PrepareUrlOptions = {
forCalling?: boolean;
forCamera?: boolean;
@ -1686,6 +1700,9 @@ app.on('ready', async () => {
loadPreferredSystemLocales()
);
const hourCyclePreference = getHourCyclePreference();
logger.info(`app.ready: hour cycle preference: ${hourCyclePreference}`);
logger.info(
`app.ready: preferred system locales: ${preferredSystemLocales.join(
', '
@ -1693,6 +1710,7 @@ app.on('ready', async () => {
);
resolvedTranslationsLocale = loadLocale({
preferredSystemLocales,
hourCyclePreference,
logger: getLogger(),
});
}
@ -2264,6 +2282,7 @@ ipc.on('get-config', async event => {
name: packageJson.productName,
resolvedTranslationsLocale: getResolvedMessagesLocale().name,
resolvedTranslationsLocaleDirection: getResolvedMessagesLocale().direction,
hourCyclePreference: getResolvedMessagesLocale().hourCyclePreference,
preferredSystemLocales: getPreferredSystemLocales(),
version: app.getVersion(),
buildCreation: config.get<number>('buildCreation'),