Fix locale for macOS

This commit is contained in:
Timmy Welch 2022-03-20 02:10:11 -07:00
parent 7d2702c3b6
commit 95d167561d
2 changed files with 45 additions and 0 deletions

View File

@ -1,4 +1,5 @@
#!/usr/bin/env python3
import localefix
from comictaggerlib.main import ctmain
if __name__ == '__main__':

44
localefix.py Normal file
View File

@ -0,0 +1,44 @@
import locale
import os
import subprocess
import sys
def _lang_code_mac():
"""
stolen from https://github.com/mu-editor/mu
Returns the user's language preference as defined in the Language & Region
preference pane in macOS's System Preferences.
"""
# Uses the shell command `defaults read -g AppleLocale` that prints out a
# language code to standard output. Assumptions about the command:
# - It exists and is in the shell's PATH.
# - It accepts those arguments.
# - It returns a usable language code.
#
# Reference documentation:
# - The man page for the `defaults` command on macOS.
# - The macOS underlying API:
# https://developer.apple.com/documentation/foundation/nsuserdefaults.
LANG_DETECT_COMMAND = 'defaults read -g AppleLocale'
status, output = subprocess.getstatusoutput(LANG_DETECT_COMMAND)
if status == 0:
# Command was successful.
lang_code = output
else:
_logger.warning('Language detection command failed: %r', output)
lang_code = ''
return lang_code
if sys.platform == "darwin" and "LANG" not in os.environ:
code = _lang_code_mac()
if code != "":
os.environ["LANG"] = f"{code}.utf-8"
locale.setlocale(locale.LC_ALL, '')
sys.stdout.reconfigure(encoding=sys.getdefaultencoding())
sys.stderr.reconfigure(encoding=sys.getdefaultencoding())
sys.stdin.reconfigure(encoding=sys.getdefaultencoding())