88 lines
2.1 KiB
Bash
Executable File
88 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
TRANSLATIONS_DIR="translations"
|
|
SYSTEM_LOCALE_DIR="build/usr/share/locale"
|
|
|
|
# Проверка на наличие аргумента
|
|
if [ $# -eq 0 ]; then
|
|
echo "Error: Please specify program name as argument"
|
|
exit 1
|
|
fi
|
|
|
|
PROGRAM_PATH="$1"
|
|
PROGRAM_NAME=`basename $PROGRAM_PATH`
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
compile_po_to_mo() {
|
|
local lang="$1"
|
|
local po_file="$TRANSLATIONS_DIR/${lang}.po"
|
|
local mo_dir="$SYSTEM_LOCALE_DIR/${lang}/LC_MESSAGES"
|
|
local mo_file="$mo_dir/$PROGRAM_NAME.mo"
|
|
|
|
if [ -f "$po_file" ]; then
|
|
echo -e "${GREEN}Compiling $mo_file...${NC}"
|
|
mkdir -p "$mo_dir"
|
|
msgfmt -o "$mo_file" "$po_file"
|
|
else
|
|
echo -e "${YELLOW}Warning: $po_file not found, skipping...${NC}"
|
|
fi
|
|
}
|
|
|
|
get_available_languages() {
|
|
ls -1 "$TRANSLATIONS_DIR"/*.po 2>/dev/null | sed "s|$TRANSLATIONS_DIR/||" | sed 's|\.po||' || echo ""
|
|
}
|
|
|
|
generate_run_script() {
|
|
echo -e "${GREEN}Generating run.sh...${NC}"
|
|
cat > run.sh << EOF
|
|
#!/bin/bash
|
|
|
|
if [ \$# -eq 0 ]; then
|
|
echo "Error: Please specify a language"
|
|
exit 1
|
|
fi
|
|
|
|
LANGUAGE=\$1
|
|
LANG_DIR="translations"
|
|
|
|
if [ ! -f "\$LANG_DIR/\$LANGUAGE.po" ]; then
|
|
echo "Error: Language '\$LANGUAGE' not supported. Available languages:"
|
|
ls -1 \$LANG_DIR/*.po | sed 's|.*/||;s|\.po||'
|
|
exit 1
|
|
fi
|
|
|
|
LANG="\${LANGUAGE}_\${LANGUAGE@U}.UTF-8"
|
|
LD_PRELOAD=.preload/liboverride_bindtextdomain.so LANG="\$LANG" $PROGRAM_PATH
|
|
EOF
|
|
|
|
chmod +x run.sh
|
|
echo -e "${GREEN}run.sh generated successfully${NC}"
|
|
}
|
|
|
|
main() {
|
|
if [ ! -d "$TRANSLATIONS_DIR" ]; then
|
|
echo -e "${RED}Error: $TRANSLATIONS_DIR directory not found${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}Starting MO files compilation...${NC}"
|
|
local languages=$(get_available_languages)
|
|
|
|
if [ -z "$languages" ]; then
|
|
echo -e "${YELLOW}Warning: No .po files found in $TRANSLATIONS_DIR${NC}"
|
|
else
|
|
for lang in $languages; do
|
|
compile_po_to_mo "$lang"
|
|
done
|
|
echo -e "${GREEN}MO files compiled successfully!${NC}"
|
|
fi
|
|
|
|
generate_run_script
|
|
}
|
|
|
|
main
|