Compare commits
138 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
bd177b73fb
|
|||
|
d42c0265b5
|
|||
|
455370416f
|
|||
|
0ef94b2036
|
|||
|
62bba52dd2
|
|||
|
6cf10e6f2e
|
|||
|
|
22ca867a65 | ||
|
aa5c6bbfd9
|
|||
|
28de905b19
|
|||
|
b2fd2566ab
|
|||
|
e306d8dd2d
|
|||
|
f71124df62
|
|||
|
f31e9ff99c
|
|||
|
2d33daf998
|
|||
|
243910c5c0
|
|||
|
|
acf8560f11 | ||
|
|
fc023a3b4c | ||
|
50aee8c31b
|
|||
|
|
4f9e72654b | ||
|
|
5a1aef99be | ||
|
|
d507ef3cbc | ||
|
|
e018ebd8d2 | ||
|
b5d762b6e6
|
|||
|
1aef1494f6
|
|||
|
17169e979b
|
|||
|
|
8fd7cf8c68 | ||
|
|
7957bde4bb | ||
|
|
ad26e0c93c | ||
|
|
e4dc8faba1 | ||
|
|
843a5191b2 | ||
|
|
ecf33ae506 | ||
|
|
8d106ee69e | ||
|
9beb360bfd
|
|||
|
2374531f7b
|
|||
|
aca1434491
|
|||
|
48547c53a0
|
|||
|
d8cca9f7a2
|
|||
|
7f860e4ac1
|
|||
|
|
64e9d63836 | ||
|
|
2d95d2cd56 | ||
|
|
9ff00cbedc | ||
|
|
4429ea2fdb | ||
|
|
669a8ebd2d | ||
|
|
3a297e2b50 | ||
|
|
d7ad7f1886 | ||
|
|
fc60c0456c | ||
|
|
6b7f246195 | ||
|
|
bd4df4efee | ||
|
|
3996d149ee | ||
|
|
1291a29065 | ||
|
|
386c8ac23a | ||
|
c4563aa5ca
|
|||
|
73b6dd33c0
|
|||
|
da8a92acd5
|
|||
|
f7442dfe71
|
|||
|
7870cfc843
|
|||
|
fc376539f8
|
|||
|
|
a8515fd9a3 | ||
|
|
cb928759ac | ||
| a546588be1 | |||
|
|
8921c25fbb | ||
|
|
874bef8470 | ||
|
|
c5b74d4c97 | ||
|
|
d978ed9e67 | ||
| 5c5c0b2430 | |||
|
|
3c4c66dda6 | ||
|
|
4cb3e01d37 | ||
|
|
5489976256 | ||
|
|
19ec1e642f | ||
|
|
e1162292ab | ||
|
|
196a44c268 | ||
|
|
763e30f7e2 | ||
|
|
26386b3f71 | ||
|
|
64f67b3f58 | ||
|
|
e43e2c58b7 | ||
|
|
3baeaab7d4 | ||
| a48d59bf95 | |||
| 5c8a1f9e04 | |||
|
|
1d506a67ed | ||
|
|
484c288202 | ||
|
|
b078c778c5 | ||
|
|
18b66df198 | ||
|
|
679376336d | ||
|
|
a0a2ff1c6a | ||
|
|
09affee2e0 | ||
|
|
fc1852569b | ||
|
|
f8d9f28044 | ||
|
c215c33777
|
|||
|
fa998584c7
|
|||
|
98a8e86737
|
|||
|
85147ae859
|
|||
|
11b3e79234
|
|||
|
|
c65f3b4c11 | ||
|
|
ee60be4956 | ||
|
|
6cafd698e1 | ||
|
|
ee7bec5ac7 | ||
| ed2997f223 | |||
|
|
20f11281bf | ||
|
|
e022bbe822 | ||
|
|
0988fd4154 | ||
|
112e9384c3
|
|||
|
|
9271f1976c | ||
|
|
c0d4a3a951 | ||
|
26b45cdd0d
|
|||
|
65166a967e
|
|||
|
5a855e3236
|
|||
|
f47b690f5b
|
|||
|
6ef07107fe
|
|||
|
5e5c689743
|
|||
|
0f7910eb6a
|
|||
|
71ec315941
|
|||
|
127350cd95
|
|||
|
|
886b18491c | ||
|
a942965a45
|
|||
|
fdb908793e
|
|||
|
67e83a4fb5
|
|||
|
ab7010a8db
|
|||
|
9505d22f66
|
|||
|
088ee95a52
|
|||
|
08152e750d
|
|||
| 28d6e5b8fc | |||
| 045a325fbf | |||
| 349a67da19 | |||
| b4d839ab8a | |||
| 264358a2b2 | |||
| c3f2210d5a | |||
|
|
653fa25836 | ||
| 81a793886e | |||
| bf3facb551 | |||
| 781aed2132 | |||
| 8abbc26560 | |||
| 377469256c | |||
| ef35df04b5 | |||
| 9a376e126a | |||
| 4647be9b03 | |||
| f9fdb42c60 | |||
| 2f4297c344 | |||
| 441f510c0b |
17
.github/ISSUE_TEMPLATE/bug_report.md
vendored
17
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -23,16 +23,15 @@ A clear and concise description of what you expected to happen.
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. iOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
**Environement**
|
||||
Please past the content of About > Troubleshooting > Debugging Information
|
||||
|
||||
**Smartphone (please complete the following information):**
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Browser [e.g. stock browser, safari]
|
||||
- Version [e.g. 22]
|
||||
io.github.Bavarder.Bavarder ...
|
||||
Environment: ...
|
||||
Gtk: ...
|
||||
Python: ...
|
||||
OS: Linux ...
|
||||
Providers: ['baichat', 'catgpt', 'huggingchat', 'openaigpt35turbo', 'openaigpt4', ...]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
|
||||
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -10,11 +10,11 @@ jobs:
|
||||
name: Flatpak
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: bilelmoussaoui/flatpak-github-actions:gnome-nightly
|
||||
image: bilelmoussaoui/flatpak-github-actions:gnome-44
|
||||
options: --privileged
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x86_64, aarch64]
|
||||
arch: [x86_64]
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
platforms: arm64
|
||||
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
||||
with:
|
||||
repository-name: gnome-nightly
|
||||
repository-name: gnome-44
|
||||
bundle: bavarder.flatpak
|
||||
manifest-path: build-aux/flatpak/io.github.Bavarder.Bavarder.json
|
||||
cache-key: flatpak-builder-${{ github.sha }}
|
||||
|
||||
34
README.md
34
README.md
@@ -6,12 +6,12 @@
|
||||
</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Chit-chat with GPT</strong>
|
||||
<strong>Chit-chat with an AI</strong>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://flathub.org/apps/details/io.github.Bavarder.Bavarder">
|
||||
<img width="200" alt="Download on Flathub" src="https://dl.flathub.org/assets/badges/flathub-badge-i-en.svg"/>
|
||||
<img width="200" alt="Download on Flathub" src="https://dl.flathub.org/assets/badges/flathub-badge-en.svg"/>
|
||||
</a>
|
||||
<br>
|
||||
</p>
|
||||
@@ -22,9 +22,6 @@
|
||||
<a href="https://translate.codeberg.org/engage/bavarder/">
|
||||
<img src="https://translate.codeberg.org/widgets/bavarder/-/svg-badge.svg" alt="Translation status" />
|
||||
</a>
|
||||
<a href="https://github.com/Bavarder/Bavarder/actions/workflows/build.yml">
|
||||
<img alt="Build status" src="https://github.com/GradienceTeam/Gradience/actions/workflows/build.yml/badge.svg"/>
|
||||
</a>
|
||||
<a href="https://repology.org/project/bavarder/versions">
|
||||
<img alt="Packaging status" src="https://repology.org/badge/tiny-repos/bavarder.svg">
|
||||
</a>
|
||||
@@ -40,18 +37,32 @@
|
||||
<img src="./data/screenshots/quantum-computing.png" alt="Preview"/>
|
||||
</p>
|
||||
|
||||
## About the name
|
||||
|
||||
Bavarder is a french word, the definiton of Bavarder is "Parler abondamment de choses sans grande portée" (Talking a lot about things that don't matter) (Larousse) which can be translated by Chit-Chat (informal conversation about matters that are not important). For non-french speakers, Bavarder can be hard to speak, it's prounouced as [bavaʀde]. Hear [here](https://youtu.be/9Qoogwxo5YA)
|
||||
|
||||
## Installation
|
||||
|
||||
### Flatpak
|
||||
|
||||
#### Flathub
|
||||
|
||||
You can either use your GNOME Software and search for "Bavarder" or you can run
|
||||
|
||||
``` shell
|
||||
flatpak install io.github.Bavarder.Bavarder
|
||||
```
|
||||
|
||||
#### Latest build
|
||||
|
||||
You can download the latest Flatpak build from [Github Actions](https://github.com/Bavarder/Bavarder/actions/workflows/build.yml). Click on the latest job and download the artifact.
|
||||
|
||||
#### From Source
|
||||
|
||||
Clone the repo and run `flatpak-builder`
|
||||
|
||||
```
|
||||
git clone https://github.com/Bavarder/Bavarder
|
||||
``` shell
|
||||
git clone https://codeberg.org/Bavarder/Bavarder # or https://github.com/Bavarder/Bavarder
|
||||
cd Bavarder
|
||||
flatpak-builder --install --user --force-clean repo/ build-aux/flatpak/io.github.Bavarder.Bavarder.json
|
||||
```
|
||||
@@ -67,3 +78,12 @@ The [GNOME Code of Conduct](https://wiki.gnome.org/Foundation/CodeOfConduct) is
|
||||
</a>
|
||||
|
||||
You can translate Bavarder using Codeberg Translate
|
||||
|
||||
## See also
|
||||
|
||||
### Imaginer : Imagine with AI
|
||||
|
||||
A tool for generating pictures with AI (GNOME app)
|
||||
|
||||
- https://github.com/ImaginerApp/Imaginer
|
||||
- https://codeberg.org/Imaginer/Imaginer
|
||||
|
||||
30
SEEN.md
Normal file
30
SEEN.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Where Bavarder has been saw
|
||||
|
||||
## Press
|
||||
|
||||
- https://www.omgubuntu.co.uk/2023/05/bavarder-chatgpt-linux-app
|
||||
- https://gnulinux.ch/bavarder-chatgpt-ohne-account
|
||||
- https://infoidevice.fr/bavarder-application-chatgpt-linux/
|
||||
- https://sempreupdate.com.br/como-instalar-o-chat-bavarder-no-linux/
|
||||
|
||||
## Youtube
|
||||
|
||||
- https://youtu.be/dtAi2ejMwrk
|
||||
|
||||
## Fediverse
|
||||
|
||||
- https://bassam.social/notice/AVII4g9FPM0sD1bMWW
|
||||
- https://pleroma.destroyallmachines.net/notice/AVHg9tnvMACshmHJL6
|
||||
- https://floss.social/@omgubuntu/110304976747139717
|
||||
|
||||
## Twitter
|
||||
|
||||
- https://twitter.com/omgubuntu/status/1653752319660417024
|
||||
- https://twitter.com/linuxern00b/status/1653754427373936645
|
||||
- https://twitter.com/infoidevice/status/1653996236461023232
|
||||
- https://twitter.com/search?q=bavarder%20linux&src=typed_query&f=top
|
||||
|
||||
## Misc
|
||||
|
||||
- https://alternativeto.net/software/bavarder/
|
||||
- https://linuxphoneapps.org/apps/io.github.bavarder.bavarder/
|
||||
@@ -5,7 +5,7 @@
|
||||
xmlns="http://usefulinc.com/ns/doap#">
|
||||
|
||||
<name xml:lang="en">Bavarder</name>
|
||||
<shortdesc xml:lang="en">Chit-chat with GPT</shortdesc>
|
||||
<shortdesc xml:lang="en">Chit-chat with an AI</shortdesc>
|
||||
<homepage rdf:resource="https://github.com/Bavarder/Bavarder" />
|
||||
<bug-database rdf:resource="https://github.com/Bavarder/Bavarder/issues"/>
|
||||
<programming-language>Python</programming-language>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"app-id" : "io.github.Bavarder.Bavarder",
|
||||
"runtime" : "org.gnome.Platform",
|
||||
"runtime-version" : "master",
|
||||
"runtime-version" : "44",
|
||||
"sdk" : "org.gnome.Sdk",
|
||||
"command" : "bavarder",
|
||||
"finish-args" : [
|
||||
|
||||
@@ -1,59 +1,272 @@
|
||||
{
|
||||
"name": "python3-baichat-py",
|
||||
"name": "pypi-dependencies",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"baichat-py\" --no-build-isolation"
|
||||
],
|
||||
"sources": [
|
||||
"build-commands": [],
|
||||
"modules": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/c2/fd/1ff4da09ca29d8933fda3f3514980357e25419ce5e0f689041edb8f17dab/aiohttp-3.8.4.tar.gz",
|
||||
"sha256": "bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c"
|
||||
"name": "python3-baichat-py",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"baichat-py\" --no-build-isolation"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/c2/fd/1ff4da09ca29d8933fda3f3514980357e25419ce5e0f689041edb8f17dab/aiohttp-3.8.4.tar.gz",
|
||||
"sha256": "bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl",
|
||||
"sha256": "f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/d6/c1/8991e7c5385b897b8c020cdaad718c5b087a6626d1d11a23e1ea87e325a7/async_timeout-4.0.2-py3-none-any.whl",
|
||||
"sha256": "8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl",
|
||||
"sha256": "1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/f5/ba/2b3ff0140b714149b4ee0c3af857f5e9b5fecd0d877370ea89351c21f433/baichat_py-0.2.1-py3-none-any.whl",
|
||||
"sha256": "af5e83d813b93b249009da35fbb6cfcea8c65ee36fa0102e3ed7340d90804391"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
|
||||
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/e9/10/d629476346112b85c912527b9080944fd2c39a816c2225413dbc0bb6fcc0/frozenlist-1.3.3.tar.gz",
|
||||
"sha256": "58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
|
||||
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/4a/15/bd620f7a6eb9aa5112c4ef93e7031bcd071e0611763d8e17706ef8ba65e0/multidict-6.0.4.tar.gz",
|
||||
"sha256": "3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/5f/3f/04b3c5e57844fb9c034b09c5cb6d2b43de5d64a093c30529fd233e16cf09/yarl-1.9.2.tar.gz",
|
||||
"sha256": "04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl",
|
||||
"sha256": "f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"
|
||||
"name": "python3-hgchat",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"hgchat\" --no-build-isolation"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
|
||||
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
|
||||
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/a2/d2/8847383637ae526c6b072356bc1c7d9e7e34040b3acf27c0ec529885ac3d/hgchat-0.1.2-py3-none-any.whl",
|
||||
"sha256": "fb0699dff7ab9ed208e6801c5e558f7c62422c630f5976062bf75e0580c20f83"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
|
||||
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/96/80/034ffeca15c0f4e01b7b9c6ad0fb704b44e190cde4e757edbd60be404c41/requests-2.30.0-py3-none-any.whl",
|
||||
"sha256": "10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl",
|
||||
"sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/4b/1d/f8383ef593114755429c307449e7717b87044b3bcd5f7860b89b1f759e34/urllib3-2.0.2-py3-none-any.whl",
|
||||
"sha256": "d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/d6/c1/8991e7c5385b897b8c020cdaad718c5b087a6626d1d11a23e1ea87e325a7/async_timeout-4.0.2-py3-none-any.whl",
|
||||
"sha256": "8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"
|
||||
"name": "python3-gTTS",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"gTTS\" --no-build-isolation"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
|
||||
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
|
||||
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/c2/f1/df59e28c642d583f7dacffb1e0965d0e00b218e0186d7858ac5233dce840/click-8.1.3-py3-none-any.whl",
|
||||
"sha256": "bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/98/da/4b8bb016aca4abebe5b582ce1b17604a1d9bc91499ac2214e1fa250f69b6/gTTS-2.3.2-py3-none-any.whl",
|
||||
"sha256": "9132e409603f34d5023458e3e10ce2f5df55498d7a2ee781c9adbe616fbd4152"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
|
||||
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/96/80/034ffeca15c0f4e01b7b9c6ad0fb704b44e190cde4e757edbd60be404c41/requests-2.30.0-py3-none-any.whl",
|
||||
"sha256": "10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/4b/1d/f8383ef593114755429c307449e7717b87044b3bcd5f7860b89b1f759e34/urllib3-2.0.2-py3-none-any.whl",
|
||||
"sha256": "d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl",
|
||||
"sha256": "1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"
|
||||
"name": "python3-openai",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"openai\" --no-build-isolation"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/c2/fd/1ff4da09ca29d8933fda3f3514980357e25419ce5e0f689041edb8f17dab/aiohttp-3.8.4.tar.gz",
|
||||
"sha256": "bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl",
|
||||
"sha256": "f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/d6/c1/8991e7c5385b897b8c020cdaad718c5b087a6626d1d11a23e1ea87e325a7/async_timeout-4.0.2-py3-none-any.whl",
|
||||
"sha256": "8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl",
|
||||
"sha256": "1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
|
||||
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
|
||||
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/e9/10/d629476346112b85c912527b9080944fd2c39a816c2225413dbc0bb6fcc0/frozenlist-1.3.3.tar.gz",
|
||||
"sha256": "58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
|
||||
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/4a/15/bd620f7a6eb9aa5112c4ef93e7031bcd071e0611763d8e17706ef8ba65e0/multidict-6.0.4.tar.gz",
|
||||
"sha256": "3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/9f/87/838149e472c58a141fa81e2eb4cc8828cb134054b59d67637031985ca770/openai-0.27.6-py3-none-any.whl",
|
||||
"sha256": "1f07ed06f1cfc6c25126107193726fe4cf476edcc4e1485cd9eb708f068f2606"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/96/80/034ffeca15c0f4e01b7b9c6ad0fb704b44e190cde4e757edbd60be404c41/requests-2.30.0-py3-none-any.whl",
|
||||
"sha256": "10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/e6/02/a2cff6306177ae6bc73bc0665065de51dfb3b9db7373e122e2735faf0d97/tqdm-4.65.0-py3-none-any.whl",
|
||||
"sha256": "c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/4b/1d/f8383ef593114755429c307449e7717b87044b3bcd5f7860b89b1f759e34/urllib3-2.0.2-py3-none-any.whl",
|
||||
"sha256": "d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/5f/3f/04b3c5e57844fb9c034b09c5cb6d2b43de5d64a093c30529fd233e16cf09/yarl-1.9.2.tar.gz",
|
||||
"sha256": "04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/f5/ba/2b3ff0140b714149b4ee0c3af857f5e9b5fecd0d877370ea89351c21f433/baichat_py-0.2.1-py3-none-any.whl",
|
||||
"sha256": "af5e83d813b93b249009da35fbb6cfcea8c65ee36fa0102e3ed7340d90804391"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
|
||||
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/e9/10/d629476346112b85c912527b9080944fd2c39a816c2225413dbc0bb6fcc0/frozenlist-1.3.3.tar.gz",
|
||||
"sha256": "58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
|
||||
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/4a/15/bd620f7a6eb9aa5112c4ef93e7031bcd071e0611763d8e17706ef8ba65e0/multidict-6.0.4.tar.gz",
|
||||
"sha256": "3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/5f/3f/04b3c5e57844fb9c034b09c5cb6d2b43de5d64a093c30529fd233e16cf09/yarl-1.9.2.tar.gz",
|
||||
"sha256": "04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"
|
||||
"name": "python3-googlebardpy",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"googlebardpy\" --no-build-isolation"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
|
||||
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
|
||||
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/a8/40/30a6440d5ceec49fc268710705b89e654fc854d9b8754850228deaf64892/googlebardpy-0.1.0-py3-none-any.whl",
|
||||
"sha256": "12e65fdfe99392cbb5e8f93572340b757cd9d7aa83391316eaea3a1527995ef2"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
|
||||
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/96/80/034ffeca15c0f4e01b7b9c6ad0fb704b44e190cde4e757edbd60be404c41/requests-2.30.0-py3-none-any.whl",
|
||||
"sha256": "10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/4b/1d/f8383ef593114755429c307449e7717b87044b3bcd5f7860b89b1f759e34/urllib3-2.0.2-py3-none-any.whl",
|
||||
"sha256": "d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,44 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop">
|
||||
<id>io.github.Bavarder.Bavarder.desktop</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0-or-later</project_license>
|
||||
<id>io.github.Bavarder.Bavarder</id>
|
||||
<name>Bavarder</name>
|
||||
<summary>Chit-chat with GPT</summary>
|
||||
<summary>Chit-chat with an AI</summary>
|
||||
<developer_name>0xMRTT</developer_name>
|
||||
<content_rating type="oars-1.1"/>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0-or-later</project_license>
|
||||
<launchable type="desktop-id">io.github.Bavarder.Bavarder.desktop</launchable>
|
||||
<content_rating type="oars-1.1"/>
|
||||
|
||||
<description>
|
||||
<p>Chit-chat with GPT</p>
|
||||
<p>Chit-chat with an AI</p>
|
||||
</description>
|
||||
|
||||
<screenshots>
|
||||
<screenshot width="472" height="622">
|
||||
<caption>Screenshot of Main UI</caption>
|
||||
<image type="source">https://raw.githubusercontent.com/Bavarder/Bavarder/main/data/screenshots/quantum-computing.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<url type="bugtracker">https://github.com/Bavarder/Bavarder/issues</url>
|
||||
|
||||
<url type="bugtracker">https://codeberg.org/Bavarder/Bavarder/issues</url>
|
||||
<url type="translate">https://translate.codeberg.org/engage/bavarder/</url>
|
||||
<url type="help">https://github.com/Bavarder/Bavarder/issues</url>
|
||||
<url type="homepage">https://github.com/Bavarder/Bavarder</url>
|
||||
<url type="help">https://codeberg.org/Bavarder/Bavarder/issues</url>
|
||||
<url type="homepage">https://codeberg.org/Bavarder/Bavarder</url>
|
||||
|
||||
<kudos>
|
||||
<kudo>HiDpiIcon</kudo>
|
||||
<kudo>ModernToolkit</kudo>
|
||||
</kudos>
|
||||
<kudos>
|
||||
<kudo>HiDpiIcon</kudo>
|
||||
<kudo>ModernToolkit</kudo>
|
||||
</kudos>
|
||||
|
||||
<requires>
|
||||
<display_length compare="ge">360</display_length>
|
||||
</requires>
|
||||
<custom>
|
||||
<value key="Purism::form_factor">workstation</value>
|
||||
<value key="Purism::form_factor">mobile</value>
|
||||
</custom>
|
||||
|
||||
<categories>
|
||||
<category>Utility</category>
|
||||
</categories>
|
||||
<requires>
|
||||
<display_length compare="ge">360</display_length>
|
||||
</requires>
|
||||
|
||||
<recommends>
|
||||
<control>keyboard</control>
|
||||
<control>pointing</control>
|
||||
<control>touch</control>
|
||||
</recommends>
|
||||
<categories>
|
||||
<category>Utility</category>
|
||||
</categories>
|
||||
|
||||
<recommends>
|
||||
<control>keyboard</control>
|
||||
<control>pointing</control>
|
||||
<control>touch</control>
|
||||
</recommends>
|
||||
|
||||
<keywords>
|
||||
<keyword>Bavarder</keyword>
|
||||
@@ -50,6 +59,31 @@
|
||||
</keywords>
|
||||
|
||||
<releases>
|
||||
<release version="0.1.6" date="2023-5-6" type="stable">
|
||||
<description>
|
||||
<p>Fix an issue which caused the app to crash randomly</p>
|
||||
<p>Add save/load of settings</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.1.5" date="2023-5-4" type="stable">
|
||||
<description>
|
||||
<p>Fix HuggingChat (again)</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.1.4" date="2023-5-4" type="stable">
|
||||
<description>
|
||||
<p>Fix HuggingChat</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.1.3" date="2023-5-4" type="stable">
|
||||
<description>
|
||||
<p>Add multiple providers support</p>
|
||||
<p>Make HuggingChat the default provider</p>
|
||||
<p>Fix some bugs</p>
|
||||
<p>Focus on the response entry</p>
|
||||
<p>Update translations</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.1.2" date="2023-4-27" type="stable">
|
||||
<description>
|
||||
<p>Fix appdata not having release tags</p>
|
||||
|
||||
@@ -16,5 +16,14 @@
|
||||
<key name="clear-after-send" type="b">
|
||||
<default>false</default>
|
||||
</key>
|
||||
<key name="enabled-providers" type="as">
|
||||
<default>["baichat", "catgpt", "huggingchat", "openaigpt35turbo", "openaigpt4"]</default>
|
||||
</key>
|
||||
<key name="latest-provider" type="s">
|
||||
<default>'huggingchat'</default>
|
||||
</key>
|
||||
<key name="providers-data" type="a{ss}">
|
||||
<default>{}</default>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
|
||||
@@ -20,5 +20,9 @@ template Preferences : Adw.PreferencesWindow {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Adw.PreferencesGroup provider_group {
|
||||
title: _("Providers");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -26,6 +26,9 @@ template BavarderWindow : Adw.ApplicationWindow {
|
||||
icon-name: "open-menu-symbolic";
|
||||
tooltip-text: _("Main Menu");
|
||||
}
|
||||
DropDown provider_selector {
|
||||
styles ["flat"]
|
||||
}
|
||||
styles ["flat"]
|
||||
}
|
||||
|
||||
@@ -81,6 +84,23 @@ template BavarderWindow : Adw.ApplicationWindow {
|
||||
tooltip-text: _("Copy to Clipboard");
|
||||
action-name: "app.copy_prompt";
|
||||
}
|
||||
// Button listen {
|
||||
// action-name: "app.listen";
|
||||
// tooltip-text: _("Listen");
|
||||
// icon-name: "audio-input-microphone-symbolic";
|
||||
// }
|
||||
|
||||
// Button listen_wait {
|
||||
// visible: false;
|
||||
// sensitive: false;
|
||||
// tooltip-text: _("Listening");
|
||||
// Spinner listen_spinner {
|
||||
// margin-top: 8;
|
||||
// margin-bottom: 8;
|
||||
// margin-start: 8;
|
||||
// margin-end: 8;
|
||||
// }
|
||||
// }
|
||||
Button ask_button {
|
||||
visible: true;
|
||||
sensitive: false;
|
||||
@@ -154,7 +174,25 @@ template BavarderWindow : Adw.ApplicationWindow {
|
||||
|
||||
styles ["toolbar"]
|
||||
|
||||
Button {
|
||||
// Button speak {
|
||||
// action-name: "app.speak";
|
||||
// tooltip-text: _("Speak");
|
||||
// icon-name: "audio-speakers-symbolic";
|
||||
// }
|
||||
|
||||
// Button speak_wait {
|
||||
// visible: false;
|
||||
// sensitive: false;
|
||||
// tooltip-text: _("Speaking");
|
||||
// Spinner speak_spinner {
|
||||
// margin-top: 8;
|
||||
// margin-bottom: 8;
|
||||
// margin-start: 8;
|
||||
// margin-end: 8;
|
||||
// }
|
||||
// }
|
||||
|
||||
Button copy_bot {
|
||||
sensitive: false;
|
||||
icon-name: "edit-copy-symbolic";
|
||||
tooltip-text: _("Copy to Clipboard");
|
||||
@@ -183,6 +221,11 @@ menu main-menu {
|
||||
action: "win.show-help-overlay";
|
||||
}
|
||||
|
||||
item {
|
||||
label: _("Quit");
|
||||
action: "app.quit";
|
||||
}
|
||||
|
||||
item {
|
||||
label: _("About Bavarder");
|
||||
action: "app.about";
|
||||
|
||||
10
meson.build
10
meson.build
@@ -1,5 +1,5 @@
|
||||
project('bavarder',
|
||||
version: '0.1.2',
|
||||
version: '0.1.6',
|
||||
meson_version: '>= 0.62.0',
|
||||
default_options: [ 'warning_level=2', 'werror=false', ],
|
||||
)
|
||||
@@ -10,6 +10,9 @@ python = import('python')
|
||||
|
||||
# Constants
|
||||
PROJECT_RDNN_NAME = 'io.github.Bavarder.Bavarder'
|
||||
BUGTRACKER_URL = 'https://github.com/Bavarder/Bavarder/issues'
|
||||
HELP_URL = 'https://github.com/Bavarder/Bavarder/issues'
|
||||
TRANSLATE_URL = 'https://translate.codeberg.org/engage/bavarder/'
|
||||
|
||||
PROJECT_URL = 'https://github.com/Bavarder'
|
||||
|
||||
@@ -55,6 +58,11 @@ conf.set('BUILD_TYPE', get_option('buildtype'))
|
||||
conf.set('SCHEMAS_DIR', PKGDATA_DIR)
|
||||
conf.set('SOURCE_DIR', meson.current_source_dir())
|
||||
conf.set('BUILD_DIR', meson.current_build_dir())
|
||||
conf.set('BUGTRACKER_URL', BUGTRACKER_URL)
|
||||
conf.set('HELP_URL', HELP_URL)
|
||||
conf.set('TRANSLATE_URL', TRANSLATE_URL)
|
||||
conf.set('RELEASE_VER', meson.project_version())
|
||||
conf.set('PROJECT_URL', PROJECT_URL)
|
||||
|
||||
subdir('data')
|
||||
subdir('src')
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -24,7 +24,7 @@ msgstr ""
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with GPT"
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr ""
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
@@ -55,7 +55,7 @@ msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:177
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr ""
|
||||
|
||||
@@ -71,38 +71,74 @@ msgstr ""
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:33
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:48
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:81 data/ui/window.blp:160
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:88
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:97
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:112
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:182
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:187
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr ""
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr ""
|
||||
|
||||
@@ -6,3 +6,9 @@ sv
|
||||
it
|
||||
de
|
||||
cs
|
||||
pt
|
||||
hu
|
||||
az
|
||||
fi
|
||||
tr
|
||||
nl
|
||||
|
||||
@@ -7,3 +7,5 @@ data/ui/window.blp
|
||||
src/main.py
|
||||
src/preferences.py
|
||||
src/window.py
|
||||
src/provider/base.py
|
||||
src/provider/catgpt.py
|
||||
147
po/az.po
Normal file
147
po/az.po
Normal file
@@ -0,0 +1,147 @@
|
||||
# Bavarder POT file
|
||||
# Copyright (C) 2023 Bavarder
|
||||
# This file is distributed under the GNU GPLv3 license.
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# thepoladov13 <thepoladov@protonmail.com>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-03 18:51+0000\n"
|
||||
"Last-Translator: thepoladov13 <thepoladov@protonmail.com>\n"
|
||||
"Language-Team: Azerbaijani <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/az/>\n"
|
||||
"Language: az\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.desktop.in:3
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
|
||||
msgid "Bavarder"
|
||||
msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Chit AI ilə söhbət edin"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
msgid "0xMRTT"
|
||||
msgstr "0xMRTT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
|
||||
msgid "Screenshot of Main UI"
|
||||
msgstr "Əsas UI ekran görüntüsü"
|
||||
|
||||
#: data/ui/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
msgid "General"
|
||||
msgstr "Ümumi"
|
||||
|
||||
#: data/ui/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr "Qısayolları göstərin"
|
||||
|
||||
#: data/ui/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Ask"
|
||||
msgstr "Soruş"
|
||||
|
||||
#: data/ui/help-overlay.ui:26
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Çıx"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Üstünlüklər"
|
||||
|
||||
#: data/ui/preferences.blp:12
|
||||
msgid "Prompt"
|
||||
msgstr "Sorğu"
|
||||
|
||||
#: data/ui/preferences.blp:15
|
||||
msgid "Clear prompt after send"
|
||||
msgstr "Göndərdikdən sonra sorğunu silin"
|
||||
|
||||
#: data/ui/preferences.blp:16
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr "Sorğu göndərildikdən sonra silinəcək"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Provayderlər"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr "Əsas menyu"
|
||||
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Şəbəkə bağlantısı yoxdur"
|
||||
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Mesaj"
|
||||
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Buferə kopyalayın"
|
||||
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Dinləmək"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "Dinləyirəm"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr "Soruş"
|
||||
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr "Gözləyin"
|
||||
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr "Cavab"
|
||||
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Danış"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "Danışıram"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Klaviatura Qısayolları"
|
||||
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr "Bavarder haqqında"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Xüsusi təşəkkürlər"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr "API açarı təqdim edilməyib, siz onu ayarlarda təmin edə bilərsiniz"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Parametrləri açın"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Cat GPT"
|
||||
62
po/cs.po
62
po/cs.po
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-27 19:52+0000\n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-03 12:23+0000\n"
|
||||
"Last-Translator: muznyo <codeberg.vqtek@simplelogin.com>\n"
|
||||
"Language-Team: Czech <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/cs/>\n"
|
||||
@@ -27,8 +27,8 @@ msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with GPT"
|
||||
msgstr "Chatovat s GPT"
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Chatovat s umělou inteligencí"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
msgid "0xMRTT"
|
||||
@@ -58,7 +58,7 @@ msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Ukončit"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:177
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Nastavení"
|
||||
|
||||
@@ -74,41 +74,77 @@ msgstr "Vymazat dotaz po odeslání"
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr "Dotaz bude vymazán po odeslání"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Poskytovatelé"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr "Hlavní menu"
|
||||
|
||||
#: data/ui/window.blp:33
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Žádné připojení k síti"
|
||||
|
||||
#: data/ui/window.blp:48
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Zpráva"
|
||||
|
||||
#: data/ui/window.blp:81 data/ui/window.blp:160
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Kopírovat do schránky"
|
||||
|
||||
#: data/ui/window.blp:88
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Poslech"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "Poslouchání"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr "Zeptat se"
|
||||
|
||||
#: data/ui/window.blp:97
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr "Čekejte"
|
||||
|
||||
#: data/ui/window.blp:112
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr "Odpověď"
|
||||
|
||||
#: data/ui/window.blp:182
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Mluvit"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "Mluvení"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Klávesové zkratky"
|
||||
|
||||
#: data/ui/window.blp:187
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr "O Bavarder"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Zvláštní poděkování patří"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr "API klíč nebyl přidán, můžete jej přidat v nastavení"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Otevřít nastavení"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Cat GPT"
|
||||
|
||||
#~ msgid "Ready"
|
||||
#~ msgstr "Připraveno"
|
||||
|
||||
64
po/de.po
64
po/de.po
@@ -4,13 +4,14 @@
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# 0xMRTT <0xmrtt@tuta.io>, 2023.
|
||||
# 0xMRTT <0xmrtt@proton.me>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
|
||||
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-03 13:47+0000\n"
|
||||
"Last-Translator: 0xMRTT <0xmrtt@proton.me>\n"
|
||||
"Language-Team: German <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/de/>\n"
|
||||
"Language: de\n"
|
||||
@@ -27,7 +28,7 @@ msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with GPT"
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Plaudern Sie mit GPT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
@@ -58,7 +59,7 @@ msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Aufhören"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:177
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
@@ -74,42 +75,79 @@ msgstr "Eingabeaufforderung nach dem Senden löschen"
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr "Die Eingabeaufforderung wird nach dem Senden gelöscht"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Anbieter"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr "Hauptmenü"
|
||||
|
||||
#: data/ui/window.blp:33
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Keine Netzwerkverbindung"
|
||||
|
||||
#: data/ui/window.blp:48
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Meldung"
|
||||
|
||||
#: data/ui/window.blp:81 data/ui/window.blp:160
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "In die Zwischenablage kopieren"
|
||||
|
||||
#: data/ui/window.blp:88
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Hören"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "Hören"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr "Fragen"
|
||||
|
||||
#: data/ui/window.blp:97
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr "Warten"
|
||||
|
||||
#: data/ui/window.blp:112
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr "Antwort"
|
||||
|
||||
#: data/ui/window.blp:182
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Sprechen"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "Reden"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Tastatürkürzel"
|
||||
|
||||
#: data/ui/window.blp:187
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr "Über Bavarder"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Besonderer Dank an"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr ""
|
||||
"Kein API-Schlüssel angegeben, Sie können einen in den Einstellungen angeben"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Einstellungen öffnen"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Katze GPT"
|
||||
|
||||
#~ msgid "Ready"
|
||||
#~ msgstr "Bereit"
|
||||
|
||||
|
||||
94
po/es.po
94
po/es.po
@@ -4,13 +4,16 @@
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# 0xMRTT <0xmrtt@tuta.io>, 2023.
|
||||
# sjdonado <jsrd98@gmail.com>, 2023.
|
||||
# deimidis <gmovia@pm.me>, 2023.
|
||||
# 0xMRTT <0xmrtt@proton.me>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
|
||||
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-03 18:52+0000\n"
|
||||
"Last-Translator: 0xMRTT <0xmrtt@proton.me>\n"
|
||||
"Language-Team: Spanish <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/es/>\n"
|
||||
"Language: es\n"
|
||||
@@ -23,20 +26,20 @@ msgstr ""
|
||||
#: data/io.github.Bavarder.Bavarder.desktop.in:3
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
|
||||
msgid "Bavarder"
|
||||
msgstr ""
|
||||
msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with GPT"
|
||||
msgstr ""
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Conversa con una IA"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
msgid "0xMRTT"
|
||||
msgstr ""
|
||||
msgstr "0xMRTT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
|
||||
msgid "Screenshot of Main UI"
|
||||
msgstr ""
|
||||
msgstr "Captura de Pantalla de la Interfaz de Usuario Principal"
|
||||
|
||||
#: data/ui/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
@@ -46,69 +49,106 @@ msgstr "General"
|
||||
#: data/ui/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr ""
|
||||
msgstr "Mostrar Atajos de Teclado"
|
||||
|
||||
#: data/ui/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Ask"
|
||||
msgstr ""
|
||||
msgstr "Preguntar"
|
||||
|
||||
#: data/ui/help-overlay.ui:26
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Salida"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:177
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Preferencias"
|
||||
|
||||
#: data/ui/preferences.blp:12
|
||||
msgid "Prompt"
|
||||
msgstr ""
|
||||
msgstr "Entrada"
|
||||
|
||||
#: data/ui/preferences.blp:15
|
||||
msgid "Clear prompt after send"
|
||||
msgstr ""
|
||||
msgstr "Limpiar entrada después de enviar"
|
||||
|
||||
#: data/ui/preferences.blp:16
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr ""
|
||||
msgstr "La entrada será borrada después de enviar"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Proveedores"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
msgstr "Menú Principal"
|
||||
|
||||
#: data/ui/window.blp:33
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "No hay conexión de red"
|
||||
|
||||
#: data/ui/window.blp:48
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Mensaje"
|
||||
|
||||
#: data/ui/window.blp:81 data/ui/window.blp:160
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Copiar al portapapeles"
|
||||
|
||||
#: data/ui/window.blp:88
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Escuchar"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "Escuchando"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr ""
|
||||
msgstr "Preguntar"
|
||||
|
||||
#: data/ui/window.blp:97
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr ""
|
||||
msgstr "Espera"
|
||||
|
||||
#: data/ui/window.blp:112
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr ""
|
||||
msgstr "Respuesta"
|
||||
|
||||
#: data/ui/window.blp:182
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Hablar"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "Hablando"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
msgstr "Atajos de Teclado"
|
||||
|
||||
#: data/ui/window.blp:187
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr "Sobre Bavarder"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Agradecimientos especiales a"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr ""
|
||||
"No se ha ingresado una API Key valida, puede ingresar una en Configuraciones"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Abrir configuraciones"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Charla GPT"
|
||||
|
||||
#~ msgid "Ready"
|
||||
#~ msgstr "Leer"
|
||||
|
||||
147
po/fi.po
Normal file
147
po/fi.po
Normal file
@@ -0,0 +1,147 @@
|
||||
# Bavarder POT file
|
||||
# Copyright (C) 2023 Bavarder
|
||||
# This file is distributed under the GNU GPLv3 license.
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# artnay <jiri.gronroos@iki.fi>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-04 20:52+0000\n"
|
||||
"Last-Translator: artnay <jiri.gronroos@iki.fi>\n"
|
||||
"Language-Team: Finnish <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/fi/>\n"
|
||||
"Language: fi\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.desktop.in:3
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
|
||||
msgid "Bavarder"
|
||||
msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Keskustele tekoälyn kanssa"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
msgid "0xMRTT"
|
||||
msgstr "0xMRTT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
|
||||
msgid "Screenshot of Main UI"
|
||||
msgstr "Kuvakaappaus käyttöliittymästä"
|
||||
|
||||
#: data/ui/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
msgid "General"
|
||||
msgstr "Yleiset"
|
||||
|
||||
#: data/ui/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr "Näytä pikanäppäimet"
|
||||
|
||||
#: data/ui/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Ask"
|
||||
msgstr "Kysy"
|
||||
|
||||
#: data/ui/help-overlay.ui:26
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Lopeta"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Asetukset"
|
||||
|
||||
#: data/ui/preferences.blp:12
|
||||
msgid "Prompt"
|
||||
msgstr "Kehote"
|
||||
|
||||
#: data/ui/preferences.blp:15
|
||||
msgid "Clear prompt after send"
|
||||
msgstr "Tyhjennä kehote lähetyksen jälkeen"
|
||||
|
||||
#: data/ui/preferences.blp:16
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr "Kehote tyhjennetään lähetyksen jälkeen"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Palveluntarjoajat"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr "Päävalikko"
|
||||
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Ei verkkoyhteyttä"
|
||||
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Viesti"
|
||||
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Kopioi leikepöydälle"
|
||||
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Kuuntele"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "Kuunnellaan"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr "Kysy"
|
||||
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr "Odota"
|
||||
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr "Vastaus"
|
||||
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Puhu"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "Puhutaan"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Pikanäppäimet"
|
||||
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr "Tietoja - Bavarder"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Erityiskiitokset"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr "API-avainta ei asetettu, aseta avain asetuksissa"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Avaa asetukset"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Cat GPT"
|
||||
88
po/fr.po
88
po/fr.po
@@ -4,13 +4,16 @@
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# 0xMRTT <0xmrtt@tuta.io>, 2023.
|
||||
# 0xMRTT <0xmrtt@proton.me>, 2023.
|
||||
# muznyo <codeberg.vqtek@simplelogin.com>, 2023.
|
||||
# rene-coty <irenee.thirion@e.email>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
|
||||
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-03 18:22+0000\n"
|
||||
"Last-Translator: rene-coty <irenee.thirion@e.email>\n"
|
||||
"Language-Team: French <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/fr/>\n"
|
||||
"Language: fr\n"
|
||||
@@ -27,7 +30,7 @@ msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with GPT"
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Bavarder avec GPT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
@@ -36,7 +39,7 @@ msgstr "0xMRTT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
|
||||
msgid "Screenshot of Main UI"
|
||||
msgstr "Capture d'écran de l'interface utilisateur principale"
|
||||
msgstr "Capture d’écran de l’interface principale"
|
||||
|
||||
#: data/ui/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
@@ -46,69 +49,106 @@ msgstr "Général"
|
||||
#: data/ui/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr "Afficher les Raccourcis"
|
||||
msgstr "Afficher les raccourcis"
|
||||
|
||||
#: data/ui/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Ask"
|
||||
msgstr "Demandez"
|
||||
msgstr "Demander"
|
||||
|
||||
#: data/ui/help-overlay.ui:26
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Quitter"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:177
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Préférences"
|
||||
|
||||
#: data/ui/preferences.blp:12
|
||||
msgid "Prompt"
|
||||
msgstr "Invite"
|
||||
msgstr "Requête"
|
||||
|
||||
#: data/ui/preferences.blp:15
|
||||
msgid "Clear prompt after send"
|
||||
msgstr "Effacer l'invite après l'envoi"
|
||||
msgstr "Effacer la requête après envoi"
|
||||
|
||||
#: data/ui/preferences.blp:16
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr "L'invite sera effacée après l'envoi"
|
||||
msgstr "La requête sera effacée après envoi"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Fournisseurs"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr "Menu Principal"
|
||||
|
||||
#: data/ui/window.blp:33
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Pas de connexion réseau"
|
||||
|
||||
#: data/ui/window.blp:48
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Message"
|
||||
|
||||
#: data/ui/window.blp:81 data/ui/window.blp:160
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Copier dans le presse papier"
|
||||
msgstr "Copier dans le presse-papiers"
|
||||
|
||||
#: data/ui/window.blp:88
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Écouter"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "En écoute"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr "Demandez"
|
||||
msgstr "Demander"
|
||||
|
||||
#: data/ui/window.blp:97
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr "Attendez"
|
||||
|
||||
#: data/ui/window.blp:112
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr "Réponse"
|
||||
|
||||
#: data/ui/window.blp:182
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Raccourcis Clavier"
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Parler"
|
||||
|
||||
#: data/ui/window.blp:187
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "En train de parler"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Raccourcis clavier"
|
||||
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr "A propos de Bavarder"
|
||||
msgstr "À propos de Bavarder"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Remerciements spéciaux à"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr ""
|
||||
"Pas de clé d’API fournie, vous pouvez en ajouter une dans les paramètres"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Ouvrir les paramètres"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Chat GPT"
|
||||
|
||||
#~ msgid "Ready"
|
||||
#~ msgstr "Prêt"
|
||||
|
||||
148
po/hu.po
Normal file
148
po/hu.po
Normal file
@@ -0,0 +1,148 @@
|
||||
# Bavarder POT file
|
||||
# Copyright (C) 2023 Bavarder
|
||||
# This file is distributed under the GNU GPLv3 license.
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# osiixy <osiixy@gmail.com>, 2023.
|
||||
# 0xMRTT <0xmrtt@proton.me>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-03 19:17+0000\n"
|
||||
"Last-Translator: 0xMRTT <0xmrtt@proton.me>\n"
|
||||
"Language-Team: Hungarian <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/hu/>\n"
|
||||
"Language: hu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.desktop.in:3
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
|
||||
msgid "Bavarder"
|
||||
msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr ""
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
msgid "0xMRTT"
|
||||
msgstr ""
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
|
||||
msgid "Screenshot of Main UI"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
msgid "General"
|
||||
msgstr "Általános"
|
||||
|
||||
#: data/ui/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Ask"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/help-overlay.ui:26
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Kilépés"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Beállítások"
|
||||
|
||||
#: data/ui/preferences.blp:12
|
||||
msgid "Prompt"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/preferences.blp:15
|
||||
msgid "Clear prompt after send"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/preferences.blp:16
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Nincs hálózati kapcsolat"
|
||||
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Üzenet"
|
||||
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Másolás a vágólapra"
|
||||
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr ""
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr ""
|
||||
85
po/it.po
85
po/it.po
@@ -4,13 +4,14 @@
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# 0xMRTT <0xmrtt@tuta.io>, 2023.
|
||||
# phaerrax <davide.ferracin@protonmail.com>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
|
||||
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-06 00:15+0000\n"
|
||||
"Last-Translator: phaerrax <davide.ferracin@protonmail.com>\n"
|
||||
"Language-Team: Italian <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/it/>\n"
|
||||
"Language: it\n"
|
||||
@@ -23,20 +24,20 @@ msgstr ""
|
||||
#: data/io.github.Bavarder.Bavarder.desktop.in:3
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
|
||||
msgid "Bavarder"
|
||||
msgstr ""
|
||||
msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with GPT"
|
||||
msgstr ""
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Chiacchiera con un'IA"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
msgid "0xMRTT"
|
||||
msgstr ""
|
||||
msgstr "0xMRTT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
|
||||
msgid "Screenshot of Main UI"
|
||||
msgstr ""
|
||||
msgstr "Schermata dell'interfaccia principale"
|
||||
|
||||
#: data/ui/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
@@ -46,19 +47,19 @@ msgstr "Generale"
|
||||
#: data/ui/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr ""
|
||||
msgstr "Mostra scorciatoie"
|
||||
|
||||
#: data/ui/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Ask"
|
||||
msgstr ""
|
||||
msgstr "Chiedi"
|
||||
|
||||
#: data/ui/help-overlay.ui:26
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Esci"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:177
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Preferenze"
|
||||
|
||||
@@ -74,41 +75,77 @@ msgstr ""
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Fornitori"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
msgstr "Menù principale"
|
||||
|
||||
#: data/ui/window.blp:33
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Nessuna connessione di rete"
|
||||
|
||||
#: data/ui/window.blp:48
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Messaggio"
|
||||
|
||||
#: data/ui/window.blp:81 data/ui/window.blp:160
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Copia negli appunti"
|
||||
|
||||
#: data/ui/window.blp:88
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Ascolta"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "In ascolto"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr ""
|
||||
msgstr "Chiedi"
|
||||
|
||||
#: data/ui/window.blp:97
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr ""
|
||||
msgstr "Attendere"
|
||||
|
||||
#: data/ui/window.blp:112
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr "Risposta"
|
||||
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Parla"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:182
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
msgstr "Scorciatoie da tastiera"
|
||||
|
||||
#: data/ui/window.blp:187
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr ""
|
||||
msgstr "Informazioni su Bavarder"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Un ringraziamento speciale a"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr "Nessuna chiave API fornita; è possibile fornirne una nelle impostazioni"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Apri impostazioni"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Cat GPT"
|
||||
|
||||
#~ msgid "Ready"
|
||||
#~ msgstr "Pronto"
|
||||
|
||||
147
po/nl.po
Normal file
147
po/nl.po
Normal file
@@ -0,0 +1,147 @@
|
||||
# Bavarder POT file
|
||||
# Copyright (C) 2023 Bavarder
|
||||
# This file is distributed under the GNU GPLv3 license.
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# Vistaus <vistausss@fastmail.com>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-05 10:18+0000\n"
|
||||
"Last-Translator: Vistaus <vistausss@fastmail.com>\n"
|
||||
"Language-Team: Dutch <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/nl/>\n"
|
||||
"Language: nl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.desktop.in:3
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
|
||||
msgid "Bavarder"
|
||||
msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Babbel met een KI"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
msgid "0xMRTT"
|
||||
msgstr "0xMRTT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
|
||||
msgid "Screenshot of Main UI"
|
||||
msgstr "Schermfoto van het hoofdscherm"
|
||||
|
||||
#: data/ui/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
msgid "General"
|
||||
msgstr "Algemeen"
|
||||
|
||||
#: data/ui/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr "Sneltoetsen tonen"
|
||||
|
||||
#: data/ui/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Ask"
|
||||
msgstr "Vraag stellen"
|
||||
|
||||
#: data/ui/help-overlay.ui:26
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Afsluiten"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Voorkeuren"
|
||||
|
||||
#: data/ui/preferences.blp:12
|
||||
msgid "Prompt"
|
||||
msgstr "Invoerveld"
|
||||
|
||||
#: data/ui/preferences.blp:15
|
||||
msgid "Clear prompt after send"
|
||||
msgstr "Invoerveld wissen na versturen"
|
||||
|
||||
#: data/ui/preferences.blp:16
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr "Wis het invoerveld na het stellen van een vraag"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Diensten"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr "Hoofdmenu"
|
||||
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Geen netwerkverbinding"
|
||||
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Bericht"
|
||||
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Kopiëren naar klembord"
|
||||
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Luisteren"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "Bezig met luisteren…"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr "Vraag stellen"
|
||||
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr "Even geduld…"
|
||||
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr "Antwoord"
|
||||
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Praten"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "Bezig met praten…"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Sneltoetsen"
|
||||
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr "Over Bavarder"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Met veel dank aan"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr "Er is geen api-sleutel opgegeven - open de voorkeuren"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Voorkeuren openen"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Cat GPT"
|
||||
148
po/pt.po
Normal file
148
po/pt.po
Normal file
@@ -0,0 +1,148 @@
|
||||
# Bavarder POT file
|
||||
# Copyright (C) 2023 Bavarder
|
||||
# This file is distributed under the GNU GPLv3 license.
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# galegovski <galegovski@outlook.com>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-03 13:42+0000\n"
|
||||
"Last-Translator: galegovski <galegovski@outlook.com>\n"
|
||||
"Language-Team: Portuguese <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/pt/>\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.desktop.in:3
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
|
||||
msgid "Bavarder"
|
||||
msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Bate-papo com uma IA"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
msgid "0xMRTT"
|
||||
msgstr "0xMRTT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
|
||||
msgid "Screenshot of Main UI"
|
||||
msgstr "Captura da tela principal"
|
||||
|
||||
#: data/ui/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
msgid "General"
|
||||
msgstr "Geral"
|
||||
|
||||
#: data/ui/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr "Mostrar Atalhos"
|
||||
|
||||
#: data/ui/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Ask"
|
||||
msgstr "Perguntar"
|
||||
|
||||
#: data/ui/help-overlay.ui:26
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Sair"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Preferências"
|
||||
|
||||
#: data/ui/preferences.blp:12
|
||||
msgid "Prompt"
|
||||
msgstr "Prompt"
|
||||
|
||||
#: data/ui/preferences.blp:15
|
||||
msgid "Clear prompt after send"
|
||||
msgstr "Limpar prompt após enviar"
|
||||
|
||||
#: data/ui/preferences.blp:16
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr "O prompt será limpo após o envio"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Provedores"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr "Menu principal"
|
||||
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Nenhuma conexão de rede"
|
||||
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Mensagem"
|
||||
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Copiar para área de transferência"
|
||||
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Ouvir"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "Audição"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr "Perguntar"
|
||||
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr "Espere"
|
||||
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr "Resposta"
|
||||
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Falar"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "Falando"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Atalhos do teclado"
|
||||
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr "Sobre Bavarder"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Agradecimentos especiais para"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr ""
|
||||
"Nenhuma chave de API fornecida, você pode fornecer uma nas configurações"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Abrir configurações"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Cat GPT"
|
||||
64
po/ru.po
64
po/ru.po
@@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 08:57+0000\n"
|
||||
"Last-Translator: Daudix_UFO <ddaudix@gmail.com>\n"
|
||||
"Language-Team: Russian <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/ru/>\n"
|
||||
@@ -18,8 +18,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.desktop.in:3
|
||||
@@ -29,7 +29,7 @@ msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with GPT"
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Болтайте с GPT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
@@ -60,7 +60,7 @@ msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Выйти"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:177
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Параметры"
|
||||
|
||||
@@ -76,42 +76,78 @@ msgstr "Очищать поле ввода после отправки"
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr "Поле ввода будет очищено после отправки"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Провайдеры"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr "Главное меню"
|
||||
|
||||
#: data/ui/window.blp:33
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Нет подключения к сети"
|
||||
|
||||
#: data/ui/window.blp:48
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Сообщение"
|
||||
|
||||
#: data/ui/window.blp:81 data/ui/window.blp:160
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Скопировать в буфер обмена"
|
||||
|
||||
#: data/ui/window.blp:88
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Прослушать"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "Прослушивание"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr "Спросить"
|
||||
|
||||
#: data/ui/window.blp:97
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr "Ждите"
|
||||
|
||||
#: data/ui/window.blp:112
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr "Ответ"
|
||||
|
||||
#: data/ui/window.blp:182
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Произнести"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "Произношение"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Комбинации клавиш"
|
||||
|
||||
#: data/ui/window.blp:187
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr "О Bavarder"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Особое спасибо"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr "Ключ API не предоставлен, вы можете предоставить его в настройках"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Открыть настройки"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Cat GPT"
|
||||
|
||||
#~ msgid "Ready"
|
||||
#~ msgstr "Готов"
|
||||
|
||||
|
||||
95
po/sv.po
95
po/sv.po
@@ -4,13 +4,14 @@
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# 0xMRTT <0xmrtt@tuta.io>, 2023.
|
||||
# Morgan Antonsson <morgan.antonsson@gmail.com>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
|
||||
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-03 18:22+0000\n"
|
||||
"Last-Translator: Morgan Antonsson <morgan.antonsson@gmail.com>\n"
|
||||
"Language-Team: Swedish <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/sv/>\n"
|
||||
"Language: sv\n"
|
||||
@@ -23,20 +24,20 @@ msgstr ""
|
||||
#: data/io.github.Bavarder.Bavarder.desktop.in:3
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
|
||||
msgid "Bavarder"
|
||||
msgstr ""
|
||||
msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with GPT"
|
||||
msgstr ""
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Chatta med en AI"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
msgid "0xMRTT"
|
||||
msgstr ""
|
||||
msgstr "0xMRTT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
|
||||
msgid "Screenshot of Main UI"
|
||||
msgstr ""
|
||||
msgstr "Skärmdump av huvudgränssnittet"
|
||||
|
||||
#: data/ui/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
@@ -46,69 +47,105 @@ msgstr "Generellt"
|
||||
#: data/ui/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr ""
|
||||
msgstr "Visa genvägar"
|
||||
|
||||
#: data/ui/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Ask"
|
||||
msgstr ""
|
||||
msgstr "Fråga"
|
||||
|
||||
#: data/ui/help-overlay.ui:26
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Sluta"
|
||||
msgstr "Avsluta"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:177
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Inställningar"
|
||||
|
||||
#: data/ui/preferences.blp:12
|
||||
msgid "Prompt"
|
||||
msgstr ""
|
||||
msgstr "Prompt"
|
||||
|
||||
#: data/ui/preferences.blp:15
|
||||
msgid "Clear prompt after send"
|
||||
msgstr ""
|
||||
msgstr "Töm prompt efter den har skickats"
|
||||
|
||||
#: data/ui/preferences.blp:16
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr ""
|
||||
msgstr "Prompten kommer att rensas efter att den har skickats"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Leverantörer"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
msgstr "Huvudmeny"
|
||||
|
||||
#: data/ui/window.blp:33
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Ingen kontakt med nätverket"
|
||||
|
||||
#: data/ui/window.blp:48
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Meddelande"
|
||||
|
||||
#: data/ui/window.blp:81 data/ui/window.blp:160
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Kopiera till urklipp"
|
||||
|
||||
#: data/ui/window.blp:88
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Lyssna"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "Lyssnar"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr ""
|
||||
msgstr "Fråga"
|
||||
|
||||
#: data/ui/window.blp:97
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr ""
|
||||
msgstr "Vänta"
|
||||
|
||||
#: data/ui/window.blp:112
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr ""
|
||||
msgstr "Svar"
|
||||
|
||||
#: data/ui/window.blp:182
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Tala"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "Talar"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
msgstr "Tangentbordsgenvägar"
|
||||
|
||||
#: data/ui/window.blp:187
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr ""
|
||||
msgstr "Om Bavarder"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Särskilt tack till"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr "Ingen API-nyckel har angetts, du kan ange en i inställningarna"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Öppna inställningar"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Cat GPT"
|
||||
|
||||
#~ msgid "Ready"
|
||||
#~ msgstr "läst"
|
||||
|
||||
147
po/tr.po
Normal file
147
po/tr.po
Normal file
@@ -0,0 +1,147 @@
|
||||
# Bavarder POT file
|
||||
# Copyright (C) 2023 Bavarder
|
||||
# This file is distributed under the GNU GPLv3 license.
|
||||
# Bavarder, 2023.
|
||||
#
|
||||
# keyiflerolsun <keyiflerolsun@gmail.com>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-04 20:56+0000\n"
|
||||
"Last-Translator: keyiflerolsun <keyiflerolsun@gmail.com>\n"
|
||||
"Language-Team: Turkish <https://translate.codeberg.org/projects/bavarder/"
|
||||
"bavarder/tr/>\n"
|
||||
"Language: tr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.desktop.in:3
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
|
||||
msgid "Bavarder"
|
||||
msgstr "Bavarder"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr "Chit AI ile sohbet edin"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
msgid "0xMRTT"
|
||||
msgstr "0xMRTT"
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
|
||||
msgid "Screenshot of Main UI"
|
||||
msgstr "Ana Kullanıcı Arayüzü'nün ekran görüntüsü"
|
||||
|
||||
#: data/ui/help-overlay.ui:11
|
||||
msgctxt "shortcut window"
|
||||
msgid "General"
|
||||
msgstr "Genel"
|
||||
|
||||
#: data/ui/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr "Kısayolları Göster\""
|
||||
|
||||
#: data/ui/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Ask"
|
||||
msgstr "Sor"
|
||||
|
||||
#: data/ui/help-overlay.ui:26
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Çıkış"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Tercihler"
|
||||
|
||||
#: data/ui/preferences.blp:12
|
||||
msgid "Prompt"
|
||||
msgstr "Girdi"
|
||||
|
||||
#: data/ui/preferences.blp:15
|
||||
msgid "Clear prompt after send"
|
||||
msgstr "Gönderdikten sonra giriş alanını temizle"
|
||||
|
||||
#: data/ui/preferences.blp:16
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr "Gönderimden sonra giriş alanı temizlenecek"
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr "Sağlayıcılar"
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr "Ana Menü"
|
||||
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Ağ bağlantısı yok"
|
||||
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Mesaj"
|
||||
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Panoya kopyala"
|
||||
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr "Dinle"
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr "Dinleniyor"
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr "Sor"
|
||||
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr "Bekle"
|
||||
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr "Yanıt"
|
||||
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr "Konuş"
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr "Konuşuyor"
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Klavye kısayolları"
|
||||
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr "Bavarder Hakkında"
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr "Özel teşekkürler"
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr "API anahtarı sağlanmadı, ayarlarda bir tane sağlayabilirsiniz"
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr "Ayarları aç"
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr "Cat GPT"
|
||||
58
po/uk.po
58
po/uk.po
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
|
||||
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
|
||||
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
|
||||
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
|
||||
"Language-Team: Ukrainian <https://translate.codeberg.org/projects/bavarder/"
|
||||
@@ -28,7 +28,7 @@ msgstr ""
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
|
||||
msgid "Chit-chat with GPT"
|
||||
msgid "Chit-chat with an AI"
|
||||
msgstr ""
|
||||
|
||||
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
|
||||
@@ -59,7 +59,7 @@ msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Вийти"
|
||||
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:177
|
||||
#: data/ui/preferences.blp:5 data/ui/window.blp:215
|
||||
msgid "Preferences"
|
||||
msgstr "Опції"
|
||||
|
||||
@@ -75,42 +75,78 @@ msgstr ""
|
||||
msgid "The prompt will be cleared after send"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/preferences.blp:25
|
||||
msgid "Providers"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:27
|
||||
msgid "Main Menu"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:33
|
||||
#: data/ui/window.blp:36 src/provider/base.py:43
|
||||
msgid "No network connection"
|
||||
msgstr "Відсутнє з'єднання з мережею"
|
||||
|
||||
#: data/ui/window.blp:48
|
||||
#: data/ui/window.blp:51
|
||||
msgid "Message"
|
||||
msgstr "Повідомлення"
|
||||
|
||||
#: data/ui/window.blp:81 data/ui/window.blp:160
|
||||
#: data/ui/window.blp:84 data/ui/window.blp:198
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Копіювати"
|
||||
|
||||
#: data/ui/window.blp:88
|
||||
#: data/ui/window.blp:89
|
||||
msgid "Listen"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:96
|
||||
msgid "Listening"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:108
|
||||
msgid "Ask"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:97
|
||||
#: data/ui/window.blp:117
|
||||
msgid "Wait"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:112
|
||||
#: data/ui/window.blp:132
|
||||
msgid "Response"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:182
|
||||
#: data/ui/window.blp:179
|
||||
msgid "Speak"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:186
|
||||
msgid "Speaking"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:220
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: data/ui/window.blp:187
|
||||
#: data/ui/window.blp:225
|
||||
msgid "About Bavarder"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.py:156
|
||||
msgid "Special thanks to"
|
||||
msgstr ""
|
||||
|
||||
#: src/provider/base.py:36
|
||||
msgid "No API key provided, you can provide one in settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/provider/base.py:38
|
||||
msgid "Open settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
|
||||
msgid "Cat GPT"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Ready"
|
||||
#~ msgstr "Готово"
|
||||
|
||||
|
||||
@@ -2,4 +2,8 @@
|
||||
# chmod +x flatpak-pip-generator
|
||||
# ./flatpak-pip-generator --requirements-file=requirements.txt --output pypi-dependencies
|
||||
|
||||
baichat-py
|
||||
baichat-py>=0.1.2
|
||||
hgchat
|
||||
gTTS
|
||||
openai
|
||||
googlebardpy
|
||||
187
src/main.py
187
src/main.py
@@ -21,20 +21,25 @@ import sys
|
||||
import gi
|
||||
import sys
|
||||
import threading
|
||||
import socket
|
||||
import json
|
||||
|
||||
gi.require_version("Gtk", "4.0")
|
||||
gi.require_version("Adw", "1")
|
||||
gi.require_version("Gdk", "4.0")
|
||||
gi.require_version("Gst", "1.0")
|
||||
|
||||
from gi.repository import Gtk, Gio, Adw, Gdk, GLib
|
||||
from gi.repository import Gtk, Gio, Adw, Gdk, GLib, Gst
|
||||
from .window import BavarderWindow
|
||||
from .preferences import Preferences
|
||||
|
||||
from .constants import app_id, version
|
||||
|
||||
from baichat_py import BAIChat
|
||||
from gtts import gTTS
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
||||
from .provider import PROVIDERS
|
||||
import platform
|
||||
import os
|
||||
|
||||
class BavarderApplication(Adw.Application):
|
||||
"""The main application singleton class."""
|
||||
@@ -44,17 +49,51 @@ class BavarderApplication(Adw.Application):
|
||||
application_id="io.github.Bavarder.Bavarder",
|
||||
flags=Gio.ApplicationFlags.DEFAULT_FLAGS,
|
||||
)
|
||||
self.create_action("quit", lambda *_: self.quit(), ["<primary>q"])
|
||||
self.create_action("quit", self.on_quit, ["<primary>q"])
|
||||
self.create_action("about", self.on_about_action)
|
||||
self.create_action("preferences", self.on_preferences_action)
|
||||
self.create_action("copy_prompt", self.on_copy_prompt_action)
|
||||
self.create_action("copy_bot", self.on_copy_bot_action)
|
||||
self.create_action("ask", self.on_ask_action, ["<primary>Return"])
|
||||
# self.create_action("speak", self.on_speak_action, ["<primary>S"])
|
||||
# self.create_action("listen", self.on_listen_action, ["<primary>L"])
|
||||
|
||||
self.settings = Gio.Settings(schema_id="io.github.Bavarder.Bavarder")
|
||||
|
||||
self.clear_after_send = self.settings.get_boolean("clear-after-send")
|
||||
|
||||
self.enabled_providers = sorted(set(self.settings.get_strv("enabled-providers")))
|
||||
self.latest_provider = self.settings.get_string("latest-provider")
|
||||
|
||||
def quitting(self, *args, **kwargs):
|
||||
"""Called before closing main window."""
|
||||
self.settings.set_strv("enabled-providers", list(self.enabled_providers))
|
||||
self.settings.set_string("latest-provider", self.get_provider().slug)
|
||||
|
||||
print("Saving providers data...")
|
||||
|
||||
self.save_providers()
|
||||
self.quit()
|
||||
|
||||
def on_quit(self, action, param):
|
||||
"""Called when the user activates the Quit action."""
|
||||
self.quitting()
|
||||
|
||||
def save_providers(self):
|
||||
r = {}
|
||||
for k, p in self.providers.items():
|
||||
r[p.slug] = json.dumps(p.save())
|
||||
print(r)
|
||||
data = GLib.Variant(
|
||||
"a{ss}",
|
||||
r
|
||||
)
|
||||
self.settings.set_value("providers-data", data)
|
||||
|
||||
def get_provider(self):
|
||||
print(self.providers)
|
||||
return self.providers[self.win.provider_selector.props.selected]
|
||||
|
||||
def do_activate(self):
|
||||
"""Called when the application is activated.
|
||||
|
||||
@@ -68,6 +107,51 @@ class BavarderApplication(Adw.Application):
|
||||
|
||||
self.win.response_stack.set_visible_child_name("page_response")
|
||||
|
||||
self.win.connect("close-request", self.quitting)
|
||||
|
||||
self.provider_selector_model = Gtk.StringList()
|
||||
self.providers = {}
|
||||
|
||||
self.providers_data = self.settings.get_value("providers-data")
|
||||
print(self.providers_data)
|
||||
print(self.enabled_providers)
|
||||
|
||||
for provider, i in zip(
|
||||
self.enabled_providers, range(len(self.enabled_providers))
|
||||
):
|
||||
print("Loading provider", provider)
|
||||
self.provider_selector_model.append(PROVIDERS[provider].name)
|
||||
|
||||
self.providers[i] = PROVIDERS[provider](
|
||||
self.win, self
|
||||
)
|
||||
|
||||
self.load()
|
||||
|
||||
self.win.provider_selector.set_model(self.provider_selector_model)
|
||||
self.win.provider_selector.connect("notify", self.on_provider_selector_notify)
|
||||
|
||||
print(self.latest_provider)
|
||||
for k, p in self.providers.items():
|
||||
if p.slug == self.latest_provider:
|
||||
print("Setting selected provider to", k)
|
||||
self.win.provider_selector.set_selected(k)
|
||||
break
|
||||
|
||||
self.win.prompt_text_view.grab_focus()
|
||||
|
||||
def load(self):
|
||||
for p in self.providers.values():
|
||||
print(self.providers_data)
|
||||
try:
|
||||
p.load(data=json.loads(self.providers_data[p.slug]))
|
||||
except KeyError: # provider not in data
|
||||
pass
|
||||
|
||||
|
||||
def on_provider_selector_notify(self, _unused, pspec):
|
||||
self.win.banner.set_revealed(False)
|
||||
|
||||
def on_about_action(self, widget, _):
|
||||
"""Callback for the app.about action."""
|
||||
about = Adw.AboutWindow(
|
||||
@@ -77,9 +161,24 @@ class BavarderApplication(Adw.Application):
|
||||
developer_name="0xMRTT",
|
||||
developers=["0xMRTT https://github.com/0xMRTT"],
|
||||
designers=["David Lapshin https://github.com/daudix-UFO"],
|
||||
artists=["David Lapshin https://github.com/daudix-UFO"],
|
||||
documenters=[],
|
||||
translator_credits="""0xMRTT <0xmrtt@proton.me>
|
||||
David Lapshin <ddaudix@gmail.com>
|
||||
Morgan Antonsson <morgan.antonsson@gmail.com>
|
||||
thepoladov13 <thepoladov@protonmail.com>
|
||||
Muznyo <codeberg.vqtek@simplelogin.com>
|
||||
Deimidis <gmovia@pm.me>
|
||||
sjdonado <jsrd98@gmail.com>
|
||||
artnay <jiri.gronroos@iki.fi>
|
||||
Rene Coty <irenee.thirion@e.email>
|
||||
galegovski <galegovski@outlook.com>""",
|
||||
license_type=Gtk.License.GPL_3_0,
|
||||
version=version,
|
||||
website="https://bavarder.codeberg.page",
|
||||
issue_url="https://github.com/Bavarder/Bavarder/issues",
|
||||
support_url="https://codeberg.org/Bavarder/Bavarder/issues",
|
||||
|
||||
copyright="© 2023 0xMRTT",
|
||||
)
|
||||
|
||||
@@ -87,15 +186,22 @@ class BavarderApplication(Adw.Application):
|
||||
"Special thanks to",
|
||||
[
|
||||
"Telegraph https://apps.gnome.org/app/io.github.fkinoshita.Telegraph",
|
||||
"BAIChat https://chatbot.theb.ai/",
|
||||
],
|
||||
)
|
||||
about.set_debug_info(
|
||||
f"""{app_id} {version}
|
||||
Environment: {os.environ.get("XDG_CURRENT_DESKTOP", "Unknown")}
|
||||
Gtk: {Gtk.MAJOR_VERSION}.{Gtk.MINOR_VERSION}.{Gtk.MICRO_VERSION}
|
||||
Python: {platform.python_version()}
|
||||
OS: {platform.system()} {platform.release()} {platform.version()}
|
||||
Providers: {self.enabled_providers}
|
||||
"""
|
||||
|
||||
)
|
||||
about.present()
|
||||
|
||||
def on_preferences_action(self, widget, _):
|
||||
def on_preferences_action(self, widget, *args, **kwargs):
|
||||
"""Callback for the app.preferences action."""
|
||||
print("app.preferences action activated")
|
||||
|
||||
preferences = Preferences(
|
||||
application=self, transient_for=self.props.active_window
|
||||
)
|
||||
@@ -138,19 +244,10 @@ class BavarderApplication(Adw.Application):
|
||||
self.win.toast_overlay.add_toast(toast)
|
||||
|
||||
def ask(self, prompt):
|
||||
chat = BAIChat(sync=True)
|
||||
try:
|
||||
response = chat.sync_ask(self.prompt)
|
||||
except KeyError:
|
||||
self.win.banner.set_revealed(False)
|
||||
return ""
|
||||
except socket.gaierror:
|
||||
#self.win.response_stack.set_visible_child_name("page_offline")
|
||||
self.win.banner.set_revealed(True)
|
||||
return ""
|
||||
else:
|
||||
self.win.banner.set_revealed(False)
|
||||
return response.text
|
||||
return self.providers[self.provider].ask(prompt)
|
||||
|
||||
def update_response(self, response):
|
||||
self.win.bot_text_view.get_buffer().set_text(response)
|
||||
|
||||
def on_ask_action(self, widget, _):
|
||||
"""Callback for the app.ask action."""
|
||||
@@ -160,23 +257,55 @@ class BavarderApplication(Adw.Application):
|
||||
self.win.wait_button.set_visible(True)
|
||||
self.prompt = self.win.prompt_text_view.get_buffer().props.text
|
||||
|
||||
if self.prompt == "":
|
||||
return
|
||||
|
||||
self.provider = self.win.provider_selector.props.selected
|
||||
|
||||
def thread_run():
|
||||
# call heavy here
|
||||
response = self.ask(self.prompt)
|
||||
try:
|
||||
response = self.ask(self.prompt)
|
||||
except GLib.Error as e:
|
||||
response = e.message
|
||||
GLib.idle_add(cleanup, response)
|
||||
|
||||
def cleanup(response):
|
||||
self.win.spinner.stop()
|
||||
self.win.ask_button.set_visible(True)
|
||||
self.win.wait_button.set_visible(False)
|
||||
t.join()
|
||||
self.win.bot_text_view.get_buffer().set_text(response)
|
||||
|
||||
GLib.idle_add(self.update_response, response)
|
||||
if self.clear_after_send:
|
||||
self.win.prompt_text_view.get_buffer().set_text("")
|
||||
GLib.idle_add(self.update_response, "")
|
||||
self.t.join()
|
||||
|
||||
t = threading.Thread(target=thread_run)
|
||||
t.start()
|
||||
self.t = threading.Thread(target=thread_run)
|
||||
self.t.start()
|
||||
|
||||
# def on_speak_action(self, widget, _):
|
||||
# """Callback for the app.speak action."""
|
||||
# print("app.speak action activated")
|
||||
#
|
||||
# try:
|
||||
#
|
||||
# with NamedTemporaryFile() as file_to_play:
|
||||
#
|
||||
# tts = gTTS(self.win.bot_text_view.get_buffer().props.text)
|
||||
# tts.write_to_fp(file_to_play)
|
||||
# file_to_play.seek(0)
|
||||
# self._play_audio(file_to_play.name)
|
||||
# except Exception as exc:
|
||||
# print(exc)
|
||||
#
|
||||
# def _play_audio(self, path):
|
||||
# uri = "file://" + path
|
||||
# self.player.set_property("uri", uri)
|
||||
# self.pipeline.add(self.player)
|
||||
# self.pipeline.set_state(Gst.State.PLAYING)
|
||||
# self.player.set_state(Gst.State.PLAYING)
|
||||
#
|
||||
# def on_listen_action(self, widget, _):
|
||||
# """Callback for the app.listen action."""
|
||||
# print("app.listen action activated")
|
||||
|
||||
def create_action(self, name, callback, shortcuts=None):
|
||||
"""Add an application action.
|
||||
|
||||
@@ -16,16 +16,7 @@ configure_file(
|
||||
configure_file(
|
||||
input: 'constants.py.in',
|
||||
output: 'constants.py',
|
||||
configuration: configuration_data({
|
||||
'APP_ID': APPLICATION_ID,
|
||||
'RELEASE_VER': meson.project_version(),
|
||||
'VERSION': meson.project_version() + VERSION_SUFFIX,
|
||||
'BUILD_TYPE': get_option('buildtype'),
|
||||
'PROJECT_URL': PROJECT_URL,
|
||||
'DATA_DIR': conf.get('DATA_DIR'),
|
||||
'PKGDATA_DIR': PKGDATA_DIR,
|
||||
'LOCALE_DIR': conf.get('LOCALE_DIR'),
|
||||
}),
|
||||
configuration: conf,
|
||||
install: true,
|
||||
install_dir: moduledir
|
||||
)
|
||||
@@ -38,3 +29,5 @@ bavarder_sources = [
|
||||
]
|
||||
|
||||
PY_INSTALLDIR.install_sources(bavarder_sources, subdir: moduledir)
|
||||
|
||||
subdir('provider')
|
||||
@@ -6,6 +6,7 @@ class Preferences(Adw.PreferencesWindow):
|
||||
__gtype_name__ = "Preferences"
|
||||
|
||||
clear_after_send_switch = Gtk.Template.Child()
|
||||
provider_group = Gtk.Template.Child()
|
||||
|
||||
def __init__(self, application, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
@@ -19,6 +20,8 @@ class Preferences(Adw.PreferencesWindow):
|
||||
"state-set", self.on_clear_after_send_switch_toggled
|
||||
)
|
||||
|
||||
self.setup_providers()
|
||||
|
||||
def on_clear_after_send_switch_toggled(self, *args):
|
||||
"""Callback for the clear_after_send_switch toggled event."""
|
||||
state = self.clear_after_send_switch.props.state
|
||||
@@ -27,3 +30,10 @@ class Preferences(Adw.PreferencesWindow):
|
||||
self.settings.set_boolean("clear-after-send", True)
|
||||
else:
|
||||
self.settings.set_boolean("clear-after-send", False)
|
||||
|
||||
def setup_providers(self):
|
||||
for provider in self.app.providers.values():
|
||||
try:
|
||||
self.provider_group.add(provider.preferences(self))
|
||||
except TypeError: # no prefs
|
||||
pass
|
||||
|
||||
29
src/provider/__init__.py
Normal file
29
src/provider/__init__.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from .huggingchat import HuggingChatProvider
|
||||
from .baichat import BAIChatProvider
|
||||
from .openaigpt35turbo import OpenAIGPT35TurboProvider
|
||||
from .openaigpt4 import OpenAIGPT4Provider
|
||||
from .catgpt import CatGPTProvider
|
||||
from .openaitextdavinci003 import OpenAITextDavinci003
|
||||
from .alpacalora import AlpacaLoRAProvider
|
||||
from .hfgoogleflant5xxl import HuggingFaceGoogleFlanT5XXLProvider
|
||||
from .hfgoogleflanu12 import HuggingFaceGoogleFlanU12Provider
|
||||
from .hfopenassistantsft1pythia12b import HuggingFaceOpenAssistantSFT1PythiaProvider
|
||||
from .hfgpt2 import HuggingFaceGPT2Provider
|
||||
from .hfdialogpt import HuggingFaceDialoGPTLargeProvider
|
||||
from .bard import BardProvider
|
||||
|
||||
PROVIDERS = {
|
||||
"alpacalora": AlpacaLoRAProvider,
|
||||
"baichat": BAIChatProvider,
|
||||
"bard": BardProvider,
|
||||
"catgpt": CatGPTProvider,
|
||||
"hfdialogpt": HuggingFaceDialoGPTLargeProvider,
|
||||
"hfgoogleflant5xxl": HuggingFaceGoogleFlanT5XXLProvider,
|
||||
"hfgoogleflanu12": HuggingFaceGoogleFlanU12Provider,
|
||||
"hfgpt2": HuggingFaceGPT2Provider,
|
||||
"hfopenassistantsft1pythia12b": HuggingFaceOpenAssistantSFT1PythiaProvider,
|
||||
"huggingchat": HuggingChatProvider,
|
||||
"openaigpt35turbo": OpenAIGPT35TurboProvider,
|
||||
"openaigpt4": OpenAIGPT4Provider,
|
||||
"openaitextdavinci003": OpenAITextDavinci003,
|
||||
}
|
||||
63
src/provider/alpacalora.py
Normal file
63
src/provider/alpacalora.py
Normal file
@@ -0,0 +1,63 @@
|
||||
from .base import BavarderProvider
|
||||
|
||||
import socket
|
||||
import requests
|
||||
|
||||
from gi.repository import Gtk, Adw, GLib
|
||||
|
||||
|
||||
class AlpacaLoRAProvider(BavarderProvider):
|
||||
name = "Alpaca-LoRA"
|
||||
slug = "alpacalora"
|
||||
|
||||
def __init__(self, win, app, *args, **kwargs):
|
||||
super().__init__(win, app, *args, **kwargs)
|
||||
|
||||
def ask(self, prompt):
|
||||
try:
|
||||
response = requests.post(
|
||||
"https://tloen-alpaca-lora.hf.space/run/predict",
|
||||
json={
|
||||
"data": [
|
||||
prompt,
|
||||
prompt,
|
||||
0.1,
|
||||
0.75,
|
||||
40,
|
||||
4,
|
||||
128,
|
||||
]
|
||||
},
|
||||
).json()
|
||||
except socket.gaierror:
|
||||
self.no_connection()
|
||||
return ""
|
||||
else:
|
||||
self.win.banner.set_revealed(False)
|
||||
r = response["data"][0]
|
||||
GLib.idle_add(self.update_response, r)
|
||||
return r
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return False
|
||||
|
||||
def preferences(self):
|
||||
self.no_preferences()
|
||||
|
||||
def about(self):
|
||||
about = Adw.AboutWindow(
|
||||
transient_for=self.props.active_window,
|
||||
application_name="Alpaca-LoRA",
|
||||
developer_name="Stanford Alpaca",
|
||||
developers=["0xMRTT https://github.com/0xMRTT"],
|
||||
license_type=Gtk.License.GPL_3_0,
|
||||
version=version,
|
||||
copyright="© 2023 0xMRTT",
|
||||
)
|
||||
|
||||
def save(self):
|
||||
return {}
|
||||
|
||||
def load(self, data):
|
||||
pass
|
||||
52
src/provider/baichat.py
Normal file
52
src/provider/baichat.py
Normal file
@@ -0,0 +1,52 @@
|
||||
from .base import BavarderProvider
|
||||
|
||||
from baichat_py import BAIChat
|
||||
import socket
|
||||
|
||||
from gi.repository import Gtk, Adw, GLib
|
||||
|
||||
class BAIChatProvider(BavarderProvider):
|
||||
name = "BAI Chat"
|
||||
slug = "baichat"
|
||||
|
||||
def __init__(self, win, app, *args, **kwargs):
|
||||
super().__init__(win, app, *args, **kwargs)
|
||||
self.chat = BAIChat(sync=True)
|
||||
|
||||
def ask(self, prompt):
|
||||
try:
|
||||
response = self.chat.sync_ask(prompt)
|
||||
except KeyError:
|
||||
self.win.banner.set_revealed(False)
|
||||
return ""
|
||||
except socket.gaierror:
|
||||
self.no_connection()
|
||||
return ""
|
||||
else:
|
||||
self.win.banner.set_revealed(False)
|
||||
GLib.idle_add(self.update_response, response.text)
|
||||
return response.text
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return False
|
||||
|
||||
def preferences(self):
|
||||
self.no_preferences()
|
||||
|
||||
def about(self):
|
||||
about = Adw.AboutWindow(
|
||||
transient_for=self.props.active_window,
|
||||
application_name="BAI Chat",
|
||||
developer_name="Theb.ai",
|
||||
developers=["0xMRTT https://github.com/0xMRTT"],
|
||||
license_type=Gtk.License.GPL_3_0,
|
||||
version=version,
|
||||
copyright="© 2023 0xMRTT",
|
||||
)
|
||||
|
||||
def save(self):
|
||||
return {}
|
||||
|
||||
def load(self, data):
|
||||
pass
|
||||
93
src/provider/bard.py
Normal file
93
src/provider/bard.py
Normal file
@@ -0,0 +1,93 @@
|
||||
from .base import BavarderProvider
|
||||
|
||||
import socket
|
||||
|
||||
from googlebardpy import BardChat
|
||||
|
||||
from gi.repository import Gtk, Adw, GLib
|
||||
|
||||
class BardProvider(BavarderProvider):
|
||||
name = "Bard"
|
||||
slug = "bard"
|
||||
version = "0.1.0"
|
||||
|
||||
def __init__(self, win, app, *args, **kwargs):
|
||||
super().__init__(win, app, *args, **kwargs)
|
||||
self.pref_win = None
|
||||
|
||||
def ask(self, prompt):
|
||||
try:
|
||||
response = self.chat.ask(prompt)
|
||||
response = response["content"]
|
||||
except AttributeError:
|
||||
self.no_api_key()
|
||||
return ""
|
||||
except socket.gaierror:
|
||||
self.no_connection()
|
||||
return ""
|
||||
else:
|
||||
self.hide_banner()
|
||||
GLib.idle_add(self.update_response, response)
|
||||
return response
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return True
|
||||
|
||||
def preferences(self, win):
|
||||
self.pref_win = win
|
||||
|
||||
self.expander = Adw.ExpanderRow()
|
||||
self.expander.props.title = self.name
|
||||
|
||||
about_button = Gtk.Button()
|
||||
about_button.set_label("About")
|
||||
about_button.connect("clicked", self.about)
|
||||
about_button.set_valign(Gtk.Align.CENTER)
|
||||
self.expander.add_action(about_button) # TODO: in Adw 1.4, use add_suffix
|
||||
|
||||
|
||||
self.api_row = Adw.PasswordEntryRow()
|
||||
self.api_row.connect("apply", self.on_apply)
|
||||
self.api_row.props.title = "__Secure-1PSID cookie"
|
||||
self.api_row.set_show_apply_button(True)
|
||||
self.expander.add_row(self.api_row)
|
||||
|
||||
return self.expander
|
||||
|
||||
def on_apply(self, widget):
|
||||
self.hide_banner()
|
||||
api_key = self.api_row.get_text()
|
||||
self.api_key = api_key
|
||||
try:
|
||||
self.chat = BardChat(api_key)
|
||||
except AttributeError:
|
||||
self.banner.props.title = "Invalid API key"
|
||||
self.banner.props.button_label = ""
|
||||
self.banner.set_revealed(True)
|
||||
|
||||
def about(self, *args):
|
||||
about = Adw.AboutWindow(
|
||||
transient_for=self.pref_win,
|
||||
application_name="Bard",
|
||||
developer_name="Google",
|
||||
developers=["0xMRTT https://github.com/0xMRTT"],
|
||||
license_type=Gtk.License.GPL_3_0,
|
||||
version=self.version,
|
||||
copyright="© 2023 0xMRTT",
|
||||
)
|
||||
about.present()
|
||||
|
||||
def save(self):
|
||||
try:
|
||||
return {"api_key": self.api_key}
|
||||
except AttributeError: # no api key
|
||||
return {}
|
||||
|
||||
def load(self, data):
|
||||
try:
|
||||
self.chat = BardChat(data['api_key'])
|
||||
self.api_key = data['api_key']
|
||||
except AttributeError:
|
||||
self.chat = None
|
||||
self.api_key = None
|
||||
80
src/provider/base.py
Normal file
80
src/provider/base.py
Normal file
@@ -0,0 +1,80 @@
|
||||
from gettext import gettext as _
|
||||
|
||||
from gi.repository import Gtk, Adw
|
||||
|
||||
import json
|
||||
class BavarderProvider:
|
||||
name = None
|
||||
slug = None
|
||||
|
||||
def __init__(self, win, app, *args, **kwargs):
|
||||
self.win = win
|
||||
self.banner = win.banner
|
||||
self.bot_text_view = win.bot_text_view
|
||||
self.app = app
|
||||
self.chat = None
|
||||
self.update_response = app.update_response
|
||||
|
||||
def ask(self, prompt):
|
||||
raise NotImplementedError()
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
def preferences(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
def no_api_key(self, title=None):
|
||||
if title:
|
||||
self.win.banner.props.title = title
|
||||
else:
|
||||
self.win.banner.props.title = (
|
||||
_("No API key provided, you can provide one in settings")
|
||||
)
|
||||
self.win.banner.props.button_label = _("Open settings")
|
||||
self.win.banner.connect("button-clicked", self.app.on_preferences_action)
|
||||
self.win.banner.set_revealed(True)
|
||||
|
||||
def no_connection(self):
|
||||
self.win.banner.props.title = _("No network connection")
|
||||
self.win.banner.props.button_label = ""
|
||||
self.win.banner.set_revealed(True)
|
||||
|
||||
def hide_banner(self):
|
||||
self.win.banner.set_revealed(False)
|
||||
|
||||
def about(self, *args):
|
||||
raise NotImplementedError()
|
||||
|
||||
def no_preferences(self, win):
|
||||
self.pref_win = win
|
||||
|
||||
self.expander = Adw.ExpanderRow()
|
||||
self.expander.props.title = self.name
|
||||
|
||||
about_button = Gtk.Button()
|
||||
about_button.set_label("About")
|
||||
about_button.connect("clicked", self.about)
|
||||
about_button.set_valign(Gtk.Align.CENTER)
|
||||
self.expander.add_action(about_button) # TODO: in Adw 1.4, use add_suffix
|
||||
|
||||
|
||||
self.no_pref_row = Adw.ActionRow()
|
||||
self.no_pref_row.props.title = "No preferences available"
|
||||
self.expander.add_row(self.no_pref_row)
|
||||
|
||||
return self.expander
|
||||
|
||||
def save(self):
|
||||
return {}
|
||||
|
||||
def load(self, data):
|
||||
raise NotImplementedError()
|
||||
|
||||
def chunk(self, prompt, n=4000):
|
||||
if len(prompt) > n:
|
||||
print("Chuncking prompt")
|
||||
prompt = [(prompt[i:i+n]) for i in range(0, len(prompt), n)]
|
||||
return prompt
|
||||
|
||||
69
src/provider/catgpt.py
Normal file
69
src/provider/catgpt.py
Normal file
@@ -0,0 +1,69 @@
|
||||
from .base import BavarderProvider
|
||||
|
||||
from random import choice, randint
|
||||
|
||||
from gi.repository import Gtk, Adw, GLib
|
||||
|
||||
class CatGPTProvider(BavarderProvider):
|
||||
name = _("Cat GPT")
|
||||
slug = "catgpt"
|
||||
version = "0.1.0"
|
||||
|
||||
def __init__(self, win, app, *args, **kwargs):
|
||||
super().__init__(win, app, *args, **kwargs)
|
||||
self.chat = None
|
||||
|
||||
def ask(self, prompt):
|
||||
return " ".join([self.pick_generator()() for i in range(randint(1, 12))])
|
||||
|
||||
def pick_generator(self):
|
||||
if randint(1, 15) == 1:
|
||||
return choice(
|
||||
[
|
||||
lambda: "ня" * randint(1, 4),
|
||||
lambda: "ニャン" * randint(1, 4),
|
||||
lambda: "喵" * randint(1, 4),
|
||||
lambda: "ña" * randint(1, 4),
|
||||
lambda: "ڽا" * randint(1, 4),
|
||||
lambda: "ম্যাও" * randint(1, 4),
|
||||
]
|
||||
)
|
||||
|
||||
return choice(
|
||||
[
|
||||
lambda: "meow" * randint(1, 3),
|
||||
lambda: "mew" * randint(1, 3),
|
||||
lambda: "miau" * randint(1, 3),
|
||||
lambda: "miaou" * randint(1, 3),
|
||||
lambda: "miao" * randint(1, 3),
|
||||
lambda: "nya" * randint(1, 3),
|
||||
lambda: "m" + "r" * randint(1, 6) + "p",
|
||||
lambda: "pur" + "r" * randint(1, 6),
|
||||
lambda: "nya" * randint(1, 3) + "ny" + "a" * randint(1, 10),
|
||||
]
|
||||
)
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return False
|
||||
|
||||
def preferences(self, win):
|
||||
return self.no_preferences(win)
|
||||
|
||||
def about(self, *args):
|
||||
about = Adw.AboutWindow(
|
||||
transient_for=self.pref_win,
|
||||
application_name=_("Cat GPT"),
|
||||
developer_name="0xMRTT",
|
||||
developers=["0xMRTT https://github.com/0xMRTT"],
|
||||
license_type=Gtk.License.GPL_3_0,
|
||||
version=self.version,
|
||||
copyright="© 2023 0xMRTT",
|
||||
)
|
||||
about.present()
|
||||
|
||||
def save(self):
|
||||
return {}
|
||||
|
||||
def load(self, data):
|
||||
pass
|
||||
50
src/provider/hfdialogpt.py
Normal file
50
src/provider/hfdialogpt.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from .huggingface import BaseHFProvider
|
||||
import json
|
||||
import socket
|
||||
import requests
|
||||
|
||||
from gi.repository import Gtk, Adw, GLib
|
||||
|
||||
|
||||
class HuggingFaceDialoGPTLargeProvider(BaseHFProvider):
|
||||
name = "DialoGPT"
|
||||
slug = "dialogpt"
|
||||
model = "microsoft/DialoGPT-large"
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return False
|
||||
|
||||
def ask(self, prompt):
|
||||
try:
|
||||
payload = json.dumps(
|
||||
{
|
||||
"inputs": {
|
||||
# "past_user_inputs": ["Which movie is the best ?"],
|
||||
# "generated_responses": ["It's Die Hard for sure."],
|
||||
"text": prompt
|
||||
},
|
||||
}
|
||||
)
|
||||
headers = {"Content-Type": "application/json"}
|
||||
if self.authorization:
|
||||
headers["Authorization"] = f"Bearer {self.api_key}"
|
||||
url = f"https://api-inference.huggingface.co/models/{self.model}"
|
||||
print(url)
|
||||
response = requests.request("POST", url, headers=headers, data=payload)
|
||||
print(response.json())
|
||||
response = response.json()["generated_text"]
|
||||
|
||||
# except NoApikey:
|
||||
# self.no_api_key()
|
||||
# return ""
|
||||
except KeyError:
|
||||
pass
|
||||
except socket.gaierror:
|
||||
self.no_connection()
|
||||
return ""
|
||||
else:
|
||||
self.hide_banner()
|
||||
print(response)
|
||||
GLib.idle_add(self.update_response, response)
|
||||
return response
|
||||
11
src/provider/hfgoogleflant5xxl.py
Normal file
11
src/provider/hfgoogleflant5xxl.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from .huggingface import BaseHFProvider
|
||||
|
||||
|
||||
class HuggingFaceGoogleFlanT5XXLProvider(BaseHFProvider):
|
||||
name = "Google Flan T5 XXL"
|
||||
slug = "hfgoogleflant5xxl"
|
||||
model = "google/flan-t5-xxl"
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return False
|
||||
11
src/provider/hfgoogleflanu12.py
Normal file
11
src/provider/hfgoogleflanu12.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from .huggingface import BaseHFProvider
|
||||
|
||||
|
||||
class HuggingFaceGoogleFlanU12Provider(BaseHFProvider):
|
||||
name = "Google Flan U12"
|
||||
slug = "hfgoogleflanu12"
|
||||
model = "google/flan-ul2"
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return False
|
||||
11
src/provider/hfgpt2.py
Normal file
11
src/provider/hfgpt2.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from .huggingface import BaseHFProvider
|
||||
|
||||
|
||||
class HuggingFaceGPT2Provider(BaseHFProvider):
|
||||
name = "GPT 2"
|
||||
slug = "gpt2"
|
||||
model = "gpt2"
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return False
|
||||
11
src/provider/hfopenassistantsft1pythia12b.py
Normal file
11
src/provider/hfopenassistantsft1pythia12b.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from .huggingface import BaseHFProvider
|
||||
|
||||
|
||||
class HuggingFaceOpenAssistantSFT1PythiaProvider(BaseHFProvider):
|
||||
name = "Open-Assistant SFT-1 12B Model "
|
||||
slug = "hfopenassistantsft1pythia12b"
|
||||
model = "OpenAssistant/oasst-sft-1-pythia-12b"
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return False
|
||||
58
src/provider/huggingchat.py
Normal file
58
src/provider/huggingchat.py
Normal file
@@ -0,0 +1,58 @@
|
||||
from .base import BavarderProvider
|
||||
|
||||
from hgchat import HGChat
|
||||
import socket
|
||||
|
||||
|
||||
from gi.repository import Gtk, Adw, GLib
|
||||
|
||||
|
||||
class HuggingChatProvider(BavarderProvider):
|
||||
name = "Hugging Chat"
|
||||
slug = "huggingchat"
|
||||
|
||||
def __init__(self, win, app, *args, **kwargs):
|
||||
super().__init__(win, app, *args, **kwargs)
|
||||
self.chat = HGChat()
|
||||
|
||||
def ask(self, prompt):
|
||||
try:
|
||||
response = self.chat.ask(prompt)
|
||||
except socket.gaierror:
|
||||
self.no_connection()
|
||||
return ""
|
||||
else:
|
||||
self.win.banner.set_revealed(False)
|
||||
r = ""
|
||||
for i in response:
|
||||
char = i["token"]["text"]
|
||||
if char == "</s>":
|
||||
r += "\n"
|
||||
else:
|
||||
r += char
|
||||
GLib.idle_add(self.update_response, r)
|
||||
return r
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return False
|
||||
|
||||
def preferences(self):
|
||||
self.no_preferences()
|
||||
|
||||
def about(self):
|
||||
about = Adw.AboutWindow(
|
||||
transient_for=self.props.active_window,
|
||||
application_name="Hugging Chat",
|
||||
developer_name="Hugging Face",
|
||||
developers=["0xMRTT https://github.com/0xMRTT"],
|
||||
license_type=Gtk.License.GPL_3_0,
|
||||
version=version,
|
||||
copyright="© 2023 0xMRTT",
|
||||
)
|
||||
|
||||
def save(self):
|
||||
return {}
|
||||
|
||||
def load(self, data):
|
||||
pass
|
||||
97
src/provider/huggingface.py
Normal file
97
src/provider/huggingface.py
Normal file
@@ -0,0 +1,97 @@
|
||||
import requests
|
||||
import json
|
||||
from .base import BavarderProvider
|
||||
|
||||
import socket
|
||||
|
||||
from gi.repository import Gtk, Adw, GLib
|
||||
|
||||
|
||||
class BaseHFProvider(BavarderProvider):
|
||||
name = None
|
||||
slug = None
|
||||
model = None
|
||||
authorization = True
|
||||
|
||||
def __init__(self, win, app, *args, **kwargs):
|
||||
super().__init__(win, app, *args, **kwargs)
|
||||
self.api_key = None
|
||||
|
||||
def ask(self, prompt):
|
||||
try:
|
||||
payload = json.dumps({"inputs": prompt})
|
||||
headers = {"Content-Type": "application/json"}
|
||||
if self.authorization:
|
||||
headers["Authorization"] = f"Bearer {self.api_key}"
|
||||
url = f"https://api-inference.huggingface.co/models/{self.model}"
|
||||
print(url)
|
||||
response = requests.request("POST", url, headers=headers, data=payload)
|
||||
if response.status_code == 403:
|
||||
self.no_api_key()
|
||||
return ""
|
||||
elif response.status_code != 200:
|
||||
self.win.banner.props.title = response.json()["error"]
|
||||
self.win.banner.props.button_label = ""
|
||||
self.win.banner.set_revealed(True)
|
||||
return ""
|
||||
print(response)
|
||||
response = response.json()[0]["generated_text"]
|
||||
|
||||
# except NoApikey:
|
||||
# self.no_api_key()
|
||||
# return ""
|
||||
except KeyError:
|
||||
pass
|
||||
except socket.gaierror:
|
||||
self.no_connection()
|
||||
return ""
|
||||
else:
|
||||
self.hide_banner()
|
||||
print(response)
|
||||
GLib.idle_add(self.update_response, response)
|
||||
return response
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return False
|
||||
|
||||
def preferences(self):
|
||||
if self.require_api_key:
|
||||
self.expander = Adw.ExpanderRow()
|
||||
self.expander.props.title = self.name
|
||||
|
||||
self.api_row = Adw.PasswordEntryRow()
|
||||
self.api_row.connect("apply", self.on_apply)
|
||||
self.api_row.props.title = "API Key"
|
||||
self.api_row.props.text = self.api_key or ""
|
||||
self.api_row.set_show_apply_button(True)
|
||||
self.expander.add_row(self.api_row)
|
||||
|
||||
return self.expander
|
||||
pass
|
||||
|
||||
def on_apply(self, widget):
|
||||
self.hide_banner()
|
||||
self.api_key = self.api_row.get_text()
|
||||
print(self.api_key)
|
||||
|
||||
def about(self):
|
||||
about = Adw.AboutWindow(
|
||||
transient_for=self.props.active_window,
|
||||
application_name=self.name,
|
||||
developer_name="HuggingFace",
|
||||
developers=["0xMRTT https://github.com/0xMRTT"],
|
||||
license_type=Gtk.License.GPL_3_0,
|
||||
version=version,
|
||||
copyright="© 2023 0xMRTT",
|
||||
)
|
||||
|
||||
def save(self):
|
||||
if self.require_api_key:
|
||||
return {"api_key": self.api_key}
|
||||
return {}
|
||||
|
||||
def load(self, data):
|
||||
if self.require_api_key:
|
||||
self.api_key = data["api_key"]
|
||||
|
||||
24
src/provider/meson.build
Normal file
24
src/provider/meson.build
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
providers_dir = join_paths(moduledir, 'provider')
|
||||
|
||||
providers_sources = [
|
||||
'__init__.py',
|
||||
'alpacalora.py',
|
||||
'baichat.py',
|
||||
'bard.py',
|
||||
'base.py',
|
||||
'catgpt.py',
|
||||
'hfdialogpt.py',
|
||||
'hfgoogleflant5xxl.py',
|
||||
'hfgoogleflanu12.py',
|
||||
'hfgpt2.py',
|
||||
'hfopenassistantsft1pythia12b.py',
|
||||
'huggingchat.py',
|
||||
'huggingface.py',
|
||||
'openai.py',
|
||||
'openaigpt4.py',
|
||||
'openaigpt35turbo.py',
|
||||
'openaitextdavinci003.py',
|
||||
]
|
||||
|
||||
PY_INSTALLDIR.install_sources(providers_sources, subdir: providers_dir)
|
||||
106
src/provider/openai.py
Normal file
106
src/provider/openai.py
Normal file
@@ -0,0 +1,106 @@
|
||||
from .base import BavarderProvider
|
||||
|
||||
import openai
|
||||
import socket
|
||||
|
||||
from gi.repository import Gtk, Adw, GLib
|
||||
|
||||
|
||||
class BaseOpenAIProvider(BavarderProvider):
|
||||
name = None
|
||||
slug = None
|
||||
model = None
|
||||
version = "0.1.0"
|
||||
api_key_title = "API Key"
|
||||
|
||||
def __init__(self, win, app, *args, **kwargs):
|
||||
super().__init__(win, app, *args, **kwargs)
|
||||
self.chat = openai.ChatCompletion
|
||||
self.pref_win = None
|
||||
|
||||
def ask(self, prompt):
|
||||
prompt = self.chunk(prompt)
|
||||
try:
|
||||
if isinstance(prompt, list):
|
||||
self.win.banner.props.title = "Prompt too long, splitting into chunks."
|
||||
self.win.banner.props.button_label = ""
|
||||
self.win.banner.set_revealed(True)
|
||||
response = ""
|
||||
for chunk in prompt:
|
||||
response += self.chat.create(
|
||||
model=self.model, messages=[{"role": "user", "content": chunk}]
|
||||
).choices[0].message.content
|
||||
else:
|
||||
response = self.chat.create(
|
||||
model=self.model, messages=[{"role": "user", "content": prompt}]
|
||||
)
|
||||
response = response.choices[0].message.content
|
||||
except openai.error.AuthenticationError:
|
||||
self.no_api_key()
|
||||
return ""
|
||||
except openai.error.InvalidRequestError:
|
||||
self.win.banner.props.title = "You don't have access to this model"
|
||||
self.win.banner.props.button_label = ""
|
||||
self.win.banner.set_revealed(True)
|
||||
return ""
|
||||
except openai.error.RateLimitError:
|
||||
self.win.banner.props.title = "You exceeded your current quota, please check your plan and billing details."
|
||||
self.win.banner.props.button_label = ""
|
||||
self.win.banner.set_revealed(True)
|
||||
return ""
|
||||
except socket.gaierror:
|
||||
self.no_connection()
|
||||
return ""
|
||||
else:
|
||||
self.hide_banner()
|
||||
GLib.idle_add(self.update_response, response)
|
||||
return response
|
||||
|
||||
@property
|
||||
def require_api_key(self):
|
||||
return True
|
||||
|
||||
def preferences(self, win):
|
||||
self.pref_win = win
|
||||
|
||||
self.expander = Adw.ExpanderRow()
|
||||
self.expander.props.title = self.name
|
||||
|
||||
about_button = Gtk.Button()
|
||||
about_button.set_label("About")
|
||||
about_button.connect("clicked", self.about)
|
||||
about_button.set_valign(Gtk.Align.CENTER)
|
||||
self.expander.add_action(about_button) # TODO: in Adw 1.4, use add_suffix
|
||||
|
||||
self.api_row = Adw.PasswordEntryRow()
|
||||
self.api_row.connect("apply", self.on_apply)
|
||||
self.api_row.props.text = openai.api_key or ""
|
||||
self.api_row.props.title = self.api_key_title
|
||||
self.api_row.set_show_apply_button(True)
|
||||
self.expander.add_row(self.api_row)
|
||||
|
||||
return self.expander
|
||||
|
||||
def on_apply(self, widget):
|
||||
self.hide_banner()
|
||||
api_key = self.api_row.get_text()
|
||||
openai.api_key = api_key
|
||||
|
||||
def about(self, *args):
|
||||
about = Adw.AboutWindow(
|
||||
transient_for=self.pref_win,
|
||||
application_name=self.name,
|
||||
developer_name="OpenAI",
|
||||
developers=["0xMRTT https://github.com/0xMRTT"],
|
||||
license_type=Gtk.License.GPL_3_0,
|
||||
version=self.version,
|
||||
copyright="© 2023 0xMRTT",
|
||||
)
|
||||
about.present()
|
||||
|
||||
def save(self):
|
||||
return {"api_key": openai.api_key}
|
||||
|
||||
def load(self, data):
|
||||
if data["api_key"]:
|
||||
openai.api_key = data["api_key"]
|
||||
7
src/provider/openaigpt35turbo.py
Normal file
7
src/provider/openaigpt35turbo.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from .openai import BaseOpenAIProvider
|
||||
|
||||
|
||||
class OpenAIGPT35TurboProvider(BaseOpenAIProvider):
|
||||
name = "OpenAI GPT 3.5 Turbo"
|
||||
slug = "openaigpt35turbo"
|
||||
model = "gpt-3.5-turbo"
|
||||
8
src/provider/openaigpt4.py
Normal file
8
src/provider/openaigpt4.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from .openai import BaseOpenAIProvider
|
||||
|
||||
|
||||
class OpenAIGPT4Provider(BaseOpenAIProvider):
|
||||
name = "OpenAI GPT 4"
|
||||
slug = "openaigpt4"
|
||||
model = "gpt-4"
|
||||
api_key_title = "API Key (Require a plan with access to the GPT-4 model)"
|
||||
7
src/provider/openaitextdavinci003.py
Normal file
7
src/provider/openaitextdavinci003.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from .openai import BaseOpenAIProvider
|
||||
|
||||
|
||||
class OpenAITextDavinci003(BaseOpenAIProvider):
|
||||
name = "OpenAI Text Davinci 003"
|
||||
slug = "openaitextdavinci003"
|
||||
model = "text-davinci-003"
|
||||
@@ -33,6 +33,13 @@ class BavarderWindow(Adw.ApplicationWindow):
|
||||
wait_button = Gtk.Template.Child()
|
||||
response_stack = Gtk.Template.Child()
|
||||
banner = Gtk.Template.Child()
|
||||
# listen = Gtk.Template.Child()
|
||||
# listen_wait = Gtk.Template.Child()
|
||||
# listen_spinner = Gtk.Template.Child()
|
||||
# speak = Gtk.Template.Child()
|
||||
# speak_wait = Gtk.Template.Child()
|
||||
# speak_spinner = Gtk.Template.Child()
|
||||
provider_selector = Gtk.Template.Child()
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
Reference in New Issue
Block a user