mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
* Updated language codes displayed for Hebrew, Indonesian and Yiddish (#2880) * Function 'fixLanguageCode' encapsulated with unit tests (#2880) * Renaming class "StringUtils" as "LangCodeUtils" and small String formatting improvement in "SpinnerLanguagesAdapter"
This commit is contained in:
parent
d22884f86a
commit
ee3f4d4d30
3 changed files with 56 additions and 5 deletions
|
|
@ -21,6 +21,7 @@ import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import fr.free.nrw.commons.R;
|
import fr.free.nrw.commons.R;
|
||||||
import fr.free.nrw.commons.utils.BiMap;
|
import fr.free.nrw.commons.utils.BiMap;
|
||||||
|
import fr.free.nrw.commons.utils.LangCodeUtils;
|
||||||
|
|
||||||
public class SpinnerLanguagesAdapter extends ArrayAdapter {
|
public class SpinnerLanguagesAdapter extends ArrayAdapter {
|
||||||
|
|
||||||
|
|
@ -114,21 +115,24 @@ public class SpinnerLanguagesAdapter extends ArrayAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init(int position, boolean isDropDownView) {
|
public void init(int position, boolean isDropDownView) {
|
||||||
|
final String languageCode = LangCodeUtils.fixLanguageCode(languageCodesList.get(position));
|
||||||
|
final String languageName = String.format("%s%s", languageNamesList.get(position)
|
||||||
|
.substring(0, 1).toUpperCase(), languageNamesList.get(position).substring(1));
|
||||||
if (!isDropDownView) {
|
if (!isDropDownView) {
|
||||||
view.setVisibility(View.GONE);
|
view.setVisibility(View.GONE);
|
||||||
if(languageCodesList.get(position).length()>2)
|
if(languageCode.length()>2)
|
||||||
tvLanguage.setText(languageCodesList.get(position).subSequence(0,2));
|
tvLanguage.setText(languageCode.subSequence(0,2));
|
||||||
else
|
else
|
||||||
tvLanguage.setText(languageCodesList.get(position));
|
tvLanguage.setText(languageCode);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
view.setVisibility(View.VISIBLE);
|
view.setVisibility(View.VISIBLE);
|
||||||
if (languageCodesList.get(position).isEmpty()) {
|
if (languageCodesList.get(position).isEmpty()) {
|
||||||
tvLanguage.setText(languageNamesList.get(position));
|
tvLanguage.setText(languageName);
|
||||||
tvLanguage.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
|
tvLanguage.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
|
||||||
} else {
|
} else {
|
||||||
tvLanguage.setText(
|
tvLanguage.setText(
|
||||||
String.format("%s [%s]", languageNamesList.get(position), languageCodesList.get(position)));
|
String.format("%s [%s]", languageName, languageCode));
|
||||||
if(selectedLanguages.containsKey(languageCodesList.get(position))&&
|
if(selectedLanguages.containsKey(languageCodesList.get(position))&&
|
||||||
!languageCodesList.get(position).equals(selectedLangCode)) {
|
!languageCodesList.get(position).equals(selectedLangCode)) {
|
||||||
tvLanguage.setTextColor(Color.GRAY);
|
tvLanguage.setTextColor(Color.GRAY);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
package fr.free.nrw.commons.utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utilities class for miscellaneous strings
|
||||||
|
*/
|
||||||
|
public class LangCodeUtils {
|
||||||
|
/**
|
||||||
|
* Replaces the deprecated ISO-639 language codes used by Android with the updated ISO-639-1.
|
||||||
|
* @param code Language code you want to update.
|
||||||
|
* @return Updated language code. If not in the "deprecated list" returns the same code.
|
||||||
|
*/
|
||||||
|
public static String fixLanguageCode(String code) {
|
||||||
|
if (code.equalsIgnoreCase("iw")) {
|
||||||
|
return "he";
|
||||||
|
} else if (code.equalsIgnoreCase("in")) {
|
||||||
|
return "id";
|
||||||
|
} else if (code.equalsIgnoreCase("ji")) {
|
||||||
|
return "yi";
|
||||||
|
} else {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package fr.free.nrw.commons.utils;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
public class LangCodeUtilsTest {
|
||||||
|
@Test
|
||||||
|
public void testFixLanguageCodeIw(){
|
||||||
|
assertTrue("Expected 'he' as result", LangCodeUtils.fixLanguageCode("iw").contentEquals("he"));
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testFixLanguageCodeIn(){
|
||||||
|
assertTrue("Expected 'id' as result", LangCodeUtils.fixLanguageCode("in").contentEquals("id"));
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testFixLanguageCodeJi(){
|
||||||
|
assertTrue("Expected 'yi' as result", LangCodeUtils.fixLanguageCode("ji").contentEquals("yi"));
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testFixLanguageCodeDefault(){
|
||||||
|
assertTrue("Expected 'en' as result", LangCodeUtils.fixLanguageCode("en").contentEquals("en"));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue