PluginProbe
Translate and Go multilingual – Automatic AI translation – wpLingua / 1.1.0
Translate and Go multilingual – Automatic AI translation – wpLingua v1.1.0
2.16.7 2.16.6 2.16.5 2.16.4 2.16.3 2.16.2 2.16.1 2.16.0 2.15.2 2.15.1 2.15.0 2.14.3 2.14.2 2.14.1 2.14.0 2.13.1 2.13.0 2.12.3 2.12.2 2.12.1 trunk 1.0.3 1.0.4 1.0.5 1.1.0 All 112 releases
wplingua / inc / admin / option-page-settings.php

option-page-settings.php in Translate and Go multilingual – Automatic AI translation – wpLingua 1.1.0, at inc/admin/option-page-settings.php

343 lines 11.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // If this file is called directly, abort.
4 if ( ! defined( 'WPINC' ) ) {
5 die;
6 }
7
8
9 /**
10 * Print HTML Option page : wpLingua Settings
11 *
12 * @return void
13 */
14 function wplng_option_page_settings() {
15
16 delete_transient( 'wplng_api_key_data' );
17
18 if ( empty( wplng_get_api_data() ) || is_multisite() ) {
19 wplng_option_page_register();
20 return;
21 }
22
23 wplng_settings_part_first_use();
24
25 ?>
26
27 <h1 class="wplin-option-page-title"><span class="dashicons dashicons-translation"></span> <?php esc_html_e( 'wpLingua - Translation solution for multilingual website', 'wplingua' ); ?></h1>
28
29 <div class="wrap">
30 <hr class="wp-header-end">
31 <form method="post" action="options.php">
32 <?php
33 settings_fields( 'wplng_settings' );
34 do_settings_sections( 'wplng_settings' );
35 ?>
36
37 <table class="form-table wplng-form-table">
38 <tr>
39 <th scope="row"><span class="dashicons dashicons-location"></span> <?php esc_html_e( 'Website language', 'wplingua' ); ?></th>
40 <td>
41 <?php wplng_settings_part_language_website(); ?>
42 </td>
43 </tr>
44 <tr>
45 <th scope="row"><span class="dashicons dashicons-location-alt"></span> <?php esc_html_e( 'Translated languages', 'wplingua' ); ?></th>
46 <td>
47 <?php wplng_settings_part_languages_target(); ?>
48 </td>
49 </tr>
50 <tr>
51 <th scope="row"><span class="dashicons dashicons-admin-settings"></span> <?php esc_html_e( 'API features', 'wplingua' ); ?></th>
52 <td>
53 <fieldset>
54 <?php wplng_settings_part_features(); ?>
55 </fieldset>
56 </td>
57 </tr>
58 <tr>
59 <th scope="row"><span class="dashicons dashicons-admin-network"></span> <?php _e( 'API Key', 'wplingua' ); ?></th>
60 <td>
61 <?php wplng_settings_part_api_key(); ?>
62 </td>
63 </tr>
64 </table>
65
66 <?php submit_button(); ?>
67
68 </form>
69 </div>
70 <?php
71 }
72
73
74 /**
75 * Print HTML subsection of Option page : wpLingua Settings - First use
76 *
77 * @return void
78 */
79 function wplng_settings_part_first_use() {
80
81 if ( ! empty( get_option( 'wplng_website_language' ) )
82 || 'all' === wplng_get_api_language_website()
83 ) {
84 return;
85 }
86
87 update_option( 'wplng_website_language', wplng_get_api_language_website() );
88
89 $data = wplng_get_api_data();
90
91 if ( empty( $data['languages_target'][0] ) ) {
92 return;
93 }
94
95 // Set option for target language
96 $language_target = wplng_get_language_by_id( $data['languages_target'][0] );
97 if ( ! empty( $language_target ) ) {
98 update_option(
99 'wplng_target_languages',
100 wp_json_encode(
101 array( $language_target )
102 )
103 );
104 } else {
105 return;
106 }
107
108 // Get URL for first registered language of front page
109 $url_front_page_translated = wplng_url_translate(
110 get_site_url(),
111 $language_target['id']
112 );
113
114 ?>
115 <div class="wplng-notice notice notice-info" id="wplng-notice-first-loading-loading">
116 <iframe src="<?php echo esc_url( $url_front_page_translated ); ?>" frameborder="0" id="wplng-first-load-iframe" style="display: none;"></iframe>
117 <h2><span class="dashicons dashicons-update wplng-spin"></span> <?php esc_html_e( 'Your site is being translated and will be ready soon.', 'wplingua' ); ?></h2>
118 </div>
119
120 <div class="wplng-notice notice notice-success" id="wplng-notice-first-loading-loaded" style="display: none;">
121 <h2>🎉 <?php esc_html_e( 'Your website is now multilingual ! You can start visiting the translated version.', 'wplingua' ); ?></h2>
122 <p>
123 <a href="<?php echo esc_url( $url_front_page_translated ); ?>" target="_blank" class="button button-primary">
124 <?php esc_html_e( 'Visit your multilingual website', 'wplingua' ); ?>
125 </a>
126 </p>
127 </div>
128 <?php
129 }
130
131
132 /**
133 * Print HTML subsection of Option page : wpLingua Settings - Website language
134 *
135 * @return void
136 */
137 function wplng_settings_part_language_website() {
138
139 $api_language_website = wplng_get_api_language_website();
140
141 if ( 'all' !== $api_language_website ) {
142 echo '<fieldset style="display: none;">';
143 } else {
144 echo '<fieldset>';
145 }
146
147 echo '<label for="wplng_website_language" class="wplng-fe-50">';
148 echo '<strong>';
149 esc_html_e( 'Original website language: ', 'wplingua' );
150 echo ' </strong>';
151 echo '</label>';
152
153 echo '<select id="wplng_website_language" name="wplng_website_language" class="wplng-fe-50">';
154 $website_language_saved = true;
155 if ( empty( wplng_get_language_website_id() ) ) {
156 $website_language_saved = false;
157 } else {
158
159 $website_language_id = wplng_get_language_website_id();
160 $website_language = wplng_get_language_by_id( $website_language_id );
161
162 if ( ! empty( $website_language['id'] )
163 && ! empty( $website_language['name'] )
164 ) {
165 echo '<option value="' . esc_attr( $website_language['id'] ) . '">';
166 echo esc_html( $website_language['name'] );
167 echo '</option>';
168 } else {
169 $website_language_saved = false;
170 }
171 }
172
173 if ( ! $website_language_saved ) {
174 echo '<option value="">';
175 esc_html_e( 'Please choose an option', 'wplingua' );
176 echo '</option>';
177 }
178
179 echo '</select>';
180 echo '<hr>';
181 echo '</fieldset>';
182
183 if ( 'all' !== $api_language_website ) {
184 echo '<p>';
185 echo '<strong>';
186 esc_html_e( 'Original website language, defined by API key:', 'wplingua' );
187 echo ' </strong>';
188 echo ' </p>';
189 }
190 ?>
191
192 <div id="wplng-flags-radio-original-website-custom"><?php _e( 'Custom', 'wplingua' ); ?></div>
193
194 <div id="wplng-website-language-box">
195
196 <div class="wplng-website-language-displayed">
197 <div id="wplng-website-language" class="wplng-website-language-left">
198 <img src="<?php echo esc_url( wplng_get_language_website_flag() ); ?>" id="wplng-website-flag">
199 <?php echo esc_html( $website_language['name'] ); ?>
200 </div>
201 <div class="wplng-target-language-right">
202 <a href="javascript:void(0);" id="wplng-website-lang-update-flag"><?php esc_html_e( 'Edit flag', 'wplingua' ); ?></a>
203 </div>
204 </div>
205
206 <div id="wplng-flag-website-container">
207 <p>
208 <strong><?php esc_html_e( 'Flag:', 'wplingua' ); ?></strong>
209 <span id="wplng-flags-radio-original-website"></span>
210 </p>
211
212 <div id="wplng-website-flag-container">
213 <strong><?php esc_html_e( 'Custom flag URL: ', 'wplingua' ); ?></strong>
214 <input type="url" name="wplng_website_flag" id="wplng_website_flag" value="<?php echo esc_url( wplng_get_language_website_flag() ); ?>"/>
215 </div>
216 </div>
217
218 </div>
219 <?php
220 }
221
222
223 /**
224 * Print HTML subsection of Option page : wpLingua Settings - Languages target
225 *
226 * @return void
227 */
228 function wplng_settings_part_languages_target() {
229
230 $languages_target = wplng_get_languages_target_simplified();
231 $languages_target_ids = array();
232
233 foreach ( $languages_target as $language_target ) {
234 if ( ! empty( $language_target['id'] ) ) {
235 $languages_target_ids[] = $language_target['id'];
236 }
237 }
238
239 $languages_target = wplng_get_languages_by_ids( $languages_target_ids );
240
241 ?>
242 <fieldset id="fieldset-add-target-language">
243 <label for="wplng_add_new_target_language" class="wplng-fe-50">
244 <strong><?php esc_html_e( 'Add new target Language: ', 'wplingua' ); ?></strong>
245 </label>
246
247 <select id="wplng_add_new_target_language" name="wplng_add_new_target_language"></select>
248
249 <a class="button button-primary wplng-icon-button" id="wplng-target-lang-add" title="<?php esc_html_e( 'Add language', 'wplingua' ); ?>" href="javascript:void(0);">
250 <span class="dashicons dashicons-insert"></span>
251 </a>
252
253 <hr>
254 </fieldset>
255
256 <div id="wplng-target-language-template">
257 <div class="wplng-target-language">
258
259 <div class="wplng-target-language-displayed">
260 <div class="wplng-target-language-left">
261 [FLAG][NAME]
262 </div>
263
264 <div class="wplng-target-language-right">
265 <a href="javascript:void(0);" class="wplng-target-lang-update-flag" wplng-target-lang="[LANG]"><?php esc_html_e( 'Edit flag', 'wplingua' ); ?></a>
266 <a href="javascript:void(0);" class="wplng-target-lang-remove" wplng-target-lang="[LANG]"><?php esc_html_e( 'Remove', 'wplingua' ); ?></a>
267 </div>
268 </div>
269
270 <div class="wplng-flag-target-container" wplng-target-lang="[LANG]">
271 <p>
272 <strong><?php esc_html_e( 'Flag: ', 'wplingua' ); ?></strong>
273 <span class="wplng-subflags-radio-target-website">[FLAGS_OPTIONS]</span>
274 </p>
275 <div class="wplng-subflag-target-custom" wplng-target-lang="[LANG]">
276 <strong><?php esc_html_e( 'Custom flag URL: ', 'wplingua' ); ?></strong>
277 [INPUT]
278 </div>
279 </div>
280 </div>
281 </div>
282
283 <div id="wplng-target-languages-container">
284 <p><strong><?php esc_html_e( 'Target languages enabled: ', 'wplingua' ); ?></strong></p>
285 <div id="wplng-target-languages-list"></div>
286 <textarea name="wplng_target_languages" id="wplng_target_languages"><?php echo esc_textarea( wp_json_encode( $languages_target, true ) ); ?></textarea>
287 </div>
288 <?php
289 }
290
291
292 /**
293 * Print HTML subsection of Option page : wpLingua Settings - Feature
294 *
295 * @return void
296 */
297 function wplng_settings_part_features() {
298
299 $api_features = wplng_get_api_feature();
300
301 ?>
302 <p><strong><?php esc_html_e( 'API translation features:', 'wplingua' ); ?></strong></p>
303 <hr>
304
305 <p><?php esc_html_e( 'The options below require extended access to the wpLingua API to be functional on your website.', 'wplingua' ); ?></p>
306
307 <hr>
308
309 <fieldset>
310 <input type="checkbox" id="wplng_translate_search" name="wplng_translate_search" value="1" <?php checked( 1, get_option( 'wplng_translate_search' ) && in_array( 'search', $api_features ), true ); ?> <?php disabled( false, in_array( 'search', $api_features ), true ); ?>/>
311 <label for="wplng_translate_search"> <?php esc_html_e( 'API feature: Search from translated languages', 'wplingua' ); ?></label>
312 </fieldset>
313
314 <fieldset>
315 <input type="checkbox" id="wplng_translate_woocommerce" name="wplng_translate_woocommerce" value="1" <?php checked( 1, get_option( 'wplng_translate_woocommerce' ) && in_array( 'woocommerce', $api_features ), true ); ?> <?php disabled( false, in_array( 'woocommerce', $api_features ), true ); ?>/>
316 <label for="wplng_translate_woocommerce"> <?php esc_html_e( 'API feature: Allow WooCommerce shop translation', 'wplingua' ); ?></label>
317 </fieldset>
318
319 <?php
320 }
321
322
323 /**
324 * Print HTML subsection of Option page : wpLingua Settings - API Key
325 *
326 * @return void
327 */
328 function wplng_settings_part_api_key() {
329 ?>
330 <fieldset>
331 <p><label for="wplng_api_key"><strong><?php esc_html_e( 'Website API key:', 'wplingua' ); ?></strong></label></p>
332
333 <input type="text" id="wplng-api-key-fake" value="●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●" disabled></input>
334
335 <input type="text" name="wplng_api_key" id="wplng_api_key" value="<?php echo esc_attr( wplng_get_api_key() ); ?>" style="display: none;"></input>
336
337 <a class="button button-primary wplng-icon-button" id="wplng-api-key-show" href="javascript:void(0);" title="<?php esc_html_e( 'Show API key', 'wplingua' ); ?>"><span class="dashicons dashicons-visibility"></span></a>
338
339 <a class="button button-primary wplng-icon-button" id="wplng-api-key-hide" href="javascript:void(0);" title="<?php esc_html_e( 'Hide API key', 'wplingua' ); ?>" style="display: none;"><span class="dashicons dashicons-hidden"></span></a>
340 </fieldset>
341 <?php
342 }
343