From 0aee64ca400e22842247c5329c1e4500e8c9ebec Mon Sep 17 00:00:00 2001
From: samunohito <46447427+samunohito@users.noreply.github.com>
Date: Tue, 27 Feb 2024 08:20:04 +0900
Subject: [PATCH] i18n
---
locales/index.d.ts | 224 ++++++++++++++++++
locales/ja-JP.yml | 63 +++++
.../src/components/MkRoleSelectDialog.vue | 2 +-
.../src/components/grid/cell-validators.ts | 9 +-
.../custom-emojis-manager.local.list.vue | 72 +++---
.../custom-emojis-manager.local.register.vue | 44 ++--
.../admin/custom-emojis-manager.local.vue | 5 +-
.../admin/custom-emojis-manager.logs.vue | 11 +-
.../admin/custom-emojis-manager.remote.vue | 31 ++-
packages/frontend/src/scripts/file-drop.ts | 2 +-
10 files changed, 379 insertions(+), 84 deletions(-)
diff --git a/locales/index.d.ts b/locales/index.d.ts
index 1a2565b06a..9558e3f0f0 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -36,6 +36,10 @@ export interface Locale extends ILocale {
* 検索
*/
"search": string;
+ /**
+ * リセット
+ */
+ "reset": string;
/**
* 通知
*/
@@ -9732,6 +9736,226 @@ export interface Locale extends ILocale {
*/
"header": string;
};
+ "_gridComponent": {
+ "_error": {
+ /**
+ * この値は必須項目です
+ */
+ "requiredValue": string;
+ /**
+ * 正規表現によるバリデーションはtype:textのカラムのみサポートします。
+ */
+ "columnTypeNotSupport": string;
+ /**
+ * この値は{pattern}のパターンに一致しません
+ */
+ "patternNotMatch": ParameterizedString<"pattern">;
+ /**
+ * この値は一意である必要があります
+ */
+ "notUnique": string;
+ };
+ };
+ "_roleSelectDialog": {
+ /**
+ * 選択されていません
+ */
+ "notSelected": string;
+ };
+ "_customEmojisManager": {
+ "_gridCommon": {
+ /**
+ * 選択行をコピー
+ */
+ "copySelectionRows": string;
+ /**
+ * 選択範囲をコピー
+ */
+ "copySelectionRanges": string;
+ /**
+ * 選択行を削除
+ */
+ "deleteSelectionRows": string;
+ /**
+ * 選択範囲の行を削除
+ */
+ "deleteSelectionRanges": string;
+ /**
+ * 検索設定
+ */
+ "searchSettings": string;
+ /**
+ * 検索条件を詳細に設定します。
+ */
+ "searchSettingCaption": string;
+ /**
+ * 並び順
+ */
+ "sortOrder": string;
+ /**
+ * 登録ログ
+ */
+ "registrationLogs": string;
+ /**
+ * 絵文字更新・削除時のログが表示されます。更新・削除操作を行ったり、ページを遷移・リロードすると消えます。
+ */
+ "registrationLogsCaption": string;
+ /**
+ * エラー
+ */
+ "alertEmojisRegisterFailedTitle": string;
+ /**
+ * 絵文字の更新・削除に失敗しました。詳細は登録ログをご確認ください。
+ */
+ "alertEmojisRegisterFailedDescription": string;
+ };
+ "_logs": {
+ /**
+ * 成功ログを表示
+ */
+ "showSuccessLogSwitch": string;
+ /**
+ * 失敗ログはありません。
+ */
+ "failureLogNothing": string;
+ /**
+ * ログはありません。
+ */
+ "logNothing": string;
+ };
+ "_remote": {
+ /**
+ * 選択行をインポート
+ */
+ "importSelectionRows": string;
+ /**
+ * 選択範囲の行をインポート
+ */
+ "importSelectionRangesRows": string;
+ /**
+ * チェックがついた絵文字をインポート
+ */
+ "importEmojisButton": string;
+ /**
+ * 絵文字のインポート
+ */
+ "confirmImportEmojisTitle": string;
+ /**
+ * リモートから受信した{count}個の絵文字のインポートを行います。絵文字のライセンスに十分な注意を払ってください。実行しますか?
+ */
+ "confirmImportEmojisDescription": ParameterizedString<"count">;
+ };
+ "_local": {
+ /**
+ * 登録済み絵文字一覧
+ */
+ "tabTitleList": string;
+ /**
+ * 絵文字の登録
+ */
+ "tabTitleRegister": string;
+ "_list": {
+ /**
+ * 登録された絵文字はありません。
+ */
+ "emojisNothing": string;
+ /**
+ * 選択行を削除対象にする
+ */
+ "markAsDeleteTargetRows": string;
+ /**
+ * 選択範囲の行を削除対象にする
+ */
+ "markAsDeleteTargetRanges": string;
+ /**
+ * 変更された絵文字はありません。
+ */
+ "alertUpdateEmojisNothingDescription": string;
+ /**
+ * 削除対象の絵文字はありません。
+ */
+ "alertDeleteEmojisNothingDescription": string;
+ /**
+ * 確認
+ */
+ "confirmUpdateEmojisTitle": string;
+ /**
+ * {count}個の絵文字を更新します。実行しますか?
+ */
+ "confirmUpdateEmojisDescription": ParameterizedString<"count">;
+ /**
+ * 確認
+ */
+ "confirmDeleteEmojisTitle": string;
+ /**
+ * チェックがつけられた{count}個の絵文字を削除します。実行しますか?
+ */
+ "confirmDeleteEmojisDescription": ParameterizedString<"count">;
+ /**
+ * 絵文字に設定されたロールで検索
+ */
+ "dialogSelectRoleTitle": string;
+ };
+ "_register": {
+ /**
+ * アップロード設定
+ */
+ "uploadSettingTitle": string;
+ /**
+ * この画面で絵文字アップロードを行う際の動作を設定できます。
+ */
+ "uploadSettingDescription": string;
+ /**
+ * ディレクトリ名を"category"に入力する
+ */
+ "directoryToCategoryLabel": string;
+ /**
+ * ディレクトリをドラッグ・ドロップした時に、ディレクトリ名を"category"に入力します。
+ */
+ "directoryToCategoryCaption": string;
+ /**
+ * いずれかの方法で登録する絵文字を選択してください。
+ */
+ "emojiInputAreaCaption": string;
+ /**
+ * この枠に画像ファイルまたはディレクトリをドラッグ&ドロップ
+ */
+ "emojiInputAreaList1": string;
+ /**
+ * このリンクをクリックしてPCから選択する
+ */
+ "emojiInputAreaList2": string;
+ /**
+ * このリンクをクリックしてドライブから選択する
+ */
+ "emojiInputAreaList3": string;
+ /**
+ * 確認
+ */
+ "confirmRegisterEmojisTitle": string;
+ /**
+ * リストに表示されている絵文字を新たなカスタム絵文字として登録します。よろしいですか?(負荷を避けるため、一度の操作で登録可能な絵文字は{count}件までです)
+ */
+ "confirmRegisterEmojisDescription": ParameterizedString<"count">;
+ /**
+ * 確認
+ */
+ "confirmClearEmojisTitle": string;
+ /**
+ * 編集内容を破棄し、リストに表示されている絵文字をクリアします。よろしいですか?
+ */
+ "confirmClearEmojisDescription": string;
+ /**
+ * 確認
+ */
+ "confirmUploadEmojisTitle": string;
+ /**
+ * ドラッグ&ドロップされた{count}個のファイルをドライブにアップロードします。実行しますか?
+ */
+ "confirmUploadEmojisDescription": ParameterizedString<"count">;
+ };
+ };
+ };
}
declare const locales: {
[lang: string]: Locale;
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 61c61b8f96..ce83e0e020 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -5,6 +5,7 @@ introMisskey: "ようこそ!Misskeyは、オープンソースの分散型マ
poweredByMisskeyDescription: "{name}は、オープンソースのプラットフォームMisskeyのサーバーのひとつです。"
monthAndDay: "{month}月 {day}日"
search: "検索"
+reset: "リセット"
notifications: "通知"
username: "ユーザー名"
password: "パスワード"
@@ -2593,3 +2594,65 @@ _offlineScreen:
title: "オフライン - サーバーに接続できません"
header: "サーバーに接続できません"
+_gridComponent:
+ _error:
+ requiredValue: "この値は必須項目です"
+ columnTypeNotSupport: "正規表現によるバリデーションはtype:textのカラムのみサポートします。"
+ patternNotMatch: "この値は{pattern}のパターンに一致しません"
+ notUnique: "この値は一意である必要があります"
+
+_roleSelectDialog:
+ notSelected: "選択されていません"
+
+_customEmojisManager:
+ _gridCommon:
+ copySelectionRows: "選択行をコピー"
+ copySelectionRanges: "選択範囲をコピー"
+ deleteSelectionRows: "選択行を削除"
+ deleteSelectionRanges: "選択範囲の行を削除"
+ searchSettings: "検索設定"
+ searchSettingCaption: "検索条件を詳細に設定します。"
+ sortOrder: "並び順"
+ registrationLogs: "登録ログ"
+ registrationLogsCaption: "絵文字更新・削除時のログが表示されます。更新・削除操作を行ったり、ページを遷移・リロードすると消えます。"
+ alertEmojisRegisterFailedTitle: "エラー"
+ alertEmojisRegisterFailedDescription: "絵文字の更新・削除に失敗しました。詳細は登録ログをご確認ください。"
+ _logs:
+ showSuccessLogSwitch: "成功ログを表示"
+ failureLogNothing: "失敗ログはありません。"
+ logNothing: "ログはありません。"
+ _remote:
+ importSelectionRows: "選択行をインポート"
+ importSelectionRangesRows: "選択範囲の行をインポート"
+ importEmojisButton: "チェックがついた絵文字をインポート"
+ confirmImportEmojisTitle: "絵文字のインポート"
+ confirmImportEmojisDescription: "リモートから受信した{count}個の絵文字のインポートを行います。絵文字のライセンスに十分な注意を払ってください。実行しますか?"
+ _local:
+ tabTitleList: "登録済み絵文字一覧"
+ tabTitleRegister: "絵文字の登録"
+ _list:
+ emojisNothing: "登録された絵文字はありません。"
+ markAsDeleteTargetRows: "選択行を削除対象にする"
+ markAsDeleteTargetRanges: "選択範囲の行を削除対象にする"
+ alertUpdateEmojisNothingDescription: "変更された絵文字はありません。"
+ alertDeleteEmojisNothingDescription: "削除対象の絵文字はありません。"
+ confirmUpdateEmojisTitle: "確認"
+ confirmUpdateEmojisDescription: "{count}個の絵文字を更新します。実行しますか?"
+ confirmDeleteEmojisTitle: "確認"
+ confirmDeleteEmojisDescription: "チェックがつけられた{count}個の絵文字を削除します。実行しますか?"
+ dialogSelectRoleTitle: "絵文字に設定されたロールで検索"
+ _register:
+ uploadSettingTitle: "アップロード設定"
+ uploadSettingDescription: "この画面で絵文字アップロードを行う際の動作を設定できます。"
+ directoryToCategoryLabel: "ディレクトリ名を\"category\"に入力する"
+ directoryToCategoryCaption: "ディレクトリをドラッグ・ドロップした時に、ディレクトリ名を\"category\"に入力します。"
+ emojiInputAreaCaption: "いずれかの方法で登録する絵文字を選択してください。"
+ emojiInputAreaList1: "この枠に画像ファイルまたはディレクトリをドラッグ&ドロップ"
+ emojiInputAreaList2: "このリンクをクリックしてPCから選択する"
+ emojiInputAreaList3: "このリンクをクリックしてドライブから選択する"
+ confirmRegisterEmojisTitle: "確認"
+ confirmRegisterEmojisDescription: "リストに表示されている絵文字を新たなカスタム絵文字として登録します。よろしいですか?(負荷を避けるため、一度の操作で登録可能な絵文字は{count}件までです)"
+ confirmClearEmojisTitle: "確認"
+ confirmClearEmojisDescription: "編集内容を破棄し、リストに表示されている絵文字をクリアします。よろしいですか?"
+ confirmUploadEmojisTitle: "確認"
+ confirmUploadEmojisDescription: "ドラッグ&ドロップされた{count}個のファイルをドライブにアップロードします。実行しますか?"
diff --git a/packages/frontend/src/components/MkRoleSelectDialog.vue b/packages/frontend/src/components/MkRoleSelectDialog.vue
index a787b89983..b5fffe1964 100644
--- a/packages/frontend/src/components/MkRoleSelectDialog.vue
+++ b/packages/frontend/src/components/MkRoleSelectDialog.vue
@@ -24,7 +24,7 @@
- 何も選択されていません
+ {{ i18n.ts._roleSelectDialog.notSelected }}
{{ infoMessage }}
diff --git a/packages/frontend/src/components/grid/cell-validators.ts b/packages/frontend/src/components/grid/cell-validators.ts
index bccc923da1..d6d01a5513 100644
--- a/packages/frontend/src/components/grid/cell-validators.ts
+++ b/packages/frontend/src/components/grid/cell-validators.ts
@@ -1,6 +1,7 @@
import { CellValue, GridCell } from '@/components/grid/cell.js';
import { GridColumn } from '@/components/grid/column.js';
import { GridRow } from '@/components/grid/row.js';
+import { i18n } from '@/i18n.js';
export type ValidatorParams = {
column: GridColumn;
@@ -66,7 +67,7 @@ class ValidatorPreset {
validate: ({ value }): ValidatorResult => {
return {
valid: value !== null && value !== undefined && value !== '',
- message: 'This field is required.',
+ message: i18n.ts._gridComponent._error.requiredValue,
};
},
};
@@ -79,13 +80,13 @@ class ValidatorPreset {
if (column.setting.type !== 'text') {
return {
valid: false,
- message: 'Regex validation is only available for text type.',
+ message: i18n.ts._gridComponent._error.columnTypeNotSupport,
};
}
return {
valid: pattern.test(value?.toString() ?? ''),
- message: 'Not an allowed format. Please check the input. (Allowed format: ' + pattern.source + ')',
+ message: i18n.tsx._gridComponent._error.patternNotMatch({ pattern: pattern.source }),
};
},
};
@@ -101,7 +102,7 @@ class ValidatorPreset {
.every(cell => cell.value !== value);
return {
valid: isUnique,
- message: 'This value is already used.',
+ message: i18n.ts._gridComponent._error.notUnique,
};
},
};
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue
index a63c4d5252..d79d582f76 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue
@@ -1,14 +1,14 @@
- 登録された絵文字はありません。
+ {{ i18n.ts._customEmojisManager._local._list.emojisNothing }}
- 検索設定
+ {{ i18n.ts._customEmojisManager._gridCommon.searchSettings }}
- 検索条件を詳細に設定します。
+ {{ i18n.ts._customEmojisManager._gridCommon.searchSettingCaption }}
@@ -120,7 +120,7 @@
- ソート順
+ {{ i18n.ts._customEmojisManager._gridCommon.sortOrder }}
- リセット
+ {{ i18n.ts.reset }}
@@ -152,9 +152,9 @@
- 登録ログ
+ {{ i18n.ts._customEmojisManager._gridCommon.registrationLogs }}
- 絵文字更新・削除時のログが表示されます。更新・削除操作を行ったり、ページをリロードすると消えます。
+ {{ i18n.ts._customEmojisManager._gridCommon.registrationLogsCaption }}
@@ -174,7 +174,7 @@
i18n.ts.update
}}
- リセット
+ {{ i18n.ts.reset }}
@@ -272,13 +272,13 @@ function setupGrid(): GridSetting {
return [
{
type: 'button',
- text: '選択行をコピー',
+ text: i18n.ts._customEmojisManager._gridCommon.copySelectionRows,
icon: 'ti ti-copy',
action: () => copyGridDataToClipboard(gridItems, context),
},
{
type: 'button',
- text: '選択行を削除対象とする',
+ text: i18n.ts._customEmojisManager._local._list.markAsDeleteTargetRows,
icon: 'ti ti-trash',
action: () => {
for (const rangedRow of context.rangedRows) {
@@ -362,7 +362,7 @@ function setupGrid(): GridSetting {
return [
{
type: 'button',
- text: '選択範囲をコピー',
+ text: i18n.ts._customEmojisManager._gridCommon.copySelectionRanges,
icon: 'ti ti-copy',
action: () => {
return copyGridDataToClipboard(gridItems, context);
@@ -370,7 +370,7 @@ function setupGrid(): GridSetting {
},
{
type: 'button',
- text: '選択範囲を削除',
+ text: i18n.ts._customEmojisManager._gridCommon.deleteSelectionRanges,
icon: 'ti ti-trash',
action: () => {
removeDataFromGrid(context, (cell) => {
@@ -380,7 +380,7 @@ function setupGrid(): GridSetting {
},
{
type: 'button',
- text: '選択行を削除対象とする',
+ text: i18n.ts._customEmojisManager._local._list.markAsDeleteTargetRanges,
icon: 'ti ti-trash',
action: () => {
for (const rowIdx of [...new Set(context.rangedCells.map(it => it.row.index)).values()]) {
@@ -426,24 +426,24 @@ async function onUpdateButtonClicked() {
throw new Error('The number of items has been changed. Please refresh the page and try again.');
}
- const confirm = await os.confirm({
- type: 'info',
- title: '確認',
- text: '絵文字の変更を保存します。よろしいですか?',
- });
- if (confirm.canceled) {
- return;
- }
-
const updatedItems = _items.filter((it, idx) => !it.checked && JSON.stringify(it) !== JSON.stringify(_originItems[idx]));
if (updatedItems.length === 0) {
await os.alert({
type: 'info',
- text: '変更された絵文字はありません。',
+ text: i18n.ts._customEmojisManager._local._list.alertUpdateEmojisNothingDescription,
});
return;
}
+ const confirm = await os.confirm({
+ type: 'info',
+ title: i18n.ts._customEmojisManager._local._list.confirmUpdateEmojisTitle,
+ text: i18n.tsx._customEmojisManager._local._list.confirmUpdateEmojisDescription({ count: updatedItems.length }),
+ });
+ if (confirm.canceled) {
+ return;
+ }
+
const action = () => {
return updatedItems.map(item =>
misskeyApi(
@@ -471,8 +471,8 @@ async function onUpdateButtonClicked() {
if (failedItems.length > 0) {
await os.alert({
type: 'error',
- title: 'エラー',
- text: '絵文字の更新・削除に失敗しました。詳細は登録ログをご確認ください。',
+ title: i18n.ts._customEmojisManager._gridCommon.alertEmojisRegisterFailedTitle,
+ text: i18n.ts._customEmojisManager._gridCommon.alertEmojisRegisterFailedDescription,
});
}
@@ -493,24 +493,24 @@ async function onDeleteButtonClicked() {
throw new Error('The number of items has been changed. Please refresh the page and try again.');
}
- const confirm = await os.confirm({
- type: 'info',
- title: '確認',
- text: 'チェックをつけられた絵文字を削除します。よろしいですか?',
- });
- if (confirm.canceled) {
- return;
- }
-
const deleteItems = _items.filter((it) => it.checked);
if (deleteItems.length === 0) {
await os.alert({
type: 'info',
- text: '削除対象の絵文字はありません。',
+ text: i18n.ts._customEmojisManager._local._list.alertDeleteEmojisNothingDescription,
});
return;
}
+ const confirm = await os.confirm({
+ type: 'info',
+ title: i18n.ts._customEmojisManager._local._list.confirmDeleteEmojisTitle,
+ text: i18n.tsx._customEmojisManager._local._list.confirmDeleteEmojisDescription({ count: deleteItems.length }),
+ });
+ if (confirm.canceled) {
+ return;
+ }
+
async function action() {
const deleteIds = deleteItems.map(it => it.id!);
await misskeyApi('admin/emoji/delete-bulk', { ids: deleteIds });
@@ -528,7 +528,7 @@ function onGridResetButtonClicked() {
async function onQueryRolesEditClicked() {
const result = await os.selectRole({
initialRoleIds: queryRoles.value.map(it => it.id),
- title: '絵文字に設定されたロールで検索',
+ title: i18n.ts._customEmojisManager._local._list.dialogSelectRoleTitle,
publicOnly: true,
});
if (result.canceled) {
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue
index 62173dddc5..135b16ef41 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue
@@ -2,8 +2,8 @@
- アップロード設定
- この画面で絵文字アップロードを行う際の動作を設定できます。
+ {{ i18n.ts._customEmojisManager._local._register.uploadSettingTitle }}
+ {{ i18n.ts._customEmojisManager._local._register.uploadSettingDescription }}
@@ -19,17 +19,17 @@
- ディレクトリ名を"category"に入力する
- ディレクトリをドラッグ・ドロップした時に、ディレクトリ名を"category"に入力します。
+ {{ i18n.ts._customEmojisManager._local._register.directoryToCategoryLabel }}
+ {{ i18n.ts._customEmojisManager._local._register.directoryToCategoryCaption }}
- 登録ログ
+ {{ i18n.ts._customEmojisManager._gridCommon.registrationLogs }}
- 絵文字登録時のログが表示されます。登録操作を行ったり、ページをリロードすると消えます。
+ {{ i18n.ts._customEmojisManager._gridCommon.registrationLogsCaption }}
@@ -42,12 +42,12 @@
@drop.prevent.stop="onDrop"
>
- いずれかの方法で登録する絵文字を選択してください。
+ {{ i18n.ts._customEmojisManager._local._register.emojiInputAreaCaption }}
@@ -146,13 +146,13 @@ function setupGrid(): GridSetting {
return [
{
type: 'button',
- text: '選択行をコピー',
+ text: i18n.ts._customEmojisManager._gridCommon.copySelectionRows,
icon: 'ti ti-copy',
action: () => copyGridDataToClipboard(gridItems, context),
},
{
type: 'button',
- text: '選択行を削除',
+ text: i18n.ts._customEmojisManager._gridCommon.deleteSelectionRows,
icon: 'ti ti-trash',
action: () => removeRows(context.rangedRows),
},
@@ -216,13 +216,13 @@ function setupGrid(): GridSetting {
return [
{
type: 'button',
- text: '選択範囲をコピー',
+ text: i18n.ts._customEmojisManager._gridCommon.copySelectionRanges,
icon: 'ti ti-copy',
action: () => copyGridDataToClipboard(gridItems, context),
},
{
type: 'button',
- text: '選択行を削除',
+ text: i18n.ts._customEmojisManager._gridCommon.deleteSelectionRanges,
icon: 'ti ti-trash',
action: () => removeRows(context.rangedCells.map(it => it.row)),
},
@@ -244,8 +244,8 @@ const isDragOver = ref(false);
async function onRegistryClicked() {
const dialogSelection = await os.confirm({
type: 'info',
- title: '確認',
- text: `リストに表示されている絵文字を新たなカスタム絵文字として登録します。よろしいですか?(負荷を避けるため、一度の操作で登録可能な絵文字は${MAXIMUM_EMOJI_REGISTER_COUNT}件までです)`,
+ title: i18n.ts._customEmojisManager._local._register.confirmRegisterEmojisTitle,
+ text: i18n.tsx._customEmojisManager._local._register.confirmRegisterEmojisDescription({ count: MAXIMUM_EMOJI_REGISTER_COUNT }),
});
if (dialogSelection.canceled) {
@@ -278,8 +278,8 @@ async function onRegistryClicked() {
if (failedItems.length > 0) {
await os.alert({
type: 'error',
- title: 'エラー',
- text: '絵文字の登録に失敗しました。詳細は登録ログをご確認ください。',
+ title: i18n.ts._customEmojisManager._gridCommon.alertEmojisRegisterFailedTitle,
+ text: i18n.ts._customEmojisManager._gridCommon.alertEmojisRegisterFailedDescription,
});
}
@@ -298,8 +298,8 @@ async function onRegistryClicked() {
async function onClearClicked() {
const result = await os.confirm({
type: 'warning',
- title: '確認',
- text: '編集内容を破棄し、リストに表示されている絵文字をクリアします。よろしいですか?',
+ title: i18n.ts._customEmojisManager._local._register.confirmClearEmojisTitle,
+ text: i18n.ts._customEmojisManager._local._register.confirmClearEmojisDescription,
});
if (!result.canceled) {
@@ -313,8 +313,8 @@ async function onDrop(ev: DragEvent) {
const droppedFiles = await extractDroppedItems(ev).then(it => flattenDroppedFiles(it));
const confirm = await os.confirm({
type: 'info',
- title: '確認',
- text: `ドラッグ&ドロップされた${droppedFiles.length}個のファイルをドライブにアップロードします。実行しますか?`,
+ title: i18n.ts._customEmojisManager._local._register.confirmUploadEmojisTitle,
+ text: i18n.tsx._customEmojisManager._local._register.confirmUploadEmojisDescription({ count: droppedFiles.length }),
});
if (confirm.canceled) {
return;
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.vue
index bd5904f55b..3af386a060 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.local.vue
@@ -1,8 +1,8 @@
-
-
+
+
@@ -14,6 +14,7 @@