d8223ffa75
That year should bring the long-awaited OpenGL ES 3.0 compatible renderer
with state-of-the-art rendering techniques tuned to work as low as middle
end handheld devices - without compromising with the possibilities given
for higher end desktop games of course. Great times ahead for the Godot
community and the gamers that will play our games!
(cherry picked from commit c7bc44d5ad
)
121 lines
3.6 KiB
Python
Executable file
121 lines
3.6 KiB
Python
Executable file
#!/bin/python
|
|
|
|
import fnmatch
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
line_nb = False
|
|
|
|
for arg in sys.argv[1:]:
|
|
if (arg == "--with-line-nb"):
|
|
print("Enabling line numbers in the context locations.")
|
|
line_nb = True
|
|
else:
|
|
os.sys.exit("Non supported argument '" + arg + "'. Aborting.")
|
|
|
|
|
|
if (not os.path.exists("tools")):
|
|
os.sys.exit("ERROR: This script should be started from the root of the git repo.")
|
|
|
|
|
|
matches = []
|
|
for root, dirnames, filenames in os.walk('.'):
|
|
for filename in fnmatch.filter(filenames, '*.cpp'):
|
|
if (filename.find("collada") != -1):
|
|
continue
|
|
matches.append(os.path.join(root, filename))
|
|
for filename in fnmatch.filter(filenames, '*.h'):
|
|
if (filename.find("collada") != -1):
|
|
continue
|
|
matches.append(os.path.join(root, filename))
|
|
matches.sort()
|
|
|
|
|
|
unique_str = []
|
|
unique_loc = {}
|
|
main_po = """
|
|
# LANGUAGE translation of the Godot Engine editor
|
|
# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
|
|
# This file is distributed under the same license as the Godot source code.
|
|
#
|
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
#
|
|
#, fuzzy
|
|
msgid ""
|
|
msgstr ""
|
|
"Project-Id-Version: Godot Engine editor\\n"
|
|
"Content-Type: text/plain; charset=UTF-8\\n"
|
|
"Content-Transfer-Encoding: 8-bit\\n"
|
|
"""
|
|
|
|
print("Updating the tools.pot template...")
|
|
|
|
for fname in matches:
|
|
|
|
f = open(fname, "rb")
|
|
|
|
l = f.readline()
|
|
lc = 1
|
|
while (l):
|
|
|
|
patterns = ['RTR(\"', 'TTR(\"']
|
|
idx = 0
|
|
pos = 0
|
|
while (pos >= 0):
|
|
pos = l.find(patterns[idx], pos)
|
|
if (pos == -1):
|
|
if (idx < len(patterns) - 1):
|
|
idx += 1
|
|
pos = 0
|
|
continue
|
|
pos += 5
|
|
|
|
msg = ""
|
|
while (pos < len(l) and (l[pos] != '"' or l[pos - 1] == '\\')):
|
|
msg += l[pos]
|
|
pos += 1
|
|
|
|
location = os.path.relpath(fname).replace('\\', '/')
|
|
if (line_nb):
|
|
location += ":" + str(lc)
|
|
|
|
if (not msg in unique_str):
|
|
main_po += "\n#: " + location + "\n"
|
|
main_po += 'msgid "' + msg + '"\n'
|
|
main_po += 'msgstr ""\n'
|
|
unique_str.append(msg)
|
|
unique_loc[msg] = [location]
|
|
elif (not location in unique_loc[msg]):
|
|
# Add additional location to previous occurence too
|
|
msg_pos = main_po.find('\nmsgid "' + msg + '"')
|
|
if (msg_pos == -1):
|
|
print("Someone apparently thought writing Python was as easy as GDScript. Ping Akien.")
|
|
main_po = main_po[:msg_pos] + ' ' + location + main_po[msg_pos:]
|
|
unique_loc[msg].append(location)
|
|
|
|
l = f.readline()
|
|
lc += 1
|
|
|
|
f.close()
|
|
|
|
|
|
f = open("tools.pot", "wb")
|
|
f.write(main_po)
|
|
f.close()
|
|
|
|
if (os.name == "posix"):
|
|
print("Wrapping template at 79 characters for compatibility with Weblate.")
|
|
os.system("msgmerge -w79 tools.pot tools.pot > tools.pot.wrap")
|
|
shutil.move("tools.pot.wrap", "tools.pot")
|
|
|
|
shutil.move("tools.pot", "tools/translations/tools.pot")
|
|
|
|
# TODO: Make that in a portable way, if we care; if not, kudos to Unix users
|
|
if (os.name == "posix"):
|
|
added = subprocess.check_output("git diff tools/translations/tools.pot | grep \+msgid | wc -l", shell=True)
|
|
removed = subprocess.check_output("git diff tools/translations/tools.pot | grep \\\-msgid | wc -l", shell=True)
|
|
print("\n# Template changes compared to the staged status:")
|
|
print("# Additions: %s msgids.\n# Deletions: %s msgids." % (int(added), int(removed)))
|