Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 49 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 1 |
LanguageService | |
0.00% |
0 / 49 |
|
0.00% |
0 / 3 |
56 | |
0.00% |
0 / 1 |
get_all_languages | |
0.00% |
0 / 19 |
|
0.00% |
0 / 1 |
20 | |||
get_languages_for_selection | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
6 | |||
get_fallback_languages | |
0.00% |
0 / 22 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace NewfoldLabs\WP\Module\Onboarding\Services; |
4 | |
5 | /** |
6 | * Class LanguageService |
7 | * |
8 | * Handles language-related operations for the onboarding module. |
9 | */ |
10 | class LanguageService { |
11 | |
12 | /** |
13 | * Get all available languages including the default English. |
14 | * |
15 | * @return array List of language data |
16 | */ |
17 | public static function get_all_languages() { |
18 | // Load translation-install.php if the function doesn't exist |
19 | if ( ! function_exists( 'wp_get_available_translations' ) ) { |
20 | require_once ABSPATH . 'wp-admin/includes/translation-install.php'; |
21 | } |
22 | |
23 | // Get all available translations from WordPress API |
24 | $translations = \wp_get_available_translations(); |
25 | |
26 | // If translations API fails, provide basic fallback |
27 | if ( empty( $translations ) ) { |
28 | return self::get_fallback_languages(); |
29 | } |
30 | |
31 | // Format data for response - include English as default |
32 | $formatted_languages = array( |
33 | array( |
34 | 'code' => 'en_US', |
35 | 'name' => 'English (United States)', |
36 | 'native_name' => 'English (United States)', |
37 | ), |
38 | ); |
39 | |
40 | // Add translated languages with proper format |
41 | foreach ( $translations as $locale => $translation ) { |
42 | $formatted_languages[] = array( |
43 | 'code' => $locale, |
44 | 'name' => $translation['english_name'], |
45 | 'native_name' => $translation['native_name'], |
46 | ); |
47 | } |
48 | |
49 | return $formatted_languages; |
50 | } |
51 | |
52 | /** |
53 | * Get language data array formatted for the language selection component. |
54 | * Returns array of [language_name, language_code] pairs. |
55 | * |
56 | * @return array Array of language name and code pairs |
57 | */ |
58 | public static function get_languages_for_selection() { |
59 | $languages = self::get_all_languages(); |
60 | $language_list = array(); |
61 | |
62 | foreach ( $languages as $language ) { |
63 | $language_list[] = array( |
64 | $language['name'], |
65 | $language['code'], |
66 | ); |
67 | } |
68 | |
69 | return $language_list; |
70 | } |
71 | |
72 | /** |
73 | * Get fallback languages in case the translations API fails. |
74 | * |
75 | * @return array Basic list of language data |
76 | */ |
77 | private static function get_fallback_languages() { |
78 | return array( |
79 | array( |
80 | 'code' => 'en_US', |
81 | 'name' => 'English (United States)', |
82 | 'native_name' => 'English (United States)', |
83 | ), |
84 | array( |
85 | 'code' => 'es_ES', |
86 | 'name' => 'Spanish (Spain)', |
87 | 'native_name' => 'Español', |
88 | ), |
89 | array( |
90 | 'code' => 'fr_FR', |
91 | 'name' => 'French (France)', |
92 | 'native_name' => 'Français', |
93 | ), |
94 | array( |
95 | 'code' => 'de_DE', |
96 | 'name' => 'German', |
97 | 'native_name' => 'Deutsch', |
98 | ), |
99 | ); |
100 | } |
101 | } |