mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-18 17:30:16 +01:00
feat: auto detect language (#947)
* added auto-detect language * fix(TranslationSelect) now saving the selected language between sessions * fix(LangSelector.spec) * fix(conflict) * fix(Swedish) sv-SE
This commit is contained in:
parent
2419af8748
commit
b48c618f32
12 changed files with 329 additions and 328 deletions
|
|
@ -36,7 +36,7 @@ export default function Settings({ open, onOpenChange }: TDialogProps) {
|
||||||
>
|
>
|
||||||
<Tabs.Trigger
|
<Tabs.Trigger
|
||||||
className={cn(
|
className={cn(
|
||||||
'group flex items-center justify-start gap-2 rounded-md px-2 py-1.5 text-sm radix-state-active:bg-gray-800 radix-state-active:text-white',
|
'group flex items-center justify-start gap-2 rounded-md px-2 py-1.5 text-sm text-gray-500 radix-state-active:bg-gray-800 radix-state-active:text-white',
|
||||||
isSmallScreen
|
isSmallScreen
|
||||||
? 'flex-1 items-center justify-center text-sm dark:text-gray-500 dark:radix-state-active:text-white'
|
? 'flex-1 items-center justify-center text-sm dark:text-gray-500 dark:radix-state-active:text-white'
|
||||||
: '',
|
: '',
|
||||||
|
|
@ -48,7 +48,7 @@ export default function Settings({ open, onOpenChange }: TDialogProps) {
|
||||||
</Tabs.Trigger>
|
</Tabs.Trigger>
|
||||||
<Tabs.Trigger
|
<Tabs.Trigger
|
||||||
className={cn(
|
className={cn(
|
||||||
'group flex items-center justify-start gap-2 rounded-md px-2 py-1.5 text-sm radix-state-active:bg-gray-800 radix-state-active:text-white',
|
'group flex items-center justify-start gap-2 rounded-md px-2 py-1.5 text-sm text-gray-500 radix-state-active:bg-gray-800 radix-state-active:text-white',
|
||||||
isSmallScreen
|
isSmallScreen
|
||||||
? 'flex-1 items-center justify-center text-sm dark:text-gray-500 dark:radix-state-active:text-white'
|
? 'flex-1 items-center justify-center text-sm dark:text-gray-500 dark:radix-state-active:text-white'
|
||||||
: '',
|
: '',
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import {
|
||||||
import type { TDangerButtonProps } from '~/common';
|
import type { TDangerButtonProps } from '~/common';
|
||||||
import DangerButton from './DangerButton';
|
import DangerButton from './DangerButton';
|
||||||
import store from '~/store';
|
import store from '~/store';
|
||||||
|
import useLocalStorage from '~/hooks/useLocalStorage';
|
||||||
|
|
||||||
export const ThemeSelector = ({
|
export const ThemeSelector = ({
|
||||||
theme,
|
theme,
|
||||||
|
|
@ -82,17 +83,18 @@ export const LangSelector = ({
|
||||||
onChange={(e) => onChange(e.target.value)}
|
onChange={(e) => onChange(e.target.value)}
|
||||||
value={langcode}
|
value={langcode}
|
||||||
>
|
>
|
||||||
<option value="en">{localize('com_nav_lang_english')}</option>
|
<option value="auto">{localize('com_nav_lang_auto')}</option>
|
||||||
<option value="cn">{localize('com_nav_lang_chinese')}</option>
|
<option value="en-US">{localize('com_nav_lang_english')}</option>
|
||||||
<option value="de">{localize('com_nav_lang_german')}</option>
|
<option value="zh-CN">{localize('com_nav_lang_chinese')}</option>
|
||||||
<option value="es">{localize('com_nav_lang_spanish')}</option>
|
<option value="de-DE">{localize('com_nav_lang_german')}</option>
|
||||||
<option value="fr">{localize('com_nav_lang_french')}</option>
|
<option value="es-ES">{localize('com_nav_lang_spanish')}</option>
|
||||||
<option value="it">{localize('com_nav_lang_italian')}</option>
|
<option value="fr-FR">{localize('com_nav_lang_french')}</option>
|
||||||
<option value="pl">{localize('com_nav_lang_polish')}</option>
|
<option value="it-IT">{localize('com_nav_lang_italian')}</option>
|
||||||
<option value="br">{localize('com_nav_lang_brazilian_portuguese')}</option>
|
<option value="pl-PL">{localize('com_nav_lang_polish')}</option>
|
||||||
<option value="ru">{localize('com_nav_lang_russian')}</option>
|
<option value="pt-BR">{localize('com_nav_lang_brazilian_portuguese')}</option>
|
||||||
<option value="jp">{localize('com_nav_lang_japanese')}</option>
|
<option value="ru-RU">{localize('com_nav_lang_russian')}</option>
|
||||||
<option value="sv">{localize('com_nav_lang_swedish')}</option>
|
<option value="ja-JP">{localize('com_nav_lang_japanese')}</option>
|
||||||
|
<option value="sv-SE">{localize('com_nav_lang_swedish')}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
@ -103,6 +105,7 @@ function General() {
|
||||||
const clearConvosMutation = useClearConversationsMutation();
|
const clearConvosMutation = useClearConversationsMutation();
|
||||||
const [confirmClear, setConfirmClear] = useState(false);
|
const [confirmClear, setConfirmClear] = useState(false);
|
||||||
const [langcode, setLangcode] = useRecoilState(store.lang);
|
const [langcode, setLangcode] = useRecoilState(store.lang);
|
||||||
|
const [selectedLang, setSelectedLang] = useLocalStorage('selectedLang', langcode);
|
||||||
const { newConversation } = useConversation();
|
const { newConversation } = useConversation();
|
||||||
const { refreshConversations } = useConversations();
|
const { refreshConversations } = useConversations();
|
||||||
|
|
||||||
|
|
@ -135,9 +138,17 @@ function General() {
|
||||||
|
|
||||||
const changeLang = useCallback(
|
const changeLang = useCallback(
|
||||||
(value: string) => {
|
(value: string) => {
|
||||||
|
setSelectedLang(value);
|
||||||
|
if (value === 'auto') {
|
||||||
|
const userLang = navigator.language || navigator.languages[0];
|
||||||
|
setLangcode(userLang);
|
||||||
|
localStorage.setItem('lang', userLang);
|
||||||
|
} else {
|
||||||
setLangcode(value);
|
setLangcode(value);
|
||||||
|
localStorage.setItem('lang', value);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
[setLangcode],
|
[setLangcode, setSelectedLang],
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -152,7 +163,7 @@ function General() {
|
||||||
<ThemeSelector theme={theme} onChange={changeTheme} />
|
<ThemeSelector theme={theme} onChange={changeTheme} />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-b pb-3 last-of-type:border-b-0 dark:border-gray-700">
|
<div className="border-b pb-3 last-of-type:border-b-0 dark:border-gray-700">
|
||||||
<LangSelector langcode={langcode} onChange={changeLang} />
|
<LangSelector langcode={selectedLang} onChange={changeLang} />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-b pb-3 last-of-type:border-b-0 dark:border-gray-700">
|
<div className="border-b pb-3 last-of-type:border-b-0 dark:border-gray-700">
|
||||||
<ClearChatsButton
|
<ClearChatsButton
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ describe('LangSelector', () => {
|
||||||
it('renders correctly', () => {
|
it('renders correctly', () => {
|
||||||
const { getByText, getByDisplayValue } = render(
|
const { getByText, getByDisplayValue } = render(
|
||||||
<RecoilRoot>
|
<RecoilRoot>
|
||||||
<LangSelector langcode="en" onChange={mockOnChange} />
|
<LangSelector langcode="en-US" onChange={mockOnChange} />
|
||||||
</RecoilRoot>,
|
</RecoilRoot>,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -26,12 +26,12 @@ describe('LangSelector', () => {
|
||||||
it('calls onChange when the select value changes', () => {
|
it('calls onChange when the select value changes', () => {
|
||||||
const { getByDisplayValue } = render(
|
const { getByDisplayValue } = render(
|
||||||
<RecoilRoot>
|
<RecoilRoot>
|
||||||
<LangSelector langcode="en" onChange={mockOnChange} />
|
<LangSelector langcode="en-US" onChange={mockOnChange} />
|
||||||
</RecoilRoot>,
|
</RecoilRoot>,
|
||||||
);
|
);
|
||||||
|
|
||||||
fireEvent.change(getByDisplayValue('English'), { target: { value: 'it' } });
|
fireEvent.change(getByDisplayValue('English'), { target: { value: 'it-IT' } });
|
||||||
|
|
||||||
expect(mockOnChange).toHaveBeenCalledWith('it');
|
expect(mockOnChange).toHaveBeenCalledWith('it-IT');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,21 @@ import Japanese from './languages/Jp';
|
||||||
import Swedish from './languages/Sv';
|
import Swedish from './languages/Sv';
|
||||||
// === import additional language files here === //
|
// === import additional language files here === //
|
||||||
|
|
||||||
|
const languageMap: { [key: string]: unknown } = {
|
||||||
|
'en-US': English,
|
||||||
|
'zh-CN': Chinese,
|
||||||
|
'de-DE': German,
|
||||||
|
'es-ES': Spanish,
|
||||||
|
'fr-FR': French,
|
||||||
|
'it-IT': Italian,
|
||||||
|
'pl-PL': Polish,
|
||||||
|
'pt-BR': Portuguese,
|
||||||
|
'ru-RU': Russian,
|
||||||
|
'ja-JP': Japanese,
|
||||||
|
'sv-SE': Swedish,
|
||||||
|
// Add additional language mappings here
|
||||||
|
};
|
||||||
|
|
||||||
// New method on String allow using "{\d}" placeholder for
|
// New method on String allow using "{\d}" placeholder for
|
||||||
// loading value dynamically.
|
// loading value dynamically.
|
||||||
declare global {
|
declare global {
|
||||||
|
|
@ -22,7 +37,7 @@ declare global {
|
||||||
if (!String.prototype.format) {
|
if (!String.prototype.format) {
|
||||||
String.prototype.format = function (...args: string[]) {
|
String.prototype.format = function (...args: string[]) {
|
||||||
return this.replace(/{(\d+)}/g, function (match, number) {
|
return this.replace(/{(\d+)}/g, function (match, number) {
|
||||||
return typeof args[number] != 'undefined' ? args[number] : match;
|
return typeof args[number] !== 'undefined' ? args[number] : match;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -30,57 +45,15 @@ if (!String.prototype.format) {
|
||||||
// input: language code in string
|
// input: language code in string
|
||||||
// returns an object of translated strings in the language
|
// returns an object of translated strings in the language
|
||||||
export const getTranslations = (langCode: string) => {
|
export const getTranslations = (langCode: string) => {
|
||||||
if (langCode === 'en') {
|
const language = languageMap[langCode] || English;
|
||||||
return English;
|
return language;
|
||||||
}
|
|
||||||
if (langCode === 'cn') {
|
|
||||||
return Chinese;
|
|
||||||
}
|
|
||||||
if (langCode === 'fr') {
|
|
||||||
return French;
|
|
||||||
}
|
|
||||||
if (langCode === 'de') {
|
|
||||||
return German;
|
|
||||||
}
|
|
||||||
if (langCode === 'it') {
|
|
||||||
return Italian;
|
|
||||||
}
|
|
||||||
if (langCode === 'pl') {
|
|
||||||
return Polish;
|
|
||||||
}
|
|
||||||
if (langCode === 'br') {
|
|
||||||
return Portuguese;
|
|
||||||
}
|
|
||||||
if (langCode === 'es') {
|
|
||||||
return Spanish;
|
|
||||||
}
|
|
||||||
if (langCode === 'ru') {
|
|
||||||
return Russian;
|
|
||||||
}
|
|
||||||
if (langCode === 'jp') {
|
|
||||||
return Japanese;
|
|
||||||
}
|
|
||||||
if (langCode === 'sv') {
|
|
||||||
return Swedish;
|
|
||||||
}
|
|
||||||
|
|
||||||
// === add conditionals here for additional languages here === //
|
|
||||||
return English; // default to English
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// input: language code in string & phrase key in string
|
// input: language code in string & phrase key in string
|
||||||
// returns an corresponding phrase value in string
|
// returns an corresponding phrase value in string
|
||||||
export const localize = (langCode: string, phraseKey: string, ...values: string[]) => {
|
export const localize = (langCode: string, phraseKey: string, ...values: string[]) => {
|
||||||
const lang = getTranslations(langCode);
|
const lang = getTranslations(langCode);
|
||||||
if (phraseKey in lang) {
|
const phrase = lang[phraseKey] || English[phraseKey] || '';
|
||||||
return lang[phraseKey].format(...values);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (phraseKey in English) {
|
return phrase.format(...values);
|
||||||
// Fall back logic to cover untranslated phrases
|
|
||||||
return English[phraseKey].format(...values);
|
|
||||||
}
|
|
||||||
|
|
||||||
// In case the key is not defined, return empty instead of throw errors.
|
|
||||||
return '';
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -206,20 +206,25 @@ export default {
|
||||||
com_endpoint_config_key_encryption: 'Sua chave será criptografada e excluída em',
|
com_endpoint_config_key_encryption: 'Sua chave será criptografada e excluída em',
|
||||||
com_endpoint_config_key_expiry: 'Tempo de expiração',
|
com_endpoint_config_key_expiry: 'Tempo de expiração',
|
||||||
com_endpoint_config_key_import_json_key: 'Importar Chave JSON de Conta de Serviço.',
|
com_endpoint_config_key_import_json_key: 'Importar Chave JSON de Conta de Serviço.',
|
||||||
com_endpoint_config_key_import_json_key_success: 'Chave JSON de Conta de Serviço Importada com Sucesso',
|
com_endpoint_config_key_import_json_key_success:
|
||||||
com_endpoint_config_key_import_json_key_invalid: 'Chave JSON de Conta de Serviço Inválida. Você importou o arquivo correto?',
|
'Chave JSON de Conta de Serviço Importada com Sucesso',
|
||||||
|
com_endpoint_config_key_import_json_key_invalid:
|
||||||
|
'Chave JSON de Conta de Serviço Inválida. Você importou o arquivo correto?',
|
||||||
com_endpoint_config_key_get_edge_key: 'Para obter seu token de acesso para o Bing, faça login em',
|
com_endpoint_config_key_get_edge_key: 'Para obter seu token de acesso para o Bing, faça login em',
|
||||||
com_endpoint_config_key_get_edge_key_dev_tool: 'Use ferramentas de desenvolvimento ou uma extensão enquanto estiver conectado ao site para copiar o conteúdo do cookie _U. Se isso falhar, siga estas',
|
com_endpoint_config_key_get_edge_key_dev_tool:
|
||||||
|
'Use ferramentas de desenvolvimento ou uma extensão enquanto estiver conectado ao site para copiar o conteúdo do cookie _U. Se isso falhar, siga estas',
|
||||||
com_endpoint_config_key_edge_instructions: 'instruções',
|
com_endpoint_config_key_edge_instructions: 'instruções',
|
||||||
com_endpoint_config_key_edge_full_key_string: 'para fornecer as sequências completas de cookies.',
|
com_endpoint_config_key_edge_full_key_string: 'para fornecer as sequências completas de cookies.',
|
||||||
com_endpoint_config_key_chatgpt: 'Para obter seu token de acesso para o ChatGPT \'Versão Gratuita\', faça login em',
|
com_endpoint_config_key_chatgpt:
|
||||||
|
'Para obter seu token de acesso para o ChatGPT \'Versão Gratuita\', faça login em',
|
||||||
com_endpoint_config_key_chatgpt_then_visit: 'depois visite',
|
com_endpoint_config_key_chatgpt_then_visit: 'depois visite',
|
||||||
com_endpoint_config_key_chatgpt_copy_token: 'Copie o token de acesso.',
|
com_endpoint_config_key_chatgpt_copy_token: 'Copie o token de acesso.',
|
||||||
com_endpoint_config_key_google_need_to: 'Você precisa',
|
com_endpoint_config_key_google_need_to: 'Você precisa',
|
||||||
com_endpoint_config_key_google_vertex_ai: 'Ativar Vertex AI',
|
com_endpoint_config_key_google_vertex_ai: 'Ativar Vertex AI',
|
||||||
com_endpoint_config_key_google_vertex_api: 'API no Google Cloud, em seguida,',
|
com_endpoint_config_key_google_vertex_api: 'API no Google Cloud, em seguida,',
|
||||||
com_endpoint_config_key_google_service_account: 'Criar uma Conta de Serviço',
|
com_endpoint_config_key_google_service_account: 'Criar uma Conta de Serviço',
|
||||||
com_endpoint_config_key_google_vertex_api_role: 'Certifique-se de clicar em \'Criar e Continuar\' para atribuir pelo menos a função de \'Usuário Vertex AI\'. Por fim, crie uma chave JSON para importar aqui.',
|
com_endpoint_config_key_google_vertex_api_role:
|
||||||
|
'Certifique-se de clicar em \'Criar e Continuar\' para atribuir pelo menos a função de \'Usuário Vertex AI\'. Por fim, crie uma chave JSON para importar aqui.',
|
||||||
com_nav_export_filename: 'Nome do Arquivo',
|
com_nav_export_filename: 'Nome do Arquivo',
|
||||||
com_nav_export_filename_placeholder: 'Defina o nome do arquivo',
|
com_nav_export_filename_placeholder: 'Defina o nome do arquivo',
|
||||||
com_nav_export_type: 'Tipo',
|
com_nav_export_type: 'Tipo',
|
||||||
|
|
@ -249,14 +254,5 @@ export default {
|
||||||
com_nav_search_placeholder: 'Procurar mensagens',
|
com_nav_search_placeholder: 'Procurar mensagens',
|
||||||
com_nav_setting_general: 'Geral',
|
com_nav_setting_general: 'Geral',
|
||||||
com_nav_setting_data: 'Controle de Dados',
|
com_nav_setting_data: 'Controle de Dados',
|
||||||
com_nav_language: 'Idioma',
|
|
||||||
com_nav_lang_english: 'English',
|
|
||||||
com_nav_lang_chinese: '中文',
|
|
||||||
com_nav_lang_german: 'Deutsch',
|
|
||||||
com_nav_lang_spanish: 'Español',
|
|
||||||
com_nav_lang_french: 'Français ',
|
|
||||||
com_nav_lang_italian: 'Italiano',
|
|
||||||
com_nav_lang_polish: 'Polski',
|
|
||||||
com_nav_lang_brazilian_portuguese: 'Português Brasileiro',
|
com_nav_lang_brazilian_portuguese: 'Português Brasileiro',
|
||||||
com_nav_lang_russian: 'Русский',
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -196,6 +196,5 @@ export default {
|
||||||
com_nav_settings: 'Einstellungen',
|
com_nav_settings: 'Einstellungen',
|
||||||
com_nav_search_placeholder: 'Durchsuche Nachrichten',
|
com_nav_search_placeholder: 'Durchsuche Nachrichten',
|
||||||
com_nav_setting_general: 'Generell',
|
com_nav_setting_general: 'Generell',
|
||||||
com_nav_language: 'Sprache',
|
|
||||||
com_nav_lang_german: 'Deutsch',
|
com_nav_lang_german: 'Deutsch',
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -255,6 +255,7 @@ export default {
|
||||||
com_nav_setting_general: 'General',
|
com_nav_setting_general: 'General',
|
||||||
com_nav_setting_data: 'Data controls',
|
com_nav_setting_data: 'Data controls',
|
||||||
com_nav_language: 'Language',
|
com_nav_language: 'Language',
|
||||||
|
com_nav_lang_auto: 'Auto detect',
|
||||||
com_nav_lang_english: 'English',
|
com_nav_lang_english: 'English',
|
||||||
com_nav_lang_chinese: '中文',
|
com_nav_lang_chinese: '中文',
|
||||||
com_nav_lang_german: 'Deutsch',
|
com_nav_lang_german: 'Deutsch',
|
||||||
|
|
|
||||||
|
|
@ -259,14 +259,5 @@ export default {
|
||||||
com_nav_search_placeholder: 'Buscar mensajes',
|
com_nav_search_placeholder: 'Buscar mensajes',
|
||||||
com_nav_setting_general: 'General',
|
com_nav_setting_general: 'General',
|
||||||
com_nav_setting_data: 'Control de Datos',
|
com_nav_setting_data: 'Control de Datos',
|
||||||
com_nav_language: 'Idioma',
|
|
||||||
com_nav_lang_english: 'English',
|
|
||||||
com_nav_lang_chinese: '中文',
|
|
||||||
com_nav_lang_german: 'Deutsch',
|
|
||||||
com_nav_lang_spanish: 'Español',
|
com_nav_lang_spanish: 'Español',
|
||||||
com_nav_lang_french: 'Français ',
|
|
||||||
com_nav_lang_italian: 'Italiano',
|
|
||||||
com_nav_lang_polish: 'Polski',
|
|
||||||
com_nav_lang_brazilian_portuguese: 'Português Brasileiro',
|
|
||||||
com_nav_lang_russian: 'Русский',
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -254,5 +254,5 @@ export default {
|
||||||
com_nav_settings: 'Impostazioni',
|
com_nav_settings: 'Impostazioni',
|
||||||
com_nav_search_placeholder: 'Cerca messaggi',
|
com_nav_search_placeholder: 'Cerca messaggi',
|
||||||
com_nav_setting_general: 'Generale',
|
com_nav_setting_general: 'Generale',
|
||||||
com_nav_setting_data: 'Controllo dati',
|
com_nav_setting_data: 'Controllo dei dati',
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,7 @@ export default {
|
||||||
com_ui_capability_decline_requests: '不適切な要求を断るように学習されています',
|
com_ui_capability_decline_requests: '不適切な要求を断るように学習されています',
|
||||||
com_ui_limitations: '制限事項',
|
com_ui_limitations: '制限事項',
|
||||||
com_ui_limitation_incorrect_info: '誤った情報を生成することがあります',
|
com_ui_limitation_incorrect_info: '誤った情報を生成することがあります',
|
||||||
com_ui_limitation_harmful_biased:
|
com_ui_limitation_harmful_biased: '有害な指示や偏った内容を生成する可能性があります',
|
||||||
'有害な指示や偏った内容を生成する可能性があります',
|
|
||||||
com_ui_limitation_limited_2021: '2021年以降の世界と出来事に関しては知識が乏しいです',
|
com_ui_limitation_limited_2021: '2021年以降の世界と出来事に関しては知識が乏しいです',
|
||||||
com_ui_input: '入力',
|
com_ui_input: '入力',
|
||||||
com_ui_close: '閉じる',
|
com_ui_close: '閉じる',
|
||||||
|
|
@ -75,8 +74,7 @@ export default {
|
||||||
com_auth_password_not_match: 'パスワードが一致しません',
|
com_auth_password_not_match: 'パスワードが一致しません',
|
||||||
com_auth_continue: '続ける',
|
com_auth_continue: '続ける',
|
||||||
com_auth_create_account: 'アカウント登録',
|
com_auth_create_account: 'アカウント登録',
|
||||||
com_auth_error_create:
|
com_auth_error_create: 'アカウント登録に失敗しました。もう一度試してください。',
|
||||||
'アカウント登録に失敗しました。もう一度試してください。',
|
|
||||||
com_auth_full_name: '姓名',
|
com_auth_full_name: '姓名',
|
||||||
com_auth_name_required: '姓名は必須です',
|
com_auth_name_required: '姓名は必須です',
|
||||||
com_auth_name_min_length: '姓名は最低3文字は必要です',
|
com_auth_name_min_length: '姓名は最低3文字は必要です',
|
||||||
|
|
@ -92,8 +90,7 @@ export default {
|
||||||
com_auth_here: 'こちら',
|
com_auth_here: 'こちら',
|
||||||
com_auth_to_reset_your_password: 'to reset your password.',
|
com_auth_to_reset_your_password: 'to reset your password.',
|
||||||
com_auth_reset_password_link_sent: 'メールを送信する',
|
com_auth_reset_password_link_sent: 'メールを送信する',
|
||||||
com_auth_reset_password_email_sent:
|
com_auth_reset_password_email_sent: 'パスワードリセット方法を記載したメールを送信しました。',
|
||||||
'パスワードリセット方法を記載したメールを送信しました。',
|
|
||||||
com_auth_error_reset_password:
|
com_auth_error_reset_password:
|
||||||
'パスワードリセット中に問題が発生しました。指定されたメールアドレスのユーザは存在しません。別のメールアドレスでもう一度お試しください。',
|
'パスワードリセット中に問題が発生しました。指定されたメールアドレスのユーザは存在しません。別のメールアドレスでもう一度お試しください。',
|
||||||
com_auth_reset_password_success: 'パスワードリセットに成功しました',
|
com_auth_reset_password_success: 'パスワードリセットに成功しました',
|
||||||
|
|
@ -130,7 +127,8 @@ export default {
|
||||||
com_endpoint_google_maxoutputtokens:
|
com_endpoint_google_maxoutputtokens:
|
||||||
' 生成されるレスポンスの最大トークン数。短いレスポンスには低い値を、長いレスポンスには高い値を指定する。',
|
' 生成されるレスポンスの最大トークン数。短いレスポンスには低い値を、長いレスポンスには高い値を指定する。',
|
||||||
com_endpoint_google_custom_name_placeholder: 'PaLM2用の名前を設定する',
|
com_endpoint_google_custom_name_placeholder: 'PaLM2用の名前を設定する',
|
||||||
com_endpoint_prompt_prefix_placeholder: 'custom instructions か context を設定する。空の場合は無視されます。',
|
com_endpoint_prompt_prefix_placeholder:
|
||||||
|
'custom instructions か context を設定する。空の場合は無視されます。',
|
||||||
com_endpoint_custom_name: 'プリセット名',
|
com_endpoint_custom_name: 'プリセット名',
|
||||||
com_endpoint_prompt_prefix: 'プロンプトの先頭',
|
com_endpoint_prompt_prefix: 'プロンプトの先頭',
|
||||||
com_endpoint_temperature: 'Temperature',
|
com_endpoint_temperature: 'Temperature',
|
||||||
|
|
@ -205,15 +203,18 @@ export default {
|
||||||
com_endpoint_config_key_encryption: '鍵は暗号化されます。削除予定日:',
|
com_endpoint_config_key_encryption: '鍵は暗号化されます。削除予定日:',
|
||||||
com_endpoint_config_key_expiry: 'すでに有効期限切れ',
|
com_endpoint_config_key_expiry: 'すでに有効期限切れ',
|
||||||
com_endpoint_config_key_import_json_key: 'Service Account JSON Key をインポートする。',
|
com_endpoint_config_key_import_json_key: 'Service Account JSON Key をインポートする。',
|
||||||
com_endpoint_config_key_import_json_key_success: 'Service Account JSON Keyのインポートに成功しました。',
|
com_endpoint_config_key_import_json_key_success:
|
||||||
|
'Service Account JSON Keyのインポートに成功しました。',
|
||||||
com_endpoint_config_key_import_json_key_invalid:
|
com_endpoint_config_key_import_json_key_invalid:
|
||||||
'無効なService Account JSON Keyです。正しいファイルか確認してください。',
|
'無効なService Account JSON Keyです。正しいファイルか確認してください。',
|
||||||
com_endpoint_config_key_get_edge_key: 'Bing用のアクセストークンを取得するためにログインをしてください: ',
|
com_endpoint_config_key_get_edge_key:
|
||||||
|
'Bing用のアクセストークンを取得するためにログインをしてください: ',
|
||||||
com_endpoint_config_key_get_edge_key_dev_tool:
|
com_endpoint_config_key_get_edge_key_dev_tool:
|
||||||
'サイトにログインした状態で、開発ツールまたは拡張機能を使用して、_U クッキーの内容をコピーします。もし失敗する場合は次の手順に従ってください。',
|
'サイトにログインした状態で、開発ツールまたは拡張機能を使用して、_U クッキーの内容をコピーします。もし失敗する場合は次の手順に従ってください。',
|
||||||
com_endpoint_config_key_edge_instructions: '手順',
|
com_endpoint_config_key_edge_instructions: '手順',
|
||||||
com_endpoint_config_key_edge_full_key_string: 'to provide the full cookie strings.',
|
com_endpoint_config_key_edge_full_key_string: 'to provide the full cookie strings.',
|
||||||
com_endpoint_config_key_chatgpt: 'ChatGPTの「Free Version」のアクセストークンを入手するためにへログインをしてください:',
|
com_endpoint_config_key_chatgpt:
|
||||||
|
'ChatGPTの「Free Version」のアクセストークンを入手するためにへログインをしてください:',
|
||||||
com_endpoint_config_key_chatgpt_then_visit: 'つぎに、ここへアクセスしてください:',
|
com_endpoint_config_key_chatgpt_then_visit: 'つぎに、ここへアクセスしてください:',
|
||||||
com_endpoint_config_key_chatgpt_copy_token: 'トークンをコピーしてください。',
|
com_endpoint_config_key_chatgpt_copy_token: 'トークンをコピーしてください。',
|
||||||
com_endpoint_config_key_google_need_to: 'こちらを有効化する必要があります:',
|
com_endpoint_config_key_google_need_to: 'こちらを有効化する必要があります:',
|
||||||
|
|
@ -250,5 +251,4 @@ export default {
|
||||||
com_nav_search_placeholder: 'メッセージ検索',
|
com_nav_search_placeholder: 'メッセージ検索',
|
||||||
com_nav_setting_general: '一般',
|
com_nav_setting_general: '一般',
|
||||||
com_nav_setting_data: 'データ管理',
|
com_nav_setting_data: 'データ管理',
|
||||||
com_nav_language: '言語'
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// Swedish phrases
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
com_ui_examples: 'Exempel', // Examples
|
com_ui_examples: 'Exempel', // Examples
|
||||||
com_ui_new_chat: 'Ny chatt', // New chat
|
com_ui_new_chat: 'Ny chatt', // New chat
|
||||||
|
|
@ -10,7 +12,8 @@ export default {
|
||||||
com_ui_capability_decline_requests: 'Tränad för att avvisa olämpliga förfrågningar', // Trained to decline inappropriate requests
|
com_ui_capability_decline_requests: 'Tränad för att avvisa olämpliga förfrågningar', // Trained to decline inappropriate requests
|
||||||
com_ui_limitations: 'Begränsningar', // Limitations
|
com_ui_limitations: 'Begränsningar', // Limitations
|
||||||
com_ui_limitation_incorrect_info: 'Kan ibland generera felaktig information', // May occasionally generate incorrect information
|
com_ui_limitation_incorrect_info: 'Kan ibland generera felaktig information', // May occasionally generate incorrect information
|
||||||
com_ui_limitation_harmful_biased: 'Kan ibland producera skadliga instruktioner eller snedvridet innehåll', // May occasionally produce harmful instructions or biased content
|
com_ui_limitation_harmful_biased:
|
||||||
|
'Kan ibland producera skadliga instruktioner eller snedvridet innehåll', // May occasionally produce harmful instructions or biased content
|
||||||
com_ui_limitation_limited_2021: 'Begränsad kunskap om världen och händelser efter 2021', // Limited knowledge of world and events after 2021
|
com_ui_limitation_limited_2021: 'Begränsad kunskap om världen och händelser efter 2021', // Limited knowledge of world and events after 2021
|
||||||
com_ui_input: 'Inmatning', // Input
|
com_ui_input: 'Inmatning', // Input
|
||||||
com_ui_close: 'Stäng', // Close
|
com_ui_close: 'Stäng', // Close
|
||||||
|
|
@ -46,8 +49,10 @@ export default {
|
||||||
com_ui_delete: 'Radera', // Delete
|
com_ui_delete: 'Radera', // Delete
|
||||||
com_ui_delete_conversation: 'Radera chatt?', // Delete chat?
|
com_ui_delete_conversation: 'Radera chatt?', // Delete chat?
|
||||||
com_ui_delete_conversation_confirm: 'Detta kommer att radera', // This will delete
|
com_ui_delete_conversation_confirm: 'Detta kommer att radera', // This will delete
|
||||||
com_auth_error_login: 'Kunde inte logga in med den angivna informationen. Kontrollera dina uppgifter och försök igen.', // Unable to login with the information provided. Please check your credentials and try again.
|
com_auth_error_login:
|
||||||
com_auth_error_login_rl: 'För många inloggningsförsök från den här IP-adressen på kort tid. Vänligen försök igen senare.', // Too many login attempts from this IP in a short amount of time. Please try again later.
|
'Kunde inte logga in med den angivna informationen. Kontrollera dina uppgifter och försök igen.', // Unable to login with the information provided. Please check your credentials and try again.
|
||||||
|
com_auth_error_login_rl:
|
||||||
|
'För många inloggningsförsök från den här IP-adressen på kort tid. Vänligen försök igen senare.', // Too many login attempts from this IP in a short amount of time. Please try again later.
|
||||||
com_auth_no_account: 'Har du inget konto?', // Don't have an account?
|
com_auth_no_account: 'Har du inget konto?', // Don't have an account?
|
||||||
com_auth_sign_up: 'Registrera dig', // Sign up
|
com_auth_sign_up: 'Registrera dig', // Sign up
|
||||||
com_auth_sign_in: 'Logga in', // Sign in
|
com_auth_sign_in: 'Logga in', // Sign in
|
||||||
|
|
@ -70,7 +75,8 @@ export default {
|
||||||
com_auth_password_not_match: 'Lösenorden matchar inte', // Passwords do not match
|
com_auth_password_not_match: 'Lösenorden matchar inte', // Passwords do not match
|
||||||
com_auth_continue: 'Fortsätt', // Continue
|
com_auth_continue: 'Fortsätt', // Continue
|
||||||
com_auth_create_account: 'Skapa ditt konto', // Create your account
|
com_auth_create_account: 'Skapa ditt konto', // Create your account
|
||||||
com_auth_error_create: 'Det uppstod ett fel när du försökte registrera ditt konto. Vänligen försök igen.', // There was an error attempting to register your account. Please try again.
|
com_auth_error_create:
|
||||||
|
'Det uppstod ett fel när du försökte registrera ditt konto. Vänligen försök igen.', // There was an error attempting to register your account. Please try again.
|
||||||
com_auth_full_name: 'Fullständigt namn', // Full name
|
com_auth_full_name: 'Fullständigt namn', // Full name
|
||||||
com_auth_name_required: 'Namn krävs', // Name is required
|
com_auth_name_required: 'Namn krävs', // Name is required
|
||||||
com_auth_name_min_length: 'Namnet måste vara minst 3 tecken', // Name must be at least 3 characters
|
com_auth_name_min_length: 'Namnet måste vara minst 3 tecken', // Name must be at least 3 characters
|
||||||
|
|
@ -86,8 +92,10 @@ export default {
|
||||||
com_auth_here: 'HÄR', // HERE
|
com_auth_here: 'HÄR', // HERE
|
||||||
com_auth_to_reset_your_password: 'för att återställa ditt lösenord.', // to reset your password.
|
com_auth_to_reset_your_password: 'för att återställa ditt lösenord.', // to reset your password.
|
||||||
com_auth_reset_password_link_sent: 'E-post skickad', // Email Sent
|
com_auth_reset_password_link_sent: 'E-post skickad', // Email Sent
|
||||||
com_auth_reset_password_email_sent: 'Ett e-postmeddelande har skickats till dig med ytterligare instruktioner för att återställa ditt lösenord.', // An email has been sent to you with further instructions to reset your password.
|
com_auth_reset_password_email_sent:
|
||||||
com_auth_error_reset_password: 'Det uppstod ett problem med att återställa ditt lösenord. Ingen användare hittades med den angivna e-postadressen. Vänligen försök igen.', // There was a problem resetting your password. There was no user found with the email address provided. Please try again.
|
'Ett e-postmeddelande har skickats till dig med ytterligare instruktioner för att återställa ditt lösenord.', // An email has been sent to you with further instructions to reset your password.
|
||||||
|
com_auth_error_reset_password:
|
||||||
|
'Det uppstod ett problem med att återställa ditt lösenord. Ingen användare hittades med den angivna e-postadressen. Vänligen försök igen.', // There was a problem resetting your password. There was no user found with the email address provided. Please try again.
|
||||||
com_auth_reset_password_success: 'Lösenordsåterställning lyckades', // Password Reset Success
|
com_auth_reset_password_success: 'Lösenordsåterställning lyckades', // Password Reset Success
|
||||||
com_auth_login_with_new_password: 'Du kan nu logga in med ditt nya lösenord.', // You may now login with your new password.
|
com_auth_login_with_new_password: 'Du kan nu logga in med ditt nya lösenord.', // You may now login with your new password.
|
||||||
com_auth_error_invalid_reset_token: 'Detta lösenordsåterställningsnyckel är inte längre giltigt.', // This password reset token is no longer valid.
|
com_auth_error_invalid_reset_token: 'Detta lösenordsåterställningsnyckel är inte längre giltigt.', // This password reset token is no longer valid.
|
||||||
|
|
@ -99,8 +107,10 @@ export default {
|
||||||
com_endpoint_bing_enable_sydney: 'Aktivera Sydney', // Enable Sydney
|
com_endpoint_bing_enable_sydney: 'Aktivera Sydney', // Enable Sydney
|
||||||
com_endpoint_bing_to_enable_sydney: 'För att aktivera Sydney', // To enable Sydney
|
com_endpoint_bing_to_enable_sydney: 'För att aktivera Sydney', // To enable Sydney
|
||||||
com_endpoint_bing_jailbreak: 'Jailbreak', // Jailbreak
|
com_endpoint_bing_jailbreak: 'Jailbreak', // Jailbreak
|
||||||
com_endpoint_bing_context_placeholder: 'Bing kan använda upp till 7k tokens för "kontext", som den kan referera till under konversationen. Den specifika gränsen är inte känd men kan stöta på fel om den överstiger 7k tokens', // Bing can use up to 7k tokens for 'context', which it can reference for the conversation. The specific limit is not known but may run into errors exceeding 7k tokens
|
com_endpoint_bing_context_placeholder:
|
||||||
com_endpoint_bing_system_message_placeholder: 'VARNING: Otillåten användning av denna funktion kan få dig BANNAD från att använda Bing! Klicka på "Systemmeddelande" för fullständiga instruktioner och standardmeddelandet om det utelämnas, vilket är "Sydney"-förinställningen som anses vara säker.', // WARNING: Misuse of this feature can get you BANNED from using Bing! Click on 'System Message' for full instructions and the default message if omitted, which is the 'Sydney' preset that is considered safe.
|
'Bing kan använda upp till 7k tokens för "kontext", som den kan referera till under konversationen. Den specifika gränsen är inte känd men kan stöta på fel om den överstiger 7k tokens', // Bing can use up to 7k tokens for 'context', which it can reference for the conversation. The specific limit is not known but may run into errors exceeding 7k tokens
|
||||||
|
com_endpoint_bing_system_message_placeholder:
|
||||||
|
'VARNING: Otillåten användning av denna funktion kan få dig BANNAD från att använda Bing! Klicka på "Systemmeddelande" för fullständiga instruktioner och standardmeddelandet om det utelämnas, vilket är "Sydney"-förinställningen som anses vara säker.', // WARNING: Misuse of this feature can get you BANNED from using Bing! Click on 'System Message' for full instructions and the default message if omitted, which is the 'Sydney' preset that is considered safe.
|
||||||
com_endpoint_system_message: 'Systemmeddelande', // System Message
|
com_endpoint_system_message: 'Systemmeddelande', // System Message
|
||||||
com_endpoint_default_blank: 'standard: tom', // default: blank
|
com_endpoint_default_blank: 'standard: tom', // default: blank
|
||||||
com_endpoint_default_false: 'standard: falsk', // default: false
|
com_endpoint_default_false: 'standard: falsk', // default: false
|
||||||
|
|
@ -111,12 +121,17 @@ export default {
|
||||||
com_endpoint_tone_style: 'Tonstil', // Tone Style
|
com_endpoint_tone_style: 'Tonstil', // Tone Style
|
||||||
com_endpoint_token_count: 'Antal tokens', // Token count
|
com_endpoint_token_count: 'Antal tokens', // Token count
|
||||||
com_endpoint_output: 'Utdata', // Output
|
com_endpoint_output: 'Utdata', // Output
|
||||||
com_endpoint_google_temp: 'Högre värden = mer slumpmässigt, medan lägre värden = mer fokuserat och bestämt. Vi rekommenderar att ändra detta eller Top P men inte båda.', // Higher values = more random, while lower values = more focused and deterministic. We recommend altering this or Top P but not both.
|
com_endpoint_google_temp:
|
||||||
com_endpoint_google_topp: 'Top-p ändrar hur modellen väljer tokens för utdata. Tokens väljs från de mest K (se topK-parameter) sannolika till de minst tills summan av deras sannolikheter når top-p-värdet.', // Top-p changes how the model selects tokens for output. Tokens are selected from most K (see topK parameter) probable to least until the sum of their probabilities equals the top-p value.
|
'Högre värden = mer slumpmässigt, medan lägre värden = mer fokuserat och bestämt. Vi rekommenderar att ändra detta eller Top P men inte båda.', // Higher values = more random, while lower values = more focused and deterministic. We recommend altering this or Top P but not both.
|
||||||
com_endpoint_google_topk: 'Top-k ändrar hur modellen väljer tokens för utdata. Ett top-k av 1 innebär att den valda token är den mest sannolika bland alla tokens i modellens vokabulär (kallas också girig avkodning), medan ett top-k av 3 innebär att nästa token väljs bland de 3 mest sannolika tokens (med temperatur).', // Top-k changes how the model selects tokens for output. A top-k of 1 means the selected token is the most probable among all tokens in the model's vocabulary (also called greedy decoding), while a top-k of 3 means that the next token is selected from among the 3 most probable tokens (using temperature).
|
com_endpoint_google_topp:
|
||||||
com_endpoint_google_maxoutputtokens: 'Maximalt antal tokens som kan genereras i svaret. Ange ett lägre värde för kortare svar och ett högre värde för längre svar.', // Maximum number of tokens that can be generated in the response. Specify a lower value for shorter responses and a higher value for longer responses.
|
'Top-p ändrar hur modellen väljer tokens för utdata. Tokens väljs från de mest K (se topK-parameter) sannolika till de minst tills summan av deras sannolikheter når top-p-värdet.', // Top-p changes how the model selects tokens for output. Tokens are selected from most K (see topK parameter) probable to least until the sum of their probabilities equals the top-p value.
|
||||||
|
com_endpoint_google_topk:
|
||||||
|
'Top-k ändrar hur modellen väljer tokens för utdata. Ett top-k av 1 innebär att den valda token är den mest sannolika bland alla tokens i modellens vokabulär (kallas också girig avkodning), medan ett top-k av 3 innebär att nästa token väljs bland de 3 mest sannolika tokens (med temperatur).', // Top-k changes how the model selects tokens for output. A top-k of 1 means the selected token is the most probable among all tokens in the model's vocabulary (also called greedy decoding), while a top-k of 3 means that the next token is selected from among the 3 most probable tokens (using temperature).
|
||||||
|
com_endpoint_google_maxoutputtokens:
|
||||||
|
'Maximalt antal tokens som kan genereras i svaret. Ange ett lägre värde för kortare svar och ett högre värde för längre svar.', // Maximum number of tokens that can be generated in the response. Specify a lower value for shorter responses and a higher value for longer responses.
|
||||||
com_endpoint_google_custom_name_placeholder: 'Ange ett anpassat namn för PaLM2', // Set a custom name for PaLM2
|
com_endpoint_google_custom_name_placeholder: 'Ange ett anpassat namn för PaLM2', // Set a custom name for PaLM2
|
||||||
com_endpoint_prompt_prefix_placeholder: 'Ange anpassade instruktioner eller kontext. Ignoreras om tom.', // Set custom instructions or context. Ignored if empty.
|
com_endpoint_prompt_prefix_placeholder:
|
||||||
|
'Ange anpassade instruktioner eller kontext. Ignoreras om tom.', // Set custom instructions or context. Ignored if empty.
|
||||||
com_endpoint_custom_name: 'Anpassat namn', // Custom Name
|
com_endpoint_custom_name: 'Anpassat namn', // Custom Name
|
||||||
com_endpoint_prompt_prefix: 'Uppmaningsprefix', // Prompt Prefix
|
com_endpoint_prompt_prefix: 'Uppmaningsprefix', // Prompt Prefix
|
||||||
com_endpoint_temperature: 'Temperatur', // Temperature
|
com_endpoint_temperature: 'Temperatur', // Temperature
|
||||||
|
|
@ -124,17 +139,27 @@ export default {
|
||||||
com_endpoint_top_p: 'Top P', // Top P
|
com_endpoint_top_p: 'Top P', // Top P
|
||||||
com_endpoint_top_k: 'Top K', // Top K
|
com_endpoint_top_k: 'Top K', // Top K
|
||||||
com_endpoint_max_output_tokens: 'Max utdatatokens', // Max Output Tokens
|
com_endpoint_max_output_tokens: 'Max utdatatokens', // Max Output Tokens
|
||||||
com_endpoint_openai_temp: 'Högre värden = mer slumpmässigt, medan lägre värden = mer fokuserat och bestämt. Vi rekommenderar att ändra detta eller Top P men inte båda.', // Higher values = more random, while lower values = more focused and deterministic. We recommend altering this or Top P but not both.
|
com_endpoint_openai_temp:
|
||||||
com_endpoint_openai_max: 'Max tokens att generera. Den totala längden på tokens för inmatning och svar är begränsad av modellen som används.', // The max tokens to generate. The total length of input tokens and generated tokens is limited by the model's context length.
|
'Högre värden = mer slumpmässigt, medan lägre värden = mer fokuserat och bestämt. Vi rekommenderar att ändra detta eller Top P men inte båda.', // Higher values = more random, while lower values = more focused and deterministic. We recommend altering this or Top P but not both.
|
||||||
com_endpoint_openai_topp: 'Ett alternativ till temperatur, kallat kärnprovtagning, där modellen beaktar resultaten av tokens med top_p-sannolikhetsmassa. Så 0,1 innebär att endast de tokens som utgör den översta 10% sannolikhetsmassan beaktas. Vi rekommenderar att ändra detta eller temperaturen men inte båda.', // An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We recommend altering this or temperature but not both.
|
com_endpoint_openai_max:
|
||||||
com_endpoint_openai_freq: 'Nummer mellan -2,0 och 2,0. Positiva värden minskar nya tokens baserat på deras befintliga frekvens i texten hittills, vilket minskar modellens sannolikhet att upprepa samma rad ordagrant.', // Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
|
'Max tokens att generera. Den totala längden på tokens för inmatning och svar är begränsad av modellen som används.', // The max tokens to generate. The total length of input tokens and generated tokens is limited by the model's context length.
|
||||||
com_endpoint_openai_pres: 'Nummer mellan -2,0 och 2,0. Positiva värden minskar nya tokens baserat på om de förekommer i texten hittills, vilket ökar modellens sannolikhet att prata om nya ämnen.', // Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.
|
com_endpoint_openai_topp:
|
||||||
|
'Ett alternativ till temperatur, kallat kärnprovtagning, där modellen beaktar resultaten av tokens med top_p-sannolikhetsmassa. Så 0,1 innebär att endast de tokens som utgör den översta 10% sannolikhetsmassan beaktas. Vi rekommenderar att ändra detta eller temperaturen men inte båda.', // An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We recommend altering this or temperature but not both.
|
||||||
|
com_endpoint_openai_freq:
|
||||||
|
'Nummer mellan -2,0 och 2,0. Positiva värden minskar nya tokens baserat på deras befintliga frekvens i texten hittills, vilket minskar modellens sannolikhet att upprepa samma rad ordagrant.', // Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
|
||||||
|
com_endpoint_openai_pres:
|
||||||
|
'Nummer mellan -2,0 och 2,0. Positiva värden minskar nya tokens baserat på om de förekommer i texten hittills, vilket ökar modellens sannolikhet att prata om nya ämnen.', // Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.
|
||||||
com_endpoint_openai_custom_name_placeholder: 'Ange ett eget namn för ChatGPT', // Set a custom name for ChatGPT
|
com_endpoint_openai_custom_name_placeholder: 'Ange ett eget namn för ChatGPT', // Set a custom name for ChatGPT
|
||||||
com_endpoint_openai_prompt_prefix_placeholder: 'Ange anpassade instruktioner att inkludera i Systemmeddelande. Standard: inga', // Set custom instructions to include in System Message. Default: none
|
com_endpoint_openai_prompt_prefix_placeholder:
|
||||||
com_endpoint_anthropic_temp: 'Varierar mellan 0 och 1. Använd temp närmare 0 för analytiska/flervalsfrågor och närmare 1 för kreativa och generativa uppgifter. Vi rekommenderar att ändra detta eller Top P men inte båda.', // Ranges from 0 to 1. Use temp closer to 0 for analytical / multiple choice, and closer to 1 for creative and generative tasks. We recommend altering this or Top P but not both.
|
'Ange anpassade instruktioner att inkludera i Systemmeddelande. Standard: inga', // Set custom instructions to include in System Message. Default: none
|
||||||
com_endpoint_anthropic_topp: 'Top-p ändrar hur modellen väljer tokens för utdata. Tokens väljs från de mest K (se topK-parameter) sannolika till de minst tills summan av deras sannolikheter når top-p-värdet.', // Top-p changes how the model selects tokens for output. Tokens are selected from most K (see topK parameter) probable to least until the sum of their probabilities equals the top-p value.
|
com_endpoint_anthropic_temp:
|
||||||
com_endpoint_anthropic_topk: 'Top-k ändrar hur modellen väljer tokens för utdata. Ett top-k av 1 innebär att den valda token är den mest sannolika bland alla tokens i modellens vokabulär (kallas också girig avkodning), medan ett top-k av 3 innebär att nästa token väljs bland de 3 mest sannolika tokens (med temperatur).', // Top-k changes how the model selects tokens for output. A top-k of 1 means the selected token is the most probable among all tokens in the model's vocabulary (also called greedy decoding), while a top-k of 3 means that the next token is selected from among the 3 most probable tokens (using temperature).
|
'Varierar mellan 0 och 1. Använd temp närmare 0 för analytiska/flervalsfrågor och närmare 1 för kreativa och generativa uppgifter. Vi rekommenderar att ändra detta eller Top P men inte båda.', // Ranges from 0 to 1. Use temp closer to 0 for analytical / multiple choice, and closer to 1 for creative and generative tasks. We recommend altering this or Top P but not both.
|
||||||
com_endpoint_anthropic_maxoutputtokens: 'Maximalt antal tokens som kan genereras i svaret. Ange ett lägre värde för kortare svar och ett högre värde för längre svar.', // Maximum number of tokens that can be generated in the response. Specify a lower value for shorter responses and a higher value for longer responses.
|
com_endpoint_anthropic_topp:
|
||||||
|
'Top-p ändrar hur modellen väljer tokens för utdata. Tokens väljs från de mest K (se topK-parameter) sannolika till de minst tills summan av deras sannolikheter når top-p-värdet.', // Top-p changes how the model selects tokens for output. Tokens are selected from most K (see topK parameter) probable to least until the sum of their probabilities equals the top-p value.
|
||||||
|
com_endpoint_anthropic_topk:
|
||||||
|
'Top-k ändrar hur modellen väljer tokens för utdata. Ett top-k av 1 innebär att den valda token är den mest sannolika bland alla tokens i modellens vokabulär (kallas också girig avkodning), medan ett top-k av 3 innebär att nästa token väljs bland de 3 mest sannolika tokens (med temperatur).', // Top-k changes how the model selects tokens for output. A top-k of 1 means the selected token is the most probable among all tokens in the model's vocabulary (also called greedy decoding), while a top-k of 3 means that the next token is selected from among the 3 most probable tokens (using temperature).
|
||||||
|
com_endpoint_anthropic_maxoutputtokens:
|
||||||
|
'Maximalt antal tokens som kan genereras i svaret. Ange ett lägre värde för kortare svar och ett högre värde för längre svar.', // Maximum number of tokens that can be generated in the response. Specify a lower value for shorter responses and a higher value for longer responses.
|
||||||
com_endpoint_anthropic_custom_name_placeholder: 'Ange ett anpassat namn för Anthropic', // Set a custom name for Anthropic
|
com_endpoint_anthropic_custom_name_placeholder: 'Ange ett anpassat namn för Anthropic', // Set a custom name for Anthropic
|
||||||
com_endpoint_frequency_penalty: 'Frekvensstraff', // Frequency Penalty
|
com_endpoint_frequency_penalty: 'Frekvensstraff', // Frequency Penalty
|
||||||
com_endpoint_presence_penalty: 'Närvarostraff', // Presence Penalty
|
com_endpoint_presence_penalty: 'Närvarostraff', // Presence Penalty
|
||||||
|
|
@ -142,7 +167,8 @@ export default {
|
||||||
com_endpoint_plug_skip_completion: 'Hoppa över komplettering', // Skip Completion
|
com_endpoint_plug_skip_completion: 'Hoppa över komplettering', // Skip Completion
|
||||||
com_endpoint_disabled_with_tools: 'inaktiverad med verktyg', // disabled with tools
|
com_endpoint_disabled_with_tools: 'inaktiverad med verktyg', // disabled with tools
|
||||||
com_endpoint_disabled_with_tools_placeholder: 'Inaktiverad med valda verktyg', // Disabled with Tools Selected
|
com_endpoint_disabled_with_tools_placeholder: 'Inaktiverad med valda verktyg', // Disabled with Tools Selected
|
||||||
com_endpoint_plug_set_custom_instructions_for_gpt_placeholder: 'Ange anpassade instruktioner att inkludera i systemmeddelande. Standard: inga', // Set custom instructions to include in System Message. Default: none
|
com_endpoint_plug_set_custom_instructions_for_gpt_placeholder:
|
||||||
|
'Ange anpassade instruktioner att inkludera i systemmeddelande. Standard: inga', // Set custom instructions to include in System Message. Default: none
|
||||||
com_endpoint_import: 'Importera', // Import
|
com_endpoint_import: 'Importera', // Import
|
||||||
com_endpoint_set_custom_name: 'Ange ett eget namn, om du kan hitta denna förinställning', // Set a custom name, in case you can find this preset
|
com_endpoint_set_custom_name: 'Ange ett eget namn, om du kan hitta denna förinställning', // Set a custom name, in case you can find this preset
|
||||||
com_endpoint_preset: 'förinställning', // preset
|
com_endpoint_preset: 'förinställning', // preset
|
||||||
|
|
@ -159,7 +185,8 @@ export default {
|
||||||
com_endpoint_save: 'Spara', // Save
|
com_endpoint_save: 'Spara', // Save
|
||||||
com_endpoint_export: 'Exportera', // Export
|
com_endpoint_export: 'Exportera', // Export
|
||||||
com_endpoint_save_as_preset: 'Spara som förinställning', // Save As Preset
|
com_endpoint_save_as_preset: 'Spara som förinställning', // Save As Preset
|
||||||
com_endpoint_presets_clear_warning: 'Är du säker på att du vill rensa alla förinställningar? Detta går inte att ångra.', // Are you sure you want to clear all presets? This is irreversible.
|
com_endpoint_presets_clear_warning:
|
||||||
|
'Är du säker på att du vill rensa alla förinställningar? Detta går inte att ångra.', // Are you sure you want to clear all presets? This is irreversible.
|
||||||
com_endpoint_not_implemented: 'Ej implementerad', // Not implemented
|
com_endpoint_not_implemented: 'Ej implementerad', // Not implemented
|
||||||
com_endpoint_no_presets: 'Ingen förinställning ännu', // No preset yet
|
com_endpoint_no_presets: 'Ingen förinställning ännu', // No preset yet
|
||||||
com_endpoint_not_available: 'Ingen slutpunkt tillgänglig', // No endpoint available
|
com_endpoint_not_available: 'Ingen slutpunkt tillgänglig', // No endpoint available
|
||||||
|
|
@ -169,7 +196,8 @@ export default {
|
||||||
com_endpoint_agent_model: 'Agentmodell (Rekommenderad: GPT-3.5)', // Agent Model (Recommended: GPT-3.5)
|
com_endpoint_agent_model: 'Agentmodell (Rekommenderad: GPT-3.5)', // Agent Model (Recommended: GPT-3.5)
|
||||||
com_endpoint_completion_model: 'Kompletteringsmodell (Rekommenderad: GPT-4)', // Completion Model (Recommended: GPT-4)
|
com_endpoint_completion_model: 'Kompletteringsmodell (Rekommenderad: GPT-4)', // Completion Model (Recommended: GPT-4)
|
||||||
com_endpoint_func_hover: 'Aktivera användning av tillägg som OpenAI-funktioner', // Enable use of Plugins as OpenAI Functions
|
com_endpoint_func_hover: 'Aktivera användning av tillägg som OpenAI-funktioner', // Enable use of Plugins as OpenAI Functions
|
||||||
com_endpoint_skip_hover: 'Aktivera att hoppa över kompletteringssteg, som granskar det slutliga svaret och genererade steg', // Enable skipping the completion step, which reviews the final answer and generated steps
|
com_endpoint_skip_hover:
|
||||||
|
'Aktivera att hoppa över kompletteringssteg, som granskar det slutliga svaret och genererade steg', // Enable skipping the completion step, which reviews the final answer and generated steps
|
||||||
com_endpoint_config_key: 'Ange API-nyckel', // Set API Key
|
com_endpoint_config_key: 'Ange API-nyckel', // Set API Key
|
||||||
com_endpoint_config_key_for: 'Ange API-nyckel för', // Set API Key for
|
com_endpoint_config_key_for: 'Ange API-nyckel för', // Set API Key for
|
||||||
com_endpoint_config_key_name: 'Nyckel', // Key
|
com_endpoint_config_key_name: 'Nyckel', // Key
|
||||||
|
|
@ -179,13 +207,15 @@ export default {
|
||||||
com_endpoint_config_key_expiry: 'utgångstiden', // the expiry time
|
com_endpoint_config_key_expiry: 'utgångstiden', // the expiry time
|
||||||
com_endpoint_config_key_import_json_key: 'Importera JSON-nyckel för kontot.', // Import Service Account JSON Key.
|
com_endpoint_config_key_import_json_key: 'Importera JSON-nyckel för kontot.', // Import Service Account JSON Key.
|
||||||
com_endpoint_config_key_import_json_key_success: 'Lyckades importera JSON-nyckel för kontot', // Successfully Imported Service Account JSON Key
|
com_endpoint_config_key_import_json_key_success: 'Lyckades importera JSON-nyckel för kontot', // Successfully Imported Service Account JSON Key
|
||||||
com_endpoint_config_key_import_json_key_invalid: 'Ogiltig JSON-nyckel för konto, importerade du rätt fil?', // Invalid Service Account JSON Key, Did you import the correct file?
|
com_endpoint_config_key_import_json_key_invalid:
|
||||||
|
'Ogiltig JSON-nyckel för konto, importerade du rätt fil?', // Invalid Service Account JSON Key, Did you import the correct file?
|
||||||
com_endpoint_config_key_get_edge_key: 'För att få din åtkomstnyckel för Bing, logga in på', // To get your Access token for Bing, login to
|
com_endpoint_config_key_get_edge_key: 'För att få din åtkomstnyckel för Bing, logga in på', // To get your Access token for Bing, login to
|
||||||
com_endpoint_config_key_get_edge_key_dev_tool:
|
com_endpoint_config_key_get_edge_key_dev_tool:
|
||||||
'Använd utvecklingsverktyg eller ett tillägg när du är inloggad på webbplatsen för att kopiera innehållet i _U-cookien. Om detta misslyckas, följ dessa', // Use dev tools or an extension while logged into the site to copy the content of the _U cookie. If this fails, follow these
|
'Använd utvecklingsverktyg eller ett tillägg när du är inloggad på webbplatsen för att kopiera innehållet i _U-cookien. Om detta misslyckas, följ dessa', // Use dev tools or an extension while logged into the site to copy the content of the _U cookie. If this fails, follow these
|
||||||
com_endpoint_config_key_edge_instructions: 'instruktioner', // instructions
|
com_endpoint_config_key_edge_instructions: 'instruktioner', // instructions
|
||||||
com_endpoint_config_key_edge_full_key_string: 'för att tillhandahålla hela cookie-strängarna.', // to provide the full cookie strings.
|
com_endpoint_config_key_edge_full_key_string: 'för att tillhandahålla hela cookie-strängarna.', // to provide the full cookie strings.
|
||||||
com_endpoint_config_key_chatgpt: 'För att få din åtkomstnyckel för ChatGPT "Gratisversion", logga in på', // To get your Access token For ChatGPT 'Free Version', login to
|
com_endpoint_config_key_chatgpt:
|
||||||
|
'För att få din åtkomstnyckel för ChatGPT "Gratisversion", logga in på', // To get your Access token For ChatGPT 'Free Version', login to
|
||||||
com_endpoint_config_key_chatgpt_then_visit: 'sedan besök', // then visit
|
com_endpoint_config_key_chatgpt_then_visit: 'sedan besök', // then visit
|
||||||
com_endpoint_config_key_chatgpt_copy_token: 'Kopiera åtkomstnyckel.', // Copy access token.
|
com_endpoint_config_key_chatgpt_copy_token: 'Kopiera åtkomstnyckel.', // Copy access token.
|
||||||
com_endpoint_config_key_google_need_to: 'Du behöver', // You need to
|
com_endpoint_config_key_google_need_to: 'Du behöver', // You need to
|
||||||
|
|
@ -222,4 +252,4 @@ export default {
|
||||||
com_nav_search_placeholder: 'Sök meddelanden', // Search messages
|
com_nav_search_placeholder: 'Sök meddelanden', // Search messages
|
||||||
com_nav_setting_general: 'Allmänt', // General
|
com_nav_setting_general: 'Allmänt', // General
|
||||||
com_nav_setting_data: 'Datakontroller', // Data controls
|
com_nav_setting_data: 'Datakontroller', // Data controls
|
||||||
}
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { atom } from 'recoil';
|
||||||
|
|
||||||
const lang = atom({
|
const lang = atom({
|
||||||
key: 'lang',
|
key: 'lang',
|
||||||
default: 'en',
|
default: localStorage.getItem('lang') || 'en',
|
||||||
});
|
});
|
||||||
|
|
||||||
export default { lang };
|
export default { lang };
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue