HEX
Server: LiteSpeed
System: Linux php-prod-3.spaceapp.ru 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: sarli3128 (1010)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/thread-self/cwd/wp-content/plugins/cyr2lat/includes/class-cyr-to-lat-conversion-tables.php
<?php
/**
 * Conversion tables.
 *
 * @package cyr-to-lat
 */

/**
 * Class Cyr_To_Lat_Conversion_Tables
 *
 * @class Cyr_To_Lat_Conversion_Tables
 */
class Cyr_To_Lat_Conversion_Tables {

	/**
	 * Get conversion table by locale.
	 *
	 * @link https://ru.wikipedia.org/wiki/ISO_9
	 *
	 * @param string $locale WordPress locale.
	 *
	 * @return array
	 */
	public static function get( $locale = '' ) {
		$table = array(
			'А' => 'A',
			'Б' => 'B',
			'В' => 'V',
			'Г' => 'G',
			'Д' => 'D',
			'Е' => 'E',
			'Ё' => 'YO',
			'Ж' => 'ZH',
			'З' => 'Z',
			'И' => 'I',
			'Й' => 'J',
			'І' => 'I',
			'К' => 'K',
			'Л' => 'L',
			'М' => 'M',
			'Н' => 'N',
			'О' => 'O',
			'П' => 'P',
			'Р' => 'R',
			'С' => 'S',
			'Т' => 'T',
			'У' => 'U',
			'Ф' => 'F',
			'Х' => 'H',
			'Ц' => 'CZ',
			'Ч' => 'CH',
			'Ш' => 'SH',
			'Щ' => 'SHH',
			'Ъ' => '',
			'Ы' => 'Y',
			'Ь' => '',
			'Э' => 'E',
			'Ю' => 'YU',
			'Я' => 'YA',
			'Ѣ' => 'YE',
			'Ѳ' => 'FH',
			'Ѵ' => 'YH',
			'а' => 'a',
			'б' => 'b',
			'в' => 'v',
			'г' => 'g',
			'д' => 'd',
			'е' => 'e',
			'ё' => 'yo',
			'ж' => 'zh',
			'з' => 'z',
			'и' => 'i',
			'й' => 'j',
			'і' => 'i',
			'к' => 'k',
			'л' => 'l',
			'м' => 'm',
			'н' => 'n',
			'о' => 'o',
			'п' => 'p',
			'р' => 'r',
			'с' => 's',
			'т' => 't',
			'у' => 'u',
			'ф' => 'f',
			'х' => 'h',
			'ц' => 'cz',
			'ч' => 'ch',
			'ш' => 'sh',
			'щ' => 'shh',
			'ъ' => '',
			'ы' => 'y',
			'ь' => '',
			'э' => 'e',
			'ю' => 'yu',
			'я' => 'ya',
			'ѣ' => 'ye',
			'ѳ' => 'fh',
			'ѵ' => 'yh',
		);
		switch ( $locale ) {
			// Belorussian.
			case 'bel':
				unset( $table['И'] );
				unset( $table['и'] );
				$table['Ў'] = 'U';
				$table['ў'] = 'u';
				unset( $table['Щ'] );
				unset( $table['щ'] );
				unset( $table['Ъ'] );
				unset( $table['ъ'] );
				unset( $table['Ѣ'] );
				unset( $table['ѣ'] );
				unset( $table['Ѳ'] );
				unset( $table['ѳ'] );
				unset( $table['Ѵ'] );
				unset( $table['ѵ'] );
				break;
			// Ukrainian.
			case 'uk':
				$table['Ґ'] = 'G';
				$table['ґ'] = 'g';
				unset( $table['Ё'] );
				unset( $table['ё'] );
				$table['Є'] = 'YE';
				$table['є'] = 'ye';
				$table['И'] = 'Y';
				$table['и'] = 'y';
				$table['Ї'] = 'YI';
				$table['ї'] = 'yi';
				unset( $table['Ъ'] );
				unset( $table['ъ'] );
				unset( $table['Ы'] );
				unset( $table['ы'] );
				unset( $table['Э'] );
				unset( $table['э'] );
				unset( $table['Ѣ'] );
				unset( $table['ѣ'] );
				unset( $table['Ѳ'] );
				unset( $table['ѳ'] );
				unset( $table['Ѵ'] );
				unset( $table['ѵ'] );
				break;
			// Bulgarian.
			case 'bg_BG':
				unset( $table['Ё'] );
				unset( $table['ё'] );
				$table['Щ'] = 'STH';
				$table['щ'] = 'sth';
				$table['Ъ'] = 'A';
				$table['ъ'] = 'a';
				unset( $table['Ы'] );
				unset( $table['ы'] );
				unset( $table['Э'] );
				unset( $table['э'] );
				$table['Ѫ'] = 'О';
				$table['ѫ'] = 'о';
				break;
			// Macedonian.
			case 'mk_MK':
				$table['Ѓ'] = 'G';
				$table['ѓ'] = 'g';
				unset( $table['Ё'] );
				unset( $table['ё'] );
				$table['Ѕ'] = 'Z';
				$table['ѕ'] = 'z';
				unset( $table['Й'] );
				unset( $table['й'] );
				$table['Ј'] = 'J';
				$table['ј'] = 'j';
				unset( $table['I'] );
				unset( $table['i'] );
				$table['Ќ'] = 'K';
				$table['ќ'] = 'k';
				$table['Љ'] = 'L';
				$table['љ'] = 'l';
				$table['Њ'] = 'N';
				$table['њ'] = 'n';
				$table['Џ'] = 'DH';
				$table['џ'] = 'dh';
				unset( $table['Щ'] );
				unset( $table['щ'] );
				unset( $table['Ъ'] );
				unset( $table['ъ'] );
				unset( $table['Ы'] );
				unset( $table['ы'] );
				unset( $table['Ь'] );
				unset( $table['ь'] );
				unset( $table['Э'] );
				unset( $table['э'] );
				unset( $table['Ю'] );
				unset( $table['ю'] );
				unset( $table['Я'] );
				unset( $table['я'] );
				unset( $table['Ѣ'] );
				unset( $table['ѣ'] );
				unset( $table['Ѳ'] );
				unset( $table['ѳ'] );
				unset( $table['Ѵ'] );
				unset( $table['ѵ'] );
				break;
			// Georgian.
			case 'ka_GE':
				$table['ა'] = 'a';
				$table['ბ'] = 'b';
				$table['გ'] = 'g';
				$table['დ'] = 'd';
				$table['ე'] = 'e';
				$table['ვ'] = 'v';
				$table['ზ'] = 'z';
				$table['თ'] = 'th';
				$table['ი'] = 'i';
				$table['კ'] = 'k';
				$table['ლ'] = 'l';
				$table['მ'] = 'm';
				$table['ნ'] = 'n';
				$table['ო'] = 'o';
				$table['პ'] = 'p';
				$table['ჟ'] = 'zh';
				$table['რ'] = 'r';
				$table['ს'] = 's';
				$table['ტ'] = 't';
				$table['უ'] = 'u';
				$table['ფ'] = 'ph';
				$table['ქ'] = 'q';
				$table['ღ'] = 'gh';
				$table['ყ'] = 'qh';
				$table['შ'] = 'sh';
				$table['ჩ'] = 'ch';
				$table['ც'] = 'ts';
				$table['ძ'] = 'dz';
				$table['წ'] = 'ts';
				$table['ჭ'] = 'tch';
				$table['ხ'] = 'kh';
				$table['ჯ'] = 'j';
				$table['ჰ'] = 'h';
				break;
			// Kazakh.
			case 'kk':
				$table['Ә'] = 'Ae';
				$table['ә'] = 'ae';
				$table['Ғ'] = 'Gh';
				$table['ғ'] = 'gh';
				unset( $table['Ё'] );
				unset( $table['ё'] );
				$table['Қ'] = 'Q';
				$table['қ'] = 'q';
				$table['Ң'] = 'Ng';
				$table['ң'] = 'ng';
				$table['Ө'] = 'Oe';
				$table['ө'] = 'oe';
				$table['У'] = 'W';
				$table['у'] = 'w';
				$table['Ұ'] = 'U';
				$table['ұ'] = 'u';
				$table['Ү'] = 'Ue';
				$table['ү'] = 'ue';
				$table['Һ'] = 'H';
				$table['һ'] = 'h';
				$table['Ц'] = 'C';
				$table['ц'] = 'c';
				unset( $table['Щ'] );
				unset( $table['щ'] );
				unset( $table['Ъ'] );
				unset( $table['ъ'] );
				unset( $table['Ь'] );
				unset( $table['ь'] );
				unset( $table['Э'] );
				unset( $table['э'] );
				unset( $table['Ю'] );
				unset( $table['ю'] );
				unset( $table['Я'] );
				unset( $table['я'] );

				// Kazakh 2018 latin.
				$table['Á'] = 'A';
				$table['á'] = 'a';
				$table['Ǵ'] = 'G';
				$table['ǵ'] = 'g';
				$table['I'] = 'I';
				$table['ı'] = 'i';
				$table['Ń'] = 'N';
				$table['ń'] = 'n';
				$table['Ó'] = 'O';
				$table['ó'] = 'o';
				$table['Ú'] = 'O';
				$table['ú'] = 'o';
				$table['Ý'] = 'O';
				$table['ý'] = 'o';
				break;
			case 'he_IL':
				$table = array(
					'א' => '',
					'ב' => 'b',
					'ג' => 'g',
					'ד' => 'd',
					'ה' => 'h',
					'ו' => 'w',
					'ז' => 'z',
					'ח' => 'x',
					'ט' => 't',
					'י' => 'y',
					'ך' => '',
					'כ' => 'kh',
					'ל' => 'l',
					'ם' => '',
					'מ' => 'm',
					'ן' => '',
					'נ' => 'n',
					'ס' => 's',
					'ע' => '',
					'ף' => '',
					'פ' => 'ph',
					'ץ' => '',
					'צ' => 's',
					'ק' => 'k',
					'ר' => 'r',
					'ש' => 'sh',
					'ת' => 'th',
				);
				for ( $code = 0x0590; $code <= 0x05CF; $code ++ ) {
					$table[ self::mb_chr( $code ) ] = '';
				}
				for ( $code = 0x05F0; $code <= 0x05F5; $code ++ ) {
					$table[ self::mb_chr( $code ) ] = '';
				}
				for ( $code = 0xFB1D; $code <= 0xFB4F; $code ++ ) {
					$table[ self::mb_chr( $code ) ] = '';
				}
				break;
			default:
		}

		return $table;
	}

	/**
	 * Simplified polyfill of mb_chr() function, to be used without mbstring extension.
	 *
	 * @link https://github.com/symfony/polyfill-mbstring/blob/master/Mbstring.php
	 *
	 * @param int $code Character code.
	 *
	 * @return string
	 */
	public static function mb_chr( $code ) {
		$code = $code % 0x200000;
		if ( 0x80 > $code ) {
			$s = \chr( $code );
		} elseif ( 0x800 > $code ) {
			$s = \chr( 0xC0 | $code >> 6 ) . \chr( 0x80 | $code & 0x3F );
		} elseif ( 0x10000 > $code ) {
			$s = \chr( 0xE0 | $code >> 12 ) . \chr( 0x80 | $code >> 6 & 0x3F ) . \chr( 0x80 | $code & 0x3F );
		} else {
			$s = \chr( 0xF0 | $code >> 18 ) . \chr( 0x80 | $code >> 12 & 0x3F ) . \chr( 0x80 | $code >> 6 & 0x3F ) . \chr( 0x80 | $code & 0x3F );
		}

		return $s;
	}
}