#!/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