/** * Get translations by their strings. * * @param string $key * @param string|null $lang * * @throws \BadFunctionCallException * * @return string */ function trans($key, $lang = null) { if (!function_exists('pll__')) { throw new BadFunctionCallException('Please active the Polylang plugin.'); } if ($lang) { return pll_translate_string($key, $lang); } return pll__($key); }
/** * Add translation strings to translatable strings * * @param array $parameter ["domain" => "wpsolr facel label", "name" => "categories", "text" => "my categories"] */ function get_translation_string($string, $parameter) { if (empty($parameter['language'])) { // Translate with current language $result = pll__($parameter['name']); } else { // Translate with parameter language $result = pll_translate_string($parameter['name'], $parameter['language']); } return $result; }
/** * @used-by Filters\"gform_field_validation" * @param array $result * @param mixed $value * @param array $form * @param array $field */ public function gform_field_validation($result, $value, $form, $field) { $this->pll_set_language($this->default_lang); if (!$result['is_valid']) { $result['message'] = pll_translate_string($result['message'], $this->current_lang); } $this->pll_reset_language(); return $result; }
function eme_translate($value, $lang = '') { //if (empty($lang)) // $lang=eme_detect_lang(); if (function_exists('qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage') && function_exists('qtrans_use')) { if (empty($lang)) { return qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($value); } else { return qtrans_use($lang, $value); } } elseif (function_exists('ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage') && function_exists('ppqtrans_use')) { if (empty($lang)) { return ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($value); } else { return ppqtrans_use($lang, $value); } } elseif (function_exists('qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage') && function_exists('qtranxf_use')) { if (empty($lang)) { return qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage($value); } else { return qtranxf_use($lang, $value); } } elseif (function_exists('pll_translate_string') && function_exists('pll__')) { if (empty($lang)) { return pll__($value); } else { return pll_translate_string($value, $lang); } } else { return $value; } }
$chall = ''; while ($row = pg_fetch_object($prg)) { if ($chall != $row->hallname && strlen($chall) > 1) { $bg .= "</table>\n"; $en .= "</table>\n"; } if ($cdate != $row->dt) { $cdate = $row->dt; $bg .= "<h2>{$cdate}</h2>\n"; $en .= "<h2>{$cdate}</h2>\n"; } if ($chall != $row->hallname) { $chall = $row->hallname; echo pll_translate_string($chall, 'en_US') . "\n"; $en .= "<table><caption>" . pll_translate_string($chall, 'en') . " Hall</caption><tbody>"; $bg .= "<table><caption>Зала " . pll_translate_string($chall, 'bg') . "</caption><tbody>"; } $bg .= '<tr><td class="time">' . $row->start . ' - ' . $row->end . '</td>'; $bg .= '<td><span class="lecture-title"><a href="javascript: void0">' . htmlentities($row->title) . '</a></span><br/>'; $bg .= '<a class="vt-p" href="/bg/schedule-3/speakers/#' . htmlentities($row->spname) . '">' . htmlentities($row->spname) . '</a><br/>'; $bg .= '<font color="#' . $row->tcolor . '">' . $row->tname . '</font>'; $bg .= '<div class="lecture-description">' . htmlentities($row->abstract) . '</div></td></tr>'; $en .= '<tr><td class="time">' . $row->start . ' - ' . $row->end . '</td>'; $en .= '<td><span class="lecture-title"><a href="javascript: void0">' . htmlentities($row->title) . '</a></span><br/>'; $en .= '<a class="vt-p" href="/en/schedule/speakers/#' . htmlentities($row->spname) . '">' . htmlentities($row->spname) . '</a><br/>'; $en .= '<font color="#' . $row->tcolor . '">' . $row->tname . '</font>'; $en .= '<div class="lecture-description">' . htmlentities($row->abstract) . '</div></td></tr>'; /* <tr> <td class="time">10:15 – 11:00</td> <td><span class="lecture-title"><a href="javascript: void0">Open-source hardware от България</a></span>
/** * Correct Polylang Switcher Links * * Add the correct endpoint translations for polylang switcher links * * @global \WP $wp * @param string $link link * @param string $slug langauge * * @return string final link */ public function correctPolylangSwitcherLinks($link, $slug) { global $wp; $endpoints = WC()->query->get_query_vars(); foreach ($endpoints as $key => $value) { if (isset($wp->query_vars[$key])) { $link = str_replace($value, pll_translate_string($key, $slug), $link); break; } } return $link; }
/** * Apply translations with Polylang. * * @used-by Actions\"acf/get_valid_field" */ public function acf_get_valid_field($field) { global $polylang; if ($this->current_lang === $this->default_lang) { return $field; } if (isset($this->_fields[$field['key']][$this->current_lang])) { return $this->_fields[$field['key']][$this->current_lang]; } /** Trick Polylang into loading from the proper language file. Current one is set by get_locale() */ $this->pll_set_language($this->default_lang); $field_keys = $this->_get_field_keys(); $this->inject_strings($field, $field_keys); switch ($field['type']) { case 'text': case 'textarea': case 'number': case 'email': case 'url': case 'password': case 'select': if (isset($field['placeholder']) && '' != $field['placeholder']) { $field['placeholder'] = pll_translate_string($field['placeholder'], $this->current_lang); } break; case 'text': case 'textarea': case 'number': case 'email': case 'url': case 'password': $affix_keys = $this->_get_affix_keys(); foreach ($affix_keys as $key) { if (isset($field[$key]) && '' != $field[$key]) { $field[$key] = pll_translate_string($field[$key], $this->current_lang); } } break; case 'true_false': case 'message': if (isset($field['message']) && '' != $field['message']) { $field['message'] = pll_translate_string($field['message'], $this->current_lang); } case 'select': case 'checkbox': case 'radio': case 'true_false': if (!empty($field['choices'])) { foreach ($field['choices'] as &$choice) { $choice = pll_translate_string($choice, $this->current_lang); } } break; case 'google_map': $location_keys = $this->_get_location_keys(); foreach ($location_keys as $key) { if (isset($field[$key]) && '' != $field[$key]) { $field[$key] = pll_translate_string($field[$key], $this->current_lang); } } break; case 'date_picker': $date_keys = $this->_get_date_keys(); foreach ($date_keys as $key) { if (isset($field[$key]) && '' != $field[$key]) { $field[$key] = pll_translate_string($field[$key], $this->current_lang); } } break; case 'repeater': case 'flexible_content': if (isset($field['button_label']) && '' != $field['button_label']) { $field['button_label'] = pll_translate_string($field['button_label'], $this->current_lang); } case 'flexible_content': if (!empty($field['layouts'])) { foreach ($field['layouts'] as &$layout) { $prefix = $_prefix . $field['key'] . '.layouts.' . $layout['key'] . '.'; $data[$prefix . 'label'] = ['string' => $choice, 'multiline' => false]; $layout['label'] = pll_translate_string($layout['label'], $this->current_lang); } } break; } $this->pll_reset_language(); $this->_fields[$field['id']][$this->current_lang] = $field; return $field; }
$price = get_post_meta($bid, 'price', true); $room = get_post_meta($bid, 'room', true); $adults = get_post_meta($bid, 'adults', true); $children = get_post_meta($bid, 'children', true); $message = get_post_meta($bid, 'message', true); $token = get_post_meta($bid, 'token', true); $lang = get_post_meta($bid, 'lang', true); $address = get_post_meta($bid, 'email', true); $from = mytheme_get_option('place_name') . ' <' . $address . '>'; $email_bcc = get_bloginfo('admin_email'); $e_subject = sprintf(pll_translate_string(booking_get_option('bookingwp_confirmed_email_subject'), $lang), $name); // Configuration option. $request_language = $lang; $intro_text = sprintf(pll_translate_string(booking_get_option('bookingwp_confirmed_email'), $request_language), $name); $reservation_details = booking_details($bid); $cancellation_policy = sprintf(pll_translate_string(booking_get_option('bookingwp_cancellation_policy'), $request_language), $name); $email_content = $intro_text; $email_content .= $reservation_details; $email_content .= "<hr/>" . PHP_EOL . PHP_EOL; $email_content .= "<h5>Cancellation Policy</h5><small>" . $cancellation_policy . "</small>"; $msg = wordwrap($e_body, 70); $e_body = build_email($email_content); $headers[] = "From: {$from}" . PHP_EOL; $headers[] = "Bcc: {$email_bcc}" . PHP_EOL; //customer voucher wp_mail($address, $e_subject, $e_body, $headers); //admin card $owner_subject = __('Conferma Prenotazione #', 'wpbooking') . $bid; $owner_address = mytheme_get_option('email'); $from = mytheme_get_option('place_name') . ' <' . $address . '>'; $email_content_owner = "<b>Card:</b> {$encrypted}<br />";
// pll_register_string('URL Conheça a Rede', 'conheca-a-rede-tim-tec', 'timtec'); add_action('generate_rewrite_rules', function ($wp_rewrite) { $new_rules = []; foreach (pll_languages_list() as $lcode) { // $str_courses = pll_translate_string('cursos', $lcode); // $new_rules["^$lcode/$str_courses/?$"] = "index.php?template=courses"; // $str_conselho = pll_translate_string('conselho', $lcode); // $new_rules["^$lcode/$str_conselho/?$"] = "index.php?template=conselho"; // // $str_software = pll_translate_string('software', $lcode); // $new_rules["^$lcode/$str_software/?$"] = "index.php?template=software"; // // $str_redes = pll_translate_string('redes', $lcode); // $new_rules["^$lcode/$str_redes/?$"] = "index.php?template=redes"; // $str_noticias = pll_translate_string('noticias', $lcode); $new_rules["^{$lcode}/{$str_noticias}/?\$"] = "index.php?post_type=post"; // // $str_suporte = pll_translate_string('suporte', $lcode); // $new_rules["^$lcode/$str_suporte/?$"] = "index.php?template=suporte"; // // $str_cadastro = pll_translate_string('cadastro', $lcode); // $new_rules["^$lcode/$str_cadastro/?$"] = "index.php?template=cadastro"; // //// $str_contato = pll_translate_string('contato', $lcode); //// $new_rules["^$lcode/$str_contato/?$"] = "index.php?template=contato"; // // // $str_manuais = pll_translate_string('manuais', $lcode); // $new_rules["^$lcode/$str_manuais/?$"] = "index.php?template=manuais"; //
/** * Get post type and taxonomy slugs. */ public function set_translated_slugs() { $plugin = ''; // check if WPML or Polylang is active include_once ABSPATH . 'wp-admin/includes/plugin.php'; if (is_plugin_active('polylang/polylang.php') && class_exists('Polylang')) { global $polylang; $plugin = 'Polylang'; } elseif (is_plugin_active('sitepress-multilingual-cms/sitepress.php') && is_plugin_active('wpml-string-translation/plugin.php' && class_exists('SitePress'))) { global $sitepress; $plugin = 'WPML'; } if (empty($plugin)) { return; } $languages = array(); $default = ''; // Polylang if ($plugin === 'Polylang' && array_key_exists('polylang', $GLOBALS)) { global $polylang; // get registered languages $registered_languages = $polylang->model->get_languages_list(); if (!empty($registered_languages)) { foreach ($registered_languages as $language) { $languages[] = $language->slug; } } // get default language $default = pll_default_language(); // WPML } elseif ($plugin === 'WPML' && array_key_exists('sitepress', $GLOBALS)) { global $sitepress; // get registered languages $registered_languages = icl_get_languages(); if (!empty($registered_languages)) { foreach ($registered_languages as $language) { $languages[] = $language['language_code']; } } // get default language $default = $sitepress->get_default_language(); $current = $sitepress->get_current_language(); } if (!empty($languages)) { foreach ($languages as $language) { $slugs = array(); if ($plugin === 'Polylang' && function_exists('pll_translate_string')) { // get language strings $slugs['event_rewrite_base'] = pll_translate_string(untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_rewrite_base'])), $language); $slugs['event_rewrite_slug'] = pll_translate_string(untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_rewrite_slug'])), $language); $slugs['event_categories_rewrite_slug'] = pll_translate_string(untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_categories_rewrite_slug'])), $language); $slugs['event_locations_rewrite_slug'] = pll_translate_string(untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_locations_rewrite_slug'])), $language); if (Events_Maker()->options['general']['use_tags'] === true) { $slugs['event_tags_rewrite_slug'] = pll_translate_string(untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_tags_rewrite_slug'])), $language); } if (Events_Maker()->options['general']['use_organizers'] === true) { $slugs['event_organizers_rewrite_slug'] = pll_translate_string(untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_organizers_rewrite_slug'])), $language); } } elseif ($plugin === 'WPML' && function_exists('icl_t')) { $sitepress->switch_lang($language, true); $has_translation = null; // required by WPML icl_t() function $slugs['event_rewrite_base'] = icl_t('Events Maker', 'Event rewrite base', untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_rewrite_base'])), $has_translation, false, $language); $slugs['event_rewrite_slug'] = icl_t('Events Maker', 'Event rewrite slug', untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_rewrite_slug'])), $has_translation, false, $language); $slugs['event_categories_rewrite_slug'] = icl_t('Events Maker', 'Event Categories rewrite slug', untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_categories_rewrite_slug'])), $has_translation, false, $language); $slugs['event_locations_rewrite_slug'] = icl_t('Events Maker', 'Event Locations rewrite slug', untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_locations_rewrite_slug'])), $has_translation, false, $language); if (Events_Maker()->options['general']['use_tags'] === true) { $slugs['event_tags_rewrite_slug'] = icl_t('Events Maker', 'Event Tags rewrite slug', untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_tags_rewrite_slug'])), $has_translation, false, $language); } if (Events_Maker()->options['general']['use_organizers'] === true) { $slugs['event_organizers_rewrite_slug'] = icl_t('Events Maker', 'Event Organizers rewrite slug', untrailingslashit(esc_html(Events_Maker()->options['permalinks']['event_organizers_rewrite_slug'])), $has_translation, false, $language); } } $slugs = apply_filters('em_translated_taxonomy_rewrite_slugs_' . $language, $slugs); // set translated post type slugs $this->post_type_slugs['event'][$language] = array('has_archive' => $slugs['event_rewrite_base'], 'rewrite' => array('slug' => $slugs['event_rewrite_base'] . '/' . $slugs['event_rewrite_slug'])); // set translated taxonomy slugs $this->taxonomy_slugs['event-category'][$language] = $slugs['event_rewrite_base'] . '/' . $slugs['event_categories_rewrite_slug']; $this->taxonomy_slugs['event-location'][$language] = $slugs['event_rewrite_base'] . '/' . $slugs['event_locations_rewrite_slug']; if (Events_Maker()->options['general']['use_tags'] === true) { $this->taxonomy_slugs['event-tag'][$language] = $slugs['event_rewrite_base'] . '/' . $slugs['event_tags_rewrite_slug']; } if (Events_Maker()->options['general']['use_organizers'] === true) { $this->taxonomy_slugs['event-organizer'][$language] = $slugs['event_rewrite_base'] . '/' . $slugs['event_organizers_rewrite_slug']; } } // switch back to current language if ($plugin === 'WPML') { $sitepress->switch_lang($current, true); } } }
function icl_translate($context, $name, $string = false, $bool = false, &$has_translation = null, $lang = null) { // FIXME WPML can automatically registers the string based on an option if (empty($string)) { $string = PLL_WPML_Compat::instance()->get_string_by_context_and_name($context, $name); } return empty($lang) ? pll__($string) : pll_translate_string($string, $lang); }
function send_confirmation($bid) { $name = get_post_meta($bid, 'name', true); $email = get_post_meta($bid, 'email', true); $phone = get_post_meta($bid, 'phone', true); $checkin = get_post_meta($bid, 'checkin', true); $checkout = get_post_meta($bid, 'checkout', true); $price = get_post_meta($bid, 'price', true); $room = get_post_meta($bid, 'room', true); $adults = get_post_meta($bid, 'adults', true); $children = get_post_meta($bid, 'children', true); $message = get_post_meta($bid, 'message', true); $token = get_post_meta($bid, 'token', true); $lang = get_post_meta($bid, 'lang', true); $address = get_post_meta($bid, 'email', true); $from = mytheme_get_option('place_name') . ' <' . $address . '>'; $email_bcc = get_bloginfo('admin_email'); $e_subject = sprintf(pll_translate_string(booking_get_option('bookingwp_confirmed_email_subject'), $lang), $name); // Configuration option. $request_language = $lang; $intro_text = sprintf(pll_translate_string(booking_get_option('bookingwp_confirmed_email'), $request_language), $name); $reservation_details = booking_details($bid); $cancellation_policy = sprintf(pll_translate_string(booking_get_option('bookingwp_cancellation_policy'), $request_language), $name); $email_content = $intro_text; $email_content .= $reservation_details; $email_content .= "<hr/>" . PHP_EOL . PHP_EOL; $email_content .= "<h5>Cancellation Policy</h5><small>" . $cancellation_policy . "</small>"; $msg = wordwrap($e_body, 70); $e_body = build_email($email_content); $headers[] = "From: {$from}" . PHP_EOL; $headers[] = "Bcc: {$email_bcc}" . PHP_EOL; //customer voucher wp_mail($address, $e_subject, $e_body, $headers); }
/** * Load ACF data to boilerplate option * * Bypass ACF saving procedure. * * @param mixed $value The value found in the database * @param mixed $post_id The $post_id from which the value was loaded * @param array $field The field array holding all the field options * @return $value */ public static function load_option($value, $post_id, $field) { $cl = acf_get_setting('current_language'); if (in_array($post_id, ['options', "options_{$cl}"])) { $boilerplate_options = get_option('boilerplate', []); if (empty($boilerplate_options['acf_options'])) { $boilerplate_options['acf_options'] = []; } $acf_options =& $boilerplate_options['acf_options']; static::save_field_references($acf_options); # $key = $post_id . '_' . $field['name']; $key = $field['name']; if (isset($acf_options[$key])) { $value = $acf_options[$key]; if (function_exists('pll_translate_string')) { if (is_array($value)) { foreach ($value as &$v) { $v = pll_translate_string($v, pll_current_language()); } } else { $value = pll_translate_string($value, pll_current_language()); } } // no value? try default_value if ($value === null && isset($field['default_value'])) { $value = $field['default_value']; if (function_exists('pll_translate_string')) { if (is_array($value)) { foreach ($value as &$v) { $v = pll_translate_string($v, pll_current_language()); } } else { $value = pll_translate_string($value, pll_current_language()); } } } // if value was duplicated, it may now be a serialized string! $value = maybe_unserialize($value); } } return $value; }
/** * Parse $source and inject strings * * @param mixed $source * @param array $keys * @return array $source */ public function inject_strings(&$source, $keys) { foreach ($keys as $key => $multiline) { $namespaces = explode('.', $key); $property =& $source; foreach ($namespaces as $name) { if (isset($property[$name])) { if (is_array($property[$name])) { $property =& $property[$name]; } elseif ('' != $property[$name]) { $property[$name] = pll_translate_string($property[$name], $this->current_lang); } } } } return $source; }