/** * A simple set of functions to check our version 1.0 update service. * * @package WordPress * @since 2.3.0 */ /** * Check WordPress version against the newest version. * * The WordPress version, PHP version, and Locale is sent. Checks against the * WordPress server at api.wordpress.org server. Will only check if WordPress * isn't installing. * * @since 2.3.0 * @uses $wp_version Used to check against the newest WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @param bool $force_check Whether to bypass the transient cache and force a fresh update check. Defaults to false, true if $extra_stats is set. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_version_check( $extra_stats = array(), $force_check = false ) { if ( defined('WP_INSTALLING') ) return; global $wpdb, $wp_local_package; include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $php_version = phpversion(); $current = get_site_transient( 'update_core' ); $translations = wp_get_installed_translations( 'core' ); // Invalidate the transient when $wp_version changes if ( is_object( $current ) && $wp_version != $current->version_checked ) $current = false; if ( ! is_object($current) ) { $current = new stdClass; $current->updates = array(); $current->version_checked = $wp_version; } if ( ! empty( $extra_stats ) ) $force_check = true; // Wait 60 seconds between multiple version check requests $timeout = 60; $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( ! $force_check && $time_not_changed ) return false; $locale = get_locale(); /** * Filter the locale requested for WordPress core translations. * * @since 2.8.0 * * @param string $locale Current locale. */ $locale = apply_filters( 'core_version_check_locale', $locale ); // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_core', $current ); if ( method_exists( $wpdb, 'db_version' ) ) $mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version()); else $mysql_version = 'N/A'; if ( is_multisite() ) { $user_count = get_user_count(); $num_blogs = get_blog_count(); $wp_install = network_site_url(); $multisite_enabled = 1; } else { $user_count = count_users(); $user_count = $user_count['total_users']; $multisite_enabled = 0; $num_blogs = 1; $wp_install = home_url( '/' ); } $query = array( 'version' => $wp_version, 'php' => $php_version, 'locale' => $locale, 'mysql' => $mysql_version, 'local_package' => isset( $wp_local_package ) ? $wp_local_package : '', 'blogs' => $num_blogs, 'users' => $user_count, 'multisite_enabled' => $multisite_enabled, ); $post_body = array( 'translations' => json_encode( $translations ), ); if ( is_array( $extra_stats ) ) $post_body = array_merge( $post_body, $extra_stats ); $url = $http_url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' ); if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $options = array( 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ), 'headers' => array( 'wp_install' => $wp_install, 'wp_blog' => home_url( '/' ) ), 'body' => $post_body, ); $response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) return false; $body = trim( wp_remote_retrieve_body( $response ) ); $body = json_decode( $body, true ); if ( ! is_array( $body ) || ! isset( $body['offers'] ) ) return false; $offers = $body['offers']; foreach ( $offers as &$offer ) { foreach ( $offer as $offer_key => $value ) { if ( 'packages' == $offer_key ) $offer['packages'] = (object) array_intersect_key( array_map( 'esc_url', $offer['packages'] ), array_fill_keys( array( 'full', 'no_content', 'new_bundled', 'partial', 'rollback' ), '' ) ); elseif ( 'download' == $offer_key ) $offer['download'] = esc_url( $value ); else $offer[ $offer_key ] = esc_html( $value ); } $offer = (object) array_intersect_key( $offer, array_fill_keys( array( 'response', 'download', 'locale', 'packages', 'current', 'version', 'php_version', 'mysql_version', 'new_bundled', 'partial_version', 'notify_email', 'support_email' ), '' ) ); } $updates = new stdClass(); $updates->updates = $offers; $updates->last_checked = time(); $updates->version_checked = $wp_version; if ( isset( $body['translations'] ) ) $updates->translations = $body['translations']; set_site_transient( 'update_core', $updates ); if ( ! empty( $body['ttl'] ) ) { $ttl = (int) $body['ttl']; if ( $ttl && ( time() + $ttl < wp_next_scheduled( 'wp_version_check' ) ) ) { // Queue an event to re-run the update check in $ttl seconds. wp_schedule_single_event( time() + $ttl, 'wp_version_check' ); } } // Trigger a background updates check if running non-interactively, and we weren't called from the update handler. if ( defined( 'DOING_CRON' ) && DOING_CRON && ! doing_action( 'wp_maybe_auto_update' ) ) { do_action( 'wp_maybe_auto_update' ); } } /** * Check plugin versions against the latest versions hosted on WordPress.org. * * The WordPress version, PHP version, and Locale is sent along with a list of * all plugins installed. Checks against the WordPress server at * api.wordpress.org. Will only check if WordPress isn't installing. * * @since 2.3.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_plugins( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined('WP_INSTALLING') ) return false; // If running blog-side, bail unless we've not checked in the last 12 hours if ( !function_exists( 'get_plugins' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $plugins = get_plugins(); $translations = wp_get_installed_translations( 'plugins' ); $active = get_option( 'active_plugins', array() ); $current = get_site_transient( 'update_plugins' ); if ( ! is_object($current) ) $current = new stdClass; $new_option = new stdClass; $new_option->last_checked = time(); // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-plugins.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $plugin_changed = false; foreach ( $plugins as $file => $p ) { $new_option->checked[ $file ] = $p['Version']; if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) ) $plugin_changed = true; } if ( isset ( $current->response ) && is_array( $current->response ) ) { foreach ( $current->response as $plugin_file => $update_details ) { if ( ! isset($plugins[ $plugin_file ]) ) { $plugin_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $plugin_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_plugins', $current ); $to_send = compact( 'plugins', 'active' ); $locales = array( get_locale() ); /** * Filter the locales requested for plugin translations. * * @since 3.7.0 * * @param array $locales Plugin locale. Default is current locale of the site. */ $locales = apply_filters( 'plugins_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 plugins $timeout = 3 + (int) ( count( $plugins ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'plugins' => json_encode( $to_send ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), 'all' => json_encode( true ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); foreach ( $response['plugins'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); foreach ( $response['no_update'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); if ( is_array( $response ) ) { $new_option->response = $response['plugins']; $new_option->translations = $response['translations']; // TODO: Perhaps better to store no_update in a separate transient with an expiry? $new_option->no_update = $response['no_update']; } else { $new_option->response = array(); $new_option->translations = array(); $new_option->no_update = array(); } set_site_transient( 'update_plugins', $new_option ); } /** * Check theme versions against the latest versions hosted on WordPress.org. * * A list of all themes installed in sent to WP. Checks against the * WordPress server at api.wordpress.org. Will only check if WordPress isn't * installing. * * @since 2.7.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_themes( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined( 'WP_INSTALLING' ) ) return false; $installed_themes = wp_get_themes(); $translations = wp_get_installed_translations( 'themes' ); $last_update = get_site_transient( 'update_themes' ); if ( ! is_object($last_update) ) $last_update = new stdClass; $themes = $checked = $request = array(); // Put slug of current theme into request. $request['active'] = get_option( 'stylesheet' ); foreach ( $installed_themes as $theme ) { $checked[ $theme->get_stylesheet() ] = $theme->get('Version'); $themes[ $theme->get_stylesheet() ] = array( 'Name' => $theme->get('Name'), 'Title' => $theme->get('Name'), 'Version' => $theme->get('Version'), 'Author' => $theme->get('Author'), 'Author URI' => $theme->get('AuthorURI'), 'Template' => $theme->get_template(), 'Stylesheet' => $theme->get_stylesheet(), ); } // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-themes.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $theme_changed = false; foreach ( $checked as $slug => $v ) { if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) ) $theme_changed = true; } if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) { foreach ( $last_update->response as $slug => $update_details ) { if ( ! isset($checked[ $slug ]) ) { $theme_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $theme_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $last_update->last_checked = time(); set_site_transient( 'update_themes', $last_update ); $request['themes'] = $themes; $locales = array( get_locale() ); /** * Filter the locales requested for theme translations. * * @since 3.7.0 * * @param array $locales Theme locale. Default is current locale of the site. */ $locales = apply_filters( 'themes_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 themes $timeout = 3 + (int) ( count( $themes ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'themes' => json_encode( $request ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $new_update = new stdClass; $new_update->last_checked = time(); $new_update->checked = $checked; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); if ( is_array( $response ) ) { $new_update->response = $response['themes']; $new_update->translations = $response['translations']; } set_site_transient( 'update_themes', $new_update ); } /** * Performs WordPress automatic background updates. * * @since 3.7.0 */ function wp_maybe_auto_update() { include_once( ABSPATH . '/wp-admin/includes/admin.php' ); include_once( ABSPATH . '/wp-admin/includes/class-wp-upgrader.php' ); $upgrader = new WP_Automatic_Updater; $upgrader->run(); } /** * Retrieves a list of all language updates available. * * @since 3.7.0 */ function wp_get_translation_updates() { $updates = array(); $transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' ); foreach ( $transients as $transient => $type ) { $transient = get_site_transient( $transient ); if ( empty( $transient->translations ) ) continue; foreach ( $transient->translations as $translation ) { $updates[] = (object) $translation; } } return $updates; } /** * Collect counts and UI strings for available updates * * @since 3.3.0 * * @return array */ function wp_get_update_data() { $counts = array( 'plugins' => 0, 'themes' => 0, 'wordpress' => 0, 'translations' => 0 ); if ( $plugins = current_user_can( 'update_plugins' ) ) { $update_plugins = get_site_transient( 'update_plugins' ); if ( ! empty( $update_plugins->response ) ) $counts['plugins'] = count( $update_plugins->response ); } if ( $themes = current_user_can( 'update_themes' ) ) { $update_themes = get_site_transient( 'update_themes' ); if ( ! empty( $update_themes->response ) ) $counts['themes'] = count( $update_themes->response ); } if ( ( $core = current_user_can( 'update_core' ) ) && function_exists( 'get_core_updates' ) ) { $update_wordpress = get_core_updates( array('dismissed' => false) ); if ( ! empty( $update_wordpress ) && ! in_array( $update_wordpress[0]->response, array('development', 'latest') ) && current_user_can('update_core') ) $counts['wordpress'] = 1; } if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() ) $counts['translations'] = 1; $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations']; $titles = array(); if ( $counts['wordpress'] ) $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] ); if ( $counts['plugins'] ) $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] ); if ( $counts['themes'] ) $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] ); if ( $counts['translations'] ) $titles['translations'] = __( 'Translation Updates' ); $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : ''; $update_data = array( 'counts' => $counts, 'title' => $update_title ); /** * Filter the returned array of update data for plugins, themes, and WordPress core. * * @since 3.5.0 * * @param array $update_data { * Fetched update data. * * @type array $counts An array of counts for available plugin, theme, and WordPress updates. * @type string $update_title Titles of available updates. * } * @param array $titles An array of update counts and UI strings for available updates. */ return apply_filters( 'wp_get_update_data', $update_data, $titles ); } function _maybe_update_core() { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $current = get_site_transient( 'update_core' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) && isset( $current->version_checked ) && $current->version_checked == $wp_version ) return; wp_version_check(); } /** * Check the last time plugins were run before checking plugin versions. * * This might have been backported to WordPress 2.6.1 for performance reasons. * This is used for the wp-admin to check only so often instead of every page * load. * * @since 2.7.0 * @access private */ function _maybe_update_plugins() { $current = get_site_transient( 'update_plugins' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_plugins(); } /** * Check themes versions only after a duration of time. * * This is for performance reasons to make sure that on the theme version * checker is not run on every page load. * * @since 2.7.0 * @access private */ function _maybe_update_themes() { $current = get_site_transient( 'update_themes' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_themes(); } /** * Schedule core, theme, and plugin update checks. * * @since 3.1.0 */ function wp_schedule_update_checks() { if ( !wp_next_scheduled('wp_version_check') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_version_check'); if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins'); if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_themes'); if ( ( wp_next_scheduled( 'wp_maybe_auto_update' ) > ( time() + HOUR_IN_SECONDS ) ) && ! defined('WP_INSTALLING') ) wp_clear_scheduled_hook( 'wp_maybe_auto_update' ); } if ( ( ! is_main_site() && ! is_network_admin() ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) return; add_action( 'admin_init', '_maybe_update_core' ); add_action( 'wp_version_check', 'wp_version_check' ); add_action( 'upgrader_process_complete', 'wp_version_check', 10, 0 ); add_action( 'load-plugins.php', 'wp_update_plugins' ); add_action( 'load-update.php', 'wp_update_plugins' ); add_action( 'load-update-core.php', 'wp_update_plugins' ); add_action( 'admin_init', '_maybe_update_plugins' ); add_action( 'wp_update_plugins', 'wp_update_plugins' ); add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0 ); add_action( 'load-themes.php', 'wp_update_themes' ); add_action( 'load-update.php', 'wp_update_themes' ); add_action( 'load-update-core.php', 'wp_update_themes' ); add_action( 'admin_init', '_maybe_update_themes' ); add_action( 'wp_update_themes', 'wp_update_themes' ); add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0 ); add_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' ); add_action('init', 'wp_schedule_update_checks'); Por qué los ucranianos se marchan al extranjero?SesiónDeControl.com
Arrow

La Ucrania emigrante


0
Global Voices

Este artículo se publicó originalmente en Global Voices, un portal que busca agrupar, conservar y amplificar la conversación global en línea arrojando luz a los lugares y gente que otros medios de comunicación a menudo ignoran. Trabajamos para desarrollar herramientas, instituciones y relaciones que ayuden a todas las voces, en todas partes, a ser oídas.


Escrito el 31 de marzo de 2013 a las 15:11 | Clasificado en Europa

La emigración está en la sangre de los ucranianos. Un importante porcentaje de ellos son emigrantes y el tema es una conversación recurrente entre los ciudadanos.

Un mapa de la distribución geográfica de los trabajadores migrantes ucranianos por regiones de origen (Fuente: Organización Internacional para las Migraciones)
Un mapa de la distribución geográfica de los trabajadores migrantes ucranianos por regiones de origen (Fuente: Organización Internacional para las Migraciones)

Seis millones y medio de ucranianos, o el 14,4 por ciento de la población, son emigrantes. Son da tos de ‘Migración en Ucrania: datos y cifras’, un informe publicado por la Organización Internacional para las Migraciones (OIM) en septiembre de 2011.

Entre los destinos más populares para emigrantes están Rusia, la República Checa, Hungría, Polonia, Italia, Portugal y España. La población de Ucrania de aproximadamente 45,5 millones de personas “se está reduciendo en 330.000 cada año”, dice el informe de la OIM, y la emigración, sin duda, contribuye a esta tendencia demográfica a la baja.

De hecho, el tema de dejar Ucrania temporalmente o para siempre aparece regularmente en las conversaciones en línea de los ucranianos.

Por ejemplo, uno puede observar el post en Facebook del parlamentario Mykola Kniazhytsky sobre el Informe de Competitividad Global 2012-2013 del Foro Económico Mundial, en el que Ucrania figura en el puesto 73 de los 144 países clasificados, y ver este comentario, del usuario Mykhaylo Kalinichenko:

Es inútil esperar crecimiento económico en Ucrania. Todo el mundo está tratando de escapar de aquí lo antes posible. (…)

O se puede ser leer este post de la usuaria de LJ metalina_888, en el que habla sobre la crisis de la industria metalúrgica de Ucrania, culpando a la falta de voluntad de los propietarios de las plantas metalúrgicas para invertir en modernización, y luego tropezar con este comentario del usuario de LJ nik968, que ofrece la siguiente explicación:

Los oligarcas son presa del pánico y no saben qué hacer. La mayoría de ellos se está preparando para escapar, porque sencillamente tienen demasiado miedo de poner un poco de resistencia (al régimen actual).

La cuestión de trasladarse aparece incluso en las discusiones sobre los problemas locales tales como, por ejemplo, la construcción sin terminar del metro en Donetsk, que continúa desde principios de los 80, con pocos resultados salvo el pozo totalmente inundado donde la estación de Proletarskaya debería estar. Yevgeniy Ikhelzon escribía esto en Facebook:

No sé si alguna vez aparecerá el metro en Donetsk y si existe necesidad de ello, pero, con todo el dinero asignado (para su construcción a lo largo de los años), podrían haber construido una ciudad completamente nueva, en algún lugar cerca de un mar cálido. Así cualquier residente de Donetsk podría salir y no ver a estos (los feos rostros de los burócratas locales).

Durante años, cientos de miles de ucranianos han sido una fuente de mano de obra barata en el extranjero, alimentando a sus familias en casa — y, hasta cierto punto, alimentando la economía de Ucrania — con sus transferencias de dinero.

Los trabajadores emigrantes, conocidos como ‘zarobitchany’ en ucraniano, constituyen la mayor parte de la comunidad de expatriados de Ucrania. A continuación se presentan algunas observaciones relevantes del informe de la OIM:

  • La tasa de desempleo aumentó del 6,8% en 2006 al 8,1% en 2010. En 2010, 545.000 ciudadanos ucranianos estaban registrados como desempleados. Si el empleo en el extranjero fuera imposible, la tasa de desempleo en Ucrania de 2008 se calcula que habría sido 1,5 veces superior.
  • El salario promedio de los migrantes en el exterior era de 820 USD en 2008, casi 3 veces mayor que el salario medio en Ucrania (281 dólares).
  • Modelos hipotéticos calculan que la economía de Ucrania habría perdido alrededor del 7% de su potencial sin los efectos estimulantes de transferencias de los emigrantes (…).
  • La migración laboral de Ucrania, al menos en cierta medida, puede ser caracterizada como ‘desperdicio cerebral’ (…). Sólo algunos de los emigrantes logran encontrar trabajo en el extranjero correspondiente a sus niveles de cualificación (…).
  • Los tipos predominantes de actividad económica entre los trabajadores emigrantes ucranianos son la construcción, más frecuente entre los hombres, y el cuidado doméstico, más común entre las mujeres.

Durante años, también, los compatriotas de la élite de los zarobitchany han mantenido sus fortunas en paraísos fiscales en el extranjero (razón por la cual Chipre ha sido el mayor inversor extranjero en Ucrania, por lo menos antes de que empezaran los problemas actuales) o han “invertido” en costosos bienes inmuebles en el extranjero (por ejemplo, en 2008, se informó que Olena Franchuk, hija del expresidente Leonid Kuchma y esposa del empresario Victor Pinchuk, había adquirido una casa en Londres por £80 millones, y en 2011, la persona más rica de Ucrania, Rinat Akhmetov, pagó 136,4 millones de libras por un apartamento en Londres).

Recientemente, sin embargo, un nuevo tipo de éxodo parece haber comenzado, con varios políticos de la oposición y empresarios ucranianos trasladándose a Europa — y a algunos incluso se les concedió asilo político. El parlamentario Anatoliy Hrytsenko mencionaba los casos más prominentes en su página de Facebook:

(Al ex ministro de defensa interino Valeriy Ivaschenko se le ha concedido asilo político) en Dinamarca. (El ex-ministro de economía Bohdan Danylyshyn y el exparlamentario Andriy Shkil se encuentran en la República Checa, (el ex jefe del Comité de Reservas del Estado Mykhailo Pozhyvanov) está en Austria, (el empresario Denis Oleinikov) esta en Croacia…

(El multimillonario Ihor Kolomoysky) está en Suiza, (el empresario y ex-primer vicepresidente del gobierno Valery Khoroshkovsky) en Francia, (el empresario Vitaly Hayduk) ha trasladado su negocio a Sudáfrica, (el empresario Yevhen Chernyak) – a Rusia, (el empresario Eduard Prutnik) ha vendido todo y está en el extranjero, también…

(…)

Docenas, si no cientos, de nombres de personas menos conocidas podrían añadirse a esta lista; sobre todo, los empresarios que, (tras la elección de Victor Yanukovych como presidente de Ucrania), se marcharon y/o trasladaron sus negocios al extranjero. Hay gente así en todas las regiones de Ucrania, sin excepción alguna.

(…)

Es difícil detener a estas personas, es difícil encontrar argumentos… No todo el mundo está dispuesto a ser paciente y sufrir, la gente quiere vivir en paz y seguridad hoy, no mañana. (…)

El mensaje de Hrytsenko ha generado una discusión de casi 130 comentarios, y los dos traducidos a continuación ilustran lo doloroso que son los temas planteados para los ciudadanos de a pie.

La usuaria Natalia Levchenko escribía:

(…) ¿Por qué tengo que huir de mi propio país? Pero ellos no nos dejan vivir. ¿Cuál es el futuro de mis hijos y nietos? Dios no lo quiera, que se encuentren en el lugar equivocado en el momento equivocado. ¿Es posible esperar justicia? (…) No soy dueña de un negocio, no tengo cuentas bancarias o bienes inmuebles, no tengo nada con lo que ir al extranjero, quiero vivir en paz (…) en casa.

El usuario Alexander Shapovalov escribía:

(Las personas que carecen de imaginación) comentan más o menos lo mismo: ¡estos son los ladrones, los oligarcas! Estoy de acuerdo. (…) Pero hay muchos que no fueron mencionados por (Anatoly Hrytsenko) — gente normal que está cansada ​​de vivir en un país de (total anarquía y corrupción), y se están yendo y llevando sus cerebros y negocios con ellos (…).

En enero, el periodista Vitaly Haidukevych encuestó a su audiencia de Facebook de casi 2500 usuarios sobre sus posturas hacia la emigración:

Amigos, ¿a quién de ustedes le gustaría salir de Ucrania porque (la situación es desesperada?) (…) Vamos a abordar el tema de “tengo que irme”. La decepción y las ganas de hacer las maletas…

Recibió una variedad de respuestas, y a continuación hay dos comentarios, de los cerca de 300 que siguieron a la pregunta de Haidukevych.

Vitaliy Yermak:

Hay que marcharse en silencio, o de lo contrario pronto introducirán un impuesto al salir.

Andrij Romanov:

La gente se escapaba, se escapan y se escaparán. Muchos han abandonado (la Ucrania Occidental) hacia Italia, Portugal y la República Checa, y no han regresado, y más se marcharán. Es sólo que antes solía irse (la mayoría la gente de) las provincias, y ahora también se van de Kiev.

¡La gente lleva a sus hijos a estudiar a Polonia y algunos incluso más lejos! La situación es difícil ahora en la UE, pero sigue siendo tolerable, mientras que en la Ucrania de Yanukovich ¡es 100 veces más difícil! Yo me vine a la República Checa hace cinco días, estoy aquí sin trabajo, pero no voy a volver a casa.

Y estas son algunas de las conclusiones de Haidukevych:

(…) Hay ganas de hacer las maletas. (…) La gente joven, prometedora tiene ganas. (…) Puesto que son jóvenes, se marchan no en aras de ganancias inmediatas (…), sino para echar raíces para el futuro. (…)

Supongo que estas personas se preguntaron si era posible cambiar el estado de cosas en el país — y la respuesta fue “no”. (…) Algunos se marchan por exactamente la misma razón por la que otros son reacios a unirse a las protestas (anti-régimen) — se preocupan por sí mismos, sus familias y su futuro. (…)

“Para qué apresurarse, tienes hijos, piensa en ellos” — esto es lo que piensan las personas que se han quedado. Y los que se van (…) no quieren esperar a que las autoridades fiscales vengan a quitarles el último par de calzoncillos.

Fuente¿Por qué los ucranianos se marchan al extranjero?
Autora: Veronica Khokhlova | Traductora: Sonia Ordóñez

Comparte tu punto de vista

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>