From 81341d5b6ddefd85d78447390048d20da43e9efc Mon Sep 17 00:00:00 2001 From: kingmo888 <17401091+kingmo888@users.noreply.github.com> Date: Tue, 14 May 2024 10:47:41 +0800 Subject: [PATCH] Fix bugs and adjust internationalization of new pages --- api/front_locale.py | 20 +- ...06_alter_rustdesdevice_options_and_more.py | 240 ++++++++++++++++++ ...07_alter_rustdesdevice_options_and_more.py | 232 +++++++++++++++++ api/templates/base.html | 4 +- api/templates/show_conn_log.html | 21 +- api/templates/show_file_log.html | 25 +- db/db.sqlite3 | Bin 155648 -> 163840 bytes locale/en/LC_MESSAGES/django.mo | Bin 8128 -> 8872 bytes locale/en/LC_MESSAGES/django.po | 177 ++++++++++--- rustdesk_server_api/settings.py | 1 + 10 files changed, 659 insertions(+), 61 deletions(-) create mode 100644 api/migrations/0006_alter_rustdesdevice_options_and_more.py create mode 100644 api/migrations/0007_alter_rustdesdevice_options_and_more.py diff --git a/api/front_locale.py b/api/front_locale.py index 03d478a..42edd0a 100644 --- a/api/front_locale.py +++ b/api/front_locale.py @@ -57,4 +57,22 @@ _('3、为保障安全,链接有效期为15分钟、链接仅有效1次。链接一旦被(非分享人的登录用户)访问,分享生效,后续访问链接失效。') _('系统') _('我的机器') -_('信息') \ No newline at end of file +_('信息') +_('远程ID') +_('远程别名') +_('用户ID') +_('用户别名') +_('用户IP') +_('文件大小') +_('发送/接受') +_('记录于') +_('连接开始时间') +_('连接结束时间') +_('时长') +_('连接日志') +_('文件传输日志') +_('页码 #') +_('下一页 #') +_('上一页 #') +_('第一页') +_('上页') \ No newline at end of file diff --git a/api/migrations/0006_alter_rustdesdevice_options_and_more.py b/api/migrations/0006_alter_rustdesdevice_options_and_more.py new file mode 100644 index 0000000..8f43eea --- /dev/null +++ b/api/migrations/0006_alter_rustdesdevice_options_and_more.py @@ -0,0 +1,240 @@ +# Generated by Django 4.2.7 on 2024-05-14 10:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("api", "0005_connlog_filelog"), + ] + + operations = [ + migrations.AlterModelOptions( + name="rustdesdevice", + options={ + "ordering": ("-rid",), + "verbose_name": "Device", + "verbose_name_plural": "Device List", + }, + ), + migrations.AlterModelOptions( + name="rustdeskpeer", + options={ + "ordering": ("-username",), + "verbose_name": "Peers", + "verbose_name_plural": "Peers List", + }, + ), + migrations.AlterModelOptions( + name="rustdesktag", + options={ + "ordering": ("-uid",), + "verbose_name": "Tags", + "verbose_name_plural": "Tags List", + }, + ), + migrations.AlterModelOptions( + name="rustdesktoken", + options={ + "ordering": ("-username",), + "verbose_name": "Token", + "verbose_name_plural": "Token List", + }, + ), + migrations.AlterModelOptions( + name="sharelink", + options={ + "ordering": ("-create_time",), + "verbose_name": "Share Link", + "verbose_name_plural": "Link List", + }, + ), + migrations.AlterModelOptions( + name="userprofile", + options={ + "permissions": ( + ("view_task", "Can see available tasks"), + ("change_task_status", "Can change the status of tasks"), + ("close_task", "Can remove a task by setting its status as closed"), + ), + "verbose_name": "User", + "verbose_name_plural": "User List", + }, + ), + migrations.AlterField( + model_name="rustdesdevice", + name="create_time", + field=models.DateTimeField( + auto_now_add=True, verbose_name="Device Registration Time" + ), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="hostname", + field=models.CharField(max_length=100, verbose_name="Hostname"), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="memory", + field=models.CharField(max_length=100, verbose_name="Memory"), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="os", + field=models.CharField(max_length=100, verbose_name="Operating System"), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="rid", + field=models.CharField(blank=True, max_length=60, verbose_name="Client ID"), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="username", + field=models.CharField( + blank=True, max_length=100, verbose_name="System Username" + ), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="version", + field=models.CharField(max_length=100, verbose_name="Client Version"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="alias", + field=models.CharField(max_length=30, verbose_name="Alias"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="hostname", + field=models.CharField(max_length=30, verbose_name="Operating System Name"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="platform", + field=models.CharField(max_length=30, verbose_name="Platform"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="rhash", + field=models.CharField( + max_length=60, verbose_name="Device Connection Password" + ), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="rid", + field=models.CharField(max_length=60, verbose_name="Client ID"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="tags", + field=models.CharField(max_length=30, verbose_name="Tag"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="uid", + field=models.CharField(max_length=16, verbose_name="User ID"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="username", + field=models.CharField(max_length=20, verbose_name="System Username"), + ), + migrations.AlterField( + model_name="rustdesktag", + name="tag_color", + field=models.CharField(blank=True, max_length=60, verbose_name="Tag Color"), + ), + migrations.AlterField( + model_name="rustdesktag", + name="tag_name", + field=models.CharField(max_length=60, verbose_name="Tag Name"), + ), + migrations.AlterField( + model_name="rustdesktag", + name="uid", + field=models.CharField(max_length=16, verbose_name="Belongs to User ID"), + ), + migrations.AlterField( + model_name="rustdesktoken", + name="access_token", + field=models.CharField( + blank=True, max_length=60, verbose_name="Access Token" + ), + ), + migrations.AlterField( + model_name="rustdesktoken", + name="create_time", + field=models.DateTimeField(auto_now_add=True, verbose_name="Login Time"), + ), + migrations.AlterField( + model_name="rustdesktoken", + name="uid", + field=models.CharField(max_length=16, verbose_name="User ID"), + ), + migrations.AlterField( + model_name="rustdesktoken", + name="username", + field=models.CharField(max_length=20, verbose_name="Username"), + ), + migrations.AlterField( + model_name="rustdesktoken", + name="uuid", + field=models.CharField(max_length=60, verbose_name="UUID"), + ), + migrations.AlterField( + model_name="sharelink", + name="create_time", + field=models.DateTimeField( + auto_now_add=True, verbose_name="Generation Time" + ), + ), + migrations.AlterField( + model_name="sharelink", + name="is_expired", + field=models.BooleanField(default=False, verbose_name="Is Expired"), + ), + migrations.AlterField( + model_name="sharelink", + name="is_used", + field=models.BooleanField(default=False, verbose_name="Is Used"), + ), + migrations.AlterField( + model_name="sharelink", + name="peers", + field=models.CharField(max_length=20, verbose_name="Machine ID List"), + ), + migrations.AlterField( + model_name="sharelink", + name="shash", + field=models.CharField(max_length=60, verbose_name="Link Key"), + ), + migrations.AlterField( + model_name="sharelink", + name="uid", + field=models.CharField(max_length=16, verbose_name="User ID"), + ), + migrations.AlterField( + model_name="userprofile", + name="deviceInfo", + field=models.TextField(blank=True, verbose_name="Login Information:"), + ), + migrations.AlterField( + model_name="userprofile", + name="is_active", + field=models.BooleanField(default=True, verbose_name="Is Active"), + ), + migrations.AlterField( + model_name="userprofile", + name="is_admin", + field=models.BooleanField(default=False, verbose_name="Is Administrator"), + ), + migrations.AlterField( + model_name="userprofile", + name="username", + field=models.CharField(max_length=50, unique=True, verbose_name="Username"), + ), + ] diff --git a/api/migrations/0007_alter_rustdesdevice_options_and_more.py b/api/migrations/0007_alter_rustdesdevice_options_and_more.py new file mode 100644 index 0000000..9a08359 --- /dev/null +++ b/api/migrations/0007_alter_rustdesdevice_options_and_more.py @@ -0,0 +1,232 @@ +# Generated by Django 4.2.7 on 2024-05-14 10:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("api", "0006_alter_rustdesdevice_options_and_more"), + ] + + operations = [ + migrations.AlterModelOptions( + name="rustdesdevice", + options={ + "ordering": ("-rid",), + "verbose_name": "设备", + "verbose_name_plural": "设备列表", + }, + ), + migrations.AlterModelOptions( + name="rustdeskpeer", + options={ + "ordering": ("-username",), + "verbose_name": "Peers", + "verbose_name_plural": "Peers列表", + }, + ), + migrations.AlterModelOptions( + name="rustdesktag", + options={ + "ordering": ("-uid",), + "verbose_name": "Tags", + "verbose_name_plural": "Tags列表", + }, + ), + migrations.AlterModelOptions( + name="rustdesktoken", + options={ + "ordering": ("-username",), + "verbose_name": "Token", + "verbose_name_plural": "Token列表", + }, + ), + migrations.AlterModelOptions( + name="sharelink", + options={ + "ordering": ("-create_time",), + "verbose_name": "分享链接", + "verbose_name_plural": "链接列表", + }, + ), + migrations.AlterModelOptions( + name="userprofile", + options={ + "permissions": ( + ("view_task", "Can see available tasks"), + ("change_task_status", "Can change the status of tasks"), + ("close_task", "Can remove a task by setting its status as closed"), + ), + "verbose_name": "用户", + "verbose_name_plural": "用户列表", + }, + ), + migrations.AlterField( + model_name="rustdesdevice", + name="create_time", + field=models.DateTimeField(auto_now_add=True, verbose_name="设备注册时间"), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="hostname", + field=models.CharField(max_length=100, verbose_name="主机名"), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="memory", + field=models.CharField(max_length=100, verbose_name="内存"), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="os", + field=models.CharField(max_length=100, verbose_name="操作系统"), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="rid", + field=models.CharField(blank=True, max_length=60, verbose_name="客户端ID"), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="username", + field=models.CharField(blank=True, max_length=100, verbose_name="系统用户名"), + ), + migrations.AlterField( + model_name="rustdesdevice", + name="version", + field=models.CharField(max_length=100, verbose_name="客户端版本"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="alias", + field=models.CharField(max_length=30, verbose_name="别名"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="hostname", + field=models.CharField(max_length=30, verbose_name="操作系统名"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="platform", + field=models.CharField(max_length=30, verbose_name="平台"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="rhash", + field=models.CharField(max_length=60, verbose_name="设备链接密码"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="rid", + field=models.CharField(max_length=60, verbose_name="客户端ID"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="tags", + field=models.CharField(max_length=30, verbose_name="标签"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="uid", + field=models.CharField(max_length=16, verbose_name="用户ID"), + ), + migrations.AlterField( + model_name="rustdeskpeer", + name="username", + field=models.CharField(max_length=20, verbose_name="系统用户名"), + ), + migrations.AlterField( + model_name="rustdesktag", + name="tag_color", + field=models.CharField(blank=True, max_length=60, verbose_name="标签颜色"), + ), + migrations.AlterField( + model_name="rustdesktag", + name="tag_name", + field=models.CharField(max_length=60, verbose_name="标签名称"), + ), + migrations.AlterField( + model_name="rustdesktag", + name="uid", + field=models.CharField(max_length=16, verbose_name="所属用户ID"), + ), + migrations.AlterField( + model_name="rustdesktoken", + name="access_token", + field=models.CharField( + blank=True, max_length=60, verbose_name="access_token" + ), + ), + migrations.AlterField( + model_name="rustdesktoken", + name="create_time", + field=models.DateTimeField(auto_now_add=True, verbose_name="登录时间"), + ), + migrations.AlterField( + model_name="rustdesktoken", + name="uid", + field=models.CharField(max_length=16, verbose_name="用户ID"), + ), + migrations.AlterField( + model_name="rustdesktoken", + name="username", + field=models.CharField(max_length=20, verbose_name="用户名"), + ), + migrations.AlterField( + model_name="rustdesktoken", + name="uuid", + field=models.CharField(max_length=60, verbose_name="uuid"), + ), + migrations.AlterField( + model_name="sharelink", + name="create_time", + field=models.DateTimeField(auto_now_add=True, verbose_name="生成时间"), + ), + migrations.AlterField( + model_name="sharelink", + name="is_expired", + field=models.BooleanField(default=False, verbose_name="是否过期"), + ), + migrations.AlterField( + model_name="sharelink", + name="is_used", + field=models.BooleanField(default=False, verbose_name="是否使用"), + ), + migrations.AlterField( + model_name="sharelink", + name="peers", + field=models.CharField(max_length=20, verbose_name="机器ID列表"), + ), + migrations.AlterField( + model_name="sharelink", + name="shash", + field=models.CharField(max_length=60, verbose_name="链接Key"), + ), + migrations.AlterField( + model_name="sharelink", + name="uid", + field=models.CharField(max_length=16, verbose_name="用户ID"), + ), + migrations.AlterField( + model_name="userprofile", + name="deviceInfo", + field=models.TextField(blank=True, verbose_name="登录信息:"), + ), + migrations.AlterField( + model_name="userprofile", + name="is_active", + field=models.BooleanField(default=True, verbose_name="是否激活"), + ), + migrations.AlterField( + model_name="userprofile", + name="is_admin", + field=models.BooleanField(default=False, verbose_name="是否管理员"), + ), + migrations.AlterField( + model_name="userprofile", + name="username", + field=models.CharField(max_length=50, unique=True, verbose_name="用户名"), + ), + ] diff --git a/api/templates/base.html b/api/templates/base.html index c5e03d0..bad0d35 100644 --- a/api/templates/base.html +++ b/api/templates/base.html @@ -37,10 +37,10 @@
  • {% trans "网页控制" %}
  • {% if u.is_admin %} +
  • {% trans "连接日志" %}
  • +
  • {% trans "文件传输日志" %}
  • {% trans "管理后台" %}
  • -
  • Connection Log
  • -
  • File Transfer Log
  • {% endif %}
  • {% trans "退出" %}
  • diff --git a/api/templates/show_conn_log.html b/api/templates/show_conn_log.html index 1b3197b..0d2a429 100644 --- a/api/templates/show_conn_log.html +++ b/api/templates/show_conn_log.html @@ -1,23 +1,24 @@ {% extends "base.html" %} +{% load my_filters %} {% block title %}RustDesk WebUI{% endblock %} {% block content %}
    -
    {{ "Connection Log" | translate }}:【{{u.username}}】
    +
    {{ "连接日志" | translate }}:【{{u.username}}】
    - - - - - - - - + + + + + + + + @@ -46,7 +47,7 @@ {% endif %} {% if page_obj.paginator.num_pages > 1 %} - {{ "Page #" | translate }} {{ page_obj.number }} / {{ page_obj.paginator.num_pages }} + {{ "页码 #" | translate }} {{ page_obj.number }} / {{ page_obj.paginator.num_pages }} {% endif %} {% if page_obj.has_next %} diff --git a/api/templates/show_file_log.html b/api/templates/show_file_log.html index 004d85c..455971e 100644 --- a/api/templates/show_file_log.html +++ b/api/templates/show_file_log.html @@ -1,24 +1,25 @@ {% extends "base.html" %} +{% load my_filters %} {% block title %}RustDesk WebUI{% endblock %} {% block content %}
    -
    {{ "File Transfer Log" | translate }}:【{{u.username}}】
    +
    {{ "文件传输日志" | translate }}:【{{u.username}}】
    {{ "User IP" | translate }}{{ "User ID" | translate }}{{ "User Alias" | translate }}{{ "Remote ID" | translate }}{{ "Remote Alias" | translate }}{{ "Connection Start Time" | translate }}{{ "Connection End Time" | translate }}{{ "Duration (HH:MM:SS)" | translate }}{{ "用户IP" | translate }}{{ "用户ID" | translate }}{{ "用户别名" | translate }}{{ "远程ID" | translate }}{{ "远程别名" | translate }}{{ "连接开始时间" | translate }}{{ "连接结束时间" | translate }}{{ "时长" | translate }}(HH:MM:SS)
    - - - - - - - - - + + + + + + + + + @@ -47,12 +48,12 @@
    {% if page_obj.has_previous %} - + {% endif %} {% if page_obj.paginator.num_pages > 1 %} - {{ "page #" | translate }} {{ page_obj.number }} / {{ page_obj.paginator.num_pages }} + {{ "页码 #" | translate }} {{ page_obj.number }} / {{ page_obj.paginator.num_pages }} {% endif %} {% if page_obj.has_next %} diff --git a/db/db.sqlite3 b/db/db.sqlite3 index 46fe727251c8265936451c1592f30f42e9dbcb68..872f8abe71c0a1ea4927aac3fcdbccbe724553b8 100644 GIT binary patch delta 2587 zcmaJ?eQXnD81H*+ck9<(VPj+8x0bn$ZryvI?{z?+z@nyO2m$6t^itPj9O=5*c8~~h zfF%B91kU6PMnXcO|40-YGRyquta8!^+c`43`NQ5Z0 zzKSN9w24|86cJ3wQY)s3b~I6$n$6|1v(w5!Evw>x4syaUto9S*vW$2nr&{y_?Wm;| zLUMvn2&r}YB?lyl0xL;sv;MGsPo0+tc?bo*N$+j%Y~_bp&dP=xh4LuN#burs5UcO+ z5S*BVT}4*E*fF%=@Dq6%2@r<8uGYR}Iy0l?aJg7T%V|X|oyCbcJOlyC2{BINf?yA; zypQE`xXe&~it@VFP3o!6VW&Qpo1jj@_Urin4yabEMvljVE|sg1p|+#W^vV zN4yMmrHgf9h(iL;>K}ATPE6t@6Z^Ak$cc#(#yA~yJ5pfdf($t*>BqWbPCq`u@jTQ& z?~Xe$F2M;LuM<7I6JteQLJ57mr@g)`Y#hIpIOOpjN4H@d39=+3eYqzxTvtsPmpB%& ze2Bi`YM`?Oy+q%oPthOJ2A!q%lzN#>bVpmzooLLdM->IPR>{v7iW#+#QIBX-s(x~$ zwb|{Cf%JUwkTR#{XS6~=o6RBJ7#Rg^`i+s;nozFb$Kx5I9=YfTG(|ls`Qbx~p*>9< z00*?^B~*E~=P0OmZ@uS6ft@jN zj@4pNLHpSbRq9giLpP$9bn=W6rtVTdQ#Yv}sBfud>Ke6#V~kPI>jof%tW~mB(OLy_ z4f58?Su1O;u=MMNwxk=8{W^I|2{+1(GG~y18szJWZqmwiTP2ERVr?T#V%f4n>=iIEIviT4>W)dnk1L!gZ%M0Z z*NQZ=Y?d_6+Oe*IRnk_7Y?)|Fv&$}3X{#`Mp{1?5(G_VGO6i4PzMk~BrU7&I>{j+3&vx4jYzsBf}y<^FJW6Zwf_VF<$VsVUHqeS!K zWC~mb9+%5KW~7r~GnREB3HD+G@rm)$D6!LcF9{eUydBG%+YVxG3>b|mFl2nW4V+)R zoB~_GVqgpL*V=P)p3b2Aj*Ge(`Xdw!c>T}&mVH#?_l=_s$GuVa9h|{e?#-t*i)3pw z3QljeGB8gNdseG%2Wr(;5aXE?=-)WRL`;teb0nR|{mBpDZ^s}rv3nmgv44CVqj_~^ z7EimDF(Ver%ep`2u4B}w}gGE=c{$rfjpCS+xK80V3;cdq2gnQ4|&G&)27gC0YBbIUJxSVT=@1>!7a@CE?(&c{@m~ zdGPg3yb+X%IOsR_?8aY$PdypqN0|ugG4ERQ<^j<>WE_=A>(mlH&y0fb86;lDlq0V{OBl>h($ delta 1169 zcmaKsOK1~87=ZWDWYbNPNoh^(BS~9YQPNIkW@mSHQ$&LZY6TV4wu-FPMhvvEG*J%< zw!Us+WrX!4RY5NbN)8o7@F2cU;?0`~KA>0?)T>SeL3hD{x%}UJGynYan4Q&UA2rT* zHup=Cv`X|pZR4c@Lj>W>LP&%Z@S_g;?oD3?YEsW|Ezuv*m-TD0WANMlvL& z`U{m}rBXUlt{{Z4TPl~TrSVCE2pvSmAU3;+kvEMzGNEOf$gzf3@SYBq{1@RmV#BSx z>_ZeX3kj>(!XI?(X#LxwkTQ%B;=4L&n{P1+v16LH$rm~YPWhMtZLu6RQ6eO@^%uq` zrb^}ir*1&Yz$P^y2uUr%m@fT)Jb{jl8L>CTL(+;7KHN3v&yPUUvKXQKVplfl%a1_A zG#TM9yK+Gd*@zI6CsV}FFtn+~n8V!^4l;{Uhar9|Wd#`}%wY!qmKq2$LY%tC(t#~t zh>`FxKatM*JtPWXTQ=nn(=fW;u0lYo^0r76dIO=Hw?cfzw8!Vgh0Q zG}Alit0sboQABABypqCTQUMRZJ1_}u0}srBL$&7p+W~HGQk_V-MOCx%_|fWNce*$; zRr-CWbFEEkE+P)xojF>mP82H>#bc#|MegPDa+1HwWn%EN+xh*5iN)-Ql8_gljVX5c=6WS@{chqHa}FPw diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 82f76c75fa74af465f5da72f5284670707ee7b58..eb6af4d3467142c985ce7ae5b0dc67f4c6851c4a 100644 GIT binary patch delta 3399 zcmYk6d2o|O7>Bojw3I>*zybvuh=5!of&v~;phd2hLOBHSsPIvOCDkNciljxc3>At7 z?8w~_r30uq5h#Zu;(dYx=!~d;*rctF3jE`!M8GV>I*-#AS|Iz6;Z_&%tE) zz4iYL`I+DOn`lhXBz7=nG>$?z6jnoWFsETV_#RZ?v(~<3?I={jSFJy_V?1y-*cN|Z zm;ndFn_!OhKLVA&N|?p^W}S7^TD}4m-~=SLc^m3Y&szU^r~qGEy9p}6UtlWy!}{A} zXnqD93|*E5P&=|3wq<=&Nhb?#f?eT$mgsCb9%^OKezrnCQga1qA<_>Fy#L^evK3sj)qP~!$!4uky6ZTx9mzV*+8D#l{V zCHA@BvK%VjM%WG3WU&9r{52d};C-kw`wS}ZCF^gt_GQaItv|U_d?(VO0{4QNH_&pV z_2)swp9Zyav+eUmK{~`Te(QM3+9B8v|4UE_eg+4^2B-jOosF3QT~KxjRGbxX9NYl4 z6Q4pQbkXvAsBxFA9c)c>IntmqbVI$#0H}$>EyqF?X93i>5~u~d)?NX}B^a{?PR4)w zT4T1rluTnHuokM8DhZMZt01=^XhL*!eRe^9Wj@P8ZTc8^jz`0P@ zs19o4QP>-vhDy^BikWhNJNpK_&96Ll?obKzfqmhPkoq&Tpw8S2wQ~We@s&{Vo`ovfZBQ?`4=Rx`R07ALcKD;9 z9q=7gk^Kmjz;93!TD#&4CPM{sTYCu9n@@zQfq8H^Tn2Si`{7Xd7F5+=g$rSFulVya z%iuaXQ+Ti)YT-tx%&$Og*dg3|65k9p zeh1XnzW@`ASrWTy+R}TG+7Pq~6`>oEnif{&K8h41A9+wqQ>|!`9OOm!BYi8LKn`-D zUZJ5$okBTDZGvmCZb#a$dyvv8L8FkGwqq$8DT7vqZjJR~bz)}H?}v2Y+S9?P58{nt zZGfeqGgyq4pqtTs`sAs#Lb|k*WYET=wP-aOjns6&17p4TNBv>?sya14nudm<2axt! z?V&i#4e)NH!&hOov{bFH64iyg$$C4(*{DCd!}@fXEv=N!^=Ktp*W$F)VdvTYEI0-| zX6*^^F4PyzLn@TH@%N`fFw}n%O-FYkm2x>!%S8cHEQ7{JBi1JJUt#+NZ~>Z+23emQ zPDb4Ee;eQYSk;b&u^nG-A3X>kNBZ8X-G-K-M`X}+msTKM0UydjGmu(F_?vb+TV-!( zs4s7>J?wIuhWe^_|G%Eg9jZwABBlD7=JJXm(M>N#s%yg2JDg2uzy6uVZBIsb9FII- z7s^ic_Ia+d;lz=KlY5%p3`J{RjGU@5(U>c;cVFaCwTadoY2JD&T$MU3p~s{`)3~KB zy8dWneN9ts-M_|x$mWfqchXKI9*VrNwc+@t@apu6grXgdbybscP17lLBI`8>W0!Jy z^{K`^6)nce^2oj_EmQNlb=f@PgBwqTqC0oTpNA4Vd>vnc*yOJjy3I zb5HP;I3r;J&!sjcbTs^;3@Nlr({h_$mH#3`8CAj55#+8OFhN@ z(5@aA+A*!fS?C%Y2>W_Q5;A8vOUnX|i?_GE*hmvP*R%7e@nv4Gvp`{8MS)^pz%|pe g)M;n_=T;8?GxNL)V`D-~vZtr${dm`jWlJ6N55OJWMF0Q* delta 2687 zcmZ9OeN5F=7{{Nh_=azYplOg`rlw+$qP-{>q6s45JD6yQL?|i>Zbac#r;g>z$}6?i z2yt1^+;F?rn6A=hYwHbTwf<u-QOZ40)`~xdo1( z|14yv9d!H4a0vYqaFJQiI%#BK_zPyh*}RQ`Rgg7ptFs=;!M)yZg*?_l)gQhK1j+S|URb+r!srNTQe6;OwIBazLVaQ|0sM6pG z=Ow6}--4Qd(6Fcjaquqs(_k*^+X5OI@B-AtFF{Sz=KXFskN#!IrYwa)G%XFPKL;kl zJnyfEJXY;|9%^HUpvJ%GY=J>!Z@b|v)I=Y9|2wE7_yuagKcO7$8yB4@);Su=J^@aF zQ{BGGSq?Q%4b->>=bkvuUuV|j17GtO?NCY8>Gm$D2|j{jU^kSbH=ri`7ZPRbPsVA7 z2~hS_?@xASx;+Q77t0$#{55fj4=8um_`pUVxXys!C2ttYkq;q3vQJ?q>)T}-g%}daEDhWU^}|{?9yY?U@Hkuz z&p}Nz5~CJOf(zhuNFG`pEP(r=&b|lgtbc@x^i9aASb(olobLZ98cLc;P!7z6I;#Sx zvnqmes2FO24NwuOg*>*4N)x{dHSSHQg-=7xa~{g!i~jy|?|%b>`t)9*p`DE5`zmHQ z=R-NL5-P-{P@&rhwLm>osGFe19foqC8EU~+I1#o(f^6MTM|T}6BEKaOf9)iY9GzeY zRI(*N?I;y$;WVfPXF`Q8*WZ^wjwL>w-kzK7lh~Z!+;$=*N<2 z8897^hqeK3gbh&dFFS8SW&hxD(MYU@T6iesY<46l@H}|0(NZGv=%|`NCMG2XW9zzczl^IBRqr$wAg_Mv}P#IF06oqYe-bPRv zU5851CUh@SSr|p6o=>g2KhcKBij*&kfWob!D5>m>Li>+?(?uoG za-_3fhAL1kdIHTwDi5I&^dzc8ca~i5=$35r_8gdo9z}&n;m<*tXsPc1Gc=~7_2>~) zjCA%1NJ%pp<)bA?*Qo|QfVeb~vj(g_!6^YJ~Q@rg^q^@(d^1{GG+*QFGdRaS(4AJZNFY;1m?P-=2R_=DuaKukeZ eZCz->xUa)~Q?3R=Whn`vg7HQD7H!*7VgCV|>i%#5 diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 8f44e08..52e86f4 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-15 21:10+0800\n" +"POT-Creation-Date: 2024-05-14 10:44+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -32,15 +32,15 @@ msgstr "Password Hash Value" msgid "基本信息" msgstr "Basic Information" -#: .\api\admin_user.py:98 +#: .\api\admin_user.py:100 msgid "RustDesk自建Web" msgstr "RustDesk Self-Hosted Web" -#: .\api\admin_user.py:99 +#: .\api\admin_user.py:101 msgid "未定义" msgstr "Undefined" -#: .\api\front_locale.py:4 .\api\templates\base.html:40 +#: .\api\front_locale.py:4 .\api\templates\base.html:42 msgid "管理后台" msgstr "Admin Panel" @@ -54,7 +54,8 @@ msgstr "Share Machine" #: .\api\front_locale.py:7 msgid "这么简易的东西,忘记密码这功能就没必要了吧。" -msgstr "For such a simple thing, the forgot password feature is unnecessary, right?" +msgstr "" +"For such a simple thing, the forgot password feature is unnecessary, right?" #: .\api\front_locale.py:8 msgid "立即注册" @@ -77,7 +78,8 @@ msgid "" "2、所分享的机器,被分享人享有相同的权限,如果机器设置了保存密码,被分享人也可" "以直接连接。" msgstr "" -"2. The shared machine grants the same permissions to the recipient. If the machine is set to save password, the recipient can also connect directly." +"2. The shared machine grants the same permissions to the recipient. If the " +"machine is set to save password, the recipient can also connect directly." #: .\api\front_locale.py:13 msgid "导出xlsx" @@ -89,7 +91,9 @@ msgstr "Generate Share Link" #: .\api\front_locale.py:15 msgid "请输入8~20位密码。可以包含字母、数字和特殊字符。" -msgstr "Please enter a password of 8~20 characters. It can contain letters, numbers, and special characters." +msgstr "" +"Please enter a password of 8~20 characters. It can contain letters, numbers, " +"and special characters." #: .\api\front_locale.py:16 msgid "尾页" @@ -196,8 +200,7 @@ msgid "请输入用户名" msgstr "Please enter username" #: .\api\front_locale.py:43 -msgid "" -"1、链接有效期为15分钟,切勿随意分享给他人。" +msgid "1、链接有效期为15分钟,切勿随意分享给他人。" msgstr "" "1. The link is valid for 15 minutes. Do not share it with others casually." @@ -217,7 +220,7 @@ msgstr "Next Page" msgid "登录" msgstr "Login" -#: .\api\front_locale.py:48 .\api\templates\base.html:43 +#: .\api\front_locale.py:48 .\api\templates\base.html:45 msgid "退出" msgstr "Logout" @@ -227,7 +230,8 @@ msgstr "Please adjust the machines to be shared to the right" #: .\api\front_locale.py:50 msgid "成功!如需分享,请复制以下链接给其他人:
    " -msgstr "Success! If you need to share, please copy the following link to others:
    " +msgstr "" +"Success! If you need to share, please copy the following link to others:
    " #: .\api\front_locale.py:51 msgid "忘记密码?" @@ -258,12 +262,102 @@ msgid "" "3、为保障安全,链接有效期为15分钟、链接仅有效1次。链接一旦被(非分享人的登录" "用户)访问,分享生效,后续访问链接失效。" msgstr "" -"3. For security reasons, the link is valid for 15 minutes and only valid once. Once the link is accessed by a user (other than the sharing person), the sharing becomes effective, and subsequent access to the link will be invalid." +"3. For security reasons, the link is valid for 15 minutes and only valid " +"once. Once the link is accessed by a user (other than the sharing person), " +"the sharing becomes effective, and subsequent access to the link will be " +"invalid." #: .\api\front_locale.py:58 msgid "系统" msgstr "System" +#: .\api\front_locale.py:59 +msgid "我的机器" +msgstr "My Machine" + +#: .\api\front_locale.py:60 +#, fuzzy +#| msgid "基本信息" +msgid "信息" +msgstr "Basic Information" + +#: .\api\front_locale.py:61 +msgid "远程ID" +msgstr "Remote ID" + +#: .\api\front_locale.py:62 +msgid "远程别名" +msgstr "Remote Alias" + +#: .\api\front_locale.py:63 .\api\models_work.py:11 .\api\models_work.py:48 +#: .\api\models_work.py:126 +msgid "用户ID" +msgstr "User ID" + +#: .\api\front_locale.py:64 +msgid "用户别名" +msgstr "User Alias" + +#: .\api\front_locale.py:65 +msgid "用户IP" +msgstr "User IP" + +#: .\api\front_locale.py:66 +msgid "文件大小" +msgstr "Filesize" + +#: .\api\front_locale.py:67 +msgid "发送/接受" +msgstr "Sent/Received" + +#: .\api\front_locale.py:68 +msgid "记录于" +msgstr "Logged At" + +#: .\api\front_locale.py:69 +msgid "连接开始时间" +msgstr "Connection Start Time\t" + +#: .\api\front_locale.py:70 +msgid "连接结束时间" +msgstr "Connection End Time" + +#: .\api\front_locale.py:71 +msgid "时长" +msgstr "Duration" + +#: .\api\front_locale.py:72 .\api\templates\base.html:40 +msgid "连接日志" +msgstr "Connection Log" + +#: .\api\front_locale.py:73 .\api\templates\base.html:41 +msgid "文件传输日志" +msgstr "File Transfer Log" + +#: .\api\front_locale.py:74 +msgid "页码 #" +msgstr "Page #" + +#: .\api\front_locale.py:75 +msgid "下一页 #" +msgstr "Next #" + +#: .\api\front_locale.py:76 +msgid "上一页 #" +msgstr "Previous #" + +#: .\api\front_locale.py:77 +#, fuzzy +#| msgid "上一页" +msgid "第一页" +msgstr "First" + +#: .\api\front_locale.py:78 +#, fuzzy +#| msgid "上一页" +msgid "上页" +msgstr "Previous Page" + #: .\api\models_user.py:40 msgid "登录信息:" msgstr "Login Information:" @@ -288,10 +382,6 @@ msgstr "User List" msgid "RustDesk ID" msgstr "RustDesk ID" -#: .\api\models_work.py:11 .\api\models_work.py:48 .\api\models_work.py:96 -msgid "用户ID" -msgstr "User ID" - #: .\api\models_work.py:12 msgid "uuid" msgstr "UUID" @@ -364,67 +454,69 @@ msgstr "Device" msgid "设备列表" msgstr "Device List" -#: .\api\models_work.py:97 +#: .\api\models_work.py:127 msgid "链接Key" msgstr "Link Key" -#: .\api\models_work.py:98 +#: .\api\models_work.py:128 msgid "机器ID列表" msgstr "Machine ID List" -#: .\api\models_work.py:99 +#: .\api\models_work.py:129 msgid "是否使用" msgstr "Is Used" -#: .\api\models_work.py:100 +#: .\api\models_work.py:130 msgid "是否过期" msgstr "Is Expired" -#: .\api\models_work.py:101 +#: .\api\models_work.py:131 msgid "生成时间" msgstr "Generation Time" -#: .\api\models_work.py:107 +#: .\api\models_work.py:137 msgid "分享链接" msgstr "Share Link" -#: .\api\models_work.py:108 +#: .\api\models_work.py:138 msgid "链接列表" msgstr "Link List" -#: .\api\views_api.py:19 +#: .\api\views_api.py:20 msgid "请求方式错误!请使用POST方式。" msgstr "Request method error! Please use the POST method." -#: .\api\views_api.py:33 +#: .\api\views_api.py:34 msgid "帐号或密码错误!请重试,多次重试后将被锁定IP!" -msgstr "Account or password error! Please retry. After multiple retries, the IP will be locked!" +msgstr "" +"Account or password error! Please retry. After multiple retries, the IP will " +"be locked!" -#: .\api\views_api.py:71 +#: .\api\views_api.py:72 msgid "请求方式错误!" msgstr "Request method error!" -#: .\api\views_api.py:79 +#: .\api\views_api.py:80 msgid "异常请求!" msgstr "Abnormal request!" -#: .\api\views_api.py:92 .\api\views_api.py:212 +#: .\api\views_api.py:93 .\api\views_api.py:213 msgid "错误的提交方式!" msgstr "Incorrect submission method!" -#: .\api\views_api.py:120 +#: .\api\views_api.py:121 msgid "拉取列表错误!" msgstr "Error fetching list!" -#: .\api\views_api.py:199 +#: .\api\views_api.py:200 msgid "更新地址簿有误" msgstr "Error updating address book" -#: .\api\views_api.py:246 .\api\views_front.py:207 .\api\views_front.py:226 +#: .\api\views_api.py:247 .\api\views_front.py:207 .\api\views_front.py:226 msgid "在线" msgstr "Online" -#: .\api\views_api.py:252 +#: .\api\views_api.py:308 msgid "好的" msgstr "Okay" @@ -435,12 +527,15 @@ msgstr "The parameter received by model_to_dict must be a model object" #: .\api\views_front.py:55 #, python-brace-format msgid "model_to_dict,要替换成{replace_field}字段已经存在了" -msgstr "model_to_dict, the field to be replaced with {replace_field} already exists" +msgstr "" +"model_to_dict, the field to be replaced with {replace_field} already exists" #: .\api\views_front.py:60 #, python-brace-format msgid "model_to_dict,要新增默认值,但字段{default_key}已经存在了" -msgstr "model_to_dict, to add default values, but the field {default_key} already exists" +msgstr "" +"model_to_dict, to add default values, but the field {default_key} already " +"exists" #: .\api\views_front.py:134 msgid "出了点问题,未获取用户名或密码。" @@ -460,7 +555,9 @@ msgstr "Username must be at least 3 characters" #: .\api\views_front.py:165 msgid "密码长度不符合要求, 应在8~20位。" -msgstr "Password length does not meet requirements, should be between 8~20 characters." +msgstr "" +"Password length does not meet requirements, should be between 8~20 " +"characters." #: .\api\views_front.py:171 msgid "用户名已存在。" @@ -485,3 +582,11 @@ msgstr "Device Information Table" #: .\api\views_front.py:351 msgid "数据为空。" msgstr "Data is empty." + +#: .\api\views_front.py:373 .\api\views_front.py:378 .\api\views_front.py:409 +#: .\api\views_front.py:414 +msgid "UNKNOWN" +msgstr "" + +#~ msgid "未知" +#~ msgstr "UNKNOWN" diff --git a/rustdesk_server_api/settings.py b/rustdesk_server_api/settings.py index 86ccce6..e65d4b6 100644 --- a/rustdesk_server_api/settings.py +++ b/rustdesk_server_api/settings.py @@ -44,6 +44,7 @@ #==========数据库配置 结束===================== LANGUAGE_CODE = os.environ.get("LANGUAGE_CODE", 'zh-hans') +##LANGUAGE_CODE = os.environ.get("LANGUAGE_CODE", 'en') # Application definition
    {{ "File" | translate }}{{ "Remote ID" | translate }}{{ "Remote Alias" | translate }}{{ "User ID" | translate }}{{ "User Alias" | translate }}{{ "User IP" | translate }}{{ "Filesize" | translate }}{{ "Sent/Received" | translate }}{{ "Logged At" | translate }}{{ "文件" | translate }}{{ "远程ID" | translate }}{{ "远程别名" | translate }}{{ "用户ID" | translate }}{{ "用户别名" | translate }}{{ "用户IP" | translate }}{{ "文件大小" | translate }}{{ "发送/接受" | translate }}{{ "记录于" | translate }}