diff --git a/locales/en-US.yml b/locales/en-US.yml index ba3e03c9f1..1356d2d11a 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -3170,3 +3170,17 @@ _scheduledNoteDelete: _getQRCode: title: "Scan QR Code" description: "Can scan or share the QR code below." + +_searchSite: + title: "Search Engine" + description: "Change search engine that used in search MFM." + google: "Google" + bing: "Bing" + yahoo: "Yahoo" + baidu: "Baidu" + naver: "NAVER" + duckduckgo: "DuckDuckGo" + other: "Other" + otherDescription: "Use Other search engine" + query: "Query" + queryDescription: "Input query scheme for search engine. For example, If https://www.ecosia.org/search?q=test, input 'q'." diff --git a/locales/index.d.ts b/locales/index.d.ts index f51e33c99e..a0f48de8ed 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -12115,6 +12115,65 @@ export interface Locale extends ILocale { */ "sent": string; }; + "_remoteLookupErrors": { + "_federationNotAllowed": { + /** + * このサーバーとは通信できません + */ + "title": string; + /** + * このサーバーとの通信が無効化されているか、このサーバーをブロックしている・ブロックされている可能性があります。 + * サーバー管理者にお問い合わせください。 + */ + "description": string; + }; + "_uriInvalid": { + /** + * URIが不正です + */ + "title": string; + /** + * 入力されたURIに問題があります。URIに使用できない文字を入力していないか確認してください。 + */ + "description": string; + }; + "_requestFailed": { + /** + * リクエストに失敗しました + */ + "title": string; + /** + * このサーバーとの通信に失敗しました。相手サーバーがダウンしている可能性があります。また、不正なURIや存在しないURIを入力していないか確認してください。 + */ + "description": string; + }; + "_responseInvalid": { + /** + * レスポンスが不正です + */ + "title": string; + /** + * このサーバーと通信することはできましたが、得られたデータが不正なものでした。 + */ + "description": string; + }; + "_responseInvalidIdHostNotMatch": { + /** + * 入力されたURIのドメインと最終的に得られたURIのドメインとが異なります。第三者のサーバーを介してリモートのコンテンツを照会している場合は、発信元のサーバーで取得できるURIを使用して照会し直してください。 + */ + "description": string; + }; + "_noSuchObject": { + /** + * 見つかりません + */ + "title": string; + /** + * 要求されたリソースは見つかりませんでした。URIをもう一度お確かめください。 + */ + "description": string; + }; + }; "_abuse": { "_resolver": { /** @@ -12303,6 +12362,60 @@ export interface Locale extends ILocale { */ "description": string; }; + "_searchSite": { + /** + * 検索エンジン + */ + "title": string; + /** + * MFMの検索構文で検索できるサイトを変更します。 + */ + "description": string; + /** + * Google + */ + "google": string; + /** + * Bing + */ + "bing": string; + /** + * Yahoo + */ + "yahoo": string; + /** + * Baidu + */ + "baidu": string; + /** + * NAVER + */ + "naver": string; + /** + * DuckDuckGo + */ + "duckduckgo": string; + /** + * その他 + */ + "other": string; + /** + * その他の検索エンジン + */ + "otherSearchEngine": string; + /** + * その他の検索エンジンを使用します。 + */ + "otherDescription": string; + /** + * 検索クエリ + */ + "query": string; + /** + * 検索エンジンが使用するクエリを入力します。(例: https://www.ecosia.org/search?q=test の場合qを入れる) + */ + "queryDescription": string; + }; } declare const locales: { [lang: string]: Locale; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 0b743e50e5..4366cca5ad 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -3297,3 +3297,18 @@ _scheduledNoteDelete: _getQRCode: title: "QRコードをスキャンする" description: "以下のQRコードをスキャンまたは共有できます。" + +_searchSite: + title: "検索エンジン" + description: "MFMの検索構文で検索できるサイトを変更します。" + google: "Google" + bing: "Bing" + yahoo: "Yahoo" + baidu: "Baidu" + naver: "NAVER" + duckduckgo: "DuckDuckGo" + other: "その他" + otherSearchEngine: "その他の検索エンジン" + otherDescription: "その他の検索エンジンを使用します。" + query: "検索クエリ" + queryDescription: "検索エンジンが使用するクエリを入力します。(例: https://www.ecosia.org/search?q=test の場合qを入れる)" diff --git a/packages/frontend/src/components/MkGoogle.vue b/packages/frontend/src/components/MkGoogle.vue index da7bcde4d8..232fba3bc6 100644 --- a/packages/frontend/src/components/MkGoogle.vue +++ b/packages/frontend/src/components/MkGoogle.vue @@ -13,6 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only diff --git a/packages/frontend/src/pages/settings/general.vue b/packages/frontend/src/pages/settings/general.vue index e041ce1f09..e9f0fc3d7d 100644 --- a/packages/frontend/src/pages/settings/general.vue +++ b/packages/frontend/src/pages/settings/general.vue @@ -152,6 +152,25 @@ SPDX-License-Identifier: AGPL-3.0-only + + + + + + + + + + + + + + + + + + +
@@ -191,6 +210,7 @@ import { definePageMetadata } from '@/scripts/page-metadata.js'; import { miLocalStorage } from '@/local-storage.js'; import { globalEvents } from '@/events.js'; import { $i } from '@/account.js'; +import MkInput from '@/components/MkInput.vue'; const lang = ref(miLocalStorage.getItem('lang')); const dataSaver = ref(defaultStore.state.dataSaver); @@ -223,6 +243,9 @@ const useAutoTranslate = computed(defaultStore.makeGetterSetter('useAutoTranslat const welcomeBackToast = computed(defaultStore.makeGetterSetter('welcomeBackToast')); const disableNyaize = computed(defaultStore.makeGetterSetter('disableNyaize')); const externalNavigationWarning = computed(defaultStore.makeGetterSetter('externalNavigationWarning')); +const searchEngine = computed(defaultStore.makeGetterSetter('searchEngine')); +const searchEngineUrl = computed(defaultStore.makeGetterSetter('searchEngineUrl')); +const searchEngineUrlQuery = computed(defaultStore.makeGetterSetter('searchEngineUrlQuery')); watch(lang, () => { miLocalStorage.setItem('lang', lang.value as string); diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index 348b9479b2..01de5aa3a6 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -582,6 +582,18 @@ export const defaultStore = markRaw(new Storage('base', { where: 'device', default: false, }, + searchEngine: { + where: 'device', + default: 'google' as 'google' | 'bing' | 'yahoo' | 'baidu'| 'naver' | 'duckduckgo' | 'other', + }, + searchEngineUrl: { + where: 'device', + default: 'https://www.ecosia.org/search?', + }, + searchEngineUrlQuery: { + where: 'device', + default: 'q', + }, // - Settings/Appearance collapseReplies: {