Skip to content

Commit 24641b5

Browse files
Merge pull request #1285 from tanvidadu/translate
Add translate link to tell users to localize the app
2 parents bb552fa + 1b1568d commit 24641b5

File tree

4 files changed

+171
-0
lines changed

4 files changed

+171
-0
lines changed

app/src/main/java/fr/free/nrw/commons/AboutActivity.java

+50
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package fr.free.nrw.commons;
22

33
import android.annotation.SuppressLint;
4+
import android.app.AlertDialog;
5+
import android.content.DialogInterface;
46
import android.content.Intent;
57
import android.net.Uri;
68
import android.os.Bundle;
@@ -10,6 +12,9 @@
1012
import android.support.customtabs.CustomTabsIntent;
1113
import android.support.v4.content.ContextCompat;
1214
import android.view.View;
15+
import android.widget.ArrayAdapter;
16+
import android.widget.LinearLayout;
17+
import android.widget.Spinner;
1318
import android.widget.TextView;
1419
import android.widget.Toast;
1520

@@ -29,6 +34,16 @@ public class AboutActivity extends NavigationBaseActivity {
2934
@BindView(R.id.about_license) HtmlTextView aboutLicenseText;
3035
@BindView(R.id.about_faq) TextView faqText;
3136

37+
String language[] = { "Kazakh", "Afrikaans", "Arabic", "Bengali", "Asturianu", "azərbaycanca", "Bikol Central",
38+
"Bulgarain", "বাংলা", "Bosanski", "Brezhoneg","català","کوردی", " čeština", " kaszëbsczi", "Cymraeg", "dansk", "Deutsch"
39+
,"Zazaki", "डोटेली","Ελληνικά","euskara","español","فارسی","suomi", "français" ,"Nordfriisk", "galego", "Hawaiʻi"
40+
,"हिन्दी","Hunsrik","עברית","hornjoserbsce","magyar","interlingua","Bahasa Indonesia", "íslenska","Italian","japanese",
41+
"Basa Jawa", "ქართული", " ភាសាខ្មែរ","ಕನ್ನಡ", "한국어","къарачай-малкъар","Кыргызча", "latina", "Lëtzebuergesch", "lietuvių",
42+
"latviešu", "Malagasy", "македонски"," മലയാളം","монгол","मराठी","Bahasa Melayu","Malti", "नेपाली", "norsk bokmål",
43+
" Nederlands","occitan","ଓଡ଼ିଆ","ਪੰਜਾਬੀ","polsk","Piemontèis","پښتو","português","română","русский"," سنڌي", " සිංහල",
44+
"slovenčina"," سرائیکی", "svenska", "தமிழ்", "ತುಳು"," తెలుగు"," ไทย", "Türkçe","українська", "اردو", "Tiếng Việt",
45+
" მარგალური","ייִדיש",};
46+
3247
/**
3348
* This method helps in the creation About screen
3449
*
@@ -87,8 +102,43 @@ public void launchPrivacyPolicy(View view) {
87102
Utils.handleWebUrl(this,Uri.parse("https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\\"));
88103
}
89104

105+
90106
@OnClick(R.id.about_faq)
91107
public void launchFrequentlyAskedQuesions(View view) {
92108
Utils.handleWebUrl(this,Uri.parse("https://github.com/commons-app/apps-android-commons/wiki/Frequently-Asked-Questions\\"));
93109
}
110+
111+
@OnClick(R.id.about_translate)
112+
public void launchTranslate(View view) {
113+
final ArrayAdapter<String> languageAdapter = new ArrayAdapter<String>(AboutActivity.this,
114+
android.R.layout.simple_spinner_item, language);
115+
final Spinner spinner = new Spinner(AboutActivity.this);
116+
spinner.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
117+
spinner.setAdapter(languageAdapter);
118+
spinner.setGravity(17);
119+
120+
AlertDialog.Builder builder = new AlertDialog.Builder(AboutActivity.this);
121+
builder.setView(spinner);
122+
builder.setTitle(R.string.about_translate_title)
123+
.setMessage(R.string.about_translate_message)
124+
.setPositiveButton(R.string.about_translate_proceed, new DialogInterface.OnClickListener() {
125+
@Override
126+
public void onClick(DialogInterface dialog, int which) {
127+
String languageSelected = spinner.getSelectedItem().toString();
128+
TokensTranslations tokensTranslations = new TokensTranslations();
129+
tokensTranslations.initailize();
130+
String token = tokensTranslations.getTranslationToken(languageSelected);
131+
Utils.handleWebUrl(AboutActivity.this,Uri.parse("https://translatewiki.net/w/i.php?title=Special:Translate&language="+token+"&group=commons-android-strings&filter=%21translated&action=translate ?"));
132+
}
133+
});
134+
builder.setNegativeButton(R.string.about_translate_cancel, new DialogInterface.OnClickListener() {
135+
@Override
136+
public void onClick(DialogInterface dialog, int which) {
137+
finish();
138+
}
139+
});
140+
builder.create().show();
141+
142+
}
143+
94144
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package fr.free.nrw.commons;
2+
3+
import java.util.HashMap;
4+
5+
/**
6+
* Created by Dell on 3/16/2018.
7+
*/
8+
9+
public class TokensTranslations {
10+
HashMap<String,String> translationToken = new HashMap<String,String>();
11+
12+
public void initailize() {
13+
translationToken.put("Kazakh", "ab");
14+
translationToken.put("Afrikaans", "af");
15+
translationToken.put("Arabic", "ar");
16+
translationToken.put("Bengali", "as");
17+
translationToken.put("Asturianu", "ast");
18+
translationToken.put("azərbaycanca", "az");
19+
translationToken.put("Bikol Central", "bcl");
20+
translationToken.put("Bulgarain","bg");
21+
translationToken.put("বাংলা", "bn");
22+
translationToken.put("Brezhoneg", "br");
23+
translationToken.put("Bosanski", "bs");
24+
translationToken.put("català", "ca");
25+
translationToken.put("کوردی","ckb");
26+
translationToken.put("čeština", "cs");
27+
translationToken.put("kaszëbsczi", "csb");
28+
translationToken.put("Cymraeg", "cy");
29+
translationToken.put("dansk", "da");
30+
translationToken.put("Deutsch", "de");
31+
translationToken.put("Zazaki", "diq");
32+
translationToken.put("डोटेली","diq");
33+
translationToken.put("Ελληνικά","el");
34+
translationToken.put("euskara","eu");
35+
translationToken.put("español", "es");
36+
translationToken.put("فارسی","fa");
37+
translationToken.put("suomi", "fi");
38+
translationToken.put("føroyskt", "fo");
39+
translationToken.put("français", "fr");
40+
translationToken.put("Nordfriisk", "frr");
41+
translationToken.put("galego", "gr");
42+
translationToken.put("Hawaiʻi", "haw");
43+
translationToken.put("עברית","he");
44+
translationToken.put("हिन्दी","hi");
45+
translationToken.put("Hunsrik", "hrx");
46+
translationToken.put("hornjoserbsce", "hsb");
47+
translationToken.put("magyar","hu");
48+
translationToken.put("interlingua","ia");
49+
translationToken.put("Bahasa Indonesia", "id");
50+
translationToken.put("íslenska","is");
51+
translationToken.put("Italian","it");
52+
translationToken.put("japanese","ja");
53+
translationToken.put("Basa Jawa","jv");
54+
translationToken.put("ქართული", "ka");
55+
translationToken.put("Taqbaylit","kab");
56+
translationToken.put(" ភាសាខ្មែរ","km");
57+
translationToken.put("ಕನ್ನಡ", "kn");
58+
translationToken.put("한국어", "ko");
59+
translationToken.put("къарачай-малкъар","krc");
60+
translationToken.put("Кыргызча","ky");
61+
translationToken.put("latina","la");
62+
translationToken.put("Lëtzebuergesch","lb");
63+
translationToken.put("lietuvių", "lt");
64+
translationToken.put("latviešu","lv");
65+
translationToken.put("Malagasy","mg");
66+
translationToken.put("македонски", "mk");
67+
translationToken.put("മലയാളം","ml");
68+
translationToken.put("монгол","mn");
69+
translationToken.put("मराठी","mr");
70+
translationToken.put("Bahasa Melayu","ms");
71+
translationToken.put("Malti","mt");
72+
translationToken.put("norsk bokmål", "nb");
73+
translationToken.put("नेपाली","ne");
74+
translationToken.put("Nederlands","nl");
75+
translationToken.put("occitan","oc");
76+
translationToken.put("ଓଡ଼ିଆ","or");
77+
translationToken.put("ਪੰਜਾਬੀ","pa");
78+
translationToken.put("polsk", "pl");
79+
translationToken.put("Piemontèis","pms");
80+
translationToken.put("پښتو","ps");
81+
translationToken.put("português","pt");
82+
translationToken.put("română","ro");
83+
translationToken.put("русский","ru");
84+
translationToken.put(" سنڌي","sd");
85+
translationToken.put(" සිංහල","si");
86+
translationToken.put("slovenčina","sk");
87+
translationToken.put(" سرائیکی","skr");
88+
translationToken.put("Basa Sunda","su");
89+
translationToken.put("svenska","sv");
90+
translationToken.put("தமிழ்", "ta");
91+
translationToken.put("ತುಳು", "tcy");
92+
translationToken.put(" తెలుగు","te");
93+
translationToken.put(" ไทย","th");
94+
translationToken.put("Türkçe","tr");
95+
translationToken.put("українська","uk");
96+
translationToken.put("اردو","ur");
97+
translationToken.put("Tiếng Việt","vi");
98+
translationToken.put(" მარგალური", "xmf");
99+
translationToken.put("ייִדיש","yi");
100+
}
101+
102+
public String getTranslationToken ( String language){
103+
return translationToken.get(language);
104+
}
105+
}

app/src/main/res/layout/activity_about.xml

+10
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,16 @@
123123
android:gravity="center"
124124
android:text="@string/about_privacy_policy" />
125125

126+
<TextView
127+
android:id="@+id/about_translate"
128+
style="?android:textAppearanceSmall"
129+
android:layout_width="wrap_content"
130+
android:layout_height="wrap_content"
131+
android:textColor="@color/primaryColor"
132+
android:layout_marginTop="@dimen/standard_gap"
133+
android:gravity="center"
134+
android:text="@string/about_translate" />
135+
126136
<TextView
127137
android:id="@+id/about_credits"
128138
style="?android:textAppearanceSmall"

app/src/main/res/values/strings.xml

+6
Original file line numberDiff line numberDiff line change
@@ -253,4 +253,10 @@
253253
<string name="about_rate_us"><u>Rate Us</u></string>
254254
<string name="about_faq">Frequently Asked Questions</string>
255255
<string name="welcome_skip_button">Skip Tutorial</string>
256+
<string name="about_translate"><u>Translate</u></string>
257+
<string name="about_translate_title">Languages</string>
258+
<string name="about_translate_message">Select the langauge you want translations for ?</string>
259+
<string name="about_translate_proceed">Proceed</string>
260+
<string name="about_translate_cancel">Cancel</string>
261+
256262
</resources>

0 commit comments

Comments
 (0)