diff options
Diffstat (limited to 'main')
| -rw-r--r-- | main/res/values-de/strings.xml | 25 | ||||
| -rw-r--r-- | main/res/values-fr/strings.xml | 25 | ||||
| -rw-r--r-- | main/res/values-it/strings.xml | 29 | ||||
| -rw-r--r-- | main/res/values-sv/strings.xml | 27 | ||||
| -rw-r--r-- | main/res/values/strings.xml | 25 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/CompassActivity.java | 9 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/speech/TextFactory.java | 74 |
7 files changed, 163 insertions, 51 deletions
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml index d8c0422..a41fa40 100644 --- a/main/res/values-de/strings.xml +++ b/main/res/values-de/strings.xml @@ -1095,10 +1095,27 @@ <string name="tts_service">Sprechender Kompass</string> <string name="tts_start">Starte Sprache</string> <string name="tts_stop">Stoppe Sprache</string> - <string name="tts_kilometers">%s Kilometer</string> - <string name="tts_meters">%s Meter</string> - <string name="tts_miles">%s Meilen</string> - <string name="tts_feet">%s Fuß</string> + <string name="tts_one_kilometer">ein Kilometer</string> + <plurals name="tts_kilometers"> + <item quantity="one">%s Kilometer</item> + <item quantity="other">%s Kilometer</item> + </plurals> + <string name="tts_one_meter">ein Meter</string> + <plurals name="tts_meters"> + <item quantity="one">%s Meter</item> + <item quantity="other">%s Meter</item> + </plurals> + <string name="tts_one_mile">eine Meile</string> + <plurals name="tts_miles"> + <item quantity="one">%s Meile</item> + <item quantity="other">%s Meilen</item> + </plurals> + <string name="tts_one_foot">ein Fuß</string> + <plurals name="tts_feet"> + <item quantity="one">%s Fuß</item> + <item quantity="other">%s Fuß</item> + </plurals> + <string name="tts_one_oclock">ein Uhr</string> <string name="tts_oclock">%s Uhr</string> <!-- various --> diff --git a/main/res/values-fr/strings.xml b/main/res/values-fr/strings.xml index d0f742d..c2b2001 100644 --- a/main/res/values-fr/strings.xml +++ b/main/res/values-fr/strings.xml @@ -1069,10 +1069,27 @@ <string name="tts_service">Boussole parlante</string> <string name="tts_start">Commencer à parler</string> <string name="tts_stop">Arrêter de parler</string> - <string name="tts_kilometers">%s kilomètres</string> - <string name="tts_meters">%s mètres</string> - <string name="tts_miles">%s milles</string> - <string name="tts_feet">%s pieds</string> + <string name="tts_one_kilometer">un kilomètre</string> + <plurals name="tts_kilometers"> + <item quantity="one">%s kilomètre</item> + <item quantity="other">%s kilomètres</item> + </plurals> + <string name="tts_one_meter">un mètre</string> + <plurals name="tts_meters"> + <item quantity="one">%s mètre</item> + <item quantity="other">%s mètres</item> + </plurals> + <string name="tts_one_mile">un mille</string> + <plurals name="tts_miles"> + <item quantity="one">%s mille</item> + <item quantity="other">%s milles</item> + </plurals> + <string name="tts_one_foot">un pied</string> + <plurals name="tts_feet"> + <item quantity="one">%s pied</item> + <item quantity="other">%s pieds</item> + </plurals> + <string name="tts_one_oclock">une heure</string> <string name="tts_oclock">%s heures</string> <!-- various --> diff --git a/main/res/values-it/strings.xml b/main/res/values-it/strings.xml index c0a282c..5a9c107 100644 --- a/main/res/values-it/strings.xml +++ b/main/res/values-it/strings.xml @@ -1086,12 +1086,29 @@ <string name="tts_service">Bussola parlante</string> <string name="tts_start">Start voce</string> <string name="tts_stop">Stop voce</string> - <string name="tts_kilometers">%s chilometri</string> - <string name="tts_meters">%s metri</string> - <string name="tts_miles">%s miglia</string> - <string name="tts_feet">%s piedi</string> - <string name="tts_oclock">%s precisi</string> - + <string name="tts_one_kilometer">uno chilometro</string> + <plurals name="tts_kilometers"> + <item quantity="one">%s chilometro</item> + <item quantity="other">%s chilometri</item> + </plurals> + <string name="tts_one_meter">uno metro</string> + <plurals name="tts_meters"> + <item quantity="one">%s metro</item> + <item quantity="other">%s metri</item> + </plurals> + <string name="tts_one_mile">uno miglio</string> + <plurals name="tts_miles"> + <item quantity="one">%s miglio</item> + <item quantity="other">%s miglia</item> + </plurals> + <string name="tts_one_foot">uno piede</string> + <plurals name="tts_feet"> + <item quantity="one">%s piede</item> + <item quantity="other">%s piedi</item> + </plurals> + <string name="tts_one_oclock">a ore una</string> + <string name="tts_oclock">a ore %s</string> + <!-- various --> <string name="clipboard_copy_ok">Copiato nella clipboard</string> diff --git a/main/res/values-sv/strings.xml b/main/res/values-sv/strings.xml index b7cba9a..2e1d66a 100644 --- a/main/res/values-sv/strings.xml +++ b/main/res/values-sv/strings.xml @@ -877,12 +877,29 @@ <string name="tts_service">Talande kompass</string> <string name="tts_start">Starta tal</string> <string name="tts_stop">Stoppa tal</string> - <string name="tts_kilometers">%s kilometer</string> - <string name="tts_meters">%s meter</string> - <string name="tts_miles">%s eng. mil</string> - <string name="tts_feet">%s fot</string> + <string name="tts_one_kilometer">en kilometer</string> + <plurals name="tts_kilometers"> + <item quantity="one">%s kilometer</item> + <item quantity="other">%s kilometer</item> + </plurals> + <string name="tts_one_meter">en meter</string> + <plurals name="tts_meters"> + <item quantity="one">%s meter</item> + <item quantity="other">%s meter</item> + </plurals> + <string name="tts_one_mile">en engelsk mil</string> + <plurals name="tts_miles"> + <item quantity="one">%s engelsk mil</item> + <item quantity="other">%s engelsk mil</item> + </plurals> + <string name="tts_one_foot">en fot</string> + <plurals name="tts_feet"> + <item quantity="one">%s fot</item> + <item quantity="other">%s fot</item> + </plurals> + <string name="tts_one_oclock">Klockan ett</string> <string name="tts_oclock">Klockan %s</string> - + <!-- various --> <string name="clipboard_copy_ok">Kopierat till urklipp</string> diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index 4a96646..f5dfcb9 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -1097,10 +1097,27 @@ <string name="tts_service">Talking compass</string> <string name="tts_start">Start talking</string> <string name="tts_stop">Stop talking</string> - <string name="tts_kilometers">%s kilometers</string> - <string name="tts_meters">%s meters</string> - <string name="tts_miles">%s miles</string> - <string name="tts_feet">%s feet</string> + <string name="tts_one_kilometer">one kilometer</string> + <plurals name="tts_kilometers"> + <item quantity="one">%s kilometer</item> + <item quantity="other">%s kilometers</item> + </plurals> + <string name="tts_one_meter">one meter</string> + <plurals name="tts_meters"> + <item quantity="one">%s meter</item> + <item quantity="other">%s meters</item> + </plurals> + <string name="tts_one_mile">one mile</string> + <plurals name="tts_miles"> + <item quantity="one">%s mile</item> + <item quantity="other">%s miles</item> + </plurals> + <string name="tts_one_foot">one foot</string> + <plurals name="tts_feet"> + <item quantity="one">%s foot</item> + <item quantity="other">%s feet</item> + </plurals> + <string name="tts_one_oclock">one o\'clock</string> <string name="tts_oclock">%s o\'clock</string> <!-- various --> diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java index 4f8af08..9da428d 100644 --- a/main/src/cgeo/geocaching/CompassActivity.java +++ b/main/src/cgeo/geocaching/CompassActivity.java @@ -127,8 +127,7 @@ public class CompassActivity extends AbstractActivity { final IWaypoint coordinate = coordinates.get(i); subMenu.add(0, COORDINATES_OFFSET + i, 0, coordinate.getName() + " (" + coordinate.getCoordType() + ")"); } - } - else { + } else { menu.findItem(R.id.menu_select_destination).setVisible(false); } return true; @@ -199,8 +198,7 @@ public class CompassActivity extends AbstractActivity { protected void onActivityResult(int request, int result, Intent data) { if (request == REQUEST_TTS_DATA_CHECK && result == Engine.CHECK_VOICE_DATA_PASS) { SpeechService.startService(this, dstCoords); - } - else { + } else { Log.i("TTS failed to start. Request: " + request + " result: " + result); startActivity(new Intent(Engine.ACTION_INSTALL_TTS_DATA)); } @@ -248,8 +246,7 @@ public class CompassActivity extends AbstractActivity { if (geo.getCoords() != null) { if (geo.getSatellitesVisible() >= 0) { navSatellites.setText(res.getString(R.string.loc_sat) + ": " + geo.getSatellitesFixed() + "/" + geo.getSatellitesVisible()); - } - else { + } else { navSatellites.setText(""); } navType.setText(res.getString(geo.getLocationProvider().resourceId)); diff --git a/main/src/cgeo/geocaching/speech/TextFactory.java b/main/src/cgeo/geocaching/speech/TextFactory.java index 0e13564..d4f3a48 100644 --- a/main/src/cgeo/geocaching/speech/TextFactory.java +++ b/main/src/cgeo/geocaching/speech/TextFactory.java @@ -25,39 +25,66 @@ public class TextFactory { float kilometers = position.distanceTo(target); if (Settings.isUseMetricUnits()) { - if (kilometers >= 5.0) { - return getString(R.string.tts_kilometers, String.valueOf(Math.round(kilometers))); - } - if (kilometers >= 1.0) { - String digits = String.format(Locale.getDefault(), "%.1f", kilometers); - return getString(R.string.tts_kilometers, digits); - } - int meters = (int) (kilometers * 1000.0); - if (meters > 50) { - return getString(R.string.tts_meters, String.valueOf(Math.round(meters / 10.0) * 10)); - } - return getString(R.string.tts_meters, String.valueOf(meters)); + return getDistance(kilometers, (int) (kilometers * 1000.0), + 5.0f, 1.0f, 50, + R.plurals.tts_kilometers, R.string.tts_one_kilometer, + R.plurals.tts_meters, R.string.tts_one_meter); } + return getDistance(kilometers / IConversion.MILES_TO_KILOMETER, + (int) (kilometers * 1000.0 * IConversion.METERS_TO_FEET), + 3.0f, 0.2f, 300, + R.plurals.tts_miles, R.string.tts_one_mile, + R.plurals.tts_feet, R.string.tts_one_foot); + } - float miles = kilometers / IConversion.MILES_TO_KILOMETER; - if (miles >= 3.0) { - return getString(R.string.tts_miles, String.valueOf(Math.round(miles))); + private static String getDistance(float farDistance, int nearDistance, + float farFarAway, float farNearAway, int nearFarAway, + int farId, int farOneId, int nearId, int nearOneId) { + if (farDistance >= farFarAway) { + // example: "5 kilometers" - always without decimal digits + int quantity = Math.round(farDistance); + if (quantity == 1) { + return getString(farOneId, quantity, String.valueOf(quantity)); + } + return getQuantityString(farId, quantity, String.valueOf(quantity)); } - if (miles >= 0.2) { // approx 1000 ft - String digits = String.format(Locale.getDefault(), "%.1f", miles); - return getString(R.string.tts_miles, digits); + if (farDistance >= farNearAway) { + // example: "2.2 kilometers" - decimals if necessary + float precision1 = Math.round(farDistance * 10.0f) / 10.0f; + float precision0 = Math.round(farDistance); + if (precision1 == precision0) { + // this is an int - e.g. 2 kilometers + int quantity = (int) precision0; + if (quantity == 1) { + return getString(farOneId, quantity, String.valueOf(quantity)); + } + return getQuantityString(farId, quantity, String.valueOf(quantity)); + } + // this is no int - e.g. 1.7 kilometers + String digits = String.format(Locale.getDefault(), "%.1f", farDistance); + // always use the plural (9 leads to plural) + return getQuantityString(farId, 9, digits); + } + // example: "34 meters" + int quantity = nearDistance; + if (quantity > nearFarAway) { + // example: "120 meters" - rounded to 10 meters + quantity = (int) Math.round(quantity / 10.0) * 10; } - int feet = (int) (kilometers * 1000.0 * IConversion.METERS_TO_FEET); - if (feet > 300) { - return getString(R.string.tts_feet, String.valueOf(Math.round(feet / 10.0) * 10)); + if (quantity == 1) { + return getString(nearOneId, quantity, String.valueOf(quantity)); } - return getString(R.string.tts_feet, String.valueOf(feet)); + return getQuantityString(nearId, quantity, String.valueOf(quantity)); } private static String getString(int resourceId, Object... formatArgs) { return cgeoapplication.getInstance().getString(resourceId, formatArgs); } + private static String getQuantityString(int resourceId, int quantity, Object... formatArgs) { + return cgeoapplication.getInstance().getResources().getQuantityString(resourceId, quantity, formatArgs); + } + private static String getDirection(Geopoint position, Geopoint target, float direction) { final int bearing = (int) position.bearingTo(target); int degrees = (int) AngleUtils.normalize(bearing - direction); @@ -66,6 +93,9 @@ public class TextFactory { if (hours == 0) { hours = 12; } + if (hours == 1) { + return getString(R.string.tts_one_oclock, String.valueOf(hours)); + } return getString(R.string.tts_oclock, String.valueOf(hours)); } } |
