Context menu in plain full‑text view is always displayed in English. #58

Closed
opened 2026-07-16 08:29:42 -07:00 by serrebi · 3 comments
Owner

Currently, when opening the context menu on a read‑only text field in the plain full‑text article view, the menu is displayed in English — regardless of the selected localization language in BlindRSS. This is the standard Windows system context menu for text input fields. The issue likely stems from a hardcoded English language setting for this UI element in the wxPython framework used by BlindRSS.

This inconsistency creates a poor user experience: users expect all interface elements to follow the application’s localization settings. Having an English‑only context menu contradicts the chosen language and may confuse non‑English‑speaking users.

Preconditions

  • BlindRSS is set to a non‑English localization language.
  • The “Rich full‑text view” option is not enabled (i.e., plain full‑text view is active) in the settings (under the “Feeds & Articles” tab).

Steps to reproduce

  1. Open the plain full‑text view of any article.
  2. Press Shift+F10 on the read‑only text area to open the context menu.

Actual behaviour

  • The context menu items are displayed in English (e.g., “Cut”, “Copy”, “Paste”, “Select All”, etc.).

Expected behaviour

  • The context menu items should be displayed in the currently selected localization language of BlindRSS (e.g., if the app language is set to Russian, the menu should show “Вырезать”, “Копировать”, “Вставить”, “Выделить всё”, etc.).
  • All standard context menu options must be properly translated according to the active localization.

Technical notes

  • The application uses wxPython as the GUI framework.
  • The read‑only text display likely uses a standard wxPython text control (e.g., wx.TextCtrl with wx.TE_READONLY style).
  • By default, wxPython may inherit the system’s context menu, which is usually in English on English‑language Windows installations, or fails to apply the app’s locale to system UI elements.
  • Potential solutions may include:
    • Explicitly setting the application locale in wxPython to ensure system UI elements (including context menus) follow the app’s language.
    • Overriding the default context menu with a custom one that uses BlindRSS’s translation system.
    • Ensuring that the wxPython locale is properly initialized and applied at startup, matching the user’s chosen language in BlindRSS settings.
Currently, when opening the context menu on a read‑only text field in the plain full‑text article view, the menu is displayed in English — regardless of the selected localization language in BlindRSS. This is the standard Windows system context menu for text input fields. The issue likely stems from a hardcoded English language setting for this UI element in the wxPython framework used by BlindRSS. This inconsistency creates a poor user experience: users expect all interface elements to follow the application’s localization settings. Having an English‑only context menu contradicts the chosen language and may confuse non‑English‑speaking users. #### Preconditions * BlindRSS is set to a non‑English localization language. * The “Rich full‑text view” option is **not** enabled (i.e., plain full‑text view is active) in the settings (under the “Feeds & Articles” tab). #### Steps to reproduce 1. Open the plain full‑text view of any article. 2. Press Shift+F10 on the read‑only text area to open the context menu. #### Actual behaviour * The context menu items are displayed in English (e.g., “Cut”, “Copy”, “Paste”, “Select All”, etc.). #### Expected behaviour * The context menu items should be displayed in the currently selected localization language of BlindRSS (e.g., if the app language is set to Russian, the menu should show “Вырезать”, “Копировать”, “Вставить”, “Выделить всё”, etc.). * All standard context menu options must be properly translated according to the active localization. #### Technical notes * The application uses **wxPython** as the GUI framework. * The read‑only text display likely uses a standard wxPython text control (e.g., `wx.TextCtrl` with `wx.TE_READONLY` style). * By default, wxPython may inherit the system’s context menu, which is usually in English on English‑language Windows installations, or fails to apply the app’s locale to system UI elements. * Potential solutions may include: * Explicitly setting the application locale in wxPython to ensure system UI elements (including context menus) follow the app’s language. * Overriding the default context menu with a custom one that uses BlindRSS’s translation system. * Ensuring that the wxPython locale is properly initialized and applied at startup, matching the user’s chosen language in BlindRSS settings. <!-- forgejo-github-sync: issue github=serrebidev/BlindRSS#73 -->
Author
Owner

Done in v1.107.0. Your technical read was right — and specifically, your second suggested solution is the one that works.

I did not go with wx.Locale. Setting the app locale only helps if wx's own translation catalog for that language is present on the machine — that's shipped by wxWidgets, not by us, and we can't rely on it being installed. It would work on some machines and silently not on others, which is worse than a consistent bug. So the menu is now built from BlindRSS's own catalog, which always matches the app language by construction.

One deviation from your expected behaviour, and I'd like your view on it. You listed "Cut, Copy, Paste, Select All". The reader is a read-only control, so Cut, Paste and Delete can only ever appear greyed out — the native menu shows them purely because it doesn't know the control is read-only. Arrowing past three dead items to reach the two live ones is noise for a screen-reader user, so the menu is:

  • Copy (disabled when nothing is selected)
  • Select All

If you'd rather it mirror the native menu exactly, with Cut/Paste present-but-disabled, say so and I'll change it.

Copy routes through the same code path as Ctrl+C, so the menu and the shortcut can't drift apart.

Done in **v1.107.0**. Your technical read was right — and specifically, your second suggested solution is the one that works. I did **not** go with `wx.Locale`. Setting the app locale only helps if wx's *own* translation catalog for that language is present on the machine — that's shipped by wxWidgets, not by us, and we can't rely on it being installed. It would work on some machines and silently not on others, which is worse than a consistent bug. So the menu is now built from BlindRSS's own catalog, which always matches the app language by construction. One deviation from your expected behaviour, and I'd like your view on it. You listed "Cut, Copy, Paste, Select All". The reader is a read-only control, so Cut, Paste and Delete can only ever appear greyed out — the native menu shows them purely because it doesn't know the control is read-only. Arrowing past three dead items to reach the two live ones is noise for a screen-reader user, so the menu is: * **Copy** (disabled when nothing is selected) * **Select All** If you'd rather it mirror the native menu exactly, with Cut/Paste present-but-disabled, say so and I'll change it. Copy routes through the same code path as Ctrl+C, so the menu and the shortcut can't drift apart. <!-- forgejo-github-sync: comment github=serrebidev/BlindRSS#73/4993950254 -->
Author
Owner

I agree that we only need these two items in the context menu.

But, unfortunately, I still have the standart, non-localizable context menu in BlindRSS 1.107.0.
It has seven options, always in English:

  • Undo (always disabled)
  • Redo (always disabled)
  • Cut (always disabled)
  • Copy (enabled when text is selected)
  • Paste (always disabled)
  • Delete (always disabled)
  • Select All
I agree that we only need these two items in the context menu. But, unfortunately, I still have the standart, non-localizable context menu in BlindRSS 1.107.0. It has seven options, always in English: * Undo (always disabled) * Redo (always disabled) * Cut (always disabled) * Copy (enabled when text is selected) * Paste (always disabled) * Delete (always disabled) * Select All <!-- forgejo-github-sync: comment github=serrebidev/BlindRSS#73/4994569199 -->
Author
Owner

In BlindRSS version 1.107.2, the context menu now works as expected. I'm closing the issue. Thank you!

In BlindRSS version 1.107.2, the context menu now works as expected. I'm closing the issue. Thank you! <!-- forgejo-github-sync: comment github=serrebidev/BlindRSS#73/5004385595 -->
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
serrebi/BlindRSS#58
No description provided.