mirror of https://github.com/jumpserver/jumpserver
perf: update chrome applet to support language setting (#15509)
* perf: update chrome applet to support language setting * perf: fix field name --------- Co-authored-by: Eric <xplzv@126.com>pull/15520/head
parent
5e0babdba8
commit
5c28b15e39
|
@ -1,3 +1,7 @@
|
|||
#2025-05-30 Version 1.2
|
||||
## 功能更新
|
||||
- 新增用户配置的语言支持,默认使用系统当前语言
|
||||
|
||||
#2024-10-24 Version 1.1
|
||||
## 功能优化
|
||||
- 优化快速点击造成页面卡住的问题
|
||||
|
|
|
@ -13,7 +13,7 @@ from code_dialog import CodeDialog, wrapper_progress_bar
|
|||
from common import (Asset, User, Account, Platform, Step)
|
||||
from common import (BaseApplication)
|
||||
from common import (notify_err_message, block_input, unblock_input)
|
||||
|
||||
from common import get_system_language
|
||||
|
||||
class Command(Enum):
|
||||
TYPE = 'type'
|
||||
|
@ -251,6 +251,10 @@ class AppletApplication(BaseApplication):
|
|||
# 加载 extensions
|
||||
extension_paths = load_extensions()
|
||||
self._chrome_options.add_argument('--load-extension={}'.format(','.join(extension_paths)))
|
||||
# 设置语言
|
||||
lang = self.connect_option.lang if self.connect_option.lang else get_system_language()
|
||||
self._chrome_options.add_experimental_option('prefs', {'intl.accept_languages': lang})
|
||||
self._chrome_options.add_argument('--lang={}'.format(lang))
|
||||
|
||||
@wrapper_progress_bar
|
||||
def run(self):
|
||||
|
|
|
@ -80,6 +80,22 @@ def wait_pid(pid):
|
|||
print("pid {} is not alive".format(pid))
|
||||
break
|
||||
|
||||
def get_system_language():
|
||||
"""
|
||||
获取系统默认语言
|
||||
:return: 系统默认语言代码
|
||||
"""
|
||||
try:
|
||||
import ctypes
|
||||
import locale
|
||||
# 获取系统默认的语言ID
|
||||
lang_id = ctypes.windll.kernel32.GetUserDefaultUILanguage()
|
||||
# 转换为语言代码
|
||||
language = locale.windows_locale[lang_id]
|
||||
return language
|
||||
except Exception as e:
|
||||
print(f"获取系统语言失败: {e}")
|
||||
return 'en_US'
|
||||
|
||||
class DictObj(dict):
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
@ -186,6 +202,13 @@ class Platform(DictObj):
|
|||
return item.setting
|
||||
return None
|
||||
|
||||
class ConnectOption(DictObj):
|
||||
lang: str
|
||||
charset: str
|
||||
terminal_theme_name: str
|
||||
disableautohash: bool
|
||||
backspaceAsCtrlH: bool
|
||||
|
||||
|
||||
class Manifest(DictObj):
|
||||
name: str
|
||||
|
@ -234,6 +257,7 @@ class BaseApplication(abc.ABC):
|
|||
self.asset = Asset(kwargs.get('asset', {}))
|
||||
self.account = Account(kwargs.get('account', {}))
|
||||
self.platform = Platform(kwargs.get('platform', {}))
|
||||
self.connect_option = ConnectOption(kwargs.get('connect_options', {}))
|
||||
|
||||
@abc.abstractmethod
|
||||
def run(self):
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
name: chrome
|
||||
display_name: "{{ 'Chrome Browser' | trans }}"
|
||||
version: 1.1
|
||||
version: 1.2
|
||||
comment: "{{ 'Chrome Browser Open URL Page Address' | trans }}"
|
||||
author: JumpServer Team
|
||||
exec_type: python
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
|
||||
- When connecting to a database application, it is necessary to download the driver. You can either install it offline
|
||||
in advance or install the corresponding driver as prompted when connecting.
|
||||
- Due to the implementation mechanism of autofill, the database password used for connection does not support the | character.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
## DBeaver
|
||||
|
||||
- データベースに接続する際には、ドライバをダウンロードする必要があります。事前にオフラインでインストールするか、接続時に表示される指示に従って該当するドライバをインストールしてください。
|
||||
|
||||
- 代入力の実装方式により、接続するデータベースのパスワードで | 記号は使用できません。
|
|
@ -2,3 +2,4 @@
|
|||
|
||||
- 连接数据库应用时,需要下载驱动,可提前离线安装或者连接时按提示安装相应驱动
|
||||
|
||||
- 因代填的实现机制,连接的数据库密码不支持使用 `|` 字符
|
Loading…
Reference in New Issue