Wordpress - How to keep plugin translates after updates?

You have to replace the call to BBpress’ language file.

A good place to do this is a language specific file in your general languages directory. For Turkish it would probably be a file named tr_TR.php. This will be loaded automatically and only if it matches the language of your blog. It will not be overwritten.

BBPress doesn’t use the function load_plugin_textdomain, it uses load_textdomain instead. Here you can find a filter:

$mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );

So in your language php file just add a filter to change the path:

function load_bbpress_tr_mofile( $mofile, $domain )
{
    if ( 'bbpress' == $domain )
    {
        // replace this. :)
        return 'FULL_PATH_TO_YOUR_FILE';
    }
    return $mofile;
}
add_filter( 'load_textdomain_mofile', 'load_bbpress_tr_mofile', 10, 2 );

What you have to do is to create a simple plugin that will manage the text_domain of the installed plugins. If you don't want to have a global solution you can add the code to your functions.php in your theme.

The idea is to instruct wordpress on where to find translations. Internally in all plugins this is done using something similar to

load_plugin_textdomain( 'regenerate-thumbnails', false, '/regenerate-thumbnails/localization' );

this is the function that you will use. As you can see here, the last argument is used to set the relative to the plugin path, where the translation files reside.

You can do what you want by putting one line for each plugin you want to alter their languages folder as follows.

load_plugin_textdomain('bbpress', false, '../../languages/bbpress');

this will instruct wordpress to load your custom translation files from a folder next to plugins folder that has a folder named bbpress that has the translation files using the EXACT same naming as each plugin uses.

Your method, that instructs the textdomains for all plugins, should run in the init phase as follows

function set_myplugins_languages() {
     .... your code here.....
}
add_action('init', 'set_myplugins_languages');

(Don't forget to mark this as answer if you found it useful)