From a0e0efd8242b5e116c96f45f4a9c9286b7bb638c Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Thu, 21 Jul 2016 14:23:11 +0300 Subject: [PATCH 1/2] add russian localization --- .../activities/MainActivity.java | 26 +++---- .../activities/RecordingActivity.java | 30 +++---- .../activities/SettingsActivity.java | 2 +- .../audiorecorder/app/MainApplication.java | 14 ++-- .../services/RecordingService.java | 2 +- .../axet/audiorecorder/widgets/PitchView.java | 4 +- .../main/res/layout/activity_recording.xml | 1 + app/src/main/res/layout/content_main.xml | 2 +- app/src/main/res/menu/menu_context.xml | 4 +- app/src/main/res/menu/menu_main.xml | 2 +- app/src/main/res/values-ru/strings.xml | 78 +++++++++++++++++++ app/src/main/res/values/strings.xml | 40 ++++++++-- app/src/main/res/xml-ru/pref_general.xml | 51 ++++++++++++ app/src/main/res/xml/pref_general.xml | 6 +- 14 files changed, 210 insertions(+), 52 deletions(-) create mode 100644 app/src/main/res/values-ru/strings.xml create mode 100644 app/src/main/res/xml-ru/pref_general.xml diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java index 957ff34..bec381b 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java +++ b/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java @@ -177,10 +177,10 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr time.setText(s.format(new Date(f.lastModified()))); TextView dur = (TextView) convertView.findViewById(R.id.recording_duration); - dur.setText(MainApplication.formatDuration(durations.get(f))); + dur.setText(MainApplication.formatDuration(getContext(), durations.get(f))); TextView size = (TextView) convertView.findViewById(R.id.recording_size); - size.setText(MainApplication.formatSize(f.length())); + size.setText(MainApplication.formatSize(getContext(), f.length())); final View playerBase = convertView.findViewById(R.id.recording_player); playerBase.setOnClickListener(new View.OnClickListener() { @@ -193,9 +193,9 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr @Override public void run() { AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder.setTitle("Delete Recording"); - builder.setMessage("...\\" + f.getName() + "\n\n" + "Are you sure ? "); - builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { + builder.setTitle(R.string.delete_recording); + builder.setMessage("...\\" + f.getName() + "\n\n" + getString(R.string.are_you_sure)); + builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { playerStop(); @@ -211,7 +211,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr }); } }); - builder.setNegativeButton("No", new DialogInterface.OnClickListener() { + builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); @@ -225,7 +225,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr @Override public void run() { final OpenFileDialog.EditTextDialog e = new OpenFileDialog.EditTextDialog(getContext()); - e.setTitle("Rename Recording"); + e.setTitle(getString(R.string.rename_recording)); e.setText(Storage.getNameNoExt(f)); e.setPositiveButton(new DialogInterface.OnClickListener() { @Override @@ -281,7 +281,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr emailIntent.putExtra(Intent.EXTRA_EMAIL, ""); emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f)); emailIntent.putExtra(Intent.EXTRA_SUBJECT, f.getName()); - emailIntent.putExtra(Intent.EXTRA_TEXT, "Shared via Audio Recorder"); + emailIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.shared_via, getString(R.string.app_name))); shareProvider.setShareIntent(emailIntent); @@ -347,7 +347,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr if (player == null) player = MediaPlayer.create(getContext(), Uri.fromFile(f)); if (player == null) { - Toast.makeText(MainActivity.this, "File not found", Toast.LENGTH_SHORT).show(); + Toast.makeText(MainActivity.this, R.string.file_not_found, Toast.LENGTH_SHORT).show(); return; } player.start(); @@ -443,11 +443,11 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr } }); - start.setText(MainApplication.formatDuration(c)); + start.setText(MainApplication.formatDuration(getContext(), c)); bar.setMax(d); bar.setKeyProgressIncrement(1); bar.setProgress(c); - end.setText("-" + MainApplication.formatDuration(d - c)); + end.setText("-" + MainApplication.formatDuration(getContext(), d - c)); return playing; } @@ -557,7 +557,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr if (intent.resolveActivityInfo(getPackageManager(), 0) != null) { startActivity(intent); } else { - Toast.makeText(this, "No folder view application installed", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, R.string.no_folder_app, Toast.LENGTH_SHORT).show(); } } @@ -630,7 +630,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr load(); checkPending(); } else { - Toast.makeText(this, "Not permitted", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, R.string.not_permitted, Toast.LENGTH_SHORT).show(); } } } diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java index d1823dc..1c5351a 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java +++ b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java @@ -132,7 +132,7 @@ public class RecordingActivity extends AppCompatActivity { case TelephonyManager.CALL_STATE_OFFHOOK: wasRinging = true; if (thread != null) { - stopRecording("pause (hold by call)"); + stopRecording(getString(R.string.hold_by_call)); pausedByCall = true; } break; @@ -230,7 +230,7 @@ public class RecordingActivity extends AppCompatActivity { done.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - stopRecording("encoding"); + stopRecording(getString(R.string.encoding)); encoding(new Runnable() { @Override public void run() { @@ -244,7 +244,7 @@ public class RecordingActivity extends AppCompatActivity { if (a != null && a.equals(START_PAUSE)) { // pretend we already start it start = false; - stopRecording("pause"); + stopRecording(getString(R.string.pause)); } receiver = new RecordingReceiver(); @@ -298,7 +298,7 @@ public class RecordingActivity extends AppCompatActivity { void pauseButton() { if (thread != null) { - stopRecording("pause"); + stopRecording(getString(R.string.pause)); } else { editCut(); @@ -374,7 +374,7 @@ public class RecordingActivity extends AppCompatActivity { void edit(boolean show, boolean animate) { if (show) { - setState("edit"); + setState(getString(R.string.edit)); editPlay(false); View box = findViewById(R.id.recording_edit_box); @@ -409,7 +409,7 @@ public class RecordingActivity extends AppCompatActivity { }); } else { editSample = -1; - setState("pause"); + setState(getString(R.string.pause)); editPlay(false); pitch.edit(-1); pitch.stop(); @@ -431,7 +431,7 @@ public class RecordingActivity extends AppCompatActivity { long perSec = (c * m * rate); long sec = free / perSec * 1000; - state.setText(s + " (" + ((MainApplication) getApplication()).formatFree(free, sec) + ")"); + state.setText(s + "\n(" + ((MainApplication) getApplication()).formatFree(free, sec) + ")"); } void editPlay(boolean show) { @@ -509,15 +509,15 @@ public class RecordingActivity extends AppCompatActivity { void cancelDialog(final Runnable run) { AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle("Confirm cancel"); - builder.setMessage("Are you sure you want to cancel?"); - builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { + builder.setTitle(R.string.confirm_cancel); + builder.setMessage(R.string.are_you_sure_cancel); + builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { run.run(); } }); - builder.setNegativeButton("No", new DialogInterface.OnClickListener() { + builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); @@ -551,7 +551,7 @@ public class RecordingActivity extends AppCompatActivity { edit(false, true); pitch.setOnTouchListener(null); - setState("recording"); + setState(getString(R.string.recording)); sound.silent(); @@ -712,7 +712,7 @@ public class RecordingActivity extends AppCompatActivity { void updateSamples(long samplesTime) { long ms = samplesTime / sampleRate * 1000; - time.setText(MainApplication.formatDuration(ms)); + time.setText(MainApplication.formatDuration(this, ms)); } @Override @@ -724,7 +724,7 @@ public class RecordingActivity extends AppCompatActivity { if (permitted(permissions)) { startRecording(); } else { - Toast.makeText(this, "Not permitted", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, R.string.not_permitted, Toast.LENGTH_SHORT).show(); finish(); } } @@ -784,7 +784,7 @@ public class RecordingActivity extends AppCompatActivity { encoder = new FileEncoder(this, in, e); final ProgressDialog d = new ProgressDialog(this); - d.setTitle("Encoding..."); + d.setTitle(getString(R.string.encoding_title)); d.setMessage(".../" + targetFile.getName()); d.setMax(100); d.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java index 2271fdf..798e5e6 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java +++ b/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java @@ -192,7 +192,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity implements Sha if (permitted(this, permissions)) ; else - Toast.makeText(this, "Not permitted", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, R.string.not_permitted, Toast.LENGTH_SHORT).show(); } } diff --git a/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java b/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java index 8d6eab3..f94f0dc 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java +++ b/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java @@ -74,23 +74,23 @@ public class MainApplication extends Application { str = getResources().getQuantityString(R.plurals.seconds, diffSeconds, diffSeconds); } - return String.format("%s free ~ %s left", MainApplication.formatSize(free), str); + return getString(R.string.title_header, MainApplication.formatSize(this, free), str); } - public static String formatSize(long s) { + public static String formatSize(Context context, long s) { if (s > 0.1 * 1024 * 1024 * 1024) { float f = s / 1024f / 1024f / 1024f; - return String.format("%.1f GB", f); + return context.getString(R.string.size_gb, f); } else if (s > 0.1 * 1024 * 1024) { float f = s / 1024f / 1024f; - return String.format("%.1f MB", f); + return context.getString(R.string.size_mb, f); } else { float f = s / 1024f; - return String.format("%.1f kb", f); + return context.getString(R.string.size_kb, f); } } - static public String formatDuration(long diff) { + static public String formatDuration(Context context, long diff) { int diffMilliseconds = (int) (diff % 1000); int diffSeconds = (int) (diff / 1000 % 60); int diffMinutes = (int) (diff / (60 * 1000) % 60); @@ -100,7 +100,7 @@ public class MainApplication extends Application { String str = ""; if (diffDays > 0) - str = diffDays + "d " + formatTime(diffHours) + ":" + formatTime(diffMinutes) + ":" + formatTime(diffSeconds); + str = diffDays + context.getString(R.string.days_symbol) + " " + formatTime(diffHours) + ":" + formatTime(diffMinutes) + ":" + formatTime(diffSeconds); else if (diffHours > 0) str = formatTime(diffHours) + ":" + formatTime(diffMinutes) + ":" + formatTime(diffSeconds); else diff --git a/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java b/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java index 1bebc8e..92d3cbe 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java +++ b/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java @@ -149,7 +149,7 @@ public class RecordingService extends Service { NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setOngoing(true) - .setContentTitle("Recording") + .setContentTitle(getString(R.string.recording_title)) .setSmallIcon(R.drawable.ic_mic_24dp) .setContent(view); diff --git a/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java b/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java index b83940d..01456b3 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java +++ b/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java @@ -273,7 +273,7 @@ public class PitchView extends ViewGroup { public PitchCurrentView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - text = "100 dB"; + text = "100 " + getContext().getString(R.string.db); textBounds = new Rect(); textPaint = new Paint(); @@ -314,7 +314,7 @@ public class PitchView extends ViewGroup { String str = ""; - str = Integer.toString((int) getDB(end)) + " dB"; + str = Integer.toString((int) getDB(end)) + " " + getContext().getString(R.string.db); setText(str); } diff --git a/app/src/main/res/layout/activity_recording.xml b/app/src/main/res/layout/activity_recording.xml index 98af164..fe95b63 100644 --- a/app/src/main/res/layout/activity_recording.xml +++ b/app/src/main/res/layout/activity_recording.xml @@ -29,6 +29,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" + android:gravity="center" android:text="preparing" /> diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 8d13482..ab10943 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -35,7 +35,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" - android:text="Recording List is Empty\n\nClick Record to Start Recording" + android:text="@string/recording_list_is_empty" android:textAlignment="center"> diff --git a/app/src/main/res/menu/menu_context.xml b/app/src/main/res/menu/menu_context.xml index 75a132e..84b9fb5 100644 --- a/app/src/main/res/menu/menu_context.xml +++ b/app/src/main/res/menu/menu_context.xml @@ -5,11 +5,11 @@ diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 3e020ba..e4cb74b 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -5,7 +5,7 @@ + Аудио Рекордер + + + Тема Светлая (по умолчанию) + Тема Темная + + + + 48 kHz + 44.1 kHz (CD) + 32 kHz + 22 kHz + 16 kHz (по умолчанию) + 11 kHz + 8 kHz (телефон) + + + + .wav (по умолчанию) + .m4a + + + Аудио Рекордер + Настройки + Доступ запрещен + Программа для просмотра папок не установлена + Файл не найден + "Создано с помощью: %1$s" + Переименовать запись + Нет + Да + Вы уверены? + Удалить запись + пауза (звонок) + кодировка + пауза + редактор + Отменить запись + Вы уверены? + запись + Кодирование... + Запись + дБ + д + %1$s свободно ~ %2$s осталось + %1$.1f ГБ + %1$.1f МБ + %1$.1f кб + Переименовать + Удалить + Открыть папку с записями + Список записей пуст\n\nНажмите на "Микрофон" чтобы начать запись + + + %d день + %d дня + %d дней + + + + %d час + %d часа + %d часов + + + + %d минута + %d минуты + %d минут + + + + %d секунда + %d секунды + %d секунд + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index aeb2253..423ac87 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,7 +1,7 @@ Audio Recorder - + 48 kHz 44.1 kHz (CD) 32 kHz @@ -11,7 +11,7 @@ 8 kHz (telephone) - + 48000 44100 32000 @@ -21,28 +21,56 @@ 8000 - + .wav (default) .m4a - + wav m4a - + Theme White (default) Theme Dark - + Theme_White Theme_Dark Audio Recorder Settings + Not permitted + No folder view application installed + File not found + "Shared via %1$s" + Rename Recording + No + Yes + "Are you sure ? " + Delete Recording + pause (hold by call) + encoding + pause + edit + Confirm cancel + Are you sure you want to cancel? + recording + Encoding... + Recording + dB + "d" + %1$s free ~ %2$s left + %1$.1f GB + %1$.1f MB + %1$.1f kb + Rename + Delete + Open Recording Folder + Recording List is Empty\n\nClick Record to Start Recording %d day diff --git a/app/src/main/res/xml-ru/pref_general.xml b/app/src/main/res/xml-ru/pref_general.xml new file mode 100644 index 0000000..5389351 --- /dev/null +++ b/app/src/main/res/xml-ru/pref_general.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml index d4d59d5..faf1cff 100644 --- a/app/src/main/res/xml/pref_general.xml +++ b/app/src/main/res/xml/pref_general.xml @@ -8,7 +8,7 @@ Date: Thu, 21 Jul 2016 14:25:13 +0300 Subject: [PATCH 2/2] Bump version audiorecorder-1.1.46 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 666fe26..1c3d8b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "com.github.axet.audiorecorder" minSdkVersion 16 targetSdkVersion 23 - versionCode 67 - versionName "1.1.45" + versionCode 68 + versionName "1.1.46" } signingConfigs { release {