diff --git a/po/ar.po b/po/ar.po index 777e6ef98..ccdedc443 100644 --- a/po/ar.po +++ b/po/ar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gramps-4.2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2014-06-29 15:50+0300\n" "Last-Translator: Munzir Taha (منذر طه) \n" "Language-Team: Arabic <>\n" @@ -2072,7 +2072,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15684,124 +15686,232 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15817,158 +15927,373 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19515,14 +19840,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/bg.po b/po/bg.po index c21074ec9..58c42fc22 100644 --- a/po/bg.po +++ b/po/bg.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: GRAMPS 3.2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-03-14 05:09+0000\n" "Last-Translator: Iskren Petkov \n" "Language-Team: Bulgarian Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +msgid "Generate API Key" +msgstr "Основни" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Поколение " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Selecting... " +msgid "C_onnect" +msgstr "Избиране... " + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15946,166 +16061,395 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Поколение " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." +msgstr "" + +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" + +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "" + +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" + +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "" + +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" + +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Selecting... " +msgid "Connect" +msgstr "Избиране... " + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19727,14 +20071,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/ca.po b/po/ca.po index f6002d2ae..c7dc4affc 100644 --- a/po/ca.po +++ b/po/ca.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2025-09-03 03:01+0000\n" "Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: Catalan Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Nom d'usuari:" + +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Contrasenya:" + +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "Genera" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Generació " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Errors" +msgid "Error: %s" +msgstr "Errors" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "S'està connectant..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Nom d'usuari:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Contrasenya:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16252,147 +16373,331 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Generació " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." +msgstr "" + +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" + +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "" + +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" + +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "" + +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" + +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" msgstr "" -#: GrampsWebSync/grampswebsync.py:722 +#: GrampsWebSync/presentation.py:268 #, fuzzy -#| msgid "No changes" -msgid "Local changes" -msgstr "Sense canvis" +#| msgid "Problem reading file" +msgid "Downloading the remote family tree…" +msgstr "Problema llegint fitxer" -#: GrampsWebSync/grampswebsync.py:727 +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Problem reading file" +msgid "Downloading media files…" +msgstr "Problema llegint fitxer" + +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Problem reading file" +msgid "Uploading media files…" +msgstr "Problema llegint fitxer" + +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "S'està connectant..." + +#: GrampsWebSync/presentation.py:295 #, fuzzy #| msgid "No changes" -msgid "Remote changes" +msgid "Apply changes" msgstr "Sense canvis" -#: GrampsWebSync/grampswebsync.py:732 +#: GrampsWebSync/presentation.py:296 #, fuzzy -#| msgid "Doing Place changes" -msgid "Simultaneous changes" -msgstr "Fent canvis de Lloc" +#| msgid "Problem reading file" +msgid "Transfer media files" +msgstr "Problema llegint fitxer" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "" +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "" +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:593 #, fuzzy, python-format -#| msgid "Problem reading file" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Problema llegint fitxer" -msgstr[1] "Problema llegint fitxer" +#| msgid "Add Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Afegir Nota" +msgstr[1] "Afegir Nota" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format -#| msgid "Problem reading file" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Problema llegint fitxer" -msgstr[1] "Problema llegint fitxer" +#: GrampsWebSync/presentation.py:594 +#, python-format +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:596 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Delete %s object" +msgid_plural "Delete %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Problem reading file" msgid "Successfully downloaded %s media file." @@ -16400,14 +16705,14 @@ msgid_plural "Successfully downloaded %s media files." msgstr[0] "Problema llegint fitxer" msgstr[1] "Problema llegint fitxer" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Problem reading file" msgid "Successfully uploaded %s media file." @@ -16415,13 +16720,61 @@ msgid_plural "Successfully uploaded %s media files." msgstr[0] "Problema llegint fitxer" msgstr[1] "Problema llegint fitxer" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -20153,14 +20506,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Nom d'usuari:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Contrasenya:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" @@ -25968,6 +26313,21 @@ msgstr "" " \"%s\"\n" " al teu navegador web preferit..." +#, fuzzy +#~| msgid "No changes" +#~ msgid "Local changes" +#~ msgstr "Sense canvis" + +#, fuzzy +#~| msgid "No changes" +#~ msgid "Remote changes" +#~ msgstr "Sense canvis" + +#, fuzzy +#~| msgid "Doing Place changes" +#~ msgid "Simultaneous changes" +#~ msgstr "Fent canvis de Lloc" + #~ msgid "Search" #~ msgstr "Cerca" diff --git a/po/cs.po b/po/cs.po index 835f512d4..19a7ea844 100644 --- a/po/cs.po +++ b/po/cs.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gramps 3.2.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-06-29 14:56+0000\n" "Last-Translator: Milan \n" "Language-Team: Czech Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." -msgstr "" +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "researcher name" +msgid "Username" +msgstr "jméno badatele" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "General Data" +msgid "Generate API Key" +msgstr "Obecná data" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Rodinný strom pro %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Generace " + +#: GrampsWebApiDb/mintapikeytool.py:260 #, python-format -msgid "The server could not apply the changes: %s" +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:263 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:271 #, python-format -msgid "Unexpected error: %s" +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -#, fuzzy +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format #| msgid "Exporting family tree data ..." -msgid "Fetching remote data..." +msgid "Error creating Family Tree: %s" msgstr "Exportují se data rodokmenu..." -#: GrampsWebSync/grampswebsync.py:344 +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 #, fuzzy -#| msgid "Exporting family tree data ..." -msgid "Comparing local and remote data..." -msgstr "Exportují se data rodokmenu..." +msgid "C_onnect" +msgstr "Vybrat..." -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Web site title" +msgid "Server URL:" +msgstr "Hlavička nadpisu na WWW" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16299,143 +16417,330 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Generace " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." +msgstr "" + +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" + +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Chybějící lokálně" +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +#, fuzzy +msgid "Connect" +msgstr "Vybrat..." + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." @@ -16443,7 +16748,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." @@ -16451,7 +16756,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." @@ -16459,7 +16764,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." @@ -16467,6 +16772,57 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -20235,14 +20591,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" @@ -26055,6 +26403,19 @@ msgid "" " into your preferred web navigator ..." msgstr "" +#, fuzzy +#~| msgid "Exporting family tree data ..." +#~ msgid "Fetching remote data..." +#~ msgstr "Exportují se data rodokmenu..." + +#, fuzzy +#~| msgid "Exporting family tree data ..." +#~ msgid "Comparing local and remote data..." +#~ msgstr "Exportují se data rodokmenu..." + +#~ msgid "Missing locally" +#~ msgstr "Chybějící lokálně" + #~ msgid "Search" #~ msgstr "Vyhledávání" diff --git a/po/cy.po b/po/cy.po index 8340fe287..a20652e5d 100644 --- a/po/cy.po +++ b/po/cy.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -2062,7 +2062,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15670,124 +15672,232 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15803,101 +15913,228 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" @@ -15905,10 +16142,10 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" @@ -15916,14 +16153,21 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" msgstr[2] "" @@ -15931,15 +16175,71 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" msgstr[2] "" @@ -15947,11 +16247,26 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." @@ -15962,7 +16277,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." @@ -15973,7 +16288,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." @@ -15984,7 +16299,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." @@ -15995,6 +16310,66 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19537,14 +19912,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/da.po b/po/da.po index 5655cc456..de447c706 100644 --- a/po/da.po +++ b/po/da.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" -"PO-Revision-Date: 2026-08-05 18:01+0000\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" +"PO-Revision-Date: 2026-08-09 17:02+0000\n" "Last-Translator: Kaj Arne Mikkelsen \n" "Language-Team: Danish \n" @@ -20,7 +20,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.8.1.dev0\n" +"X-Generator: Weblate 2026.9.dev0\n" msgid "Birthdays" msgstr "Fødseldage" @@ -81,7 +81,7 @@ msgstr "AneUfyldelse for %s" #: AncestorFill/AncestorFill.py:205 msgid "Generation " -msgstr "Generation" +msgstr "Generation " #: AncestorFill/AncestorFill.py:206 msgid "Number of Ancestors found " @@ -89,11 +89,11 @@ msgstr "Antal fundne aner " #: AncestorFill/AncestorFill.py:207 msgid "Percent of Ancestors found " -msgstr "Procent fundne aner" +msgstr "Procent af fundne aner " #: AncestorFill/AncestorFill.py:208 msgid "Number of unique Ancestors found " -msgstr "Antal af fundne unikke aner" +msgstr "Antal af fundne unikke aner " #: AncestorFill/AncestorFill.py:209 msgid "Number of theoretical Ancestors " @@ -2190,7 +2190,9 @@ msgid "Calculate" msgstr "Beregn" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "Kopier" @@ -5447,7 +5449,7 @@ msgstr "" #: ExcludeSubtreeFilter/excludesubtree.py:121 #: FilterRules/isrelatedwithfiltermatch.py:80 msgid "Retrieving all sub-filter matches" -msgstr "" +msgstr "Henter alle underfiltermatches" #: ExportPersonGexf/exportpersongexf.gpr.py:30 msgid "Person GEXF" @@ -5550,43 +5552,43 @@ msgstr "" #: FRWebConnectPack/FRWebPack.gpr.py:11 msgid "FR Web Connect Pack" -msgstr "" +msgstr "FR Web Connect Pack" #: FRWebConnectPack/FRWebPack.gpr.py:12 msgid "Collection of Web sites for the FR (requires libwebconnect)" -msgstr "" +msgstr "Samling af websider for FR (kræver libwebconnect)" #: FRWebConnectPack/FRWebPack.py:41 msgid "Cultural ministry (France)" -msgstr "" +msgstr "Kulturministeriet (Frankrig)" #: FRWebConnectPack/FRWebPack.py:42 msgid "Genealogical bank" -msgstr "" +msgstr "Genealogical bank" #: FRWebConnectPack/FRWebPack.py:44 msgid "OrigineFile (Quebec)" -msgstr "" +msgstr "Oprindelsesfil (Quebec)" #: FRWebConnectPack/FRWebPack.py:50 msgid "Cyber genealogy" -msgstr "" +msgstr "Cyber-genealogi" #: FRWebConnectPack/FRWebPack.py:53 msgid "RetroNews (Bnf)" -msgstr "" +msgstr "RetroNews (Bnf)" #: FRWebConnectPack/FRWebPack.py:58 msgid "Hathi Trust Digital Library (fr)" -msgstr "" +msgstr "Hathi Trust digitale bibliotek (fr)" #: FRWebConnectPack/FRWebPack.py:59 msgid "Open Library (fr)" -msgstr "" +msgstr "Open Library (fr)" #: FRWebConnectPack/FRWebPack.py:60 msgid "Belgium's Archives" -msgstr "" +msgstr "Belgiens arkiv" #: FaceDetection/FaceDetection.gpr.py:4 msgid "Face Detection" @@ -5661,7 +5663,7 @@ msgstr "" #: FamilySheet/FamilySheet.py:232 FamilySheet/FamilySheet.py:275 #, python-format msgid "→ %s" -msgstr "" +msgstr "→ %s" #: FamilySheet/FamilySheet.py:397 #, python-format @@ -6247,17 +6249,15 @@ msgstr "" #: FilterRules/matchpersonfilterrole.gpr.py:7 msgid "Events from people with role" -msgstr "" +msgstr "Begivenheder fra personer med rolle" #: FilterRules/matchpersonfilterrole.gpr.py:8 -#, fuzzy -#| msgid "Matches people with an event with a selected role" msgid "Matches event of people filter with role" -msgstr "Matcher personer med en hændelse med en valgt rolle" +msgstr "Matcher begivenheder for personer med rolle" #: FilterRules/matchpersonfilterrole.py:69 msgid "Role:" -msgstr "" +msgstr "Rolle:" #: FilterRules/multipleparents.gpr.py:27 FilterRules/multipleparents.gpr.py:28 msgid "Multiple Parents Filter" @@ -6403,33 +6403,33 @@ msgid "Fix coords" msgstr "Ordn koordinater" #: Form/CensusCheckQuickview.gpr.py:9 -#, fuzzy -#| msgid "Censuses" msgid "CensusCheck" -msgstr "Folketællinger" +msgstr "Folketællingskontrol" #: Form/CensusCheckQuickview.gpr.py:10 msgid "" "Check whether any Census events are missing for a person and some of their " "descendents" msgstr "" +"Kontrollér om en folketællingsbegivenhed mangler for en person og nogle af " +"deres efterkommere" #: Form/CensusCheckQuickview.gpr.py:23 -#, fuzzy -#| msgid "Censuses" msgid "CensusCheckUp" -msgstr "Folketællinger" +msgstr "Folketællingskontrol" #: Form/CensusCheckQuickview.gpr.py:24 msgid "" "Check whether any Census events are missing for a person and some of their " "ancestors" msgstr "" +"Kontrollér hvorvidt nogen folketællingsbegivenhed mangler for en person og " +"nogle af deres efterkommere" #: Form/CensusCheckQuickview.py:122 Form/CensusCheckUpQuickview.py:122 #, python-format msgid "Census Check for %s" -msgstr "" +msgstr "Folketællingskontrol for %s" #: Form/editform.py:192 #, python-format @@ -6452,7 +6452,7 @@ msgstr "Henvisning:" #: Form/editform.py:393 msgid "[Source recreated after deletion mid-form-edit]" -msgstr "" +msgstr "[Kilde gendannet efter sletning midt i formularredigeringen]" #: Form/editform.py:446 msgid "Headings" @@ -6464,19 +6464,15 @@ msgstr "Formular" #: Form/form.py:174 msgid "XML syntax error in Form definition file" -msgstr "" +msgstr "XML syntaks fejl i Formulardefinitionsfilen" #: Form/form.py:185 -#, fuzzy -#| msgid "Failed to copy web files : %s" msgid "Failed to read Form definition file" -msgstr "Kunne ikke kopiere web filer: %s" +msgstr "Kunne ikke læse formulardefinitionsfilen filen" #: Form/form.py:194 -#, fuzzy -#| msgid "Invalid Destination Directory" msgid "Invalid Form definition file" -msgstr "Ugyldig målfolder" +msgstr "Ugyldig Formulardefinitionsfil" #: Form/form_ca.xml.h:1 Form/form_ca.xml.h:92 Form/form_ca.xml.h:210 #: Form/form_ca.xml.h:288 Form/form_ca.xml.h:342 Form/form_ca.xml.h:390 @@ -9906,63 +9902,51 @@ msgstr "" #: Form/form_ie.xml.h:1 msgid "Total Area in Statute Acres" -msgstr "" +msgstr "Total Area in Statute Acres" #: Form/form_ie.xml.h:2 msgid "Signature of Head of Household" -msgstr "" +msgstr "Signature of Head of Household" #: Form/form_ie.xml.h:3 -#, fuzzy -#| msgid "Enumerator" msgid "Signature of Enumerator" -msgstr "Optæller" +msgstr "Signature of Enumerator" #: Form/form_ie.xml.h:8 msgid "County or Co. Borough" -msgstr "" +msgstr "County or Co. Borough" #: Form/form_ie.xml.h:9 msgid "District Electoral Division or Ward" -msgstr "" +msgstr "District Electoral Division or Ward" #: Form/form_ie.xml.h:11 msgid "Urban Dist. Town or Village" -msgstr "" +msgstr "Urban Dist. Town or Village" #: Form/form_ie.xml.h:12 msgid "Street etc with No. of House" -msgstr "" +msgstr "Street etc with No. of House" #: Form/form_ie.xml.h:13 -#, fuzzy -#| msgid "Schedule" msgid "No. of Schedule" -msgstr "Skedulering" +msgstr "No. of Schedule" #: Form/form_ie.xml.h:14 -#, fuzzy -#| msgid "11. Number of inmates in institution" msgid "Name of Public Institution" -msgstr "11. Antal beboere i institution" +msgstr "Name of Public Institution" #: Form/form_ie.xml.h:16 Form/form_ie.xml.h:113 -#, fuzzy -#| msgid "Based on surname" msgid "Name and Surname" -msgstr "Baseret på efternavn" +msgstr "Name and Surname" #: Form/form_ie.xml.h:18 -#, fuzzy -#| msgid "10. Relationship to Head of Family" msgid "Relationship to Head of Household" -msgstr "10. Slægtskab med familieoverhovedet" +msgstr "Relationship to Head of Household" #: Form/form_ie.xml.h:19 -#, fuzzy -#| msgid "Default View" msgid "Year Age" -msgstr "Standard visning" +msgstr "Year Age" #: Form/form_ie.xml.h:20 Form/form_us.xml.h:2561 msgid "Age in years" @@ -9972,41 +9956,39 @@ msgstr "" #, fuzzy #| msgid "MonthsHome" msgid "Month Age" -msgstr "MånederHjemme" +msgstr "Month Age" #: Form/form_ie.xml.h:22 -#, fuzzy -#| msgid "Merge into import" msgid "Age in months" -msgstr "Sammenflet ind i importen" +msgstr "Age in months" #: Form/form_ie.xml.h:25 msgid "Marriage or Orphanhood" -msgstr "" +msgstr "Marriage or Orphanhood" #: Form/form_ie.xml.h:28 msgid "" "\"Irish only\", \"Irish and English\", \"English and Irish\", \"Read but " "cannot speak Irish\"" msgstr "" +"\"Irish only\", \"Irish and English\", \"English and Irish\", \"Read but " +"cannot speak Irish\"" #: Form/form_ie.xml.h:33 msgid "Years married in present Marriage" -msgstr "" +msgstr "Years married in present Marriage" #: Form/form_ie.xml.h:34 msgid "Months Married" -msgstr "" +msgstr "Months Married" #: Form/form_ie.xml.h:35 msgid "Months married in present Marriage" -msgstr "" +msgstr "Months married in present Marriage" #: Form/form_ie.xml.h:36 -#, fuzzy -#| msgid "Parents enclose children" msgid "Present Marriage Children" -msgstr "Forældre omslutter børn" +msgstr "Present Marriage Children" #: Form/form_ie.xml.h:37 msgid "Children born alive to present marriage" @@ -15335,130 +15317,111 @@ msgid "Select Form" msgstr "Vælg formular" #: GOQLFilter/goql.gpr.py:31 -#, fuzzy -#| msgid "Relationship to Father" msgid "Person GOQL Filter" -msgstr "Slægtskab med fader" +msgstr "Person GOQL Filter" #: GOQLFilter/goql.gpr.py:32 msgid "Gramplet providing a gramps-object-query-language person filter" -msgstr "" +msgstr "Gramplet der giver et gramps-objekt-query-language person filter" #: GOQLFilter/goql.gpr.py:39 GOQLFilter/goql.gpr.py:58 #: GOQLFilter/goql.gpr.py:77 GOQLFilter/goql.gpr.py:96 #: GOQLFilter/goql.gpr.py:117 GOQLFilter/goql.gpr.py:136 #: GOQLFilter/goql.gpr.py:155 GOQLFilter/goql.gpr.py:174 #: GOQLFilter/goql.gpr.py:193 -#, fuzzy -#| msgid "Filtering" msgid "GOQL Filter" -msgstr "Filrtrerer" +msgstr "GOQL Filter" #: GOQLFilter/goql.gpr.py:50 -#, fuzzy -#| msgid "Family Filter name:" msgid "Family GOQL Filter" -msgstr "Familiefilternavn:" +msgstr "Familie GOQL Filter" #: GOQLFilter/goql.gpr.py:51 msgid "Gramplet providing a gramps-object-query-language family filter" -msgstr "" +msgstr "Gramplet der giveret gramps-objekt-query-language familie filter" #: GOQLFilter/goql.gpr.py:69 msgid "Event GOQL Filter" -msgstr "" +msgstr "Begivenheds GOQL Filter" #: GOQLFilter/goql.gpr.py:70 msgid "Gramplet providing a gramps-object-query-language event filter" -msgstr "" +msgstr "Gramplet der giver et gramps-objekt-query-language begivenheds filter" #: GOQLFilter/goql.gpr.py:88 -#, fuzzy -#| msgid "Place _filter:" msgid "Place GOQL Filter" -msgstr "Sted_filter" +msgstr "Sted GOQL Filter" #: GOQLFilter/goql.gpr.py:89 msgid "Gramplet providing a gramps-object-query-language place filter" -msgstr "" +msgstr "Gramplet der giver et gramps-objekt-query-language sted filter" #: GOQLFilter/goql.gpr.py:107 -#, fuzzy -#| msgid "Repository title" msgid "Repository GOQL Filter" -msgstr "Arkivtitel" +msgstr "Arkiv GOQL Filter" #: GOQLFilter/goql.gpr.py:109 msgid "Gramplet providing a gramps-object-query-language repository filter" -msgstr "" +msgstr "Gramplet der giver et gramps-objekt-query-language arkiv filter" #: GOQLFilter/goql.gpr.py:128 -#, fuzzy -#| msgid "Source type" msgid "Source GOQL Filter" -msgstr "Kilde type" +msgstr "Kilde GOQL Filter" #: GOQLFilter/goql.gpr.py:129 msgid "Gramplet providing a gramps-object-query-language source filter" -msgstr "" +msgstr "Gramplet der giver et gramps-objekt-query-language kilde filter" #: GOQLFilter/goql.gpr.py:147 -#, fuzzy -#| msgid "Relationship to Father" msgid "Citation GOQL Filter" -msgstr "Slægtskab med fader" +msgstr "Kildehenvisnings GOQL Filter" #: GOQLFilter/goql.gpr.py:148 -#, fuzzy -#| msgid "Gramplet showing relatives in a relation" msgid "Gramplet providing a gramps-object-query-language citation filter" -msgstr "Gramplet der viser slægtskabet mellem slægtninge" +msgstr "" +"Gramplet der giver et gramps-objekt-query-language kildehenvisnings filter" #: GOQLFilter/goql.gpr.py:166 -#, fuzzy -#| msgid "Media Object Title" msgid "Media GOQL Filter" -msgstr "Medieobjekttitel" +msgstr "Medie GOQL Filter" #: GOQLFilter/goql.gpr.py:167 msgid "Gramplet providing a gramps-object-query-language media filter" -msgstr "" +msgstr "Gramplet der giver et gramps-objekt-query-language medie filter" #: GOQLFilter/goql.gpr.py:185 -#, fuzzy -#| msgid "Note on Family" msgid "Note GOQL Filter" -msgstr "Note om Familie" +msgstr "Note GOQL Filter" #: GOQLFilter/goql.gpr.py:186 msgid "Gramplet providing a gramps-object-query-language note filter" -msgstr "" +msgstr "Gramplet der giver et gramps-objekt-query-language note filter" #: GOQLFilter/goql.py:186 msgid "A gramps-object-query-language where-expression, e.g.\n" -msgstr "" +msgstr "Et gramps-objekt-query-language \"where\"-udtryk, f.eks\n" #: GOQLFilter/goql.py:188 msgid "Enter inserts a newline; Ctrl+Enter runs Find.\n" -msgstr "" +msgstr "Enter indsætter en ny linje; Ctrl+Enter udfører Find.\n" #: GOQLFilter/goql.py:189 msgid "Up/Down at the first/last line recalls previous expressions.\n" msgstr "" +"Pil op og pil ned på den første/sidste linje genbruger tidligere udtryk\n" #: GOQLFilter/goql.py:190 msgid "Tab always completes -- it never inserts a tab character." -msgstr "" +msgstr "Tab fuldfører altid strengen -- det indsætter aldrig et tab tegn." #: GOQLFilter/goql.py:213 -#, fuzzy, python-format -#| msgid "Use filter " +#, python-format msgid "%s filter" -msgstr "Benyt filter " +msgstr "%s filter" #: GOQLFilter/goql.py:233 msgid "This resets the filter parameters to empty state." -msgstr "" +msgstr "Dette nulstiller filter parametrerne." #: GOQLFilter/goql.py:239 msgid "This opens a dialog to save the current expression as a named filter." @@ -16162,128 +16125,255 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +#, fuzzy +#| msgid "Gramps Web Sync" +msgid "GrampsWebApiDb" msgstr "Gramps Web Sync" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." -msgstr "Synkroniserer en lokal database med em Gramps web instans." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" -#: GrampsWebSync/grampswebsync.py:124 -#, python-format +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/grampswebapidb.py:262 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/grampswebapidb.py:422 +#, python-format +msgid "" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:141 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL" +msgstr "Server URL: " + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Brugernavn:" + +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Kodeord:" + +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "_Generér" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Familietræ for %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -"Kan ikke synkronisere ændringer til serveres: objekter er blevet ændret." -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." -msgstr "Uventet fejl ved anvendelse af ændringer." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Generation " -#: GrampsWebSync/grampswebsync.py:170 -msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:263 #, python-format -msgid "The server could not apply the changes: %s" +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:271 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:274 #, fuzzy, python-format #| msgid "GetGOV error: %s" -msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" msgstr "GetGOV fejl: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Henter eksterne data ..." +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Fejl:" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Sammeligner lokale og eksterne data..." +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Fortsæt uden transport kryptering?" +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error in reading '%s'" +msgid "Error creating Family Tree: %s" +msgstr "Fejl ved læsning af '%s'" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." msgstr "" -"Du har angivet en URL med http skema. Hvis du fortsætter vil dit kodeord " -"blive sendt i klartekst over netværket. Benyt kun til lokal test!" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Fortsæt med HTTP" +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "Gramps Web Sync" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Benyt HTTPS" +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "Synkroniserer en lokal database med em Gramps web instans." -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Forbinder..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "Server URL: " + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Brugernavn:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Kodeord:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +#, fuzzy +#| msgid "About this utility." +msgid "About this tool" +msgstr "Om dette redskab." + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16311,143 +16401,347 @@ msgstr "" "Hvis du istedet ønsker ar samle to signifikant forskellige træer med " "mulighed for at lave manuelle ændringer, benyt Import Merge Tool istedet." -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "Server URL: " - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "Fejl:" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Generation" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps Web Sync" +msgid "Gramps Web Sync %s" +msgstr "Gramps Web Sync" + +#: GrampsWebSync/presentation.py:164 +#, fuzzy +#| msgid "" +#| "You have specified a URL with http scheme. If you continue, your password " +#| "will be sent in clear text over the network. Use only for local testing!" msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" +"Du har angivet en URL med http skema. Hvis du fortsætter vil dit kodeord " +"blive sendt i klartekst over netværket. Benyt kun til lokal test!" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Lokale ændringer" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Eksterne ændringer" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Samtidige ændringer" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Begge træer er ens." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" +"Kan ikke synkronisere ændringer til serveres: objekter er blevet ændret." -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "Uventet fejl ved anvendelse af ændringer." + +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Mangler lokalt" +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Mangler eksternt" +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, fuzzy, python-format +#| msgid "GetGOV error: %s" +msgid "Unexpected error: %s" +msgstr "GetGOV fejl: %s" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +#, fuzzy #| msgid "Downloading %s media file(s)" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Henter %s mediefil(er)" -msgstr[1] "Henter %s mediefil(er)" +msgid "Downloading the remote family tree…" +msgstr "Henter %s mediefil(er)" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server: objects have been modified." +msgid "Sending the changes to the server…" +msgstr "" +"Kan ikke synkronisere ændringer til serveres: objekter er blevet ændret." + +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Downloading %s media file(s)" +msgid "Downloading media files…" +msgstr "Henter %s mediefil(er)" + +#: GrampsWebSync/presentation.py:285 +#, fuzzy #| msgid "Uploading %s media file(s)" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Uploader %s mediefil(er)" -msgstr[1] "Uploader %s mediefil(er)" +msgid "Uploading media files…" +msgstr "Uploader %s mediefil(er)" + +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Forbinder..." + +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "Ingen ændringer" + +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Uploading %s media file(s)" +msgid "Transfer media files" +msgstr "Uploader %s mediefil(er)" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Mediefiler er synkrone." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Tilføj testnote" +msgstr[1] "Tilføj testnote" + +#: GrampsWebSync/presentation.py:594 +#, fuzzy, python-format +#| msgid "Writing %s reports..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Skriver %s rapporter..." +msgstr[1] "Skriver %s rapporter..." + +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Writing %s reports..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Skriver %s rapporter..." +msgstr[1] "Skriver %s rapporter..." + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:615 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" +msgstr "" + +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:684 #, fuzzy #| msgid "Both trees are the same." msgid "Both trees are already in sync." msgstr "Begge træer er ens." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Mediefiler er synkrone." + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Successfully downloaded %s media files." msgid "Successfully downloaded %s media file." @@ -16455,7 +16749,7 @@ msgid_plural "Successfully downloaded %s media files." msgstr[0] "Hentede %s mediefiler problemfrit." msgstr[1] "Hentede %s mediefiler problemfrit." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, fuzzy, python-format #| msgid "Encountered %s errors during download." msgid "Encountered %s error during download." @@ -16463,7 +16757,7 @@ msgid_plural "Encountered %s errors during download." msgstr[0] "Fik %s fejl ved hentning." msgstr[1] "Fik %s fejl ved hentning." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Successfully uploaded %s media files." msgid "Successfully uploaded %s media file." @@ -16471,7 +16765,7 @@ msgid_plural "Successfully uploaded %s media files." msgstr[0] "Overførte %s mediefiler problemfrit." msgstr[1] "Overførte %s mediefiler problemfrit." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, fuzzy, python-format #| msgid "Encountered %s errors during upload." msgid "Encountered %s error during upload." @@ -16479,6 +16773,54 @@ msgid_plural "Encountered %s errors during upload." msgstr[0] "Fik %s fejl ved overførsel." msgstr[1] "Fik %s fejl ved overførsel." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -20339,14 +20681,6 @@ msgstr "phpGedView import" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Brugernavn:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Kodeord:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26486,6 +26820,39 @@ msgstr "" " \"%s\"\n" " i din foretrukne web navigator ..." +#~ msgid "Fetching remote data..." +#~ msgstr "Henter eksterne data ..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Sammeligner lokale og eksterne data..." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Fortsæt uden transport kryptering?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Fortsæt med HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "Benyt HTTPS" + +#~ msgid "Local changes" +#~ msgstr "Lokale ændringer" + +#~ msgid "Remote changes" +#~ msgstr "Eksterne ændringer" + +#~ msgid "Simultaneous changes" +#~ msgstr "Samtidige ændringer" + +#~ msgid "Both trees are the same." +#~ msgstr "Begge træer er ens." + +#~ msgid "Missing locally" +#~ msgstr "Mangler lokalt" + +#~ msgid "Missing remotely" +#~ msgstr "Mangler eksternt" + #~ msgid "Error accessing media object." #~ msgstr "Fejl ved tilgang til medieobjekt." @@ -26502,13 +26869,6 @@ msgstr "" #~ msgid "Error %s while connecting to server." #~ msgstr "Fejl %s ved forbindelse til server." -#, fuzzy -#~| msgid "" -#~| "Unable to synchronize changes to server: objects have been modified." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "" -#~ "Kan ikke synkronisere ændringer til serveres: objekter er blevet ændret." - #~ msgid "Search" #~ msgstr "Søg" diff --git a/po/de.po b/po/de.po index 4cd71cc49..757850cd8 100644 --- a/po/de.po +++ b/po/de.po @@ -23,8 +23,8 @@ msgid "" msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" -"PO-Revision-Date: 2026-08-05 18:01+0000\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" +"PO-Revision-Date: 2026-08-14 21:51+0000\n" "Last-Translator: Mirko Leonhäuser \n" "Language-Team: German \n" @@ -33,7 +33,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.8.1.dev0\n" +"X-Generator: Weblate 2026.9.dev0\n" msgid "Birthdays" msgstr "Geburtstage" @@ -2246,7 +2246,9 @@ msgid "Calculate" msgstr "Berechnen" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "Kopieren" @@ -15735,181 +15737,197 @@ msgstr "" #: GOQLFilter/goql.py:186 msgid "A gramps-object-query-language where-expression, e.g.\n" -msgstr "" +msgstr "Ein „where“-Ausdruck in der Gramps-Objekt-Abfragesprache, z. B.\n" #: GOQLFilter/goql.py:188 msgid "Enter inserts a newline; Ctrl+Enter runs Find.\n" msgstr "" +"Mit der Eingabetaste wird ein Zeilenumbruch eingefügt; mit Strg+Eingabetaste " +"wird die Suchfunktion aufgerufen.\n" #: GOQLFilter/goql.py:189 msgid "Up/Down at the first/last line recalls previous expressions.\n" msgstr "" +"Mit den Pfeiltasten „Auf“ und „Ab“ an der ersten bzw. letzten Zeile werden " +"vorherige Ausdrücke aufgerufen.\n" #: GOQLFilter/goql.py:190 msgid "Tab always completes -- it never inserts a tab character." msgstr "" +"Die Tabulatortaste vervollständigt immer – sie fügt niemals ein " +"Tabulatorzeichen ein." #: GOQLFilter/goql.py:213 -#, fuzzy, python-format -#| msgid "Use filter " +#, python-format msgid "%s filter" -msgstr "Filter anwenden " +msgstr "%s Filter" #: GOQLFilter/goql.py:233 msgid "This resets the filter parameters to empty state." msgstr "" +"Dadurch werden die Filterparameter auf den leeren Zustand zurückgesetzt." #: GOQLFilter/goql.py:239 msgid "This opens a dialog to save the current expression as a named filter." msgstr "" +"Dadurch wird ein Dialogfeld geöffnet, in dem du den aktuellen Ausdruck als " +"benannten Filter speichern kannst." #: GOQLFilter/goql.py:244 msgid "Open this gramplet's help page in a browser." -msgstr "" +msgstr "Öffne die Hilfeseite dieses Gramplets in einem Browser." #: GOQLFilter/goql.py:402 msgid "SQL" -msgstr "" +msgstr "SQL" #: GOQLFilter/goql.py:403 -#, fuzzy -#| msgid "Python Shell" msgid "Python evaluation" -msgstr "Python-Shell" +msgstr "Python-Auswertung" #: GOQLFilter/goql.py:523 -#, fuzzy, python-format -#| msgid "Error: login failed" +#, python-format msgid "Error applying filter: %s" -msgstr "Fehler: Anmeldung fehlgeschlagen" +msgstr "Fehler beim Anwenden des Filters: %s" #: GOQLFilter/goql.py:526 #, python-format msgid "Showing %(shown)d of %(total)d (%(method)s)" -msgstr "" +msgstr "Anzeige von %(shown)d von %(total)d (%(method)s)" #: GOQLFilter/goql.py:541 -#, fuzzy, python-format -#| msgid "Error creating note" +#, python-format msgid "Error resetting filter: %s" -msgstr "Fehler beim Erstellen der Notiz" +msgstr "Fehler beim Zurücksetzen des Filters: %s" #: GOQLFilter/goql.py:548 -#, fuzzy -#| msgid "Enter Python expressions" msgid "Enter an expression first" -msgstr "Pythonausdrücke eingeben" +msgstr "Gib zunächst einen Ausdruck ein" #: GOQLFilter/goql.py:560 #, python-brace-format msgid "Created by the GOQL Filter gramplet on {today}" -msgstr "" +msgstr "Erstellt vom GOQL-Filter-Gramplet am {today}" #: GOQLFilter/whereexprrule.gpr.py:30 GOQLFilter/whereexprrule.py:261 msgid "People matching the " -msgstr "" +msgstr "Personen, die dem entsprechen" #: GOQLFilter/whereexprrule.gpr.py:32 msgid "" "Matches people for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Liefert Personen, für die der angegebene „where“-Ausdruck in der Gramps-" +"Objekt-Abfragesprache den Wert „true“ ergibt" #: GOQLFilter/whereexprrule.gpr.py:50 GOQLFilter/whereexprrule.py:266 -#, fuzzy -#| msgid "Families matching " msgid "Families matching the " -msgstr "Familien, die entsprechen" +msgstr "Familien, die dem entsprechen" #: GOQLFilter/whereexprrule.gpr.py:52 msgid "" "Matches families for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Liefert Familien, für die der angegebene „where“-Ausdruck in der Gramps-" +"Objekt-Abfragesprache den Wert „true“ ergibt" #: GOQLFilter/whereexprrule.gpr.py:70 GOQLFilter/whereexprrule.py:271 msgid "Events matching the " -msgstr "" +msgstr "Ereignisse, die dem entsprechen" #: GOQLFilter/whereexprrule.gpr.py:72 msgid "" "Matches events for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Liefert Ereignisse, für die der angegebene „where“-Ausdruck in der Gramps-" +"Objekt-Abfragesprache den Wert „true“ ergibt" #: GOQLFilter/whereexprrule.gpr.py:90 GOQLFilter/whereexprrule.py:276 msgid "Places matching the " -msgstr "" +msgstr "Orte, die dem entsprechen" #: GOQLFilter/whereexprrule.gpr.py:92 msgid "" "Matches places for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Liefert Orte, für die der angegebene „where“-Ausdruck in der Gramps-Objekt-" +"Abfragesprache den Wert „true“ ergibt" #: GOQLFilter/whereexprrule.gpr.py:110 GOQLFilter/whereexprrule.py:281 msgid "Repositories matching the " -msgstr "" +msgstr "Aufbewahrungsorte, die dem entsprechen" #: GOQLFilter/whereexprrule.gpr.py:112 msgid "" "Matches repositories for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Liefert Aufbewahrungsorte, für die der angegebene „where“-Ausdruck in der " +"Gramps-Objekt-Abfragesprache den Wert „true“ ergibt" #: GOQLFilter/whereexprrule.gpr.py:130 GOQLFilter/whereexprrule.py:286 -#, fuzzy -#| msgid "Source matching parameters" msgid "Sources matching the " -msgstr "Quelle, die den Parametern entspricht" +msgstr "Quellen, die dem entsprechen" #: GOQLFilter/whereexprrule.gpr.py:132 msgid "" "Matches sources for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Liefert Quellen, für die der angegebene „where“-Ausdruck in der Gramps-" +"Objekt-Abfragesprache den Wert „true“ ergibt" #: GOQLFilter/whereexprrule.gpr.py:150 GOQLFilter/whereexprrule.py:291 msgid "Citations matching the " -msgstr "" +msgstr "Quellenangaben, die dem entsprechen" #: GOQLFilter/whereexprrule.gpr.py:152 msgid "" "Matches citations for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Liefert Quellenangaben, für die der angegebene „where“-Ausdruck in der " +"Gramps-Objekt-Abfragesprache den Wert „true“ ergibt" #: GOQLFilter/whereexprrule.gpr.py:170 GOQLFilter/whereexprrule.py:296 msgid "Media matching the " -msgstr "" +msgstr "Medien, die dem entsprechen" #: GOQLFilter/whereexprrule.gpr.py:172 msgid "" "Matches media for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Liefert Medien, für die der angegebene „where“-Ausdruck in der Gramps-Objekt-" +"Abfragesprache den Wert „true“ ergibt" #: GOQLFilter/whereexprrule.gpr.py:190 GOQLFilter/whereexprrule.py:301 msgid "Notes matching the " -msgstr "" +msgstr "Notizen, die dem entsprechen" #: GOQLFilter/whereexprrule.gpr.py:192 msgid "" "Matches notes for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Liefert Notizen, für die der angegebene „where“-Ausdruck in der Gramps-" +"Objekt-Abfragesprache den Wert „true“ ergibt" #: GOQLFilter/whereexprrule.py:212 -#, fuzzy -#| msgid "Regular Expression" msgid "GOQL expression" -msgstr "Regulärer Ausdruck" +msgstr "GOQL-Ausdruck" #: GOQLFilter/whereexprrule.py:214 msgid "" "Matches objects for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Liefert Objekte, für die der angegebene „where“-Ausdruck in der Gramps-" +"Objekt-Abfragesprache den Wert „true“ ergibt" #: GedcomExtensions/GedcomExtensions.gpr.py:32 msgid "Export GEDCOM Extensions (GED2)" @@ -16482,8 +16500,196 @@ msgstr "GrampsChat" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "AI-Chatbot-Gramplet (erfordert die Verbindung zu einem LLM-Dienst)" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" +msgstr "GrampsWebApiDB" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "Gramps _Web API Datenbank" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" +"Verwende einen Gramps-Web-API-Server (z. B. gramps-connect oder Gramps Web) " +"als Live-Datenbank, die aus Gründen der Geschwindigkeit lokal gespiegelt " +"wird." + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." +msgstr "" +"Das Konto, das sich über GRAMPS_WEB_API_KEY authentifiziert, verfügt auf dem " +"Server nicht über die erforderlichen Berechtigungen für diesen Vorgang (HTTP " +"403 Forbidden). Erstelle einen Schlüssel für ein Konto mit ausreichenden " +"Berechtigungen oder bitte den Serveradministrator, diesem Konto Zugriff zu " +"gewähren." + +#: GrampsWebApiDb/grampswebapidb.py:422 +#, python-format +msgid "" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" +"Dieser Stammbaum trägt den Namen „%(actual)s“, aber GRAMPS_WEB_API_KEY " +"authentifiziert sich derzeit als „%(expected)s“. Benenne diesen Stammbaum in " +"„%(expected_typeable)s“ um (Stammbäume -> Stammbäume verwalten), wenn er " +"dieses Konto widerspiegeln soll, oder öffne bzw. erstelle den Stammbaum, der " +"bereits diesen Namen trägt – die Wiederverwendung dieses Stammbaums würde " +"dessen vorhandene lokale Daten mit denen des anderen Kontos vermischen." + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "Lokale Änderung nach Serverkonflikt erneut versuchen" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "Lokalen Spiegel vor der vollständigen Neusynchronisierung löschen" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "Gramps-Web-API-Schlüssel generieren" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" +"Wandelt die URL eines Gramps-Web-API-Servers sowie Benutzername und Passwort " +"in einen GRAMPS_WEB_API_KEY-Wert für „GrampsWebApiDB“ um und erstellt " +"optional einen passenden, korrekt benannten GrampsWebApiDB-Stammbaum dafür." + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" +msgstr "Server-URL" + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "z. B. https://dein-server/api" + +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" +msgstr "Benutzername" + +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" +msgstr "Kennwort" + +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" +msgstr "API-Schlüssel generieren" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" +"Gib die URL deines Servers, deinen Benutzernamen und dein Passwort ein und " +"klicke anschließend auf „API-Schlüssel generieren“." + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "GRAMPS_WEB_API_KEY" + +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" +msgstr "Synchronisierten Stammbaum für diesen Schlüssel erstellen" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" +"Für diese Sitzung wurde ein vorhandener %s gefunden. Klicke auf „" +"Synchronisierten Stammbaum erstellen“, um ihn direkt zu verwenden, oder " +"fülle das obige Formular aus, um einen anderen Schlüssel zu generieren." + +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." +msgstr "Bitte gib die Server-URL, den Benutzernamen und das Passwort ein." + +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" +msgstr "API-Schlüssel wird generiert…" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" +"Die Anmeldung ist fehlgeschlagen (HTTP %d): Bitte überprüfe deinen " +"Benutzernamen und dein Passwort." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" +"Der Server hat einen Fehler zurückgegeben (HTTP %d %s): Überprüfe die Server-" +"URL." + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "Der Server konnte nicht erreicht werden: Überprüfe die Server-URL. (%s)" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "Unerwartete Antwort vom Server: %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "Fehler: %s" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" +"Erfolg. %s ist nun für diese Gramps-Sitzung festgelegt – ein Neustart ist " +"nicht erforderlich. Kopiere den folgenden Schlüssel, um ihn auch in deiner " +"Shell-Umgebung für das nächste Mal festzulegen." + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "Kontoidentität wird überprüft…" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" +"Ein Stammbaum mit dem Namen „%s“ existiert bereits. Öffne ihn über „" +"Stammbäume“ → „Stammbäume verwalten“, anstatt einen neuen anzulegen." + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, python-format +msgid "Error creating Family Tree: %s" +msgstr "Fehler beim Erstellen des Stammbaums: %s" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" +"Der Stammbaum „%s“ wurde erstellt. Öffne ihn unter „Stammbäume“ -> „" +"Stammbäume verwalten“, um die Synchronisierung zu starten." + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" msgstr "Gramps-Web-Synchronisierung" @@ -16491,7 +16697,145 @@ msgstr "Gramps-Web-Synchronisierung" msgid "Synchronizes a local database with a Gramps Web instance." msgstr "Synchronisiert eine lokale Datenbank mit einer Gramps-Webinstanz." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "_Versuche es noch einmal" + +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" +msgstr "Ver_binden" + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "Diesen Server vergessen?" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" +"Die für diesen Server gespeicherte Adresse, der Benutzername und das " +"Passwort werden gelöscht, ebenso wie der Eintrag darüber, wann dieser " +"Stammbaum zuletzt mit dem Server synchronisiert wurde. Bei der nächsten " +"Synchronisierung werden die beiden Stammbäume von Grund auf neu verglichen." + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "Vergessen" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" +"Diese Anmeldedaten wurden zuletzt für einen anderen Stammbaum verwendet. " +"Überprüfe den Server, bevor du fortfährst." + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "Server wechseln…" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "Server-URL:" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Benutzername:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Kennwort:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "Passwort speichern" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "Diesen Server vergessen" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "Über dieses Werkzeug" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "Das Online-Handbuch öffnen" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" +"Dieses Werkzeug ermöglicht die Synchronisierung des aktuell geöffneten " +"Stammbaums mit einem Remote-Stammbaum, der von Gramps Web bereitgestellt " +"wird.\n" +"\n" +"Das Werkzeug geht davon aus, dass die beiden Stammbäume voneinander " +"abgeleitet sind, d. h. einer der beiden wurde aus einem Gramps-XML-Export " +"(nicht GEDCOM!) des anderen erstellt.\n" +"\n" +"Nach erfolgreicher Synchronisierung sind die beiden Stammbäume identisch. " +"Änderungen werden anhand von Zeitstempeln übertragen. Bevor Änderungen an " +"den lokalen oder entfernten Stammbäumen vorgenommen werden, wirst du zur " +"Bestätigung aufgefordert. \n" +"\n" +"Wenn du stattdessen zwei deutlich unterschiedliche Stammbäume mit der Option " +"manueller Änderungen zusammenführen möchtest, verwende das Import- und " +"Zusammenführungs-Werkzeug." + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "Fehler:" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "Warnung:" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "Synchronisierungsmodus:" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "Synchronisierung abgeschlossen" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "Die Synchronisierung ist fehlgeschlagen" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "Gramps Web Sync %(addon)s, Web API %(api)s" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "Gramps Web Sync %s" + +#: GrampsWebSync/presentation.py:164 +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"Diese URL verwendet HTTP, daher wird dein Passwort im Klartext übertragen. " +"Verwende sie nur für lokale Testzwecke." + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " @@ -16500,7 +16844,7 @@ msgstr "" "Der System-Schlüsselbund konnte nicht verwendet werden. Die Snap-" "Einschränkung blockiert den Zugriff, bis du folgenden Befehl ausführst: %s" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." @@ -16508,60 +16852,60 @@ msgstr "" "Der System-Schlüsselbund konnte nicht verwendet werden. Du musst dein " "Passwort jedes Mal eingeben." -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "" "Die Authentifizierung ist fehlgeschlagen. Bitte überprüfe deinen " "Benutzernamen und dein Kennwort." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "" "Zugriff verboten. Bitte prüfe mal deinen Benutzernamen und dein Kennwort." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "GrampsWeb-Dienst nicht gefunden. Bitte überprüfe die URL." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "Zu viele Anfragen, bitte versuche es in wenigen Sekunden erneut." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "Der GrampsWeb-Baum ist deaktiviert." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "" "Verbindung fehlgeschlagen. Bitte überprüfe die URL und deine " "Internetverbindung." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "Ungültige Serverantwort. Bitte überprüfe die URL." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "" "Dein Benutzer hat nicht die nötigen Server-Rechte, um die Synchronisierung " "zu nutzen." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "Das Importieren der heruntergeladenen XML-Datei ist fehlgeschlagen." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" "Änderungen können nicht mit dem Server synchronisiert werden: Objekte wurden " "geändert." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "Unerwarteter Fehler beim Anwenden der Änderungen." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." @@ -16569,100 +16913,122 @@ msgstr "" "Der Stammbaum wurde während der Überprüfung der Änderungen modifiziert. Es " "wurden noch keine Änderungen übernommen. Bitte vergleiche die Daten erneut." -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" +"Auf diesem Server läuft die Gramps-Web-API %(found)s, für die " +"Synchronisierung ist jedoch %(needed)s oder eine neuere Version " +"erforderlich. Bitte aktualisiere den Server." + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" +"Dieser Server hat keine Gramps-Web-API-Version gemeldet, daher ist er zu " +"alt, um eine Synchronisierung durchzuführen. Es wird Version %s oder eine " +"neuere Version benötigt." + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" +"Auf diesem Server läuft die Gramps-Web-API %(found)s. Diese Version von " +"Gramps ist mit der Gramps-Web-API %(major)s kompatibel, daher ist für die " +"Synchronisierung mit diesem Server eine neuere Version von Gramps " +"erforderlich." + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" +"Dieser Server ist nicht für die Verwendung einer " +"Hintergrundaufgabenwarteschlange konfiguriert. Für die Synchronisierung ist " +"eine solche erforderlich: Ohne sie läuft die Zeitüberschreitung beim " +"Übernehmen der Änderungen ab, bevor der Server den Vorgang abgeschlossen " +"hat. Bitte aktiviere diese Funktion auf dem Server." + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "Der Server konnte die Änderungen nicht übernehmen: %s" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "Serverfehler %s. Bitte überprüfe deine Verbindung." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "Unerwarteter Fehler: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Ferndaten werden abgerufen..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "Anmeldung…" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Vergleich von lokalen und externen Daten..." +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "Der entfernte Stammbaum wird heruntergeladen…" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Änderungen erfolgreich in der lokalen Datenbank übernommen." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "Vergleich der beiden Stammbäume…" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Ohne Transportverschlüsselung fortfahren?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "Prüfung, welche Mediendateien fehlen…" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" -msgstr "" -"Du hast eine URL mit dem http-Schema angegeben. Wenn du fortfährst, wird " -"dein Passwort im Klartext über das Netzwerk gesendet. Nur für lokale Tests " -"verwenden!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "Die Änderungen wurden auf diesem Computer übernommen." -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Weiter mit HTTP" +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "Die Änderungen werden an den Server gesendet…" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "HTTPS verwenden" +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "Mediendateien werden heruntergeladen…" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" -"Dieses Werkzeug ermöglicht die Synchronisierung des aktuell geöffneten " -"Stammbaums mit einem Remote-Stammbaum, der von Gramps Web bereitgestellt " -"wird.\n" -"\n" -"Das Werkzeug geht davon aus, dass die beiden Stammbäume voneinander " -"abgeleitet sind, d. h. einer der beiden wurde aus einem Gramps-XML-Export " -"(nicht GEDCOM!) des anderen erstellt.\n" -"\n" -"Nach erfolgreicher Synchronisierung sind die beiden Stammbäume identisch. " -"Änderungen werden anhand von Zeitstempeln übertragen. Bevor Änderungen an " -"den lokalen oder entfernten Stammbäumen vorgenommen werden, wirst du zur " -"Bestätigung aufgefordert. \n" -"\n" -"Wenn du stattdessen zwei deutlich unterschiedliche Stammbäume mit der Option " -"manueller Änderungen zusammenführen möchtest, verwende das Import- und " -"Zusammenführungs-Werkzeug." +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "Mediendateien werden hochgeladen…" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "Server-URL: " +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "Verbinden" -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "Fehler:" +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "Änderungen übernehmen" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "Mediendateien übertragen" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" -msgstr "Synchronisierungsmodus" +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "Bidirektionale Synchronisation" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "Den Server so zurücksetzen, dass er mit diesem Computer übereinstimmt" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "Diesen Computer so zurücksetzen, dass er mit dem Server übereinstimmt" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." @@ -16670,7 +17036,7 @@ msgstr "" "Änderungen von beiden Seiten werden zusammengeführt. Objekte, die an beiden " "Orten bearbeitet wurden, werden zusammengeführt." -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." @@ -16678,7 +17044,7 @@ msgstr "" "Der Server ist auf diesen Computer abgestimmt. Alle Änderungen, die " "ausschließlich auf dem Server vorgenommen wurden, werden verworfen." -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." @@ -16686,139 +17052,176 @@ msgstr "" "Dieser Computer ist auf den Server abgestimmt. Alle Änderungen, die " "ausschließlich hier vorgenommen wurden, werden verworfen." -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Bidirektionale Synchronisation" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Zurücksetzen von entfernt auf lokal" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Lokal auf entfernt zurücksetzen" - -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" -msgstr "Warnung:" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Lokale Änderungen" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Entfernte Änderungen" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Gleichzeitige Änderungen" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Informationen zu Mediendateien abrufen..." - -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Beide Bäume sind gleich." - -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Änderungen auf lokale Datenbank anwenden ..." - -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Keine Änderungen an der lokalen Datenbank durchzuführen." +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "Wird auf diesem Computer geändert (%s Objekt)" +msgstr[1] "Wird auf diesem Computer geändert (%s Objekte)" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Änderungen auf entfernte Datenbank anwenden ..." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "Wird auf dem Server geändert (%s Objekt)" +msgstr[1] "Wird auf dem Server geändert (%s Objekte)" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Keine Änderungen an der entfernten Datenbank durchzuführen." +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "%s Objekt hinzufügen" +msgstr[1] "%s Objekte hinzufügen" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Lokal nicht vorhanden" +#: GrampsWebSync/presentation.py:594 +#, python-format +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "%s Objekt aktualisieren" +msgstr[1] "%s Objekte aktualisieren" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Fehlt entfernt" +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "%s Objekt zusammenführen" +msgstr[1] "%s Objekte zusammenführen" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:596 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "%s Mediendatei wird heruntergeladen" -msgstr[1] "%s Mediendateien werden heruntergeladen" +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "%s Objekt löschen" +msgstr[1] "%s Objekte löschen" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:615 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "%s Mediendatei wird hochgeladen" -msgstr[1] "%s Mediendateien werden hochgeladen" +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "%s Objekt wird auf diesem Computer gelöscht." +msgstr[1] "%s Objekte werden auf diesem Computer gelöscht." -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "Versuche es noch einmal" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "%s Objekt wird auf dem Server gelöscht." +msgstr[1] "%s Objekte werden auf dem Server gelöscht." -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:636 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." -msgstr[0] "%s Änderung wurde übernommen." -msgstr[1] "%s Änderungen wurden übernommen." +msgid "%(down)s to download, %(up)s to upload" +msgstr "%(down)s zum Herunterladen, %(up)s zum Hochladen" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Die Mediendateien sind synchronisiert." +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "Außerdem %(total)s Mediendatei (%(counts)s) übertragen" +msgstr[1] "Außerdem %(total)s Mediendateien (%(counts)s) übertragen" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" -"%s Mediendatei fehlt auf beiden Seiten und konnte daher nicht übertragen " +"%s Mediendatei fehlt auf beiden Seiten und kann daher nicht übertragen " "werden." msgstr[1] "" -"%s Mediendateien fehlen auf beiden Seiten und konnten nicht übertragen " -"werden." +"%s Mediendateien fehlen auf beiden Seiten und können nicht übertragen werden." + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "%s Änderung wurde übernommen." +msgstr[1] "%s Änderungen wurden übernommen." -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "Beide Bäume sind bereits synchronisiert." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Die Mediendateien sind synchronisiert." + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "%s Mediendatei wurde erfolgreich heruntergeladen." msgstr[1] "%s Mediendateien wurden erfolgreich heruntergeladen." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "Beim Herunterladen ist %s Fehler aufgetreten." msgstr[1] "Beim Herunterladen sind %s Fehler aufgetreten." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "%s Mediendatei wurde erfolgreich hochgeladen." msgstr[1] "%s Mediendateien wurden erfolgreich hochgeladen." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "Beim Hochladen ist %s Fehler aufgetreten." msgstr[1] "Beim Hochladen sind %s Fehler aufgetreten." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "Kein Server konfiguriert" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "%(user)s auf %(server)s" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "%(where)s — %(synced)s" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "Noch nie synchronisiert" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "Zuletzt synchronisiert: gerade eben" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "Zuletzt synchronisiert vor %s Minute" +msgstr[1] "Zuletzt synchronisiert vor %s Minuten" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "Zuletzt synchronisiert vor %s Stunde" +msgstr[1] "Zuletzt synchronisiert vor %s Stunden" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "Zuletzt synchronisiert vor %s Tag" +msgstr[1] "Zuletzt synchronisiert vor %s Tagen" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "Zuletzt synchronisiert am %s" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "Gram.py-Skript" @@ -20640,14 +21043,6 @@ msgstr "phpGedView Import" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Benutzername:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Kennwort:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26632,6 +27027,63 @@ msgstr "" " „%s“\n" " in deinem bevorzugten Web- Browser zu öffnen ..." +#~ msgid "Fetching remote data..." +#~ msgstr "Ferndaten werden abgerufen..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Vergleich von lokalen und externen Daten..." + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Änderungen erfolgreich in der lokalen Datenbank übernommen." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Ohne Transportverschlüsselung fortfahren?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Weiter mit HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "HTTPS verwenden" + +#~ msgid "Reset remote to local" +#~ msgstr "Zurücksetzen von entfernt auf lokal" + +#~ msgid "Reset local to remote" +#~ msgstr "Lokal auf entfernt zurücksetzen" + +#~ msgid "Local changes" +#~ msgstr "Lokale Änderungen" + +#~ msgid "Remote changes" +#~ msgstr "Entfernte Änderungen" + +#~ msgid "Simultaneous changes" +#~ msgstr "Gleichzeitige Änderungen" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Informationen zu Mediendateien abrufen..." + +#~ msgid "Both trees are the same." +#~ msgstr "Beide Bäume sind gleich." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Änderungen auf lokale Datenbank anwenden ..." + +#~ msgid "No changes to apply to local database." +#~ msgstr "Keine Änderungen an der lokalen Datenbank durchzuführen." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Änderungen auf entfernte Datenbank anwenden ..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Keine Änderungen an der entfernten Datenbank durchzuführen." + +#~ msgid "Missing locally" +#~ msgstr "Lokal nicht vorhanden" + +#~ msgid "Missing remotely" +#~ msgstr "Fehlt entfernt" + #~ msgid "Error accessing media object." #~ msgstr "Fehler beim Zugriff auf das Medienobjekt." @@ -26651,9 +27103,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "URL-Fehler bei der Verbindung zum Server." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Änderungen können nicht mit dem Server synchronisiert werden." - #~ msgid "Search" #~ msgstr "Suche" diff --git a/po/el.po b/po/el.po index 112fe4bdd..139dddbc1 100644 --- a/po/el.po +++ b/po/el.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 4.0.3.\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2025-12-23 02:37+0000\n" "Last-Translator: klak kloyk \n" "Language-Team: Greek Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15814,166 +15924,391 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19521,14 +19856,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/en_GB.po b/po/en_GB.po index db39115e9..65da91290 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -28,8 +28,8 @@ msgid "" msgstr "" "Project-Id-Version: gramps 3.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" -"PO-Revision-Date: 2026-07-11 13:01+0000\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" +"PO-Revision-Date: 2026-08-09 17:02+0000\n" "Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom) \n" @@ -38,7 +38,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.7.1.dev0\n" +"X-Generator: Weblate 2026.9.dev0\n" msgid "Birthdays" msgstr "" @@ -2124,7 +2124,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15106,10 +15108,8 @@ msgid "Gramplet providing a gramps-object-query-language event filter" msgstr "" #: GOQLFilter/goql.gpr.py:88 -#, fuzzy -#| msgid "Place _filter:" msgid "Place GOQL Filter" -msgstr "Place _filter:" +msgstr "Place GOQL Filter" #: GOQLFilter/goql.gpr.py:89 msgid "Gramplet providing a gramps-object-query-language place filter" @@ -15178,10 +15178,9 @@ msgid "Tab always completes -- it never inserts a tab character." msgstr "" #: GOQLFilter/goql.py:213 -#, fuzzy, python-format -#| msgid "Place _filter:" +#, python-format msgid "%s filter" -msgstr "Place _filter:" +msgstr "%s filter" #: GOQLFilter/goql.py:233 msgid "This resets the filter parameters to empty state." @@ -15842,124 +15841,236 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "General Data" +msgid "Generate API Key" +msgstr "General Data" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Generation " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15975,166 +16086,395 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation failed" +msgid "Synchronization failed" +msgstr "Generation failed" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." +msgstr "" + +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" + +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "" + +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" + +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "" + +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" + +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Local changes" +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Remote changes" +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:293 +msgid "Connect" msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "No changes" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19722,14 +20062,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" @@ -25295,6 +25627,12 @@ msgid "" " into your preferred web navigator ..." msgstr "" +#~ msgid "Local changes" +#~ msgstr "Local changes" + +#~ msgid "Remote changes" +#~ msgstr "Remote changes" + #~ msgid "Search" #~ msgstr "Search" diff --git a/po/eo.po b/po/eo.po index 46dac874f..0767700c0 100644 --- a/po/eo.po +++ b/po/eo.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: nova\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2025-08-29 20:30+0000\n" "Last-Translator: jmichault \n" "Language-Team: Esperanto Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Generacio " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15849,166 +15961,393 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Generacio " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:258 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19564,14 +19903,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/es.po b/po/es.po index bca69f5e3..b41cc5280 100644 --- a/po/es.po +++ b/po/es.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: GRAMPS 3.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-07-24 05:14+0000\n" "Last-Translator: Juan Saavedra \n" "Language-Team: Spanish Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." -msgstr "El servicio web de Gramps no funciona. Compruebe la URL." +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -"Solicitudes excesivas, por favor inténtelo de nuevo en unos pocos segundos." -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." -msgstr "Árbol GrampsWeb está desactivado." +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." -msgstr "Conexión incorrecta. Compruebe la URL y su conexión de internet." +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." -msgstr "Respuesta de servidor no válida. Pro favor compruebe la URL." +#: GrampsWebApiDb/mintapikeytool.py:141 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL" +msgstr "URL del servidor: " -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -"Su usuario no tiene suficientes permisos de servidor para usar " -"sincronización." -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." -msgstr "Incorrecto al importar archivo XML descargado." +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Nombre de usuario:" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." -msgstr "" -"Incapaz de sincronizar cambios al servidor: los objetos han sido modificados." +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Contraseña:" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." -msgstr "Error inesperado al aplicar cambios." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "Generar" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:162 msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Árbol de familia para %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:222 +#, fuzzy +#| msgid "Access forbidden. Please check username and password." +msgid "Please fill in the server URL, username, and password." +msgstr "Acceso prohibido. Compruebe nombre de usuario y contraseña." + +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Generación " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, fuzzy, python-format +#| msgid "Authentication failed. Please check your username and password." +msgid "Login failed (HTTP %d): check your username and password." +msgstr "Autenticación incorrecta. Compruebe su nombre de usuario y contraseña." + +#: GrampsWebApiDb/mintapikeytool.py:263 #, python-format -msgid "Server error %s. Please check your connection." -msgstr "Error del servidor %s. Por favor, compruebe su conexión." +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:271 #, python-format -msgid "Unexpected error: %s" +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, fuzzy, python-format +#| msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" msgstr "Error inesperado: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Obteniendo datos remotos..." +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Error:" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Comprobando datos locales y remotos…" +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Los cambios se aplicaron correctamente a la base de datos local." +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "¿Continuar sin transporte con cifrado?" +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error creating note" +msgid "Error creating Family Tree: %s" +msgstr "Error al crear la nota" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." msgstr "" -"Tiene especificada una URL con esquema http. Si continua, su contraseña será " -"enviada en texto claro sobre la red. ¡Solo utilize para pruebas locales!" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Continuar con HTTP" +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "Sincronizar Web de Gramps" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" +"Sincroniza una base de datos local con una instancia de la Web de Gramps." + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Conectando…" + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "URL del servidor: " + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Nombre de usuario:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Contraseña:" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Utilizar HTTPS" +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +#, fuzzy +#| msgid "About this utility." +msgid "About this tool" +msgstr "Sobre esta utilidad." + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16458,145 +16588,356 @@ msgstr "" "opción de realizar modificaciones manuales, utilice en su lugar la " "herramienta Importar fusión." -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "URL del servidor: " - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "Error:" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +#, fuzzy +#| msgid "Migration completed!" +msgid "Synchronization complete" +msgstr "Migración completada." + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Generación " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps Web Sync" +msgid "Gramps Web Sync %s" +msgstr "Sincronizar Web de Gramps" + +#: GrampsWebSync/presentation.py:164 +#, fuzzy +#| msgid "" +#| "You have specified a URL with http scheme. If you continue, your password " +#| "will be sent in clear text over the network. Use only for local testing!" msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" +"Tiene especificada una URL con esquema http. Si continua, su contraseña será " +"enviada en texto claro sobre la red. ¡Solo utilize para pruebas locales!" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Sincronización bidireccional" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." +msgstr "Autenticación incorrecta. Compruebe su nombre de usuario y contraseña." -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Restablecer remoto a local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." +msgstr "Acceso prohibido. Compruebe nombre de usuario y contraseña." -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Restablecer local a remoto" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." +msgstr "El servicio web de Gramps no funciona. Compruebe la URL." -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." +msgstr "" +"Solicitudes excesivas, por favor inténtelo de nuevo en unos pocos segundos." + +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "Árbol GrampsWeb está desactivado." + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "Conexión incorrecta. Compruebe la URL y su conexión de internet." + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "Respuesta de servidor no válida. Pro favor compruebe la URL." + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" +"Su usuario no tiene suficientes permisos de servidor para usar " +"sincronización." -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Cambios locales" +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "Incorrecto al importar archivo XML descargado." -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Cambios remotos" +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" +"Incapaz de sincronizar cambios al servidor: los objetos han sido modificados." -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Cambios simultáneos" +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "Error inesperado al aplicar cambios." -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Recuperando información sobre archivos multimedia…" +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Ambos árboles son iguales." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Aplicando cambios a la base de datos local…" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Sin cambios para aplicar a base de datos local." +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Aplicar cambios en la base de datos remota ..." +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "No es necesario aplicar ningún cambio a la base de datos remota." +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Ausente localmente" +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "Error del servidor %s. Por favor, compruebe su conexión." -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Ausente remotamente" +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "Error inesperado: %s" -#: GrampsWebSync/grampswebsync.py:905 -#, fuzzy, python-format +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +#, fuzzy #| msgid "Downloading %s media file" #| msgid_plural "Downloading %s media files" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Descargando %s archivo de medio" -msgstr[1] "Descargando %s archivo de medio" +msgid "Downloading the remote family tree…" +msgstr "Descargando %s archivo de medio" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server." +msgid "Sending the changes to the server…" +msgstr "No es capaz de sincronizar cambios al servidor." + +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading media files…" +msgstr "Descargando %s archivo de medio" + +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Uploading media files…" +msgstr "Subiendo %s archivos de medio" + +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Conectando…" + +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "Sin cambios" + +#: GrampsWebSync/presentation.py:296 +#, fuzzy #| msgid "Uploading %s media file" #| msgid_plural "Uploading %s media files" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Subiendo %s archivos de medio" -msgstr[1] "Subiendo %s archivos de medio" +msgid "Transfer media files" +msgstr "Subiendo %s archivos de medio" + +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "Sincronización bidireccional" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" msgstr "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Archivos de medio sincronizados." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Agregar Nota de Prueba" +msgstr[1] "Agregar Nota de Prueba" + +#: GrampsWebSync/presentation.py:594 +#, fuzzy, python-format +#| msgid "Upgrading %s objects..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Mejora de objeto %s…" +msgstr[1] "Mejora de objeto %s…" + +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Migrating %s objects..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Migrando objetos %s…" +msgstr[1] "Migrando objetos %s…" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:636 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%(down)s to download, %(up)s to upload" +msgstr "" + +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:684 #, fuzzy #| msgid "Both trees are the same." msgid "Both trees are already in sync." msgstr "Ambos árboles son iguales." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Archivos de medio sincronizados." + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Successfully downloaded %s media file." #| msgid_plural "Successfully downloaded %s media files." @@ -16605,7 +16946,7 @@ msgid_plural "Successfully downloaded %s media files." msgstr[0] "Archivo %s del medio descargado correctamente." msgstr[1] "Archivo %s del medio descargado correctamente." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, fuzzy, python-format #| msgid "Encountered %s error during download." #| msgid_plural "Encountered %s errors during download." @@ -16614,7 +16955,7 @@ msgid_plural "Encountered %s errors during download." msgstr[0] "Error %s encontrado durante descarga." msgstr[1] "Error %s encontrado durante descarga." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Successfully uploaded %s media file." #| msgid_plural "Successfully uploaded %s media files." @@ -16623,7 +16964,7 @@ msgid_plural "Successfully uploaded %s media files." msgstr[0] "Correctamente subido %s archivo del medio." msgstr[1] "Correctamente subido %s archivo del medio." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, fuzzy, python-format #| msgid "Encountered %s error during upload." #| msgid_plural "Encountered %s errors during upload." @@ -16632,6 +16973,54 @@ msgid_plural "Encountered %s errors during upload." msgstr[0] "Encontrado %s error durante la subida." msgstr[1] "Encontrado %s error durante la subida." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -20529,14 +20918,6 @@ msgstr "phpGedView importa" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Nombre de usuario:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Contraseña:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26579,6 +26960,63 @@ msgstr "" " «%s»\n" " en su navegador web preferido…" +#~ msgid "Fetching remote data..." +#~ msgstr "Obteniendo datos remotos..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Comprobando datos locales y remotos…" + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Los cambios se aplicaron correctamente a la base de datos local." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "¿Continuar sin transporte con cifrado?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Continuar con HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "Utilizar HTTPS" + +#~ msgid "Reset remote to local" +#~ msgstr "Restablecer remoto a local" + +#~ msgid "Reset local to remote" +#~ msgstr "Restablecer local a remoto" + +#~ msgid "Local changes" +#~ msgstr "Cambios locales" + +#~ msgid "Remote changes" +#~ msgstr "Cambios remotos" + +#~ msgid "Simultaneous changes" +#~ msgstr "Cambios simultáneos" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Recuperando información sobre archivos multimedia…" + +#~ msgid "Both trees are the same." +#~ msgstr "Ambos árboles son iguales." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Aplicando cambios a la base de datos local…" + +#~ msgid "No changes to apply to local database." +#~ msgstr "Sin cambios para aplicar a base de datos local." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Aplicar cambios en la base de datos remota ..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "No es necesario aplicar ningún cambio a la base de datos remota." + +#~ msgid "Missing locally" +#~ msgstr "Ausente localmente" + +#~ msgid "Missing remotely" +#~ msgstr "Ausente remotamente" + #~ msgid "Error accessing media object." #~ msgstr "Error al acceder objeto del medio." @@ -26598,9 +27036,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "Error URL mientras se conectaba al servidor." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "No es capaz de sincronizar cambios al servidor." - #~ msgid "Search" #~ msgstr "Búsqueda" diff --git a/po/fi.po b/po/fi.po index 0cd1f57ea..7144dda7a 100644 --- a/po/fi.po +++ b/po/fi.po @@ -24,7 +24,7 @@ msgid "" msgstr "" "Project-Id-Version: fi\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-07-26 17:40+0000\n" "Last-Translator: Juha Mäkeläinen \n" "Language-Team: Finnish Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:141 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL" +msgstr "Palvelimen URL: " + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Käyttäjätunnus:" + +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Salasana:" + +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "Muodosta" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Sukupuu henkilölle %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:222 +#, fuzzy +#| msgid "Access forbidden. Please check username and password." +msgid "Please fill in the server URL, username, and password." +msgstr "Pääsy evätty. Tarkista käyttäjätunnus ja salasana." + +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Sukupolvi " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, fuzzy, python-format +#| msgid "Authentication failed. Please check your username and password." +msgid "Login failed (HTTP %d): check your username and password." +msgstr "Todennus epäonnistui. Tarkista käyttäjätunnuksesi ja salasanasi." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, fuzzy, python-format +#| msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" +msgstr "Odottamaton virhe: %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Virhe:" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error creating note" +msgid "Error creating Family Tree: %s" +msgstr "Virhe luotaessa lisätietoa" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" msgstr "Gramps Web -synkronointi" @@ -16174,282 +16351,444 @@ msgstr "Gramps Web -synkronointi" msgid "Synchronizes a local database with a Gramps Web instance." msgstr "Synkronoi paikallisen tietokannan Gramps Web -instanssin kanssa." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Yhdistetään..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "Palvelimen URL: " + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Käyttäjätunnus:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Salasana:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +#, fuzzy +#| msgid "About this utility." +msgid "About this tool" +msgstr "Tietoja tästä työkalusta." + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" +"Tämän työkalun avulla voidaan synkronoida tällä hetkellä avattu sukupuu " +"Gramps Webin palveleman etäsukupuun kanssa.\n" +"\n" +"Työkalu olettaa, että kaksi sukupuuta ovat toistensa johdannaisia, eli " +"toinen niistä on luotu toisen Gramps XML-viennistä (ei GEDCOMista!).\n" +"\n" +"Onnistuneen synkronoinnin jälkeen kaksi sukupuuta ovat identtisiä. Muutokset " +"tehdään aikaleimojen perusteella. Sinulta pyydetään vahvistus ennen kuin " +"muutoksia tehdään paikallisiin tai etäpuihin.\n" +"\n" +"Jos haluat sen sijaan yhdistää kaksi merkittävästi erilaista puuta ja tehdä " +"manuaalisia muutoksia, käytä sen sijaan Tuo yhdistäminen -työkalua." + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "Virhe:" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +#, fuzzy +#| msgid "Migration completed!" +msgid "Synchronization complete" +msgstr "Siirto valmis!" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Sukupolvi " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps Web Sync" +msgid "Gramps Web Sync %s" +msgstr "Gramps Web -synkronointi" + +#: GrampsWebSync/presentation.py:164 +#, fuzzy +#| msgid "" +#| "You have specified a URL with http scheme. If you continue, your password " +#| "will be sent in clear text over the network. Use only for local testing!" +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"Olet määrittänyt URL-osoitteen http-yhteydellä. Jos jatkat, salasanasi " +"lähetetään selkotekstinä verkon kautta. Käytä vain paikalliseen testaukseen!" + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " "you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "Todennus epäonnistui. Tarkista käyttäjätunnuksesi ja salasanasi." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "Pääsy evätty. Tarkista käyttäjätunnus ja salasana." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "GrampsWeb-palvelua ei löytynyt. Tarkista URL-osoite." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "Liikaa pyyntöjä, yritä uudelleen muutaman sekunnin kuluttua." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "GrampsWeb ei ole tarjolla." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "Yhteysvirhe. Tarkasta URL-osoite ja yhteytesi." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "Virheellinen palvelimen vastaus. Tarkasta URL-osoitteesi." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "" "Käyttäjätunuksellasi ei ole riittäviä palvelinoikeuksia synkronointiin." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "Ladatun XML-tiedoston tuonti tietokantaan ei onnistunut." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "Muutosten synkronointi palvelimelle epäonnistui: kohteita on muokattu." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "Odottamaton virhe muutoksien toteuttamiseen." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "Palvelinvirhe %s. Tarkasta yhteytesi." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "Odottamaton virhe: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Haetaan etätietoja..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Verrataan paikallisia ja etätietoja..." +#: GrampsWebSync/presentation.py:268 +#, fuzzy +#| msgid "Downloading %s media file(s)" +msgid "Downloading the remote family tree…" +msgstr "Tuodaan Grampsista %s mediatiedostoa" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Muutokset toteutettu paikalliseen tietokantaan." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Jatketaanko ilman tiedonsiirron salausta?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -"Olet määrittänyt URL-osoitteen http-yhteydellä. Jos jatkat, salasanasi " -"lähetetään selkotekstinä verkon kautta. Käytä vain paikalliseen testaukseen!" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Jatka HTTP:llä" +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server." +msgid "Sending the changes to the server…" +msgstr "Muutosten synkronointi palvelimelle ei onnistunut." -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Käytä HTTPS:ää" +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Downloading %s media file(s)" +msgid "Downloading media files…" +msgstr "Tuodaan Grampsista %s mediatiedostoa" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" -"Tämän työkalun avulla voidaan synkronoida tällä hetkellä avattu sukupuu " -"Gramps Webin palveleman etäsukupuun kanssa.\n" -"\n" -"Työkalu olettaa, että kaksi sukupuuta ovat toistensa johdannaisia, eli " -"toinen niistä on luotu toisen Gramps XML-viennistä (ei GEDCOMista!).\n" -"\n" -"Onnistuneen synkronoinnin jälkeen kaksi sukupuuta ovat identtisiä. Muutokset " -"tehdään aikaleimojen perusteella. Sinulta pyydetään vahvistus ennen kuin " -"muutoksia tehdään paikallisiin tai etäpuihin.\n" -"\n" -"Jos haluat sen sijaan yhdistää kaksi merkittävästi erilaista puuta ja tehdä " -"manuaalisia muutoksia, käytä sen sijaan Tuo yhdistäminen -työkalua." +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Uploading %s media file(s)" +msgid "Uploading media files…" +msgstr "Viedään Grampsiin %s mediatiedostoa" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "Palvelimen URL: " +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Yhdistetään..." -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "Virhe:" +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "Ei muutoksia" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Uploading %s media file(s)" +msgid "Transfer media files" +msgstr "Viedään Grampsiin %s mediatiedostoa" + +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "Kaksisuuntainen synkronointi" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Kaksisuuntainen synkronointi" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Palauta etätiedot paikallisen mukaiseksi" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Palauta paikailliset tiedot etätietojen mukaisiksi" - -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" -msgstr "" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Paikalliset muutokset" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Etämuutokset" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Yhtäaikaisia muutoksia" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Haetaan tietoja mediatiedostoista..." - -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Puut ovat samoja." - -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Muutoksia toteutaan paikalliseen tietokantaan..." +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Ei muutoksia paikalliseen tietokantaan." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Muutoksia viedään etätietokantaan..." +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Lisää testilisätieto" +msgstr[1] "Lisää testilisätieto" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Ei muutoksia etätietokantaan." +#: GrampsWebSync/presentation.py:594 +#, fuzzy, python-format +#| msgid "Upgrading %s objects..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Päivitetään %s objektia..." +msgstr[1] "Päivitetään %s objektia..." -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Puuttuu paikallisista tiedoista" +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Migrating %s objects..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Siirretään %s objektia..." +msgstr[1] "Siirretään %s objektia..." -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Puuttuu etätiedoista" +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:905 -#, fuzzy, python-format -#| msgid "Downloading %s media file(s)" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Tuodaan Grampsista %s mediatiedostoa" -msgstr[1] "Tuodaan Grampsista %s mediatiedostoa" +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format -#| msgid "Uploading %s media file(s)" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Viedään Grampsiin %s mediatiedostoa" -msgstr[1] "Viedään Grampsiin %s mediatiedostoa" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Mediatiedostoissa ei synkronoitavaa." - -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:684 #, fuzzy #| msgid "Both trees are the same." msgid "Both trees are already in sync." msgstr "Puut ovat samoja." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Mediatiedostoissa ei synkronoitavaa." + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Successfully downloaded %s media files." msgid "Successfully downloaded %s media file." @@ -16457,7 +16796,7 @@ msgid_plural "Successfully downloaded %s media files." msgstr[0] "%s mediatiedostoa tuotiin onnistuneesti." msgstr[1] "%s mediatiedostoa tuotiin onnistuneesti." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, fuzzy, python-format #| msgid "Encountered %s errors during download." msgid "Encountered %s error during download." @@ -16465,7 +16804,7 @@ msgid_plural "Encountered %s errors during download." msgstr[0] "Tuonnin aikana ilmeni virhe %s." msgstr[1] "Tuonnin aikana ilmeni virhe %s." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Successfully uploaded %s media files." msgid "Successfully uploaded %s media file." @@ -16473,7 +16812,7 @@ msgid_plural "Successfully uploaded %s media files." msgstr[0] "%s mediatiedostoa lähetettiin onnistuneesti." msgstr[1] "%s mediatiedostoa lähetettiin onnistuneesti." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, fuzzy, python-format #| msgid "Encountered %s errors during upload." msgid "Encountered %s error during upload." @@ -16481,6 +16820,54 @@ msgid_plural "Encountered %s errors during upload." msgstr[0] "Lähetyksen aikana ilmeni virhe %s." msgstr[1] "Lähetyksen aikana ilmeni virhe %s." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "Gram.py-scripti" @@ -20315,14 +20702,6 @@ msgstr "phpGedView tuonti" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Käyttäjätunnus:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Salasana:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26322,6 +26701,63 @@ msgstr "" " \"%s\"\n" " suosikkiselaimessasi ..." +#~ msgid "Fetching remote data..." +#~ msgstr "Haetaan etätietoja..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Verrataan paikallisia ja etätietoja..." + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Muutokset toteutettu paikalliseen tietokantaan." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Jatketaanko ilman tiedonsiirron salausta?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Jatka HTTP:llä" + +#~ msgid "Use HTTPS" +#~ msgstr "Käytä HTTPS:ää" + +#~ msgid "Reset remote to local" +#~ msgstr "Palauta etätiedot paikallisen mukaiseksi" + +#~ msgid "Reset local to remote" +#~ msgstr "Palauta paikailliset tiedot etätietojen mukaisiksi" + +#~ msgid "Local changes" +#~ msgstr "Paikalliset muutokset" + +#~ msgid "Remote changes" +#~ msgstr "Etämuutokset" + +#~ msgid "Simultaneous changes" +#~ msgstr "Yhtäaikaisia muutoksia" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Haetaan tietoja mediatiedostoista..." + +#~ msgid "Both trees are the same." +#~ msgstr "Puut ovat samoja." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Muutoksia toteutaan paikalliseen tietokantaan..." + +#~ msgid "No changes to apply to local database." +#~ msgstr "Ei muutoksia paikalliseen tietokantaan." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Muutoksia viedään etätietokantaan..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Ei muutoksia etätietokantaan." + +#~ msgid "Missing locally" +#~ msgstr "Puuttuu paikallisista tiedoista" + +#~ msgid "Missing remotely" +#~ msgstr "Puuttuu etätiedoista" + #~ msgid "Error accessing media object." #~ msgstr "Mediaobjektin lukeminen ei onnistunut." @@ -26341,9 +26777,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "URL-virhe palvelimelle yhdistettäessä." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Muutosten synkronointi palvelimelle ei onnistunut." - #~ msgid "Search" #~ msgstr "Hae" diff --git a/po/fr.po b/po/fr.po index e21b020b8..7a7d5c691 100644 --- a/po/fr.po +++ b/po/fr.po @@ -39,7 +39,7 @@ msgid "" msgstr "" "Project-Id-Version: trunk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-07-01 15:01+0000\n" "Last-Translator: \"David D.\" \n" "Language-Team: French Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:141 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL" +msgstr "URL du serveur : " + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Nom d'utilisateur :" + +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Mot de passe :" + +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "Générer" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Arbre familial de %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:222 +#, fuzzy +#| msgid "Access forbidden. Please check username and password." +msgid "Please fill in the server URL, username, and password." +msgstr "" +"L'accès est refusé. Merci de vérifier votre nom d'utilisateur/trice et votre " +"mot de passe." + +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Génération " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, fuzzy, python-format +#| msgid "Authentication failed. Please check your username and password." +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" +"L'authentification a échoué. Merci de vérifier votre nom d'utilisateur/trice " +"et votre mot de passe." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, fuzzy, python-format +#| msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" +msgstr "erreur innatendue : %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Erreur :" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error creating note" +msgid "Error creating Family Tree: %s" +msgstr "Erreur lors de la création de la note" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" msgstr "Synchronisation Gramps Web" @@ -16432,295 +16613,459 @@ msgstr "Synchronisation Gramps Web" msgid "Synchronizes a local database with a Gramps Web instance." msgstr "Synchronise une base de données locale avec une instance «Gramps Web»." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Connexion..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "URL du serveur : " + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Nom d'utilisateur :" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Mot de passe :" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +#, fuzzy +#| msgid "About this utility." +msgid "About this tool" +msgstr "À propos de cet utilitaire." + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" +"Cet outil permet de synchroniser l'arbre généalogique actuellement ouvert " +"avec un arbre généalogique distant géré par Gramps Web.\n" +"\n" +"L'outil suppose que les deux arbres sont dérivés l'un de l'autre, c'est-à-" +"dire que l'un a été créé à partir d'une exportation Gramps XML (et non " +"GEDCOM !) de l'autre.\n" +"\n" +"Une fois la synchronisation réussie, les deux arbres seront identiques. Les " +"modifications seront propagées en fonction des horodatages. Une confirmation " +"vous sera demandée avant toute modification des arbres locaux ou distants.\n" +"\n" +"Si vous souhaitez fusionner deux arbres sensiblement différents avec la " +"possibilité d'effectuer des modifications manuelles, utilisez plutôt l'outil " +"d'importation et de fusion." + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "Erreur :" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +#, fuzzy +#| msgid "Migration completed!" +msgid "Synchronization complete" +msgstr "Migration terminée !" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Génération " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps Web Sync" +msgid "Gramps Web Sync %s" +msgstr "Synchronisation Gramps Web" + +#: GrampsWebSync/presentation.py:164 +#, fuzzy +#| msgid "" +#| "You have specified a URL with http scheme. If you continue, your password " +#| "will be sent in clear text over the network. Use only for local testing!" +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"Vous avez spécifié une URL http. Si vous continuez, votre mot de passe sera " +"envoyé en clair sur le réseau. Utilisez seulement pour les tests locaux !" + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " "you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "" "L'authentification a échoué. Merci de vérifier votre nom d'utilisateur/trice " "et votre mot de passe." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "" "L'accès est refusé. Merci de vérifier votre nom d'utilisateur/trice et votre " "mot de passe." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "L'installation GrampsWeb n'a pu être trouvée. Merci de vérifier l'URL." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "Il y trop de requêtes, merci d'essayer à nouveau dans un instant." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "L'arbre de GrampsWeb est désactivé." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "" "Problème de connexion. Merci de vérifier l'adresse URL et votre connexion à " "Internet." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "Réponse du serveur incorrecte. Veuillez vérifier l'URL." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "" "Votre utilisateur ne dispose pas des autorisations serveur suffisantes pour " "utiliser la synchronisation." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "Échec du téléchargement du fichier XML." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" "Impossible de synchroniser les changements au serveur : les objets ont été " "modifiés." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "Erreur inattendue en appliquant les modifications." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "Erreur serveur %s. Veuillez vérifier votre connexion." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "erreur innatendue : %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Récupération des données distantes…" +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Comparaison des données locales et distantes…" +#: GrampsWebSync/presentation.py:268 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading the remote family tree…" +msgstr "Téléchargement de %s fichier medium" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Modifications apportées à la base de données locale avec succès." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Continuer sans chiffrement ?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -"Vous avez spécifié une URL http. Si vous continuez, votre mot de passe sera " -"envoyé en clair sur le réseau. Utilisez seulement pour les tests locaux !" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Continuer avec HTTP" +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server." +msgid "Sending the changes to the server…" +msgstr "Impossible de synchroniser les changements au serveur." -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Utiliser HTTPS" +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading media files…" +msgstr "Téléchargement de %s fichier medium" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" -"Cet outil permet de synchroniser l'arbre généalogique actuellement ouvert " -"avec un arbre généalogique distant géré par Gramps Web.\n" -"\n" -"L'outil suppose que les deux arbres sont dérivés l'un de l'autre, c'est-à-" -"dire que l'un a été créé à partir d'une exportation Gramps XML (et non " -"GEDCOM !) de l'autre.\n" -"\n" -"Une fois la synchronisation réussie, les deux arbres seront identiques. Les " -"modifications seront propagées en fonction des horodatages. Une confirmation " -"vous sera demandée avant toute modification des arbres locaux ou distants.\n" -"\n" -"Si vous souhaitez fusionner deux arbres sensiblement différents avec la " -"possibilité d'effectuer des modifications manuelles, utilisez plutôt l'outil " -"d'importation et de fusion." +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Uploading media files…" +msgstr "Téléchargement de %s fichier medium" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "URL du serveur : " +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Connexion..." -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "Erreur :" +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "Aucun changement" + +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Transfer media files" +msgstr "Téléchargement de %s fichier medium" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "Synchronisation bidirectionnelle" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Synchronisation bidirectionnelle" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Réinitialiser du distant vers le local" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Réinitialiser l'arbre local depuis l'arbre distant" - -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" -msgstr "" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Changements locaux" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Changements distants" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Changements simultanés" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Obtenir des informations sur les fichiers média..." - -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Les deux arbrers sont identiques." - -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Application des changements à la base de données locale…" +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Aucune modification à appliquer à la base de données locale." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Appliquer les modifications à la base de données distante ..." +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Ajouter une note de test" +msgstr[1] "Ajouter une note de test" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Aucun changement à appliquer à la base de données distante." +#: GrampsWebSync/presentation.py:594 +#, fuzzy, python-format +#| msgid "Upgrading %s objects..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Mise à jour de %s objets…" +msgstr[1] "Mise à jour de %s objets…" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Manque localement" +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Migrating %s objects..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Migration de %s objets…" +msgstr[1] "Migration de %s objets…" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Manque sur le serveur distant" +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:905 -#, fuzzy, python-format -#| msgid "Downloading %s media file" -#| msgid_plural "Downloading %s media files" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Téléchargement de %s fichier medium" -msgstr[1] "Téléchargement de %s fichier medium" +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format -#| msgid "Uploading %s media file" -#| msgid_plural "Uploading %s media files" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Téléchargement de %s fichier medium" -msgstr[1] "Téléchargement de %s fichier medium" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Les fichiers media sont synchronisés." - -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:684 #, fuzzy #| msgid "Both trees are the same." msgid "Both trees are already in sync." msgstr "Les deux arbrers sont identiques." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Les fichiers media sont synchronisés." + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Successfully downloaded %s media file." #| msgid_plural "Successfully downloaded %s media files." @@ -16729,7 +17074,7 @@ msgid_plural "Successfully downloaded %s media files." msgstr[0] "Téléchargement réussi de %s fichier medium." msgstr[1] "Téléchargement réussi de %s fichier medium." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, fuzzy, python-format #| msgid "Encountered %s error during download." #| msgid_plural "Encountered %s errors during download." @@ -16738,7 +17083,7 @@ msgid_plural "Encountered %s errors during download." msgstr[0] "%s erreur rencontrée lors du téléchargement." msgstr[1] "%s erreur rencontrée lors du téléchargement." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Successfully uploaded %s media file." #| msgid_plural "Successfully uploaded %s media files." @@ -16747,7 +17092,7 @@ msgid_plural "Successfully uploaded %s media files." msgstr[0] "Téléchargement réussi de %s fichier medium." msgstr[1] "Téléchargement réussi de %s fichier medium." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, fuzzy, python-format #| msgid "Encountered %s error during upload." #| msgid_plural "Encountered %s errors during upload." @@ -16756,6 +17101,54 @@ msgid_plural "Encountered %s errors during upload." msgstr[0] "%s erreur lors du téléchargement." msgstr[1] "%s erreur lors du téléchargement." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "Script Gram.py" @@ -20688,14 +21081,6 @@ msgstr "import phpGedView" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Nom d'utilisateur :" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Mot de passe :" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26700,6 +27085,63 @@ msgstr "" " \"%s\"\n" " dans votre navigateur internet préféré ..." +#~ msgid "Fetching remote data..." +#~ msgstr "Récupération des données distantes…" + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Comparaison des données locales et distantes…" + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Modifications apportées à la base de données locale avec succès." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Continuer sans chiffrement ?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Continuer avec HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "Utiliser HTTPS" + +#~ msgid "Reset remote to local" +#~ msgstr "Réinitialiser du distant vers le local" + +#~ msgid "Reset local to remote" +#~ msgstr "Réinitialiser l'arbre local depuis l'arbre distant" + +#~ msgid "Local changes" +#~ msgstr "Changements locaux" + +#~ msgid "Remote changes" +#~ msgstr "Changements distants" + +#~ msgid "Simultaneous changes" +#~ msgstr "Changements simultanés" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Obtenir des informations sur les fichiers média..." + +#~ msgid "Both trees are the same." +#~ msgstr "Les deux arbrers sont identiques." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Application des changements à la base de données locale…" + +#~ msgid "No changes to apply to local database." +#~ msgstr "Aucune modification à appliquer à la base de données locale." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Appliquer les modifications à la base de données distante ..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Aucun changement à appliquer à la base de données distante." + +#~ msgid "Missing locally" +#~ msgstr "Manque localement" + +#~ msgid "Missing remotely" +#~ msgstr "Manque sur le serveur distant" + #~ msgid "Error accessing media object." #~ msgstr "Erreur en accédant à un objet medium." @@ -26719,9 +27161,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "Erreur d'URL en se connectant au serveur." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Impossible de synchroniser les changements au serveur." - #~ msgid "Search" #~ msgstr "Rechercher" diff --git a/po/he.po b/po/he.po index af288aff8..b847e4a9a 100644 --- a/po/he.po +++ b/po/he.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Gramps 5.2.0 – mediamerge\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" -"PO-Revision-Date: 2026-08-05 18:01+0000\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" +"PO-Revision-Date: 2026-08-17 03:51+0000\n" "Last-Translator: Avi Markovitz \n" "Language-Team: Hebrew \n" @@ -19,7 +19,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " "n % 10 == 0) ? 2 : 3));\n" -"X-Generator: Weblate 2026.8.1.dev0\n" +"X-Generator: Weblate 2026.9.dev0\n" msgid "Birthdays" msgstr "ימי הולדת" @@ -2160,7 +2160,9 @@ msgid "Calculate" msgstr "חישוב" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "העתקה" @@ -15320,86 +15322,79 @@ msgstr "ביטוי where בשפת־שאילתות־עצמי־גרמפס (GOQL), #: GOQLFilter/goql.py:188 msgid "Enter inserts a newline; Ctrl+Enter runs Find.\n" msgstr "" +"הקשה על 'אנטר' מכניסה שורה חדשה, הקשה על 'קונטרול+אנטר' מפעילה חיפוש.\n" #: GOQLFilter/goql.py:189 msgid "Up/Down at the first/last line recalls previous expressions.\n" -msgstr "" +msgstr "מקשי החצים למעלה/למטה בשורה הראשונה/אחרונה קוראת לביטויים קודמים.\n" #: GOQLFilter/goql.py:190 msgid "Tab always completes -- it never inserts a tab character." -msgstr "" +msgstr "מקש הטבלר תמיד משלים -- הוא אף פעם לא מוסיף תו טבלר." #: GOQLFilter/goql.py:213 -#, fuzzy, python-format -#| msgid "Use filter " +#, python-format msgid "%s filter" -msgstr "שימוש במסנן " +msgstr "במסנן %s" #: GOQLFilter/goql.py:233 msgid "This resets the filter parameters to empty state." -msgstr "" +msgstr "זה משצב את פרמטרי המסנן למצב ריק." #: GOQLFilter/goql.py:239 msgid "This opens a dialog to save the current expression as a named filter." -msgstr "" +msgstr "פתיחת חלון שיח לשמירת הביטוי הנוכחי כמסנן עם שם." #: GOQLFilter/goql.py:244 msgid "Open this gramplet's help page in a browser." -msgstr "" +msgstr "פתיחת עמוד העזרה של הגרמפלט בדפדפן." #: GOQLFilter/goql.py:402 msgid "SQL" -msgstr "" +msgstr "SQL" #: GOQLFilter/goql.py:403 -#, fuzzy -#| msgid "Python Shell" msgid "Python evaluation" -msgstr "מעטפת פיתון" +msgstr "הערכת פיתון" #: GOQLFilter/goql.py:523 -#, fuzzy, python-format -#| msgid "Error: login failed" +#, python-format msgid "Error applying filter: %s" -msgstr "שגיאה: הכניסה נכשלה" +msgstr "שגיאה בהחלת מסנן: %s" #: GOQLFilter/goql.py:526 #, python-format msgid "Showing %(shown)d of %(total)d (%(method)s)" -msgstr "" +msgstr "הצגת %(shown)d מתוך %(total)d %(method)s" #: GOQLFilter/goql.py:541 -#, fuzzy, python-format -#| msgid "Error creating note" +#, python-format msgid "Error resetting filter: %s" -msgstr "שגיאה ביצירת הערה" +msgstr "שגיאה בשצוב מסנן: %s" #: GOQLFilter/goql.py:548 -#, fuzzy -#| msgid "Enter Python expressions" msgid "Enter an expression first" -msgstr "הזנת ביטוי פיתון" +msgstr "נא להזין ביטוי תחילה" #: GOQLFilter/goql.py:560 #, python-brace-format msgid "Created by the GOQL Filter gramplet on {today}" -msgstr "" +msgstr "נוצר על ידי גרמפלט מסנן ה־GOQL ב־{today}" #: GOQLFilter/whereexprrule.gpr.py:30 GOQLFilter/whereexprrule.py:261 msgid "People matching the " -msgstr "" +msgstr "אנשים שתואמים <ביטוי GOQL>" #: GOQLFilter/whereexprrule.gpr.py:32 msgid "" "Matches people for which the given gramps-object-query-language where-" "expression evaluates to true" -msgstr "התאמת אנשים שבהם ביטוי where בשפת־שאילתות־עצמי־גרמפס (GOQL), הוא 'true'" +msgstr "" +"התאמת אנשים שבהם ביטוי where בשפת־שאילתות־עצמי־גרמפס (GOQL), הוא 'true'" #: GOQLFilter/whereexprrule.gpr.py:50 GOQLFilter/whereexprrule.py:266 -#, fuzzy -#| msgid "Families matching " msgid "Families matching the " -msgstr "משפחות שתואמות <מסנן אירוע>" +msgstr "משפחות שתואמות <ביטוי GOQL>" #: GOQLFilter/whereexprrule.gpr.py:52 msgid "" @@ -15410,7 +15405,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:70 GOQLFilter/whereexprrule.py:271 msgid "Events matching the " -msgstr "" +msgstr "אירועים שתואמים <ביטוי GOQL>" #: GOQLFilter/whereexprrule.gpr.py:72 msgid "" @@ -15421,7 +15416,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:90 GOQLFilter/whereexprrule.py:276 msgid "Places matching the " -msgstr "" +msgstr "מקומות שתואמים <ביטוי GOQL>" #: GOQLFilter/whereexprrule.gpr.py:92 msgid "" @@ -15432,19 +15427,18 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:110 GOQLFilter/whereexprrule.py:281 msgid "Repositories matching the " -msgstr "" +msgstr "מאגרים שתואמים <ביטוי GOQL>" #: GOQLFilter/whereexprrule.gpr.py:112 msgid "" "Matches repositories for which the given gramps-object-query-language where-" "expression evaluates to true" -msgstr "התאמת אגרים שבהם ביטוי where בשפת־שאילתות־עצמי־גרמפס (GOQL), הוא 'true'" +msgstr "" +"התאמת אגרים שבהם ביטוי where בשפת־שאילתות־עצמי־גרמפס (GOQL), הוא 'true'" #: GOQLFilter/whereexprrule.gpr.py:130 GOQLFilter/whereexprrule.py:286 -#, fuzzy -#| msgid "Source matching parameters" msgid "Sources matching the " -msgstr "מדדי התאמת מקורות" +msgstr "מקורות שתואמים <ביטוי GOQL>" #: GOQLFilter/whereexprrule.gpr.py:132 msgid "" @@ -15455,7 +15449,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:150 GOQLFilter/whereexprrule.py:291 msgid "Citations matching the " -msgstr "" +msgstr "מובאות שתואמות <ביטוי GOQL>" #: GOQLFilter/whereexprrule.gpr.py:152 msgid "" @@ -15466,7 +15460,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:170 GOQLFilter/whereexprrule.py:296 msgid "Media matching the " -msgstr "" +msgstr "מדיה שתואמת <ביטוי GOQL>" #: GOQLFilter/whereexprrule.gpr.py:172 msgid "" @@ -15476,25 +15470,25 @@ msgstr "התאמת מדיה שבהן ביטוי where בשפת־שאילתות־ #: GOQLFilter/whereexprrule.gpr.py:190 GOQLFilter/whereexprrule.py:301 msgid "Notes matching the " -msgstr "" +msgstr "הערות שתואמות <ביטוי GOQL>" #: GOQLFilter/whereexprrule.gpr.py:192 msgid "" "Matches notes for which the given gramps-object-query-language where-" "expression evaluates to true" -msgstr "התאמת הערות שבהן ביטוי where בשפת־שאילתות־עצמי־גרמפס (GOQL), הוא 'true'" +msgstr "" +"התאמת הערות שבהן ביטוי where בשפת־שאילתות־עצמי־גרמפס (GOQL), הוא 'true'" #: GOQLFilter/whereexprrule.py:212 -#, fuzzy -#| msgid "Regular Expression" msgid "GOQL expression" -msgstr "ביטוי רגולרי" +msgstr "ביטוי GOQL" #: GOQLFilter/whereexprrule.py:214 msgid "" "Matches objects for which the given gramps-object-query-language where-" "expression evaluates to true" -msgstr "התאמת עצמים שבהם ביטוי where בשפת־שאילתות־עצמי־גרמפס (GOQL), הוא 'true'" +msgstr "" +"התאמת עצמים שבהם ביטוי where בשפת־שאילתות־עצמי־גרמפס (GOQL), הוא 'true'" #: GedcomExtensions/GedcomExtensions.gpr.py:32 msgid "Export GEDCOM Extensions (GED2)" @@ -16053,8 +16047,185 @@ msgstr "שיח גרמפס" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "גרמפלט שיחוח בינה מלאכותית (דורש חיבור לשירות LLM)" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" +msgstr "GrampsWebApiDb" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "מסד־נתוני _מרשתת גרמפש" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" +"שימוש בשרת API גרמפס מרשתת (לדוגמה gramps-connect או Gramps Web) כמסד נתונים " +"פעיל, עם שיקוף מקומי להגברת מהירות." + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." +msgstr "" +"אין הרשאה בשרת לפעולת אימות חשבון באמצעות GRAMPS_WEB_API_KEY (HTTP 403 אסור)" +". נא ליצור מפתח לחשבון עם הרשאות מספקות, או לבקש ממנהל השרת להעניק " +"גישהלחשבון זה." + +#: GrampsWebApiDb/grampswebapidb.py:422 +#, python-format +msgid "" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" +"אילן־היוחסין נקרא \"%(actual)s\", אבל GRAMPS_WEB_API_KEY מאמת כרגע כ־\"%" +"(expected)s\". נא לשנות את שם אילן־יוחסין זה ל־\"%(expected_typeable)s\" " +"(אילנות־יוחסין -> ניהול אילנות־יוחסין) אם הוא אמור לשקף את החשבון הזה, או " +"לפתוח/ליצור את אילן־היוחסין שכבר נקרא כך – שימוש חוזר באילן־יוחסין זה יגרום " +"לערבב הנתונים המקומיים הקיימים שלו עם אלה של החשבון האחר." + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "לנסות שנוי מקומי שוב לאחר התנגשות בשרת" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "נא לנקות ראי מקומי לפני סינכרון חוזר מלא" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "חילול מפתח API מרשתת גרמפס" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" +"הפיכת כתובת URL של שרת API מרשתת גרמפס, שם משתמש וסיסמה לערך " +"GRAMPS_WEB_API_KEY עבור GrampsWebApiDb, לחלופין לצור עבורו אילן־יוחסין תואם " +"בשם הנכון של GrampsWebApiDb." + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" +msgstr "כתובת URL של השרת" + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "לדוגמה https://your-server/api" + +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" +msgstr "שם משתמש" + +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" +msgstr "סיסמה" + +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" +msgstr "חילול מפתח API" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" +"נא להזין כתבת URL של השרת, שם משתמש וסיסמה, לאחר מכן להקיש על חילול מפתח API." + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "GRAMPS_WEB_API_KEY" + +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" +msgstr "יצירת אילן־יוחסין מסונכרן עבורמפתח זה" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" +"נמצא %s קיים לשיח זה. נא להקיש על יצירת אילן־יוחסין מסונכרן כדי להשתמש בו " +"באופן ישיר, או למלא את הטופס מעל לחילול מפתח שונה." + +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." +msgstr "נא להזין את כתובת ה־URL של השרת, שם משתמש וססמה." + +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" +msgstr "מתבצע חילול מפתח API…" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "התחברות כשלה (HTTP %d): נא לבדוק שם משתמש וסיסמה." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "השרת החזיר שגיאה (HTTP %d %s): נא לבדוק את כתובת ה־URL של השרת." + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "השרת לא נגיש: נא לבדוק את כתובת ה־URL של השרת. (%s)" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "תגובה בלתי צפויה מהשרת: %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "שגיאה: %s" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" +"הצלחה. %s מוגדר כעת לשיח גרמפס זה -- שתחול לא נדרש. נא להעתיק את המפתח מטה " +"כדי להגדיר אותו גם בסביבת המעטפת לפעם הבאה." + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "מתבצע חפוש זהות חשבון…" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" +"אילן־יוחסין בשם '%s' קיים כבר. ניתן לפתוח אותו מתפריט 'אילנות־יוחסין -> " +"ניהול אילנות־יוחסין' במקום ליצור אחד נוסף." + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, python-format +msgid "Error creating Family Tree: %s" +msgstr "שגיאה ביצרת אילן־יוחסין: %s" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" +"אילן־יוחסין '%s' נוצר. ניתן לפתוח אותו מתפריט 'אילנות־יוחסין -> ניהול אילנות־" +"יוחסין' כדי להתחיל לסנכרן." + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" msgstr "מרשתת גרמפס סנכרון" @@ -16062,7 +16233,143 @@ msgstr "מרשתת גרמפס סנכרון" msgid "Synchronizes a local database with a Gramps Web instance." msgstr "מסנכרן מסד־נתונים מקומי עם מופע מרשתת גרמפס." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "_לנסות שוב" + +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" +msgstr "לה_תחבר" + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "האם לשכוח שרת זה?" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" +"הכתובת, שם משתמש וסיסמה שמאוחסנים עבור שרת זה יוסרו, יחד עם רשומת מועד " +"סונכרן אחרון של אילן־יוחסין זה. הסינכרון הבא ישווה את שני אילנות־היוחסין " +"מאפס." + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "לשכוח" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "כתובת URL של השרת: " + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "שם משתמש:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "ססמה:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +#, fuzzy +#| msgid "About this utility." +msgid "About this tool" +msgstr "על כלי־עזר זה." + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" +"כלי זה מאפשר לסנכרן את אילן־היוחסין שפתוח כעת עם אילן־יוחסין מרוחק שמוגש על " +"ידי מרשתת גרמפס.\n" +"\n" +"הכלי מניח ששני האילנות נגזרים זה מזה, כלומר אחד מהם נוצר מייצוא Gramps XML " +"(לא GEDCOM!) של האחר.\n" +"\n" +"לאחר סנכרון מוצלח, שני האילנות יהיו זהים. שינויים יופצו על בסיס חותמות זמן. " +"תוצג בקשת אישור לפני ביצוע שינוי כלשהו באילן המקומי או המרוחק.\n" +"\n" +"אם במקום זאת נדרש למזג שני אילנות שונים משמעותית עם אפשרות לבצע שינויים " +"ידניים, יש להשתמש בכלי מיזוג ייבוא." + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "שגיאה:" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "אזהרה:" + +#: GrampsWebSync/grampswebsync.py:901 +#, fuzzy +#| msgid "Sync mode" +msgid "Sync mode:" +msgstr "מצב סינכרון" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "סנכרון הושלם" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "סנכרון כשל" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "סנכרון Gramps Web %(addon)s API מרשתת %(api)s" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "סנכרון Gramps Web %s" + +#: GrampsWebSync/presentation.py:164 +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"כתובת URL זו משתמשת ב־http, כלומר, הססמה תישלח כמלל גלוי. יש להשתמש בזה " +"לבדיקה מקומית בלבד." + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " @@ -16071,250 +16378,306 @@ msgstr "" "לא ניתן היה להשתמש בצרור־מפתחות המערכת. הגבלת Snap חוסמת את הגישה עד להרצת: " "%s" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." msgstr "לא ניתן היה להשתמש בצרור מפתחות המערכת. תדרש הזנת סיסמה בכל פעם." -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "האימות נכשל. יש לבדוק שם משתמש וססמה." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "הגישה אסורה. יש לבדוק שם משתמש וססמה." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "שירות מרשתת גרמפס לא נמצא. יש לבדוק את כתובת ה־URL." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "יותר מדי בקשות; יש לנסות שוב בעוד כמה שניות." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "אילן מרשתת גרמפס מושבת." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "חיבור כשל. נא לבדוק את ה־URL והחיבור למרשתת." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "תגובת שרת לא תקינה. יש לבדוק את כתובת ה־URL." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "למשתמש אין הרשאות שרת מספיקות לשימוש בסנכרון." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "ייבוא קובץ XML שהורד נכשל." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "לא ניתן לסנכרון שינויים לשרת: עצמים יש היה שונו." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "שגיאה בלתי צפויה בעת החלת שינויים." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." msgstr "אילן־היוחסין הוסגל במהלך סקירת השינויים. לא הוחל דבר. נא להשוות שוב." -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" +"שרת זה מירץ Gramps Web API %(found)s, אבל הסינכרון דורש %(needed)s או חדש " +"יותר. נא לעדכן את השרת." + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "השרת לא הצליח להחיל שינויים: %s" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "שגיאת שרת %s. נא לבדוק חיבור." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "שגיאה בלתי צפויה: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "מאחזר נתונים מרוחקים..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "השוואת מקומי ומרוחק נתונים..." +#: GrampsWebSync/presentation.py:268 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading the remote family tree…" +msgstr "הורדת קובץ מדיה %s" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "בהצלחה הוחלו שינויים למקומי מסד־נתונים." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "להמשיך ללא הצפנת תעבורה?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -"צוינה כתובת URL עם סכמת http. בהמשך, הססמה תישלח כמלל גלוי ברשת. יש להשתמש " -"בכך לבדיקה מקומית בלבד!" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "המשך עם HTTP" +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server." +msgid "Sending the changes to the server…" +msgstr "לא ניתן לסנכרון שינויים לשרת." -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "שימוש ב־HTTPS" +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading media files…" +msgstr "הורדת קובץ מדיה %s" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" -"כלי זה מאפשר לסנכרן את אילן־היוחסין שפתוח כעת עם אילן־יוחסין מרוחק שמוגש על " -"ידי מרשתת גרמפס.\n" -"\n" -"הכלי מניח ששני האילנות נגזרים זה מזה, כלומר אחד מהם נוצר מייצוא Gramps XML " -"(לא GEDCOM!) של האחר.\n" -"\n" -"לאחר סנכרון מוצלח, שני האילנות יהיו זהים. שינויים יופצו על בסיס חותמות זמן. " -"תוצג בקשת אישור לפני ביצוע שינוי כלשהו באילן המקומי או המרוחק.\n" -"\n" -"אם במקום זאת נדרש למזג שני אילנות שונים משמעותית עם אפשרות לבצע שינויים " -"ידניים, יש להשתמש בכלי מיזוג ייבוא." +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Uploading media files…" +msgstr "העלאת קובץ מדיה %s" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "כתובת URL של השרת: " +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "התחברות..." -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "שגיאה:" +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "Applied %s change." +#| msgid_plural "Applied %s changes." +msgid "Apply changes" +msgstr "הוחל שינוי %s." -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" -msgstr "מצב סינכרון" +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Transfer media files" +msgstr "העלאת קובץ מדיה %s" + +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "סנכרון דו־כיווני" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." msgstr "שינויים משני הצדדים שולבו. עצמים שנערכו בשני המקומות מוזגו." -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." msgstr "השרת בנוי כך שהתאמות יתבצעו למחשב זה. כל שינוי שנעשה רק בשרת יושלך." -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." msgstr "מחשב זה בנוי כך שהתאמות יתבצעו לשרת. כל שינוי שנעשה רק כאן יושלך." -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "סנכרון דו־כיווני" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "שיצוב מצב מרוחק למקומי" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "שיצוב מצב מקומי למרוחק" - -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" -msgstr "אזהרה:" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "שינויים מקומיים" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "שינויים מרחוק" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "שינויים בו־זמנית" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "שליפת מידע על קובצי מדיה..." - -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "שני אילנות הם אותו." - -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "החלת שינויים במסד נתונים מקומי ..." +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "אין שינויים להחלה על מסד־הנתונים המקומי." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "החלת שינויים במסד נתונים מרוחק ..." +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "הוספת הערת בדיקה" +msgstr[1] "הוספת הערת בדיקה" +msgstr[2] "הוספת הערת בדיקה" +msgstr[3] "הוספת הערת בדיקה" + +#: GrampsWebSync/presentation.py:594 +#, fuzzy, python-format +#| msgid "Upgrading %s objects..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "משדרג %s עצמים..." +msgstr[1] "משדרג %s עצמים..." +msgstr[2] "משדרג %s עצמים..." +msgstr[3] "משדרג %s עצמים..." + +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Migrating %s objects..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "מבצע הגירה של %s עצמים..." +msgstr[1] "מבצע הגירה של %s עצמים..." +msgstr[2] "מבצע הגירה של %s עצמים..." +msgstr[3] "מבצע הגירה של %s עצמים..." -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "אין שינויים להחלה על מסד־הנתונים המרוחק." +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "חסרים באופן מקומי" +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "חסרים באופן מרוחק" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:636 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "הורדת קובץ מדיה %s" -msgstr[1] "הורדת %s קבצי מדיה" -msgstr[2] "הורדת %s קבצי מדיה" -msgstr[3] "הורדת %s קבצי מדיה" +msgid "%(down)s to download, %(up)s to upload" +msgstr "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "העלאת קובץ מדיה %s" -msgstr[1] "העלאת %s קבצי מדיה" -msgstr[2] "העלאת %s קבצי מדיה" -msgstr[3] "העלאת %s קבצי מדיה" +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "נא לנסות שוב" +#: GrampsWebSync/presentation.py:658 +#, fuzzy, python-format +#| msgid "%s media file is missing on both sides and could not be transferred." +#| msgid_plural "" +#| "%s media files are missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." +msgid_plural "" +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "קובץ מדיה %s חסר בשני הצדדים ולא ניתנים להעברה." +msgstr[1] "%s קבצי מדיה חסרים בשני הצדדים ולא ניתנו להעברה." +msgstr[2] "%s קבצי מדיה חסרים בשני הצדדים ולא ניתנו להעברה." +msgstr[3] "%s קבצי מדיה חסרים בשני הצדדים ולא ניתנו להעברה." -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:681 #, python-format msgid "Applied %s change." msgid_plural "Applied %s changes." @@ -16323,25 +16686,15 @@ msgstr[1] "הוחלו %s שינויים." msgstr[2] "הוחלו %s שינויים." msgstr[3] "הוחלו %s שינויים." -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "קובצי המדיה מסונכרנים." - -#: GrampsWebSync/grampswebsync.py:1011 -#, python-format -msgid "%s media file is missing on both sides and could not be transferred." -msgid_plural "" -"%s media files are missing on both sides and could not be transferred." -msgstr[0] "קובץ מדיה %s חסר בשני הצדדים ולא ניתנים להעברה." -msgstr[1] "%s קבצי מדיה חסרים בשני הצדדים ולא ניתנו להעברה." -msgstr[2] "%s קבצי מדיה חסרים בשני הצדדים ולא ניתנו להעברה." -msgstr[3] "%s קבצי מדיה חסרים בשני הצדדים ולא ניתנו להעברה." - -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "שני אילנות־היוחסין מסונכרים כבר." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "קובצי המדיה מסונכרנים." + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." @@ -16350,7 +16703,7 @@ msgstr[1] "הורדת %s קבצי מדיה צלחה." msgstr[2] "הורדת %s קבצי מדיה צלחה." msgstr[3] "הורדת %s קבצי מדיה צלחה." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." @@ -16359,7 +16712,7 @@ msgstr[1] "אירעו %s שגיאות במהלך ההורדה." msgstr[2] "אירעו %s שגיאות במהלך ההורדה." msgstr[3] "אירעו %s שגיאות במהלך ההורדה." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." @@ -16368,7 +16721,7 @@ msgstr[1] "העלאת %s קבצי מדיה צלחה." msgstr[2] "העלאת %s קבצי מדיה צלחה." msgstr[3] "העלאת %s קבצי מדיה צלחה." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." @@ -16377,6 +16730,60 @@ msgstr[1] "אירעו %s שגיאות במהלך ההעלאה." msgstr[2] "אירעו %s שגיאות במהלך ההעלאה." msgstr[3] "אירעו %s שגיאות במהלך ההעלאה." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "Gram.py Script" @@ -20059,14 +20466,6 @@ msgstr "ייבוא phpGedView" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "שם משתמש:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "ססמה:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -25920,6 +26319,63 @@ msgstr "" " '%s'\n" " בדפדפן המרשתת המועדף..." +#~ msgid "Fetching remote data..." +#~ msgstr "מאחזר נתונים מרוחקים..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "השוואת מקומי ומרוחק נתונים..." + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "בהצלחה הוחלו שינויים למקומי מסד־נתונים." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "להמשיך ללא הצפנת תעבורה?" + +#~ msgid "Continue with HTTP" +#~ msgstr "המשך עם HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "שימוש ב־HTTPS" + +#~ msgid "Reset remote to local" +#~ msgstr "שיצוב מצב מרוחק למקומי" + +#~ msgid "Reset local to remote" +#~ msgstr "שיצוב מצב מקומי למרוחק" + +#~ msgid "Local changes" +#~ msgstr "שינויים מקומיים" + +#~ msgid "Remote changes" +#~ msgstr "שינויים מרחוק" + +#~ msgid "Simultaneous changes" +#~ msgstr "שינויים בו־זמנית" + +#~ msgid "Fetching information about media files..." +#~ msgstr "שליפת מידע על קובצי מדיה..." + +#~ msgid "Both trees are the same." +#~ msgstr "שני אילנות הם אותו." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "החלת שינויים במסד נתונים מקומי ..." + +#~ msgid "No changes to apply to local database." +#~ msgstr "אין שינויים להחלה על מסד־הנתונים המקומי." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "החלת שינויים במסד נתונים מרוחק ..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "אין שינויים להחלה על מסד־הנתונים המרוחק." + +#~ msgid "Missing locally" +#~ msgstr "חסרים באופן מקומי" + +#~ msgid "Missing remotely" +#~ msgstr "חסרים באופן מרוחק" + #~ msgid "Error accessing media object." #~ msgstr "שגיאה גישה מדיה עצם." @@ -25939,9 +26395,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "שגיאת URL בעת חיבור לשרת." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "לא ניתן לסנכרון שינויים לשרת." - #~ msgid "Search" #~ msgstr "חיפוש" diff --git a/po/hr.po b/po/hr.po index 91f697c2c..a1ac1a79d 100644 --- a/po/hr.po +++ b/po/hr.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Gramps 5.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-05-17 15:49+0000\n" "Last-Translator: Milo Ivir \n" "Language-Team: Croatian Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." -msgstr "Autentifikacija nije uspjela. Provjeri svoje korisničko ime i lozinku." +#: GrampsWebApiDb/mintapikeytool.py:141 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL" +msgstr "URL servera: " -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." -msgstr "Pristup zabranjen. Provjeri korisničko ime i lozinku." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." -msgstr "GrampsWeb usluga nije pronađena. Provjeri URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Korisničko ime:" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." -msgstr "Previše zahtjeva, pokušaj ponovo za par sekundi." +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Lozinka:" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." -msgstr "GrampsWeb stablo je deaktivirano." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "Generiraj" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." -msgstr "Povezivanje nije uspjelo. Provjeri URL i internetsku vezu." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." -msgstr "Nevažeći odgovor servera. Provjeri URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Rodoslov za „%s”" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -"Tvoj korisnik nema dovoljne dozvole na serveru za korištenje sinkronizacije." -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." -msgstr "Uvoz preuzete XML datoteke nije uspio." +#: GrampsWebApiDb/mintapikeytool.py:222 +#, fuzzy +#| msgid "Access forbidden. Please check username and password." +msgid "Please fill in the server URL, username, and password." +msgstr "Pristup zabranjen. Provjeri korisničko ime i lozinku." -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Generacija " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, fuzzy, python-format +#| msgid "Authentication failed. Please check your username and password." +msgid "Login failed (HTTP %d): check your username and password." +msgstr "Autentifikacija nije uspjela. Provjeri svoje korisničko ime i lozinku." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -"Nije moguće sinkronizirati promjene sa serverom: objekti su promijenjeni." -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." -msgstr "Neočekivana greška prilikom primjene promjena." +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, fuzzy, python-format +#| msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" +msgstr "Neočekivana greška: %s" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Greška:" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 -#, python-format -msgid "The server could not apply the changes: %s" +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "Server error %s. Please check your connection." -msgstr "Greška servera %s. Provjeri vezu." +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error creating note" +msgid "Error creating Family Tree: %s" +msgstr "Greška pri stvaranju zabilješke" + +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" -msgstr "Neočekivana greška: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "Gramps Web sinkronizacija" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "Sinkronizira lokalnu bazu podataka s Gramps Web instancom." + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Dohvaćanje ne-lokalnih zapisa …" +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Povezivanje …" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Uspoređivanje lokalnih i ne-lokalnih podataka …" +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Promjene na lokalnoj bazi podataka su uspješno primijenjene." +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Nastaviti bez šifriranja prijenosa?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -"Zadan je URL s http shemom. Ako nastaviš, tvoja će se lozinka poslati u " -"nešifriranom obliku putem mreže. Koristi samo za lokalno testiranje!" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Nastavi s HTTP-om" +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Koristi HTTPS" +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "URL servera: " -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Korisničko ime:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Lozinka:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +#, fuzzy +#| msgid "About this utility." +msgid "About this tool" +msgstr "O ovom dodatku." + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16350,151 +16482,367 @@ msgstr "" "Ako umjesto toga želiš spojiti dva znatno različita rodoslova uz mogućnost " "ručnih promjena, koristi alat za uvoz i spajanje." -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "URL servera: " - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "Greška:" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +#, fuzzy +#| msgid "Learning" +msgid "Warning:" +msgstr "Učenje" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +#, fuzzy +#| msgid "Migration completed!" +msgid "Synchronization complete" +msgstr "Migracija završena!" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Generacija " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps Web Sync" +msgid "Gramps Web Sync %s" +msgstr "Gramps Web sinkronizacija" + +#: GrampsWebSync/presentation.py:164 +#, fuzzy +#| msgid "" +#| "You have specified a URL with http scheme. If you continue, your password " +#| "will be sent in clear text over the network. Use only for local testing!" msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" +"Zadan je URL s http shemom. Ako nastaviš, tvoja će se lozinka poslati u " +"nešifriranom obliku putem mreže. Koristi samo za lokalno testiranje!" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Dvosmjerna sinkronizacija" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." +msgstr "Autentifikacija nije uspjela. Provjeri svoje korisničko ime i lozinku." -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Resetiraj ne-lokalne u lokalne podatke" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." +msgstr "Pristup zabranjen. Provjeri korisničko ime i lozinku." -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Resetiraj lokalne u ne-lokalne podatke" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." +msgstr "GrampsWeb usluga nije pronađena. Provjeri URL." -#: GrampsWebSync/grampswebsync.py:712 -#, fuzzy -#| msgid "Learning" -msgid "Warning:" -msgstr "Učenje" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." +msgstr "Previše zahtjeva, pokušaj ponovo za par sekundi." -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Lokalne promjene" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "GrampsWeb stablo je deaktivirano." -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Ne-lokalne promjene" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "Povezivanje nije uspjelo. Provjeri URL i internetsku vezu." -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Istovremene promjene" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "Nevažeći odgovor servera. Provjeri URL." -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Dohvaćanje podataka o medijskim datotekama …" +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" +"Tvoj korisnik nema dovoljne dozvole na serveru za korištenje sinkronizacije." -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Oba rodoslova su jednaka." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "Uvoz preuzete XML datoteke nije uspio." -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Primjena promjena na lokalnu bazu podataka …" +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" +"Nije moguće sinkronizirati promjene sa serverom: objekti su promijenjeni." -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Nema primijenjivih promjena na lokalnu bazu podataka." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "Neočekivana greška prilikom primjene promjena." -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Primjena promjena na ne-lokalnu bazu podataka …" +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Nema promjena za ne-lokalnu bazu podataka." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Nedostaje lokalno" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Nedostaje ne-lokalno" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" -#: GrampsWebSync/grampswebsync.py:905 -#, fuzzy, python-format +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "Greška servera %s. Provjeri vezu." + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "Neočekivana greška: %s" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +#, fuzzy #| msgid "Downloading %s media file" #| msgid_plural "Downloading %s media files" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Preuzima se %s medijska datoteka" -msgstr[1] "Preuzima se %s medijska datoteka" -msgstr[2] "Preuzima se %s medijska datoteka" +msgid "Downloading the remote family tree…" +msgstr "Preuzima se %s medijska datoteka" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server." +msgid "Sending the changes to the server…" +msgstr "Nije moguće sinkronizirati promjene sa serverom." + +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading media files…" +msgstr "Preuzima se %s medijska datoteka" + +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Uploading media files…" +msgstr "Prenosi se %s medijska datoteka" + +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Povezivanje …" + +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "Bez promjena" + +#: GrampsWebSync/presentation.py:296 +#, fuzzy #| msgid "Uploading %s media file" #| msgid_plural "Uploading %s media files" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Prenosi se %s medijska datoteka" -msgstr[1] "Prenosi se %s medijska datoteka" -msgstr[2] "Prenosi se %s medijska datoteka" +msgid "Transfer media files" +msgstr "Prenosi se %s medijska datoteka" + +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "Dvosmjerna sinkronizacija" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" msgstr "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Medijske datoteke su sinkronizirane." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Dodaj testnu zabilješku" +msgstr[1] "Dodaj testnu zabilješku" +msgstr[2] "Dodaj testnu zabilješku" + +#: GrampsWebSync/presentation.py:594 +#, fuzzy, python-format +#| msgid "Upgrading %s objects..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Nadograđuju se %s objekta …" +msgstr[1] "Nadograđuju se %s objekta …" +msgstr[2] "Nadograđuju se %s objekta …" + +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Migrating %s objects..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Migriraju se %s objekta …" +msgstr[1] "Migriraju se %s objekta …" +msgstr[2] "Migriraju se %s objekta …" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" +msgstr "" + +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 #, fuzzy #| msgid "Both trees are the same." msgid "Both trees are already in sync." msgstr "Oba rodoslova su jednaka." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Medijske datoteke su sinkronizirane." + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Successfully downloaded %s media file." #| msgid_plural "Successfully downloaded %s media files." @@ -16504,7 +16852,7 @@ msgstr[0] "Broj uspješno preuzetih medijskih datoteka: %s." msgstr[1] "Broj uspješno preuzetih medijskih datoteka: %s." msgstr[2] "Broj uspješno preuzetih medijskih datoteka: %s." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, fuzzy, python-format #| msgid "Encountered %s error during download." #| msgid_plural "Encountered %s errors during download." @@ -16514,7 +16862,7 @@ msgstr[0] "Tijekom preuzimanja se dogodila %s greška." msgstr[1] "Tijekom preuzimanja se dogodila %s greška." msgstr[2] "Tijekom preuzimanja se dogodila %s greška." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Successfully uploaded %s media file." #| msgid_plural "Successfully uploaded %s media files." @@ -16524,7 +16872,7 @@ msgstr[0] "Uspješno je prenesena %s medijska datoteka." msgstr[1] "Uspješno je prenesena %s medijska datoteka." msgstr[2] "Uspješno je prenesena %s medijska datoteka." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, fuzzy, python-format #| msgid "Encountered %s error during upload." #| msgid_plural "Encountered %s errors during upload." @@ -16534,6 +16882,57 @@ msgstr[0] "Tijekom prijenosa se dogodila %s greška." msgstr[1] "Tijekom prijenosa se dogodila %s greška." msgstr[2] "Tijekom prijenosa se dogodila %s greška." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -20380,14 +20779,6 @@ msgstr "phpGedView uvoz" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Korisničko ime:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Lozinka:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26369,6 +26760,63 @@ msgstr "" " „%s”\n" "u tvom omiljenom web pregledniku …" +#~ msgid "Fetching remote data..." +#~ msgstr "Dohvaćanje ne-lokalnih zapisa …" + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Uspoređivanje lokalnih i ne-lokalnih podataka …" + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Promjene na lokalnoj bazi podataka su uspješno primijenjene." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Nastaviti bez šifriranja prijenosa?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Nastavi s HTTP-om" + +#~ msgid "Use HTTPS" +#~ msgstr "Koristi HTTPS" + +#~ msgid "Reset remote to local" +#~ msgstr "Resetiraj ne-lokalne u lokalne podatke" + +#~ msgid "Reset local to remote" +#~ msgstr "Resetiraj lokalne u ne-lokalne podatke" + +#~ msgid "Local changes" +#~ msgstr "Lokalne promjene" + +#~ msgid "Remote changes" +#~ msgstr "Ne-lokalne promjene" + +#~ msgid "Simultaneous changes" +#~ msgstr "Istovremene promjene" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Dohvaćanje podataka o medijskim datotekama …" + +#~ msgid "Both trees are the same." +#~ msgstr "Oba rodoslova su jednaka." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Primjena promjena na lokalnu bazu podataka …" + +#~ msgid "No changes to apply to local database." +#~ msgstr "Nema primijenjivih promjena na lokalnu bazu podataka." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Primjena promjena na ne-lokalnu bazu podataka …" + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Nema promjena za ne-lokalnu bazu podataka." + +#~ msgid "Missing locally" +#~ msgstr "Nedostaje lokalno" + +#~ msgid "Missing remotely" +#~ msgstr "Nedostaje ne-lokalno" + #~ msgid "Error accessing media object." #~ msgstr "Greška pri pristupu medijskom objektu." @@ -26388,9 +26836,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "URL greška tijekom povezivanja na server." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Nije moguće sinkronizirati promjene sa serverom." - #~ msgid "Search" #~ msgstr "Traži" diff --git a/po/hu.po b/po/hu.po index 94d238e94..7e44d3996 100644 --- a/po/hu.po +++ b/po/hu.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: hu\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-06-05 13:54+0000\n" "Last-Translator: Milan \n" "Language-Team: Hungarian Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "General Data" +msgid "Generate API Key" +msgstr "Általános adatok" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Generációk " + +#: GrampsWebApiDb/mintapikeytool.py:260 #, python-format -msgid "The server could not apply the changes: %s" +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:263 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:271 #, python-format -msgid "Unexpected error: %s" +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -#, fuzzy +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format #| msgid "Exporting family tree data ..." -msgid "Fetching remote data..." +msgid "Error creating Family Tree: %s" msgstr "Családfa-adatainak exportálása ..." -#: GrampsWebSync/grampswebsync.py:344 +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 #, fuzzy -#| msgid "Exporting family tree data ..." -msgid "Comparing local and remote data..." -msgstr "Családfa-adatainak exportálása ..." +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Kapcsolódás..." -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Web site title" +msgid "Server URL:" +msgstr "Web-oldal cím" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16425,158 +16540,377 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Generációk " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." +msgstr "" + +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Kapcsolódás..." + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -20344,14 +20678,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" @@ -26166,6 +26492,16 @@ msgid "" " into your preferred web navigator ..." msgstr "" +#, fuzzy +#~| msgid "Exporting family tree data ..." +#~ msgid "Fetching remote data..." +#~ msgstr "Családfa-adatainak exportálása ..." + +#, fuzzy +#~| msgid "Exporting family tree data ..." +#~ msgid "Comparing local and remote data..." +#~ msgstr "Családfa-adatainak exportálása ..." + #~ msgid "Search" #~ msgstr "Keresés" diff --git a/po/is.po b/po/is.po index 59b2bc9bf..9d57b1f03 100644 --- a/po/is.po +++ b/po/is.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-04-30 20:09+0000\n" "Last-Translator: Sveinn í Felli \n" "Language-Team: Icelandic Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15815,166 +15925,393 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." +msgstr "" + +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" + +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "" + +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Breytingar á staðnum" +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "" + +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" + +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Fjartengdar breytingar" +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "Engar breytingar" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19520,14 +19857,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" @@ -25049,6 +25378,12 @@ msgid "" " into your preferred web navigator ..." msgstr "" +#~ msgid "Local changes" +#~ msgstr "Breytingar á staðnum" + +#~ msgid "Remote changes" +#~ msgstr "Fjartengdar breytingar" + #~ msgid "Different" #~ msgstr "Mismunandi" diff --git a/po/it.po b/po/it.po index d67ef33ad..d0242ba61 100644 --- a/po/it.po +++ b/po/it.po @@ -67,7 +67,7 @@ msgid "" msgstr "" "Project-Id-Version: gramps 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-07-31 16:24+0000\n" "Last-Translator: medardo \n" "Language-Team: Italian Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:141 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL" +msgstr "URL del server: " + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Rename" +msgid "Username" +msgstr "Rinomina" + +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "Genera" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Albero genealogico per %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:222 +#, fuzzy +#| msgid "Access forbidden. Please check username and password." +msgid "Please fill in the server URL, username, and password." +msgstr "Accesso negato. Verifica nome utente e password." + +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Generazione " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, fuzzy, python-format +#| msgid "Authentication failed. Please check your username and password." +msgid "Login failed (HTTP %d): check your username and password." +msgstr "Autenticazione non riuscita. Verifica nome utente e password." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, fuzzy, python-format +#| msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" +msgstr "Errore inaspettato: %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Errore:" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error creating note" +msgid "Error creating Family Tree: %s" +msgstr "Errore nella creazione della nota" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" msgstr "Sincronizzazione Web di Gramps" @@ -16264,273 +16439,433 @@ msgstr "Sincronizzazione Web di Gramps" msgid "Synchronizes a local database with a Gramps Web instance." msgstr "Sincronizza un database locale con un'istanza web di Gramps." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Connessione..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "URL del server: " + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "Errore:" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +#, fuzzy +#| msgid "Migration completed!" +msgid "Synchronization complete" +msgstr "Migrazione completata!" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation failed" +msgid "Synchronization failed" +msgstr "Generazione non riuscita" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps Web Sync" +msgid "Gramps Web Sync %s" +msgstr "Sincronizzazione Web di Gramps" + +#: GrampsWebSync/presentation.py:164 +#, fuzzy +#| msgid "" +#| "You have specified a URL with http scheme. If you continue, your password " +#| "will be sent in clear text over the network. Use only for local testing!" +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"Hai specificato un URL con uno schema http. Se continui, la tua password " +"verrà inviata come testo in chiaro sulla rete. Da usare solo per test locali!" + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " "you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "Autenticazione non riuscita. Verifica nome utente e password." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "Accesso negato. Verifica nome utente e password." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "Servizio GrampsWeb non trovato. Controlla l'URL." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "Troppe richieste, prova di nuovo tra qualche secondo." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "L'albero GrampsWeb è disabilitato." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "Connessione non riuscita. Controlla l'URL e la connessione Internet." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "Risposta del server non valida. Controlla l'URL." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "" "L'utente non dispone delle autorizzazioni necessarie sul server per " "utilizzare la sincronizzazione." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "Impossibile importare il file XML scaricato." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" "Impossibile sincronizzare le modifiche al server: gli oggetti sono stati " "modificati." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "Errore inatteso nell'applicazione delle modifiche." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "Errore del server %s. Controlla la connessione." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "Errore inaspettato: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Recupero dei dati remoti..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Confronto tra dati locali e remoti..." +#: GrampsWebSync/presentation.py:268 +#, fuzzy +#| msgid "Downloading %s media file(s)" +msgid "Downloading the remote family tree…" +msgstr "Scaricamento di %s file multimediali" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Le modifiche al database locale sono state applicate con successo." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Vuoi continuare senza crittografia del traffico?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -"Hai specificato un URL con uno schema http. Se continui, la tua password " -"verrà inviata come testo in chiaro sulla rete. Da usare solo per test locali!" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Continua con HTTP" +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server." +msgid "Sending the changes to the server…" +msgstr "Impossibile sincronizzare le modifiche al server." -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Usa HTTPS" +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Downloading %s media file(s)" +msgid "Downloading media files…" +msgstr "Scaricamento di %s file multimediali" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Uploading %s media file(s)" +msgid "Uploading media files…" +msgstr "Caricamento di %s file multimediali" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "URL del server: " +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Connessione..." -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "Errore:" +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "Local changes" +msgid "Apply changes" +msgstr "Modifiche locali" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Uploading %s media file(s)" +msgid "Transfer media files" +msgstr "Caricamento di %s file multimediali" + +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "Sincronizzazione bidirezionale" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Sincronizzazione bidirezionale" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Reimposta da remoto a locale" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Reimposta da locale a remoto" - -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" -msgstr "" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Modifiche locali" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Modifiche remote" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Modifiche simultanee" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Recupero delle informazioni sui file multimediali..." - -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Entrambi gli alberi sono lo stesso." - -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Applicazione delle modifiche al database locale..." +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Nessuna modifica da applicare al database locale." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Applicazione delle modifiche al database remoto..." +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Aggiunge nota di testo" +msgstr[1] "Aggiunge nota di testo" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Nessuna modifica da applicare al database remoto." +#: GrampsWebSync/presentation.py:594 +#, fuzzy, python-format +#| msgid "Upgrading %s objects..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Aggiornamento di %s oggetti..." +msgstr[1] "Aggiornamento di %s oggetti..." -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Mancante in locale" +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Migrating %s objects..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Migrazione di %s oggetti..." +msgstr[1] "Migrazione di %s oggetti..." -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Mancante in remoto" +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:905 -#, fuzzy, python-format -#| msgid "Downloading %s media file(s)" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Scaricamento di %s file multimediali" -msgstr[1] "Scaricamento di %s file multimediali" +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format -#| msgid "Uploading %s media file(s)" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Caricamento di %s file multimediali" -msgstr[1] "Caricamento di %s file multimediali" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "I file multimediali sono sincronizzati." - -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:684 #, fuzzy #| msgid "Both trees are the same." msgid "Both trees are already in sync." msgstr "Entrambi gli alberi sono lo stesso." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "I file multimediali sono sincronizzati." + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Successfully downloaded %s media files." msgid "Successfully downloaded %s media file." @@ -16538,7 +16873,7 @@ msgid_plural "Successfully downloaded %s media files." msgstr[0] "Scaricati con successo %s file multimediali." msgstr[1] "Scaricati con successo %s file multimediali." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, fuzzy, python-format #| msgid "Encountered %s errors during download." msgid "Encountered %s error during download." @@ -16546,7 +16881,7 @@ msgid_plural "Encountered %s errors during download." msgstr[0] "Si sono verificati %s errori durante lo scaricamento." msgstr[1] "Si sono verificati %s errori durante lo scaricamento." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Successfully uploaded %s media files." msgid "Successfully uploaded %s media file." @@ -16554,7 +16889,7 @@ msgid_plural "Successfully uploaded %s media files." msgstr[0] "Caricati con successo %s file multimediali." msgstr[1] "Caricati con successo %s file multimediali." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, fuzzy, python-format #| msgid "Encountered %s errors during upload." msgid "Encountered %s error during upload." @@ -16562,6 +16897,54 @@ msgid_plural "Encountered %s errors during upload." msgstr[0] "Si sono verificati %s errori durante il caricamento." msgstr[1] "Si sono verificati %s errori durante il caricamento." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "Script Gram.py" @@ -20314,14 +20697,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" @@ -26102,6 +26477,60 @@ msgstr "" " \"%s\"\n" " nel tuo navigatore web preferito ..." +#~ msgid "Fetching remote data..." +#~ msgstr "Recupero dei dati remoti..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Confronto tra dati locali e remoti..." + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Le modifiche al database locale sono state applicate con successo." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Vuoi continuare senza crittografia del traffico?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Continua con HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "Usa HTTPS" + +#~ msgid "Reset remote to local" +#~ msgstr "Reimposta da remoto a locale" + +#~ msgid "Reset local to remote" +#~ msgstr "Reimposta da locale a remoto" + +#~ msgid "Remote changes" +#~ msgstr "Modifiche remote" + +#~ msgid "Simultaneous changes" +#~ msgstr "Modifiche simultanee" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Recupero delle informazioni sui file multimediali..." + +#~ msgid "Both trees are the same." +#~ msgstr "Entrambi gli alberi sono lo stesso." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Applicazione delle modifiche al database locale..." + +#~ msgid "No changes to apply to local database." +#~ msgstr "Nessuna modifica da applicare al database locale." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Applicazione delle modifiche al database remoto..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Nessuna modifica da applicare al database remoto." + +#~ msgid "Missing locally" +#~ msgstr "Mancante in locale" + +#~ msgid "Missing remotely" +#~ msgstr "Mancante in remoto" + #~ msgid "Error accessing media object." #~ msgstr "Errore nell'accesso a oggetti multimediali." @@ -26121,9 +26550,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "Errore URL durante la connessione al server." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Impossibile sincronizzare le modifiche al server." - #~ msgid "Search" #~ msgstr "Ricerca" diff --git a/po/ja.po b/po/ja.po index fcde8452d..74e392e96 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Gramps 3.3.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2025-03-24 10:31+0000\n" "Last-Translator: coolz daddy \n" "Language-Team: Japanese Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "researcher name" +msgid "Username" +msgstr "リサーチャー名" + +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "生成" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "世代 " + +#: GrampsWebApiDb/mintapikeytool.py:260 #, python-format -msgid "The server could not apply the changes: %s" +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:263 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:274 #, fuzzy, python-format #| msgid "GetGOV error: %s" -msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" msgstr "GetGOV エラー : %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Errors" +msgid "Error: %s" +msgstr "エラー" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error when writing the report: %s" +msgid "Error creating Family Tree: %s" +msgstr "レポートの書き込み中エラー : %s" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Web site title" +msgid "Server URL:" +msgstr "ウェブサイトのタイトル" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16129,167 +16249,402 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "世代 " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, fuzzy, python-format +#| msgid "GetGOV error: %s" +msgid "Unexpected error: %s" +msgstr "GetGOV エラー : %s" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +#, fuzzy +#| msgid "Export results to a text file" +msgid "Downloading the remote family tree…" +msgstr "結果をテキストファイルにエクスポートする" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Export results to a text file" +msgid "Downloading media files…" +msgstr "結果をテキストファイルにエクスポートする" + +#: GrampsWebSync/presentation.py:285 +#, fuzzy #| msgid "Export results to a text file" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "結果をテキストファイルにエクスポートする" -msgstr[1] "結果をテキストファイルにエクスポートする" +msgid "Uploading media files…" +msgstr "結果をテキストファイルにエクスポートする" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Export results to a text file" +msgid "Transfer media files" +msgstr "結果をテキストファイルにエクスポートする" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:593 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Add %s object" +msgid_plural "Add %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:594 +#, python-format +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19930,14 +20285,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/ka.po b/po/ka.po index 319f30d62..e3927cfe2 100644 --- a/po/ka.po +++ b/po/ka.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2025-09-13 09:49+0000\n" "Last-Translator: Temuri Doghonadze \n" "Language-Team: Georgian Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15807,166 +15917,391 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19510,14 +19845,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/ln.po b/po/ln.po index 67024968c..c316cd52e 100644 --- a/po/ln.po +++ b/po/ln.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -2061,7 +2061,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15669,124 +15671,232 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15802,166 +15912,391 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19504,14 +19839,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/lt.po b/po/lt.po index f6c6a937a..88c19eca3 100644 --- a/po/lt.po +++ b/po/lt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: lt\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-01-04 20:01+0000\n" "Last-Translator: openSUSE Lietuviškai \n" "Language-Team: Lithuanian Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Naudotojas:" + +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Slaptažodis:" + +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +msgid "Generate API Key" +msgstr "Paprastas" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Karta " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Klaida:" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 -#, python-format -msgid "The server could not apply the changes: %s" +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "Server error %s. Please check your connection." +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error creating note" +msgid "Error creating Family Tree: %s" +msgstr "Klaida sukuriant pastabą" + +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Prisijungiama..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Pakeitimai sėkmingai pritaikyti vietinėje duombazėje." +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Tęsti su HTTP" +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Naudoti HTTPS" +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Naudotojas:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Slaptažodis:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16065,147 +16186,345 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "Klaida:" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Karta " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Abipusis sinchronizavimas" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." +msgstr "" + +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." +msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Nuotoliniai pakeitimai" +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Abu medžiai yra vienodi." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Taikomi pakeitimai vietinėje duombazėje..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Nėra pakeitimų, kuriuos būtų galima taikyti vietinei duombazei." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Taikomi pakeitimai nuotolinėje duombazėje..." +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Nėra pakeitimų, kuriuos būtų galima taikyti nuotolinei duombazei." +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:905 -#, fuzzy, python-format +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +#, fuzzy #| msgid "Downloading files" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Siunčiamos rinkmenos" -msgstr[1] "Siunčiamos rinkmenos" -msgstr[2] "Siunčiamos rinkmenos" +msgid "Downloading the remote family tree…" +msgstr "Siunčiamos rinkmenos" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +#, fuzzy #| msgid "Downloading files" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Siunčiamos rinkmenos" -msgstr[1] "Siunčiamos rinkmenos" -msgstr[2] "Siunčiamos rinkmenos" +msgid "Downloading media files…" +msgstr "Siunčiamos rinkmenos" + +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Downloading files" +msgid "Uploading media files…" +msgstr "Siunčiamos rinkmenos" + +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Prisijungiama..." + +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "Nėra pakeitimų" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Downloading files" +msgid "Transfer media files" +msgstr "Siunčiamos rinkmenos" + +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "Abipusis sinchronizavimas" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:594 +#, python-format +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 #, fuzzy #| msgid "Both trees are the same." msgid "Both trees are already in sync." msgstr "Abu medžiai yra vienodi." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Downloading files" msgid "Successfully downloaded %s media file." @@ -16214,7 +16533,7 @@ msgstr[0] "Siunčiamos rinkmenos" msgstr[1] "Siunčiamos rinkmenos" msgstr[2] "Siunčiamos rinkmenos" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." @@ -16222,7 +16541,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Downloading files" msgid "Successfully uploaded %s media file." @@ -16231,7 +16550,7 @@ msgstr[0] "Siunčiamos rinkmenos" msgstr[1] "Siunčiamos rinkmenos" msgstr[2] "Siunčiamos rinkmenos" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." @@ -16239,6 +16558,57 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19924,14 +20294,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Naudotojas:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Slaptažodis:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" @@ -25607,6 +25969,33 @@ msgid "" " into your preferred web navigator ..." msgstr "" +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Pakeitimai sėkmingai pritaikyti vietinėje duombazėje." + +#~ msgid "Continue with HTTP" +#~ msgstr "Tęsti su HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "Naudoti HTTPS" + +#~ msgid "Remote changes" +#~ msgstr "Nuotoliniai pakeitimai" + +#~ msgid "Both trees are the same." +#~ msgstr "Abu medžiai yra vienodi." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Taikomi pakeitimai vietinėje duombazėje..." + +#~ msgid "No changes to apply to local database." +#~ msgstr "Nėra pakeitimų, kuriuos būtų galima taikyti vietinei duombazei." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Taikomi pakeitimai nuotolinėje duombazėje..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Nėra pakeitimų, kuriuos būtų galima taikyti nuotolinei duombazei." + #~ msgid "Search" #~ msgstr "Paieška" diff --git a/po/lv.po b/po/lv.po index 03c9416b9..d91909bec 100644 --- a/po/lv.po +++ b/po/lv.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -2062,7 +2062,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15670,124 +15672,232 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15803,143 +15913,327 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" + +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:256 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." @@ -15947,7 +16241,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." @@ -15955,7 +16249,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." @@ -15963,7 +16257,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." @@ -15971,6 +16265,57 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19514,14 +19859,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/mn.po b/po/mn.po index 54dbae915..bb62dd9b9 100644 --- a/po/mn.po +++ b/po/mn.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-04-07 13:46+0000\n" "Last-Translator: \"Batsaihan P.\" \n" "Language-Team: Mongolian Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Үе " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15816,166 +15928,393 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Үе " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:258 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19528,14 +19867,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/nb.po b/po/nb.po index 27adc8e1d..65e1ae8c9 100644 --- a/po/nb.po +++ b/po/nb.po @@ -10,13 +10,14 @@ # Harald H. , 2017. # Harald Herreros , 2025, 2026. # Harald Herreros , 2026. +# Frode Jemtland , 2026. msgid "" msgstr "" "Project-Id-Version: nb\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" -"PO-Revision-Date: 2026-06-01 12:35+0000\n" -"Last-Translator: Harald Herreros \n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" +"PO-Revision-Date: 2026-08-13 17:19+0000\n" +"Last-Translator: Frode Jemtland \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" @@ -24,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.6\n" +"X-Generator: Weblate 2026.9.dev0\n" "Generated-By: pygettext.py 1.4\n" msgid "Birthdays" @@ -34,26 +35,22 @@ msgid "Ignore birthdays with tag" msgstr "Ignorer bursdager med merke" msgid "Month and day" -msgstr "" +msgstr "Måned og dag" msgid "Only show birthdays with tag" msgstr "Vis kun bursdager med merke" msgid "Proximity to current date" -msgstr "" +msgstr "Avstand til dagens dato" -#, fuzzy -#| msgid "Ignore birthdays with tag" msgid "Sort birthdays by" -msgstr "Ignorer bursdager med merke" +msgstr "Sorter bursdager etter" msgid "Sort dates of death by" -msgstr "" +msgstr "Sorter dødsdato etter" -#, fuzzy -#| msgid "a gramplet that displays the birthdays of the living people" msgid "a gramplet that displays death dates in sorted order" -msgstr "en gramplet som viser bursdager for levende personer" +msgstr "en gramplet som viser dødsdato i sortert rekkefølge" msgid "a gramplet that displays the birthdays of the living people" msgstr "en gramplet som viser bursdager for levende personer" @@ -259,17 +256,12 @@ msgid "The style used for the marriage." msgstr "Stilen som brukes for ekteskapet." #: AncestryTableReport/AncestryTableReport.py:593 -#, fuzzy -#| msgid "" -#| "The style used for an empty row.\n" -#| "To enlarge the height of the empty row, just increase the size of the " -#| "font." msgid "" "The style used for an empty row.\n" "To enlarge the height of the empty row, just increse the size of the police." msgstr "" "Stilen som brukes for en tom rad.\n" -"Øk skriftstørrelsen for å gjøre den tomme raden høyere." +"For å øk høyden på den tomme raden, øk tekststørrelsen." #: AncestryTableReport/AncestryTableReport.py:632 msgid "" @@ -291,7 +283,7 @@ msgstr "" #: AnniversariesGramplet/AnniversariesGramplet.gpr.py:24 #: AnniversariesGramplet/AnniversariesGramplet.gpr.py:32 msgid "Anniversaries" -msgstr "" +msgstr "Årsdag" #: AnniversariesGramplet/AnniversariesGramplet.gpr.py:25 msgid "A gramplet that displays the anniversaries of events" @@ -319,7 +311,7 @@ msgstr "Arkivhjelp" #: AssociationsTool/associationstool.gpr.py:36 msgid "Check Associations data" -msgstr "" +msgstr "Kontrollere relasjonsdata" #: AssociationsTool/associationstool.gpr.py:37 msgid "Will check the data on Association for people." @@ -1101,7 +1093,7 @@ msgstr "" #: ChangeGivenNames/ChangeGivenNames.py:66 msgid "manual|Fix_Capitalization_of_Given_Names..." -msgstr "manual|Fix_Capitalization_of_Given_Names..." +msgstr "manual|Fiks_versaler_i_fornavn..." #: ChangeGivenNames/ChangeGivenNames.py:105 msgid "Checking Given Names" @@ -2175,7 +2167,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -2289,7 +2283,7 @@ msgstr "Feil: Ingen startperson er valgt" #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:341 msgid "No Active Person set." -msgstr "Ingen aktiv person valgt." +msgstr "Ingen aktiv person satt." #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:342 msgid "Error: No Active Person set" @@ -4140,7 +4134,7 @@ msgstr "" #: DynamicWeb/dynamicweb.py:2960 msgid "Configure" -msgstr "" +msgstr "Konfigurere" #: DynamicWeb/dynamicweb.py:2967 msgid "DynamicWeb_report#Help" @@ -9718,10 +9712,8 @@ msgid "Total Area in Statute Acres" msgstr "" #: Form/form_ie.xml.h:2 -#, fuzzy -#| msgid "RELATIONSHIP to Head of Household" msgid "Signature of Head of Household" -msgstr "Slektskap til husholdets hovedperson" +msgstr "Signaturen til husholdningsansvarlige" #: Form/form_ie.xml.h:3 msgid "Signature of Enumerator" @@ -9756,10 +9748,8 @@ msgid "Name and Surname" msgstr "" #: Form/form_ie.xml.h:18 -#, fuzzy -#| msgid "9. Relationship to head of family or household" msgid "Relationship to Head of Household" -msgstr "9. Slektskap til hovedperson i familien eller husholdet" +msgstr "Slektskap til husholdningsansvarlige" #: Form/form_ie.xml.h:19 msgid "Year Age" @@ -9792,10 +9782,8 @@ msgid "Years married in present Marriage" msgstr "" #: Form/form_ie.xml.h:34 -#, fuzzy -#| msgid "Date Married" msgid "Months Married" -msgstr "Vielsesdato" +msgstr "Månder gift" #: Form/form_ie.xml.h:35 msgid "Months married in present Marriage" @@ -9825,7 +9813,7 @@ msgstr "" #, fuzzy #| msgid "Ecclesiastical Parish or District" msgid "Registrar's District" -msgstr "Kirkesogn eller distrikt" +msgstr "Registrarområdet" #: Form/form_ie.xml.h:43 Form/form_ie.xml.h:105 msgid "Union" @@ -9847,7 +9835,7 @@ msgstr "" #, fuzzy #| msgid "Place of Birth" msgid "(2.) Date and Place of Birth" -msgstr "Fødested" +msgstr "(2.) Fødselsdato og -sted" #: Form/form_ie.xml.h:54 msgid "(4.) M or F for male or female" @@ -9879,33 +9867,27 @@ msgstr "" #: Form/form_ie.xml.h:71 msgid "Year" -msgstr "" +msgstr "År" #: Form/form_ie.xml.h:72 msgid "Solemnized at the Catholic" msgstr "" #: Form/form_ie.xml.h:76 Form/form_ie.xml.h:107 -#, fuzzy -#| msgid "Total number" msgid "Certificate number" -msgstr "Totalt antall" +msgstr "Sertifikatnummer" #: Form/form_ie.xml.h:77 Form/form_ie.xml.h:108 -#, fuzzy -#| msgid "Show page numbers" msgid "Page number" -msgstr "Vis sidetall" +msgstr "Sidetall" #: Form/form_ie.xml.h:78 Form/form_ie.xml.h:109 msgid "(1.) Entry No." msgstr "" #: Form/form_ie.xml.h:79 -#, fuzzy -#| msgid "Date Married" msgid "(2.) When Married" -msgstr "Vielsesdato" +msgstr "(2.) Vielsesdato" #: Form/form_ie.xml.h:81 msgid "(3.) Name and Surname" @@ -9964,10 +9946,8 @@ msgid "(5.) Widowed or Married" msgstr "" #: Form/form_ie.xml.h:123 -#, fuzzy -#| msgid "6. Age at Next Birthday" msgid "(6.) Age last Birthday" -msgstr "6. Alder ved neste bursdag" +msgstr "(6.) Alder ved sist bursdag" #: Form/form_ie.xml.h:125 msgid "(7.) Rank, Profession, or Occupation" @@ -9978,16 +9958,12 @@ msgid "(8.) Certified Cause of Death and Duration of Illness" msgstr "" #: Form/form_ie.xml.h:128 -#, fuzzy -#| msgid "Direction of time" msgid "Duration of Illness" -msgstr "Tidsretning" +msgstr "Sykdomsvarighet" #: Form/form_ie.xml.h:132 -#, fuzzy -#| msgid "Relation to Head" msgid "Relation to deceased" -msgstr "Relasjon til hovedperson" +msgstr "Relasjon til avdød" #: Form/form_ie.xml.h:133 msgid "(9.) e.g. Son, Daughter" @@ -15120,10 +15096,8 @@ msgid "Select Form" msgstr "Velg skjema" #: GOQLFilter/goql.gpr.py:31 -#, fuzzy -#| msgid "Relationship to Father" msgid "Person GOQL Filter" -msgstr "Slektskap til far" +msgstr "GOQL personfilter" #: GOQLFilter/goql.gpr.py:32 msgid "Gramplet providing a gramps-object-query-language person filter" @@ -15134,14 +15108,12 @@ msgstr "" #: GOQLFilter/goql.gpr.py:117 GOQLFilter/goql.gpr.py:136 #: GOQLFilter/goql.gpr.py:155 GOQLFilter/goql.gpr.py:174 #: GOQLFilter/goql.gpr.py:193 -#, fuzzy -#| msgid "Filtering" msgid "GOQL Filter" -msgstr "Filterer" +msgstr "GOQL filter" #: GOQLFilter/goql.gpr.py:50 msgid "Family GOQL Filter" -msgstr "" +msgstr "GOQL familiefilter" #: GOQLFilter/goql.gpr.py:51 msgid "Gramplet providing a gramps-object-query-language family filter" @@ -15149,59 +15121,47 @@ msgstr "" #: GOQLFilter/goql.gpr.py:69 msgid "Event GOQL Filter" -msgstr "" +msgstr "GOQL hendelsesfilter" #: GOQLFilter/goql.gpr.py:70 msgid "Gramplet providing a gramps-object-query-language event filter" msgstr "" #: GOQLFilter/goql.gpr.py:88 -#, fuzzy -#| msgid "Place _filter:" msgid "Place GOQL Filter" -msgstr "Steds_filter:" +msgstr "GOQL stedsfilter" #: GOQLFilter/goql.gpr.py:89 msgid "Gramplet providing a gramps-object-query-language place filter" msgstr "" #: GOQLFilter/goql.gpr.py:107 -#, fuzzy -#| msgid "Repository title" msgid "Repository GOQL Filter" -msgstr "Arkivtittel" +msgstr "GOQL arkivfilter" #: GOQLFilter/goql.gpr.py:109 msgid "Gramplet providing a gramps-object-query-language repository filter" msgstr "" #: GOQLFilter/goql.gpr.py:128 -#, fuzzy -#| msgid "Source type" msgid "Source GOQL Filter" -msgstr "Kildetype" +msgstr "GOQL kildefilter" #: GOQLFilter/goql.gpr.py:129 msgid "Gramplet providing a gramps-object-query-language source filter" msgstr "" #: GOQLFilter/goql.gpr.py:147 -#, fuzzy -#| msgid "Relationship to Father" msgid "Citation GOQL Filter" -msgstr "Slektskap til far" +msgstr "GOQL sitatfilter" #: GOQLFilter/goql.gpr.py:148 -#, fuzzy -#| msgid "Gramplet showing relatives in a relation" msgid "Gramplet providing a gramps-object-query-language citation filter" -msgstr "Gramplet som viser beslektede slektninger" +msgstr "Gramplet som gir gramps-object-query-language sitatfilter" #: GOQLFilter/goql.gpr.py:166 -#, fuzzy -#| msgid "Media Object Title" msgid "Media GOQL Filter" -msgstr "Tittel for medieopbjekt" +msgstr "GOQL mediafilter" #: GOQLFilter/goql.gpr.py:167 msgid "Gramplet providing a gramps-object-query-language media filter" @@ -15209,7 +15169,7 @@ msgstr "" #: GOQLFilter/goql.gpr.py:185 msgid "Note GOQL Filter" -msgstr "" +msgstr "GOQL notatfilter" #: GOQLFilter/goql.gpr.py:186 msgid "Gramplet providing a gramps-object-query-language note filter" @@ -15232,10 +15192,9 @@ msgid "Tab always completes -- it never inserts a tab character." msgstr "" #: GOQLFilter/goql.py:213 -#, fuzzy, python-format -#| msgid "Use filter " +#, python-format msgid "%s filter" -msgstr "Bruk filter " +msgstr "%s filter" #: GOQLFilter/goql.py:233 msgid "This resets the filter parameters to empty state." @@ -15254,10 +15213,8 @@ msgid "SQL" msgstr "" #: GOQLFilter/goql.py:403 -#, fuzzy -#| msgid "Python Shell" msgid "Python evaluation" -msgstr "Pythonskall" +msgstr "Python-evaluering" #: GOQLFilter/goql.py:523 #, python-format @@ -15275,19 +15232,17 @@ msgid "Error resetting filter: %s" msgstr "" #: GOQLFilter/goql.py:548 -#, fuzzy -#| msgid "Enter Python expressions" msgid "Enter an expression first" -msgstr "Skriv inn Python-uttrykk" +msgstr "Skriv inn et uttrykk først" #: GOQLFilter/goql.py:560 #, python-brace-format msgid "Created by the GOQL Filter gramplet on {today}" -msgstr "" +msgstr "Laget med GOQL Filter gramplet {today}" #: GOQLFilter/whereexprrule.gpr.py:30 GOQLFilter/whereexprrule.py:261 msgid "People matching the " -msgstr "" +msgstr "Personer som treffer " #: GOQLFilter/whereexprrule.gpr.py:32 msgid "" @@ -15296,10 +15251,8 @@ msgid "" msgstr "" #: GOQLFilter/whereexprrule.gpr.py:50 GOQLFilter/whereexprrule.py:266 -#, fuzzy -#| msgid "Families matching " msgid "Families matching the " -msgstr "Familier som matcher " +msgstr "Familier som treffer " #: GOQLFilter/whereexprrule.gpr.py:52 msgid "" @@ -15309,7 +15262,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:70 GOQLFilter/whereexprrule.py:271 msgid "Events matching the " -msgstr "" +msgstr "Hendelser som treffer " #: GOQLFilter/whereexprrule.gpr.py:72 msgid "" @@ -15319,7 +15272,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:90 GOQLFilter/whereexprrule.py:276 msgid "Places matching the " -msgstr "" +msgstr "Steder som treffer " #: GOQLFilter/whereexprrule.gpr.py:92 msgid "" @@ -15329,7 +15282,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:110 GOQLFilter/whereexprrule.py:281 msgid "Repositories matching the " -msgstr "" +msgstr "Arkiv som treffer " #: GOQLFilter/whereexprrule.gpr.py:112 msgid "" @@ -15339,7 +15292,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:130 GOQLFilter/whereexprrule.py:286 msgid "Sources matching the " -msgstr "" +msgstr "Kilder som treffer " #: GOQLFilter/whereexprrule.gpr.py:132 msgid "" @@ -15349,7 +15302,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:150 GOQLFilter/whereexprrule.py:291 msgid "Citations matching the " -msgstr "" +msgstr "Sitater som treffer " #: GOQLFilter/whereexprrule.gpr.py:152 msgid "" @@ -15359,7 +15312,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:170 GOQLFilter/whereexprrule.py:296 msgid "Media matching the " -msgstr "" +msgstr "Meia som treffer " #: GOQLFilter/whereexprrule.gpr.py:172 msgid "" @@ -15369,7 +15322,7 @@ msgstr "" #: GOQLFilter/whereexprrule.gpr.py:190 GOQLFilter/whereexprrule.py:301 msgid "Notes matching the " -msgstr "" +msgstr "Notater som treffer " #: GOQLFilter/whereexprrule.gpr.py:192 msgid "" @@ -15379,7 +15332,7 @@ msgstr "" #: GOQLFilter/whereexprrule.py:212 msgid "GOQL expression" -msgstr "" +msgstr "GOQL uttrykk" #: GOQLFilter/whereexprrule.py:214 msgid "" @@ -15767,10 +15720,8 @@ msgstr "" #: GrampsAssistant/grampsassistant.gpr.py:26 #: GrampsAssistant/grampsassistant.py:1417 -#, fuzzy -#| msgid "Gramps version" msgid "Gramps Assistant" -msgstr "Gramps versjon" +msgstr "Gramps-assistent" #: GrampsAssistant/grampsassistant.gpr.py:27 msgid "AI assistant for querying your Gramps family tree" @@ -15786,10 +15737,8 @@ msgid "" msgstr "" #: GrampsAssistant/grampsassistant.py:209 -#, fuzzy -#| msgid "Extra style settings:" msgid "Gramps Assistant settings" -msgstr "Ekstra stilinnstillinger:" +msgstr "Innstillinger for Gramps-asistenten" #: GrampsAssistant/grampsassistant.py:213 msgid "Clear conversation and context" @@ -15797,10 +15746,8 @@ msgstr "" #: GrampsAssistant/grampsassistant.py:388 #: GrampsAssistant/grampsassistant.py:749 -#, fuzzy -#| msgid "Gramps version" msgid "Gramps Assistant:" -msgstr "Gramps versjon" +msgstr "Gramps-assistenten:" #: GrampsAssistant/grampsassistant.py:390 msgid "" @@ -15834,10 +15781,8 @@ msgid "" msgstr "" #: GrampsAssistant/grampsassistant.py:973 -#, fuzzy -#| msgid "Done!\n" msgid "Done.\n" -msgstr "Gjort!\n" +msgstr "Ferdig!\n" #: GrampsAssistant/grampsassistant.py:1203 msgid "System Prompt:" @@ -15879,10 +15824,8 @@ msgid "Model:" msgstr "" #: GrampsAssistant/grampsassistant.py:1273 -#, fuzzy -#| msgid "Foundation date:" msgid "Use Foundational Model" -msgstr "Stiftelsesdato:" +msgstr "Bruk grunnleggende modell" #: GrampsAssistant/grampsassistant.py:1315 msgid "e.g. OPENAI_API_KEY" @@ -15905,10 +15848,8 @@ msgid "Base URL:" msgstr "" #: GrampsAssistant/grampsassistant.py:1338 -#, fuzzy -#| msgid "Source type" msgid "Model name:" -msgstr "Kildetype" +msgstr "Modellnavn:" #: GrampsChat/GrampsChat.gpr.py:4 GrampsChat/GrampsChat.gpr.py:9 msgid "GrampsChat" @@ -15918,124 +15859,232 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" +msgstr "Brukernavn" + +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" +msgstr "Passord" + +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" +msgstr "Generer API nøkkel" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" +msgstr "Genererer API-nøkkel…" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "Feil: %s" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" +msgstr "K_oble til" + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16051,174 +16100,391 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "Synkroniseringen mislyktes" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Lokale endringer" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Eksterne endringer" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Samtidige endringer" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 -#, fuzzy, python-format -#| msgid "Downloading %s media file" -#| msgid_plural "Downloading %s media files" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Laster ned %s mediefil" -msgstr[1] "Laster ned %s mediefil" +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format -#| msgid "Uploading %s media file" -#| msgid_plural "Uploading %s media files" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Laster opp %s mediefil" -msgstr[1] "Laster opp %s mediefil" +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "Laster ned det eksterne slektstreet…" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "Laster ned mediafiler…" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "Laster opp mediafiler…" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "Koble til" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "Bruk endringene" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "Overfører mediafilene" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Legg til %s objekt" +msgstr[1] "Legg til %s objekter" + +#: GrampsWebSync/presentation.py:594 +#, python-format +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 -#, fuzzy, python-format -#| msgid "Downloading %s media file" -#| msgid_plural "Downloading %s media files" +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 +#, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." -msgstr[0] "Laster ned %s mediefil" -msgstr[1] "Laster ned %s mediefil" +msgstr[0] "Lastet ned %s mediafil med suksess." +msgstr[1] "Lastet ned %s mediafiler med suksess." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 -#, fuzzy, python-format -#| msgid "Uploading %s media file" -#| msgid_plural "Uploading %s media files" +#: GrampsWebSync/presentation.py:727 +#, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." -msgstr[0] "Laster opp %s mediefil" -msgstr[1] "Laster opp %s mediefil" +msgstr[0] "Lastet opp %s mediafil med suksess." +msgstr[1] "Lastet opp %s mediafiler med suksess." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -18372,8 +18638,6 @@ msgid "Navigate to an individual to check patronymic status." msgstr "" #: NameSuite/name_processor/views/gramplet.py:35 -#, fuzzy -#| msgid "No Active Person set." msgid "No active person selected." msgstr "Ingen aktiv person valgt." @@ -18403,20 +18667,16 @@ msgid "Patronymic applied successfully!" msgstr "" #: NameSuite/name_processor/views/gramplet.py:77 -#, fuzzy -#| msgid "Apply all suggested changes" msgid "Apply Suggestion" -msgstr "Aktivere alle foreslåtte endringer" +msgstr "Bruk foreslåtte endringer" #: NameSuite/name_processor/views/tool.py:92 msgid "Infer East Slavic Patronymics" msgstr "" #: NameSuite/name_processor/views/tool.py:112 -#, fuzzy -#| msgid "Checking Given Names" msgid "Rename Given Names" -msgstr "Kontrollerer fornavn" +msgstr "Endre fornavn" #: NameSuite/name_processor/views/tool.py:115 msgid "Audit Patronymics" @@ -18427,10 +18687,8 @@ msgid "Auditing Settings" msgstr "" #: NameSuite/name_processor/views/tool_audit_tab.py:76 -#, fuzzy -#| msgid "Place of Record" msgid "All Records" -msgstr "Registreringssted" +msgstr "Alle registreringer" #: NameSuite/name_processor/views/tool_audit_tab.py:77 msgid "Males Only" @@ -18449,10 +18707,8 @@ msgid "Match Pre-Revolutionary Orthography" msgstr "" #: NameSuite/name_processor/views/tool_audit_tab.py:95 -#, fuzzy -#| msgid "Edit tags" msgid "Audit Database" -msgstr "Rediger merker" +msgstr "Revider databasen" #: NameSuite/name_processor/views/tool_audit_tab.py:117 msgid "Select All Safe Corrections" @@ -18460,10 +18716,8 @@ msgstr "" #: NameSuite/name_processor/views/tool_audit_tab.py:122 #: NameSuite/name_processor/views/tool_rename_tab.py:116 -#, fuzzy -#| msgid "Apply to selected places" msgid "Apply Selected Corrections" -msgstr "Bruk på valgte steder" +msgstr "Bruk valgte korrigeringer" #: NameSuite/name_processor/views/tool_audit_tab.py:162 msgid "Configure Rules" @@ -18480,36 +18734,28 @@ msgid "Current" msgstr "" #: NameSuite/name_processor/views/tool_audit_tab.py:193 -#, fuzzy -#| msgid "Section" msgid "Correction" -msgstr "Seksjon" +msgstr "Korrigering" #: NameSuite/name_processor/views/tool_audit_tab.py:200 msgid "Conf" msgstr "" #: NameSuite/name_processor/views/tool_audit_tab.py:201 -#, fuzzy -#| msgid "Event Year" msgid "Ref Year" -msgstr "Hendelsesår" +msgstr "Ref. år" #: NameSuite/name_processor/views/tool_audit_tab.py:204 -#, fuzzy -#| msgid "Relation" msgid "Explanation" -msgstr "Relasjon" +msgstr "Forklaring" #: NameSuite/name_processor/views/tool_audit_tab.py:243 msgid "Audit Complete!" msgstr "" #: NameSuite/name_processor/views/tool_audit_tab.py:248 -#, fuzzy -#| msgid "Result" msgid "No Results" -msgstr "Resultat" +msgstr "Tomt resultat" #: NameSuite/name_processor/views/tool_audit_tab.py:248 msgid "No issues found." @@ -18520,10 +18766,8 @@ msgid "Search and Replace Options" msgstr "" #: NameSuite/name_processor/views/tool_rename_tab.py:70 -#, fuzzy -#| msgid "Source type" msgid "Source Name:" -msgstr "Kildetype" +msgstr "Kildenavn:" #: NameSuite/name_processor/views/tool_rename_tab.py:72 msgid "e.g. Иоанн" @@ -18546,30 +18790,24 @@ msgid "Exact Match" msgstr "" #: NameSuite/name_processor/views/tool_rename_tab.py:83 -#, fuzzy -#| msgid "Search substring..." msgid "Substring" -msgstr "Søk etter delstreng…" +msgstr "Delstreng" #: NameSuite/name_processor/views/tool_rename_tab.py:84 msgid "Regular Expression" msgstr "" #: NameSuite/name_processor/views/tool_rename_tab.py:88 -#, fuzzy -#| msgid "Index of Names" msgid "Scan for Names" -msgstr "Navneregister" +msgstr "Skann etter navn" #: NameSuite/name_processor/views/tool_rename_tab.py:93 msgid "Preserve original name as alternative" msgstr "" #: NameSuite/name_processor/views/tool_rename_tab.py:160 -#, fuzzy -#| msgid "Proposed sort" msgid "Proposed" -msgstr "Foreslått sortering" +msgstr "Foreslått" #: NetworkChart/NetworkChart.gpr.py:24 msgid "Network Chart" @@ -19628,22 +19866,16 @@ msgid "No source information found" msgstr "Ingen kildeinformasjon funnet" #: PersonRelationshipFilter/PersonRelationshipFilter.gpr.py:25 -#, fuzzy -#| msgid "Relationship to Father" msgid "Person Relationship Filter" -msgstr "Slektskap til far" +msgstr "Personsrelasjonsfilter" #: PersonRelationshipFilter/PersonRelationshipFilter.gpr.py:26 -#, fuzzy -#| msgid "Gramplet showing relatives in a relation" msgid "Gramplet providing a person filter on relationships" -msgstr "Gramplet som viser beslektede slektninger" +msgstr "Gramplet som gir personfilter på relasjoner" #: PersonRelationshipFilter/PersonRelationshipFilter.gpr.py:33 -#, fuzzy -#| msgid "Relationship to Father" msgid "Relationship Filter" -msgstr "Slektskap til far" +msgstr "Relasjonsfilter" #: PersonRelationshipFilter/PersonRelationshipFilter.py:82 msgid "Children of name match" @@ -19654,16 +19886,12 @@ msgid "Matches children of anybody with a given name" msgstr "" #: PersonRelationshipFilter/PersonRelationshipFilter.py:251 -#, fuzzy -#| msgid "sibling" msgid "Sibling 1" -msgstr "søsken" +msgstr "Søsken 1" #: PersonRelationshipFilter/PersonRelationshipFilter.py:252 -#, fuzzy -#| msgid "sibling" msgid "Sibling 2" -msgstr "søsken" +msgstr "Søsken 2" #: PersonRelationshipFilter/PersonRelationshipFilter.py:253 msgid "Child 1" @@ -19814,14 +20042,6 @@ msgstr "" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" @@ -20449,7 +20669,7 @@ msgstr "_Google Kart" #: PlaceCompletion/placecompletion.glade:112 msgid "Apply all suggested changes" -msgstr "Aktivere alle foreslåtte endringer" +msgstr "Bruk alle foreslåtte endringer" #: PlaceCompletion/placecompletion.glade:148 msgid "Selection of the Places you want to complete:" @@ -23277,7 +23497,7 @@ msgstr "" #: ThisDayInFamilyHistory/ThisDayInFamilyHistory.py:130 msgid "December" -msgstr "" +msgstr "desember" #: ThisDayInFamilyHistory/ThisDayInFamilyHistory.py:130 msgid "November" @@ -24914,42 +25134,29 @@ msgid "Given Name Word Cloud" msgstr "" #: WordClouds/WordClouds.gpr.py:25 -#, fuzzy -#| msgid "Gramplet showing relatives in a relation" msgid "Gramplet showing all given names as a word cloud" -msgstr "Gramplet som viser beslektede slektninger" +msgstr "Gramplet som viser alle fornavn som en ordsky" #: WordClouds/WordClouds.gpr.py:40 WordClouds/WordClouds.gpr.py:48 msgid "Surname Word Cloud" msgstr "" #: WordClouds/WordClouds.gpr.py:41 -#, fuzzy -#| msgid "Gramplet showing relatives in a relation" msgid "Gramplet showing all surnames as a word cloud" -msgstr "Gramplet som viser beslektede slektninger" +msgstr "Gramplet som viser alle etternavn som en ordsky" #: WordClouds/WordClouds.gpr.py:56 WordClouds/WordClouds.gpr.py:64 -#, fuzzy -#| msgid "Place history loaded" msgid "Place Word Cloud" -msgstr "Stedshistorikk innlastet" +msgstr "Sted-ordsky" #: WordClouds/WordClouds.gpr.py:57 -#, fuzzy -#| msgid "Gramplet showing relatives in a relation" msgid "Gramplet showing all places as a word cloud" -msgstr "Gramplet som viser beslektede slektninger" +msgstr "Gramplet som viser alle steder som en ordsky" #: WordClouds/cloudgramplet.py:147 WordClouds/cloudgramplet.py:225 -#, fuzzy, python-format -#| msgid "" -#| "Number of tags : \n" -#| "\t\t\t%06s\n" +#, python-format msgid "Number of %s" -msgstr "" -"Antall merker : \n" -"\t\t\t%06s\n" +msgstr "Antall %s" #: WordClouds/cloudgramplet.py:149 WordClouds/cloudgramplet.py:227 msgid "Color (low)" @@ -24960,10 +25167,8 @@ msgid "Color (high)" msgstr "" #: WordClouds/cloudgramplet.py:151 WordClouds/cloudgramplet.py:229 -#, fuzzy -#| msgid "Hair Color" msgid "Hover color" -msgstr "Hårfarge" +msgstr "Svevefarge" #: WordClouds/cloudgramplet.py:152 WordClouds/cloudgramplet.py:230 msgid "Layout quality" @@ -24974,20 +25179,17 @@ msgid "Filter missing/unknown words" msgstr "" #: WordClouds/cloudgramplet.py:207 -#, fuzzy, python-format -#| msgid "Missing header" +#, python-format msgid "[Missing %s]" -msgstr "Mangler overskrift" +msgstr "[Mangler %s]" #: WordClouds/givennamewordcloudgramplet.py:50 msgid "Click given name to view people with that given name" msgstr "" #: WordClouds/placewordcloudgramplet.py:53 -#, fuzzy -#| msgid "Include Image source references" msgid "Click place name to view references" -msgstr "Inkluder kildehenvisninger for bilder" +msgstr "Klikk på stedsnavn for å se referanser" #: WordClouds/surnamewordcloudgramplet.py:49 msgid "Click surname to view people with that surname" @@ -25438,6 +25640,15 @@ msgid "" " into your preferred web navigator ..." msgstr "" +#~ msgid "Local changes" +#~ msgstr "Lokale endringer" + +#~ msgid "Remote changes" +#~ msgstr "Eksterne endringer" + +#~ msgid "Simultaneous changes" +#~ msgstr "Samtidige endringer" + #~ msgid "Search" #~ msgstr "Søk" diff --git a/po/ne.po b/po/ne.po index f468c5c1f..ff81e7336 100644 --- a/po/ne.po +++ b/po/ne.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -2061,7 +2061,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15669,124 +15671,232 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15802,166 +15912,391 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19504,14 +19839,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/nl.po b/po/nl.po index e2c17409b..3c36b6725 100644 --- a/po/nl.po +++ b/po/nl.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: MediaMerge 5.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" -"PO-Revision-Date: 2026-08-03 04:01+0000\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" +"PO-Revision-Date: 2026-08-11 14:52+0000\n" "Last-Translator: Stephan Paternotte \n" "Language-Team: Dutch \n" @@ -22,7 +22,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.8.dev0\n" +"X-Generator: Weblate 2026.9.dev0\n" msgid "Birthdays" msgstr "Verjaardagen" @@ -2223,7 +2223,9 @@ msgid "Calculate" msgstr "Berekenen" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "Kopieer" @@ -15561,282 +15563,273 @@ msgid "Select Form" msgstr "Selecteer formulier" #: GOQLFilter/goql.gpr.py:31 -#, fuzzy -#| msgid "Person Relationship Filter" msgid "Person GOQL Filter" -msgstr "Relatiefilter voor personen" +msgstr "GOQL-filter voor personen" #: GOQLFilter/goql.gpr.py:32 msgid "Gramplet providing a gramps-object-query-language person filter" -msgstr "" +msgstr "Gramplet die een persoonsfilter biedt in gramps-object-query-taal" #: GOQLFilter/goql.gpr.py:39 GOQLFilter/goql.gpr.py:58 #: GOQLFilter/goql.gpr.py:77 GOQLFilter/goql.gpr.py:96 #: GOQLFilter/goql.gpr.py:117 GOQLFilter/goql.gpr.py:136 #: GOQLFilter/goql.gpr.py:155 GOQLFilter/goql.gpr.py:174 #: GOQLFilter/goql.gpr.py:193 -#, fuzzy -#| msgid "Filtering" msgid "GOQL Filter" -msgstr "Filteren" +msgstr "GOQL-filter" #: GOQLFilter/goql.gpr.py:50 -#, fuzzy -#| msgid "Family Filter name:" msgid "Family GOQL Filter" -msgstr "Gezinsfilter naam:" +msgstr "GOQL-filter voor gezinnen" #: GOQLFilter/goql.gpr.py:51 msgid "Gramplet providing a gramps-object-query-language family filter" -msgstr "" +msgstr "Gramplet die een familiefilter biedt in gramps-object-query-taal" #: GOQLFilter/goql.gpr.py:69 msgid "Event GOQL Filter" -msgstr "" +msgstr "GOQL-filter voor gebeurtenissen" #: GOQLFilter/goql.gpr.py:70 msgid "Gramplet providing a gramps-object-query-language event filter" -msgstr "" +msgstr "Gramplet die een gebeurtenisfilter biedt in gramps-object-query-taal" #: GOQLFilter/goql.gpr.py:88 -#, fuzzy -#| msgid "Place _filter:" msgid "Place GOQL Filter" -msgstr "Locatie_filter:" +msgstr "GOQL-filter voor plaatsen" #: GOQLFilter/goql.gpr.py:89 msgid "Gramplet providing a gramps-object-query-language place filter" -msgstr "" +msgstr "Gramplet die een plaatsfilter biedt in gramps-object-query-taal" #: GOQLFilter/goql.gpr.py:107 -#, fuzzy -#| msgid "Repository title" msgid "Repository GOQL Filter" -msgstr "Bibliotheektitel" +msgstr "GOQL-filter voor opslagplaatsen" #: GOQLFilter/goql.gpr.py:109 msgid "Gramplet providing a gramps-object-query-language repository filter" msgstr "" +"Gramplet die een filter biedt voor gramps-object-query-taal-opslagplaatsen" #: GOQLFilter/goql.gpr.py:128 -#, fuzzy -#| msgid "Source type" msgid "Source GOQL Filter" -msgstr "Brontype" +msgstr "GOQL-filter voor bronnen" #: GOQLFilter/goql.gpr.py:129 msgid "Gramplet providing a gramps-object-query-language source filter" -msgstr "" +msgstr "Gramplet die een filter biedt voor gramps-object-query-taal-bronnen" #: GOQLFilter/goql.gpr.py:147 -#, fuzzy -#| msgid "Relationship Filter" msgid "Citation GOQL Filter" -msgstr "Relatiefilter" +msgstr "GOQL-filter voor citaten" #: GOQLFilter/goql.gpr.py:148 -#, fuzzy -#| msgid "Gramplet providing a person filter on relationships" msgid "Gramplet providing a gramps-object-query-language citation filter" -msgstr "Gramplet die een persoonsfilter op relaties biedt" +msgstr "Gramplet die een citatenfilter biedt in gramps-object-query-taal" #: GOQLFilter/goql.gpr.py:166 -#, fuzzy -#| msgid "Media Object Title" msgid "Media GOQL Filter" -msgstr "Titel van mediaobject" +msgstr "GOQL-filter voor media" #: GOQLFilter/goql.gpr.py:167 msgid "Gramplet providing a gramps-object-query-language media filter" -msgstr "" +msgstr "Gramplet die een mediafilter biedt in gramps-object-query-taal" #: GOQLFilter/goql.gpr.py:185 -#, fuzzy -#| msgid "Note Link (internal)" msgid "Note GOQL Filter" -msgstr "Notitiekoppeling (intern)" +msgstr "GOQL-filter voor notities" #: GOQLFilter/goql.gpr.py:186 msgid "Gramplet providing a gramps-object-query-language note filter" -msgstr "" +msgstr "Gramplet die een notitiesfilter biedt in gramps-object-query-taal" #: GOQLFilter/goql.py:186 msgid "A gramps-object-query-language where-expression, e.g.\n" -msgstr "" +msgstr "Een 'where'-uitdrukking in gramps-object-query-taal, bijv.\n" #: GOQLFilter/goql.py:188 msgid "Enter inserts a newline; Ctrl+Enter runs Find.\n" -msgstr "" +msgstr "Enter voegt een nieuwe regel in; Ctrl+Enter start Zoekopdracht.\n" #: GOQLFilter/goql.py:189 msgid "Up/Down at the first/last line recalls previous expressions.\n" msgstr "" +"Omhoog/omlaag op de eerste/laatste regel roept eerdere uitdrukkingen op.\n" #: GOQLFilter/goql.py:190 msgid "Tab always completes -- it never inserts a tab character." -msgstr "" +msgstr "De Tab-toets voltooit altijd – en voegt nooit een tabteken in." #: GOQLFilter/goql.py:213 -#, fuzzy, python-format -#| msgid "Use filter " +#, python-format msgid "%s filter" -msgstr "Gebruik filter: " +msgstr "%s filter" #: GOQLFilter/goql.py:233 msgid "This resets the filter parameters to empty state." -msgstr "" +msgstr "Hiermee worden de filterparameters teruggezet naar de lege toestand." #: GOQLFilter/goql.py:239 msgid "This opens a dialog to save the current expression as a named filter." msgstr "" +"Dit opent een dialoogvenster om de huidige expressie op te slaan als een " +"benoemd filter." #: GOQLFilter/goql.py:244 msgid "Open this gramplet's help page in a browser." -msgstr "" +msgstr "Open de helppagina van deze gramplet in een browser." #: GOQLFilter/goql.py:402 msgid "SQL" -msgstr "" +msgstr "SQL" #: GOQLFilter/goql.py:403 -#, fuzzy -#| msgid "Python Shell" msgid "Python evaluation" -msgstr "Python Shell" +msgstr "Python-evaluatie" #: GOQLFilter/goql.py:523 -#, fuzzy, python-format -#| msgid "Error: login failed" +#, python-format msgid "Error applying filter: %s" -msgstr "Fout: inloggen mislukt" +msgstr "Fout bij toepassing filter: %s" #: GOQLFilter/goql.py:526 #, python-format msgid "Showing %(shown)d of %(total)d (%(method)s)" -msgstr "" +msgstr "%(shown)d van %(total)d (%(method)s) weergeven" #: GOQLFilter/goql.py:541 -#, fuzzy, python-format -#| msgid "Error creating note" +#, python-format msgid "Error resetting filter: %s" -msgstr "Fout bij aanmaken notitie" +msgstr "Fout bij herstel van filter: %s" #: GOQLFilter/goql.py:548 -#, fuzzy -#| msgid "Enter Python expressions" msgid "Enter an expression first" -msgstr "Voer Python-expressies in" +msgstr "Voer eerst een expressie in" #: GOQLFilter/goql.py:560 #, python-brace-format msgid "Created by the GOQL Filter gramplet on {today}" -msgstr "" +msgstr "{today} aangemaakt door de GOQL-filter gramplet" #: GOQLFilter/whereexprrule.gpr.py:30 GOQLFilter/whereexprrule.py:261 msgid "People matching the " -msgstr "" +msgstr "Personen die overeenkomen met de " #: GOQLFilter/whereexprrule.gpr.py:32 msgid "" "Matches people for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Komt overeen met personen waarvoor de gegeven gramps-object-query-taal " +"'where'-expressie evalueert tot waar" #: GOQLFilter/whereexprrule.gpr.py:50 GOQLFilter/whereexprrule.py:266 -#, fuzzy -#| msgid "Families matching " msgid "Families matching the " -msgstr "Gezinnen die overeenkomen met " +msgstr "Gezinnen die overeenkomen met de " #: GOQLFilter/whereexprrule.gpr.py:52 msgid "" "Matches families for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Komt overeen met gezinnen waarvoor de gegeven gramps-object-query-taal " +"'where'-expressie evalueert tot waar" #: GOQLFilter/whereexprrule.gpr.py:70 GOQLFilter/whereexprrule.py:271 msgid "Events matching the " -msgstr "" +msgstr "Gebeurtenissen die overeenkomen met de " #: GOQLFilter/whereexprrule.gpr.py:72 msgid "" "Matches events for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Komt overeen met gebeurtenissen waarvoor de gegeven gramps-object-query-taal " +"'where'-expressie evalueert tot waar" #: GOQLFilter/whereexprrule.gpr.py:90 GOQLFilter/whereexprrule.py:276 msgid "Places matching the " -msgstr "" +msgstr "Plaatsen die overeenkomen met de " #: GOQLFilter/whereexprrule.gpr.py:92 msgid "" "Matches places for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Komt overeen met plaatsen waarvoor de gegeven gramps-object-query-taal " +"'where'-expressie evalueert tot waar" #: GOQLFilter/whereexprrule.gpr.py:110 GOQLFilter/whereexprrule.py:281 msgid "Repositories matching the " -msgstr "" +msgstr "Opslagplaatsen die overeenkomen met de " #: GOQLFilter/whereexprrule.gpr.py:112 msgid "" "Matches repositories for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Komt overeen met opslagplaatsen waarvoor de gegeven gramps-object-query-taal " +"'where'-expressie evalueert tot waar" #: GOQLFilter/whereexprrule.gpr.py:130 GOQLFilter/whereexprrule.py:286 -#, fuzzy -#| msgid "Source matching parameters" msgid "Sources matching the " -msgstr "Met bron overeenkomende parameters" +msgstr "Bronnen die overeenkomen met de " #: GOQLFilter/whereexprrule.gpr.py:132 msgid "" "Matches sources for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Komt overeen met bronnen waarvoor de gegeven gramps-object-query-taal " +"'where'-expressie evalueert tot waar" #: GOQLFilter/whereexprrule.gpr.py:150 GOQLFilter/whereexprrule.py:291 msgid "Citations matching the " -msgstr "" +msgstr "Citaten die overeenkomen met de " #: GOQLFilter/whereexprrule.gpr.py:152 msgid "" "Matches citations for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Komt overeen met citaten waarvoor de gegeven gramps-object-query-taal " +"'where'-expressie evalueert tot waar" #: GOQLFilter/whereexprrule.gpr.py:170 GOQLFilter/whereexprrule.py:296 msgid "Media matching the " -msgstr "" +msgstr "Media die overeenkomen met de " #: GOQLFilter/whereexprrule.gpr.py:172 msgid "" "Matches media for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Komt overeen met media waarvoor de gegeven gramps-object-query-taal 'where'-" +"expressie evalueert tot waar" #: GOQLFilter/whereexprrule.gpr.py:190 GOQLFilter/whereexprrule.py:301 msgid "Notes matching the " -msgstr "" +msgstr "Notities die overeenkomen met de " #: GOQLFilter/whereexprrule.gpr.py:192 msgid "" "Matches notes for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Komt overeen met notities waarvoor de gegeven gramps-object-query-taal " +"'where'-expressie evalueert tot waar" #: GOQLFilter/whereexprrule.py:212 -#, fuzzy -#| msgid "Regular Expression" msgid "GOQL expression" -msgstr "Reguliere expressies" +msgstr "GOQL-expressie" #: GOQLFilter/whereexprrule.py:214 msgid "" "Matches objects for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Komt overeen met objecten waarvoor de gegeven gramps-object-query-taal " +"'where'-expressie evalueert tot waar" #: GedcomExtensions/GedcomExtensions.gpr.py:32 msgid "Export GEDCOM Extensions (GED2)" @@ -16406,8 +16399,191 @@ msgstr "GrampsChat" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "AI Chatbot Gramplet (vereist verbinding maken met een LLM-dienst)" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" +msgstr "GrampsWebApiDb" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "Gramps _Web API Database" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" +"Gebruik een Gramps Web API server (bijvoorbeeld gramps-connect of Gramps " +"Web) als live database, lokaal gespiegeld voor snelheid." + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." +msgstr "" +"De accountauthenticatie via GRAMPS_WEB_API_KEY heeft geen toestemming op de " +"server voor deze bewerking (HTTP 403 Forbidden). Genereer een sleutel voor " +"een account met voldoende machtigingen, of vraag de serverbeheerder om deze " +"toegang te verlenen." + +#: GrampsWebApiDb/grampswebapidb.py:422 +#, python-format +msgid "" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" +"Deze stamboom heet \"%(actual)s\", maar GRAMPS_WEB_API_KEY authenticeert " +"momenteel als \"%(expected)s\". Hernoem deze stamboom naar \"%" +"(expected_typeable)s\" (Stambomen -> Stambomen beheren) als het de bedoeling " +"is om dat account te spiegelen, of open/maak de stamboom aan die al zo is " +"genoemd -- hergebruik van dit account zou de bestaande lokale gegevens " +"combineren met die van het andere account." + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "Lokale wijziging opnieuw proberen na serverconflict" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "Lokale kopie verwijderen voor volledig nieuwe synchronisatie" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "Gramps Web API-sleutel genereren" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" +"Zet een Gramps Web API-server-URL, gebruikersnaam en wachtwoord om in een " +"GRAMPS_WEB_API_KEY-waarde voor GrampsWebApiDb en maak er optioneel een " +"bijpassende, correct genaamde GrampsWebApiDb-stamboom voor." + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" +msgstr "Server-URL" + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "bijv. https://your-server/api" + +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" +msgstr "Gebruikersnaam" + +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" +msgstr "Wachtwoord" + +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" +msgstr "API-sleutel genereren" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" +"Voer uw server-URL, gebruikersnaam en wachtwoord in en klik vervolgens op " +"API-sleutel genereren." + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "GRAMPS_WEB_API_KEY" + +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" +msgstr "Maak een gesynchroniseerde stamboom voor deze sleutel" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" +"Een bestaande %s gevonden voor deze sessie. Klik op Gesynchroniseerde " +"stamboom aanmaken om deze direct te gebruiken of vul het bovenstaande " +"formulier in om een andere sleutel te genereren." + +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." +msgstr "Vul de server-URL, gebruikersnaam en het wachtwoord in." + +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" +msgstr "API-sleutel genereren…" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "Inloggen mislukt (HTTP %d): Controleer uw gebruikersnaam en wachtwoord." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" +"Server heeft een fout geretourneerd (HTTP %d %s): controleer de Server-URL." + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "Kon de server niet bereiken: controleer de server-URL. (%s)" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "Onverwachte reactie van de server: %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "Fout: %s" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" +"Succes. %s is nu ingesteld voor deze Gramps-sessie -- geen herstart nodig. " +"Kopieer de onderstaande sleutel om deze ook in te stellen in uw shell-" +"omgeving voor de volgende keer." + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "Accountidentiteit opzoeken…" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" +"Er bestaat al een stamboom met de naam \"%s\". Open deze met Stambomen - > " +"Stambomen beheren in plaats van er nog een te maken." + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, python-format +msgid "Error creating Family Tree: %s" +msgstr "Fout bij aanmaken van stamboom: %s" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" +"Stamboom \"%s\" aangemaakt. Open deze met Stambomen - > Stambomen beheren om " +"de synchronisatie te starten." + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" msgstr "Gramps Web-synchronisatie" @@ -16416,7 +16592,144 @@ msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" "Synchroniseert een lokaal gegevensbestand met een Gramps Web-instantie." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "_Opnieuw proberen" + +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" +msgstr "_Verbinden" + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "Deze server vergeten?" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" +"Het adres, de gebruikersnaam en het wachtwoord dat voor deze server is " +"opgeslagen, worden verwijderd, samen met de registratie de laatste " +"synchronisatie van deze stamboom. Bij de volgende synchronisatie worden de " +"twee stambomen helemaal opnieuw vergeleken." + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "Vergeten" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" +"Deze inloggegevens zijn voor het laatst gebruikt met een andere stamboom. " +"Controleer de server voordat u verdergaat." + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "Server wijzigen…" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "Server-URL:" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Gebruikersnaam:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Wachtwoord:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "Wachtwoord onthouden" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "Deze server vergeten" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "Over dit hulpmiddel" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "Open de online handleiding" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" +"Dit hulpmiddel maakt het mogelijk om de momenteel geopende stamboom te " +"synchroniseren met een online stamboom die door Gramps Web wordt bediend.\n" +"\n" +"De tool gaat ervan uit dat de twee bomen afgeleiden van elkaar zijn, d.w.z. " +"dat een van de twee werd gecreëerd op basis van een Gramps XML (niet " +"GEDCOM!) export van de andere.\n" +"\n" +"Na een succesvolle synchronisatie zijn de twee bomen identiek. Wijzigingen " +"worden doorgegeven op basis van tijdstempels. U wordt om bevestiging " +"gevraagd voordat er wijzigingen worden aangebracht in de lokale of afgelegen " +"bomen.\n" +"\n" +"Als u in plaats daarvan twee aanzienlijk verschillende bomen wilt " +"samenvoegen met de optie om handmatige wijzigingen aan te brengen, gebruikt " +"u in plaats daarvan de Import Merge Tool." + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "Fout:" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "Waarschuwing:" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "Synchronisatiemodus:" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "Synchronisatie voltooid" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "Synchronisatie is mislukt" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "Gramps Web Sync %(addon)s, Web API %(api)s" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "Gramps Web Sync %s" + +#: GrampsWebSync/presentation.py:164 +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"Deze URL gebruikt http, dus uw wachtwoord wordt als gewone tekst verzonden. " +"Gebruik dit alleen voor lokaal testen." + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " @@ -16425,7 +16738,7 @@ msgstr "" "De systeemsleutelring kon niet worden gebruikt. Snap-beperking blokkeert de " "toegang totdat u het volgende uitvoert: %s" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." @@ -16433,54 +16746,54 @@ msgstr "" "De systeemsleutelring kon niet worden gebruikt. U moet elke keer uw " "wachtwoord invoeren." -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "Authenticatie mislukt. Controleer uw gebruikersnaam en wachtwoord." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "Toegang verboden. Controleer gebruikersnaam en wachtwoord." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "GrampsWeb-service niet gevonden. Controleer de URL." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "Te veel verzoeken, probeer het over een paar seconden opnieuw." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "GrampsWeb stamboom is uitgeschakeld." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "Verbinding mislukt. Controleer de URL en uw internetverbinding." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "Ongeldige serverreactie. Controleer de URL." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "" "Uw gebruiker heeft niet voldoende servermachtigingen om synchronisatie te " "gebruiken." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "Het importeren van het gedownloade XML-bestand is mislukt." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" "Kan wijzigingen naar de server niet synchroniseren: objecten zijn gewijzigd." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "Onverwachte fout bij het verwerken van wijzigingen." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." @@ -16488,99 +16801,118 @@ msgstr "" "De stamboom werd aangepast tijdens het controleren van de wijzigingen. Er is " "niets toegepast. Vergelijk nog eens." -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" +"Deze server draait Gramps Web API %(found)s, maar synchronisatie vereist %" +"(needed)s of nieuwer. Update de server." + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" +"Deze server heeft geen Gramps Web API-versie gerapporteerd en is dus te oud " +"om mee te synchroniseren. Versie %s of nieuwer is nodig." + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" +"Deze server draait Gramps Web API %(found)s. Deze versie van Gramps werkt " +"met Gramps Web API %(major)s, dus voor synchronisatie met deze server is een " +"nieuwere versie van Gramps nodig." + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" +"Deze server is niet geconfigureerd om een achtergrondtaakwachtrij te " +"gebruiken. Synchronisatie heeft er een nodig: zonder deze wijzigingen wordt " +"er een time-out toegepast voordat de server klaar is. Schakel het in op de " +"server." + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "De server kon de wijzigingen niet toepassen: %s" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "Serverfout %s. Controleer uw verbinding." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "Onverwachte fout: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Gegevens van server ophalen..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "Aanmelden…" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Lokale en externe gegevens vergelijken…" +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "Externe stamboom downloaden…" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Wijzigingen zijn met succes toegepast op lokale database." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "De twee stambomen vergelijken…" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Doorgaan zonder transportversleuteling?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "Controleren welke mediabestanden ontbreken…" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" -msgstr "" -"U hebt een URL met http-schema opgegeven. Als u doorgaat, wordt uw " -"wachtwoord in leesbare tekst via het netwerk verzonden. Gebruik dit alleen " -"voor lokale tests!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "Wijzigingen toegepast op deze computer." -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Doorgaan met HTTP" +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "Wijzigingen naar de server verzenden…" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "HTTPS gebruiken" +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "Mediabestand downloaden…" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" -"Dit hulpmiddel maakt het mogelijk om de momenteel geopende stamboom te " -"synchroniseren met een online stamboom die door Gramps Web wordt bediend.\n" -"\n" -"De tool gaat ervan uit dat de twee bomen afgeleiden van elkaar zijn, d.w.z. " -"dat een van de twee werd gecreëerd op basis van een Gramps XML (niet " -"GEDCOM!) export van de andere.\n" -"\n" -"Na een succesvolle synchronisatie zijn de twee bomen identiek. Wijzigingen " -"worden doorgegeven op basis van tijdstempels. U wordt om bevestiging " -"gevraagd voordat er wijzigingen worden aangebracht in de lokale of afgelegen " -"bomen.\n" -"\n" -"Als u in plaats daarvan twee aanzienlijk verschillende bomen wilt " -"samenvoegen met de optie om handmatige wijzigingen aan te brengen, gebruikt " -"u in plaats daarvan de Import Merge Tool." +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "Mediabestand uploaden…" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "URL van de server: " +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "Verbinding maken" -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "Fout:" +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "Wijziging toepassen" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" -msgstr "Synchronisatiemodus" +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "Mediabestand overdagen" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "Synchronisatie in twee richtingen" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "Herstel de server zodat deze overeenkomt met deze computer" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "Herstel deze computer zodat deze overeenkomt met de server" + +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." @@ -16588,7 +16920,7 @@ msgstr "" "Veranderingen van beide kanten worden gecombineerd. Objecten die op beide " "plaatsen zijn bewerkt, worden samengevoegd." -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." @@ -16596,7 +16928,7 @@ msgstr "" "De server is ingesteld om overeen te komen met deze computer. Alles wat " "alleen op de server is gewijzigd, wordt weggegooid." -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." @@ -16604,138 +16936,176 @@ msgstr "" "Deze computer is ingesteld om overeen te komen met de server Alles wat " "alleen hier is gewijzigd, wordt weggegooid." -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Synchronisatie in twee richtingen" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Server opnieuw instellen vanuit lokaal" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Lokaal opnieuw instellen vanuit server" - -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" -msgstr "Waarschuwing:" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Lokale wijzigingen" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Externe wijzigingen" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Gelijktijdige wijzigingen" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Informatie over mediabestanden ophalen…" - -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Beide stambomen zijn hetzelfde." - -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Wijzigingen toepassen op de lokale database…" - -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Geen wijzigingen toe te passen op lokale database." +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "Zal wijzigen op deze computer (%s object)" +msgstr[1] "Zal wijzigen op deze computer (%s objecten)" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Wijzigingen toepassen op externe database…" +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "Zal wijzigen op de server (%s object)" +msgstr[1] "Zal wijzigen op de server (%s objecten)" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Geen wijzigingen nodig op externe database." +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "%s object toevoegen" +msgstr[1] "%s objecten toevoegen" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Lokaal vermist" +#: GrampsWebSync/presentation.py:594 +#, python-format +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "%s object bijwerken" +msgstr[1] "%s objecten bijwerken" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Extern vermist" +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "%s object samenvoegen" +msgstr[1] "%s objecten samenvoegen" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:596 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "%s mediabestand downloaden" -msgstr[1] "%s mediabestanden downloaden" +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "%s object verwijderen" +msgstr[1] "%s objecten verwijderen" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:615 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "%s mediabestand uploaden" -msgstr[1] "%s mediabestanden uploaden" +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "%s object wordt op deze computer verwijderd." +msgstr[1] "%s objecten wordt op deze computer verwijderd." -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "Probeer het opnieuw" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "%s object wordt op de server verwijderd." +msgstr[1] "%s objecten wordt op de server verwijderd." -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:636 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." -msgstr[0] "%s wijziging toegepast." -msgstr[1] "%s wijzigingen toegepast." +msgid "%(down)s to download, %(up)s to upload" +msgstr "%(down)s te downloaden, %(up)s te uploaden" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Mediabestanden zijn gesynchroniseerd." +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "Tevens %(counts)s mediabestand (%(total)s) overzetten" +msgstr[1] "Tevens %(counts)s mediabestanden (%(total)s) overzetten" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" -"%s mediabestand ontbreekt aan beide kanten en kon niet worden overgedragen." +"%s mediabestand ontbreekt aan beide kanten en kan niet worden overgedragen." msgstr[1] "" -"%s mediabestanden ontbreken aan beide kanten en konden niet worden " +"%s mediabestanden ontbreken aan beide kanten en kunnen niet worden " "overgedragen." -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "%s wijziging toegepast." +msgstr[1] "%s wijzigingen toegepast." + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "Beide stambomen zijn gesynchroniseerd." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Mediabestanden zijn gesynchroniseerd." + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "%s mediabestand met succes gedownload." msgstr[1] "%s mediabestanden met succes gedownload." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "%s fout opgetreden bij het downloaden." msgstr[1] "%s fouten opgetreden bij het downloaden." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "%s mediabestand met succes geüploadet." msgstr[1] "%s mediabestanden met succes geüploadet." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "%s fout opgetreden bij het uploaden." msgstr[1] "%s fouten opgetreden bij het uploaden." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "Geen server geconfigureerd" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "%(user)s op %(server)s" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "%(where)s — %(synced)s" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "Nooit gesynchroniseerd" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "Zojuist gesynchroniseerd" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "%s minuut geleden gesynchroniseerd" +msgstr[1] "%s minuten geleden gesynchroniseerd" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "%s uur geleden gesynchroniseerd" +msgstr[1] "%s uren geleden gesynchroniseerd" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "%s dag geleden gesynchroniseerd" +msgstr[1] "%s dagen geleden gesynchroniseerd" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "Laatst gesynchroniseerd op %s" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "Gram.py Script" @@ -20541,14 +20911,6 @@ msgstr "phpGedView importeren" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Gebruikersnaam:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Wachtwoord:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26514,6 +26876,63 @@ msgstr "" " \"%s\" te openen\n" " in uw favoriete webnavigator..." +#~ msgid "Fetching remote data..." +#~ msgstr "Gegevens van server ophalen..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Lokale en externe gegevens vergelijken…" + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Wijzigingen zijn met succes toegepast op lokale database." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Doorgaan zonder transportversleuteling?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Doorgaan met HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "HTTPS gebruiken" + +#~ msgid "Reset remote to local" +#~ msgstr "Server opnieuw instellen vanuit lokaal" + +#~ msgid "Reset local to remote" +#~ msgstr "Lokaal opnieuw instellen vanuit server" + +#~ msgid "Local changes" +#~ msgstr "Lokale wijzigingen" + +#~ msgid "Remote changes" +#~ msgstr "Externe wijzigingen" + +#~ msgid "Simultaneous changes" +#~ msgstr "Gelijktijdige wijzigingen" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Informatie over mediabestanden ophalen…" + +#~ msgid "Both trees are the same." +#~ msgstr "Beide stambomen zijn hetzelfde." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Wijzigingen toepassen op de lokale database…" + +#~ msgid "No changes to apply to local database." +#~ msgstr "Geen wijzigingen toe te passen op lokale database." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Wijzigingen toepassen op externe database…" + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Geen wijzigingen nodig op externe database." + +#~ msgid "Missing locally" +#~ msgstr "Lokaal vermist" + +#~ msgid "Missing remotely" +#~ msgstr "Extern vermist" + #~ msgid "Error accessing media object." #~ msgstr "Fout bij het openen van het media-object." @@ -26533,9 +26952,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "URL-fout tijdens het verbinden met de server." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Kan wijzigingen naar de server niet synchroniseren." - #~ msgid "Search" #~ msgstr "Zoeken" diff --git a/po/nn.po b/po/nn.po index 41f8df2c8..5da4553c6 100644 --- a/po/nn.po +++ b/po/nn.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: nn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2014-12-22 21:26+0100\n" "Last-Translator: \n" "Language-Team: Norwegian Nynorsk \n" @@ -2080,7 +2080,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15806,124 +15808,236 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "General Data" +msgid "Generate API Key" +msgstr "Generelle data" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "General Data" +msgid "Generating API key…" +msgstr "Generelle data" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15939,166 +16053,393 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "General Data" +msgid "Synchronization failed" +msgstr "Generelle data" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19714,14 +20055,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/oc.po b/po/oc.po index 2cccb3025..7dd498a99 100644 --- a/po/oc.po +++ b/po/oc.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -2061,7 +2061,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15669,124 +15671,232 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15802,166 +15912,391 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19504,14 +19839,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/pl.po b/po/pl.po index c0e9ad9c2..c9aa1ef33 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,15 +8,15 @@ # Michał Stojek , 2021, 2025. # WaldiS , 2025. # Krystian Safjan , 2025. -# Artur , 2025. +# Artur , 2025, 2026. # Marcin Stefański , 2025. msgid "" msgstr "" "Project-Id-Version: GRAMPS 3.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" -"PO-Revision-Date: 2025-12-14 21:00+0000\n" -"Last-Translator: WaldiS \n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" +"PO-Revision-Date: 2026-08-12 22:56+0000\n" +"Last-Translator: Artur \n" "Language-Team: Polish \n" "Language: pl\n" @@ -25,7 +25,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.15-dev\n" +"X-Generator: Weblate 2026.9.dev0\n" "X-Poedit-Language: Polish\n" "X-Poedit-Country: POLAND\n" "X-Poedit-Basepath: .\n" @@ -38,13 +38,13 @@ msgid "Ignore birthdays with tag" msgstr "Ignoruj urodziny z etykietą" msgid "Month and day" -msgstr "" +msgstr "Miesiąc i dzień" msgid "Only show birthdays with tag" msgstr "Pokazuj tylko urodziny z etykietą" msgid "Proximity to current date" -msgstr "" +msgstr "Odległość od bieżącej daty" #, fuzzy #| msgid "Ignore birthdays with tag" @@ -192,7 +192,7 @@ msgstr "Generuje linie potomków osoby" #: AncestryTableReport/AncestryTableReport.py:133 #, python-format msgid "Person %(name)s is not in the Database" -msgstr "" +msgstr "Osoba, %(name)s, nie znajduje się w bazie danych" #: AncestryTableReport/AncestryTableReport.py:277 #, fuzzy, python-format @@ -223,7 +223,7 @@ msgstr "Dane ogólne" #: AncestryTableReport/AncestryTableReport.py:472 msgid "To start a new page after each generation." -msgstr "" +msgstr "Rozpocznij nową stronę po każdym pokoleniu." #: AncestryTableReport/AncestryTableReport.py:475 #, fuzzy @@ -248,6 +248,8 @@ msgid "" "By default, except for gregorian dates, Gramps shows the name of the " "calendar in the dates." msgstr "" +"Domyślnie, z wyjątkiem dat gregoriańskich, Gramps pokazuje nazwę kalendarza " +"w datach." #: AncestryTableReport/AncestryTableReport.py:519 #: RepositoriesReport/RepositoriesReport.py:175 @@ -291,6 +293,8 @@ msgid "" "The style used for an empty row.\n" "To enlarge the height of the empty row, just increse the size of the police." msgstr "" +"Styl używany dla pustego rzędu. \n" +"Aby powiększyć wysokość pustego wiersza, zwiększ rozmiar czcionki." #: AncestryTableReport/AncestryTableReport.py:632 #, fuzzy @@ -1044,7 +1048,7 @@ msgstr "gotowe!\n" #: CalculateEstimatedDates/CalculateEstimatedDates.py:432 #, python-format msgid "Skipped %d people due to errors (see log).\n" -msgstr "" +msgstr "Pominięto %d osoby z powodu błędów (sprawdz logs).\n" #: CalculateEstimatedDates/CalculateEstimatedDates.py:347 msgid "" @@ -1176,7 +1180,7 @@ msgstr "" #: ChatWithTree/ChatWithTree.gpr.py:18 msgid "Chat With Tree" -msgstr "" +msgstr "Rozmawiaj z drzewem (Chat with Tree)" #: ChatWithTree/ChatWithTree.py:149 msgid "Type a message..." @@ -1199,11 +1203,11 @@ msgstr "" #: ChatWithTree/ChatWithTree.py:472 msgid "The chatbot is currently processing a query. Please wait." -msgstr "" +msgstr "Chatbot przetwarza obecnie zapytanie. Proszę poczekać." #: ChatWithTree/ChatWithTree.py:499 msgid "An error occurred while processing your query." -msgstr "" +msgstr "Wystąpił błąd podczas przetwarzania zapytania." #: ChatWithTree/chatwithllm.py:119 msgid "Tree: '{}'" @@ -1459,7 +1463,7 @@ msgstr "Kolor RGB dla kobiecych kafelków." #: D3Charts/AncestralCollapsibleTree.py:860 msgid "Female Expandable Background" -msgstr "" +msgstr "Rozszerzalne tło dla kobiet" #: D3Charts/AncestralCollapsibleTree.py:862 msgid "RGB-color for female expandable box background." @@ -1469,13 +1473,13 @@ msgstr "Kolor RGB dla kobiecych rozszerzalnych kafelków." #: D3Charts/DescendantIndentedTree.py:1830 #: DescendantSpaceTree/DescendantSpaceTree.py:1132 msgid "The destination path for generated files." -msgstr "" +msgstr "Ścieżka docelowa dla wygenerowanych plików." #: D3Charts/AncestralCollapsibleTree.py:873 D3Charts/AncestralFanChart.py:745 #: D3Charts/DescendantIndentedTree.py:1835 #: TimePedigreeHTML/TimePedigreeHtml.py:876 msgid "The destination file name for html content." -msgstr "" +msgstr "Nazwa pliku docelowego dla zawartości HTML." #: D3Charts/AncestralFanChart.gpr.py:23 msgid "Ancestral Fan Chart" @@ -2113,7 +2117,7 @@ msgstr "Plik drzewa genealogicznego" #: DataEntryGramplet/DataEntryGramplet.py:429 msgid "Please open a Family Tree to edit data." -msgstr "" +msgstr "Otwórz drzewo genealogiczne, aby edytować dane." #: DataEntryGramplet/DataEntryGramplet.py:446 #: DataEntryGramplet/DataEntryGramplet.py:578 @@ -2123,7 +2127,7 @@ msgstr "Gramplet edycji daty: %s" #: DataEntryGramplet/DataEntryGramplet.py:508 msgid "Please open a Family Tree before adding a person." -msgstr "" +msgstr "Przed dodaniem osoby otwórz drzewo genealogiczne." #: DataEntryGramplet/DataEntryGramplet.py:524 msgid "Can't add new person." @@ -2250,7 +2254,9 @@ msgid "Calculate" msgstr "Oblicz" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "Kopiuj" @@ -2291,11 +2297,11 @@ msgstr "Pauza" #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:108 msgid "Pause the current search" -msgstr "" +msgstr "Wstrzymaj bieżące wyszukiwanie" #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:111 msgid "▶ Continue" -msgstr "" +msgstr "▶ Kontynuuj" #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:114 #, fuzzy @@ -2315,15 +2321,15 @@ msgstr "Kopiuj" #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:120 msgid "Copy selected people to clipboard" -msgstr "" +msgstr "Skopiuj wybrane osoby do schowka" #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:128 msgid "🗑 Clear" -msgstr "" +msgstr "🗑 Wyczyść" #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:129 msgid "Clear all results and reset" -msgstr "" +msgstr "Wyczyść wszystkie wyniki i zresetuj" #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:158 #, fuzzy @@ -2390,7 +2396,7 @@ msgstr "Nie wybrano aktywnej osoby." #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:347 msgid "Initializing search..." -msgstr "" +msgstr "Inicjowanie wyszukiwania..." #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:366 msgid "Looking for relationship between\n" @@ -2463,7 +2469,7 @@ msgstr "" #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:471 msgid "Error during search: {}" -msgstr "" +msgstr "Błąd podczas wyszukiwania: {}" #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:481 #, fuzzy @@ -2473,7 +2479,7 @@ msgstr "Usuwanie '%s'..." #: DeepConnectionsGramplet/DeepConnectionsGramplet.py:489 msgid "Search interrupted by user" -msgstr "" +msgstr "Wyszukiwanie przerwane przez użytkownika" #: DenominoViso/DenominoViso.gpr.py:9 msgid "DenominoViso" @@ -2599,7 +2605,7 @@ msgstr "Opcje DenominoViso" #: DenominoViso/DenominoViso.py:2557 msgid "The destination file for the html-content." -msgstr "" +msgstr "Plik docelowy dla zawartości HTML." #: DenominoViso/DenominoViso.py:2560 msgid "Central Person" @@ -3735,6 +3741,8 @@ msgid "" "Name of the Font to use. On Windows enter the file name of the .ttf at /" "Windows/Fonts" msgstr "" +"Nazwa czcionki, której należy użyć. W systemie Windows wpisz nazwę pliku " +".ttf w /Windows/Fonts" #: DescendantsLines/DescendantsLines.py:1623 #, fuzzy @@ -5782,7 +5790,7 @@ msgstr "" #: FamilySheet/FamilySheet.py:232 FamilySheet/FamilySheet.py:275 #, python-format msgid "→ %s" -msgstr "" +msgstr "→ %s" #: FamilySheet/FamilySheet.py:397 #, python-format @@ -5797,7 +5805,7 @@ msgstr "Adres: %(location)s" #: FamilySheet/FamilySheet.py:469 #, python-format msgid "; %(type)s: %(value)s" -msgstr "" +msgstr "; %(type)s: %(value)s" #: FamilySheet/FamilySheet.py:557 msgid "Source references:" @@ -6372,7 +6380,7 @@ msgstr "Dopasowuje osoby spokrewnione z każdym, kto pasuje do filtru osób" #: FilterRules/matchpersonfilterrole.gpr.py:7 msgid "Events from people with role" -msgstr "" +msgstr "Wydarzenia od osób pełniących rolę" #: FilterRules/matchpersonfilterrole.gpr.py:8 #, fuzzy @@ -16289,132 +16297,252 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +#, fuzzy +#| msgid "Gramps Web Sync" +msgid "GrampsWebApiDb" msgstr "Synchronizacja Gramps Web" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." -msgstr "Synchronizuje lokalną bazę danych z instancją Gramps Web." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" -#: GrampsWebSync/grampswebsync.py:124 -#, python-format +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/grampswebapidb.py:262 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/grampswebapidb.py:422 +#, python-format +msgid "" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." msgstr "" -"Uwierzytelnianie nie powiodło się. Sprawdź swoją nazwę użytkownika i hasło." -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." -msgstr "Dostęp zabroniony. Sprawdź nazwę użytkownika i hasło." - -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." -msgstr "Nie znaleziono usługi GrampsWeb. Sprawdź adres URL." +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." -msgstr "Zbyt wiele żądań, spróbuj ponownie za kilka sekund." +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." -msgstr "Drzewo GrampsWeb jest wyłączone." +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -"Połączenie nie powiodło się. Sprawdź adres URL i połączenie internetowe." -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." -msgstr "Nieprawidłowa odpowiedź serwera. Sprawdź adres URL." +#: GrampsWebApiDb/mintapikeytool.py:141 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL" +msgstr "Adres URL serwera: " -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -"Twoje konto użytkownika nie ma wystarczających uprawnień serwera do używania " -"synchronizacji." -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." -msgstr "Nie udało się zaimportować pobranego pliku XML." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" +msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -"Nie można zsynchronizować zmian z serwerem: obiekty zostały zmodyfikowane." -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." -msgstr "Nieoczekiwany błąd podczas stosowania zmian." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "General Data" +msgid "Generate API Key" +msgstr "Dane ogólne" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:162 msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Drzewo genealogiczne dla %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:222 +#, fuzzy +#| msgid "Access forbidden. Please check username and password." +msgid "Please fill in the server URL, username, and password." +msgstr "Dostęp zabroniony. Sprawdź nazwę użytkownika i hasło." + +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Pokolenie " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, fuzzy, python-format +#| msgid "Authentication failed. Please check your username and password." +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" +"Uwierzytelnianie nie powiodło się. Sprawdź swoją nazwę użytkownika i hasło." + +#: GrampsWebApiDb/mintapikeytool.py:263 #, python-format -msgid "Server error %s. Please check your connection." -msgstr "Błąd serwera %s. Sprawdź połączenie." +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:271 #, python-format -msgid "Unexpected error: %s" +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, fuzzy, python-format +#| msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" msgstr "Nieoczekiwany błąd: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Pobieranie zdalnych danych..." +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Błąd:" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Porównywanie danych lokalnych i zdalnych..." +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error when writing the report: %s" +msgid "Error creating Family Tree: %s" +msgstr "Błąd podczas zapisywania raportu: %s" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Pomyślnie zastosowano zmiany w lokalnej bazie danych." +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Kontynuować bez szyfrowania transmisji?" +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "Synchronizacja Gramps Web" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "Synchronizuje lokalną bazę danych z instancją Gramps Web." + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +msgid "C_onnect" +msgstr "Wybierz..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -"Podałeś adres URL ze schematem http. Jeśli będziesz kontynuować, twoje hasło " -"zostanie wysłane w postaci zwykłego tekstu przez sieć. Używaj tylko do " -"testów lokalnych!" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Kontynuuj z HTTP" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "Adres URL serwera: " + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Użyj HTTPS" +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16444,159 +16572,365 @@ msgstr "" "Jeśli zamiast tego chcesz scalić dwa znacząco różne drzewa z możliwością " "ręcznych modyfikacji, użyj zamiast tego Narzędzia Scalania Importu." -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "Adres URL serwera: " - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "Błąd:" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Pokolenie " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps Web Sync" +msgid "Gramps Web Sync %s" +msgstr "Synchronizacja Gramps Web" + +#: GrampsWebSync/presentation.py:164 +#, fuzzy +#| msgid "" +#| "You have specified a URL with http scheme. If you continue, your password " +#| "will be sent in clear text over the network. Use only for local testing!" msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" +"Podałeś adres URL ze schematem http. Jeśli będziesz kontynuować, twoje hasło " +"zostanie wysłane w postaci zwykłego tekstu przez sieć. Używaj tylko do " +"testów lokalnych!" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Synchronizacja dwukierunkowa" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." +msgstr "" +"Uwierzytelnianie nie powiodło się. Sprawdź swoją nazwę użytkownika i hasło." -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Resetuj zdalne do lokalnego" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." +msgstr "Dostęp zabroniony. Sprawdź nazwę użytkownika i hasło." -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Resetuj lokalne do zdalnego" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." +msgstr "Nie znaleziono usługi GrampsWeb. Sprawdź adres URL." -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." +msgstr "Zbyt wiele żądań, spróbuj ponownie za kilka sekund." + +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "Drzewo GrampsWeb jest wyłączone." + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" +"Połączenie nie powiodło się. Sprawdź adres URL i połączenie internetowe." -#: GrampsWebSync/grampswebsync.py:722 -#, fuzzy -#| msgid "No changes" -msgid "Local changes" -msgstr "Bez zmian" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "Nieprawidłowa odpowiedź serwera. Sprawdź adres URL." -#: GrampsWebSync/grampswebsync.py:727 -#, fuzzy -#| msgid "No changes" -msgid "Remote changes" -msgstr "Bez zmian" +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" +"Twoje konto użytkownika nie ma wystarczających uprawnień serwera do używania " +"synchronizacji." -#: GrampsWebSync/grampswebsync.py:732 -#, fuzzy -#| msgid "Doing Place changes" -msgid "Simultaneous changes" -msgstr "Wykonywanie zmian miejsc" +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "Nie udało się zaimportować pobranego pliku XML." -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Pobieranie informacji o plikach multimedialnych..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" +"Nie można zsynchronizować zmian z serwerem: obiekty zostały zmodyfikowane." -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Oba drzewa są identyczne." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "Nieoczekiwany błąd podczas stosowania zmian." -#: GrampsWebSync/grampswebsync.py:822 -#, fuzzy -#| msgid "Also apply search by all database." -msgid "Applying changes to local database ..." -msgstr "Zastosuj również wyszukiwanie według wszystkich baz." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" + +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" -#: GrampsWebSync/grampswebsync.py:824 +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "Błąd serwera %s. Sprawdź połączenie." + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "Nieoczekiwany błąd: %s" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 #, fuzzy -#| msgid "Also apply search by all database." -msgid "No changes to apply to local database." -msgstr "Zastosuj również wyszukiwanie według wszystkich baz." +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading the remote family tree…" +msgstr "Pobieranie %s plików multimedialnych" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Stosowanie zmian w zdalnej bazie danych..." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Brak zmian do zastosowania w zdalnej bazie danych." +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Brakuje lokalnie" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Brakuje zdalnie" +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server: objects have been modified." +msgid "Sending the changes to the server…" +msgstr "" +"Nie można zsynchronizować zmian z serwerem: obiekty zostały zmodyfikowane." -#: GrampsWebSync/grampswebsync.py:905 -#, fuzzy, python-format +#: GrampsWebSync/presentation.py:284 +#, fuzzy #| msgid "Downloading %s media file" #| msgid_plural "Downloading %s media files" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Pobieranie %s plików multimedialnych" -msgstr[1] "Pobieranie %s plików multimedialnych" -msgstr[2] "Pobieranie %s plików multimedialnych" +msgid "Downloading media files…" +msgstr "Pobieranie %s plików multimedialnych" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format +#: GrampsWebSync/presentation.py:285 +#, fuzzy #| msgid "Uploading %s media file" #| msgid_plural "Uploading %s media files" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Przesyłanie %s plików multimedialnych" -msgstr[1] "Przesyłanie %s plików multimedialnych" -msgstr[2] "Przesyłanie %s plików multimedialnych" +msgid "Uploading media files…" +msgstr "Przesyłanie %s plików multimedialnych" + +#: GrampsWebSync/presentation.py:293 +#, fuzzy +msgid "Connect" +msgstr "Wybierz..." + +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "Bez zmian" + +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Transfer media files" +msgstr "Przesyłanie %s plików multimedialnych" + +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "Synchronizacja dwukierunkowa" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" msgstr "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Pliki multimedialne są zsynchronizowane." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Dodaj Notatkę" +msgstr[1] "Dodaj Notatkę" +msgstr[2] "Dodaj Notatkę" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" +msgstr "" + +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 #, fuzzy #| msgid "Both trees are the same." msgid "Both trees are already in sync." msgstr "Oba drzewa są identyczne." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Pliki multimedialne są zsynchronizowane." + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Successfully downloaded %s media file." #| msgid_plural "Successfully downloaded %s media files." @@ -16606,7 +16940,7 @@ msgstr[0] "Pomyślnie pobrano %s plik multimedialny." msgstr[1] "Pomyślnie pobrano %s plik multimedialny." msgstr[2] "Pomyślnie pobrano %s plik multimedialny." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, fuzzy, python-format #| msgid "Encountered %s error during download." #| msgid_plural "Encountered %s errors during download." @@ -16616,7 +16950,7 @@ msgstr[0] "Napotkano %s błąd podczas pobierania." msgstr[1] "Napotkano %s błąd podczas pobierania." msgstr[2] "Napotkano %s błąd podczas pobierania." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Successfully uploaded %s media file." #| msgid_plural "Successfully uploaded %s media files." @@ -16626,7 +16960,7 @@ msgstr[0] "Pomyślnie przesłano %s plik multimedialny." msgstr[1] "Pomyślnie przesłano %s plik multimedialny." msgstr[2] "Pomyślnie przesłano %s plik multimedialny." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, fuzzy, python-format #| msgid "Encountered %s error during upload." #| msgid_plural "Encountered %s errors during upload." @@ -16636,6 +16970,57 @@ msgstr[0] "Napotkano %s błąd podczas przesyłania." msgstr[1] "Napotkano %s błąd podczas przesyłania." msgstr[2] "Napotkano %s błąd podczas przesyłania." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -20518,14 +20903,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" @@ -26502,6 +26879,73 @@ msgid "" " into your preferred web navigator ..." msgstr "" +#~ msgid "Fetching remote data..." +#~ msgstr "Pobieranie zdalnych danych..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Porównywanie danych lokalnych i zdalnych..." + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Pomyślnie zastosowano zmiany w lokalnej bazie danych." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Kontynuować bez szyfrowania transmisji?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Kontynuuj z HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "Użyj HTTPS" + +#~ msgid "Reset remote to local" +#~ msgstr "Resetuj zdalne do lokalnego" + +#~ msgid "Reset local to remote" +#~ msgstr "Resetuj lokalne do zdalnego" + +#, fuzzy +#~| msgid "No changes" +#~ msgid "Local changes" +#~ msgstr "Bez zmian" + +#, fuzzy +#~| msgid "No changes" +#~ msgid "Remote changes" +#~ msgstr "Bez zmian" + +#, fuzzy +#~| msgid "Doing Place changes" +#~ msgid "Simultaneous changes" +#~ msgstr "Wykonywanie zmian miejsc" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Pobieranie informacji o plikach multimedialnych..." + +#~ msgid "Both trees are the same." +#~ msgstr "Oba drzewa są identyczne." + +#, fuzzy +#~| msgid "Also apply search by all database." +#~ msgid "Applying changes to local database ..." +#~ msgstr "Zastosuj również wyszukiwanie według wszystkich baz." + +#, fuzzy +#~| msgid "Also apply search by all database." +#~ msgid "No changes to apply to local database." +#~ msgstr "Zastosuj również wyszukiwanie według wszystkich baz." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Stosowanie zmian w zdalnej bazie danych..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Brak zmian do zastosowania w zdalnej bazie danych." + +#~ msgid "Missing locally" +#~ msgstr "Brakuje lokalnie" + +#~ msgid "Missing remotely" +#~ msgstr "Brakuje zdalnie" + #~ msgid "Error accessing media object." #~ msgstr "Błąd dostępu do obiektu multimedialnego." @@ -26521,13 +26965,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "Błąd adresu URL podczas łączenia z serwerem." -#, fuzzy -#~| msgid "" -#~| "Unable to synchronize changes to server: objects have been modified." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "" -#~ "Nie można zsynchronizować zmian z serwerem: obiekty zostały zmodyfikowane." - #~ msgid "Search" #~ msgstr "Szukaj" diff --git a/po/pt_BR.po b/po/pt_BR.po index 8ab92a0be..ff84a9f2d 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: trunk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-06-28 22:01+0000\n" "Last-Translator: Andre Magri \n" "Language-Team: Portuguese (Brazil) Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Searching given names" +msgid "Username" +msgstr "Pesquisando nomes próprios" + +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "General Data" +msgid "Generate API Key" +msgstr "Dados gerais" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Arvore genealógica para %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Geração " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Selecting... " +msgid "C_onnect" +msgstr "Selecionando... " + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16482,166 +16602,396 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Geração " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." +msgstr "" + +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" + +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "" + +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" + +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "" + +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" + +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Selecting... " +msgid "Connect" +msgstr "Selecionando... " + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add as a Mother" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Adicionar como mãe" +msgstr[1] "Adicionar como mãe" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -20452,14 +20802,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/pt_PT.po b/po/pt_PT.po index 5a7a08dd5..ffc841091 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gramps51\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" -"PO-Revision-Date: 2026-08-03 04:01+0000\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" +"PO-Revision-Date: 2026-08-17 03:51+0000\n" "Last-Translator: Pedro Albuquerque \n" "Language-Team: Portuguese (Portugal) \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.8.dev0\n" +"X-Generator: Weblate 2026.9.dev0\n" msgid "Birthdays" msgstr "Aniversários" @@ -2185,7 +2185,9 @@ msgid "Calculate" msgstr "Calcular" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "Copiar" @@ -15426,282 +15428,280 @@ msgid "Select Form" msgstr "Seleccionar formulário" #: GOQLFilter/goql.gpr.py:31 -#, fuzzy -#| msgid "Person Relationship Filter" msgid "Person GOQL Filter" -msgstr "Filtro de parentescos do indivíduo" +msgstr "Filtro GOQL do indivíduo" #: GOQLFilter/goql.gpr.py:32 msgid "Gramplet providing a gramps-object-query-language person filter" msgstr "" +"Gramplet que oferece a linguagem gramps-object-query-language para indivíduos" #: GOQLFilter/goql.gpr.py:39 GOQLFilter/goql.gpr.py:58 #: GOQLFilter/goql.gpr.py:77 GOQLFilter/goql.gpr.py:96 #: GOQLFilter/goql.gpr.py:117 GOQLFilter/goql.gpr.py:136 #: GOQLFilter/goql.gpr.py:155 GOQLFilter/goql.gpr.py:174 #: GOQLFilter/goql.gpr.py:193 -#, fuzzy -#| msgid "Filtering" msgid "GOQL Filter" -msgstr "A filtrar" +msgstr "Filtro GOQL" #: GOQLFilter/goql.gpr.py:50 -#, fuzzy -#| msgid "Family Filter name:" msgid "Family GOQL Filter" -msgstr "Nome do filtro de família:" +msgstr "Filtro GOQL de família" #: GOQLFilter/goql.gpr.py:51 msgid "Gramplet providing a gramps-object-query-language family filter" msgstr "" +"Gramplet que oferece a linguagem gramps-object-query-language para famílias" #: GOQLFilter/goql.gpr.py:69 msgid "Event GOQL Filter" -msgstr "" +msgstr "Filtro GOQL de eventos" #: GOQLFilter/goql.gpr.py:70 msgid "Gramplet providing a gramps-object-query-language event filter" msgstr "" +"Gramplet que oferece a linguagem gramps-object-query-language para eventos" #: GOQLFilter/goql.gpr.py:88 -#, fuzzy -#| msgid "Place _filter:" msgid "Place GOQL Filter" -msgstr "_Filtro de local:" +msgstr "Filtro GOQL de local" #: GOQLFilter/goql.gpr.py:89 msgid "Gramplet providing a gramps-object-query-language place filter" msgstr "" +"Gramplet que oferece a linguagem gramps-object-query-language para locais" #: GOQLFilter/goql.gpr.py:107 -#, fuzzy -#| msgid "Repository title" msgid "Repository GOQL Filter" -msgstr "Título do repositório" +msgstr "Filtro GOQL de repositórios" #: GOQLFilter/goql.gpr.py:109 msgid "Gramplet providing a gramps-object-query-language repository filter" msgstr "" +"Gramplet que oferece a linguagem gramps-object-query-language para " +"repositórios" #: GOQLFilter/goql.gpr.py:128 -#, fuzzy -#| msgid "Source type" msgid "Source GOQL Filter" -msgstr "Tipo de fonte" +msgstr "Filtro GOQL para fontes" #: GOQLFilter/goql.gpr.py:129 msgid "Gramplet providing a gramps-object-query-language source filter" msgstr "" +"Gramplet que oferece a linguagem gramps-object-query-language para fontes" #: GOQLFilter/goql.gpr.py:147 -#, fuzzy -#| msgid "Relationship Filter" msgid "Citation GOQL Filter" -msgstr "Filtro de parentescos" +msgstr "Filtro GOQL de citações" #: GOQLFilter/goql.gpr.py:148 -#, fuzzy -#| msgid "Gramplet providing a person filter on relationships" msgid "Gramplet providing a gramps-object-query-language citation filter" -msgstr "Gramplet que permite filtrar as relações por indivíduo" +msgstr "" +"Gramplet que oferece a linguagem gramps-object-query-language para citações" #: GOQLFilter/goql.gpr.py:166 -#, fuzzy -#| msgid "Media Object Title" msgid "Media GOQL Filter" -msgstr "Título do objecto multimédia" +msgstr "Filtro GOQL de multimédia" #: GOQLFilter/goql.gpr.py:167 msgid "Gramplet providing a gramps-object-query-language media filter" msgstr "" +"Gramplet que oferece a linguagem gramps-object-query-language para multimédia" #: GOQLFilter/goql.gpr.py:185 -#, fuzzy -#| msgid "Note Link (internal)" msgid "Note GOQL Filter" -msgstr "Ligação de nota (interna)" +msgstr "Filtro GOQL de notas" #: GOQLFilter/goql.gpr.py:186 msgid "Gramplet providing a gramps-object-query-language note filter" msgstr "" +"Gramplet que oferece a linguagem gramps-object-query-language para notas" #: GOQLFilter/goql.py:186 msgid "A gramps-object-query-language where-expression, e.g.\n" -msgstr "" +msgstr "Uma expressão-onde da gramps-object-query-language, e.g.\n" #: GOQLFilter/goql.py:188 msgid "Enter inserts a newline; Ctrl+Enter runs Find.\n" -msgstr "" +msgstr "Enter insere uma nova linha; Ctrl+Enter faz uma procura.\n" #: GOQLFilter/goql.py:189 msgid "Up/Down at the first/last line recalls previous expressions.\n" -msgstr "" +msgstr "Acima/Abaixo na primeira/última linha chama a expressão anterior.\n" #: GOQLFilter/goql.py:190 msgid "Tab always completes -- it never inserts a tab character." -msgstr "" +msgstr "Tab completa sempre -- nunca insere uma tabulação." #: GOQLFilter/goql.py:213 -#, fuzzy, python-format -#| msgid "Use filter " +#, python-format msgid "%s filter" -msgstr "Usar filtro " +msgstr "Filtro %s" #: GOQLFilter/goql.py:233 msgid "This resets the filter parameters to empty state." -msgstr "" +msgstr "Isto remove todos os parâmetros de filtros." #: GOQLFilter/goql.py:239 msgid "This opens a dialog to save the current expression as a named filter." msgstr "" +"Isto abre um diálogo para gravar a expressão actual como um filtro com nome." #: GOQLFilter/goql.py:244 msgid "Open this gramplet's help page in a browser." -msgstr "" +msgstr "Abre a página de ajuda deste gramplet num navegador." #: GOQLFilter/goql.py:402 msgid "SQL" -msgstr "" +msgstr "SQL" #: GOQLFilter/goql.py:403 -#, fuzzy -#| msgid "Python Shell" msgid "Python evaluation" -msgstr "Consola Python" +msgstr "Avaliação Python" #: GOQLFilter/goql.py:523 -#, fuzzy, python-format -#| msgid "Error: login failed" +#, python-format msgid "Error applying filter: %s" -msgstr "Erro: falha ao iniciar sessão" +msgstr "Erro ao aplicar o filtro: %s" #: GOQLFilter/goql.py:526 #, python-format msgid "Showing %(shown)d of %(total)d (%(method)s)" -msgstr "" +msgstr "A mostrar %(shown)d de %(total)d (%(method)s)" #: GOQLFilter/goql.py:541 -#, fuzzy, python-format -#| msgid "Error creating note" +#, python-format msgid "Error resetting filter: %s" -msgstr "Erro ao criar a nota" +msgstr "Erro ao repor o filtro: %s" #: GOQLFilter/goql.py:548 -#, fuzzy -#| msgid "Enter Python expressions" msgid "Enter an expression first" -msgstr "Insira expressões Python" +msgstr "Insira uma expressão primeiro" #: GOQLFilter/goql.py:560 #, python-brace-format msgid "Created by the GOQL Filter gramplet on {today}" -msgstr "" +msgstr "Criado pelo gramplet GOQL Filter a {today}" #: GOQLFilter/whereexprrule.gpr.py:30 GOQLFilter/whereexprrule.py:261 msgid "People matching the " -msgstr "" +msgstr "Indivíduos que cumprem a " #: GOQLFilter/whereexprrule.gpr.py:32 msgid "" "Matches people for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Identifica os indivíduos para os quais a dada expressão-onde da gramps-" +"object-query-language é verdadeira" #: GOQLFilter/whereexprrule.gpr.py:50 GOQLFilter/whereexprrule.py:266 -#, fuzzy -#| msgid "Families matching " msgid "Families matching the " -msgstr "Famílias com " +msgstr "Famílias que cumprem a " #: GOQLFilter/whereexprrule.gpr.py:52 msgid "" "Matches families for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Identifica as famílias para as quais a dada expressão-onde da gramps-object-" +"query-language é verdadeira" #: GOQLFilter/whereexprrule.gpr.py:70 GOQLFilter/whereexprrule.py:271 msgid "Events matching the " -msgstr "" +msgstr "Eventos que cumprem a " #: GOQLFilter/whereexprrule.gpr.py:72 msgid "" "Matches events for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Identifica os eventos para os quais a dada expressão-onde da gramps-object-" +"query-language é verdadeira" #: GOQLFilter/whereexprrule.gpr.py:90 GOQLFilter/whereexprrule.py:276 msgid "Places matching the " -msgstr "" +msgstr "Locais que cumprem a " #: GOQLFilter/whereexprrule.gpr.py:92 msgid "" "Matches places for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Identifica os locais para os quais a dada expressão-onde da gramps-object-" +"query-language é verdadeira" #: GOQLFilter/whereexprrule.gpr.py:110 GOQLFilter/whereexprrule.py:281 msgid "Repositories matching the " -msgstr "" +msgstr "Repositórios que cumprem a " #: GOQLFilter/whereexprrule.gpr.py:112 msgid "" "Matches repositories for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Identifica os repositórios para os quais a dada expressão-onde da gramps-" +"object-query-language é verdadeira" #: GOQLFilter/whereexprrule.gpr.py:130 GOQLFilter/whereexprrule.py:286 -#, fuzzy -#| msgid "Source matching parameters" msgid "Sources matching the " -msgstr "Parâmetros de comparação de fontes" +msgstr "Fontes que cumprem a " #: GOQLFilter/whereexprrule.gpr.py:132 msgid "" "Matches sources for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Identifica as fontes para as quais a dada expressão-onde da gramps-object-" +"query-language é verdadeira" #: GOQLFilter/whereexprrule.gpr.py:150 GOQLFilter/whereexprrule.py:291 msgid "Citations matching the " -msgstr "" +msgstr "Citações que cumprem a " #: GOQLFilter/whereexprrule.gpr.py:152 msgid "" "Matches citations for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Identifica as citações para as quais a dada expressão-onde da gramps-object-" +"query-language é verdadeira" #: GOQLFilter/whereexprrule.gpr.py:170 GOQLFilter/whereexprrule.py:296 msgid "Media matching the " -msgstr "" +msgstr "Multimédia que cumpre a " #: GOQLFilter/whereexprrule.gpr.py:172 msgid "" "Matches media for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Identifica a multimédia para a qual a dada expressão-onde da gramps-object-" +"query-language é verdadeira" #: GOQLFilter/whereexprrule.gpr.py:190 GOQLFilter/whereexprrule.py:301 msgid "Notes matching the " -msgstr "" +msgstr "Notas que cumprem a " #: GOQLFilter/whereexprrule.gpr.py:192 msgid "" "Matches notes for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Identifica as notas para as quais a dada expressão-onde da gramps-object-" +"query-language é verdadeira" #: GOQLFilter/whereexprrule.py:212 -#, fuzzy -#| msgid "Regular Expression" msgid "GOQL expression" -msgstr "Expressão regular" +msgstr "Expressão GOQL" #: GOQLFilter/whereexprrule.py:214 msgid "" "Matches objects for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Identifica os objectos para os quais a dada expressão-onde da gramps-object-" +"query-language é verdadeira" #: GedcomExtensions/GedcomExtensions.gpr.py:32 msgid "Export GEDCOM Extensions (GED2)" @@ -16268,16 +16268,338 @@ msgstr "GrampsChat" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "AI Chatbot Gramplet (requer ligação a um serviço LLM)" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" +msgstr "GrampsWebApiDb" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "Base de dados da API do Gramps _Web" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" +"Utilize um servidor da API Web do Gramps (por exemplo, o gramps-connect ou o " +"Gramps Web) como base de dados activa, com um espelho local para aumentar a " +"velocidade." + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." +msgstr "" +"A conta que está a efectuar a autenticação através da GRAMPS_WEB_API_KEY não " +"tem permissão no servidor para esta operação (HTTP 403 Proibido). Gere uma " +"chave para uma conta com permissões suficientes ou peça ao administrador do " +"servidor para conceder acesso a esta conta." + +#: GrampsWebApiDb/grampswebapidb.py:422 +#, python-format +msgid "" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" +"Esta árvore genealógica tem o nome \"%(actual)s\", mas a GRAMPS_WEB_API_KEY " +"está actualmente a autenticar-se como \"%(expected)s\". Renomeie esta árvore " +"genealógica para \"%(expected_typeable)s\" (Árvores genealógicas → Gerir " +"árvores genealógicas) se pretender que ela reflicta essa conta, ou abra/crie " +"a árvore genealógica que já tenha esse nome — reutilizar esta misturaria os " +"seus dados locais existentes com os da outra conta." + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "Tentar novamente a alteração local após conflito com o servidor" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "Limpar o espelho local antes da ressincronização completa" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "Gerar chave da API Web do Gramps" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" +"Converte o URL do servidor da API Web do Gramps, o nome de utilizador e a " +"senha num valor GRAMPS_WEB_API_KEY para o GrampsWebApiDb e, opcionalmente, " +"cria uma árvore genealógica GrampsWebApiDb correspondente, com o nome " +"correcto, para esse valor." + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" +msgstr "URL do servidor" + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "e.g. https://o-seu-servidor/api" + +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" +msgstr "Utilizador" + +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" +msgstr "Senha" + +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" +msgstr "Gerar chave aPI" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" +"Introduza o URL do servidor, utilizador e senha e, em seguida, clique em «" +"Gerar chave API»." + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "GRAMPS_WEB_API_KEY" + +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" +msgstr "Criar árvore de família sincronizada para esta chave" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" +"Encontrado um %s já existente para esta sessão. Clique em «Criar árvore " +"genealógica sincronizada» para o utilizar directamente ou preencha o " +"formulário acima para gerar uma chave diferente." + +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." +msgstr "Por favor, preencha o URL do servidor, o utilizador e a senha." + +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" +msgstr "Geração de chave API…" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" +"Falha ao autenticar. (HTTP %d): por favor, verifique os dados de acesso." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "O servidor devolveu um erro (HTTP %d %s): verifique o URL." + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "Não foi possível aceder ao servidor: verifique o URL . (%s)" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "Resposta inesperada do servidor: %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "Erro: %s" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" +"Concluído. O %s está agora definido para esta sessão do Gramps — não é " +"necessário reiniciar. Copie a chave abaixo para a definir também no seu " +"ambiente de consola para a próxima vez." + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "A procurar a identidade da conta…" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" +"Já existe uma árvore genealógica com o nome \"%s\". Abra-a em \"Árvores " +"genealógicas → Gerir árvores genealógicas\", em vez de criar outra." + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, python-format +msgid "Error creating Family Tree: %s" +msgstr "Erro ao criar a árvore de família: %s" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" +"Foi criada a árvore genealógica \"%s\". Abra-a em \"Árvores genealógicas → " +"Gerir árvores genealógicas\" para iniciar a sincronização." + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" -msgstr "Sincronização \"web\" do Gramps" +msgstr "Sincronização web do Gramps" #: GrampsWebSync/grampswebsync.gpr.py:30 msgid "Synchronizes a local database with a Gramps Web instance." msgstr "Sincroniza uma base de dados local com uma instância do Gramps Web." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "_Tentar novamente" + +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" +msgstr "Li_gar" + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "Esquecer este servidor?" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" +"O endereço, o utilizador e a senha gravados para este servidor serão " +"eliminados, juntamente com o registo da última vez que esta árvore " +"genealógica foi sincronizada com o mesmo. A próxima sincronização comparará " +"as duas árvores a partir do início." + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "Esquecer" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" +"Estas credenciais foram utilizadas pela última vez com uma árvore " +"genealógica diferente. Verifique o servidor antes de continuar." + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "Alterar servidor…" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "URL do servidor:" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Utilizador:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Senha:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "Lembrar senha" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "Esquecer este servidor" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "Acerca da ferramenta" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "Abrir o manual em linha" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" +"Esta ferramenta permite sincronizar a árvore genealógica actual com uma " +"árvore genealógica remota servida pelo Gramps Web.\n" +"\n" +"A ferramenta assume que as duas árvores são derivadas uma da outra, ou seja, " +"uma das duas foi criada a partir de uma exportação Gramps XML (não GEDCOM!) " +"da outra.\n" +"\n" +"Após uma sincronização bem sucedida, as duas árvores serão idênticas. As " +"modificações serão propagadas com base nos carimbos de data e hora. Será " +"solicitada uma confirmação antes que quaisquer alterações sejam feitas nas " +"árvores local ou remota.\n" +"\n" +"Se, em vez disso, pretender unir duas árvores significativamente diferentes " +"com a opção de efectuar modificações manuais, utilize a Ferramenta de união " +"de importação." + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "Erro:" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "Aviso:" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "Modo de sincronização:" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "Sincronização concluída" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "A sincronização falhou" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "Gramps Web Sync %(addon)s, Web API %(api)s" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "Sincronização web do Gramps %s" + +#: GrampsWebSync/presentation.py:164 +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"Este URL usa http, a sua senha será enviada em texto simples. Utilize apenas " +"para testes locais." + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " @@ -16286,7 +16608,7 @@ msgstr "" "Impossível utilizar o porta-chaves do sistema. O confinamento do Snap " "bloqueia o acesso até que execute: %s" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." @@ -16294,56 +16616,56 @@ msgstr "" "Impossível utilizar o porta-chaves do sistema. Terá de inserir a sua senha " "sempre que necessário." -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "Falha ao autenticar. Por favor, verifique os dados de acesso." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "Acesso proibido. Por favor, verifique o utilizador e a senha." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "Serviço GrampsWeb não encontrado. Por favor, verifique o URL." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "Demasiados pedidos, por favor, tente mais tarde." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "A árvore GrampsWeb está desactivada." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "" "Falha de ligação. Por favor, verifique o URL e a sua ligação à Internet." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "Resposta do servidor inválida. Por favor, verifique o URL." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "" "O utilizador não tem permissões de servidor suficientes para utilizar a " "sincronização." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "Falha ao importar o ficheiro XML transferido." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" "Impossível sincronizar alterações com o servidor: os objectos foram " "modificados." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "Erro inesperado ao aplicar as alterações." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." @@ -16351,98 +16673,119 @@ msgstr "" "A árvore genealógica foi alterada enquanto as alterações estavam a ser " "revistas. Nenhuma alteração foi aplicada. Por favor, compare novamente." -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" +"Este servidor executa a API Web do Gramps %(found)s, mas a sincronização " +"requer a versão %(needed)s ou mais recente. Por favor, actualize o servidor." + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" +"Este servidor não indicou a versão da API Web do Gramps, pelo que é " +"demasiado antigo para permitir a sincronização. É necessária a versão %s ou " +"uma versão mais recente." + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" +"Este servidor utiliza a API Web do Gramps %(found)s. Esta versão do Gramps é " +"compatível com a API Web do Gramps %(major)s, pelo que a sincronização com " +"este servidor requer uma versão mais recente do Gramps." + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" +"Este servidor não está configurado para utilizar uma fila de tarefas em 2º " +"plano. A sincronização necessita dessa fila: sem ela, a aplicação das " +"alterações atinge o tempo limite antes de o servidor ter concluído o " +"processo. Por favor, active-a." + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "O servidor não conseguiu aplicar as alterações: %s" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "Erro de servidor %s. Por favor, verifique a ligação." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "Erro inesperado: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "A obter dados remotos..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "A iniciar sessão…" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "A comparar dados locais e remotos..." +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "A transferir a árvore genealógica remota…" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Aplicadas com êxito as alterações à base de dados local." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "A comparar as duas árvores…" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Continuar sem a encriptação de transporte?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "A procurar multimédia em falta…" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" -msgstr "" -"Especificou um URL com esquema http. Se continuar, a sua senha será enviada " -"em texto simples através da rede. Utilize apenas para testes locais!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "Alterações aplicadas a este computador." -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Continuar com HTTP" +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "A enviar as alterações para o servidor…" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Usar HTTPS" +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "A transferir ficheiros multimédia…" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" -"Esta ferramenta permite sincronizar a árvore genealógica actual com uma " -"árvore genealógica remota servida pelo Gramps Web.\n" -"\n" -"A ferramenta assume que as duas árvores são derivadas uma da outra, ou seja, " -"uma das duas foi criada a partir de uma exportação Gramps XML (não GEDCOM!) " -"da outra.\n" -"\n" -"Após uma sincronização bem sucedida, as duas árvores serão idênticas. As " -"modificações serão propagadas com base nos carimbos de data e hora. Será " -"solicitada uma confirmação antes que quaisquer alterações sejam feitas nas " -"árvores local ou remota.\n" -"\n" -"Se, em vez disso, pretender unir duas árvores significativamente diferentes " -"com a opção de efectuar modificações manuais, utilize a Ferramenta de união " -"de importação." +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "A enviar ficheiros multimédia…" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "URL do servidor: " +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "Ligar" -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "Erro:" +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "Aplicar alterações" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" -msgstr "Modo de sincronização" +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "Transferir ficheiros multimédia" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "Sincronização bidireccional" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "Repor o servidor para igualar este computador" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "Repor este computador para igualar o servidor" + +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." @@ -16450,7 +16793,7 @@ msgstr "" "As alterações de ambos os lados são combinadas. Os objectos editados em " "ambos os locais são unidos." -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." @@ -16458,7 +16801,7 @@ msgstr "" "O servidor foi feito para corresponder a este computador. Qualquer alteração " "feita no servidor é descartada." -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." @@ -16466,100 +16809,79 @@ msgstr "" "Este computador foi feito para corresponder ao servidor. Qualquer alteração " "feita aqui é ignorada." -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Sincronização bidireccional" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Repor a remota com a local" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Repor a local com a remota" - -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" -msgstr "Aviso:" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Alterações locais" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Alterações remotas" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Alterações simultâneas" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "A obter informação sobre multimédia..." - -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "As árvores são idênticas." - -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Aplicar alterações à base de dados local." - -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Não aplicar alterações à base de dados local." +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "Vai mudar neste computador (%s objecto)" +msgstr[1] "Vão mudar neste computador (%s objectos)" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "A aplicar alterações à base de dados remota..." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "Vai mudar no servidor (objecto %s)" +msgstr[1] "Vão mudar no servidor (%s objectos)" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Não há alterações a aplicar à base de dados remota." +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Adicionar %s objecto" +msgstr[1] "Adicionar %s objectos" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Locais em falta" +#: GrampsWebSync/presentation.py:594 +#, python-format +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Actualizar %s objecto" +msgstr[1] "Actualizar %s objectos" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Remotos em falta" +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Unir %s objecto" +msgstr[1] "Unir %s objectos" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:596 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "A transferir %s ficheiro multimédia" -msgstr[1] "A transferir %s ficheiros multimédia" +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "Eliminar %s objecto" +msgstr[1] "Eliminar %s objectos" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:615 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "A enviar %s ficheiro multimédia" -msgstr[1] "A enviar %s ficheiros multimédia" +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "Será eliminado %s objecto neste computador." +msgstr[1] "Serão eliminados %s objectos neste computador." -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "Tentar novamente" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "Será eliminado %s objecto no servidor." +msgstr[1] "Serão eliminados %s objectos no servidor." -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:636 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." -msgstr[0] "Aplicar %s alteração." -msgstr[1] "Aplicar %s alterações." +msgid "%(down)s to download, %(up)s to upload" +msgstr "%(down)s para transferir, %(up)s para enviar" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Multimédia sincronizada." +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "Transferir também %(total)s ficheiro multimédia (%(counts)s)" +msgstr[1] "Transferir também %(total)s ficheiros multimédia (%(counts)s)" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" "O ficheiro multimédia %s não existe em nenhum dos lados e não foi possível " "transferi-lo." @@ -16567,38 +16889,97 @@ msgstr[1] "" "Os ficheiros multimédia %s não existem em nenhum dos lados e não foi " "possível transferi-los." -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "Aplicar %s alteração." +msgstr[1] "Aplicar %s alterações." + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "As árvores já estão sincronizadas." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Multimédia sincronizada." + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "Transferiu com êxito %s ficheiro multimédia." msgstr[1] "Transferiu com êxito %s ficheiros multimédia." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "Encontrado %s erro durante a transferência." msgstr[1] "Encontrados %s erros durante a transferência." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "Envio com êxito de %s ficheiro multimédia." msgstr[1] "Envio com êxito de %s ficheiros multimédia." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "%s erro encontrado durante o envio." msgstr[1] "%s erros encontrados durante o envio." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "Nenhum servidor configurado" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "%(user)s no %(server)s" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "%(where)s — %(synced)s" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "Nunca sincronizado" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "Sincronizado agora mesmo" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "Última sincronização há %s minuto" +msgstr[1] "Última sincronização há %s minutos" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "Última sincronização há %s hora" +msgstr[1] "Última sincronização há %s horas" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "Última sincronização há %s dia" +msgstr[1] "Última sincronização há %s dias" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "Última sincronização a %s" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "Escrito Gram.py" @@ -20382,14 +20763,6 @@ msgstr "Importação phpGedView" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Utilizador:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Senha:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "Vista PhpGed" @@ -26331,6 +26704,63 @@ msgstr "" " \"%s\"\n" " no seu navegador web favorito..." +#~ msgid "Fetching remote data..." +#~ msgstr "A obter dados remotos..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "A comparar dados locais e remotos..." + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Aplicadas com êxito as alterações à base de dados local." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Continuar sem a encriptação de transporte?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Continuar com HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "Usar HTTPS" + +#~ msgid "Reset remote to local" +#~ msgstr "Repor a remota com a local" + +#~ msgid "Reset local to remote" +#~ msgstr "Repor a local com a remota" + +#~ msgid "Local changes" +#~ msgstr "Alterações locais" + +#~ msgid "Remote changes" +#~ msgstr "Alterações remotas" + +#~ msgid "Simultaneous changes" +#~ msgstr "Alterações simultâneas" + +#~ msgid "Fetching information about media files..." +#~ msgstr "A obter informação sobre multimédia..." + +#~ msgid "Both trees are the same." +#~ msgstr "As árvores são idênticas." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Aplicar alterações à base de dados local." + +#~ msgid "No changes to apply to local database." +#~ msgstr "Não aplicar alterações à base de dados local." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "A aplicar alterações à base de dados remota..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Não há alterações a aplicar à base de dados remota." + +#~ msgid "Missing locally" +#~ msgstr "Locais em falta" + +#~ msgid "Missing remotely" +#~ msgstr "Remotos em falta" + #~ msgid "Error accessing media object." #~ msgstr "Erro ao aceder ao objecto multimédia." @@ -26350,9 +26780,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "Erro de URL durante a ligação ao servidor." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Impossível sincronizar alterações com o servidor." - #~ msgid "Search" #~ msgstr "Procurar" diff --git a/po/ru.po b/po/ru.po index 77b856ef2..28b9398b3 100644 --- a/po/ru.po +++ b/po/ru.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: gramps50\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-06-09 08:01+0000\n" "Last-Translator: Vadim Barsukov \n" "Language-Team: Russian Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Имя пользователя:" + +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Пароль:" + +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "Создать" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Семейное древо для %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:170 -msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Поколение " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:263 #, python-format -msgid "The server could not apply the changes: %s" +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:271 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:274 #, python-format -msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Errors" +msgid "Error: %s" +msgstr "Ошибки" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error when writing the report: %s" +msgid "Error creating Family Tree: %s" +msgstr "Ошибка при записи отчёта: %s" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 #, fuzzy -#| msgid "Fetching records..." -msgid "Fetching remote data..." -msgstr "Получение записей..." +#| msgid "Gramps version" +msgid "Gramps Web Sync" +msgstr "Версия Gramps" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" -#: GrampsWebSync/grampswebsync.py:344 +#: GrampsWebSync/grampswebsync.py:250 #, fuzzy -#| msgid "Exporting family tree data ..." -msgid "Comparing local and remote data..." -msgstr "Экспортируются данные семейного древа ..." +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Соединение..." -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Web site title" +msgid "Server URL:" +msgstr "Название сайта" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Имя пользователя:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Пароль:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -16492,169 +16616,351 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 #, fuzzy #| msgid "Errors" msgid "Error:" msgstr "Ошибки" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Поколение " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps version" +msgid "Gramps Web Sync %s" +msgstr "Версия Gramps" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -#, fuzzy -#| msgid "No changes" -msgid "Local changes" -msgstr "Нет изменений" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" + +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "" + +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" + +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "" + +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" + +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" -#: GrampsWebSync/grampswebsync.py:727 +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 #, fuzzy -#| msgid "No changes" -msgid "Remote changes" -msgstr "Нет изменений" +#| msgid "Downloading files" +msgid "Downloading the remote family tree…" +msgstr "Загрузка файлов" -#: GrampsWebSync/grampswebsync.py:732 +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 #, fuzzy -#| msgid "Doing Place changes" -msgid "Simultaneous changes" -msgstr "Применение изменений" +#| msgid "Downloading files" +msgid "Downloading media files…" +msgstr "Загрузка файлов" -#: GrampsWebSync/grampswebsync.py:790 +#: GrampsWebSync/presentation.py:285 #, fuzzy -#| msgid "All information about %s" -msgid "Fetching information about media files..." -msgstr "Вся информация о %s" +#| msgid "Downloading files" +msgid "Uploading media files…" +msgstr "Загрузка файлов" -#: GrampsWebSync/grampswebsync.py:816 +#: GrampsWebSync/presentation.py:293 #, fuzzy -#| msgid "Your Tree and import are the same." -msgid "Both trees are the same." -msgstr "Не найдено отличий в Вашем и импортируемом древе." +#| msgid "Connecting..." +msgid "Connect" +msgstr "Соединение..." -#: GrampsWebSync/grampswebsync.py:822 +#: GrampsWebSync/presentation.py:295 #, fuzzy -#| msgid "Also apply search by all database." -msgid "Applying changes to local database ..." -msgstr "Вести поиск по всей базе данных." +#| msgid "No changes" +msgid "Apply changes" +msgstr "Нет изменений" -#: GrampsWebSync/grampswebsync.py:824 +#: GrampsWebSync/presentation.py:296 #, fuzzy -#| msgid "Also apply search by all database." -msgid "No changes to apply to local database." -msgstr "Вести поиск по всей базе данных." +#| msgid "Downloading files" +msgid "Transfer media files" +msgstr "Загрузка файлов" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -#, fuzzy -#| msgid "Missing Files" -msgid "Missing locally" -msgstr "Отсутствующие файлы" +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -#, fuzzy -#| msgid "Missing header" -msgid "Missing remotely" -msgstr "Отсутствует заголовок" +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:593 #, fuzzy, python-format -#| msgid "Downloading files" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Загрузка файлов" -msgstr[1] "Загрузка файлов" -msgstr[2] "Загрузка файлов" +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Добавить тестовые заметки" +msgstr[1] "Добавить тестовые заметки" +msgstr[2] "Добавить тестовые заметки" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:594 #, fuzzy, python-format -#| msgid "Downloading files" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Загрузка файлов" -msgstr[1] "Загрузка файлов" -msgstr[2] "Загрузка файлов" +#| msgid "Writing %s reports..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Запись %s отчётов..." +msgstr[1] "Запись %s отчётов..." +msgstr[2] "Запись %s отчётов..." -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Writing %s reports..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Запись %s отчётов..." +msgstr[1] "Запись %s отчётов..." +msgstr[2] "Запись %s отчётов..." -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:596 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Delete %s object" +msgid_plural "Delete %s objects" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1006 -#, fuzzy -#| msgid "Media Reference" -msgid "Media files are in sync." -msgstr "Ссылка на документ" +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:624 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" +msgstr "" + +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:684 #, fuzzy #| msgid "Your Tree and import are the same." msgid "Both trees are already in sync." msgstr "Не найдено отличий в Вашем и импортируемом древе." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +#, fuzzy +#| msgid "Media Reference" +msgid "Media files are in sync." +msgstr "Ссылка на документ" + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Downloading files" msgid "Successfully downloaded %s media file." @@ -16663,7 +16969,7 @@ msgstr[0] "Загрузка файлов" msgstr[1] "Загрузка файлов" msgstr[2] "Загрузка файлов" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." @@ -16671,7 +16977,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Downloading files" msgid "Successfully uploaded %s media file." @@ -16680,7 +16986,7 @@ msgstr[0] "Загрузка файлов" msgstr[1] "Загрузка файлов" msgstr[2] "Загрузка файлов" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." @@ -16688,6 +16994,57 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -20635,14 +20992,6 @@ msgstr "Импорт phpGedView" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Имя пользователя:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Пароль:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26933,6 +27282,61 @@ msgstr "" " \"%s\"\n" " в Вашем браузере по умолчанию ..." +#, fuzzy +#~| msgid "Fetching records..." +#~ msgid "Fetching remote data..." +#~ msgstr "Получение записей..." + +#, fuzzy +#~| msgid "Exporting family tree data ..." +#~ msgid "Comparing local and remote data..." +#~ msgstr "Экспортируются данные семейного древа ..." + +#, fuzzy +#~| msgid "No changes" +#~ msgid "Local changes" +#~ msgstr "Нет изменений" + +#, fuzzy +#~| msgid "No changes" +#~ msgid "Remote changes" +#~ msgstr "Нет изменений" + +#, fuzzy +#~| msgid "Doing Place changes" +#~ msgid "Simultaneous changes" +#~ msgstr "Применение изменений" + +#, fuzzy +#~| msgid "All information about %s" +#~ msgid "Fetching information about media files..." +#~ msgstr "Вся информация о %s" + +#, fuzzy +#~| msgid "Your Tree and import are the same." +#~ msgid "Both trees are the same." +#~ msgstr "Не найдено отличий в Вашем и импортируемом древе." + +#, fuzzy +#~| msgid "Also apply search by all database." +#~ msgid "Applying changes to local database ..." +#~ msgstr "Вести поиск по всей базе данных." + +#, fuzzy +#~| msgid "Also apply search by all database." +#~ msgid "No changes to apply to local database." +#~ msgstr "Вести поиск по всей базе данных." + +#, fuzzy +#~| msgid "Missing Files" +#~ msgid "Missing locally" +#~ msgstr "Отсутствующие файлы" + +#, fuzzy +#~| msgid "Missing header" +#~ msgid "Missing remotely" +#~ msgstr "Отсутствует заголовок" + #, fuzzy #~| msgid "not found." #~ msgid "Error: URL not found." diff --git a/po/sk.po b/po/sk.po index e50b75498..f2241212e 100644 --- a/po/sk.po +++ b/po/sk.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: GRAMPS 3.1.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" -"PO-Revision-Date: 2026-08-05 18:02+0000\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" +"PO-Revision-Date: 2026-08-17 03:51+0000\n" "Last-Translator: Milan \n" "Language-Team: Slovak \n" @@ -21,7 +21,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" -"X-Generator: Weblate 2026.8.1.dev0\n" +"X-Generator: Weblate 2026.9.dev0\n" msgid "Birthdays" msgstr "Narodeniny" @@ -2191,7 +2191,9 @@ msgid "Calculate" msgstr "Vypočítať" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "Kopírovať" @@ -7253,7 +7255,7 @@ msgstr "Hovädzie mäso" #: Form/form_ca.xml.h:203 msgid "53. Beef - Barrels or Cwts." -msgstr "53. Hovädzie mäso – barely alebo centnery" +msgstr "53. Hovädzie mäso - barely alebo centnery" #: Form/form_ca.xml.h:204 msgid "Pork" @@ -7261,7 +7263,7 @@ msgstr "Bravčové mäso" #: Form/form_ca.xml.h:205 msgid "54. Pork - Barrels or Cwts." -msgstr "54. Bravčové mäso – barely alebo centnery" +msgstr "54. Bravčové mäso - barely alebo centnery" #: Form/form_ca.xml.h:206 msgid "Fish" @@ -16270,8 +16272,191 @@ msgstr "GrampsChat" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "Gramplet AI Chatbot (vyžaduje pripojenie k službe LLM)" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" +msgstr "GrampsWebApiDb" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "Gramps _Web API databáza" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" +"Použite server Gramps Web API (napr. gramps-connect alebo Gramps Web) ako " +"skutočnú databázu, ktorá je kvôli rýchlosti lokálne zrkadlená." + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." +msgstr "" +"Účet, ktorý sa overuje sa cez GRAMPS_WEB_API_KEY, nemá na serveri oprávnenie " +"na túto operáciu (HTTP 403 Forbidden). Vygenerujte kľúč pre účet s " +"dostatočnými oprávneniami, alebo požiadajte administrátora servera, aby " +"tomuto účtu udelil prístup." + +#: GrampsWebApiDb/grampswebapidb.py:422 +#, python-format +msgid "" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" +"Tento rodinný strom sa volá „%(actual)s“, ale GRAMPS_WEB_API_KEY ho " +"momentálne overuje ako „%(expected)s“. Premenujte tento rodinný strom na „%" +"(expected_typeable)s“ (Rodinné stromy → Spravovať rodinné stromy), ak má " +"zrkadliť tento účet, alebo otvorte/vytvorte rodinný strom, ktorý už je tak " +"pomenovaný -- opätovné použitie tohto stromu by zmiešalo jeho existujúce " +"lokálne údaje s údajmi iného účtu." + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "Zopakovať lokálnu zmenu po konflikte so serverom" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "Vymazať lokálne zrkadlo pred úplnou resynchronizáciou" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "Vygenerovať kľúč Gramps Web API" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" +"Preveďte URL servera Gramps Web API, používateľské meno a heslo na hodnotu " +"GRAMPS_WEB_API_KEY pre GrampsWebApiDb a voliteľne vytvorte zodpovedajúci, " +"správne pomenovaný rodinný strom GrampsWebApiDb." + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" +msgstr "URL servera" + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "napr. https://vas-server/api" + +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" +msgstr "Používateľské meno" + +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" +msgstr "Heslo" + +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" +msgstr "Generovať API kľúč" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" +"Zadajte URL servera, používateľské meno a heslo, potom kliknite na " +"Vygenerovať API kľúč." + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "GRAMPS_WEB_API_KEY" + +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" +msgstr "Vytvoriť synchronizovaný rodinný strom pre tento kľúč" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" +"Pre túto reláciu bol nájdený existujúci %s. Kliknite na Vytvoriť " +"synchronizovaný rodinný strom, aby ste ho použili priamo, alebo vyplňte " +"formulár vyššie na vygenerovanie iného kľúča." + +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." +msgstr "Prosím, vyplňte URL servera, používateľské meno a heslo." + +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" +msgstr "Generovanie API kľúča…" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" +"Prihlásenie zlyhalo (HTTP %d): skontrolujte vaše používateľské meno a heslo." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "Server vrátil chybu (HTTP %d %s): skontrolujte URL servera." + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "Nepodarilo sa spojiť so serverom: skontrolujte URL servera. (%s)" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "Neočakávaná odpoveď zo servera: %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "Chyba: %s" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" +"Úspech. %s je teraz nastavený pre túto reláciu Gramps -- reštart nie je " +"potrebný. Skopírujte nižšie uvedený kľúč, aby ste ho nastavili aj v " +"prostredí shellu pre budúce použitie." + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "Vyhľadávanie identity účtu…" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" +"Rodinný strom s názvom „%s“ už existuje. Otvorte ho cez Rodinné stromy → " +"Spravovať rodinné stromy namiesto vytvárania ďalšieho." + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, python-format +msgid "Error creating Family Tree: %s" +msgstr "Chyba pri vytváraní rodinného stromu: %s" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" +"Vytvorený rodinný strom„%s“. Otvorte ho cez Rodinné stromy → Spravovať " +"rodinné stromy, aby ste spustili synchronizáciu." + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" msgstr "Gramps Web Sync" @@ -16279,7 +16464,141 @@ msgstr "Gramps Web Sync" msgid "Synchronizes a local database with a Gramps Web instance." msgstr "Synchronizuje lokálnu databázu s inštanciou Gramps Web." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "_Skúste znova" + +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" +msgstr "P_ripojiť" + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "Zabudnúť tento server?" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" +"Adresa, používateľské meno a heslo uložené pre tento server budú odstránené " +"spolu so záznamom o tom, kedy sa tento rodinný strom naposledy " +"synchronizoval. Pri ďalšej synchronizácii sa oba stromy budú porovnávať od " +"začiatku." + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "Zabudnúť" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" +"Tieto prihlasovacie údaje boli naposledy použité s iným rodinným stromom. " +"Pred pokračovaním skontrolujte server." + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "Zmeniť server…" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "URL servera:" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Používateľské meno:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Heslo:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "Zapamätať heslo" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "Zabudnúť tento server" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "O tomto nástroji" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "Otvoriť online manuál" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" +"Tento nástroj umožňuje synchronizovať aktuálne otvorený rodokmeň so " +"vzdialeným rodokmeňom, ktorý poskytuje Gramps Web.\n" +"\n" +"Nástroj predpokladá, že oba stromy sú vzájomne odvodené, t. j. jeden z nich " +"bol vytvorený z exportu druhého pomocou Gramps XML (nie GEDCOM!).\n" +"\n" +"Po úspešnej synchronizácii budú oba stromy identické. Zmeny sa budú šíriť na " +"základe časových pečiatok. Pred vykonaním akýchkoľvek zmien v miestnom alebo " +"vzdialenom strome budete vyzvaní na potvrdenie.\n" +"\n" +"Ak chcete namiesto toho zlúčiť dva výrazne odlišné stromy s možnosťou " +"vykonať ručné úpravy, použite namiesto toho nástroj na import a zlúčenie." + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "Chyba:" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "Upozornenie:" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "Synchronizovaný režim:" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "Synchronizácia dokončená" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "Synchronizácia zlyhala" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "Gramps Web Sync %(addon)s, Web API %(api)s" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "Gramps Web Sync %s" + +#: GrampsWebSync/presentation.py:164 +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"Táto URL používa http, takže vaše heslo bude odoslané v čitateľnej podobe. " +"Používajte len na lokálne testovanie." + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " @@ -16288,7 +16607,7 @@ msgstr "" "Systémovú kľúčenku sa nepodarilo použiť. Obmedzenie Snap blokuje prístup, " "kým nespustíte: %s" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." @@ -16296,55 +16615,55 @@ msgstr "" "Systémovú kľúčenku sa nepodarilo použiť. Heslo budete musieť zadávať " "zakaždým." -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "Autorizácia zlyhala. Skontrolujte svoje používateľské meno a heslo." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "Prístup zakázaný. Skontrolujte prosím používateľské meno a heslo." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "Služba GrampsWeb nebola nájdená. Skontrolujte prosím URL adresu." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "Príliš veľa požiadaviek, skúste to prosím o niekoľko sekúnd neskôr." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "GrampsWeb tree je deaktivovaný." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "" "Spojenie sa nepodarilo. Skontrolujte adresu URL a vaše pripojenie k " "internetu." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "Neplatná odpoveď servera. Skontrolujte adresu URL." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "" "Váš používateľ nemá dostatočné oprávnenia na serveri na používanie " "synchronizácie." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "Stiahnutý súbor XML sa nepodarilo importovať." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "Zmeny sa nedajú synchronizovať so serverom: objekty boli upravené." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "Neočakávaná chyba pri aplikovaní zmien." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." @@ -16352,96 +16671,117 @@ msgstr "" "Rodinný strom bol modifikovaný počas kontroly zmien. Nič nebolo aplikované. " "Prosím, porovnajte znova." -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" +"Tento server používa Gramps Web API %(found)s, ale synchronizácia vyžaduje " +"verziu %(needed)s alebo novšiu. Aktualizujte prosím server." + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" +"Tento server neoznámil verziu Gramps Web API, takže je príliš starý na " +"synchronizáciu. Potrebná je verzia %s alebo novšia." + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" +"Tento server používa Gramps Web API %(found)s. Táto verzia Gramps pracuje s " +"Gramps Web API %(major)s, preto synchronizácia s týmto serverom vyžaduje " +"novšiu verziu Gramps." + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" +"Tento server nie je nakonfigurovaný na používanie fronty úloh na pozadí. " +"Synchronizácia ju potrebuje: bez nej dôjde k časovému limitu pri aplikovaní " +"zmien skôr, ako server dokončí spracovanie. Prosím, povoľte ju na serveri." + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "Server nemohol aplikovať zmeny: %s" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "Chyba servera %s. Skontrolujte svoje pripojenie." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "Neočakávaná chyba: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Získavanie vzdialených údajov..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "Prihlasovanie…" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Porovnávanie miestnych a vzdialených údajov..." +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "Sťahovanie vzdialeného rodinného stromu…" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Zmeny boli úspešne aplikované v lokálnej databáze." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "Porovnávanie dvoch rodinných stromov…" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Pokračovať bez šifrovania prenosu?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "Kontrola chýbajúcich mediálnych súborov…" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" -msgstr "" -"Zadali ste URL so schémou http. Ak budete pokračovať, vaše heslo bude " -"odoslané cez sieť v nezakódovanej podobe. Používajte len na lokálne " -"testovanie!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "Zmeny boli aplikované na tomto počítači." -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Pokračovať s HTTP" +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "Odosielanie zmien na server…" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Použiť HTTPS" +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "Sťahovanie mediálnych súborov…" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" -"Tento nástroj umožňuje synchronizovať aktuálne otvorený rodokmeň so " -"vzdialeným rodokmeňom, ktorý poskytuje Gramps Web.\n" -"\n" -"Nástroj predpokladá, že oba stromy sú vzájomne odvodené, t. j. jeden z nich " -"bol vytvorený z exportu druhého pomocou Gramps XML (nie GEDCOM!).\n" -"\n" -"Po úspešnej synchronizácii budú oba stromy identické. Zmeny sa budú šíriť na " -"základe časových pečiatok. Pred vykonaním akýchkoľvek zmien v miestnom alebo " -"vzdialenom strome budete vyzvaní na potvrdenie.\n" -"\n" -"Ak chcete namiesto toho zlúčiť dva výrazne odlišné stromy s možnosťou " -"vykonať ručné úpravy, použite namiesto toho nástroj na import a zlúčenie." +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "Nahrávanie mediálnych súborov…" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "URL servera: " +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "Pripojiť" -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "Chyba:" +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "Aplikovať zmeny" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "Preniesť mediálne súbory" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "Obojsmerná synchronizácia" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" -msgstr "Synchronizovaný režim" +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "Resetovať server, aby zodpovedal tomuto počítaču" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "Resetovať tento počítač, aby zodpovedal serveru" + +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." @@ -16449,7 +16789,7 @@ msgstr "" "Zmeny z oboch strán sú kombinované. Objekty upravené na oboch miestach sa " "zlúčia." -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." @@ -16457,7 +16797,7 @@ msgstr "" "Server sa upraví tak, aby zodpovedal tomuto počítaču. Čokoľvek zmenené len " "na serveri sa vyradí." -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." @@ -16465,87 +16805,93 @@ msgstr "" "Tento počítač sa upraví tak, aby zodpovedal serveru. Čokoľvek zmenené len tu " "sa vyradí." -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Obojsmerná synchronizácia" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Obnoviť vzdialené na lokálne" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Obnoviť lokálne na vzdialené" - -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" -msgstr "Upozornenie:" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Lokálne zmeny" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Vzdialené zmeny" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Súbežné zmeny" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Načítavanie informácií o mediálnych súboroch..." +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "Na tomto počítači sa zmení (%s objekt)" +msgstr[1] "Na tomto počítači sa zmenia (%s objekty)" +msgstr[2] "Na tomto počítači sa zmení (%s objektov)" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Obidva stromy sú rovnaké." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "Na serveri sa zmení (%s objekt)" +msgstr[1] "Na serveri sa zmenia (%s objekty)" +msgstr[2] "Na serveri sa zmení (%s objektov)" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Aplikovanie zmien do lokálnej databázy ..." +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Pridať %s objekt" +msgstr[1] "Pridať %s objekty" +msgstr[2] "Pridať %s objektov" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Žiadne zmeny na aplikovanie do lokálnej databázy." +#: GrampsWebSync/presentation.py:594 +#, python-format +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Aktualizovať %s objekt" +msgstr[1] "Aktualizovať %s objekty" +msgstr[2] "Aktualizovať %s objektov" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Aplikovanie zmien do vzdialenej databázy ..." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Zlúčiť %s objekt" +msgstr[1] "Zlúčiť %s objekty" +msgstr[2] "Zlúčiť %s objektov" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Žiadne zmeny na aplikovanie do vzdialenej databázy." +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "Odstrániť %s objekt" +msgstr[1] "Odstrániť %s objekty" +msgstr[2] "Odstrániť %s objektov" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Chýbajúce lokálne" +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "Na tomto počítači bude odstránený %s objekt." +msgstr[1] "Na tomto počítači budú odstránené %s objekty." +msgstr[2] "Na tomto počítači bude odstránených %s objektov." -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Chýbajúce vzdialene" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "Na serveri bude odstránený %s objekt." +msgstr[1] "Na serveri budú odstránené %s objekty." +msgstr[2] "Na serveri bude odstránených %s objektov." -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:636 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Sťahovanie %s mediálneho súboru" -msgstr[1] "Sťahovanie %s mediálnych súborov" -msgstr[2] "Sťahovanie %s mediálnych súborov" +msgid "%(down)s to download, %(up)s to upload" +msgstr "%(down)s na stiahnutie, %(up)s na odoslanie" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Nahrávanie %s mediálneho súboru" -msgstr[1] "Nahrávanie %s mediálnych súborov" -msgstr[2] "Nahrávanie %s mediálnych súborov" +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "Preniesť tiež %(total)s mediálny súbor (%(counts)s)" +msgstr[1] "Preniesť tiež %(total)s mediálne súbory (%(counts)s)" +msgstr[2] "Preniesť tiež %(total)s mediálnych súborov (%(counts)s)" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "Skúste znova" +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." +msgid_plural "" +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "%s mediálny súbor chýba na oboch stranách a nemôže byť prenesený." +msgstr[1] "%s mediálne súbory chýbajú na oboch stranách a nemôžu byť prenesené." +msgstr[2] "%s mediálnych súborov chýba na oboch stranách a nemôžu byť prenesené." -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:681 #, python-format msgid "Applied %s change." msgid_plural "Applied %s changes." @@ -16553,27 +16899,15 @@ msgstr[0] "Aplikovaná %s zmena." msgstr[1] "Aplikované %s zmeny." msgstr[2] "Aplikovaných %s zmien." -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Mediálne súbory sú synchronizované." - -#: GrampsWebSync/grampswebsync.py:1011 -#, python-format -msgid "%s media file is missing on both sides and could not be transferred." -msgid_plural "" -"%s media files are missing on both sides and could not be transferred." -msgstr[0] "" -"%s mediálny súbor chýba na oboch stranách a nepodarilo sa ho preniesť." -msgstr[1] "" -"%s mediálne súbory chýbajú na oboch stranách a nepodarilo sa ich preniesť." -msgstr[2] "" -"%s mediálnych súborov chýba na oboch stranách a nepodarilo sa ich preniesť." - -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "Obidva stromy sú už synchronizované." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Mediálne súbory sú synchronizované." + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." @@ -16581,7 +16915,7 @@ msgstr[0] "Úspešne stiahnutý %s mediálny súbor." msgstr[1] "Úspešne stiahnuté %s mediálne súbory." msgstr[2] "Úspešne stiahnutých %s mediálnych súborov." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." @@ -16589,7 +16923,7 @@ msgstr[0] "Počas sťahovania sa vyskytla %s chyba." msgstr[1] "Počas sťahovania sa vyskytli %s chyby." msgstr[2] "Počas sťahovania sa vyskytlo %s chýb." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." @@ -16597,7 +16931,7 @@ msgstr[0] "Úspešne nahraný %s mediálny súbor." msgstr[1] "Úspešne nahrané %s mediálne súbory." msgstr[2] "Úspešne nahraných %s mediálnych súborov." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." @@ -16605,6 +16939,57 @@ msgstr[0] "Počas nahrávania sa vyskytla %s chyba." msgstr[1] "Počas nahrávania sa vyskytli %s chyby." msgstr[2] "Počas nahrávania sa vyskytlo %s chýb." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "Žiadny server nie je nakonfigurovaný" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "%(user)s na %(server)s" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "%(where)s — %(synced)s" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "Nikdy nebolo synchronizované" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "Naposledy synchronizované práve teraz" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "Naposledy synchronizované pred %s minútou" +msgstr[1] "Naposledy synchronizované pred %s minútami" +msgstr[2] "Naposledy synchronizované pred %s minútami" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "Naposledy synchronizované pred %s hodinou" +msgstr[1] "Naposledy synchronizované pred %s hodinami" +msgstr[2] "Naposledy synchronizované pred %s hodinami" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "Naposledy synchronizované pred %s dňom" +msgstr[1] "Naposledy synchronizované pred %s dňami" +msgstr[2] "Naposledy synchronizované pred %s dňami" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "Naposledy synchronizované dňa %s" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "Skript Gram.py" @@ -20365,14 +20750,6 @@ msgstr "Import z phpGedView" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Používateľské meno:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Heslo:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -21072,11 +21449,11 @@ msgstr "Krajina:" #: PlaceCompletion/placecompletion.glade:366 msgid "C_enter latitude:" -msgstr "" +msgstr "C_entrovať zemepisnú šírku:" #: PlaceCompletion/placecompletion.glade:383 msgid "Center longitude:" -msgstr "" +msgstr "Centrovať zemepisnú dĺžku:" #: PlaceCompletion/placecompletion.glade:430 msgid "Places in a rectangle:" @@ -26347,6 +26724,63 @@ msgstr "" " \"%s\" \n" " do svojho preferovaného webového prehliadača ..." +#~ msgid "Fetching remote data..." +#~ msgstr "Získavanie vzdialených údajov..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Porovnávanie miestnych a vzdialených údajov..." + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Zmeny boli úspešne aplikované v lokálnej databáze." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Pokračovať bez šifrovania prenosu?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Pokračovať s HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "Použiť HTTPS" + +#~ msgid "Reset remote to local" +#~ msgstr "Obnoviť vzdialené na lokálne" + +#~ msgid "Reset local to remote" +#~ msgstr "Obnoviť lokálne na vzdialené" + +#~ msgid "Local changes" +#~ msgstr "Lokálne zmeny" + +#~ msgid "Remote changes" +#~ msgstr "Vzdialené zmeny" + +#~ msgid "Simultaneous changes" +#~ msgstr "Súbežné zmeny" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Načítavanie informácií o mediálnych súboroch..." + +#~ msgid "Both trees are the same." +#~ msgstr "Obidva stromy sú rovnaké." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Aplikovanie zmien do lokálnej databázy ..." + +#~ msgid "No changes to apply to local database." +#~ msgstr "Žiadne zmeny na aplikovanie do lokálnej databázy." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Aplikovanie zmien do vzdialenej databázy ..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Žiadne zmeny na aplikovanie do vzdialenej databázy." + +#~ msgid "Missing locally" +#~ msgstr "Chýbajúce lokálne" + +#~ msgid "Missing remotely" +#~ msgstr "Chýbajúce vzdialene" + #~ msgid "Error accessing media object." #~ msgstr "Chyba prístupu k mediálnemu objektu." @@ -26366,9 +26800,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "Chyba URL pri pripájaní k serveru." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Zmeny sa nedajú synchronizovať so serverom." - #~ msgid "Search" #~ msgstr "Vyhľadávanie" diff --git a/po/sl.po b/po/sl.po index a04466c0c..37430c929 100644 --- a/po/sl.po +++ b/po/sl.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gramps 3.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2008-02-22 23:19+0100\n" "Last-Translator: Bernard Banko \n" "Language-Team: lugos slovenizacija \n" @@ -2106,7 +2106,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15825,124 +15827,235 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +msgid "Generate API Key" +msgstr "Splošno" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +msgid "Generating API key…" +msgstr "Splošno" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +msgid "C_onnect" +msgstr "Izberi..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15958,147 +16071,340 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +msgid "Synchronization failed" +msgstr "Splošno" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." +msgstr "" + +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" + +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "" + +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" + +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "" + +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" + +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +#, fuzzy +msgid "Connect" +msgstr "Izberi..." + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." @@ -16107,7 +16413,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." @@ -16116,7 +16422,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." @@ -16125,7 +16431,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." @@ -16134,6 +16440,60 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19734,14 +20094,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/sq.po b/po/sq.po index a8c0a2870..a6c984ae1 100644 --- a/po/sq.po +++ b/po/sq.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: GRAMPS 3.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2008-11-13 21:00+0100\n" "Last-Translator: Vlora Jakupi \n" "Language-Team: \n" @@ -2116,7 +2116,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15791,124 +15793,235 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +msgid "Generate API Key" +msgstr "Të përgjithshme" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +msgid "Generating API key…" +msgstr "Të përgjithshme" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +msgid "C_onnect" +msgstr "Përzgjedh..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:347 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15924,166 +16037,393 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +msgid "Synchronization failed" +msgstr "Të përgjithshme" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." +msgstr "" + +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" + +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "" + +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" + +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "" + +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" + +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +#, fuzzy +msgid "Connect" +msgstr "Përzgjedh..." + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" msgstr[1] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19681,14 +20021,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/sr.po b/po/sr.po index 2577d2789..4dd5e0a12 100644 --- a/po/sr.po +++ b/po/sr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: 4.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-05-12 12:11+0000\n" "Last-Translator: Ранко Николић \n" "Language-Team: Serbian Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Генерација " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15816,143 +15928,329 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Генерација " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" +msgstr "" + +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." +msgstr "" + +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:256 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." @@ -15960,7 +16258,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." @@ -15968,7 +16266,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." @@ -15976,7 +16274,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." @@ -15984,6 +16282,57 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19536,14 +19885,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/sv.po b/po/sv.po index 4684276c0..327464c85 100644 --- a/po/sv.po +++ b/po/sv.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-08-03 04:02+0000\n" "Last-Translator: Pär Ekholm \n" "Language-Team: Swedish Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:141 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL" +msgstr "Server URL: " + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Användarnamn:" + +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Lösenord:" + +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "Skapa" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Släktträd för %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:222 +#, fuzzy +#| msgid "Access forbidden. Please check username and password." +msgid "Please fill in the server URL, username, and password." +msgstr "Åtkomst förbjuden. Kontrollera användarnamn och lösenord." + +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Generation " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, fuzzy, python-format +#| msgid "Authentication failed. Please check your username and password." +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" +"Autentiseringen misslyckades. Kontrollera ditt användarnamn och lösenord." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, fuzzy, python-format +#| msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" +msgstr "Oväntat fel: %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Fel:" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error creating note" +msgid "Error creating Family Tree: %s" +msgstr "Fel vid skapande av notis" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" msgstr "Gramps Webb-synkronisering" @@ -16187,7 +16365,155 @@ msgstr "Gramps Webb-synkronisering" msgid "Synchronizes a local database with a Gramps Web instance." msgstr "Synkroniserar en lokal databas med en Gramps Webbinstans." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +#, fuzzy +#| msgid "Try again" +msgid "_Try again" +msgstr "Försök igen" + +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Ansluter..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "Server URL: " + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Användarnamn:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Lösenord:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +#, fuzzy +#| msgid "About this utility." +msgid "About this tool" +msgstr "Om detta verktyg." + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" +"Det här verktyget gör det möjligt att synkronisera det för närvarande öppna " +"släktträdet med ett fjärrsläktträd som hanteras av Gramps Web.\n" +"\n" +"Verktyget antar att de två träden är derivat av varandra, d.v.s. ett av de " +"två skapades från en Gramps XML-export (inte GEDCOM!) av det andra.\n" +"\n" +"Efter lyckad synkronisering kommer de två träden att vara identiska. " +"Ändringar kommer att spridas baserat på tidsstämplar. Du kommer att bli " +"ombedd att bekräfta innan några ändringar görs i de lokala eller " +"fjärranslutna träden.\n" +"\n" +"Om du istället vill sammanfoga två signifikant olika träd med möjlighet att " +"göra manuella ändringar, använd verktyget Importera sammanfogning istället." + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "Fel:" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "Varning:" + +#: GrampsWebSync/grampswebsync.py:901 +#, fuzzy +#| msgid "Sync mode" +msgid "Sync mode:" +msgstr "Synkroniseringsläge" + +#: GrampsWebSync/grampswebsync.py:1077 +#, fuzzy +#| msgid "Migration completed!" +msgid "Synchronization complete" +msgstr "Migreringen är klar!" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Generation " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps Web Sync" +msgid "Gramps Web Sync %s" +msgstr "Gramps Webb-synkronisering" + +#: GrampsWebSync/presentation.py:164 +#, fuzzy +#| msgid "" +#| "You have specified a URL with http scheme. If you continue, your password " +#| "will be sent in clear text over the network. Use only for local testing!" +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"Du har angett en URL med http-schema. Om du fortsätter skickas ditt lösenord " +"i klartext över nätverket. Använd endast för lokal testning!" + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " @@ -16196,7 +16522,7 @@ msgstr "" "Systemnyckelringen kunde inte användas. Snap-begränsning blockerar åtkomst " "tills du kör: %s" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." @@ -16204,56 +16530,56 @@ msgstr "" "Systemnyckelringen kunde inte användas. Du måste ange ditt lösenord varje " "gång." -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "" "Autentiseringen misslyckades. Kontrollera ditt användarnamn och lösenord." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "Åtkomst förbjuden. Kontrollera användarnamn och lösenord." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "GrampsWeb-tjänsten hittades inte. Kontrollera URL:en." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "För många förfrågningar, försök igen om några sekunder." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "GrampsWeb-trädet är inaktiverat." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "" "Anslutningen misslyckades. Kontrollera URL:en och din internetanslutning." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "Ogiltigt serversvar. Kontrollera URL:en." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "" "Din användare har inte tillräckliga serverbehörigheter för att använda " "synkronisering." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "Misslyckades med att importera den nedladdade XML-filen." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" "Det gick inte att synkronisera ändringar till servern: objekt har ändrats." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "Oväntat fel vid tillämpning av ändringar." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." @@ -16261,96 +16587,128 @@ msgstr "" "Släktträdet ändrades medan ändringarna granskades. Ingenting har tillämpats. " "Jämför igen." -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "Servern kunde inte tillämpa ändringarna: %s" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "Server-fel %s. Kontrollera din anslutning." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "Oväntat fel: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Hämtar fjärrdata..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Jämför lokala- och fjärrdata..." +#: GrampsWebSync/presentation.py:268 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading the remote family tree…" +msgstr "Laddar ner %s mediefil" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Ändringarna har tillämpats i den lokala databasen." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Fortsätta utan transportkryptering?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -"Du har angett en URL med http-schema. Om du fortsätter skickas ditt lösenord " -"i klartext över nätverket. Använd endast för lokal testning!" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Fortsätt med HTTP" +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server." +msgid "Sending the changes to the server…" +msgstr "Det gick inte att synkronisera ändringarna med servern." + +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading media files…" +msgstr "Laddar ner %s mediefil" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Använd HTTPS" +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Uploading media files…" +msgstr "Laddar upp %s mediefil" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" -"Det här verktyget gör det möjligt att synkronisera det för närvarande öppna " -"släktträdet med ett fjärrsläktträd som hanteras av Gramps Web.\n" -"\n" -"Verktyget antar att de två träden är derivat av varandra, d.v.s. ett av de " -"två skapades från en Gramps XML-export (inte GEDCOM!) av det andra.\n" -"\n" -"Efter lyckad synkronisering kommer de två träden att vara identiska. " -"Ändringar kommer att spridas baserat på tidsstämplar. Du kommer att bli " -"ombedd att bekräfta innan några ändringar görs i de lokala eller " -"fjärranslutna träden.\n" -"\n" -"Om du istället vill sammanfoga två signifikant olika träd med möjlighet att " -"göra manuella ändringar, använd verktyget Importera sammanfogning istället." +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Ansluter..." -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "Server URL: " +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "Applied %s change." +#| msgid_plural "Applied %s changes." +msgid "Apply changes" +msgstr "Tillämpade %s ändring." -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "Fel:" +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Transfer media files" +msgstr "Laddar upp %s mediefil" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" -msgstr "Synkroniseringsläge" +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "Dubbelriktad synkronisering" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." @@ -16358,7 +16716,7 @@ msgstr "" "Förändringar från båda sidor kombineras. Objekt som redigerats på båda " "ställena slås samman." -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." @@ -16366,7 +16724,7 @@ msgstr "" "Servern är gjord för att matcha den här datorn. Allt som ändras endast på " "servern kasseras." -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." @@ -16374,135 +16732,179 @@ msgstr "" "Den här datorn är gjord för att matcha servern. Allt som ändras endast här " "kasseras." -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Dubbelriktad synkronisering" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Återställ fjärr till lokalt läge" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Återställ lokalt till fjärrläge" - -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" -msgstr "Varning:" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Lokala ändringar" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Fjärrändringar" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Samtidiga förändringar" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Hämtar information om mediefiler..." +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Båda träden är likadana." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Tillämpar ändringar i den lokala databasen ..." +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Lägg till testnotis" +msgstr[1] "Lägg till testnotis" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Inga ändringar som ska tillämpas på den lokala databasen." +#: GrampsWebSync/presentation.py:594 +#, fuzzy, python-format +#| msgid "Upgrading %s objects..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Uppgraderar %s objekt..." +msgstr[1] "Uppgraderar %s objekt..." -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Tillämpar ändringar i fjärrdatabasen ..." +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Migrating %s objects..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Migrerar %s objekt..." +msgstr[1] "Migrerar %s objekt..." -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Inga ändringar som ska tillämpas på fjärrdatabasen." +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Saknas lokalt" +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Saknas på distans" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:636 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Laddar ner %s mediefil" -msgstr[1] "Laddar ner %s mediefiler" +msgid "%(down)s to download, %(up)s to upload" +msgstr "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Laddar upp %s mediefil" -msgstr[1] "Laddar upp %s mediefiler" +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" +msgstr[1] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "Försök igen" +#: GrampsWebSync/presentation.py:658 +#, fuzzy, python-format +#| msgid "%s media file is missing on both sides and could not be transferred." +#| msgid_plural "" +#| "%s media files are missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." +msgid_plural "" +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "%s mediafil saknas på båda sidor och kunde inte överföras." +msgstr[1] "%s mediafiler saknas på båda sidor och kunde inte överföras." -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:681 #, python-format msgid "Applied %s change." msgid_plural "Applied %s changes." msgstr[0] "Tillämpade %s ändring." msgstr[1] "Tillämpade %s ändringar." -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Mediefiler är synkroniserade." - -#: GrampsWebSync/grampswebsync.py:1011 -#, python-format -msgid "%s media file is missing on both sides and could not be transferred." -msgid_plural "" -"%s media files are missing on both sides and could not be transferred." -msgstr[0] "%s mediafil saknas på båda sidor och kunde inte överföras." -msgstr[1] "%s mediafiler saknas på båda sidor och kunde inte överföras." - -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "Båda träden är redan synkroniserade." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Mediefiler är synkroniserade." + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "Laddade ner %s mediefil med lyckat resultat." msgstr[1] "Laddade ner %s mediefiler med lyckat resultat." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "%s fel uppstod under nedladdningen." msgstr[1] "%s fel uppstod under nedladdningen." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "Laddade upp %s mediefil med lyckat resultat." msgstr[1] "Laddade upp %s mediefiler med lyckat resultat." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "%s fel uppstod under uppladdningen." msgstr[1] "%s fel uppstod under uppladdningen." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "Gram.py-skript" @@ -20347,14 +20749,6 @@ msgstr "phpGedView-import" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Användarnamn:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Lösenord:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26330,6 +26724,63 @@ msgstr "" "\"%s\"\n" "till din föredragna webbnavigator ..." +#~ msgid "Fetching remote data..." +#~ msgstr "Hämtar fjärrdata..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Jämför lokala- och fjärrdata..." + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Ändringarna har tillämpats i den lokala databasen." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Fortsätta utan transportkryptering?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Fortsätt med HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "Använd HTTPS" + +#~ msgid "Reset remote to local" +#~ msgstr "Återställ fjärr till lokalt läge" + +#~ msgid "Reset local to remote" +#~ msgstr "Återställ lokalt till fjärrläge" + +#~ msgid "Local changes" +#~ msgstr "Lokala ändringar" + +#~ msgid "Remote changes" +#~ msgstr "Fjärrändringar" + +#~ msgid "Simultaneous changes" +#~ msgstr "Samtidiga förändringar" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Hämtar information om mediefiler..." + +#~ msgid "Both trees are the same." +#~ msgstr "Båda träden är likadana." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Tillämpar ändringar i den lokala databasen ..." + +#~ msgid "No changes to apply to local database." +#~ msgstr "Inga ändringar som ska tillämpas på den lokala databasen." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Tillämpar ändringar i fjärrdatabasen ..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Inga ändringar som ska tillämpas på fjärrdatabasen." + +#~ msgid "Missing locally" +#~ msgstr "Saknas lokalt" + +#~ msgid "Missing remotely" +#~ msgstr "Saknas på distans" + #~ msgid "Error accessing media object." #~ msgstr "Fel vid åtkomst till medieobjektet." @@ -26349,9 +26800,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "URL-fel vid anslutning till servern." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Det gick inte att synkronisera ändringarna med servern." - #~ msgid "Search" #~ msgstr "Sök" diff --git a/po/tr.po b/po/tr.po index 746ba109d..132fb2299 100644 --- a/po/tr.po +++ b/po/tr.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: 4.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" -"PO-Revision-Date: 2026-07-30 22:02+0000\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" +"PO-Revision-Date: 2026-08-07 07:57+0000\n" "Last-Translator: Osman Öz \n" "Language-Team: Turkish \n" @@ -25,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2026.8.dev0\n" +"X-Generator: Weblate 2026.8.1.dev0\n" "Generated-By: pygettext.py 1.4\n" "X-Language: tr\n" "X-Source-Language: C\n" @@ -2204,7 +2204,9 @@ msgid "Calculate" msgstr "Hesapla" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "Kopyala" @@ -15481,286 +15483,280 @@ msgid "Select Form" msgstr "Formu Seçin" #: GOQLFilter/goql.gpr.py:31 -#, fuzzy -#| msgid "Person Relationship Filter" msgid "Person GOQL Filter" -msgstr "Kişi İlişkisi Filtresi" +msgstr "Kişi GOQL Filtresi" #: GOQLFilter/goql.gpr.py:32 msgid "Gramplet providing a gramps-object-query-language person filter" msgstr "" +"Gramplet, Gramps nesne sorgulama dili ile kişi filtreleme özelliği sunuyor" #: GOQLFilter/goql.gpr.py:39 GOQLFilter/goql.gpr.py:58 #: GOQLFilter/goql.gpr.py:77 GOQLFilter/goql.gpr.py:96 #: GOQLFilter/goql.gpr.py:117 GOQLFilter/goql.gpr.py:136 #: GOQLFilter/goql.gpr.py:155 GOQLFilter/goql.gpr.py:174 #: GOQLFilter/goql.gpr.py:193 -#, fuzzy -#| msgid "Filtering" msgid "GOQL Filter" -msgstr "Filtreleme" +msgstr "GOQL Filtresi" #: GOQLFilter/goql.gpr.py:50 -#, fuzzy -#| msgid "Family Filter name:" msgid "Family GOQL Filter" -msgstr "Aile Filtresi adı:" +msgstr "Aile GOQL Filtresi" #: GOQLFilter/goql.gpr.py:51 msgid "Gramplet providing a gramps-object-query-language family filter" -msgstr "" +msgstr "Gramplet, Gramps nesne sorgulama dili için bir aile filtresi sağlıyor" #: GOQLFilter/goql.gpr.py:69 msgid "Event GOQL Filter" -msgstr "" +msgstr "Etkinlik GOQL Filtresi" #: GOQLFilter/goql.gpr.py:70 msgid "Gramplet providing a gramps-object-query-language event filter" -msgstr "" +msgstr "Gramplet, Gramps Nesne Sorgu Dili için bir etkinlik filtresi sağlıyor" #: GOQLFilter/goql.gpr.py:88 -#, fuzzy -#| msgid "Place _filter:" msgid "Place GOQL Filter" -msgstr "Yer _süzgeci:" +msgstr "GOQL Filtresini Yerleştir" #: GOQLFilter/goql.gpr.py:89 msgid "Gramplet providing a gramps-object-query-language place filter" -msgstr "" +msgstr "Gramplet, Gramps nesne sorgulama dili için yer filtresi sağlıyor" #: GOQLFilter/goql.gpr.py:107 -#, fuzzy -#| msgid "Repository title" msgid "Repository GOQL Filter" -msgstr "Depo başlığı" +msgstr "Depo GOQL Filtresi" #: GOQLFilter/goql.gpr.py:109 msgid "Gramplet providing a gramps-object-query-language repository filter" -msgstr "" +msgstr "Gramplet, Gramps Nesne Sorgu Dili için bir depo filtresi sağlıyor" #: GOQLFilter/goql.gpr.py:128 -#, fuzzy -#| msgid "Source type" msgid "Source GOQL Filter" -msgstr "Kaynak türü" +msgstr "Kaynak GOQL Filtresi" #: GOQLFilter/goql.gpr.py:129 msgid "Gramplet providing a gramps-object-query-language source filter" msgstr "" +"Gramplet, Gramps nesne sorgulama dili için bir kaynak filtresi sağlıyor" #: GOQLFilter/goql.gpr.py:147 -#, fuzzy -#| msgid "Relationship Filter" msgid "Citation GOQL Filter" -msgstr "İlişki Filtresi" +msgstr "Alıntı GOQL Filtresi" #: GOQLFilter/goql.gpr.py:148 -#, fuzzy -#| msgid "Gramplet providing a person filter on relationships" msgid "Gramplet providing a gramps-object-query-language citation filter" -msgstr "İlişkiler üzerinde kişi filtresi sağlayan Gramplet" +msgstr "" +"Gramplet, Gramps nesne sorgulama dili için bir alıntı filtresi sağlıyor" #: GOQLFilter/goql.gpr.py:166 -#, fuzzy -#| msgid "Media Object Title" msgid "Media GOQL Filter" -msgstr "Medya Nesnesi Başlığı" +msgstr "Medya GOQL Filtresi" #: GOQLFilter/goql.gpr.py:167 msgid "Gramplet providing a gramps-object-query-language media filter" -msgstr "" +msgstr "Gramplet, Gramps nesne sorgulama dili için bir medya filtresi sağlıyor" #: GOQLFilter/goql.gpr.py:185 -#, fuzzy -#| msgid "Note Link (internal)" msgid "Note GOQL Filter" -msgstr "Not Bağlantısı (dahili)" +msgstr "Not GOQL Filtresi" #: GOQLFilter/goql.gpr.py:186 msgid "Gramplet providing a gramps-object-query-language note filter" -msgstr "" +msgstr "Gramplet, Gramps nesne sorgu dili için not filtresi sağlıyor" #: GOQLFilter/goql.py:186 msgid "A gramps-object-query-language where-expression, e.g.\n" -msgstr "" +msgstr "Gramps nesne sorgulama dilinde, örneğin şu ifade kullanılır\n" #: GOQLFilter/goql.py:188 msgid "Enter inserts a newline; Ctrl+Enter runs Find.\n" msgstr "" +"Enter tuşu yeni satır ekler; Ctrl+Enter tuşu ise Bul işlevini çalıştırır.\n" #: GOQLFilter/goql.py:189 msgid "Up/Down at the first/last line recalls previous expressions.\n" msgstr "" +"İlk/son satırdaki Yukarı/Aşağı düğmeleri önceki ifadeleri hatırlatır.\n" #: GOQLFilter/goql.py:190 msgid "Tab always completes -- it never inserts a tab character." -msgstr "" +msgstr "Sekme tuşu her zaman tamamlanır -- asla sekme karakteri eklenmez." #: GOQLFilter/goql.py:213 -#, fuzzy, python-format -#| msgid "Use filter " +#, python-format msgid "%s filter" -msgstr "Filtreyi kullan " +msgstr "%s filtresi" #: GOQLFilter/goql.py:233 msgid "This resets the filter parameters to empty state." -msgstr "" +msgstr "Bu işlem, filtre parametrelerini boş duruma sıfırlar." #: GOQLFilter/goql.py:239 msgid "This opens a dialog to save the current expression as a named filter." msgstr "" +"Bu, mevcut ifadeyi adlandırılmış bir filtre olarak kaydetmek için bir " +"iletişim kutusu açar." #: GOQLFilter/goql.py:244 msgid "Open this gramplet's help page in a browser." -msgstr "" +msgstr "Bu grampletin yardım sayfasını bir tarayıcıda açın." #: GOQLFilter/goql.py:402 msgid "SQL" -msgstr "" +msgstr "SQL" #: GOQLFilter/goql.py:403 -#, fuzzy -#| msgid "Python Shell" msgid "Python evaluation" -msgstr "Python Kabuğu" +msgstr "Python değerlendirmesi" #: GOQLFilter/goql.py:523 -#, fuzzy, python-format -#| msgid "Error: login failed" +#, python-format msgid "Error applying filter: %s" -msgstr "Hata: Giriş başarısız" +msgstr "Filtre uygulanırken hata oluştu: %s" #: GOQLFilter/goql.py:526 #, python-format msgid "Showing %(shown)d of %(total)d (%(method)s)" -msgstr "" +msgstr "Gösterilen %(shown)d / %(total)d (%(method)s)" #: GOQLFilter/goql.py:541 -#, fuzzy, python-format -#| msgid "Error creating note" +#, python-format msgid "Error resetting filter: %s" -msgstr "Not oluşturma hatası" +msgstr "Filtre sıfırlama hatası: %s" #: GOQLFilter/goql.py:548 -#, fuzzy -#| msgid "Enter Python expressions" msgid "Enter an expression first" -msgstr "Python ifadelerini girin" +msgstr "Önce bir ifade girin" #: GOQLFilter/goql.py:560 #, python-brace-format msgid "Created by the GOQL Filter gramplet on {today}" -msgstr "" +msgstr "{today} tarihinde GOQL Filter grampleti tarafından oluşturuldu" #: GOQLFilter/whereexprrule.gpr.py:30 GOQLFilter/whereexprrule.py:261 msgid "People matching the " -msgstr "" +msgstr " ile eşleşen kişiler" #: GOQLFilter/whereexprrule.gpr.py:32 msgid "" "Matches people for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Verilen gramps nesnesinin sorgu dilinde ifadenin doğru olarak " +"değerlendirildiği kişileri eşleştirir" #: GOQLFilter/whereexprrule.gpr.py:50 GOQLFilter/whereexprrule.py:266 -#, fuzzy -#| msgid "Families matching " msgid "Families matching the " -msgstr " ile eşleşen aileler" +msgstr " ile eşleşen aileler" #: GOQLFilter/whereexprrule.gpr.py:52 msgid "" "Matches families for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Verilen gramps nesnesi sorgu dilinde ifadenin doğru olarak değerlendirildiği " +"ailelerle eşleşir" #: GOQLFilter/whereexprrule.gpr.py:70 GOQLFilter/whereexprrule.py:271 msgid "Events matching the " -msgstr "" +msgstr " ile eşleşen etkinlikler" #: GOQLFilter/whereexprrule.gpr.py:72 msgid "" "Matches events for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Verilen gramps nesnesi sorgu dilindeki ifadenin doğru olarak " +"değerlendirildiği olaylarla eşleşir" #: GOQLFilter/whereexprrule.gpr.py:90 GOQLFilter/whereexprrule.py:276 msgid "Places matching the " -msgstr "" +msgstr " ile eşleşen yerler" #: GOQLFilter/whereexprrule.gpr.py:92 msgid "" "Matches places for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Verilen gramps nesnesi sorgu dilindeki ifadenin doğru olarak " +"değerlendirildiği yerlerle eşleşir" #: GOQLFilter/whereexprrule.gpr.py:110 GOQLFilter/whereexprrule.py:281 msgid "Repositories matching the " -msgstr "" +msgstr " ile eşleşen depolar" #: GOQLFilter/whereexprrule.gpr.py:112 msgid "" "Matches repositories for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Verilen gramps nesnesi sorgu dilinde ifadesinin doğru olarak " +"değerlendirildiği depoları eşleştirir" #: GOQLFilter/whereexprrule.gpr.py:130 GOQLFilter/whereexprrule.py:286 -#, fuzzy -#| msgid "Source matching parameters" msgid "Sources matching the " -msgstr "Kaynak eşleştirme parametreleri" +msgstr " ile eşleşen kaynaklar" #: GOQLFilter/whereexprrule.gpr.py:132 msgid "" "Matches sources for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Verilen gramps nesnesi sorgu dilinin, ifadenin doğru olarak " +"değerlendirildiği kaynaklarıyla eşleşir" #: GOQLFilter/whereexprrule.gpr.py:150 GOQLFilter/whereexprrule.py:291 msgid "Citations matching the " -msgstr "" +msgstr " ile eşleşen alıntılar" #: GOQLFilter/whereexprrule.gpr.py:152 msgid "" "Matches citations for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Verilen gramps nesnesi sorgu dilinin ifadesinin doğru olarak " +"değerlendirildiği alıntıları eşleştirir" #: GOQLFilter/whereexprrule.gpr.py:170 GOQLFilter/whereexprrule.py:296 msgid "Media matching the " -msgstr "" +msgstr " ile eşleşen medya" #: GOQLFilter/whereexprrule.gpr.py:172 msgid "" "Matches media for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Verilen gramps nesnesi sorgu dilinde ifadenin doğru olarak değerlendirildiği " +"medyaları eşleştirir" #: GOQLFilter/whereexprrule.gpr.py:190 GOQLFilter/whereexprrule.py:301 msgid "Notes matching the " -msgstr "" +msgstr " ile eşleşen notlar" #: GOQLFilter/whereexprrule.gpr.py:192 msgid "" "Matches notes for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Verilen gramps nesnesi sorgu dilinde ifadenin doğru olarak değerlendirildiği " +"notlarla eşleşir" #: GOQLFilter/whereexprrule.py:212 -#, fuzzy -#| msgid "Regular Expression" msgid "GOQL expression" -msgstr "Normal İfade" +msgstr "GOQL ifadesi" #: GOQLFilter/whereexprrule.py:214 msgid "" "Matches objects for which the given gramps-object-query-language where-" "expression evaluates to true" msgstr "" +"Verilen gramps nesnesi sorgu dilindeki ifadenin doğru olarak " +"değerlendirildiği nesnelerle eşleşir" #: GedcomExtensions/GedcomExtensions.gpr.py:32 msgid "Export GEDCOM Extensions (GED2)" -msgstr "GEDCOM Uzantılarını (GED2) Dışa Aktar" +msgstr "GEDCOM Uzantılarını Dışa Aktar (GED2)" #: GedcomExtensions/GedcomExtensions.gpr.py:33 msgid "GEDCOM Extensions (GED2)" @@ -16325,8 +16321,185 @@ msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" "Yapay Zeka Sohbet Botu Gramplet (bir LLM hizmetine bağlanmayı gerektirir)" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +#, fuzzy +#| msgid "Gramps Web Sync" +msgid "GrampsWebApiDb" +msgstr "Gramps Web Senkronizasyonu" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:422 +#, python-format +msgid "" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:141 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL" +msgstr "Sunucu URL adresi: " + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Kullanıcı adı:" + +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Şifre:" + +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "Oluştur" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "%s için Aile Ağacı" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:222 +#, fuzzy +#| msgid "Access forbidden. Please check username and password." +msgid "Please fill in the server URL, username, and password." +msgstr "Erişim engellendi. Lütfen kullanıcı adınızı ve şifrenizi kontrol edin." + +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Nesil " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, fuzzy, python-format +#| msgid "Authentication failed. Please check your username and password." +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" +"Kimlik doğrulama başarısız oldu. Lütfen kullanıcı adınızı ve şifrenizi " +"kontrol edin." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, fuzzy, python-format +#| msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" +msgstr "Beklenmeyen hata: %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Hata:" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error resetting filter: %s" +msgid "Error creating Family Tree: %s" +msgstr "Filtre sıfırlama hatası: %s" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" msgstr "Gramps Web Senkronizasyonu" @@ -16334,312 +16507,508 @@ msgstr "Gramps Web Senkronizasyonu" msgid "Synchronizes a local database with a Gramps Web instance." msgstr "Yerel bir veritabanını bir Gramps Web örneğiyle senkronize eder." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Bağlanılıyor..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "Sunucu URL adresi: " + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Kullanıcı adı:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Şifre:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +#, fuzzy +#| msgid "About this utility." +msgid "About this tool" +msgstr "Bu yardımcı program hakkında." + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" +"Bu araç, şu anda açık olan aile ağacını Gramps Web tarafından sunulan uzak " +"bir aile ağacıyla senkronize etmenizi sağlar.\n" +"\n" +"Araç, iki ağacın birbirinin türevi olduğunu, yani birinin diğerinin Gramps " +"XML (GEDCOM değil!) dışa aktarımından oluşturulduğunu varsayar.\n" +"\n" +"Başarılı senkronizasyondan sonra, iki ağaç özdeş olacaktır. Değişiklikler " +"zaman damgalarına göre yayılacaktır. Yerel veya uzak ağaçlarda herhangi bir " +"değişiklik yapılmadan önce onay istenecektir.\n" +"\n" +"Bunun yerine, manuel değişiklikler yapma seçeneğiyle önemli ölçüde farklı " +"iki ağacı birleştirmek istiyorsanız, bunun yerine İçe Aktarma Birleştirme " +"Aracını kullanın." + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "Hata:" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "Uyarı:" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +#, fuzzy +#| msgid "Migration completed!" +msgid "Synchronization complete" +msgstr "Geçiş tamamlandı!" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation failed" +msgid "Synchronization failed" +msgstr "Nesil oluşturma başarısız oldu" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps Web Sync" +msgid "Gramps Web Sync %s" +msgstr "Gramps Web Senkronizasyonu" + +#: GrampsWebSync/presentation.py:164 +#, fuzzy +#| msgid "" +#| "You have specified a URL with http scheme. If you continue, your password " +#| "will be sent in clear text over the network. Use only for local testing!" +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"HTTP şemasıyla bir URL belirttiniz. Devam ederseniz, şifreniz ağ üzerinden " +"düz metin olarak gönderilecektir. Yalnızca yerel test için kullanın!" + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " "you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "" "Kimlik doğrulama başarısız oldu. Lütfen kullanıcı adınızı ve şifrenizi " "kontrol edin." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "Erişim engellendi. Lütfen kullanıcı adınızı ve şifrenizi kontrol edin." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "GrampsWeb hizmeti bulunamadı. Lütfen URL adresini kontrol edin." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "Çok fazla istek geldi, lütfen birkaç saniye sonra tekrar deneyin." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "GrampsWeb ağacı devre dışı bırakıldı." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "" "Bağlantı başarısız oldu. Lütfen URL adresinizi ve internet bağlantınızı " "kontrol edin." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "Geçersiz sunucu yanıtı. Lütfen URL adresini kontrol edin." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "" "Kullanıcınızın senkronizasyonu kullanmak için yeterli sunucu izinleri yok." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "İndirilen XML dosyasının içe aktarılması başarısız oldu." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "Değişiklikler sunucuya senkronize edilemiyor: nesneler değiştirildi." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "Değişiklikler uygulanırken beklenmedik bir hata oluştu." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "Sunucu hatası %s. Lütfen bağlantınızı kontrol edin." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "Beklenmeyen hata: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Uzak veriler alınıyor..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Yerel ve uzaktan gelen verileri karşılaştırma..." +#: GrampsWebSync/presentation.py:268 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading the remote family tree…" +msgstr "%s medya dosyası indiriliyor" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Değişiklikler yerel veritabanına başarıyla uygulandı." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Taşıma şifrelemesi olmadan devam edilsin mi?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -"HTTP şemasıyla bir URL belirttiniz. Devam ederseniz, şifreniz ağ üzerinden " -"düz metin olarak gönderilecektir. Yalnızca yerel test için kullanın!" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "HTTP ile devam edin" +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server." +msgid "Sending the changes to the server…" +msgstr "Değişiklikler sunucuya senkronize edilemedi." -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "HTTPS kullanın" +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading media files…" +msgstr "%s medya dosyası indiriliyor" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" -"Bu araç, şu anda açık olan aile ağacını Gramps Web tarafından sunulan uzak " -"bir aile ağacıyla senkronize etmenizi sağlar.\n" -"\n" -"Araç, iki ağacın birbirinin türevi olduğunu, yani birinin diğerinin Gramps " -"XML (GEDCOM değil!) dışa aktarımından oluşturulduğunu varsayar.\n" -"\n" -"Başarılı senkronizasyondan sonra, iki ağaç özdeş olacaktır. Değişiklikler " -"zaman damgalarına göre yayılacaktır. Yerel veya uzak ağaçlarda herhangi bir " -"değişiklik yapılmadan önce onay istenecektir.\n" -"\n" -"Bunun yerine, manuel değişiklikler yapma seçeneğiyle önemli ölçüde farklı " -"iki ağacı birleştirmek istiyorsanız, bunun yerine İçe Aktarma Birleştirme " -"Aracını kullanın." +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Uploading media files…" +msgstr "%s medya dosyası yükleniyor" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "Sunucu URL adresi: " +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Bağlanılıyor..." -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "Hata:" +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "Değişiklik yok" + +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Transfer media files" +msgstr "%s medya dosyası yükleniyor" + +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "Çift Yönlü Senkronizasyon" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Çift Yönlü Senkronizasyon" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Uzak adresi yerel adrese sıfırla" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Yerel olanı uzak olana sıfırla" - -#: GrampsWebSync/grampswebsync.py:712 -#, fuzzy -#| msgid "Learning" -msgid "Warning:" -msgstr "Öğrenim" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Yerel değişiklikler" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Uzak değişiklikler" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Eş zamanlı değişiklikler" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Medya dosyaları hakkında bilgi alınıyor..." +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Her iki ağaç da aynı." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Yerel veritabanına değişiklikler uygulanıyor..." +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Test Notu Ekle" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Yerel veritabanına uygulanacak herhangi bir değişiklik yok." +#: GrampsWebSync/presentation.py:594 +#, fuzzy, python-format +#| msgid "Upgrading %s objects..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "%s nesne yükseltiliyor..." -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Uzak veritabanına değişiklikler uygulanıyor..." +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Migrating %s objects..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "%s nesne taşınıyor..." -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Uzak veritabanına uygulanacak değişiklik yok." +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Yerel olarak kayıp" +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Uzaktan kayıp" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:905 -#, fuzzy, python-format -#| msgid "Downloading %s media file(s)" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "%s medya dosyası indiriliyor" +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" +msgstr "" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format -#| msgid "Uploading %s media file(s)" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "%s medya dosyası yükleniyor" +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." +msgid_plural "" +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:681 #, python-format msgid "Applied %s change." msgid_plural "Applied %s changes." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1006 +#: GrampsWebSync/presentation.py:684 +msgid "Both trees are already in sync." +msgstr "İki ağaç da zaten senkronize durumda." + +#: GrampsWebSync/presentation.py:689 msgid "Media files are in sync." msgstr "Medya dosyaları senkronize durumda." -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:708 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." -msgid_plural "" -"%s media files are missing on both sides and could not be transferred." -msgstr[0] "" - -#: GrampsWebSync/grampswebsync.py:1020 -#, fuzzy -#| msgid "Both trees are the same." -msgid "Both trees are already in sync." -msgstr "Her iki ağaç da aynı." - -#: GrampsWebSync/grampswebsync.py:1033 -#, fuzzy, python-format -#| msgid "Successfully downloaded %s media files." msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "%s medya dosyası başarıyla indirildi." -#: GrampsWebSync/grampswebsync.py:1043 -#, fuzzy, python-format -#| msgid "Encountered %s errors during download." +#: GrampsWebSync/presentation.py:717 +#, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "İndirme sırasında %s hata oluştu." -#: GrampsWebSync/grampswebsync.py:1056 -#, fuzzy, python-format -#| msgid "Successfully uploaded %s media files." +#: GrampsWebSync/presentation.py:727 +#, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "%s medya dosyası başarıyla yüklendi." -#: GrampsWebSync/grampswebsync.py:1065 -#, fuzzy, python-format -#| msgid "Encountered %s errors during upload." +#: GrampsWebSync/presentation.py:736 +#, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "Yükleme sırasında %s hata oluştu." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "Gram.py Betiği" @@ -20420,14 +20789,6 @@ msgstr "phpGedView içe aktarma" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Kullanıcı adı:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Şifre:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26422,6 +26783,63 @@ msgstr "" " \"%s\"\n" " web gezgininde açmayı deneyin..." +#~ msgid "Fetching remote data..." +#~ msgstr "Uzak veriler alınıyor..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Yerel ve uzaktan gelen verileri karşılaştırma..." + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Değişiklikler yerel veritabanına başarıyla uygulandı." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Taşıma şifrelemesi olmadan devam edilsin mi?" + +#~ msgid "Continue with HTTP" +#~ msgstr "HTTP ile devam edin" + +#~ msgid "Use HTTPS" +#~ msgstr "HTTPS kullanın" + +#~ msgid "Reset remote to local" +#~ msgstr "Uzak adresi yerel adrese sıfırla" + +#~ msgid "Reset local to remote" +#~ msgstr "Yerel olanı uzak olana sıfırla" + +#~ msgid "Local changes" +#~ msgstr "Yerel değişiklikler" + +#~ msgid "Remote changes" +#~ msgstr "Uzak değişiklikler" + +#~ msgid "Simultaneous changes" +#~ msgstr "Eş zamanlı değişiklikler" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Medya dosyaları hakkında bilgi alınıyor..." + +#~ msgid "Both trees are the same." +#~ msgstr "Her iki ağaç da aynı." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Yerel veritabanına değişiklikler uygulanıyor..." + +#~ msgid "No changes to apply to local database." +#~ msgstr "Yerel veritabanına uygulanacak herhangi bir değişiklik yok." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Uzak veritabanına değişiklikler uygulanıyor..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Uzak veritabanına uygulanacak değişiklik yok." + +#~ msgid "Missing locally" +#~ msgstr "Yerel olarak kayıp" + +#~ msgid "Missing remotely" +#~ msgstr "Uzaktan kayıp" + #~ msgid "Error accessing media object." #~ msgstr "Medya nesnesine erişimde hata oluştu." @@ -26441,9 +26859,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "Sunucuya bağlanırken URL hatası oluştu." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Değişiklikler sunucuya senkronize edilemedi." - #~ msgid "Search" #~ msgstr "Arama" diff --git a/po/uk.po b/po/uk.po index d04208a08..a50aae785 100644 --- a/po/uk.po +++ b/po/uk.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2025-11-17 06:51+0000\n" "Last-Translator: Fedir Zinchuk \n" "Language-Team: Ukrainian Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 +msgid "" +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:141 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL" +msgstr "URL сервера: " + +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:143 +#, fuzzy +#| msgid "Username:" +msgid "Username" +msgstr "Ім'я користувача:" + +#: GrampsWebApiDb/mintapikeytool.py:144 +#, fuzzy +#| msgid "Password:" +msgid "Password" +msgstr "Пароль:" + +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +#| msgid "Generate" +msgid "Generate API Key" +msgstr "Згенерувати" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:182 +#, fuzzy +#| msgid "Family Tree for %s" +msgid "Create Synced Family Tree for this key" +msgstr "Сімейне дерево для %s" + +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:222 +#, fuzzy +#| msgid "Access forbidden. Please check username and password." +msgid "Please fill in the server URL, username, and password." +msgstr "Доступ заборонено. Будь ласка, перевірте ім'я користувача та пароль." + +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "Покоління " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, fuzzy, python-format +#| msgid "Authentication failed. Please check your username and password." +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" +"Не вдалося виконати автентифікацію. Будь ласка, перевірте своє ім'я " +"користувача та пароль." + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, fuzzy, python-format +#| msgid "Unexpected error: %s" +msgid "Unexpected response from the server: %s" +msgstr "Неочікувана помилка: %s" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, fuzzy, python-format +#| msgid "Error:" +msgid "Error: %s" +msgstr "Помилка:" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format +msgid "" +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 +#, python-format +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:352 +#, fuzzy, python-format +#| msgid "Error creating note" +msgid "Error creating Family Tree: %s" +msgstr "Помилка створення нотатки" + +#: GrampsWebApiDb/mintapikeytool.py:358 +#, python-format +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 msgid "Gramps Web Sync" msgstr "Веб-синхронізація Gramps" @@ -16415,295 +16594,466 @@ msgstr "Веб-синхронізація Gramps" msgid "Synchronizes a local database with a Gramps Web instance." msgstr "Синхронізує локальну базу даних з Gramps Web." -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Connecting..." +msgid "C_onnect" +msgstr "Підключення..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 +msgid "" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +#, fuzzy +#| msgid "Server URL: " +msgid "Server URL:" +msgstr "URL сервера: " + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "Ім'я користувача:" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "Пароль:" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +#, fuzzy +#| msgid "About this utility." +msgid "About this tool" +msgstr "Про цю утиліту." + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 +msgid "" +"This tool allows to synchronize the currently opened family tree with a " +"remote family tree served by Gramps Web.\n" +"\n" +"The tool assumes that the two trees are derivatives of each other, i.e. one " +"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" +"\n" +"After successful synchronization, the two trees will be identical. " +"Modifications will be propagated based on timestamps. You will be prompted " +"for confirmation before any changes are made to the local or remote trees.\n" +"\n" +"If you instead want to merge two significantly different trees with the " +"option to make manual modifications, use the Import Merge Tool instead." +msgstr "" +"Цей інструмент дозволяє синхронізувати відкриту родинну базу даних з " +"віддаленою базою на Gramps Web.\n" +"\n" +"Інструмент передбачає, що обидві бази є похідними одна від одної, тобто одна " +"з них була створена через експорт з Gramps XML (не GEDCOM!) другої.\n" +"\n" +"Після успішної синхронізації обидві бази будуть однаковими. Зміни " +"пропагуються за мітками часу. Вам буде запропоновано підтвердження перед " +"тим, як будь-які зміни будуть внесені в локальну або віддалену базу.\n" +"\n" +"Якщо ви хочете об'єднати дві значно різні бази з можливістю ручних змін, " +"використовуйте інструмент Import Merge Tool." + +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 +#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 +msgid "Error:" +msgstr "Помилка:" + +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +#, fuzzy +#| msgid "Learning" +msgid "Warning:" +msgstr "Навчання" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +#, fuzzy +#| msgid "Migration completed!" +msgid "Synchronization complete" +msgstr "Міграцію завершено!" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "Покоління " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, fuzzy, python-format +#| msgid "Gramps Web Sync" +msgid "Gramps Web Sync %s" +msgstr "Веб-синхронізація Gramps" + +#: GrampsWebSync/presentation.py:164 +#, fuzzy +#| msgid "" +#| "You have specified a URL with http scheme. If you continue, your password " +#| "will be sent in clear text over the network. Use only for local testing!" +msgid "" +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." +msgstr "" +"Ви вказали URL зі схемою http. Якщо ви продовжите, ваш пароль буде надіслано " +"незашифрованим через мережу. Використовуйте тільки для локального тестування!" + +#: GrampsWebSync/presentation.py:182 #, python-format msgid "" "The system keyring could not be used. Snap confinement blocks access until " "you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebSync/presentation.py:186 msgid "" "The system keyring could not be used. You will need to enter your password " "each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 +#: GrampsWebSync/presentation.py:203 msgid "Authentication failed. Please check your username and password." msgstr "" "Не вдалося виконати автентифікацію. Будь ласка, перевірте своє ім'я " "користувача та пароль." -#: GrampsWebSync/grampswebsync.py:148 +#: GrampsWebSync/presentation.py:206 msgid "Access forbidden. Please check username and password." msgstr "Доступ заборонено. Будь ласка, перевірте ім'я користувача та пароль." -#: GrampsWebSync/grampswebsync.py:150 +#: GrampsWebSync/presentation.py:208 msgid "GrampsWeb service not found. Please check the URL." msgstr "Сервіс GrampsWeb не знайдено. Будь ласка, перевірте URL-адресу." -#: GrampsWebSync/grampswebsync.py:152 +#: GrampsWebSync/presentation.py:210 msgid "Too many requests, please try again in a few seconds." msgstr "Забагато запитів, спробуйте ще раз через кілька секунд." -#: GrampsWebSync/grampswebsync.py:154 +#: GrampsWebSync/presentation.py:212 msgid "GrampsWeb tree is disabled." msgstr "Дерево GrampsWeb вимкнено." -#: GrampsWebSync/grampswebsync.py:156 +#: GrampsWebSync/presentation.py:214 msgid "Connection failed. Please check the URL and your internet connection." msgstr "" "Помилка з’єднання. Будь ласка, перевірте URL-адресу та ваше інтернет-" "з’єднання." -#: GrampsWebSync/grampswebsync.py:159 +#: GrampsWebSync/presentation.py:217 msgid "Invalid server response. Please check the URL." msgstr "Недійсна відповідь сервера. Будь ласка, перевірте URL-адресу." -#: GrampsWebSync/grampswebsync.py:162 +#: GrampsWebSync/presentation.py:220 msgid "Your user does not have sufficient server permissions to use sync." msgstr "" "Ваш користувач не має достатніх прав на сервері для використання " "синхронізації." -#: GrampsWebSync/grampswebsync.py:164 +#: GrampsWebSync/presentation.py:222 msgid "Failed importing downloaded XML file." msgstr "Не вдалося імпортувати завантажений XML-файл." -#: GrampsWebSync/grampswebsync.py:166 +#: GrampsWebSync/presentation.py:224 msgid "Unable to synchronize changes to server: objects have been modified." msgstr "Не вдалося синхронізувати зміни з сервером: обʼєкти було змінено." -#: GrampsWebSync/grampswebsync.py:168 +#: GrampsWebSync/presentation.py:226 msgid "Unexpected error while applying changes." msgstr "Несподівана помилка під час застосування змін." -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebSync/presentation.py:228 msgid "" "The family tree was modified while the changes were being reviewed. Nothing " "has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 #, python-format msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebSync/presentation.py:258 #, python-format msgid "Server error %s. Please check your connection." msgstr "Помилка сервера %s. Будь ласка, перевірте ваше з’єднання." -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format msgid "Unexpected error: %s" msgstr "Неочікувана помилка: %s" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." -msgstr "Отримання віддалених даних..." +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." -msgstr "Порівняння локальних та віддалених даних..." +#: GrampsWebSync/presentation.py:268 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading the remote family tree…" +msgstr "Завантаження %s медіафайл" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." -msgstr "Зміни успішно застосовані до локальної бази даних." +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" -msgstr "Продовжити без транспортного шифрування?" +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" -#: GrampsWebSync/grampswebsync.py:439 -msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -"Ви вказали URL зі схемою http. Якщо ви продовжите, ваш пароль буде надіслано " -"незашифрованим через мережу. Використовуйте тільки для локального тестування!" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" -msgstr "Продовжити з HTTP" +#: GrampsWebSync/presentation.py:272 +#, fuzzy +#| msgid "Unable to synchronize changes to server." +msgid "Sending the changes to the server…" +msgstr "Не вдалося синхронізувати зміни із сервером." -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" -msgstr "Використати HTTPS" +#: GrampsWebSync/presentation.py:284 +#, fuzzy +#| msgid "Downloading %s media file" +#| msgid_plural "Downloading %s media files" +msgid "Downloading media files…" +msgstr "Завантаження %s медіафайл" -#: GrampsWebSync/grampswebsync.py:495 -msgid "" -"This tool allows to synchronize the currently opened family tree with a " -"remote family tree served by Gramps Web.\n" -"\n" -"The tool assumes that the two trees are derivatives of each other, i.e. one " -"of the two was created from a Gramps XML (not GEDCOM!) export of the other.\n" -"\n" -"After successful synchronization, the two trees will be identical. " -"Modifications will be propagated based on timestamps. You will be prompted " -"for confirmation before any changes are made to the local or remote trees.\n" -"\n" -"If you instead want to merge two significantly different trees with the " -"option to make manual modifications, use the Import Merge Tool instead." -msgstr "" -"Цей інструмент дозволяє синхронізувати відкриту родинну базу даних з " -"віддаленою базою на Gramps Web.\n" -"\n" -"Інструмент передбачає, що обидві бази є похідними одна від одної, тобто одна " -"з них була створена через експорт з Gramps XML (не GEDCOM!) другої.\n" -"\n" -"Після успішної синхронізації обидві бази будуть однаковими. Зміни " -"пропагуються за мітками часу. Вам буде запропоновано підтвердження перед " -"тим, як будь-які зміни будуть внесені в локальну або віддалену базу.\n" -"\n" -"Якщо ви хочете об'єднати дві значно різні бази з можливістю ручних змін, " -"використовуйте інструмент Import Merge Tool." +#: GrampsWebSync/presentation.py:285 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Uploading media files…" +msgstr "Відвантаження %s медіафайлу" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "URL сервера: " +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Connecting..." +msgid "Connect" +msgstr "Підключення..." -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 -#: HistContext/HistContext.py:333 HistContext/HistContext.py:420 -msgid "Error:" -msgstr "Помилка:" +#: GrampsWebSync/presentation.py:295 +#, fuzzy +#| msgid "No changes" +msgid "Apply changes" +msgstr "Без змін" + +#: GrampsWebSync/presentation.py:296 +#, fuzzy +#| msgid "Uploading %s media file" +#| msgid_plural "Uploading %s media files" +msgid "Transfer media files" +msgstr "Відвантаження %s медіафайлу" + +#: GrampsWebSync/presentation.py:304 +#, fuzzy +#| msgid "Bidirectional Synchronization" +msgid "Bidirectional synchronization" +msgstr "Двостороння синхронізація" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:319 msgid "" "Changes from both sides are combined. Objects edited in both places are " "merged." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:323 msgid "" "The server is made to match this computer. Anything changed only on the " "server is discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:327 msgid "" "This computer is made to match the server. Anything changed only here is " "discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" -msgstr "Двостороння синхронізація" - -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" -msgstr "Скинути віддалені дані до локальних" - -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" -msgstr "Скинути локальні дані до віддалених" - -#: GrampsWebSync/grampswebsync.py:712 -#, fuzzy -#| msgid "Learning" -msgid "Warning:" -msgstr "Навчання" - -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" -msgstr "Локальні зміни" - -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" -msgstr "Віддалені зміни" - -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" -msgstr "Одночасно змінено" - -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." -msgstr "Отримання інформації про медіафайли..." - -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." -msgstr "Обидва дерева однакові." - -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." -msgstr "Застосування змін до локальної бази даних ..." - -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." -msgstr "Немає змін для застосування до локальної бази даних." - -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." -msgstr "Застосування змін до віддаленої бази даних ..." +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." -msgstr "Немає змін для застосування до віддаленої бази даних." +#: GrampsWebSync/presentation.py:582 +#, python-format +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" -msgstr "Відсутнє локально" +#: GrampsWebSync/presentation.py:593 +#, fuzzy, python-format +#| msgid "Add Test Note" +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "Додати тестову примітку" +msgstr[1] "Додати тестову примітку" +msgstr[2] "Додати тестову примітку" + +#: GrampsWebSync/presentation.py:594 +#, fuzzy, python-format +#| msgid "Upgrading %s objects..." +msgid "Update %s object" +msgid_plural "Update %s objects" +msgstr[0] "Оновлення %s об'єктів..." +msgstr[1] "Оновлення %s об'єктів..." +msgstr[2] "Оновлення %s об'єктів..." + +#: GrampsWebSync/presentation.py:595 +#, fuzzy, python-format +#| msgid "Migrating %s objects..." +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "Міграція %s об'єктів..." +msgstr[1] "Міграція %s об'єктів..." +msgstr[2] "Міграція %s об'єктів..." -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" -msgstr "Відсутнє віддалено" +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:905 -#, fuzzy, python-format -#| msgid "Downloading %s media file" -#| msgid_plural "Downloading %s media files" -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" -msgstr[0] "Завантаження %s медіафайл" -msgstr[1] "Завантаження %s медіафайл" -msgstr[2] "Завантаження %s медіафайл" +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:920 -#, fuzzy, python-format -#| msgid "Uploading %s media file" -#| msgid_plural "Uploading %s media files" -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" -msgstr[0] "Відвантаження %s медіафайлу" -msgstr[1] "Відвантаження %s медіафайлу" -msgstr[2] "Відвантаження %s медіафайлу" +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." -msgstr "Медіафайли синхронізовані." - -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 #, fuzzy #| msgid "Both trees are the same." msgid "Both trees are already in sync." msgstr "Обидва дерева однакові." -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "Медіафайли синхронізовані." + +#: GrampsWebSync/presentation.py:708 #, fuzzy, python-format #| msgid "Successfully downloaded %s media file." #| msgid_plural "Successfully downloaded %s media files." @@ -16713,7 +17063,7 @@ msgstr[0] "Успішно завантажено %s медіафайл." msgstr[1] "Успішно завантажено %s медіафайл." msgstr[2] "Успішно завантажено %s медіафайл." -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, fuzzy, python-format #| msgid "Encountered %s error during download." #| msgid_plural "Encountered %s errors during download." @@ -16723,7 +17073,7 @@ msgstr[0] "Виявлено %s помилка під час завантажен msgstr[1] "Виявлено %s помилка під час завантаження." msgstr[2] "Виявлено %s помилка під час завантаження." -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, fuzzy, python-format #| msgid "Successfully uploaded %s media file." #| msgid_plural "Successfully uploaded %s media files." @@ -16733,7 +17083,7 @@ msgstr[0] "Успішно завантажено %s медіафайл." msgstr[1] "Успішно завантажено %s медіафайл." msgstr[2] "Успішно завантажено %s медіафайл." -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, fuzzy, python-format #| msgid "Encountered %s error during upload." #| msgid_plural "Encountered %s errors during upload." @@ -16743,6 +17093,57 @@ msgstr[0] "Виявлено %s помилка під час завантажен msgstr[1] "Виявлено %s помилка під час завантаження." msgstr[2] "Виявлено %s помилка під час завантаження." +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -20612,14 +21013,6 @@ msgstr "Імпорт phpGedView" msgid "http://" msgstr "http://" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "Ім'я користувача:" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "Пароль:" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "PhpGedView" @@ -26608,6 +27001,63 @@ msgstr "" " \"%s\"\n" " у вашому улюбленому веб-навігаторі..." +#~ msgid "Fetching remote data..." +#~ msgstr "Отримання віддалених даних..." + +#~ msgid "Comparing local and remote data..." +#~ msgstr "Порівняння локальних та віддалених даних..." + +#~ msgid "Successfully applied changes to local database." +#~ msgstr "Зміни успішно застосовані до локальної бази даних." + +#~ msgid "Continue without transport encryption?" +#~ msgstr "Продовжити без транспортного шифрування?" + +#~ msgid "Continue with HTTP" +#~ msgstr "Продовжити з HTTP" + +#~ msgid "Use HTTPS" +#~ msgstr "Використати HTTPS" + +#~ msgid "Reset remote to local" +#~ msgstr "Скинути віддалені дані до локальних" + +#~ msgid "Reset local to remote" +#~ msgstr "Скинути локальні дані до віддалених" + +#~ msgid "Local changes" +#~ msgstr "Локальні зміни" + +#~ msgid "Remote changes" +#~ msgstr "Віддалені зміни" + +#~ msgid "Simultaneous changes" +#~ msgstr "Одночасно змінено" + +#~ msgid "Fetching information about media files..." +#~ msgstr "Отримання інформації про медіафайли..." + +#~ msgid "Both trees are the same." +#~ msgstr "Обидва дерева однакові." + +#~ msgid "Applying changes to local database ..." +#~ msgstr "Застосування змін до локальної бази даних ..." + +#~ msgid "No changes to apply to local database." +#~ msgstr "Немає змін для застосування до локальної бази даних." + +#~ msgid "Applying changes to remote database ..." +#~ msgstr "Застосування змін до віддаленої бази даних ..." + +#~ msgid "No changes to apply to remote database." +#~ msgstr "Немає змін для застосування до віддаленої бази даних." + +#~ msgid "Missing locally" +#~ msgstr "Відсутнє локально" + +#~ msgid "Missing remotely" +#~ msgstr "Відсутнє віддалено" + #~ msgid "Error accessing media object." #~ msgstr "Помилка доступу до медіаобʼєкта." @@ -26627,9 +27077,6 @@ msgstr "" #~ msgid "URL error while connecting to server." #~ msgstr "Помилка URL під час підключення до сервера." -#~ msgid "Unable to synchronize changes to server." -#~ msgstr "Не вдалося синхронізувати зміни із сервером." - #~ msgid "Search" #~ msgstr "Пошук" diff --git a/po/vi.po b/po/vi.po index f914c1efb..c749fe17d 100644 --- a/po/vi.po +++ b/po/vi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: GRAMPS VIETNAMESE 4.2.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-02-08 09:09+0000\n" "Last-Translator: Securitocat \n" "Language-Team: Vietnamese Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +msgid "Generate API Key" +msgstr "Tổng quát " + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +msgid "Generating API key…" +msgstr "Thế hệ " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15919,158 +16031,374 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +msgid "Synchronization failed" +msgstr "Thế hệ " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." +msgstr "" + +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19656,14 +19984,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index a5ff44290..f874bb33d 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: GRAMPS VERSION 3.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2026-06-28 22:01+0000\n" "Last-Translator: Tian Shixiong \n" "Language-Team: Chinese (Simplified Han script) Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +#, fuzzy +msgid "Generate API Key" +msgstr "一般" + +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:229 +#, fuzzy +#| msgid "Generation " +msgid "Generating API key…" +msgstr "代 " + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:250 +#, fuzzy +#| msgid "Selecting... " +msgid "C_onnect" +msgstr "选择..." + +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15938,158 +16053,377 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +#, fuzzy +#| msgid "Generation " +msgid "Synchronization failed" +msgstr "代 " + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." +msgstr "" + +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." +msgstr "" + +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." +msgstr "" + +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." +msgstr "" + +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." +msgstr "" + +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." +msgstr "" + +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." +msgstr "" + +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." +msgstr "" + +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." +msgstr "" + +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." +msgstr "" + +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." +msgstr "" + +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 +#, python-format +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:293 +#, fuzzy +#| msgid "Selecting... " +msgid "Connect" +msgstr "选择..." + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:574 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 +#, python-format +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:658 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19714,14 +20048,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/zh_HK.po b/po/zh_HK.po index 81cac15fb..4ed5c85d5 100644 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: Gramps 4.2.0-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2015-03-18 17:31-0600\n" "Last-Translator: Anthony Fok \n" "Language-Team: Chinese (Hong Kong) <(nothing)>\n" @@ -2072,7 +2072,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15684,124 +15686,232 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15817,158 +15927,373 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19515,14 +19840,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr "" diff --git a/po/zh_TW.po b/po/zh_TW.po index d095c6f5e..c49738b3f 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: Gramps 4.2.0-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-04 08:55-0700\n" +"POT-Creation-Date: 2026-08-09 10:08-0700\n" "PO-Revision-Date: 2015-03-18 17:31-0600\n" "Last-Translator: Anthony Fok \n" "Language-Team: Chinese (traditional) \n" @@ -2072,7 +2072,9 @@ msgid "Calculate" msgstr "" #: DateCalculator/DateCalculator.py:107 -#: EditExifMetadata/editexifmetadata.py:219 GraphView/graphview.py:3873 +#: EditExifMetadata/editexifmetadata.py:219 +#: GrampsWebApiDb/mintapikeytool.py:176 GrampsWebSync/grampswebsync.py:1063 +#: GraphView/graphview.py:3873 msgid "Copy" msgstr "" @@ -15684,124 +15686,232 @@ msgstr "" msgid "AI Chatbot Gramplet (requires connecting to an LLM service)" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:213 -#: GrampsWebSync/grampswebsync.py:271 -msgid "Gramps Web Sync" +#: GrampsWebApiDb/grampswebapidb.gpr.py:24 +msgid "GrampsWebApiDb" msgstr "" -#: GrampsWebSync/grampswebsync.gpr.py:30 -msgid "Synchronizes a local database with a Gramps Web instance." +#: GrampsWebApiDb/grampswebapidb.gpr.py:25 +msgid "Gramps _Web API Database" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.gpr.py:27 +msgid "" +"Use a Gramps Web API server (e.g. gramps-connect or Gramps Web) as a live " +"database, mirrored locally for speed." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:262 +msgid "" +"The account authenticating via GRAMPS_WEB_API_KEY does not have permission " +"on the server for this operation (HTTP 403 Forbidden). Generate a key for an " +"account with sufficient permissions, or ask the server administrator to " +"grant this one access." msgstr "" -#: GrampsWebSync/grampswebsync.py:124 +#: GrampsWebApiDb/grampswebapidb.py:422 #, python-format msgid "" -"The system keyring could not be used. Snap confinement blocks access until " -"you run: %s" +"This Family Tree is named \"%(actual)s\", but GRAMPS_WEB_API_KEY currently " +"authenticates as \"%(expected)s\". Rename this Family Tree to " +"\"%(expected_typeable)s\" (Family Trees -> Manage Family Trees) if it's " +"meant to mirror that account, or open/create the Family Tree already named " +"that -- reusing this one would mix its existing local data with the other " +"account's." +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:550 +msgid "Retry local change after server conflict" +msgstr "" + +#: GrampsWebApiDb/grampswebapidb.py:668 +msgid "Clear local mirror before full resync" msgstr "" -#: GrampsWebSync/grampswebsync.py:128 +#: GrampsWebApiDb/mintapikeytool.gpr.py:23 GrampsWebApiDb/mintapikeytool.py:129 +msgid "Generate Gramps Web API key" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.gpr.py:25 msgid "" -"The system keyring could not be used. You will need to enter your password " -"each time." +"Turn a Gramps Web API server URL, username, and password into a " +"GRAMPS_WEB_API_KEY value for GrampsWebApiDb, and optionally create a " +"matching, correctly-named GrampsWebApiDb Family Tree for it." msgstr "" -#: GrampsWebSync/grampswebsync.py:145 -msgid "Authentication failed. Please check your username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "Server URL" msgstr "" -#: GrampsWebSync/grampswebsync.py:148 -msgid "Access forbidden. Please check username and password." +#: GrampsWebApiDb/mintapikeytool.py:141 +msgid "e.g. https://your-server/api" msgstr "" -#: GrampsWebSync/grampswebsync.py:150 -msgid "GrampsWeb service not found. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:143 +msgid "Username" msgstr "" -#: GrampsWebSync/grampswebsync.py:152 -msgid "Too many requests, please try again in a few seconds." +#: GrampsWebApiDb/mintapikeytool.py:144 +msgid "Password" msgstr "" -#: GrampsWebSync/grampswebsync.py:154 -msgid "GrampsWeb tree is disabled." +#: GrampsWebApiDb/mintapikeytool.py:153 +msgid "Generate API Key" msgstr "" -#: GrampsWebSync/grampswebsync.py:156 -msgid "Connection failed. Please check the URL and your internet connection." +#: GrampsWebApiDb/mintapikeytool.py:162 +msgid "" +"Enter your server URL, username, and password, then click Generate API Key." msgstr "" -#: GrampsWebSync/grampswebsync.py:159 -msgid "Invalid server response. Please check the URL." +#: GrampsWebApiDb/mintapikeytool.py:168 +msgid "GRAMPS_WEB_API_KEY" msgstr "" -#: GrampsWebSync/grampswebsync.py:162 -msgid "Your user does not have sufficient server permissions to use sync." +#: GrampsWebApiDb/mintapikeytool.py:182 +msgid "Create Synced Family Tree for this key" msgstr "" -#: GrampsWebSync/grampswebsync.py:164 -msgid "Failed importing downloaded XML file." +#: GrampsWebApiDb/mintapikeytool.py:197 +#, python-format +msgid "" +"Found an existing %s for this session. Click Create Synced Family Tree to " +"use it directly, or fill in the form above to generate a different key." msgstr "" -#: GrampsWebSync/grampswebsync.py:166 -msgid "Unable to synchronize changes to server: objects have been modified." +#: GrampsWebApiDb/mintapikeytool.py:222 +msgid "Please fill in the server URL, username, and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:168 -msgid "Unexpected error while applying changes." +#: GrampsWebApiDb/mintapikeytool.py:229 +msgid "Generating API key…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:260 +#, python-format +msgid "Login failed (HTTP %d): check your username and password." +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:263 +#, python-format +msgid "Server returned an error (HTTP %d %s): check the Server URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:170 +#: GrampsWebApiDb/mintapikeytool.py:271 +#, python-format +msgid "Could not reach the server: check the Server URL. (%s)" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:274 +#, python-format +msgid "Unexpected response from the server: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:277 GrampsWebApiDb/mintapikeytool.py:369 +#, python-format +msgid "Error: %s" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:286 +#, python-format msgid "" -"The family tree was modified while the changes were being reviewed. Nothing " -"has been applied. Please compare again." +"Success. %s is now set for this Gramps session -- no restart needed. Copy " +"the key below to also set it in your shell environment for next time." msgstr "" -#: GrampsWebSync/grampswebsync.py:175 +#: GrampsWebApiDb/mintapikeytool.py:307 +msgid "Looking up account identity…" +msgstr "" + +#: GrampsWebApiDb/mintapikeytool.py:339 #, python-format -msgid "The server could not apply the changes: %s" +msgid "" +"A Family Tree named \"%s\" already exists. Open it from Family Trees -> " +"Manage Family Trees instead of creating another one." msgstr "" -#: GrampsWebSync/grampswebsync.py:177 +#: GrampsWebApiDb/mintapikeytool.py:352 #, python-format -msgid "Server error %s. Please check your connection." +msgid "Error creating Family Tree: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:179 GrampsWebSync/grampswebsync.py:180 +#: GrampsWebApiDb/mintapikeytool.py:358 #, python-format -msgid "Unexpected error: %s" +msgid "" +"Created Family Tree \"%s\". Open it from Family Trees -> Manage Family Trees " +"to start syncing." +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:29 GrampsWebSync/grampswebsync.py:204 +#: GrampsWebSync/grampswebsync.py:269 +msgid "Gramps Web Sync" +msgstr "" + +#: GrampsWebSync/grampswebsync.gpr.py:30 +msgid "Synchronizes a local database with a Gramps Web instance." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:249 +msgid "_Try again" msgstr "" -#: GrampsWebSync/grampswebsync.py:341 -msgid "Fetching remote data..." +#: GrampsWebSync/grampswebsync.py:250 +msgid "C_onnect" msgstr "" -#: GrampsWebSync/grampswebsync.py:344 -msgid "Comparing local and remote data..." +#: GrampsWebSync/grampswebsync.py:345 +msgid "Forget this server?" msgstr "" -#: GrampsWebSync/grampswebsync.py:348 -msgid "Successfully applied changes to local database." +#: GrampsWebSync/grampswebsync.py:347 +msgid "" +"The address, user name and password stored for this server will be removed, " +"along with the record of when this family tree last synchronized with it. " +"The next synchronization will compare the two trees from scratch." msgstr "" -#: GrampsWebSync/grampswebsync.py:437 -msgid "Continue without transport encryption?" +#: GrampsWebSync/grampswebsync.py:352 +msgid "Forget" msgstr "" -#: GrampsWebSync/grampswebsync.py:439 +#: GrampsWebSync/grampswebsync.py:480 msgid "" -"You have specified a URL with http scheme. If you continue, your password " -"will be sent in clear text over the network. Use only for local testing!" +"These credentials were last used with a different family tree. Check the " +"server before continuing." +msgstr "" + +#: GrampsWebSync/grampswebsync.py:556 +msgid "Change server…" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:591 +msgid "Server URL:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:593 PhpGedView/phpgedview.glade:170 +msgid "Username:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:594 PhpGedView/phpgedview.glade:182 +msgid "Password:" msgstr "" -#: GrampsWebSync/grampswebsync.py:444 -msgid "Continue with HTTP" +#: GrampsWebSync/grampswebsync.py:598 +msgid "Remember password" msgstr "" -#: GrampsWebSync/grampswebsync.py:445 -msgid "Use HTTPS" +#: GrampsWebSync/grampswebsync.py:610 +msgid "Forget this server" msgstr "" -#: GrampsWebSync/grampswebsync.py:495 +#: GrampsWebSync/grampswebsync.py:641 +msgid "About this tool" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:645 +msgid "Open the online manual" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:658 msgid "" "This tool allows to synchronize the currently opened family tree with a " "remote family tree served by Gramps Web.\n" @@ -15817,158 +15927,373 @@ msgid "" "option to make manual modifications, use the Import Merge Tool instead." msgstr "" -#: GrampsWebSync/grampswebsync.py:522 -msgid "Server URL: " -msgstr "" - -#: GrampsWebSync/grampswebsync.py:578 HistContext/HistContext.py:289 +#: GrampsWebSync/grampswebsync.py:729 HistContext/HistContext.py:289 #: HistContext/HistContext.py:333 HistContext/HistContext.py:420 msgid "Error:" msgstr "" -#: GrampsWebSync/grampswebsync.py:646 -msgid "Sync mode" +#: GrampsWebSync/grampswebsync.py:756 GrampsWebSync/grampswebsync.py:1012 +msgid "Warning:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:901 +msgid "Sync mode:" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1077 +msgid "Synchronization complete" +msgstr "" + +#: GrampsWebSync/grampswebsync.py:1084 +msgid "Synchronization failed" +msgstr "" + +#: GrampsWebSync/presentation.py:128 +#, python-format +msgid "Gramps Web Sync %(addon)s, Web API %(api)s" +msgstr "" + +#: GrampsWebSync/presentation.py:132 +#, python-format +msgid "Gramps Web Sync %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:656 +#: GrampsWebSync/presentation.py:164 msgid "" -"Changes from both sides are combined. Objects edited in both places are " -"merged." +"This URL uses http, so your password will be sent in clear text. Use only " +"for local testing." msgstr "" -#: GrampsWebSync/grampswebsync.py:660 +#: GrampsWebSync/presentation.py:182 +#, python-format msgid "" -"The server is made to match this computer. Anything changed only on the " -"server is discarded." +"The system keyring could not be used. Snap confinement blocks access until " +"you run: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:664 +#: GrampsWebSync/presentation.py:186 msgid "" -"This computer is made to match the server. Anything changed only here is " -"discarded." +"The system keyring could not be used. You will need to enter your password " +"each time." msgstr "" -#: GrampsWebSync/grampswebsync.py:671 -msgid "Bidirectional Synchronization" +#: GrampsWebSync/presentation.py:203 +msgid "Authentication failed. Please check your username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:672 -msgid "Reset remote to local" +#: GrampsWebSync/presentation.py:206 +msgid "Access forbidden. Please check username and password." msgstr "" -#: GrampsWebSync/grampswebsync.py:673 -msgid "Reset local to remote" +#: GrampsWebSync/presentation.py:208 +msgid "GrampsWeb service not found. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:712 -msgid "Warning:" +#: GrampsWebSync/presentation.py:210 +msgid "Too many requests, please try again in a few seconds." msgstr "" -#: GrampsWebSync/grampswebsync.py:722 -msgid "Local changes" +#: GrampsWebSync/presentation.py:212 +msgid "GrampsWeb tree is disabled." msgstr "" -#: GrampsWebSync/grampswebsync.py:727 -msgid "Remote changes" +#: GrampsWebSync/presentation.py:214 +msgid "Connection failed. Please check the URL and your internet connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:732 -msgid "Simultaneous changes" +#: GrampsWebSync/presentation.py:217 +msgid "Invalid server response. Please check the URL." msgstr "" -#: GrampsWebSync/grampswebsync.py:790 -msgid "Fetching information about media files..." +#: GrampsWebSync/presentation.py:220 +msgid "Your user does not have sufficient server permissions to use sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:816 -msgid "Both trees are the same." +#: GrampsWebSync/presentation.py:222 +msgid "Failed importing downloaded XML file." msgstr "" -#: GrampsWebSync/grampswebsync.py:822 -msgid "Applying changes to local database ..." +#: GrampsWebSync/presentation.py:224 +msgid "Unable to synchronize changes to server: objects have been modified." msgstr "" -#: GrampsWebSync/grampswebsync.py:824 -msgid "No changes to apply to local database." +#: GrampsWebSync/presentation.py:226 +msgid "Unexpected error while applying changes." msgstr "" -#: GrampsWebSync/grampswebsync.py:828 -msgid "Applying changes to remote database ..." +#: GrampsWebSync/presentation.py:228 +msgid "" +"The family tree was modified while the changes were being reviewed. Nothing " +"has been applied. Please compare again." msgstr "" -#: GrampsWebSync/grampswebsync.py:833 -msgid "No changes to apply to remote database." +#: GrampsWebSync/presentation.py:235 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s, but synchronization needs " +"%(needed)s or newer. Please update the server." +msgstr "" + +#: GrampsWebSync/presentation.py:239 +#, python-format +msgid "" +"This server did not report a Gramps Web API version, so it is too old to " +"synchronize with. Version %s or newer is needed." +msgstr "" + +#: GrampsWebSync/presentation.py:244 +#, python-format +msgid "" +"This server runs Gramps Web API %(found)s. This version of Gramps works with " +"Gramps Web API %(major)s, so synchronizing with this server needs a newer " +"version of Gramps." +msgstr "" + +#: GrampsWebSync/presentation.py:250 +msgid "" +"This server is not configured to use a background task queue. " +"Synchronization needs one: without it, applying changes times out before the " +"server has finished. Please enable it on the server." msgstr "" -#: GrampsWebSync/grampswebsync.py:862 -msgid "Missing locally" +#: GrampsWebSync/presentation.py:256 +#, python-format +msgid "The server could not apply the changes: %s" msgstr "" -#: GrampsWebSync/grampswebsync.py:865 -msgid "Missing remotely" +#: GrampsWebSync/presentation.py:258 +#, python-format +msgid "Server error %s. Please check your connection." msgstr "" -#: GrampsWebSync/grampswebsync.py:905 +#: GrampsWebSync/presentation.py:260 GrampsWebSync/presentation.py:261 #, python-format -msgid "Downloading %s media file" -msgid_plural "Downloading %s media files" +msgid "Unexpected error: %s" +msgstr "" + +#: GrampsWebSync/presentation.py:267 +msgid "Signing in…" +msgstr "" + +#: GrampsWebSync/presentation.py:268 +msgid "Downloading the remote family tree…" +msgstr "" + +#: GrampsWebSync/presentation.py:269 +msgid "Comparing the two family trees…" +msgstr "" + +#: GrampsWebSync/presentation.py:270 +msgid "Checking which media files are missing…" +msgstr "" + +#: GrampsWebSync/presentation.py:271 +msgid "Applied the changes to this computer." +msgstr "" + +#: GrampsWebSync/presentation.py:272 +msgid "Sending the changes to the server…" +msgstr "" + +#: GrampsWebSync/presentation.py:284 +msgid "Downloading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:285 +msgid "Uploading media files…" +msgstr "" + +#: GrampsWebSync/presentation.py:293 +msgid "Connect" +msgstr "" + +#: GrampsWebSync/presentation.py:295 +msgid "Apply changes" +msgstr "" + +#: GrampsWebSync/presentation.py:296 +msgid "Transfer media files" +msgstr "" + +#: GrampsWebSync/presentation.py:304 +msgid "Bidirectional synchronization" +msgstr "" + +#: GrampsWebSync/presentation.py:305 +msgid "Reset the server to match this computer" +msgstr "" + +#: GrampsWebSync/presentation.py:306 +msgid "Reset this computer to match the server" +msgstr "" + +#: GrampsWebSync/presentation.py:319 +msgid "" +"Changes from both sides are combined. Objects edited in both places are " +"merged." +msgstr "" + +#: GrampsWebSync/presentation.py:323 +msgid "" +"The server is made to match this computer. Anything changed only on the " +"server is discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:327 +msgid "" +"This computer is made to match the server. Anything changed only here is " +"discarded." +msgstr "" + +#: GrampsWebSync/presentation.py:574 +#, python-format +msgid "Will change on this computer (%s object)" +msgid_plural "Will change on this computer (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:920 +#: GrampsWebSync/presentation.py:582 #, python-format -msgid "Uploading %s media file" -msgid_plural "Uploading %s media files" +msgid "Will change on the server (%s object)" +msgid_plural "Will change on the server (%s objects)" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:965 -msgid "Try again" -msgstr "" +#: GrampsWebSync/presentation.py:593 +#, python-format +msgid "Add %s object" +msgid_plural "Add %s objects" +msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:999 +#: GrampsWebSync/presentation.py:594 #, python-format -msgid "Applied %s change." -msgid_plural "Applied %s changes." +msgid "Update %s object" +msgid_plural "Update %s objects" msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1006 -msgid "Media files are in sync." +#: GrampsWebSync/presentation.py:595 +#, python-format +msgid "Merge %s object" +msgid_plural "Merge %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:596 +#, python-format +msgid "Delete %s object" +msgid_plural "Delete %s objects" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:615 +#, python-format +msgid "%s object will be deleted on this computer." +msgid_plural "%s objects will be deleted on this computer." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:624 +#, python-format +msgid "%s object will be deleted on the server." +msgid_plural "%s objects will be deleted on the server." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:636 +#, python-format +msgid "%(down)s to download, %(up)s to upload" msgstr "" -#: GrampsWebSync/grampswebsync.py:1011 +#: GrampsWebSync/presentation.py:642 #, python-format -msgid "%s media file is missing on both sides and could not be transferred." +msgid "Also transfer %(total)s media file (%(counts)s)" +msgid_plural "Also transfer %(total)s media files (%(counts)s)" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:658 +#, python-format +msgid "%s media file is missing on both sides and cannot be transferred." msgid_plural "" -"%s media files are missing on both sides and could not be transferred." +"%s media files are missing on both sides and cannot be transferred." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1020 +#: GrampsWebSync/presentation.py:681 +#, python-format +msgid "Applied %s change." +msgid_plural "Applied %s changes." +msgstr[0] "" + +#: GrampsWebSync/presentation.py:684 msgid "Both trees are already in sync." msgstr "" -#: GrampsWebSync/grampswebsync.py:1033 +#: GrampsWebSync/presentation.py:689 +msgid "Media files are in sync." +msgstr "" + +#: GrampsWebSync/presentation.py:708 #, python-format msgid "Successfully downloaded %s media file." msgid_plural "Successfully downloaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1043 +#: GrampsWebSync/presentation.py:717 #, python-format msgid "Encountered %s error during download." msgid_plural "Encountered %s errors during download." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1056 +#: GrampsWebSync/presentation.py:727 #, python-format msgid "Successfully uploaded %s media file." msgid_plural "Successfully uploaded %s media files." msgstr[0] "" -#: GrampsWebSync/grampswebsync.py:1065 +#: GrampsWebSync/presentation.py:736 #, python-format msgid "Encountered %s error during upload." msgid_plural "Encountered %s errors during upload." msgstr[0] "" +#: GrampsWebSync/presentation.py:768 +msgid "No server configured" +msgstr "" + +#: GrampsWebSync/presentation.py:769 +#, python-format +msgid "%(user)s on %(server)s" +msgstr "" + +#: GrampsWebSync/presentation.py:774 +#, python-format +msgid "%(where)s — %(synced)s" +msgstr "" + +#: GrampsWebSync/presentation.py:788 +msgid "Never synced" +msgstr "" + +#: GrampsWebSync/presentation.py:792 +msgid "Last synced just now" +msgstr "" + +#: GrampsWebSync/presentation.py:795 +#, python-format +msgid "Last synced %s minute ago" +msgid_plural "Last synced %s minutes ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:801 +#, python-format +msgid "Last synced %s hour ago" +msgid_plural "Last synced %s hours ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:806 +#, python-format +msgid "Last synced %s day ago" +msgid_plural "Last synced %s days ago" +msgstr[0] "" + +#: GrampsWebSync/presentation.py:807 +#, python-format +msgid "Last synced on %s" +msgstr "" + #: GrampyScript/GrampyScript.gpr.py:23 GrampyScript/GrampyScript.gpr.py:32 msgid "Gram.py Script" msgstr "" @@ -19515,14 +19840,6 @@ msgstr "" msgid "http://" msgstr "" -#: PhpGedView/phpgedview.glade:170 -msgid "Username:" -msgstr "" - -#: PhpGedView/phpgedview.glade:182 -msgid "Password:" -msgstr "" - #: PhpGedView/phpgedview.gpr.py:24 msgid "PhpGedView" msgstr ""