Add RTL languages support and improved Arabic localization
This commit is contained in:
parent
df0a1f8381
commit
ca2ebc89c2
6 changed files with 551 additions and 691 deletions
|
@ -107,7 +107,7 @@ function processNode(node){
|
||||||
}
|
}
|
||||||
|
|
||||||
function dumpTranslations(){
|
function dumpTranslations(){
|
||||||
dumped = {}
|
dumped = { rtl: localization.rtl || false }
|
||||||
|
|
||||||
Object.keys(original_lines).forEach(function(text){
|
Object.keys(original_lines).forEach(function(text){
|
||||||
if(dumped[text] !== undefined) return
|
if(dumped[text] !== undefined) return
|
||||||
|
@ -129,6 +129,24 @@ onUiUpdate(function(m){
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", function() {
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
processNode(gradioApp())
|
processNode(gradioApp())
|
||||||
|
|
||||||
|
if (localization.rtl) { // if the language is from right to left,
|
||||||
|
(new MutationObserver((mutations, observer) => { // wait for the style to load
|
||||||
|
mutations.forEach(mutation => {
|
||||||
|
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 });
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
function download_localization() {
|
function download_localization() {
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"rtl": false,
|
||||||
"⤡": "⤡",
|
"⤡": "⤡",
|
||||||
"⊞": "⊞",
|
"⊞": "⊞",
|
||||||
"×": "×",
|
"×": "×",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"rtl": false,
|
||||||
"×": "×",
|
"×": "×",
|
||||||
"•": "•",
|
"•": "•",
|
||||||
"⊞": "⊞",
|
"⊞": "⊞",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"rtl": false,
|
||||||
"⤡": "⤡",
|
"⤡": "⤡",
|
||||||
"⊞": "⊞",
|
"⊞": "⊞",
|
||||||
"×": "×",
|
"×": "×",
|
||||||
|
|
74
style.css
74
style.css
|
@ -515,3 +515,77 @@ img2maskimg, #img2maskimg > .h-60, #img2maskimg > .h-60 > div, #img2maskimg > .h
|
||||||
max-height: 480px !important;
|
max-height: 480px !important;
|
||||||
min-height: 480px !important;
|
min-height: 480px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The following handles localization for right-to-left (RTL) languages like Arabic.
|
||||||
|
The rtl media type will only be activated by the logic in javascript/localization.js.
|
||||||
|
If you change anything above, you need to make sure it is RTL compliant by just running
|
||||||
|
your changes through converters like https://cssjanus.github.io/ or https://rtlcss.com/.
|
||||||
|
Then, you will need to add the RTL counterpart only if needed in the rtl section below.*/
|
||||||
|
@media rtl {
|
||||||
|
/* this part was manualy added */
|
||||||
|
:host {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
.output-html:has(.performance), .gr-text-input {
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
.gr-radio, .gr-checkbox{
|
||||||
|
margin-left: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* this part was automatically generated with few manual modifications */
|
||||||
|
.performance .time {
|
||||||
|
margin-right: unset;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.justify-center.overflow-x-scroll {
|
||||||
|
justify-content: right;
|
||||||
|
}
|
||||||
|
.justify-center.overflow-x-scroll button:first-of-type {
|
||||||
|
margin-left: unset;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
.justify-center.overflow-x-scroll button:last-of-type {
|
||||||
|
margin-right: unset;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
#settings fieldset span.text-gray-500, #settings .gr-block.gr-box span.text-gray-500, #settings label.block span{
|
||||||
|
margin-right: unset;
|
||||||
|
margin-left: 8em;
|
||||||
|
}
|
||||||
|
#txt2img_progressbar, #img2img_progressbar, #ti_progressbar{
|
||||||
|
right: unset;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.progressDiv .progress{
|
||||||
|
padding: 0 0 0 8px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
#lightboxModal{
|
||||||
|
left: unset;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.modalPrev, .modalNext{
|
||||||
|
border-radius: 3px 0 0 3px;
|
||||||
|
}
|
||||||
|
.modalNext {
|
||||||
|
right: unset;
|
||||||
|
left: 0;
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
}
|
||||||
|
#imageARPreview{
|
||||||
|
left:unset;
|
||||||
|
right:0px;
|
||||||
|
}
|
||||||
|
#txt2img_skip, #img2img_skip{
|
||||||
|
right: unset;
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
#context-menu{
|
||||||
|
box-shadow:-1px 1px 2px #CE6400;
|
||||||
|
}
|
||||||
|
.gr-box > div > div > input.gr-text-input{
|
||||||
|
right: unset;
|
||||||
|
left: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue