Added German language support and bug fixes
This commit is contained in:
@@ -3,9 +3,7 @@ package de.hwr_berlin.it14.postgrachelor;
|
||||
import android.app.FragmentManager;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
import android.support.design.widget.NavigationView;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.Menu;
|
||||
@@ -16,10 +14,14 @@ import de.hwr_berlin.it14.postgrachelor.Services.GameService;
|
||||
import de.hwr_berlin.it14.postgrachelor.Services.HighscoreService;
|
||||
import de.hwr_berlin.it14.postgrachelor.Services.LoginService;
|
||||
|
||||
public class MainActivity extends AppCompatActivity
|
||||
implements NavigationView.OnNavigationItemSelectedListener {
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
|
||||
private static class FragmentState {
|
||||
private static final int LOGIN = 0x1;
|
||||
private static final int MAIN = 0x2;
|
||||
private static final int QUESTION_END = 0x4;
|
||||
private static final int QUESTION = 0x8;
|
||||
}
|
||||
|
||||
private static final String NAME = "MainActivity";
|
||||
private FragmentManager myFragmentManager;
|
||||
@@ -56,45 +58,30 @@ public class MainActivity extends AppCompatActivity
|
||||
@Override
|
||||
public void onLoginEvent(String name, String uid) {
|
||||
Log.d("Activity fragment", "onLogin - name: " + name + " - uid: " + uid);
|
||||
/*NavigationView nav_view = (NavigationView) that.findViewById(R.id.nav_view);
|
||||
TextView user_uid = (TextView) nav_view.getHeaderView(0).findViewById(R.id.user_uid);
|
||||
TextView user_name = (TextView) nav_view.getHeaderView(0).findViewById(R.id.user_name);
|
||||
user_name.setText(name);
|
||||
user_uid.setText(uid);*/
|
||||
that.onNavigationItemSelectedID(R.id.nav_gallery);
|
||||
that.selectFragment(FragmentState.MAIN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLogoutEvent(int status, String message) {
|
||||
Log.d("Activity fragment", "onLogout - name: " + status + " - uid: " + message);
|
||||
that.onNavigationItemSelectedID(R.id.nav_camera);
|
||||
that.selectFragment(FragmentState.LOGIN);
|
||||
}
|
||||
});
|
||||
GameService.addGameStateChangeEventListener(NAME, new GameService.OnGameStateChangeEventListener() {
|
||||
@Override
|
||||
public void onGameStateChangeEvent(int previous, int state) {
|
||||
Log.d("Activity fragment", "onGameStateChange - previous: " + previous + " - state: " + state);
|
||||
if (state == GameService.States.RUNNING || state == GameService.States.ONHOLD_LOADING || state == GameService.States.ONHOLD_RESULT)
|
||||
that.onNavigationItemSelectedID(R.id.nav_manage);
|
||||
else if (previous == GameService.States.ONHOLD_RESULT && state == GameService.States.END) {
|
||||
that.onNavigationItemSelectedID(R.id.nav_slideshow);
|
||||
if (state == GameService.States.RUNNING || state == GameService.States.ON_HOLD_LOADING || state == GameService.States.ON_HOLD_RESULT)
|
||||
that.selectFragment(FragmentState.QUESTION);
|
||||
else if (previous == GameService.States.ON_HOLD_RESULT && state == GameService.States.END) {
|
||||
that.selectFragment(FragmentState.QUESTION_END);
|
||||
} else if (state == GameService.States.PAUSED || state == GameService.States.END) {
|
||||
that.onNavigationItemSelectedID(R.id.nav_gallery);
|
||||
that.selectFragment(FragmentState.MAIN);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
/*DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
if (drawer.isDrawerOpen(GravityCompat.START)) {
|
||||
drawer.closeDrawer(GravityCompat.START);
|
||||
} else {
|
||||
super.onBackPressed();
|
||||
}*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
@@ -117,25 +104,21 @@ public class MainActivity extends AppCompatActivity
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
|
||||
return this.onNavigationItemSelectedID(item.getItemId());
|
||||
}
|
||||
|
||||
private boolean onNavigationItemSelectedID(int item) {
|
||||
private void selectFragment(int item) {
|
||||
// Handle navigation view item clicks here.
|
||||
try {
|
||||
boolean isLoggedIn = LoginService.isLoggedIn();
|
||||
if (!isLoggedIn && (item != R.id.nav_camera)) {
|
||||
return false;
|
||||
} else if (isLoggedIn && (item == R.id.nav_camera)) {
|
||||
return false;
|
||||
if (!isLoggedIn && (item != FragmentState.LOGIN)) {
|
||||
return;
|
||||
} else if (isLoggedIn && (item == FragmentState.LOGIN)) {
|
||||
return;
|
||||
}
|
||||
} catch (NotInstantiatedException e) {
|
||||
e.printStackTrace();
|
||||
return;
|
||||
}
|
||||
|
||||
if (item == R.id.nav_camera) {
|
||||
if (item == FragmentState.LOGIN) {
|
||||
// Handle the camera action
|
||||
LoginFragment fragment = (LoginFragment) myFragmentManager.findFragmentByTag(LoginFragment.NAME);
|
||||
if (fragment == null) {
|
||||
@@ -143,21 +126,21 @@ public class MainActivity extends AppCompatActivity
|
||||
fragmentTransaction.replace(R.id.relative_content, loginFragment, LoginFragment.NAME);
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
} else if (item == R.id.nav_gallery) {
|
||||
} else if (item == FragmentState.MAIN) {
|
||||
MainFragment fragment = (MainFragment) myFragmentManager.findFragmentByTag(MainFragment.NAME);
|
||||
if (fragment == null) {
|
||||
FragmentTransaction fragmentTransaction = myFragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.relative_content, mainFragment, MainFragment.NAME);
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
} else if (item == R.id.nav_slideshow) {
|
||||
} else if (item == FragmentState.QUESTION_END) {
|
||||
QuestionEndFragment fragment = (QuestionEndFragment) myFragmentManager.findFragmentByTag(QuestionEndFragment.NAME);
|
||||
if (fragment == null) {
|
||||
FragmentTransaction fragmentTransaction = myFragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.relative_content, questionEndFragment, QuestionEndFragment.NAME);
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
} else if (item == R.id.nav_manage) {
|
||||
} else if (item == FragmentState.QUESTION) {
|
||||
QuestionFragment fragment = (QuestionFragment) myFragmentManager.findFragmentByTag(QuestionFragment.NAME);
|
||||
if (fragment == null) {
|
||||
FragmentTransaction fragmentTransaction = myFragmentManager.beginTransaction();
|
||||
@@ -165,9 +148,5 @@ public class MainActivity extends AppCompatActivity
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
}
|
||||
|
||||
//DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
//drawer.closeDrawer(GravityCompat.START);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ public class MainFragment extends Fragment {
|
||||
|
||||
while(iterator.hasNext()) {
|
||||
HighscoresCategories category = iterator.next();
|
||||
categoryView = inflater.inflate(R.layout.fragment_main_category, null);
|
||||
categoryView = inflater.inflate(R.layout.fragment_main_category, gridLayoutCategories, false);
|
||||
|
||||
textView = (TextView) categoryView.findViewById(R.id.textViewCategory);
|
||||
textView.setText(category.getName());
|
||||
|
||||
@@ -73,7 +73,7 @@ public class QuestionFragment extends Fragment {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
try {
|
||||
if (GameService.getState() != GameService.States.ONHOLD_RESULT)
|
||||
if (GameService.getState() != GameService.States.ON_HOLD_RESULT)
|
||||
GameService.answer((int) v.getTag());
|
||||
} catch (NotInstantiatedException | NotLoggedInException | NoCurrentQuestionException e) {
|
||||
e.printStackTrace();
|
||||
@@ -146,7 +146,8 @@ public class QuestionFragment extends Fragment {
|
||||
GameService.addGameStateChangeEventListener(NAME, new GameService.OnGameStateChangeEventListener() {
|
||||
@Override
|
||||
public void onGameStateChangeEvent(int previous, int state) {
|
||||
if (previous == GameService.States.END && state == GameService.States.RUNNING)
|
||||
Log.d(NAME, Conversion.intToStr(previous, 5)+Conversion.intToStr(state,5));
|
||||
if (previous != GameService.States.ON_HOLD_RESULT && state == GameService.States.RUNNING)
|
||||
totalView.setText(R.string._0);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -19,16 +19,18 @@ import de.hwr_berlin.it14.postgrachelor.Types.GameScores;
|
||||
import de.hwr_berlin.it14.postgrachelor.Types.Question;
|
||||
import de.hwr_berlin.it14.postgrachelor.Types.QuestionResult;
|
||||
import de.hwr_berlin.it14.postgrachelor.Types.Timings;
|
||||
import de.hwr_berlin.it14.postgrachelor.Utils.Conversion;
|
||||
import de.hwr_berlin.it14.postgrachelor.Utils.JsonRequestPG;
|
||||
|
||||
/**
|
||||
* Created by Sebastian on 27.03.2017.
|
||||
* Game service controls gameflow
|
||||
* Game service controls game flow
|
||||
*/
|
||||
|
||||
public class GameService {
|
||||
private static final int GAME_TICK_INTERVAL = 100;
|
||||
private static final int NEXT_QUESTION_DELAY = 1250;
|
||||
private static final int QUESTION_COUNT = 10;
|
||||
|
||||
|
||||
private static long startTime;
|
||||
@@ -40,8 +42,8 @@ public class GameService {
|
||||
private States() {}
|
||||
public static final int UNINITIALIZED = 1;
|
||||
public static final int END = 2;
|
||||
public static final int ONHOLD_LOADING = 4;
|
||||
public static final int ONHOLD_RESULT = 8;
|
||||
public static final int ON_HOLD_LOADING = 4;
|
||||
public static final int ON_HOLD_RESULT = 8;
|
||||
public static final int RUNNING = 16;
|
||||
public static final int PAUSED = 32;
|
||||
}
|
||||
@@ -112,6 +114,7 @@ public class GameService {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
public static void addNextQuestionEventListener(String key, OnNextQuestionEventListener onNextQuestionEventListener) {
|
||||
Log.d("GameService Fragment", "addNextQuestionEventListener");
|
||||
nextQuestionEventListeners.put(key, onNextQuestionEventListener);
|
||||
@@ -125,6 +128,7 @@ public class GameService {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
public static void addResultEventListener(String key, OnResultEventListener onResultEventListener) {
|
||||
resultEventListeners.put(key, onResultEventListener);
|
||||
if (GameService.initialized)
|
||||
@@ -149,6 +153,7 @@ public class GameService {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
public static void addTickEventListener(String key, OnTickEventListener onTickEventListener) {
|
||||
gameTickEventListeners.put(key, onTickEventListener);
|
||||
if (GameService.initialized)
|
||||
@@ -373,7 +378,7 @@ public class GameService {
|
||||
final int state = GameService.getState();
|
||||
|
||||
long time;
|
||||
if (state == States.ONHOLD_LOADING) {
|
||||
if (state == States.ON_HOLD_LOADING) {
|
||||
long end = GameService.getEndTime();
|
||||
long start = GameService.getStartTime();
|
||||
time = end - start;
|
||||
@@ -382,7 +387,7 @@ public class GameService {
|
||||
long end = System.currentTimeMillis();
|
||||
long start = GameService.getStartTime();
|
||||
GameService.setEndTime(end);
|
||||
GameService.setState(States.ONHOLD_LOADING);
|
||||
GameService.setState(States.ON_HOLD_LOADING);
|
||||
time = end - start;
|
||||
GameService.setAnswer(id);
|
||||
} else {
|
||||
@@ -410,7 +415,7 @@ public class GameService {
|
||||
data_result.optInt("correctPos", 0),
|
||||
data_result.optInt("total", 0)
|
||||
);
|
||||
GameService.setStateSave(States.ONHOLD_RESULT);
|
||||
GameService.setStateSave(States.ON_HOLD_RESULT);
|
||||
GameService.setResultSave(result);
|
||||
|
||||
new android.os.Handler().postDelayed(new Runnable() {
|
||||
@@ -457,6 +462,7 @@ public class GameService {
|
||||
else
|
||||
throw new NotLoggedInException();
|
||||
params.put("uid", uid);
|
||||
params.put("length", Conversion.intToStr(GameService.QUESTION_COUNT));
|
||||
JsonRequestPG requester = new JsonRequestPG("start.php", params, GameService.activity, new JsonRequestPG.AsyncResponse() {
|
||||
@Override
|
||||
public void processFinish(JSONObject data) {
|
||||
|
||||
@@ -26,10 +26,11 @@ public class Conversion {
|
||||
return String.format(Locale.getDefault(), "%1d", i);
|
||||
}
|
||||
|
||||
private static String intToStr(int i, int padding) {
|
||||
public static String intToStr(int i, int padding) {
|
||||
return String.format(Locale.getDefault(), "%"+Conversion.intToStr(padding)+"s", i);
|
||||
}
|
||||
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
private static String intToStr(int i, int padding, char padChar) {
|
||||
return Conversion.intToStr(i, padding).replace(' ', padChar);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
@@ -19,15 +18,15 @@ import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Scanner;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import de.hwr_berlin.it14.postgrachelor.R;
|
||||
|
||||
import static android.content.ContentValues.TAG;
|
||||
|
||||
abstract class JsonRequest extends AsyncTask<Void, Void, JSONObject> {
|
||||
private final String connectionURL;
|
||||
protected final String path;
|
||||
private final String path;
|
||||
private final HashMap<String, String> params;
|
||||
final Activity activity;
|
||||
private ProgressDialog pDialog;
|
||||
@@ -40,6 +39,7 @@ abstract class JsonRequest extends AsyncTask<Void, Void, JSONObject> {
|
||||
Log.d("fragment, JSONRequest", connectionURL+path);
|
||||
}
|
||||
|
||||
@SuppressWarnings("SameReturnValue")
|
||||
protected abstract String getConnectionURL();
|
||||
|
||||
@Override
|
||||
@@ -48,7 +48,7 @@ abstract class JsonRequest extends AsyncTask<Void, Void, JSONObject> {
|
||||
Log.d("fragment, JSONRequest", "onPre1");
|
||||
// Showing progress dialog
|
||||
pDialog = new ProgressDialog(this.activity);
|
||||
pDialog.setMessage("Please wait...");
|
||||
pDialog.setMessage(this.activity.getString(R.string.please_wait));
|
||||
pDialog.setCancelable(false);
|
||||
pDialog.show();
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ package de.hwr_berlin.it14.postgrachelor.Utils;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.DialogInterface;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:showIn="@layout/fragment_main"
|
||||
android:background="#FF33B5E6"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:gravity="start"
|
||||
android:background="#FF33B5E6"
|
||||
android:padding="5dp"
|
||||
>
|
||||
tools:ignore="Overdraw">
|
||||
<TextView
|
||||
android:id="@+id/textViewCategory"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="100dp"
|
||||
android:text="@string/hello_blank_fragment" />
|
||||
android:text="@string/category" />
|
||||
<ProgressBar
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:id="@+id/progressBarCategory"
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
|
||||
android:textColor="@android:color/white"
|
||||
android:padding="10dp"
|
||||
android:text="@string/hello_blank_fragment" />
|
||||
android:text="@string/app_name" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/fragment_user_score"
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/nav_header_height"
|
||||
android:background="@drawable/side_nav_bar"
|
||||
android:gravity="bottom"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
android:theme="@style/ThemeOverlay.AppCompat.Dark">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="@dimen/nav_header_vertical_spacing"
|
||||
android:contentDescription="@string/launcher_icon"
|
||||
app:srcCompat="@mipmap/ic_launcher" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/user_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="@dimen/nav_header_vertical_spacing"
|
||||
android:text="@string/android_studio"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body2" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/user_uid"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="12sp"
|
||||
android:text="@string/android_studio_email" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -1,39 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<group android:checkableBehavior="single">
|
||||
<item
|
||||
android:id="@+id/nav_camera"
|
||||
android:icon="@drawable/ic_menu_camera"
|
||||
android:title="Login"
|
||||
tools:ignore="HardcodedText" />
|
||||
<item
|
||||
android:id="@+id/nav_gallery"
|
||||
android:icon="@drawable/ic_menu_gallery"
|
||||
android:title="Gallery"
|
||||
tools:ignore="HardcodedText" />
|
||||
<item
|
||||
android:id="@+id/nav_slideshow"
|
||||
android:icon="@drawable/ic_menu_slideshow"
|
||||
android:title="Slideshow"
|
||||
tools:ignore="HardcodedText" />
|
||||
<item
|
||||
android:id="@+id/nav_manage"
|
||||
android:icon="@drawable/ic_menu_manage"
|
||||
android:title="Tools"
|
||||
tools:ignore="HardcodedText" />
|
||||
</group>
|
||||
|
||||
<item android:title="Communicate"
|
||||
tools:ignore="HardcodedText">
|
||||
<menu>
|
||||
<item
|
||||
android:id="@+id/nav_share"
|
||||
android:icon="@drawable/ic_menu_share"
|
||||
android:title="Share"
|
||||
tools:ignore="HardcodedText" />
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
</menu>
|
||||
22
app/src/main/res/values-de/strings.xml
Normal file
22
app/src/main/res/values-de/strings.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="action_settings">Einstellungen</string>
|
||||
|
||||
<string name="enter_user_name">Benutzername eingeben…</string>
|
||||
|
||||
<string name="welcome_text">Willkommen zu unserer sinnlosen App! Beweise, dass du schlauer bist als wir und beantworte unsere Fragen!</string>
|
||||
<string name="register_btn">Registrieren</string>
|
||||
<string name="start_test">Test starten!</string>
|
||||
<string name="test_completed">Test beendet!</string>
|
||||
<string name="return_btn">Zurück</string>
|
||||
<string name="android_studio_email">android.studio@android.com</string>
|
||||
<string name="no_highscores_available">Highscores konnten nicht geladen werden!</string>
|
||||
<string name="resume_test">Test wiederaufnehmen!</string>
|
||||
<string name="no_score">Keine Punkte</string>
|
||||
<string name="no_time">Keine Zeit</string>
|
||||
<string name="category">Kategorie: %1$s</string>
|
||||
<string name="no_question_available">Keine Fragen verfügbar!</string>
|
||||
<string name="play_a_game">Spiele ein Spiel!</string>
|
||||
<string name="please_wait">Bitte warten…</string>
|
||||
</resources>
|
||||
@@ -1,31 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">PostGrachelor</string>
|
||||
|
||||
<string name="navigation_drawer_open">Open navigation drawer</string>
|
||||
<string name="navigation_drawer_close">Close navigation drawer</string>
|
||||
<string name="app_name" translatable="false">PostGrachelor</string>
|
||||
|
||||
<string name="action_settings">Settings</string>
|
||||
|
||||
<string name="enter_user_name">Enter User Name…</string>
|
||||
|
||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
||||
<string name="hello_login_fragment">Hello login fragment</string>
|
||||
<string name="welcome_text">Welcome to our stupid app. Prove that you are smarter than we are and answer our questions!</string>
|
||||
<string name="register_btn">Register</string>
|
||||
<string name="start_test">Start Test!</string>
|
||||
<string name="test_completed">Test completed!</string>
|
||||
<string name="_1337">1337</string>
|
||||
<string name="_1337" translatable="false">1337</string>
|
||||
<string name="return_btn">Return</string>
|
||||
<string name="launcher_icon">Launcher Icon</string>
|
||||
<string name="android_studio">Android Studio</string>
|
||||
<string name="launcher_icon" translatable="false">Launcher Icon</string>
|
||||
<string name="android_studio_email">android.studio@android.com</string>
|
||||
<string name="no_highscores_available">Highscores could not be loaded!</string>
|
||||
<string name="resume_test">Resume Test!</string>
|
||||
<string name="_02_15">02:15</string>
|
||||
<string name="_02_15" translatable="false">02:15</string>
|
||||
<string name="no_score">No Score</string>
|
||||
<string name="no_time">No Time</string>
|
||||
<string name="category">Category: %1$s</string>
|
||||
<string name="no_question_available">No question available!</string>
|
||||
<string name="_0">0</string>
|
||||
<string name="_0" translatable="false">0</string>
|
||||
<string name="play_a_game">Play a Game!</string>
|
||||
<string name="please_wait">Please wait…</string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user