updated translation functionality for downloaded maps, tts etc.
This commit is contained in:
parent
1b8caefb6b
commit
5b04bf969d
5 changed files with 207 additions and 71 deletions
|
@ -1746,23 +1746,6 @@ public class OsmandSettings {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getVoiceName(Context ctx, String basename) {
|
|
||||||
try {
|
|
||||||
String nm = basename.replace('-', '_').replace(' ', '_');
|
|
||||||
if (nm.endsWith("_tts") || nm.endsWith("-tts")) {
|
|
||||||
nm = nm.substring(0, nm.length() - 4);
|
|
||||||
}
|
|
||||||
Field f = R.string.class.getField("lang_"+nm);
|
|
||||||
if (f != null) {
|
|
||||||
Integer in = (Integer) f.get(null);
|
|
||||||
return ctx.getString(in);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.err.println(e.getMessage());
|
|
||||||
}
|
|
||||||
return basename;
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum DayNightMode {
|
public enum DayNightMode {
|
||||||
AUTO(R.string.daynight_mode_auto),
|
AUTO(R.string.daynight_mode_auto),
|
||||||
DAY(R.string.daynight_mode_day),
|
DAY(R.string.daynight_mode_day),
|
||||||
|
|
|
@ -18,6 +18,7 @@ import net.osmand.plus.*;
|
||||||
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
|
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
|
||||||
import net.osmand.plus.activities.LocalIndexHelper.LocalIndexType;
|
import net.osmand.plus.activities.LocalIndexHelper.LocalIndexType;
|
||||||
import net.osmand.plus.download.IndexItem;
|
import net.osmand.plus.download.IndexItem;
|
||||||
|
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
|
@ -72,7 +73,7 @@ public class LocalIndexesActivity extends OsmandExpandableListActivity {
|
||||||
MessageFormat formatGb = new MessageFormat("{0, number,#.##} GB", Locale.US);
|
MessageFormat formatGb = new MessageFormat("{0, number,#.##} GB", Locale.US);
|
||||||
private ContextMenuAdapter optionsMenuAdapter;
|
private ContextMenuAdapter optionsMenuAdapter;
|
||||||
private ActionMode actionMode;
|
private ActionMode actionMode;
|
||||||
private OsmandRegions osmandRegions;
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
|
@ -87,7 +88,7 @@ public class LocalIndexesActivity extends OsmandExpandableListActivity {
|
||||||
|
|
||||||
descriptionLoader = new LoadLocalIndexDescriptionTask();
|
descriptionLoader = new LoadLocalIndexDescriptionTask();
|
||||||
listAdapter = new LocalIndexesAdapter(this);
|
listAdapter = new LocalIndexesAdapter(this);
|
||||||
osmandRegions = ((OsmandApplication) getApplication()).getResourceManager().getOsmandRegions();
|
|
||||||
|
|
||||||
|
|
||||||
getExpandableListView().setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
|
getExpandableListView().setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
|
||||||
|
@ -881,7 +882,8 @@ public class LocalIndexesActivity extends OsmandExpandableListActivity {
|
||||||
}
|
}
|
||||||
TextView viewName = ((TextView) v.findViewById(R.id.local_index_name));
|
TextView viewName = ((TextView) v.findViewById(R.id.local_index_name));
|
||||||
String mapDescr = getMapDescription(child.getFileName());
|
String mapDescr = getMapDescription(child.getFileName());
|
||||||
String mapName = getMapName(child.getFileName());
|
String mapName = FileNameTranslationHelper.getFileName(ctx, ((OsmandApplication) getApplication()).getResourceManager().getOsmandRegions(), child.getFileName());
|
||||||
|
|
||||||
if (mapDescr.length() > 0){
|
if (mapDescr.length() > 0){
|
||||||
viewName.setText(mapDescr + " - " + mapName);
|
viewName.setText(mapDescr + " - " + mapName);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1017,37 +1019,7 @@ public class LocalIndexesActivity extends OsmandExpandableListActivity {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getMapName(String fileName){
|
|
||||||
String mapname = getBasename(fileName);
|
|
||||||
String lc = mapname.toLowerCase();
|
|
||||||
|
|
||||||
String std = getStandardMapName(ctx,lc);
|
|
||||||
if (std != null){
|
|
||||||
return std;
|
|
||||||
}
|
|
||||||
|
|
||||||
return osmandRegions.getLocaleName(mapname);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getBasename(String fileName) {
|
|
||||||
if (fileName.endsWith(IndexConstants.EXTRA_ZIP_EXT)) {
|
|
||||||
return fileName.substring(0, fileName.length() - IndexConstants.EXTRA_ZIP_EXT.length());
|
|
||||||
}
|
|
||||||
if (fileName.endsWith(IndexConstants.SQLITE_EXT)) {
|
|
||||||
return fileName.substring(0, fileName.length() - IndexConstants.SQLITE_EXT.length()).replace('_', ' ');
|
|
||||||
}
|
|
||||||
|
|
||||||
int ls = fileName.lastIndexOf('-');
|
|
||||||
if (ls >= 0) {
|
|
||||||
return fileName.substring(0, ls);
|
|
||||||
} else {
|
|
||||||
ls = fileName.lastIndexOf(".");
|
|
||||||
if (ls >= 0){
|
|
||||||
return fileName.substring(0,ls);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return fileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getMapDescription(String fileName){
|
private String getMapDescription(String fileName){
|
||||||
int ls = fileName.lastIndexOf(".");
|
int ls = fileName.lastIndexOf(".");
|
||||||
|
@ -1062,21 +1034,5 @@ public class LocalIndexesActivity extends OsmandExpandableListActivity {
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getStandardMapName(Context ctx, String basename) {
|
|
||||||
if(basename.equals("world-ski")) {
|
|
||||||
return ctx.getString(R.string.index_item_world_ski);
|
|
||||||
} else if(basename.equals("world_altitude_correction_ww15mgh")) {
|
|
||||||
return ctx.getString(R.string.index_item_world_altitude_correction);
|
|
||||||
} else if(basename.equals("world_basemap")) {
|
|
||||||
return ctx.getString(R.string.index_item_world_basemap);
|
|
||||||
} else if(basename.equals("world_bitcoin_payments")) {
|
|
||||||
return ctx.getString(R.string.index_item_world_bitcoin_payments);
|
|
||||||
} else if(basename.equals("world_seamarks")) {
|
|
||||||
return ctx.getString(R.string.index_item_world_seamarks);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ import net.osmand.plus.R;
|
||||||
import net.osmand.plus.Version;
|
import net.osmand.plus.Version;
|
||||||
import net.osmand.plus.base.SuggestExternalDirectoryDialog;
|
import net.osmand.plus.base.SuggestExternalDirectoryDialog;
|
||||||
import net.osmand.plus.download.DownloadActivityType;
|
import net.osmand.plus.download.DownloadActivityType;
|
||||||
|
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
||||||
import net.osmand.plus.render.NativeOsmandLibrary;
|
import net.osmand.plus.render.NativeOsmandLibrary;
|
||||||
import net.osmand.plus.voice.CommandPlayer;
|
import net.osmand.plus.voice.CommandPlayer;
|
||||||
import net.osmand.render.RenderingRulesStorage;
|
import net.osmand.render.RenderingRulesStorage;
|
||||||
|
@ -564,7 +565,7 @@ public class SettingsGeneralActivity extends SettingsBaseActivity {
|
||||||
entries[k++] = getString(R.string.voice_not_use);
|
entries[k++] = getString(R.string.voice_not_use);
|
||||||
for (String s : voiceFiles) {
|
for (String s : voiceFiles) {
|
||||||
entries[k] = (s.contains("tts") ? getString(R.string.ttsvoice) +" ":"") +
|
entries[k] = (s.contains("tts") ? getString(R.string.ttsvoice) +" ":"") +
|
||||||
OsmandSettings.getVoiceName(this, s);
|
FileNameTranslationHelper.getVoiceName(this, s);
|
||||||
entrieValues[k] = s;
|
entrieValues[k] = s;
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandSettings;
|
import net.osmand.plus.OsmandSettings;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.Version;
|
import net.osmand.plus.Version;
|
||||||
|
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
import org.xmlpull.v1.XmlPullParser;
|
||||||
|
@ -194,10 +195,10 @@ public class DownloadActivityType {
|
||||||
if (this == VOICE_FILE) {
|
if (this == VOICE_FILE) {
|
||||||
if (fileName.endsWith(IndexConstants.VOICE_INDEX_EXT_ZIP)) {
|
if (fileName.endsWith(IndexConstants.VOICE_INDEX_EXT_ZIP)) {
|
||||||
return ctx.getString(R.string.voice) + "\n" +
|
return ctx.getString(R.string.voice) + "\n" +
|
||||||
OsmandSettings.getVoiceName(ctx, getBasename(indexItem));
|
FileNameTranslationHelper.getVoiceName(ctx, getBasename(indexItem));
|
||||||
} else if (fileName.endsWith(IndexConstants.TTSVOICE_INDEX_EXT_ZIP)) {
|
} else if (fileName.endsWith(IndexConstants.TTSVOICE_INDEX_EXT_ZIP)) {
|
||||||
return ctx.getString(R.string.ttsvoice) + "\n" +
|
return ctx.getString(R.string.ttsvoice) + "\n" +
|
||||||
OsmandSettings.getVoiceName(ctx, getBasename(indexItem));
|
FileNameTranslationHelper.getVoiceName(ctx, getBasename(indexItem));
|
||||||
}
|
}
|
||||||
return getBasename(indexItem);
|
return getBasename(indexItem);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,195 @@
|
||||||
|
package net.osmand.plus.helpers;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import net.osmand.IndexConstants;
|
||||||
|
import net.osmand.map.OsmandRegions;
|
||||||
|
import net.osmand.plus.OsmandSettings;
|
||||||
|
import net.osmand.plus.R;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Barsik on 07.07.2014.
|
||||||
|
*/
|
||||||
|
public class FileNameTranslationHelper {
|
||||||
|
|
||||||
|
public static String getFileName(Context ctx, OsmandRegions regions, String fileName) {
|
||||||
|
String basename = getBasename(fileName);
|
||||||
|
if (basename.endsWith("_wiki")) { //wiki files
|
||||||
|
String wikiName = getStandardLangName(ctx, basename.substring(0, basename.indexOf("_wiki")));
|
||||||
|
String wikiWord = ctx.getString(R.string.amenity_type_osmwiki);
|
||||||
|
int index = wikiWord.indexOf("(");
|
||||||
|
if (index >= 0) {
|
||||||
|
//removing word in "()" from recourse file
|
||||||
|
return wikiWord.substring(0, index) + wikiName;
|
||||||
|
}
|
||||||
|
return ctx.getString(R.string.amenity_type_osmwiki) + " " + wikiName;
|
||||||
|
} else if (fileName.endsWith("tts")) { //tts files
|
||||||
|
return getVoiceName(ctx, fileName);
|
||||||
|
} else if (fileName.length() == 2) { //voice recorded files
|
||||||
|
try {
|
||||||
|
Field f = R.string.class.getField("lang_"+fileName);
|
||||||
|
if (f != null) {
|
||||||
|
Integer in = (Integer) f.get(null);
|
||||||
|
return ctx.getString(in);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//if nothing else
|
||||||
|
String lc = basename.toLowerCase();
|
||||||
|
String std = getStandardMapName(ctx, lc);
|
||||||
|
if (std != null) {
|
||||||
|
return std;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (regions != null) {
|
||||||
|
return regions.getLocaleName(basename);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getVoiceName(Context ctx, String basename) {
|
||||||
|
try {
|
||||||
|
String nm = basename.replace('-', '_').replace(' ', '_');
|
||||||
|
if (nm.endsWith("_tts") || nm.endsWith("-tts")) {
|
||||||
|
nm = nm.substring(0, nm.length() - 4);
|
||||||
|
}
|
||||||
|
Field f = R.string.class.getField("lang_"+nm);
|
||||||
|
if (f != null) {
|
||||||
|
Integer in = (Integer) f.get(null);
|
||||||
|
return ctx.getString(in);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println(e.getMessage());
|
||||||
|
}
|
||||||
|
return basename;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getBasename(String fileName) {
|
||||||
|
if (fileName.endsWith(IndexConstants.EXTRA_ZIP_EXT)) {
|
||||||
|
return fileName.substring(0, fileName.length() - IndexConstants.EXTRA_ZIP_EXT.length());
|
||||||
|
}
|
||||||
|
if (fileName.endsWith(IndexConstants.SQLITE_EXT)) {
|
||||||
|
return fileName.substring(0, fileName.length() - IndexConstants.SQLITE_EXT.length()).replace('_', ' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
int ls = fileName.lastIndexOf('-');
|
||||||
|
if (ls >= 0) {
|
||||||
|
return fileName.substring(0, ls);
|
||||||
|
} else {
|
||||||
|
ls = fileName.lastIndexOf(".");
|
||||||
|
if (ls >= 0) {
|
||||||
|
return fileName.substring(0, ls);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getStandardLangName(Context ctx, String filename) {
|
||||||
|
if (filename.equals("Croatian")) {
|
||||||
|
return ctx.getString(R.string.lang_hr);
|
||||||
|
} else if (filename.equals("Chinese")) {
|
||||||
|
return ctx.getString(R.string.lang_zh);
|
||||||
|
} else if (filename.equals("Portuguese")) {
|
||||||
|
return ctx.getString(R.string.lang_pt_br);
|
||||||
|
} else if (filename.equals("English")) {
|
||||||
|
return ctx.getString(R.string.lang_en);
|
||||||
|
} else if (filename.equals("Afrikaans") || filename.equals("Africaans")) {
|
||||||
|
return ctx.getString(R.string.lang_af);
|
||||||
|
} else if (filename.equals("Armenian")) {
|
||||||
|
return ctx.getString(R.string.lang_hy);
|
||||||
|
} else if (filename.equals("Basque")) {
|
||||||
|
return ctx.getString(R.string.lang_eu);
|
||||||
|
} else if (filename.equals("Belarusian")) {
|
||||||
|
return ctx.getString(R.string.lang_be);
|
||||||
|
} else if (filename.equals("Bosnian")) {
|
||||||
|
return ctx.getString(R.string.lang_bs);
|
||||||
|
} else if (filename.equals("Bulgarian")) {
|
||||||
|
return ctx.getString(R.string.lang_bg);
|
||||||
|
} else if (filename.equals("Catalan")) {
|
||||||
|
return ctx.getString(R.string.lang_ca);
|
||||||
|
} else if (filename.equals("Czech")) {
|
||||||
|
return ctx.getString(R.string.lang_cs);
|
||||||
|
} else if (filename.equals("Danish")) {
|
||||||
|
return ctx.getString(R.string.lang_da);
|
||||||
|
} else if (filename.equals("Dutch")) {
|
||||||
|
return ctx.getString(R.string.lang_nl);
|
||||||
|
} else if (filename.equals("Finnish")) {
|
||||||
|
return ctx.getString(R.string.lang_fi);
|
||||||
|
} else if (filename.equals("French")) {
|
||||||
|
return ctx.getString(R.string.lang_fr);
|
||||||
|
} else if (filename.equals("Georgian")) {
|
||||||
|
return ctx.getString(R.string.lang_ka);
|
||||||
|
} else if (filename.equals("German")) {
|
||||||
|
return ctx.getString(R.string.lang_de);
|
||||||
|
} else if (filename.equals("Greek")) {
|
||||||
|
return ctx.getString(R.string.lang_el);
|
||||||
|
} else if (filename.equals("Hebrew")) {
|
||||||
|
return ctx.getString(R.string.lang_iw);
|
||||||
|
} else if (filename.equals("Hindi")) {
|
||||||
|
return ctx.getString(R.string.lang_hi);
|
||||||
|
} else if (filename.equals("Hungarian")) {
|
||||||
|
return ctx.getString(R.string.lang_hu);
|
||||||
|
} else if (filename.equals("Indonesian")) {
|
||||||
|
return ctx.getString(R.string.lang_id);
|
||||||
|
} else if (filename.equals("Italian")) {
|
||||||
|
return ctx.getString(R.string.lang_it);
|
||||||
|
} else if (filename.equals("Japanese")) {
|
||||||
|
return ctx.getString(R.string.lang_ja);
|
||||||
|
} else if (filename.equals("Korean")) {
|
||||||
|
return ctx.getString(R.string.lang_ko);
|
||||||
|
} else if (filename.equals("Latvian")) {
|
||||||
|
return ctx.getString(R.string.lang_lv);
|
||||||
|
} else if (filename.equals("Lithuanian")) {
|
||||||
|
return ctx.getString(R.string.lang_lt);
|
||||||
|
} else if (filename.equals("Marathi")) {
|
||||||
|
return ctx.getString(R.string.lang_mr);
|
||||||
|
} else if (filename.equals("Norwegian")) {
|
||||||
|
return ctx.getString(R.string.lang_no);
|
||||||
|
} else if (filename.equals("Polish")) {
|
||||||
|
return ctx.getString(R.string.lang_pl);
|
||||||
|
} else if (filename.equals("Portuguese")) {
|
||||||
|
return ctx.getString(R.string.lang_pt);
|
||||||
|
} else if (filename.equals("Romanian")) {
|
||||||
|
return ctx.getString(R.string.lang_ro);
|
||||||
|
} else if (filename.equals("Russian")) {
|
||||||
|
return ctx.getString(R.string.lang_ru);
|
||||||
|
} else if (filename.equals("Slovak")) {
|
||||||
|
return ctx.getString(R.string.lang_sk);
|
||||||
|
} else if (filename.equals("Slovenian")) {
|
||||||
|
return ctx.getString(R.string.lang_sl);
|
||||||
|
} else if (filename.equals("Spanish")) {
|
||||||
|
return ctx.getString(R.string.lang_es);
|
||||||
|
} else if (filename.equals("Swedish")) {
|
||||||
|
return ctx.getString(R.string.lang_sv);
|
||||||
|
} else if (filename.equals("Turkish")) {
|
||||||
|
return ctx.getString(R.string.lang_tr);
|
||||||
|
} else if (filename.equals("Ukrainian")) {
|
||||||
|
return ctx.getString(R.string.lang_uk);
|
||||||
|
} else if (filename.equals("Vietnamese")) {
|
||||||
|
return ctx.getString(R.string.lang_vi);
|
||||||
|
} else if (filename.equals("Welsh")) {
|
||||||
|
return ctx.getString(R.string.lang_cy);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getStandardMapName(Context ctx, String basename) {
|
||||||
|
if (basename.equals("world-ski")) {
|
||||||
|
return ctx.getString(R.string.index_item_world_ski);
|
||||||
|
} else if (basename.equals("world_altitude_correction_ww15mgh")) {
|
||||||
|
return ctx.getString(R.string.index_item_world_altitude_correction);
|
||||||
|
} else if (basename.equals("world_basemap")) {
|
||||||
|
return ctx.getString(R.string.index_item_world_basemap);
|
||||||
|
} else if (basename.equals("world_bitcoin_payments")) {
|
||||||
|
return ctx.getString(R.string.index_item_world_bitcoin_payments);
|
||||||
|
} else if (basename.equals("world_seamarks")) {
|
||||||
|
return ctx.getString(R.string.index_item_world_seamarks);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue