2014-09-14 20:32:59 +00:00
< ? php
/**
2021-02-08 18:04:15 +00:00
* Loads text domain of current or default language for localization .
*
2014-09-14 20:32:59 +00:00
* @ filesource
* @ author Stefan Herndler
* @ since 1.5 . 0 14.09 . 14 17 : 47
2021-02-08 18:04:15 +00:00
*
*
2021-02-09 23:33:29 +00:00
* @ lastmodified 2021 - 02 - 08 T1914 + 0100
2021-02-08 18:04:15 +00:00
*
* @ since 2.0 . 0 Bugfix : Localization : correct function call apply_filters () with all required arguments after PHP 7.1 promoted warning to error , thanks to @ matkus2 bug report and code contribution .
* @ since 2.1 . 6 Bugfix : Localization : conform to WordPress plugin language file name scheme , thanks to @ nikelaos bug report .
2014-09-14 20:32:59 +00:00
*/
/**
2021-02-08 18:04:15 +00:00
* Loads text domain of current or default language for localization .
2014-09-14 20:32:59 +00:00
*
* @ author Stefan Herndler
* @ since 1.5 . 0
*/
class MCI_Footnotes_Language {
2020-12-09 15:12:37 +00:00
/**
* Register WordPress Hook .
*
* @ author Stefan Herndler
* @ since 1.5 . 0
*/
public static function registerHooks () {
add_action ( 'plugins_loaded' , array ( " MCI_Footnotes_Language " , " loadTextDomain " ));
}
2014-09-14 20:32:59 +00:00
2020-12-09 15:12:37 +00:00
/**
2021-02-08 18:04:15 +00:00
* Loads the text domain for current WordPress language if exists .
* Otherwise fallback " en_GB " will be loaded .
2020-12-09 15:12:37 +00:00
*
* @ author Stefan Herndler
* @ since 1.5 . 0
2021-02-08 18:04:15 +00:00
*
*
* - Bugfix : Correct function call apply_filters () with all required arguments after PHP 7.1 promoted warning to error , thanks to @ matkus2 bug report and code contribution .
*
* @ since 2.0 . 0
* @ datetime 2020 - 10 - 26 T1609 + 0100
*
* @ contributor @ matkus2
2021-01-23 00:25:35 +00:00
* @ link https :// wordpress . org / support / topic / error - missing - parameter - if - using - php - 7 - 1 - or - later /
2021-02-08 18:04:15 +00:00
*
* Add 3 rd ( empty ) argument in apply_filters () to prevent PHP from throwing an error :
* “Fatal error : Uncaught ArgumentCountError : Too few arguments to function apply_filters () ”
*
* Yet get_locale () is defined w / o parameters in wp - includes / l10n . php : 30 , and
* apply_filters () is defined as apply_filters ( $tag , $value ) in wp - includes / plugin . php : 181.
* @ link https :// developer . wordpress . org / reference / functions / apply_filters /
*
* But apply_filters () is defined with a 3 rd parameter ( and w / o the first one ) in
* wp - includes / class - wp - hook . php : 264 , as public function apply_filters ( $value , $args ) .
*
* Taking it all together , probably the full function definition would be :
* public function apply_filters ( $tag , $value , $args ) .
* In the case of get_locale (), $args is empty .
*
* The bug was lurking in WP . PHP 7.1 promoted the warning to an error .
2021-01-23 00:25:35 +00:00
* @ link https :// www . php . net / manual / en / migration71 . incompatible . php
2021-02-08 18:04:15 +00:00
* @ link https :// www . php . net / manual / en / migration71 . incompatible . php #migration71.incompatible.too-few-arguments-exception
2020-12-09 15:12:37 +00:00
*/
public static function loadTextDomain () {
2021-02-08 18:04:15 +00:00
// if language file with localization exists:
if ( self :: load ( apply_filters ( 'plugin_locale' , get_locale (), '' ) ) ) {
2020-12-09 15:12:37 +00:00
return ;
}
2021-02-08 18:04:15 +00:00
// else fall back to British English:
self :: load ( " en_GB " );
2020-12-09 15:12:37 +00:00
}
2014-09-27 07:56:40 +00:00
2020-12-09 15:12:37 +00:00
/**
* Loads a specific text domain .
*
* @ author Stefan Herndler
* @ since 1.5 . 1
* @ param string $p_str_LanguageCode Language Code to load a specific text domain .
* @ return bool
2021-02-08 18:04:15 +00:00
*
2021-02-09 23:33:29 +00:00
*
2021-02-08 18:04:15 +00:00
* - Bugfix : Localization : conform to WordPress plugin language file name scheme , thanks to @ nikelaos bug report .
2021-02-09 23:33:29 +00:00
*
* @ since 2.1 . 6
* @ datetime 2020 - 12 - 08 T1931 + 0100
*
* @ reporter @ nikelaos
2021-01-23 00:25:35 +00:00
* @ link https :// wordpress . org / support / topic / more - feature - ideas /
2021-02-09 23:33:29 +00:00
*
2021-02-08 18:04:15 +00:00
* That is done by using load_plugin_textdomain () :
2021-02-09 23:33:29 +00:00
* “The . mo file should be named based on the text domain with a dash , and then the locale exactly . ”
2020-12-09 15:12:37 +00:00
* @ see wp - includes / l10n . php : 857
*/
private static function load ( $p_str_LanguageCode ) {
return load_plugin_textdomain (
MCI_Footnotes_Config :: C_STR_PLUGIN_NAME ,
2021-01-14 22:56:43 +00:00
// This argument only fills the gap left by a deprecated argument (since WP2.7):
2021-02-08 18:04:15 +00:00
false ,
2021-01-14 22:56:43 +00:00
// The plugin basedir is provided; trailing slash would be clipped:
2021-02-08 18:04:15 +00:00
MCI_Footnotes_Config :: C_STR_PLUGIN_NAME . '/languages'
2020-12-09 15:12:37 +00:00
);
}
2020-10-27 11:56:49 +00:00
}