Merge pull request #59772 from timothyqiu/i18n-theme-props-3.x

[3.x] Extract theme property names for localization
This commit is contained in:
Rémi Verschelde 2022-04-01 08:42:24 +02:00 committed by GitHub
commit 4078862977
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 2 deletions

View file

@ -117,9 +117,12 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["bvh"] = "BVH"; capitalize_string_remaps["bvh"] = "BVH";
capitalize_string_remaps["ca"] = "CA"; capitalize_string_remaps["ca"] = "CA";
capitalize_string_remaps["cd"] = "CD"; capitalize_string_remaps["cd"] = "CD";
capitalize_string_remaps["commentfocus"] = "Comment Focus";
capitalize_string_remaps["cpu"] = "CPU"; capitalize_string_remaps["cpu"] = "CPU";
capitalize_string_remaps["csg"] = "CSG"; capitalize_string_remaps["csg"] = "CSG";
capitalize_string_remaps["db"] = "dB"; capitalize_string_remaps["db"] = "dB";
capitalize_string_remaps["defaultfocus"] = "Default Focus";
capitalize_string_remaps["defaultframe"] = "Default Frame";
capitalize_string_remaps["dof"] = "DoF"; capitalize_string_remaps["dof"] = "DoF";
capitalize_string_remaps["dpi"] = "DPI"; capitalize_string_remaps["dpi"] = "DPI";
capitalize_string_remaps["dtls"] = "DTLS"; capitalize_string_remaps["dtls"] = "DTLS";
@ -128,6 +131,7 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["etc2"] = "ETC2"; capitalize_string_remaps["etc2"] = "ETC2";
capitalize_string_remaps["fbx"] = "FBX"; capitalize_string_remaps["fbx"] = "FBX";
capitalize_string_remaps["fft"] = "FFT"; capitalize_string_remaps["fft"] = "FFT";
capitalize_string_remaps["fg"] = "FG";
capitalize_string_remaps["fov"] = "FOV"; capitalize_string_remaps["fov"] = "FOV";
capitalize_string_remaps["fps"] = "FPS"; capitalize_string_remaps["fps"] = "FPS";
capitalize_string_remaps["fs"] = "FS"; capitalize_string_remaps["fs"] = "FS";
@ -145,6 +149,7 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["hdr"] = "HDR"; capitalize_string_remaps["hdr"] = "HDR";
capitalize_string_remaps["hidpi"] = "hiDPI"; capitalize_string_remaps["hidpi"] = "hiDPI";
capitalize_string_remaps["hipass"] = "High-pass"; capitalize_string_remaps["hipass"] = "High-pass";
capitalize_string_remaps["hseparation"] = "H Separation";
capitalize_string_remaps["hsv"] = "HSV"; capitalize_string_remaps["hsv"] = "HSV";
capitalize_string_remaps["html"] = "HTML"; capitalize_string_remaps["html"] = "HTML";
capitalize_string_remaps["http"] = "HTTP"; capitalize_string_remaps["http"] = "HTTP";
@ -177,6 +182,7 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["msaa"] = "MSAA"; capitalize_string_remaps["msaa"] = "MSAA";
capitalize_string_remaps["nfc"] = "NFC"; capitalize_string_remaps["nfc"] = "NFC";
capitalize_string_remaps["normalmap"] = "Normal Map"; capitalize_string_remaps["normalmap"] = "Normal Map";
capitalize_string_remaps["ofs"] = "Offset";
capitalize_string_remaps["ok"] = "OK"; capitalize_string_remaps["ok"] = "OK";
capitalize_string_remaps["opengl"] = "OpenGL"; capitalize_string_remaps["opengl"] = "OpenGL";
capitalize_string_remaps["opentype"] = "OpenType"; capitalize_string_remaps["opentype"] = "OpenType";
@ -195,6 +201,7 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["sdfgi"] = "SDFGI"; capitalize_string_remaps["sdfgi"] = "SDFGI";
capitalize_string_remaps["sdk"] = "SDK"; capitalize_string_remaps["sdk"] = "SDK";
capitalize_string_remaps["sec"] = "(sec)"; // Unit. capitalize_string_remaps["sec"] = "(sec)"; // Unit.
capitalize_string_remaps["selectedframe"] = "Selected Frame";
capitalize_string_remaps["sms"] = "SMS"; capitalize_string_remaps["sms"] = "SMS";
capitalize_string_remaps["srgb"] = "sRGB"; capitalize_string_remaps["srgb"] = "sRGB";
capitalize_string_remaps["ssao"] = "SSAO"; capitalize_string_remaps["ssao"] = "SSAO";
@ -203,6 +210,7 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["ssl"] = "SSL"; capitalize_string_remaps["ssl"] = "SSL";
capitalize_string_remaps["stderr"] = "stderr"; capitalize_string_remaps["stderr"] = "stderr";
capitalize_string_remaps["stdout"] = "stdout"; capitalize_string_remaps["stdout"] = "stdout";
capitalize_string_remaps["sv"] = "SV";
capitalize_string_remaps["svg"] = "SVG"; capitalize_string_remaps["svg"] = "SVG";
capitalize_string_remaps["tcp"] = "TCP"; capitalize_string_remaps["tcp"] = "TCP";
capitalize_string_remaps["ui"] = "UI"; capitalize_string_remaps["ui"] = "UI";
@ -216,9 +224,12 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["uv1"] = "UV1"; capitalize_string_remaps["uv1"] = "UV1";
capitalize_string_remaps["uv2"] = "UV2"; capitalize_string_remaps["uv2"] = "UV2";
capitalize_string_remaps["uwp"] = "UWP"; capitalize_string_remaps["uwp"] = "UWP";
capitalize_string_remaps["vadjust"] = "V Adjust";
capitalize_string_remaps["valign"] = "V Align";
capitalize_string_remaps["vector2"] = "Vector2"; capitalize_string_remaps["vector2"] = "Vector2";
capitalize_string_remaps["vpn"] = "VPN"; capitalize_string_remaps["vpn"] = "VPN";
capitalize_string_remaps["vram"] = "VRAM"; capitalize_string_remaps["vram"] = "VRAM";
capitalize_string_remaps["vseparation"] = "V Separation";
capitalize_string_remaps["vsync"] = "V-Sync"; capitalize_string_remaps["vsync"] = "V-Sync";
capitalize_string_remaps["wap"] = "WAP"; capitalize_string_remaps["wap"] = "WAP";
capitalize_string_remaps["webp"] = "WebP"; capitalize_string_remaps["webp"] = "WebP";

View file

@ -3,6 +3,7 @@
import enum import enum
import fnmatch import fnmatch
import os import os
import os.path
import re import re
import shutil import shutil
import subprocess import subprocess
@ -111,6 +112,9 @@ message_patterns = {
re.compile(r'ADD_GROUP\("(?P<message>[^"]+?)", "(?P<prefix>[^"]*?)"\)'): ExtractType.GROUP, re.compile(r'ADD_GROUP\("(?P<message>[^"]+?)", "(?P<prefix>[^"]*?)"\)'): ExtractType.GROUP,
re.compile(r'#define (WSC|WSS|WRTC)_\w+ "(?P<message>[^"]+?)"'): ExtractType.PROPERTY_PATH, re.compile(r'#define (WSC|WSS|WRTC)_\w+ "(?P<message>[^"]+?)"'): ExtractType.PROPERTY_PATH,
} }
theme_property_patterns = {
re.compile(r'set_(constant|font|stylebox|color|icon)\("(?P<message>[^"]+)", '): ExtractType.PROPERTY_PATH,
}
# See String::camelcase_to_underscore(). # See String::camelcase_to_underscore().
@ -183,6 +187,10 @@ def process_file(f, fname):
translator_comment = "" translator_comment = ""
current_group = "" current_group = ""
patterns = message_patterns
if os.path.basename(fname) == "default_theme.cpp":
patterns = {**message_patterns, **theme_property_patterns}
while l: while l:
# Detect translator comments. # Detect translator comments.
@ -200,7 +208,7 @@ def process_file(f, fname):
translator_comment = translator_comment[:-1] # Remove extra \n at the end. translator_comment = translator_comment[:-1] # Remove extra \n at the end.
if not reading_translator_comment: if not reading_translator_comment:
for pattern, extract_type in message_patterns.items(): for pattern, extract_type in patterns.items():
for m in pattern.finditer(l): for m in pattern.finditer(l):
location = os.path.relpath(fname).replace("\\", "/") location = os.path.relpath(fname).replace("\\", "/")
if line_nb: if line_nb:

View file

@ -324,7 +324,7 @@ bool Control::_get(const StringName &p_name, Variant &r_ret) const {
void Control::_get_property_list(List<PropertyInfo> *p_list) const { void Control::_get_property_list(List<PropertyInfo> *p_list) const {
Ref<Theme> theme = Theme::get_default(); Ref<Theme> theme = Theme::get_default();
p_list->push_back(PropertyInfo(Variant::NIL, "Theme Overrides", PROPERTY_HINT_NONE, "custom_", PROPERTY_USAGE_GROUP)); p_list->push_back(PropertyInfo(Variant::NIL, TTRC("Theme Overrides"), PROPERTY_HINT_NONE, "custom_", PROPERTY_USAGE_GROUP));
{ {
List<StringName> names; List<StringName> names;