Do I have to use load_plugin_textdomain() or is there any default folder for languages?

Yes but it is not useful if you plan to bundle your language files with your plugin:

https://developer.wordpress.org/reference/functions/load_plugin_textdomain/

If the path is not given then it will be the root of the plugin directory.

So it will look in wp-content/plugins
The third parameter is only used if you want to use a subfolder.

Likewise, if a file exists at wp-content/languages/plugins/ that matches your text domain and locale then it will be loaded.


Although, you can just pass false as the second parameter, the only reason it’s throwing deprecation warnings is because you’ve passed ''.

So pass false for the second parameter, and use the 3rd parameter. The two parameters behave differently so changing the second parameters behaviour would have been a break in backwards compatibility. So a 3rd parameter was added and the second was deprecated. This doesn’t mean you need to avoid the function, just pass false ( passing false is not deprecated ).