Browse Source

lang - script for adding new texts to dictionaries

Robert Pelnar 5 years ago
parent
commit
853fced969
1 changed files with 59 additions and 0 deletions
  1. 59 0
      lang/lang-add.sh

+ 59 - 0
lang/lang-add.sh

@@ -0,0 +1,59 @@
+#!/bin/sh
+#
+# lang-add.sh - multi-language support script
+#  add new texts from list (lang_add.txt) to all dictionary files
+#
+# Input files:
+#  lang_add.txt
+# Updated files:
+#  lang_en.txt and all lang_en_xx.txt
+#  
+
+# insert single text to english dictionary
+# $1 - text to insert
+insert_en()
+{
+	# extract english texts, merge new text, grep line number
+	ln=$((cat lang_en.txt; echo $1) | sed "/^$/d;/^#/d" | sort | grep -n "$1" | sed "s/:.*//")
+	# calculate position for insertion
+	ln=$((3*(ln-2)+1))
+	# insert new text
+	sed -i "$ln"'i\\' lang_en.txt
+	sed -i "$ln"'i\'"$1"'\' lang_en.txt
+	sed -i "$ln"'i\#\' lang_en.txt
+}
+
+# insert single text to translated dictionary
+# $1 - text to insert
+# $2 - sufix
+insert_xx()
+{
+	ln=$((cat lang_en_$2.txt; echo $1) | sed "/^$/d;/^#/d" | sed -n 'p;n' | sort | grep -n "$1" | sed "s/:.*//")
+	ln=$((4*(ln-2)+1))
+	sed -i "$ln"'i\\' lang_en_$2.txt
+	sed -i "$ln"'i\"\x00"\' lang_en_$2.txt
+	sed -i "$ln"'i\'"$1"'\' lang_en_$2.txt
+	sed -i "$ln"'i\#\' lang_en_$2.txt
+}
+
+# check if input file exists
+if ![ -e lang_add.txt ]; then
+	echo "file lang_add.txt not found"
+	exit 1
+fi
+
+cat lang_add.txt | sed 's/^/"/;s/$/"/' | while read new_s; do
+	if grep "$new_s" lang_en.txt >/dev/nul; then
+		echo "text already exist:"
+		echo "$new_s"
+		echo
+	else
+		echo "adding text:"
+		echo "$new_s"
+		echo
+		insert_en "$new_s"
+		insert_xx "$new_s" 'cz'
+	fi
+done
+
+exit 0