feat: add extractors for Workspace Sidebar and Desktop Icon (#37085)

* feat: add desktop icon extractor

* feat: add workspace sidebar extractor

* feat: add desktop icon extractor

* fix: resolve merge conflict in babel_extractors.csv

* docs: fix typo in docstring

---------

Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
This commit is contained in:
Exequiel Arona 2026-02-16 12:12:01 -03:00 committed by GitHub
parent 69e655d08b
commit 06c8217c99
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 46 additions and 0 deletions

View file

@ -1,5 +1,7 @@
**/hooks.py,frappe.gettext.extractors.navbar.extract **/hooks.py,frappe.gettext.extractors.navbar.extract
**/doctype/*/*.json,frappe.gettext.extractors.doctype.extract **/doctype/*/*.json,frappe.gettext.extractors.doctype.extract
**/desktop_icon/*.json,frappe.gettext.extractors.desktop_icon.extract
**/workspace_sidebar/*.json,frappe.gettext.extractors.workspace_sidebar.extract
**/workspace/*/*.json,frappe.gettext.extractors.workspace.extract **/workspace/*/*.json,frappe.gettext.extractors.workspace.extract
**/web_form/*/*.json,frappe.gettext.extractors.web_form.extract **/web_form/*/*.json,frappe.gettext.extractors.web_form.extract
**/onboarding_step/*/*.json,frappe.gettext.extractors.onboarding_step.extract **/onboarding_step/*/*.json,frappe.gettext.extractors.onboarding_step.extract

1 **/hooks.py frappe.gettext.extractors.navbar.extract
2 **/doctype/*/*.json frappe.gettext.extractors.doctype.extract
3 **/desktop_icon/*.json frappe.gettext.extractors.desktop_icon.extract
4 **/workspace_sidebar/*.json frappe.gettext.extractors.workspace_sidebar.extract
5 **/workspace/*/*.json frappe.gettext.extractors.workspace.extract
6 **/web_form/*/*.json frappe.gettext.extractors.web_form.extract
7 **/onboarding_step/*/*.json frappe.gettext.extractors.onboarding_step.extract

View file

@ -0,0 +1,18 @@
import json
def extract(fileobj, *args, **kwargs):
"""Extract messages from Desktop Icon JSON files. To be used by babel extractor.
:param fileobj: the file-like object the messages should be extracted from
:rtype: `iterator`
"""
data = json.load(fileobj)
if isinstance(data, list):
return
# Extract the label field (main translatable field for Desktop Icons)
label = data.get("label")
if label:
yield None, "_", label, ["Label of a Desktop Icon"]

View file

@ -0,0 +1,26 @@
import json
def extract(fileobj, *args, **kwargs):
"""Extract messages from Workspace Sidebar JSON files. To be used by babel extractor.
:param fileobj: the file-like object the messages should be extracted from
:rtype: `iterator`
"""
data = json.load(fileobj)
if isinstance(data, list):
return
# Extract the title field (main translatable field for Workspace Sidebar)
title = data.get("title")
if title:
yield None, "_", title, ["Title of a Workspace Sidebar"]
# Extract labels from items list
items = data.get("items", [])
if isinstance(items, list):
for item in items:
label = item.get("label")
if label:
yield None, "_", label, ["Label of a Workspace Sidebar Item"]