23 Commits
0.5.1 ... 0.6.0

Author SHA1 Message Date
jeffser
f7a777f26c Preparing for 0.6.0 pt2 2024-05-21 23:27:14 -06:00
jeffser
e507ef891b Preparing for 0.6.0 2024-05-21 23:26:22 -06:00
jeffser
e488b9bddc Update 2024-05-21 23:16:05 -06:00
jeffser
c9c990df58 Added import/export and added 'run on background' option on preferences 2024-05-21 23:15:32 -06:00
jeffser
d4a7576432 Small CSS change and 'wait until Ollama loads to show Alpaca' fixed 2024-05-21 21:18:30 -06:00
jeffser
fd86bc828d Fix error messages 2024-05-21 18:52:56 -06:00
jeffser
766eeff097 Added new info messages 2024-05-21 18:08:13 -06:00
jeffser
69567d1c6c Integrated Olllama instance inside Alpaca 2024-05-21 17:58:51 -06:00
jeffser
6d22182e03 Initial support for sandbox Ollama 2024-05-21 15:36:24 -06:00
jeffser
6fc30bf2a7 Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-05-20 19:20:40 -06:00
jeffser
b16e2aa7f7 Preparing for 0.5.5 2024-05-20 19:20:29 -06:00
Jeffry Samuel
b64b96461c maybe 2024-05-20 19:02:51 -06:00
jeffser
c7f8c560a1 Better UI for 'Manage Models' dialog 2024-05-20 17:36:22 -06:00
jeffser
26bc4fe37f Replaced model description with a button to open Ollama's website for the model 2024-05-20 16:29:48 -06:00
jeffser
ce427feee4 Added myself to the credits as the spanish translator 2024-05-20 16:06:04 -06:00
jeffser
9c1f239f53 Better UI on the sidebar 2024-05-20 15:46:25 -06:00
jeffser
478c699aff Using XDG properly to get config folder '.var/app/com.jeffser.Alpaca/config' 2024-05-20 15:25:33 -06:00
jeffser
5eef0887eb Better summary 2024-05-20 15:19:07 -06:00
jeffser
3438c1716e Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-05-20 14:46:29 -06:00
jeffser
113602dea7 Updated README 2024-05-20 14:46:23 -06:00
Alex K
ac93581045 Update Russian translation (#16)
* Add files via upload

* Add files via upload

* Update ru.po

* Add files via upload

* Update ru.po

* Add files via upload

---------

Co-authored-by: Jeffry Samuel <69224322+Jeffser@users.noreply.github.com>
2024-05-20 13:07:34 -06:00
Alex K
94f8e9550e Update Russian translation (#15)
* Add files via upload

* Add files via upload

---------

Co-authored-by: Jeffry Samuel <69224322+Jeffser@users.noreply.github.com>
2024-05-19 22:01:28 -06:00
jeffser
f4ea0b7389 Quick fix 2024-05-19 21:54:42 -06:00
13 changed files with 2452 additions and 1079 deletions

View File

@@ -23,11 +23,12 @@ An [Ollama](https://github.com/ollama/ollama) client made with GTK4 and Adwaita.
- Code highlighting - Code highlighting
- Multiple conversations - Multiple conversations
- Notifications - Notifications
- Import / Export chats
## Future features! ## Future features!
- Document recognition - Document recognition
- Import / Export chats - Delete / Edit messages
- Snap Package (maybe)
## Screenies ## Screenies
Login to Ollama instance | Chatting with models | Managing models Login to Ollama instance | Chatting with models | Managing models

View File

@@ -71,6 +71,31 @@
} }
] ]
}, },
{
"name": "ollama",
"buildsystem": "simple",
"build-commands": [
"install -Dm0755 ollama* ${FLATPAK_DEST}/bin/ollama"
],
"sources": [
{
"type": "file",
"url": "https://github.com/ollama/ollama/releases/download/v0.1.38/ollama-linux-amd64",
"sha256": "c3360812503a9756a507ebb9d78667e2b21800a760b45046bc48a8f3b81972f4",
"only-arches": [
"x86_64"
]
},
{
"type": "file",
"url": "https://github.com/ollama/ollama/releases/download/v0.1.38/ollama-linux-arm64",
"sha256": "f2d091afe665b2d5ba8b68e2473d36cdfaf80c61c7d2844a0a8f533c4e62f547",
"only-arches": [
"aarch64"
]
}
]
},
{ {
"name" : "alpaca", "name" : "alpaca",
"builddir" : true, "builddir" : true,

View File

@@ -5,9 +5,8 @@
<project_license>GPL-3.0-or-later</project_license> <project_license>GPL-3.0-or-later</project_license>
<launchable type="desktop-id">com.jeffser.Alpaca.desktop</launchable> <launchable type="desktop-id">com.jeffser.Alpaca.desktop</launchable>
<name>Alpaca</name> <name>Alpaca</name>
<summary>An Ollama client</summary> <summary>Chat with multiple AI models</summary>
<description> <description>
<p>Chat with multiple AI models</p>
<p>An Ollama client</p> <p>An Ollama client</p>
<p>Features</p> <p>Features</p>
<ul> <ul>
@@ -52,22 +51,70 @@
<url type="homepage">https://github.com/Jeffser/Alpaca</url> <url type="homepage">https://github.com/Jeffser/Alpaca</url>
<url type="donation">https://github.com/sponsors/Jeffser</url> <url type="donation">https://github.com/sponsors/Jeffser</url>
<releases> <releases>
<release version="0.6.0" date="2024-05-21">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.6.0</url>
<description>
<p>Huge Update</p>
<ul>
<li>Added Ollama as part of Alpaca, Ollama will run in a sandbox</li>
<li>Added option to connect to remote instances (how it worked before)</li>
<li>Added option to import and export chats</li>
<li>Added option to run Alpaca with Ollama in the background</li>
<li>Added preferences dialog</li>
<li>Changed the welcome dialog</li>
</ul>
<p>
Please report any errors to the issues page, thank you.
</p>
</description>
</release>
<release version="0.5.5" date="2024-05-20">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.5.5</url>
<description>
<p>Yet Another Daily Update</p>
<ul>
<li>Added better UI for 'Manage Models' dialog</li>
<li>Added better UI for the chat sidebar</li>
<li>Replaced model description with a button to open Ollama's website for the model</li>
<li>Added myself to the credits as the spanish translator</li>
<li>Using XDG properly to get config folder</li>
<li>Update for translations</li>
</ul>
<p>
Please report any errors to the issues page, thank you.
</p>
</description>
</release>
<release version="0.5.2" date="2024-05-19">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.5.2</url>
<description>
<p>Quick Fix</p>
<ul>
<li>The last update had some mistakes in the description of the update</li>
</ul>
<p>
Please report any errors to the issues page, thank you.
</p>
</description>
</release>
<release version="0.5.1" date="2024-05-19"> <release version="0.5.1" date="2024-05-19">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.5.1</url> <url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.5.1</url>
<p>Another Daily Update</p> <description>
<ul> <p>Another Daily Update</p>
<li>Added full Spanish translation</li> <ul>
<li>Added support for background pulling of multiple models</li> <li>Added full Spanish translation</li>
<li>Added interrupt button</li> <li>Added support for background pulling of multiple models</li>
<li>Added basic shortcuts</li> <li>Added interrupt button</li>
<li>Better translation support</li> <li>Added basic shortcuts</li>
<li>User can now leave chat name empty when creating a new one, it will add a placeholder name</li> <li>Better translation support</li>
<li>Better scalling for different window sizes</li> <li>User can now leave chat name empty when creating a new one, it will add a placeholder name</li>
<li>Fixed: Can't close app if first time setup fails</li> <li>Better scalling for different window sizes</li>
</ul> <li>Fixed: Can't close app if first time setup fails</li>
<p> </ul>
Please report any errors to the issues page, thank you. <p>
</p> Please report any errors to the issues page, thank you.
</p>
</description>
</release> </release>
<release version="0.5.0" date="2024-05-19"> <release version="0.5.0" date="2024-05-19">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.5.0</url> <url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.5.0</url>

View File

@@ -1,5 +1,5 @@
project('Alpaca', project('Alpaca',
version: '0.5.1', version: '0.6.0',
meson_version: '>= 0.62.0', meson_version: '>= 0.62.0',
default_options: [ 'warning_level=2', 'werror=false', ], default_options: [ 'warning_level=2', 'werror=false', ],
) )

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-05-19 21:30-0600\n" "POT-Creation-Date: 2024-05-21 23:20-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -23,516 +23,645 @@ msgid "Alpaca"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:8 #: data/com.jeffser.Alpaca.metainfo.xml.in:8
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
msgid "An Ollama client"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:10
msgid "Chat with multiple AI models" msgid "Chat with multiple AI models"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:12 #: data/com.jeffser.Alpaca.metainfo.xml.in:10
#: data/com.jeffser.Alpaca.metainfo.xml.in:176 msgid "An Ollama client"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
#: data/com.jeffser.Alpaca.metainfo.xml.in:226
msgid "Features" msgid "Features"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:14 #: data/com.jeffser.Alpaca.metainfo.xml.in:13
#: data/com.jeffser.Alpaca.metainfo.xml.in:178 #: data/com.jeffser.Alpaca.metainfo.xml.in:228
msgid "Talk to multiple models in the same conversation" msgid "Talk to multiple models in the same conversation"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:15 #: data/com.jeffser.Alpaca.metainfo.xml.in:14
#: data/com.jeffser.Alpaca.metainfo.xml.in:179 #: data/com.jeffser.Alpaca.metainfo.xml.in:229
msgid "Pull and delete models from the app" msgid "Pull and delete models from the app"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:17 src/window.ui:405 #: data/com.jeffser.Alpaca.metainfo.xml.in:16 src/window.ui:446
msgid "Disclaimer" msgid "Disclaimer"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:18 #: data/com.jeffser.Alpaca.metainfo.xml.in:17
msgid "" msgid ""
"This project is not affiliated at all with Ollama, I'm not responsible for " "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 " "any damages to your device or software caused by running code given by any "
"models." "models."
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:21 #: data/com.jeffser.Alpaca.metainfo.xml.in:20
msgid "Jeffry Samuel Eduarte Rojas" msgid "Jeffry Samuel Eduarte Rojas"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:39 #: data/com.jeffser.Alpaca.metainfo.xml.in:38
msgid "Welcome dialog" msgid "Welcome dialog"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:43 #: data/com.jeffser.Alpaca.metainfo.xml.in:42
msgid "A conversation involving multiple models" msgid "A conversation involving multiple models"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:47 #: data/com.jeffser.Alpaca.metainfo.xml.in:46
msgid "Managing models" msgid "Managing models"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:72 #: data/com.jeffser.Alpaca.metainfo.xml.in:57
msgid "Really Big Update" msgid "Huge Update"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:74 #: data/com.jeffser.Alpaca.metainfo.xml.in:59
msgid "Added multiple chats support!" msgid "Added Ollama as part of Alpaca, Ollama will run in a sandbox"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:75 #: data/com.jeffser.Alpaca.metainfo.xml.in:60
msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)" msgid "Added option to connect to remote instances (how it worked before)"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:76 #: data/com.jeffser.Alpaca.metainfo.xml.in:61
msgid "Added autoscroll if the user is at the bottom of the chat" msgid "Added option to import and export chats"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:77 #: data/com.jeffser.Alpaca.metainfo.xml.in:62
msgid "Added support for multiple tags on a single model" msgid "Added option to run Alpaca with Ollama in the background"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:78 #: data/com.jeffser.Alpaca.metainfo.xml.in:63
msgid "Added better model management dialog" msgid "Added preferences dialog"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:79 #: data/com.jeffser.Alpaca.metainfo.xml.in:64
msgid "Added loading spinner when sending message" msgid "Changed the welcome dialog"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:80
msgid "Added notifications if app is not active and a model pull finishes"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:81
msgid "Added new symbolic icon"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:82
msgid "Added frame to message textview widget"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:66
#: data/com.jeffser.Alpaca.metainfo.xml.in:83 #: data/com.jeffser.Alpaca.metainfo.xml.in:83
msgid "Fixed \"code blocks shouldn't be editable\"" #: data/com.jeffser.Alpaca.metainfo.xml.in:95
msgstr "" #: data/com.jeffser.Alpaca.metainfo.xml.in:114
#: data/com.jeffser.Alpaca.metainfo.xml.in:135
#: data/com.jeffser.Alpaca.metainfo.xml.in:85 #: data/com.jeffser.Alpaca.metainfo.xml.in:151
#: data/com.jeffser.Alpaca.metainfo.xml.in:101 #: data/com.jeffser.Alpaca.metainfo.xml.in:167
#: data/com.jeffser.Alpaca.metainfo.xml.in:117
#: data/com.jeffser.Alpaca.metainfo.xml.in:131
#: data/com.jeffser.Alpaca.metainfo.xml.in:141
#: data/com.jeffser.Alpaca.metainfo.xml.in:159
#: data/com.jeffser.Alpaca.metainfo.xml.in:181 #: data/com.jeffser.Alpaca.metainfo.xml.in:181
#: data/com.jeffser.Alpaca.metainfo.xml.in:191
#: data/com.jeffser.Alpaca.metainfo.xml.in:209
#: data/com.jeffser.Alpaca.metainfo.xml.in:231
msgid "Please report any errors to the issues page, thank you." msgid "Please report any errors to the issues page, thank you."
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:74
msgid "Yet Another Daily Update"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:76
msgid "Added better UI for 'Manage Models' dialog"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:77
msgid "Added better UI for the chat sidebar"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:78
msgid ""
"Replaced model description with a button to open Ollama's website for the "
"model"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:79
msgid "Added myself to the credits as the spanish translator"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:80
msgid "Using XDG properly to get config folder"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:81
msgid "Update for translations"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:91
msgid "Quick Fix"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:93 #: data/com.jeffser.Alpaca.metainfo.xml.in:93
#: data/com.jeffser.Alpaca.metainfo.xml.in:150 msgid "The last update had some mistakes in the description of the update"
msgid "Big Update"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:95 #: data/com.jeffser.Alpaca.metainfo.xml.in:103
msgid "Added code highlighting" msgid "Another Daily Update"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:96 #: data/com.jeffser.Alpaca.metainfo.xml.in:105
msgid "Added image recognition (llava model)" msgid "Added full Spanish translation"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:97 #: data/com.jeffser.Alpaca.metainfo.xml.in:106
msgid "Added multiline prompt" msgid "Added support for background pulling of multiple models"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:98 #: data/com.jeffser.Alpaca.metainfo.xml.in:107
msgid "Fixed some small bugs" msgid "Added interrupt button"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:99 #: data/com.jeffser.Alpaca.metainfo.xml.in:108
msgid "General optimization" msgid "Added basic shortcuts"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:109 #: data/com.jeffser.Alpaca.metainfo.xml.in:109
msgid "Fixes and features" msgid "Better translation support"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:110
msgid ""
"User can now leave chat name empty when creating a new one, it will add a "
"placeholder name"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:111 #: data/com.jeffser.Alpaca.metainfo.xml.in:111
msgid "Russian translation (thanks github/alexkdeveloper)" msgid "Better scalling for different window sizes"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:112 #: data/com.jeffser.Alpaca.metainfo.xml.in:112
msgid "Fixed: Cannot close app on first setup" msgid "Fixed: Can't close app if first time setup fails"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:113 #: data/com.jeffser.Alpaca.metainfo.xml.in:122
msgid "Fixed: Brand colors for Flathub" msgid "Really Big Update"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:114 #: data/com.jeffser.Alpaca.metainfo.xml.in:124
msgid "Fixed: App description" msgid "Added multiple chats support!"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:115
msgid "Fixed: Only show 'save changes dialog' when you actually change the url"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:125 #: data/com.jeffser.Alpaca.metainfo.xml.in:125
msgid "0.2.2 Bug fixes" msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:126
msgid "Added autoscroll if the user is at the bottom of the chat"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:127 #: data/com.jeffser.Alpaca.metainfo.xml.in:127
msgid "Toast messages appearing behind dialogs" msgid "Added support for multiple tags on a single model"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:128 #: data/com.jeffser.Alpaca.metainfo.xml.in:128
msgid "Local model list not updating when changing servers" msgid "Added better model management dialog"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:129 #: data/com.jeffser.Alpaca.metainfo.xml.in:129
msgid "Added loading spinner when sending message"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:130
msgid "Added notifications if app is not active and a model pull finishes"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:131
msgid "Added new symbolic icon"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:132
msgid "Added frame to message textview widget"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:133
msgid "Fixed \"code blocks shouldn't be editable\""
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:143
#: data/com.jeffser.Alpaca.metainfo.xml.in:200
msgid "Big Update"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:145
msgid "Added code highlighting"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:146
msgid "Added image recognition (llava model)"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:147
msgid "Added multiline prompt"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:148
msgid "Fixed some small bugs"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:149
msgid "General optimization"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:159
msgid "Fixes and features"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:161
msgid "Russian translation (thanks github/alexkdeveloper)"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:162
msgid "Fixed: Cannot close app on first setup"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:163
msgid "Fixed: Brand colors for Flathub"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:164
msgid "Fixed: App description"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:165
msgid "Fixed: Only show 'save changes dialog' when you actually change the url"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:175
msgid "0.2.2 Bug fixes"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:177
msgid "Toast messages appearing behind dialogs"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:178
msgid "Local model list not updating when changing servers"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:179
msgid "Closing the setup dialog closes the whole app" msgid "Closing the setup dialog closes the whole app"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:139 #: data/com.jeffser.Alpaca.metainfo.xml.in:189
msgid "0.2.1 Data saving fix" msgid "0.2.1 Data saving fix"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:140 #: data/com.jeffser.Alpaca.metainfo.xml.in:190
msgid "" msgid ""
"The app didn't save the config files and chat history to the right " "The app didn't save the config files and chat history to the right "
"directory, this is now fixed" "directory, this is now fixed"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:149 #: data/com.jeffser.Alpaca.metainfo.xml.in:199
msgid "0.2.0" msgid "0.2.0"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:151 #: data/com.jeffser.Alpaca.metainfo.xml.in:201
msgid "New Features" msgid "New Features"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:153 #: data/com.jeffser.Alpaca.metainfo.xml.in:203
msgid "Restore chat after closing the app" msgid "Restore chat after closing the app"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:154 #: data/com.jeffser.Alpaca.metainfo.xml.in:204
msgid "A button to clear the chat" msgid "A button to clear the chat"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:155 #: data/com.jeffser.Alpaca.metainfo.xml.in:205
msgid "Fixed multiple bugs involving how messages are shown" msgid "Fixed multiple bugs involving how messages are shown"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:156 #: data/com.jeffser.Alpaca.metainfo.xml.in:206
msgid "Added welcome dialog" msgid "Added welcome dialog"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:157 #: data/com.jeffser.Alpaca.metainfo.xml.in:207
msgid "More stability" msgid "More stability"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:167 #: data/com.jeffser.Alpaca.metainfo.xml.in:217
msgid "0.1.2 Quick fixes" msgid "0.1.2 Quick fixes"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:168 #: data/com.jeffser.Alpaca.metainfo.xml.in:218
msgid "" msgid ""
"This release fixes some metadata needed to have a proper Flatpak application" "This release fixes some metadata needed to have a proper Flatpak application"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:174 #: data/com.jeffser.Alpaca.metainfo.xml.in:224
msgid "0.1.1 Stable Release" msgid "0.1.1 Stable Release"
msgstr "" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:175 #: data/com.jeffser.Alpaca.metainfo.xml.in:225
msgid "This is the first public version of Alpaca" msgid "This is the first public version of Alpaca"
msgstr "" msgstr ""
#: src/window.py:47 src/window.py:758 #: src/window.py:54 src/window.py:761
msgid "New Chat" msgid "New Chat"
msgstr "" msgstr ""
#: src/window.py:86 #: src/window.py:100
msgid "An error occurred" msgid "An error occurred"
msgstr "" msgstr ""
#: src/window.py:87 #: src/window.py:101
msgid "Failed to connect to server" msgid "Failed to connect to server"
msgstr "" msgstr ""
#: src/window.py:88 #: src/window.py:102
msgid "Could not list local models" msgid "Could not list local models"
msgstr "" msgstr ""
#: src/window.py:89 #: src/window.py:103
msgid "Could not delete model" msgid "Could not delete model"
msgstr "" msgstr ""
#: src/window.py:90 #: src/window.py:104
msgid "Could not pull model" msgid "Could not pull model"
msgstr "" msgstr ""
#: src/window.py:91 #: src/window.py:105
msgid "Cannot open image" msgid "Cannot open image"
msgstr "" msgstr ""
#: src/window.py:92 #: src/window.py:106
msgid "Cannot delete chat because it's the only one left" msgid "Cannot delete chat because it's the only one left"
msgstr "" msgstr ""
#: src/window.py:95 #: src/window.py:107
msgid "There was an error with the local Ollama instance, so it has been reset"
msgstr ""
#: src/window.py:110
msgid "Please select a model before chatting" msgid "Please select a model before chatting"
msgstr "" msgstr ""
#: src/window.py:96 #: src/window.py:111
msgid "Chat cannot be cleared while receiving a message" msgid "Chat cannot be cleared while receiving a message"
msgstr "" msgstr ""
#: src/window.py:99 #: src/window.py:112
msgid "That tag is already being pulled"
msgstr ""
#: src/window.py:113
msgid "That tag has been pulled alreay"
msgstr ""
#: src/window.py:116
msgid "Model deleted successfully" msgid "Model deleted successfully"
msgstr "" msgstr ""
#: src/window.py:100 #: src/window.py:117
msgid "Model pulled successfully" msgid "Model pulled successfully"
msgstr "" msgstr ""
#: src/window.py:418 #: src/window.py:118
msgid "Chat exported successfully"
msgstr ""
#: src/window.py:119
msgid "Chat imported successfully"
msgstr ""
#: src/window.py:451
msgid "Task Complete" msgid "Task Complete"
msgstr "" msgstr ""
#: src/window.py:418 #: src/window.py:451
msgid "Model '{}' pulled successfully." msgid "Model '{}' pulled successfully."
msgstr "" msgstr ""
#: src/window.py:424 #: src/window.py:456
msgid "Pull Model Error" msgid "Pull Model Error"
msgstr "" msgstr ""
#: src/window.py:424 #: src/window.py:456
msgid "Failed to pull model '{}' due to network error." msgid "Failed to pull model '{}' due to network error."
msgstr "" msgstr ""
#: src/window.py:436 #: src/window.py:472
msgid "Stop Model" msgid "Stop Model"
msgstr "" msgstr ""
#: src/window.py:437 #: src/window.py:473
msgid "Are you sure you want to stop pulling '{}'?" msgid "Are you sure you want to stop pulling '{}'?"
msgstr "" msgstr ""
#: src/window.py:440 src/window.py:478 src/window.py:501 src/window.py:575 #: src/window.py:476 src/window.py:519 src/window.py:542 src/window.py:615
#: src/window.py:636 src/window.py:685 src/window.py:712 src/window.py:745 #: src/window.py:688 src/window.py:715 src/window.py:748 src/window.py:788
#: src/window.py:785
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: src/window.py:441 #: src/window.py:477
msgid "Stop" msgid "Stop"
msgstr "" msgstr ""
#: src/window.py:474 #: src/window.py:515
msgid "Delete Model" msgid "Delete Model"
msgstr "" msgstr ""
#: src/window.py:475 src/window.py:709 #: src/window.py:516 src/window.py:712
msgid "Are you sure you want to delete '{}'?" msgid "Are you sure you want to delete '{}'?"
msgstr "" msgstr ""
#: src/window.py:479 src/window.py:713 #: src/window.py:520 src/window.py:716
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: src/window.py:496 #: src/window.py:537
msgid "Pull Model" msgid "Pull Model"
msgstr "" msgstr ""
#: src/window.py:497 #: src/window.py:538
msgid "Please select a tag to pull '{}'" msgid "Please select a tag to pull '{}'"
msgstr "" msgstr ""
#: src/window.py:502 #: src/window.py:543
msgid "Pull" msgid "Pull"
msgstr "" msgstr ""
#: src/window.py:571 src/window.ui:439 #: src/window.py:611 src/window.ui:462
msgid "Clear Chat" msgid "Clear Chat"
msgstr "" msgstr ""
#: src/window.py:572 #: src/window.py:612
msgid "Are you sure you want to clear the chat?" msgid "Are you sure you want to clear the chat?"
msgstr "" msgstr ""
#: src/window.py:576 #: src/window.py:616
msgid "Clear" msgid "Clear"
msgstr "" msgstr ""
#: src/window.py:632 #: src/window.py:684
msgid "Save Changes"
msgstr ""
#: src/window.py:633
msgid "Do you want to save the URL change?"
msgstr ""
#: src/window.py:637
msgid "Discard"
msgstr ""
#: src/window.py:638
msgid "Save"
msgstr ""
#: src/window.py:681
msgid "Remove Image" msgid "Remove Image"
msgstr "" msgstr ""
#: src/window.py:682 #: src/window.py:685
msgid "Are you sure you want to remove image?" msgid "Are you sure you want to remove image?"
msgstr "" msgstr ""
#: src/window.py:686 #: src/window.py:689
msgid "Remove" msgid "Remove"
msgstr "" msgstr ""
#: src/window.py:708 #: src/window.py:711
msgid "Delete Chat" msgid "Delete Chat"
msgstr "" msgstr ""
#: src/window.py:739 #: src/window.py:742
msgid "Rename Chat" msgid "Rename Chat"
msgstr "" msgstr ""
#: src/window.py:746 #: src/window.py:749
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: src/window.py:766 #: src/window.py:769
msgid "The name '{}' is already in use" msgid "The name '{}' is already in use"
msgstr "" msgstr ""
#: src/window.py:779 #: src/window.py:782
msgid "Create Chat" msgid "Create Chat"
msgstr "" msgstr ""
#: src/window.py:786 #: src/window.py:789
msgid "Create" msgid "Create"
msgstr "" msgstr ""
#: src/window.ui:55 #: src/window.ui:46
msgid "Chats" msgid "Chats"
msgstr "" msgstr ""
#: src/window.ui:65 #: src/window.ui:56
msgid "Import chat"
msgstr ""
#: src/window.ui:69
msgid "Export chat"
msgstr ""
#: src/window.ui:82
msgid "New chat" msgid "New chat"
msgstr "" msgstr ""
#: src/window.ui:101 #: src/window.ui:118
msgid "Toggle Sidebar" msgid "Toggle Sidebar"
msgstr "" msgstr ""
#: src/window.ui:122 src/window.ui:259 #: src/window.ui:139 src/window.ui:315
msgid "Manage models" msgid "Manage models"
msgstr "" msgstr ""
#: src/window.ui:136 #: src/window.ui:153
msgid "Menu" msgid "Menu"
msgstr "" msgstr ""
#: src/window.ui:215 #: src/window.ui:231
msgid "Send" msgid "Send"
msgstr "" msgstr ""
#: src/window.ui:224 #: src/window.ui:240
msgid "Requires model 'llava' to be selected" msgid "Requires model 'llava' to be selected"
msgstr "" msgstr ""
#: src/window.ui:227 #: src/window.ui:243
msgid "Image" msgid "Image"
msgstr "" msgstr ""
#: src/window.ui:344 #: src/window.ui:266 src/window.ui:466 src/window.ui:517
msgid "Previous" msgid "Preferences"
msgstr "" msgstr ""
#: src/window.ui:359 #: src/window.ui:269 src/window.ui:501
msgid "Next" msgid "General"
msgstr ""
#: src/window.ui:273
msgid "Remote Connection"
msgstr ""
#: src/window.ui:274
msgid "Manage a remote connection to Ollama"
msgstr ""
#: src/window.ui:277
msgid "Use remote connection"
msgstr ""
#: src/window.ui:282
msgid "URL of remote instance"
msgstr ""
#: src/window.ui:290
msgid "Behavior"
msgstr ""
#: src/window.ui:291
msgid "Manage Alpaca's Behavior"
msgstr ""
#: src/window.ui:294
msgid "Run in background"
msgstr "" msgstr ""
#: src/window.ui:385 #: src/window.ui:385
msgid "Previous"
msgstr ""
#: src/window.ui:400
msgid "Next"
msgstr ""
#: src/window.ui:426
msgid "Welcome to Alpaca" msgid "Welcome to Alpaca"
msgstr "" msgstr ""
#: src/window.ui:386 #: src/window.ui:427
msgid "" msgid "Powered by Ollama"
"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 "" msgstr ""
#: src/window.ui:389 #: src/window.ui:430
msgid "Ollama Website" msgid "Ollama Website"
msgstr "" msgstr ""
#: src/window.ui:406 #: src/window.ui:447
msgid "" msgid ""
"Alpaca and its developers are not liable for any damages to devices or " "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. " "software resulting from the execution of code generated by an AI model. "
"Please exercise caution and review the code carefully before running it." "Please exercise caution and review the code carefully before running it."
msgstr "" msgstr ""
#: src/window.ui:418 #: src/window.ui:470
msgid "Setup"
msgstr ""
#: src/window.ui:419
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 ""
#: src/window.ui:443
msgid "Change Server"
msgstr ""
#: src/window.ui:447
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "" msgstr ""
#: src/window.ui:451 #: src/window.ui:474
msgid "About Alpaca" msgid "About Alpaca"
msgstr "" msgstr ""
#: src/window.ui:473 #: src/window.ui:505
msgid "General"
msgstr ""
#: src/window.ui:477
msgid "Close application" msgid "Close application"
msgstr "" msgstr ""
#: src/window.ui:483 #: src/window.ui:511
msgid "Clear chat" msgid "Clear chat"
msgstr "" msgstr ""
#: src/window.ui:489 #: src/window.ui:523
msgid "Change server"
msgstr ""
#: src/window.ui:495
msgid "Show shortcuts window" msgid "Show shortcuts window"
msgstr "" msgstr ""
#: src/window.ui:502 #: src/window.ui:530
msgid "Editor" msgid "Editor"
msgstr "" msgstr ""
#: src/window.ui:506 #: src/window.ui:534
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: src/window.ui:512 #: src/window.ui:540
msgid "Paste" msgid "Paste"
msgstr "" msgstr ""
#: src/window.ui:518 #: src/window.ui:546
msgid "Send Message" msgid "Send Message"
msgstr "" msgstr ""

543
po/es.po
View File

@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-05-19 21:24-0600\n" "POT-Creation-Date: 2024-05-21 23:20-0600\n"
"PO-Revision-Date: 2024-05-19 19:44-0600\n" "PO-Revision-Date: 2024-05-19 19:44-0600\n"
"Last-Translator: Jeffry Samuel Eduarte Rojas <jeffrysamuer@gmail.com>\n" "Last-Translator: Jeffry Samuel Eduarte Rojas <jeffrysamuer@gmail.com>\n"
"Language-Team: Spanish <es@tp.org.es>\n" "Language-Team: Spanish <es@tp.org.es>\n"
@@ -23,34 +23,33 @@ msgid "Alpaca"
msgstr "Alpaca" msgstr "Alpaca"
#: data/com.jeffser.Alpaca.metainfo.xml.in:8 #: data/com.jeffser.Alpaca.metainfo.xml.in:8
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
msgid "An Ollama client"
msgstr "Un cliente de Ollama"
#: data/com.jeffser.Alpaca.metainfo.xml.in:10
msgid "Chat with multiple AI models" msgid "Chat with multiple AI models"
msgstr "Chatea con multiples modelos de IA" msgstr "Chatea con multiples modelos de IA"
#: data/com.jeffser.Alpaca.metainfo.xml.in:12 #: data/com.jeffser.Alpaca.metainfo.xml.in:10
#: data/com.jeffser.Alpaca.metainfo.xml.in:176 msgid "An Ollama client"
msgstr "Un cliente de Ollama"
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
#: data/com.jeffser.Alpaca.metainfo.xml.in:226
msgid "Features" msgid "Features"
msgstr "Funcionalidades" msgstr "Funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:14 #: data/com.jeffser.Alpaca.metainfo.xml.in:13
#: data/com.jeffser.Alpaca.metainfo.xml.in:178 #: data/com.jeffser.Alpaca.metainfo.xml.in:228
msgid "Talk to multiple models in the same conversation" msgid "Talk to multiple models in the same conversation"
msgstr "Habla con multiples modelos en la misma conversación" msgstr "Habla con multiples modelos en la misma conversación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:15 #: data/com.jeffser.Alpaca.metainfo.xml.in:14
#: data/com.jeffser.Alpaca.metainfo.xml.in:179 #: data/com.jeffser.Alpaca.metainfo.xml.in:229
msgid "Pull and delete models from the app" msgid "Pull and delete models from the app"
msgstr "Descarga y elimina modelos desde la app" msgstr "Descarga y elimina modelos desde la app"
#: data/com.jeffser.Alpaca.metainfo.xml.in:17 src/window.ui:405 #: data/com.jeffser.Alpaca.metainfo.xml.in:16 src/window.ui:446
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Aviso Legal" msgstr "Aviso Legal"
#: data/com.jeffser.Alpaca.metainfo.xml.in:18 #: data/com.jeffser.Alpaca.metainfo.xml.in:17
msgid "" msgid ""
"This project is not affiliated at all with Ollama, I'm not responsible for " "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 " "any damages to your device or software caused by running code given by any "
@@ -60,153 +59,278 @@ msgstr ""
"cualquier daño a tu dispositivo o software causado por correr codigo " "cualquier daño a tu dispositivo o software causado por correr codigo "
"proveido por cualquier modelo." "proveido por cualquier modelo."
#: data/com.jeffser.Alpaca.metainfo.xml.in:21 #: data/com.jeffser.Alpaca.metainfo.xml.in:20
msgid "Jeffry Samuel Eduarte Rojas" msgid "Jeffry Samuel Eduarte Rojas"
msgstr "Jeffry Samuel Eduarte Rojas" msgstr "Jeffry Samuel Eduarte Rojas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:39 #: data/com.jeffser.Alpaca.metainfo.xml.in:38
msgid "Welcome dialog" msgid "Welcome dialog"
msgstr "Dialogo de Bienvenida" msgstr "Dialogo de Bienvenida"
#: data/com.jeffser.Alpaca.metainfo.xml.in:43 #: data/com.jeffser.Alpaca.metainfo.xml.in:42
msgid "A conversation involving multiple models" msgid "A conversation involving multiple models"
msgstr "Una conversación incluyendo multiples modelos" msgstr "Una conversación incluyendo multiples modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:47 #: data/com.jeffser.Alpaca.metainfo.xml.in:46
msgid "Managing models" msgid "Managing models"
msgstr "Gestionando modelos" msgstr "Gestionando modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:72 #: data/com.jeffser.Alpaca.metainfo.xml.in:57
#, fuzzy
msgid "Huge Update"
msgstr "Gran Actualización"
#: data/com.jeffser.Alpaca.metainfo.xml.in:59
msgid "Added Ollama as part of Alpaca, Ollama will run in a sandbox"
msgstr "Añadido Ollama como parte de Alpaca, Ollama se ejecutara en un sandbox"
#: data/com.jeffser.Alpaca.metainfo.xml.in:60
msgid "Added option to connect to remote instances (how it worked before)"
msgstr "Añadida la opcion de conectarse a instancias remotas (como funcionaba) "
"antes"
#: data/com.jeffser.Alpaca.metainfo.xml.in:61
msgid "Added option to import and export chats"
msgstr "Añadida la opcion de importar y exportar chats"
#: data/com.jeffser.Alpaca.metainfo.xml.in:62
msgid "Added option to run Alpaca with Ollama in the background"
msgstr "Añadida la opcion de ejecutar Alpaca y Ollama en el fondo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:63
#, fuzzy
msgid "Added preferences dialog"
msgstr "Añadido dialogo de preferencias"
#: data/com.jeffser.Alpaca.metainfo.xml.in:64
#, fuzzy
msgid "Changed the welcome dialog"
msgstr "Nuevo dialogo de bienvenida"
#: data/com.jeffser.Alpaca.metainfo.xml.in:66
#: data/com.jeffser.Alpaca.metainfo.xml.in:83
#: data/com.jeffser.Alpaca.metainfo.xml.in:95
#: data/com.jeffser.Alpaca.metainfo.xml.in:114
#: data/com.jeffser.Alpaca.metainfo.xml.in:135
#: data/com.jeffser.Alpaca.metainfo.xml.in:151
#: data/com.jeffser.Alpaca.metainfo.xml.in:167
#: data/com.jeffser.Alpaca.metainfo.xml.in:181
#: data/com.jeffser.Alpaca.metainfo.xml.in:191
#: data/com.jeffser.Alpaca.metainfo.xml.in:209
#: data/com.jeffser.Alpaca.metainfo.xml.in:231
msgid "Please report any errors to the issues page, thank you."
msgstr "Por favor reporta cualquier error a la página de problemas, gracias."
#: data/com.jeffser.Alpaca.metainfo.xml.in:74
#, fuzzy
msgid "Yet Another Daily Update"
msgstr "Otra Actulización Diaria"
#: data/com.jeffser.Alpaca.metainfo.xml.in:76
#, fuzzy
msgid "Added better UI for 'Manage Models' dialog"
msgstr "Añadida mejor interfaz para el dialogo 'gestión de modelos'"
#: data/com.jeffser.Alpaca.metainfo.xml.in:77
msgid "Added better UI for the chat sidebar"
msgstr "Añadida mejor interfaz para la barra de lado de chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:78
msgid ""
"Replaced model description with a button to open Ollama's website for the "
"model"
msgstr ""
"Remplazada la descripción de modelo por un botón para abrir la página web de "
"Ollama para el modelo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:79
msgid "Added myself to the credits as the spanish translator"
msgstr "Agregue mi nombre en los creditos como el traductor a Español"
#: data/com.jeffser.Alpaca.metainfo.xml.in:80
msgid "Using XDG properly to get config folder"
msgstr "Usando XDG apropiadamente para obtener el folder de configuración"
#: data/com.jeffser.Alpaca.metainfo.xml.in:81
#, fuzzy
msgid "Update for translations"
msgstr "Mejor soporte para traducciones"
#: data/com.jeffser.Alpaca.metainfo.xml.in:91
#, fuzzy
msgid "Quick Fix"
msgstr "0.1.2 Arreglos rápidos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:93
msgid "The last update had some mistakes in the description of the update"
msgstr ""
"La última actualización tenía unos errores en la descripción de la "
"actualización"
#: data/com.jeffser.Alpaca.metainfo.xml.in:103
msgid "Another Daily Update"
msgstr "Otra Actulización Diaria"
#: data/com.jeffser.Alpaca.metainfo.xml.in:105
msgid "Added full Spanish translation"
msgstr "Añadida traducción completa a Español"
#: data/com.jeffser.Alpaca.metainfo.xml.in:106
#, fuzzy
msgid "Added support for background pulling of multiple models"
msgstr "Añadido soporte para multiples etiquetas con un solo modelo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:107
msgid "Added interrupt button"
msgstr "Añadido botón de interrupción"
#: data/com.jeffser.Alpaca.metainfo.xml.in:108
#, fuzzy
msgid "Added basic shortcuts"
msgstr "Atajos de Teclado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:109
msgid "Better translation support"
msgstr "Mejor soporte para traducciones"
#: data/com.jeffser.Alpaca.metainfo.xml.in:110
msgid ""
"User can now leave chat name empty when creating a new one, it will add a "
"placeholder name"
msgstr ""
"El usuario ahora puede dejar el nombre del chat vacio durante la creación, "
"la aplicación añadira un placeholder"
#: data/com.jeffser.Alpaca.metainfo.xml.in:111
msgid "Better scalling for different window sizes"
msgstr "Mejor escalado para distintos tamaños de ventana"
#: data/com.jeffser.Alpaca.metainfo.xml.in:112
#, fuzzy
msgid "Fixed: Can't close app if first time setup fails"
msgstr "Arreglado: No se puede cerrar la aplicación en el primer setup"
#: data/com.jeffser.Alpaca.metainfo.xml.in:122
msgid "Really Big Update" msgid "Really Big Update"
msgstr "Actualización Bastante Grande" msgstr "Actualización Bastante Grande"
#: data/com.jeffser.Alpaca.metainfo.xml.in:74 #: data/com.jeffser.Alpaca.metainfo.xml.in:124
msgid "Added multiple chats support!" msgid "Added multiple chats support!"
msgstr "Añadido soporte para multiples chats!" msgstr "Añadido soporte para multiples chats!"
#: data/com.jeffser.Alpaca.metainfo.xml.in:75 #: data/com.jeffser.Alpaca.metainfo.xml.in:125
msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)" msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)"
msgstr "" msgstr ""
"Añadido soporte para Pango Markup (negrita, lista, titulo, subtitulo, " "Añadido soporte para Pango Markup (negrita, lista, titulo, subtitulo, "
"monoespaciado)" "monoespaciado)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:76 #: data/com.jeffser.Alpaca.metainfo.xml.in:126
msgid "Added autoscroll if the user is at the bottom of the chat" msgid "Added autoscroll if the user is at the bottom of the chat"
msgstr "" msgstr ""
"Añadido autoscroll si el usuario se encuentra en la parte inferior del chat" "Añadido autoscroll si el usuario se encuentra en la parte inferior del chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:77 #: data/com.jeffser.Alpaca.metainfo.xml.in:127
msgid "Added support for multiple tags on a single model" msgid "Added support for multiple tags on a single model"
msgstr "Añadido soporte para multiples etiquetas con un solo modelo" msgstr "Añadido soporte para multiples etiquetas con un solo modelo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:78 #: data/com.jeffser.Alpaca.metainfo.xml.in:128
msgid "Added better model management dialog" msgid "Added better model management dialog"
msgstr "Añadido mejor gestión de modelos" msgstr "Añadido mejor gestión de modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:79 #: data/com.jeffser.Alpaca.metainfo.xml.in:129
msgid "Added loading spinner when sending message" msgid "Added loading spinner when sending message"
msgstr "Añadido spinner de carga cuando se envia un mensaje" msgstr "Añadido spinner de carga cuando se envia un mensaje"
#: data/com.jeffser.Alpaca.metainfo.xml.in:80 #: data/com.jeffser.Alpaca.metainfo.xml.in:130
msgid "Added notifications if app is not active and a model pull finishes" msgid "Added notifications if app is not active and a model pull finishes"
msgstr "" msgstr ""
"Añadidas notificaciones si la aplicación no está activa y la descarga de un " "Añadidas notificaciones si la aplicación no está activa y la descarga de un "
"modelo finaliza" "modelo finaliza"
#: data/com.jeffser.Alpaca.metainfo.xml.in:81 #: data/com.jeffser.Alpaca.metainfo.xml.in:131
msgid "Added new symbolic icon" msgid "Added new symbolic icon"
msgstr "Añadido nuevo icono simbolico" msgstr "Añadido nuevo icono simbolico"
#: data/com.jeffser.Alpaca.metainfo.xml.in:82 #: data/com.jeffser.Alpaca.metainfo.xml.in:132
msgid "Added frame to message textview widget" msgid "Added frame to message textview widget"
msgstr "Añadido borde al objeto textview del mensaje" msgstr "Añadido borde al objeto textview del mensaje"
#: data/com.jeffser.Alpaca.metainfo.xml.in:83 #: data/com.jeffser.Alpaca.metainfo.xml.in:133
msgid "Fixed \"code blocks shouldn't be editable\"" msgid "Fixed \"code blocks shouldn't be editable\""
msgstr "Arreglado \"bloques de codigo no deberían de ser editables\"" msgstr "Arreglado \"bloques de codigo no deberían de ser editables\""
#: data/com.jeffser.Alpaca.metainfo.xml.in:85 #: data/com.jeffser.Alpaca.metainfo.xml.in:143
#: data/com.jeffser.Alpaca.metainfo.xml.in:101 #: data/com.jeffser.Alpaca.metainfo.xml.in:200
#: data/com.jeffser.Alpaca.metainfo.xml.in:117
#: data/com.jeffser.Alpaca.metainfo.xml.in:131
#: data/com.jeffser.Alpaca.metainfo.xml.in:141
#: data/com.jeffser.Alpaca.metainfo.xml.in:159
#: data/com.jeffser.Alpaca.metainfo.xml.in:181
msgid "Please report any errors to the issues page, thank you."
msgstr "Por favor reporta cualquier error a la página de problemas, gracias."
#: data/com.jeffser.Alpaca.metainfo.xml.in:93
#: data/com.jeffser.Alpaca.metainfo.xml.in:150
msgid "Big Update" msgid "Big Update"
msgstr "Gran Actualización" msgstr "Gran Actualización"
#: data/com.jeffser.Alpaca.metainfo.xml.in:95 #: data/com.jeffser.Alpaca.metainfo.xml.in:145
msgid "Added code highlighting" msgid "Added code highlighting"
msgstr "Añadido resaltado de código" msgstr "Añadido resaltado de código"
#: data/com.jeffser.Alpaca.metainfo.xml.in:96 #: data/com.jeffser.Alpaca.metainfo.xml.in:146
msgid "Added image recognition (llava model)" msgid "Added image recognition (llava model)"
msgstr "Añadido reconocimiento de imagenes (modelo llava)" msgstr "Añadido reconocimiento de imagenes (modelo llava)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:97 #: data/com.jeffser.Alpaca.metainfo.xml.in:147
msgid "Added multiline prompt" msgid "Added multiline prompt"
msgstr "Añadido caja de texto de multiples lineas" msgstr "Añadido caja de texto de multiples lineas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:98 #: data/com.jeffser.Alpaca.metainfo.xml.in:148
msgid "Fixed some small bugs" msgid "Fixed some small bugs"
msgstr "Arreglados unos pequeños errores" msgstr "Arreglados unos pequeños errores"
#: data/com.jeffser.Alpaca.metainfo.xml.in:99 #: data/com.jeffser.Alpaca.metainfo.xml.in:149
msgid "General optimization" msgid "General optimization"
msgstr "Optimización general" msgstr "Optimización general"
#: data/com.jeffser.Alpaca.metainfo.xml.in:109 #: data/com.jeffser.Alpaca.metainfo.xml.in:159
msgid "Fixes and features" msgid "Fixes and features"
msgstr "Arreglos y funcionalidades" msgstr "Arreglos y funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:111 #: data/com.jeffser.Alpaca.metainfo.xml.in:161
msgid "Russian translation (thanks github/alexkdeveloper)" msgid "Russian translation (thanks github/alexkdeveloper)"
msgstr "Traducción a Ruso (gracias github/alexkdeveloper)" msgstr "Traducción a Ruso (gracias github/alexkdeveloper)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:112 #: data/com.jeffser.Alpaca.metainfo.xml.in:162
msgid "Fixed: Cannot close app on first setup" msgid "Fixed: Cannot close app on first setup"
msgstr "Arreglado: No se puede cerrar la aplicación en el primer setup" msgstr "Arreglado: No se puede cerrar la aplicación en el primer setup"
#: data/com.jeffser.Alpaca.metainfo.xml.in:113 #: data/com.jeffser.Alpaca.metainfo.xml.in:163
msgid "Fixed: Brand colors for Flathub" msgid "Fixed: Brand colors for Flathub"
msgstr "Arreglado: Colores de marca para Flathub" msgstr "Arreglado: Colores de marca para Flathub"
#: data/com.jeffser.Alpaca.metainfo.xml.in:114 #: data/com.jeffser.Alpaca.metainfo.xml.in:164
msgid "Fixed: App description" msgid "Fixed: App description"
msgstr "Arreglado: Descripción de aplicación" msgstr "Arreglado: Descripción de aplicación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:115 #: data/com.jeffser.Alpaca.metainfo.xml.in:165
msgid "Fixed: Only show 'save changes dialog' when you actually change the url" msgid "Fixed: Only show 'save changes dialog' when you actually change the url"
msgstr "" msgstr ""
"Arreglado: Solo mostrar el dialogo 'guardar cambios' cuando se cambia el url" "Arreglado: Solo mostrar el dialogo 'guardar cambios' cuando se cambia el url"
#: data/com.jeffser.Alpaca.metainfo.xml.in:125 #: data/com.jeffser.Alpaca.metainfo.xml.in:175
msgid "0.2.2 Bug fixes" msgid "0.2.2 Bug fixes"
msgstr "0.2.2 Arreglo de errores" msgstr "0.2.2 Arreglo de errores"
#: data/com.jeffser.Alpaca.metainfo.xml.in:127 #: data/com.jeffser.Alpaca.metainfo.xml.in:177
msgid "Toast messages appearing behind dialogs" msgid "Toast messages appearing behind dialogs"
msgstr "Mensajes toast apareciendo detrás de dialogos" msgstr "Mensajes toast apareciendo detrás de dialogos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:128 #: data/com.jeffser.Alpaca.metainfo.xml.in:178
msgid "Local model list not updating when changing servers" msgid "Local model list not updating when changing servers"
msgstr "" msgstr ""
"Lista de modelos locales no es actualizada cuando se cambia el servidor" "Lista de modelos locales no es actualizada cuando se cambia el servidor"
#: data/com.jeffser.Alpaca.metainfo.xml.in:129 #: data/com.jeffser.Alpaca.metainfo.xml.in:179
msgid "Closing the setup dialog closes the whole app" msgid "Closing the setup dialog closes the whole app"
msgstr "Cerrar el dialogo de setup cierra toda la aplicación" msgstr "Cerrar el dialogo de setup cierra toda la aplicación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:139 #: data/com.jeffser.Alpaca.metainfo.xml.in:189
msgid "0.2.1 Data saving fix" msgid "0.2.1 Data saving fix"
msgstr "0.2.1 Arreglo en el guardado de datos" msgstr "0.2.1 Arreglo en el guardado de datos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:140 #: data/com.jeffser.Alpaca.metainfo.xml.in:190
msgid "" msgid ""
"The app didn't save the config files and chat history to the right " "The app didn't save the config files and chat history to the right "
"directory, this is now fixed" "directory, this is now fixed"
@@ -214,281 +338,326 @@ msgstr ""
"La aplicación no guardaba los archivos de configuración o los chats en el " "La aplicación no guardaba los archivos de configuración o los chats en el "
"directorio correcto, esto ahora ha sido arreglado" "directorio correcto, esto ahora ha sido arreglado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:149 #: data/com.jeffser.Alpaca.metainfo.xml.in:199
msgid "0.2.0" msgid "0.2.0"
msgstr "0.2.0" msgstr "0.2.0"
#: data/com.jeffser.Alpaca.metainfo.xml.in:151 #: data/com.jeffser.Alpaca.metainfo.xml.in:201
msgid "New Features" msgid "New Features"
msgstr "Nuevas funcionalidades" msgstr "Nuevas funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:153 #: data/com.jeffser.Alpaca.metainfo.xml.in:203
msgid "Restore chat after closing the app" msgid "Restore chat after closing the app"
msgstr "Restaurar chat despues de cerrar la aplicación" msgstr "Restaurar chat despues de cerrar la aplicación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:154 #: data/com.jeffser.Alpaca.metainfo.xml.in:204
msgid "A button to clear the chat" msgid "A button to clear the chat"
msgstr "Un botón para limpiar el chat" msgstr "Un botón para limpiar el chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:155 #: data/com.jeffser.Alpaca.metainfo.xml.in:205
msgid "Fixed multiple bugs involving how messages are shown" msgid "Fixed multiple bugs involving how messages are shown"
msgstr "Arreglados multiples errores acerca de como los mensajes son mostrados" msgstr "Arreglados multiples errores acerca de como los mensajes son mostrados"
#: data/com.jeffser.Alpaca.metainfo.xml.in:156 #: data/com.jeffser.Alpaca.metainfo.xml.in:206
msgid "Added welcome dialog" msgid "Added welcome dialog"
msgstr "Añadido dialogo de bienvenida" msgstr "Añadido dialogo de bienvenida"
#: data/com.jeffser.Alpaca.metainfo.xml.in:157 #: data/com.jeffser.Alpaca.metainfo.xml.in:207
msgid "More stability" msgid "More stability"
msgstr "Más estabilidad" msgstr "Más estabilidad"
#: data/com.jeffser.Alpaca.metainfo.xml.in:167 #: data/com.jeffser.Alpaca.metainfo.xml.in:217
msgid "0.1.2 Quick fixes" msgid "0.1.2 Quick fixes"
msgstr "0.1.2 Arreglos rápidos" msgstr "0.1.2 Arreglos rápidos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:168 #: data/com.jeffser.Alpaca.metainfo.xml.in:218
msgid "" msgid ""
"This release fixes some metadata needed to have a proper Flatpak application" "This release fixes some metadata needed to have a proper Flatpak application"
msgstr "" msgstr ""
"Esta versión arregla metadatos necesarios para tener un aplicación de " "Esta versión arregla metadatos necesarios para tener un aplicación de "
"Flatpak justa" "Flatpak justa"
#: data/com.jeffser.Alpaca.metainfo.xml.in:174 #: data/com.jeffser.Alpaca.metainfo.xml.in:224
msgid "0.1.1 Stable Release" msgid "0.1.1 Stable Release"
msgstr "0.1.1" msgstr "0.1.1"
#: data/com.jeffser.Alpaca.metainfo.xml.in:175 #: data/com.jeffser.Alpaca.metainfo.xml.in:225
msgid "This is the first public version of Alpaca" msgid "This is the first public version of Alpaca"
msgstr "Esta es la primera versión publica de Alpaca" msgstr "Esta es la primera versión publica de Alpaca"
#: src/window.py:47 src/window.py:758 #: src/window.py:54 src/window.py:761
msgid "New Chat" msgid "New Chat"
msgstr "Nuevo Chat" msgstr "Nuevo Chat"
#: src/window.py:86 #: src/window.py:100
msgid "An error occurred" msgid "An error occurred"
msgstr "Ocurrio un error" msgstr "Ocurrio un error"
#: src/window.py:87 #: src/window.py:101
msgid "Failed to connect to server" msgid "Failed to connect to server"
msgstr "No se pudo conectar al servidor" msgstr "No se pudo conectar al servidor"
#: src/window.py:88 #: src/window.py:102
msgid "Could not list local models" msgid "Could not list local models"
msgstr "No se pudieron listar los modelos locales" msgstr "No se pudieron listar los modelos locales"
#: src/window.py:89 #: src/window.py:103
msgid "Could not delete model" msgid "Could not delete model"
msgstr "No se pudo eliminar el modelo" msgstr "No se pudo eliminar el modelo"
#: src/window.py:90 #: src/window.py:104
msgid "Could not pull model" msgid "Could not pull model"
msgstr "No se pudo descargar el modelo" msgstr "No se pudo descargar el modelo"
#: src/window.py:91 #: src/window.py:105
msgid "Cannot open image" msgid "Cannot open image"
msgstr "No se pudo abrir la imagen" msgstr "No se pudo abrir la imagen"
#: src/window.py:92 #: src/window.py:106
msgid "Cannot delete chat because it's the only one left" msgid "Cannot delete chat because it's the only one left"
msgstr "No se pudo eliminar el chat por que es el único que queda" msgstr "No se pudo eliminar el chat por que es el único que queda"
#: src/window.py:95 #: src/window.py:107
msgid "There was an error with the local Ollama instance, so it has been reset"
msgstr ""
#: src/window.py:110
msgid "Please select a model before chatting" msgid "Please select a model before chatting"
msgstr "Por favor selecciona un modelo antes de enviar un mensaje" msgstr "Por favor selecciona un modelo antes de enviar un mensaje"
#: src/window.py:96 #: src/window.py:111
msgid "Chat cannot be cleared while receiving a message" msgid "Chat cannot be cleared while receiving a message"
msgstr "El chat no puede ser limpiado mientras se recibe un mensaje" msgstr "El chat no puede ser limpiado mientras se recibe un mensaje"
#: src/window.py:99 #: src/window.py:112
#, fuzzy
msgid "That tag is already being pulled"
msgstr "El nombre '{}' ya está en uso"
#: src/window.py:113
msgid "That tag has been pulled alreay"
msgstr ""
#: src/window.py:116
msgid "Model deleted successfully" msgid "Model deleted successfully"
msgstr "Modelo eliminado exitosamente" msgstr "Modelo eliminado exitosamente"
#: src/window.py:100 #: src/window.py:117
msgid "Model pulled successfully" msgid "Model pulled successfully"
msgstr "Modelo descargado exitosamente" msgstr "Modelo descargado exitosamente"
#: src/window.py:418 #: src/window.py:118
#, fuzzy
msgid "Chat exported successfully"
msgstr "Modelo eliminado exitosamente"
#: src/window.py:119
#, fuzzy
msgid "Chat imported successfully"
msgstr "Modelo descargado exitosamente"
#: src/window.py:451
msgid "Task Complete" msgid "Task Complete"
msgstr "Tarea completada" msgstr "Tarea completada"
#: src/window.py:418 #: src/window.py:451
msgid "Model '{}' pulled successfully." msgid "Model '{}' pulled successfully."
msgstr "El modelo '{}' fue descargado exitosamente" msgstr "El modelo '{}' fue descargado exitosamente"
#: src/window.py:424 #: src/window.py:456
msgid "Pull Model Error" msgid "Pull Model Error"
msgstr "Error Descargando Modelo" msgstr "Error Descargando Modelo"
#: src/window.py:424 #: src/window.py:456
msgid "Failed to pull model '{}' due to network error." msgid "Failed to pull model '{}' due to network error."
msgstr "No se pudo descargar el modelo '{}' debido a un error de red" msgstr "No se pudo descargar el modelo '{}' debido a un error de red"
#: src/window.py:436 #: src/window.py:472
msgid "Stop Model" msgid "Stop Model"
msgstr "Parar Modelo" msgstr "Parar Modelo"
#: src/window.py:437 #: src/window.py:473
msgid "Are you sure you want to stop pulling '{}'?" msgid "Are you sure you want to stop pulling '{}'?"
msgstr "¿Estás seguro de que quieres parar la descarga de '{}'?" msgstr "¿Estás seguro de que quieres parar la descarga de '{}'?"
#: src/window.py:440 src/window.py:478 src/window.py:501 src/window.py:575 #: src/window.py:476 src/window.py:519 src/window.py:542 src/window.py:615
#: src/window.py:636 src/window.py:685 src/window.py:712 src/window.py:745 #: src/window.py:688 src/window.py:715 src/window.py:748 src/window.py:788
#: src/window.py:785
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: src/window.py:441 #: src/window.py:477
msgid "Stop" msgid "Stop"
msgstr "Parar" msgstr "Parar"
#: src/window.py:474 #: src/window.py:515
msgid "Delete Model" msgid "Delete Model"
msgstr "Eliminar Modelo" msgstr "Eliminar Modelo"
#: src/window.py:475 src/window.py:709 #: src/window.py:516 src/window.py:712
msgid "Are you sure you want to delete '{}'?" msgid "Are you sure you want to delete '{}'?"
msgstr "¿Estás seguro de que quieres eliminar '{}'?" msgstr "¿Estás seguro de que quieres eliminar '{}'?"
#: src/window.py:479 src/window.py:713 #: src/window.py:520 src/window.py:716
msgid "Delete" msgid "Delete"
msgstr "Eliminar" msgstr "Eliminar"
#: src/window.py:496 #: src/window.py:537
msgid "Pull Model" msgid "Pull Model"
msgstr "Descargar Modelo" msgstr "Descargar Modelo"
#: src/window.py:497 #: src/window.py:538
msgid "Please select a tag to pull '{}'" msgid "Please select a tag to pull '{}'"
msgstr "Por favor selecciona una etiqueta para descargar '{}'" msgstr "Por favor selecciona una etiqueta para descargar '{}'"
#: src/window.py:502 #: src/window.py:543
msgid "Pull" msgid "Pull"
msgstr "Descargar" msgstr "Descargar"
#: src/window.py:571 src/window.ui:439 #: src/window.py:611 src/window.ui:462
msgid "Clear Chat" msgid "Clear Chat"
msgstr "Limpiar Chat" msgstr "Limpiar Chat"
#: src/window.py:572 #: src/window.py:612
msgid "Are you sure you want to clear the chat?" msgid "Are you sure you want to clear the chat?"
msgstr "¿Estás seguro de que quieres limpiar el chat?" msgstr "¿Estás seguro de que quieres limpiar el chat?"
#: src/window.py:576 #: src/window.py:616
msgid "Clear" msgid "Clear"
msgstr "Limpiar" msgstr "Limpiar"
#: src/window.py:632 #: src/window.py:684
msgid "Save Changes"
msgstr "Guardar Cambios"
#: src/window.py:633
msgid "Do you want to save the URL change?"
msgstr "¿Deseas guardar el cambio de URL?"
#: src/window.py:637
msgid "Discard"
msgstr "Descartar"
#: src/window.py:638
msgid "Save"
msgstr "Guardar"
#: src/window.py:681
msgid "Remove Image" msgid "Remove Image"
msgstr "Remover Imagen" msgstr "Remover Imagen"
#: src/window.py:682 #: src/window.py:685
msgid "Are you sure you want to remove image?" msgid "Are you sure you want to remove image?"
msgstr "¿Estás seguro de que quieres eliminar la imagen?" msgstr "¿Estás seguro de que quieres eliminar la imagen?"
#: src/window.py:686 #: src/window.py:689
msgid "Remove" msgid "Remove"
msgstr "Remover" msgstr "Remover"
#: src/window.py:708 #: src/window.py:711
msgid "Delete Chat" msgid "Delete Chat"
msgstr "Eliminar Chat" msgstr "Eliminar Chat"
#: src/window.py:739 #: src/window.py:742
msgid "Rename Chat" msgid "Rename Chat"
msgstr "Renombrar Chat" msgstr "Renombrar Chat"
#: src/window.py:746 #: src/window.py:749
msgid "Rename" msgid "Rename"
msgstr "Renombrar" msgstr "Renombrar"
#: src/window.py:766 #: src/window.py:769
msgid "The name '{}' is already in use" msgid "The name '{}' is already in use"
msgstr "El nombre '{}' ya está en uso" msgstr "El nombre '{}' ya está en uso"
#: src/window.py:779 #: src/window.py:782
msgid "Create Chat" msgid "Create Chat"
msgstr "Crear Chat" msgstr "Crear Chat"
#: src/window.py:786 #: src/window.py:789
msgid "Create" msgid "Create"
msgstr "Crear" msgstr "Crear"
#: src/window.ui:55 #: src/window.ui:46
msgid "Chats" msgid "Chats"
msgstr "Chats" msgstr "Chats"
#: src/window.ui:65 #: src/window.ui:56
msgid "Import chat"
msgstr "Importar chat"
#: src/window.ui:69
msgid "Export chat"
msgstr "Exportar chat"
#: src/window.ui:82
msgid "New chat" msgid "New chat"
msgstr "Nuevo chat" msgstr "Nuevo chat"
#: src/window.ui:101 #: src/window.ui:118
msgid "Toggle Sidebar" msgid "Toggle Sidebar"
msgstr "Alternar barra de lado" msgstr "Alternar barra de lado"
#: src/window.ui:122 src/window.ui:259 #: src/window.ui:139 src/window.ui:315
msgid "Manage models" msgid "Manage models"
msgstr "Gestionar modelos" msgstr "Gestionar modelos"
#: src/window.ui:136 #: src/window.ui:153
msgid "Menu" msgid "Menu"
msgstr "Menu" msgstr "Menu"
#: src/window.ui:215 #: src/window.ui:231
msgid "Send" msgid "Send"
msgstr "Enviar" msgstr "Enviar"
#: src/window.ui:224 #: src/window.ui:240
msgid "Requires model 'llava' to be selected" msgid "Requires model 'llava' to be selected"
msgstr "Requiere que el modelo 'llava' sea seleccionado" msgstr "Requiere que el modelo 'llava' sea seleccionado"
#: src/window.ui:227 #: src/window.ui:243
msgid "Image" msgid "Image"
msgstr "Imagen" msgstr "Imagen"
#: src/window.ui:344 #: src/window.ui:266 src/window.ui:466 src/window.ui:517
msgid "Preferences"
msgstr "Preferencias"
#: src/window.ui:269 src/window.ui:501
msgid "General"
msgstr "General"
#: src/window.ui:273
msgid "Remote Connection"
msgstr "Conexión Remota"
#: src/window.ui:274
msgid "Manage a remote connection to Ollama"
msgstr "Gestiona una conección remota a Ollama"
#: src/window.ui:277
msgid "Use remote connection"
msgstr "Usar conexión remota"
#: src/window.ui:282
msgid "URL of remote instance"
msgstr "URL de la instancia remota"
#: src/window.ui:290
msgid "Behavior"
msgstr "Comportamiento"
#: src/window.ui:291
msgid "Manage Alpaca's Behavior"
msgstr "Gestiona el comportamiento de Alpaca"
#: src/window.ui:294
msgid "Run in background"
msgstr "Ejecutar en el fondo"
#: src/window.ui:385
msgid "Previous" msgid "Previous"
msgstr "Anterior" msgstr "Anterior"
#: src/window.ui:359 #: src/window.ui:400
msgid "Next" msgid "Next"
msgstr "Siguiente" msgstr "Siguiente"
#: src/window.ui:385 #: src/window.ui:426
msgid "Welcome to Alpaca" msgid "Welcome to Alpaca"
msgstr "Bienvenido a Alpaca" msgstr "Bienvenido a Alpaca"
#: src/window.ui:386 #: src/window.ui:427
msgid "" msgid "Powered by Ollama"
"To get started, please ensure you have an Ollama instance set up. You can " msgstr "Impulsado por Ollama"
"either run Ollama locally on your machine or connect to a remote instance."
msgstr ""
"Para iniciar, por favor asegurate de tener una instancia de Ollama "
"funcional. Puedes correr Ollama localmente o conectarte a una instancia "
"remota."
#: src/window.ui:389 #: src/window.ui:430
msgid "Ollama Website" msgid "Ollama Website"
msgstr "Sitio Web de Ollama" msgstr "Sitio Web de Ollama"
#: src/window.ui:406 #: src/window.ui:447
msgid "" msgid ""
"Alpaca and its developers are not liable for any damages to devices or " "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. " "software resulting from the execution of code generated by an AI model. "
@@ -499,64 +668,76 @@ msgstr ""
"un modelo de IA. Por favor sea precavido y revise el codigo cuidadosamente " "un modelo de IA. Por favor sea precavido y revise el codigo cuidadosamente "
"antes de correrlo" "antes de correrlo"
#: src/window.ui:418 #: src/window.ui:470
msgid "Setup"
msgstr "Setup"
#: src/window.ui:419
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 ""
"Si estás corriendo una instancia local de Ollama y no modificaste los "
"puertos por defecto, puedes usar la URL por defecto. De otra forma, por "
"favor ingresa la URL de tu instancia de Ollama"
#: src/window.ui:443
msgid "Change Server"
msgstr "Cambiar Servidor"
#: src/window.ui:447
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "Atajos de Teclado" msgstr "Atajos de Teclado"
#: src/window.ui:451 #: src/window.ui:474
msgid "About Alpaca" msgid "About Alpaca"
msgstr "Sobre Alpaca" msgstr "Sobre Alpaca"
#: src/window.ui:473 #: src/window.ui:505
msgid "General"
msgstr "General"
#: src/window.ui:477
msgid "Close application" msgid "Close application"
msgstr "Cerrar aplicación" msgstr "Cerrar aplicación"
#: src/window.ui:483 #: src/window.ui:511
msgid "Clear chat" msgid "Clear chat"
msgstr "Limpiar chat" msgstr "Limpiar chat"
#: src/window.ui:489 #: src/window.ui:523
msgid "Change server"
msgstr "Cambiar servidor"
#: src/window.ui:495
msgid "Show shortcuts window" msgid "Show shortcuts window"
msgstr "Mostrar ventana de atajos" msgstr "Mostrar ventana de atajos"
#: src/window.ui:502 #: src/window.ui:530
msgid "Editor" msgid "Editor"
msgstr "Editor" msgstr "Editor"
#: src/window.ui:506 #: src/window.ui:534
msgid "Copy" msgid "Copy"
msgstr "Copiar" msgstr "Copiar"
#: src/window.ui:512 #: src/window.ui:540
msgid "Paste" msgid "Paste"
msgstr "Pegar" msgstr "Pegar"
#: src/window.ui:518 #: src/window.ui:546
msgid "Send Message" msgid "Send Message"
msgstr "Enviar Mensaje" msgstr "Enviar Mensaje"
#~ msgid "Save Changes"
#~ msgstr "Guardar Cambios"
#~ msgid "Do you want to save the URL change?"
#~ msgstr "¿Deseas guardar el cambio de URL?"
#~ msgid "Discard"
#~ msgstr "Descartar"
#~ msgid "Save"
#~ msgstr "Guardar"
#~ 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 ""
#~ "Para iniciar, por favor asegurate de tener una instancia de Ollama "
#~ "funcional. Puedes correr Ollama localmente o conectarte a una instancia "
#~ "remota."
#~ msgid "Setup"
#~ msgstr "Setup"
#~ 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 ""
#~ "Si estás corriendo una instancia local de Ollama y no modificaste los "
#~ "puertos por defecto, puedes usar la URL por defecto. De otra forma, por "
#~ "favor ingresa la URL de tu instancia de Ollama"
#~ msgid "Change Server"
#~ msgstr "Cambiar Servidor"
#~ msgid "Change server"
#~ msgstr "Cambiar servidor"

494
po/es.po~
View File

@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-05-19 21:11-0600\n" "POT-Creation-Date: 2024-05-21 22:07-0600\n"
"PO-Revision-Date: 2024-05-19 19:44-0600\n" "PO-Revision-Date: 2024-05-19 19:44-0600\n"
"Last-Translator: Jeffry Samuel Eduarte Rojas <jeffrysamuer@gmail.com>\n" "Last-Translator: Jeffry Samuel Eduarte Rojas <jeffrysamuer@gmail.com>\n"
"Language-Team: Spanish <es@tp.org.es>\n" "Language-Team: Spanish <es@tp.org.es>\n"
@@ -23,34 +23,33 @@ msgid "Alpaca"
msgstr "Alpaca" msgstr "Alpaca"
#: data/com.jeffser.Alpaca.metainfo.xml.in:8 #: data/com.jeffser.Alpaca.metainfo.xml.in:8
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
msgid "An Ollama client"
msgstr "Un cliente de Ollama"
#: data/com.jeffser.Alpaca.metainfo.xml.in:10
msgid "Chat with multiple AI models" msgid "Chat with multiple AI models"
msgstr "Chatea con multiples modelos de IA" msgstr "Chatea con multiples modelos de IA"
#: data/com.jeffser.Alpaca.metainfo.xml.in:12 #: data/com.jeffser.Alpaca.metainfo.xml.in:10
#: data/com.jeffser.Alpaca.metainfo.xml.in:162 msgid "An Ollama client"
msgstr "Un cliente de Ollama"
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
#: data/com.jeffser.Alpaca.metainfo.xml.in:209
msgid "Features" msgid "Features"
msgstr "Funcionalidades" msgstr "Funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:14 #: data/com.jeffser.Alpaca.metainfo.xml.in:13
#: data/com.jeffser.Alpaca.metainfo.xml.in:164 #: data/com.jeffser.Alpaca.metainfo.xml.in:211
msgid "Talk to multiple models in the same conversation" msgid "Talk to multiple models in the same conversation"
msgstr "Habla con multiples modelos en la misma conversación" msgstr "Habla con multiples modelos en la misma conversación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:15 #: data/com.jeffser.Alpaca.metainfo.xml.in:14
#: data/com.jeffser.Alpaca.metainfo.xml.in:165 #: data/com.jeffser.Alpaca.metainfo.xml.in:212
msgid "Pull and delete models from the app" msgid "Pull and delete models from the app"
msgstr "Descarga y elimina modelos desde la app" msgstr "Descarga y elimina modelos desde la app"
#: data/com.jeffser.Alpaca.metainfo.xml.in:17 src/window.ui:405 #: data/com.jeffser.Alpaca.metainfo.xml.in:16 src/window.ui:436
msgid "Disclaimer" msgid "Disclaimer"
msgstr "Aviso Legal" msgstr "Aviso Legal"
#: data/com.jeffser.Alpaca.metainfo.xml.in:18 #: data/com.jeffser.Alpaca.metainfo.xml.in:17
msgid "" msgid ""
"This project is not affiliated at all with Ollama, I'm not responsible for " "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 " "any damages to your device or software caused by running code given by any "
@@ -60,153 +59,245 @@ msgstr ""
"cualquier daño a tu dispositivo o software causado por correr codigo " "cualquier daño a tu dispositivo o software causado por correr codigo "
"proveido por cualquier modelo." "proveido por cualquier modelo."
#: data/com.jeffser.Alpaca.metainfo.xml.in:21 #: data/com.jeffser.Alpaca.metainfo.xml.in:20
msgid "Jeffry Samuel Eduarte Rojas" msgid "Jeffry Samuel Eduarte Rojas"
msgstr "Jeffry Samuel Eduarte Rojas" msgstr "Jeffry Samuel Eduarte Rojas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:39 #: data/com.jeffser.Alpaca.metainfo.xml.in:38
msgid "Welcome dialog" msgid "Welcome dialog"
msgstr "Dialogo de Bienvenida" msgstr "Dialogo de Bienvenida"
#: data/com.jeffser.Alpaca.metainfo.xml.in:43 #: data/com.jeffser.Alpaca.metainfo.xml.in:42
msgid "A conversation involving multiple models" msgid "A conversation involving multiple models"
msgstr "Una conversación incluyendo multiples modelos" msgstr "Una conversación incluyendo multiples modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:47 #: data/com.jeffser.Alpaca.metainfo.xml.in:46
msgid "Managing models" msgid "Managing models"
msgstr "Gestionando modelos" msgstr "Gestionando modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:58 #: data/com.jeffser.Alpaca.metainfo.xml.in:57
#, fuzzy
msgid "Yet Another Daily Update"
msgstr "Otra Actulización Diaria"
#: data/com.jeffser.Alpaca.metainfo.xml.in:59
#, fuzzy
msgid "Added better UI for 'Manage Models' dialog"
msgstr "Añadida mejor interfaz para el dialogo 'gestión de modelos'"
#: data/com.jeffser.Alpaca.metainfo.xml.in:60
msgid "Added better UI for the chat sidebar"
msgstr "Añadida mejor interfaz para la barra de lado de chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:61
msgid ""
"Replaced model description with a button to open Ollama's website for the "
"model"
msgstr ""
"Remplazada la descripción de modelo por un botón para abrir la página web de "
"Ollama para el modelo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:62
msgid "Added myself to the credits as the spanish translator"
msgstr "Agregue mi nombre en los creditos como el traductor a Español"
#: data/com.jeffser.Alpaca.metainfo.xml.in:63
msgid "Using XDG properly to get config folder"
msgstr "Usando XDG apropiadamente para obtener el folder de configuración"
#: data/com.jeffser.Alpaca.metainfo.xml.in:64
#, fuzzy
msgid "Update for translations"
msgstr "Mejor soporte para traducciones"
#: data/com.jeffser.Alpaca.metainfo.xml.in:66
#: data/com.jeffser.Alpaca.metainfo.xml.in:78
#: data/com.jeffser.Alpaca.metainfo.xml.in:97
#: data/com.jeffser.Alpaca.metainfo.xml.in:118
#: data/com.jeffser.Alpaca.metainfo.xml.in:134
#: data/com.jeffser.Alpaca.metainfo.xml.in:150
#: data/com.jeffser.Alpaca.metainfo.xml.in:164
#: data/com.jeffser.Alpaca.metainfo.xml.in:174
#: data/com.jeffser.Alpaca.metainfo.xml.in:192
#: data/com.jeffser.Alpaca.metainfo.xml.in:214
msgid "Please report any errors to the issues page, thank you."
msgstr "Por favor reporta cualquier error a la página de problemas, gracias."
#: data/com.jeffser.Alpaca.metainfo.xml.in:74
#, fuzzy
msgid "Quick Fix"
msgstr "0.1.2 Arreglos rápidos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:76
msgid "The last update had some mistakes in the description of the update"
msgstr ""
"La última actualización tenía unos errores en la descripción de la "
"actualización"
#: data/com.jeffser.Alpaca.metainfo.xml.in:86
msgid "Another Daily Update"
msgstr "Otra Actulización Diaria"
#: data/com.jeffser.Alpaca.metainfo.xml.in:88
msgid "Added full Spanish translation"
msgstr "Añadida traducción completa a Español"
#: data/com.jeffser.Alpaca.metainfo.xml.in:89
#, fuzzy
msgid "Added support for background pulling of multiple models"
msgstr "Añadido soporte para multiples etiquetas con un solo modelo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:90
msgid "Added interrupt button"
msgstr "Añadido botón de interrupción"
#: data/com.jeffser.Alpaca.metainfo.xml.in:91
#, fuzzy
msgid "Added basic shortcuts"
msgstr "Atajos de Teclado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:92
msgid "Better translation support"
msgstr "Mejor soporte para traducciones"
#: data/com.jeffser.Alpaca.metainfo.xml.in:93
msgid ""
"User can now leave chat name empty when creating a new one, it will add a "
"placeholder name"
msgstr ""
"El usuario ahora puede dejar el nombre del chat vacio durante la creación, "
"la aplicación añadira un placeholder"
#: data/com.jeffser.Alpaca.metainfo.xml.in:94
msgid "Better scalling for different window sizes"
msgstr "Mejor escalado para distintos tamaños de ventana"
#: data/com.jeffser.Alpaca.metainfo.xml.in:95
#, fuzzy
msgid "Fixed: Can't close app if first time setup fails"
msgstr "Arreglado: No se puede cerrar la aplicación en el primer setup"
#: data/com.jeffser.Alpaca.metainfo.xml.in:105
msgid "Really Big Update" msgid "Really Big Update"
msgstr "Actualización Bastante Grande" msgstr "Actualización Bastante Grande"
#: data/com.jeffser.Alpaca.metainfo.xml.in:60 #: data/com.jeffser.Alpaca.metainfo.xml.in:107
msgid "Added multiple chats support!" msgid "Added multiple chats support!"
msgstr "Añadido soporte para multiples chats!" msgstr "Añadido soporte para multiples chats!"
#: data/com.jeffser.Alpaca.metainfo.xml.in:61 #: data/com.jeffser.Alpaca.metainfo.xml.in:108
msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)" msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)"
msgstr "" msgstr ""
"Añadido soporte para Pango Markup (negrita, lista, titulo, subtitulo, " "Añadido soporte para Pango Markup (negrita, lista, titulo, subtitulo, "
"monoespaciado)" "monoespaciado)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:62 #: data/com.jeffser.Alpaca.metainfo.xml.in:109
msgid "Added autoscroll if the user is at the bottom of the chat" msgid "Added autoscroll if the user is at the bottom of the chat"
msgstr "" msgstr ""
"Añadido autoscroll si el usuario se encuentra en la parte inferior del chat" "Añadido autoscroll si el usuario se encuentra en la parte inferior del chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:63 #: data/com.jeffser.Alpaca.metainfo.xml.in:110
msgid "Added support for multiple tags on a single model" msgid "Added support for multiple tags on a single model"
msgstr "Añadido soporte para multiples etiquetas con un solo modelo" msgstr "Añadido soporte para multiples etiquetas con un solo modelo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:64 #: data/com.jeffser.Alpaca.metainfo.xml.in:111
msgid "Added better model management dialog" msgid "Added better model management dialog"
msgstr "Añadido mejor gestión de modelos" msgstr "Añadido mejor gestión de modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:65 #: data/com.jeffser.Alpaca.metainfo.xml.in:112
msgid "Added loading spinner when sending message" msgid "Added loading spinner when sending message"
msgstr "Añadido spinner de carga cuando se envia un mensaje" msgstr "Añadido spinner de carga cuando se envia un mensaje"
#: data/com.jeffser.Alpaca.metainfo.xml.in:66 #: data/com.jeffser.Alpaca.metainfo.xml.in:113
msgid "Added notifications if app is not active and a model pull finishes" msgid "Added notifications if app is not active and a model pull finishes"
msgstr "" msgstr ""
"Añadidas notificaciones si la aplicación no está activa y la descarga de un " "Añadidas notificaciones si la aplicación no está activa y la descarga de un "
"modelo finaliza" "modelo finaliza"
#: data/com.jeffser.Alpaca.metainfo.xml.in:67 #: data/com.jeffser.Alpaca.metainfo.xml.in:114
msgid "Added new symbolic icon" msgid "Added new symbolic icon"
msgstr "Añadido nuevo icono simbolico" msgstr "Añadido nuevo icono simbolico"
#: data/com.jeffser.Alpaca.metainfo.xml.in:68 #: data/com.jeffser.Alpaca.metainfo.xml.in:115
msgid "Added frame to message textview widget" msgid "Added frame to message textview widget"
msgstr "Añadido borde al objeto textview del mensaje" msgstr "Añadido borde al objeto textview del mensaje"
#: data/com.jeffser.Alpaca.metainfo.xml.in:69 #: data/com.jeffser.Alpaca.metainfo.xml.in:116
msgid "Fixed \"code blocks shouldn't be editable\"" msgid "Fixed \"code blocks shouldn't be editable\""
msgstr "Arreglado \"bloques de codigo no deberían de ser editables\"" msgstr "Arreglado \"bloques de codigo no deberían de ser editables\""
#: data/com.jeffser.Alpaca.metainfo.xml.in:71 #: data/com.jeffser.Alpaca.metainfo.xml.in:126
#: data/com.jeffser.Alpaca.metainfo.xml.in:87 #: data/com.jeffser.Alpaca.metainfo.xml.in:183
#: data/com.jeffser.Alpaca.metainfo.xml.in:103
#: data/com.jeffser.Alpaca.metainfo.xml.in:117
#: data/com.jeffser.Alpaca.metainfo.xml.in:127
#: data/com.jeffser.Alpaca.metainfo.xml.in:145
#: data/com.jeffser.Alpaca.metainfo.xml.in:167
msgid "Please report any errors to the issues page, thank you."
msgstr "Por favor reporta cualquier error a la página de problemas, gracias."
#: data/com.jeffser.Alpaca.metainfo.xml.in:79
#: data/com.jeffser.Alpaca.metainfo.xml.in:136
msgid "Big Update" msgid "Big Update"
msgstr "Gran Actualización" msgstr "Gran Actualización"
#: data/com.jeffser.Alpaca.metainfo.xml.in:81 #: data/com.jeffser.Alpaca.metainfo.xml.in:128
msgid "Added code highlighting" msgid "Added code highlighting"
msgstr "Añadido resaltado de código" msgstr "Añadido resaltado de código"
#: data/com.jeffser.Alpaca.metainfo.xml.in:82 #: data/com.jeffser.Alpaca.metainfo.xml.in:129
msgid "Added image recognition (llava model)" msgid "Added image recognition (llava model)"
msgstr "Añadido reconocimiento de imagenes (modelo llava)" msgstr "Añadido reconocimiento de imagenes (modelo llava)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:83 #: data/com.jeffser.Alpaca.metainfo.xml.in:130
msgid "Added multiline prompt" msgid "Added multiline prompt"
msgstr "Añadido caja de texto de multiples lineas" msgstr "Añadido caja de texto de multiples lineas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:84 #: data/com.jeffser.Alpaca.metainfo.xml.in:131
msgid "Fixed some small bugs" msgid "Fixed some small bugs"
msgstr "Arreglados unos pequeños errores" msgstr "Arreglados unos pequeños errores"
#: data/com.jeffser.Alpaca.metainfo.xml.in:85 #: data/com.jeffser.Alpaca.metainfo.xml.in:132
msgid "General optimization" msgid "General optimization"
msgstr "Optimización general" msgstr "Optimización general"
#: data/com.jeffser.Alpaca.metainfo.xml.in:95 #: data/com.jeffser.Alpaca.metainfo.xml.in:142
msgid "Fixes and features" msgid "Fixes and features"
msgstr "Arreglos y funcionalidades" msgstr "Arreglos y funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:97 #: data/com.jeffser.Alpaca.metainfo.xml.in:144
msgid "Russian translation (thanks github/alexkdeveloper)" msgid "Russian translation (thanks github/alexkdeveloper)"
msgstr "Traducción a Ruso (gracias github/alexkdeveloper)" msgstr "Traducción a Ruso (gracias github/alexkdeveloper)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:98 #: data/com.jeffser.Alpaca.metainfo.xml.in:145
msgid "Fixed: Cannot close app on first setup" msgid "Fixed: Cannot close app on first setup"
msgstr "Arreglado: No se puede cerrar la aplicación en el primer setup" msgstr "Arreglado: No se puede cerrar la aplicación en el primer setup"
#: data/com.jeffser.Alpaca.metainfo.xml.in:99 #: data/com.jeffser.Alpaca.metainfo.xml.in:146
msgid "Fixed: Brand colors for Flathub" msgid "Fixed: Brand colors for Flathub"
msgstr "Arreglado: Colores de marca para Flathub" msgstr "Arreglado: Colores de marca para Flathub"
#: data/com.jeffser.Alpaca.metainfo.xml.in:100 #: data/com.jeffser.Alpaca.metainfo.xml.in:147
msgid "Fixed: App description" msgid "Fixed: App description"
msgstr "Arreglado: Descripción de aplicación" msgstr "Arreglado: Descripción de aplicación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:101 #: data/com.jeffser.Alpaca.metainfo.xml.in:148
msgid "Fixed: Only show 'save changes dialog' when you actually change the url" msgid "Fixed: Only show 'save changes dialog' when you actually change the url"
msgstr "" msgstr ""
"Arreglado: Solo mostrar el dialogo 'guardar cambios' cuando se cambia el url" "Arreglado: Solo mostrar el dialogo 'guardar cambios' cuando se cambia el url"
#: data/com.jeffser.Alpaca.metainfo.xml.in:111 #: data/com.jeffser.Alpaca.metainfo.xml.in:158
msgid "0.2.2 Bug fixes" msgid "0.2.2 Bug fixes"
msgstr "0.2.2 Arreglo de errores" msgstr "0.2.2 Arreglo de errores"
#: data/com.jeffser.Alpaca.metainfo.xml.in:113 #: data/com.jeffser.Alpaca.metainfo.xml.in:160
msgid "Toast messages appearing behind dialogs" msgid "Toast messages appearing behind dialogs"
msgstr "Mensajes toast apareciendo detrás de dialogos" msgstr "Mensajes toast apareciendo detrás de dialogos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:114 #: data/com.jeffser.Alpaca.metainfo.xml.in:161
msgid "Local model list not updating when changing servers" msgid "Local model list not updating when changing servers"
msgstr "" msgstr ""
"Lista de modelos locales no es actualizada cuando se cambia el servidor" "Lista de modelos locales no es actualizada cuando se cambia el servidor"
#: data/com.jeffser.Alpaca.metainfo.xml.in:115 #: data/com.jeffser.Alpaca.metainfo.xml.in:162
msgid "Closing the setup dialog closes the whole app" msgid "Closing the setup dialog closes the whole app"
msgstr "Cerrar el dialogo de setup cierra toda la aplicación" msgstr "Cerrar el dialogo de setup cierra toda la aplicación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:125 #: data/com.jeffser.Alpaca.metainfo.xml.in:172
msgid "0.2.1 Data saving fix" msgid "0.2.1 Data saving fix"
msgstr "0.2.1 Arreglo en el guardado de datos" msgstr "0.2.1 Arreglo en el guardado de datos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:126 #: data/com.jeffser.Alpaca.metainfo.xml.in:173
msgid "" msgid ""
"The app didn't save the config files and chat history to the right " "The app didn't save the config files and chat history to the right "
"directory, this is now fixed" "directory, this is now fixed"
@@ -214,281 +305,314 @@ msgstr ""
"La aplicación no guardaba los archivos de configuración o los chats en el " "La aplicación no guardaba los archivos de configuración o los chats en el "
"directorio correcto, esto ahora ha sido arreglado" "directorio correcto, esto ahora ha sido arreglado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:135 #: data/com.jeffser.Alpaca.metainfo.xml.in:182
msgid "0.2.0" msgid "0.2.0"
msgstr "0.2.0" msgstr "0.2.0"
#: data/com.jeffser.Alpaca.metainfo.xml.in:137 #: data/com.jeffser.Alpaca.metainfo.xml.in:184
msgid "New Features" msgid "New Features"
msgstr "Nuevas funcionalidades" msgstr "Nuevas funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:139 #: data/com.jeffser.Alpaca.metainfo.xml.in:186
msgid "Restore chat after closing the app" msgid "Restore chat after closing the app"
msgstr "Restaurar chat despues de cerrar la aplicación" msgstr "Restaurar chat despues de cerrar la aplicación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:140 #: data/com.jeffser.Alpaca.metainfo.xml.in:187
msgid "A button to clear the chat" msgid "A button to clear the chat"
msgstr "Un botón para limpiar el chat" msgstr "Un botón para limpiar el chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:141 #: data/com.jeffser.Alpaca.metainfo.xml.in:188
msgid "Fixed multiple bugs involving how messages are shown" msgid "Fixed multiple bugs involving how messages are shown"
msgstr "Arreglados multiples errores acerca de como los mensajes son mostrados" msgstr "Arreglados multiples errores acerca de como los mensajes son mostrados"
#: data/com.jeffser.Alpaca.metainfo.xml.in:142 #: data/com.jeffser.Alpaca.metainfo.xml.in:189
msgid "Added welcome dialog" msgid "Added welcome dialog"
msgstr "Añadido dialogo de bienvenida" msgstr "Añadido dialogo de bienvenida"
#: data/com.jeffser.Alpaca.metainfo.xml.in:143 #: data/com.jeffser.Alpaca.metainfo.xml.in:190
msgid "More stability" msgid "More stability"
msgstr "Más estabilidad" msgstr "Más estabilidad"
#: data/com.jeffser.Alpaca.metainfo.xml.in:153 #: data/com.jeffser.Alpaca.metainfo.xml.in:200
msgid "0.1.2 Quick fixes" msgid "0.1.2 Quick fixes"
msgstr "0.1.2 Arreglos rápidos" msgstr "0.1.2 Arreglos rápidos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:154 #: data/com.jeffser.Alpaca.metainfo.xml.in:201
msgid "" msgid ""
"This release fixes some metadata needed to have a proper Flatpak application" "This release fixes some metadata needed to have a proper Flatpak application"
msgstr "" msgstr ""
"Esta versión arregla metadatos necesarios para tener un aplicación de " "Esta versión arregla metadatos necesarios para tener un aplicación de "
"Flatpak justa" "Flatpak justa"
#: data/com.jeffser.Alpaca.metainfo.xml.in:160 #: data/com.jeffser.Alpaca.metainfo.xml.in:207
msgid "0.1.1 Stable Release" msgid "0.1.1 Stable Release"
msgstr "0.1.1" msgstr "0.1.1"
#: data/com.jeffser.Alpaca.metainfo.xml.in:161 #: data/com.jeffser.Alpaca.metainfo.xml.in:208
msgid "This is the first public version of Alpaca" msgid "This is the first public version of Alpaca"
msgstr "Esta es la primera versión publica de Alpaca" msgstr "Esta es la primera versión publica de Alpaca"
#: src/window.py:47 src/window.py:758 #: src/window.py:53 src/window.py:753
msgid "New Chat" msgid "New Chat"
msgstr "Nuevo Chat" msgstr "Nuevo Chat"
#: src/window.py:86 #: src/window.py:98
msgid "An error occurred" msgid "An error occurred"
msgstr "Ocurrio un error" msgstr "Ocurrio un error"
#: src/window.py:87 #: src/window.py:99
msgid "Failed to connect to server" msgid "Failed to connect to server"
msgstr "No se pudo conectar al servidor" msgstr "No se pudo conectar al servidor"
#: src/window.py:88 #: src/window.py:100
msgid "Could not list local models" msgid "Could not list local models"
msgstr "No se pudieron listar los modelos locales" msgstr "No se pudieron listar los modelos locales"
#: src/window.py:89 #: src/window.py:101
msgid "Could not delete model" msgid "Could not delete model"
msgstr "No se pudo eliminar el modelo" msgstr "No se pudo eliminar el modelo"
#: src/window.py:90 #: src/window.py:102
msgid "Could not pull model" msgid "Could not pull model"
msgstr "No se pudo descargar el modelo" msgstr "No se pudo descargar el modelo"
#: src/window.py:91 #: src/window.py:103
msgid "Cannot open image" msgid "Cannot open image"
msgstr "No se pudo abrir la imagen" msgstr "No se pudo abrir la imagen"
#: src/window.py:92 #: src/window.py:104
msgid "Cannot delete chat because it's the only one left" msgid "Cannot delete chat because it's the only one left"
msgstr "No se pudo eliminar el chat por que es el único que queda" msgstr "No se pudo eliminar el chat por que es el único que queda"
#: src/window.py:95 #: src/window.py:105
msgid "There was an error with the local Ollama instance, so it has been reset"
msgstr ""
#: src/window.py:108
msgid "Please select a model before chatting" msgid "Please select a model before chatting"
msgstr "Por favor selecciona un modelo antes de enviar un mensaje" msgstr "Por favor selecciona un modelo antes de enviar un mensaje"
#: src/window.py:96 #: src/window.py:109
msgid "Chat cannot be cleared while receiving a message" msgid "Chat cannot be cleared while receiving a message"
msgstr "El chat no puede ser limpiado mientras se recibe un mensaje" msgstr "El chat no puede ser limpiado mientras se recibe un mensaje"
#: src/window.py:99 #: src/window.py:110
#, fuzzy
msgid "That tag is already being pulled"
msgstr "El nombre '{}' ya está en uso"
#: src/window.py:111
msgid "That tag has been pulled alreay"
msgstr ""
#: src/window.py:114
msgid "Model deleted successfully" msgid "Model deleted successfully"
msgstr "Modelo eliminado exitosamente" msgstr "Modelo eliminado exitosamente"
#: src/window.py:100 #: src/window.py:115
msgid "Model pulled successfully" msgid "Model pulled successfully"
msgstr "Modelo descargado exitosamente" msgstr "Modelo descargado exitosamente"
#: src/window.py:418 #: src/window.py:116
#, fuzzy
msgid "Chat exported successfully"
msgstr "Modelo eliminado exitosamente"
#: src/window.py:117
#, fuzzy
msgid "Chat imported successfully"
msgstr "Modelo descargado exitosamente"
#: src/window.py:443
msgid "Task Complete" msgid "Task Complete"
msgstr "Tarea completada" msgstr "Tarea completada"
#: src/window.py:418 #: src/window.py:443
msgid "Model '{}' pulled successfully." msgid "Model '{}' pulled successfully."
msgstr "El modelo '{}' fue descargado exitosamente" msgstr "El modelo '{}' fue descargado exitosamente"
#: src/window.py:424 #: src/window.py:448
msgid "Pull Model Error" msgid "Pull Model Error"
msgstr "Error Descargando Modelo" msgstr "Error Descargando Modelo"
#: src/window.py:424 #: src/window.py:448
msgid "Failed to pull model '{}' due to network error." msgid "Failed to pull model '{}' due to network error."
msgstr "No se pudo descargar el modelo '{}' debido a un error de red" msgstr "No se pudo descargar el modelo '{}' debido a un error de red"
#: src/window.py:436 #: src/window.py:464
msgid "Stop Model" msgid "Stop Model"
msgstr "Parar Modelo" msgstr "Parar Modelo"
#: src/window.py:437 #: src/window.py:465
msgid "Are you sure you want to stop pulling '{}'?" msgid "Are you sure you want to stop pulling '{}'?"
msgstr "¿Estás seguro de que quieres parar la descarga de '{}'?" msgstr "¿Estás seguro de que quieres parar la descarga de '{}'?"
#: src/window.py:440 src/window.py:478 src/window.py:501 src/window.py:575 #: src/window.py:468 src/window.py:511 src/window.py:534 src/window.py:607
#: src/window.py:636 src/window.py:685 src/window.py:712 src/window.py:745 #: src/window.py:680 src/window.py:707 src/window.py:740 src/window.py:780
#: src/window.py:785
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: src/window.py:441 #: src/window.py:469
msgid "Stop" msgid "Stop"
msgstr "Parar" msgstr "Parar"
#: src/window.py:474 #: src/window.py:507
msgid "Delete Model" msgid "Delete Model"
msgstr "Eliminar Modelo" msgstr "Eliminar Modelo"
#: src/window.py:475 src/window.py:709 #: src/window.py:508 src/window.py:704
msgid "Are you sure you want to delete '{}'?" msgid "Are you sure you want to delete '{}'?"
msgstr "¿Estás seguro de que quieres eliminar '{}'?" msgstr "¿Estás seguro de que quieres eliminar '{}'?"
#: src/window.py:479 src/window.py:713 #: src/window.py:512 src/window.py:708
msgid "Delete" msgid "Delete"
msgstr "Eliminar" msgstr "Eliminar"
#: src/window.py:496 #: src/window.py:529
msgid "Pull Model" msgid "Pull Model"
msgstr "Descargar Modelo" msgstr "Descargar Modelo"
#: src/window.py:497 #: src/window.py:530
msgid "Please select a tag to pull '{}'" msgid "Please select a tag to pull '{}'"
msgstr "Por favor selecciona una etiqueta para descargar '{}'" msgstr "Por favor selecciona una etiqueta para descargar '{}'"
#: src/window.py:502 #: src/window.py:535
msgid "Pull" msgid "Pull"
msgstr "Descargar" msgstr "Descargar"
#: src/window.py:571 src/window.ui:439 #: src/window.py:603 src/window.ui:452
msgid "Clear Chat" msgid "Clear Chat"
msgstr "Limpiar Chat" msgstr "Limpiar Chat"
#: src/window.py:572 #: src/window.py:604
msgid "Are you sure you want to clear the chat?" msgid "Are you sure you want to clear the chat?"
msgstr "¿Estás seguro de que quieres limpiar el chat?" msgstr "¿Estás seguro de que quieres limpiar el chat?"
#: src/window.py:576 #: src/window.py:608
msgid "Clear" msgid "Clear"
msgstr "Limpiar" msgstr "Limpiar"
#: src/window.py:632 #: src/window.py:676
msgid "Save Changes"
msgstr "Guardar Cambios"
#: src/window.py:633
msgid "Do you want to save the URL change?"
msgstr "¿Deseas guardar el cambio de URL?"
#: src/window.py:637
msgid "Discard"
msgstr "Descartar"
#: src/window.py:638
msgid "Save"
msgstr "Guardar"
#: src/window.py:681
msgid "Remove Image" msgid "Remove Image"
msgstr "Remover Imagen" msgstr "Remover Imagen"
#: src/window.py:682 #: src/window.py:677
msgid "Are you sure you want to remove image?" msgid "Are you sure you want to remove image?"
msgstr "¿Estás seguro de que quieres eliminar la imagen?" msgstr "¿Estás seguro de que quieres eliminar la imagen?"
#: src/window.py:686 #: src/window.py:681
msgid "Remove" msgid "Remove"
msgstr "Remover" msgstr "Remover"
#: src/window.py:708 #: src/window.py:703
msgid "Delete Chat" msgid "Delete Chat"
msgstr "Eliminar Chat" msgstr "Eliminar Chat"
#: src/window.py:739 #: src/window.py:734
msgid "Rename Chat" msgid "Rename Chat"
msgstr "Renombrar Chat" msgstr "Renombrar Chat"
#: src/window.py:746 #: src/window.py:741
msgid "Rename" msgid "Rename"
msgstr "Renombrar" msgstr "Renombrar"
#: src/window.py:766 #: src/window.py:761
msgid "The name '{}' is already in use" msgid "The name '{}' is already in use"
msgstr "El nombre '{}' ya está en uso" msgstr "El nombre '{}' ya está en uso"
#: src/window.py:779 #: src/window.py:774
msgid "Create Chat" msgid "Create Chat"
msgstr "Crear Chat" msgstr "Crear Chat"
#: src/window.py:786 #: src/window.py:781
msgid "Create" msgid "Create"
msgstr "Crear" msgstr "Crear"
#: src/window.ui:55 #: src/window.ui:46
msgid "Chats" msgid "Chats"
msgstr "Chats" msgstr "Chats"
#: src/window.ui:65 #: src/window.ui:56
msgid "Import chat"
msgstr ""
#: src/window.ui:69
msgid "Export chat"
msgstr ""
#: src/window.ui:82
msgid "New chat" msgid "New chat"
msgstr "Nuevo chat" msgstr "Nuevo chat"
#: src/window.ui:101 #: src/window.ui:118
msgid "Toggle Sidebar" msgid "Toggle Sidebar"
msgstr "Alternar barra de lado" msgstr "Alternar barra de lado"
#: src/window.ui:122 src/window.ui:259 #: src/window.ui:139 src/window.ui:305
msgid "Manage models" msgid "Manage models"
msgstr "Gestionar modelos" msgstr "Gestionar modelos"
#: src/window.ui:136 #: src/window.ui:153
msgid "Menu" msgid "Menu"
msgstr "Menu" msgstr "Menu"
#: src/window.ui:215 #: src/window.ui:231
msgid "Send" msgid "Send"
msgstr "Enviar" msgstr "Enviar"
#: src/window.ui:224 #: src/window.ui:240
msgid "Requires model 'llava' to be selected" msgid "Requires model 'llava' to be selected"
msgstr "Requiere que el modelo 'llava' sea seleccionado" msgstr "Requiere que el modelo 'llava' sea seleccionado"
#: src/window.ui:227 #: src/window.ui:243
msgid "Image" msgid "Image"
msgstr "Imagen" msgstr "Imagen"
#: src/window.ui:344 #: src/window.ui:267 src/window.ui:456 src/window.ui:507
msgid "Preferences"
msgstr ""
#: src/window.ui:270
msgid "Connection"
msgstr ""
#: src/window.ui:274
msgid "Remote Connection"
msgstr ""
#: src/window.ui:275
msgid "Manage a remote connection to Ollama"
msgstr ""
#: src/window.ui:278
msgid "Use remote connection"
msgstr ""
#: src/window.ui:283
msgid "URL of remote instance"
msgstr ""
#: src/window.ui:375
msgid "Previous" msgid "Previous"
msgstr "Anterior" msgstr "Anterior"
#: src/window.ui:359 #: src/window.ui:390
msgid "Next" msgid "Next"
msgstr "Siguiente" msgstr "Siguiente"
#: src/window.ui:385 #: src/window.ui:416
msgid "Welcome to Alpaca" msgid "Welcome to Alpaca"
msgstr "Bienvenido a Alpaca" msgstr "Bienvenido a Alpaca"
#: src/window.ui:386 #: src/window.ui:417
msgid "" msgid "Powered by Ollama"
"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 "" msgstr ""
"Para iniciar, por favor asegurate de tener una instancia de Ollama "
"funcional. Puedes correr Ollama localmente o conectarte a una instancia "
"remota."
#: src/window.ui:389 #: src/window.ui:420
msgid "Ollama Website" msgid "Ollama Website"
msgstr "Sitio Web de Ollama" msgstr "Sitio Web de Ollama"
#: src/window.ui:406 #: src/window.ui:437
msgid "" msgid ""
"Alpaca and its developers are not liable for any damages to devices or " "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. " "software resulting from the execution of code generated by an AI model. "
@@ -499,64 +623,80 @@ msgstr ""
"un modelo de IA. Por favor sea precavido y revise el codigo cuidadosamente " "un modelo de IA. Por favor sea precavido y revise el codigo cuidadosamente "
"antes de correrlo" "antes de correrlo"
#: src/window.ui:418 #: src/window.ui:460
msgid "Setup"
msgstr "Setup"
#: src/window.ui:419
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 ""
"Si estás corriendo una instancia local de Ollama y no modificaste los "
"puertos por defecto, puedes usar la URL por defecto. De otra forma, por "
"favor ingresa la URL de tu instancia de Ollama"
#: src/window.ui:443
msgid "Change Server"
msgstr "Cambiar Servidor"
#: src/window.ui:447
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "Atajos de Teclado" msgstr "Atajos de Teclado"
#: src/window.ui:451 #: src/window.ui:464
msgid "About Alpaca" msgid "About Alpaca"
msgstr "Sobre Alpaca" msgstr "Sobre Alpaca"
#: src/window.ui:473 #: src/window.ui:491
msgid "General" msgid "General"
msgstr "General" msgstr "General"
#: src/window.ui:477 #: src/window.ui:495
msgid "Close application" msgid "Close application"
msgstr "Cerrar aplicación" msgstr "Cerrar aplicación"
#: src/window.ui:483 #: src/window.ui:501
msgid "Clear chat" msgid "Clear chat"
msgstr "Limpiar chat" msgstr "Limpiar chat"
#: src/window.ui:489 #: src/window.ui:513
msgid "Change server"
msgstr "Cambiar servidor"
#: src/window.ui:495
msgid "Show shortcuts window" msgid "Show shortcuts window"
msgstr "Mostrar ventana de atajos" msgstr "Mostrar ventana de atajos"
#: src/window.ui:502 #: src/window.ui:520
msgid "Editor" msgid "Editor"
msgstr "Editor" msgstr "Editor"
#: src/window.ui:506 #: src/window.ui:524
msgid "Copy" msgid "Copy"
msgstr "Copiar" msgstr "Copiar"
#: src/window.ui:512 #: src/window.ui:530
msgid "Paste" msgid "Paste"
msgstr "Pegar" msgstr "Pegar"
#: src/window.ui:518 #: src/window.ui:536
msgid "Send Message" msgid "Send Message"
msgstr "Enviar Mensaje" msgstr "Enviar Mensaje"
#~ msgid "Save Changes"
#~ msgstr "Guardar Cambios"
#~ msgid "Do you want to save the URL change?"
#~ msgstr "¿Deseas guardar el cambio de URL?"
#~ msgid "Discard"
#~ msgstr "Descartar"
#~ msgid "Save"
#~ msgstr "Guardar"
#~ 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 ""
#~ "Para iniciar, por favor asegurate de tener una instancia de Ollama "
#~ "funcional. Puedes correr Ollama localmente o conectarte a una instancia "
#~ "remota."
#~ msgid "Setup"
#~ msgstr "Setup"
#~ 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 ""
#~ "Si estás corriendo una instancia local de Ollama y no modificaste los "
#~ "puertos por defecto, puedes usar la URL por defecto. De otra forma, por "
#~ "favor ingresa la URL de tu instancia de Ollama"
#~ msgid "Change Server"
#~ msgstr "Cambiar Servidor"
#~ msgid "Change server"
#~ msgstr "Cambiar servidor"

741
po/ru.po

File diff suppressed because it is too large Load Diff

676
po/ru.po~
View File

@@ -1,99 +1,589 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"POT-Creation-Date: 2024-05-19 14:52+0800\n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-05-19 14:59+0800\n" "POT-Creation-Date: 2024-05-21 22:07-0600\n"
"PO-Revision-Date: 2024-05-20 16:59+0800\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: ru_RU\n" "Language: ru_RU\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4.2\n" "X-Generator: Poedit 3.4.4\n"
"X-Poedit-Basepath: ../src\n" "X-Poedit-Basepath: ../src\n"
"X-Poedit-SearchPath-0: .\n" "X-Poedit-SearchPath-0: .\n"
#: gtk/help-overlay.ui:11 #: data/com.jeffser.Alpaca.desktop.in:3
msgctxt "shortcut window" #: data/com.jeffser.Alpaca.metainfo.xml.in:7
msgid "General" msgid "Alpaca"
msgstr "Общие" msgstr ""
#: gtk/help-overlay.ui:14 #: data/com.jeffser.Alpaca.metainfo.xml.in:8
msgctxt "shortcut window" msgid "Chat with multiple AI models"
msgid "Show Shortcuts" msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:10
msgid "An Ollama client"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
#: data/com.jeffser.Alpaca.metainfo.xml.in:209
msgid "Features"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:13
#: data/com.jeffser.Alpaca.metainfo.xml.in:211
msgid "Talk to multiple models in the same conversation"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:14
#: data/com.jeffser.Alpaca.metainfo.xml.in:212
msgid "Pull and delete models from the app"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:16 src/window.ui:436
msgid "Disclaimer"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:17
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 ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:20
msgid "Jeffry Samuel Eduarte Rojas"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:38
msgid "Welcome dialog"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:42
msgid "A conversation involving multiple models"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:46
msgid "Managing models"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:57
msgid "Yet Another Daily Update"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:59
msgid "Added better UI for 'Manage Models' dialog"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:60
msgid "Added better UI for the chat sidebar"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:61
msgid ""
"Replaced model description with a button to open Ollama's website for the "
"model"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:62
msgid "Added myself to the credits as the spanish translator"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:63
msgid "Using XDG properly to get config folder"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:64
msgid "Update for translations"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:66
#: data/com.jeffser.Alpaca.metainfo.xml.in:78
#: data/com.jeffser.Alpaca.metainfo.xml.in:97
#: data/com.jeffser.Alpaca.metainfo.xml.in:118
#: data/com.jeffser.Alpaca.metainfo.xml.in:134
#: data/com.jeffser.Alpaca.metainfo.xml.in:150
#: data/com.jeffser.Alpaca.metainfo.xml.in:164
#: data/com.jeffser.Alpaca.metainfo.xml.in:174
#: data/com.jeffser.Alpaca.metainfo.xml.in:192
#: data/com.jeffser.Alpaca.metainfo.xml.in:214
msgid "Please report any errors to the issues page, thank you."
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:74
msgid "Quick Fix"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:76
msgid "The last update had some mistakes in the description of the update"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:86
msgid "Another Daily Update"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:88
msgid "Added full Spanish translation"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:89
msgid "Added support for background pulling of multiple models"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:90
msgid "Added interrupt button"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:91
#, fuzzy
msgid "Added basic shortcuts"
msgstr "Показывать ярлыки" msgstr "Показывать ярлыки"
#: gtk/help-overlay.ui:20 #: data/com.jeffser.Alpaca.metainfo.xml.in:92
msgctxt "shortcut window" msgid "Better translation support"
msgid "Quit" msgstr ""
msgstr "Выйти"
#: window.ui:39 #: data/com.jeffser.Alpaca.metainfo.xml.in:93
msgid ""
"User can now leave chat name empty when creating a new one, it will add a "
"placeholder name"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:94
msgid "Better scalling for different window sizes"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:95
msgid "Fixed: Can't close app if first time setup fails"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:105
msgid "Really Big Update"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:107
msgid "Added multiple chats support!"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:108
msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:109
msgid "Added autoscroll if the user is at the bottom of the chat"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:110
msgid "Added support for multiple tags on a single model"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:111
msgid "Added better model management dialog"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:112
msgid "Added loading spinner when sending message"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:113
msgid "Added notifications if app is not active and a model pull finishes"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:114
msgid "Added new symbolic icon"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:115
msgid "Added frame to message textview widget"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:116
msgid "Fixed \"code blocks shouldn't be editable\""
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:126
#: data/com.jeffser.Alpaca.metainfo.xml.in:183
msgid "Big Update"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:128
msgid "Added code highlighting"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:129
msgid "Added image recognition (llava model)"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:130
msgid "Added multiline prompt"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:131
msgid "Fixed some small bugs"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:132
msgid "General optimization"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:142
msgid "Fixes and features"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:144
msgid "Russian translation (thanks github/alexkdeveloper)"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:145
msgid "Fixed: Cannot close app on first setup"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:146
msgid "Fixed: Brand colors for Flathub"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:147
msgid "Fixed: App description"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:148
msgid "Fixed: Only show 'save changes dialog' when you actually change the url"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:158
msgid "0.2.2 Bug fixes"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:160
msgid "Toast messages appearing behind dialogs"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:161
msgid "Local model list not updating when changing servers"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:162
msgid "Closing the setup dialog closes the whole app"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:172
msgid "0.2.1 Data saving fix"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:173
msgid ""
"The app didn't save the config files and chat history to the right "
"directory, this is now fixed"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:182
msgid "0.2.0"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:184
msgid "New Features"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:186
msgid "Restore chat after closing the app"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:187
msgid "A button to clear the chat"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:188
msgid "Fixed multiple bugs involving how messages are shown"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:189
msgid "Added welcome dialog"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:190
msgid "More stability"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:200
msgid "0.1.2 Quick fixes"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:201
msgid ""
"This release fixes some metadata needed to have a proper Flatpak application"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:207
msgid "0.1.1 Stable Release"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:208
msgid "This is the first public version of Alpaca"
msgstr ""
#: src/window.py:53 src/window.py:753
msgid "New Chat"
msgstr "Новый Чат"
#: src/window.py:98
msgid "An error occurred"
msgstr "Произошла ошибка"
#: src/window.py:99
msgid "Failed to connect to server"
msgstr "Не удалось подключиться к серверу"
#: src/window.py:100
msgid "Could not list local models"
msgstr "Не удалось перечислить локальные модели"
#: src/window.py:101
msgid "Could not delete model"
msgstr "Не удалось удалить модель"
#: src/window.py:102
msgid "Could not pull model"
msgstr "Не удалось извлечь модель"
#: src/window.py:103
msgid "Cannot open image"
msgstr "Не удается открыть изображение"
#: src/window.py:104
msgid "Cannot delete chat because it's the only one left"
msgstr "Не удается удалить чат, потому что он единственный оставшийся"
#: src/window.py:105
msgid "There was an error with the local Ollama instance, so it has been reset"
msgstr ""
#: src/window.py:108
msgid "Please select a model before chatting"
msgstr "Пожалуйста, выберите модель перед началом общения"
#: src/window.py:109
msgid "Chat cannot be cleared while receiving a message"
msgstr "Чат не может быть удален при получении сообщения"
#: src/window.py:110
#, fuzzy
msgid "That tag is already being pulled"
msgstr "Имя '{}' уже используется"
#: src/window.py:111
msgid "That tag has been pulled alreay"
msgstr ""
#: src/window.py:114
msgid "Model deleted successfully"
msgstr "Модель успешно удалена"
#: src/window.py:115
msgid "Model pulled successfully"
msgstr "Модель успешно извлечена"
#: src/window.py:116
#, fuzzy
msgid "Chat exported successfully"
msgstr "Модель успешно удалена"
#: src/window.py:117
#, fuzzy
msgid "Chat imported successfully"
msgstr "Модель успешно извлечена"
#: src/window.py:443
msgid "Task Complete"
msgstr "Задача выполнена"
#: src/window.py:443
msgid "Model '{}' pulled successfully."
msgstr "Модель '{}' успешно извлечена."
#: src/window.py:448
msgid "Pull Model Error"
msgstr "Ошибка Извлечения Модели"
#: src/window.py:448
msgid "Failed to pull model '{}' due to network error."
msgstr "Не удалось извлечь модель '{}' из-за сетевой ошибки."
#: src/window.py:464
msgid "Stop Model"
msgstr "Остановить Модель"
#: src/window.py:465
msgid "Are you sure you want to stop pulling '{}'?"
msgstr "Вы уверены, что хотите прекратить извлечение '{}'?"
#: src/window.py:468 src/window.py:511 src/window.py:534 src/window.py:607
#: src/window.py:680 src/window.py:707 src/window.py:740 src/window.py:780
msgid "Cancel"
msgstr "Отмена"
#: src/window.py:469
msgid "Stop"
msgstr "Стоп"
#: src/window.py:507
msgid "Delete Model"
msgstr "Удалить Модель"
#: src/window.py:508 src/window.py:704
msgid "Are you sure you want to delete '{}'?"
msgstr "Вы уверены, что хотите удалить '{}'?"
#: src/window.py:512 src/window.py:708
msgid "Delete"
msgstr "Удалить"
#: src/window.py:529
msgid "Pull Model"
msgstr "Извлечение модели"
#: src/window.py:530
msgid "Please select a tag to pull '{}'"
msgstr "Пожалуйста, выберите тег для извлечения '{}'"
#: src/window.py:535
msgid "Pull"
msgstr "Извлечение"
#: src/window.py:603 src/window.ui:452
msgid "Clear Chat"
msgstr "Очистить Чат"
#: src/window.py:604
msgid "Are you sure you want to clear the chat?"
msgstr "Вы уверены, что хотите очистить чат?"
#: src/window.py:608
msgid "Clear"
msgstr "Очистить"
#: src/window.py:676
msgid "Remove Image"
msgstr "Удалить Изображение"
#: src/window.py:677
msgid "Are you sure you want to remove image?"
msgstr "Вы уверены, что хотите удалить изображение?"
#: src/window.py:681
msgid "Remove"
msgstr "Удалить"
#: src/window.py:703
msgid "Delete Chat"
msgstr "Удалить Чат"
#: src/window.py:734
msgid "Rename Chat"
msgstr "Переименовать Чат"
#: src/window.py:741
msgid "Rename"
msgstr "Переименовать"
#: src/window.py:761
msgid "The name '{}' is already in use"
msgstr "Имя '{}' уже используется"
#: src/window.py:774
msgid "Create Chat"
msgstr "Создать Чат"
#: src/window.py:781
msgid "Create"
msgstr "Создать"
#: src/window.ui:46
msgid "Chats" msgid "Chats"
msgstr "Чаты" msgstr "Чаты"
#: window.ui:49 #: src/window.ui:56
msgid "Import chat"
msgstr ""
#: src/window.ui:69
msgid "Export chat"
msgstr ""
#: src/window.ui:82
msgid "New chat" msgid "New chat"
msgstr "Новый чат" msgstr "Новый чат"
#: window.ui:86 #: src/window.ui:118
msgid "Toggle Sidebar" msgid "Toggle Sidebar"
msgstr "Переключение боковой панели" msgstr "Переключение боковой панели"
#: window.ui:107 #: src/window.ui:139 src/window.ui:305
msgid "Manage models" msgid "Manage models"
msgstr "Управление моделями" msgstr "Управление моделями"
#: window.ui:121 #: src/window.ui:153
msgid "Menu" msgid "Menu"
msgstr "Меню" msgstr "Меню"
#: window.ui:202 #: src/window.ui:231
msgid "Send" msgid "Send"
msgstr "Отправить" msgstr "Отправить"
#: window.ui:211 #: src/window.ui:240
msgid "Requires model 'llava' to be selected" msgid "Requires model 'llava' to be selected"
msgstr "Требуется выбрать модель \"llava\"" msgstr "Требуется выбрать модель \"llava\""
#: window.ui:214 #: src/window.ui:243
msgid "Image" msgid "Image"
msgstr "Изображение" msgstr "Изображение"
#: window.ui:249 #: src/window.ui:267 src/window.ui:456 src/window.ui:507
msgid "Pulling Model" msgid "Preferences"
msgstr "Вытягивающая модель" msgstr ""
#: window.ui:345 #: src/window.ui:270
msgid "Connection"
msgstr ""
#: src/window.ui:274
msgid "Remote Connection"
msgstr ""
#: src/window.ui:275
msgid "Manage a remote connection to Ollama"
msgstr ""
#: src/window.ui:278
msgid "Use remote connection"
msgstr ""
#: src/window.ui:283
msgid "URL of remote instance"
msgstr ""
#: src/window.ui:375
msgid "Previous" msgid "Previous"
msgstr "Предыдущий" msgstr "Предыдущий"
#: window.ui:360 #: src/window.ui:390
msgid "Next" msgid "Next"
msgstr "Следующий" msgstr "Следующий"
#: window.ui:386 #: src/window.ui:416
msgid "Welcome to Alpaca" msgid "Welcome to Alpaca"
msgstr "Добро пожаловать в Alpaca" msgstr "Добро пожаловать в Alpaca"
#: window.ui:387 #: src/window.ui:417
msgid "" msgid "Powered by Ollama"
"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 "" msgstr ""
"Для начала, пожалуйста, убедитесь, что у вас настроен экземпляр Ollama. Вы "
"можете либо запустить Ollama локально на своем компьютере, либо подключиться "
"к удаленному экземпляру."
#: window.ui:390 #: src/window.ui:420
msgid "Ollama Website" msgid "Ollama Website"
msgstr "Веб-сайт Ollama" msgstr "Веб-сайт Ollama"
#: window.ui:406 #: src/window.ui:437
msgid "Disclaimer"
msgstr "Отказ от ответственности"
#: window.ui:407
msgid "" msgid ""
"Alpaca and its developers are not liable for any damages to devices or " "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. " "software resulting from the execution of code generated by an AI model. "
@@ -105,28 +595,92 @@ msgstr ""
"Пожалуйста, будьте осторожны и внимательно ознакомьтесь с кодом перед его " "Пожалуйста, будьте осторожны и внимательно ознакомьтесь с кодом перед его "
"запуском." "запуском."
#: window.ui:419 #: src/window.ui:460
msgid "Setup" msgid "Keyboard Shortcuts"
msgstr "Установка" msgstr "Комбинации Клавиш"
#: window.ui:420 #: src/window.ui:464
msgid "" msgid "About Alpaca"
"If you are running an Ollama instance locally and haven't modified the " msgstr "О Программе"
"default ports, you can use the default URL. Otherwise, please enter the URL "
"of your Ollama instance." #: src/window.ui:491
msgid "General"
msgstr "Общие"
#: src/window.ui:495
msgid "Close application"
msgstr "Закрыть приложение"
#: src/window.ui:501
msgid "Clear chat"
msgstr "Очистить чат"
#: src/window.ui:513
msgid "Show shortcuts window"
msgstr "Показать окно комбинаций клавиш"
#: src/window.ui:520
msgid "Editor"
msgstr "Редактор"
#: src/window.ui:524
msgid "Copy"
msgstr "Копировать"
#: src/window.ui:530
msgid "Paste"
msgstr "Вставить"
#: src/window.ui:536
msgid "Send Message"
msgstr "" msgstr ""
"Если вы запускаете локальный экземпляр Ollama и не изменили порты по "
"умолчанию, вы можете использовать URL-адрес по умолчанию. В противном "
"случае, пожалуйста, введите URL-адрес вашего экземпляра Ollama."
#: window.ui:440 #~ msgid "Save Changes"
msgid "_Clear Chat" #~ msgstr "Сохранить Изменения"
msgstr "_Очистить чат"
#: window.ui:444 #~ msgid "Do you want to save the URL change?"
msgid "_Change Server" #~ msgstr "Хотите сохранить изменение URL?"
msgstr "_Изменить Сервер"
#: window.ui:448 #~ msgid "Discard"
msgid "_About Alpaca" #~ msgstr "Отказаться"
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 "Изменить Сервер"
#~ msgctxt "shortcut window"
#~ msgid "General"
#~ msgstr "Общие"
#~ msgctxt "shortcut window"
#~ msgid "Show Shortcuts"
#~ msgstr "Показывать комбинации клавиш"
#~ msgctxt "shortcut window"
#~ msgid "Quit"
#~ msgstr "Выйти"

File diff suppressed because one or more lines are too long

View File

@@ -34,7 +34,7 @@ class AlpacaApplication(Adw.Application):
flags=Gio.ApplicationFlags.DEFAULT_FLAGS) flags=Gio.ApplicationFlags.DEFAULT_FLAGS)
self.create_action('quit', lambda *_: self.quit(), ['<primary>q']) self.create_action('quit', lambda *_: self.quit(), ['<primary>q'])
self.create_action('clear', lambda *_: AlpacaWindow.clear_chat_dialog(self.props.active_window), ['<primary>e']) self.create_action('clear', lambda *_: AlpacaWindow.clear_chat_dialog(self.props.active_window), ['<primary>e'])
self.create_action('reconnect', lambda *_: AlpacaWindow.show_connection_dialog(self.props.active_window), ['<primary>r']) self.create_action('preferences', lambda *_: AlpacaWindow.show_preferences_dialog(self.props.active_window), ['<primary>p'])
self.create_action('about', self.on_about_action) self.create_action('about', self.on_about_action)
def do_activate(self): def do_activate(self):
@@ -48,11 +48,11 @@ class AlpacaApplication(Adw.Application):
application_name='Alpaca', application_name='Alpaca',
application_icon='com.jeffser.Alpaca', application_icon='com.jeffser.Alpaca',
developer_name='Jeffry Samuel Eduarte Rojas', developer_name='Jeffry Samuel Eduarte Rojas',
version='0.5.1', version='0.6.0',
developers=['Jeffser https://jeffser.com'], developers=['Jeffser https://jeffser.com'],
designers=['Jeffser https://jeffser.com'], designers=['Jeffser https://jeffser.com'],
translator_credits='Alex K (Russian) https://github.com/alexkdeveloper', translator_credits='Alex K (Russian) https://github.com/alexkdeveloper\nJeffser (Spanish) https://jeffser.com',
copyright='© 2024 Jeffser', copyright='© 2024 Jeffser\n© 2024 Ollama',
issue_url='https://github.com/Jeffser/Alpaca/issues') issue_url='https://github.com/Jeffser/Alpaca/issues')
about.present(parent=self.props.active_window) about.present(parent=self.props.active_window)

View File

@@ -21,7 +21,8 @@ import gi
gi.require_version('GtkSource', '5') gi.require_version('GtkSource', '5')
gi.require_version('GdkPixbuf', '2.0') gi.require_version('GdkPixbuf', '2.0')
from gi.repository import Adw, Gtk, Gdk, GLib, GtkSource, Gio, GdkPixbuf from gi.repository import Adw, Gtk, Gdk, GLib, GtkSource, Gio, GdkPixbuf
import json, requests, threading, os, re, base64, sys, gettext, locale import json, requests, threading, os, re, base64, sys, gettext, locale, webbrowser, subprocess
from time import sleep
from io import BytesIO from io import BytesIO
from PIL import Image from PIL import Image
from datetime import datetime from datetime import datetime
@@ -30,7 +31,8 @@ from .available_models import available_models
@Gtk.Template(resource_path='/com/jeffser/Alpaca/window.ui') @Gtk.Template(resource_path='/com/jeffser/Alpaca/window.ui')
class AlpacaWindow(Adw.ApplicationWindow): class AlpacaWindow(Adw.ApplicationWindow):
config_dir = os.path.join(os.getenv("XDG_CONFIG_HOME"), "/", os.path.expanduser("~/.var/app/com.jeffser.Alpaca/config")) config_dir = os.getenv("XDG_CONFIG_HOME")
data_dir = os.getenv("XDG_DATA_HOME")
__gtype_name__ = 'AlpacaWindow' __gtype_name__ = 'AlpacaWindow'
localedir = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'locale') localedir = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'locale')
@@ -41,7 +43,12 @@ class AlpacaWindow(Adw.ApplicationWindow):
_ = gettext.gettext _ = gettext.gettext
#Variables #Variables
ollama_url = None run_on_background = False
ollama_url = ""
remote_url = ""
run_remote = False
local_ollama_port = 11435
local_ollama_instance = None
local_models = [] local_models = []
pulling_models = {} pulling_models = {}
chats = {"chats": {_("New Chat"): {"messages": []}}, "selected_chat": "New Chat"} chats = {"chats": {_("New Chat"): {"messages": []}}, "selected_chat": "New Chat"}
@@ -49,15 +56,15 @@ class AlpacaWindow(Adw.ApplicationWindow):
first_time_setup = False first_time_setup = False
#Elements #Elements
preferences_dialog = Gtk.Template.Child()
shortcut_window : Gtk.ShortcutsWindow = Gtk.Template.Child() shortcut_window : Gtk.ShortcutsWindow = Gtk.Template.Child()
bot_message : Gtk.TextBuffer = None bot_message : Gtk.TextBuffer = None
bot_message_box : Gtk.Box = None bot_message_box : Gtk.Box = None
bot_message_view : Gtk.TextView = None bot_message_view : Gtk.TextView = None
connection_dialog = Gtk.Template.Child() welcome_dialog = Gtk.Template.Child()
connection_carousel = Gtk.Template.Child() connection_carousel = Gtk.Template.Child()
connection_previous_button = Gtk.Template.Child() connection_previous_button = Gtk.Template.Child()
connection_next_button = Gtk.Template.Child() connection_next_button = Gtk.Template.Child()
connection_url_entry = Gtk.Template.Child()
main_overlay = Gtk.Template.Child() main_overlay = Gtk.Template.Child()
manage_models_overlay = Gtk.Template.Child() manage_models_overlay = Gtk.Template.Child()
connection_overlay = Gtk.Template.Child() connection_overlay = Gtk.Template.Child()
@@ -67,6 +74,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
send_button = Gtk.Template.Child() send_button = Gtk.Template.Child()
image_button = Gtk.Template.Child() image_button = Gtk.Template.Child()
file_filter_image = Gtk.Template.Child() file_filter_image = Gtk.Template.Child()
file_filter_json = Gtk.Template.Child()
model_drop_down = Gtk.Template.Child() model_drop_down = Gtk.Template.Child()
model_string_list = Gtk.Template.Child() model_string_list = Gtk.Template.Child()
@@ -78,9 +86,15 @@ class AlpacaWindow(Adw.ApplicationWindow):
chat_list_box = Gtk.Template.Child() chat_list_box = Gtk.Template.Child()
add_chat_button = Gtk.Template.Child() add_chat_button = Gtk.Template.Child()
export_chat_button = Gtk.Template.Child()
import_chat_button = Gtk.Template.Child()
loading_spinner = None loading_spinner = None
background_switch = Gtk.Template.Child()
remote_connection_switch = Gtk.Template.Child()
remote_connection_entry = Gtk.Template.Child()
toast_messages = { toast_messages = {
"error": [ "error": [
_("An error occurred"), _("An error occurred"),
@@ -89,15 +103,20 @@ class AlpacaWindow(Adw.ApplicationWindow):
_("Could not delete model"), _("Could not delete model"),
_("Could not pull model"), _("Could not pull model"),
_("Cannot open image"), _("Cannot open image"),
_("Cannot delete chat because it's the only one left") _("Cannot delete chat because it's the only one left"),
_("There was an error with the local Ollama instance, so it has been reset")
], ],
"info": [ "info": [
_("Please select a model before chatting"), _("Please select a model before chatting"),
_("Chat cannot be cleared while receiving a message") _("Chat cannot be cleared while receiving a message"),
_("That tag is already being pulled"),
_("That tag has been pulled alreay")
], ],
"good": [ "good": [
_("Model deleted successfully"), _("Model deleted successfully"),
_("Model pulled successfully") _("Model pulled successfully"),
_("Chat exported successfully"),
_("Chat imported successfully")
] ]
} }
@@ -186,6 +205,10 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.model_string_list.remove(i) self.model_string_list.remove(i)
if response['status'] == 'ok': if response['status'] == 'ok':
self.local_model_list_box.remove_all() self.local_model_list_box.remove_all()
if len(json.loads(response['text'])['models']) == 0:
self.local_model_list_box.set_visible(False)
else:
self.local_model_list_box.set_visible(True)
for model in json.loads(response['text'])['models']: for model in json.loads(response['text'])['models']:
model_row = Adw.ActionRow( model_row = Adw.ActionRow(
title = model["name"].split(":")[0], title = model["name"].split(":")[0],
@@ -207,14 +230,15 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.verify_if_image_can_be_used() self.verify_if_image_can_be_used()
return return
else: else:
self.show_connection_dialog(True) self.connection_error()
self.show_toast("error", 2, self.connection_overlay) self.show_toast("error", 2, self.connection_overlay)
def verify_connection(self): def verify_connection(self):
response = simple_get(self.ollama_url) response = simple_get(self.ollama_url)
if response['status'] == 'ok': if response['status'] == 'ok':
if "Ollama is running" in response['text']: if "Ollama is running" in response['text']:
with open(os.path.join(self.config_dir, "server.conf"), "w+") as f: f.write(self.ollama_url) 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': self.local_ollama_port, 'run_on_background': self.run_on_background}, f)
#self.message_text_view.grab_focus_without_selecting() #self.message_text_view.grab_focus_without_selecting()
self.update_list_local_models() self.update_list_local_models()
return True return True
@@ -333,6 +357,8 @@ class AlpacaWindow(Adw.ApplicationWindow):
GLib.idle_add(self.send_button.get_child().set_label, "Send") 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.send_button.get_child().set_icon_name, "send-to-symbolic")
GLib.idle_add(self.chat_list_box.set_sensitive, True) GLib.idle_add(self.chat_list_box.set_sensitive, True)
GLib.idle_add(self.export_chat_button.set_sensitive, True)
GLib.idle_add(self.import_chat_button.set_sensitive, True)
GLib.idle_add(self.add_chat_button.set_sensitive, True) GLib.idle_add(self.add_chat_button.set_sensitive, True)
if self.verify_if_image_can_be_used(): GLib.idle_add(self.image_button.set_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.set_css_classes, [])
@@ -341,7 +367,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
GLib.idle_add(self.message_text_view.set_sensitive, True) GLib.idle_add(self.message_text_view.set_sensitive, True)
if response['status'] == 'error': if response['status'] == 'error':
GLib.idle_add(self.show_toast, 'error', 1, self.connection_overlay) GLib.idle_add(self.show_toast, 'error', 1, self.connection_overlay)
GLib.idle_add(self.show_connection_dialog, True) GLib.idle_add(self.connection_error)
def send_message(self, button=None): def send_message(self, button=None):
if button and self.bot_message: #STOP BUTTON if button and self.bot_message: #STOP BUTTON
@@ -352,6 +378,8 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.attached_image = {"path": None, "base64": None} self.attached_image = {"path": None, "base64": None}
self.chat_list_box.set_sensitive(True) self.chat_list_box.set_sensitive(True)
self.add_chat_button.set_sensitive(True) self.add_chat_button.set_sensitive(True)
self.export_chat_button.set_sensitive(True)
self.import_chat_button.set_sensitive(True)
self.message_text_view.set_sensitive(True) self.message_text_view.set_sensitive(True)
self.send_button.set_css_classes(["suggested-action"]) self.send_button.set_css_classes(["suggested-action"])
self.send_button.get_child().set_label("Send") self.send_button.get_child().set_label("Send")
@@ -384,6 +412,8 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.send_button.get_child().set_icon_name("edit-delete-symbolic") self.send_button.get_child().set_icon_name("edit-delete-symbolic")
self.chat_list_box.set_sensitive(False) self.chat_list_box.set_sensitive(False)
self.add_chat_button.set_sensitive(False) self.add_chat_button.set_sensitive(False)
self.export_chat_button.set_sensitive(False)
self.import_chat_button.set_sensitive(False)
self.image_button.set_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.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.message_text_view.get_buffer().set_text("", 0)
@@ -402,29 +432,35 @@ class AlpacaWindow(Adw.ApplicationWindow):
else: else:
self.show_toast("error", 3, self.connection_overlay) self.show_toast("error", 3, self.connection_overlay)
self.manage_models_dialog.close() self.manage_models_dialog.close()
self.show_connection_dialog(True) self.connection_error()
def pull_model_update(self, data, model_name): def pull_model_update(self, data, model_name):
if model_name in list(self.pulling_models.keys()): 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].set_subtitle, data['status'] + (f" | {round(data['completed'] / data['total'] * 100, 2)}%" if 'completed' in data and 'total' in data else ""))
else: else:
if len(list(self.pulling_models.keys())) == 0:
GLib.idle_add(self.pulling_model_list_box.set_visible, False)
sys.exit() sys.exit()
def pull_model(self, model_name, tag): def pull_model(self, model_name, tag):
data = {"name":f"{model_name}:{tag}"} data = {"name":f"{model_name}:{tag}"}
response = stream_post(f"{self.ollama_url}/api/pull", data=json.dumps(data), callback=lambda data, model_name=f"{model_name}:{tag}": self.pull_model_update(data, model_name)) response = stream_post(f"{self.ollama_url}/api/pull", data=json.dumps(data), callback=lambda data, model_name=f"{model_name}:{tag}": self.pull_model_update(data, model_name))
GLib.idle_add(self.update_list_local_models) GLib.idle_add(self.update_list_local_models)
if response['status'] == 'ok': if response['status'] == 'ok':
GLib.idle_add(self.show_notification, _("Task Complete"), _("Model '{}' pulled successfully.").format(f"{model_name}:{tag}"), True, Gio.ThemedIcon.new("emblem-ok-symbolic")) GLib.idle_add(self.show_notification, _("Task Complete"), _("Model '{}' pulled successfully.").format(f"{model_name}:{tag}"), True, Gio.ThemedIcon.new("emblem-ok-symbolic"))
GLib.idle_add(self.show_toast, "good", 1, self.manage_models_overlay) GLib.idle_add(self.show_toast, "good", 1, self.manage_models_overlay)
GLib.idle_add(self.pulling_models[f"{model_name}:{tag}"].get_parent().remove, self.pulling_models[f"{model_name}:{tag}"]) GLib.idle_add(self.pulling_models[f"{model_name}:{tag}"].get_parent().remove, self.pulling_models[f"{model_name}:{tag}"])
del self.pulling_models[f"{model_name}:{tag}"] del self.pulling_models[f"{model_name}:{tag}"]
else: else:
GLib.idle_add(self.show_notification, _("Pull Model Error"), _("Failed to pull model '{}' due to network error.").format(f"{model_name}:{tag}"), True, Gio.ThemedIcon.new("dialog-error-symbolic")) GLib.idle_add(self.show_notification, _("Pull Model Error"), _("Failed to pull model '{}' due to network error.").format(f"{model_name}:{tag}"), True, Gio.ThemedIcon.new("dialog-error-symbolic"))
GLib.idle_add(self.show_toast, "error", 4, self.connection_overlay) GLib.idle_add(self.show_toast, "error", 4, self.connection_overlay)
GLib.idle_add(self.pulling_models[f"{model_name}:{tag}"].get_parent().remove, self.pulling_models[f"{model_name}:{tag}"])
del self.pulling_models[f"{model_name}:{tag}"]
GLib.idle_add(self.manage_models_dialog.close) GLib.idle_add(self.manage_models_dialog.close)
GLib.idle_add(self.show_connection_dialog, True) GLib.idle_add(self.connection_error)
if len(list(self.pulling_models.keys())) == 0:
GLib.idle_add(self.pulling_model_list_box.set_visible, False)
def stop_pull_model(self, dialog, task, model_name): def stop_pull_model(self, dialog, task, model_name):
if dialog.choose_finish(task) == "stop": if dialog.choose_finish(task) == "stop":
@@ -449,9 +485,14 @@ class AlpacaWindow(Adw.ApplicationWindow):
def pull_model_start(self, dialog, task, model_name, tag_drop_down): def pull_model_start(self, dialog, task, model_name, tag_drop_down):
if dialog.choose_finish(task) == "pull": if dialog.choose_finish(task) == "pull":
tag = tag_drop_down.get_selected_item().get_string() tag = tag_drop_down.get_selected_item().get_string()
if f"{model_name}:{tag}" in list(self.pulling_models.keys()): return ##TODO add message: 'already being pulled' if f"{model_name}:{tag}" in list(self.pulling_models.keys()):
if f"{model_name}:{tag}" in self.local_models: return ##TODO add message 'already pulled' self.show_toast("info", 3, self.manage_models_overlay)
return
if f"{model_name}:{tag}" in self.local_models:
self.show_toast("info", 4, self.manage_models_overlay)
return
#self.pull_model_status_page.set_description(f"{model_name}:{tag}") #self.pull_model_status_page.set_description(f"{model_name}:{tag}")
self.pulling_model_list_box.set_visible(True)
model_row = Adw.ActionRow( model_row = Adw.ActionRow(
title = f"{model_name}:{tag}", title = f"{model_name}:{tag}",
subtitle = "" subtitle = ""
@@ -511,17 +552,24 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.available_model_list_box.remove_all() self.available_model_list_box.remove_all()
for name, model_info in available_models.items(): for name, model_info in available_models.items():
model = Adw.ActionRow( model = Adw.ActionRow(
title = name, title = name
subtitle = model_info['description'],
) )
button = Gtk.Button( link_button = Gtk.Button(
icon_name = "web-browser-symbolic",
vexpand = False,
valign = 3,
css_classes = ["success"]
)
pull_button = Gtk.Button(
icon_name = "folder-download-symbolic", icon_name = "folder-download-symbolic",
vexpand = False, vexpand = False,
valign = 3, valign = 3,
css_classes = ["accent"] css_classes = ["accent"]
) )
button.connect("clicked", lambda button=button, model_name=name: self.model_pull_button_activate(model_name)) link_button.connect("clicked", lambda button=link_button, link=model_info["url"]: webbrowser.open(link))
model.add_suffix(button) pull_button.connect("clicked", lambda button=pull_button, model_name=name: self.model_pull_button_activate(model_name))
model.add_suffix(link_button)
model.add_suffix(pull_button)
self.available_model_list_box.append(model) self.available_model_list_box.append(model)
def manage_models_button_activate(self, button=None): def manage_models_button_activate(self, button=None):
@@ -540,20 +588,12 @@ class AlpacaWindow(Adw.ApplicationWindow):
def connection_next_button_activate(self, button): def connection_next_button_activate(self, button):
if button.get_label() == "Next": self.connection_carousel.scroll_to(self.connection_carousel.get_nth_page(self.connection_carousel.get_position()+1), True) if button.get_label() == "Next": self.connection_carousel.scroll_to(self.connection_carousel.get_nth_page(self.connection_carousel.get_position()+1), True)
else: else:
self.ollama_url = self.connection_url_entry.get_text()
if self.verify_connection(): if self.verify_connection():
self.connection_dialog.force_close() self.welcome_dialog.force_close()
else: else:
self.show_connection_dialog(True) self.connection_error()
self.show_toast("error", 1, self.connection_overlay) self.show_toast("error", 1, self.connection_overlay)
def show_connection_dialog(self, error:bool=False):
self.connection_carousel.scroll_to(self.connection_carousel.get_nth_page(self.connection_carousel.get_n_pages()-1),False)
if self.ollama_url is not None: self.connection_url_entry.set_text(self.ollama_url)
if error: self.connection_url_entry.set_css_classes(["error"])
else: self.connection_url_entry.set_css_classes([])
self.connection_dialog.present(self)
def clear_chat(self): def clear_chat(self):
for widget in list(self.chat_container): self.chat_container.remove(widget) for widget in list(self.chat_container): self.chat_container.remove(widget)
self.chats["chats"][self.chats["selected_chat"]]["messages"] = [] self.chats["chats"][self.chats["selected_chat"]]["messages"] = []
@@ -607,43 +647,6 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.chats = {"chats": {"New chat": {"messages": []}}, "selected_chat": "New chat"} self.chats = {"chats": {"New chat": {"messages": []}}, "selected_chat": "New chat"}
self.load_history_into_chat() self.load_history_into_chat()
def closing_connection_dialog_response(self, dialog, task):
result = dialog.choose_finish(task)
if result == "cancel": return
if result == "save":
self.ollama_url = self.connection_url_entry.get_text()
elif result == "discard" and self.ollama_url is None: self.destroy()
self.connection_dialog.force_close()
if self.ollama_url is None or self.verify_connection() == False:
self.show_connection_dialog(True)
self.show_toast("error", 1, self.connection_overlay)
def closing_connection_dialog(self, dialog):
if self.ollama_url is None or self.first_time_setup: self.destroy()
if self.ollama_url == self.connection_url_entry.get_text():
self.connection_dialog.force_close()
if self.ollama_url is None or self.verify_connection() == False:
self.show_connection_dialog(True)
self.show_toast("error", 1, self.connection_overlay)
else: self.first_time_setup = False
return
dialog = Adw.AlertDialog(
heading=_("Save Changes"),
body=_("Do you want to save the URL change?"),
close_response="cancel"
)
dialog.add_response("cancel", _("Cancel"))
dialog.add_response("discard", _("Discard"))
dialog.add_response("save", _("Save"))
dialog.set_response_appearance("discard", Adw.ResponseAppearance.DESTRUCTIVE)
dialog.set_response_appearance("save", Adw.ResponseAppearance.SUGGESTED)
dialog.choose(
parent = self,
cancellable = None,
callback = self.closing_connection_dialog_response
)
def load_image(self, file_dialog, result): def load_image(self, file_dialog, result):
try: file = file_dialog.open_finish(result) try: file = file_dialog.open_finish(result)
except: return except: return
@@ -799,7 +802,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
margin_top = 6, margin_top = 6,
margin_start = 6, margin_start = 6,
margin_end = 6, margin_end = 6,
css_classes = ["card"] css_classes = ["background"]
) )
button_delete = Gtk.Button( button_delete = Gtk.Button(
icon_name = "user-trash-symbolic", icon_name = "user-trash-symbolic",
@@ -831,14 +834,104 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.model_drop_down.set_selected(i) self.model_drop_down.set_selected(i)
break break
def show_preferences_dialog(self):
self.preferences_dialog.present(self)
def start_instance(self):
self.ollama_instance = subprocess.Popen(["/app/bin/ollama", "serve"], env={**os.environ, 'OLLAMA_HOST': f"127.0.0.1:{self.local_ollama_port}", "HOME": self.data_dir}, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
sleep(1)
while True:
err = self.ollama_instance.stderr.readline()
if err == '' and self.ollama_instance.poll() is not None:
break
if 'msg="inference compute"' in err: #Ollama outputs a line with this when it finishes loading, yeah
break
def stop_instance(self):
self.ollama_instance.kill()
def restart_instance(self):
if self.ollama_instance is not None: self.stop_instance()
start_instance(self)
def connection_error(self):
if self.run_remote:
self.preferences_dialog.present(self)
self.remote_connection_entry.set_css_classes(["error"])
self.show_toast("error", 1, self.preferences_dialog)
else:
self.restart_instance()
self.show_toast("error", 7, self.main_overlay)
def connection_switched(self):
new_value = self.remote_connection_switch.get_active()
if new_value != self.run_remote:
self.run_remote = new_value
if self.run_remote:
self.stop_instance()
if self.verify_connection() == False: self.connection_error()
else:
self.start_instance()
if self.verify_connection() == False: self.connection_error()
self.update_list_available_models()
self.update_list_local_models()
def change_remote_url(self, entry):
self.remote_url = entry.get_text()
if self.run_remote:
self.ollama_url = self.remote_url
if self.verify_connection() == False:
entry.set_css_classes(["error"])
self.show_toast("error", 1, self.preferences_dialog)
def on_replace_contents(self, file, result):
file.replace_contents_finish(result)
self.show_toast("good", 2, self.main_overlay)
def on_export_current_chat(self, file_dialog, result):
file = file_dialog.save_finish(result)
data_to_export = {self.chats["selected_chat"]: self.chats["chats"][self.chats["selected_chat"]]}
file.replace_contents_async(
json.dumps(data_to_export, indent=4).encode("UTF-8"),
etag=None,
make_backup=False,
flags=Gio.FileCreateFlags.NONE,
cancellable=None,
callback=self.on_replace_contents
)
def export_current_chat(self):
file_dialog = Gtk.FileDialog(initial_name=f"{self.chats['selected_chat']}.json")
file_dialog.save(parent=self, cancellable=None, callback=self.on_export_current_chat)
def on_chat_imported(self, file_dialog, result):
file = file_dialog.open_finish(result)
stream = file.read(None)
data_stream = Gio.DataInputStream.new(stream)
data, _ = data_stream.read_until('\0', None)
data = json.loads(data)
chat_name = list(data.keys())[0]
chat_content = data[chat_name]
self.chats['chats'][chat_name] = chat_content
self.update_chat_list()
self.save_history()
self.show_toast("good", 3, self.main_overlay)
def import_chat(self):
file_dialog = Gtk.FileDialog(default_filter=self.file_filter_json)
file_dialog.open(self, None, self.on_chat_imported)
def switch_run_on_background(self):
self.run_on_background = self.background_switch.get_active()
self.set_hide_on_close(self.run_on_background)
self.verify_connection()
def __init__(self, **kwargs): def __init__(self, **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
GtkSource.init() GtkSource.init()
self.set_help_overlay(self.shortcut_window) self.set_help_overlay(self.shortcut_window)
self.get_application().set_accels_for_action("win.show-help-overlay", ['<primary>slash']) self.get_application().set_accels_for_action("win.show-help-overlay", ['<primary>slash'])
self.get_application().create_action('send', lambda *_: self.send_message(self), ['<primary>Return']) self.get_application().create_action('send', lambda *_: self.send_message(self), ['<primary>Return'])
self.manage_models_button.connect("clicked", self.manage_models_button_activate) self.manage_models_button.connect("clicked", self.manage_models_button_activate)
self.send_button.connect("clicked", self.send_message) self.send_button.connect("clicked", self.send_message)
self.image_button.connect("clicked", self.open_image) self.image_button.connect("clicked", self.open_image)
@@ -846,19 +939,40 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.set_default_widget(self.send_button) self.set_default_widget(self.send_button)
self.model_drop_down.connect("notify", self.verify_if_image_can_be_used) self.model_drop_down.connect("notify", self.verify_if_image_can_be_used)
self.chat_list_box.connect("row-selected", self.chat_changed) self.chat_list_box.connect("row-selected", self.chat_changed)
#self.message_text_view.set_activates_default(self.send_button)
self.connection_carousel.connect("page-changed", self.connection_carousel_page_changed) self.connection_carousel.connect("page-changed", self.connection_carousel_page_changed)
self.connection_previous_button.connect("clicked", self.connection_previous_button_activate) self.connection_previous_button.connect("clicked", self.connection_previous_button_activate)
self.connection_next_button.connect("clicked", self.connection_next_button_activate) self.connection_next_button.connect("clicked", self.connection_next_button_activate)
self.connection_url_entry.connect("changed", lambda entry: entry.set_css_classes([]))
self.connection_dialog.connect("close-attempt", self.closing_connection_dialog) self.export_chat_button.connect("clicked", lambda button : self.export_current_chat())
self.load_history() self.import_chat_button.connect("clicked", lambda button : self.import_chat())
if os.path.exists(os.path.join(self.config_dir, "server.conf")): #Preferences
with open(os.path.join(self.config_dir, "server.conf"), "r") as f: self.remote_connection_entry.connect("entry-activated", lambda entry : entry.set_css_classes([]))
self.ollama_url = f.read() self.remote_connection_entry.connect("apply", self.change_remote_url)
if self.verify_connection() is False: self.show_connection_dialog(True) self.remote_connection_switch.connect("notify", lambda pspec, user_data : self.connection_switched())
self.background_switch.connect("notify", lambda pspec, user_data : self.switch_run_on_background())
if os.path.exists(os.path.join(self.config_dir, "server.json")):
with open(os.path.join(self.config_dir, "server.json"), "r") as f:
data = json.load(f)
self.run_remote = data['run_remote']
self.local_ollama_port = data['local_port']
self.remote_url = data['remote_url']
self.run_on_background = data['run_on_background']
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)
if self.run_remote:
self.remote_connection_switch.set_active(True)
self.ollama_url = data['remote_url']
else:
self.remote_connection_switch.set_active(False)
self.ollama_url = f"http://127.0.0.1:{self.local_ollama_port}"
self.start_instance()
else: else:
self.start_instance()
self.ollama_url = f"http://127.0.0.1:{self.local_ollama_port}"
self.first_time_setup = True self.first_time_setup = True
self.connection_dialog.present(self) self.welcome_dialog.present(self)
if self.verify_connection() is False: self.connection_error()
self.update_list_available_models() self.update_list_available_models()
self.load_history()
self.update_chat_list() self.update_chat_list()

View File

@@ -5,7 +5,7 @@
<template class="AlpacaWindow" parent="AdwApplicationWindow"> <template class="AlpacaWindow" parent="AdwApplicationWindow">
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="width-request">350</property> <property name="width-request">350</property>
<property name="height-request">500</property> <property name="height-request">700</property>
<property name="default-width">1300</property> <property name="default-width">1300</property>
<property name="default-height">800</property> <property name="default-height">800</property>
<child> <child>
@@ -20,18 +20,10 @@
<object class="AdwBreakpoint"> <object class="AdwBreakpoint">
<condition>max-width: 500sp</condition> <condition>max-width: 500sp</condition>
<setter object="split_view_overlay" property="collapsed">true</setter> <setter object="split_view_overlay" property="collapsed">true</setter>
<setter object="connection_dialog" property="width-request">400</setter> <setter object="welcome_dialog" property="width-request">300</setter>
<setter object="connection_dialog" property="height-request">400</setter> <setter object="welcome_dialog" property="height-request">300</setter>
<setter object="manage_models_dialog" property="width-request">400</setter>
</object>
</child>
<child>
<object class="AdwBreakpoint">
<condition>max-width: 400sp</condition>
<setter object="split_view_overlay" property="collapsed">true</setter>
<setter object="connection_dialog" property="width-request">300</setter>
<setter object="connection_dialog" property="height-request">300</setter>
<setter object="manage_models_dialog" property="width-request">300</setter> <setter object="manage_models_dialog" property="width-request">300</setter>
<setter object="preferences_dialog" property="width-request">300</setter>
</object> </object>
</child> </child>
<property name="content"> <property name="content">
@@ -42,13 +34,12 @@
<property name="sidebar"> <property name="sidebar">
<object class="GtkBox"> <object class="GtkBox">
<property name="spacing">12</property> <property name="spacing">12</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="orientation">1</property> <property name="orientation">1</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="margin-top">12</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="spacing">12</property> <property name="spacing">12</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
@@ -60,6 +51,32 @@
</style> </style>
</object> </object>
</child> </child>
<child>
<object class="GtkButton" id="import_chat_button">
<property name="tooltip-text" translatable="yes">Import chat</property>
<style>
<class name="flat"/>
</style>
<child>
<object class="AdwButtonContent">
<property name="icon-name">document-open-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkButton" id="export_chat_button">
<property name="tooltip-text" translatable="yes">Export chat</property>
<style>
<class name="flat"/>
</style>
<child>
<object class="AdwButtonContent">
<property name="icon-name">folder-download-symbolic</property>
</object>
</child>
</object>
</child>
<child> <child>
<object class="GtkButton" id="add_chat_button"> <object class="GtkButton" id="add_chat_button">
<property name="tooltip-text" translatable="yes">New chat</property> <property name="tooltip-text" translatable="yes">New chat</property>
@@ -83,7 +100,7 @@
<object class="GtkListBox" id="chat_list_box"> <object class="GtkListBox" id="chat_list_box">
<property name="selection-mode">single</property> <property name="selection-mode">single</property>
<style> <style>
<class name="boxed-list"/> <class name="navigation-sidebar"></class>
</style> </style>
</object> </object>
</child> </child>
@@ -151,7 +168,6 @@
<child> <child>
<object class="GtkScrolledWindow" id="chat_window"> <object class="GtkScrolledWindow" id="chat_window">
<property name="margin-bottom">12</property> <property name="margin-bottom">12</property>
<property name="has-frame">true</property>
<property name="propagate-natural-height">true</property> <property name="propagate-natural-height">true</property>
<property name="kinetic-scrolling">1</property> <property name="kinetic-scrolling">1</property>
<property name="vexpand">true</property> <property name="vexpand">true</property>
@@ -243,6 +259,46 @@
</child> </child>
</object> </object>
</property> </property>
<object class="AdwPreferencesDialog" id="preferences_dialog">
<property name="can-close">true</property>
<property name="width-request">400</property>
<property name="height-request">600</property>
<property name="title" translatable="yes">Preferences</property>
<child>
<object class="AdwPreferencesPage" id="connection_page">
<property name="title" translatable="yes">General</property>
<property name="icon-name">insert-link-symbolic</property>
<child>
<object class="AdwPreferencesGroup">
<property name="title" translatable="yes">Remote Connection</property>
<property name="description" translatable="yes">Manage a remote connection to Ollama</property>
<child>
<object class="AdwSwitchRow" id="remote_connection_switch">
<property name="title" translatable="yes">Use remote connection</property>
</object>
</child>
<child>
<object class="AdwEntryRow" id="remote_connection_entry">
<property name="title" translatable="yes">URL of remote instance</property>
<property name="show-apply-button">true</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup">
<property name="title" translatable="yes">Behavior</property>
<property name="description" translatable="yes">Manage Alpaca's Behavior</property>
<child>
<object class="AdwSwitchRow" id="background_switch">
<property name="title" translatable="yes">Run in background</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
<object class="AdwDialog" id="manage_models_dialog"> <object class="AdwDialog" id="manage_models_dialog">
<property name="can-close">true</property> <property name="can-close">true</property>
@@ -265,26 +321,21 @@
<object class="GtkScrolledWindow"> <object class="GtkScrolledWindow">
<property name="hexpand">true</property> <property name="hexpand">true</property>
<property name="vexpand">true</property> <property name="vexpand">true</property>
<property name="margin-top">0</property>
<property name="margin-bottom">24</property>
<property name="margin-start">24</property>
<property name="margin-end">24</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">12</property>
<property name="margin-bottom">12</property>
<property name="orientation">1</property> <property name="orientation">1</property>
<property name="spacing">12</property> <property name="spacing">12</property>
<child> <child>
<object class="GtkListBox" id="pulling_model_list_box"> <object class="GtkListBox" id="pulling_model_list_box">
<property name="visible">false</property>
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<style> <style>
<class name="boxed-list"/> <class name="boxed-list"/>
</style> <class name="card"/>
</object>
</child>
<child>
<object class="GtkSeparator">
<style>
<class name="spacer"/>
</style> </style>
</object> </object>
</child> </child>
@@ -293,13 +344,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<style> <style>
<class name="boxed-list"/> <class name="boxed-list"/>
</style> <class name="card"/>
</object>
</child>
<child>
<object class="GtkSeparator">
<style>
<class name="spacer"/>
</style> </style>
</object> </object>
</child> </child>
@@ -321,7 +366,7 @@
</child> </child>
</object> </object>
<object class="AdwDialog" id="connection_dialog"> <object class="AdwDialog" id="welcome_dialog">
<property name="can-close">false</property> <property name="can-close">false</property>
<property name="width-request">450</property> <property name="width-request">450</property>
<property name="height-request">450</property> <property name="height-request">450</property>
@@ -329,10 +374,6 @@
<object class="AdwToastOverlay" id="connection_overlay"> <object class="AdwToastOverlay" id="connection_overlay">
<child> <child>
<object class="AdwToolbarView"> <object class="AdwToolbarView">
<child type="top">
<object class="AdwHeaderBar">
</object>
</child>
<child type="bottom"> <child type="bottom">
<object class="GtkActionBar"> <object class="GtkActionBar">
<property name="hexpand">true</property> <property name="hexpand">true</property>
@@ -383,7 +424,7 @@
<property name="margin-end">12</property> <property name="margin-end">12</property>
<property name="icon-name">com.jeffser.Alpaca</property> <property name="icon-name">com.jeffser.Alpaca</property>
<property name="title" translatable="yes">Welcome to Alpaca</property> <property name="title" translatable="yes">Welcome to Alpaca</property>
<property name="description" translatable="yes">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.</property> <property name="description" translatable="yes">Powered by Ollama</property>
<child> <child>
<object class="GtkLinkButton"> <object class="GtkLinkButton">
<property name="label" translatable="yes">Ollama Website</property> <property name="label" translatable="yes">Ollama Website</property>
@@ -406,24 +447,6 @@
<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> <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> </object>
</child> </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="icon-name">preferences-other-symbolic</property>
<property name="title" translatable="yes">Setup</property>
<property name="description" translatable="yes">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.</property>
<child>
<object class="GtkEntry" id="connection_url_entry">
<property name="text">http://localhost:11434</property>
</object>
</child>
</object>
</child>
</object> </object>
</child> </child>
</object> </object>
@@ -440,8 +463,8 @@
<attribute name="action">app.clear</attribute> <attribute name="action">app.clear</attribute>
</item> </item>
<item> <item>
<attribute name="label" translatable="yes">Change Server</attribute> <attribute name="label" translatable="yes">Preferences</attribute>
<attribute name="action">app.reconnect</attribute> <attribute name="action">app.preferences</attribute>
</item> </item>
<item> <item>
<attribute name="label" translatable="yes">Keyboard Shortcuts</attribute> <attribute name="label" translatable="yes">Keyboard Shortcuts</attribute>
@@ -462,6 +485,11 @@
<mime-type>image/gif</mime-type> <mime-type>image/gif</mime-type>
</mime-types> </mime-types>
</object> </object>
<object class="GtkFileFilter" id="file_filter_json">
<mime-types>
<mime-type>application/json</mime-type>
</mime-types>
</object>
<object class="GtkShortcutsWindow" id="shortcut_window"> <object class="GtkShortcutsWindow" id="shortcut_window">
<property name="modal">1</property> <property name="modal">1</property>
<child> <child>
@@ -485,8 +513,8 @@
</child> </child>
<child> <child>
<object class="GtkShortcutsShortcut"> <object class="GtkShortcutsShortcut">
<property name="accelerator">&lt;ctrl&gt;R</property> <property name="accelerator">&lt;ctrl&gt;P</property>
<property name="title" translatable="yes">Change server</property> <property name="title" translatable="yes">Preferences</property>
</object> </object>
</child> </child>
<child> <child>
@@ -524,3 +552,4 @@
</child> </child>
</object> </object>
</interface> </interface>