From 0d53d10a43e0a8c307dadba5f18327bd75e2bdfb Mon Sep 17 00:00:00 2001 From: Wayne Heaney <42350981+wheaney@users.noreply.github.com> Date: Tue, 3 Mar 2026 13:26:47 -0800 Subject: [PATCH] Add support for Productivity Pro tier, v2.9.1 (#162) --- README.md | 47 +++-- VERSION | 2 +- gnome/bin/setup | 2 +- gnome/src/extension.js | 2 +- kwin/bin/setup | 2 +- kwin/src/breezydesktopeffect.cpp | 3 +- kwin/src/kcm/breezydesktopeffectkcm.cpp | 194 ++++++++++++++------ kwin/src/kcm/breezydesktopeffectkcm.ui | 19 ++ modules/XRLinuxDriver | 2 +- ui/po/breezydesktop.pot | 70 ++++--- ui/po/de.po | 89 +++++---- ui/po/es.po | 89 +++++---- ui/po/fr.po | 89 +++++---- ui/po/it.po | 89 +++++---- ui/po/ja.po | 89 +++++---- ui/po/mo/de/LC_MESSAGES/breezydesktop.mo | Bin 15305 -> 14992 bytes ui/po/mo/es/LC_MESSAGES/breezydesktop.mo | Bin 15128 -> 14819 bytes ui/po/mo/fr/LC_MESSAGES/breezydesktop.mo | Bin 15526 -> 15239 bytes ui/po/mo/it/LC_MESSAGES/breezydesktop.mo | Bin 15492 -> 15181 bytes ui/po/mo/ja/LC_MESSAGES/breezydesktop.mo | Bin 16960 -> 17314 bytes ui/po/mo/pt_BR/LC_MESSAGES/breezydesktop.mo | Bin 14817 -> 14507 bytes ui/po/mo/ru/LC_MESSAGES/breezydesktop.mo | Bin 11412 -> 10969 bytes ui/po/mo/sv/LC_MESSAGES/breezydesktop.mo | Bin 9333 -> 8997 bytes ui/po/mo/uk_UA/LC_MESSAGES/breezydesktop.mo | Bin 11310 -> 10867 bytes ui/po/mo/zh_CN/LC_MESSAGES/breezydesktop.mo | Bin 13433 -> 13131 bytes ui/po/pl.po | 70 ++++--- ui/po/pt_BR.po | 89 +++++---- ui/po/ru.po | 89 +++++---- ui/po/sv.po | 89 +++++---- ui/po/uk_UA.po | 89 +++++---- ui/po/zh_CN.po | 89 +++++---- ui/src/gtk/window.ui | 26 +++ ui/src/license.py | 3 +- ui/src/licensedialogcontent.py | 28 ++- ui/src/licensefeaturerow.py | 5 +- ui/src/licensetierrow.py | 4 +- ui/src/main.py | 2 +- ui/src/statemanager.py | 7 + ui/src/window.py | 11 +- 39 files changed, 842 insertions(+), 547 deletions(-) diff --git a/README.md b/README.md index f2f1ff3..732e38e 100644 --- a/README.md +++ b/README.md @@ -72,23 +72,44 @@ After setup, you'll have an application called `Breezy Desktop` installed. Launc For a double-wide screen, enable "widescreen mode" using the toggle in the Breezy Desktop application. **Note: this can be significantly more resource intensive than non-widescreen, you may notice performance dips on older hardware.** -### Breezy Desktop Pricing (Productivity Tier) +### Breezy Desktop Pricing -Breezy Desktop for GNOME and KDE comes with 2 free trial months. After that, it requires an active Productivity Tier license. Payments are currently only accepted via [Ko-fi](https://ko-fi.com/wheaney). Here's the pricing structure: +Breezy Desktop for GNOME and KDE comes with 2 free trial months. Trial access is granted automatically after setup (no token entry required), and you only need to be online once after setup so your device can activate/refresh access. + +After the trial period ends, you must have an active Productivity license (Basic or Pro) to keep Productivity features enabled. + +Productivity licenses apply to **Breezy Desktop (GNOME/KDE)**. **Breezy Vulkan** uses a separate Supporter Tier (see below). + +Paid plans are currently only available via [Ko-fi](https://ko-fi.com/wheaney). + +#### Productivity Basic + +The Basic plan includes everything needed for multi-screen productivity using only device orientation (3DoF). For device position (6DoF) — e.g. for the VITURE Luma Ultra glasses or supplementing with OpenTrack+NeuralNet — see the Productivity Pro plan. | Payment period | Price | Upgrade window \* | | -------------- | ------------------ | ------------------------------------- | -| Monthly | $5 USD, recurring | Within 7 days to upgrade to yearly | -| Yearly | $50 USD, recurring | Within 90 days to upgrade to lifetime | -| Lifetime | $125 USD, one-time | — | +| Yearly | $10 USD, recurring | Within 90 days to upgrade to lifetime | +| Lifetime | $25 USD, one-time | — | \* If you pay for a plan and decide to upgrade to a longer-term plan, you may pay the difference within this window. -If you have enough funds, your license will renew automatically within 7 days of expiration so you never experience an unexpected outage. Your device is never required to be online to continue using Productivity Tier features when enabled, but if your access expires while offline (even if you have enough funds), the features will be disabled until the next time your device goes online and the license can be refreshed. Be sure to check for expiration warnings prior to travel. +#### Productivity Pro -#### Free Productivity Tier +The Pro plan provides all the same multi-screen productivity features as Basic, plus device position (6DoF) allowing you to lean in and move more naturally about the displays. -To make Breezy widely accessible, Productivity Tier is currently free of charge for qualified individuals using it for non-commercial purposes. Eligible groups include: +| Payment period | Price | Upgrade window \* | +| -------------- | ------------------ | ------------------------------------- | +| Monthly | $2 USD, recurring | Within 7 days to upgrade to yearly | +| Yearly | $20 USD, recurring | Within 90 days to upgrade to lifetime | +| Lifetime | $50 USD, one-time | — | + +\* If you pay for a plan and decide to upgrade to a longer-term plan, you may pay the difference within this window. + +For recurring plans (monthly/yearly), renewals are processed automatically during the renewal window (7 days prior to expiration). Your device does not need to stay online during normal use, but it must go online at least once to refresh your license. If you remain offline past your expiration time, features will pause until the next time you go online and refresh. + +#### Free Productivity Basic + +To make Breezy widely accessible, Productivity Basic is currently free of charge for qualified individuals using it for non-commercial purposes. Eligible groups include: * Students * Public school educators @@ -98,9 +119,9 @@ To make Breezy widely accessible, Productivity Tier is currently free of charge If you believe you qualify, please email wayne@xronlinux.com. You may be asked to provide documentation to verify your eligibility. -#### Unlocking Productivity Tier +#### Unlocking a Productivity License -After your first payment, you should immediately receive an email (to your Ko-fi email address) with a verification token. Once you receive that, enter it in the `License Details` view of the `Breezy Desktop` application, available from the menu in the top window bar. +After your trial ends, purchase (or being granted free eligibility) will result in an email with a verification token. Once you receive that, enter it in the `License Details` view of the `Breezy Desktop` application, available from the menu in the top window bar. If you don't receive a token, you can request one in the `License Details` view by entering your email address. @@ -138,7 +159,7 @@ I've implemented an experimental multi-tap detection feature for screen **re-cen ### Supporter Tier -Breezy Vulkan's Supporter Tier features are enhancments to core functionality, offered as a way to reward those who have [supported the project](https://ko-fi.com/wheaney). Core features -- like Virtual Display mode, VR-Lite mouse/joystick modes, and Follow mode's display positioning/resizing settings -- will always remain available to everyone regardless of supporter status. Here's the pricing structure: +Breezy Vulkan's Supporter Tier features are enhancements to core functionality, offered as a way to reward those who have [supported the project](https://ko-fi.com/wheaney). Core features — like Virtual Display mode, VR-Lite mouse/joystick modes, and Follow mode's display positioning/resizing settings — will always remain available to everyone regardless of supporter status. Here's the pricing structure: | Payment period | Price | Upgrade window \* | | -------------- | ------------------ | ------------------------------------- | @@ -147,7 +168,7 @@ Breezy Vulkan's Supporter Tier features are enhancments to core functionality, o \* If you pay for a plan and decide to upgrade to a longer-term plan, you may pay the difference within this window. -If you have enough funds, your access will renew automatically within 7 days of expiration so you never experience an unexpected outage. Your device is never required to be online to continue using Supporter Tier features when enabled, but if your access expires while offline (even if you have enough funds), the features will be disabled until the next time your device goes online and the license can be refreshed. Be sure to check for expiration warnings prior to travel. +For recurring plans, access renews automatically during the renewal window (7 days prior to expiration). Your device does not need to stay online during normal use, but it must go online at least once to refresh your license. If you remain offline past your expiration time, features will pause until the next time you go online and refresh. Features currently offered: * Smooth Follow (in Follow mode) @@ -194,7 +215,7 @@ In order to provide you with Supporter Tier features, this application and its b * Your email address is sent to this application's backend server from either the payment vendor (Ko-fi) or from your device (at your request). Your email address may be used immediately upon receipt in its unaltered form to send you a transactional email, but it is then hashed prior to storage. The unaltered form of your email address is never stored and can no longer be referenced. The hashed value is stored for later reference. * Other personal data may be sent from the payment vendor, but is never utilized nor stored. -* Your device's MAC address is hashed on your device. It never leaves your device in its original, unaltered form. The hashed value is sent to this application's backend server and stored for later reference, and -- up to version 0.8.7 -- to Google Analytics. +* Your device's MAC address is hashed on your device. It never leaves your device in its original, unaltered form. The hashed value is sent to this application's backend server and stored for later reference. Hashing functions are a one-way process that serve to anonymize your personal data by irreversibly changing them. Once hashed, they can never be unhashed or traced back to their original values. diff --git a/VERSION b/VERSION index 38bc521..dedcc7d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.8.11 +2.9.1 diff --git a/gnome/bin/setup b/gnome/bin/setup index 0535b74..38ecff3 100755 --- a/gnome/bin/setup +++ b/gnome/bin/setup @@ -181,4 +181,4 @@ fi echo "END - xr_driver_setup" echo "Setting up productivity features" -printf "request_features=productivity_basic\n" >> /dev/shm/xr_driver_control 2>/dev/null || true \ No newline at end of file +printf "request_features=productivity,productivity_pro\n" >> /dev/shm/xr_driver_control 2>/dev/null || true \ No newline at end of file diff --git a/gnome/src/extension.js b/gnome/src/extension.js index cb22608..52f41f8 100644 --- a/gnome/src/extension.js +++ b/gnome/src/extension.js @@ -68,7 +68,7 @@ export default class BreezyDesktopExtension extends Extension { Globals.extension_dir = this.path; // safe to request on each load, acts as a no-op if already present - this._write_control('request_features', 'productivity_basic'); + this._write_control('request_features', 'productivity,productivity_pro'); Globals.data_stream.start(); diff --git a/kwin/bin/setup b/kwin/bin/setup index 6bbb974..39b998e 100755 --- a/kwin/bin/setup +++ b/kwin/bin/setup @@ -259,6 +259,6 @@ echo "END - xr_driver_setup" fix_xr_gaming_plugin echo "Setting up productivity features" -printf "request_features=productivity_basic\n" >> /dev/shm/xr_driver_control 2>/dev/null || true +printf "request_features=productivity,productivity_pro\n" >> /dev/shm/xr_driver_control 2>/dev/null || true printf "\n\033[1;33m!!! IMPORTANT !!!\033[0m You must log out and back in, then enable Breezy Desktop from the Desktop Effects in System Settings\n\n" \ No newline at end of file diff --git a/kwin/src/breezydesktopeffect.cpp b/kwin/src/breezydesktopeffect.cpp index c20c14b..0b72459 100644 --- a/kwin/src/breezydesktopeffect.cpp +++ b/kwin/src/breezydesktopeffect.cpp @@ -126,7 +126,8 @@ BreezyDesktopEffect::BreezyDesktopEffect() { QJsonObject flags; QJsonArray requested; - requested.append(QStringLiteral("productivity_basic")); + requested.append(QStringLiteral("productivity")); + requested.append(QStringLiteral("productivity_pro")); flags.insert(QStringLiteral("request_features"), requested); XRDriverIPC::instance().writeControlFlags(flags); } diff --git a/kwin/src/kcm/breezydesktopeffectkcm.cpp b/kwin/src/kcm/breezydesktopeffectkcm.cpp index a0afea7..546955b 100644 --- a/kwin/src/kcm/breezydesktopeffectkcm.cpp +++ b/kwin/src/kcm/breezydesktopeffectkcm.cpp @@ -210,7 +210,8 @@ BreezyDesktopEffectConfig::BreezyDesktopEffectConfig(QObject *parent, const KPlu { QJsonObject flags; QJsonArray requested; - requested.append(QStringLiteral("productivity_basic")); + requested.append(QStringLiteral("productivity")); + requested.append(QStringLiteral("productivity_pro")); flags.insert(QStringLiteral("request_features"), requested); XRDriverIPC::instance().writeControlFlags(flags); } @@ -1169,80 +1170,144 @@ void BreezyDesktopEffectConfig::refreshLicenseUi(const QJsonObject &rootObj) { if (!labelSummary) return; auto donate = tab->findChild("labelDonateLink"); auto globalWarn = widget()->findChild("labelGlobalWarning"); + auto poseProWarn = widget()->findChild("labelPoseProWarning"); - QString status = tr("disabled"); - QString renewalDescriptor = QStringLiteral(""); - auto uiView = rootObj.value(QStringLiteral("ui_view")).toObject(); - auto license = uiView.value(QStringLiteral("license")).toObject(); - bool warningState = false; - bool expired = false; - if (!license.isEmpty()) { - auto tiers = license.value(QStringLiteral("tiers")).toObject(); - QJsonValue prodTier = tiers.value(QStringLiteral("subscriber")); - QJsonObject prodTierObj = prodTier.isUndefined() ? QJsonObject() : prodTier.toObject(); + struct TierUiState { + QString status = BreezyDesktopEffectConfig::tr("disabled"); + QString renewalDescriptor; + bool warningState = false; + bool isActive = false; + bool isTrial = false; + bool entitled = false; + }; - auto features = license.value(QStringLiteral("features")).toObject(); - QJsonValue prodFeature = features.value(QStringLiteral("productivity_basic")); - QJsonObject prodFeatureObj = prodFeature.isUndefined() ? QJsonObject() : prodFeature.toObject(); - if (!prodTierObj.isEmpty() && !prodFeatureObj.isEmpty()) { - const QString activePeriod = prodTierObj.value(QStringLiteral("active_period")).toString(); - const bool isActive = !activePeriod.isEmpty(); - if (isActive) { - status = tr("active"); + auto computeTierState = [](const QJsonObject &tierObj, const QJsonObject &featureObj) -> TierUiState { + TierUiState out; - QString periodDescriptor = activePeriod.contains(QStringLiteral("lifetime"), Qt::CaseInsensitive) ? - tr("lifetime") : - tr("%1 license").arg(activePeriod); + // Active if both tier+feature exist and the tier reports an active period. + const QString activePeriod = tierObj.value(QStringLiteral("active_period")).toString(); + const bool isActive = !tierObj.isEmpty() && !featureObj.isEmpty() && !activePeriod.isEmpty(); - QString timeDescriptor; - auto secsVal = prodTierObj.value(QStringLiteral("funds_needed_in_seconds")); - if (secsVal.isDouble()) { - qint64 secs = static_cast(secsVal.toDouble()); - QString remaining = secondsToRemainingString(secs); - if (!remaining.isEmpty()) { - timeDescriptor = tr("%1 remaining").arg(remaining); - } + if (isActive) { + out.status = BreezyDesktopEffectConfig::tr("active"); + out.isActive = true; + out.entitled = true; + + const QString periodDescriptor = activePeriod.contains(QStringLiteral("lifetime"), Qt::CaseInsensitive) + ? BreezyDesktopEffectConfig::tr("lifetime") + : BreezyDesktopEffectConfig::tr("%1 license").arg(activePeriod); + + QString timeDescriptor; + const QJsonValue secsVal = tierObj.value(QStringLiteral("funds_needed_in_seconds")); + if (secsVal.isDouble()) { + const qint64 secs = static_cast(secsVal.toDouble()); + const QString remaining = secondsToRemainingString(secs); + if (!remaining.isEmpty()) { + timeDescriptor = BreezyDesktopEffectConfig::tr("%1 remaining").arg(remaining); } - renewalDescriptor = tr(" (%1)").arg(periodDescriptor); - warningState = !timeDescriptor.isEmpty(); - if (warningState) { - auto fundsNeeded = prodTierObj.value(QStringLiteral("funds_needed_by_period")).toObject().value(activePeriod).toDouble(); - if (fundsNeeded > 0.0) { - QString fundsNeededDescriptor = tr("$%1 USD to renew").arg(fundsNeeded); - renewalDescriptor = tr(" (%1, %2, %3)").arg(periodDescriptor, fundsNeededDescriptor, timeDescriptor); - } + } + + out.renewalDescriptor = BreezyDesktopEffectConfig::tr(" (%1)").arg(periodDescriptor); + out.warningState = !timeDescriptor.isEmpty(); + if (out.warningState) { + const double fundsNeeded = tierObj.value(QStringLiteral("funds_needed_by_period")) + .toObject() + .value(activePeriod) + .toDouble(); + if (fundsNeeded > 0.0) { + const QString fundsNeededDescriptor = BreezyDesktopEffectConfig::tr("$%1 USD to renew").arg(fundsNeeded); + out.renewalDescriptor = BreezyDesktopEffectConfig::tr(" (%1, %2, %3)").arg(periodDescriptor, fundsNeededDescriptor, timeDescriptor); } - } else { - QJsonValue isEnabled = prodFeatureObj.value(QStringLiteral("is_enabled")); - QJsonValue isTrial = prodFeatureObj.value(QStringLiteral("is_trial")); - if (isEnabled.toBool()) { - if (isTrial.toBool()) { - status = tr("in trial"); - auto secsVal = prodFeatureObj.value(QStringLiteral("funds_needed_in_seconds")); - if (secsVal.isDouble()) { - qint64 secs = static_cast(secsVal.toDouble()); - QString remaining = secondsToRemainingString(secs); - warningState = !remaining.isEmpty(); - if (warningState) { - QString timeDescriptor = tr("%1 remaining").arg(remaining); - renewalDescriptor = tr(" (%1)").arg(timeDescriptor); - } + } + return out; + } + + // Not active: interpret feature flags. + if (!featureObj.isEmpty()) { + const bool isEnabled = featureObj.value(QStringLiteral("is_enabled")).toBool(); + const bool isTrial = featureObj.value(QStringLiteral("is_trial")).toBool(); + if (isEnabled) { + if (isTrial) { + out.status = BreezyDesktopEffectConfig::tr("in trial"); + out.isTrial = true; + out.entitled = true; + const QJsonValue secsVal = featureObj.value(QStringLiteral("funds_needed_in_seconds")); + if (secsVal.isDouble()) { + const qint64 secs = static_cast(secsVal.toDouble()); + const QString remaining = secondsToRemainingString(secs); + out.warningState = !remaining.isEmpty(); + if (out.warningState) { + const QString timeDescriptor = BreezyDesktopEffectConfig::tr("%1 remaining").arg(remaining); + out.renewalDescriptor = BreezyDesktopEffectConfig::tr(" (%1)").arg(timeDescriptor); } } } else { - expired = true; + out.status = BreezyDesktopEffectConfig::tr("enabled"); + out.entitled = true; } } } + + return out; + }; + + auto uiView = rootObj.value(QStringLiteral("ui_view")).toObject(); + auto license = uiView.value(QStringLiteral("license")).toObject(); + + const QJsonObject tiers = license.value(QStringLiteral("tiers")).toObject(); + const QJsonObject features = license.value(QStringLiteral("features")).toObject(); + + const TierUiState baseState = computeTierState( + tiers.value(QStringLiteral("productivity")).toObject(), + features.value(QStringLiteral("productivity")).toObject()); + const QString baseLine = tr("Productivity Basic features are %1%2").arg(baseState.status, baseState.renewalDescriptor); + + const TierUiState proState = computeTierState( + tiers.value(QStringLiteral("productivity_pro")).toObject(), + features.value(QStringLiteral("productivity_pro")).toObject()); + const QString proLine = tr("Productivity Pro features are %1%2").arg(proState.status, proState.renewalDescriptor); + + // Display rules: + // - Only Pro if it has an active period or both are in trial + // - Both if Pro is in trial and base is active + // - Only base if Pro is disabled or expired + // - Otherwise show both (fallback) + const bool baseEntitled = baseState.entitled; + const bool proEntitled = proState.entitled; + const bool bothInTrial = proState.isTrial && baseState.isTrial; + const bool showProOnly = proEntitled && (proState.isActive || bothInTrial); + const bool showBaseOnly = !proEntitled; + const bool showBoth = !showProOnly && !showBaseOnly; + + QStringList lines; + if (showProOnly) { + lines << proLine; + } else if (showBoth) { + lines << baseLine; + lines << proLine; + } else { + lines << baseLine; } - const QString message = tr("Productivity Tier features are %1%2").arg(status, renewalDescriptor); + + const bool showBase = !showProOnly; + const bool showPro = showProOnly || showBoth; + const bool warningState = (showBase && baseState.warningState) || (showPro && proState.warningState); + + // Only disable the effect if neither tier grants access. + const bool effectDisabled = !baseEntitled && !proEntitled; + + // Show donate link when the currently relevant tier(s) are warning/disabled. + const bool shownTierNotEntitled = (showBase && !baseEntitled) || (showPro && !proEntitled); + const bool donateVisible = warningState || effectDisabled || shownTierNotEntitled; + + const QString message = lines.join(QStringLiteral("\n")); labelSummary->setText(message); - if (donate) donate->setVisible(warningState || expired); + if (donate) donate->setVisible(donateVisible); if (globalWarn && !globalWarn->isVisible()) { - if (warningState || expired) { - globalWarn->setText(message + (expired ? tr(" — effect disabled") : QString())); + if (donateVisible) { + globalWarn->setText(message + (effectDisabled ? tr(" — effect disabled") : QString())); globalWarn->setVisible(true); } else { globalWarn->clear(); @@ -1250,12 +1315,23 @@ void BreezyDesktopEffectConfig::refreshLicenseUi(const QJsonObject &rootObj) { } } - if (expired) { + if (effectDisabled) { ui.EffectEnabled->setChecked(false); ui.EffectEnabled->setEnabled(false); } else { ui.EffectEnabled->setEnabled(true); } + + if (poseProWarn) { + const bool showPoseProWarn = m_deviceConnected && m_connectedDevicePoseHasPosition && baseEntitled && !proEntitled; + if (showPoseProWarn) { + poseProWarn->setText(tr("Productivity Pro license is inactive — 6DoF features will be unavailable.")); + poseProWarn->setVisible(true); + } else { + poseProWarn->clear(); + poseProWarn->setVisible(false); + } + } } #include "breezydesktopeffectkcm.moc" \ No newline at end of file diff --git a/kwin/src/kcm/breezydesktopeffectkcm.ui b/kwin/src/kcm/breezydesktopeffectkcm.ui index ae5997f..e3451ca 100644 --- a/kwin/src/kcm/breezydesktopeffectkcm.ui +++ b/kwin/src/kcm/breezydesktopeffectkcm.ui @@ -39,6 +39,25 @@ + + + + + + + false + + + true + + + Qt::AlignHCenter|Qt::AlignVCenter + + + color: rgb(200,0,0); font-weight: bold; + + + diff --git a/modules/XRLinuxDriver b/modules/XRLinuxDriver index a78350f..873b156 160000 --- a/modules/XRLinuxDriver +++ b/modules/XRLinuxDriver @@ -1 +1 @@ -Subproject commit a78350fd326251844624b681aa966144595274e8 +Subproject commit 873b1567efc90379e48c861c5b68febfe91c4745 diff --git a/ui/po/breezydesktop.pot b/ui/po/breezydesktop.pot index 8f3799c..d9cbea8 100644 --- a/ui/po/breezydesktop.pot +++ b/ui/po/breezydesktop.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -83,16 +83,12 @@ msgstr "" msgid " ({time_remaining} remaining)" msgstr "" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" msgstr "" #: src/licensetierrow.py:24 @@ -120,14 +116,6 @@ msgstr "" 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 "" @@ -222,11 +210,11 @@ msgstr "" msgid "Switch between flat and curved displays." msgstr "" -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "" @@ -588,11 +576,11 @@ msgstr "" msgid "Done" msgstr "" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -610,33 +598,33 @@ msgstr "" msgid "Verify token" msgstr "" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "" -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 msgid "Auto-enable XR effect" msgstr "" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." msgstr "" -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -648,21 +636,21 @@ msgid "" " " msgstr "" -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -678,7 +666,7 @@ msgid "" " " msgstr "" -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "" @@ -702,7 +690,7 @@ msgstr "" msgid "Some features expire soon" msgstr "" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "" @@ -710,10 +698,20 @@ msgstr "" msgid "Productivity features are disabled" msgstr "" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "" diff --git a/ui/po/de.po b/ui/po/de.po index 2fa9954..e17716f 100644 --- a/ui/po/de.po +++ b/ui/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: 2024-08-02 20:54-0700\n" "Last-Translator: \n" "Language-Team: German \n" @@ -91,17 +91,13 @@ msgstr "Aktiviert" msgid " ({time_remaining} remaining)" msgstr " ({time_remaining} verbleibend)" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" -msgstr "Side-by-Side-Modus (Gaming)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" +msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "Glattes Verfolgen (Gaming)" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop (Produktivität)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" +msgstr "" #: src/licensetierrow.py:24 msgid "Active" @@ -128,14 +124,6 @@ msgstr " zum aktualisieren" msgid "Paid through next renewal period" msgstr "Bezahlt bis zum nächsten Erneuerungszeitraum" -#: src/licensetierrow.py:56 -msgid "Gaming" -msgstr "Gaming" - -#: src/licensetierrow.py:57 -msgid "Productivity" -msgstr "Produktivität" - #: src/licensetierrow.py:63 msgid " - renewing monthly" msgstr " - monatlich erneuern" @@ -234,11 +222,11 @@ msgstr "Gebogener Bildschirm" msgid "Switch between flat and curved displays." msgstr "Zwischen flachen und gebogenen Bildschirm wechseln." -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "Physische Bildschirme deaktivieren" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "" @@ -623,11 +611,11 @@ msgstr "Entfernter" msgid "Done" msgstr "Fertig" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "Ungültige Breezy Desktop GNOME-Installation" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -648,23 +636,23 @@ msgstr "Ein Token anfordern" msgid "Verify token" msgstr "Token verifizieren" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "Lizenzdetails" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "Kein Gerät verbunden" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "Breezy Desktop konnte kein unterstütztes XR-Gerät erkennen." -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 msgid "Auto-enable XR effect" msgstr "XR-Effekt automatisch aktivieren" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." @@ -672,11 +660,11 @@ msgstr "" "Automatisch den Breezy Desktop XR-Effekt aktivieren, wenn unterstützte " "Gläser verbunden werden" -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "Kein Treiber wird ausgeführt" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -696,11 +684,11 @@ msgstr "" "einen neuen Thread im Kanal #troubleshooting auf Discord.\n" " " -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "Breezy Desktop GNOME-Erweiterung nicht bereit" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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." @@ -709,11 +697,11 @@ msgstr "" "möglicherweise abmelden und wieder anmelden, um sie zu verwenden. " "Andernfalls folgen Sie bitte den Breezy GNOME-Einrichtungsanweisungen." -#: src/gtk/no-license.ui:13 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "Keine Lizenzdatei wurde gefunden" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -742,7 +730,7 @@ msgstr "" "haben).\n" " " -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "Erneut versuchen" @@ -768,7 +756,7 @@ msgstr "Menü" msgid "Some features expire soon" msgstr "Einige Funktionen laufen bald ab" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "Details anzeigen" @@ -776,14 +764,39 @@ msgstr "Details anzeigen" msgid "Productivity features are disabled" msgstr "Produktivitätsfunktionen sind deaktiviert" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "Zurrücksetzung erwzingen" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "Über BreezyDesktop" +#~ msgid "Side-by-side mode (gaming)" +#~ msgstr "Side-by-Side-Modus (Gaming)" + +#~ msgid "Smooth Follow (gaming)" +#~ msgstr "Glattes Verfolgen (Gaming)" + +#~ msgid "Breezy Desktop (productivity)" +#~ msgstr "Breezy Desktop (Produktivität)" + +#~ msgid "Gaming" +#~ msgstr "Gaming" + +#~ msgid "Productivity" +#~ msgstr "Produktivität" + #~ msgid "fullscreen" #~ msgstr "Vollbild" diff --git a/ui/po/es.po b/ui/po/es.po index bd0af20..ee17494 100644 --- a/ui/po/es.po +++ b/ui/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: 2024-08-02 20:55-0700\n" "Last-Translator: \n" "Language-Team: Spanish \n" @@ -89,17 +89,13 @@ msgstr "Habilitado" msgid " ({time_remaining} remaining)" msgstr " ({time_remaining} restantes)" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" -msgstr "Modo lado a lado (juegos)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" +msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "Seguimiento suave (juegos)" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop (productividad)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" +msgstr "" #: src/licensetierrow.py:24 msgid "Active" @@ -126,14 +122,6 @@ msgstr " para actualizar" msgid "Paid through next renewal period" msgstr "Pagado hasta el próximo período de renovación" -#: src/licensetierrow.py:56 -msgid "Gaming" -msgstr "Juegos" - -#: src/licensetierrow.py:57 -msgid "Productivity" -msgstr "Productividad" - #: src/licensetierrow.py:63 msgid " - renewing monthly" msgstr " - renovando mensualmente" @@ -232,11 +220,11 @@ msgstr "Pantalla curvada" msgid "Switch between flat and curved displays." msgstr "Cambiar entre pantallas planas y curvadas." -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "Desactivar pantallas físicas" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "" @@ -619,11 +607,11 @@ msgstr "más lejano" msgid "Done" msgstr "Hecho" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "Configuración inválida de Breezy Desktop GNOME" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -643,23 +631,23 @@ msgstr "Solicitar un token" msgid "Verify token" msgstr "Verificar token" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "Detalles de la Licencia" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "No hay dispositivo conectado" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "Breezy Desktop no pudo detectar ningún dispositivo XR compatible." -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 msgid "Auto-enable XR effect" msgstr "Auto-activar efecto XR" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." @@ -667,11 +655,11 @@ msgstr "" "Habilita automáticamente el efecto Breezy Desktop XR cuando se conectan " "gafas compatibles." -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "No se está ejecutando ningún controlador" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -691,11 +679,11 @@ msgstr "" "nuevo hilo en el canal #troubleshooting de Discord.\n" " " -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "La extensión de Breezy Desktop GNOME no está lista" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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." @@ -704,11 +692,11 @@ msgstr "" "volver a iniciar para usarla. De lo contrario, siga las instrucciones de " "configuración de Breezy GNOME." -#: src/gtk/no-license.ui:13 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "No se encontró ningún archivo de licencia" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -735,7 +723,7 @@ msgstr "" "Breezy Desktop sin conexión hasta que expiren las características (o " "indefinidamente, si ha elegido el acceso de por vida). " -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "Reintentar" @@ -761,7 +749,7 @@ msgstr "Menú" msgid "Some features expire soon" msgstr "Algunas funciones expirarán pronto" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "Ver detalles" @@ -769,14 +757,39 @@ msgstr "Ver detalles" msgid "Productivity features are disabled" msgstr "Las funciones de productividad están deshabilitadas" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "Reinicio forzoso" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "Acerca de BreezyDesktop" +#~ msgid "Side-by-side mode (gaming)" +#~ msgstr "Modo lado a lado (juegos)" + +#~ msgid "Smooth Follow (gaming)" +#~ msgstr "Seguimiento suave (juegos)" + +#~ msgid "Breezy Desktop (productivity)" +#~ msgstr "Breezy Desktop (productividad)" + +#~ msgid "Gaming" +#~ msgstr "Juegos" + +#~ msgid "Productivity" +#~ msgstr "Productividad" + #~ msgid "fullscreen" #~ msgstr "a toda pantalla" diff --git a/ui/po/fr.po b/ui/po/fr.po index a9edd7f..09d33ce 100644 --- a/ui/po/fr.po +++ b/ui/po/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: 2024-08-02 20:54-0700\n" "Last-Translator: \n" "Language-Team: French \n" @@ -92,17 +92,13 @@ msgstr "Activé" msgid " ({time_remaining} remaining)" msgstr " ({time_remaining} restant)" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" -msgstr "Mode SBS (jeu)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" +msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "Suivi fluide (jeu)" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop (productivité)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" +msgstr "" #: src/licensetierrow.py:24 msgid "Active" @@ -129,14 +125,6 @@ msgstr " à mettre à niveau" msgid "Paid through next renewal period" msgstr "Payé jusqu'à la prochaine période de renouvellement" -#: src/licensetierrow.py:56 -msgid "Gaming" -msgstr "Jeu" - -#: src/licensetierrow.py:57 -msgid "Productivity" -msgstr "Productivité" - #: src/licensetierrow.py:63 msgid " - renewing monthly" msgstr " - renouvellement mensuel" @@ -234,11 +222,11 @@ msgstr "Affichage incurvé" msgid "Switch between flat and curved displays." msgstr "Basculez entre les affichages plats et incurvés." -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "Désactiver les écrans physiques" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "" @@ -628,11 +616,11 @@ msgstr "Plus éloigné" msgid "Done" msgstr "Terminé" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "Configuration Breezy Desktop GNOME non valide" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -653,23 +641,23 @@ msgstr "Demander un jeton d'authentification" msgid "Verify token" msgstr "Vérifier le jeton d'authentification" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "Détails de la licence" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "Aucun appareil connecté" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "Breezy Desktop n'a pas pu détecter d'appareils XR pris en charge." -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 msgid "Auto-enable XR effect" msgstr "Activation automatique de l'effet XR" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." @@ -677,11 +665,11 @@ msgstr "" "Activer automatiquement l'effet Breezy Desktop XR lorsque des lunettes " "compatibles sont connectées." -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "Aucun pilote en cours d'exécution" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -701,11 +689,11 @@ msgstr "" "discussion dans le canal #troubleshooting sur Discord.\n" " " -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "Extension Breezy Desktop GNOME non prête" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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." @@ -714,11 +702,11 @@ msgstr "" "déconnecter et vous reconnecter pour l'utiliser. Sinon, veuillez suivre les " "instructions d'installation de Breezy GNOME." -#: src/gtk/no-license.ui:13 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "Aucun fichier de licence trouvé" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -746,7 +734,7 @@ msgstr "" "(ou indéfiniment, si vous avez choisi l'accès à vie).\n" " " -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "Réessayer" @@ -771,7 +759,7 @@ msgstr "Menu" msgid "Some features expire soon" msgstr "Certaines fonctionnalités expirent bientôt" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "Afficher les détails" @@ -779,14 +767,39 @@ msgstr "Afficher les détails" msgid "Productivity features are disabled" msgstr "Les fonctionnalités de productivité sont désactivées" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "Réinitialiser" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "À propos de BreezyDesktop" +#~ msgid "Side-by-side mode (gaming)" +#~ msgstr "Mode SBS (jeu)" + +#~ msgid "Smooth Follow (gaming)" +#~ msgstr "Suivi fluide (jeu)" + +#~ msgid "Breezy Desktop (productivity)" +#~ msgstr "Breezy Desktop (productivité)" + +#~ msgid "Gaming" +#~ msgstr "Jeu" + +#~ msgid "Productivity" +#~ msgstr "Productivité" + #~ msgid "fullscreen" #~ msgstr "Plein écran" diff --git a/ui/po/it.po b/ui/po/it.po index 8a28ab4..5fb2dd1 100644 --- a/ui/po/it.po +++ b/ui/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: 2024-08-02 21:14-0700\n" "Last-Translator: \n" "Language-Team: Italian \n" @@ -90,17 +90,13 @@ msgstr "Abilitato" msgid " ({time_remaining} remaining)" msgstr " ({time_remaining} rimanenti)" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" -msgstr "Modalità side-by-side (gaming)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" +msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "Smooth Follow (gaming)" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop (produttività)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" +msgstr "" #: src/licensetierrow.py:24 msgid "Active" @@ -127,14 +123,6 @@ msgstr " per aggiornare" msgid "Paid through next renewal period" msgstr "Pagato fino al prossimo periodo di rinnovo" -#: src/licensetierrow.py:56 -msgid "Gaming" -msgstr "Gaming" - -#: src/licensetierrow.py:57 -msgid "Productivity" -msgstr "Produttività" - #: src/licensetierrow.py:63 msgid " - renewing monthly" msgstr " - rinnovo mensile" @@ -231,11 +219,11 @@ msgstr "Schermo curvo" msgid "Switch between flat and curved displays." msgstr "Passa da display piatti a curvi." -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "Disabilita display fisici" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "" @@ -625,11 +613,11 @@ msgstr "più lontano" msgid "Done" msgstr "Fatto" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "Configurazione non valida di Breezy Desktop GNOME" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -650,23 +638,23 @@ msgstr "Richiesta di un token" msgid "Verify token" msgstr "Verifica del token" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "Dettagli della licenza" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "Nessun dispositivo connesso" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "Breezy Desktop non ha rilevato nessun dispositivo XR supportato." -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 msgid "Auto-enable XR effect" msgstr "Abilitazione automatica effetto XR" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." @@ -674,11 +662,11 @@ msgstr "" "Abilita automaticamente l'effetto XR di Breezy Desktop quando vengono " "connessi degli occhiali supportati." -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "Nessun driver in esecuzione" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -698,11 +686,11 @@ msgstr "" "thread nel canale #troubleshooting su Discord.\n" " " -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "Estensione di Breezy Desktop GNOME non pronta" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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." @@ -711,11 +699,11 @@ msgstr "" "disconnettersi e riconnettersi per utilizzarla. In caso contrario, segui le " "istruzioni di configurazione di Breezy GNOME." -#: src/gtk/no-license.ui:13 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "Nessun file di licenza trovato" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -743,7 +731,7 @@ msgstr "" "indeterminato, se hai scelto l'accesso perpetuo).\n" " " -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "Riprova" @@ -767,7 +755,7 @@ msgstr "Menu" msgid "Some features expire soon" msgstr "Alcune funzionalità scadranno presto" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "Visualizza dettagli" @@ -775,14 +763,39 @@ msgstr "Visualizza dettagli" msgid "Productivity features are disabled" msgstr "Le funzionalità di produttività sono disabilitate" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "Reset forzato" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "Informazioni su BreezyDesktop" +#~ msgid "Side-by-side mode (gaming)" +#~ msgstr "Modalità side-by-side (gaming)" + +#~ msgid "Smooth Follow (gaming)" +#~ msgstr "Smooth Follow (gaming)" + +#~ msgid "Breezy Desktop (productivity)" +#~ msgstr "Breezy Desktop (produttività)" + +#~ msgid "Gaming" +#~ msgstr "Gaming" + +#~ msgid "Productivity" +#~ msgstr "Produttività" + #~ msgid "fullscreen" #~ msgstr "schermo intero" diff --git a/ui/po/ja.po b/ui/po/ja.po index 4fc5bb4..ccc66b0 100644 --- a/ui/po/ja.po +++ b/ui/po/ja.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: 2026-02-11 07:53+0900\n" "Last-Translator: iwaim.sub@gmail.com\n" "Language-Team: Japanese \n" @@ -88,17 +88,13 @@ msgstr "有効" msgid " ({time_remaining} remaining)" msgstr "(残り {time_remaining})" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" -msgstr "サイドバイサイドモード(ゲーミング)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" +msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "スムーズフォロー(ゲーミング)" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop(プロダクティビティ)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" +msgstr "" #: src/licensetierrow.py:24 msgid "Active" @@ -125,14 +121,6 @@ msgstr "でアップグレード可能" 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 " - 月払い" @@ -229,11 +217,11 @@ msgstr "曲面ディスプレイ" msgid "Switch between flat and curved displays." msgstr "平面と曲面ディスプレイを切り替えます。" -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "物理ディスプレイの無効化" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "XRエフェクト有効時、自動的に物理ディスプレイを無効化する。" @@ -614,11 +602,11 @@ msgstr "遠い" msgid "Done" msgstr "完了" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "Breezy Desktop GNOMEの無効なセットアップ" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -638,34 +626,34 @@ msgstr "トークンをリクエストする" msgid "Verify token" msgstr "トークンを検証する" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "ライセンスの詳細" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "デバイスが接続されていません" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "Breezy Desktopは対応しているXRデバイスを検出できませんでした。" -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 msgid "Auto-enable XR effect" msgstr "XRエフェクトの自動有効化" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." msgstr "" "対応メガネを接続するとBreezy DesktopのXRエフェクトを自動的に開始します。" -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "ドライバーが実行されていません" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -685,11 +673,11 @@ msgstr "" "#troubleshootingチャンネルで新しいスレッドを作成してください。\n" " " -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "Breezy Desktop GNOME Shell拡張機能が準備できていません" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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." @@ -698,11 +686,11 @@ msgstr "" "る必要があるかもしれません。それ以外の場合は、Breezy GNOMEのセットアップ手順" "に従ってください。" -#: src/gtk/no-license.ui:13 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "ライセンスファイルが見つかりませんでした" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -730,7 +718,7 @@ msgstr "" "せん。)\n" " " -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "もう一度お試しください" @@ -755,7 +743,7 @@ msgstr "メニュー" msgid "Some features expire soon" msgstr "一部の機能はもうすぐ期限が切れます" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "詳細を表示" @@ -763,14 +751,39 @@ msgstr "詳細を表示" msgid "Productivity features are disabled" msgstr "プロダクティビティ機能が無効になっています" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "強制リセット" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "Breezy Desktopについて" +#~ msgid "Side-by-side mode (gaming)" +#~ msgstr "サイドバイサイドモード(ゲーミング)" + +#~ msgid "Smooth Follow (gaming)" +#~ msgstr "スムーズフォロー(ゲーミング)" + +#~ msgid "Breezy Desktop (productivity)" +#~ msgstr "Breezy Desktop(プロダクティビティ)" + +#~ msgid "Gaming" +#~ msgstr "ゲーミング" + +#~ msgid "Productivity" +#~ msgstr "プロダクティビティ" + #~ msgid "fullscreen" #~ msgstr "全画面" diff --git a/ui/po/mo/de/LC_MESSAGES/breezydesktop.mo b/ui/po/mo/de/LC_MESSAGES/breezydesktop.mo index d90b8ce38fa10d733a9e9c622038dbb5d481acdb..d72ea5dcb0c4540547f5147cb7186624a6f3360c 100644 GIT binary patch delta 3151 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 VyyA+*{?d}-<&S;}6{e+n{s9Q_YxDpB diff --git a/ui/po/mo/es/LC_MESSAGES/breezydesktop.mo b/ui/po/mo/es/LC_MESSAGES/breezydesktop.mo index db733047699952cafc2a16a8c8c6c0687c124a09..eedac0367dcb0d96077ee0915fb9314bfa62f2e4 100644 GIT binary patch delta 3135 zcmXxm32anV6vpwxOpCNkDTS^;OF=4SEtIlVkg~Leg6tFp%8s-m7Om{dfC91!fkG^( zSQHctiOQskk`#>wq9FvUCPpF%3TcE$Fd`Db`2XhJx#7(3zBg~)z4x5^Ua493TUGE< ztEhcO+ex$|c0`$-#s|&#p#9t2EVYT*J#55Qac1e9zu&^FHKxUL4trn>79f{e2}WZn zHpLn4c%HKY6U~BFNk=!@h`O)_{rEPf;JX-$r%*ROg9+Gx0sI|P@ir!7Y)kLB1152t zkDAzcEWv3w6^~#gaW)h87w#9nX?|(*(a~YM%TNn)2lFmR*q>(?8VUti7%y-92P!rjJD#aG;i`BRr zzd;Q+oqEan*bf&YNwUMJfj@QMpG8gRLJIlUN`B$&TYc|DMfy&HURO)u2 zCVC7r@pJ5j7f}ldaFI$?g!x#3EAcQYBN?Po-{-d>|4L~YADZb3RPDDT_pz;xtZHWT&KtiZ0g50$wu-1p~Dd*?b%#CR^&rk#reurf$TyYnb=jh#T1?CSp7f>s^gqq+j=Rc@{A3FV6-cu5T z+JBZoM?dI?n)zVlpB3_9EsEM zeS8!Boz323e5<8135(e&WAF{s3!@S9@Gfe1ckg0049oCQtVP}MYt+OunT@{B#zZo= z2$hlb-MstlMrE)Tm9csZYSW#gquMv3Hi@shm$J6b4ycuO##o$)#aM>S&5j_|vGb?_ zZ(|PndU*HAMeTtBsLYihm)Oi6F*=dIP86AdWj?9nQiS zOk%WV*dB*qHfq3fRLNFhbKHZ`co3Db!#U)C1fAoY7>u`38Ob5vJaIM}weoT#IaZC7 z*-j(>?3y#Vx7h@ai%})pkGkJ^+=PK#Z;$N3$2mTMnfParj#eJuhu0-$p;B3m8u$}z zg;#Jq{*7!GD`XUXzZmne1{3jn)ZS=BeIMxSm8w4`a2!PKk=>EwAL!`9>qs^&ffsiY z7GNxv;(VNgC3prWVFK@I=57lx9&1n~IEn%M7&Vc43%A|(jgY&yE2 z997G0s2c6Xy?6kXft-QfUKoaP9FIa>KNWTT98`@Ly7N`26|Y6rdKYRhy^hIvFf8@2 zb0^LrPmL`iCJ?G$OM=JMCKGC!=!?V*9niEQwOPa*qMT??Oe54PJZ!5o!b@~Wh$S(8 zxGm&U8%!lo8%s0SVGJr))RW}wcn-? zw4g2JvlsCiv6e_9o+BbnkIQO8wcF%QQmOENKvFQ1*hoA{sI?_}6IH|$gqk+)NJ4cl zCe*a2G=8{s@vvuc2*D<|9qt^jgm6pebA;>1;tFD_JC1T{$1fvR5yRa%kxPss^r)&8 zdRRM+pG9mYDv2$Gn$FKw$F(*1LgWBf5}k;hL^kmhq1KTYM>Hp52>sz1L+Gu!f#9#X zJxy#Q)Z$w3F^pJ8^a+&(zG@nJqV;F~(0|ESe4(3Zt9_yU?YhQ=u6FT7hi>$&^@sN7 Mj`N4o``wTF9}62Pj{pDw delta 3417 zcmZA33rtpJ9LMoTu5y!jK@h}zl~71gQBcwF4k|)~J4+6eVeDMCHr8hd{e>V_@I>X?0~0S}^X z^Z{xjr!f(g2F5ajQ1=~=eQ_G<`emqbO35s1q(D|I8gW znz4f)RTGKG*roz?UK8p`-o#0G47sIPk?C-oU*6=@K1$V8wfHpV`lhdO@&s%WcF zHPDD8$GnXX;RTFld~=JAilgUXW1he$T#PliA3N|3tfWBZVPrC2JuF3iP>v$2XwG07 zUPD!X45LoL8Awu0GwQzYU?7GJA^$odl1>yU%txiBVyJcF4M-iCW>o49ql)hsDz%-c zTDgh-7?5Haii}|#7>t=X9cQ45d?&J6=0pnl*MQ$}U^w1H-KgI%s}>SaDNIMkFf%b5 z>rpBH2z7lY2H=mV+W5uZ_u;0RKoCBHQTQIt!5|DALH_j`M3AqE7>6ptLev^oqL!u! zHL;zj)V1O?Jb;;a9hI2@sn&a+iON7Bl2o%9RV(izr<$v_J>4Uj4F@tX44YAFxEFQf zFK{!4jx-;{$;RGThgyneEXG#M(fj`w zoq0Nu&m0eH_F*_)L@mv?7>YlkCh|KDz?clHHZo8X%0n&99@OtIqt^Ii)Y6^9m#_ns zkz$_O`~I(^qttIiU9cT>K`UzQ_uI!0p`N%MHPBg9(Otl3?6mE&?ZG;ANkS*VF-6~h70Vi86j4O1Bh=yu6<{H;kfE)dZM0aAkvBZ z+fEJ)yzgL=y}v;QJJme@hMWlKm9%=TtGI4OZCQO;Z9{U)B}cU9l*8leUsP3AUFvZ~ zU-$83#cuH#QC3`%vb-Us2Ax$dHc6%4QTKV%JXf*HSy{xU$RerSdjX@B cl-8A1m6cT2x|}t2MfFU?{>k%m+TVWv0bY1(CIA2c diff --git a/ui/po/mo/fr/LC_MESSAGES/breezydesktop.mo b/ui/po/mo/fr/LC_MESSAGES/breezydesktop.mo index fd49340fffa8bddf409f44154dc0df7efdcfbeb0..c27df4908f30d26ba496e07d72be7803608ba6a6 100644 GIT binary patch delta 3179 zcmX}udrZ}39LMo5ASeVVASxFFZ*dXtayg`eTr`kG6x6(wqLztQG?6rp0cK`t&biE- zmzu7vvf6RwY~_WOvzE=KHMg{7v?|XcYe?9`<%n^=Iu@X z8}U8%8RbPHl{nbL?40V6yin4k%?5;+4Z@$WFve^k*N5~rOTft(k9DYzEXRAW5yP-7In2y|nv3MRc@iGp^E}V!18TAC5kIA?nXJY_0 zktn8DfN}T%R-&F4!Kiv-A|}zl4W!Zw^N~qeF=~c0T)Q6iz(!JJ1?PD<|ZcL zpQwSx(n!ZN9F4{3!*!@Fdjkvc5;kKb%cm7-OJ@Cb!(lFHNze15kzPmTz-^=t%j0g{ zSB;uMBNk&T@=WVMou2EMja{gf8^%SwKL+*wG+r`sInKmAek#i1AFu#_M`dd^`@u78 zJZfuZ@S-JOje5Tsw_qD;#q3_QDNu|W@OIR5kD!+NE!TbzHPH^#ef}F%w1jtY8um)_ z&TTDfJ!a@_f^prR4ip+?w*99e5a&F~e}R=k7Jcmb7ES5O^ZM|Bj! zsLC-C^}K4-`|D6Ev=8~Sh10X2{|REGyp zpMMpn;t4#5cTfX7HOjm198RKr5jFE(qrK;(jAs2KxGCC(#-(4|gDcc9s`yO(z!M#Ia_jxDj{YX+IV6%F4!hOS1yW3)_#{ zf-~5NU!(4;9PfR@twkl(QCy6lAb*z0_pv^|5G$}96YvtUOLh}U8|%#|H9)_Q%EMF| zP&51#XW%W=(&qC$tPhkTW3^SN2OhyFJc%pu3|3(d)2zp4q%ZphHSlf-W?^v4P^ZO*N%)n!ej7FLyBLXK_j~_O#9%D# zIMnCUF^>K%!(H&9a-bOFu^jv1T#ToKQe8uu34*SJ02tEt3lDW zsAv%CKUg%o|DjNtTZ<-pErwC=a@~4{6iBXa+ zCo+lkguajp=s%d1N<5tcl{rK-F_9QYq!ObD9aG)EnwUV;5>>>5#FK5cPxwwncYD?A@IZ5m=dUJ1nrI m|97E*n&i!)fqzn4V*-b>zvvNY9CbP@P&n>bSRf?-SonWBMJCMv delta 3454 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 delta 3457 zcmajhdrXye9LMn=a#56vq9Q8f(G)>FiiieyLl6j%P)R7SaZ3sCs2s&Z=21fv#k{1p z#cU+4O=nx~v|Ktb<*ivxx5$-qP17;6{%E#L+sxjd^E^2J>o>m7>-T%k^E|)H_xC*G z@|q@(_vfgfeTJe#EO9Q#n2T5&%7L;q%$S$}W18_U9t<}oj`Q0ijp>VrFbYqiZn=uR z@Hz%#Cx+nfcKc7;N7&C8uX#d659-(3x-bC)X^+DJI01WN0qVge*aypzF&Q_;;6{wb z5A60)>`(g=YG5}pAMar)PUImj`ZqhMv~l7wX5)uUN8Z5*9L4A~<1|dbQXGaGa4NRr z6ugCl@HwVcf@!Fk@4{4kA5Y*_)N@-HU3dC7tyBhLJNCen$fB4FsF_}~+jmh9e28Sp zJVA9B#I(EP5Y&K1;s~rl`ZC*5&uzoOcnEd>dGxBIOH}+hL(Q}k(=dqjXSK{U)bB;8 z0W7f3m)q@nREipLB5uarcmmaNA^DLdI0=`a_RRhm)?WiSWMA+lYGhxdW^@s!;}v`X zBUvU^+2qn^mQ(49d54NM0D2{_J zNJCDUg{ToXp!UW#WK8BN>bhT16A9xL%D`BpFS7{wGYuR@;a=2Ao<=?QTQ3z>+jOFC zc#Qm+0puY8Q*bUWLXG@0OvRI^UHt&*n_Xw6E*6!Fbky(JxDJa@EBPJfVAv3A0^VXO zdT=c&M;^Pq2{pozzz&Xhr=3pJgUPC)E>#ldYprNGR%3@`R{G7BiDP) zEh@_SZ>XIAVYeTma{Cz7QRGl#x?z9Ru8u)o0OLfhU>4>D7&9No>yZ zyp=+yZ3c$x{V%4X+?AnLU?r-Cb82< zv&lv$R^oWvgBf@ZCu8tv)}PffGpMMe3Jk$xn2)D0jHL`6W92ZKr}g6eaMTQwP$j6_wPg9*N#fTVeF1)P!suP9P6*8=-|XD?9JCgxx8ZgBhI9K z3pK-d)=@K?hPrMZYV$5eJ-7m2!WzuPr#x^X%qo_?6 zK)yB6Uf5Ibe=-$yJQWXMHb&rW48i-T&GHD9^WZ5~&LdE}zc1>%19e{_>b_L$hSO20 z$ix9yYPVe&p!eTFXcMg_w0T}377{9@#2!K;R@rS~wxOFCZMQ`;p@}4@L77d^hrh7; zriEBcyh*%8=ne8}iK+?ZNIP9c%UR~HSu@x{{as=&v5C;mjU~E@z7W*z$2{hJqQ#}G;Oj~Q4?L=(Y;$~0mfv5Zh2Hxk-tEzL3!LvmhOJymMM}!htL@^ObY$582WMVnd zpNJwJlb^g2}%>xnVMBI4P?o9O>|ZN-;~C4}C6 z6_17gn9Z>#kxS^CqLM@O(^eWpWjOH~QAl)^AykTdabageA`(`ta#gOba96LXc6$txe1b4#~B;IySZ`FnqQK()GJ9 eJ-Ib-QlYD|thU;Hw#}iwpN`@Gy6>3i3H}cVd3pf= diff --git a/ui/po/mo/ja/LC_MESSAGES/breezydesktop.mo b/ui/po/mo/ja/LC_MESSAGES/breezydesktop.mo index eca355454582783dfafba5b646fe707e546816d4..5ed17f62f98629da2f2652e65324eb8f7cc531c1 100644 GIT binary patch delta 4144 zcmX}u2~gD69l-Iopm?G|5iy|t#S=vYyg(7}7)VStiIQkcT-m>{=^nbfNIW7esAwql zST*s85=){cR&BQ#jd$&|VkIOwBO(UAARF*Kkxnb?YrL} zFRXJMsCQKVtw*~ZinNbNC%U#*>MH)wi4W4#iAtq9lq$wMxTKp>eR=-O6H4_&H}=3c zQGT)oyWno5DfIy+;1OMpYCpkbrK;6=GSblJC>8HuJU+nQ_#Jk}E=hL7Dab#S!ADmd zgQ++bQ*ePUFUMY#-$EH!6PDnIScz$Qg0v1 zgnnC1W(t`rCH{eCj-u@4C6xO2aTs>#uhjE62IY*@V?J(2 zxdoR|27C?aQdNIPM)oGjuq&kF8p=bkJ^lhG<6(RX@1o2kXMo*7G0K+A*X7qxR=|T& zuO4M(oA4R@6-vARK_*hI;#m(FSznaBABsWDM&3EgmM=Cq|0CE z@(t}jQTF;aO2>~d4*!eEa{uE7+AoUU$W2lsvDCrg!dIv(HIz4BCMRzO z=3^ediSzI{F2aOt`;fYDHRa7HhpNjcyW>opMmY!N3uJ$ zJ>l`yY?w4O3zKjG%943dW^xQ;9int}Px}}ER$wQ&|L>8JJ^l!#!^Qm;@uT|Y0uM4msV%dcn`qnr^JR`(=RMJ5Fs(1AZ8B*`*05^oc-H9BXDjvw>w;?uZjIs!$MzFq zX)vE`Z7eO+whJ%#afj z))fX}zRqvLDZ~@HT!r%fo~X;hG@_7@E7_KOWa`@rxGUP)^>+!8e`mFiUhg@?QDXW+ zZm$_K13@*t!s#nF!S4^6hSzikD+8vN3Pz>R9SRyt{Q)EBUS%3ipUZH$gCVD{%#_SB zk8@=(JDSj|gCou98oA2vGmTJ1zzkOSJuYLI%PbF=W-v3-Ii)n7-$zSRDjm_Qy*-YE zVqaN>8H^V784?#=p5~9sH$z5+zsm491LdZ%(qCy*Iq5%C@&A5|kl%1FTV^@~+3E$i z%N)s=J*F#?-Y78*hFE`i789!m{=n**uIXRu5bp}HtUko^XL60-! z4@@xJRZh1zJ6O47O1anR_GFj&z0vrAt2;#=WFY}LJI)t#~G zHd=KbJvg(m%=_TXCe_ls>DHd#MCRo5>1BlvS+yTqwar%TDJy)mrSYAcXB#6;*(s5| zd5Mv3c^#t-**-_VnZHZ z6@J?apR>ZdteRSN>(GZSTeeaoa=38Z>~Mq;*d57daI6s9A>## ZG(`vMZn((`uVWm$Zk^g0xjpse{{i4=lGFeI delta 3760 zcmZYBdr(x@0mt!k7v&*>FBU-*7pV;xK_vl!fNW}{jnP!2A!4)*0>Tntm6tI}SAj~1 z@2=Jm(`ZOKjZRJ4UhQaXjjhu(t#u|%n@RqOsk4|#8#}RMCsR$+_WRp=NuBnLzx|wZ z_dd?+E)Mlu=liVC<%y#X8p1e>a8spG)Ph z94Ns|=0}@q6>5#^u@s-e&3FO%XUch1^nEpQso9Dez#-J$IgSk0Tt}Ukz_e;$v(b-b zs19|9sBn%sgtPD@YAHTI-S}f<`AjUs(go8{=g-F+T!{~1H>%@rVKKgs+V!c^oeuku zTbVM9E)DAYP(78cRDxK6*RT?2` z>3AjTfsdi~P!qQ6{ohC>i33;NFK)QrLS0}nf7%0ys68;=ZKt8ub{gtIbI^l@s9j%- zykTZ3Y6feu+A`)z9K=6n8?)0BGNzSxMN@n04rin(%&SJ6g<7+GWH!wLR7cjLIp0Ihx2WiWR<3hGvTGh{b1p%>CEZA;%}LY^ z-@_{W0PC=b4b+c^@c?Gu>3n}0m(w0M+xg+CK@OP>7`l(jb5siO3Oa8h6owwX=H_c`Jb;1t!#NDV1 z54i0!*h%|5mSWL7XX-YhuIop2aF5$Qi)Ltc}$>v zDMUphc-Pg#LQkZfhq}=3T8%od4Os>AJuJhE?)UNh9O{8tSb>!oz#XWmzwRC%Tg)p+ zdkLPw&Np_NC zGM`it6+bydwv!g3Ur?2)L~js(-=aTO5Pj2V7}D0QVBGx>3AbWKa3wZU#qYqjhv=`%g{&5W&{ zvOryZ9_KdK*O?WnuiKp0j=q*4A2|)tYjVwsmSC`>(N`I4ZVqnx;&Avx=2ZKW%u|+q z+&A5m7~Irq*4MOkG}gC;ugo|dKey0VP*7TMcld?u$=n=#a?}B;KRcw!^sbl;cdkkc7M@1kDXgmJZk-iFCV|UZ+~R_ZWHM_73p~?(mN38 z-KWZbn?uo?4CMUJ?Q*%~Or-ayzU_G}(t9w{b1c$(g69978GgRJ$j)AH*|OvPzL+t? Tr+1n^Z$BE@-WR@qVfB9iCZ_1` diff --git a/ui/po/mo/pt_BR/LC_MESSAGES/breezydesktop.mo b/ui/po/mo/pt_BR/LC_MESSAGES/breezydesktop.mo index d83974909ed170d502c0896e7366cf1834d49461..e43acfcb3ba07f470c244b1dcf6466fd8d6b113d 100644 GIT binary patch delta 3121 zcmXxmdrZ}39LMpm+!6$pi=co;f)@xmQjkibM@5VyCV4|eLh^1Z5}KOE(bQ1W86<8w z-85Xw+4{qyWtYvSE|+cPN>_iiY_sX8HrLjyP3!&n{hsq|UtZ7iJHOv^`#!&OxZQTP zHT-j0T(?mU5xK;kII~Omdtd%g?)Ebq+{f%5-o=;{v!Pt??QfQji37~ia406?Smai# zz<8|21gv%Kxz0tHVHUO~D(Ywx>c)K-i-$1_-@zn2i|Y7eOvTHXj5l#G-o{M)*R@jz znhl~|gqm0oLm0w(?8X+xw?C+yiDwf3}?EsF(cX2pg#!9?{*_hAl7vLn+ z0=n^YJdS#PAQ5~| z6I+UT*otGZ3$>6ds1!ZK3e4l7ZPDvYwhwjVDbxzC zVi0d4&)Oh*)7uijBCJL2+!oa5yKyw0z&ZF8>aY&sq478pbts#{RQSx+pmMSowbecD zhL3Ou?Te_LD(9wZ+>Dy&7pRVJp;GXxYxg2^wFjvC(ueswSBx`hS7JPd_fye~52I#u z29@&&w&7>UD{m!_``0Hrr=ji-p>jG8mD5G8-Hb}zO4LAGF$UXFhjka~{Mk_|oFn@X z*YgE)1+%gA39}_UQA-|JgqO$O5jz{K$)lo;63~Y@1rKzTjXE=8+EoG zq0UJ5lm1SPLLK^X7}nN>sKnu7jK?M<3$_B);a;r9w^2LvBdX*7urKBm`_~Il&)1>` zn1f2~3e3kHScNB1{oE-g|JuToG5(GDm_WM%HSiP+Vl7_8L#P3(OZ*ki#tF3RQ3H0O za(o)~{HLgeT}Ac#H7>*(I3EiG?7wmw4*2i$G1SUFL3Y!AKuz!=GHFXEA4*LSgSZLD z;|16L6I*EqO3j$7opOGMd9)wm037y|Kar9!6%M*}pk{mq)9^gb#%r#f#i+Vog!EyR zsE%5YELa#hS9TWb@q5(5iptnUoQ~R=4%EbsJHywh4CKNCXJWa(HQD$A*Eizxco{k1 zmdY2r1|Ek>#SBcwI%G_1L`|?0wV*3FAHPK%)&jogHPK>B)cZe|iVjU99>Zmrfsar* zOJ{%8Q8w~`jX>QWaM#OG6A5A})}RJzK;?cJ4#L&WcFd%G1p6?)t))>%OeC}un%!JN zMX6~e8q}bq``C-PlvqXRO<6>!toHHVb653f<1ZWFO+*(~5=F!q#`nrB{%X6m@)g7` zLiyLqCKEy8O=3NvvdqUjlo8!?rLmQpIu5&Cjcsq*puXBa_!FR_8>@b;fd zJJCc$%XTUoqYd0j6cC5pwR-1p)a%)g(A&{S%p{&Ab`t!0d*68bQKdgIg?OFdtHmO9 w$zLW!O44`6MlNLDj*0XP*&Y+A%PmQXoG5IKi)55^#YWDTUXO`fC@YTtAN9%`Jpcdz delta 3418 zcmZA3drZ}39LMnoLa;d0}R@ zRoa@vQkor{P1heb%vr6KHT%bG)@s&fH8+>0R`1XGJ@|*u_C2rX`Tc(9xqYACfe&h~ z)djA`M;tJe{lp;Rc!V+MF)Nx6N`4PxlEREB!0Wg!)|kOuUmRylAFRQ6+>ZLn8yJJ{ zq6gbC5<6`Bto0lw7!xoTsHmeWs0aVTZumF$!@JlW`}A@judK>3s^bq$wE=0|EIcmTL)Y%AN9qvGW8q7cTdX(3_ABTEA5tV8$D%B(0cEI?k zD5vAlgEKK4b5W-`4>`c57`1g9v63I6JvadG4>e{5Uq~9}?o0!(f)>(>oHKJAHL*@q z$}XV?f5J$;|JUt>KdrY=1K&jr+$+WXLJDdnqwq1DXxl4MD_V=%$!b(;TCA_5`Z;3n zpGNg_31b-FT%l5g*Rce%>3t`@hi&NNfaKw2%*Ekp?hlHCWXUw+czg?W`oF<>7|sb~ z4Q2uQu@*Ja@9+*@!9aH^m($%F*HDM-H`HPAjB>Xu9`!aP+jb@@m$T4=xk%bgKB~WJ zoQ<22HJDFP{r-+o80mAb$NAWQbuftw8elpq$N5M)O&QL_7F0)Hqqg!k>U%v$yU!0YW7vNUyp;>e`2kc1@1s_D3f1u$T#Dzg5C^c& zpXpgpLV;2zL zJf{{VhL{_wx!cJ33C&t7*g$Bj+38TxE-Vu>!S=O~i}D z9AcXCPdY=dNFP)oU7>$Qbr`j+Iy7BHdCMWz5c!05uZCDg%qDbBRFt+|ghP}QFBAI+ z9o(TrHNlHyR;hU1dF$7Gk8mP^J~^AWDcWL<*r2;Szc^^K5;qRX;c?yIsr+_!9A|ZHsimL+GHY zj3IUs!_=@P8#R9DkHstY;##Zznb04X3L=ZxL^Kc^i3!BRWe*pUAG(-o+nZ%~?}IXL zjkn2Z@RnEA)d&BJITqP7wYt_RX;@uf-dJAWl-7DKJ~7xHzp0zYUs+yN7EDR}IXrkT zX=ivwc}c0SxXD+C-b#m$)UwbcX=ZVylc}{4o?NHQsS76iTD!&OYXV)jgB=-Pgip+KN*r&6pAWxFYUueiGh?+=S?#Y{ Z>#y}LZtypjR+d)PGZpu4uz9@C^FJz_gpuBGHV# zTPKF_8U`(5*5zNgh51~#hwAA|)QzKgeM9e{*7yIWGxQO#w?7$Y(^Qp8h zvr(Cvg%hw`^|Wu*94OoMs2*-ZrKrKT8I_q+n2uLb9dIxgpW=M{faN%aw<{xcsE#*d z2A)G@@D{S!Cw39NP;U!E2G-*mT!NQSFL;g&n+>CeX7GqY!T{F4fN2~L21Pd{fUTdNVx@!y!o`JEiIsrUlb;1KG*U%rXcydleuaKJllGpeD3SdB-K&7SzaM}1*T zuDAS>u#NK~tfk=|)R@Pz)0c-)&o9RU-09c1qB3;NKaX^Apj7mrQaprgHg$&C99)V@ z`93Vi4&03c*o5;KpB;D|*WypC!%CLYLu^O=FKT9a89ab`z8hPae-@&9EmWMvU6{;F z+G%ET4a3*I4Zn$7lR?@UxmOEHcNtV4bI7J94IvlrFzBkUM%>q2F^7rEUni)r6o z!@S!qngc4D)hpa1vuMj{-0p+B0+LSh3EPgD|&memrPI~pz(hT3w8)x;8FC85HP&|PIL4tI!D zry(ly`sj_LDmB59oYCOpfHRQrBg*L?pBsICY(ls5Y~rT`=Sx;jz$wh@3^;G{`=gxv HaAV*PgIJvg delta 2145 zcmajfe@vBC9LMo5a6x`VH;9VRFqM?tay1udQx>>O`J$G(4+KN9St>>fA;JBx%Z*@%4K*M87Kz>@&(bVis{Y(=3b&v-zQ1$}ua=F#836#Qa>d8)*ME&+KX}$~P;< zDx}F8u>hB#x>$p}Y7bxuK7@L2Te>}J&r{J0gII(wmf{JF;5aVFRvx|*Uqnsh zHLStoSb;y_BFw!aJ#aH7xL%EVFR##S29{#3Ma>*4nqkPlQIAzzH=<^|5&3BA!I}6B zGKTHPtME<#I*#h+q~HDp-of=azJx(WS3j@&9>QYAHt z4=Yn8cs*95CbAeET#NO%1Do&-b9s19F6?SYR_OLr1A@Hf8a{rkV6GWBN>`R}2U%?{FweaJoAgG&8A zyao@UCUOD?*@R!Ci<@}p=`6GBxLL{l7_+RyV|X*3M{Vk2zD5(8i)h z57WR$*>>N4WDJYpTzm^}#j`jMv-sTau>oUP#we_gy@$8sDBgur*n)NJ)Lz_)8s`EY z;RF7NQn`_a_sjVTOri$<3H9LbzJ*SDO=qK0-G&J-BkVow^-$~S$2IyQ%7et1# z5DwxBT$RE4pP`~n;mk>AVkxSl2k|D{<+mS1r7Z4WkD)Si29@$G@~?j8;VrlxwFJAd z2@hi@p2O|f$`Rw$s3oXupkV@+VNRjWX4a>hA!~(fLnM(XO9BrTil1ks5u5_C`Jnuj5ya+_L$olx{>V z#V*w2&BS!!$lGni3_^YDlxSIN32nqX31w?3j0M7G~R22+KMr`B8-+N=!(8{D#p zHH0>#GNt8HVMSBtUv=#fEwA>Lik5J#)?b_DZbEC)LU6)T>1{(Yn>royQK`-)^p~oA zkVmMjBUTX(kwa*$?F$o~{HNLdD>zjUYbXd-)p(yIpYz7NqscwqNV4BM<_&wJ$wBX9hvvBVAq~ev?xmUK zfzth+n|gGZ$NzoXEp+w0X^v?|Mh*YQ*uzoOJC}!l_}v%MTMW mZ^%n{A83NS7I%`nxr}>9xfrH-lsDu5{r&+j?uM(o1AhZA09)b! diff --git a/ui/po/mo/sv/LC_MESSAGES/breezydesktop.mo b/ui/po/mo/sv/LC_MESSAGES/breezydesktop.mo index 8aaa3b61a967800a563b81b422cd6a10a6f159dd..eb201065e9591e9bbbe2d62693beb211faee401e 100644 GIT binary patch delta 1873 zcmZY8Sx8k;6vpv&Z<<3+*P$$@o6VC$Wo1^H=1|$BhCO9Q5C#om4@Sg!h@yugrHq1T zpn@a_OZAxr@FUKTG|S+8QZ#}2n26;Vg*$K(?nb@h08Yfin2bkJ&$W%6 zckCt|J#YsDcpoQYAEx44Ou^q+kMZ1m5cgs^4q_Z;#F)*+g_w=oaW%H02GETU@e%6& zBe7-?=9rzL!=$VYb>pSb1+!~7i{smr)bT9uI3Ei*F2#0i zMLi!KKV}jp@_kFE!_RWP3&j}5aTStv+k{HlcF!hMrjFrMJc}AYCkF8W=HY8B#279r zBNccAn@|%NMrRtGKXjDJX}pzZY!{Z`A=C%DP^o=}HTVO`qE)i+E3gjr!ZWBE=tM1@ zi@LAh^A+lS?@{+LD<_olXr|Y~aR7DU1o90#i%R`kDaK*U!#pkqDBMOa z>ccJk>Ausb=Wn0}(u11dQ&e%jNG1PD@oVqKVI&#$%ex_p;c89eQ6o>|PXj5yOx%c? z`94%}p2SvsgOylMdRcb6igWNT&cl~jgy!(Hif$EN#xm4M-=d1;3u*u(sQdivQDrC! zRh&u4x2zD^AXba|z)sXmPa$)$i>UW@dB=}Y#pw*vxke|JP0g~{T~tP%pk~^Kn!%8F z{wu0DM^FP9MOMMWNrzHB6_xrN)WFJ78EwFscnDWu2UhTX8=y0v6De6{$FT&-j`iYn z9Kr_l1;=L8h&*V`$fMSSO6?%l;UCmY>v(t-HsTb#g6vr9Mh&DF>Y2zEJDkt8c?Hd*)c4b)@-rP z{M+32h{fUOzNJlcKg4|ZxkGV5zZ(8;mtLr)g~Arw(#rx?x2hIk=(foQb-s1e6ls$d|*7&J;GMq@%6BqR_e*2I(;5##@vnUbFDJHMGTGiT0u z&pA7snAqry&CWSslpRDRaV~7;;GtX&lsEIu%0gyu;br_}x>*(V@7!cI2S;%>euo8k z9t-g|R1;S*5C6poPUEKDD?{oXTgr)EXyj0W%{Uhyz%ty8rT83f$Ag%`aom7iGt7!{ z7}c>)u@2AT0=$N+vAW3b$V2!A*SoM-L#^R$24~BV!PyE_kDG(~1lDrhh8jT@_1sH1 z4_`z2Vjtlw{5-h+7S+zrLH!us!Sy)4inTLoN2wms37$Zu@-*_Zb3y$T%;9ThgQ&G~U=I1$9KTD29y}WO6{^9r!Gl*& zsl1B)cs;0pg886t_6%xjUg4m%@;<6#M{zTY_6)|clFAYm_?DafwbfNl{`KGhU*j3u zkLt(}YQ#rStN0`;^qmInSYFvpLc_(TS@52H7#^I!u zlXcu>UD(U07v9E2IEpd+74ODE_NX$^iifZb)#2Y!Yv^xOM?!1`Jy(QEbp*ADt5F?X zkL*Zuc57VMaN1xQA%T|saS*RVFxP38N3CbMJ=LXOyC%@g{?Nqg2YCA9(N*1wF@{O zuVWY1aG?P@sQ33{x%U50oUk73Po$GJoh_l%FTw|LD|%}JS8;s=_52^G4&*KLI~YNI zpb0evn^2kTKutj(YDxz14Rp}k{}F~qDy#~Xi3U_A5~vS7j3Ly^%1k}6gHX|PO9^F0 zomRP(SmT}fnbGNH;vS-jAaOSe8A$e#awjee_F#s5CuMKlu|gSusb;(j7ZXmPD3RuGeg z#qaF`O@mUuKDeO;zJ-Vr_XTyD%2It_b2YVe1{X|^wG;Y-(YjEXMl2^fh}#J5gvoL{ zC))^3;nbqV*hZ|IQmJXxcH9)@pna{9Lu~iX{KLI4&n?Jbo?BeEcVDLa$z9phQ>pA= z%v~}gKb-qWZ>lfp#)}t(-3_yPL-AC1PyM5V_5B#_&2XqodXL1cy*HD|?v5rh>2&7l z8`bW|B}D}@{g(H5E%#(&?uQj6;hgrpJ!$uNWlz|R)C`3h+NU<1J~fo2?S39n%c<^E VGWyu5&(e?g(Vd{)9f|gZ{|8uz+=u`G diff --git a/ui/po/mo/uk_UA/LC_MESSAGES/breezydesktop.mo b/ui/po/mo/uk_UA/LC_MESSAGES/breezydesktop.mo index 5a8a59f8411289ffe58db539ee8d4ade1ce0222b..1b27b78bbd4f392804d8370a80b59d5a885891d4 100644 GIT binary patch delta 1735 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 AH2?qr diff --git a/ui/po/pl.po b/ui/po/pl.po index dd60333..c9de508 100644 --- a/ui/po/pl.po +++ b/ui/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: 2024-08-16 10:26-0700\n" "Last-Translator: \n" "Language-Team: Polish \n" @@ -84,16 +84,12 @@ msgstr "" msgid " ({time_remaining} remaining)" msgstr "" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" msgstr "" #: src/licensetierrow.py:24 @@ -121,14 +117,6 @@ msgstr "" 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 "" @@ -223,11 +211,11 @@ msgstr "" msgid "Switch between flat and curved displays." msgstr "" -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "" @@ -589,11 +577,11 @@ msgstr "" msgid "Done" msgstr "" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -611,33 +599,33 @@ msgstr "" msgid "Verify token" msgstr "" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "" -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 msgid "Auto-enable XR effect" msgstr "" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." msgstr "" -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -649,21 +637,21 @@ msgid "" " " msgstr "" -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -679,7 +667,7 @@ msgid "" " " msgstr "" -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "" @@ -703,7 +691,7 @@ msgstr "" msgid "Some features expire soon" msgstr "" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "" @@ -711,10 +699,20 @@ msgstr "" msgid "Productivity features are disabled" msgstr "" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "" diff --git a/ui/po/pt_BR.po b/ui/po/pt_BR.po index ec10ca8..f9f8393 100644 --- a/ui/po/pt_BR.po +++ b/ui/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: 2024-08-19 09:39-0700\n" "Last-Translator: \n" "Language-Team: Brazilian Portuguese \n" "Language-Team: Russian \n" @@ -89,17 +89,13 @@ msgstr "Включено" msgid " ({time_remaining} remaining)" msgstr " ({time_remaining} осталось)" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" -msgstr "Режим «бок о бок» (игровой режим)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" +msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "Плавное следование (игровой режим)" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop (продуктивный режим)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" +msgstr "" #: src/licensetierrow.py:24 msgid "Active" @@ -126,14 +122,6 @@ msgstr " для апгрейда" 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 " - ежемесячное обновление" @@ -229,11 +217,11 @@ msgstr "Изогнутый дисплей" msgid "Switch between flat and curved displays." msgstr "Переключается между плоскими и изогнутыми дисплеями." -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "" @@ -615,11 +603,11 @@ msgstr "" msgid "Done" msgstr "" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "Недействительная настройка Breezy Desktop GNOME" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -640,34 +628,34 @@ msgstr "Запросить токен" msgid "Verify token" msgstr "Проверить токен" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "Подробности лицензии" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "Устройство не подключено" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "Breezy Desktop не смог обнаружить никаких поддерживаемых устройств XR." -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 #, fuzzy msgid "Auto-enable XR effect" msgstr "Эффект XR" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." msgstr "" -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "Драйвер не запущен" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -687,11 +675,11 @@ msgstr "" "новый тред в канале #troubleshooting на Discord.\n" " " -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "Расширение Breezy Desktop GNOME не готово" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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." @@ -700,11 +688,11 @@ msgstr "" "снова войти, чтобы использовать её. В противном случае, пожалуйста, следуйте " "инструкциям по настройке Breezy GNOME." -#: src/gtk/no-license.ui:13 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "Файл лицензии не найден" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -732,7 +720,7 @@ msgstr "" "если вы выбрали пожизненный доступ).\n" " " -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "Попробовать еще раз" @@ -756,7 +744,7 @@ msgstr "Меню" msgid "Some features expire soon" msgstr "Некоторые функции скоро истекут" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "Просмотреть детали" @@ -764,14 +752,39 @@ msgstr "Просмотреть детали" msgid "Productivity features are disabled" msgstr "Функции повышения производительности отключены" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "Сброс" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "О BreezyDesktop" +#~ msgid "Side-by-side mode (gaming)" +#~ msgstr "Режим «бок о бок» (игровой режим)" + +#~ msgid "Smooth Follow (gaming)" +#~ msgstr "Плавное следование (игровой режим)" + +#~ msgid "Breezy Desktop (productivity)" +#~ msgstr "Breezy Desktop (продуктивный режим)" + +#~ msgid "Gaming" +#~ msgstr "Игровой режим" + +#~ msgid "Productivity" +#~ msgstr "Продуктивный режим" + #~ msgid "Fast SBS mode switching" #~ msgstr "Быстрое переключение режима SBS" diff --git a/ui/po/sv.po b/ui/po/sv.po index 9135102..3399e13 100644 --- a/ui/po/sv.po +++ b/ui/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: 2024-08-16 10:31-0700\n" "Last-Translator: \n" "Language-Team: Swedish \n" @@ -89,17 +89,13 @@ msgstr "Aktiverad" msgid " ({time_remaining} remaining)" msgstr " ({time_remaining} kvar)" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" -msgstr "Side-by-side läge (spel)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" +msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "Smidig följning (spel)" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop (produktivitet)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" +msgstr "" #: src/licensetierrow.py:24 msgid "Active" @@ -126,14 +122,6 @@ msgstr " att uppgradera" msgid "Paid through next renewal period" msgstr "Betald genom nästa förnyelseperiod" -#: src/licensetierrow.py:56 -msgid "Gaming" -msgstr "Spel" - -#: src/licensetierrow.py:57 -msgid "Productivity" -msgstr "Produktivitet" - #: src/licensetierrow.py:63 msgid " - renewing monthly" msgstr " - förnyar månadsvis" @@ -229,11 +217,11 @@ msgstr "Böjd skärm" msgid "Switch between flat and curved displays." msgstr "Växla mellan platt eller böjd skärm." -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "" @@ -612,11 +600,11 @@ msgstr "" msgid "Done" msgstr "" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "Breezy Desktop GNOME ogiltig inställning" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -636,23 +624,23 @@ msgstr "Begär en token" msgid "Verify token" msgstr "Verifiera token" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "Licensdetaljer" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "Inget enhet ansluten" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "Breezy Desktop kunde inte upptäcka enheter som stöder XR." -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 msgid "Auto-enable XR effect" msgstr "Autoaktivering av XR-effekt" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." @@ -660,11 +648,11 @@ msgstr "" "Aktivera Breezy Desktop XR-effekten automatiskt när glasögon som stöds är " "anslutna." -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "Inget drivrutin köres" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -684,11 +672,11 @@ msgstr "" "tråd i #troubleshooting kanal på Discord.\n" " " -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "Breezy Desktop GNOME tillägg inte redo" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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." @@ -697,11 +685,11 @@ msgstr "" "använda den. Annars, var god att följa Breezy GNOME inställning " "instruktioner." -#: src/gtk/no-license.ui:13 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "Inget licens fil hittades" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -729,7 +717,7 @@ msgstr "" "valt livstidsåtkomst).\n" " " -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "Försök igen" @@ -753,7 +741,7 @@ msgstr "Meny" msgid "Some features expire soon" msgstr "Vissa funktioner upphör snart" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "Se detaljer" @@ -761,14 +749,39 @@ msgstr "Se detaljer" msgid "Productivity features are disabled" msgstr "Produktivitets funktioner är inaktiverade" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "Tvinga Reset" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "Om BreezyDesktop" +#~ msgid "Side-by-side mode (gaming)" +#~ msgstr "Side-by-side läge (spel)" + +#~ msgid "Smooth Follow (gaming)" +#~ msgstr "Smidig följning (spel)" + +#~ msgid "Breezy Desktop (productivity)" +#~ msgstr "Breezy Desktop (produktivitet)" + +#~ msgid "Gaming" +#~ msgstr "Spel" + +#~ msgid "Productivity" +#~ msgstr "Produktivitet" + #~ msgid "Fast SBS mode switching" #~ msgstr "Snabb SBS läge växling" diff --git a/ui/po/uk_UA.po b/ui/po/uk_UA.po index bbcb5f2..f4e15b8 100644 --- a/ui/po/uk_UA.po +++ b/ui/po/uk_UA.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: 2024-08-17 10:08-0700\n" "Last-Translator: \n" "Language-Team: Ukrainian \n" @@ -88,17 +88,13 @@ msgstr "Увімкнено" msgid " ({time_remaining} remaining)" msgstr "({time_remaining} залишилося)" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" -msgstr "Режим «бок о бок» (ігровий режим)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" +msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "Плавне слідування (ігровий режим)" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop (продуктивний прежим)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" +msgstr "" #: src/licensetierrow.py:24 msgid "Active" @@ -125,14 +121,6 @@ msgstr " для удосконалювання" 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 " - щомісячне продовження" @@ -228,11 +216,11 @@ msgstr "Викривлений дисплей" msgid "Switch between flat and curved displays." msgstr "Переключается між плоскими і викривленими дисплеями." -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "" @@ -613,11 +601,11 @@ msgstr "" msgid "Done" msgstr "" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "Невірна настройка Breezy Desktop GNOME" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -637,34 +625,34 @@ msgstr "Запитати токен" msgid "Verify token" msgstr "Перевірити токен" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "Деталі ліцензії" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "Жоден пристрій не підключено" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "Breezy Desktop не зміг виявити жодного підтримуваного XR пристрою." -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 #, fuzzy msgid "Auto-enable XR effect" msgstr "Ефект XR" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." msgstr "" -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "Жоден драйвер не запущений" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -684,11 +672,11 @@ msgstr "" "каналі #troubleshooting на Discord.\n" " " -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "Розширення Breezy Desktop GNOME не готове" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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." @@ -697,11 +685,11 @@ msgstr "" "знову увійти, щоб використовувати його. В іншому випадку, будь ласка, " "дотримуйтесь інструкцій з налаштування Breezy GNOME." -#: src/gtk/no-license.ui:13 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "Жоден файл ліцензії не знайдено" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -729,7 +717,7 @@ msgstr "" "якщо ви обрали довічний доступ).\n" " " -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "Спробуйте ще раз" @@ -753,7 +741,7 @@ msgstr "Меню" msgid "Some features expire soon" msgstr "Деякі функції закінчуються незабаром" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "Переглянути деталі" @@ -761,14 +749,39 @@ msgstr "Переглянути деталі" msgid "Productivity features are disabled" msgstr "Функції продуктивного режиму відключені" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "Скинути" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "Про BreezyDesktop" +#~ msgid "Side-by-side mode (gaming)" +#~ msgstr "Режим «бок о бок» (ігровий режим)" + +#~ msgid "Smooth Follow (gaming)" +#~ msgstr "Плавне слідування (ігровий режим)" + +#~ msgid "Breezy Desktop (productivity)" +#~ msgstr "Breezy Desktop (продуктивний прежим)" + +#~ msgid "Gaming" +#~ msgstr "Ігровий режим" + +#~ msgid "Productivity" +#~ msgstr "Продуктивний режим" + #~ msgid "Fast SBS mode switching" #~ msgstr "Швидке перемикання режиму SBS" diff --git a/ui/po/zh_CN.po b/ui/po/zh_CN.po index 356cdba..49aa558 100644 --- a/ui/po/zh_CN.po +++ b/ui/po/zh_CN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 12:51-0800\n" +"POT-Creation-Date: 2026-03-03 12:40-0800\n" "PO-Revision-Date: 2024-08-02 20:55-0700\n" "Last-Translator: \n" "Language-Team: Chinese (simplified) \n" @@ -82,17 +82,13 @@ msgstr "已启用" msgid " ({time_remaining} remaining)" msgstr " (剩下 {time_remaining})" -#: src/licensefeaturerow.py:30 -msgid "Side-by-side mode (gaming)" -msgstr "并排模式(游戏)" +#: src/licensefeaturerow.py:30 src/licensetierrow.py:56 +msgid "Productivity Basic" +msgstr "" -#: src/licensefeaturerow.py:31 -msgid "Smooth Follow (gaming)" -msgstr "平滑跟随(游戏)" - -#: src/licensefeaturerow.py:32 -msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop (生产力)" +#: src/licensefeaturerow.py:31 src/licensetierrow.py:57 +msgid "Productivity Pro" +msgstr "" #: src/licensetierrow.py:24 msgid "Active" @@ -119,14 +115,6 @@ msgstr "升级" 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 " - 每月续订" @@ -223,11 +211,11 @@ msgstr "曲面显示" msgid "Switch between flat and curved displays." msgstr "平板和曲面显示模式之间切换。" -#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:34 +#: src/gtk/connected-device.ui:93 src/gtk/no-device.ui:36 msgid "Disable physical displays" msgstr "将所有具体屏幕关闭" -#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:35 +#: src/gtk/connected-device.ui:94 src/gtk/no-device.ui:37 msgid "" "Automatically disable all physical displays when the XR effect is enabled." msgstr "XR效果开启时将所有具体屏幕自动关闭" @@ -591,11 +579,11 @@ msgstr "远" msgid "Done" msgstr "完成" -#: src/gtk/failed-verification.ui:13 +#: src/gtk/failed-verification.ui:15 msgid "Breezy Desktop GNOME invalid setup" msgstr "Breezy Desktop GNOME 无效设置" -#: src/gtk/failed-verification.ui:14 +#: src/gtk/failed-verification.ui:16 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." @@ -615,33 +603,33 @@ msgstr "申请令牌" msgid "Verify token" msgstr "令牌验证" -#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:91 +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:139 msgid "License Details" msgstr "许可证详细信息" -#: src/gtk/no-device.ui:13 +#: src/gtk/no-device.ui:15 msgid "No device connected" msgstr "未连接设备" -#: src/gtk/no-device.ui:14 +#: src/gtk/no-device.ui:16 msgid "Breezy Desktop was unable to detect any supported XR devices." msgstr "Breezy Desktop 无法检测到任何支援的 XR 设备。" -#: src/gtk/no-device.ui:23 +#: src/gtk/no-device.ui:25 msgid "Auto-enable XR effect" msgstr "自动启动XR效果" -#: src/gtk/no-device.ui:24 +#: src/gtk/no-device.ui:26 msgid "" "Automatically enable the Breezy Desktop XR effect when supported glasses are " "connected." msgstr "当支援的设备已连接,将BREEZY DESKTOP XR效果自动启动" -#: src/gtk/no-driver.ui:13 +#: src/gtk/no-driver.ui:15 msgid "No driver running" msgstr "未运行驱动程序" -#: src/gtk/no-driver.ui:14 +#: src/gtk/no-driver.ui:16 msgid "" "\n" " If you installed via AUR, make sure you ran the recommended post-" @@ -660,11 +648,11 @@ msgstr "" "主题。\n" " " -#: src/gtk/no-extension.ui:13 +#: src/gtk/no-extension.ui:15 msgid "Breezy Desktop GNOME extension not ready" msgstr "Breezy Desktop GNOME 扩展尚未启用" -#: src/gtk/no-extension.ui:14 +#: src/gtk/no-extension.ui:16 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." @@ -672,11 +660,11 @@ msgstr "" "如果您刚运行设置,则可能需要注销并重新登录才能使用它。否则,请按照 Breezy " "GNOME 设置说明进行操作。" -#: src/gtk/no-license.ui:13 +#: src/gtk/no-license.ui:15 msgid "No license file was found" msgstr "未找到许可证文件" -#: src/gtk/no-license.ui:14 +#: src/gtk/no-license.ui:16 msgid "" "\n" " The first time you use Breezy Desktop, an internet connection is " @@ -701,7 +689,7 @@ msgstr "" "过期,如果您选择了终身访问,则可以无限期使用)。\n" " " -#: src/gtk/no-license.ui:27 +#: src/gtk/no-license.ui:29 msgid "Try Again" msgstr "重新尝试" @@ -725,7 +713,7 @@ msgstr "菜单" msgid "Some features expire soon" msgstr "某些功能即将过期" -#: src/gtk/window.ui:51 src/gtk/window.ui:76 +#: src/gtk/window.ui:51 src/gtk/window.ui:76 src/gtk/window.ui:102 msgid "View details" msgstr "查看详细信息" @@ -733,14 +721,39 @@ msgstr "查看详细信息" msgid "Productivity features are disabled" msgstr "生产模式功能被禁用" -#: src/gtk/window.ui:95 +#: src/gtk/window.ui:93 +msgid "" +"Productivity Pro license is inactive — 6DoF features will be unavailable" +msgstr "" + +#: src/gtk/window.ui:119 +msgid "" +"A newer version is available. To update, rerun the breezy_gnome_setup script." +msgstr "" + +#: src/gtk/window.ui:143 msgid "Force Reset" msgstr "强制重置" -#: src/gtk/window.ui:99 +#: src/gtk/window.ui:147 msgid "About BreezyDesktop" msgstr "关于 Breezy Desktop" +#~ msgid "Side-by-side mode (gaming)" +#~ msgstr "并排模式(游戏)" + +#~ msgid "Smooth Follow (gaming)" +#~ msgstr "平滑跟随(游戏)" + +#~ msgid "Breezy Desktop (productivity)" +#~ msgstr "Breezy Desktop (生产力)" + +#~ msgid "Gaming" +#~ msgstr "游戏" + +#~ msgid "Productivity" +#~ msgstr "生产力" + #~ msgid "fullscreen" #~ msgstr "全屏" diff --git a/ui/src/gtk/window.ui b/ui/src/gtk/window.ui index 4933614..fec33ba 100644 --- a/ui/src/gtk/window.ui +++ b/ui/src/gtk/window.ui @@ -79,6 +79,32 @@ + + + 0 + False + warning + + + True + + + True + Productivity Pro license is inactive — 6DoF features will be unavailable + True + True + + + + + + + View details + True + + + + 0 diff --git a/ui/src/license.py b/ui/src/license.py index c4c0997..3f341b8 100644 --- a/ui/src/license.py +++ b/ui/src/license.py @@ -1 +1,2 @@ -BREEZY_GNOME_FEATURES = ['productivity_basic', 'productivity_pro'] \ No newline at end of file +BREEZY_GNOME_FEATURES = ['productivity', 'productivity_pro'] +BREEZY_GNOME_TIERS = ['productivity', 'productivity_pro'] \ No newline at end of file diff --git a/ui/src/licensedialogcontent.py b/ui/src/licensedialogcontent.py index 72b8aba..3b5844c 100644 --- a/ui/src/licensedialogcontent.py +++ b/ui/src/licensedialogcontent.py @@ -3,6 +3,7 @@ from .nolicense import NoLicense from .statemanager import StateManager from .licensetierrow import LicenseTierRow from .licensefeaturerow import LicenseFeatureRow +from .license import BREEZY_GNOME_FEATURES, BREEZY_GNOME_TIERS from .xrdriveripc import XRDriverIPC import gettext @@ -60,19 +61,28 @@ class LicenseDialogContent(Gtk.Box): self.features.remove(child) if license_view: + allowed_tiers = set(BREEZY_GNOME_TIERS) + allowed_features = set(BREEZY_GNOME_FEATURES) + 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(): - row = LicenseTierRow(tier_name, tier_details) - if row.get_title() != "": - tiers_group.add(row) + has_any_tier = False + for tier_name, tier_details in license_view.get('tiers', {}).items(): + if tier_name not in allowed_tiers: + continue + tiers_group.add(LicenseTierRow(tier_name, tier_details)) + has_any_tier = True + if has_any_tier: + self.tiers.append(tiers_group) 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(): + has_any_feature = False + for feature_name, feature_details in license_view.get('features', {}).items(): + if feature_name not in allowed_features: + continue features_group.add(LicenseFeatureRow(feature_name, feature_details)) + has_any_feature = True + if has_any_feature: + self.features.append(features_group) else: self.tiers.append(self.no_license) diff --git a/ui/src/licensefeaturerow.py b/ui/src/licensefeaturerow.py index 02f2c52..1b01c0f 100644 --- a/ui/src/licensefeaturerow.py +++ b/ui/src/licensefeaturerow.py @@ -27,8 +27,7 @@ class LicenseFeatureRow(Adw.ActionRow): def _feature_name(self, feature): feature_names = { - 'sbs': lambda: _('Side-by-side mode (gaming)'), - 'smooth_follow': lambda: _('Smooth Follow (gaming)'), - 'productivity_basic': lambda: _('Breezy Desktop (productivity)') + 'productivity': lambda: _('Productivity Basic'), + 'productivity_pro': lambda: _('Productivity Pro'), } return feature_names[feature]() \ No newline at end of file diff --git a/ui/src/licensetierrow.py b/ui/src/licensetierrow.py index 46cc218..153112c 100644 --- a/ui/src/licensetierrow.py +++ b/ui/src/licensetierrow.py @@ -53,8 +53,8 @@ class LicenseTierRow(Adw.ExpanderRow): def _tier_name(self, tier): tier_names = { - 'supporter': _('Gaming'), - 'subscriber': _('Productivity') + 'productivity': _('Productivity Basic'), + 'productivity_pro': _('Productivity Pro') } return tier_names.get(tier) or "" diff --git a/ui/src/main.py b/ui/src/main.py index 01368f6..3d58566 100644 --- a/ui/src/main.py +++ b/ui/src/main.py @@ -61,7 +61,7 @@ class BreezydesktopApplication(Adw.Application): # always do this on start-up since the driver sometimes fails to update the license on boot, # prevent showing a license warning unnecessarily - XRDriverIPC.get_instance().write_control_flags({'request_features': ['productivity_basic']}) + XRDriverIPC.get_instance().write_control_flags({'request_features': ['productivity', 'productivity_pro']}) def do_activate(self): """Called when the application is activated. diff --git a/ui/src/statemanager.py b/ui/src/statemanager.py index d7dc688..d8fa195 100644 --- a/ui/src/statemanager.py +++ b/ui/src/statemanager.py @@ -21,6 +21,7 @@ class StateManager(GObject.GObject): 'license-present': (bool, 'License Present', 'Whether a license is present', False, GObject.ParamFlags.READWRITE), 'enabled-features-list': (object, 'Enabled Features List', 'A list of the enabled features', GObject.ParamFlags.READWRITE), 'device-supports-sbs': (bool, 'Device Supports SBS', 'Whether the connected device supports SBS', False, GObject.ParamFlags.READWRITE), + 'connected-device-pose-has-position': (bool, 'Pose Has Position', 'Whether the connected device provides position tracking (6DoF)', False, GObject.ParamFlags.READWRITE), 'connected-device-full-distance-cm': (float, 'Full Distance (cm)', 'Device full distance in cm', 0.0, 10000.0, 0.0, GObject.ParamFlags.READWRITE), 'connected-device-full-size-cm': (float, 'Full Size (cm)', 'Device full display size in cm', 0.0, 10000.0, 0.0, GObject.ParamFlags.READWRITE), } @@ -61,6 +62,7 @@ class StateManager(GObject.GObject): self.license_present = False self.enabled_features = [] self.device_supports_sbs = False + self.connected_device_pose_has_position = False self.connected_device_full_distance_cm = 0.0 self.connected_device_full_size_cm = 0.0 self._running = True @@ -101,6 +103,7 @@ class StateManager(GObject.GObject): self.set_property('follow-mode', self.state.get('breezy_desktop_smooth_follow_enabled', False)) self.set_property('device-supports-sbs', self.state.get('sbs_mode_supported', False)) self.set_property('widescreen-mode', self.state.get('sbs_mode_enabled', False)) + self.set_property('connected-device-pose-has-position', self.state.get('connected_device_pose_has_position', False) == True) full_distance = self.state.get('connected_device_full_distance_cm') or 0.0 if full_distance != self.connected_device_full_distance_cm: @@ -127,6 +130,8 @@ class StateManager(GObject.GObject): self.enabled_features = value if prop.name == 'device-supports-sbs': self.device_supports_sbs = value + if prop.name == 'connected-device-pose-has-position': + self.connected_device_pose_has_position = value if prop.name == 'connected-device-full-distance-cm': self.connected_device_full_distance_cm = value if prop.name == 'connected-device-full-size-cm': @@ -147,6 +152,8 @@ class StateManager(GObject.GObject): return self.enabled_features if prop.name == 'device-supports-sbs': return self.device_supports_sbs + if prop.name == 'connected-device-pose-has-position': + return self.connected_device_pose_has_position if prop.name == 'connected-device-full-distance-cm': return self.connected_device_full_distance_cm if prop.name == 'connected-device-full-size-cm': diff --git a/ui/src/window.py b/ui/src/window.py index 30df74a..3a5cf47 100644 --- a/ui/src/window.py +++ b/ui/src/window.py @@ -22,6 +22,8 @@ class BreezydesktopWindow(Gtk.ApplicationWindow): license_action_needed_button = Gtk.Template.Child() missing_breezy_features_banner = Gtk.Template.Child() missing_breezy_features_button = Gtk.Template.Child() + pose_position_needs_pro_banner = Gtk.Template.Child() + pose_position_needs_pro_button = Gtk.Template.Child() update_available_banner = Gtk.Template.Child() def __init__(self, version, skip_verification, **kwargs): @@ -42,10 +44,12 @@ class BreezydesktopWindow(Gtk.ApplicationWindow): self.state_manager.connect('notify::license-action-needed', self._handle_state_update) self.state_manager.connect('notify::license-present', self._handle_state_update) self.state_manager.connect('notify::enabled-features-list', self._handle_state_update) + self.state_manager.connect('notify::connected-device-pose-has-position', self._handle_state_update) self.settings.connect('changed::debug-no-device', self._handle_settings_update) self.license_action_needed_button.connect('clicked', self._on_license_button_clicked) self.missing_breezy_features_button.connect('clicked', self._on_license_button_clicked) + self.pose_position_needs_pro_button.connect('clicked', self._on_license_button_clicked) self._handle_state_update(self.state_manager, None) @@ -62,11 +66,16 @@ class BreezydesktopWindow(Gtk.ApplicationWindow): GLib.idle_add(self._handle_state_update_gui, state_manager) def _handle_state_update_gui(self, state_manager): - enabled_breezy_features = [feature for feature in state_manager.get_property('enabled-features-list') if feature in BREEZY_GNOME_FEATURES] + enabled_features_list = state_manager.get_property('enabled-features-list') or [] + enabled_breezy_features = [feature for feature in enabled_features_list if feature in BREEZY_GNOME_FEATURES] breezy_features_granted = len(enabled_breezy_features) > 0 self.missing_breezy_features_banner.set_revealed(not breezy_features_granted) self.license_action_needed_banner.set_revealed(state_manager.get_property('license-action-needed') == True) + pose_has_position = state_manager.get_property('connected-device-pose-has-position') == True + pro_enabled = 'productivity_pro' in enabled_features_list + self.pose_position_needs_pro_banner.set_revealed(state_manager.connected_device_name and pose_has_position and breezy_features_granted and not pro_enabled) + for child in self.main_content: self.main_content.remove(child)