2024-10-01 00:04:07 +00:00
#!/usr/bin/env python3
import os
import sys
"""
generates a " tl.js " which can be used to prototype a new translation
without having to run from source , or tamper with the files that are
extracted from the sfx
to generate a tl . js for the language you are translating to ,
run the following command : python tl . py fra Français
( " fra " being the three - letter language code of your language , and
" Français " the native name of the language )
then copy tl . js into the webroot and run copyparty with the following :
on Linux : - - html - head = ' <script src= " /tl.js " ></script> '
on Windows : " --html-head=<script src= ' /tl.js ' ></script> "
or in a copyparty config file :
[ global ]
html - head : < script src = " /tl.js " > < / script >
after editing tl . js , reload your webbrowser by pressing ctrl - shift - r
"""
#######################################################################
#######################################################################
def generate_javascript ( lang3 , native_name , tl_browser ) :
note = " // NOTE: please use tabs for indenting, not spaces :-) "
if lang3 == " eng " :
note + = """ \n
/ / NOTE : since you are using the tl . js straight from the repo , you ' ll
/ / need to find / replace all " eng " with your own three - letter name """
return f """ " use strict " ;
{ note }
/ / the three - letter name of the language you ' re translating to
var my_lang = " {lang3} " ;
/ / and because we don ' t know these yet...
var SR = ' ' , wah = ' ' ;
/ / this function is automatically called when the page is loaded :
function langmod ( ) { {
/ / which page is the javascript currently running on ?
/ / look for some well - known elements to figure it out :
if ( QS ( " h1#cc " ) & & QS ( " a#k " ) ) { {
/ / we are running in the control - panel
Ls [ my_lang ] = tl_cpanel [ my_lang ] ;
} }
else if ( ebi ( " op_cfg " ) ) { {
/ / we are running in the filebrowser
Ls [ my_lang ] = tl_browser [ my_lang ] ;
/ / inform the settings tab that a new lang is available
LANGS . push ( my_lang ) ;
} }
} }
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / below this point is where the actual translation happens ;
/ / here is the pairs of " text-identifier " : " text-to-translate "
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / translation of splash . js ( the control - panel ) ;
/ / you do not need to translate the TLNotes , those are just for you : - )
var tl_cpanel = { {
" {lang3} " : { {
" a1 " : " refresh " ,
" b1 " : " howdy stranger <small>(you ' re not logged in)</small> " ,
" c1 " : " logout " ,
" d1 " : " dump stack " , / / TLNote : " d2 " is the tooltip for this button
" d2 " : " shows the state of all active threads " ,
" e1 " : " reload cfg " ,
" e2 " : " reload config files (accounts/volumes/volflags),$Nand rescan all e2ds volumes$N$Nnote: any changes to global settings$Nrequire a full restart to take effect " ,
" f1 " : " you can browse: " ,
" g1 " : " you can upload to: " ,
" cc1 " : " other stuff: " ,
" h1 " : " disable k304 " , / / TLNote : " j1 " explains what k304 is
" i1 " : " enable k304 " ,
2024-10-26 17:56:54 +00:00
" j1 " : " enabling k304 will disconnect your client on every HTTP 304, which can prevent some buggy proxies from getting stuck (suddenly not loading pages), <em>but</em> it will also make things slower in general " ,
2024-10-01 00:04:07 +00:00
" k1 " : " reset client settings " ,
" l1 " : " login for more: " ,
" m1 " : " welcome back, " , / / TLNote : " welcome back, USERNAME "
" n1 " : " 404 not found ┐( ´ -`)┌ " ,
" o1 " : ' or maybe you don \\ ' t have access - - try a password or < a href = " ' + SR + ' /?h " > go home < / a > ' ,
" p1 " : " 403 forbiddena ~┻━┻ " ,
" q1 " : ' use a password or <a href= " ' + SR + ' /?h " >go home</a> ' ,
" r1 " : " go home " ,
" .s1 " : " rescan " ,
" t1 " : " action " , / / TLNote : this is the header above the " rescan " buttons
" u2 " : " time since the last server write$N( upload / rename / ... )$N$N17d = 17 days$N1h23 = 1 hour 23 minutes$N4m56 = 4 minutes 56 seconds " ,
" v1 " : " connect " ,
" v2 " : " use this server as a local HDD " ,
" w1 " : " switch to https " ,
" x1 " : " change password " ,
" y1 " : " edit shares " , / / TLNote : shows the list of folders that the user has decided to share
" z1 " : " unlock this share: " , / / TLNote : the password prompt to see a hidden share
" ta1 " : " fill in your new password first " ,
" ta2 " : " repeat to confirm new password: " ,
" ta3 " : " found a typo; please try again " ,
" aa1 " : " incoming files: " ,
2024-10-26 17:56:54 +00:00
" ab1 " : " disable no304 " ,
" ac1 " : " enable no304 " ,
" ad1 " : " enabling no304 will disable all caching; try this if k304 wasn ' t enough. This will waste a huge amount of network traffic! " ,
2024-12-02 22:52:39 +00:00
" ae1 " : " active downloads: " ,
2024-12-18 22:17:30 +01:00
" af1 " : " show recent uploads " ,
2024-10-01 00:04:07 +00:00
} } ,
} } ;
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / translation of browser . js ( the filebrowser ) :
var tl_browser = { {
" {lang3} " : { {
" tt " : " {native_name} " ,
{ tl_browser }
} } ;
"""
#######################################################################
#######################################################################
def die ( * a ) :
print ( * a )
sys . exit ( 1 )
def main ( ) :
webdir = " ../copyparty/web/splash.js "
while webdir and not os . path . exists ( webdir ) :
webdir = webdir . split ( " / " , 1 ) [ 1 ]
if not webdir :
t = " could not find the copyparty/web/*.js files! \n please cd into the copyparty repo before running this script "
die ( t )
webdir = webdir . rsplit ( " / " , 1 ) [ 0 ] if " / " in webdir else " . "
with open ( os . path . join ( webdir , " browser.js " ) , " rb " ) as f :
browserjs = f . read ( ) . decode ( " utf-8 " )
_ , browserjs = browserjs . split ( ' \n \t \t " tt " : " English " , \n ' , 1 )
browserjs , _ = browserjs . split ( ' \n \t " nor " : { ' , 1 )
try :
lang3 = sys . argv [ 1 ]
except :
t = " you need to provide one more argument: the three-letter language code for the language you are translating to, for example: ger "
die ( t )
try :
native_name = sys . argv [ 2 ]
except :
t = " you need to provide one more argument: the native name of the language you are translating to, for example: Deutsch "
die ( t )
ret = generate_javascript ( lang3 , native_name , browserjs )
outpath = os . path . abspath ( " tl.js " )
if os . path . exists ( outpath ) :
t = " the output file already exists! if you really want to overwrite it, then delete the following file and try again: "
die ( t , outpath )
with open ( outpath , " wb " ) as f :
f . write ( ret . encode ( " utf-8 " ) )
print ( " successfully created " , outpath )
if __name__ == " __main__ " :
main ( )