Index: trunk/extensions/LocalisationUpdate/LocalisationUpdate.class.php |
— | — | @@ -450,21 +450,30 @@ |
451 | 451 | return 0; |
452 | 452 | } |
453 | 453 | |
454 | | - $new_messages = self::readFile( $langcode ); |
| 454 | + $new_messages = array(); |
455 | 455 | |
456 | | - foreach ( $changedStrings as $key => $value ) { |
457 | | - // If this message wasn't changed in English. |
458 | | - if ( !isset( $forbiddenKeys[$key] ) ) { |
| 456 | + //foreach ( $changedStrings as $key => $value ) { |
| 457 | + // HACK for r103763 CR: store all messages, even unchanged ones |
| 458 | + // TODO this file is a mess and needs to be rewritten |
| 459 | + foreach ( array_merge( array_keys( $base_messages, $compare_messages ) as $key ) { |
| 460 | + // Only update the translation if this message wasn't changed in English |
| 461 | + if ( !isset( $forbiddenKeys[$key] ) && isset( $base_messages[$key] ) ) { |
459 | 462 | $new_messages[$key] = $base_messages[$key]; |
460 | 463 | |
461 | | - // Output extra logmessages when needed. |
462 | | - if ( $verbose ) { |
463 | | - $oldmsg = isset( $compare_messages[$key] ) ? "'{$compare_messages[$key]}'" : 'not set'; |
464 | | - self::myLog( "Updated message {$key} from $oldmsg to '{$base_messages[$key]}'", $verbose ); |
| 464 | + if ( !isset( $compare_messages[$key] ) || $compare_messages[$key] !== $base_messages[$key] ) { |
| 465 | + // Output extra logmessages when needed. |
| 466 | + if ( $verbose ) { |
| 467 | + $oldmsg = isset( $compare_messages[$key] ) ? "'{$compare_messages[$key]}'" : 'not set'; |
| 468 | + self::myLog( "Updated message {$key} from $oldmsg to '{$base_messages[$key]}'", $verbose ); |
| 469 | + } |
| 470 | + |
| 471 | + // Update the counter. |
| 472 | + $updates++; |
465 | 473 | } |
466 | | - |
467 | | - // Update the counter. |
468 | | - $updates++; |
| 474 | + } else if ( isset( $forbiddenKeys[$key] ) && isset( $compare_messages[$key] ) ) { |
| 475 | + // The message was changed in English, but a previous translation still exists in the cache. |
| 476 | + // Use that previous translation rather than falling back to the .i18n.php file |
| 477 | + $new_messages[$key] = $compare_messages[$key]; |
469 | 478 | } |
470 | 479 | } |
471 | 480 | self::writeFile( $langcode, $new_messages ); |