fixed localization and made minor bug fixes
This commit is contained in:
@@ -335,7 +335,7 @@ pub fn create_window(is_show: bool) -> bool {
|
|||||||
"main", /* the unique window label */
|
"main", /* the unique window label */
|
||||||
tauri::WebviewUrl::App("index.html".into()),
|
tauri::WebviewUrl::App("index.html".into()),
|
||||||
)
|
)
|
||||||
.title("Clash Verge")
|
.title("Clash Verge Rev Lite")
|
||||||
.center()
|
.center()
|
||||||
.decorations(true)
|
.decorations(true)
|
||||||
.fullscreen(false)
|
.fullscreen(false)
|
||||||
|
|||||||
@@ -248,9 +248,9 @@ export const ProxySelectors: React.FC = () => {
|
|||||||
</span>
|
</span>
|
||||||
</TooltipTrigger>
|
</TooltipTrigger>
|
||||||
<TooltipContent>
|
<TooltipContent>
|
||||||
{sortType === 'default' && <p>{t("Default")}</p>}
|
{sortType === 'default' && <p>{t("Sort by default")}</p>}
|
||||||
{sortType === 'delay' && <p>{t("sort by ping")}</p>}
|
{sortType === 'delay' && <p>{t("Sort by delay")}</p>}
|
||||||
{sortType === 'name' && <p>{t("sort by name")}</p>}
|
{sortType === 'name' && <p>{t("Sort by name")}</p>}
|
||||||
</TooltipContent>
|
</TooltipContent>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ const LetterItem = memo(
|
|||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
<div
|
<div
|
||||||
className="flex items-center justify-center w-6 h-6 text-xs rounded-md cursor-pointer text-muted-foreground transition-transform hover:bg-accent hover:text-accent-foreground hover:scale-125"
|
className="flex items-center justify-center w-6 h-6 text-xs rounded-md border shadow-sm cursor-pointer text-muted-foreground transition-transform hover:bg-accent hover:text-accent-foreground hover:scale-125"
|
||||||
onClick={() => onClick(name)}
|
onClick={() => onClick(name)}
|
||||||
>
|
>
|
||||||
{getFirstChar(name)}
|
{getFirstChar(name)}
|
||||||
@@ -240,7 +240,6 @@ export const ProxyGroups = memo((props: Props) => {
|
|||||||
error,
|
error,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
onProxies();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const handleLocation = (group: IProxyGroupItem) => {
|
const handleLocation = (group: IProxyGroupItem) => {
|
||||||
|
|||||||
@@ -130,7 +130,6 @@ export const ProxyHead = (props: Props) => {
|
|||||||
</TooltipContent>
|
</TooltipContent>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
||||||
{/* --- НАЧАЛО ИЗМЕНЕНИЙ --- */}
|
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
<Button
|
<Button
|
||||||
@@ -139,7 +138,6 @@ export const ProxyHead = (props: Props) => {
|
|||||||
onClick={() => onHeadState({ showType: !showType })}
|
onClick={() => onHeadState({ showType: !showType })}
|
||||||
className="h-8 w-8"
|
className="h-8 w-8"
|
||||||
>
|
>
|
||||||
{/* Теперь цвет иконки меняется в зависимости от состояния showType */}
|
|
||||||
<Eye className={cn("h-5 w-5", showType && "text-primary")} />
|
<Eye className={cn("h-5 w-5", showType && "text-primary")} />
|
||||||
</Button>
|
</Button>
|
||||||
</TooltipTrigger>
|
</TooltipTrigger>
|
||||||
@@ -147,7 +145,6 @@ export const ProxyHead = (props: Props) => {
|
|||||||
<p>{showType ? t("Show Basic Info") : t("Show Detailed Info")}</p>
|
<p>{showType ? t("Show Basic Info") : t("Show Detailed Info")}</p>
|
||||||
</TooltipContent>
|
</TooltipContent>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
{/* --- КОНЕЦ ИЗМЕНЕНИЙ --- */}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex items-center gap-1">
|
<div className="flex items-center gap-1">
|
||||||
|
|||||||
@@ -60,8 +60,6 @@ export const ProxyItemMini = (props: Props) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
// --- НАЧАЛО ИЗМЕНЕНИЙ ---
|
|
||||||
// Увеличиваем высоту (h-16) и внутренние отступы (p-3)
|
|
||||||
<div
|
<div
|
||||||
data-selected={selected}
|
data-selected={selected}
|
||||||
onClick={handleItemClick}
|
onClick={handleItemClick}
|
||||||
@@ -78,19 +76,13 @@ export const ProxyItemMini = (props: Props) => {
|
|||||||
{proxy.now}
|
{proxy.now}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
{!!proxy.provider && (
|
{!!proxy.provider && (<Badge variant="outline" className="flex-shrink-0">{proxy.provider}</Badge>)}
|
||||||
<Badge variant="outline" className="flex-shrink-0">
|
<Badge variant="outline" className="flex-shrink-0">{proxy.type}</Badge>
|
||||||
{proxy.provider}
|
{proxy.udp && (<Badge variant="outline" className="flex-shrink-0">UDP</Badge>)}
|
||||||
</Badge>
|
{proxy.xudp && <Badge variant="outline" className="flex-shrink-0">XUDP</Badge>}
|
||||||
)}
|
{proxy.tfo && <Badge variant="outline" className="flex-shrink-0">TFO</Badge>}
|
||||||
<Badge variant="outline" className="flex-shrink-0">
|
{proxy.mptcp && <Badge variant="outline" className="flex-shrink-0">MPTCP</Badge>}
|
||||||
{proxy.type}
|
{proxy.smux && <Badge variant="outline" className="flex-shrink-0">SMUX</Badge>}
|
||||||
</Badge>
|
|
||||||
{proxy.udp && (
|
|
||||||
<Badge variant="outline" className="flex-shrink-0">
|
|
||||||
UDP
|
|
||||||
</Badge>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ export const ProxyItem = (props: Props) => {
|
|||||||
onClick={handleDelayClick}
|
onClick={handleDelayClick}
|
||||||
className={`font-medium ${getDelayColorClass(delay)} ${!proxy.provider ? "hover:opacity-70" : "cursor-default"}`}
|
className={`font-medium ${getDelayColorClass(delay)} ${!proxy.provider ? "hover:opacity-70" : "cursor-default"}`}
|
||||||
>
|
>
|
||||||
{delayManager.formatDelay(delay, timeout)} ms
|
{delayManager.formatDelay(delay, timeout)}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
// Состояние по умолчанию (до проверки)
|
// Состояние по умолчанию (до проверки)
|
||||||
|
|||||||
@@ -645,7 +645,10 @@
|
|||||||
"Add New Profile": "Add New Profile",
|
"Add New Profile": "Add New Profile",
|
||||||
"Delete Profile": "Delete Profile {{name}}?",
|
"Delete Profile": "Delete Profile {{name}}?",
|
||||||
"This action cannot be undone.": "This action cannot be undone.",
|
"This action cannot be undone.": "This action cannot be undone.",
|
||||||
"Default": "Default",
|
"Check Group Latency": "Check Group Latency",
|
||||||
"sort by ping": "Sort by ping",
|
"Locate Current Proxy": "Locate Current Proxy",
|
||||||
"sort by name": "Sort by name"
|
"Show Basic Info": "Show Basic Info",
|
||||||
|
"Show Detailed Info": "Show Detailed Info",
|
||||||
|
"Set Latency Test URL": "Set Latency Test URL",
|
||||||
|
"Filter by Name": "Filter by Name"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -595,7 +595,14 @@
|
|||||||
"Delete Profile": "Удалить профиль {{name}}?",
|
"Delete Profile": "Удалить профиль {{name}}?",
|
||||||
"This action cannot be undone.": "Это действие не может быть отменено",
|
"This action cannot be undone.": "Это действие не может быть отменено",
|
||||||
"Update via proxy": "Обновить через прокси",
|
"Update via proxy": "Обновить через прокси",
|
||||||
"Default": "По умолчанию",
|
"Check Group Latency": "Проверка задержки в группе",
|
||||||
"sort by ping": "Сортировка по пингу",
|
"Locate Current Proxy": "Найти текущий прокси",
|
||||||
"sort by name": "Сортировка по имени"
|
"Show Basic Info": "Показать основную информацию",
|
||||||
|
"Show Detailed Info": "Показать подробную информацию",
|
||||||
|
"Update failed, retrying with Clash proxy...": "Обновление не удалось, пробую повторно с помощью прокси Clash...",
|
||||||
|
"Update failed even with Clash proxy": "Обновление не удалось даже с помощью прокси Clash",
|
||||||
|
"Update with Clash proxy successfully": "Обновление с помощью прокси Clash прошло успешно",
|
||||||
|
"Proxy Count": "Число прокси",
|
||||||
|
"Set Latency Test URL": "Установить URL-адрес тестирования задержки",
|
||||||
|
"Filter by Name": "Фильтр по имени"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user