Uses placeholder and percentage formatter for seek bar state strings.
Placeholders and percentage formatter are best practice to help prevent
accidental translation errors, especially when mixing formatted strings
with literal percent signs.
Fix: 366201919
Flag: EXEMPT minor string format fix with no functionality change
Test: Use TalkBack to observe the state description of the seekbar;
observe description is unchanged (e.g. "60% left, 40% right")
Test: atest BalanceSeekBarTest
Change-Id: Ie9dcc9219d253795be31b39279ed9d01d8794f66
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c63e5f4..cf203bb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -13342,9 +13342,9 @@
<!-- Summary of the Live Caption enabled state. -->
<string name="live_caption_enabled">On</string>
<!-- State description for the Audio Balance seek bar, with left reported before right. -->
- <string name="audio_seek_bar_state_left_first">Audio %1$d%% left, %2$d%% right</string>
+ <string name="audio_seek_bar_state_left_first">Audio <xliff:g id="percent_left">%1$s</xliff:g> left, <xliff:g id="percent_right">%2$s</xliff:g> right</string>
<!-- State description for the Audio Balance seek bar, with right reported before left. -->
- <string name="audio_seek_bar_state_right_first">Audio %1$d%% right, %2$d%% left</string>
+ <string name="audio_seek_bar_state_right_first">Audio <xliff:g id="percent_right">%1$s</xliff:g> right, <xliff:g id="percent_left">%2$s</xliff:g> left</string>
<!-- Warning text about the visibility of device name. [CHAR LIMIT=NONE] -->
<string name="about_phone_device_name_warning">Your device name is visible to apps you installed. It may also be seen by other people when you connect to Bluetooth devices, connect to a Wi-Fi network or set up a Wi-Fi hotspot.</string>
diff --git a/src/com/android/settings/accessibility/BalanceSeekBar.java b/src/com/android/settings/accessibility/BalanceSeekBar.java
index 7441d6f..8f8f767 100644
--- a/src/com/android/settings/accessibility/BalanceSeekBar.java
+++ b/src/com/android/settings/accessibility/BalanceSeekBar.java
@@ -36,6 +36,7 @@
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
+import com.android.settings.Utils;
/**
* A custom seekbar for the balance setting.
@@ -178,10 +179,12 @@
== LAYOUT_DIRECTION_RTL;
final int rightPercent = (int) (100 * (progress / max));
final int leftPercent = 100 - rightPercent;
+ final String rightPercentString = Utils.formatPercentage(rightPercent);
+ final String leftPercentString = Utils.formatPercentage(leftPercent);
if (rightPercent > leftPercent || (rightPercent == leftPercent && isLayoutRtl)) {
- return context.getString(resIdRightFirst, rightPercent, leftPercent);
+ return context.getString(resIdRightFirst, rightPercentString, leftPercentString);
} else {
- return context.getString(resIdLeftFirst, leftPercent, rightPercent);
+ return context.getString(resIdLeftFirst, leftPercentString, rightPercentString);
}
}
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/BalanceSeekBarTest.java b/tests/robotests/src/com/android/settings/accessibility/BalanceSeekBarTest.java
index d74794f..bbe511d 100644
--- a/tests/robotests/src/com/android/settings/accessibility/BalanceSeekBarTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/BalanceSeekBarTest.java
@@ -34,6 +34,7 @@
import android.widget.SeekBar;
import com.android.settings.R;
+import com.android.settings.Utils;
import com.android.settings.testutils.shadow.ShadowSystemSettings;
import org.junit.Before;
@@ -162,7 +163,8 @@
mProxySeekBarListener.onProgressChanged(mSeekBar, progress, true);
assertThat(mSeekBar.getStateDescription()).isEqualTo(
- mContext.getString(R.string.audio_seek_bar_state_left_first, 50, 50));
+ mContext.getString(R.string.audio_seek_bar_state_left_first,
+ Utils.formatPercentage(50), Utils.formatPercentage(50)));
}
@Test
@@ -177,7 +179,8 @@
mProxySeekBarListener.onProgressChanged(mSeekBar, progress, true);
assertThat(mSeekBar.getStateDescription()).isEqualTo(
- mContext.getString(R.string.audio_seek_bar_state_right_first, 50, 50));
+ mContext.getString(R.string.audio_seek_bar_state_right_first,
+ Utils.formatPercentage(50), Utils.formatPercentage(50)));
}
@Test
@@ -189,7 +192,8 @@
mProxySeekBarListener.onProgressChanged(mSeekBar, progress, true);
assertThat(mSeekBar.getStateDescription()).isEqualTo(
- mContext.getString(R.string.audio_seek_bar_state_left_first, 75, 25));
+ mContext.getString(R.string.audio_seek_bar_state_left_first,
+ Utils.formatPercentage(75), Utils.formatPercentage(25)));
}
@Test
@@ -201,7 +205,8 @@
mProxySeekBarListener.onProgressChanged(mSeekBar, progress, true);
assertThat(mSeekBar.getStateDescription()).isEqualTo(
- mContext.getString(R.string.audio_seek_bar_state_right_first, 75, 25));
+ mContext.getString(R.string.audio_seek_bar_state_right_first,
+ Utils.formatPercentage(75), Utils.formatPercentage(25)));
}
// method to get the center from BalanceSeekBar for testing setMax().