| 1 |
<?php |
| 2 |
|
| 3 |
class DeepLConfiguration { |
| 4 |
static function getAPIKey() { |
| 5 |
return apply_filters( __METHOD__, trim( get_option( 'wpdeepl_api_key' ) ) ); |
| 6 |
} |
| 7 |
static function getAPIServer() { |
| 8 |
$choice = get_option( 'wpdeepl_api_server'); |
| 9 |
if( !$choice ) { |
| 10 |
$choice = 'paid_api'; |
| 11 |
} |
| 12 |
$possibilities = self::getDeepLAPIServers(); |
| 13 |
|
| 14 |
if( isset( $possibilities[$choice] ) ) { |
| 15 |
return apply_filters( __METHOD__, $possibilities[$choice]['server'], $choice, $possibilities ); |
| 16 |
} |
| 17 |
else { |
| 18 |
return apply_filters( __METHOD__, false, $choice, $possibilities ); |
| 19 |
} |
| 20 |
} |
| 21 |
|
| 22 |
static function getDeeplAPIServers() { |
| 23 |
$array = array( |
| 24 |
'paid_api' => array( |
| 25 |
'server' => 'https://api.deepl.com/v2/', |
| 26 |
'description' => __('Regular paid API Plan (https://api.deepl.com/v2/)', 'wpdeepl') |
| 27 |
), |
| 28 |
'free_plan' => array( |
| 29 |
'server' => 'https://api-free.deepl.com/v2/', |
| 30 |
'description' => __('New (2021) free API plan (https://api-free.deepl.com)', 'wpdeepl' ) |
| 31 |
), |
| 32 |
); |
| 33 |
return $array; |
| 34 |
} |
| 35 |
|
| 36 |
static function getLogLevel() { |
| 37 |
return apply_filters( __METHOD__, get_option( 'wpdeepl_log_level') ); |
| 38 |
} |
| 39 |
|
| 40 |
static function getMetaBoxPostTypes() { |
| 41 |
return apply_filters( __METHOD__, get_option( 'wpdeepl_metabox_post_types' ) ); |
| 42 |
} |
| 43 |
static function getMetaBoxDefaultBehaviour() { |
| 44 |
return apply_filters( __METHOD__, get_option( 'wpdeepl_metabox_behaviour' ) ); |
| 45 |
} |
| 46 |
static function getDefaultTargetLanguage() { |
| 47 |
return apply_filters( __METHOD__, get_option( 'wpdeepl_default_language' ) ); |
| 48 |
} |
| 49 |
|
| 50 |
static function getDisplayedLanguages() { |
| 51 |
$value = get_option( 'wpdeepl_displayed_languages') ; |
| 52 |
return apply_filters( __METHOD__, $value ); |
| 53 |
} |
| 54 |
static function getMetaBoxContext() { |
| 55 |
return apply_filters( __METHOD__, get_option( 'wpdeepl_metabox_context' ) ); |
| 56 |
} |
| 57 |
static function getMetaBoxPriority() { |
| 58 |
return apply_filters( __METHOD__, get_option( 'wpdeepl_metabox_priority' ) ); |
| 59 |
} |
| 60 |
|
| 61 |
static function usingMultilingualPlugins() { |
| 62 |
return false; |
| 63 |
} |
| 64 |
|
| 65 |
|
| 66 |
|
| 67 |
|
| 68 |
|
| 69 |
/** |
| 70 |
* 0 = activated |
| 71 |
* 1 = activated and setup |
| 72 |
*/ |
| 73 |
static function isPluginInstalled() { |
| 74 |
|
| 75 |
|
| 76 |
return get_option( 'wpdeepl_plugin_installed' ); |
| 77 |
} |
| 78 |
|
| 79 |
static function execWorks() { |
| 80 |
if( exec( 'echo EXEC' ) == 'EXEC' ){ |
| 81 |
return true; |
| 82 |
} |
| 83 |
return false; |
| 84 |
} |
| 85 |
|
| 86 |
static function validateLang( $language_string, $output = 'assource' ) { |
| 87 |
// output source will return 2 characters |
| 88 |
// output source will return AA(-AA) |
| 89 |
|
| 90 |
$language_string = filter_var( $language_string, FILTER_SANITIZE_STRING ); |
| 91 |
$language_string = str_replace( '-', '_', $language_string ); |
| 92 |
|
| 93 |
$all_languages = DeepLConfiguration::DefaultsAllLanguages(); |
| 94 |
$locale = get_locale(); |
| 95 |
|
| 96 |
$language = false; |
| 97 |
if( isset( $all_languages[$language_string] ) ) { |
| 98 |
$language = $all_languages[$language_string]; |
| 99 |
} |
| 100 |
else { |
| 101 |
foreach( $all_languages as $locale => $try_language ) { |
| 102 |
if( $try_language['allcaps'] == strtoupper( $language_string ) ) { |
| 103 |
$language = $try_language; |
| 104 |
break; |
| 105 |
} |
| 106 |
if( $try_language['isocode'] == strtoupper( $language_string ) ) { |
| 107 |
$language = $try_language; |
| 108 |
break; |
| 109 |
} |
| 110 |
} |
| 111 |
} |
| 112 |
|
| 113 |
if( !$language ) { |
| 114 |
return false; |
| 115 |
} |
| 116 |
|
| 117 |
$language['label'] = $language['labels'][$locale]; |
| 118 |
|
| 119 |
if( $output == 'assource' ) { |
| 120 |
return $language['assource']; |
| 121 |
} |
| 122 |
elseif( $output == 'astarget' ) { |
| 123 |
return $language['astarget']; |
| 124 |
} |
| 125 |
elseif( $output == 'isocode' ) { |
| 126 |
return $language['isocode']; |
| 127 |
} |
| 128 |
elseif( $output == 'full' ) { |
| 129 |
return $language; |
| 130 |
} |
| 131 |
elseif( $output == 'label' ) { |
| 132 |
|
| 133 |
return $language['label']; |
| 134 |
} |
| 135 |
else { |
| 136 |
return $language['isocode']; |
| 137 |
} |
| 138 |
} |
| 139 |
static function DefaultsMetaboxBehaviours() { |
| 140 |
$array = array( |
| 141 |
'replace' => __( 'Replace content', 'wpdeepl' ), |
| 142 |
'append' => __( 'Append to content', 'wpdeepl' ) |
| 143 |
); |
| 144 |
return apply_filters( __METHOD__ , $array ); |
| 145 |
} |
| 146 |
|
| 147 |
static function getFormalityLevel() { |
| 148 |
return apply_filters( __METHOD__, get_option( 'wpdeepl_default_formality' ) ); |
| 149 |
} |
| 150 |
|
| 151 |
static function DefaultsISOCodes() { |
| 152 |
$locale = get_locale(); |
| 153 |
$all_languages = DeepLConfiguration::DefaultsAllLanguages(); |
| 154 |
$languages = array(); |
| 155 |
foreach( $all_languages as $isocode => $labels ) { |
| 156 |
$languages[$isocode] = isset( $labels['labels']) && isset( $labels['labels'][$locale] ) ? $labels['labels'][$locale] : false; |
| 157 |
} |
| 158 |
return apply_filters( __METHOD__ , $languages ); |
| 159 |
} |
| 160 |
|
| 161 |
static function DefaultsAllLanguages() { |
| 162 |
$languages = array(); |
| 163 |
|
| 164 |
$csv_labels = 'locale,allcaps,isocode,assource,astarget,bg_BG,cs_CZ,da_DA,de_DE,el_GR,en_US,en_GB,es_ES,et_EE,fi_FI,fr_FR,hu_HU,it_IT,ja_JP,lt_LT,lv_LV,nl_NL,pl_PL,pt_PT,pt_BR,ro_RO,ru_RU,sk_SK,sl_SI,sv_SE,zh_CN |
| 165 |
bg_BG,BG_BG,BG,BG,BG,Български,Bulharský,Bulgarsk,Bulgarisch,Βο� |
| 166 |
λγαρική,Bulgarian,Bulgarian,Búlgaro,Bulgaaria,Bulgarian,Bulgare,Bolgár,Bulgaro,ブルガリア語,Bulgarų,Bulgāru,Bulgaars,Bułgarski,Búlgaro,Búlgaro,Bulgară,Болгарский,Bulharský,Bolgarski,Bulgariska,保加利亚人 |
| 167 |
cs_CZ,CS_CZ,CS,CS,CS,Чешки,Čeština,Tjekkisk,Tschechisch,Τσεχική,Czech,Czech,Checo,Tšehhi,Tšekki,Tchèque,Cseh,Ceco,チェコ語,čekų kalba,Čehu,Tsjechisch,czeski,Checo,Tcheco,Cehă,чешский,Český,Češčina,Tjeckiska,捷� |
| 168 |
� |
| 169 |
da_DA,DA_DA,DA,DA,DA,Датски,Dánština,dansk,Dänisch,Δανικά,Danish,Danish,Danés,Taani,tanska,Danois,dán,Danese,デンマーク語,Danų kalba,Dāņu,Deens,duński,Dinamarquês,Dinamarquês,Daneză,датский,Dánsky,danski,Danska,丹麦语 |
| 170 |
de_DE,DE_DE,DE,DE,DE,Немски,Němčina,tysk,Deutsch,Γερμανικά,German,German,Alemán,Saksa,saksa,Allemand,német,Tedesco,ドイツ語,Vokiečių kalba,Vācu,Duits,Niemiecki,Alemão,Alemão,Germană,немецкий язык,Nemčina,nemščina,Tyska,德国 |
| 171 |
el_GR,EL_GR,EL,EL,EL,Гръцки,Řečtina,Græsk,Griechisch,Ελληνικά,Greek,Greek,Griego,Kreeka,kreikka,Grec,görög,Greco,ギリシャ語,Graikų kalba,grieķu,Grieks,grecki,Grego,Grego,Greacă,греческий,Gréčtina,grščina,Grekiska,希� |
| 172 |
�语 |
| 173 |
en_US,EN_US,EN,EN,EN-US,Английски,Angličtina,engelsk,Englisch,Αγγλικά,English,English,Inglés,inglise,Englanti,Anglais,angol,Inglese,英語,Anglų,Angļu,Engels,angielski,Inglês,Inglês,Engleză,английский язык,Angličtina,angleščina,Engelska,英文 |
| 174 |
en_GB,EN_GB,EN,EN,EN-GB,Английски,Angličtina,engelsk,Englisch,Αγγλικά,English,English,Inglés,inglise,Englanti,Anglais,angol,Inglese,英語,Anglų,Angļu,Engels,angielski,Inglês,Inglês,Engleză,английский язык,Angličtina,angleščina,Engelska,英文 |
| 175 |
es_ES,ES_ES,ES,ES,ES,Испански,Španělština,spansk,Spanisch,Ισπανικά,Spanish,Spanish,Español,Hispaania,Espanja,Espagnol,Spanyol,Spagnolo,スペイン語,Ispanų kalba,Spāņu,Spaans,hiszpański,Espanhol,Espanhol,Spaniolă,испанский,Španielčina,Španščina,Spanska,西班牙语 |
| 176 |
et_EE,ET_EE,ET,ET,ET,Естонски,Estonština,Estisk,Estnisch,Εσθονικά,Estonian,Estonian,Estonio,Eesti keel,Viro,Estonien,Észt,Estone,エストニア語,Estų kalba,Igauņu,Ests,estoński,Estónio,Estoniano,Estoniană,эстонский,Estónčina,Estonščina,Estniska,爱沙尼亚语 |
| 177 |
fi_FI,FI_FI,FI,FI,FI,Финландски,Finština,finsk,Finnisch,Φινλανδικά,Finnish,Finnish,Finlandés,Soome,suomi,Finnois,finn,Finlandese,フィンランド語,Suomių kalba,Somu,Fins,fiński,Finlandês,Finlandês,Finlandeză,финский,Fínsky,finščina,Finska,芬� |
| 178 |
� |
| 179 |
fr_FR,FR_FR,FR,FR,FR,Френски,Francouzština,Fransk,Französisch,Γαλλικά,French,French,Francés,prantsuse,ranska,Français,francia,Francese,フランス語,Prancūzų,Franču,Frans,Francuski,Francês,Francês,Franceză,французский,Francúzština,Francoski,Franska,法国人 |
| 180 |
hu_HU,HU_HU,HU,HU,HU,Унгарски,Maďarština,Ungarsk,Ungarisch,Ο� |
| 181 |
γγρικά,Hungarian,Hungarian,Húngaro,Ungari,unkari,Hongrois,Magyar,Ungherese,ハンガリー語,vengrų,Ungāru,Hongaars,Węgierski,Húngaro,Húngaro,Maghiară,венгерский,Maďarčina,madžarski,Ungerska,匈牙利语 |
| 182 |
it_IT,IT_IT,IT,IT,IT,Италиански,italština,Italiensk,Italienisch,Ιταλικά,Italian,Italian,Italiano,Itaalia,italia,Italien,olasz,Italiano,イタリア語,italų kalba,Itāļu,Italiaans,włoski,Italiano,Italiano,Italiană,итальянский,taliansky,italijanščina,Italienska,意大利 |
| 183 |
ja_JP,JA_JP,JA,JA,JA,Японски,japonština,japansk,Japanisch,Ιαπωνικά,Japanese,Japanese,Japonés,jaapani,japani,Japonais,japán,Giapponese,日本語,japonų,japāņu,Japans,japoński,Japonês,Japonês,Japoneză,Японский,Japončina,japonščina,Japanska,日文 |
| 184 |
lt_LT,LT_LT,LT,LT,LT,Литовски,Litevština,Litauisk,Litauisch,Λιθο� |
| 185 |
ανικά,Lithuanian,Lithuanian,Lituano,Leedu,liettuan kieli,Lituanien,litván,Lituano,リトアニア語,Lietuvių,Lietuviešu,Litouws,Litewski,Lituano,Lituano,lituaniană,литовский,Litovčina,litovščina,Litauiska,立陶宛语 |
| 186 |
lv_LV,LV_LV,LV,LV,LV,Латвийски,lotyština,lettisk,Lettisch,Λετονία,Latvian,Latvian,Letón,Läti,Latvian,Letton,lett,Lettone,ラトビア語,Latvių,Latviešu,Lets,łotewski,Letão,Letão,Letonă,латышский язык,lotyština,latvijski,Lettiska,拉脱维亚人 |
| 187 |
nl_NL,NL_NL,NL,NL,NL,Нидерландски,nizozemština,hollandsk,Niederländisch,Ολλανδικά,Dutch,Dutch,Holandés,Hollandi,Hollanti,Néerlandais,holland,Olandese,オランダ語,Olandų,Holandiešu,Nederlands,niderlandzki,Holandês,Holandês,olandeză,голландский,Holandský,nizozemščina,Nederländska,荷� |
| 188 |
�语 |
| 189 |
pl_PL,PL_PL,PL,PL,PL,Полски,Polština,polsk,Polnisch,Πολωνικά,Polish,Polish,Polaco,Poola,Puola,Polonais,Lengyel,Polacco,ポーランド語,Lenkų kalba,Poļu,Pools,Polski,Polaco,Polonês,Poloneză,польский,Poľština,poljščina,Polska,波� |
| 190 |
�语 |
| 191 |
pt_PT,PT_PT,PT,PT,PT-PT,Португалски,Portugalština,portugisisk,Portugiesisch,Πορτογαλικά,Portuguese,Portuguese,Portugués,Portugali,Portugali,Portugais,Portugál,Portoghese,ポルトガル語,Portugalų,Portugāļu,Portugees,portugalski,Português,Português,Portugheză,Португальский,Portugalčina,portugalščina,Portugisiska,葡萄牙语 |
| 192 |
pt_BR,PT_BR,PT,PT,PT-BR,Португалски,Portugalština,portugisisk,Portugiesisch,Πορτογαλικά,Portuguese,Portuguese,Portugués,Portugali,Portugali,Portugais,Portugál,Portoghese,ポルトガル語,Portugalų,Portugāļu,Portugees,portugalski,Português,Português,Portugheză,Португальский,Portugalčina,portugalščina,Portugisiska,葡萄牙语 |
| 193 |
ro_RO,RO_RO,RO,RO,RO,Румънски,Rumunština,rumænsk,Rumänisch,Ρο� |
| 194 |
μανικά,Romanian,Romanian,Rumano,Rumeenia,Romanian,Roumain,Román,Rumeno,ルーマニア語,Rumunų,Rumāņu,Roemeens,rumuński,Romeno,Romeno,Română,румынский язык,Rumunčina,romunščina,Rumänska,罗马尼亚语 |
| 195 |
ru_RU,RU_RU,RU,RU,RU,Руски,ruština,russisk,Russisch,Ρωσικά,Russian,Russian,Ruso,Vene,Venäjä,Russe,orosz,Russo,ロシア語,rusų,Krievu,Russisch,rosyjski,Russo,Russo,Rusă,русский,Ruský,ruščina,Ryska,俄语 |
| 196 |
sk_SK,SK_SK,SK,SK,SK,Словашки,Slovenština,Slovakisk,Slowakisch,Σλοβάκικα,Slovak,Slovak,Eslovaco,slovaki keel,slovakki,Slovaque,szlovák,Slovacco,スロバキア語,Slovakų,slovāku,Slowaaks,słowacki,Eslovaco,Eslovaco,Slovacă,словацкий,Slovensky,slovaščina,Slovakiska,斯洛伐� |
| 197 |
� |
| 198 |
sl_SI,SL_SI,SL,SL,SL,Словенски,slovinština,slovensk,Slowenisch,Σλοβένικα,Slovenian,Slovenian,Esloveno,Sloveenia,Slovenian,Slovène,szlovén,Sloveno,スロベニア語,slovėnų,slovēņu,Sloveens,słoweński,Esloveno,Esloveno,Slovenă,словенский,slovinčina,slovenski,Slovenska,斯洛文尼亚语 |
| 199 |
sv_SE,SV_SE,SV,SV,SV,Шведски,švédština,svensk,Schwedisch,Σο� |
| 200 |
ηδικά,Swedish,Swedish,Sueco,Rootsi,Ruotsi,Suédois,Svéd,Svedese,スウェーデン語,švedų,zviedru,Zweeds,szwedzki,Sueco,Sueco,Suedeză,шведский язык,švédsky,švedski,Svenska,瑞� |
| 201 |
�语 |
| 202 |
zh_CN,ZH_CN,ZH,ZH,ZH,Китайски,Čínština,Kinesisk,Chinesisch,Κινέζικα,Chinese,Chinese,Chino,Hiina,Kiina,Chinois,Kínai,Cinese,中国語,Kinų kalba,Ķīniešu,Chinees,chiński,Chinês,Chinês,Chineză,китайский язык,Čínština,kitajščina,Kinesiska,中文'; |
| 203 |
$csv_labels = explode( "\n", $csv_labels ); |
| 204 |
$headers = explode(',', array_shift( $csv_labels ) ); |
| 205 |
foreach( $csv_labels as $ligne ) { |
| 206 |
$labels = explode(',', $ligne ); |
| 207 |
$labels = array_combine( $headers, $labels ); |
| 208 |
|
| 209 |
$locale = $labels['locale']; |
| 210 |
unset( $labels['locale'] ); |
| 211 |
|
| 212 |
$extra_country = false; |
| 213 |
if( strlen( $labels['astarget'] ) > 2 ) { |
| 214 |
$extra_country = substr( $labels['astarget'], 3, 2 ); |
| 215 |
} |
| 216 |
|
| 217 |
$languages[$locale] = array(); |
| 218 |
foreach( array('allcaps', 'assource', 'astarget', 'isocode' ) as $key ) { |
| 219 |
$languages[$locale][$key] = $labels[$key]; |
| 220 |
unset( $labels[$key] ); |
| 221 |
} |
| 222 |
|
| 223 |
|
| 224 |
if( $extra_country ) { |
| 225 |
foreach( $labels as $code => $label ) { |
| 226 |
$labels[$code] = $label . ' (' . $extra_country . ')'; |
| 227 |
} |
| 228 |
} |
| 229 |
$languages[$locale]['labels'] = $labels; |
| 230 |
} |
| 231 |
|
| 232 |
return apply_filters( __METHOD__, $languages ); |
| 233 |
|
| 234 |
// used for.. something else |
| 235 |
$test = __('Translate to %s', 'wpdeepl' ); |
| 236 |
$test = __('Translated %d posts.', 'wpdeepl'); |
| 237 |
$test = __('Bulk translate', 'wpdeepl'); |
| 238 |
$test = __('Content types', 'wpdeepl'); |
| 239 |
$test = __( 'Translate contents', 'wpdeepl' ); |
| 240 |
$test = __( 'Select which kind of content you want to be able to translate', 'wpdeepl' ); |
| 241 |
$test = __( 'Target languages for bulk actions', 'wpdeepl' ); |
| 242 |
$test = __( 'Show these target languages in bulk menu', 'wpdeepl' ); |
| 243 |
} |
| 244 |
|
| 245 |
// might serve somewhere |
| 246 |
static function getContentTypes() { |
| 247 |
return apply_filters( __METHOD__, get_option('wpdeepl_contents_to_translate') ); |
| 248 |
} |
| 249 |
static function getTargetLocales() { |
| 250 |
return apply_filters( __METHOD__, get_option( 'wpdeepl_target_locales') ); |
| 251 |
} |
| 252 |
|
| 253 |
static function usingPolylang() { |
| 254 |
return function_exists( 'pll_the_languages' ); |
| 255 |
} |
| 256 |
|
| 257 |
static function getBulkTargetLanguages() { |
| 258 |
return apply_filters( __METHOD__, get_option( 'wpdeepl_bulk_target_locales' ) ); |
| 259 |
} |
| 260 |
} |
| 261 |
|
| 262 |
|