From 1b98e508094ef3612f9757b60198de450797db55 Mon Sep 17 00:00:00 2001 From: Daniel Norman Date: Thu, 12 Sep 2024 20:48:09 +0000 Subject: [PATCH] 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 --- res/values/strings.xml | 4 ++-- .../settings/accessibility/BalanceSeekBar.java | 7 +++++-- .../settings/accessibility/BalanceSeekBarTest.java | 13 +++++++++---- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index c63e5f4fcf2..cf203bbc760 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -13342,9 +13342,9 @@ On - Audio %1$d%% left, %2$d%% right + Audio %1$s left, %2$s right - Audio %1$d%% right, %2$d%% left + Audio %1$s right, %2$s left 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. diff --git a/src/com/android/settings/accessibility/BalanceSeekBar.java b/src/com/android/settings/accessibility/BalanceSeekBar.java index 7441d6fe9e2..8f8f767cebf 100644 --- a/src/com/android/settings/accessibility/BalanceSeekBar.java +++ b/src/com/android/settings/accessibility/BalanceSeekBar.java @@ -36,6 +36,7 @@ import android.widget.SeekBar; 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 @@ public class BalanceSeekBar extends SeekBar { == 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 d74794f0363..bbe511d1b98 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.util.AttributeSet; 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 @@ public class BalanceSeekBarTest { 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 @@ public class BalanceSeekBarTest { 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 @@ public class BalanceSeekBarTest { 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 @@ public class BalanceSeekBarTest { 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().