Compare commits
49 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
56064831d3 | ||
|
|
4bdb813b64 | ||
|
|
ad69887e4a | ||
|
|
c8f148d1f8 | ||
|
|
365e39a20a | ||
|
|
48c2fd2e81 | ||
|
|
3a5dc568c5 | ||
|
|
a180f7a46c | ||
|
|
07a12ba41f | ||
|
|
dd5351a3de | ||
|
|
ae48a17301 | ||
|
|
9e19698788 | ||
|
|
323725df33 | ||
|
|
7c40420048 | ||
|
|
fac51aefb9 | ||
|
|
8f1fbc511a | ||
|
|
f0bf112faf | ||
|
|
b2a15b92cd | ||
|
|
9b71bbea2e | ||
|
|
2645ab3732 | ||
|
|
8672c4ac40 | ||
|
|
b8bfd54515 | ||
|
|
a29d245381 | ||
|
|
f57427e2c4 | ||
|
|
3631f06075 | ||
|
|
67a66f85da | ||
|
|
16f620b034 | ||
|
|
77b32b4912 | ||
|
|
257197d4d8 | ||
|
|
19cc97a1c4 | ||
|
|
93652cd9f7 | ||
|
|
540a0dc915 | ||
|
|
54c1b9a96e | ||
|
|
a9663b45fc | ||
|
|
9bf029f8b3 | ||
|
|
a94d1dfc92 | ||
|
|
e90ef93a04 | ||
|
|
a7ba5da943 | ||
|
|
1e287dde6f | ||
|
|
05461fb03a | ||
|
|
aa79368b54 | ||
|
|
cb4e52f103 | ||
|
|
91fc745d2f | ||
|
|
a719783cce | ||
|
|
766636718a | ||
|
|
59d2430e2f | ||
|
|
074b4dc643 | ||
|
|
92dd56b0c4 | ||
|
|
25c414faa3 |
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@@ -1,6 +1,7 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: jeffser # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
ko_fi: jeffser
|
||||
#patreon: # Replace with a single Patreon username
|
||||
#open_collective: # Replace with a single Open Collective username
|
||||
#ko_fi: # Replace with a single Ko-fi username
|
||||
|
||||
20
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Something is wrong
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
15
README.md
15
README.md
@@ -41,6 +41,20 @@ Login to Ollama instance | Chatting with models | Managing
|
||||
2. Download the latest flatpak package
|
||||
3. Open it
|
||||
|
||||
## Ollama session tips
|
||||
|
||||
### Migrate Ollama session to Alpaca's integrated session
|
||||
For now Alpaca doesn't offer a way to do this from the GUI but it's really simple, when you are using Ollama it creates a folder in the home directory called `.ollama`, you just need to move that folder to `~/.var/app/com.jeffser.Alpaca/data/`
|
||||
|
||||
### Change the port of the integrated Ollama instance
|
||||
Go to `~/.var/app/com.jeffser.Alpaca/config/server.json` and change the `"local_port"` value, by default it is `11435`.
|
||||
|
||||
### Backup all the chats
|
||||
The chat data is located in `~/.var/app/com.jeffser.Alpaca/config/chats.json` you can copy that file wherever you want to.
|
||||
|
||||
### Force showing the welcome dialog
|
||||
To do that you just need to delete the file `~/.var/app/com.jeffser.Alpaca/config/server.json`, this won't affect your saved chats or models.
|
||||
|
||||
---
|
||||
|
||||
## Thanks
|
||||
@@ -49,6 +63,7 @@ Login to Ollama instance | Chatting with models | Managing
|
||||
- [Alexkdeveloper](https://github.com/alexkdeveloper) for their help translating the app to Russian
|
||||
- [Imbev](https://github.com/imbev) for their reports and suggestions
|
||||
- [Nokse](https://github.com/Nokse22) for their contributions to the UI
|
||||
- [Louis Chauvet-Villaret](https://github.com/loulou64490) for their suggestions and help translating the app to French
|
||||
|
||||
## About forks
|
||||
If you want to fork this... I mean, I think it would be better if you start from scratch, my code isn't well documented at all, but if you really want to, please give me some credit, that's all I ask for... And maybe a donation (joke)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<project_license>GPL-3.0-or-later</project_license>
|
||||
<launchable type="desktop-id">com.jeffser.Alpaca.desktop</launchable>
|
||||
<name>Alpaca</name>
|
||||
<summary>Chat with local AI models powered by Ollama</summary>
|
||||
<summary>Chat with local AI models</summary>
|
||||
<description>
|
||||
<p>An Ollama client</p>
|
||||
<p>Features</p>
|
||||
@@ -63,6 +63,63 @@
|
||||
<url type="homepage">https://github.com/Jeffser/Alpaca</url>
|
||||
<url type="donation">https://github.com/sponsors/Jeffser</url>
|
||||
<releases>
|
||||
<release version="0.9.1" date="2024-05-29">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.9.1</url>
|
||||
<description>
|
||||
<p>Big Update</p>
|
||||
<ul>
|
||||
<li>Changed multiple icons (paper airplane for the send button)</li>
|
||||
<li>Combined export / import chat buttons into a menu</li>
|
||||
<li>Added 'model tweaks' (temperature, seed, keep_alive)</li>
|
||||
<li>Fixed send / stop button</li>
|
||||
<li>Fixed app not checking if remote connection works when starting</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.9.0" date="2024-05-29">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.9.0</url>
|
||||
<description>
|
||||
<p>Daily Update</p>
|
||||
<ul>
|
||||
<li>Added text ellipsis to chat name so it doesn't change the button width</li>
|
||||
<li>New shortcut for creating a chat (CTRL+N)</li>
|
||||
<li>New message entry design</li>
|
||||
<li>Fixed: Can't rename the same chat multiple times</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.8" date="2024-05-28">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.8.8</url>
|
||||
<description>
|
||||
<p>The fix</p>
|
||||
<ul>
|
||||
<li>Fixed: Ollama instance keeps running on the background even when it is disabled</li>
|
||||
<li>Fixed: Can't pull models on the integrated instance</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.7" date="2024-05-27">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.8.7</url>
|
||||
<description>
|
||||
<p>Quick tweaks</p>
|
||||
<ul>
|
||||
<li>Added progress bar to models that are being pulled</li>
|
||||
<li>Added size to tags when pulling a model</li>
|
||||
<li>General optimizations on the background</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.6" date="2024-05-26">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.8.6</url>
|
||||
<description>
|
||||
<p>Quick fixes</p>
|
||||
<ul>
|
||||
<li>Fixed: Scroll when message is received</li>
|
||||
<li>Fixed: Content doesn't change when creating a new chat</li>
|
||||
<li>Added 'Featured Models' page on welcome dialog</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.5" date="2024-05-26">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.8.5</url>
|
||||
<description>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
project('Alpaca',
|
||||
version: '0.8.5',
|
||||
version: '0.9.1',
|
||||
meson_version: '>= 0.62.0',
|
||||
default_options: [ 'warning_level=2', 'werror=false', ],
|
||||
)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
ru
|
||||
es
|
||||
pt_BR
|
||||
fr
|
||||
672
po/alpaca.pot
672
po/alpaca.pot
File diff suppressed because it is too large
Load Diff
953
po/fr.po
Normal file
953
po/fr.po
Normal file
@@ -0,0 +1,953 @@
|
||||
# French translation for Alpaca
|
||||
#
|
||||
# Translate guideline :
|
||||
#
|
||||
# English French
|
||||
# to chat discuter
|
||||
# a chat une discussion
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.8.7\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-05-29 16:18-0600\n"
|
||||
"PO-Revision-Date: 2024-05-28 21:02+0200\n"
|
||||
"Last-Translator: Louis Chauvet-Villaret <louischauvet0@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.4.4\n"
|
||||
|
||||
#: data/com.jeffser.Alpaca.desktop.in:3
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:7
|
||||
msgid "Alpaca"
|
||||
msgstr "Alpaca"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:8
|
||||
#, fuzzy
|
||||
msgid "Chat with local AI models"
|
||||
msgstr "Discutez avec des modèles d'IA fonctionnant localement grâce à Ollama"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:10
|
||||
msgid "An Ollama client"
|
||||
msgstr "Un client Ollama"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:357
|
||||
msgid "Features"
|
||||
msgstr "Fonctionnalités"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:13
|
||||
msgid "Built in Ollama instance"
|
||||
msgstr "Intégrée dans l'instance Ollama"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:14
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:359
|
||||
msgid "Talk to multiple models in the same conversation"
|
||||
msgstr "Discutez avec plusieurs modèles dans la même discussion"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:15
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:360
|
||||
msgid "Pull and delete models from the app"
|
||||
msgstr "Téléchargez et supprimez des modèles depuis l'application"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:16
|
||||
msgid "Have multiple conversations"
|
||||
msgstr "Ayez plusieurs discussions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:17
|
||||
msgid "Image recognition (Only available with compatible models)"
|
||||
msgstr ""
|
||||
"Reconnaissance d'image (Uniquement disponible avec les modèles compatibles)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:18
|
||||
msgid "Import and export chats"
|
||||
msgstr "Importez et exportez des discussions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:20 src/window.ui:506
|
||||
msgid "Disclaimer"
|
||||
msgstr "Avertissement"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:21
|
||||
msgid ""
|
||||
"This project is not affiliated at all with Ollama, I'm not responsible for "
|
||||
"any damages to your device or software caused by running code given by any "
|
||||
"models."
|
||||
msgstr ""
|
||||
"Ce projet n'est aucunement affilié avec Ollama, et je ne suis aucunement "
|
||||
"responsable des dommages causés à votre appareil ou vos logiciels en "
|
||||
"exécutant du code donné par n'importe quel modèle."
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:24
|
||||
msgid "Jeffry Samuel Eduarte Rojas"
|
||||
msgstr "Jeffry Samuel Eduarte Rojas"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:50
|
||||
msgid "A conversation showing code highlight"
|
||||
msgstr "Une discussion montrant code avec de la coloration syntaxique"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:54
|
||||
msgid "A conversation involving multiple models"
|
||||
msgstr "Une discussion utilisant plusieurs modèles"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:58
|
||||
msgid "Managing models"
|
||||
msgstr "Gestion des modèles"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:69
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:274
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:331
|
||||
msgid "Big Update"
|
||||
msgstr "Mise à jour majeure"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:71
|
||||
msgid "Changed multiple icons (paper airplane for the send button)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:72
|
||||
msgid "Combined export / import chat buttons into a menu"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:73
|
||||
msgid "Added 'model tweaks' (temperature, seed, keep_alive)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:74
|
||||
msgid "Fixed send / stop button"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:75
|
||||
msgid "Fixed app not checking if remote connection works when starting"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:82
|
||||
#, fuzzy
|
||||
msgid "Daily Update"
|
||||
msgstr "Une autre mise à jour quotidienne"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:84
|
||||
msgid "Added text ellipsis to chat name so it doesn't change the button width"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:85
|
||||
msgid "New shortcut for creating a chat (CTRL+N)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:86
|
||||
msgid "New message entry design"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:87
|
||||
msgid "Fixed: Can't rename the same chat multiple times"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:94
|
||||
msgid "The fix"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:96
|
||||
msgid ""
|
||||
"Fixed: Ollama instance keeps running on the background even when it is "
|
||||
"disabled"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:97
|
||||
msgid "Fixed: Can't pull models on the integrated instance"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:104
|
||||
#, fuzzy
|
||||
msgid "Quick tweaks"
|
||||
msgstr "Petites corrections"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:106
|
||||
msgid "Added progress bar to models that are being pulled"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:107
|
||||
msgid "Added size to tags when pulling a model"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:108
|
||||
#, fuzzy
|
||||
msgid "General optimizations on the background"
|
||||
msgstr "Optimisations générales"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:115
|
||||
msgid "Quick fixes"
|
||||
msgstr "Petites corrections"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:117
|
||||
msgid "Fixed: Scroll when message is received"
|
||||
msgstr "Correction: Défilement lors de la réception d'un message"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:118
|
||||
msgid "Fixed: Content doesn't change when creating a new chat"
|
||||
msgstr ""
|
||||
"Correction: Le contenu ne change pas lors de la création d'un nouveau chat"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:119
|
||||
msgid "Added 'Featured Models' page on welcome dialog"
|
||||
msgstr ""
|
||||
"Ajout de la page 'Modèles Suggérés' sur la fenêtre de dialogue d'accueil"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:126
|
||||
msgid "Nice Update"
|
||||
msgstr "Bonne mise à jour"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:128
|
||||
msgid "UI tweaks (Thanks Nokse22)"
|
||||
msgstr "Ajustement de l'interface utilisateur (Merci à Nokse22)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:129
|
||||
msgid "General optimizations"
|
||||
msgstr "Optimisations générales"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:130
|
||||
msgid "Metadata fixes"
|
||||
msgstr "Correction des métadonnées"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:137
|
||||
msgid "Quick fix"
|
||||
msgstr "Petite correction"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:139
|
||||
msgid "Updated Spanish translation"
|
||||
msgstr "Mise à jour de la traduction Espagnol"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:140
|
||||
msgid "Added compatibility for PNG"
|
||||
msgstr "Ajout de la compatibilité pour les images PNG"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:147
|
||||
msgid "New Update"
|
||||
msgstr "Nouvelle mise à jour"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:149
|
||||
msgid "Updated model list"
|
||||
msgstr "Liste des modèles mise à jour"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:150
|
||||
msgid "Added image recognition to more models"
|
||||
msgstr "Ajout de la reconnaissance d'image à plus de modèles"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:151
|
||||
msgid "Added Brazilian Portuguese translation (Thanks Daimaar Stein)"
|
||||
msgstr "Ajout de la traduction en Portugais Brésilien (Merci à Daimaar Stein)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:152
|
||||
msgid "Refined the general UI (Thanks Nokse22)"
|
||||
msgstr "Peaufinage de l'interface utilisateur (Merci à Nokse22)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:153
|
||||
msgid "Added 'delete message' feature"
|
||||
msgstr "Ajout de l'option 'supprimer le message'"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:154
|
||||
msgid ""
|
||||
"Added metadata so that software distributors know that the app is compatible "
|
||||
"with mobile"
|
||||
msgstr ""
|
||||
"Ajout de métadonnées pour que les distributeurs de logiciels sachent que "
|
||||
"l'application est compatible avec les téléphones"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:155
|
||||
msgid ""
|
||||
"Changed 'send' shortcut to just the return/enter key (to add a new line use "
|
||||
"shift+return)"
|
||||
msgstr ""
|
||||
"Changement du raccourci 'envoyer' en une simple touche retour/entrée (pour "
|
||||
"ajouter une nouvelle ligne, utiliser shift+retour)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:162
|
||||
msgid "Bug Fixes"
|
||||
msgstr "Résolution de bogues"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:164
|
||||
msgid "Fixed: Minor spelling mistake"
|
||||
msgstr "Corrigé: Petite faute d'orthographe"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:165
|
||||
msgid "Added 'mobile' as a supported form factor"
|
||||
msgstr "Ajout de la mise en page 'mobile'"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:166
|
||||
msgid "Fixed: 'Connection Error' dialog not working properly"
|
||||
msgstr ""
|
||||
"Correction: La boîte de dialogue « Erreur de connexion » ne fonctionnait pas "
|
||||
"correctement"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:167
|
||||
msgid "Fixed: App might freeze randomly on startup"
|
||||
msgstr ""
|
||||
"Correction: L'application pouvait se bloquer aléatoirement au démarrage"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:168
|
||||
msgid "Changed 'chats' label on sidebar for 'Alpaca'"
|
||||
msgstr "Changement du titre 'chats' de la barre latéral par 'Alpaca'"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:175
|
||||
msgid "Cool Update"
|
||||
msgstr "Mise à jour sympa"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:177
|
||||
msgid "Better design for chat window"
|
||||
msgstr "Meilleur design pour de fenêtre de discussion"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:178
|
||||
msgid "Better design for chat sidebar"
|
||||
msgstr "Meilleur design pour de la barre latérale"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:179
|
||||
msgid "Fixed remote connections"
|
||||
msgstr "Correction des connexions à distance"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:180
|
||||
msgid "Fixed Ollama restarting in loop"
|
||||
msgstr "Correction d'Ollama qui redémarrait en boucle"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:181
|
||||
msgid "Other cool backend stuff"
|
||||
msgstr "Autres trucs sympas en arrière-plan"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:188
|
||||
msgid "Huge Update"
|
||||
msgstr "Grande mise à jour"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:190
|
||||
msgid "Added Ollama as part of Alpaca, Ollama will run in a sandbox"
|
||||
msgstr ""
|
||||
"Ajout d'Ollama comme partie d'Alpaca, Ollama fonctionnera dans un bac à sable"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:191
|
||||
msgid "Added option to connect to remote instances (how it worked before)"
|
||||
msgstr ""
|
||||
"Ajout de l'option pour se connecter à des instances distantes (comme cela "
|
||||
"fonctionnait précédemment)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:192
|
||||
msgid "Added option to import and export chats"
|
||||
msgstr "Ajout de l'option pour importer et exporter les discussions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:193
|
||||
msgid "Added option to run Alpaca with Ollama in the background"
|
||||
msgstr "Ajout de l'option pour exécuter Alpaca avec Ollama en arrière-plan"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:194
|
||||
msgid "Added preferences dialog"
|
||||
msgstr "Ajout de la boite de dialogue des paramètres"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:195
|
||||
msgid "Changed the welcome dialog"
|
||||
msgstr "Changement de la boite de dialogue de bienvenue"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:197
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:214
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:226
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:245
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:266
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:282
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:298
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:312
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:322
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:340
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:362
|
||||
msgid "Please report any errors to the issues page, thank you."
|
||||
msgstr "Merci de reporter n'importe quel erreur sur la page des problèmes."
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:205
|
||||
msgid "Yet Another Daily Update"
|
||||
msgstr "Encore une autre mise à jour quotidienne"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:207
|
||||
msgid "Added better UI for 'Manage Models' dialog"
|
||||
msgstr ""
|
||||
"Ajout d'une meilleur interface utilisateur pour la boite de dialogue "
|
||||
"'Gestion des modèles'"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:208
|
||||
msgid "Added better UI for the chat sidebar"
|
||||
msgstr "Ajout d'une meilleur interface utilisateur pour la barre latérale"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:209
|
||||
msgid ""
|
||||
"Replaced model description with a button to open Ollama's website for the "
|
||||
"model"
|
||||
msgstr ""
|
||||
"Remplacement de la description du modèle par un bouton pour ouvrir le site "
|
||||
"web Ollama pour le modèle"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:210
|
||||
msgid "Added myself to the credits as the spanish translator"
|
||||
msgstr "Ajout de moi-même aux crédits en tant que traducteur espagnol"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:211
|
||||
msgid "Using XDG properly to get config folder"
|
||||
msgstr "Utilisation de XDG correctement pour avoir un dossier de configuration"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:212
|
||||
msgid "Update for translations"
|
||||
msgstr "Mise à jour concernant les traductions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:222
|
||||
msgid "Quick Fix"
|
||||
msgstr "Petite correction"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:224
|
||||
msgid "The last update had some mistakes in the description of the update"
|
||||
msgstr ""
|
||||
"La dernière mise à jour avait quelques erreurs dans la description de la "
|
||||
"mise à jour"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:234
|
||||
msgid "Another Daily Update"
|
||||
msgstr "Une autre mise à jour quotidienne"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:236
|
||||
msgid "Added full Spanish translation"
|
||||
msgstr "Ajout de la traduction complète Espagnol"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:237
|
||||
msgid "Added support for background pulling of multiple models"
|
||||
msgstr ""
|
||||
"Ajout du support pour le téléchargement de plusieurs modèles en arrière-plan"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:238
|
||||
msgid "Added interrupt button"
|
||||
msgstr "Ajout d'un bouton d'interruptions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:239
|
||||
msgid "Added basic shortcuts"
|
||||
msgstr "Ajout de raccourcis claviers simples"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:240
|
||||
msgid "Better translation support"
|
||||
msgstr "Meilleur support des traductions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:241
|
||||
msgid ""
|
||||
"User can now leave chat name empty when creating a new one, it will add a "
|
||||
"placeholder name"
|
||||
msgstr ""
|
||||
"L'utilisateur peut maintenant quitter une discussion vide quand il en crée "
|
||||
"un nouvelle, cela va ajouter un nom de remplacement"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:242
|
||||
msgid "Better scalling for different window sizes"
|
||||
msgstr "Meilleure mise à l'échelle pour différente taille de fenêtre"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:243
|
||||
msgid "Fixed: Can't close app if first time setup fails"
|
||||
msgstr ""
|
||||
"Correction: Impossible de fermer l'application si la première configuration "
|
||||
"échouait"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:253
|
||||
msgid "Really Big Update"
|
||||
msgstr "Mise à jour vraiment majeure"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:255
|
||||
msgid "Added multiple chats support!"
|
||||
msgstr "Ajout du support de plusieurs discussions !"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:256
|
||||
msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)"
|
||||
msgstr ""
|
||||
"Ajout du support de Pango Markup (gras, liste, titre, sous-titre, chasse-"
|
||||
"fixe)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:257
|
||||
msgid "Added autoscroll if the user is at the bottom of the chat"
|
||||
msgstr ""
|
||||
"Ajout d'un défilement automatique si l'utilisateur est en haut d'une "
|
||||
"conersation"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:258
|
||||
msgid "Added support for multiple tags on a single model"
|
||||
msgstr "Ajout du support de plusieurs tag sur un seul modèle"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:259
|
||||
msgid "Added better model management dialog"
|
||||
msgstr "Ajout d'une meilleur boite de dialogue pour la gestion des modèles"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:260
|
||||
msgid "Added loading spinner when sending message"
|
||||
msgstr "Ajout d'un loader lors de m'envoie d'un message"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:261
|
||||
msgid "Added notifications if app is not active and a model pull finishes"
|
||||
msgstr ""
|
||||
"Ajout d'une notification si l'application n'est pas active et que le "
|
||||
"téléchargement d'un modèle est terminé"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:262
|
||||
msgid "Added new symbolic icon"
|
||||
msgstr "Ajout de nouveau icônes symboliques"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:263
|
||||
msgid "Added frame to message textview widget"
|
||||
msgstr "Ajout d'un cadre pour le widget des messages"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:264
|
||||
msgid "Fixed \"code blocks shouldn't be editable\""
|
||||
msgstr "Correction 'les blocs de codes ne peuvent pas être édité'"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:276
|
||||
msgid "Added code highlighting"
|
||||
msgstr "Ajout de coloration syntaxique du code"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:277
|
||||
msgid "Added image recognition (llava model)"
|
||||
msgstr "Ajout de la reconnaissance d'image (modèle llava)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:278
|
||||
msgid "Added multiline prompt"
|
||||
msgstr "Ajout des prompts multilignes"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:279
|
||||
msgid "Fixed some small bugs"
|
||||
msgstr "Correction de petits bogues"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:280
|
||||
msgid "General optimization"
|
||||
msgstr "Optimisation générale"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:290
|
||||
msgid "Fixes and features"
|
||||
msgstr "Corrections et fonctionnalités"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:292
|
||||
msgid "Russian translation (thanks github/alexkdeveloper)"
|
||||
msgstr "Traduction Russe (Merci github/alexkdeveloper)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:293
|
||||
msgid "Fixed: Cannot close app on first setup"
|
||||
msgstr ""
|
||||
"Correction: Impossible de fermer l'application lors de la première "
|
||||
"installation"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:294
|
||||
msgid "Fixed: Brand colors for Flathub"
|
||||
msgstr "Correction: Couleurs de la marque Flathub"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:295
|
||||
msgid "Fixed: App description"
|
||||
msgstr "Correction: Description de l'application"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:296
|
||||
msgid "Fixed: Only show 'save changes dialog' when you actually change the url"
|
||||
msgstr ""
|
||||
"Correction: N'afficher la boîte de dialogue « enregistrer les "
|
||||
"modifications » que lorsque l'url est réellement modifiée"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:306
|
||||
msgid "0.2.2 Bug fixes"
|
||||
msgstr "0.2.2 Corrections de bug"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:308
|
||||
msgid "Toast messages appearing behind dialogs"
|
||||
msgstr ""
|
||||
"Les messages de notifications apparaissaient derrière les boites de dialogue"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:309
|
||||
msgid "Local model list not updating when changing servers"
|
||||
msgstr ""
|
||||
"La liste des modèles locaux n'était pas mise à jour lors d'un changement de "
|
||||
"serveur"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:310
|
||||
msgid "Closing the setup dialog closes the whole app"
|
||||
msgstr ""
|
||||
"La fermeture de la boite de dialogue des paramètres fermait toute "
|
||||
"l'application"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:320
|
||||
msgid "0.2.1 Data saving fix"
|
||||
msgstr "0.2.1 Correction de la sauvegarde des données"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:321
|
||||
msgid ""
|
||||
"The app didn't save the config files and chat history to the right "
|
||||
"directory, this is now fixed"
|
||||
msgstr ""
|
||||
"L'application ne sauvegardais pas le fichier de configuration et "
|
||||
"l'historique de discussion dans le bon dossier, c'est maintenant corrigé"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:330
|
||||
msgid "0.2.0"
|
||||
msgstr "0.2.0"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:332
|
||||
msgid "New Features"
|
||||
msgstr "Nouvelles fonctionnalités"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:334
|
||||
msgid "Restore chat after closing the app"
|
||||
msgstr "Restaurer la discussion après avoir fermé l'application"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:335
|
||||
msgid "A button to clear the chat"
|
||||
msgstr "Un bouton pour effacer le chat"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:336
|
||||
msgid "Fixed multiple bugs involving how messages are shown"
|
||||
msgstr "Correction de plusieurs bogues concernant l'affichage des messages"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:337
|
||||
msgid "Added welcome dialog"
|
||||
msgstr "Ajout de la boite de dialogue de bienvenue"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:338
|
||||
msgid "More stability"
|
||||
msgstr "Plus de stabilité"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:348
|
||||
msgid "0.1.2 Quick fixes"
|
||||
msgstr "0.1.2 Petites corrections"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:349
|
||||
msgid ""
|
||||
"This release fixes some metadata needed to have a proper Flatpak application"
|
||||
msgstr ""
|
||||
"Cette version corrige quelques métadonnées pour avoir une application "
|
||||
"Flatpak correct"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:355
|
||||
msgid "0.1.1 Stable Release"
|
||||
msgstr "0.1.1 Version stable"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:356
|
||||
msgid "This is the first public version of Alpaca"
|
||||
msgstr "Ceci est la première version publique d'Alpaca"
|
||||
|
||||
#: src/window.py:53 src/window.py:670 src/window.py:675 src/window.py:735
|
||||
#: src/window.ui:681
|
||||
msgid "New Chat"
|
||||
msgstr "Nouvelle discussion"
|
||||
|
||||
#: src/window.py:98
|
||||
msgid "An error occurred"
|
||||
msgstr "Une erreur est survenue"
|
||||
|
||||
#: src/window.py:99
|
||||
msgid "Failed to connect to server"
|
||||
msgstr "Erreur de connexion au serveur"
|
||||
|
||||
#: src/window.py:100
|
||||
msgid "Could not list local models"
|
||||
msgstr "Impossible de lister les modèles locaux"
|
||||
|
||||
#: src/window.py:101
|
||||
msgid "Could not delete model"
|
||||
msgstr "Impossible de supprimer le modèle"
|
||||
|
||||
#: src/window.py:102
|
||||
msgid "Could not pull model"
|
||||
msgstr "Impossible de télécharger le modèle"
|
||||
|
||||
#: src/window.py:103
|
||||
msgid "Cannot open image"
|
||||
msgstr "Impossible d'ouvrir l'image"
|
||||
|
||||
#: src/window.py:104
|
||||
msgid "Cannot delete chat because it's the only one left"
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas supprimer la discussion car c'est la seule qui reste"
|
||||
|
||||
#: src/window.py:105
|
||||
msgid "There was an error with the local Ollama instance, so it has been reset"
|
||||
msgstr ""
|
||||
"Une erreur est survenue avec l'instance local d'Ollama, elle a donc été "
|
||||
"reinitialisée"
|
||||
|
||||
#: src/window.py:108
|
||||
msgid "Please select a model before chatting"
|
||||
msgstr "Merci de sélectionner un modèle avant de discuter"
|
||||
|
||||
#: src/window.py:109
|
||||
msgid "Chat cannot be cleared while receiving a message"
|
||||
msgstr ""
|
||||
"La discussion ne peut pas être supprimé pendant la réception d'un message"
|
||||
|
||||
#: src/window.py:110
|
||||
msgid "That tag is already being pulled"
|
||||
msgstr "Ce tag est déjà en train d'être téléchargé"
|
||||
|
||||
#: src/window.py:111
|
||||
msgid "That tag has been pulled already"
|
||||
msgstr "Ce tag à déjà été télécharger"
|
||||
|
||||
#: src/window.py:112
|
||||
msgid "Code copied to the clipboard"
|
||||
msgstr "Code copié dans le presse-papier"
|
||||
|
||||
#: src/window.py:115
|
||||
msgid "Model deleted successfully"
|
||||
msgstr "Modèle supprimé avec succès"
|
||||
|
||||
#: src/window.py:116
|
||||
msgid "Model pulled successfully"
|
||||
msgstr "Modèle téléchargé avec succès"
|
||||
|
||||
#: src/window.py:117
|
||||
msgid "Chat exported successfully"
|
||||
msgstr "Discussion exportée avec succès"
|
||||
|
||||
#: src/window.py:118
|
||||
msgid "Chat imported successfully"
|
||||
msgstr "Discussion importée avec succès"
|
||||
|
||||
#: src/window.py:130
|
||||
msgid "Upload image"
|
||||
msgstr "Charger une image"
|
||||
|
||||
#: src/window.py:134 src/window.ui:179
|
||||
msgid "Only available on selected models"
|
||||
msgstr "Seulement disponible sur les modèles sélectionnés"
|
||||
|
||||
#: src/window.py:195
|
||||
msgid "Close"
|
||||
msgstr "Fermer"
|
||||
|
||||
#: src/window.py:196 src/window.ui:459
|
||||
msgid "Next"
|
||||
msgstr "Suivant"
|
||||
|
||||
#: src/window.py:243
|
||||
msgid "Pulling in the background..."
|
||||
msgstr "Téléchargement en arrière-plan..."
|
||||
|
||||
#: src/window.py:576
|
||||
msgid "Task Complete"
|
||||
msgstr "Tache terminée"
|
||||
|
||||
#: src/window.py:576
|
||||
msgid "Model '{}' pulled successfully."
|
||||
msgstr "Modèle '{}' téléchargé avec succès."
|
||||
|
||||
#: src/window.py:581
|
||||
msgid "Pull Model Error"
|
||||
msgstr "Erreur de téléchargement du modèle"
|
||||
|
||||
#: src/window.py:581
|
||||
msgid "Failed to pull model '{}' due to network error."
|
||||
msgstr ""
|
||||
"Échec du téléchargement du modèle '{}' à cause d'une erreur de connexion."
|
||||
|
||||
#: src/window.ui:39
|
||||
msgid "New chat"
|
||||
msgstr "Nouvelle discussion"
|
||||
|
||||
#: src/window.ui:80
|
||||
msgid "Toggle Sidebar"
|
||||
msgstr "Basculer la barre latérale"
|
||||
|
||||
#: src/window.ui:103 src/window.ui:374
|
||||
msgid "Manage models"
|
||||
msgstr "Gestion des modèles"
|
||||
|
||||
#: src/window.ui:117
|
||||
msgid "Menu"
|
||||
msgstr "Menu"
|
||||
|
||||
#: src/window.ui:266 src/window.ui:612 src/window.ui:675
|
||||
msgid "Preferences"
|
||||
msgstr "Paramètres"
|
||||
|
||||
#: src/window.ui:269 src/window.ui:659
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
|
||||
#: src/window.ui:273
|
||||
msgid "Remote Connection"
|
||||
msgstr "Connexion à distance"
|
||||
|
||||
#: src/window.ui:274
|
||||
msgid "Manage a remote connection to Ollama"
|
||||
msgstr "Gérer une connexion à distance d'Ollama"
|
||||
|
||||
#: src/window.ui:277
|
||||
msgid "Use remote connection"
|
||||
msgstr "Utiliser une connexion à distance"
|
||||
|
||||
#: src/window.ui:283
|
||||
msgid "URL of remote instance"
|
||||
msgstr "URL de l'instance distante"
|
||||
|
||||
#: src/window.ui:291
|
||||
msgid "Behavior"
|
||||
msgstr "Comportement"
|
||||
|
||||
#: src/window.ui:292
|
||||
msgid "Manage Alpaca's Behavior"
|
||||
msgstr "Gérer le comportement d'Alpaca"
|
||||
|
||||
#: src/window.ui:295
|
||||
msgid "Run in background"
|
||||
msgstr "Exécution en arrière-plan"
|
||||
|
||||
#: src/window.ui:304
|
||||
msgid "Advanced Model Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:308
|
||||
msgid "Model Tweaks"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:309
|
||||
msgid "Manage the behavior of the AI models"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:314
|
||||
#, fuzzy
|
||||
msgid "Temperature"
|
||||
msgstr "Fonctionnalités"
|
||||
|
||||
#: src/window.ui:315
|
||||
msgid ""
|
||||
"The temperature of the model. Increasing the temperature will make the model "
|
||||
"answer more creatively. (Default: 0.8)"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:330
|
||||
msgid "Seed"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:331
|
||||
msgid ""
|
||||
"Sets the random number seed to use for generation. Setting this to a "
|
||||
"specific number will make the model generate the same text for the same "
|
||||
"prompt. (Default: 0 (random))"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:345
|
||||
msgid "Keep Alive Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:346
|
||||
msgid ""
|
||||
"Controls how long the model will stay loaded into memory following the "
|
||||
"request in minutes (default: 5)"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:443
|
||||
msgid "Previous"
|
||||
msgstr "Précédent"
|
||||
|
||||
#: src/window.ui:486
|
||||
msgid "Welcome to Alpaca"
|
||||
msgstr "Bienvenue sur Alpaca"
|
||||
|
||||
#: src/window.ui:487
|
||||
msgid "Powered by Ollama"
|
||||
msgstr "Fonctionne grâce à Ollama"
|
||||
|
||||
#: src/window.ui:490
|
||||
msgid "Ollama Website"
|
||||
msgstr "Site web d'Ollama"
|
||||
|
||||
#: src/window.ui:507
|
||||
msgid ""
|
||||
"Alpaca and its developers are not liable for any damages to devices or "
|
||||
"software resulting from the execution of code generated by an AI model. "
|
||||
"Please exercise caution and review the code carefully before running it."
|
||||
msgstr ""
|
||||
"Alpaca et ses développeurs ne sont pas responsables des dommages causés à "
|
||||
"votre appareil ou vos logiciels lors de l'exécution de code généré par les "
|
||||
"modèles d'IA. Merci de faire attention et de relire attentivement le code "
|
||||
"avant de l'exécuter."
|
||||
|
||||
#: src/window.ui:518
|
||||
msgid "Featured Models"
|
||||
msgstr "Modèles recommandés"
|
||||
|
||||
#: src/window.ui:519
|
||||
msgid ""
|
||||
"Alpaca works locally on your device, to start chatting you'll need an AI "
|
||||
"model, you can either pull models from this list or the 'Manage Models' menu "
|
||||
"later."
|
||||
msgstr ""
|
||||
"Alpaca fonctionne localement sur votre ordinateur, pour commencer à discuter "
|
||||
"vous aurez besoin d'un modèle d'IA, vous pouvez télécharger un modèle soit "
|
||||
"depuis cette liste soit depuis le menu 'Gérer les modèles' plus tard."
|
||||
|
||||
#: src/window.ui:529
|
||||
msgid "Built by Meta"
|
||||
msgstr "Développé par Meta"
|
||||
|
||||
#: src/window.ui:546
|
||||
msgid "Built by Google DeepMind"
|
||||
msgstr "Développé par Google DeepMind"
|
||||
|
||||
#: src/window.ui:563
|
||||
msgid "Built by Microsoft"
|
||||
msgstr "Développé par Microsoft"
|
||||
|
||||
#: src/window.ui:580
|
||||
msgid "Multimodal AI with image recognition"
|
||||
msgstr "IA multimodale avec reconnaissance d'image"
|
||||
|
||||
#: src/window.ui:608
|
||||
msgid "Clear Chat"
|
||||
msgstr "Supprimer la discussion"
|
||||
|
||||
#: src/window.ui:616
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Raccourcis claviers"
|
||||
|
||||
#: src/window.ui:620
|
||||
msgid "About Alpaca"
|
||||
msgstr "À propos d'Alpaca"
|
||||
|
||||
#: src/window.ui:628
|
||||
#, fuzzy
|
||||
msgid "Export current chat"
|
||||
msgstr "Exporter la discussion"
|
||||
|
||||
#: src/window.ui:632
|
||||
msgid "Import chat"
|
||||
msgstr "Importer une discussion"
|
||||
|
||||
#: src/window.ui:663
|
||||
msgid "Close application"
|
||||
msgstr "Fermer l'application"
|
||||
|
||||
#: src/window.ui:669
|
||||
msgid "Clear chat"
|
||||
msgstr "Supprimer la discussion"
|
||||
|
||||
#: src/window.ui:687
|
||||
msgid "Show shortcuts window"
|
||||
msgstr "Voir les raccourcis clavier"
|
||||
|
||||
#: src/window.ui:694
|
||||
msgid "Editor"
|
||||
msgstr "Éditeur"
|
||||
|
||||
#: src/window.ui:698
|
||||
msgid "Copy"
|
||||
msgstr "Copier"
|
||||
|
||||
#: src/window.ui:704
|
||||
msgid "Paste"
|
||||
msgstr "Coller"
|
||||
|
||||
#: src/window.ui:710
|
||||
msgid "Insert new line"
|
||||
msgstr "Ajouter un ligne"
|
||||
|
||||
#: src/window.ui:716
|
||||
msgid "Send Message"
|
||||
msgstr "Envoyer le message"
|
||||
|
||||
#~ msgid "Remove"
|
||||
#~ msgstr "Supprimer"
|
||||
|
||||
#~ msgid "Send"
|
||||
#~ msgstr "Envoyer"
|
||||
|
||||
#~ msgid "Image"
|
||||
#~ msgstr "Image"
|
||||
951
po/fr.po~
Normal file
951
po/fr.po~
Normal file
@@ -0,0 +1,951 @@
|
||||
# French translation for Alpaca
|
||||
#
|
||||
# Translate guideline :
|
||||
#
|
||||
# English French
|
||||
# to chat discuter
|
||||
# a chat une discussion
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.8.7\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-05-29 16:15-0600\n"
|
||||
"PO-Revision-Date: 2024-05-28 21:02+0200\n"
|
||||
"Last-Translator: Louis Chauvet-Villaret <louischauvet0@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.4.4\n"
|
||||
|
||||
#: data/com.jeffser.Alpaca.desktop.in:3
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:7
|
||||
msgid "Alpaca"
|
||||
msgstr "Alpaca"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:8
|
||||
#, fuzzy
|
||||
msgid "Chat with local AI models"
|
||||
msgstr "Discutez avec des modèles d'IA fonctionnant localement grâce à Ollama"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:10
|
||||
msgid "An Ollama client"
|
||||
msgstr "Un client Ollama"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:357
|
||||
msgid "Features"
|
||||
msgstr "Fonctionnalités"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:13
|
||||
msgid "Built in Ollama instance"
|
||||
msgstr "Intégrée dans l'instance Ollama"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:14
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:359
|
||||
msgid "Talk to multiple models in the same conversation"
|
||||
msgstr "Discutez avec plusieurs modèles dans la même discussion"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:15
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:360
|
||||
msgid "Pull and delete models from the app"
|
||||
msgstr "Téléchargez et supprimez des modèles depuis l'application"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:16
|
||||
msgid "Have multiple conversations"
|
||||
msgstr "Ayez plusieurs discussions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:17
|
||||
msgid "Image recognition (Only available with compatible models)"
|
||||
msgstr ""
|
||||
"Reconnaissance d'image (Uniquement disponible avec les modèles compatibles)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:18
|
||||
msgid "Import and export chats"
|
||||
msgstr "Importez et exportez des discussions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:20 src/window.ui:506
|
||||
msgid "Disclaimer"
|
||||
msgstr "Avertissement"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:21
|
||||
msgid ""
|
||||
"This project is not affiliated at all with Ollama, I'm not responsible for "
|
||||
"any damages to your device or software caused by running code given by any "
|
||||
"models."
|
||||
msgstr ""
|
||||
"Ce projet n'est aucunement affilié avec Ollama, et je ne suis aucunement "
|
||||
"responsable des dommages causés à votre appareil ou vos logiciels en "
|
||||
"exécutant du code donné par n'importe quel modèle."
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:24
|
||||
msgid "Jeffry Samuel Eduarte Rojas"
|
||||
msgstr "Jeffry Samuel Eduarte Rojas"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:50
|
||||
msgid "A conversation showing code highlight"
|
||||
msgstr "Une discussion montrant code avec de la coloration syntaxique"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:54
|
||||
msgid "A conversation involving multiple models"
|
||||
msgstr "Une discussion utilisant plusieurs modèles"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:58
|
||||
msgid "Managing models"
|
||||
msgstr "Gestion des modèles"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:69
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:274
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:331
|
||||
msgid "Big Update"
|
||||
msgstr "Mise à jour majeure"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:71
|
||||
msgid "Changed multiple icons (paper airplane for the send button)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:72
|
||||
msgid "Combined export / import chat buttons into a menu"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:73
|
||||
msgid "Added 'model tweaks' (temperature, seed, keep_alive)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:74
|
||||
msgid "Fixed send / stop button"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:75
|
||||
msgid "Fixed app not checking if remote connection works when starting"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:82
|
||||
#, fuzzy
|
||||
msgid "Daily Update"
|
||||
msgstr "Une autre mise à jour quotidienne"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:84
|
||||
msgid "Added text ellipsis to chat name so it doesn't change the button width"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:85
|
||||
msgid "New shortcut for creating a chat (CTRL+N)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:86
|
||||
msgid "New message entry design"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:87
|
||||
msgid "Fixed: Can't rename the same chat multiple times"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:94
|
||||
msgid "The fix"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:96
|
||||
msgid ""
|
||||
"Fixed: Ollama instance keeps running on the background even when it is "
|
||||
"disabled"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:97
|
||||
msgid "Fixed: Can't pull models on the integrated instance"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:104
|
||||
#, fuzzy
|
||||
msgid "Quick tweaks"
|
||||
msgstr "Petites corrections"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:106
|
||||
msgid "Added progress bar to models that are being pulled"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:107
|
||||
msgid "Added size to tags when pulling a model"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:108
|
||||
#, fuzzy
|
||||
msgid "General optimizations on the background"
|
||||
msgstr "Optimisations générales"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:115
|
||||
msgid "Quick fixes"
|
||||
msgstr "Petites corrections"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:117
|
||||
msgid "Fixed: Scroll when message is received"
|
||||
msgstr "Correction: Défilement lors de la réception d'un message"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:118
|
||||
msgid "Fixed: Content doesn't change when creating a new chat"
|
||||
msgstr ""
|
||||
"Correction: Le contenu ne change pas lors de la création d'un nouveau chat"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:119
|
||||
msgid "Added 'Featured Models' page on welcome dialog"
|
||||
msgstr ""
|
||||
"Ajout de la page 'Modèles Suggérés' sur la fenêtre de dialogue d'accueil"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:126
|
||||
msgid "Nice Update"
|
||||
msgstr "Bonne mise à jour"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:128
|
||||
msgid "UI tweaks (Thanks Nokse22)"
|
||||
msgstr "Ajustement de l'interface utilisateur (Merci à Nokse22)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:129
|
||||
msgid "General optimizations"
|
||||
msgstr "Optimisations générales"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:130
|
||||
msgid "Metadata fixes"
|
||||
msgstr "Correction des métadonnées"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:137
|
||||
msgid "Quick fix"
|
||||
msgstr "Petite correction"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:139
|
||||
msgid "Updated Spanish translation"
|
||||
msgstr "Mise à jour de la traduction Espagnol"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:140
|
||||
msgid "Added compatibility for PNG"
|
||||
msgstr "Ajout de la compatibilité pour les images PNG"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:147
|
||||
msgid "New Update"
|
||||
msgstr "Nouvelle mise à jour"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:149
|
||||
msgid "Updated model list"
|
||||
msgstr "Liste des modèles mise à jour"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:150
|
||||
msgid "Added image recognition to more models"
|
||||
msgstr "Ajout de la reconnaissance d'image à plus de modèles"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:151
|
||||
msgid "Added Brazilian Portuguese translation (Thanks Daimaar Stein)"
|
||||
msgstr "Ajout de la traduction en Portugais Brésilien (Merci à Daimaar Stein)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:152
|
||||
msgid "Refined the general UI (Thanks Nokse22)"
|
||||
msgstr "Peaufinage de l'interface utilisateur (Merci à Nokse22)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:153
|
||||
msgid "Added 'delete message' feature"
|
||||
msgstr "Ajout de l'option 'supprimer le message'"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:154
|
||||
msgid ""
|
||||
"Added metadata so that software distributors know that the app is compatible "
|
||||
"with mobile"
|
||||
msgstr ""
|
||||
"Ajout de métadonnées pour que les distributeurs de logiciels sachent que "
|
||||
"l'application est compatible avec les téléphones"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:155
|
||||
msgid ""
|
||||
"Changed 'send' shortcut to just the return/enter key (to add a new line use "
|
||||
"shift+return)"
|
||||
msgstr ""
|
||||
"Changement du raccourci 'envoyer' en une simple touche retour/entrée (pour "
|
||||
"ajouter une nouvelle ligne, utiliser shift+retour)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:162
|
||||
msgid "Bug Fixes"
|
||||
msgstr "Résolution de bogues"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:164
|
||||
msgid "Fixed: Minor spelling mistake"
|
||||
msgstr "Corrigé: Petite faute d'orthographe"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:165
|
||||
msgid "Added 'mobile' as a supported form factor"
|
||||
msgstr "Ajout de la mise en page 'mobile'"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:166
|
||||
msgid "Fixed: 'Connection Error' dialog not working properly"
|
||||
msgstr ""
|
||||
"Correction: La boîte de dialogue « Erreur de connexion » ne fonctionnait pas "
|
||||
"correctement"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:167
|
||||
msgid "Fixed: App might freeze randomly on startup"
|
||||
msgstr ""
|
||||
"Correction: L'application pouvait se bloquer aléatoirement au démarrage"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:168
|
||||
msgid "Changed 'chats' label on sidebar for 'Alpaca'"
|
||||
msgstr "Changement du titre 'chats' de la barre latéral par 'Alpaca'"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:175
|
||||
msgid "Cool Update"
|
||||
msgstr "Mise à jour sympa"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:177
|
||||
msgid "Better design for chat window"
|
||||
msgstr "Meilleur design pour de fenêtre de discussion"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:178
|
||||
msgid "Better design for chat sidebar"
|
||||
msgstr "Meilleur design pour de la barre latérale"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:179
|
||||
msgid "Fixed remote connections"
|
||||
msgstr "Correction des connexions à distance"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:180
|
||||
msgid "Fixed Ollama restarting in loop"
|
||||
msgstr "Correction d'Ollama qui redémarrait en boucle"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:181
|
||||
msgid "Other cool backend stuff"
|
||||
msgstr "Autres trucs sympas en arrière-plan"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:188
|
||||
msgid "Huge Update"
|
||||
msgstr "Grande mise à jour"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:190
|
||||
msgid "Added Ollama as part of Alpaca, Ollama will run in a sandbox"
|
||||
msgstr ""
|
||||
"Ajout d'Ollama comme partie d'Alpaca, Ollama fonctionnera dans un bac à sable"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:191
|
||||
msgid "Added option to connect to remote instances (how it worked before)"
|
||||
msgstr ""
|
||||
"Ajout de l'option pour se connecter à des instances distantes (comme cela "
|
||||
"fonctionnait précédemment)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:192
|
||||
msgid "Added option to import and export chats"
|
||||
msgstr "Ajout de l'option pour importer et exporter les discussions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:193
|
||||
msgid "Added option to run Alpaca with Ollama in the background"
|
||||
msgstr "Ajout de l'option pour exécuter Alpaca avec Ollama en arrière-plan"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:194
|
||||
msgid "Added preferences dialog"
|
||||
msgstr "Ajout de la boite de dialogue des paramètres"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:195
|
||||
msgid "Changed the welcome dialog"
|
||||
msgstr "Changement de la boite de dialogue de bienvenue"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:197
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:214
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:226
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:245
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:266
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:282
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:298
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:312
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:322
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:340
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:362
|
||||
msgid "Please report any errors to the issues page, thank you."
|
||||
msgstr "Merci de reporter n'importe quel erreur sur la page des problèmes."
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:205
|
||||
msgid "Yet Another Daily Update"
|
||||
msgstr "Encore une autre mise à jour quotidienne"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:207
|
||||
msgid "Added better UI for 'Manage Models' dialog"
|
||||
msgstr ""
|
||||
"Ajout d'une meilleur interface utilisateur pour la boite de dialogue "
|
||||
"'Gestion des modèles'"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:208
|
||||
msgid "Added better UI for the chat sidebar"
|
||||
msgstr "Ajout d'une meilleur interface utilisateur pour la barre latérale"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:209
|
||||
msgid ""
|
||||
"Replaced model description with a button to open Ollama's website for the "
|
||||
"model"
|
||||
msgstr ""
|
||||
"Remplacement de la description du modèle par un bouton pour ouvrir le site "
|
||||
"web Ollama pour le modèle"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:210
|
||||
msgid "Added myself to the credits as the spanish translator"
|
||||
msgstr "Ajout de moi-même aux crédits en tant que traducteur espagnol"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:211
|
||||
msgid "Using XDG properly to get config folder"
|
||||
msgstr "Utilisation de XDG correctement pour avoir un dossier de configuration"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:212
|
||||
msgid "Update for translations"
|
||||
msgstr "Mise à jour concernant les traductions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:222
|
||||
msgid "Quick Fix"
|
||||
msgstr "Petite correction"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:224
|
||||
msgid "The last update had some mistakes in the description of the update"
|
||||
msgstr ""
|
||||
"La dernière mise à jour avait quelques erreurs dans la description de la "
|
||||
"mise à jour"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:234
|
||||
msgid "Another Daily Update"
|
||||
msgstr "Une autre mise à jour quotidienne"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:236
|
||||
msgid "Added full Spanish translation"
|
||||
msgstr "Ajout de la traduction complète Espagnol"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:237
|
||||
msgid "Added support for background pulling of multiple models"
|
||||
msgstr ""
|
||||
"Ajout du support pour le téléchargement de plusieurs modèles en arrière-plan"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:238
|
||||
msgid "Added interrupt button"
|
||||
msgstr "Ajout d'un bouton d'interruptions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:239
|
||||
msgid "Added basic shortcuts"
|
||||
msgstr "Ajout de raccourcis claviers simples"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:240
|
||||
msgid "Better translation support"
|
||||
msgstr "Meilleur support des traductions"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:241
|
||||
msgid ""
|
||||
"User can now leave chat name empty when creating a new one, it will add a "
|
||||
"placeholder name"
|
||||
msgstr ""
|
||||
"L'utilisateur peut maintenant quitter une discussion vide quand il en crée "
|
||||
"un nouvelle, cela va ajouter un nom de remplacement"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:242
|
||||
msgid "Better scalling for different window sizes"
|
||||
msgstr "Meilleure mise à l'échelle pour différente taille de fenêtre"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:243
|
||||
msgid "Fixed: Can't close app if first time setup fails"
|
||||
msgstr ""
|
||||
"Correction: Impossible de fermer l'application si la première configuration "
|
||||
"échouait"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:253
|
||||
msgid "Really Big Update"
|
||||
msgstr "Mise à jour vraiment majeure"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:255
|
||||
msgid "Added multiple chats support!"
|
||||
msgstr "Ajout du support de plusieurs discussions !"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:256
|
||||
msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)"
|
||||
msgstr ""
|
||||
"Ajout du support de Pango Markup (gras, liste, titre, sous-titre, chasse-"
|
||||
"fixe)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:257
|
||||
msgid "Added autoscroll if the user is at the bottom of the chat"
|
||||
msgstr ""
|
||||
"Ajout d'un défilement automatique si l'utilisateur est en haut d'une "
|
||||
"conersation"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:258
|
||||
msgid "Added support for multiple tags on a single model"
|
||||
msgstr "Ajout du support de plusieurs tag sur un seul modèle"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:259
|
||||
msgid "Added better model management dialog"
|
||||
msgstr "Ajout d'une meilleur boite de dialogue pour la gestion des modèles"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:260
|
||||
msgid "Added loading spinner when sending message"
|
||||
msgstr "Ajout d'un loader lors de m'envoie d'un message"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:261
|
||||
msgid "Added notifications if app is not active and a model pull finishes"
|
||||
msgstr ""
|
||||
"Ajout d'une notification si l'application n'est pas active et que le "
|
||||
"téléchargement d'un modèle est terminé"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:262
|
||||
msgid "Added new symbolic icon"
|
||||
msgstr "Ajout de nouveau icônes symboliques"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:263
|
||||
msgid "Added frame to message textview widget"
|
||||
msgstr "Ajout d'un cadre pour le widget des messages"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:264
|
||||
msgid "Fixed \"code blocks shouldn't be editable\""
|
||||
msgstr "Correction 'les blocs de codes ne peuvent pas être édité'"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:276
|
||||
msgid "Added code highlighting"
|
||||
msgstr "Ajout de coloration syntaxique du code"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:277
|
||||
msgid "Added image recognition (llava model)"
|
||||
msgstr "Ajout de la reconnaissance d'image (modèle llava)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:278
|
||||
msgid "Added multiline prompt"
|
||||
msgstr "Ajout des prompts multilignes"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:279
|
||||
msgid "Fixed some small bugs"
|
||||
msgstr "Correction de petits bogues"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:280
|
||||
msgid "General optimization"
|
||||
msgstr "Optimisation générale"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:290
|
||||
msgid "Fixes and features"
|
||||
msgstr "Corrections et fonctionnalités"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:292
|
||||
msgid "Russian translation (thanks github/alexkdeveloper)"
|
||||
msgstr "Traduction Russe (Merci github/alexkdeveloper)"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:293
|
||||
msgid "Fixed: Cannot close app on first setup"
|
||||
msgstr ""
|
||||
"Correction: Impossible de fermer l'application lors de la première "
|
||||
"installation"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:294
|
||||
msgid "Fixed: Brand colors for Flathub"
|
||||
msgstr "Correction: Couleurs de la marque Flathub"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:295
|
||||
msgid "Fixed: App description"
|
||||
msgstr "Correction: Description de l'application"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:296
|
||||
msgid "Fixed: Only show 'save changes dialog' when you actually change the url"
|
||||
msgstr ""
|
||||
"Correction: N'afficher la boîte de dialogue « enregistrer les "
|
||||
"modifications » que lorsque l'url est réellement modifiée"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:306
|
||||
msgid "0.2.2 Bug fixes"
|
||||
msgstr "0.2.2 Corrections de bug"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:308
|
||||
msgid "Toast messages appearing behind dialogs"
|
||||
msgstr ""
|
||||
"Les messages de notifications apparaissaient derrière les boites de dialogue"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:309
|
||||
msgid "Local model list not updating when changing servers"
|
||||
msgstr ""
|
||||
"La liste des modèles locaux n'était pas mise à jour lors d'un changement de "
|
||||
"serveur"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:310
|
||||
msgid "Closing the setup dialog closes the whole app"
|
||||
msgstr ""
|
||||
"La fermeture de la boite de dialogue des paramètres fermait toute "
|
||||
"l'application"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:320
|
||||
msgid "0.2.1 Data saving fix"
|
||||
msgstr "0.2.1 Correction de la sauvegarde des données"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:321
|
||||
msgid ""
|
||||
"The app didn't save the config files and chat history to the right "
|
||||
"directory, this is now fixed"
|
||||
msgstr ""
|
||||
"L'application ne sauvegardais pas le fichier de configuration et "
|
||||
"l'historique de discussion dans le bon dossier, c'est maintenant corrigé"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:330
|
||||
msgid "0.2.0"
|
||||
msgstr "0.2.0"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:332
|
||||
msgid "New Features"
|
||||
msgstr "Nouvelles fonctionnalités"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:334
|
||||
msgid "Restore chat after closing the app"
|
||||
msgstr "Restaurer la discussion après avoir fermé l'application"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:335
|
||||
msgid "A button to clear the chat"
|
||||
msgstr "Un bouton pour effacer le chat"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:336
|
||||
msgid "Fixed multiple bugs involving how messages are shown"
|
||||
msgstr "Correction de plusieurs bogues concernant l'affichage des messages"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:337
|
||||
msgid "Added welcome dialog"
|
||||
msgstr "Ajout de la boite de dialogue de bienvenue"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:338
|
||||
msgid "More stability"
|
||||
msgstr "Plus de stabilité"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:348
|
||||
msgid "0.1.2 Quick fixes"
|
||||
msgstr "0.1.2 Petites corrections"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:349
|
||||
msgid ""
|
||||
"This release fixes some metadata needed to have a proper Flatpak application"
|
||||
msgstr ""
|
||||
"Cette version corrige quelques métadonnées pour avoir une application "
|
||||
"Flatpak correct"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:355
|
||||
msgid "0.1.1 Stable Release"
|
||||
msgstr "0.1.1 Version stable"
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:356
|
||||
msgid "This is the first public version of Alpaca"
|
||||
msgstr "Ceci est la première version publique d'Alpaca"
|
||||
|
||||
#: src/window.py:53 src/window.py:670 src/window.py:675 src/window.py:735
|
||||
#: src/window.ui:681
|
||||
msgid "New Chat"
|
||||
msgstr "Nouvelle discussion"
|
||||
|
||||
#: src/window.py:98
|
||||
msgid "An error occurred"
|
||||
msgstr "Une erreur est survenue"
|
||||
|
||||
#: src/window.py:99
|
||||
msgid "Failed to connect to server"
|
||||
msgstr "Erreur de connexion au serveur"
|
||||
|
||||
#: src/window.py:100
|
||||
msgid "Could not list local models"
|
||||
msgstr "Impossible de lister les modèles locaux"
|
||||
|
||||
#: src/window.py:101
|
||||
msgid "Could not delete model"
|
||||
msgstr "Impossible de supprimer le modèle"
|
||||
|
||||
#: src/window.py:102
|
||||
msgid "Could not pull model"
|
||||
msgstr "Impossible de télécharger le modèle"
|
||||
|
||||
#: src/window.py:103
|
||||
msgid "Cannot open image"
|
||||
msgstr "Impossible d'ouvrir l'image"
|
||||
|
||||
#: src/window.py:104
|
||||
msgid "Cannot delete chat because it's the only one left"
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas supprimer la discussion car c'est la seule qui reste"
|
||||
|
||||
#: src/window.py:105
|
||||
msgid "There was an error with the local Ollama instance, so it has been reset"
|
||||
msgstr ""
|
||||
"Une erreur est survenue avec l'instance local d'Ollama, elle a donc été "
|
||||
"reinitialisée"
|
||||
|
||||
#: src/window.py:108
|
||||
msgid "Please select a model before chatting"
|
||||
msgstr "Merci de sélectionner un modèle avant de discuter"
|
||||
|
||||
#: src/window.py:109
|
||||
msgid "Chat cannot be cleared while receiving a message"
|
||||
msgstr ""
|
||||
"La discussion ne peut pas être supprimé pendant la réception d'un message"
|
||||
|
||||
#: src/window.py:110
|
||||
msgid "That tag is already being pulled"
|
||||
msgstr "Ce tag est déjà en train d'être téléchargé"
|
||||
|
||||
#: src/window.py:111
|
||||
msgid "That tag has been pulled already"
|
||||
msgstr "Ce tag à déjà été télécharger"
|
||||
|
||||
#: src/window.py:112
|
||||
msgid "Code copied to the clipboard"
|
||||
msgstr "Code copié dans le presse-papier"
|
||||
|
||||
#: src/window.py:115
|
||||
msgid "Model deleted successfully"
|
||||
msgstr "Modèle supprimé avec succès"
|
||||
|
||||
#: src/window.py:116
|
||||
msgid "Model pulled successfully"
|
||||
msgstr "Modèle téléchargé avec succès"
|
||||
|
||||
#: src/window.py:117
|
||||
msgid "Chat exported successfully"
|
||||
msgstr "Discussion exportée avec succès"
|
||||
|
||||
#: src/window.py:118
|
||||
msgid "Chat imported successfully"
|
||||
msgstr "Discussion importée avec succès"
|
||||
|
||||
#: src/window.py:130
|
||||
msgid "Upload image"
|
||||
msgstr "Charger une image"
|
||||
|
||||
#: src/window.py:134 src/window.ui:179
|
||||
msgid "Only available on selected models"
|
||||
msgstr "Seulement disponible sur les modèles sélectionnés"
|
||||
|
||||
#: src/window.py:195
|
||||
msgid "Close"
|
||||
msgstr "Fermer"
|
||||
|
||||
#: src/window.py:196 src/window.ui:459
|
||||
msgid "Next"
|
||||
msgstr "Suivant"
|
||||
|
||||
#: src/window.py:243
|
||||
msgid "Pulling in the background..."
|
||||
msgstr "Téléchargement en arrière-plan..."
|
||||
|
||||
#: src/window.py:576
|
||||
msgid "Task Complete"
|
||||
msgstr "Tache terminée"
|
||||
|
||||
#: src/window.py:576
|
||||
msgid "Model '{}' pulled successfully."
|
||||
msgstr "Modèle '{}' téléchargé avec succès."
|
||||
|
||||
#: src/window.py:581
|
||||
msgid "Pull Model Error"
|
||||
msgstr "Erreur de téléchargement du modèle"
|
||||
|
||||
#: src/window.py:581
|
||||
msgid "Failed to pull model '{}' due to network error."
|
||||
msgstr ""
|
||||
"Échec du téléchargement du modèle '{}' à cause d'une erreur de connexion."
|
||||
|
||||
#: src/window.ui:39
|
||||
msgid "New chat"
|
||||
msgstr "Nouvelle discussion"
|
||||
|
||||
#: src/window.ui:80
|
||||
msgid "Toggle Sidebar"
|
||||
msgstr "Basculer la barre latérale"
|
||||
|
||||
#: src/window.ui:103 src/window.ui:374
|
||||
msgid "Manage models"
|
||||
msgstr "Gestion des modèles"
|
||||
|
||||
#: src/window.ui:117
|
||||
msgid "Menu"
|
||||
msgstr "Menu"
|
||||
|
||||
#: src/window.ui:266 src/window.ui:612 src/window.ui:675
|
||||
msgid "Preferences"
|
||||
msgstr "Paramètres"
|
||||
|
||||
#: src/window.ui:269 src/window.ui:659
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
|
||||
#: src/window.ui:273
|
||||
msgid "Remote Connection"
|
||||
msgstr "Connexion à distance"
|
||||
|
||||
#: src/window.ui:274
|
||||
msgid "Manage a remote connection to Ollama"
|
||||
msgstr "Gérer une connexion à distance d'Ollama"
|
||||
|
||||
#: src/window.ui:277
|
||||
msgid "Use remote connection"
|
||||
msgstr "Utiliser une connexion à distance"
|
||||
|
||||
#: src/window.ui:283
|
||||
msgid "URL of remote instance"
|
||||
msgstr "URL de l'instance distante"
|
||||
|
||||
#: src/window.ui:291
|
||||
msgid "Behavior"
|
||||
msgstr "Comportement"
|
||||
|
||||
#: src/window.ui:292
|
||||
msgid "Manage Alpaca's Behavior"
|
||||
msgstr "Gérer le comportement d'Alpaca"
|
||||
|
||||
#: src/window.ui:295
|
||||
msgid "Run in background"
|
||||
msgstr "Exécution en arrière-plan"
|
||||
|
||||
#: src/window.ui:304
|
||||
msgid "Advanced Model Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:308
|
||||
msgid "Model Tweaks"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:309
|
||||
msgid "Manage the behavior of the AI models"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:314
|
||||
#, fuzzy
|
||||
msgid "Temperature"
|
||||
msgstr "Fonctionnalités"
|
||||
|
||||
#: src/window.ui:315
|
||||
msgid ""
|
||||
"The temperature of the model. Increasing the temperature will make the model "
|
||||
"answer more creatively. (Default: 0.8)"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:330
|
||||
msgid "Seed"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:331
|
||||
msgid ""
|
||||
"Sets the random number seed to use for generation. Setting this to a "
|
||||
"specific number will make the model generate the same text for the same "
|
||||
"prompt. (Default: 0 (random))"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:344
|
||||
msgid "keep_alive"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:345
|
||||
msgid "Keep Alive Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:443
|
||||
msgid "Previous"
|
||||
msgstr "Précédent"
|
||||
|
||||
#: src/window.ui:486
|
||||
msgid "Welcome to Alpaca"
|
||||
msgstr "Bienvenue sur Alpaca"
|
||||
|
||||
#: src/window.ui:487
|
||||
msgid "Powered by Ollama"
|
||||
msgstr "Fonctionne grâce à Ollama"
|
||||
|
||||
#: src/window.ui:490
|
||||
msgid "Ollama Website"
|
||||
msgstr "Site web d'Ollama"
|
||||
|
||||
#: src/window.ui:507
|
||||
msgid ""
|
||||
"Alpaca and its developers are not liable for any damages to devices or "
|
||||
"software resulting from the execution of code generated by an AI model. "
|
||||
"Please exercise caution and review the code carefully before running it."
|
||||
msgstr ""
|
||||
"Alpaca et ses développeurs ne sont pas responsables des dommages causés à "
|
||||
"votre appareil ou vos logiciels lors de l'exécution de code généré par les "
|
||||
"modèles d'IA. Merci de faire attention et de relire attentivement le code "
|
||||
"avant de l'exécuter."
|
||||
|
||||
#: src/window.ui:518
|
||||
msgid "Featured Models"
|
||||
msgstr "Modèles recommandés"
|
||||
|
||||
#: src/window.ui:519
|
||||
msgid ""
|
||||
"Alpaca works locally on your device, to start chatting you'll need an AI "
|
||||
"model, you can either pull models from this list or the 'Manage Models' menu "
|
||||
"later."
|
||||
msgstr ""
|
||||
"Alpaca fonctionne localement sur votre ordinateur, pour commencer à discuter "
|
||||
"vous aurez besoin d'un modèle d'IA, vous pouvez télécharger un modèle soit "
|
||||
"depuis cette liste soit depuis le menu 'Gérer les modèles' plus tard."
|
||||
|
||||
#: src/window.ui:529
|
||||
msgid "Built by Meta"
|
||||
msgstr "Développé par Meta"
|
||||
|
||||
#: src/window.ui:546
|
||||
msgid "Built by Google DeepMind"
|
||||
msgstr "Développé par Google DeepMind"
|
||||
|
||||
#: src/window.ui:563
|
||||
msgid "Built by Microsoft"
|
||||
msgstr "Développé par Microsoft"
|
||||
|
||||
#: src/window.ui:580
|
||||
msgid "Multimodal AI with image recognition"
|
||||
msgstr "IA multimodale avec reconnaissance d'image"
|
||||
|
||||
#: src/window.ui:608
|
||||
msgid "Clear Chat"
|
||||
msgstr "Supprimer la discussion"
|
||||
|
||||
#: src/window.ui:616
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Raccourcis claviers"
|
||||
|
||||
#: src/window.ui:620
|
||||
msgid "About Alpaca"
|
||||
msgstr "À propos d'Alpaca"
|
||||
|
||||
#: src/window.ui:628
|
||||
#, fuzzy
|
||||
msgid "Export current chat"
|
||||
msgstr "Exporter la discussion"
|
||||
|
||||
#: src/window.ui:632
|
||||
msgid "Import chat"
|
||||
msgstr "Importer une discussion"
|
||||
|
||||
#: src/window.ui:663
|
||||
msgid "Close application"
|
||||
msgstr "Fermer l'application"
|
||||
|
||||
#: src/window.ui:669
|
||||
msgid "Clear chat"
|
||||
msgstr "Supprimer la discussion"
|
||||
|
||||
#: src/window.ui:687
|
||||
msgid "Show shortcuts window"
|
||||
msgstr "Voir les raccourcis clavier"
|
||||
|
||||
#: src/window.ui:694
|
||||
msgid "Editor"
|
||||
msgstr "Éditeur"
|
||||
|
||||
#: src/window.ui:698
|
||||
msgid "Copy"
|
||||
msgstr "Copier"
|
||||
|
||||
#: src/window.ui:704
|
||||
msgid "Paste"
|
||||
msgstr "Coller"
|
||||
|
||||
#: src/window.ui:710
|
||||
msgid "Insert new line"
|
||||
msgstr "Ajouter un ligne"
|
||||
|
||||
#: src/window.ui:716
|
||||
msgid "Send Message"
|
||||
msgstr "Envoyer le message"
|
||||
|
||||
#~ msgid "Remove"
|
||||
#~ msgstr "Supprimer"
|
||||
|
||||
#~ msgid "Send"
|
||||
#~ msgstr "Envoyer"
|
||||
|
||||
#~ msgid "Image"
|
||||
#~ msgstr "Image"
|
||||
648
po/pt_BR.po
648
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
666
po/pt_BR.po~
666
po/pt_BR.po~
File diff suppressed because it is too large
Load Diff
394
po/ru.po~
394
po/ru.po~
@@ -1,394 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-05-22 19:17+0800\n"
|
||||
"PO-Revision-Date: 2024-05-22 19:33+0800\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: ru_RU\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.4.4\n"
|
||||
"X-Poedit-Basepath: ../src\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: gtk/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
msgid "General"
|
||||
msgstr "Общие"
|
||||
|
||||
#: gtk/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr "Показывать комбинации клавиш"
|
||||
|
||||
#: gtk/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Выйти"
|
||||
|
||||
#: window.py:54 window.py:761
|
||||
msgid "New Chat"
|
||||
msgstr "Новый Чат"
|
||||
|
||||
#: window.py:100
|
||||
msgid "An error occurred"
|
||||
msgstr "Произошла ошибка"
|
||||
|
||||
#: window.py:101
|
||||
msgid "Failed to connect to server"
|
||||
msgstr "Не удалось подключиться к серверу"
|
||||
|
||||
#: window.py:102
|
||||
msgid "Could not list local models"
|
||||
msgstr "Не удалось перечислить локальные модели"
|
||||
|
||||
#: window.py:103
|
||||
msgid "Could not delete model"
|
||||
msgstr "Не удалось удалить модель"
|
||||
|
||||
#: window.py:104
|
||||
msgid "Could not pull model"
|
||||
msgstr "Не удалось извлечь модель"
|
||||
|
||||
#: window.py:105
|
||||
msgid "Cannot open image"
|
||||
msgstr "Не удается открыть изображение"
|
||||
|
||||
#: window.py:106
|
||||
msgid "Cannot delete chat because it's the only one left"
|
||||
msgstr "Не удается удалить чат, потому что он единственный оставшийся"
|
||||
|
||||
#: window.py:107
|
||||
msgid "There was an error with the local Ollama instance, so it has been reset"
|
||||
msgstr ""
|
||||
"Произошла ошибка с локальным экземпляром Ollama, поэтому он был сброшен"
|
||||
|
||||
#: window.py:110
|
||||
msgid "Please select a model before chatting"
|
||||
msgstr "Пожалуйста, выберите модель перед началом общения"
|
||||
|
||||
#: window.py:111
|
||||
msgid "Chat cannot be cleared while receiving a message"
|
||||
msgstr "Чат не может быть удален при получении сообщения"
|
||||
|
||||
#: window.py:112
|
||||
msgid "That tag is already being pulled"
|
||||
msgstr "Этот тег уже удален"
|
||||
|
||||
#: window.py:113
|
||||
msgid "That tag has been pulled alreay"
|
||||
msgstr "Этот тег уже был удален"
|
||||
|
||||
#: window.py:116
|
||||
msgid "Model deleted successfully"
|
||||
msgstr "Модель успешно удалена"
|
||||
|
||||
#: window.py:117
|
||||
msgid "Model pulled successfully"
|
||||
msgstr "Модель успешно извлечена"
|
||||
|
||||
#: window.py:118
|
||||
msgid "Chat exported successfully"
|
||||
msgstr "Чат успешно экспортирован"
|
||||
|
||||
#: window.py:119
|
||||
msgid "Chat imported successfully"
|
||||
msgstr "Чат успешно импортирован"
|
||||
|
||||
#: window.py:451
|
||||
msgid "Task Complete"
|
||||
msgstr "Задача выполнена"
|
||||
|
||||
#: window.py:451
|
||||
msgid "Model '{}' pulled successfully."
|
||||
msgstr "Модель '{}' успешно извлечена."
|
||||
|
||||
#: window.py:456
|
||||
msgid "Pull Model Error"
|
||||
msgstr "Ошибка Извлечения Модели"
|
||||
|
||||
#: window.py:456
|
||||
msgid "Failed to pull model '{}' due to network error."
|
||||
msgstr "Не удалось извлечь модель '{}' из-за сетевой ошибки."
|
||||
|
||||
#: window.py:472
|
||||
msgid "Stop Model"
|
||||
msgstr "Остановить Модель"
|
||||
|
||||
#: window.py:473
|
||||
msgid "Are you sure you want to stop pulling '{}'?"
|
||||
msgstr "Вы уверены, что хотите прекратить извлечение '{}'?"
|
||||
|
||||
#: window.py:476 window.py:519 window.py:542 window.py:615 window.py:688
|
||||
#: window.py:715 window.py:748 window.py:788
|
||||
msgid "Cancel"
|
||||
msgstr "Отмена"
|
||||
|
||||
#: window.py:477
|
||||
msgid "Stop"
|
||||
msgstr "Стоп"
|
||||
|
||||
#: window.py:515
|
||||
msgid "Delete Model"
|
||||
msgstr "Удалить Модель"
|
||||
|
||||
#: window.py:516 window.py:712
|
||||
msgid "Are you sure you want to delete '{}'?"
|
||||
msgstr "Вы уверены, что хотите удалить '{}'?"
|
||||
|
||||
#: window.py:520 window.py:716
|
||||
msgid "Delete"
|
||||
msgstr "Удалить"
|
||||
|
||||
#: window.py:537
|
||||
msgid "Pull Model"
|
||||
msgstr "Извлечение модели"
|
||||
|
||||
#: window.py:538
|
||||
msgid "Please select a tag to pull '{}'"
|
||||
msgstr "Пожалуйста, выберите тег для извлечения '{}'"
|
||||
|
||||
#: window.py:543
|
||||
msgid "Pull"
|
||||
msgstr "Извлечение"
|
||||
|
||||
#: window.py:611 window.ui:462
|
||||
msgid "Clear Chat"
|
||||
msgstr "Очистить Чат"
|
||||
|
||||
#: window.py:612
|
||||
msgid "Are you sure you want to clear the chat?"
|
||||
msgstr "Вы уверены, что хотите очистить чат?"
|
||||
|
||||
#: window.py:616
|
||||
msgid "Clear"
|
||||
msgstr "Очистить"
|
||||
|
||||
#: window.py:684
|
||||
msgid "Remove Image"
|
||||
msgstr "Удалить Изображение"
|
||||
|
||||
#: window.py:685
|
||||
msgid "Are you sure you want to remove image?"
|
||||
msgstr "Вы уверены, что хотите удалить изображение?"
|
||||
|
||||
#: window.py:689
|
||||
msgid "Remove"
|
||||
msgstr "Удалить"
|
||||
|
||||
#: window.py:711
|
||||
msgid "Delete Chat"
|
||||
msgstr "Удалить Чат"
|
||||
|
||||
#: window.py:742
|
||||
msgid "Rename Chat"
|
||||
msgstr "Переименовать Чат"
|
||||
|
||||
#: window.py:749
|
||||
msgid "Rename"
|
||||
msgstr "Переименовать"
|
||||
|
||||
#: window.py:769
|
||||
msgid "The name '{}' is already in use"
|
||||
msgstr "Имя '{}' уже используется"
|
||||
|
||||
#: window.py:782
|
||||
msgid "Create Chat"
|
||||
msgstr "Создать Чат"
|
||||
|
||||
#: window.py:789
|
||||
msgid "Create"
|
||||
msgstr "Создать"
|
||||
|
||||
#: window.ui:46
|
||||
msgid "Chats"
|
||||
msgstr "Чаты"
|
||||
|
||||
#: window.ui:56
|
||||
msgid "Import chat"
|
||||
msgstr "Импорт чата"
|
||||
|
||||
#: window.ui:69
|
||||
msgid "Export chat"
|
||||
msgstr "Экспорт чата"
|
||||
|
||||
#: window.ui:82
|
||||
msgid "New chat"
|
||||
msgstr "Новый чат"
|
||||
|
||||
#: window.ui:118
|
||||
msgid "Toggle Sidebar"
|
||||
msgstr "Переключение боковой панели"
|
||||
|
||||
#: window.ui:139 window.ui:315
|
||||
msgid "Manage models"
|
||||
msgstr "Управление моделями"
|
||||
|
||||
#: window.ui:153
|
||||
msgid "Menu"
|
||||
msgstr "Меню"
|
||||
|
||||
#: window.ui:231
|
||||
msgid "Send"
|
||||
msgstr "Отправить"
|
||||
|
||||
#: window.ui:240
|
||||
msgid "Requires model 'llava' to be selected"
|
||||
msgstr "Требуется выбрать модель \"llava\""
|
||||
|
||||
#: window.ui:243
|
||||
msgid "Image"
|
||||
msgstr "Изображение"
|
||||
|
||||
#: window.ui:266 window.ui:466 window.ui:517
|
||||
msgid "Preferences"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: window.ui:269 window.ui:501
|
||||
msgid "General"
|
||||
msgstr "Общие"
|
||||
|
||||
#: window.ui:273
|
||||
msgid "Remote Connection"
|
||||
msgstr "Удаленное подключение"
|
||||
|
||||
#: window.ui:274
|
||||
msgid "Manage a remote connection to Ollama"
|
||||
msgstr "Управление удаленным подключением к Ollama"
|
||||
|
||||
#: window.ui:277
|
||||
msgid "Use remote connection"
|
||||
msgstr "Использовать удаленное подключение"
|
||||
|
||||
#: window.ui:282
|
||||
msgid "URL of remote instance"
|
||||
msgstr "URL-адрес удаленного экземпляра"
|
||||
|
||||
#: window.ui:290
|
||||
msgid "Behavior"
|
||||
msgstr "Поведение"
|
||||
|
||||
#: window.ui:291
|
||||
msgid "Manage Alpaca's Behavior"
|
||||
msgstr "Управление поведением Alpaca"
|
||||
|
||||
#: window.ui:294
|
||||
msgid "Run in background"
|
||||
msgstr "Запуск в фоновом режиме"
|
||||
|
||||
#: window.ui:385
|
||||
msgid "Previous"
|
||||
msgstr "Предыдущий"
|
||||
|
||||
#: window.ui:400
|
||||
msgid "Next"
|
||||
msgstr "Следующий"
|
||||
|
||||
#: window.ui:426
|
||||
msgid "Welcome to Alpaca"
|
||||
msgstr "Добро пожаловать в Alpaca"
|
||||
|
||||
#: window.ui:427
|
||||
msgid "Powered by Ollama"
|
||||
msgstr "При поддержке Ollama"
|
||||
|
||||
#: window.ui:430
|
||||
msgid "Ollama Website"
|
||||
msgstr "Веб-сайт Ollama"
|
||||
|
||||
#: window.ui:446
|
||||
msgid "Disclaimer"
|
||||
msgstr "Отказ от ответственности"
|
||||
|
||||
#: window.ui:447
|
||||
msgid ""
|
||||
"Alpaca and its developers are not liable for any damages to devices or "
|
||||
"software resulting from the execution of code generated by an AI model. "
|
||||
"Please exercise caution and review the code carefully before running it."
|
||||
msgstr ""
|
||||
"Alpaca и ее разработчики не несут ответственности за любой ущерб, "
|
||||
"причиненный устройствам или программному обеспечению в результате выполнения "
|
||||
"кода, сгенерированного с помощью модели искусственного интеллекта. "
|
||||
"Пожалуйста, будьте осторожны и внимательно ознакомьтесь с кодом перед его "
|
||||
"запуском."
|
||||
|
||||
#: window.ui:470
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Комбинации Клавиш"
|
||||
|
||||
#: window.ui:474
|
||||
msgid "About Alpaca"
|
||||
msgstr "О Программе"
|
||||
|
||||
#: window.ui:505
|
||||
msgid "Close application"
|
||||
msgstr "Закрыть приложение"
|
||||
|
||||
#: window.ui:511
|
||||
msgid "Clear chat"
|
||||
msgstr "Очистить чат"
|
||||
|
||||
#: window.ui:523
|
||||
msgid "Show shortcuts window"
|
||||
msgstr "Показать окно комбинаций клавиш"
|
||||
|
||||
#: window.ui:530
|
||||
msgid "Editor"
|
||||
msgstr "Редактор"
|
||||
|
||||
#: window.ui:534
|
||||
msgid "Copy"
|
||||
msgstr "Копировать"
|
||||
|
||||
#: window.ui:540
|
||||
msgid "Paste"
|
||||
msgstr "Вставить"
|
||||
|
||||
#: window.ui:546
|
||||
msgid "Send Message"
|
||||
msgstr "Отправить Сообщение"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Added basic shortcuts"
|
||||
#~ msgstr "Показывать ярлыки"
|
||||
|
||||
#~ msgid "Save Changes"
|
||||
#~ msgstr "Сохранить Изменения"
|
||||
|
||||
#~ msgid "Do you want to save the URL change?"
|
||||
#~ msgstr "Хотите сохранить изменение URL?"
|
||||
|
||||
#~ msgid "Discard"
|
||||
#~ msgstr "Отказаться"
|
||||
|
||||
#~ msgid "Save"
|
||||
#~ msgstr "Сохранить"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "To get started, please ensure you have an Ollama instance set up. You can "
|
||||
#~ "either run Ollama locally on your machine or connect to a remote instance."
|
||||
#~ msgstr ""
|
||||
#~ "Для начала, пожалуйста, убедитесь, что у вас настроен экземпляр Ollama. "
|
||||
#~ "Вы можете либо запустить Ollama локально на своем компьютере, либо "
|
||||
#~ "подключиться к удаленному экземпляру."
|
||||
|
||||
#~ msgid "Setup"
|
||||
#~ msgstr "Установка"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "If you are running an Ollama instance locally and haven't modified the "
|
||||
#~ "default ports, you can use the default URL. Otherwise, please enter the "
|
||||
#~ "URL of your Ollama instance."
|
||||
#~ msgstr ""
|
||||
#~ "Если вы запускаете локальный экземпляр Ollama и не изменили порты по "
|
||||
#~ "умолчанию, вы можете использовать URL-адрес по умолчанию. В противном "
|
||||
#~ "случае, пожалуйста, введите URL-адрес вашего экземпляра Ollama."
|
||||
|
||||
#~ msgid "Change Server"
|
||||
#~ msgstr "Изменить Сервер"
|
||||
|
||||
#~ msgid "Change server"
|
||||
#~ msgstr "Изменить Сервер"
|
||||
@@ -3,6 +3,10 @@
|
||||
<gresource prefix="/com/jeffser/Alpaca">
|
||||
<file>style.css</file>
|
||||
<file>style-dark.css</file>
|
||||
<file alias="icons/scalable/status/library-symbolic.svg">icons/library-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/paper-plane-symbolic.svg">icons/paper-plane-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/globe-symbolic.svg">icons/globe-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/controls-big-symbolic.svg">icons/controls-big-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">window.ui</file>
|
||||
<file preprocess="xml-stripblanks">gtk/help-overlay.ui</file>
|
||||
</gresource>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -57,7 +57,8 @@ def rename_chat_response(self, dialog, task, old_chat_name, entry, label_element
|
||||
if new_chat_name and (task is None or dialog.choose_finish(task) == "rename"):
|
||||
self.rename_chat(old_chat_name, new_chat_name, label_element)
|
||||
|
||||
def rename_chat(self, chat_name:str, label_element):
|
||||
def rename_chat(self, label_element):
|
||||
chat_name = label_element.get_parent().get_name()
|
||||
entry = Gtk.Entry()
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Rename Chat"),
|
||||
@@ -75,7 +76,7 @@ def rename_chat(self, chat_name:str, label_element):
|
||||
callback = lambda dialog, task, old_chat_name=chat_name, entry=entry, label_element=label_element: rename_chat_response(self, dialog, task, old_chat_name, entry, label_element)
|
||||
)
|
||||
|
||||
# NEW CHAT | WORKS
|
||||
# NEW CHAT | WORKS | UNUSED REASON: The 'Add Chat' button now creates a chat without a name AKA "New Chat"
|
||||
|
||||
def new_chat_response(self, dialog, task, entry):
|
||||
chat_name = _("New Chat")
|
||||
@@ -148,13 +149,13 @@ def delete_model(self, model_name):
|
||||
|
||||
def pull_model_response(self, dialog, task, model_name, tag_drop_down):
|
||||
if dialog.choose_finish(task) == "pull":
|
||||
model = f"{model_name}:{tag_drop_down.get_selected_item().get_string()}"
|
||||
model = f"{model_name}:{tag_drop_down.get_selected_item().get_string().split(' | ')[0]}"
|
||||
self.pull_model(model)
|
||||
|
||||
def pull_model(self, model_name):
|
||||
tag_list = Gtk.StringList()
|
||||
for tag in available_models[model_name]['tags']:
|
||||
tag_list.append(tag)
|
||||
tag_list.append(f"{tag[0]} | {tag[1]}")
|
||||
tag_drop_down = Gtk.DropDown(
|
||||
enable_search=True,
|
||||
model=tag_list
|
||||
@@ -206,10 +207,10 @@ def reconnect_remote_response(self, dialog, task, entry):
|
||||
elif response == "close":
|
||||
self.destroy()
|
||||
|
||||
def reconnect_remote(self):
|
||||
def reconnect_remote(self, current_url):
|
||||
entry = Gtk.Entry(
|
||||
css_classes = ["error"],
|
||||
text = self.ollama_url
|
||||
text = current_url
|
||||
)
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Connection Error"),
|
||||
|
||||
2
src/icons/controls-big-symbolic.svg
Normal file
2
src/icons/controls-big-symbolic.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 4.550781 1 c -1.9375 0 -3.5 1.5625 -3.5 3.5 s 1.5625 3.5 3.5 3.5 h 7 c 1.941407 0 3.5 -1.5625 3.5 -3.5 s -1.558593 -3.5 -3.5 -3.5 z m 7 1 c 1.386719 0 2.5 1.113281 2.5 2.5 c 0 1.382812 -1.113281 2.5 -2.5 2.5 c -1.382812 0 -2.5 -1.117188 -2.5 -2.5 c 0 -1.386719 1.117188 -2.5 2.5 -2.5 z m 0 0"/><path d="m 4.550781 9 c -1.9375 0 -3.5 1.5625 -3.5 3.5 s 1.5625 3.5 3.5 3.5 h 7 c 1.941407 0 3.5 -1.5625 3.5 -3.5 s -1.558593 -3.5 -3.5 -3.5 z m 0 1 c 1.386719 0 2.5 1.113281 2.5 2.5 c 0 1.382812 -1.113281 2.5 -2.5 2.5 c -1.382812 0 -2.5 -1.117188 -2.5 -2.5 c 0 -1.386719 1.117188 -2.5 2.5 -2.5 z m 0 0" fill-opacity="0.35"/></g></svg>
|
||||
|
After Width: | Height: | Size: 785 B |
2
src/icons/globe-symbolic.svg
Normal file
2
src/icons/globe-symbolic.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 7.5 0 c -4.128906 0 -7.5 3.371094 -7.5 7.5 s 3.371094 7.5 7.5 7.5 s 7.5 -3.371094 7.5 -7.5 s -3.371094 -7.5 -7.5 -7.5 z m 0 2 c 0.257812 0 0.503906 0.023438 0.75 0.054688 c 0.191406 0.261718 0.382812 0.59375 0.550781 1.027343 c 0.105469 0.277344 0.203125 0.585938 0.289063 0.917969 h -3.179688 c 0.085938 -0.332031 0.183594 -0.640625 0.289063 -0.917969 c 0.167969 -0.433593 0.359375 -0.765625 0.550781 -1.027343 c 0.246094 -0.03125 0.492188 -0.054688 0.75 -0.054688 z m -2.085938 0.40625 c -0.050781 0.109375 -0.105468 0.203125 -0.148437 0.316406 c -0.148437 0.386719 -0.269531 0.820313 -0.378906 1.277344 h -1.617188 c 0.570313 -0.691406 1.296875 -1.246094 2.144531 -1.59375 z m 4.171876 0 c 0.847656 0.347656 1.574218 0.902344 2.144531 1.59375 h -1.617188 c -0.109375 -0.457031 -0.230469 -0.890625 -0.378906 -1.277344 c -0.042969 -0.113281 -0.097656 -0.207031 -0.148437 -0.316406 z m -6.980469 2.59375 h 2.082031 c -0.097656 0.628906 -0.148438 1.300781 -0.167969 2 h -2.480469 c 0.0625 -0.714844 0.253907 -1.390625 0.566407 -2 z m 3.09375 0 h 3.601562 c 0.101563 0.617188 0.15625 1.292969 0.179688 2 h -3.960938 c 0.023438 -0.707031 0.078125 -1.382812 0.179688 -2 z m 4.613281 0 h 2.082031 c 0.3125 0.609375 0.503907 1.285156 0.566407 2 h -2.480469 c -0.019531 -0.699219 -0.070313 -1.371094 -0.167969 -2 z m -8.273438 3 h 2.480469 c 0.019531 0.699219 0.070313 1.375 0.167969 2 h -2.082031 c -0.3125 -0.609375 -0.503907 -1.285156 -0.566407 -2 z m 3.480469 0 h 3.960938 c -0.023438 0.707031 -0.078125 1.382812 -0.179688 2 h -3.601562 c -0.101563 -0.617188 -0.15625 -1.292969 -0.179688 -2 z m 4.960938 0 h 2.480469 c -0.0625 0.714844 -0.253907 1.390625 -0.566407 2 h -2.082031 c 0.097656 -0.625 0.148438 -1.300781 0.167969 -2 z m -7.210938 3 h 1.617188 c 0.109375 0.457031 0.230469 0.890625 0.378906 1.273438 c 0.042969 0.117187 0.097656 0.210937 0.148437 0.320312 c -0.847656 -0.347656 -1.574218 -0.902344 -2.144531 -1.59375 z m 2.640625 0 h 3.179688 c -0.085938 0.332031 -0.183594 0.640625 -0.289063 0.917969 c -0.167969 0.433593 -0.359375 0.765625 -0.550781 1.027343 c -0.246094 0.03125 -0.496094 0.054688 -0.75 0.054688 s -0.503906 -0.023438 -0.75 -0.054688 c -0.191406 -0.261718 -0.382812 -0.59375 -0.550781 -1.027343 c -0.105469 -0.277344 -0.203125 -0.585938 -0.289063 -0.917969 z m 4.203125 0 h 1.617188 c -0.570313 0.691406 -1.296875 1.246094 -2.144531 1.59375 c 0.050781 -0.109375 0.105468 -0.203125 0.148437 -0.320312 c 0.148437 -0.382813 0.269531 -0.816407 0.378906 -1.273438 z m 0 0" fill="#222222"/></svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
2
src/icons/library-symbolic.svg
Normal file
2
src/icons/library-symbolic.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 1.5 2 h 2 c 0.277344 0 0.5 0.222656 0.5 0.5 v 12 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -2 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -12 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 5.5 4 h 1 c 0.277344 0 0.5 0.222656 0.5 0.5 v 10 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -1 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -10 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 8.5 3 h 1 c 0.277344 0 0.5 0.222656 0.5 0.5 v 11 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -1 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -11 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 10.707031 1.460938 l 0.964844 -0.261719 c 0.265625 -0.070313 0.539063 0.089843 0.613281 0.355469 l 3.363282 12.558593 c 0.070312 0.265625 -0.085938 0.539063 -0.351563 0.609375 l -0.96875 0.261719 c -0.265625 0.070313 -0.539063 -0.089844 -0.613281 -0.355469 l -3.363282 -12.554687 c -0.070312 -0.269531 0.085938 -0.542969 0.355469 -0.613281 z m 0 0"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
2
src/icons/paper-plane-symbolic.svg
Normal file
2
src/icons/paper-plane-symbolic.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 15 8 l -14 -7 v 6 l 8 1 l -8 1 v 6 z m 0 0" fill="#222222"/></svg>
|
||||
|
After Width: | Height: | Size: 204 B |
@@ -1,23 +1,23 @@
|
||||
# local_instance.py
|
||||
import subprocess, os
|
||||
import subprocess, os, threading
|
||||
from time import sleep
|
||||
|
||||
instance = None
|
||||
port = 11435
|
||||
data_dir = os.getenv("XDG_DATA_HOME")
|
||||
|
||||
def start(data_dir):
|
||||
def start():
|
||||
instance = subprocess.Popen(["/app/bin/ollama", "serve"], env={**os.environ, 'OLLAMA_HOST': f"127.0.0.1:{port}", "HOME": data_dir}, stderr=subprocess.PIPE, text=True)
|
||||
print("Starting Alpaca's Ollama instance...")
|
||||
sleep(1)
|
||||
while True:
|
||||
err = instance.stderr.readline()
|
||||
if err == '' and instance.poll() is not None:
|
||||
break
|
||||
if 'msg="inference compute"' in err: #Ollama outputs a line with this when it finishes loading, yeah
|
||||
break
|
||||
print("Started Alpaca's Ollama instance")
|
||||
|
||||
def stop():
|
||||
if instance: instance.kill()
|
||||
print("Stopped Alpaca's Ollama instance")
|
||||
|
||||
def reset():
|
||||
stop()
|
||||
sleep(1)
|
||||
start()
|
||||
|
||||
|
||||
@@ -47,10 +47,10 @@ class AlpacaApplication(Adw.Application):
|
||||
application_name='Alpaca',
|
||||
application_icon='com.jeffser.Alpaca',
|
||||
developer_name='Jeffry Samuel Eduarte Rojas',
|
||||
version='0.8.5',
|
||||
version='0.9.1',
|
||||
developers=['Jeffser https://jeffser.com'],
|
||||
designers=['Jeffser https://jeffser.com'],
|
||||
translator_credits='Alex K (Russian) https://github.com/alexkdeveloper\nJeffser (Spanish) https://jeffser.com\nDaimar Stein (Brazilian Portuguese) https://github.com/not-a-dev-stein',
|
||||
translator_credits='Alex K (Russian) https://github.com/alexkdeveloper\nJeffser (Spanish) https://jeffser.com\nDaimar Stein (Brazilian Portuguese) https://github.com/not-a-dev-stein\nLouis Chauvet-Villaret (French) https://github.com/loulou64490',
|
||||
copyright='© 2024 Jeffser\n© 2024 Ollama',
|
||||
issue_url='https://github.com/Jeffser/Alpaca/issues')
|
||||
about.present(parent=self.props.active_window)
|
||||
|
||||
@@ -2,6 +2,3 @@
|
||||
background-color: #343434;
|
||||
}
|
||||
|
||||
.message-text-view {
|
||||
background-color: #343434;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
.message-input {
|
||||
background-color: #EBEBEB;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.message-text-view {
|
||||
background-color: #EBEBEB;
|
||||
}
|
||||
.chat_row box.header {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
292
src/window.py
292
src/window.py
@@ -32,7 +32,6 @@ from . import dialogs, local_instance, connection_handler
|
||||
@Gtk.Template(resource_path='/com/jeffser/Alpaca/window.ui')
|
||||
class AlpacaWindow(Adw.ApplicationWindow):
|
||||
config_dir = os.getenv("XDG_CONFIG_HOME")
|
||||
data_dir = os.getenv("XDG_DATA_HOME")
|
||||
app_dir = os.getenv("FLATPAK_DEST")
|
||||
|
||||
__gtype_name__ = 'AlpacaWindow'
|
||||
@@ -48,13 +47,16 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
run_on_background = False
|
||||
remote_url = ""
|
||||
run_remote = False
|
||||
model_tweaks = {"temperature": 0.7, "seed": 0, "keep_alive": 5}
|
||||
local_models = []
|
||||
pulling_models = {}
|
||||
current_chat_elements = [] #Used for deleting
|
||||
chats = {"chats": {_("New Chat"): {"messages": []}}, "selected_chat": "New Chat"}
|
||||
attached_image = {"path": None, "base64": None}
|
||||
|
||||
#Elements
|
||||
temperature_spin = Gtk.Template.Child()
|
||||
seed_spin = Gtk.Template.Child()
|
||||
keep_alive_spin = Gtk.Template.Child()
|
||||
preferences_dialog = Gtk.Template.Child()
|
||||
shortcut_window : Gtk.ShortcutsWindow = Gtk.Template.Child()
|
||||
bot_message : Gtk.TextBuffer = None
|
||||
@@ -70,6 +72,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
chat_window = Gtk.Template.Child()
|
||||
message_text_view = Gtk.Template.Child()
|
||||
send_button = Gtk.Template.Child()
|
||||
stop_button = Gtk.Template.Child()
|
||||
image_button = Gtk.Template.Child()
|
||||
file_filter_image = Gtk.Template.Child()
|
||||
file_filter_json = Gtk.Template.Child()
|
||||
@@ -83,8 +86,6 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
|
||||
chat_list_box = Gtk.Template.Child()
|
||||
add_chat_button = Gtk.Template.Child()
|
||||
export_chat_button = Gtk.Template.Child()
|
||||
import_chat_button = Gtk.Template.Child()
|
||||
|
||||
loading_spinner = None
|
||||
|
||||
@@ -131,61 +132,56 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
else:
|
||||
self.image_button.set_sensitive(False)
|
||||
self.image_button.set_tooltip_text(_("Only available on selected models"))
|
||||
self.image_button.set_css_classes([])
|
||||
self.image_button.get_child().set_icon_name("image-x-generic-symbolic")
|
||||
self.image_button.set_css_classes(["circular"])
|
||||
self.attached_image = {"path": None, "base64": None}
|
||||
return False
|
||||
|
||||
@Gtk.Template.Callback()
|
||||
def stop_message(self, button=None):
|
||||
if self.loading_spinner: self.chat_container.remove(self.loading_spinner)
|
||||
if self.verify_if_image_can_be_used(): self.image_button.set_sensitive(True)
|
||||
self.image_button.set_css_classes(["circular"])
|
||||
self.attached_image = {"path": None, "base64": None}
|
||||
self.toggle_ui_sensitive(True)
|
||||
self.switch_send_stop_button()
|
||||
self.bot_message = None
|
||||
self.bot_message_box = None
|
||||
self.bot_message_view = None
|
||||
|
||||
@Gtk.Template.Callback()
|
||||
def send_message(self, button=None):
|
||||
if button and self.bot_message: #STOP BUTTON
|
||||
if self.loading_spinner: self.chat_container.remove(self.loading_spinner)
|
||||
if self.verify_if_image_can_be_used(): self.image_button.set_sensitive(True)
|
||||
self.image_button.set_css_classes([])
|
||||
self.image_button.get_child().set_icon_name("image-x-generic-symbolic")
|
||||
self.attached_image = {"path": None, "base64": None}
|
||||
self.toggle_ui_sensitive(True)
|
||||
self.send_button.set_css_classes(["suggested-action"])
|
||||
self.send_button.get_child().set_label("Send")
|
||||
self.send_button.get_child().set_icon_name("send-to-symbolic")
|
||||
self.bot_message = None
|
||||
self.bot_message_box = None
|
||||
self.bot_message_view = None
|
||||
else:
|
||||
if not self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False): return
|
||||
current_model = self.model_drop_down.get_selected_item()
|
||||
if current_model is None:
|
||||
self.show_toast("info", 0, self.main_overlay)
|
||||
return
|
||||
formated_datetime = datetime.now().strftime("%Y/%m/%d %H:%M")
|
||||
self.chats["chats"][self.chats["selected_chat"]]["messages"].append({
|
||||
"role": "user",
|
||||
"model": "User",
|
||||
"date": formated_datetime,
|
||||
"content": self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False)
|
||||
})
|
||||
data = {
|
||||
"model": current_model.get_string(),
|
||||
"messages": self.chats["chats"][self.chats["selected_chat"]]["messages"]
|
||||
}
|
||||
if self.verify_if_image_can_be_used() and self.attached_image["base64"] is not None:
|
||||
data["messages"][-1]["images"] = [self.attached_image["base64"]]
|
||||
self.send_button.set_css_classes(["destructive-action"])
|
||||
self.send_button.get_child().set_label("Stop")
|
||||
self.send_button.get_child().set_icon_name("edit-delete-symbolic")
|
||||
self.toggle_ui_sensitive(False)
|
||||
self.image_button.set_sensitive(False)
|
||||
if not self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False): return
|
||||
current_model = self.model_drop_down.get_selected_item()
|
||||
if current_model is None:
|
||||
self.show_toast("info", 0, self.main_overlay)
|
||||
return
|
||||
formated_datetime = datetime.now().strftime("%Y/%m/%d %H:%M")
|
||||
self.chats["chats"][self.chats["selected_chat"]]["messages"].append({
|
||||
"role": "user",
|
||||
"model": "User",
|
||||
"date": formated_datetime,
|
||||
"content": self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False)
|
||||
})
|
||||
data = {
|
||||
"model": current_model.get_string(),
|
||||
"messages": self.chats["chats"][self.chats["selected_chat"]]["messages"],
|
||||
"options": {"temperature": self.model_tweaks["temperature"], "seed": self.model_tweaks["seed"]},
|
||||
"keep_alive": f"{self.model_tweaks['keep_alive']}m"
|
||||
}
|
||||
if self.verify_if_image_can_be_used() and self.attached_image["base64"] is not None:
|
||||
data["messages"][-1]["images"] = [self.attached_image["base64"]]
|
||||
self.switch_send_stop_button()
|
||||
self.toggle_ui_sensitive(False)
|
||||
self.image_button.set_sensitive(False)
|
||||
|
||||
self.show_message(self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False), False, f"\n\n<small>{formated_datetime}</small>", self.attached_image["base64"])
|
||||
self.message_text_view.get_buffer().set_text("", 0)
|
||||
self.loading_spinner = Gtk.Spinner(spinning=True, margin_top=12, margin_bottom=12, hexpand=True)
|
||||
self.chat_container.append(self.loading_spinner)
|
||||
self.show_message("", True)
|
||||
self.show_message(self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False), False, f"\n\n<small>{formated_datetime}</small>", self.attached_image["base64"])
|
||||
self.message_text_view.get_buffer().set_text("", 0)
|
||||
self.loading_spinner = Gtk.Spinner(spinning=True, margin_top=12, margin_bottom=12, hexpand=True)
|
||||
self.chat_container.append(self.loading_spinner)
|
||||
self.show_message("", True)
|
||||
|
||||
vadjustment = self.chat_window.get_vadjustment()
|
||||
vadjustment.set_value(vadjustment.get_upper())
|
||||
thread = threading.Thread(target=self.run_message, args=(data['messages'], data['model']))
|
||||
thread.start()
|
||||
thread = threading.Thread(target=self.run_message, args=(data['messages'], data['model']))
|
||||
thread.start()
|
||||
|
||||
@Gtk.Template.Callback()
|
||||
def manage_models_button_activate(self, button=None):
|
||||
@@ -196,8 +192,8 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
def welcome_carousel_page_changed(self, carousel, index):
|
||||
if index == 0: self.welcome_previous_button.set_sensitive(False)
|
||||
else: self.welcome_previous_button.set_sensitive(True)
|
||||
if index == carousel.get_n_pages()-1: self.welcome_next_button.set_label("Connect")
|
||||
else: self.welcome_next_button.set_label("Next")
|
||||
if index == carousel.get_n_pages()-1: self.welcome_next_button.set_label(_("Close"))
|
||||
else: self.welcome_next_button.set_label(_("Next"))
|
||||
|
||||
@Gtk.Template.Callback()
|
||||
def welcome_previous_button_activate(self, button):
|
||||
@@ -239,6 +235,36 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
entry.set_css_classes(["error"])
|
||||
self.show_toast("error", 1, self.preferences_dialog)
|
||||
|
||||
@Gtk.Template.Callback()
|
||||
def pull_featured_model(self, button):
|
||||
action_row = button.get_parent().get_parent().get_parent()
|
||||
button.get_parent().remove(button)
|
||||
model = f"{action_row.get_title().lower()}:latest"
|
||||
action_row.set_subtitle(_("Pulling in the background..."))
|
||||
spinner = Gtk.Spinner()
|
||||
spinner.set_spinning(True)
|
||||
action_row.add_suffix(spinner)
|
||||
action_row.set_sensitive(False)
|
||||
self.pull_model(model)
|
||||
|
||||
@Gtk.Template.Callback()
|
||||
def closing_app(self, user_data):
|
||||
if self.get_hide_on_close():
|
||||
print("Hiding app...")
|
||||
else:
|
||||
print("Closing app...")
|
||||
local_instance.stop()
|
||||
|
||||
@Gtk.Template.Callback()
|
||||
def model_spin_changed(self, spin):
|
||||
value = spin.get_value()
|
||||
if spin.get_name() != "temperature": value = round(value)
|
||||
else: value = round(value, 1)
|
||||
if self.model_tweaks[spin.get_name()] is not None and self.model_tweaks[spin.get_name()] != value:
|
||||
self.model_tweaks[spin.get_name()] = value
|
||||
print(self.model_tweaks)
|
||||
self.save_server_config()
|
||||
|
||||
def show_toast(self, message_type:str, message_id:int, overlay):
|
||||
if message_type not in self.toast_messages or message_id > len(self.toast_messages[message_type] or message_id < 0):
|
||||
message_type = "error"
|
||||
@@ -249,19 +275,19 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
)
|
||||
overlay.add_toast(toast)
|
||||
|
||||
def show_notification(self, title:str, body:str, only_when_focus:bool, icon:Gio.ThemedIcon=None):
|
||||
if only_when_focus==False or self.is_active()==False:
|
||||
def show_notification(self, title:str, body:str, only_when_unfocus:bool, icon:Gio.ThemedIcon=None):
|
||||
if not only_when_unfocus or (only_when_unfocus and self.is_active()==False):
|
||||
notification = Gio.Notification.new(title)
|
||||
notification.set_body(body)
|
||||
if icon: notification.set_icon(icon)
|
||||
self.get_application().send_notification(None, notification)
|
||||
|
||||
def delete_message(self, message_element):
|
||||
message_index = self.current_chat_elements.index(message_element)
|
||||
del self.chats["chats"][self.chats["selected_chat"]]["messages"][message_index]
|
||||
self.chat_container.remove(message_element)
|
||||
del self.current_chat_elements[message_index]
|
||||
self.save_history()
|
||||
message_index = int(message_element.get_name())
|
||||
if message_index < len(self.chats["chats"][self.chats["selected_chat"]]["messages"]):
|
||||
self.chats["chats"][self.chats["selected_chat"]]["messages"][message_index] = None
|
||||
self.chat_container.remove(message_element)
|
||||
self.save_history()
|
||||
|
||||
def show_message(self, msg:str, bot:bool, footer:str=None, image_base64:str=None):
|
||||
message_text = Gtk.TextView(
|
||||
@@ -315,12 +341,12 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
message_box.append(image)
|
||||
|
||||
message_box.append(message_text)
|
||||
self.current_chat_elements.append(Gtk.Overlay(css_classes=["message"]))
|
||||
self.current_chat_elements[-1].set_child(message_box)
|
||||
overlay = Gtk.Overlay(css_classes=["message"], name=str(len(self.chats["chats"][self.chats["selected_chat"]]["messages"])-1))
|
||||
overlay.set_child(message_box)
|
||||
|
||||
delete_button.connect("clicked", lambda button, element=self.current_chat_elements[-1]: self.delete_message(element))
|
||||
self.current_chat_elements[-1].add_overlay(delete_button)
|
||||
self.chat_container.append(self.current_chat_elements[-1])
|
||||
delete_button.connect("clicked", lambda button, element=overlay: self.delete_message(element))
|
||||
overlay.add_overlay(delete_button)
|
||||
self.chat_container.append(overlay)
|
||||
|
||||
if bot:
|
||||
self.bot_message = message_buffer
|
||||
@@ -361,12 +387,15 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
else:
|
||||
self.connection_error()
|
||||
|
||||
def save_server_config(self):
|
||||
with open(os.path.join(self.config_dir, "server.json"), "w+") as f:
|
||||
json.dump({'remote_url': self.remote_url, 'run_remote': self.run_remote, 'local_port': local_instance.port, 'run_on_background': self.run_on_background, 'model_tweaks': self.model_tweaks}, f)
|
||||
|
||||
def verify_connection(self):
|
||||
response = connection_handler.simple_get(connection_handler.url)
|
||||
if response['status'] == 'ok':
|
||||
if "Ollama is running" in response['text']:
|
||||
with open(os.path.join(self.config_dir, "server.json"), "w+") as f:
|
||||
json.dump({'remote_url': self.remote_url, 'run_remote': self.run_remote, 'local_port': local_instance.port, 'run_on_background': self.run_on_background}, f)
|
||||
self.save_server_config()
|
||||
self.update_list_local_models()
|
||||
return True
|
||||
return False
|
||||
@@ -412,7 +441,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
|
||||
footer = None
|
||||
if part['text'].split("\n")[-1] == parts[-1]['text'].split("\n")[-1]:
|
||||
footer = "\n\n<small>" + part['text'].split('\n')[-1] + "</small>"
|
||||
footer = "\n<small>" + part['text'].split('\n')[-1] + "</small>"
|
||||
part['text'] = '\n'.join(part['text'].split("\n")[:-1])
|
||||
|
||||
part['text'] = part['text'].replace("\n* ", "\n• ")
|
||||
@@ -464,6 +493,8 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
code_block_box.append(source_view)
|
||||
self.bot_message_box.append(code_block_box)
|
||||
self.style_manager.connect("notify::dark", self.on_theme_changed, buffer)
|
||||
vadjustment = self.chat_window.get_vadjustment()
|
||||
vadjustment.set_value(vadjustment.get_upper())
|
||||
self.bot_message = None
|
||||
self.bot_message_box = None
|
||||
|
||||
@@ -508,30 +539,33 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
self.chats["chats"][self.chats["selected_chat"]]["messages"][-1]['content'] += data['message']['content']
|
||||
|
||||
def toggle_ui_sensitive(self, status):
|
||||
for element in [self.chat_list_box, self.export_chat_button, self.import_chat_button, self.add_chat_button]:
|
||||
for element in [self.chat_list_box, self.add_chat_button]:
|
||||
element.set_sensitive(status)
|
||||
|
||||
def switch_send_stop_button(self):
|
||||
self.stop_button.set_visible(self.send_button.get_visible())
|
||||
self.send_button.set_visible(not self.send_button.get_visible())
|
||||
|
||||
def run_message(self, messages, model):
|
||||
response = connection_handler.stream_post(f"{connection_handler.url}/api/chat", data=json.dumps({"model": model, "messages": messages}), callback=self.update_bot_message)
|
||||
GLib.idle_add(self.add_code_blocks)
|
||||
GLib.idle_add(self.send_button.set_css_classes, ["suggested-action"])
|
||||
GLib.idle_add(self.send_button.get_child().set_label, "Send")
|
||||
GLib.idle_add(self.send_button.get_child().set_icon_name, "send-to-symbolic")
|
||||
GLib.idle_add(self.switch_send_stop_button)
|
||||
GLib.idle_add(self.toggle_ui_sensitive, True)
|
||||
if self.verify_if_image_can_be_used(): GLib.idle_add(self.image_button.set_sensitive, True)
|
||||
GLib.idle_add(self.image_button.set_css_classes, [])
|
||||
GLib.idle_add(self.image_button.get_child().set_icon_name, "image-x-generic-symbolic")
|
||||
GLib.idle_add(self.image_button.set_css_classes, ["circular"])
|
||||
self.attached_image = {"path": None, "base64": None}
|
||||
if response['status'] == 'error':
|
||||
GLib.idle_add(self.connection_error)
|
||||
print(response)
|
||||
|
||||
def pull_model_update(self, data, model_name):
|
||||
if model_name in list(self.pulling_models.keys()):
|
||||
GLib.idle_add(self.pulling_models[model_name].set_subtitle, data['status'] + (f" | {round(data['completed'] / data['total'] * 100, 2)}%" if 'completed' in data and 'total' in data else ""))
|
||||
GLib.idle_add(self.pulling_models[model_name]['row'].set_subtitle, data['status'])
|
||||
if 'completed' in data and 'total' in data: GLib.idle_add(self.pulling_models[model_name]['progress_bar'].set_fraction, (data['completed'] / data['total']))
|
||||
else: GLib.idle_add(self.pulling_models[model_name]['progress_bar'].pulse)
|
||||
else:
|
||||
if len(list(self.pulling_models.keys())) == 0:
|
||||
GLib.idle_add(self.pulling_model_list_box.set_visible, False)
|
||||
sys.exit()
|
||||
|
||||
def pull_model_process(self, model):
|
||||
data = {"name":model}
|
||||
@@ -541,11 +575,11 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
if response['status'] == 'ok':
|
||||
GLib.idle_add(self.show_notification, _("Task Complete"), _("Model '{}' pulled successfully.").format(model), True, Gio.ThemedIcon.new("emblem-ok-symbolic"))
|
||||
GLib.idle_add(self.show_toast, "good", 1, self.manage_models_overlay)
|
||||
GLib.idle_add(self.pulling_models[model].get_parent().remove, self.pulling_models[model])
|
||||
GLib.idle_add(self.pulling_models[model]['overlay'].get_parent().get_parent().remove, self.pulling_models[model]['overlay'].get_parent())
|
||||
del self.pulling_models[model]
|
||||
else:
|
||||
GLib.idle_add(self.show_notification, _("Pull Model Error"), _("Failed to pull model '{}' due to network error.").format(model), True, Gio.ThemedIcon.new("dialog-error-symbolic"))
|
||||
GLib.idle_add(self.pulling_models[model].get_parent().remove, self.pulling_models[model])
|
||||
GLib.idle_add(self.pulling_models[model]['overlay'].get_parent().get_parent().remove, self.pulling_models[model]['overlay'].get_parent())
|
||||
del self.pulling_models[model]
|
||||
GLib.idle_add(self.manage_models_dialog.close)
|
||||
GLib.idle_add(self.connection_error)
|
||||
@@ -554,17 +588,24 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
|
||||
def pull_model(self, model):
|
||||
if model in list(self.pulling_models.keys()):
|
||||
self.show_toast("info", 3, self.manage_models_overlay)
|
||||
self.show_toast("info", 2, self.manage_models_overlay)
|
||||
return
|
||||
if model in self.local_models:
|
||||
self.show_toast("info", 4, self.manage_models_overlay)
|
||||
self.show_toast("info", 3, self.manage_models_overlay)
|
||||
return
|
||||
self.pulling_model_list_box.set_visible(True)
|
||||
model_row = Adw.ActionRow(
|
||||
title = model
|
||||
)
|
||||
thread = threading.Thread(target=self.pull_model_process, kwargs={"model": model})
|
||||
self.pulling_models[model] = model_row
|
||||
overlay = Gtk.Overlay()
|
||||
progress_bar = Gtk.ProgressBar(
|
||||
valign = 2,
|
||||
show_text = False,
|
||||
margin_start = 10,
|
||||
margin_end = 10,
|
||||
css_classes = ["osd", "horizontal", "bottom"]
|
||||
)
|
||||
button = Gtk.Button(
|
||||
icon_name = "media-playback-stop-symbolic",
|
||||
vexpand = False,
|
||||
@@ -572,8 +613,12 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
css_classes = ["error"]
|
||||
)
|
||||
button.connect("clicked", lambda button, model_name=model : dialogs.stop_pull_model(self, model_name))
|
||||
#model_row.add_suffix(progress_bar)
|
||||
model_row.add_suffix(button)
|
||||
self.pulling_model_list_box.append(model_row)
|
||||
self.pulling_models[model] = {"row": model_row, "progress_bar": progress_bar, "overlay": overlay}
|
||||
overlay.set_child(model_row)
|
||||
overlay.add_overlay(progress_bar)
|
||||
self.pulling_model_list_box.append(overlay)
|
||||
thread.start()
|
||||
|
||||
def update_list_available_models(self):
|
||||
@@ -584,7 +629,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
subtitle = "Image recognition" if model_info["image"] else None
|
||||
)
|
||||
link_button = Gtk.Button(
|
||||
icon_name = "web-browser-symbolic",
|
||||
icon_name = "globe-symbolic",
|
||||
vexpand = False,
|
||||
valign = 3,
|
||||
css_classes = ["success"]
|
||||
@@ -608,12 +653,13 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
def load_history_into_chat(self):
|
||||
for widget in list(self.chat_container): self.chat_container.remove(widget)
|
||||
for message in self.chats['chats'][self.chats["selected_chat"]]['messages']:
|
||||
if message['role'] == 'user':
|
||||
self.show_message(message['content'], False, f"\n\n<small>{message['date']}</small>", message['images'][0] if 'images' in message and len(message['images']) > 0 else None)
|
||||
else:
|
||||
self.show_message(message['content'], True, f"\n\n<small>{message['model']}\t|\t{message['date']}</small>")
|
||||
self.add_code_blocks()
|
||||
self.bot_message = None
|
||||
if message:
|
||||
if message['role'] == 'user':
|
||||
self.show_message(message['content'], False, f"\n\n<small>{message['date']}</small>", message['images'][0] if 'images' in message and len(message['images']) > 0 else None)
|
||||
else:
|
||||
self.show_message(message['content'], True, f"\n\n<small>{message['model']}\t|\t{message['date']}</small>")
|
||||
self.add_code_blocks()
|
||||
self.bot_message = None
|
||||
|
||||
def load_history(self):
|
||||
if os.path.exists(os.path.join(self.config_dir, "chats.json")):
|
||||
@@ -622,6 +668,9 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
self.chats = json.load(f)
|
||||
if "selected_chat" not in self.chats or self.chats["selected_chat"] not in self.chats["chats"]: self.chats["selected_chat"] = list(self.chats["chats"].keys())[0]
|
||||
if len(list(self.chats["chats"].keys())) == 0: self.chats["chats"][_("New Chat")] = {"messages": []}
|
||||
for chat_name, content in self.chats['chats'].items():
|
||||
for i, content in enumerate(content['messages']):
|
||||
if not content: del self.chats['chats'][chat_name]['messages'][i]
|
||||
except Exception as e:
|
||||
self.chats = {"chats": {_("New Chat"): {"messages": []}}, "selected_chat": _("New Chat")}
|
||||
self.load_history_into_chat()
|
||||
@@ -646,14 +695,12 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
image_data = output.getvalue()
|
||||
self.attached_image["base64"] = base64.b64encode(image_data).decode("utf-8")
|
||||
|
||||
self.image_button.set_css_classes(["destructive-action"])
|
||||
self.image_button.get_child().set_icon_name("edit-delete-symbolic")
|
||||
self.image_button.set_css_classes(["destructive-action", "circular"])
|
||||
except Exception as e:
|
||||
self.show_toast("error", 5, self.main_overlay)
|
||||
|
||||
def remove_image(self):
|
||||
self.image_button.set_css_classes([])
|
||||
self.image_button.get_child().set_icon_name("image-x-generic-symbolic")
|
||||
self.image_button.set_css_classes(["circular"])
|
||||
self.attached_image = {"path": None, "base64": None}
|
||||
|
||||
def generate_numbered_chat_name(self, chat_name) -> str:
|
||||
@@ -674,24 +721,24 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
self.save_history()
|
||||
self.update_chat_list()
|
||||
if len(self.chats['chats'])==0:
|
||||
self.chat_new()
|
||||
self.new_chat()
|
||||
|
||||
def rename_chat(self, old_chat_name, new_chat_name, label_element):
|
||||
new_chat_name = self.generate_numbered_chat_name(new_chat_name)
|
||||
self.chats["chats"][new_chat_name] = self.chats["chats"][old_chat_name]
|
||||
del self.chats["chats"][old_chat_name]
|
||||
label_element.set_label(new_chat_name)
|
||||
label_element.get_parent().set_name(new_chat_name)
|
||||
self.save_history()
|
||||
|
||||
def new_chat(self, chat_name):
|
||||
chat_name = self.generate_numbered_chat_name(chat_name)
|
||||
def new_chat(self):
|
||||
chat_name = self.generate_numbered_chat_name(_("New Chat"))
|
||||
self.chats["chats"][chat_name] = {"messages": []}
|
||||
self.chats["selected_chat"] = chat_name
|
||||
self.save_history()
|
||||
self.new_chat_element(chat_name)
|
||||
self.new_chat_element(chat_name, True)
|
||||
|
||||
def stop_pull_model(self, model_name):
|
||||
self.pulling_models[model_name].get_parent().remove(self.pulling_models[model_name])
|
||||
self.pulling_models[model_name]['overlay'].get_parent().get_parent().remove(self.pulling_models[model_name]['overlay'].get_parent())
|
||||
del self.pulling_models[model_name]
|
||||
|
||||
def delete_model(self, model_name):
|
||||
@@ -703,7 +750,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
self.manage_models_dialog.close()
|
||||
self.connection_error()
|
||||
|
||||
def new_chat_element(self, chat_name):
|
||||
def new_chat_element(self, chat_name:str, select:bool):
|
||||
chat_content = Gtk.Box(
|
||||
spacing=6
|
||||
)
|
||||
@@ -716,8 +763,13 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
chat_label = Gtk.Label(
|
||||
label=chat_name,
|
||||
hexpand=True,
|
||||
halign=1
|
||||
halign=0,
|
||||
wrap=True,
|
||||
ellipsize=3,
|
||||
wrap_mode=2,
|
||||
xalign=0
|
||||
)
|
||||
|
||||
button_delete = Gtk.Button(
|
||||
icon_name = "user-trash-symbolic",
|
||||
vexpand = False,
|
||||
@@ -731,17 +783,18 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
valign = 3,
|
||||
css_classes = ["accent", "flat"]
|
||||
)
|
||||
button_rename.connect("clicked", lambda button, chat_name=chat_name, label_element=chat_label: dialogs.rename_chat(self, chat_name, label_element))
|
||||
chat_content.set_name(chat_name)
|
||||
button_rename.connect("clicked", lambda button, label_element=chat_label: dialogs.rename_chat(self, label_element))
|
||||
chat_content.append(chat_label)
|
||||
chat_content.append(button_delete)
|
||||
chat_content.append(button_rename)
|
||||
self.chat_list_box.append(chat_row)
|
||||
if chat_name==self.chats["selected_chat"]: self.chat_list_box.select_row(chat_row)
|
||||
if select: self.chat_list_box.select_row(chat_row)
|
||||
|
||||
def update_chat_list(self):
|
||||
self.chat_list_box.remove_all()
|
||||
for name, content in self.chats['chats'].items():
|
||||
self.new_chat_element(name)
|
||||
self.new_chat_element(name, self.chats["selected_chat"] == name)
|
||||
|
||||
def show_preferences_dialog(self):
|
||||
self.preferences_dialog.present(self)
|
||||
@@ -755,16 +808,15 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
def connect_local(self):
|
||||
self.run_remote = False
|
||||
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
||||
local_instance.start(self.data_dir)
|
||||
local_instance.start()
|
||||
if self.verify_connection() == False: self.connection_error()
|
||||
else: self.remote_connection_switch.set_active(False)
|
||||
|
||||
def connection_error(self):
|
||||
if self.run_remote:
|
||||
dialogs.reconnect_remote(self)
|
||||
dialogs.reconnect_remote(self, connection_handler.url)
|
||||
else:
|
||||
local_instance.stop()
|
||||
local_instance.start(self.data_dir)
|
||||
local_instance.reset()
|
||||
self.show_toast("error", 7, self.main_overlay)
|
||||
|
||||
def connection_switched(self):
|
||||
@@ -777,7 +829,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
else: local_instance.stop()
|
||||
else:
|
||||
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
||||
local_instance.start(self.data_dir)
|
||||
local_instance.start()
|
||||
if self.verify_connection() == False: self.connection_error()
|
||||
self.update_list_available_models()
|
||||
|
||||
@@ -828,12 +880,12 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
GtkSource.init()
|
||||
self.set_help_overlay(self.shortcut_window)
|
||||
self.get_application().set_accels_for_action("win.show-help-overlay", ['<primary>slash'])
|
||||
self.get_application().create_action('new_chat', lambda *_: self.new_chat(), ['<primary>n'])
|
||||
self.get_application().create_action('clear', lambda *_: dialogs.clear_chat(self), ['<primary>e'])
|
||||
self.get_application().create_action('send', lambda *_: self.send_message(self), ['Return'])
|
||||
self.add_chat_button.connect("clicked", lambda button : dialogs.new_chat(self))
|
||||
|
||||
self.export_chat_button.connect("clicked", lambda button : self.export_current_chat())
|
||||
self.import_chat_button.connect("clicked", lambda button : self.import_chat())
|
||||
self.get_application().create_action('export_current_chat', lambda *_: self.export_current_chat())
|
||||
self.get_application().create_action('import_chat', lambda *_: self.import_chat())
|
||||
self.add_chat_button.connect("clicked", lambda button : self.new_chat())
|
||||
|
||||
self.remote_connection_entry.connect("entry-activated", lambda entry : entry.set_css_classes([]))
|
||||
self.remote_connection_switch.connect("notify", lambda pspec, user_data : self.connection_switched())
|
||||
@@ -845,6 +897,12 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
local_instance.port = data['local_port']
|
||||
self.remote_url = data['remote_url']
|
||||
self.run_on_background = data['run_on_background']
|
||||
#Model Tweaks
|
||||
if "model_tweaks" in data: self.model_tweaks = data['model_tweaks']
|
||||
self.temperature_spin.set_value(data['model_tweaks']['temperature'])
|
||||
self.seed_spin.set_value(data['model_tweaks']['seed'])
|
||||
self.keep_alive_spin.set_value(data['model_tweaks']['keep_alive'])
|
||||
|
||||
self.background_switch.set_active(self.run_on_background)
|
||||
self.set_hide_on_close(self.run_on_background)
|
||||
self.remote_connection_entry.set_text(self.remote_url)
|
||||
@@ -854,12 +912,12 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
||||
else:
|
||||
self.remote_connection_switch.set_active(False)
|
||||
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
||||
local_instance.start(self.data_dir)
|
||||
local_instance.start()
|
||||
else:
|
||||
local_instance.start(self.data_dir)
|
||||
local_instance.start()
|
||||
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
||||
self.welcome_dialog.present(self)
|
||||
if self.verify_connection() is False and self.run_remote == False: self.connection_error()
|
||||
if self.verify_connection() is False: self.connection_error()
|
||||
self.update_list_available_models()
|
||||
self.load_history()
|
||||
self.update_chat_list()
|
||||
|
||||
262
src/window.ui
262
src/window.ui
@@ -3,6 +3,7 @@
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<requires lib="Adw" version="1.0"/>
|
||||
<template class="AlpacaWindow" parent="AdwApplicationWindow">
|
||||
<signal name="close-request" handler="closing_app"/>
|
||||
<property name="resizable">True</property>
|
||||
<property name="width-request">360</property>
|
||||
<property name="height-request">700</property>
|
||||
@@ -43,21 +44,11 @@
|
||||
</object>
|
||||
</child>
|
||||
<child type="end">
|
||||
<object class="GtkButton" id="import_chat_button">
|
||||
<property name="tooltip-text" translatable="yes">Import chat</property>
|
||||
<property name="icon-name">document-open-symbolic</property>
|
||||
<style>
|
||||
<class name="flat"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child type="end">
|
||||
<object class="GtkButton" id="export_chat_button">
|
||||
<property name="tooltip-text" translatable="yes">Export chat</property>
|
||||
<property name="icon-name">folder-download-symbolic</property>
|
||||
<style>
|
||||
<class name="flat"/>
|
||||
</style>
|
||||
<object class="GtkMenuButton" id="chats_menu_button">
|
||||
<property name="direction">1</property>
|
||||
<property name="halign">3</property>
|
||||
<property name="menu-model">chats_button_menu</property>
|
||||
<property name="icon-name">view-more-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -112,7 +103,7 @@
|
||||
<property name="tooltip-text" translatable="yes">Manage models</property>
|
||||
<child>
|
||||
<object class="AdwButtonContent">
|
||||
<property name="icon-name">package-x-generic-symbolic</property>
|
||||
<property name="icon-name">library-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -179,62 +170,79 @@
|
||||
<property name="margin-bottom">12</property>
|
||||
<property name="margin-start">12</property>
|
||||
<property name="margin-end">12</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="image_button">
|
||||
<signal name="clicked" handler="open_image"/>
|
||||
<property name="vexpand">false</property>
|
||||
<property name="valign">3</property>
|
||||
<property name="sensitive">false</property>
|
||||
<property name="tooltip-text" translatable="yes">Only available on selected models</property>
|
||||
<child>
|
||||
<object class="AdwButtonContent">
|
||||
<property name="icon-name">image-x-generic-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<style>
|
||||
<class name="card"/>
|
||||
<class name="message-input"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="margin-start">12</property>
|
||||
<property name="margin-end">12</property>
|
||||
|
||||
<style>
|
||||
<class name="message-input"/>
|
||||
<class name="undershoot-bottom"/>
|
||||
<class name="undershoot-top"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkTextView" id="message_text_view">
|
||||
<property name="wrap-mode">word</property>
|
||||
<property name="top-margin">6</property>
|
||||
<property name="bottom-margin">6</property>
|
||||
<property name="margin-end">12</property>
|
||||
<property name="hexpand">true</property>
|
||||
<style>
|
||||
<class name="message-text-view"/>
|
||||
<class name="message-input"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">1</property>
|
||||
<property name="spacing">12</property>
|
||||
<object class="GtkButton" id="send_button">
|
||||
<signal name="clicked" handler="send_message"/>
|
||||
<property name="vexpand">false</property>
|
||||
<property name="valign">3</property>
|
||||
<style>
|
||||
<class name="suggested-action"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkButton" id="send_button">
|
||||
<signal name="clicked" handler="send_message"/>
|
||||
<style>
|
||||
<class name="suggested-action"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="AdwButtonContent">
|
||||
<property name="label" translatable="yes">Send</property>
|
||||
<property name="icon-name">send-to-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
<object class="AdwButtonContent">
|
||||
<property name="icon-name">paper-plane-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="stop_button">
|
||||
<signal name="clicked" handler="stop_message"/>
|
||||
<property name="vexpand">false</property>
|
||||
<property name="valign">3</property>
|
||||
<property name="visible">false</property>
|
||||
<style>
|
||||
<class name="destructive-action"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkButton" id="image_button">
|
||||
<signal name="clicked" handler="open_image"/>
|
||||
<property name="sensitive">false</property>
|
||||
<property name="tooltip-text" translatable="yes">Only available on selected models</property>
|
||||
<child>
|
||||
<object class="AdwButtonContent">
|
||||
<property name="label" translatable="yes">Image</property>
|
||||
<property name="icon-name">image-x-generic-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
<object class="AdwButtonContent">
|
||||
<property name="icon-name">media-playback-stop-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -257,9 +265,9 @@
|
||||
<property name="height-request">600</property>
|
||||
<property name="title" translatable="yes">Preferences</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage" id="connection_page">
|
||||
<object class="AdwPreferencesPage" id="general_page">
|
||||
<property name="title" translatable="yes">General</property>
|
||||
<property name="icon-name">insert-link-symbolic</property>
|
||||
<property name="icon-name">preferences-system-symbolic</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Remote Connection</property>
|
||||
@@ -291,6 +299,64 @@
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage" id="model_page">
|
||||
<property name="title" translatable="yes">Advanced Model Settings</property>
|
||||
<property name="icon-name">preferences-other-symbolic</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title" translatable="yes">Model Tweaks</property>
|
||||
<property name="description" translatable="yes">Manage the behavior of the AI models</property>
|
||||
<child>
|
||||
<object class="AdwSpinRow" id="temperature_spin">
|
||||
<signal name="changed" handler="model_spin_changed"/>
|
||||
<property name="name">temperature</property>
|
||||
<property name="title" translatable="yes">Temperature</property>
|
||||
<property name="subtitle" translatable="yes">The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)</property>
|
||||
<property name="digits">1</property>
|
||||
<property name="adjustment">
|
||||
<object class="GtkAdjustment">
|
||||
<property name="lower">0</property>
|
||||
<property name="upper">1</property>
|
||||
<property name="step-increment">0.1</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwSpinRow" id="seed_spin">
|
||||
<signal name="changed" handler="model_spin_changed"/>
|
||||
<property name="name">seed</property>
|
||||
<property name="title" translatable="yes">Seed</property>
|
||||
<property name="subtitle" translatable="yes">Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt. (Default: 0 (random))</property>
|
||||
<property name="adjustment">
|
||||
<object class="GtkAdjustment">
|
||||
<property name="lower">0</property>
|
||||
<property name="upper">999999</property>
|
||||
<property name="step-increment">1</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwSpinRow" id="keep_alive_spin">
|
||||
<signal name="changed" handler="model_spin_changed"/>
|
||||
<property name="name">keep_alive</property>
|
||||
<property name="title" translatable="yes">Keep Alive Time</property>
|
||||
<property name="subtitle" translatable="yes">Controls how long the model will stay loaded into memory following the request in minutes (default: 5)</property>
|
||||
<property name="adjustment">
|
||||
<object class="GtkAdjustment">
|
||||
<property name="lower">0</property>
|
||||
<property name="upper">999999</property>
|
||||
<property name="step-increment">1</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
<object class="AdwDialog" id="manage_models_dialog">
|
||||
@@ -441,6 +507,94 @@
|
||||
<property name="description" translatable="yes">Alpaca and its developers are not liable for any damages to devices or software resulting from the execution of code generated by an AI model. Please exercise caution and review the code carefully before running it.</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property name="margin-top">12</property>
|
||||
<property name="margin-bottom">12</property>
|
||||
<property name="margin-start">12</property>
|
||||
<property name="margin-end">12</property>
|
||||
<property name="title" translatable="yes">Featured Models</property>
|
||||
<property name="description" translatable="yes">Alpaca works locally on your device, to start chatting you'll need an AI model, you can either pull models from this list or the 'Manage Models' menu later.</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="selection-mode">none</property>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="no">Llama3</property>
|
||||
<property name="subtitle" translatable="yes">Built by Meta</property>
|
||||
<child type="suffix">
|
||||
<object class="GtkButton">
|
||||
<signal name="clicked" handler="pull_featured_model"/>
|
||||
<property name="vexpand">false</property>
|
||||
<property name="icon-name">folder-download-symbolic</property>
|
||||
<property name="valign">3</property>
|
||||
<style>
|
||||
<class name="accent"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="no">Gemma</property>
|
||||
<property name="subtitle" translatable="yes">Built by Google DeepMind</property>
|
||||
<child type="suffix">
|
||||
<object class="GtkButton">
|
||||
<signal name="clicked" handler="pull_featured_model"/>
|
||||
<property name="vexpand">false</property>
|
||||
<property name="icon-name">folder-download-symbolic</property>
|
||||
<property name="valign">3</property>
|
||||
<style>
|
||||
<class name="accent"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="no">Phi3</property>
|
||||
<property name="subtitle" translatable="yes">Built by Microsoft</property>
|
||||
<child type="suffix">
|
||||
<object class="GtkButton">
|
||||
<signal name="clicked" handler="pull_featured_model"/>
|
||||
<property name="vexpand">false</property>
|
||||
<property name="icon-name">folder-download-symbolic</property>
|
||||
<property name="valign">3</property>
|
||||
<style>
|
||||
<class name="accent"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="no">Llava</property>
|
||||
<property name="subtitle" translatable="yes">Multimodal AI with image recognition</property>
|
||||
<child type="suffix">
|
||||
<object class="GtkButton">
|
||||
<signal name="clicked" handler="pull_featured_model"/>
|
||||
<property name="vexpand">false</property>
|
||||
<property name="icon-name">folder-download-symbolic</property>
|
||||
<property name="valign">3</property>
|
||||
<style>
|
||||
<class name="accent"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -468,10 +622,15 @@
|
||||
</item>
|
||||
</section>
|
||||
</menu>
|
||||
<menu id="chat_context_menu">
|
||||
<menu id="chats_button_menu">
|
||||
<section>
|
||||
<item>
|
||||
<attribute name="label" translatable="yes">Remove</attribute>
|
||||
<attribute name="label" translatable="yes">Export current chat</attribute>
|
||||
<attribute name="action">app.export_current_chat</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label" translatable="yes">Import chat</attribute>
|
||||
<attribute name="action">app.import_chat</attribute>
|
||||
</item>
|
||||
</section>
|
||||
</menu>
|
||||
@@ -516,6 +675,12 @@
|
||||
<property name="title" translatable="yes">Preferences</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="accelerator"><ctrl>N</property>
|
||||
<property name="title" translatable="yes">New Chat</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property name="accelerator"><ctrl>slash</property>
|
||||
@@ -558,3 +723,4 @@
|
||||
</object>
|
||||
</interface>
|
||||
|
||||
|
||||
|
||||
@@ -6,5 +6,7 @@ echo "Updating Spanish..."
|
||||
msgmerge -U po/es.po po/alpaca.pot
|
||||
#echo "Updating Russian..."
|
||||
#msgmerge -U po/ru.po po/alpaca.pot
|
||||
echo "Updating French"
|
||||
msgmerge -U po/fr.po po/alpaca.pot
|
||||
echo "Updating Brazilian Portuguese"
|
||||
msgmerge -U po/pt_BR.po po/alpaca.pot
|
||||
|
||||
Reference in New Issue
Block a user