-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathselect-language.sh
More file actions
executable file
·125 lines (117 loc) · 3.47 KB
/
Copy pathselect-language.sh
File metadata and controls
executable file
·125 lines (117 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/bin/bash
# Language selection helper
# Resolve symlinks to find real script directory
SCRIPT_PATH="${BASH_SOURCE[0]}"
while [[ -L "$SCRIPT_PATH" ]]; do
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
SCRIPT_PATH="$(readlink "$SCRIPT_PATH")"
[[ "$SCRIPT_PATH" != /* ]] && SCRIPT_PATH="$SCRIPT_DIR/$SCRIPT_PATH"
done
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
ENV_FILE="$SCRIPT_DIR/.env"
ICON_DIR="$SCRIPT_DIR/icons"
source "$ENV_FILE" 2>/dev/null
# All Whisper-supported languages (Groq API)
LANGUAGES=(
"auto|Auto-detect"
"en|English"
"de|German (Deutsch)"
"es|Spanish (Español)"
"fr|French (Français)"
"hi|Hindi (हिन्दी)"
"it|Italian (Italiano)"
"pt|Portuguese (Português)"
"nl|Dutch (Nederlands)"
"pl|Polish (Polski)"
"ru|Russian (Русский)"
"zh|Chinese (中文)"
"ja|Japanese (日本語)"
"ko|Korean (한국어)"
"ar|Arabic (العربية)"
"tr|Turkish (Türkçe)"
"vi|Vietnamese (Tiếng Việt)"
"th|Thai (ไทย)"
"id|Indonesian"
"ms|Malay"
"tl|Tagalog"
"uk|Ukrainian (Українська)"
"cs|Czech (Čeština)"
"el|Greek (Ελληνικά)"
"he|Hebrew (עברית)"
"hu|Hungarian (Magyar)"
"sv|Swedish (Svenska)"
"da|Danish (Dansk)"
"fi|Finnish (Suomi)"
"no|Norwegian (Norsk)"
"ro|Romanian (Română)"
"sk|Slovak (Slovenčina)"
"bg|Bulgarian (Български)"
"hr|Croatian (Hrvatski)"
"sr|Serbian (Српски)"
"sl|Slovenian (Slovenščina)"
"et|Estonian (Eesti)"
"lv|Latvian (Latviešu)"
"lt|Lithuanian (Lietuvių)"
"bn|Bengali (বাংলা)"
"ta|Tamil (தமிழ்)"
"te|Telugu (తెలుగు)"
"mr|Marathi (मराठी)"
"ur|Urdu (اردو)"
"fa|Persian (فارسی)"
"sw|Swahili"
"af|Afrikaans"
"ca|Catalan"
"gl|Galician"
"eu|Basque"
"cy|Welsh"
"is|Icelandic"
)
# Build menu items
menu_items=""
current_lang="${LANGUAGE:-auto}"
for lang_entry in "${LANGUAGES[@]}"; do
code="${lang_entry%%|*}"
name="${lang_entry#*|}"
if [[ "$code" == "$current_lang" ]] || [[ "$code" == "auto" && -z "$LANGUAGE" ]]; then
menu_items="${menu_items}TRUE\n${name}\n${code}\n"
else
menu_items="${menu_items}FALSE\n${name}\n${code}\n"
fi
done
# Show selection dialog
selected=$(echo -e "$menu_items" | yad --list \
--title="Select Language" \
--column="":RD \
--column="Language" \
--column="Code":HD \
--radiolist \
--width=350 \
--height=500 \
--print-column=3 \
--separator="" \
--center \
2>/dev/null)
if [[ -n "$selected" ]]; then
# Update .env file
if [[ "$selected" == "auto" ]]; then
if grep -q "^LANGUAGE=" "$ENV_FILE" 2>/dev/null; then
sed -i 's/^LANGUAGE=.*/LANGUAGE=""/' "$ENV_FILE"
fi
notify-send "Voice Input" "Language: Auto-detect" -i "$ICON_DIR/idle.svg"
else
if grep -q "^LANGUAGE=" "$ENV_FILE" 2>/dev/null; then
sed -i "s/^LANGUAGE=.*/LANGUAGE=\"$selected\"/" "$ENV_FILE"
else
echo "LANGUAGE=\"$selected\"" >> "$ENV_FILE"
fi
# Find the display name
for lang_entry in "${LANGUAGES[@]}"; do
code="${lang_entry%%|*}"
name="${lang_entry#*|}"
if [[ "$code" == "$selected" ]]; then
notify-send "Voice Input" "Language: $name" -i "$ICON_DIR/idle.svg"
break
fi
done
fi
fi