summaryrefslogtreecommitdiff
path: root/editor/SCsub
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2021-10-20 13:47:50 +0200
committerRémi Verschelde <rverschelde@gmail.com>2021-10-20 15:10:13 +0200
commit01aec21d25b41a3add54c869022f89dd11e7684f (patch)
treeae4dcc0a3e6c0aa8a798d7ad2123a69f881e44f4 /editor/SCsub
parent096290cb7aec5fb411abbc7a0aee4c3be892b240 (diff)
i18n: Only include editor translations above a threshold
This reduces the size of the editor binaries significantly, as we otherwise embed all WIP translations, including ones with very low completion ratios, and end up paying for the size of all `msgid`s for each locale. Cf. https://github.com/godotengine/godot-proposals/issues/3421 for details. The thresholds used are: - 30% for the editor interface (should already include most common strings while more obscure ones like UndoRedo action names might be untranslated). - 10% for the class reference: this is a HUGE resource and 10% is already a lot of useful content, especially if focused on the most used APIs. This currently reduces the size of the editor binary by 17% on Linux. The list will be synced manually every now and then. (cherry picked from commit 8425c589911f8ffc006990f4149859e175ae93a9)
Diffstat (limited to 'editor/SCsub')
-rw-r--r--editor/SCsub21
1 files changed, 14 insertions, 7 deletions
diff --git a/editor/SCsub b/editor/SCsub
index e8d417319a..6b18eeae93 100644
--- a/editor/SCsub
+++ b/editor/SCsub
@@ -5,7 +5,6 @@ Import("env")
env.editor_sources = []
import os
-import os.path
import glob
import editor_builders
@@ -59,7 +58,7 @@ if env["tools"]:
else:
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)
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."),
)
- 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
- 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.CommandNoCache(
"#editor/editor_translations.gen.h",
@@ -81,7 +87,8 @@ if env["tools"]:
)
# 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.CommandNoCache(
"#editor/doc_translations.gen.h",
@@ -90,8 +97,8 @@ if env["tools"]:
)
# Fonts
- flist = glob.glob(path + "/../thirdparty/fonts/*.ttf")
- flist.extend(glob.glob(path + "/../thirdparty/fonts/*.otf"))
+ flist = glob.glob(env.Dir("#thirdparty").abspath + "/fonts/*.ttf")
+ flist.extend(glob.glob(env.Dir("#thirdparty").abspath + "/fonts/*.otf"))
flist.sort()
env.Depends("#editor/builtin_fonts.gen.h", flist)
env.CommandNoCache(