Extract TextSecure strings for i18n.

1) Change all instances which use concatenation to build strings
with variables in them to use string formatting instead.

2) Extract all string literals from layouts and menus into strings.xml

3) Extract all string literals from code into strings.xml
This commit is contained in:
Moxie Marlinspike
2012-09-07 20:03:23 -07:00
parent 45c058b46d
commit 4c3b7cbe08
89 changed files with 1228 additions and 1205 deletions

View File

@@ -149,8 +149,12 @@ public class ConversationItem extends LinearLayout {
}
private void setMmsNotificationAttributes(MmsMessageRecord messageRecord) {
String messageSize = "Message size: " + messageRecord.getMessageSize() + " KB";
String expires = "Expires: " + DateUtils.getRelativeTimeSpanString(getContext(), messageRecord.getExpiration(), false);
String messageSize = String.format(getContext().getString(R.string.message_size_d_kb),
messageRecord.getMessageSize());
String expires = String.format(getContext().getString(R.string.expires_s),
DateUtils.getRelativeTimeSpanString(getContext(),
messageRecord.getExpiration(),
false));
dateText.setText(messageSize + "\n" + expires);
@@ -158,7 +162,7 @@ public class ConversationItem extends LinearLayout {
mmsDownloadButton.setVisibility(View.VISIBLE);
mmsDownloadingLabel.setVisibility(View.GONE);
} else {
mmsDownloadingLabel.setText(MmsDatabase.Types.getLabelForStatus(messageRecord.getStatus()));
mmsDownloadingLabel.setText(MmsDatabase.Types.getLabelForStatus(context, messageRecord.getStatus()));
mmsDownloadButton.setVisibility(View.GONE);
mmsDownloadingLabel.setVisibility(View.VISIBLE);
}
@@ -207,10 +211,10 @@ public class ConversationItem extends LinearLayout {
private void setBodyText(MessageRecord messageRecord) {
String body = messageRecord.getBody();
if (messageRecord.isKeyExchange() && messageRecord.isOutgoing()) body = "\nKey exchange message";
else if (messageRecord.isProcessedKeyExchange() && !messageRecord.isOutgoing()) body = "\nReceived and processed key exchange message.";
else if (messageRecord.isStaleKeyExchange()) body = "\nError, received stale key exchange message.";
else if (messageRecord.isKeyExchange() && !messageRecord.isOutgoing()) body = "\nReceived key exchange message, click to process";
if (messageRecord.isKeyExchange() && messageRecord.isOutgoing()) body = "\n" + getContext().getString(R.string.key_exchange_message2);
else if (messageRecord.isProcessedKeyExchange() && !messageRecord.isOutgoing()) body = "\n" + getContext().getString(R.string.received_and_processed_key_exchange_message);
else if (messageRecord.isStaleKeyExchange()) body = "\n" + getContext().getString(R.string.error_received_stale_key_exchange_message);
else if (messageRecord.isKeyExchange() && !messageRecord.isOutgoing()) body = "\n" + getContext().getString(R.string.received_key_exchange_message_click_to_process);
bodyText.setText(body, TextView.BufferType.SPANNABLE);
@@ -274,8 +278,8 @@ public class ConversationItem extends LinearLayout {
mmsDownloadButton.setVisibility(View.GONE);
mmsDownloadingLabel.setVisibility(View.GONE);
if (messageRecord.isFailed()) dateText.setText("Error sending message");
else if (messageRecord.isPending()) dateText.setText("Sending...");
if (messageRecord.isFailed()) dateText.setText(R.string.error_sending_message);
else if (messageRecord.isPending()) dateText.setText(R.string.sending);
else dateText.setText(DateUtils.getRelativeTimeSpanString(getContext(),
messageRecord.getDate(),
false));
@@ -358,8 +362,8 @@ public class ConversationItem extends LinearLayout {
private void saveToSdCard() {
progressDialog = new ProgressDialog(context);
progressDialog.setTitle("Saving Attachment");
progressDialog.setMessage("Saving attachment to SD card...");
progressDialog.setTitle(context.getString(R.string.saving_attachment));
progressDialog.setMessage(context.getString(R.string.saving_attachment_to_sd_card));
progressDialog.setCancelable(false);
progressDialog.setIndeterminate(true);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
@@ -369,10 +373,10 @@ public class ConversationItem extends LinearLayout {
public boolean onLongClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Save to SD Card?");
builder.setTitle(R.string.save_to_sd_card);
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setCancelable(true);
builder.setMessage("This media has been stored in an encrypted database. The version you save to the SD card will no longer be encrypted, would you like to continue?");
builder.setMessage(R.string.this_media_has_been_stored_in_an_encrypted_database_warning);
builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
saveToSdCard();
@@ -388,13 +392,16 @@ public class ConversationItem extends LinearLayout {
public void handleMessage(Message message) {
switch (message.what) {
case FAILURE:
Toast.makeText(context, "Error while saving attachment to SD card!", Toast.LENGTH_LONG);
Toast.makeText(context, R.string.error_while_saving_attachment_to_sd_card,
Toast.LENGTH_LONG).show();
break;
case SUCCESS:
Toast.makeText(context, "Success!", Toast.LENGTH_LONG);
Toast.makeText(context, R.string.success_exclamation,
Toast.LENGTH_LONG).show();
break;
case WRITE_ACCESS_FAILURE:
Toast.makeText(context, "Unable to write to SD Card!", Toast.LENGTH_LONG);
Toast.makeText(context, R.string.unable_to_write_to_sd_card_exclamation,
Toast.LENGTH_LONG).show();
break;
}
@@ -428,10 +435,10 @@ public class ConversationItem extends LinearLayout {
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("View secure media?");
builder.setTitle(R.string.view_secure_media_question);
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setCancelable(true);
builder.setMessage("This media has been stored in an encrypted database. Unfortunately, to view it with an external content viewer currently requires the data to be temporarily decrypted and written to disk. Are you sure that you would like to do this?");
builder.setMessage(R.string.this_media_has_been_stored_in_an_encrypted_database_external_viewer_warning);
builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
fireIntent();