forked from gitea/gitea
		
	 288c2e8c48
			
		
	
	
		288c2e8c48
		
			
		
	
	
	
	
		
			
			Follow #23633 and #23240 Close #23814 Now we almost have a complete test set for Gitea's LocalStore. This PR is still a quick fix for the legacy locale system (see the TODOs), to resolve the problems fundamentally, it needs more work in the future.
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| # this script runs in alpine image which only has `sh` shell
 | |
| 
 | |
| set +e
 | |
| if sed --version 2>/dev/null | grep -q GNU; then
 | |
|   SED_INPLACE="sed -i"
 | |
| else
 | |
|   SED_INPLACE="sed -i ''"
 | |
| fi
 | |
| set -e
 | |
| 
 | |
| if [ ! -f ./options/locale/locale_en-US.ini ]; then
 | |
|   echo "please run this script in the root directory of the project"
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| mv ./options/locale/locale_en-US.ini ./options/
 | |
| 
 | |
| # the "ini" library for locale has many quirks, its behavior is different from Crowdin.
 | |
| # see i18n_test.go for more details
 | |
| 
 | |
| # this script helps to unquote the Crowdin outputs for the quirky ini library
 | |
| # * find all `key="...\"..."` lines
 | |
| # * remove the leading quote
 | |
| # * remove the trailing quote
 | |
| # * unescape the quotes
 | |
| # * eg: key="...\"..." => key=..."...
 | |
| $SED_INPLACE -r -e '/^[-.A-Za-z0-9_]+[ ]*=[ ]*".*"$/ {
 | |
| 	s/^([-.A-Za-z0-9_]+)[ ]*=[ ]*"/\1=/
 | |
| 	s/"$//
 | |
| 	s/\\"/"/g
 | |
| 	}' ./options/locale/*.ini
 | |
| 
 | |
| # * if the escaped line is incomplete like `key="...` or `key=..."`, quote it with backticks
 | |
| # * eg: key="... => key=`"...`
 | |
| # * eg: key=..." => key=`..."`
 | |
| $SED_INPLACE -r -e 's/^([-.A-Za-z0-9_]+)[ ]*=[ ]*(".*[^"])$/\1=`\2`/' ./options/locale/*.ini
 | |
| $SED_INPLACE -r -e 's/^([-.A-Za-z0-9_]+)[ ]*=[ ]*([^"].*")$/\1=`\2`/' ./options/locale/*.ini
 | |
| 
 | |
| # Remove translation under 25% of en_us
 | |
| baselines=$(wc -l "./options/locale_en-US.ini" | cut -d" " -f1)
 | |
| baselines=$((baselines / 4))
 | |
| for filename in ./options/locale/*.ini; do
 | |
|   lines=$(wc -l "$filename" | cut -d" " -f1)
 | |
|   if [ $lines -lt $baselines ]; then
 | |
|     echo "Removing $filename: $lines/$baselines"
 | |
|     rm "$filename"
 | |
|   fi
 | |
| done
 | |
| 
 | |
| mv ./options/locale_en-US.ini ./options/locale/
 |