feat: Add localization support for visitSpecificWebsite label

This commit adds localization support for the "visitSpecificWebsite" label in the settings.json file for multiple languages. Now, the label can be translated into different languages, including Japanese, Chinese, English, Malayalam, Italian, Portuguese, Russian, French, and Spanish.
This commit is contained in:
n4ze3m 2024-06-22 16:55:02 +05:30
parent d23b70b979
commit 4363a4b0de
13 changed files with 84 additions and 20 deletions

View File

@ -37,6 +37,9 @@
"totalSearchResults": { "totalSearchResults": {
"label": "Total Search Results", "label": "Total Search Results",
"placeholder": "Enter Total Search Results" "placeholder": "Enter Total Search Results"
},
"visitSpecificWebsite": {
"label": "Visit the website mentioned in the message"
} }
}, },
"system": { "system": {

View File

@ -37,6 +37,9 @@
"totalSearchResults": { "totalSearchResults": {
"label": "Resultados totales de la busqueda", "label": "Resultados totales de la busqueda",
"placeholder": "Ingresar el total de Resultados de la busqueda" "placeholder": "Ingresar el total de Resultados de la busqueda"
},
"visitSpecificWebsite": {
"label": "Visita el sitio web mencionado en el mensaje"
} }
}, },
"system": { "system": {

View File

@ -37,6 +37,9 @@
"totalSearchResults": { "totalSearchResults": {
"label": "Résultats de la recherche totaux", "label": "Résultats de la recherche totaux",
"placeholder": "Entrez les résultats de la recherche totaux" "placeholder": "Entrez les résultats de la recherche totaux"
},
"visitSpecificWebsite": {
"label": "Visitez le site web mentionné dans le message"
} }
}, },
"system": { "system": {

View File

@ -37,6 +37,9 @@
"totalSearchResults": { "totalSearchResults": {
"label": "Risultati della ricerca", "label": "Risultati della ricerca",
"placeholder": "Inserisci il totale delle ricerche" "placeholder": "Inserisci il totale delle ricerche"
},
"visitSpecificWebsite": {
"label": "Visita il sito web menzionato nel messaggio"
} }
}, },
"system": { "system": {

View File

@ -40,6 +40,9 @@
"totalSearchResults": { "totalSearchResults": {
"label": "合計検索結果", "label": "合計検索結果",
"placeholder": "合計検索結果を入力する" "placeholder": "合計検索結果を入力する"
},
"visitSpecificWebsite": {
"label": "メッセージに記載されたウェブサイトを訪問してください"
} }
}, },
"system": { "system": {

View File

@ -40,6 +40,9 @@
"totalSearchResults": { "totalSearchResults": {
"label": "ആകെ തിരച്ചിൽ ഫലങ്ങൾ", "label": "ആകെ തിരച്ചിൽ ഫലങ്ങൾ",
"placeholder": "ആകെ തിരച്ചിൽ ഫലങ്ങളുടെ എണ്ണം നൽകുക" "placeholder": "ആകെ തിരച്ചിൽ ഫലങ്ങളുടെ എണ്ണം നൽകുക"
},
"visitSpecificWebsite": {
"label": "സന്ദേശത്തിൽ പറയുന്ന വെബ്സൈറ്റ് സന്ദർശിക്കുക."
} }
}, },
"system": { "system": {

View File

@ -37,6 +37,9 @@
"totalSearchResults": { "totalSearchResults": {
"label": "Resultados de Pesquisa Totais", "label": "Resultados de Pesquisa Totais",
"placeholder": "Insira Resultados de Pesquisa Totais" "placeholder": "Insira Resultados de Pesquisa Totais"
},
"visitSpecificWebsite": {
"label": "Visite o site mencionado na mensagem."
} }
}, },
"system": { "system": {

View File

@ -37,6 +37,9 @@
"totalSearchResults": { "totalSearchResults": {
"label": "Общее количество результатов поиска", "label": "Общее количество результатов поиска",
"placeholder": "Введите общее количество результатов поиска" "placeholder": "Введите общее количество результатов поиска"
},
"visitSpecificWebsite": {
"label": "Посетите веб-сайт, указанный в сообщении."
} }
}, },
"system": { "system": {

View File

@ -40,6 +40,9 @@
"totalSearchResults": { "totalSearchResults": {
"label": "总搜索结果", "label": "总搜索结果",
"placeholder": "输入总搜索结果" "placeholder": "输入总搜索结果"
},
"visitSpecificWebsite": {
"label": "访问消息中提到的网站。"
} }
}, },
"system": { "system": {

View File

@ -13,7 +13,8 @@ export const SearchModeSettings = () => {
initialValues: { initialValues: {
isSimpleInternetSearch: false, isSimpleInternetSearch: false,
searchProvider: "", searchProvider: "",
totalSearchResults: 0 totalSearchResults: 0,
visitSpecificWebsite: false
} }
}) })
@ -89,6 +90,20 @@ export const SearchModeSettings = () => {
</div> </div>
</div> </div>
<div className="flex sm:flex-row flex-col space-y-4 sm:space-y-0 sm:justify-between">
<span className="text-gray-700 dark:text-neutral-50 ">
{t("generalSettings.webSearch.visitSpecificWebsite.label")}
</span>
<div>
<Switch
className="mt-4 sm:mt-0"
{...form.getInputProps("visitSpecificWebsite", {
type: "checkbox"
})}
/>
</div>
</div>
<div className="flex justify-end"> <div className="flex justify-end">
<SaveButton btnType="submit" /> <SaveButton btnType="submit" />
</div> </div>

View File

@ -15,6 +15,21 @@ export const getIsSimpleInternetSearch = async () => {
return isSimpleInternetSearch === "true" return isSimpleInternetSearch === "true"
} }
export const getIsVisitSpecificWebsite = async () => {
const isVisitSpecificWebsite = await storage.get("isVisitSpecificWebsite")
if (!isVisitSpecificWebsite || isVisitSpecificWebsite.length === 0) {
return false
}
return isVisitSpecificWebsite === "true"
}
export const setIsVisitSpecificWebsite = async (
isVisitSpecificWebsite: boolean
) => {
await storage.set("isVisitSpecificWebsite", isVisitSpecificWebsite.toString())
}
export const setIsSimpleInternetSearch = async ( export const setIsSimpleInternetSearch = async (
isSimpleInternetSearch: boolean isSimpleInternetSearch: boolean
) => { ) => {
@ -48,32 +63,37 @@ export const setTotalSearchResults = async (totalSearchResults: number) => {
} }
export const getSearchSettings = async () => { export const getSearchSettings = async () => {
const [isSimpleInternetSearch, searchProvider, totalSearchResult] = const [isSimpleInternetSearch, searchProvider, totalSearchResult, visitSpecificWebsite] =
await Promise.all([ await Promise.all([
getIsSimpleInternetSearch(), getIsSimpleInternetSearch(),
getSearchProvider(), getSearchProvider(),
totalSearchResults() totalSearchResults(),
getIsVisitSpecificWebsite()
]) ])
return { return {
isSimpleInternetSearch, isSimpleInternetSearch,
searchProvider, searchProvider,
totalSearchResults: totalSearchResult totalSearchResults: totalSearchResult,
visitSpecificWebsite
} }
} }
export const setSearchSettings = async ({ export const setSearchSettings = async ({
isSimpleInternetSearch, isSimpleInternetSearch,
searchProvider, searchProvider,
totalSearchResults totalSearchResults,
visitSpecificWebsite
}: { }: {
isSimpleInternetSearch: boolean isSimpleInternetSearch: boolean
searchProvider: string searchProvider: string
totalSearchResults: number totalSearchResults: number
visitSpecificWebsite: boolean
}) => { }) => {
await Promise.all([ await Promise.all([
setIsSimpleInternetSearch(isSimpleInternetSearch), setIsSimpleInternetSearch(isSimpleInternetSearch),
setSearchProvider(searchProvider), setSearchProvider(searchProvider),
setTotalSearchResults(totalSearchResults) setTotalSearchResults(totalSearchResults),
setIsVisitSpecificWebsite(visitSpecificWebsite)
]) ])
} }

View File

@ -1,7 +1,7 @@
import { getWebSearchPrompt } from "~/services/ollama" import { getWebSearchPrompt } from "~/services/ollama"
import { webGoogleSearch } from "./search-engines/google" import { webGoogleSearch } from "./search-engines/google"
import { webDuckDuckGoSearch } from "./search-engines/duckduckgo" import { webDuckDuckGoSearch } from "./search-engines/duckduckgo"
import { getSearchProvider } from "@/services/search" import { getIsVisitSpecificWebsite, getSearchProvider } from "@/services/search"
import { webSogouSearch } from "./search-engines/sogou" import { webSogouSearch } from "./search-engines/sogou"
import { webBraveSearch } from "./search-engines/brave" import { webBraveSearch } from "./search-engines/brave"
import { getWebsiteFromQuery, processSingleWebsite } from "./website" import { getWebsiteFromQuery, processSingleWebsite } from "./website"
@ -37,7 +37,9 @@ export const getSystemPromptForWeb = async (query: string) => {
content: string; content: string;
}[] = [] }[] = []
if (websiteVisit.hasUrl) { const isVisitSpecificWebsite = await getIsVisitSpecificWebsite()
if (isVisitSpecificWebsite && websiteVisit.hasUrl) {
const url = websiteVisit.url const url = websiteVisit.url
const queryWithoutUrl = websiteVisit.queryWithouUrls const queryWithoutUrl = websiteVisit.queryWithouUrls

View File

@ -10,16 +10,16 @@ import { MemoryVectorStore } from "langchain/vectorstores/memory"
export const processSingleWebsite = async (url: string, query: string) => { export const processSingleWebsite = async (url: string, query: string) => {
let content = await extractReadabilityContent(url) let content = await extractReadabilityContent(url)
const isSimpleMode = await getIsSimpleInternetSearch() // const isSimpleMode = await getIsSimpleInternetSearch()
if (isSimpleMode) { // if (isSimpleMode) {
return [ // return [
{ // {
url, // url,
content: content.length > 5000 ? content.slice(0, 5000) : content // content: content.length > 5000 ? content.slice(0, 5000) : content
} // }
] // ]
} // }
const docs: Document<Record<string, any>>[] = [ const docs: Document<Record<string, any>>[] = [
{ {