[Geany-devel] Localization of plugin names in plugin manager

Eugene Arshinov earshinov at xxxxx
Thu Sep 3 18:44:07 UTC 2009

Hi Nick.

Nick Treleaven wrote:
> On Thu, 03 Sep 2009 12:10:21 +0400
> Eugene Arshinov <earshinov at gmail.com> wrote:
>> The trouble: in plugin manager plugin name (and also its description) is 
>> not localized until plugin is activated. The cause (probably): 
>> main_locale_init(LOCALEDIR, GETTEXT_PACKAGE) is called only in 
>> plugin_init(), and plugin_set_info() is obviously called before that.
> ...
>> I see two ways to fix this problem. The first way is very ugly and 
>> limitating: just call main_locale_init() from plugin_set_info(), and 
>> recompile all
>> plugins. The second way is to add new function to be implemented in 
>> plugins (say, "plugin_loaded") and call that before anything else 
>> (particularly, before plugin_set_info()).
>> So, the question is how to solve this problem.
> I would prefer calling main_locale_init() from plugin_set_info(),
> but would that have much of a performance impact for the plugin
> manager dialog? I guess it's probably necessary though.

It's hard to guess for me whether the slowdown would be large. I tried 
to measure execution time of main_locale_init() in addons plugin, but it 
returned 0 msec...

clock_t t = clock();
g_debug("Function main_locale_init() took %f msec.",
  (double)(clock() - t) * 1000 / CLOCKS_PER_SEC);

> The other question is how to implement this with the PLUGIN_SET_INFO
> macro so main_locale_init() is called correctly (and only when
> necessary?) for all plugins.

Function plugin_set_info() is called exactly once after a plugin is 
loaded. Function main_locale_init() should be called at least once (the 
less calls the better) after a plugin is loaded, as far as I understand 
what this call does (I had very little experience with gettext). So why 
not just put a single call into PLUGIN_SET_INFO?

void plugin_set_info(PluginInfo* info) \
    { \
        main_locale_init(LOCALEDIR, GETTEXT_PACKAGE); \
        info->name = (p_name); \
        info->description = (p_description); \
        info->version = (p_version); \
        info->author = (p_author); \

Best regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.geany.org/pipermail/devel/attachments/20090903/5cf07710/attachment.html>

More information about the Devel mailing list