| @@ -201,11 +201,10 @@ | ||
| 201 | 201 | |
| 202 | 202 | // Get target language ID |
| 203 | 203 | if ( empty( $language_target ) ) { |
| 204 | 204 | $language_target = wplng_get_language_current_id(); |
| 205 | - } else { | |
| 206 | - $language_target_id = wplng_get_language_id( $language_target ); | |
| 207 | 205 | } |
| 206 | + $language_target_id = wplng_get_language_id( $language_target ); | |
| 208 | 207 | |
| 209 | 208 | // Get language array |
| 210 | 209 | if ( empty( $language['id'] ) ) { |
| 211 | 210 | $language = wplng_get_language_by_id( $language ); |
| @@ -327,10 +326,12 @@ | ||
| 327 | 326 | * @return array |
| 328 | 327 | */ |
| 329 | 328 | function wplng_get_languages_target_ids() { |
| 330 | 329 | |
| 331 | - if ( ! empty( $languages ) ) { | |
| 332 | - return $languages; | |
| 330 | + global $wplng_languages_target_ids; | |
| 331 | + | |
| 332 | + if ( null !== $wplng_languages_target_ids ) { | |
| 333 | + return $wplng_languages_target_ids; | |
| 333 | 334 | } |
| 334 | 335 | |
| 335 | 336 | $languages_target = wplng_get_languages_target(); |
| 336 | 337 | $languages_target_ids = array(); |
| @@ -338,8 +339,10 @@ | ||
| 338 | 339 | foreach ( $languages_target as $language_target ) { |
| 339 | 340 | $languages_target_ids[] = $language_target['id']; |
| 340 | 341 | } |
| 341 | 342 | |
| 343 | + $wplng_languages_target_ids = $languages_target_ids; | |
| 344 | + | |
| 342 | 345 | return $languages_target_ids; |
| 343 | 346 | } |
| 344 | 347 | |
| 345 | 348 | |
| @@ -376,9 +379,12 @@ | ||
| 376 | 379 | return $language; |
| 377 | 380 | } |
| 378 | 381 | } |
| 379 | 382 | |
| 380 | - return wplng_get_language_website_id(); | |
| 383 | + $website_language_id = wplng_get_language_website_id(); | |
| 384 | + $wplng_language_current_id = $website_language_id; | |
| 385 | + | |
| 386 | + return $website_language_id; | |
| 381 | 387 | } |
| 382 | 388 | |
| 383 | 389 | |
| 384 | 390 | /** |
| @@ -408,9 +414,9 @@ | ||
| 408 | 414 | /** |
| 409 | 415 | * Get language data from ID |
| 410 | 416 | * |
| 411 | 417 | * @param string $language_id |
| 412 | - * @return array | |
| 418 | + * @return array|false Language data array, or false if not found | |
| 413 | 419 | */ |
| 414 | 420 | function wplng_get_language_by_id( $language_id ) { |
| 415 | 421 | |
| 416 | 422 | $all_languages = wplng_get_languages_all(); |
| @@ -420,9 +426,14 @@ | ||
| 420 | 426 | return $language; |
| 421 | 427 | } |
| 422 | 428 | } |
| 423 | 429 | |
| 424 | - // Return a default value if $language_id not exist | |
| 430 | + // Avoid infinite recursion: if 'en' itself is not found, return false | |
| 431 | + if ( 'en' === $language_id ) { | |
| 432 | + return false; | |
| 433 | + } | |
| 434 | + | |
| 435 | + // Return English as fallback if the requested language ID does not exist | |
| 425 | 436 | return wplng_get_language_by_id( 'en' ); |
| 426 | 437 | } |
| 427 | 438 | |
| 428 | 439 | |
| @@ -577,11 +588,13 @@ | ||
| 577 | 588 | $languages_alow = wplng_get_api_languages_target(); |
| 578 | 589 | $languages = array(); |
| 579 | 590 | |
| 580 | 591 | if ( 'all' === $languages_alow ) { |
| 581 | - return wplng_get_languages_all(); | |
| 592 | + $wplng_languages_allow = wplng_get_languages_all(); | |
| 593 | + return $wplng_languages_allow; | |
| 582 | 594 | } elseif ( empty( $languages_alow ) || ! is_array( $languages_alow ) ) { |
| 583 | - return array(); | |
| 595 | + $wplng_languages_allow = array(); | |
| 596 | + return $wplng_languages_allow; | |
| 584 | 597 | } else { |
| 585 | 598 | foreach ( $languages_alow as $language_id_alow ) { |
| 586 | 599 | $languages[] = wplng_get_language_by_id( $language_id_alow ); |
| 587 | 600 | } |