Index: src/bp-core/bp-core-functions.php
===================================================================
--- src/bp-core/bp-core-functions.php
+++ src/bp-core/bp-core-functions.php
@@ -1700,17 +1700,18 @@
  * @return bool True on success, false on failure.
  */
 function bp_core_load_buddypress_textdomain() {
-	// Try to load via load_plugin_textdomain() first, for future
-	// wordpress.org translation downloads
-	if ( load_plugin_textdomain( 'buddypress', false, 'buddypress/bp-languages' ) ) {
-		return true;
-	}
+	$domain = 'buddypress';
+	$mofile_custom = trailingslashit( WP_LANG_DIR ) . sprintf( '%s-%s.mo', $domain, apply_filters( 'buddypress_locale', get_locale() ) );
 
-	// Nothing found in bp-languages, so try to load from WP_LANG_DIR
-	$locale = apply_filters( 'buddypress_locale', get_locale() );
-	$mofile = WP_LANG_DIR . '/buddypress-' . $locale . '.mo';
+	// load custom language file if available
+	// custom language files reside at the root of WP_LANG_DIR
+	if ( is_readable( $mofile_custom ) ) {
+		load_textdomain( $domain, $mofile_custom );
 
-	return load_textdomain( 'buddypress', $mofile );
+	// default to WP and glotpress
+	} else {
+		load_plugin_textdomain( $domain );
+	}
 }
 add_action ( 'bp_core_loaded', 'bp_core_load_buddypress_textdomain' );
 
