WordPress.org

Make WordPress Core

Ticket #44758: 44758.diff

File 44758.diff, 6.9 KB (added by TimothyBlynJacobs, 2 years ago)
  • src/wp-includes/rest-api/class-wp-rest-server.php

    diff --git a/src/wp-includes/rest-api/class-wp-rest-server.php b/src/wp-includes/rest-api/class-wp-rest-server.php
    index 0e71ef966e..7cec63eb81 100644
    a b class WP_REST_Server { 
    325325
    326326                $result = $this->check_authentication();
    327327
     328                $restore_locale = false;
     329
     330                if ( isset( $_GET['_locale'] ) && 'user' === $_GET['_locale'] && is_user_logged_in() ) {
     331                        $restore_locale = switch_to_locale( get_user_locale() );
     332                }
     333
    328334                if ( ! is_wp_error( $result ) ) {
    329335                        $result = $this->dispatch( $request );
    330336                }
    class WP_REST_Server { 
    417423                        } else {
    418424                                echo $result;
    419425                        }
     426
     427                        if ( $restore_locale ) {
     428                                restore_previous_locale();
     429                        }
    420430                }
    421431                return null;
    422432        }
  • tests/phpunit/data/languages/de_DE.po

    diff --git a/tests/phpunit/data/languages/de_DE.mo b/tests/phpunit/data/languages/de_DE.mo
    index b65a14e19c..4f5963c989 100644
    Binary files a/tests/phpunit/data/languages/de_DE.mo and b/tests/phpunit/data/languages/de_DE.mo differ
    diff --git a/tests/phpunit/data/languages/de_DE.po b/tests/phpunit/data/languages/de_DE.po
    index 4d66b76c10..b521e9b765 100644
    a b  
    22# This file is distributed under the same license as the 4.9.x package.
    33msgid ""
    44msgstr ""
    5 "PO-Revision-Date: 2018-08-13 19:19+0300\n"
     5"PO-Revision-Date: 2018-09-05 00:19-0400\n"
    66"MIME-Version: 1.0\n"
    77"Content-Type: text/plain; charset=UTF-8\n"
    88"Content-Transfer-Encoding: 8bit\n"
    msgstr "Jetzt %s aktualisieren" 
    4848#: wp-includes/user.php:3445
    4949msgid "[%1$s] Confirm Action: %2$s"
    5050msgstr "[%1$s] Aktion bestätigen: %2$s"
     51
     52#: wp-includes/post.php:1444
     53msgctxt "post type general name"
     54msgid "Posts"
     55msgstr "Beiträge"
  • tests/phpunit/data/languages/es_ES.po

    diff --git a/tests/phpunit/data/languages/es_ES.mo b/tests/phpunit/data/languages/es_ES.mo
    index d4c5767eaf..c091e232ca 100644
    Binary files a/tests/phpunit/data/languages/es_ES.mo and b/tests/phpunit/data/languages/es_ES.mo differ
    diff --git a/tests/phpunit/data/languages/es_ES.po b/tests/phpunit/data/languages/es_ES.po
    index 6e03a32de2..89ce5155dc 100644
    a b  
    22# This file is distributed under the same license as the Development (4.9.x) package.
    33msgid ""
    44msgstr ""
    5 "PO-Revision-Date: 2018-08-13 19:19+0300\n"
     5"PO-Revision-Date: 2018-09-04 23:52-0400\n"
    66"MIME-Version: 1.0\n"
    77"Content-Type: text/plain; charset=UTF-8\n"
    88"Content-Transfer-Encoding: 8bit\n"
    msgstr "(Actualmente fijado en: %s)" 
    4444#: wp-includes/user.php:3445
    4545msgid "[%1$s] Confirm Action: %2$s"
    4646msgstr "[%1$s] Confirma la acción: %2$s"
     47
     48#: wp-includes/post.php:1444
     49msgctxt "post type general name"
     50msgid "Posts"
     51msgstr "Entradas"
  • tests/phpunit/tests/rest-api/rest-server.php

    diff --git a/tests/phpunit/tests/rest-api/rest-server.php b/tests/phpunit/tests/rest-api/rest-server.php
    index 9b6f0f50a1..9b2a77699e 100644
    a b class Tests_REST_Server extends WP_Test_REST_TestCase { 
    11771177                );
    11781178        }
    11791179
     1180        public function test_locale_user() {
     1181
     1182                $locale = get_locale();
     1183
     1184                $user = self::factory()->user->create( array(
     1185                        'locale' => 'es_ES',
     1186                        'role'   => 'administrator',
     1187                ) );
     1188                wp_set_current_user( $user );
     1189
     1190                $_GET['_locale']      = 'user';
     1191                $_REQUEST['_wpnonce'] = wp_create_nonce( 'wp_rest' );
     1192
     1193                rest_get_server()->serve_request( '/wp/v2/types/post' );
     1194                $json = rest_get_server()->sent_body;
     1195
     1196                $decoded = json_decode( $json, true );
     1197
     1198                $this->assertInternalType( 'array', $decoded );
     1199                $this->assertArrayHasKey( 'name', $decoded );
     1200                $this->assertEquals( 'Entradas', $decoded['name'] );
     1201                $this->assertEquals( $locale, get_locale() );
     1202
     1203                restore_previous_locale();
     1204        }
     1205
     1206        public function test_locale_user_none_set() {
     1207
     1208                $locale = get_locale();
     1209
     1210                $user = self::factory()->user->create( array(
     1211                        'role' => 'administrator',
     1212                ) );
     1213                wp_set_current_user( $user );
     1214
     1215                $_GET['_locale']      = 'user';
     1216                $_REQUEST['_wpnonce'] = wp_create_nonce( 'wp_rest' );
     1217
     1218                rest_get_server()->serve_request( '/wp/v2/types/post' );
     1219                $json = rest_get_server()->sent_body;
     1220
     1221                $decoded = json_decode( $json, true );
     1222
     1223                $this->assertInternalType( 'array', $decoded );
     1224                $this->assertArrayHasKey( 'name', $decoded );
     1225                $this->assertEquals( 'Posts', $decoded['name'] );
     1226                $this->assertEquals( $locale, get_locale() );
     1227
     1228                restore_previous_locale();
     1229        }
     1230
     1231        public function test_locale_user_logged_out() {
     1232
     1233                $_GET['_locale']      = 'user';
     1234                $_REQUEST['_wpnonce'] = wp_create_nonce( 'wp_rest' );
     1235
     1236                rest_get_server()->serve_request( '/wp/v2/types/post' );
     1237                $json = rest_get_server()->sent_body;
     1238
     1239                $decoded = json_decode( $json, true );
     1240
     1241                $this->assertInternalType( 'array', $decoded );
     1242                $this->assertArrayHasKey( 'name', $decoded );
     1243                $this->assertEquals( 'Posts', $decoded['name'] );
     1244
     1245                restore_previous_locale();
     1246        }
     1247
     1248        public function test_locale_site() {
     1249
     1250                $locale = get_locale();
     1251
     1252                $user = self::factory()->user->create( array(
     1253                        'role' => 'administrator',
     1254                ) );
     1255                wp_set_current_user( $user );
     1256
     1257                $_GET['_locale']      = 'site';
     1258                $_REQUEST['_wpnonce'] = wp_create_nonce( 'wp_rest' );
     1259
     1260                rest_get_server()->serve_request( '/wp/v2/types/post' );
     1261                $json = rest_get_server()->sent_body;
     1262
     1263                $decoded = json_decode( $json, true );
     1264
     1265                $this->assertInternalType( 'array', $decoded );
     1266                $this->assertArrayHasKey( 'name', $decoded );
     1267                $this->assertEquals( 'Posts', $decoded['name'] );
     1268                $this->assertEquals( $locale, get_locale() );
     1269
     1270                restore_previous_locale();
     1271        }
     1272
     1273        public function test_locale_site_logged_out() {
     1274
     1275                $_GET['_locale']      = 'site';
     1276                $_REQUEST['_wpnonce'] = wp_create_nonce( 'wp_rest' );
     1277
     1278                rest_get_server()->serve_request( '/wp/v2/types/post' );
     1279                $json = rest_get_server()->sent_body;
     1280
     1281                $decoded = json_decode( $json, true );
     1282
     1283                $this->assertInternalType( 'array', $decoded );
     1284                $this->assertArrayHasKey( 'name', $decoded );
     1285                $this->assertEquals( 'Posts', $decoded['name'] );
     1286
     1287                restore_previous_locale();
     1288        }
     1289
     1290        public function test_locale_site_already_switched_retains_switch() {
     1291
     1292                switch_to_locale( 'de_DE' );
     1293
     1294                $user = self::factory()->user->create( array(
     1295                        'locale' => 'es_ES',
     1296                        'role'   => 'administrator',
     1297                ) );
     1298                wp_set_current_user( $user );
     1299
     1300                $_GET['_locale']      = 'site';
     1301                $_REQUEST['_wpnonce'] = wp_create_nonce( 'wp_rest' );
     1302
     1303                rest_get_server()->serve_request( '/wp/v2/types/post' );
     1304                $json = rest_get_server()->sent_body;
     1305
     1306                $decoded = json_decode( $json, true );
     1307
     1308                $this->assertInternalType( 'array', $decoded );
     1309                $this->assertArrayHasKey( 'name', $decoded );
     1310                $this->assertEquals( 'Beiträge', $decoded['name'] );
     1311                $this->assertEquals( 'de_DE', get_locale() );
     1312
     1313                restore_previous_locale();
     1314        }
     1315
    11801316        /**
    11811317         * Helper to setup a users and auth cookie global for the
    11821318         * rest_send_refreshed_nonce related tests.