mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
Props realloc. See #35284. git-svn-id: https://develop.svn.wordpress.org/trunk@36710 602fd350-edb4-49c9-b593-d223f7449a82
140 lines
5.1 KiB
PHP
140 lines
5.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group l10n
|
|
* @group i18n
|
|
*/
|
|
class Tests_L10n extends WP_UnitTestCase {
|
|
|
|
function test_load_unload_textdomain() {
|
|
$this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
|
|
$this->assertFalse( unload_textdomain( 'wp-tests-domain' ) );
|
|
|
|
$file = DIR_TESTDATA . '/pomo/simple.mo';
|
|
$this->assertTrue( load_textdomain( 'wp-tests-domain', $file ) );
|
|
$this->assertTrue( is_textdomain_loaded( 'wp-tests-domain' ) );
|
|
$this->assertTrue( unload_textdomain( 'wp-tests-domain' ) );
|
|
$this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 35073
|
|
*/
|
|
function test_before_last_bar() {
|
|
$this->assertEquals( 'no-bar-at-all', before_last_bar( 'no-bar-at-all' ) );
|
|
$this->assertEquals( 'before-last-bar', before_last_bar( 'before-last-bar|after-bar' ) );
|
|
$this->assertEquals( 'first-before-bar|second-before-bar', before_last_bar( 'first-before-bar|second-before-bar|after-last-bar' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 21319
|
|
*/
|
|
function test_is_textdomain_loaded_for_no_translations() {
|
|
$this->assertFalse( load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/non-existent-file' ) );
|
|
$this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
|
|
$this->assertInstanceOf( 'NOOP_Translations', get_translations_for_domain( 'wp-tests-domain' ) );
|
|
// Ensure that we don't confuse NOOP_Translations to be a loaded text domain.
|
|
$this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
|
|
$this->assertFalse( unload_textdomain( 'wp-tests-domain' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 21319
|
|
*/
|
|
function test_is_textdomain_is_not_loaded_after_gettext_call_with_no_translations() {
|
|
$this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
|
|
__( 'just some string', 'wp-tests-domain' );
|
|
$this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 35284
|
|
*/
|
|
function test_wp_get_installed_translations_for_core() {
|
|
$installed_translations = wp_get_installed_translations( 'core' );
|
|
$this->assertInternalType( 'array', $installed_translations );
|
|
$textdomains_expected = array( 'admin', 'admin-network', 'continents-cities', 'default' );
|
|
$this->assertEqualSets( $textdomains_expected, array_keys( $installed_translations ) );
|
|
|
|
$this->assertNotEmpty( $installed_translations['default']['en_GB'] );
|
|
$data_en_GB = $installed_translations['default']['en_GB'];
|
|
$this->assertEquals( '2016-01-14 21:14:29+0000', $data_en_GB['PO-Revision-Date'] );
|
|
$this->assertEquals( 'Development (4.4.x)', $data_en_GB['Project-Id-Version'] );
|
|
$this->assertEquals( 'GlotPress/1.0-alpha-1100', $data_en_GB['X-Generator'] );
|
|
|
|
$this->assertNotEmpty( $installed_translations['admin']['es_ES'] );
|
|
$data_es_ES = $installed_translations['admin']['es_ES'];
|
|
$this->assertEquals( '2015-12-22 20:26:46+0000', $data_es_ES['PO-Revision-Date'] );
|
|
$this->assertEquals( 'Administration', $data_es_ES['Project-Id-Version'] );
|
|
$this->assertEquals( 'GlotPress/1.0-alpha-1100', $data_es_ES['X-Generator'] );
|
|
}
|
|
|
|
/**
|
|
* @ticket 35294
|
|
*/
|
|
function test_wp_dropdown_languages() {
|
|
$args = array(
|
|
'id' => 'foo',
|
|
'name' => 'bar',
|
|
'languages' => array( 'de_DE' ),
|
|
'translations' => $this->wp_dropdown_languages_filter(),
|
|
'selected' => 'de_DE',
|
|
'echo' => false,
|
|
);
|
|
$actual = wp_dropdown_languages( $args );
|
|
|
|
$this->assertContains( 'id="foo"', $actual );
|
|
$this->assertContains( 'name="bar"', $actual );
|
|
$this->assertContains( '<option value="" lang="en" data-installed="1">English (United States)</option>', $actual );
|
|
$this->assertContains( '<option value="de_DE" lang="de" selected=\'selected\' data-installed="1">Deutsch</option>', $actual );
|
|
$this->assertContains( '<option value="it_IT" lang="it">Italiano</option>', $actual );
|
|
}
|
|
|
|
/**
|
|
* We don't want to call the API when testing.
|
|
*
|
|
* @return array
|
|
*/
|
|
function wp_dropdown_languages_filter() {
|
|
return array(
|
|
'de_DE' => array(
|
|
'language' => 'de_DE',
|
|
'native_name' => 'Deutsch',
|
|
'iso' => array( 'de' ),
|
|
),
|
|
'it_IT' => array(
|
|
'language' => 'it_IT',
|
|
'native_name' => 'Italiano',
|
|
'iso' => array( 'it', 'ita' ),
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @ticket 35284
|
|
*/
|
|
function test_wp_get_pomo_file_data() {
|
|
$file = DIR_TESTDATA . '/pomo/empty.po';
|
|
$array = wp_get_pomo_file_data( $file );
|
|
$this->assertArrayHasKey( 'POT-Creation-Date', $array );
|
|
$this->assertArrayHasKey( 'PO-Revision-Date', $array );
|
|
$this->assertArrayHasKey( 'Project-Id-Version', $array );
|
|
$this->assertArrayHasKey( 'X-Generator', $array );
|
|
|
|
$file = DIR_TESTDATA . '/pomo/mo.pot';
|
|
$array = wp_get_pomo_file_data( $file );
|
|
$this->assertNotEmpty( $array['POT-Creation-Date'] );
|
|
$this->assertNotEmpty( $array['PO-Revision-Date'] );
|
|
$this->assertNotEmpty( $array['Project-Id-Version'] );
|
|
$this->assertArrayHasKey( 'X-Generator', $array );
|
|
|
|
$file = DIR_TESTDATA . '/languages/es_ES.po';
|
|
$array = wp_get_pomo_file_data( $file );
|
|
$this->assertArrayHasKey( 'POT-Creation-Date', $array );
|
|
$this->assertNotEmpty( $array['PO-Revision-Date'] );
|
|
$this->assertNotEmpty( $array['Project-Id-Version'] );
|
|
$this->assertNotEmpty( $array['X-Generator'] );
|
|
}
|
|
|
|
}
|