exists() ? $theme_obj->get_stylesheet_directory() : trailingslashit( get_theme_root() ) . $component; } } return array( 'is_core' => $is_core, 'is_main_core' => $is_main_core, 'target_dir' => $target_dir, 'po_filename' => $po_filename, 'po_target' => $po_target, 'mo_target' => $mo_target, 'base_dir' => $base_dir, ); } /** * Standardizes tracking engine checks for legacy lowercase entries on Linux. */ public static function run_case_migration( $meta, $locale, $component ) { if ( file_exists( $meta['po_target'] ) ) { return; } $lowercase_locale = strtolower( $locale ); $lowercase_filename = $meta['is_main_core'] ? "{$lowercase_locale}.po" : "{$component}-{$lowercase_locale}.po"; $lowercase_po = trailingslashit( $meta['target_dir'] ) . $lowercase_filename; if ( file_exists( $lowercase_po ) ) { global $wp_filesystem; if ( empty( $wp_filesystem ) ) { require_once ABSPATH . 'wp-admin/includes/file.php'; WP_Filesystem(); } if ( $wp_filesystem ) { $wp_filesystem->move( $lowercase_po, $meta['po_target'], true ); $lowercase_mo = str_replace( '.po', '.mo', $lowercase_po ); if ( $wp_filesystem->exists( $lowercase_mo ) ) { $wp_filesystem->move( $lowercase_mo, $meta['mo_target'], true ); } } else { // Fallback for environments where WP_Filesystem fails to initialize directly // phpcs:ignore WordPress.WP.AlternativeFunctions.rename_rename @rename( $lowercase_po, $meta['po_target'] ); $lowercase_mo = str_replace( '.po', '.mo', $lowercase_po ); if ( file_exists( $lowercase_mo ) ) { // phpcs:ignore WordPress.WP.AlternativeFunctions.rename_rename @rename( $lowercase_mo, $meta['mo_target'] ); } } } } /** * Collects baseline distribution bundle lookups for active extensions. */ public static function get_bundle_candidates( $meta, $component, $locale ) { if ( $meta['is_core'] ) { return array( trailingslashit( WP_LANG_DIR ) . $meta['po_filename'] ); } return array( $meta['base_dir'] . "/languages/{$component}-{$locale}.po", $meta['base_dir'] . "/languages/{$locale}.po", $meta['base_dir'] . "/language/{$component}-{$locale}.po", $meta['base_dir'] . "/language/{$locale}.po", $meta['base_dir'] . "/{$component}-{$locale}.po", $meta['base_dir'] . "/{$locale}.po", ); } }