Skip to content

Commit

Permalink
Fixes GlotPress#579: Prevent importing translations with warning twice
Browse files Browse the repository at this point in the history
  • Loading branch information
akirk committed Oct 18, 2016
1 parent 559842b commit 9fa852b
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 5 deletions.
10 changes: 5 additions & 5 deletions gp-includes/things/translation-set.php
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,11 @@ public function import( $translations, $desired_status = 'current' ) {
*/
$entry->status = apply_filters( 'gp_translation_set_import_status', $is_fuzzy ? 'fuzzy' : $desired_status );

$entry->warnings = maybe_unserialize( GP::$translation_warnings->check( $entry->singular, $entry->plural, $entry->translations, $locale ) );
if ( ! empty( $entry->warnings ) ) {
$entry->status = 'waiting';
}

// Lazy load other entries.
if ( ! isset( $existing_translations[ $entry->status ] ) ) {
$existing_translations_list = GP::$translation->for_translation( $this->project, $this, 'no-limit', array( 'status' => $entry->status, 'translated' => 'yes' ) );
Expand Down Expand Up @@ -304,11 +309,6 @@ public function import( $translations, $desired_status = 'current' ) {
}

$entry->status = $is_fuzzy ? 'fuzzy' : $desired_status;

$entry->warnings = maybe_unserialize( GP::$translation_warnings->check( $entry->singular, $entry->plural, $entry->translations, $locale ) );
if ( ! empty( $entry->warnings ) ) {
$entry->status = 'waiting';
}
$entry->translation_set_id = $this->id;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,23 @@ function test_import_should_generate_warnings() {
$this->assertArrayHasKey( 'placeholders', $translations[0]->warnings[0] );
}

function test_import_should_not_import_translations_with_warnings_twice() {
$set = $this->factory->translation_set->create_with_project_and_locale();
$original = $this->factory->original->create( array( 'project_id' => $set->project->id, 'status' => '+active', 'singular' => 'A string with %s' ) );

$translations_for_import = new Translations;
$translations_for_import->add_entry( array( 'singular' => 'A string with %s', 'translations' => array( 'No Placeholder' ) ) );
$translations_added = $set->import( $translations_for_import );
$this->assertEquals( $translations_added, 1 );

$translations = GP::$translation->all();
$this->assertArrayHasKey( 'placeholders', $translations[0]->warnings[0] );

// import twice
$translations_added = $set->import( $translations_for_import );
$this->assertEquals( $translations_added, 0 );
}

function test_import_should_not_import_existing_same_translation() {
$set = $this->factory->translation_set->create_with_project_and_locale();
$original = $this->factory->original->create( array( 'project_id' => $set->project->id, 'status' => '+active', 'singular' => 'A string' ) );
Expand Down

0 comments on commit 9fa852b

Please sign in to comment.