From e3b75f2cfb6af9b0f0e50bed90ecea7e9a839d68 Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Sun, 27 Apr 2025 02:15:31 +0900 Subject: [PATCH] [Update] Plugins: Adjust designs. Add localizations. --- locales/en.yml | 14 ++++- locales/ja.yml | 28 ++++++++- .../PluginsControlComponent.jsx | 63 +++++++++++++------ .../switch_box/SwitchBox.module.scss | 1 - .../advanced_settings/plugins/Plugins.jsx | 41 ++++++------ .../plugins/Plugins.module.scss | 39 ++++++++---- 6 files changed, 131 insertions(+), 55 deletions(-) diff --git a/locales/en.yml b/locales/en.yml index cdefbfe5..f72907ac 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -244,7 +244,19 @@ config_page: label: "Open Config File" switch_compute_device: label: "Switch VRCT To CPU/GPU Version" - section_label_plugins: Plugins + section_label_plugins: Plugins # Exception, It'll be moved later. + + plugins: + downloaded_version: "Downloaded version: {{downloaded_version}}" + latest_version: "Latest version: {{latest_version}}" + available_after_updating: "Available after updating to the latest version" + unavailable_downloaded: "Currently unavailable due to incompatibility with the VRCT version in use" + no_latest_info: "Unable to retrieve the latest information" + using_latest_version: "Using the latest version" + available_latest_version: "Latest version available" + unavailable_latest_version: "Latest version currently unavailable" + available_in_latest_vrct_version: "Available in the latest VRCT version" + unavailable_not_downloaded: "Currently unavailable" plugin_notifications: downloading: Downloading the plugin. diff --git a/locales/ja.yml b/locales/ja.yml index e4c40eb5..3d109b8a 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -244,4 +244,30 @@ config_page: label: "設定ファイルを開く" switch_compute_device: label: "VRCT CPU/GPUバージョンの切り替え" - section_label_plugins: プラグイン \ No newline at end of file + section_label_plugins: プラグイン # Exception, It'll be moved later. + + plugins: + downloaded_version: "ダウンロード済バージョン: {{downloaded_version}}" + latest_version: "最新バージョン: {{latest_version}}" + available_after_updating: 最新版にアップデート後 利用可能 + unavailable_downloaded: 現在利用不可 使用中VRCTバージョンとの互換性なし + no_latest_info: 最新情報が取得できません + using_latest_version: 最新版を使用中 + available_latest_version: 最新版を利用可能 + unavailable_latest_version: 最新版は現在利用不可 + available_in_latest_vrct_version: VRCT最新版で利用可能 + unavailable_not_downloaded: 現在利用不可 + +plugin_notifications: + downloading: プラグインをダウンロード中。 + downloaded_success: プラグインのダウンロードが完了しました。 + downloaded_error: プラグインのダウンロードに失敗しました。 + + updating: プラグインをアップデート中。 + updated_success: プラグインのアップデートが完了しました。 + updated_error: プラグインのアップデートに失敗しました。 + + disabled_out_of_support: 現在のバージョンとの互換性がありません。プラグインを無効にしました。 + + is_enabled: プラグインを有効にしました。 + is_disabled: プラグインを無効にしました。 \ No newline at end of file diff --git a/src-ui/app/config_page/setting_section/setting_box/_components/plugins_control_component/PluginsControlComponent.jsx b/src-ui/app/config_page/setting_section/setting_box/_components/plugins_control_component/PluginsControlComponent.jsx index 9c33c90d..c7c6ace0 100644 --- a/src-ui/app/config_page/setting_section/setting_box/_components/plugins_control_component/PluginsControlComponent.jsx +++ b/src-ui/app/config_page/setting_section/setting_box/_components/plugins_control_component/PluginsControlComponent.jsx @@ -2,6 +2,7 @@ import React from "react"; import { SwitchBox } from "../index"; import { _DownloadButton } from "../_atoms/_download_button/_DownloadButton"; import styles from "./PluginsControlComponent.module.scss"; +import { useTranslation } from "react-i18next"; export const PluginsControlComponent = ({ variable_state, @@ -9,6 +10,8 @@ export const PluginsControlComponent = ({ toggleFunction, downloadStartFunction, }) => { + const { t } = useTranslation(); + const option = { id: plugin_status.plugin_id, is_pending: plugin_status.is_pending, @@ -19,6 +22,16 @@ export const PluginsControlComponent = ({ progress: null, }; + const downloaded_version = plugin_status.downloaded_plugin_info?.plugin_version; + const latest_version = plugin_status.latest_plugin_info?.plugin_version; + + const downloaded_version_label = t("config_page.plugins.downloaded_version", + { downloaded_version: downloaded_version } + ); + const latest_version_label = t("config_page.plugins.latest_version", + { latest_version: latest_version } + ); + if (plugin_status.is_downloaded) { return ( ); } else { @@ -34,6 +49,8 @@ export const PluginsControlComponent = ({ option={option} plugin_status={plugin_status} downloadStartFunction={downloadStartFunction} + downloaded_version_label={downloaded_version_label} + latest_version_label={latest_version_label} /> ); } @@ -45,49 +62,51 @@ const DownloadedPluginControl = ({ plugin_status, toggleFunction, downloadStartFunction, + downloaded_version_label, + latest_version_label, }) => { + const { t } = useTranslation(); + const togglePlugin = () => { toggleFunction(plugin_status.plugin_id); }; - const latest_version = plugin_status.latest_plugin_info?.plugin_version; - - if (!plugin_status.downloaded_plugin_info.is_plugin_supported) { if (plugin_status.is_latest_version_available) { return (
-

最新のバージョン: {latest_version}

-

最新版にアップデート後 利用可能

+

{downloaded_version_label}

+

{latest_version_label}

+

{t("config_page.plugins.available_after_updating")}

<_DownloadButton option={option} downloadStartFunction={downloadStartFunction} />
); } return (
-

現在利用不可 使用中VRCTバージョンとの互換性なし

+

{t("config_page.plugins.unavailable_downloaded")}

); } else if (plugin_status.is_outdated) { return (
-

最新情報が取得できません

+

{t("config_page.plugins.no_latest_info")}

); } else if (plugin_status.is_latest_version_already) { return (
-

最新のバージョン: {latest_version}

-

最新版を使用中

+

{latest_version_label}

+

{t("config_page.plugins.using_latest_version")}

); } else if (plugin_status.is_latest_version_available) { return (
-

最新のバージョン: {latest_version}

-

最新版を利用可能

+

{latest_version_label}

+

{t("config_page.plugins.available_latest_version")}

<_DownloadButton option={option} downloadStartFunction={downloadStartFunction} />
@@ -95,7 +114,7 @@ const DownloadedPluginControl = ({ } else { return (
-

最新版は現在利用不可

+

{t("config_page.plugins.available_latest_version")}

); @@ -103,28 +122,34 @@ const DownloadedPluginControl = ({ }; -const NotDownloadedPluginControl = ({ option, plugin_status, downloadStartFunction }) => { - const latest_version = plugin_status.latest_plugin_info?.plugin_version; +const NotDownloadedPluginControl = ({ + option, + plugin_status, + downloadStartFunction, + downloaded_version_label, + latest_version_label, +}) => { + const { t } = useTranslation(); if (plugin_status.is_latest_version_available) { return (
-

最新バージョン: {latest_version}

+

{latest_version_label}

<_DownloadButton option={option} downloadStartFunction={downloadStartFunction} />
); } else if (plugin_status.latest_plugin_info?.is_plugin_supported_latest_vrct) { return (
-

最新のバージョン: {latest_version}

-

VRCT最新版で利用可能

+

{latest_version_label}

+

{t("config_page.plugins.available_in_latest_vrct_version")}

); } else { return (
-

最新バージョン: {latest_version}

-

現在利用不可

+

{latest_version_label}

+

{t("config_page.plugins.unavailable_not_downloaded")}

); } diff --git a/src-ui/app/config_page/setting_section/setting_box/_components/switch_box/SwitchBox.module.scss b/src-ui/app/config_page/setting_section/setting_box/_components/switch_box/SwitchBox.module.scss index 29c26df5..87bf6600 100644 --- a/src-ui/app/config_page/setting_section/setting_box/_components/switch_box/SwitchBox.module.scss +++ b/src-ui/app/config_page/setting_section/setting_box/_components/switch_box/SwitchBox.module.scss @@ -1,7 +1,6 @@ @import "@scss_mixins"; .switchbox_container { - width: 100%; display: flex; justify-content: end; align-items: center; diff --git a/src-ui/app/config_page/setting_section/setting_box/advanced_settings/plugins/Plugins.jsx b/src-ui/app/config_page/setting_section/setting_box/advanced_settings/plugins/Plugins.jsx index 850e83dd..272fff80 100644 --- a/src-ui/app/config_page/setting_section/setting_box/advanced_settings/plugins/Plugins.jsx +++ b/src-ui/app/config_page/setting_section/setting_box/advanced_settings/plugins/Plugins.jsx @@ -61,14 +61,18 @@ const PluginDownloadContainer = () => { const variable_state = currentSavedPluginsStatus.state; + const filtered_plugins_data = currentPluginsData.data.filter(plugin => !plugin.is_outdated) + // plugin_id で ABC 順にソート - const sorted_plugins_data = [...currentPluginsData.data].sort((a, b) => + const sorted_plugins_data = filtered_plugins_data.sort((a, b) => a.plugin_id.localeCompare(b.plugin_id) ); // Duplicate const is_failed_to_fetch = currentFetchedPluginsInfo.state === "error"; const is_fetching = currentFetchedPluginsInfo.state === "pending"; + console.log(sorted_plugins_data); + return (
@@ -88,32 +92,27 @@ const PluginDownloadContainer = () => { return (
-

- {target_locale.title} -

-

{plugin.plugin_id}

-

- {target_locale.desc} -

- {plugin.is_error ? ( -

Error: {plugin.error_message}

- ) : ( -
-
-

- {plugin.is_downloaded - ? `現在のバージョン: ${plugin.downloaded_plugin_info?.plugin_version}` - : null} -

-
+
+

+ {target_locale.title} +

+

+ {target_locale.desc} +

+ {/*

{plugin.plugin_id}

*/} +
+
+ {plugin.is_error ? ( +

Error: {plugin.error_message}

+ ) : ( -
- )} + )} +
); })} diff --git a/src-ui/app/config_page/setting_section/setting_box/advanced_settings/plugins/Plugins.module.scss b/src-ui/app/config_page/setting_section/setting_box/advanced_settings/plugins/Plugins.module.scss index 3320d590..c65a82ec 100644 --- a/src-ui/app/config_page/setting_section/setting_box/advanced_settings/plugins/Plugins.module.scss +++ b/src-ui/app/config_page/setting_section/setting_box/advanced_settings/plugins/Plugins.module.scss @@ -13,30 +13,45 @@ .plugin_wrapper { width: 100%; display: flex; - flex-direction: column; + justify-content: space-between; + align-items: center; padding: 2rem; &:not(:last-child) { border-bottom: 0.1rem solid var(--dark_750_color); } } +.labels_wrapper { + display: flex; + flex-direction: column; + gap: 0.4rem; + max-width: 50%; +} + .plugin_info_wrapper { display: flex; - width: 100%; - justify-content: space-between; + justify-content: end; align-items: center; } .title { font-size: 1.6rem; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } - -.plugin_id { - font-size: 1rem; +.desc { + font-size: 1.4rem; + width: 100%; + overflow: hidden; + color: var(--dark_500_color); } - -.download_button { - background-color: var(--dark_750_color); - padding: 0.4rem 0.6rem; - font-size: 1.2rem; -} \ No newline at end of file +// .plugin_id { +// font-size: 1rem; +// color: var(--dark_600_color); +// width: 100%; +// overflow: hidden; +// white-space: nowrap; +// text-overflow: ellipsis; +// } \ No newline at end of file