diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 057c9d14b..d67c37962 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -155,4 +155,20 @@
\"%1$s\" отключен. Вам нужно повторно включить этот репозиторий для установки приложений из него.
%s или позднее
до %s
+
+ Детские
+ Разработка
+ Игры
+ Интернет
+ Математика
+ Мультимедиа
+ Навигация
+ Новости
+ Офис
+ Связь
+ Чтение
+ Научные
+ Безопасность
+ Системные
+ Обои
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6f15f3a5e..0d0861e7c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -216,4 +216,20 @@
App icon
Repo icon
+ Children
+ Development
+ Games
+ Internet
+ Mathematics
+ Multimedia
+ Navigation
+ News
+ Office
+ Phone & SMS
+ Reading
+ Science & Education
+ Security
+ System
+ Wallpaper
+
diff --git a/src/org/fdroid/fdroid/CompatibilityChecker.java b/src/org/fdroid/fdroid/CompatibilityChecker.java
index c17565120..f750f971a 100644
--- a/src/org/fdroid/fdroid/CompatibilityChecker.java
+++ b/src/org/fdroid/fdroid/CompatibilityChecker.java
@@ -34,11 +34,13 @@ public class CompatibilityChecker extends Compatibility {
logMsg.append("Available device features:");
features = new HashSet();
if (pm != null) {
- for (FeatureInfo fi : pm.getSystemAvailableFeatures()) {
- features.add(fi.name);
- logMsg.append('\n');
- logMsg.append(fi.name);
- }
+ final FeatureInfo[] featureArray = pm.getSystemAvailableFeatures();
+ if (featureArray != null)
+ for (FeatureInfo fi : pm.getSystemAvailableFeatures()) {
+ features.add(fi.name);
+ logMsg.append('\n');
+ logMsg.append(fi.name);
+ }
}
cpuAbis = SupportedArchitectures.getAbis();
diff --git a/src/org/fdroid/fdroid/SearchResults.java b/src/org/fdroid/fdroid/SearchResults.java
index f2a1d5357..01adb01b1 100644
--- a/src/org/fdroid/fdroid/SearchResults.java
+++ b/src/org/fdroid/fdroid/SearchResults.java
@@ -47,6 +47,7 @@ public class SearchResults extends ListActivity {
private static final int SEARCH = Menu.FIRST;
+ private Cursor cursor;
private AppListAdapter adapter;
protected String getQuery() {
@@ -107,10 +108,12 @@ public class SearchResults extends ListActivity {
if (query == null || query.length() == 0)
finish();
- Cursor cursor = getContentResolver().query(
+ if (cursor != null) cursor.close();
+ cursor = managedQuery(
AppProvider.getSearchUri(query), AppListFragment.APP_PROJECTION,
null, null, AppListFragment.APP_SORT);
+
TextView tv = (TextView) findViewById(R.id.description);
String headertext;
int count = cursor != null ? cursor.getCount() : 0;
diff --git a/src/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java b/src/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java
index c3d1206ab..3037352b5 100644
--- a/src/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java
+++ b/src/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java
@@ -3,6 +3,7 @@ package org.fdroid.fdroid.views.fragments;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.res.Resources;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
@@ -20,6 +21,7 @@ import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.views.AppListAdapter;
import org.fdroid.fdroid.views.AvailableAppListAdapter;
+import java.util.ArrayList;
import java.util.List;
public class AvailableAppsFragment extends AppListFragment implements
@@ -86,13 +88,22 @@ public class AvailableAppsFragment extends AppListFragment implements
final List categories = AppProvider.Helper.categories(getActivity());
+ // attempt to translate category names with fallback to default name
+ List translatedCategories = new ArrayList<>(categories.size());
+ Resources res = getResources();
+ for (String category:categories)
+ {
+ int id = res.getIdentifier(category.replace(" & ", "_"), "string", getActivity().getPackageName());
+ translatedCategories.add(id == 0 ? category : getString(id));
+ }
+
categorySpinner = new Spinner(getActivity());
// Giving it an ID lets the default save/restore state
// functionality do its stuff.
categorySpinner.setId(R.id.categorySpinner);
ArrayAdapter adapter = new ArrayAdapter(
- getActivity(), android.R.layout.simple_spinner_item, categories);
+ getActivity(), android.R.layout.simple_spinner_item, translatedCategories);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
categorySpinner.setAdapter(adapter);