You don't need any more fils in the language directory. All you need is to register and use translate.wordpress.org
In some cases you get this hint: "This plugin is not properly prepared for localization."
You added the header with the Plugin Name, Author and Text Domain well. But this warning above isn't extinguish. So you have to check the Text Domain. It is the slug of your PlugIn.
The slug of your PlugIn is the Url path of your WordPress repository or the Url path: 'category-posts'.
The text domain is a unique identifier, which makes sure WordPress can distinguish between all loaded translations.
For translate.wordpress.org the plugin slug isn't a name of a single PHP file or it isn't a folder were your plugin is contained in! Translate.wordpress.org is more restricted to extinguish between all loaded translations as the linked How to documentation for internationalize your plugin on https://developer.wordpress.org/plugins/internationalization.
This name is given by WordPress only one time and is so unique.
If your plugin Url is https://wordpress.org/plugins/category-posts, the plugin slug is: 'category-posts'.
Wordpress makes sure that it is a unique name.
The same shows the plugin SVN repository Url path: Is the Url http://plugins.svn.wordpress.org/category-posts/ the plugin slug is: 'category-posts'.
After changeing to the right slag for your Text Domain. Only few seconds tanslate.wordpress.org shows all widget translation files and have the possibility to translate all translation arguments.