diff --git src/bp-core/bp-core-functions.php src/bp-core/bp-core-functions.php
index 5b93f9c..b021a1e 100644
--- src/bp-core/bp-core-functions.php
+++ src/bp-core/bp-core-functions.php
@@ -1700,17 +1700,24 @@ function bp_is_get_request() {
  * @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 = sprintf( '%s-%s.mo', $domain, apply_filters( 'buddypress_locale', get_locale() ) );
+
+	$locations = apply_filters( 'buddypress_locale_locations', array(
+		trailingslashit( WP_LANG_DIR ),
+		trailingslashit( WP_LANG_DIR . '/' . $domain  ),
+		trailingslashit( WP_LANG_DIR . '/custom' ),
+	) );
+
+	// Try custom locations in WP_LANG_DIR
+	foreach ( $locations as $location ) {
+		if ( load_textdomain( 'buddypress', $location . $mofile_custom ) ) {
+			return true;
+		}
 	}
 
-	// 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';
-
-	return load_textdomain( 'buddypress', $mofile );
+	// default to WP and glotpress
+	return load_plugin_textdomain( $domain );
 }
 add_action ( 'bp_core_loaded', 'bp_core_load_buddypress_textdomain' );
 
@@ -2034,4 +2041,4 @@ function bp_core_get_suggestions( $args ) {
 	}
 
 	return apply_filters( 'bp_core_get_suggestions', $retval, $args );
-}
\ No newline at end of file
+}
