- Add complete Norwegian (nb_NO) language file - Update .gitignore to exclude temporary and backup files - Remove temporary and backup files from language directory - Clean up scripts directory and add to .gitignore - Update language file format to use key-value pairs
69 lines
1.8 KiB
Bash
Executable File
69 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env zsh
|
|
|
|
# Script to migrate hardcoded messages to the message system
|
|
|
|
set -e
|
|
|
|
# Configuration
|
|
SOURCE_DIR="$(dirname "$0")/.."
|
|
LANG_FILE="${SOURCE_DIR}/include/qsgen2/lang/qsgen2.en"
|
|
TEMP_FILE="${SOURCE_DIR}/.qsgen2.tmp"
|
|
|
|
# Create a backup of the original file
|
|
backup_file() {
|
|
local file="$1"
|
|
local backup="${file}.bak.$(date +%s)"
|
|
cp "$file" "$backup"
|
|
echo "Created backup at: $backup"
|
|
}
|
|
|
|
# Replace a message in the code
|
|
replace_message() {
|
|
local old_msg="$1"
|
|
local new_key="$2"
|
|
local file="$3"
|
|
|
|
# Escape special characters for sed
|
|
local escaped_old=$(printf '%s\n' "$old_msg" | sed 's/[&/\^$*.]/\\&/g')
|
|
local escaped_new="_msg i18n \"$new_key\""
|
|
|
|
# Handle messages with parameters
|
|
if [[ "$old_msg" == *"%s"* ]]; then
|
|
escaped_new="${escaped_new} \"\${1:-\"\"}\""
|
|
fi
|
|
|
|
# Replace in file
|
|
sed -i "s/_msg \(info\|warning\|error\|debug\|other\) \"$escaped_old\"/$escaped_new/g" "$file"
|
|
}
|
|
|
|
# Process a single file
|
|
process_file() {
|
|
local file="$1"
|
|
echo "Processing file: $file"
|
|
|
|
# Create a backup
|
|
backup_file "$file"
|
|
|
|
# Replace messages
|
|
while IFS= read -r line; do
|
|
if [[ "$line" =~ ^([a-z.]+)[[:space:]]*=[[:space:]]*"([^"]+)" ]]; then
|
|
local key="${match[1]}"
|
|
local msg="${match[2]}"
|
|
|
|
# Skip comments and empty lines
|
|
[[ "$key" == "#"* ]] && continue
|
|
[[ -z "$key" ]] && continue
|
|
|
|
# Replace in file
|
|
replace_message "$msg" "$key" "$file"
|
|
fi
|
|
done < "$LANG_FILE"
|
|
}
|
|
|
|
# Find all shell scripts in the project
|
|
find "$SOURCE_DIR" -type f \( -name "*.zsh" -o -name "*.sh" \) -not -path "*/.*" | while read -r file; do
|
|
process_file "$file"
|
|
done
|
|
|
|
echo "Migration complete. Please review the changes and test the application."
|