Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/i18n/de/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,8 @@ const de = {
version: 'Version',
vocabOnly: 'Nur Vokabular',
writePromptToStart: 'Schreiben Sie eine Anweisung, um eine neue Sitzung zu starten',
you: 'Sie'
you: 'Sie',
thinkDescription: 'Enable thinking on model'
} satisfies BaseTranslation;

export default de;
3 changes: 2 additions & 1 deletion src/i18n/en/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,8 @@ const en = {
sessionsDescription: 'Entire session history, attachments and custom model settings',
knowledgeDescription: 'Entire knowledge base',
expandSidebar: 'Expand sidebar',
collapseSidebar: 'Collapse sidebar'
collapseSidebar: 'Collapse sidebar',
thinkDescription: 'Enable thinking on model'
} satisfies BaseTranslation;

export default en;
3 changes: 2 additions & 1 deletion src/i18n/es/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,8 @@ const es = {
verify: 'Verificar',
version: 'Versión',
writePromptToStart: 'Escribe una indicación para comenzar una nueva sesión',
you: 'Tú'
you: 'Tú',
thinkDescription: 'Enable thinking on model'
} satisfies BaseTranslation;

export default es;
3 changes: 2 additions & 1 deletion src/i18n/fr/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,8 @@ const fr = {
writePromptToStart: 'Écrivez une invite pour démarrer une nouvelle session',
you: 'Vous',
copiedNotPrivate: 'Contenu copié, mais votre connexion n’est pas privée',
notCopiedNotPrivate: 'Impossible de copier le contenu. La connexion n’est pas privée'
notCopiedNotPrivate: 'Impossible de copier le contenu. La connexion n’est pas privée',
thinkDescription: 'Enable thinking on model'
} satisfies BaseTranslation;

export default fr;
1 change: 1 addition & 0 deletions src/i18n/i18n-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export type Locales =
| 'en'
| 'es'
| 'fr'
| 'it'
| 'ja'
| 'pt-br'
| 'tr'
Expand Down
1 change: 1 addition & 0 deletions src/i18n/i18n-util.async.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ const localeTranslationLoaders = {
tr: () => import('./tr'),
vi: () => import('./vi'),
'zh-cn': () => import('./zh-cn'),
it: () => import('./it'),
}

const updateDictionary = (locale: Locales, dictionary: Partial<Translations>): Translations =>
Expand Down
2 changes: 2 additions & 0 deletions src/i18n/i18n-util.sync.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import pt_br from './pt-br'
import tr from './tr'
import vi from './vi'
import zh_cn from './zh-cn'
import it from './it'

const localeTranslations = {
de,
Expand All @@ -25,6 +26,7 @@ const localeTranslations = {
tr,
vi,
'zh-cn': zh_cn,
it,
}

export const loadLocale = (locale: Locales): void => {
Expand Down
1 change: 1 addition & 0 deletions src/i18n/i18n-util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export const locales: Locales[] = [
'en',
'es',
'fr',
'it',
'ja',
'pt-br',
'tr',
Expand Down
180 changes: 180 additions & 0 deletions src/i18n/it/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
import type { BaseTranslation } from '../i18n-types';

const it = {
addConnection: 'Aggiungi Connessione',
allowConnections: 'Modifica le impostazioni del server per consentire le connessioni da',
allowMixedContent: 'Permetti contenuti misti',
apiKey: 'API key',
areYouSureYouWantToDeleteAllKnowledge: 'Sei sicuro di voler eliminare tutte le knowledge?',
areYouSureYouWantToDeleteAllSessions: 'Sei sicuro di voler eliminare tutte le sessioni?',
areYouSureYouWantToDeleteAllPreferences: 'Sei sicuro di voler eliminare tutte le preferenze?',
areYouSureYouWantToDeleteAllServers: 'Sei sicuro di voler eliminare tutti i server?',
areYouSureYouWantToImportData:
'Sei sicuro di voler importare? Questo sovrascriverà ogni dato esistente',
areYouSureYouWantToLeave: 'Sei sicuro di voler uscire?\nI progressi completati verranno persi',
assistant: 'Assistente',
attachImage: 'Allega Immagine',
automatic: 'Auto',
automaticallyCheckForUpdates: 'Controlla aggiornamenti automaticamente',
availableModels: 'Modelli disponibili',
baseUrl: 'Base URL',
browseModels: 'Esplora i modelli disponibili',
cancel: 'Cancel',
cantConnectToOllamaServer: "Non riesco a connettermi al serve Ollama",
checkBrowserExtensions: 'Also check no browser extensions are blocking the connection',
checkingForUpdates: 'Controllo aggiornamenti...',
checkNow: 'Controlla adesso',
clear: 'Clear',
confirmDeletion: 'Conferma cancellazione',
confirmEdit: 'Conferma modifica',
connectionType: 'Tipo di connessione',
connectionLabelHelp: 'Identifica la connessione dalla lista dei modelli',
connecting: 'Connessione...',
connectionIsVerified: 'Connessione verificata e pronta all\'uso',
connectionFailedToVerify:
'Verifica connessione fallita, controlla le impostazioni e riprova',
content: 'Contenuto',
controls: 'Controlli',
controlsOnlyAvailableForOllama:
'Controlli avanzati sono al momento disponibili solo per modelli Ollama',
copy: 'Copia',
couldntCheckForUpdates: "Impossibile controllare gli aggiornamenti in modo automatico",
couldntConnectToOllamaServer: "Connessione al server Ollama non riuscita",
creatingTunnel: 'Creo un tunnel',
currentVersion: 'Versione corrente',
dangerZone: 'Zona pericolosa',
dark: 'Scuro',
delete: 'Cancella',
deleteKnowledge: 'Cancella knowledge',
deleteServer: 'Cancella server',
deleteSession: 'Cancella sessione',
disconnected: 'Disconnetti',
dismiss: 'Dismiss',
downloadModel: 'Download modello',
edit: 'Modifica',
editTitle: 'Modifica titolo',
emptyKnowledge: 'Nessuna knowledge',
emptySessions: 'Nessuna sessione',
error: 'Errore',
export: 'Esporta',
f16Kv: 'F16 KV',
frequencyPenalty: 'Frequency penalty',
genericError: 'Ci dispiace, qualcosa è andato storto',
goToDownloads: 'Vai a downloads',
goToKnowledge: 'Vai a knowledge',
goToReleases: 'Vai a releases',
howToObtainOpenAIKey: 'Come ottenere un\'API key da OpenAI?',
howToUpdateDocker: 'Come aggiornare un container Docker?',
import: 'Importa',
interface: 'Interfaccia',
internalServerError: 'Si è verificato un errore interno del server, perfavore riprova più tardi',
isCurrentVersionLatest: 'Stai usando l\'ultima versione',
isLatestVersion: 'Una versione più recente è disponibile',
knowledge: 'Knowledge',
knowledgeSaved: 'Knowledge salvata',
label: 'Etichetta',
language: 'Lingua',
lastUsedModels: 'Modelli usati di recente',
light: 'Chiaro',
lowVram: 'Low VRAM',
mainGpu: 'Main GPU',
messageOfTheDay: 'Message of the day',
messages: 'Messaggi',
minP: 'Min P',
mirostat: 'Mirostat',
mirostatEta: 'Mirostat ETA',
mirostatTau: 'Mirostat Tau',
modelNotFound: 'Modello non trovato',
modelOptions: 'Opzioni modello',
modelWasDownloaded: '{model:string} è stato scaricato',
modelsFilter: 'Filtro nome modello',
modelsFilterHelp: "Nasconde i nomi dei modelli che non cominciano per il filtro",
motd: 'Motd',
name: 'Nome',
newKnowledge: 'Nuova knowledge',
newSession: 'Nuova sessione',
noApiKey: 'No API key',
noKnowledgeChosen: 'Crea una nuova knowledge o scegline una dalla lista',
noRecentModels: 'Nessun modello usato di recente',
noServerConnections: 'Nessuna connessione verso il server, aggiungine una per cominciare',
noSessionChosen: 'Crea una sessione o scegline una esistente dalla lista',
notFound: 'La pagina che stai cercando non esiste',
numBatch: 'Num batch',
numCtx: 'Context size',
numGpu: 'Num GPU',
numKeep: 'Num keep',
numPredict: 'Num predict',
numThread: 'Number of threads',
numa: 'NUMA',
ollama: 'Ollama',
ollamaLibrary: "Libreria di Ollama",
openAIOfficialAPI: 'OpenAI: API ufficiale',
openAICompatible: 'OpenAI: Server compatibile (es. llama.cpp)',
otherModels: 'Altri modelli',
penalizeNewline: 'Penalizza newline',
preferences: 'Preferenze',
presencePenalty: 'Presence penalty',
prompt: 'Prompt',
promptPlaceholder: 'Scrivi qualsiasi cosa',
pullModel: 'Pull model',
pullModelPlaceholder: 'Tag modello (es. llama3.1)',
pullingModel: 'Pull modello',
random: 'Casuale',
reasoning: 'Ragionando',
refreshToUpdate: 'Ricarica per aggiornare',
releaseHistory: 'Cronologia release',
repeatLastN: 'Repeat last N',
repeatPenalty: 'Repeat penalty',
retry: 'Riprova',
run: 'Esegui',
reVerify: 'Ri-Verifica',
runtimeOptions: 'Opzioni runtime',
save: 'Salva',
search: 'Cerca',
searchEmpty: 'Nessun risultato',
seed: 'Seed',
seeDocs: 'Vedi documentazione',
servers: 'Server',
serverSettingsUpdated:
'La configurazione del server è stata aggiornata e deve ri-verificata nuovamente in \"Impostazioni\"',
session: 'Sessione',
sessions: 'Sessioni',
settings: 'Impostazioni',
somethingWentWrong: 'Ci dispiace, qualcosa è andato storto',
stop: 'Stop sequence',
stopCompletion: 'Interrompi completamento',
stopResponse: 'Interrompi risposta',
success: 'Success',
system: 'Sistema',
systemPrompt: 'Prompt di sistema',
temperature: 'Temperatura',
tfsZ: 'TFS Z',
topK: 'Top K',
topP: 'Top P',
tryingToConnectNotLocalhost:
'Se ti vuoi connettere a un server Ollama che non è disponibile su {hostname:string} oppure {ip:string} prova',
typicalP: 'Typical P',
unsavedChangesWillBeLost: 'Hai cambiamenti non salvati che potrebbero andare persi. Continuare?',
useMlock: 'Usa MLOCK',
useMmap: 'Usa MMAP',
useModelsFromThisServer: 'Usa modelli da questo server',
verify: 'Verifica',
version: 'Versione',
vocabOnly: 'Vocab only',
writePromptToStart: 'Scrivi un prompt per cominciare una nuova sessione',
you: 'Tu',
copiedNotPrivate: 'Contenuto copiato, ma la tua connessione non è privata',
notCopiedNotPrivate: "Non posso copiare il contenuto. La connessione non è privata",
importSuccess: 'Importato con successo',
importError: 'Importazione fallita',
deleteSuccess: 'Cancellato con successo',
serversDescription: 'Connessioni, filtri modelli ed etichette',
preferencesDescription: 'Lingua, tema, modelli usati di recente, etc',
sessionsDescription: 'Tutta la cronologia di sessione, allegati e impostazioni personalizzate dei modelli',
knowledgeDescription: 'Tutta la knowledge base',
expandSidebar: 'Espandi sidebar',
collapseSidebar: 'Comprimi sidebar',
thinkDescription: 'Abilita la thinking mode sul modello'
} satisfies BaseTranslation;

export default it;
3 changes: 2 additions & 1 deletion src/i18n/ja/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@ const ja = {
'もし {hostname:string} や {ip:string} から利用できないOllamaのサーバーに接続したい場合は、次を試してください',
version: 'バージョン',
writePromptToStart: '新しいセッションを開始するには、プロンプトを入力してください',
you: 'あなた'
you: 'あなた',
thinkDescription: 'Enable thinking on model'
} satisfies BaseTranslation;

export default ja;
3 changes: 2 additions & 1 deletion src/i18n/pt-br/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ const pt_br = {
'Deseja conectar a um servidor do Ollama que não está disponível em {hostname:string} ou {ip:string} tente',
version: 'Versão',
writePromptToStart: 'Escreva um prompt para iniciar uma nova sessão',
you: 'Você'
you: 'Você',
thinkDescription: 'Enable thinking on model'
} satisfies BaseTranslation;

export default pt_br;
3 changes: 2 additions & 1 deletion src/i18n/tr/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,8 @@ const tr = {
'{hostname:string} veya {ip:string} konumlarında bulunmayan bir Ollama sunucuna bağlanmak istiyorsanız şunu deneyin:',
version: 'Sürüm',
writePromptToStart: 'Bir komut yazarak yeni bir oturum başlat',
you: 'Sen'
you: 'Sen',
thinkDescription: 'Enable thinking on model'
} satisfies BaseTranslation;

export default tr;
3 changes: 2 additions & 1 deletion src/i18n/vi/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ const vi = {
version: 'Phiên bản',
vocabOnly: 'Chỉ từ vựng',
writePromptToStart: 'Viết một câu hỏi để bắt đầu phiên mới',
you: 'Bạn'
you: 'Bạn',
thinkDescription: 'Enable thinking on model'
} satisfies BaseTranslation;

export default vi;
3 changes: 2 additions & 1 deletion src/i18n/zh-cn/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,8 @@ const zh_cn = {
verify: '验证',
version: '版本',
writePromptToStart: '写一段提示词以开始新会话',
you: '你'
you: '你',
thinkDescription: 'Enable thinking on model'
} satisfies BaseTranslation;

export default zh_cn;
1 change: 1 addition & 0 deletions src/lib/chat/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export interface Message {
export interface ChatRequest {
model: string;
messages: Message[];
think?: boolean;
stream?: boolean;
options?: Partial<OllamaOptions>;
}
Expand Down
5 changes: 4 additions & 1 deletion src/lib/sessions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export interface Session {
systemPrompt: Message;
options: Partial<OllamaOptions>;
model?: Model;
think: boolean;
updatedAt?: string;
title?: string;
}
Expand Down Expand Up @@ -63,7 +64,8 @@ export const loadSession = (id: string): Session => {
// created before this feature was implemented need to be set to the defaults.
// Over time we can probably remove them.
options: existingSession.options || {},
systemPrompt: existingSession.systemPrompt || defaultSystemPrompt
systemPrompt: existingSession.systemPrompt || defaultSystemPrompt,
think: existingSession.think || false
};
}
}
Expand All @@ -78,6 +80,7 @@ export const loadSession = (id: string): Session => {
model,
systemPrompt: defaultSystemPrompt,
updatedAt: new Date().toISOString(),
think: false,
messages: [],
options: {}
};
Expand Down
1 change: 1 addition & 0 deletions src/routes/sessions/[id]/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@
let chatRequest: ChatRequest = {
model: session.model.name,
options: session.options,
think: session.think,
messages: chatMessagesForRequest
};

Expand Down
13 changes: 12 additions & 1 deletion src/routes/sessions/[id]/Prompt.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts">
import { Brain, CircleStop, Image, LoaderCircle, UnfoldVertical } from 'lucide-svelte';
import { Lightbulb, Brain, CircleStop, Image, LoaderCircle, UnfoldVertical } from 'lucide-svelte';
import MessageSquareText from 'lucide-svelte/icons/message-square-text';
import Settings_2 from 'lucide-svelte/icons/settings-2';
import Trash_2 from 'lucide-svelte/icons/trash-2';
Expand Down Expand Up @@ -378,6 +378,7 @@
>
<Brain class="base-icon" />
</Button>

<Button
variant="outline"
onclick={handleImageUploadClick}
Expand All @@ -386,6 +387,16 @@
>
<Image class="base-icon" />
</Button>


<Button
variant={ session.think ? 'default' : 'outline' }
onclick={() => session.think = !session.think}
data-testid="thinking-mode"
title={$LL.thinkDescription()}
>
<Lightbulb class="base-icon" />
</Button>
</div>

<div class="prompt-editor__submit">
Expand Down
1 change: 1 addition & 0 deletions src/routes/settings/Interface.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
{ value: 'zh-cn', label: '中文 (简体)' },
{ value: 'es', label: 'Español' },
{ value: 'fr', label: 'Français' },
{ value: 'it', label: 'Italiano' },
{ value: 'pt-br', label: 'Português (Brasil)' },
{ value: 'ja', label: '日本語' },
{ value: 'tr', label: 'Türkçe' },
Expand Down