From a00ef6440f98b0ff1052e5cf75b89d8dd3a38330 Mon Sep 17 00:00:00 2001 From: supahgreg Date: Sun, 5 Oct 2025 19:09:04 +0000 Subject: Add initial content (with issues). --- Making-Plugins.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Making-Plugins.md (limited to 'Making-Plugins.md') diff --git a/Making-Plugins.md b/Making-Plugins.md new file mode 100644 index 0000000..e230191 --- /dev/null +++ b/Making-Plugins.md @@ -0,0 +1,35 @@ +# Making Plugins + +Plugins may render new preference panes or embed themselves into several +existing one, store data using simple key -\> value data or directly in +the database, modify how articles are rendered, alter feed data, and +much more. + +You can use sample plugins bundled with tt-rss and [other +plugins](../Plugins.md) as a starting point. Ask on the forums if you need help +with anything specific. + +Some useful information may be found here: + +- https://github.com/supahgreg/tt-rss/blob/main/classes/PluginHost.php +- https://github.com/supahgreg/tt-rss/blob/main/classes/Plugin.php + +Frontend (JS) uses different hooks, which are defined in [PluginHost.js](https://github.com/supahgreg/tt-rss/blob/main/js/PluginHost.js) + +## Localization support + +See ``time_to_read`` plugin for a complete example [here](https://github.com/supahgreg/tt-rss-plugin-time-to-read) + +### Implementation + +- Plugin translations are placed in a separate Gettext domain (name equals lowercase plugin class). +- Translation (.po) file in ``(plugin dir)/locale/(LANG)/LC_MESSAGES/`` name should correspond to Gettext domain name. + +### Using gettext + +- On the PHP side, either use helper methods defined in ``classes/plugin.php`` + (base class for all plugins) or call ``_dgettext`` group of functions + directly. +- On the Javascript side, all translations are merged so you can use the usual + ``__()`` shortcut function. + -- cgit v1.2.3-54-g00ecf