parent
2053745c8f
commit
86ff43b930
|
@ -109,18 +109,23 @@ function processNode(node){
|
||||||
}
|
}
|
||||||
|
|
||||||
function dumpTranslations(){
|
function dumpTranslations(){
|
||||||
|
if(!hasLocalization()) {
|
||||||
|
// If we don't have any localization,
|
||||||
|
// we will not have traversed the app to find
|
||||||
|
// original_lines, so do that now.
|
||||||
|
processNode(gradioApp());
|
||||||
|
}
|
||||||
var dumped = {}
|
var dumped = {}
|
||||||
if (localization.rtl) {
|
if (localization.rtl) {
|
||||||
dumped.rtl = true
|
dumped.rtl = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.keys(original_lines).forEach(function(text){
|
for (const text in original_lines) {
|
||||||
if(dumped[text] !== undefined) return
|
if(dumped[text] !== undefined) continue;
|
||||||
|
dumped[text] = localization[text] || text;
|
||||||
|
}
|
||||||
|
|
||||||
dumped[text] = localization[text] || text
|
return dumped;
|
||||||
})
|
|
||||||
|
|
||||||
return dumped
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function download_localization() {
|
function download_localization() {
|
||||||
|
@ -137,7 +142,11 @@ function download_localization() {
|
||||||
document.body.removeChild(element);
|
document.body.removeChild(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(hasLocalization()) {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
if (!hasLocalization()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
onUiUpdate(function (m) {
|
onUiUpdate(function (m) {
|
||||||
m.forEach(function (mutation) {
|
m.forEach(function (mutation) {
|
||||||
mutation.addedNodes.forEach(function (node) {
|
mutation.addedNodes.forEach(function (node) {
|
||||||
|
@ -146,26 +155,23 @@ if(hasLocalization()) {
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
|
processNode(gradioApp())
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
if (localization.rtl) { // if the language is from right to left,
|
||||||
processNode(gradioApp())
|
(new MutationObserver((mutations, observer) => { // wait for the style to load
|
||||||
|
mutations.forEach(mutation => {
|
||||||
|
mutation.addedNodes.forEach(node => {
|
||||||
|
if (node.tagName === 'STYLE') {
|
||||||
|
observer.disconnect();
|
||||||
|
|
||||||
if (localization.rtl) { // if the language is from right to left,
|
for (const x of node.sheet.rules) { // find all rtl media rules
|
||||||
(new MutationObserver((mutations, observer) => { // wait for the style to load
|
if (Array.from(x.media || []).includes('rtl')) {
|
||||||
mutations.forEach(mutation => {
|
x.media.appendMedium('all'); // enable them
|
||||||
mutation.addedNodes.forEach(node => {
|
|
||||||
if (node.tagName === 'STYLE') {
|
|
||||||
observer.disconnect();
|
|
||||||
|
|
||||||
for (const x of node.sheet.rules) { // find all rtl media rules
|
|
||||||
if (Array.from(x.media || []).includes('rtl')) {
|
|
||||||
x.media.appendMedium('all'); // enable them
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
});
|
})
|
||||||
})).observe(gradioApp(), { childList: true });
|
});
|
||||||
}
|
})).observe(gradioApp(), { childList: true });
|
||||||
})
|
}
|
||||||
}
|
})
|
||||||
|
|
|
@ -23,7 +23,7 @@ def list_localizations(dirname):
|
||||||
localizations[fn] = file.path
|
localizations[fn] = file.path
|
||||||
|
|
||||||
|
|
||||||
def localization_js(current_localization_name):
|
def localization_js(current_localization_name: str) -> str:
|
||||||
fn = localizations.get(current_localization_name, None)
|
fn = localizations.get(current_localization_name, None)
|
||||||
data = {}
|
data = {}
|
||||||
if fn is not None:
|
if fn is not None:
|
||||||
|
@ -34,4 +34,4 @@ def localization_js(current_localization_name):
|
||||||
print(f"Error loading localization from {fn}:", file=sys.stderr)
|
print(f"Error loading localization from {fn}:", file=sys.stderr)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
print(traceback.format_exc(), file=sys.stderr)
|
||||||
|
|
||||||
return f"var localization = {json.dumps(data)}\n"
|
return f"window.localization = {json.dumps(data)}"
|
||||||
|
|
|
@ -1863,12 +1863,11 @@ def webpath(fn):
|
||||||
|
|
||||||
|
|
||||||
def javascript_html():
|
def javascript_html():
|
||||||
script_js = os.path.join(script_path, "script.js")
|
# Ensure localization is in `window` before scripts
|
||||||
head = f'<script type="text/javascript" src="{webpath(script_js)}"></script>\n'
|
head = f'<script type="text/javascript">{localization.localization_js(shared.opts.localization)}</script>\n'
|
||||||
|
|
||||||
inline = f"{localization.localization_js(shared.opts.localization)};"
|
script_js = os.path.join(script_path, "script.js")
|
||||||
if cmd_opts.theme is not None:
|
head += f'<script type="text/javascript" src="{webpath(script_js)}"></script>\n'
|
||||||
inline += f"set_theme('{cmd_opts.theme}');"
|
|
||||||
|
|
||||||
for script in modules.scripts.list_scripts("javascript", ".js"):
|
for script in modules.scripts.list_scripts("javascript", ".js"):
|
||||||
head += f'<script type="text/javascript" src="{webpath(script.path)}"></script>\n'
|
head += f'<script type="text/javascript" src="{webpath(script.path)}"></script>\n'
|
||||||
|
@ -1876,7 +1875,8 @@ def javascript_html():
|
||||||
for script in modules.scripts.list_scripts("javascript", ".mjs"):
|
for script in modules.scripts.list_scripts("javascript", ".mjs"):
|
||||||
head += f'<script type="module" src="{webpath(script.path)}"></script>\n'
|
head += f'<script type="module" src="{webpath(script.path)}"></script>\n'
|
||||||
|
|
||||||
head += f'<script type="text/javascript">{inline}</script>\n'
|
if cmd_opts.theme:
|
||||||
|
head += f'<script type="text/javascript">set_theme(\"{cmd_opts.theme}\");</script>\n'
|
||||||
|
|
||||||
return head
|
return head
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue