summaryrefslogtreecommitdiff
path: root/Making-Plugins.md
diff options
context:
space:
mode:
Diffstat (limited to 'Making-Plugins.md')
-rw-r--r--Making-Plugins.md35
1 files changed, 35 insertions, 0 deletions
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.
+