I guess there is no big difference between Windows and other operating systems for making po/mo files. You need the gettext command, make a search for gettext for Windows in Google
. You need to know how the Terminal works especially the path handling.
Then first make an ASCII file called POTFILES.in when not available already which holds all source file names of your plugin line by line, but only these files which may contain language strings. These language strings are preceded with _(" that is underscore, bracket open and quotation mark. e.g.: _("This is a text for translations.")
In the Terminal you use the gettext command like this:
gettext --from-code=iso-8859-1 --force-po --package-name=xyz_pi --package-version=1.0 --output=xyz_pi.pot --keyword=_ --width=80 --files-from=POTFILES.in
So the parameters for gettext are
--from-code= the kind of code
--force-po to force a po file
--package-name= the name of the plugin
--package-version= the version of the plugin
--output= the name of the resulting pot file
--keyword=_ as explained above
--with=80 the length
--files-from=POTFILES.in the list of files to be processed
If you think there are strings missing in the resulting pot file go to the plugin source files and look there for these strings. Perhaps they are preceded with _T(" or wxT(" and not with _("
If you have already an old po file you can merge it with your new pot file using the msgmerge command which is part of the gettext bundle. Use msgmerge --help in the Terminal window to see how it works.
Otherwise simply make a copy of your new pot file with the extension po to receive an empty po file for the translation work with Poedit.