summaryrefslogtreecommitdiff
path: root/Source/Android/src
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2013-08-12 21:22:20 -0400
committerLioncash <mathew1800@gmail.com>2013-08-12 21:22:20 -0400
commitb823983199e6cb09fb2f0335f49b90ba0ca95bd3 (patch)
tree16d6f1624153bb1420b181c074aaa3d072782759 /Source/Android/src
parent3b272d81b45f47d3fb0aab8ff0a1736fb1788f1e (diff)
[Android] Multi-language support (or at least the basic foundation of it).
Added an example translation (Japanese). So now the Android version can both display in English and Japanese, depending on what the Android device's system language is set to. Also did a tiny clean-up of InputConfigItem.java so that the parameters are slightly more descriptive. Now, to do a translation in [x] language, all you have to do is take the normal English strings.xml and translate the XML entries into said language, and simply make a folder in the /res/ sub-directory in the form of values-[region code]. IE) With the Japanese translation, it is in the folder /res/values-ja No configuration other than that is needed. After doing the above, the language should load fine on any device when set to that specific system language. By default, if a translation file does not exist for a given system language. The app will automatically fall back to using the English translation. This *should* be bug-free since I did check everything multiple times. But if any issues occur, please report them so that I can fix them.
Diffstat (limited to 'Source/Android/src')
-rw-r--r--Source/Android/src/org/dolphinemu/dolphinemu/AboutFragment.java7
-rw-r--r--Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java2
-rw-r--r--Source/Android/src/org/dolphinemu/dolphinemu/FolderBrowser.java16
-rw-r--r--Source/Android/src/org/dolphinemu/dolphinemu/GameListActivity.java18
-rw-r--r--Source/Android/src/org/dolphinemu/dolphinemu/GameListFragment.java6
-rw-r--r--Source/Android/src/org/dolphinemu/dolphinemu/InputConfigFragment.java56
-rw-r--r--Source/Android/src/org/dolphinemu/dolphinemu/InputConfigItem.java20
-rw-r--r--Source/Android/src/org/dolphinemu/dolphinemu/PrefsFragment.java22
8 files changed, 78 insertions, 69 deletions
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/AboutFragment.java b/Source/Android/src/org/dolphinemu/dolphinemu/AboutFragment.java
index 906736b039..4a7b636ed6 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/AboutFragment.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/AboutFragment.java
@@ -35,10 +35,13 @@ public class AboutFragment extends Fragment {
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.gamelist_listview, container, false);
mMainList = (ListView) rootView.findViewById(R.id.gamelist);
+
+ String yes = getString(R.string.yes);
+ String no = getString(R.string.no);
List<GameListItem> Input = new ArrayList<GameListItem>();
- Input.add(new GameListItem(m_activity, "Build Revision", NativeLibrary.GetVersionString(), "", true));
- Input.add(new GameListItem(m_activity, "Supports OpenGL ES 3", PrefsFragment.SupportsGLES3() ? "Yes" : "No", "", true));
+ Input.add(new GameListItem(m_activity, getString(R.string.build_revision), NativeLibrary.GetVersionString(), "", true));
+ Input.add(new GameListItem(m_activity, getString(R.string.supports_gles3), PrefsFragment.SupportsGLES3() ? yes : no, "", true));
adapter = new FolderBrowserAdapter(m_activity, R.layout.folderbrowser, Input);
mMainList.setAdapter(adapter);
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java b/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java
index 6cad8cb3bd..fefb13ec14 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java
@@ -38,7 +38,7 @@ public class DolphinEmulator<MainActivity> extends Activity
out.close();
out = null;
} catch(IOException e) {
- Log.e("tag", "Failed to copy asset file: " + asset, e);
+ Log.e("DolphinEmulator", "Failed to copy asset file: " + asset, e);
}
}
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/FolderBrowser.java b/Source/Android/src/org/dolphinemu/dolphinemu/FolderBrowser.java
index 9094486197..ee96f445ce 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/FolderBrowser.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/FolderBrowser.java
@@ -24,7 +24,7 @@ public class FolderBrowser extends Fragment {
// Populates the FolderView with the given currDir's contents.
private void Fill(File currDir)
{
- m_activity.setTitle("Current Dir: " + currDir.getName());
+ m_activity.setTitle(getString(R.string.current_dir) + currDir.getName());
File[] dirs = currDir.listFiles();
List<GameListItem>dir = new ArrayList<GameListItem>();
List<GameListItem>fls = new ArrayList<GameListItem>();
@@ -44,17 +44,17 @@ public class FolderBrowser extends Fragment {
{
if(entry.isDirectory())
{
- dir.add(new GameListItem(m_activity, entryName,"Folder",entry.getAbsolutePath(), true));
+ dir.add(new GameListItem(m_activity, entryName, getString(R.string.folder), entry.getAbsolutePath(), true));
}
else
{
if (validExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
{
- fls.add(new GameListItem(m_activity, entryName,"File Size: "+entry.length(),entry.getAbsolutePath(), true));
+ fls.add(new GameListItem(m_activity, entryName,getString(R.string.file_size)+entry.length(),entry.getAbsolutePath(), true));
}
else if (archiveExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
{
- fls.add(new GameListItem(m_activity, entryName,"File Size: "+entry.length(),entry.getAbsolutePath(), false));
+ fls.add(new GameListItem(m_activity, entryName,getString(R.string.file_size)+entry.length(),entry.getAbsolutePath(), false));
}
}
}
@@ -70,7 +70,7 @@ public class FolderBrowser extends Fragment {
// Check for a parent directory to the one we're currently in.
if (!currDir.getPath().equalsIgnoreCase("/"))
- dir.add(0, new GameListItem(m_activity, "..", "Parent Directory", currDir.getParent(), true));
+ dir.add(0, new GameListItem(m_activity, "..", getString(R.string.parent_directory), currDir.getParent(), true));
adapter = new FolderBrowserAdapter(m_activity, R.layout.folderbrowser, dir);
mDrawerList = (ListView) rootView.findViewById(R.id.gamelist);
@@ -95,16 +95,18 @@ public class FolderBrowser extends Fragment {
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
GameListItem o = adapter.getItem(position);
- if(o.getData().equalsIgnoreCase("folder") || o.getData().equalsIgnoreCase("parent directory"))
+ if(o.getData().equalsIgnoreCase(getString(R.string.folder)) || o.getData().equalsIgnoreCase(getString(R.string.parent_directory)))
{
currentDir = new File(o.getPath());
Fill(currentDir);
}
else
+ {
if (o.isValid())
FolderSelected();
else
- Toast.makeText(m_activity, "Can not use compressed file types.", Toast.LENGTH_LONG).show();
+ Toast.makeText(m_activity, getString(R.string.cant_use_compressed_filetypes), Toast.LENGTH_LONG).show();
+ }
}
};
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/GameListActivity.java b/Source/Android/src/org/dolphinemu/dolphinemu/GameListActivity.java
index 9a48de4d8b..845bf72bdd 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/GameListActivity.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/GameListActivity.java
@@ -52,11 +52,11 @@ public class GameListActivity extends Activity
mDrawerList = (ListView) findViewById(R.id.left_drawer);
List<SideMenuItem> dir = new ArrayList<SideMenuItem>();
- dir.add(new SideMenuItem("Game List", 0));
- dir.add(new SideMenuItem("Browse Folder", 1));
- dir.add(new SideMenuItem("Settings", 2));
- dir.add(new SideMenuItem("Gamepad Config", 3));
- dir.add(new SideMenuItem("About", 4));
+ dir.add(new SideMenuItem(getString(R.string.game_list), 0));
+ dir.add(new SideMenuItem(getString(R.string.browse_folder), 1));
+ dir.add(new SideMenuItem(getString(R.string.settings), 2));
+ dir.add(new SideMenuItem(getString(R.string.gamepad_config), 3));
+ dir.add(new SideMenuItem(getString(R.string.about), 4));
mDrawerAdapter = new SideMenuAdapter(this, R.layout.sidemenu, dir);
mDrawerList.setAdapter(mDrawerAdapter);
@@ -179,7 +179,7 @@ public class GameListActivity extends Activity
break;
case 1:
{
- Toast.makeText(mMe, "Loading up the browser", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mMe, getString(R.string.loading_browser), Toast.LENGTH_SHORT).show();
mCurFragmentNum = 1;
mCurFragment = new FolderBrowser();
FragmentManager fragmentManager = getFragmentManager();
@@ -188,7 +188,7 @@ public class GameListActivity extends Activity
break;
case 2:
{
- Toast.makeText(mMe, "Loading up settings", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mMe, getString(R.string.loading_settings), Toast.LENGTH_SHORT).show();
mCurFragmentNum = 2;
mCurFragment = new PrefsFragment();
FragmentManager fragmentManager = getFragmentManager();
@@ -197,7 +197,7 @@ public class GameListActivity extends Activity
break;
case 3:
{
- Toast.makeText(mMe, "Loading up gamepad config", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mMe, getString(R.string.loading_gamepad), Toast.LENGTH_SHORT).show();
mCurFragmentNum = 3;
mCurFragment = new InputConfigFragment();
FragmentManager fragmentManager = getFragmentManager();
@@ -206,7 +206,7 @@ public class GameListActivity extends Activity
break;
case 4:
{
- Toast.makeText(mMe, "Loading up About", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mMe, getString(R.string.about), Toast.LENGTH_SHORT).show();
mCurFragmentNum = 4;
mCurFragment = new AboutFragment();
FragmentManager fragmentManager = getFragmentManager();
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/GameListFragment.java b/Source/Android/src/org/dolphinemu/dolphinemu/GameListFragment.java
index 152c18662b..efcee489a8 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/GameListFragment.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/GameListFragment.java
@@ -63,7 +63,7 @@ public class GameListFragment extends Fragment
if(!entry.isDirectory())
{
if (exts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
- fls.add(new GameListItem(mMe.getApplicationContext(), entryName,"File Size: "+entry.length(),entry.getAbsolutePath(), true));
+ fls.add(new GameListItem(mMe.getApplicationContext(), entryName, getString(R.string.file_size)+entry.length(),entry.getAbsolutePath(), true));
}
}
}
@@ -96,7 +96,7 @@ public class GameListFragment extends Fragment
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
GameListItem o = mGameAdapter.getItem(position);
- if(!(o.getData().equalsIgnoreCase("folder")||o.getData().equalsIgnoreCase("parent directory")))
+ if(!(o.getData().equalsIgnoreCase(getString(R.string.folder))||o.getData().equalsIgnoreCase(getString(R.string.parent_directory))))
{
onFileClick(o.getPath());
}
@@ -104,7 +104,7 @@ public class GameListFragment extends Fragment
};
private void onFileClick(String o)
{
- Toast.makeText(mMe, "File Clicked: " + o, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mMe, getString(R.string.file_clicked) + o, Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
intent.putExtra("Select", o);
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/InputConfigFragment.java b/Source/Android/src/org/dolphinemu/dolphinemu/InputConfigFragment.java
index 91f550d2a2..b11dc4a34b 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/InputConfigFragment.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/InputConfigFragment.java
@@ -47,27 +47,27 @@ public class InputConfigFragment extends Fragment
Bundle savedInstanceState)
{
List<InputConfigItem> Input = new ArrayList<InputConfigItem>();
- Input.add(new InputConfigItem("Draw on-screen controls", "Android-ScreenControls", "True"));
- Input.add(new InputConfigItem("Button A", "Android-InputA"));
- Input.add(new InputConfigItem("Button B", "Android-InputB"));
- Input.add(new InputConfigItem("Button Start", "Android-InputStart"));
- Input.add(new InputConfigItem("Button X", "Android-InputX"));
- Input.add(new InputConfigItem("Button Y", "Android-InputY"));
- Input.add(new InputConfigItem("Button Z", "Android-InputZ"));
- Input.add(new InputConfigItem("D-Pad Up", "Android-DPadUp"));
- Input.add(new InputConfigItem("D-Pad Down", "Android-DPadDown"));
- Input.add(new InputConfigItem("D-Pad Left", "Android-DPadLeft"));
- Input.add(new InputConfigItem("D-Pad Right", "Android-DPadRight"));
- Input.add(new InputConfigItem("Main Stick Up", "Android-MainUp"));
- Input.add(new InputConfigItem("Main Stick Down", "Android-MainDown"));
- Input.add(new InputConfigItem("Main Stick Left", "Android-MainLeft"));
- Input.add(new InputConfigItem("Main Stick Right", "Android-MainRight"));
- Input.add(new InputConfigItem("C Stick Up", "Android-CStickUp"));
- Input.add(new InputConfigItem("C Stick Down", "Android-CStickDown"));
- Input.add(new InputConfigItem("C Stick Left", "Android-CStickLeft"));
- Input.add(new InputConfigItem("C Stick Right", "Android-CStickRight"));
- Input.add(new InputConfigItem("Trigger L", "Android-InputL"));
- Input.add(new InputConfigItem("Trigger R", "Android-InputR"));
+ Input.add(new InputConfigItem(getString(R.string.draw_onscreen_controls), "Android-ScreenControls", "True"));
+ Input.add(new InputConfigItem(getString(R.string.button_a), "Android-InputA"));
+ Input.add(new InputConfigItem(getString(R.string.button_b), "Android-InputB"));
+ Input.add(new InputConfigItem(getString(R.string.button_start), "Android-InputStart"));
+ Input.add(new InputConfigItem(getString(R.string.button_x), "Android-InputX"));
+ Input.add(new InputConfigItem(getString(R.string.button_y), "Android-InputY"));
+ Input.add(new InputConfigItem(getString(R.string.button_z), "Android-InputZ"));
+ Input.add(new InputConfigItem(getString(R.string.dpad_up), "Android-DPadUp"));
+ Input.add(new InputConfigItem(getString(R.string.dpad_down), "Android-DPadDown"));
+ Input.add(new InputConfigItem(getString(R.string.dpad_left), "Android-DPadLeft"));
+ Input.add(new InputConfigItem(getString(R.string.dpad_right), "Android-DPadRight"));
+ Input.add(new InputConfigItem(getString(R.string.main_stick_up), "Android-MainUp"));
+ Input.add(new InputConfigItem(getString(R.string.main_stick_down), "Android-MainDown"));
+ Input.add(new InputConfigItem(getString(R.string.main_stick_left), "Android-MainLeft"));
+ Input.add(new InputConfigItem(getString(R.string.main_stick_right), "Android-MainRight"));
+ Input.add(new InputConfigItem(getString(R.string.c_stick_up), "Android-CStickUp"));
+ Input.add(new InputConfigItem(getString(R.string.c_stick_down), "Android-CStickDown"));
+ Input.add(new InputConfigItem(getString(R.string.c_stick_left), "Android-CStickLeft"));
+ Input.add(new InputConfigItem(getString(R.string.c_stick_right), "Android-CStickRight"));
+ Input.add(new InputConfigItem(getString(R.string.trigger_left), "Android-InputL"));
+ Input.add(new InputConfigItem(getString(R.string.trigger_right), "Android-InputR"));
adapter = new InputConfigAdapter(m_activity, R.layout.folderbrowser, Input);
View rootView = inflater.inflate(R.layout.gamelist_listview, container, false);
@@ -88,12 +88,12 @@ public class InputConfigFragment extends Fragment
String newBind;
if (o.getBind().equals("True"))
{
- Toast.makeText(m_activity, "Not Drawing on screen controls", Toast.LENGTH_SHORT).show();
+ Toast.makeText(m_activity, getString(R.string.not_drawing_onscreen_controls), Toast.LENGTH_SHORT).show();
newBind = "False";
}
else
{
- Toast.makeText(m_activity, "Drawing on screen controls", Toast.LENGTH_SHORT).show();
+ Toast.makeText(m_activity, getString(R.string.drawing_onscreen_controls), Toast.LENGTH_SHORT).show();
newBind = "True";
}
adapter.remove(o);
@@ -101,7 +101,8 @@ public class InputConfigFragment extends Fragment
adapter.insert(o, position);
break;
default: // gamepad controls
- Toast.makeText(m_activity, "Press button to configure " + o.getName(), Toast.LENGTH_SHORT).show();
+
+ Toast.makeText(m_activity, getString(R.string.press_button_to_config, o.getName()), Toast.LENGTH_SHORT).show();
configPosition = position;
Configuring = true;
firstEvent = true;
@@ -136,9 +137,12 @@ public class InputConfigFragment extends Fragment
if (firstEvent)
{
m_values.clear();
- for (InputDevice.MotionRange range : motions) {
+
+ for (InputDevice.MotionRange range : motions)
+ {
m_values.add(event.getAxisValue(range.getAxis()));
}
+
firstEvent = false;
}
else
@@ -164,7 +168,7 @@ public class InputConfigFragment extends Fragment
}
public boolean onKeyEvent(KeyEvent event)
{
- Log.w("Dolphinemu", "Got Event " + event.getAction());
+ Log.w("InputConfigFragment", "Got Event " + event.getAction());
switch (event.getAction()) {
case KeyEvent.ACTION_DOWN:
case KeyEvent.ACTION_UP:
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/InputConfigItem.java b/Source/Android/src/org/dolphinemu/dolphinemu/InputConfigItem.java
index 7511406dc9..ff8a077703 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/InputConfigItem.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/InputConfigItem.java
@@ -10,24 +10,24 @@ public class InputConfigItem implements Comparable<InputConfigItem>{
private String m_Config;
private String m_bind;
- private void Init(String n, String c, String d)
+ private void Init(String name, String config, String defaultBind)
{
- m_name = n;
- m_Config = c;
+ m_name = name;
+ m_Config = config;
String ConfigValues[] = m_Config.split("-");
String Key = ConfigValues[0];
String Value = ConfigValues[1];
- m_bind = NativeLibrary.GetConfig("Dolphin.ini", Key, Value, d);
+ m_bind = NativeLibrary.GetConfig("Dolphin.ini", Key, Value, defaultBind);
}
- public InputConfigItem(String n, String c, String d)
+ public InputConfigItem(String name, String config, String defaultBind)
{
- Init(n, c, d);
+ Init(name, config, defaultBind);
}
- public InputConfigItem(String n, String c)
+ public InputConfigItem(String name, String config)
{
- Init(n, c, "None");
+ Init(name, config, "None");
}
public String getName()
{
@@ -41,9 +41,9 @@ public class InputConfigItem implements Comparable<InputConfigItem>{
{
return m_bind;
}
- public void setBind(String b)
+ public void setBind(String bind)
{
- m_bind = b;
+ m_bind = bind;
}
public int compareTo(InputConfigItem o)
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/PrefsFragment.java b/Source/Android/src/org/dolphinemu/dolphinemu/PrefsFragment.java
index e16b2503c3..e56aeeb479 100644
--- a/Source/Android/src/org/dolphinemu/dolphinemu/PrefsFragment.java
+++ b/Source/Android/src/org/dolphinemu/dolphinemu/PrefsFragment.java
@@ -144,18 +144,18 @@ public class PrefsFragment extends PreferenceFragment {
if (Build.CPU_ABI.contains("x86"))
{
- entries.put("Interpreter", "0");
- entries.put("JIT64 Recompiler", "1");
- entries.put("JITIL Recompiler", "2");
+ entries.put(getString(R.string.interpreter), "0");
+ entries.put(getString(R.string.jit64_recompiler), "1");
+ entries.put(getString(R.string.jitil_recompiler), "2");
}
else if (Build.CPU_ABI.contains("arm"))
{
- entries.put("Interpreter", "0");
- entries.put("JIT ARM Recompiler", "3");
+ entries.put(getString(R.string.interpreter), "0");
+ entries.put(getString(R.string.jit_arm_recompiler), "3");
}
else
{
- entries.put("Interpreter", "0");
+ entries.put(getString(R.string.interpreter), "0");
}
// Convert the key/value sections to arrays respectively so the list can be set.
@@ -163,8 +163,8 @@ public class PrefsFragment extends PreferenceFragment {
etp.setEntries(entries.keySet().toArray(new CharSequence[entries.size()]));
etp.setEntryValues(entries.values().toArray(new CharSequence[entries.size()]));
etp.setKey("cpupref");
- etp.setTitle("CPU Core");
- etp.setSummary("Emulation core to use");
+ etp.setTitle(getString(R.string.cpu_core));
+ etp.setSummary(getString(R.string.emu_core_to_use));
PreferenceCategory mCategory = (PreferenceCategory) findPreference("cpuprefcat");
mCategory.addPreference(etp);
@@ -181,11 +181,11 @@ public class PrefsFragment extends PreferenceFragment {
// Add available graphics renderers to the hashmap to add to the list.
entries.clear();
- entries.put("Software Renderer", "Software Renderer"); // TODO: I think this is a bug? The value shouldn't be the same as the key?
+ entries.put(getString(R.string.software_renderer), "Software Renderer");
videobackend.setKey("gpupref");
- videobackend.setTitle("Video Backend");
- videobackend.setSummary("Video backend to use");
+ videobackend.setTitle(getString(R.string.video_backend));
+ videobackend.setSummary(getString(R.string.video_backend_to_use));
videobackend.setEntries(entries.keySet().toArray(new CharSequence[entries.size()]));
videobackend.setEntryValues(entries.values().toArray(new CharSequence[entries.size()]));