diff --git a/babel_extractors.csv b/babel_extractors.csv index b7bf582783..8c9e475277 100644 --- a/babel_extractors.csv +++ b/babel_extractors.csv @@ -1,5 +1,7 @@ **/hooks.py,frappe.gettext.extractors.navbar.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 **/web_form/*/*.json,frappe.gettext.extractors.web_form.extract **/onboarding_step/*/*.json,frappe.gettext.extractors.onboarding_step.extract diff --git a/frappe/gettext/extractors/desktop_icon.py b/frappe/gettext/extractors/desktop_icon.py new file mode 100644 index 0000000000..a2abe7e8de --- /dev/null +++ b/frappe/gettext/extractors/desktop_icon.py @@ -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"] diff --git a/frappe/gettext/extractors/workspace_sidebar.py b/frappe/gettext/extractors/workspace_sidebar.py new file mode 100644 index 0000000000..4e692b6107 --- /dev/null +++ b/frappe/gettext/extractors/workspace_sidebar.py @@ -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"]