#!/bin/bash # omarchy:summary=Show or switch the system language between English and Simplified Chinese # omarchy:args=[en|zh] # omarchy:examples=omarchy language | omarchy language zh # omarchy:requires-sudo=true set -euo pipefail locale_conf=/etc/locale.conf if (($# == 0)); then lang=$(sed -n 's/^LANG=//p' "$locale_conf") # locale.conf may quote the value. lang=${lang#[\"\']} printf '%s\n' "${lang%[\"\']}" exit 0 fi case ${1:-} in en) lang=en_US.UTF-8 ;; zh) lang=zh_CN.UTF-8 ;; *) echo "Usage: omarchy-language [en|zh]" >&2 exit 1 ;; esac sudo sed -i "s/^#\(${lang/./\\.} UTF-8\)/\1/" /etc/locale.gen sudo locale-gen if grep -q '^LANG=' "$locale_conf"; then sudo sed -i "s/^LANG=.*/LANG=$lang/" "$locale_conf" else sudo sed -i '$a\' "$locale_conf" echo "LANG=$lang" | sudo tee -a "$locale_conf" >/dev/null fi # The language reaches only a new session, so offer one in the new language. prompt=$(LANG=$lang omarchy-text "Log out now to switch the language?") log_out=$(LANG=$lang omarchy-text "Log out now") later=$(LANG=$lang omarchy-text "Later") if [[ -t 0 && -t 1 ]] && gum confirm --affirmative "$log_out" --negative "$later" "$prompt" 2>&1; then omarchy-system-logout else LANG=$lang omarchy-text "Log back in to switch the language." fi