Commit Graph
275 Commits
Author SHA1 Message Date
David Sangrey ccf7fbc164 [RELEASE] 6.1.1 2026-01-25 11:36:11 -05:00
David Sangrey 5ea52f0ea7 Update Translation Documentation 2026-01-18 16:00:46 -05:00
David Sangrey eeb1439429 Sync Languages with Crowdin 2026-01-18 15:23:52 -05:00
David Sangrey abe5f54be1 Refactor Companion 2026-01-04 19:19:07 -05:00
David Sangrey f69a45584f Linter Fixes from #2553 2026-01-02 22:42:39 -05:00
David Sangrey 0e19058d29 Add Translations, Plugin Ver Check 2025-12-27 18:16:57 -05:00
Inutt 9fd04e5c02 Add localisation of stations names
This currently only affects system colonisation ships, which have '$EXT_PANEL_ColonisationShip;' in their StationName
entries in the journal. Other strings may need to be added in future.

Fixes #2404
diff --git a/L10n/en.template b/L10n/en.template
index faac3259..f670e39c 100644
--- a/L10n/en.template
+++ b/L10n/en.template
@@ -839,3 +839,9 @@

 /* edastro_core.py: Settings>EDAstro - Label on checkbox for 'send data'; */
 "Send data to EDAstro" = "Send data to EDAstro";
+
+/* common_coreutils.py: Colonisation ship name, with title; In files: common_coreutils.py:81:81 */
+"System Colonisation Ship {NAME}" = "System Colonisation Ship {NAME}";
+
+/* common_coreutils.py: Unidentified colonisation ship; In files: common_coreutils.py:84:84 */
+"System Colonisation Ship" = "System Colonisation Ship";
diff --git a/plugins/common_coreutils.py b/plugins/common_coreutils.py
index 6b90d4dc..a488de46 100644
--- a/plugins/common_coreutils.py
+++ b/plugins/common_coreutils.py
@@ -29,6 +29,7 @@ import gzip
 import io
 import json
 import os
+import re
 import myNotebook as nb  # noqa: N813
 from EDMCLogging import get_main_logger
 from companion import CAPIData
@@ -47,6 +48,49 @@ SEPY = 10  # seperator line spacing
 STATION_UNDOCKED = '×'  # "Station" name to display when not docked = U+00D7

+# Known colonisation ship names match one of the following:
+#   "$EXT_PANEL_ColonisationShip;"
+#   "$EXT_PANEL_ColonisationShip; <ship name>" with "<ship name>" being eg; "Okawara Horizons"
+#   "$EXT_PANEL_ColonisationShip:#index=<number>;"
+#   "$EXT_PANEL_ColonisationShip:#index=<number>; <ship name>"
+_RE_COLONISATION_SHIP = re.compile(r'\$EXT_PANEL_ColonisationShip(?::#index=(\d+))?;(?: (.+))?')
+
+
+def localised_name(value: str | None) -> str | None:
+    """
+    Handle localisation of strings in places like station names.
+
+    This is currently an issue for system colonisation ships that have a station name along the
+    lines of "$EXT_PANEL_ColonisationShip; Okawara Horizons" when written to the journal, but would
+    be better displayed as "System Colonisation Ship Okawara Horizona" (or other appropriately
+    localised equivalent).
+
+    If no (known) localisable strings are present, the input will be returned unmodified.
+
+    :param value: The non-localised string.
+    :return: The localised string, or None if the input was None.
+    """
+    if value is None:
+        return None
+
+    colonisation_ship_match = _RE_COLONISATION_SHIP.match(value)
+    if colonisation_ship_match:
+        ship_index = colonisation_ship_match.group(1)
+        ship_name = colonisation_ship_match.group(2)
+        # Use the ship's index as its name if no name was provided.
+        ship_id = ship_name or ship_index
+
+        if ship_id:
+            # LANG: Colonisation ship name, with title
+            value = tr.tl("System Colonisation Ship {NAME}").format(NAME=ship_id)
+
+        else:
+            # LANG: Unidentified colonisation ship
+            value = tr.tl("System Colonisation Ship")
+
+    return value
+
+
 def plugin_start3(plugin_dir: str) -> str:
     """
     Start the plugin.
@@ -121,7 +165,7 @@ def station_link_common(data: CAPIData, this):
     :param this: The module global from the calling module.
     """
     if data['commander']['docked'] or this.on_foot and this.station_name:
-        this.station_link['text'] = this.station_name
+        this.station_link['text'] = localised_name(this.station_name)
     elif data['lastStarport']['name'] and data['lastStarport']['name'] != "":
         this.station_link['text'] = STATION_UNDOCKED
     else:
@@ -163,12 +207,14 @@ def station_name_setter_common(this):
     :param this: The module global from the calling module.
     """
     to_set: str = cast(str, this.station_name)
+
     if not to_set:
         if this.system_population is not None and this.system_population > 0:
             to_set = STATION_UNDOCKED
         else:
             to_set = ''

+    to_set = str(localised_name(to_set))
     this.station_link['text'] = to_set

diff --git a/plugins/edsm.py b/plugins/edsm.py
index e1e6b168..902e248b 100644
--- a/plugins/edsm.py
+++ b/plugins/edsm.py
@@ -43,7 +43,7 @@ from ttkHyperlinkLabel import HyperlinkLabel
 from l10n import translations as tr
 from plugins.common_coreutils import (api_keys_label_common, PADX, PADY, BUTTONX, SEPY, BOXY, STATION_UNDOCKED,
                                       show_pwd_var_common, station_link_common, this_format_common,
-                                      cmdr_data_initial_common)
+                                      cmdr_data_initial_common, localised_name)

 # TODO:
@@ -543,7 +543,7 @@ entry: {entry!r}'''
                 to_set = ''

         if this.station_link:
-            this.station_link['text'] = to_set
+            this.station_link['text'] = localised_name(to_set)
             this.station_link['url'] = station_url(str(this.system_name), str(this.station_name))
             this.station_link.update_idletasks()
2025-11-29 01:25:19 +00:00
David Sangrey ca243b775f [#261] Enable Plugin Enable/Disable System
This does rely on plugins respecting a stop call.
2025-11-17 19:12:12 -05:00
David Sangrey 715553207f [#2430] First-Pass EDAstro Core Plugin 2025-11-09 18:00:50 -05:00
David Sangrey 473cdd9425 [Minor] Update Translation Files 2025-05-12 19:02:29 -04:00
David Sangrey a3f1c6f51f [2431] Reimplement Ctypes LongLang Check 2025-05-10 12:44:54 -04:00
David Sangrey fc3da6d936 [Lang] Update Translations 2025-05-09 21:18:22 -04:00
David Sangrey f63774ebc6 [#1318] Update Lagging Message 2025-05-03 20:12:10 -04:00
David Sangrey eae0417797 [#1346] Option to Disable Systray 2025-04-22 22:48:31 -04:00
David Sangrey d61997f76f [RELEASE] 5.12.3 2025-03-31 21:36:32 -04:00
David Sangrey b9dced7da3 [Lang] Update Translations 2024-09-24 19:20:15 -04:00
David Sangrey 438d5170a2 Merge branch 'stable' into develop 2024-08-26 18:23:30 -04:00
David Sangrey d250fa3014 [Minor] Update Translations 2024-08-25 23:17:56 -04:00
David Sangrey 8c24768828 [RELEASE] 5.10.3-beta0
[2278] Fix Incomplete Ordered Dict
2024-07-29 20:01:00 -04:00
David Sangrey 2e6a2a4a84 [Lang] Update Language Files 2024-07-29 19:40:03 -04:00
David Sangrey 9ddf7aa28a Merge pull request #2267 from HullSeals/enhancement/748/change-plugin-dir
[748] Allow Custom Plugins Directory
2024-07-21 23:32:33 -04:00
David Sangrey fee05d3aa5 [748] Enable Automatic Restart 2024-06-25 12:01:29 -04:00
David Sangrey 86b5556efb [748] Enable Plugin Change w/ App Restart 2024-06-25 11:25:05 -04:00
David Sangrey 067bef628e [2262] Update Capitalizations and add Translations 2024-06-23 13:14:41 -04:00
David Sangrey b10548da57 [LANG] Update Translations 2024-06-09 19:23:00 -04:00
David Sangrey 40b5785697 [Lang] Update Translations 2024-06-04 16:50:53 -04:00
David Sangrey d4960efa8c [Lang] Update Translations
Also corrects fleetcarrier to proper Fleet Carrier
2024-06-03 16:44:18 -04:00
David Sangrey 8a27ca266d [Minor] Add Translation 2024-05-28 09:02:58 -04:00
David Sangrey bbb7d4bf32 [Lang] Update Languages 2024-05-26 16:56:16 -04:00
David Sangrey ce45e5cd34 Merge branch 'develop' into enhancement/519/add-beta 2024-05-24 18:43:59 -04:00
David Sangrey f6d7100f24 [Fix] Update Translations, Fix Menu Creation, Fix Alt URL 2024-05-21 16:54:49 -04:00
David Sangrey 148c853b1e *Grumble Grumble* 2024-05-14 23:04:16 -04:00
David Sangrey 68fac14c67 [Translations] Update Translations 2024-05-14 20:13:49 -04:00
David Sangrey 264d359a29 Merge branch 'develop' into enhancement/519/add-beta 2024-05-14 18:00:36 -04:00
Phoebe f7350fb46d Merge pull request #2214 from HullSeals/enhancement/1801/FDEV-ID-Updater
[1801] FDEV ID Local Updater
2024-05-14 23:22:20 +02:00
David Sangrey 2686b23b3b Merge branch 'develop' into enhancement/1801/FDEV-ID-Updater 2024-05-13 20:21:42 -04:00
David Sangrey 99a0cc9eea Merge branch 'develop' into enhancement/806/system-profiler 2024-05-13 20:20:44 -04:00
David Sangrey 1e1ab64b1a Merge branch 'develop' into enhancement/519/add-beta 2024-05-13 20:13:45 -04:00
Phoebe 95fa67ca86 Merge pull request #2210 from HullSeals/enhancement/1173/right-click-provider-options
[1173] Add Right-Click Menu to UI Elements
2024-05-14 01:48:54 +02:00
David Sangrey 75f8df35e7 Merge branch 'develop' into enhancement/1173/right-click-provider-options 2024-05-11 18:19:53 -04:00
David Sangrey ab700edda7 Merge branch 'develop' into enhancement/2203/add-global-exception-handling 2024-05-11 18:19:19 -04:00
David Sangrey ad28977c44 Merge branch 'develop' into enhancement/806/system-profiler 2024-05-11 18:18:39 -04:00
David Sangrey b2cbd8a673 Merge branch 'develop' into enhancement/519/add-beta 2024-05-07 18:59:54 -04:00
David Sangrey e76cb6bca5 Merge branch 'beta' into develop 2024-05-07 17:42:20 -04:00
David Sangrey ae748e8d26 [RELEASE] 5.10.5 2024-05-07 17:41:33 -04:00
David Sangrey 1d052e4930 [519] Add Downgrade Warning 2024-05-05 18:17:00 -04:00
David Sangrey ce2e20639c [806] Add Translation 2024-05-01 20:00:59 -04:00
David Sangrey af207f60e8 [1801] FDEV ID Local Updater
This removes the FDEV ID Submodule, and instead hands over responsibility for maintaining the fdev id files to the internal system updater. Instead of the full submodule, we only pull the two files we need.
2024-04-27 20:10:09 -04:00
David Sangrey 770c0ed3a5 [2203] Catch Irrecoverable Errors 2024-04-26 00:41:58 -04:00
David Sangrey c8f2b6018c [1173] Right-Click Provider Options 2024-04-24 20:03:04 -04:00