Add localization

This commit is contained in:
wheaney 2024-08-02 13:39:31 -07:00
parent 8ea7b49602
commit 8ef0b04db4
33 changed files with 3205 additions and 105 deletions

1
.gitignore vendored
View File

@ -4,3 +4,4 @@ __pycache__
gschemas.compiled
.flatpak-builder/
out/
*.po~

25
ui/bin/update_pot_files Executable file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
pushd $SCRIPT_DIR/..
xgettext --from-code=UTF-8 -k_ -kN_ -L Python -o po/breezydesktop.pot src/*.py
xgettext --from-code=UTF-8 -k_ -kN_ -j -L Glade -o po/breezydesktop.pot src/gtk/*.ui
msgmerge --update po/de.po po/breezydesktop.pot
msgmerge --update po/es.po po/breezydesktop.pot
msgmerge --update po/fr.po po/breezydesktop.pot
msgmerge --update po/it.po po/breezydesktop.pot
msgmerge --update po/zh_CN.po po/breezydesktop.pot
msgmerge --update po/ja.po po/breezydesktop.pot
for file in po/*.po; do
lang=${file##*/}
lang=${lang%.po}
outdir="po/$lang/LC_MESSAGES"
mkdir -p "$outdir"
msgfmt -o "$outdir/breezydesktop.mo" "$file"
done
popd

View File

@ -0,0 +1 @@
de es fr it ja zh_CN

View File

@ -1,6 +0,0 @@
data/com.xronlinux.BreezyDesktop.desktop.in
data/com.xronlinux.BreezyDesktop.metainfo.xml.in
data/com.xronlinux.BreezyDesktop.gschema.xml
src/main.py
src/window.py
src/window.ui

434
ui/po/breezydesktop.pot Normal file
View File

@ -0,0 +1,434 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-15 15:36-0700\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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/connecteddevice.py:16
msgid ""
"Switches your glasses into side-by-side mode and doubles the width of the "
"display."
msgstr ""
#: src/connecteddevice.py:17
msgid "This feature is not currently supported for your device."
msgstr ""
#: src/licensedialog.py:49
msgid "Paid Tier Status"
msgstr ""
#: src/licensedialog.py:57
msgid "Feature Availability"
msgstr ""
#: src/licensefeaturerow.py:15 src/shortcutdialog.py:107
msgid "Disabled"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "In trial"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "Enabled"
msgstr ""
#: src/licensefeaturerow.py:24 src/licensetierrow.py:30
#, python-brace-format
msgid " ({time_remaining} remaining)"
msgstr ""
#: src/licensefeaturerow.py:32
msgid "Side-by-side mode (gaming)"
msgstr ""
#: src/licensefeaturerow.py:33
msgid "Smooth Follow (gaming)"
msgstr ""
#: src/licensefeaturerow.py:34
msgid "Breezy Desktop (productivity)"
msgstr ""
#: src/licensetierrow.py:24
msgid "Active"
msgstr ""
#: src/licensetierrow.py:24
msgid "Inactive"
msgstr ""
#: src/licensetierrow.py:41
#, python-brace-format
msgid "<b>${amount}</b> USD"
msgstr ""
#: src/licensetierrow.py:43
msgid " to renew"
msgstr ""
#: src/licensetierrow.py:45
msgid " to upgrade"
msgstr ""
#: src/licensetierrow.py:47
msgid "Paid through next renewal period"
msgstr ""
#: src/licensetierrow.py:56
msgid "Gaming"
msgstr ""
#: src/licensetierrow.py:57
msgid "Productivity"
msgstr ""
#: src/licensetierrow.py:63
msgid " - renewing monthly"
msgstr ""
#: src/licensetierrow.py:64
msgid " - renewing yearly"
msgstr ""
#: src/licensetierrow.py:65
msgid "with lifetime access"
msgstr ""
#: src/licensetierrow.py:72
msgid "Monthly"
msgstr ""
#: src/licensetierrow.py:73
msgid "Yearly"
msgstr ""
#: src/licensetierrow.py:74
msgid "Lifetime"
msgstr ""
#: src/time.py:14
msgid "less than an hour"
msgstr ""
#: src/time.py:17
msgid "1 hour"
msgstr ""
#: src/time.py:17
#, python-brace-format
msgid "{time_remaining} hours"
msgstr ""
#: src/time.py:20
msgid "1 day"
msgstr ""
#: src/time.py:20
#, python-brace-format
msgid "{time_remaining} days"
msgstr ""
#: src/gtk/connected-device.ui:21
msgid "connected"
msgstr ""
#: src/gtk/connected-device.ui:31
msgid "General Settings"
msgstr ""
#: src/gtk/connected-device.ui:41
msgid "Features"
msgstr ""
#: src/gtk/connected-device.ui:44
msgid "XR effect"
msgstr ""
#: src/gtk/connected-device.ui:45
msgid "Enables the Breezy Desktop XR effect."
msgstr ""
#: src/gtk/connected-device.ui:55
msgid "Widescreen mode"
msgstr ""
#: src/gtk/connected-device.ui:66
msgid "Follow mode"
msgstr ""
#: src/gtk/connected-device.ui:67
msgid "Keep the virtual display near the center of your view."
msgstr ""
#: src/gtk/connected-device.ui:77
msgid "Curved display"
msgstr ""
#: src/gtk/connected-device.ui:78
msgid "Switch between flat and curved displays."
msgstr ""
#: src/gtk/connected-device.ui:91
msgid "Adjustments"
msgstr ""
#: src/gtk/connected-device.ui:94
msgid "Display distance"
msgstr ""
#: src/gtk/connected-device.ui:95
msgid ""
"Closer appears larger, further appears smaller. Controls depth when in "
"widescreen mode."
msgstr ""
#: src/gtk/connected-device.ui:123
msgid "Display size"
msgstr ""
#: src/gtk/connected-device.ui:124
msgid ""
"Combine with display distance to achieve a comfortable level of depth and "
"size."
msgstr ""
#: src/gtk/connected-device.ui:152
msgid "Display toggle distances"
msgstr ""
#: src/gtk/connected-device.ui:153
msgid ""
"Use the buttons to capture the current display distance for use with the "
"keyboard shortcut."
msgstr ""
#: src/gtk/connected-device.ui:178
msgid "Follow threshold"
msgstr ""
#: src/gtk/connected-device.ui:179
msgid "How far away you can look before the display follows."
msgstr ""
#: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215
msgid "Keyboard Shortcuts"
msgstr ""
#: src/gtk/connected-device.ui:218
msgid "Re-center display shortcut"
msgstr ""
#: src/gtk/connected-device.ui:219
msgid "Pin the virtual display to the current position."
msgstr ""
#: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267
#: src/gtk/connected-device.ui:296
msgid "Change"
msgstr ""
#: src/gtk/connected-device.ui:247
msgid "Display distance shortcut"
msgstr ""
#: src/gtk/connected-device.ui:248
msgid "Quickly toggle between two predefined distances."
msgstr ""
#: src/gtk/connected-device.ui:276
msgid "Toggle follow mode shortcut"
msgstr ""
#: src/gtk/connected-device.ui:277
msgid "Quickly toggle follow mode."
msgstr ""
#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318
msgid "Advanced Settings"
msgstr ""
#: src/gtk/connected-device.ui:321
msgid "Find optimal display config"
msgstr ""
#: src/gtk/connected-device.ui:322
msgid ""
"Automatically modify the glasses display configuration for maximum "
"resolution and best scaling when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:332
msgid "Use highest refresh rate"
msgstr ""
#: src/gtk/connected-device.ui:333
msgid "Refresh rate may affect performance, disable this to set it manually."
msgstr ""
#: src/gtk/connected-device.ui:343
msgid "Always primary display"
msgstr ""
#: src/gtk/connected-device.ui:344
msgid "Automatically set the glasses as the primary display when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:354
msgid "Fast SBS mode switching"
msgstr ""
#: src/gtk/connected-device.ui:355
msgid ""
"Switches glasses to SBS mode immediately when plugged in, if widescreen mode "
"is on. May cause instability."
msgstr ""
#: src/gtk/connected-device.ui:365
msgid "Movement look-ahead"
msgstr ""
#: src/gtk/connected-device.ui:366
msgid ""
"Counteracts input lag by predicting head-tracking position ahead of render "
"time. Stick with default unless virtual display drags behind your head "
"movements, jumps ahead, or is very shaky."
msgstr ""
#: src/gtk/connected-device.ui:384
msgid "Default"
msgstr ""
#: src/gtk/failed-verification.ui:13
msgid "Breezy Desktop GNOME invalid setup"
msgstr ""
#: src/gtk/failed-verification.ui:14
msgid ""
"Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup "
"script. Report this issue if it persists."
msgstr ""
#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55
msgid "License Details"
msgstr ""
#: src/gtk/license-dialog.ui:27
msgid "Donate"
msgstr ""
#: src/gtk/license-dialog.ui:44
msgid "Request a token"
msgstr ""
#: src/gtk/license-dialog.ui:52
msgid "Verify token"
msgstr ""
#: src/gtk/no-device.ui:13
msgid "No device connected"
msgstr ""
#: src/gtk/no-device.ui:14
msgid "Breezy Desktop was unable to detect any supported XR devices."
msgstr ""
#: src/gtk/no-driver.ui:13
msgid "No driver running"
msgstr ""
#: src/gtk/no-driver.ui:14
msgid ""
"\n"
" If you installed via AUR, make sure you ran the recommended post-"
"install command:\n"
" systemctl --user enable --now xr-driver.service\n"
"\n"
" Otherwise, please file an issue on GitHub, or create a new thread "
"in the #troubleshooting channel on Discord.\n"
" "
msgstr ""
#: src/gtk/no-extension.ui:13
msgid "Breezy Desktop GNOME extension not ready"
msgstr ""
#: src/gtk/no-extension.ui:14
msgid ""
"If you have just run the setup, then you may need to log out and back in to "
"use it. Otherwise, please follow the Breezy GNOME setup instructions."
msgstr ""
#: src/gtk/no-license.ui:13
msgid "No license file was found"
msgstr ""
#: src/gtk/no-license.ui:14
msgid ""
"\n"
" The first time you use Breezy Desktop, an internet connection is "
"required to retrieve your device's license.\n"
" \n"
" Don't worry, there's no obligation to donate at this time. If you "
"haven't, you'll be given a trial license so you can decide if Breezy Desktop "
"fits your needs. \n"
" \n"
" Once you obtain a license, trial or otherwise, you can use Breezy "
"Desktop offline until features expire (or indefinitely, if you've chosen "
"lifetime access).\n"
" "
msgstr ""
#: src/gtk/no-license.ui:27
msgid "Try Again"
msgstr ""
#: src/gtk/shortcut-dialog.ui:5
msgid "Assign Keyboard Shortcut"
msgstr ""
#: src/gtk/shortcut-dialog.ui:20
msgid "Press your keyboard shortcut or 'Backspace' to disable..."
msgstr ""
#: src/gtk/window.ui:10
msgid "Breezy Desktop"
msgstr ""
#: src/gtk/window.ui:23
msgid "Menu"
msgstr ""
#: src/gtk/window.ui:35
msgid "Some features expire soon"
msgstr ""
#: src/gtk/window.ui:36 src/gtk/window.ui:43
msgid "View details"
msgstr ""
#: src/gtk/window.ui:42
msgid "Productivity features are disabled"
msgstr ""
#: src/gtk/window.ui:59
msgid "Force Reset"
msgstr ""
#: src/gtk/window.ui:63
msgid "About BreezyDesktop"
msgstr ""

434
ui/po/de.po Normal file
View File

@ -0,0 +1,434 @@
# German translations for PACKAGE package.
# Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# <wayne@xronlinux.com>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-15 15:36-0700\n"
"PO-Revision-Date: 2024-08-02 20:54-0700\n"
"Last-Translator: <wayne@xronlinux.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\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"
#: src/connecteddevice.py:16
msgid ""
"Switches your glasses into side-by-side mode and doubles the width of the "
"display."
msgstr ""
#: src/connecteddevice.py:17
msgid "This feature is not currently supported for your device."
msgstr ""
#: src/licensedialog.py:49
msgid "Paid Tier Status"
msgstr ""
#: src/licensedialog.py:57
msgid "Feature Availability"
msgstr ""
#: src/licensefeaturerow.py:15 src/shortcutdialog.py:107
msgid "Disabled"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "In trial"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "Enabled"
msgstr ""
#: src/licensefeaturerow.py:24 src/licensetierrow.py:30
#, python-brace-format
msgid " ({time_remaining} remaining)"
msgstr ""
#: src/licensefeaturerow.py:32
msgid "Side-by-side mode (gaming)"
msgstr ""
#: src/licensefeaturerow.py:33
msgid "Smooth Follow (gaming)"
msgstr ""
#: src/licensefeaturerow.py:34
msgid "Breezy Desktop (productivity)"
msgstr ""
#: src/licensetierrow.py:24
msgid "Active"
msgstr ""
#: src/licensetierrow.py:24
msgid "Inactive"
msgstr ""
#: src/licensetierrow.py:41
#, python-brace-format
msgid "<b>${amount}</b> USD"
msgstr ""
#: src/licensetierrow.py:43
msgid " to renew"
msgstr ""
#: src/licensetierrow.py:45
msgid " to upgrade"
msgstr ""
#: src/licensetierrow.py:47
msgid "Paid through next renewal period"
msgstr ""
#: src/licensetierrow.py:56
msgid "Gaming"
msgstr ""
#: src/licensetierrow.py:57
msgid "Productivity"
msgstr ""
#: src/licensetierrow.py:63
msgid " - renewing monthly"
msgstr ""
#: src/licensetierrow.py:64
msgid " - renewing yearly"
msgstr ""
#: src/licensetierrow.py:65
msgid "with lifetime access"
msgstr ""
#: src/licensetierrow.py:72
msgid "Monthly"
msgstr ""
#: src/licensetierrow.py:73
msgid "Yearly"
msgstr ""
#: src/licensetierrow.py:74
msgid "Lifetime"
msgstr ""
#: src/time.py:14
msgid "less than an hour"
msgstr ""
#: src/time.py:17
msgid "1 hour"
msgstr ""
#: src/time.py:17
#, python-brace-format
msgid "{time_remaining} hours"
msgstr ""
#: src/time.py:20
msgid "1 day"
msgstr ""
#: src/time.py:20
#, python-brace-format
msgid "{time_remaining} days"
msgstr ""
#: src/gtk/connected-device.ui:21
msgid "connected"
msgstr ""
#: src/gtk/connected-device.ui:31
msgid "General Settings"
msgstr ""
#: src/gtk/connected-device.ui:41
msgid "Features"
msgstr ""
#: src/gtk/connected-device.ui:44
msgid "XR effect"
msgstr ""
#: src/gtk/connected-device.ui:45
msgid "Enables the Breezy Desktop XR effect."
msgstr ""
#: src/gtk/connected-device.ui:55
msgid "Widescreen mode"
msgstr ""
#: src/gtk/connected-device.ui:66
msgid "Follow mode"
msgstr ""
#: src/gtk/connected-device.ui:67
msgid "Keep the virtual display near the center of your view."
msgstr ""
#: src/gtk/connected-device.ui:77
msgid "Curved display"
msgstr ""
#: src/gtk/connected-device.ui:78
msgid "Switch between flat and curved displays."
msgstr ""
#: src/gtk/connected-device.ui:91
msgid "Adjustments"
msgstr ""
#: src/gtk/connected-device.ui:94
msgid "Display distance"
msgstr ""
#: src/gtk/connected-device.ui:95
msgid ""
"Closer appears larger, further appears smaller. Controls depth when in "
"widescreen mode."
msgstr ""
#: src/gtk/connected-device.ui:123
msgid "Display size"
msgstr ""
#: src/gtk/connected-device.ui:124
msgid ""
"Combine with display distance to achieve a comfortable level of depth and "
"size."
msgstr ""
#: src/gtk/connected-device.ui:152
msgid "Display toggle distances"
msgstr ""
#: src/gtk/connected-device.ui:153
msgid ""
"Use the buttons to capture the current display distance for use with the "
"keyboard shortcut."
msgstr ""
#: src/gtk/connected-device.ui:178
msgid "Follow threshold"
msgstr ""
#: src/gtk/connected-device.ui:179
msgid "How far away you can look before the display follows."
msgstr ""
#: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215
msgid "Keyboard Shortcuts"
msgstr ""
#: src/gtk/connected-device.ui:218
msgid "Re-center display shortcut"
msgstr ""
#: src/gtk/connected-device.ui:219
msgid "Pin the virtual display to the current position."
msgstr ""
#: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267
#: src/gtk/connected-device.ui:296
msgid "Change"
msgstr ""
#: src/gtk/connected-device.ui:247
msgid "Display distance shortcut"
msgstr ""
#: src/gtk/connected-device.ui:248
msgid "Quickly toggle between two predefined distances."
msgstr ""
#: src/gtk/connected-device.ui:276
msgid "Toggle follow mode shortcut"
msgstr ""
#: src/gtk/connected-device.ui:277
msgid "Quickly toggle follow mode."
msgstr ""
#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318
msgid "Advanced Settings"
msgstr ""
#: src/gtk/connected-device.ui:321
msgid "Find optimal display config"
msgstr ""
#: src/gtk/connected-device.ui:322
msgid ""
"Automatically modify the glasses display configuration for maximum "
"resolution and best scaling when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:332
msgid "Use highest refresh rate"
msgstr ""
#: src/gtk/connected-device.ui:333
msgid "Refresh rate may affect performance, disable this to set it manually."
msgstr ""
#: src/gtk/connected-device.ui:343
msgid "Always primary display"
msgstr ""
#: src/gtk/connected-device.ui:344
msgid "Automatically set the glasses as the primary display when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:354
msgid "Fast SBS mode switching"
msgstr ""
#: src/gtk/connected-device.ui:355
msgid ""
"Switches glasses to SBS mode immediately when plugged in, if widescreen mode "
"is on. May cause instability."
msgstr ""
#: src/gtk/connected-device.ui:365
msgid "Movement look-ahead"
msgstr ""
#: src/gtk/connected-device.ui:366
msgid ""
"Counteracts input lag by predicting head-tracking position ahead of render "
"time. Stick with default unless virtual display drags behind your head "
"movements, jumps ahead, or is very shaky."
msgstr ""
#: src/gtk/connected-device.ui:384
msgid "Default"
msgstr ""
#: src/gtk/failed-verification.ui:13
msgid "Breezy Desktop GNOME invalid setup"
msgstr ""
#: src/gtk/failed-verification.ui:14
msgid ""
"Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup "
"script. Report this issue if it persists."
msgstr ""
#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55
msgid "License Details"
msgstr ""
#: src/gtk/license-dialog.ui:27
msgid "Donate"
msgstr ""
#: src/gtk/license-dialog.ui:44
msgid "Request a token"
msgstr ""
#: src/gtk/license-dialog.ui:52
msgid "Verify token"
msgstr ""
#: src/gtk/no-device.ui:13
msgid "No device connected"
msgstr ""
#: src/gtk/no-device.ui:14
msgid "Breezy Desktop was unable to detect any supported XR devices."
msgstr ""
#: src/gtk/no-driver.ui:13
msgid "No driver running"
msgstr ""
#: src/gtk/no-driver.ui:14
msgid ""
"\n"
" If you installed via AUR, make sure you ran the recommended post-"
"install command:\n"
" systemctl --user enable --now xr-driver.service\n"
"\n"
" Otherwise, please file an issue on GitHub, or create a new thread "
"in the #troubleshooting channel on Discord.\n"
" "
msgstr ""
#: src/gtk/no-extension.ui:13
msgid "Breezy Desktop GNOME extension not ready"
msgstr ""
#: src/gtk/no-extension.ui:14
msgid ""
"If you have just run the setup, then you may need to log out and back in to "
"use it. Otherwise, please follow the Breezy GNOME setup instructions."
msgstr ""
#: src/gtk/no-license.ui:13
msgid "No license file was found"
msgstr ""
#: src/gtk/no-license.ui:14
msgid ""
"\n"
" The first time you use Breezy Desktop, an internet connection is "
"required to retrieve your device's license.\n"
" \n"
" Don't worry, there's no obligation to donate at this time. If you "
"haven't, you'll be given a trial license so you can decide if Breezy Desktop "
"fits your needs. \n"
" \n"
" Once you obtain a license, trial or otherwise, you can use Breezy "
"Desktop offline until features expire (or indefinitely, if you've chosen "
"lifetime access).\n"
" "
msgstr ""
#: src/gtk/no-license.ui:27
msgid "Try Again"
msgstr ""
#: src/gtk/shortcut-dialog.ui:5
msgid "Assign Keyboard Shortcut"
msgstr ""
#: src/gtk/shortcut-dialog.ui:20
msgid "Press your keyboard shortcut or 'Backspace' to disable..."
msgstr ""
#: src/gtk/window.ui:10
msgid "Breezy Desktop"
msgstr ""
#: src/gtk/window.ui:23
msgid "Menu"
msgstr ""
#: src/gtk/window.ui:35
msgid "Some features expire soon"
msgstr ""
#: src/gtk/window.ui:36 src/gtk/window.ui:43
msgid "View details"
msgstr ""
#: src/gtk/window.ui:42
msgid "Productivity features are disabled"
msgstr ""
#: src/gtk/window.ui:59
msgid "Force Reset"
msgstr ""
#: src/gtk/window.ui:63
msgid "About BreezyDesktop"
msgstr ""

Binary file not shown.

434
ui/po/es.po Normal file
View File

@ -0,0 +1,434 @@
# Spanish translations for PACKAGE package.
# Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# <wayne@xronlinux.com>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-15 15:19-0700\n"
"PO-Revision-Date: 2024-08-02 20:55-0700\n"
"Last-Translator: <wayne@xronlinux.com>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
"Language: es\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"
#: src/connecteddevice.py:16
msgid ""
"Switches your glasses into side-by-side mode and doubles the width of the "
"display."
msgstr ""
#: src/connecteddevice.py:17
msgid "This feature is not currently supported for your device."
msgstr ""
#: src/licensedialog.py:49
msgid "Paid Tier Status"
msgstr ""
#: src/licensedialog.py:57
msgid "Feature Availability"
msgstr ""
#: src/licensefeaturerow.py:15 src/shortcutdialog.py:107
msgid "Disabled"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "In trial"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "Enabled"
msgstr ""
#: src/licensefeaturerow.py:24 src/licensetierrow.py:30
#, python-brace-format
msgid " ({time_remaining} remaining)"
msgstr ""
#: src/licensefeaturerow.py:32
msgid "Side-by-side mode (gaming)"
msgstr ""
#: src/licensefeaturerow.py:33
msgid "Smooth Follow (gaming)"
msgstr ""
#: src/licensefeaturerow.py:34
msgid "Breezy Desktop (productivity)"
msgstr ""
#: src/licensetierrow.py:24
msgid "Active"
msgstr ""
#: src/licensetierrow.py:24
msgid "Inactive"
msgstr ""
#: src/licensetierrow.py:41
#, python-brace-format
msgid "<b>${amount}</b> USD"
msgstr ""
#: src/licensetierrow.py:43
msgid " to renew"
msgstr ""
#: src/licensetierrow.py:45
msgid " to upgrade"
msgstr ""
#: src/licensetierrow.py:47
msgid "Paid through next renewal period"
msgstr ""
#: src/licensetierrow.py:56
msgid "Gaming"
msgstr ""
#: src/licensetierrow.py:57
msgid "Productivity"
msgstr ""
#: src/licensetierrow.py:63
msgid " - renewing monthly"
msgstr ""
#: src/licensetierrow.py:64
msgid " - renewing yearly"
msgstr ""
#: src/licensetierrow.py:65
msgid "with lifetime access"
msgstr ""
#: src/licensetierrow.py:72
msgid "Monthly"
msgstr ""
#: src/licensetierrow.py:73
msgid "Yearly"
msgstr ""
#: src/licensetierrow.py:74
msgid "Lifetime"
msgstr ""
#: src/time.py:14
msgid "less than an hour"
msgstr ""
#: src/time.py:17
msgid "1 hour"
msgstr ""
#: src/time.py:17
#, python-brace-format
msgid "{time_remaining} hours"
msgstr ""
#: src/time.py:20
msgid "1 day"
msgstr ""
#: src/time.py:20
#, python-brace-format
msgid "{time_remaining} days"
msgstr ""
#: src/gtk/connected-device.ui:21
msgid "connected"
msgstr ""
#: src/gtk/connected-device.ui:31
msgid "General Settings"
msgstr ""
#: src/gtk/connected-device.ui:41
msgid "Features"
msgstr ""
#: src/gtk/connected-device.ui:44
msgid "XR effect"
msgstr ""
#: src/gtk/connected-device.ui:45
msgid "Enables the Breezy Desktop XR effect."
msgstr ""
#: src/gtk/connected-device.ui:55
msgid "Widescreen mode"
msgstr ""
#: src/gtk/connected-device.ui:66
msgid "Follow mode"
msgstr ""
#: src/gtk/connected-device.ui:67
msgid "Keep the virtual display near the center of your view."
msgstr ""
#: src/gtk/connected-device.ui:77
msgid "Curved display"
msgstr ""
#: src/gtk/connected-device.ui:78
msgid "Switch between flat and curved displays."
msgstr ""
#: src/gtk/connected-device.ui:91
msgid "Adjustments"
msgstr ""
#: src/gtk/connected-device.ui:94
msgid "Display distance"
msgstr ""
#: src/gtk/connected-device.ui:95
msgid ""
"Closer appears larger, further appears smaller. Controls depth when in "
"widescreen mode."
msgstr ""
#: src/gtk/connected-device.ui:123
msgid "Display size"
msgstr ""
#: src/gtk/connected-device.ui:124
msgid ""
"Combine with display distance to achieve a comfortable level of depth and "
"size."
msgstr ""
#: src/gtk/connected-device.ui:152
msgid "Display toggle distances"
msgstr ""
#: src/gtk/connected-device.ui:153
msgid ""
"Use the buttons to capture the current display distance for use with the "
"keyboard shortcut."
msgstr ""
#: src/gtk/connected-device.ui:178
msgid "Follow threshold"
msgstr ""
#: src/gtk/connected-device.ui:179
msgid "How far away you can look before the display follows."
msgstr ""
#: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215
msgid "Keyboard Shortcuts"
msgstr ""
#: src/gtk/connected-device.ui:218
msgid "Re-center display shortcut"
msgstr ""
#: src/gtk/connected-device.ui:219
msgid "Pin the virtual display to the current position."
msgstr ""
#: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267
#: src/gtk/connected-device.ui:296
msgid "Change"
msgstr ""
#: src/gtk/connected-device.ui:247
msgid "Display distance shortcut"
msgstr ""
#: src/gtk/connected-device.ui:248
msgid "Quickly toggle between two predefined distances."
msgstr ""
#: src/gtk/connected-device.ui:276
msgid "Toggle follow mode shortcut"
msgstr ""
#: src/gtk/connected-device.ui:277
msgid "Quickly toggle follow mode."
msgstr ""
#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318
msgid "Advanced Settings"
msgstr ""
#: src/gtk/connected-device.ui:321
msgid "Find optimal display config"
msgstr ""
#: src/gtk/connected-device.ui:322
msgid ""
"Automatically modify the glasses display configuration for maximum "
"resolution and best scaling when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:332
msgid "Use highest refresh rate"
msgstr ""
#: src/gtk/connected-device.ui:333
msgid "Refresh rate may affect performance, disable this to set it manually."
msgstr ""
#: src/gtk/connected-device.ui:343
msgid "Always primary display"
msgstr ""
#: src/gtk/connected-device.ui:344
msgid "Automatically set the glasses as the primary display when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:354
msgid "Fast SBS mode switching"
msgstr ""
#: src/gtk/connected-device.ui:355
msgid ""
"Switches glasses to SBS mode immediately when plugged in, if widescreen mode "
"is on. May cause instability."
msgstr ""
#: src/gtk/connected-device.ui:365
msgid "Movement look-ahead"
msgstr ""
#: src/gtk/connected-device.ui:366
msgid ""
"Counteracts input lag by predicting head-tracking position ahead of render "
"time. Stick with default unless virtual display drags behind your head "
"movements, jumps ahead, or is very shaky."
msgstr ""
#: src/gtk/connected-device.ui:384
msgid "Default"
msgstr ""
#: src/gtk/failed-verification.ui:13
msgid "Breezy Desktop GNOME invalid setup"
msgstr ""
#: src/gtk/failed-verification.ui:14
msgid ""
"Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup "
"script. Report this issue if it persists."
msgstr ""
#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55
msgid "License Details"
msgstr ""
#: src/gtk/license-dialog.ui:27
msgid "Donate"
msgstr ""
#: src/gtk/license-dialog.ui:44
msgid "Request a token"
msgstr ""
#: src/gtk/license-dialog.ui:52
msgid "Verify token"
msgstr ""
#: src/gtk/no-device.ui:13
msgid "No device connected"
msgstr ""
#: src/gtk/no-device.ui:14
msgid "Breezy Desktop was unable to detect any supported XR devices."
msgstr ""
#: src/gtk/no-driver.ui:13
msgid "No driver running"
msgstr ""
#: src/gtk/no-driver.ui:14
msgid ""
"\n"
" If you installed via AUR, make sure you ran the recommended post-"
"install command:\n"
" systemctl --user enable --now xr-driver.service\n"
"\n"
" Otherwise, please file an issue on GitHub, or create a new thread "
"in the #troubleshooting channel on Discord.\n"
" "
msgstr ""
#: src/gtk/no-extension.ui:13
msgid "Breezy Desktop GNOME extension not ready"
msgstr ""
#: src/gtk/no-extension.ui:14
msgid ""
"If you have just run the setup, then you may need to log out and back in to "
"use it. Otherwise, please follow the Breezy GNOME setup instructions."
msgstr ""
#: src/gtk/no-license.ui:13
msgid "No license file was found"
msgstr ""
#: src/gtk/no-license.ui:14
msgid ""
"\n"
" The first time you use Breezy Desktop, an internet connection is "
"required to retrieve your device's license.\n"
" \n"
" Don't worry, there's no obligation to donate at this time. If you "
"haven't, you'll be given a trial license so you can decide if Breezy Desktop "
"fits your needs. \n"
" \n"
" Once you obtain a license, trial or otherwise, you can use Breezy "
"Desktop offline until features expire (or indefinitely, if you've chosen "
"lifetime access).\n"
" "
msgstr ""
#: src/gtk/no-license.ui:27
msgid "Try Again"
msgstr ""
#: src/gtk/shortcut-dialog.ui:5
msgid "Assign Keyboard Shortcut"
msgstr ""
#: src/gtk/shortcut-dialog.ui:20
msgid "Press your keyboard shortcut or 'Backspace' to disable..."
msgstr ""
#: src/gtk/window.ui:10
msgid "Breezy Desktop"
msgstr ""
#: src/gtk/window.ui:23
msgid "Menu"
msgstr ""
#: src/gtk/window.ui:35
msgid "Some features expire soon"
msgstr ""
#: src/gtk/window.ui:36 src/gtk/window.ui:43
msgid "View details"
msgstr ""
#: src/gtk/window.ui:42
msgid "Productivity features are disabled"
msgstr ""
#: src/gtk/window.ui:59
msgid "Force Reset"
msgstr ""
#: src/gtk/window.ui:63
msgid "About BreezyDesktop"
msgstr ""

Binary file not shown.

434
ui/po/fr.po Normal file
View File

@ -0,0 +1,434 @@
# French translations for PACKAGE package.
# Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# <wayne@xronlinux.com>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-15 15:19-0700\n"
"PO-Revision-Date: 2024-08-02 20:54-0700\n"
"Last-Translator: <wayne@xronlinux.com>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\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"
#: src/connecteddevice.py:16
msgid ""
"Switches your glasses into side-by-side mode and doubles the width of the "
"display."
msgstr ""
#: src/connecteddevice.py:17
msgid "This feature is not currently supported for your device."
msgstr ""
#: src/licensedialog.py:49
msgid "Paid Tier Status"
msgstr ""
#: src/licensedialog.py:57
msgid "Feature Availability"
msgstr ""
#: src/licensefeaturerow.py:15 src/shortcutdialog.py:107
msgid "Disabled"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "In trial"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "Enabled"
msgstr ""
#: src/licensefeaturerow.py:24 src/licensetierrow.py:30
#, python-brace-format
msgid " ({time_remaining} remaining)"
msgstr ""
#: src/licensefeaturerow.py:32
msgid "Side-by-side mode (gaming)"
msgstr ""
#: src/licensefeaturerow.py:33
msgid "Smooth Follow (gaming)"
msgstr ""
#: src/licensefeaturerow.py:34
msgid "Breezy Desktop (productivity)"
msgstr ""
#: src/licensetierrow.py:24
msgid "Active"
msgstr ""
#: src/licensetierrow.py:24
msgid "Inactive"
msgstr ""
#: src/licensetierrow.py:41
#, python-brace-format
msgid "<b>${amount}</b> USD"
msgstr ""
#: src/licensetierrow.py:43
msgid " to renew"
msgstr ""
#: src/licensetierrow.py:45
msgid " to upgrade"
msgstr ""
#: src/licensetierrow.py:47
msgid "Paid through next renewal period"
msgstr ""
#: src/licensetierrow.py:56
msgid "Gaming"
msgstr ""
#: src/licensetierrow.py:57
msgid "Productivity"
msgstr ""
#: src/licensetierrow.py:63
msgid " - renewing monthly"
msgstr ""
#: src/licensetierrow.py:64
msgid " - renewing yearly"
msgstr ""
#: src/licensetierrow.py:65
msgid "with lifetime access"
msgstr ""
#: src/licensetierrow.py:72
msgid "Monthly"
msgstr ""
#: src/licensetierrow.py:73
msgid "Yearly"
msgstr ""
#: src/licensetierrow.py:74
msgid "Lifetime"
msgstr ""
#: src/time.py:14
msgid "less than an hour"
msgstr ""
#: src/time.py:17
msgid "1 hour"
msgstr ""
#: src/time.py:17
#, python-brace-format
msgid "{time_remaining} hours"
msgstr ""
#: src/time.py:20
msgid "1 day"
msgstr ""
#: src/time.py:20
#, python-brace-format
msgid "{time_remaining} days"
msgstr ""
#: src/gtk/connected-device.ui:21
msgid "connected"
msgstr ""
#: src/gtk/connected-device.ui:31
msgid "General Settings"
msgstr ""
#: src/gtk/connected-device.ui:41
msgid "Features"
msgstr ""
#: src/gtk/connected-device.ui:44
msgid "XR effect"
msgstr ""
#: src/gtk/connected-device.ui:45
msgid "Enables the Breezy Desktop XR effect."
msgstr ""
#: src/gtk/connected-device.ui:55
msgid "Widescreen mode"
msgstr ""
#: src/gtk/connected-device.ui:66
msgid "Follow mode"
msgstr ""
#: src/gtk/connected-device.ui:67
msgid "Keep the virtual display near the center of your view."
msgstr ""
#: src/gtk/connected-device.ui:77
msgid "Curved display"
msgstr ""
#: src/gtk/connected-device.ui:78
msgid "Switch between flat and curved displays."
msgstr ""
#: src/gtk/connected-device.ui:91
msgid "Adjustments"
msgstr ""
#: src/gtk/connected-device.ui:94
msgid "Display distance"
msgstr ""
#: src/gtk/connected-device.ui:95
msgid ""
"Closer appears larger, further appears smaller. Controls depth when in "
"widescreen mode."
msgstr ""
#: src/gtk/connected-device.ui:123
msgid "Display size"
msgstr ""
#: src/gtk/connected-device.ui:124
msgid ""
"Combine with display distance to achieve a comfortable level of depth and "
"size."
msgstr ""
#: src/gtk/connected-device.ui:152
msgid "Display toggle distances"
msgstr ""
#: src/gtk/connected-device.ui:153
msgid ""
"Use the buttons to capture the current display distance for use with the "
"keyboard shortcut."
msgstr ""
#: src/gtk/connected-device.ui:178
msgid "Follow threshold"
msgstr ""
#: src/gtk/connected-device.ui:179
msgid "How far away you can look before the display follows."
msgstr ""
#: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215
msgid "Keyboard Shortcuts"
msgstr ""
#: src/gtk/connected-device.ui:218
msgid "Re-center display shortcut"
msgstr ""
#: src/gtk/connected-device.ui:219
msgid "Pin the virtual display to the current position."
msgstr ""
#: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267
#: src/gtk/connected-device.ui:296
msgid "Change"
msgstr ""
#: src/gtk/connected-device.ui:247
msgid "Display distance shortcut"
msgstr ""
#: src/gtk/connected-device.ui:248
msgid "Quickly toggle between two predefined distances."
msgstr ""
#: src/gtk/connected-device.ui:276
msgid "Toggle follow mode shortcut"
msgstr ""
#: src/gtk/connected-device.ui:277
msgid "Quickly toggle follow mode."
msgstr ""
#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318
msgid "Advanced Settings"
msgstr ""
#: src/gtk/connected-device.ui:321
msgid "Find optimal display config"
msgstr ""
#: src/gtk/connected-device.ui:322
msgid ""
"Automatically modify the glasses display configuration for maximum "
"resolution and best scaling when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:332
msgid "Use highest refresh rate"
msgstr ""
#: src/gtk/connected-device.ui:333
msgid "Refresh rate may affect performance, disable this to set it manually."
msgstr ""
#: src/gtk/connected-device.ui:343
msgid "Always primary display"
msgstr ""
#: src/gtk/connected-device.ui:344
msgid "Automatically set the glasses as the primary display when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:354
msgid "Fast SBS mode switching"
msgstr ""
#: src/gtk/connected-device.ui:355
msgid ""
"Switches glasses to SBS mode immediately when plugged in, if widescreen mode "
"is on. May cause instability."
msgstr ""
#: src/gtk/connected-device.ui:365
msgid "Movement look-ahead"
msgstr ""
#: src/gtk/connected-device.ui:366
msgid ""
"Counteracts input lag by predicting head-tracking position ahead of render "
"time. Stick with default unless virtual display drags behind your head "
"movements, jumps ahead, or is very shaky."
msgstr ""
#: src/gtk/connected-device.ui:384
msgid "Default"
msgstr ""
#: src/gtk/failed-verification.ui:13
msgid "Breezy Desktop GNOME invalid setup"
msgstr ""
#: src/gtk/failed-verification.ui:14
msgid ""
"Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup "
"script. Report this issue if it persists."
msgstr ""
#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55
msgid "License Details"
msgstr ""
#: src/gtk/license-dialog.ui:27
msgid "Donate"
msgstr ""
#: src/gtk/license-dialog.ui:44
msgid "Request a token"
msgstr ""
#: src/gtk/license-dialog.ui:52
msgid "Verify token"
msgstr ""
#: src/gtk/no-device.ui:13
msgid "No device connected"
msgstr ""
#: src/gtk/no-device.ui:14
msgid "Breezy Desktop was unable to detect any supported XR devices."
msgstr ""
#: src/gtk/no-driver.ui:13
msgid "No driver running"
msgstr ""
#: src/gtk/no-driver.ui:14
msgid ""
"\n"
" If you installed via AUR, make sure you ran the recommended post-"
"install command:\n"
" systemctl --user enable --now xr-driver.service\n"
"\n"
" Otherwise, please file an issue on GitHub, or create a new thread "
"in the #troubleshooting channel on Discord.\n"
" "
msgstr ""
#: src/gtk/no-extension.ui:13
msgid "Breezy Desktop GNOME extension not ready"
msgstr ""
#: src/gtk/no-extension.ui:14
msgid ""
"If you have just run the setup, then you may need to log out and back in to "
"use it. Otherwise, please follow the Breezy GNOME setup instructions."
msgstr ""
#: src/gtk/no-license.ui:13
msgid "No license file was found"
msgstr ""
#: src/gtk/no-license.ui:14
msgid ""
"\n"
" The first time you use Breezy Desktop, an internet connection is "
"required to retrieve your device's license.\n"
" \n"
" Don't worry, there's no obligation to donate at this time. If you "
"haven't, you'll be given a trial license so you can decide if Breezy Desktop "
"fits your needs. \n"
" \n"
" Once you obtain a license, trial or otherwise, you can use Breezy "
"Desktop offline until features expire (or indefinitely, if you've chosen "
"lifetime access).\n"
" "
msgstr ""
#: src/gtk/no-license.ui:27
msgid "Try Again"
msgstr ""
#: src/gtk/shortcut-dialog.ui:5
msgid "Assign Keyboard Shortcut"
msgstr ""
#: src/gtk/shortcut-dialog.ui:20
msgid "Press your keyboard shortcut or 'Backspace' to disable..."
msgstr ""
#: src/gtk/window.ui:10
msgid "Breezy Desktop"
msgstr ""
#: src/gtk/window.ui:23
msgid "Menu"
msgstr ""
#: src/gtk/window.ui:35
msgid "Some features expire soon"
msgstr ""
#: src/gtk/window.ui:36 src/gtk/window.ui:43
msgid "View details"
msgstr ""
#: src/gtk/window.ui:42
msgid "Productivity features are disabled"
msgstr ""
#: src/gtk/window.ui:59
msgid "Force Reset"
msgstr ""
#: src/gtk/window.ui:63
msgid "About BreezyDesktop"
msgstr ""

Binary file not shown.

434
ui/po/it.po Normal file
View File

@ -0,0 +1,434 @@
# Italian translations for PACKAGE package.
# Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# <wayne@xronlinux.com>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-15 15:19-0700\n"
"PO-Revision-Date: 2024-08-02 21:14-0700\n"
"Last-Translator: <wayne@xronlinux.com>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\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"
#: src/connecteddevice.py:16
msgid ""
"Switches your glasses into side-by-side mode and doubles the width of the "
"display."
msgstr ""
#: src/connecteddevice.py:17
msgid "This feature is not currently supported for your device."
msgstr ""
#: src/licensedialog.py:49
msgid "Paid Tier Status"
msgstr ""
#: src/licensedialog.py:57
msgid "Feature Availability"
msgstr ""
#: src/licensefeaturerow.py:15 src/shortcutdialog.py:107
msgid "Disabled"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "In trial"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "Enabled"
msgstr ""
#: src/licensefeaturerow.py:24 src/licensetierrow.py:30
#, python-brace-format
msgid " ({time_remaining} remaining)"
msgstr ""
#: src/licensefeaturerow.py:32
msgid "Side-by-side mode (gaming)"
msgstr ""
#: src/licensefeaturerow.py:33
msgid "Smooth Follow (gaming)"
msgstr ""
#: src/licensefeaturerow.py:34
msgid "Breezy Desktop (productivity)"
msgstr ""
#: src/licensetierrow.py:24
msgid "Active"
msgstr ""
#: src/licensetierrow.py:24
msgid "Inactive"
msgstr ""
#: src/licensetierrow.py:41
#, python-brace-format
msgid "<b>${amount}</b> USD"
msgstr ""
#: src/licensetierrow.py:43
msgid " to renew"
msgstr ""
#: src/licensetierrow.py:45
msgid " to upgrade"
msgstr ""
#: src/licensetierrow.py:47
msgid "Paid through next renewal period"
msgstr ""
#: src/licensetierrow.py:56
msgid "Gaming"
msgstr ""
#: src/licensetierrow.py:57
msgid "Productivity"
msgstr ""
#: src/licensetierrow.py:63
msgid " - renewing monthly"
msgstr ""
#: src/licensetierrow.py:64
msgid " - renewing yearly"
msgstr ""
#: src/licensetierrow.py:65
msgid "with lifetime access"
msgstr ""
#: src/licensetierrow.py:72
msgid "Monthly"
msgstr ""
#: src/licensetierrow.py:73
msgid "Yearly"
msgstr ""
#: src/licensetierrow.py:74
msgid "Lifetime"
msgstr ""
#: src/time.py:14
msgid "less than an hour"
msgstr ""
#: src/time.py:17
msgid "1 hour"
msgstr ""
#: src/time.py:17
#, python-brace-format
msgid "{time_remaining} hours"
msgstr ""
#: src/time.py:20
msgid "1 day"
msgstr ""
#: src/time.py:20
#, python-brace-format
msgid "{time_remaining} days"
msgstr ""
#: src/gtk/connected-device.ui:21
msgid "connected"
msgstr ""
#: src/gtk/connected-device.ui:31
msgid "General Settings"
msgstr ""
#: src/gtk/connected-device.ui:41
msgid "Features"
msgstr ""
#: src/gtk/connected-device.ui:44
msgid "XR effect"
msgstr ""
#: src/gtk/connected-device.ui:45
msgid "Enables the Breezy Desktop XR effect."
msgstr ""
#: src/gtk/connected-device.ui:55
msgid "Widescreen mode"
msgstr ""
#: src/gtk/connected-device.ui:66
msgid "Follow mode"
msgstr ""
#: src/gtk/connected-device.ui:67
msgid "Keep the virtual display near the center of your view."
msgstr ""
#: src/gtk/connected-device.ui:77
msgid "Curved display"
msgstr ""
#: src/gtk/connected-device.ui:78
msgid "Switch between flat and curved displays."
msgstr ""
#: src/gtk/connected-device.ui:91
msgid "Adjustments"
msgstr ""
#: src/gtk/connected-device.ui:94
msgid "Display distance"
msgstr ""
#: src/gtk/connected-device.ui:95
msgid ""
"Closer appears larger, further appears smaller. Controls depth when in "
"widescreen mode."
msgstr ""
#: src/gtk/connected-device.ui:123
msgid "Display size"
msgstr ""
#: src/gtk/connected-device.ui:124
msgid ""
"Combine with display distance to achieve a comfortable level of depth and "
"size."
msgstr ""
#: src/gtk/connected-device.ui:152
msgid "Display toggle distances"
msgstr ""
#: src/gtk/connected-device.ui:153
msgid ""
"Use the buttons to capture the current display distance for use with the "
"keyboard shortcut."
msgstr ""
#: src/gtk/connected-device.ui:178
msgid "Follow threshold"
msgstr ""
#: src/gtk/connected-device.ui:179
msgid "How far away you can look before the display follows."
msgstr ""
#: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215
msgid "Keyboard Shortcuts"
msgstr ""
#: src/gtk/connected-device.ui:218
msgid "Re-center display shortcut"
msgstr ""
#: src/gtk/connected-device.ui:219
msgid "Pin the virtual display to the current position."
msgstr ""
#: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267
#: src/gtk/connected-device.ui:296
msgid "Change"
msgstr ""
#: src/gtk/connected-device.ui:247
msgid "Display distance shortcut"
msgstr ""
#: src/gtk/connected-device.ui:248
msgid "Quickly toggle between two predefined distances."
msgstr ""
#: src/gtk/connected-device.ui:276
msgid "Toggle follow mode shortcut"
msgstr ""
#: src/gtk/connected-device.ui:277
msgid "Quickly toggle follow mode."
msgstr ""
#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318
msgid "Advanced Settings"
msgstr ""
#: src/gtk/connected-device.ui:321
msgid "Find optimal display config"
msgstr ""
#: src/gtk/connected-device.ui:322
msgid ""
"Automatically modify the glasses display configuration for maximum "
"resolution and best scaling when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:332
msgid "Use highest refresh rate"
msgstr ""
#: src/gtk/connected-device.ui:333
msgid "Refresh rate may affect performance, disable this to set it manually."
msgstr ""
#: src/gtk/connected-device.ui:343
msgid "Always primary display"
msgstr ""
#: src/gtk/connected-device.ui:344
msgid "Automatically set the glasses as the primary display when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:354
msgid "Fast SBS mode switching"
msgstr ""
#: src/gtk/connected-device.ui:355
msgid ""
"Switches glasses to SBS mode immediately when plugged in, if widescreen mode "
"is on. May cause instability."
msgstr ""
#: src/gtk/connected-device.ui:365
msgid "Movement look-ahead"
msgstr ""
#: src/gtk/connected-device.ui:366
msgid ""
"Counteracts input lag by predicting head-tracking position ahead of render "
"time. Stick with default unless virtual display drags behind your head "
"movements, jumps ahead, or is very shaky."
msgstr ""
#: src/gtk/connected-device.ui:384
msgid "Default"
msgstr ""
#: src/gtk/failed-verification.ui:13
msgid "Breezy Desktop GNOME invalid setup"
msgstr ""
#: src/gtk/failed-verification.ui:14
msgid ""
"Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup "
"script. Report this issue if it persists."
msgstr ""
#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55
msgid "License Details"
msgstr ""
#: src/gtk/license-dialog.ui:27
msgid "Donate"
msgstr ""
#: src/gtk/license-dialog.ui:44
msgid "Request a token"
msgstr ""
#: src/gtk/license-dialog.ui:52
msgid "Verify token"
msgstr ""
#: src/gtk/no-device.ui:13
msgid "No device connected"
msgstr ""
#: src/gtk/no-device.ui:14
msgid "Breezy Desktop was unable to detect any supported XR devices."
msgstr ""
#: src/gtk/no-driver.ui:13
msgid "No driver running"
msgstr ""
#: src/gtk/no-driver.ui:14
msgid ""
"\n"
" If you installed via AUR, make sure you ran the recommended post-"
"install command:\n"
" systemctl --user enable --now xr-driver.service\n"
"\n"
" Otherwise, please file an issue on GitHub, or create a new thread "
"in the #troubleshooting channel on Discord.\n"
" "
msgstr ""
#: src/gtk/no-extension.ui:13
msgid "Breezy Desktop GNOME extension not ready"
msgstr ""
#: src/gtk/no-extension.ui:14
msgid ""
"If you have just run the setup, then you may need to log out and back in to "
"use it. Otherwise, please follow the Breezy GNOME setup instructions."
msgstr ""
#: src/gtk/no-license.ui:13
msgid "No license file was found"
msgstr ""
#: src/gtk/no-license.ui:14
msgid ""
"\n"
" The first time you use Breezy Desktop, an internet connection is "
"required to retrieve your device's license.\n"
" \n"
" Don't worry, there's no obligation to donate at this time. If you "
"haven't, you'll be given a trial license so you can decide if Breezy Desktop "
"fits your needs. \n"
" \n"
" Once you obtain a license, trial or otherwise, you can use Breezy "
"Desktop offline until features expire (or indefinitely, if you've chosen "
"lifetime access).\n"
" "
msgstr ""
#: src/gtk/no-license.ui:27
msgid "Try Again"
msgstr ""
#: src/gtk/shortcut-dialog.ui:5
msgid "Assign Keyboard Shortcut"
msgstr ""
#: src/gtk/shortcut-dialog.ui:20
msgid "Press your keyboard shortcut or 'Backspace' to disable..."
msgstr ""
#: src/gtk/window.ui:10
msgid "Breezy Desktop"
msgstr ""
#: src/gtk/window.ui:23
msgid "Menu"
msgstr ""
#: src/gtk/window.ui:35
msgid "Some features expire soon"
msgstr ""
#: src/gtk/window.ui:36 src/gtk/window.ui:43
msgid "View details"
msgstr ""
#: src/gtk/window.ui:42
msgid "Productivity features are disabled"
msgstr ""
#: src/gtk/window.ui:59
msgid "Force Reset"
msgstr ""
#: src/gtk/window.ui:63
msgid "About BreezyDesktop"
msgstr ""

Binary file not shown.

434
ui/po/ja.po Normal file
View File

@ -0,0 +1,434 @@
# Japanese translations for PACKAGE package.
# Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# <wayne@xronlinux.com>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-15 15:19-0700\n"
"PO-Revision-Date: 2024-08-02 20:55-0700\n"
"Last-Translator: <wayne@xronlinux.com>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: src/connecteddevice.py:16
msgid ""
"Switches your glasses into side-by-side mode and doubles the width of the "
"display."
msgstr ""
#: src/connecteddevice.py:17
msgid "This feature is not currently supported for your device."
msgstr ""
#: src/licensedialog.py:49
msgid "Paid Tier Status"
msgstr ""
#: src/licensedialog.py:57
msgid "Feature Availability"
msgstr ""
#: src/licensefeaturerow.py:15 src/shortcutdialog.py:107
msgid "Disabled"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "In trial"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "Enabled"
msgstr ""
#: src/licensefeaturerow.py:24 src/licensetierrow.py:30
#, python-brace-format
msgid " ({time_remaining} remaining)"
msgstr ""
#: src/licensefeaturerow.py:32
msgid "Side-by-side mode (gaming)"
msgstr ""
#: src/licensefeaturerow.py:33
msgid "Smooth Follow (gaming)"
msgstr ""
#: src/licensefeaturerow.py:34
msgid "Breezy Desktop (productivity)"
msgstr ""
#: src/licensetierrow.py:24
msgid "Active"
msgstr ""
#: src/licensetierrow.py:24
msgid "Inactive"
msgstr ""
#: src/licensetierrow.py:41
#, python-brace-format
msgid "<b>${amount}</b> USD"
msgstr ""
#: src/licensetierrow.py:43
msgid " to renew"
msgstr ""
#: src/licensetierrow.py:45
msgid " to upgrade"
msgstr ""
#: src/licensetierrow.py:47
msgid "Paid through next renewal period"
msgstr ""
#: src/licensetierrow.py:56
msgid "Gaming"
msgstr ""
#: src/licensetierrow.py:57
msgid "Productivity"
msgstr ""
#: src/licensetierrow.py:63
msgid " - renewing monthly"
msgstr ""
#: src/licensetierrow.py:64
msgid " - renewing yearly"
msgstr ""
#: src/licensetierrow.py:65
msgid "with lifetime access"
msgstr ""
#: src/licensetierrow.py:72
msgid "Monthly"
msgstr ""
#: src/licensetierrow.py:73
msgid "Yearly"
msgstr ""
#: src/licensetierrow.py:74
msgid "Lifetime"
msgstr ""
#: src/time.py:14
msgid "less than an hour"
msgstr ""
#: src/time.py:17
msgid "1 hour"
msgstr ""
#: src/time.py:17
#, python-brace-format
msgid "{time_remaining} hours"
msgstr ""
#: src/time.py:20
msgid "1 day"
msgstr ""
#: src/time.py:20
#, python-brace-format
msgid "{time_remaining} days"
msgstr ""
#: src/gtk/connected-device.ui:21
msgid "connected"
msgstr ""
#: src/gtk/connected-device.ui:31
msgid "General Settings"
msgstr ""
#: src/gtk/connected-device.ui:41
msgid "Features"
msgstr ""
#: src/gtk/connected-device.ui:44
msgid "XR effect"
msgstr ""
#: src/gtk/connected-device.ui:45
msgid "Enables the Breezy Desktop XR effect."
msgstr ""
#: src/gtk/connected-device.ui:55
msgid "Widescreen mode"
msgstr ""
#: src/gtk/connected-device.ui:66
msgid "Follow mode"
msgstr ""
#: src/gtk/connected-device.ui:67
msgid "Keep the virtual display near the center of your view."
msgstr ""
#: src/gtk/connected-device.ui:77
msgid "Curved display"
msgstr ""
#: src/gtk/connected-device.ui:78
msgid "Switch between flat and curved displays."
msgstr ""
#: src/gtk/connected-device.ui:91
msgid "Adjustments"
msgstr ""
#: src/gtk/connected-device.ui:94
msgid "Display distance"
msgstr ""
#: src/gtk/connected-device.ui:95
msgid ""
"Closer appears larger, further appears smaller. Controls depth when in "
"widescreen mode."
msgstr ""
#: src/gtk/connected-device.ui:123
msgid "Display size"
msgstr ""
#: src/gtk/connected-device.ui:124
msgid ""
"Combine with display distance to achieve a comfortable level of depth and "
"size."
msgstr ""
#: src/gtk/connected-device.ui:152
msgid "Display toggle distances"
msgstr ""
#: src/gtk/connected-device.ui:153
msgid ""
"Use the buttons to capture the current display distance for use with the "
"keyboard shortcut."
msgstr ""
#: src/gtk/connected-device.ui:178
msgid "Follow threshold"
msgstr ""
#: src/gtk/connected-device.ui:179
msgid "How far away you can look before the display follows."
msgstr ""
#: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215
msgid "Keyboard Shortcuts"
msgstr ""
#: src/gtk/connected-device.ui:218
msgid "Re-center display shortcut"
msgstr ""
#: src/gtk/connected-device.ui:219
msgid "Pin the virtual display to the current position."
msgstr ""
#: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267
#: src/gtk/connected-device.ui:296
msgid "Change"
msgstr ""
#: src/gtk/connected-device.ui:247
msgid "Display distance shortcut"
msgstr ""
#: src/gtk/connected-device.ui:248
msgid "Quickly toggle between two predefined distances."
msgstr ""
#: src/gtk/connected-device.ui:276
msgid "Toggle follow mode shortcut"
msgstr ""
#: src/gtk/connected-device.ui:277
msgid "Quickly toggle follow mode."
msgstr ""
#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318
msgid "Advanced Settings"
msgstr ""
#: src/gtk/connected-device.ui:321
msgid "Find optimal display config"
msgstr ""
#: src/gtk/connected-device.ui:322
msgid ""
"Automatically modify the glasses display configuration for maximum "
"resolution and best scaling when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:332
msgid "Use highest refresh rate"
msgstr ""
#: src/gtk/connected-device.ui:333
msgid "Refresh rate may affect performance, disable this to set it manually."
msgstr ""
#: src/gtk/connected-device.ui:343
msgid "Always primary display"
msgstr ""
#: src/gtk/connected-device.ui:344
msgid "Automatically set the glasses as the primary display when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:354
msgid "Fast SBS mode switching"
msgstr ""
#: src/gtk/connected-device.ui:355
msgid ""
"Switches glasses to SBS mode immediately when plugged in, if widescreen mode "
"is on. May cause instability."
msgstr ""
#: src/gtk/connected-device.ui:365
msgid "Movement look-ahead"
msgstr ""
#: src/gtk/connected-device.ui:366
msgid ""
"Counteracts input lag by predicting head-tracking position ahead of render "
"time. Stick with default unless virtual display drags behind your head "
"movements, jumps ahead, or is very shaky."
msgstr ""
#: src/gtk/connected-device.ui:384
msgid "Default"
msgstr ""
#: src/gtk/failed-verification.ui:13
msgid "Breezy Desktop GNOME invalid setup"
msgstr ""
#: src/gtk/failed-verification.ui:14
msgid ""
"Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup "
"script. Report this issue if it persists."
msgstr ""
#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55
msgid "License Details"
msgstr ""
#: src/gtk/license-dialog.ui:27
msgid "Donate"
msgstr ""
#: src/gtk/license-dialog.ui:44
msgid "Request a token"
msgstr ""
#: src/gtk/license-dialog.ui:52
msgid "Verify token"
msgstr ""
#: src/gtk/no-device.ui:13
msgid "No device connected"
msgstr ""
#: src/gtk/no-device.ui:14
msgid "Breezy Desktop was unable to detect any supported XR devices."
msgstr ""
#: src/gtk/no-driver.ui:13
msgid "No driver running"
msgstr ""
#: src/gtk/no-driver.ui:14
msgid ""
"\n"
" If you installed via AUR, make sure you ran the recommended post-"
"install command:\n"
" systemctl --user enable --now xr-driver.service\n"
"\n"
" Otherwise, please file an issue on GitHub, or create a new thread "
"in the #troubleshooting channel on Discord.\n"
" "
msgstr ""
#: src/gtk/no-extension.ui:13
msgid "Breezy Desktop GNOME extension not ready"
msgstr ""
#: src/gtk/no-extension.ui:14
msgid ""
"If you have just run the setup, then you may need to log out and back in to "
"use it. Otherwise, please follow the Breezy GNOME setup instructions."
msgstr ""
#: src/gtk/no-license.ui:13
msgid "No license file was found"
msgstr ""
#: src/gtk/no-license.ui:14
msgid ""
"\n"
" The first time you use Breezy Desktop, an internet connection is "
"required to retrieve your device's license.\n"
" \n"
" Don't worry, there's no obligation to donate at this time. If you "
"haven't, you'll be given a trial license so you can decide if Breezy Desktop "
"fits your needs. \n"
" \n"
" Once you obtain a license, trial or otherwise, you can use Breezy "
"Desktop offline until features expire (or indefinitely, if you've chosen "
"lifetime access).\n"
" "
msgstr ""
#: src/gtk/no-license.ui:27
msgid "Try Again"
msgstr ""
#: src/gtk/shortcut-dialog.ui:5
msgid "Assign Keyboard Shortcut"
msgstr ""
#: src/gtk/shortcut-dialog.ui:20
msgid "Press your keyboard shortcut or 'Backspace' to disable..."
msgstr ""
#: src/gtk/window.ui:10
msgid "Breezy Desktop"
msgstr ""
#: src/gtk/window.ui:23
msgid "Menu"
msgstr ""
#: src/gtk/window.ui:35
msgid "Some features expire soon"
msgstr ""
#: src/gtk/window.ui:36 src/gtk/window.ui:43
msgid "View details"
msgstr ""
#: src/gtk/window.ui:42
msgid "Productivity features are disabled"
msgstr ""
#: src/gtk/window.ui:59
msgid "Force Reset"
msgstr ""
#: src/gtk/window.ui:63
msgid "About BreezyDesktop"
msgstr ""

Binary file not shown.

433
ui/po/zh_CN.po Normal file
View File

@ -0,0 +1,433 @@
# Chinese translations for PACKAGE package.
# Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# <wayne@xronlinux.com>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-15 15:19-0700\n"
"PO-Revision-Date: 2024-08-02 20:55-0700\n"
"Last-Translator: <wayne@xronlinux.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/connecteddevice.py:16
msgid ""
"Switches your glasses into side-by-side mode and doubles the width of the "
"display."
msgstr ""
#: src/connecteddevice.py:17
msgid "This feature is not currently supported for your device."
msgstr ""
#: src/licensedialog.py:49
msgid "Paid Tier Status"
msgstr ""
#: src/licensedialog.py:57
msgid "Feature Availability"
msgstr ""
#: src/licensefeaturerow.py:15 src/shortcutdialog.py:107
msgid "Disabled"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "In trial"
msgstr ""
#: src/licensefeaturerow.py:18
msgid "Enabled"
msgstr ""
#: src/licensefeaturerow.py:24 src/licensetierrow.py:30
#, python-brace-format
msgid " ({time_remaining} remaining)"
msgstr ""
#: src/licensefeaturerow.py:32
msgid "Side-by-side mode (gaming)"
msgstr ""
#: src/licensefeaturerow.py:33
msgid "Smooth Follow (gaming)"
msgstr ""
#: src/licensefeaturerow.py:34
msgid "Breezy Desktop (productivity)"
msgstr ""
#: src/licensetierrow.py:24
msgid "Active"
msgstr ""
#: src/licensetierrow.py:24
msgid "Inactive"
msgstr ""
#: src/licensetierrow.py:41
#, python-brace-format
msgid "<b>${amount}</b> USD"
msgstr ""
#: src/licensetierrow.py:43
msgid " to renew"
msgstr ""
#: src/licensetierrow.py:45
msgid " to upgrade"
msgstr ""
#: src/licensetierrow.py:47
msgid "Paid through next renewal period"
msgstr ""
#: src/licensetierrow.py:56
msgid "Gaming"
msgstr ""
#: src/licensetierrow.py:57
msgid "Productivity"
msgstr ""
#: src/licensetierrow.py:63
msgid " - renewing monthly"
msgstr ""
#: src/licensetierrow.py:64
msgid " - renewing yearly"
msgstr ""
#: src/licensetierrow.py:65
msgid "with lifetime access"
msgstr ""
#: src/licensetierrow.py:72
msgid "Monthly"
msgstr ""
#: src/licensetierrow.py:73
msgid "Yearly"
msgstr ""
#: src/licensetierrow.py:74
msgid "Lifetime"
msgstr ""
#: src/time.py:14
msgid "less than an hour"
msgstr ""
#: src/time.py:17
msgid "1 hour"
msgstr ""
#: src/time.py:17
#, python-brace-format
msgid "{time_remaining} hours"
msgstr ""
#: src/time.py:20
msgid "1 day"
msgstr ""
#: src/time.py:20
#, python-brace-format
msgid "{time_remaining} days"
msgstr ""
#: src/gtk/connected-device.ui:21
msgid "connected"
msgstr ""
#: src/gtk/connected-device.ui:31
msgid "General Settings"
msgstr ""
#: src/gtk/connected-device.ui:41
msgid "Features"
msgstr ""
#: src/gtk/connected-device.ui:44
msgid "XR effect"
msgstr ""
#: src/gtk/connected-device.ui:45
msgid "Enables the Breezy Desktop XR effect."
msgstr ""
#: src/gtk/connected-device.ui:55
msgid "Widescreen mode"
msgstr ""
#: src/gtk/connected-device.ui:66
msgid "Follow mode"
msgstr ""
#: src/gtk/connected-device.ui:67
msgid "Keep the virtual display near the center of your view."
msgstr ""
#: src/gtk/connected-device.ui:77
msgid "Curved display"
msgstr ""
#: src/gtk/connected-device.ui:78
msgid "Switch between flat and curved displays."
msgstr ""
#: src/gtk/connected-device.ui:91
msgid "Adjustments"
msgstr ""
#: src/gtk/connected-device.ui:94
msgid "Display distance"
msgstr ""
#: src/gtk/connected-device.ui:95
msgid ""
"Closer appears larger, further appears smaller. Controls depth when in "
"widescreen mode."
msgstr ""
#: src/gtk/connected-device.ui:123
msgid "Display size"
msgstr ""
#: src/gtk/connected-device.ui:124
msgid ""
"Combine with display distance to achieve a comfortable level of depth and "
"size."
msgstr ""
#: src/gtk/connected-device.ui:152
msgid "Display toggle distances"
msgstr ""
#: src/gtk/connected-device.ui:153
msgid ""
"Use the buttons to capture the current display distance for use with the "
"keyboard shortcut."
msgstr ""
#: src/gtk/connected-device.ui:178
msgid "Follow threshold"
msgstr ""
#: src/gtk/connected-device.ui:179
msgid "How far away you can look before the display follows."
msgstr ""
#: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215
msgid "Keyboard Shortcuts"
msgstr ""
#: src/gtk/connected-device.ui:218
msgid "Re-center display shortcut"
msgstr ""
#: src/gtk/connected-device.ui:219
msgid "Pin the virtual display to the current position."
msgstr ""
#: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267
#: src/gtk/connected-device.ui:296
msgid "Change"
msgstr ""
#: src/gtk/connected-device.ui:247
msgid "Display distance shortcut"
msgstr ""
#: src/gtk/connected-device.ui:248
msgid "Quickly toggle between two predefined distances."
msgstr ""
#: src/gtk/connected-device.ui:276
msgid "Toggle follow mode shortcut"
msgstr ""
#: src/gtk/connected-device.ui:277
msgid "Quickly toggle follow mode."
msgstr ""
#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318
msgid "Advanced Settings"
msgstr ""
#: src/gtk/connected-device.ui:321
msgid "Find optimal display config"
msgstr ""
#: src/gtk/connected-device.ui:322
msgid ""
"Automatically modify the glasses display configuration for maximum "
"resolution and best scaling when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:332
msgid "Use highest refresh rate"
msgstr ""
#: src/gtk/connected-device.ui:333
msgid "Refresh rate may affect performance, disable this to set it manually."
msgstr ""
#: src/gtk/connected-device.ui:343
msgid "Always primary display"
msgstr ""
#: src/gtk/connected-device.ui:344
msgid "Automatically set the glasses as the primary display when plugged in."
msgstr ""
#: src/gtk/connected-device.ui:354
msgid "Fast SBS mode switching"
msgstr ""
#: src/gtk/connected-device.ui:355
msgid ""
"Switches glasses to SBS mode immediately when plugged in, if widescreen mode "
"is on. May cause instability."
msgstr ""
#: src/gtk/connected-device.ui:365
msgid "Movement look-ahead"
msgstr ""
#: src/gtk/connected-device.ui:366
msgid ""
"Counteracts input lag by predicting head-tracking position ahead of render "
"time. Stick with default unless virtual display drags behind your head "
"movements, jumps ahead, or is very shaky."
msgstr ""
#: src/gtk/connected-device.ui:384
msgid "Default"
msgstr ""
#: src/gtk/failed-verification.ui:13
msgid "Breezy Desktop GNOME invalid setup"
msgstr ""
#: src/gtk/failed-verification.ui:14
msgid ""
"Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup "
"script. Report this issue if it persists."
msgstr ""
#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55
msgid "License Details"
msgstr ""
#: src/gtk/license-dialog.ui:27
msgid "Donate"
msgstr ""
#: src/gtk/license-dialog.ui:44
msgid "Request a token"
msgstr ""
#: src/gtk/license-dialog.ui:52
msgid "Verify token"
msgstr ""
#: src/gtk/no-device.ui:13
msgid "No device connected"
msgstr ""
#: src/gtk/no-device.ui:14
msgid "Breezy Desktop was unable to detect any supported XR devices."
msgstr ""
#: src/gtk/no-driver.ui:13
msgid "No driver running"
msgstr ""
#: src/gtk/no-driver.ui:14
msgid ""
"\n"
" If you installed via AUR, make sure you ran the recommended post-"
"install command:\n"
" systemctl --user enable --now xr-driver.service\n"
"\n"
" Otherwise, please file an issue on GitHub, or create a new thread "
"in the #troubleshooting channel on Discord.\n"
" "
msgstr ""
#: src/gtk/no-extension.ui:13
msgid "Breezy Desktop GNOME extension not ready"
msgstr ""
#: src/gtk/no-extension.ui:14
msgid ""
"If you have just run the setup, then you may need to log out and back in to "
"use it. Otherwise, please follow the Breezy GNOME setup instructions."
msgstr ""
#: src/gtk/no-license.ui:13
msgid "No license file was found"
msgstr ""
#: src/gtk/no-license.ui:14
msgid ""
"\n"
" The first time you use Breezy Desktop, an internet connection is "
"required to retrieve your device's license.\n"
" \n"
" Don't worry, there's no obligation to donate at this time. If you "
"haven't, you'll be given a trial license so you can decide if Breezy Desktop "
"fits your needs. \n"
" \n"
" Once you obtain a license, trial or otherwise, you can use Breezy "
"Desktop offline until features expire (or indefinitely, if you've chosen "
"lifetime access).\n"
" "
msgstr ""
#: src/gtk/no-license.ui:27
msgid "Try Again"
msgstr ""
#: src/gtk/shortcut-dialog.ui:5
msgid "Assign Keyboard Shortcut"
msgstr ""
#: src/gtk/shortcut-dialog.ui:20
msgid "Press your keyboard shortcut or 'Backspace' to disable..."
msgstr ""
#: src/gtk/window.ui:10
msgid "Breezy Desktop"
msgstr ""
#: src/gtk/window.ui:23
msgid "Menu"
msgstr ""
#: src/gtk/window.ui:35
msgid "Some features expire soon"
msgstr ""
#: src/gtk/window.ui:36 src/gtk/window.ui:43
msgid "View details"
msgstr ""
#: src/gtk/window.ui:42
msgid "Productivity features are disabled"
msgstr ""
#: src/gtk/window.ui:59
msgid "Force Reset"
msgstr ""
#: src/gtk/window.ui:63
msgid "About BreezyDesktop"
msgstr ""

Binary file not shown.

View File

@ -13,6 +13,9 @@ _ = gettext.gettext
class ConnectedDevice(Gtk.Box):
__gtype_name__ = "ConnectedDevice"
widescreen_mode_subtitle = _("Switches your glasses into side-by-side mode and doubles the width of the display.")
widescreen_mode_not_supported_subtitle = _("This feature is not currently supported for your device.")
device_label = Gtk.Template.Child()
effect_enable_switch = Gtk.Template.Child()
display_distance_scale = Gtk.Template.Child()
@ -55,9 +58,6 @@ class ConnectedDevice(Gtk.Box):
self.movement_look_ahead_scale
]
self.widescreen_mode_subtitle = _("Switches your glasses into side-by-side mode and doubles the width of the display.")
self.widescreen_mode_not_supported_subtitle = _("This feature is not currently supported for your device.")
self.settings = SettingsManager.get_instance().settings
self.ipc = XRDriverIPC.get_instance()
self.extensions_manager = ExtensionsManager.get_instance()

View File

@ -28,7 +28,7 @@
<child>
<object class="AdwViewStackPage">
<property name="name">general</property>
<property name="title">General Settings</property>
<property name="title" translatable="yes"><!-- tab for navigating to the general settings -->General Settings</property>
<property name="icon-name">applications-system-symbolic</property>
<property name="child">
<object class="GtkBox">
@ -38,11 +38,11 @@
<property name="spacing">20</property>
<child>
<object class="AdwPreferencesGroup">
<property name="title" translatable="true">Features</property>
<property name="title" translatable="yes"><!-- section heading for switches that enable certain features -->Features</property>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">XR effect</property>
<property name="subtitle" translatable="true">Enables the Breezy Desktop XR effect.</property>
<property name="title" translatable="yes"><!-- feature switch -->XR effect</property>
<property name="subtitle" translatable="yes">Enables the Breezy Desktop XR effect.</property>
<child>
<object class="GtkSwitch" id="effect_enable_switch">
<property name="valign">3</property>
@ -52,7 +52,7 @@
</child>
<child>
<object class="AdwActionRow" id="widescreen_mode_row">
<property name="title" translatable="true">Widescreen mode</property>
<property name="title" translatable="yes"><!-- feature switch -->Widescreen mode</property>
<property name="valign">2</property>
<child>
<object class="GtkSwitch" id="widescreen_mode_switch">
@ -63,8 +63,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Follow mode</property>
<property name="subtitle" translatable="true">Keep the virtual display near the center of your view.</property>
<property name="title" translatable="yes"><!-- feature switch -->Follow mode</property>
<property name="subtitle" translatable="yes">Keep the virtual display near the center of your view.</property>
<child>
<object class="GtkSwitch" id="follow_mode_switch">
<property name="valign">3</property>
@ -74,8 +74,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Curved display</property>
<property name="subtitle" translatable="true">Switch between flat and curved displays.</property>
<property name="title" translatable="yes"><!-- feature switch -->Curved display</property>
<property name="subtitle" translatable="yes">Switch between flat and curved displays.</property>
<property name="valign">2</property>
<child>
<object class="GtkSwitch" id="curved_display_switch">
@ -88,11 +88,11 @@
</child>
<child>
<object class="AdwPreferencesGroup">
<property name="title" translatable="true">Adjustments</property>
<property name="title" translatable="yes"><!-- Section containing sliders for adjusting the XR effect -->Adjustments</property>
<child>
<object class="AdwActionRow" id="display_distance_row">
<property name="title" translatable="true">Display distance</property>
<property name="subtitle" translatable="true">Closer appears larger, further appears smaller. Controls depth when in widescreen mode.</property>
<property name="title" translatable="yes"><!-- adjustment slider -->Display distance</property>
<property name="subtitle" translatable="yes">Closer appears larger, further appears smaller. Controls depth when in widescreen mode.</property>
<child>
<object class="GtkScale" id="display_distance_scale">
<property name="valign">3</property>
@ -120,8 +120,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Display size</property>
<property name="subtitle" translatable="true">Combine with display distance to achieve a comfortable level of depth and size.</property>
<property name="title" translatable="yes"><!-- adjustment slider -->Display size</property>
<property name="subtitle" translatable="yes">Combine with display distance to achieve a comfortable level of depth and size.</property>
<child>
<object class="GtkScale" id="display_size_scale">
<property name="valign">3</property>
@ -149,8 +149,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Display toggle distances</property>
<property name="subtitle" translatable="true">Use the buttons to capture the current display distance for use with the keyboard shortcut.</property>
<property name="title" translatable="yes"><!-- adjustment slider -->Display toggle distances</property>
<property name="subtitle" translatable="yes">Use the buttons to capture the current display distance for use with the keyboard shortcut.</property>
<property name="valign">2</property>
<child>
<object class="GtkBox">
@ -175,8 +175,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Follow threshold</property>
<property name="subtitle" translatable="true">How far away you can look before the display follows.</property>
<property name="title" translatable="yes"><!-- adjustment slider -->Follow threshold</property>
<property name="subtitle" translatable="yes">How far away you can look before the display follows.</property>
<child>
<object class="GtkScale" id="follow_threshold_scale">
<property name="valign">3</property>
@ -206,17 +206,17 @@
<child>
<object class="AdwViewStackPage">
<property name="name">shortcuts</property>
<property name="title">Keyboard Shortcuts</property>
<property name="title" translatable="yes"><!-- tab for navigating to keyboard shortcuts -->Keyboard Shortcuts</property>
<property name="icon-name">preferences-desktop-keyboard-shortcuts-symbolic</property>
<property name="child">
<object class="GtkBox">
<child>
<object class="AdwPreferencesGroup">
<property name="title" translatable="true">Keyboard Shortcuts</property>
<property name="title" translatable="yes"><!-- section heading for updating keyboard shortcuts -->Keyboard Shortcuts</property>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Re-center display shortcut</property>
<property name="subtitle" translatable="true">Pin the virtual display to the current position.</property>
<property name="title" translatable="yes">Re-center display shortcut</property>
<property name="subtitle" translatable="yes">Pin the virtual display to the current position.</property>
<property name="valign">2</property>
<child>
<object class="GtkBox">
@ -235,7 +235,7 @@
</style>
<property name="name">recenter-display-shortcut</property>
<property name="valign">3</property>
<property name="label" translatable="true">Change</property>
<property name="label" translatable="yes">Change</property>
</object>
</child>
</object>
@ -244,8 +244,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Display distance shortcut</property>
<property name="subtitle" translatable="true">Quickly toggle between two predefined distances.</property>
<property name="title" translatable="yes">Display distance shortcut</property>
<property name="subtitle" translatable="yes">Quickly toggle between two predefined distances.</property>
<property name="valign">2</property>
<child>
<object class="GtkBox">
@ -264,7 +264,7 @@
</style>
<property name="name">toggle-display-distance-shortcut</property>
<property name="valign">3</property>
<property name="label" translatable="true">Change</property>
<property name="label" translatable="yes">Change</property>
</object>
</child>
</object>
@ -273,8 +273,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Toggle follow mode shortcut</property>
<property name="subtitle" translatable="true">Quickly toggle follow mode.</property>
<property name="title" translatable="yes">Toggle follow mode shortcut</property>
<property name="subtitle" translatable="yes">Quickly toggle follow mode.</property>
<property name="valign">2</property>
<child>
<object class="GtkBox">
@ -293,7 +293,7 @@
</style>
<property name="name">toggle-follow-shortcut</property>
<property name="valign">3</property>
<property name="label" translatable="true">Change</property>
<property name="label" translatable="yes">Change</property>
</object>
</child>
</object>
@ -309,17 +309,17 @@
<child>
<object class="AdwViewStackPage">
<property name="name">advanced</property>
<property name="title">Advanced Settings</property>
<property name="title" translatable="yes"><!-- tab for navigating to the advanced settings -->Advanced Settings</property>
<property name="icon-name">applications-system-symbolic</property>
<property name="child">
<object class="GtkBox">
<child>
<object class="AdwPreferencesGroup">
<property name="title" translatable="true">Advanced Settings</property>
<property name="title" translatable="yes"><!-- section heading for the advanced settings -->Advanced Settings</property>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Find optimal display config</property>
<property name="subtitle" translatable="true">Automatically modify the glasses display configuration for maximum resolution and best scaling when plugged in.</property>
<property name="title" translatable="yes"><!-- feature that tries to the find best-fit monitor config -->Find optimal display config</property>
<property name="subtitle" translatable="yes">Automatically modify the glasses display configuration for maximum resolution and best scaling when plugged in.</property>
<child>
<object class="GtkSwitch" id="use_optimal_monitor_config_switch">
<property name="valign">3</property>
@ -329,8 +329,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Use highest refresh rate</property>
<property name="subtitle" translatable="true">Refresh rate may affect performance, disable this to set it manually.</property>
<property name="title" translatable="yes">Use highest refresh rate</property>
<property name="subtitle" translatable="yes">Refresh rate may affect performance, disable this to set it manually.</property>
<child>
<object class="GtkSwitch" id="use_highest_refresh_rate_switch">
<property name="valign">3</property>
@ -340,8 +340,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Always primary display</property>
<property name="subtitle" translatable="true">Automatically set the glasses as the primary display when plugged in.</property>
<property name="title" translatable="yes">Always primary display</property>
<property name="subtitle" translatable="yes">Automatically set the glasses as the primary display when plugged in.</property>
<child>
<object class="GtkSwitch" id="headset_as_primary_switch">
<property name="valign">3</property>
@ -351,8 +351,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Fast SBS mode switching</property>
<property name="subtitle" translatable="true">Switches glasses to SBS mode immediately when plugged in, if widescreen mode is on. May cause instability.</property>
<property name="title" translatable="yes">Fast SBS mode switching</property>
<property name="subtitle" translatable="yes">Switches glasses to SBS mode immediately when plugged in, if widescreen mode is on. May cause instability.</property>
<child>
<object class="GtkSwitch" id="fast_sbs_mode_switch">
<property name="valign">3</property>
@ -362,8 +362,8 @@
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Movement look-ahead</property>
<property name="subtitle" translatable="true">Counteracts input lag by predicting head-tracking position ahead of render time. Stick with default unless virtual display drags behind your head movements, jumps ahead, or is very shaky.</property>
<property name="title" translatable="yes">Movement look-ahead</property>
<property name="subtitle" translatable="yes">Counteracts input lag by predicting head-tracking position ahead of render time. Stick with default unless virtual display drags behind your head movements, jumps ahead, or is very shaky.</property>
<child>
<object class="GtkScale" id="movement_look_ahead_scale">
<property name="valign">3</property>
@ -381,7 +381,7 @@
</object>
</property>
<marks>
<mark value="-1" position="bottom">Default</mark>
<mark value="-1" position="bottom" translatable="yes">Default</mark>
<mark value="10" position="bottom">10ms</mark>
<mark value="20" position="bottom">20ms</mark>
<mark value="30" position="bottom">30ms</mark>

View File

@ -10,8 +10,8 @@
<property name="spacing">20</property>
<child>
<object class="AdwStatusPage">
<property name="title" translatable="true">Breezy Desktop GNOME invalid setup</property>
<property name="description" translatable="true">Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup script. Report this issue if it persists.</property>
<property name="title" translatable="yes">Breezy Desktop GNOME invalid setup</property>
<property name="description" translatable="yes">Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup script. Report this issue if it persists.</property>
<property name="width-request">650</property>
</object>
</child>

View File

@ -2,7 +2,7 @@
<interface>
<requires lib="gtk" version="4.0"/>
<template class="LicenseDialog" parent="GtkDialog">
<property name="title">License Details</property>
<property name="title" translatable="yes">License Details</property>
<property name="modal">1</property>
<property name="default_width">440</property>
<property name="default_height">200</property>
@ -24,8 +24,8 @@
<property name="margin-top">10</property>
<child>
<object class="AdwActionRow">
<property name="title" translatable="true">Donate</property>
<property name="subtitle" translatable="true">ko-fi.com/wheaney</property>
<property name="title" translatable="yes">Donate</property>
<property name="subtitle">ko-fi.com/wheaney</property>
<property name="subtitle-selectable">True</property>
<child type="suffix">
<object class="GtkLinkButton">
@ -41,7 +41,7 @@
<child>
<object class="AdwEntryRow" id="request_token">
<property name="visible">0</property>
<property name="title" translatable="true">Request a token</property>
<property name="title" translatable="yes">Request a token</property>
<property name="input-purpose">6</property>
<property name="show-apply-button">1</property>
</object>
@ -49,7 +49,7 @@
<child>
<object class="AdwEntryRow" id="verify_token">
<property name="visible">0</property>
<property name="title" translatable="true">Verify token</property>
<property name="title" translatable="yes">Verify token</property>
<property name="input-hints">16</property>
<property name="show-apply-button">1</property>
</object>

View File

@ -10,8 +10,8 @@
<property name="spacing">20</property>
<child>
<object class="AdwStatusPage">
<property name="title" translatable="true">No device connected</property>
<property name="description" translatable="true">Breezy Desktop was unable to detect any supported XR devices.</property>
<property name="title" translatable="yes">No device connected</property>
<property name="description" translatable="yes">Breezy Desktop was unable to detect any supported XR devices.</property>
<property name="width-request">650</property>
</object>
</child>

View File

@ -10,8 +10,8 @@
<property name="spacing">20</property>
<child>
<object class="AdwStatusPage">
<property name="title" translatable="true">No driver running</property>
<property name="description" translatable="true">
<property name="title" translatable="yes">No driver running</property>
<property name="description" translatable="yes">
If you installed via AUR, make sure you ran the recommended post-install command:
systemctl --user enable --now xr-driver.service

View File

@ -10,8 +10,8 @@
<property name="spacing">20</property>
<child>
<object class="AdwStatusPage">
<property name="title" translatable="true">Breezy Desktop GNOME extension not ready</property>
<property name="description" translatable="true">If you have just run the setup, then you may need to log out and back in to use it. Otherwise, please follow the Breezy GNOME setup instructions.</property>
<property name="title" translatable="yes">Breezy Desktop GNOME extension not ready</property>
<property name="description" translatable="yes">If you have just run the setup, then you may need to log out and back in to use it. Otherwise, please follow the Breezy GNOME setup instructions.</property>
<property name="width-request">650</property>
</object>
</child>

View File

@ -10,8 +10,8 @@
<property name="spacing">20</property>
<child>
<object class="AdwStatusPage">
<property name="title" translatable="true">No license file was found</property>
<property name="description" translatable="true">
<property name="title" translatable="yes">No license file was found</property>
<property name="description" translatable="yes">
The first time you use Breezy Desktop, an internet connection is required to retrieve your device's license.
Don't worry, there's no obligation to donate at this time. If you haven't, you'll be given a trial license so you can decide if Breezy Desktop fits your needs.
@ -24,7 +24,7 @@
</child>
<child type="action">
<object class="GtkButton" id="refresh_license_button">
<property name="label" translatable="true">Try Again</property>
<property name="label" translatable="yes">Try Again</property>
</object>
</child>
</template>

View File

@ -2,7 +2,7 @@
<interface>
<requires lib="gtk" version="4.0"/>
<template class="ShortcutDialog" parent="GtkDialog">
<property name="title">Assign Keyboard Shortcut</property>
<property name="title" translatable="yes">Assign Keyboard Shortcut</property>
<property name="modal">1</property>
<property name="default_width">440</property>
<property name="default_height">200</property>

View File

@ -60,7 +60,7 @@
<attribute name="action">app.reset_driver</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_About BreezyDesktop</attribute>
<attribute name="label" translatable="yes">About BreezyDesktop</attribute>
<attribute name="action">app.about</attribute>
</item>
</section>

View File

@ -3,6 +3,9 @@ from .statemanager import StateManager
from .licensetierrow import LicenseTierRow
from .licensefeaturerow import LicenseFeatureRow
from .xrdriveripc import XRDriverIPC
import gettext
_ = gettext.gettext
@Gtk.Template(resource_path='/com/xronlinux/BreezyDesktop/gtk/license-dialog.ui')
class LicenseDialog(Gtk.Dialog):
@ -43,7 +46,7 @@ class LicenseDialog(Gtk.Dialog):
for child in self.tiers:
self.tiers.remove(child)
tiers_group = Adw.PreferencesGroup(title="Paid Tier Status", margin_top=20)
tiers_group = Adw.PreferencesGroup(title=_("Paid Tier Status"), margin_top=20)
self.tiers.append(tiers_group)
for tier_name, tier_details in license_view['tiers'].items():
@ -51,7 +54,7 @@ class LicenseDialog(Gtk.Dialog):
for child in self.features:
self.features.remove(child)
features_group = Adw.PreferencesGroup(title="Feature Availability", margin_top=20)
features_group = Adw.PreferencesGroup(title=_("Feature Availability"), margin_top=20)
self.features.append(features_group)
for feature_name, feature_details in license_view['features'].items():

View File

@ -1,30 +1,37 @@
from gi.repository import Adw
from .time import time_remaining_text
import gettext
FEATURE_NAMES = {
'sbs': 'Side-by-side mode (gaming)',
'smooth_follow': 'Smooth Follow (gaming)',
'productivity_basic': 'Breezy Desktop (productivity)',
'productivity_pro': 'Breezy Desktop Pro (productivity)',
}
_ = gettext.gettext
class LicenseFeatureRow(Adw.ActionRow):
def __init__(self, feature, feature_details):
super().__init__()
self.set_title(FEATURE_NAMES[feature])
self.set_title(self._feature_name(feature))
status = 'Disabled'
status = _('Disabled')
is_trial = feature_details.get('is_trial') == True
if feature_details.get('is_enabled') == True:
status = 'In trial' if is_trial else 'Enabled'
status = _('In trial') if is_trial else _('Enabled')
details = ''
funds_needed_in_seconds = feature_details.get('funds_needed_in_seconds')
if funds_needed_in_seconds is not None and funds_needed_in_seconds > 0:
time_remaining = time_remaining_text(funds_needed_in_seconds, is_trial)
if time_remaining: details = f" ({time_remaining} remaining)"
if time_remaining: details = _(" ({time_remaining} remaining)").format(time_remaining=time_remaining)
self.set_subtitle(f"{status}{details}")
def _feature_name(self, feature):
print(f"Translating feature: {feature}")
print(f"_ is: {_}")
feature_names = {
'sbs': lambda: gettext.gettext('Side-by-side mode (gaming)'),
'smooth_follow': lambda: _('Smooth Follow (gaming)'),
'productivity_basic': lambda: _('Breezy Desktop (productivity)')
}
print(f"Translated string: {feature_names[feature]()}")
return feature_names[feature]()

View File

@ -1,18 +1,9 @@
from gi.repository import Adw, Gtk
from .time import time_remaining_text
import gettext
TIER_NAMES = {
'supporter': 'Gaming',
'subscriber': 'Productivity',
'subscriber_pro': 'Productivity Pro',
}
PERIOD_DESCRIPTIONS = {
'monthly': ' - renewing monthly',
'yearly': ' - renewing yearly',
'lifetime': 'with lifetime access',
}
_ = gettext.gettext
PERIOD_RANKS = {
'monthly': 1,
@ -25,18 +16,18 @@ class LicenseTierRow(Adw.ExpanderRow):
def __init__(self, tier, tier_details):
super().__init__()
self.set_title(TIER_NAMES[tier])
self.set_title(self._tier_name(tier))
active_period = tier_details.get('active_period')
funds_needed_in_seconds = tier_details.get('funds_needed_in_seconds')
status = 'Active' if active_period else 'Inactive'
status = _('Active') if active_period else _('Inactive')
details = ''
if active_period:
details += f" {PERIOD_DESCRIPTIONS[active_period]}"
details += f" {self._period_description[active_period]}"
if funds_needed_in_seconds is not None and funds_needed_in_seconds > 0:
time_remaining = time_remaining_text(funds_needed_in_seconds)
if time_remaining: details += f" ({time_remaining} remaining)"
if time_remaining: details += _(" ({time_remaining} remaining)").format(time_remaining=time_remaining)
if active_period == 'lifetime':
self.set_enable_expansion(False)
self.set_icon_name(None)
@ -47,17 +38,41 @@ class LicenseTierRow(Adw.ExpanderRow):
for period, amount in tier_details['funds_needed_by_period'].items():
amount_text = None
if amount > 0:
amount_text = f"<b>${amount}</b> USD"
amount_text = _("<b>${amount}</b> USD").format(amount=amount)
if active_period == period:
amount_text += " to renew"
amount_text += _(" to renew")
elif active_period is not None:
amount_text += " to upgrade"
amount_text += _(" to upgrade")
elif active_period is not None and PERIOD_RANKS[period] >= PERIOD_RANKS[active_period]:
amount_text = "Paid through next renewal period"
amount_text = _("Paid through next renewal period")
if amount_text is not None:
row_widget = Adw.ActionRow(title=period.capitalize())
row_widget = Adw.ActionRow(title=self._period_name(period))
row_widget.add_suffix(Gtk.Label(label=amount_text, use_markup=True))
self.add_row(row_widget)
def _tier_name(self, tier):
tier_names = {
'supporter': _('Gaming'),
'subscriber': _('Productivity')
}
return tier_names[tier]
def _period_description(self, period):
period_descriptions = {
'monthly': _(' - renewing monthly'),
'yearly': _(' - renewing yearly'),
'lifetime': _('with lifetime access'),
}
return period_descriptions[period]
def _period_name(self, period):
period_names = {
'monthly': _('Monthly'),
'yearly': _('Yearly'),
'lifetime': _('Lifetime'),
}
return period_names[period]

View File

@ -17,7 +17,9 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
import gettext
import gi
import locale
import logging
import os
import sys
@ -30,6 +32,15 @@ gi.require_version('Adw', '1')
gi.require_version('Gio', '2.0')
gi.require_version('GLib', '2.0')
script_dir = os.path.dirname(os.path.abspath(__file__))
po_dir = os.path.join(script_dir, 'po')
locale_dir = '/app/share/locale'
locale.setlocale(locale.LC_ALL, '')
locale.bindtextdomain('breezydesktop', None)
gettext.bindtextdomain('breezydesktop', None)
gettext.textdomain('breezydesktop')
from gi.repository import Adw, Gtk, Gio
from .licensedialog import LicenseDialog
from .statemanager import StateManager

View File

@ -1,4 +1,7 @@
from gi.repository import Gtk, Gdk
import gettext
_ = gettext.gettext
from .settingsmanager import SettingsManager
@ -101,7 +104,7 @@ def on_assign_shortcut(window, widget):
def reload_shortcut_widget(widget, label):
shortcut = SettingsManager.get_instance().settings.get_strv(widget.get_name())
label.set_accelerator(shortcut[0] if len(shortcut) > 0 else 'Disabled')
label.set_accelerator(shortcut[0] if len(shortcut) > 0 else _('Disabled'))
def reload_shortcut_widgets(widget_tuples):
for widget_tuple in widget_tuples:

View File

@ -1,4 +1,7 @@
from math import floor
import gettext
_ = gettext.gettext
# we'll begin to alert the user when there's less than a week left
LICENSE_WARN_SECONDS = 60 * 60 * 24 * 7
@ -8,12 +11,12 @@ def time_remaining_text(seconds, no_cap=False):
return
if seconds / 60 < 60:
return 'less than an hour'
return _('less than an hour')
elif seconds / (60 * 60) < 24:
time_remaining = floor(seconds / (60 * 60))
return '1 hour' if time_remaining == 1 else f'{time_remaining} hours'
return _('1 hour') if time_remaining == 1 else _("{time_remaining} hours").format(time_remaining=time_remaining)
elif seconds / (24 * 60 * 60) < 30 or no_cap:
time_remaining = floor(seconds / (24 * 60 * 60))
return '1 day' if time_remaining == 1 else f'{time_remaining} days'
return _('1 day') if time_remaining == 1 else _("{time_remaining} days").format(time_remaining=time_remaining)
else:
return