PluginProbe
Translate and Go multilingual – Automatic AI translation – wpLingua / 1.0.3
Translate and Go multilingual – Automatic AI translation – wpLingua v1.0.3
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 1.1.1 1.2.0 All 110 releases
wplingua / wplingua.php

wplingua.php in Translate and Go multilingual – Automatic AI translation – wpLingua 1.0.3, at wplingua.php

186 lines 5.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: wpLingua
4 * Plugin URI: https://github.com/julien-jacob/wplingua
5 * Description: An all-in-one solution that makes your websites multilingual and translates them automatically, without word or page limits. The highlights: a free first language, an on-page visual editor for editing translations, a customizable language switcher, search engine optimization (SEO), self-hosted data and more!
6 * Author: wpLingua Team
7 * Author URI: https://wplingua.com/
8 * Text Domain: wplingua
9 * Domain Path: /languages/
10 * Version: 1.0.3
11 * Requires PHP: 7.4
12 * License: GPL v2 or later
13 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
14 */
15
16
17 // If this file is called directly, abort.
18 if ( ! defined( 'WPINC' ) ) {
19 die;
20 }
21
22
23 // Define wpLingua constants
24 define( 'WPLNG_API_URL', 'https://api.wplingua.com' );
25 define( 'WPLNG_API_VERSION', '1.0' );
26 define( 'WPLNG_API_SSLVERIFY', true );
27 define( 'WPLNG_PLUGIN_VERSION', '1.0.3' );
28 define( 'WPLNG_PLUGIN_PATH', dirname( __FILE__ ) );
29 define( 'WPLNG_MAX_TRANSLATIONS', 256 );
30 define( 'WPLNG_MAX_FILE_SIZE', 1000000 );
31 define( 'WPLNG_LOG_JSON_DEBUG', false );
32
33
34 // Load plugin text domain
35 load_plugin_textdomain(
36 'wplingua',
37 false,
38 basename( dirname( __FILE__ ) ) . '/languages'
39 );
40
41
42 // Load all needed PHP files
43 require_once WPLNG_PLUGIN_PATH . '/loader.php';
44
45
46 /**
47 * Register all wpLingua Hook
48 *
49 * @return void
50 */
51 function wplng_start() {
52
53 if ( isset( $_SERVER['REQUEST_URI'] ) ) {
54
55 $request_uri = sanitize_url( $_SERVER['REQUEST_URI'] );
56
57 // Check if the referer is clean
58 if ( strtolower( esc_url_raw( $request_uri ) ) !== strtolower( $request_uri ) ) {
59 return;
60 }
61
62 global $wplng_request_uri;
63 $wplng_request_uri = $request_uri;
64
65 }
66
67 // Register plugin settings
68 add_action( 'admin_init', 'wplng_register_settings' );
69
70 // Add settings link in plugin list
71 add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'wplng_settings_link' );
72
73 // Print head script (JSON with all languages informations)
74 add_action( 'toplevel_page_wplingua-settings', 'wplng_inline_script_languages' );
75
76 if ( empty( wplng_get_api_data() ) ) {
77
78 // Add Register option page in back office menu
79 add_action( 'admin_menu', 'wplng_create_menu_register' );
80
81 // Enqueue CSS and JS files for register option pages
82 add_action( 'admin_enqueue_scripts', 'wplng_option_page_register_assets' );
83
84 } else {
85
86 /**
87 * Back office
88 */
89
90 // Add menu in back office
91 add_action( 'admin_menu', 'wplng_create_menu' );
92
93 // Add admin Bar menu
94 add_action( 'admin_bar_menu', 'wplng_admin_bar_menu', 81 );
95
96 // Enqueue CSS and JS files for option pages
97 add_action( 'admin_enqueue_scripts', 'wplng_option_page_settings_assets' );
98 add_action( 'admin_enqueue_scripts', 'wplng_option_page_exclusions_assets' );
99 add_action( 'admin_enqueue_scripts', 'wplng_option_page_switcher_assets' );
100
101 // Update flags URL
102 add_action( 'update_option_wplng_flags_style', 'wplng_options_switcher_update_flags_style', 10, 2 );
103
104 // Reset API data on API key changing
105 add_action( 'update_option_wplng_api_key', 'wplng_on_update_option_wplng_api_key', 10, 2 );
106
107 /**
108 * wplng_translation : CPT, taxo, meta
109 */
110
111 // Register wplng_translation CPT
112 add_action( 'init', 'wplng_register_post_type_translation' );
113
114 // Add metabox for wplng_translation
115 add_action( 'add_meta_boxes_wplng_translation', 'wplng_translation_add_meta_box' );
116
117 // Save metabox on posts saving
118 add_action( 'save_post_wplng_translation', 'wplng_translation_save_meta_boxes_data', 10, 2 );
119
120 // Clear translation cache on trash / untrash
121 add_action( 'trashed_post', 'wplng_clear_translations_cache_trash_untrash' );
122 add_action( 'untrash_post', 'wplng_clear_translations_cache_trash_untrash' );
123 add_action( 'delete_post', 'wplng_clear_translations_cache_trash_untrash' );
124
125 // Enqueue Script for wplng_translation admin
126 add_action( 'admin_print_scripts-post-new.php', 'wplng_translation_assets' );
127 add_action( 'admin_print_scripts-post.php', 'wplng_translation_assets' );
128
129 // Remove Quick edit from translations list
130 add_filter( 'post_row_actions', 'wplng_translation_remove_quick_edit', 10, 2 );
131
132 // Ajax function for regenerate translation on edit page
133 add_action( 'wp_ajax_wplng_ajax_translation', 'wplng_ajax_generate_translation' );
134
135 // Display 100 translation in admin area by default
136 add_filter( 'get_user_option_edit_wplng_translation_per_page', 'wplng_translation_per_page' );
137
138 /**
139 * Front
140 */
141
142 // Enqueue CSS and JS files
143 add_action( 'wp_enqueue_scripts', 'wplng_register_assets' );
144
145 // Add languages switcher before </body>
146 add_action( 'wp_footer', 'wplng_switcher_wp_footer' );
147
148 // Set alternate links with hreflang parametters
149 add_action( 'wp_head', 'wplng_link_alternate_hreflang' );
150
151 /**
152 * OB and REQUEST_URI
153 */
154
155 // Manage URL with REQUEST_URI and start OB
156 add_action( 'init', 'wplng_ob_start', 1 );
157
158 /**
159 * Features
160 */
161
162 // Search from translated languages
163 if ( ! empty( get_option( 'wplng_translate_search' ) )
164 && wplng_api_feature_is_allow( 'search' )
165 ) {
166 add_action( 'parse_query', 'wplng_translate_search_query' );
167 } else {
168 add_filter( 'wplng_url_is_translatable', 'wplng_exclude_search', 20 );
169 }
170
171 // Woocommerce
172 if ( empty( get_option( 'wplng_translate_woocommerce' ) ) ) {
173 add_filter( 'wplng_url_exclude_regex', 'wplng_exclude_woocommerce_url', 20 );
174 }
175
176 /**
177 * Shortcode
178 */
179 add_shortcode( 'wplng_switcher', 'wplng_shortcode_switcher' );
180 add_shortcode( 'wplng_notranslate', 'wplng_shortcode_notranslate' );
181
182 }
183
184 }
185 wplng_start();
186