Merge pull request #54024 from akien-mga/editor-i18n-thresholds
This commit is contained in:
commit
efa3ff6b95
@ -21,3 +21,24 @@ merge:
|
|||||||
|
|
||||||
check:
|
check:
|
||||||
@for po in $(POFILES); do msgfmt -c $$po -o /dev/null; done
|
@for po in $(POFILES); do msgfmt -c $$po -o /dev/null; done
|
||||||
|
|
||||||
|
# Generate completion ratio from statistics string such as:
|
||||||
|
# 2775 translated messages, 272 fuzzy translations, 151 untranslated messages.
|
||||||
|
# First number can be 0, second and third numbers are only present if non-zero.
|
||||||
|
include-list:
|
||||||
|
@list=""; \
|
||||||
|
threshold=0.10; \
|
||||||
|
for po in $(POFILES); do \
|
||||||
|
res=`msgfmt --statistics $$po -o /dev/null 2>&1 | sed 's/[^0-9,]*//g'`; \
|
||||||
|
complete=`cut -d',' -f1 <<< $$res`; \
|
||||||
|
fuzzy_or_untranslated=`cut -d',' -f2 <<< $$res`; \
|
||||||
|
untranslated_maybe=`cut -d',' -f3 <<< $$res`; \
|
||||||
|
if [ -z "$$fuzzy_or_untranslated" ]; then fuzzy_or_untranslated=0; fi; \
|
||||||
|
if [ -z "$$untranslated_maybe" ]; then untranslated_maybe=0; fi; \
|
||||||
|
incomplete=`expr $$fuzzy_or_untranslated + $$untranslated_maybe`; \
|
||||||
|
if `awk "BEGIN {exit !($$complete / ($$complete + $$incomplete) > $$threshold)}"`; then \
|
||||||
|
lang=`basename $$po .po`; \
|
||||||
|
list+="$$lang,"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
echo $$list;
|
||||||
|
21
editor/SCsub
21
editor/SCsub
@ -5,7 +5,6 @@ Import("env")
|
|||||||
env.editor_sources = []
|
env.editor_sources = []
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import os.path
|
|
||||||
import glob
|
import glob
|
||||||
import editor_builders
|
import editor_builders
|
||||||
|
|
||||||
@ -59,7 +58,7 @@ if env["tools"]:
|
|||||||
else:
|
else:
|
||||||
docs += Glob(d + "/*.xml") # Custom.
|
docs += Glob(d + "/*.xml") # Custom.
|
||||||
|
|
||||||
_make_doc_data_class_path(os.path.join(env.Dir("#").abspath, "editor"))
|
_make_doc_data_class_path(env.Dir("#editor").abspath)
|
||||||
|
|
||||||
docs = sorted(docs)
|
docs = sorted(docs)
|
||||||
env.Depends("#editor/doc_data_compressed.gen.h", docs)
|
env.Depends("#editor/doc_data_compressed.gen.h", docs)
|
||||||
@ -69,10 +68,17 @@ if env["tools"]:
|
|||||||
env.Run(editor_builders.make_doc_header, "Generating documentation header."),
|
env.Run(editor_builders.make_doc_header, "Generating documentation header."),
|
||||||
)
|
)
|
||||||
|
|
||||||
path = env.Dir(".").abspath
|
# Editor interface and class reference translations incur a significant size
|
||||||
|
# cost for the editor binary (see godot-proposals#3421).
|
||||||
|
# To limit it, we only include translations with a high enough completion
|
||||||
|
# ratio (30% for the editor UI, 10% for the class reference).
|
||||||
|
# Generated with `make include-list` for each resource.
|
||||||
|
|
||||||
# Editor translations
|
# Editor translations
|
||||||
tlist = glob.glob(path + "/translations/*.po")
|
to_include = (
|
||||||
|
"ar,bg,bn,ca,cs,de,el,eo,es_AR,es,fi,fr,gl,he,hu,id,it,ja,ko,ms,nb,nl,pl,pt_BR,pt,ro,ru,sk,sv,th,tr,uk,vi,zh_CN,zh_TW"
|
||||||
|
).split(",")
|
||||||
|
tlist = [env.Dir("#editor/translations").abspath + "/" + f + ".po" for f in to_include]
|
||||||
env.Depends("#editor/editor_translations.gen.h", tlist)
|
env.Depends("#editor/editor_translations.gen.h", tlist)
|
||||||
env.CommandNoCache(
|
env.CommandNoCache(
|
||||||
"#editor/editor_translations.gen.h",
|
"#editor/editor_translations.gen.h",
|
||||||
@ -81,7 +87,8 @@ if env["tools"]:
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Documentation translations
|
# Documentation translations
|
||||||
tlist = glob.glob(env.Dir("#doc").abspath + "/translations/*.po")
|
to_include = "es,fr,ja,zh_CN".split(",")
|
||||||
|
tlist = [env.Dir("#doc/translations").abspath + "/" + f + ".po" for f in to_include]
|
||||||
env.Depends("#editor/doc_translations.gen.h", tlist)
|
env.Depends("#editor/doc_translations.gen.h", tlist)
|
||||||
env.CommandNoCache(
|
env.CommandNoCache(
|
||||||
"#editor/doc_translations.gen.h",
|
"#editor/doc_translations.gen.h",
|
||||||
@ -90,8 +97,8 @@ if env["tools"]:
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Fonts
|
# Fonts
|
||||||
flist = glob.glob(path + "/../thirdparty/fonts/*.ttf")
|
flist = glob.glob(env.Dir("#thirdparty").abspath + "/fonts/*.ttf")
|
||||||
flist.extend(glob.glob(path + "/../thirdparty/fonts/*.otf"))
|
flist.extend(glob.glob(env.Dir("#thirdparty").abspath + "/fonts/*.otf"))
|
||||||
flist.sort()
|
flist.sort()
|
||||||
env.Depends("#editor/builtin_fonts.gen.h", flist)
|
env.Depends("#editor/builtin_fonts.gen.h", flist)
|
||||||
env.CommandNoCache(
|
env.CommandNoCache(
|
||||||
|
@ -18,3 +18,24 @@ merge:
|
|||||||
|
|
||||||
check:
|
check:
|
||||||
@for po in $(POFILES); do msgfmt -c $$po -o /dev/null; done
|
@for po in $(POFILES); do msgfmt -c $$po -o /dev/null; done
|
||||||
|
|
||||||
|
# Generate completion ratio from statistics string such as:
|
||||||
|
# 2775 translated messages, 272 fuzzy translations, 151 untranslated messages.
|
||||||
|
# First number can be 0, second and third numbers are only present if non-zero.
|
||||||
|
include-list:
|
||||||
|
@list=""; \
|
||||||
|
threshold=0.30; \
|
||||||
|
for po in $(POFILES); do \
|
||||||
|
res=`msgfmt --statistics $$po -o /dev/null 2>&1 | sed 's/[^0-9,]*//g'`; \
|
||||||
|
complete=`cut -d',' -f1 <<< $$res`; \
|
||||||
|
fuzzy_or_untranslated=`cut -d',' -f2 <<< $$res`; \
|
||||||
|
untranslated_maybe=`cut -d',' -f3 <<< $$res`; \
|
||||||
|
if [ -z "$$fuzzy_or_untranslated" ]; then fuzzy_or_untranslated=0; fi; \
|
||||||
|
if [ -z "$$untranslated_maybe" ]; then untranslated_maybe=0; fi; \
|
||||||
|
incomplete=`expr $$fuzzy_or_untranslated + $$untranslated_maybe`; \
|
||||||
|
if `awk "BEGIN {exit !($$complete / ($$complete + $$incomplete) > $$threshold)}"`; then \
|
||||||
|
lang=`basename $$po .po`; \
|
||||||
|
list+="$$lang,"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
echo $$list;
|
||||||
|
Loading…
Reference in New Issue
Block a user