* plugins when changing into their own text domain
* and back again.
*
- * Note that plugins using this function must have
+ * Note that if plugins using this function have
* their translation files located in the SquirrelMail
- * locale directory.
+ * locale directory, the second argument is optional.
*
* @param string $domain_name The name of the text domain
* (usually the plugin name, or
* "squirrelmail") being switched to.
+ * @param string $directory The directory that contains
+ * all translations for the domain
+ * (OPTIONAL; default is SquirrelMail
+ * locale directory).
*
- * @return void
+ * @return string The name of the text domain that was set
+ * *BEFORE* it is changed herein - NOTE that
+ * this differs from PHP's textdomain()
*
* @since 1.5.2 and 1.4.10
*/
-function sq_change_text_domain($domain_name) {
+function sq_change_text_domain($domain_name, $directory='') {
- global $languages, $sm_notAlias;
static $domains_already_seen = array();
+ global $gettext_domain;
+ $return_value = $gettext_domain;
// only need to call bindtextdomain() once
//
if (in_array($domain_name, $domains_already_seen)) {
sq_textdomain($domain_name);
- return;
+ return $return_value;
}
$domains_already_seen[] = $domain_name;
- sq_bindtextdomain($domain_name, SM_PATH . 'locale/');
- sq_textdomain($domain_name);
+ if (empty($directory)) $directory = SM_PATH . 'locale/';
- // set codeset in order to avoid gettext charset conversions
- if (function_exists('bind_textdomain_codeset')
- && isset($languages[$sm_notAlias]['CHARSET'])) {
-
- // Japanese translation uses different internal charset
- if ($sm_notAlias == 'ja_JP') {
- bind_textdomain_codeset ($domain_name, 'EUC-JP');
- } else {
- bind_textdomain_codeset ($domain_name, $languages[$sm_notAlias]['CHARSET']);
- }
+ sq_bindtextdomain($domain_name, $directory);
+ sq_textdomain($domain_name);
- }
+ return $return_value;
}
/**
* Wrapper solves differences between php versions in order to provide
* ngettext support. Should be used if translation uses ngettext
* functions.
- * @since 1.5.1
+ *
+ * This also provides a bind_textdomain_codeset call to make sure the
+ * domain's encoding will not be overridden.
+ *
+ * @since 1.4.10 and 1.5.1
* @param string $domain gettext domain name
- * @param string $dir directory that contains all translations
+ * @param string $dir directory that contains all translations (OPTIONAL;
+ * if not specified, defaults to SquirrelMail locale
+ * directory)
* @return string path to translation directory
*/
-function sq_bindtextdomain($domain,$dir) {
+function sq_bindtextdomain($domain,$dir='') {
global $l10n, $gettext_flags, $sm_notAlias;
+ if (empty($dir)) $dir = SM_PATH . 'locale/';
+
if ($gettext_flags==7) {
// gettext extension without ngettext
if (substr($dir, -1) != '/') $dir .= '/';
$dir=bindtextdomain($domain,$dir);
+ // set codeset in order to avoid gettext charset conversions
+ if (function_exists('bind_textdomain_codeset')
+ && isset($languages[$sm_notAlias]['CHARSET'])) {
+
+ // Japanese translation uses different internal charset
+ if ($sm_notAlias == 'ja_JP') {
+ bind_textdomain_codeset ($domain_name, 'EUC-JP');
+ } else {
+ bind_textdomain_codeset ($domain_name, $languages[$sm_notAlias]['CHARSET']);
+ }
+
+ }
+
return $dir;
}
sq_bindtextdomain( 'squirrelmail', SM_PATH . 'locale/' );
sq_textdomain( 'squirrelmail' );
- // set codeset in order to avoid gettext charset conversions
- if (function_exists('bind_textdomain_codeset')) {
- // Japanese translation uses different internal charset
- if ($sm_notAlias == 'ja_JP') {
- bind_textdomain_codeset ('squirrelmail', 'EUC-JP');
- } else {
- bind_textdomain_codeset ('squirrelmail', $languages[$sm_notAlias]['CHARSET'] );
- }
- }
-
// Use LOCALE key, if it is set.
if (isset($languages[$sm_notAlias]['LOCALE'])){
$longlocale=$languages[$sm_notAlias]['LOCALE'];