mirror of
https://github.com/knah/VRCMelonAssistant.git
synced 2024-05-09 06:52:38 +12:00
Merge pull request #245 from Assistant/feat/translation-stubs
Translation Stubs Tool
This commit is contained in:
commit
18c35bb70f
|
@ -151,6 +151,10 @@
|
|||
<sys:String x:Key="Options:InstallingPlaylist">Installiere Playlist: {0}</sys:String>
|
||||
<sys:String x:Key="Options:FailedPlaylistSong">Titel fehlgeschlagen: {0}</sys:String>
|
||||
<sys:String x:Key="Options:FinishedPlaylist">[{0} Fehler] Playlist Installation abgeschlossen: {1}</sys:String>
|
||||
<sys:String x:Key="Options:ShowOCIWindow">Show OneClick Installer Window</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowYes">Yes</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowClose">Close</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowNo">No</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:Diagnostics">Diagnose</sys:String>
|
||||
<sys:String x:Key="Options:OpenLogsButton">Log öffnen</sys:String>
|
||||
<sys:String x:Key="Options:OpenAppDataButton">AppData öffnen</sys:String>
|
||||
|
@ -223,6 +227,7 @@
|
|||
<sys:String x:Key="OneClick:RatelimitSkip">Max tries reached: Skipping {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:RatelimitHit">Ratelimit hit. Resuming in {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:Failed">Download failed: {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:Done">Done'd</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
|
||||
<!-- Themes Class -->
|
||||
<sys:String x:Key="Themes:ThemeNotFound">Design nicht gefunden, gehe zurück zum Standard Design...</sys:String>
|
||||
|
|
|
@ -111,6 +111,10 @@
|
|||
<sys:String x:Key="Options:InstallingPlaylist">{0} Options:InstallingPlaylist</sys:String>
|
||||
<sys:String x:Key="Options:FailedPlaylistSong">{0} Options:FailedPlaylistSong</sys:String>
|
||||
<sys:String x:Key="Options:FinishedPlaylist">{0} {1} Options:FinishedPlaylist</sys:String>
|
||||
<sys:String x:Key="Options:ShowOCIWindow">Options:ShowOCIWindow</sys:String>
|
||||
<sys:String x:Key="Options:OCIWindowYes">Options:OCIWindowYes</sys:String>
|
||||
<sys:String x:Key="Options:OCIWindowClose">Options:OCIWindowClose</sys:String>
|
||||
<sys:String x:Key="Options:OCIWindowNo">Options:OCIWindowNo</sys:String>
|
||||
<sys:String x:Key="Options:Diagnostics">Options:Diagnostics</sys:String>
|
||||
<sys:String x:Key="Options:OpenLogsButton">Options:OpenLogsButton</sys:String>
|
||||
<sys:String x:Key="Options:OpenAppDataButton">Options:OpenAppDataButton</sys:String>
|
||||
|
@ -164,6 +168,7 @@
|
|||
<sys:String x:Key="OneClick:RatelimitSkip">{0} OneClick:RatelimitSkip</sys:String>
|
||||
<sys:String x:Key="OneClick:RatelimitHit">{0} OneClick:RatelimitHit</sys:String>
|
||||
<sys:String x:Key="OneClick:Failed">{0} OneClick:Failed</sys:String>
|
||||
<sys:String x:Key="OneClick:Done">OneClick:Done</sys:String>
|
||||
|
||||
<!-- Themes Class -->
|
||||
<sys:String x:Key="Themes:ThemeNotFound">Themes:ThemeNotFound</sys:String>
|
||||
|
|
|
@ -157,6 +157,10 @@
|
|||
<sys:String x:Key="Options:InstallingPlaylist">Installation de la playlist : {0}</sys:String>
|
||||
<sys:String x:Key="Options:FailedPlaylistSong">Échec de la musique : {0}</sys:String>
|
||||
<sys:String x:Key="Options:FinishedPlaylist">[{0} échecs] Installation de la playlist terminée : {1}</sys:String>
|
||||
<sys:String x:Key="Options:ShowOCIWindow">Show OneClick Installer Window</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowYes">Yes</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowClose">Close</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowNo">No</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:Diagnostics">Diagnostic</sys:String>
|
||||
<sys:String x:Key="Options:OpenLogsButton">Ouvrir les logs</sys:String>
|
||||
<sys:String x:Key="Options:OpenAppDataButton">Ouvrir AppData</sys:String>
|
||||
|
@ -230,7 +234,8 @@
|
|||
<sys:String x:Key="OneClick:RatelimitSkip">Maximum de tentatives atteint : {0} passé</sys:String>
|
||||
<sys:String x:Key="OneClick:RatelimitHit">Limite atteinte. Reprise dans {0}</sys:String>
|
||||
<sys:String x:Key="OneClick:Failed">Téléchargement échoué : {0}</sys:String>
|
||||
|
||||
<sys:String x:Key="OneClick:Done">Done'd</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
|
||||
<!-- Themes Class -->
|
||||
<sys:String x:Key="Themes:ThemeNotFound">Thème non trouvé, passage au thème par défaut...</sys:String>
|
||||
<sys:String x:Key="Themes:ThemeSet">Thème défini sur {0}.</sys:String>
|
||||
|
|
|
@ -151,6 +151,10 @@
|
|||
<sys:String x:Key="Options:InstallingPlaylist">Installazione Playlist: {0}</sys:String>
|
||||
<sys:String x:Key="Options:FailedPlaylistSong">Installazione canzone fallita: {0}</sys:String>
|
||||
<sys:String x:Key="Options:FinishedPlaylist">[{0} fails] Installazione playlist terminata: {1}</sys:String>
|
||||
<sys:String x:Key="Options:ShowOCIWindow">Show OneClick Installer Window</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowYes">Yes</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowClose">Close</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowNo">No</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:Diagnostics">Diagnostica</sys:String>
|
||||
<sys:String x:Key="Options:OpenLogsButton">Apri il Log</sys:String>
|
||||
<sys:String x:Key="Options:OpenAppDataButton">Apri AppData</sys:String>
|
||||
|
@ -223,7 +227,8 @@
|
|||
<sys:String x:Key="OneClick:RatelimitSkip">Max tries reached: Skipping {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:RatelimitHit">Ratelimit hit. Resuming in {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:Failed">Download failed: {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
|
||||
<sys:String x:Key="OneClick:Done">Done'd</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
|
||||
<!-- Themes Class -->
|
||||
<sys:String x:Key="Themes:ThemeNotFound">Tema non trovato, ritorno al tema predefinito...</sys:String>
|
||||
<sys:String x:Key="Themes:ThemeSet">Tema impostato su {0}.</sys:String>
|
||||
|
|
|
@ -150,6 +150,10 @@
|
|||
<sys:String x:Key="Options:InstallingPlaylist">Installing Playlist: {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:FailedPlaylistSong">Failed song: {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:FinishedPlaylist">[{0} fails] Finished Installing Playlist: {1}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:ShowOCIWindow">Show OneClick Installer Window</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowYes">Yes</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowClose">Close</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowNo">No</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:Diagnostics">진단</sys:String>
|
||||
<sys:String x:Key="Options:OpenLogsButton">로그 열기</sys:String>
|
||||
<sys:String x:Key="Options:OpenAppDataButton">앱데이터 열기</sys:String>
|
||||
|
@ -222,7 +226,8 @@
|
|||
<sys:String x:Key="OneClick:RatelimitSkip">Max tries reached: Skipping {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:RatelimitHit">Ratelimit hit. Resuming in {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:Failed">Download failed: {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
|
||||
<sys:String x:Key="OneClick:Done">Done'd</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
|
||||
<!-- Themes Class -->
|
||||
<sys:String x:Key="Themes:ThemeNotFound">테마를 찾을 수 없어, 기본 테마로 돌아갑니다...</sys:String>
|
||||
<sys:String x:Key="Themes:ThemeSet">{0} 테마로 설정합니다.</sys:String>
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<sys:String x:Key="MainWindow:NoModSelected">Geen mod geselecteerd!</sys:String>
|
||||
<sys:String x:Key="MainWindow:NoModInfoPage">{0} heeft geen info pagina</sys:String>
|
||||
|
||||
<!-- Introductie Pagina -->
|
||||
<!-- Intro Page -->
|
||||
<sys:String x:Key="Intro:Title">Introductie</sys:String>
|
||||
<sys:String x:Key="Intro:PageTitle">Welkom bij Mod Assistant</sys:String>
|
||||
<sys:String x:Key="Intro:Terms:Header">Lees deze pagina alstublieft volledig en aandachtig</sys:String>
|
||||
|
@ -149,6 +149,10 @@
|
|||
<sys:String x:Key="Options:InstallingPlaylist">Afspeellijst installeren: {0}</sys:String>
|
||||
<sys:String x:Key="Options:FailedPlaylistSong">Installatie nummer mislukt: {0}</sys:String>
|
||||
<sys:String x:Key="Options:FinishedPlaylist">[{0} mislukkingen] Afspeellijst geïnstalleerd: {1}</sys:String>
|
||||
<sys:String x:Key="Options:ShowOCIWindow">Show OneClick Installer Window</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowYes">Yes</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowClose">Close</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowNo">No</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:Diagnostics">Diagnostiek</sys:String>
|
||||
<sys:String x:Key="Options:OpenLogsButton">Open Logs</sys:String>
|
||||
<sys:String x:Key="Options:OpenAppDataButton">Open AppData</sys:String>
|
||||
|
@ -221,7 +225,8 @@
|
|||
<sys:String x:Key="OneClick:RatelimitSkip">Maximaal aantal pogingen bereikt: {0} word overgeslagen</sys:String>
|
||||
<sys:String x:Key="OneClick:RatelimitHit">Snelheidslimiet bereikt. Gaat verder over {0}</sys:String>
|
||||
<sys:String x:Key="OneClick:Failed">Download mislukt: {0}</sys:String>
|
||||
|
||||
<sys:String x:Key="OneClick:Done">Done'd</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
|
||||
<!-- Themes Class -->
|
||||
<sys:String x:Key="Themes:ThemeNotFound">Thema niet gevonden, terugvallen op standaard thema...</sys:String>
|
||||
<sys:String x:Key="Themes:ThemeSet">Theme ingesteld op {0}.</sys:String>
|
||||
|
|
|
@ -151,6 +151,10 @@
|
|||
<sys:String x:Key="Options:InstallingPlaylist">Установка плейлиста: {0}</sys:String>
|
||||
<sys:String x:Key="Options:FailedPlaylistSong">Ошибка с песней: {0}</sys:String>
|
||||
<sys:String x:Key="Options:FinishedPlaylist">[{0} ошибок] Установка плейлиста окончена: {1}</sys:String>
|
||||
<sys:String x:Key="Options:ShowOCIWindow">Show OneClick Installer Window</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowYes">Yes</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowClose">Close</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowNo">No</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:Diagnostics">Диагностика</sys:String>
|
||||
<sys:String x:Key="Options:OpenLogsButton">Открыть логи</sys:String>
|
||||
<sys:String x:Key="Options:OpenAppDataButton">Открыть AppData</sys:String>
|
||||
|
@ -222,8 +226,9 @@
|
|||
<sys:String x:Key="OneClick:Installing">Установка: {0}</sys:String>
|
||||
<sys:String x:Key="OneClick:RatelimitSkip">Достигнуто максимальное кол-во попыток: Пропускаем {0}</sys:String>
|
||||
<sys:String x:Key="OneClick:RatelimitHit">Достигнут лимит. Возобновление через {0}</sys:String>
|
||||
<sys:String x:Key="OneClick:Failed">Скачивание неудалось: {0}</sys:String>
|
||||
|
||||
<sys:String x:Key="OneClick:Failed">Скачивание неудалось: {0}</sys:String>
|
||||
<sys:String x:Key="OneClick:Done">Done'd</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
|
||||
<!-- Themes Class -->
|
||||
<sys:String x:Key="Themes:ThemeNotFound">Тема не найдена, возвращаемся к стандартной теме...</sys:String>
|
||||
<sys:String x:Key="Themes:ThemeSet">Установлена тема: {0}.</sys:String>
|
||||
|
|
|
@ -103,6 +103,7 @@
|
|||
<sys:String x:Key="Mods:UninstallBox:Body2">Detta kan leda till att dina andra mods slutar att fungera</sys:String>
|
||||
<sys:String x:Key="Mods:FailedExtract">Extrahering misslyckades {0}, försöker igen om {1} sekunder. ({2}/{3})</sys:String>
|
||||
<sys:String x:Key="Mods:FailedExtractMaxReached">Misslyckades med att extrahera {0} efter maxantalet försök ({1}), hoppar över. Denna mod kanske inte fungerar som den ska så fortsätt på egen risk.</sys:String>
|
||||
<sys:String x:Key="Mods:SearchLabel">Search...</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
|
||||
<!-- About Page -->
|
||||
<sys:String x:Key="About:Title">Om</sys:String>
|
||||
|
@ -140,9 +141,20 @@
|
|||
<sys:String x:Key="Options:EnableOneClickInstalls">Aktivera OneClick™-Installationer</sys:String>
|
||||
<sys:String x:Key="Options:BeatSaver">BeatSaver</sys:String>
|
||||
<sys:String x:Key="Options:ModelSaber">ModelSaber</sys:String>
|
||||
<sys:String x:Key="Options:Playlists">Playlists</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:CloseWindow">Close window when finished</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:GameType">Spelvariant</sys:String>
|
||||
<sys:String x:Key="Options:GameType:Steam">Steam</sys:String>
|
||||
<sys:String x:Key="Options:GameType:Oculus">Oculus</sys:String>
|
||||
<sys:String x:Key="Options:Tools">Tools</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:InstallPlaylist">Install Playlist</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:InstallingPlaylist">Installing Playlist: {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:FailedPlaylistSong">Failed song: {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:FinishedPlaylist">[{0} fails] Finished Installing Playlist: {1}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:ShowOCIWindow">Show OneClick Installer Window</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowYes">Yes</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowClose">Close</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:OCIWindowNo">No</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="Options:Diagnostics">Diagnostikverktyg</sys:String>
|
||||
<sys:String x:Key="Options:OpenLogsButton">Öppna Loggar</sys:String>
|
||||
<sys:String x:Key="Options:OpenAppDataButton">Öppna AppData</sys:String>
|
||||
|
@ -211,6 +223,11 @@
|
|||
<sys:String x:Key="OneClick:AssetInstallFailed">Misslyckades med att installera.</sys:String>
|
||||
<sys:String x:Key="OneClick:ProtocolHandler:Registered">{0} OneClick™-installeringshanterare registrerade!</sys:String>
|
||||
<sys:String x:Key="OneClick:ProtocolHandler:Unregistered">{0} OneClick™-installeringshanterare avregistrerade!</sys:String>
|
||||
<sys:String x:Key="OneClick:Installing">Installing: {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:RatelimitSkip">Max tries reached: Skipping {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:RatelimitHit">Ratelimit hit. Resuming in {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:Failed">Download failed: {0}</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
<sys:String x:Key="OneClick:Done">Done'd</sys:String> <!-- NEEDS TRANSLATING -->
|
||||
|
||||
<!-- Themes Class -->
|
||||
<sys:String x:Key="Themes:ThemeNotFound">Temat hittades inte, återställer till standardtemat...</sys:String>
|
||||
|
|
7
tools/README.md
Normal file
7
tools/README.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# ModAssistant Tools
|
||||
> These are tools used to build / improve ModAssistant. **They are not to be distributed with the compiled binary.**
|
||||
|
||||
## Translation Stubs
|
||||
Use `generate_translation_stubs.py` to read the English locale file and generate missing strings for all other locales. Requires Python 3.6 or above.
|
||||
|
||||
Simply run `python ./tools/generate_translation_stubs.py` and commit the stubs.
|
144
tools/generate_translation_stubs.py
Normal file
144
tools/generate_translation_stubs.py
Normal file
|
@ -0,0 +1,144 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import re
|
||||
from shutil import copyfile
|
||||
|
||||
# --------------- Configuration ---------------- #
|
||||
master_file = "./ModAssistant/Localisation/en.xaml"
|
||||
source_dir = "./ModAssistant/Localisation"
|
||||
target_dir = source_dir
|
||||
comment = " <!-- NEEDS TRANSLATING -->"
|
||||
# --------------- Configuration ---------------- #
|
||||
|
||||
|
||||
def read_file(filepath):
|
||||
"""
|
||||
Read file content
|
||||
:param filepath:
|
||||
:return:
|
||||
"""
|
||||
with open(filepath, "r", encoding="utf-8") as file:
|
||||
data = file.read()
|
||||
return data
|
||||
|
||||
|
||||
def find_files(root_directory):
|
||||
"""
|
||||
Find all files to be processed
|
||||
:param root_directory:
|
||||
:return:
|
||||
"""
|
||||
for root, ds, fs in os.walk(root_directory):
|
||||
for fn in fs:
|
||||
fullname = os.path.join(root, fn)
|
||||
master_name = os.path.basename(master_file)
|
||||
if master_name in fullname:
|
||||
continue
|
||||
yield fullname
|
||||
|
||||
|
||||
def search(regex, m_string, group=1):
|
||||
"""
|
||||
Search for the first item that matches by regular expression
|
||||
:param regex:
|
||||
:param m_string:
|
||||
:return:
|
||||
"""
|
||||
found = re.compile(regex, re.M).search(m_string)
|
||||
result = ""
|
||||
if found:
|
||||
result = found.group(group)
|
||||
return result
|
||||
|
||||
|
||||
def write_file(filepath, content):
|
||||
"""
|
||||
Write text content to file
|
||||
:param filepath:
|
||||
:param content:
|
||||
:return:
|
||||
"""
|
||||
if not os.path.exists(target_dir):
|
||||
os.makedirs(target_dir, exist_ok=True)
|
||||
with open(filepath, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
|
||||
def find_items(data):
|
||||
keys_regex = r"<\s*([^\s>]+)\s.*Key[^>]+>"
|
||||
keys_matches = re.finditer(keys_regex, data, re.M)
|
||||
items = []
|
||||
for n, m in enumerate(keys_matches, start=1):
|
||||
if len(items):
|
||||
last_dict = items[-1]
|
||||
if len(last_dict):
|
||||
last_dict['end'] = m.start()
|
||||
items.append({"match": m[0], "name": m[1], "start": m.end()})
|
||||
items[-1]['end'] = len(data)
|
||||
for item in items:
|
||||
item_text = data[item['start']: item['end']]
|
||||
end_tag = "</%s>" % item['name']
|
||||
full_tag = item['match'] + item_text[:item_text.rfind(end_tag) + len(end_tag)]
|
||||
item['end_tag'] = end_tag
|
||||
item['full_tag'] = full_tag
|
||||
return items
|
||||
|
||||
|
||||
def wrapper_key(match, content):
|
||||
"""
|
||||
Try to find the comment behind the key
|
||||
:param match:
|
||||
:param content:
|
||||
:return:
|
||||
"""
|
||||
regex = "(\s*" + re.escape(match) + "(\ *<\!\-\-[^\-]+\-\->)?\s*)"
|
||||
with_comment = search(r"" + str(regex), content, 1)
|
||||
# print(regex)
|
||||
# print(match)
|
||||
# print(with_comment)
|
||||
# print("-----")
|
||||
if with_comment:
|
||||
match = with_comment
|
||||
return match
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Cycle processing of xaml files except master_file
|
||||
:return:
|
||||
"""
|
||||
master_data = read_file(master_file)
|
||||
print("The master file is", master_file)
|
||||
items = find_items(master_data)
|
||||
|
||||
for f in find_files(source_dir):
|
||||
content = master_data + ""
|
||||
xml_data = read_file(f)
|
||||
xml_dict = {}
|
||||
for xml_item in find_items(xml_data):
|
||||
xml_dict[xml_item['match']] = xml_item['full_tag']
|
||||
for item in items:
|
||||
# print(f)
|
||||
# if "OneClick:Done" in item['match'] and "fr.xaml" in f:
|
||||
# print("----")
|
||||
# pass
|
||||
if item['match'] in xml_dict.keys():
|
||||
match = wrapper_key(xml_dict[item['match']], xml_data)
|
||||
master_match = wrapper_key(item['full_tag'], content)
|
||||
# print(master_match)
|
||||
content = content.replace(master_match, match)
|
||||
else:
|
||||
pre_blanks = search(r"(\s*)" + re.escape(item['full_tag']), master_data)
|
||||
content = re.sub(r"\s*" + re.escape(item['full_tag']), pre_blanks + item['full_tag'] + comment, content)
|
||||
# Put the processed files in the "dist" directory
|
||||
filepath = f.replace(source_dir, target_dir)
|
||||
write_file(filepath, content)
|
||||
print("Processing", f)
|
||||
# Copy "master_file" to the target directory
|
||||
if source_dir != target_dir:
|
||||
copyfile(master_file, master_file.replace(source_dir, target_dir))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
print("done'd!")
|
Loading…
Reference in a new issue