| 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 ); |