forked from upstream-mirrors/OpenTracks
Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c0b84c3d72 | |||
| e275d3e5c0 | |||
| b4ebad2c3c | |||
| 1ab76e1317 | |||
| 3d1104dd0b | |||
| 2df45d31de | |||
| 5436981e0d | |||
| fd2b1bec7d | |||
| bb1eaa5b56 | |||
| dae8eaa97a | |||
| 565b1ce94d | |||
| 543d5e18bf | |||
| 01368df6b1 | |||
| c666d55211 | |||
| 8cc4fd1d4f | |||
| c241a35861 | |||
| 674d231b7a | |||
| bebee59eb2 | |||
| 24f843b0db | |||
| f0259d13dd | |||
| 9dff965a52 | |||
| b4e6d10fbe | |||
| 1a9d88277f | |||
| 4ea956ca0e | |||
| 8060c2e1e3 | |||
| 8c96b65e59 | |||
| a407e94d3c | |||
| 310c790324 | |||
| 12b3d31f5c | |||
| d43dca61c1 | |||
| 20c14a03b2 | |||
| a6601f4eea |
@@ -150,7 +150,7 @@ The developer documentation is in [README_API.md](README_API.md).
|
||||
## Project history
|
||||
|
||||
_OpenTracks_ is based upon Google _My Tracks app_ ([code](https://code.google.com/archive/p/mytracks/)).
|
||||
Initially, _My Tracks_ was initially released by Google in 2010 as [open-source software](http://google-latlong.blogspot.fr/2010/05/code-for-my-tracks-is-now-yours.html).
|
||||
_My Tracks_ was initially released by Google in 2010 as [open-source software](http://google-latlong.blogspot.fr/2010/05/code-for-my-tracks-is-now-yours.html).
|
||||
In 2016, [Google decided to discontinue](https://support.google.com/maps/answer/6333516) _My Tracks_ and stopped distributing it via the Google Play store in April 2016.
|
||||
Then [Plonk42](https://github.com/plonk42) conducted some maintenance work until 2016, so _My Tracks_ could still be used (based upon version _Google's MyTracks_ version 2.0.6).
|
||||
Plonk42's version is available [here](https://github.com/Plonk42/mytracks).
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ Application id: de.dennisguse.opentracks
|
||||
It if it properly tagged F-Droid takes care of building the app and publishing.
|
||||
Usually, it takes two days before the update is published (build, signed, and published).
|
||||
|
||||
The recent build activity can be found [here](https://f-droid.org/wiki/index.php?title=Special:RecentChanges&days=7&from=&hidebots=0&hideanons=1&hideliu=1&limit=500)
|
||||
The recent build activity can be found [here](https://monitor.f-droid.org/builds/build)
|
||||
|
||||
## Google Play Store
|
||||
Application id: `de.dennisguse.opentracks.playstore`
|
||||
|
||||
+11
-9
@@ -6,7 +6,7 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.3.1'
|
||||
classpath 'com.android.tools.build:gradle:7.4.2'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,8 +59,8 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId "de.dennisguse.opentracks"
|
||||
versionCode 5119
|
||||
versionName "v4.2.0"
|
||||
versionCode 5151
|
||||
versionName "v4.3.0"
|
||||
|
||||
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
|
||||
|
||||
@@ -69,6 +69,8 @@ android {
|
||||
|
||||
testInstrumentationRunner "de.dennisguse.opentracks.TestRunner"
|
||||
testInstrumentationRunnerArguments clearPackageData: 'true'
|
||||
|
||||
resConfigs "ar", "bg", "ca", "cs", "da", "de", "el", "en", "es", "et", "eu", "fa", "fi", "fr", "ga", "gl", "hi", "hr", "hu", "in", "it", "iw", "ja", "ko", "lt", "lv", "mo", "ms", "nb", "nl", "pl", "pt", "ro", "ru", "sk", "sl", "sr", "sv", "th", "tl", "tr", "uk", "vi", "zh"
|
||||
}
|
||||
signingConfigs {
|
||||
nightly {
|
||||
@@ -120,21 +122,21 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.2'
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.2'
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.6.0-rc01'
|
||||
implementation 'androidx.appcompat:appcompat:1.6.1'
|
||||
implementation 'androidx.preference:preference:1.2.0'
|
||||
implementation 'androidx.documentfile:documentfile:1.0.1'
|
||||
implementation 'androidx.gridlayout:gridlayout:1.0.0'
|
||||
implementation 'com.google.android.material:material:1.7.0'
|
||||
implementation 'com.google.android.material:material:1.8.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
implementation 'androidx.core:core-splashscreen:1.0.0'
|
||||
|
||||
androidTestImplementation 'androidx.test:core:1.5.0'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.4'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
|
||||
androidTestImplementation 'androidx.test:rules:1.5.0'
|
||||
androidTestImplementation 'androidx.test:runner:1.5.1'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0'
|
||||
androidTestImplementation 'androidx.test:runner:1.5.2'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
|
||||
androidTestImplementation 'org.mockito:mockito-android:4.11.0'
|
||||
|
||||
androidTestUtil 'androidx.test:orchestrator:1.4.2'
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
v4.2.1: OpenTracks
|
||||
|
||||
Changes:
|
||||
- Speed sensor: acceptable wheel diameter is 100mm-4000mm
|
||||
|
||||
Bugfix:
|
||||
- Reconnect to a sensor if connection is lost
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
v4.2.2: OpenTracks
|
||||
|
||||
Bugfix:
|
||||
- Track icon wrongly shown in dialog
|
||||
- Textcolor for heartrate zone 1 was ignoring theme
|
||||
- Not all activityTypes were shown in dropdownlist
|
||||
- Crash due to color not found
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
v4.3.0: OpenTracks
|
||||
|
||||
Changes:
|
||||
- Allow backups (incl. encrypted to the Google)
|
||||
- Android 13: allow app-specific language settings
|
||||
@@ -62,13 +62,16 @@ limitations under the License.
|
||||
|
||||
<application
|
||||
android:name=".Startup"
|
||||
android:allowBackup="false"
|
||||
android:allowBackup="true"
|
||||
android:fullBackupContent="@xml/backup_rules_30_lower"
|
||||
android:dataExtractionRules="@xml/backup_rules_31_higher"
|
||||
android:hardwareAccelerated="true"
|
||||
android:hasFragileUserData="false"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/ThemeCustom">
|
||||
android:theme="@style/ThemeCustom"
|
||||
android:localeConfig="@xml/locales_config">
|
||||
|
||||
<activity
|
||||
android:name=".publicapi.StartRecording"
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.widget.ArrayAdapter;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import de.dennisguse.opentracks.data.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.data.models.ActivityType;
|
||||
import de.dennisguse.opentracks.data.models.Track;
|
||||
import de.dennisguse.opentracks.databinding.TrackEditBinding;
|
||||
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
|
||||
@@ -75,7 +76,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit
|
||||
|
||||
viewBinding.fields.trackEditActivityType.setText(track.getCategory());
|
||||
|
||||
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.activity_types, android.R.layout.simple_dropdown_item_1line);
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, ActivityType.getLocalizedStrings(this));
|
||||
viewBinding.fields.trackEditActivityType.setAdapter(adapter);
|
||||
viewBinding.fields.trackEditActivityType.setOnItemClickListener((parent, view, position, id) -> setActivityTypeIcon(TrackIconUtils.getIconValue(this, (String) viewBinding.fields.trackEditActivityType.getAdapter().getItem(position))));
|
||||
viewBinding.fields.trackEditActivityType.setOnFocusChangeListener((v, hasFocus) -> {
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
import de.dennisguse.opentracks.data.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.data.models.ActivityType;
|
||||
import de.dennisguse.opentracks.data.models.DistanceFormatter;
|
||||
import de.dennisguse.opentracks.data.models.SpeedFormatter;
|
||||
import de.dennisguse.opentracks.data.models.Track;
|
||||
@@ -51,7 +52,7 @@ public class TrackStoppedActivity extends AbstractTrackDeleteActivity implements
|
||||
|
||||
viewBinding.trackEditActivityType.setText(track.getCategory());
|
||||
|
||||
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.activity_types, android.R.layout.simple_dropdown_item_1line);
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, ActivityType.getLocalizedStrings(this));
|
||||
viewBinding.trackEditActivityType.setAdapter(adapter);
|
||||
viewBinding.trackEditActivityType.setOnItemClickListener((parent, view, position, id) -> setActivityTypeIcon(TrackIconUtils.getIconValue(this, (String) viewBinding.trackEditActivityType.getAdapter().getItem(position))));
|
||||
viewBinding.trackEditActivityType.setOnFocusChangeListener((v, hasFocus) -> {
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
package de.dennisguse.opentracks.data.models;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
|
||||
public enum ActivityType {
|
||||
AIRPLANE("AIRPLANE", R.drawable.ic_activity_flight_24dp, true, R.string.activity_type_airplane, R.string.activity_type_commercial_airplane, R.string.activity_type_rc_airplane),
|
||||
BIKE("BIKE", R.drawable.ic_activity_bike_24dp, true, R.string.activity_type_biking, R.string.activity_type_cycling, R.string.activity_type_dirt_bike, R.string.activity_type_road_biking, R.string.activity_type_track_cycling),
|
||||
MOUNTAIN_BIKE("MOUNTAIN_BIKE", R.drawable.ic_activity_mtb_24dp, true, R.string.activity_type_mountain_biking),
|
||||
MOTOR_BIKE("MOTOR_BIKE", R.drawable.ic_activity_motorbike_24dp, true, R.string.activity_type_motor_bike),
|
||||
KAYAK("KAYAK", R.drawable.ic_activity_kayaking_24dp, true, R.string.activity_type_kayaking),
|
||||
BOAT("BOAT", R.drawable.ic_activity_boat_24dp, true, R.string.activity_type_boat, R.string.activity_type_ferry, R.string.activity_type_motor_boating, R.string.activity_type_rc_boat),
|
||||
SAILING("SAILING", R.drawable.ic_activity_sailing_24dp, true, R.string.activity_type_sailing),
|
||||
DRIVE("DRIVE", R.drawable.ic_activity_drive_24dp, true, R.string.activity_type_atv, R.string.activity_type_driving, R.string.activity_type_driving_bus, R.string.activity_type_driving_car),
|
||||
RUN("RUN", R.drawable.ic_activity_run_24dp, false, R.string.activity_type_running, R.string.activity_type_street_running, R.string.activity_type_track_running, R.string.activity_type_trail_running),
|
||||
SKI("SKI", R.drawable.ic_activity_skiing_24dp, true, R.string.activity_type_cross_country_skiing, R.string.activity_type_skiing),
|
||||
SNOW_BOARDING("SNOW_BOARDING", R.drawable.ic_activity_snowboarding_24dp, true, R.string.activity_type_snow_boarding),
|
||||
UNKNOWN("UNKNOWN", R.drawable.ic_logo_24dp, true, R.string.activity_type_unknown),
|
||||
WALK("WALK", R.drawable.ic_activity_walk_24dp, false, R.string.activity_type_hiking, R.string.activity_type_off_trail_hiking, R.string.activity_type_speed_walking, R.string.activity_type_trail_hiking, R.string.activity_type_walking),
|
||||
ESCOOTER("ESCOOTER", R.drawable.ic_activity_escooter_24dp, true, R.string.activity_type_escooter),
|
||||
INLINE_SKATING("INLINES_SKATING", R.drawable.ic_activity_inline_skating_24dp, true, R.string.activity_type_inline_skating),
|
||||
SKATE_BOARDING("SKATE_BOARDING", R.drawable.ic_activity_skateboarding_24dp, true, R.string.activity_type_skate_boarding),
|
||||
CLIMBING("CLIMBING", R.drawable.ic_activity_climbing_24dp, false, R.string.activity_type_climbing),
|
||||
SWIMMING("SWIMMING", R.drawable.ic_activity_swimming_24dp, false, R.string.activity_type_swimming),
|
||||
SWIMMING_OPEN("SWIMMING_OPEN", R.drawable.ic_activity_swimming_open_24dp, false, R.string.activity_type_swimming_open),
|
||||
WORKOUT("WORKOUT", R.drawable.ic_activity_workout_24dp, false, R.string.activity_type_workout);
|
||||
|
||||
final String id;
|
||||
final int iconId;
|
||||
final boolean showSpeedPreferred;
|
||||
final int[] localizedStringIds;
|
||||
|
||||
//isSpeed?
|
||||
|
||||
ActivityType(String id, int iconId, boolean showSpeedPreferred, int... localizedStringIds) {
|
||||
this.id = id;
|
||||
this.iconId = iconId;
|
||||
this.showSpeedPreferred = showSpeedPreferred;
|
||||
this.localizedStringIds = localizedStringIds;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public int getIconId() {
|
||||
return iconId;
|
||||
}
|
||||
|
||||
public boolean isShowSpeedPreferred() {
|
||||
return showSpeedPreferred;
|
||||
}
|
||||
|
||||
public int[] getLocalizedStringIds() {
|
||||
return localizedStringIds;
|
||||
}
|
||||
|
||||
public int getFirstLocalizedStringId() {
|
||||
return localizedStringIds[0];
|
||||
}
|
||||
|
||||
public static List<String> getLocalizedStrings(Context context) {
|
||||
List<String> result = new ArrayList<>();
|
||||
for (ActivityType activityType : values()) {
|
||||
List<String> strings = Arrays.stream(activityType.localizedStringIds)
|
||||
.mapToObj(context::getString)
|
||||
.collect(Collectors.toList());
|
||||
result.addAll(strings);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
package de.dennisguse.opentracks.data.models;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.ui.util.ThemeUtils;
|
||||
|
||||
public class HeartRateZones {
|
||||
|
||||
@@ -12,22 +16,23 @@ public class HeartRateZones {
|
||||
this.max = max;
|
||||
}
|
||||
|
||||
public int getColorForZone(HeartRate current) {
|
||||
public int getTextColorForZone(Context context, HeartRate current) {
|
||||
if (current != null) {
|
||||
if (current.getBPM() >= max.getBPM() * 0.9) {
|
||||
return R.color.heart_rate_zone_textcolor_5;
|
||||
return ContextCompat.getColor(context, R.color.heart_rate_zone_textcolor_5);
|
||||
}
|
||||
if (current.getBPM() >= max.getBPM() * 0.8) {
|
||||
return R.color.heart_rate_zone_textcolor_4;
|
||||
return ContextCompat.getColor(context, R.color.heart_rate_zone_textcolor_4);
|
||||
}
|
||||
if (current.getBPM() >= max.getBPM() * 0.7) {
|
||||
return R.color.heart_rate_zone_textcolor_3;
|
||||
return ContextCompat.getColor(context, R.color.heart_rate_zone_textcolor_3);
|
||||
}
|
||||
if (current.getBPM() >= max.getBPM() * 0.6) {
|
||||
return R.color.heart_rate_zone_textcolor_2;
|
||||
return ContextCompat.getColor(context, R.color.heart_rate_zone_textcolor_2);
|
||||
}
|
||||
}
|
||||
|
||||
return R.color.heart_rate_zone_textcolor_1;
|
||||
// Zone 1
|
||||
return ThemeUtils.getTextColorPrimary(context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,20 +54,23 @@ public abstract class BluetoothConnectionManager<DataType> {
|
||||
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
|
||||
switch (newState) {
|
||||
case BluetoothProfile.STATE_CONNECTING:
|
||||
Log.d(TAG, "Connecting to sensor: " + gatt.getDevice());
|
||||
Log.i(TAG, "Connecting to sensor: " + gatt.getDevice());
|
||||
break;
|
||||
case BluetoothProfile.STATE_CONNECTED:
|
||||
Log.d(TAG, "Connected to sensor: " + gatt.getDevice());
|
||||
Log.i(TAG, "Connected to sensor: " + gatt.getDevice() + "; discovering services.");
|
||||
|
||||
gatt.discoverServices();
|
||||
break;
|
||||
case BluetoothProfile.STATE_DISCONNECTING:
|
||||
Log.d(TAG, "Disconnecting from sensor: " + gatt.getDevice());
|
||||
Log.i(TAG, "Disconnecting from sensor: " + gatt.getDevice());
|
||||
break;
|
||||
|
||||
case BluetoothProfile.STATE_DISCONNECTED:
|
||||
Log.d(TAG, "Disconnected from sensor: " + gatt.getDevice());
|
||||
|
||||
//This is also triggered, if no connection was established (ca. 30s)
|
||||
Log.i(TAG, "Disconnected from sensor: " + gatt.getDevice() + "; trying to reconnect");
|
||||
if (gatt.connect()) {
|
||||
Log.e(TAG, "Could not trigger reconnect for sensor: " + gatt.getDevice());
|
||||
}
|
||||
clearData();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import androidx.preference.DialogPreference;
|
||||
import androidx.preference.PreferenceDialogFragmentCompat;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.data.models.ActivityType;
|
||||
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
|
||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||
|
||||
@@ -79,7 +80,7 @@ public class ActivityTypePreference extends DialogPreference {
|
||||
textView = view.findViewById(R.id.activity_type_preference_text_view);
|
||||
String category = PreferencesUtils.getDefaultActivity();
|
||||
textView.setText(category);
|
||||
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(context, R.array.activity_types, android.R.layout.simple_dropdown_item_1line);
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_dropdown_item_1line, ActivityType.getLocalizedStrings(context));
|
||||
textView.setAdapter(adapter);
|
||||
textView.setOnItemClickListener((parent, v, position, id) -> {
|
||||
String iconValue = TrackIconUtils.getIconValue(context, (String) textView.getAdapter().getItem(position));
|
||||
|
||||
@@ -45,7 +45,7 @@ public class SensorsSettingsFragment extends PreferenceFragmentCompat {
|
||||
if (newValue instanceof String) {
|
||||
try {
|
||||
int newValueInt = Integer.parseInt((String) newValue);
|
||||
return newValueInt > 500 && newValueInt < 4000;
|
||||
return newValueInt >= 100 && newValueInt < 4000;
|
||||
} catch (NumberFormatException e) {
|
||||
Log.w(TAG, "Entered string is no number.");
|
||||
}
|
||||
|
||||
@@ -18,15 +18,15 @@ package de.dennisguse.opentracks.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.util.Pair;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.data.models.ActivityType;
|
||||
|
||||
/**
|
||||
* Utilities for track icon.
|
||||
@@ -35,219 +35,71 @@ import de.dennisguse.opentracks.R;
|
||||
*/
|
||||
public class TrackIconUtils {
|
||||
|
||||
private static final String AIRPLANE = "AIRPLANE";
|
||||
private static final String BIKE = "BIKE";
|
||||
private static final String MOUNTAIN_BIKE = "MOUNTAIN_BIKE";
|
||||
private static final String MOTOR_BIKE = "MOTOR_BIKE";
|
||||
private static final String KAYAK = "KAYAK";
|
||||
private static final String BOAT = "BOAT";
|
||||
private static final String SAILING = "SAILING";
|
||||
private static final String DRIVE = "DRIVE";
|
||||
private static final String RUN = "RUN";
|
||||
private static final String SKI = "SKI";
|
||||
private static final String SNOW_BOARDING = "SNOW_BOARDING";
|
||||
private static final String UNKNOWN = "UNKNOWN";
|
||||
private static final String WALK = "WALK";
|
||||
private static final String ESCOOTER = "ESCOOTER";
|
||||
private static final String INLINE_SKATING = "INLINES_SKATING";
|
||||
private static final String SKATE_BOARDING = "SKATE_BOARDING";
|
||||
private static final String CLIMBING = "CLIMBING";
|
||||
private static final String SWIMMING = "SWIMMING";
|
||||
private static final String SWIMMING_OPEN = "SWIMMING_OPEN";
|
||||
private static final String WORKOUT = "WORKOUT";
|
||||
public static int getIconDrawable(String activityTypeId) {
|
||||
Optional<ActivityType> found = Arrays.stream(ActivityType.values()).filter(
|
||||
it -> it.getId().equals(activityTypeId)
|
||||
).findFirst();
|
||||
|
||||
private static final int ACTIVITY_UNKNOWN_LOGO = R.drawable.ic_logo_24dp;
|
||||
|
||||
private static final int[] AIRPLANE_LIST = new int[]{R.string.activity_type_airplane, R.string.activity_type_commercial_airplane, R.string.activity_type_rc_airplane};
|
||||
private static final int[] BIKE_LIST = new int[]{R.string.activity_type_biking, R.string.activity_type_cycling, R.string.activity_type_dirt_bike, R.string.activity_type_road_biking, R.string.activity_type_track_cycling};
|
||||
private static final int[] BOAT_LIST = new int[]{R.string.activity_type_boat, R.string.activity_type_ferry, R.string.activity_type_motor_boating, R.string.activity_type_rc_boat};
|
||||
private static final int[] CLIMBING_LIST = new int[]{R.string.activity_type_climbing};
|
||||
private static final int[] DRIVE_LIST = new int[]{R.string.activity_type_atv, R.string.activity_type_driving, R.string.activity_type_driving_bus, R.string.activity_type_driving_car};
|
||||
private static final int[] MOTOR_BIKE_LIST = new int[]{R.string.activity_type_motor_bike};
|
||||
private static final int[] MOUNTAIN_BIKE_LIST = new int[]{R.string.activity_type_mountain_biking};
|
||||
private static final int[] ESCOOTER_LIST = new int[]{R.string.activity_type_escooter};
|
||||
private static final int[] INLINE_SKATING_LIST = new int[]{R.string.activity_type_inline_skating};
|
||||
private static final int[] RUN_LIST = new int[]{R.string.activity_type_running, R.string.activity_type_street_running, R.string.activity_type_track_running, R.string.activity_type_trail_running};
|
||||
private static final int[] SAILING_LIST = new int[]{R.string.activity_type_sailing};
|
||||
private static final int[] SKI_LIST = new int[]{R.string.activity_type_cross_country_skiing, R.string.activity_type_skiing};
|
||||
private static final int[] SNOW_BOARDING_LIST = new int[]{R.string.activity_type_snow_boarding};
|
||||
private static final int[] SKATE_BOARDING_LIST = new int[]{R.string.activity_type_skate_boarding};
|
||||
private static final int[] KAYAKING_LIST = new int[]{R.string.activity_type_kayaking};
|
||||
private static final int[] WALK_LIST = new int[]{R.string.activity_type_hiking, R.string.activity_type_off_trail_hiking, R.string.activity_type_speed_walking, R.string.activity_type_trail_hiking, R.string.activity_type_walking};
|
||||
private static final int[] SWIM_LIST = new int[]{R.string.activity_type_swimming, R.string.activity_type_swimming_open};
|
||||
private static final int[] WORKOUT_LIST = new int[]{R.string.activity_type_workout};
|
||||
|
||||
// List of icons whose sports associated use speed (in km/h or mi/h).
|
||||
private static final int[] SPEED_ICON = {
|
||||
// Unknown.
|
||||
R.string.activity_type_unknown,
|
||||
// All airplane categories.
|
||||
R.string.activity_type_airplane, R.string.activity_type_commercial_airplane, R.string.activity_type_rc_airplane,
|
||||
// All bike categories.
|
||||
R.string.activity_type_biking, R.string.activity_type_cycling, R.string.activity_type_dirt_bike, R.string.activity_type_motor_bike, R.string.activity_type_mountain_biking, R.string.activity_type_road_biking, R.string.activity_type_track_cycling, R.string.activity_type_inline_skating,
|
||||
// All boat categories.
|
||||
R.string.activity_type_boat, R.string.activity_type_ferry, R.string.activity_type_motor_boating, R.string.activity_type_rc_boat, R.string.activity_type_sailing, R.string.activity_type_kayaking,
|
||||
// All drive categories.
|
||||
R.string.activity_type_atv, R.string.activity_type_driving, R.string.activity_type_driving_bus, R.string.activity_type_driving_car, R.string.activity_type_escooter, R.string.activity_type_skate_boarding,
|
||||
// All wintersport categories
|
||||
R.string.activity_type_skiing, R.string.activity_type_snow_boarding
|
||||
|
||||
};
|
||||
|
||||
//TODO Use Map.of()
|
||||
private static final LinkedHashMap<String, Pair<Integer, Integer>> MAP = new LinkedHashMap<>();
|
||||
|
||||
static {
|
||||
//Reflects order in ChooseActivityTypeDialogFragmentActivity
|
||||
MAP.put(UNKNOWN, new Pair<>(R.string.activity_type_unknown, ACTIVITY_UNKNOWN_LOGO));
|
||||
MAP.put(RUN, new Pair<>(R.string.activity_type_running, R.drawable.ic_activity_run_24dp));
|
||||
MAP.put(WALK, new Pair<>(R.string.activity_type_walking, R.drawable.ic_activity_walk_24dp));
|
||||
MAP.put(CLIMBING, new Pair<>(R.string.activity_type_climbing, R.drawable.ic_activity_climbing_24dp));
|
||||
MAP.put(SKATE_BOARDING, new Pair<>(R.string.activity_type_skate_boarding, R.drawable.ic_activity_skateboarding_24dp));
|
||||
MAP.put(INLINE_SKATING, new Pair<>(R.string.activity_type_inline_skating, R.drawable.ic_activity_inline_skating_24dp));
|
||||
MAP.put(SNOW_BOARDING, new Pair<>(R.string.activity_type_snow_boarding, R.drawable.ic_activity_snowboarding_24dp));
|
||||
MAP.put(SKI, new Pair<>(R.string.activity_type_skiing, R.drawable.ic_activity_skiing_24dp));
|
||||
MAP.put(ESCOOTER, new Pair<>(R.string.activity_type_escooter, R.drawable.ic_activity_escooter_24dp));
|
||||
MAP.put(BIKE, new Pair<>(R.string.activity_type_biking, R.drawable.ic_activity_bike_24dp));
|
||||
MAP.put(MOUNTAIN_BIKE, new Pair<>(R.string.activity_type_mountain_biking, R.drawable.ic_activity_mtb_24dp));
|
||||
MAP.put(MOTOR_BIKE, new Pair<>(R.string.activity_type_motor_bike, R.drawable.ic_activity_motorbike_24dp));
|
||||
MAP.put(DRIVE, new Pair<>(R.string.activity_type_driving, R.drawable.ic_activity_drive_24dp));
|
||||
MAP.put(AIRPLANE, new Pair<>(R.string.activity_type_airplane, R.drawable.ic_activity_flight_24dp));
|
||||
MAP.put(KAYAK, new Pair<>(R.string.activity_type_kayaking, R.drawable.ic_activity_kayaking_24dp));
|
||||
MAP.put(BOAT, new Pair<>(R.string.activity_type_boat, R.drawable.ic_activity_boat_24dp));
|
||||
MAP.put(SAILING, new Pair<>(R.string.activity_type_sailing, R.drawable.ic_activity_sailing_24dp));
|
||||
MAP.put(SWIMMING, new Pair<>(R.string.activity_type_swimming, R.drawable.ic_activity_swimming_24dp));
|
||||
MAP.put(SWIMMING_OPEN, new Pair<>(R.string.activity_type_swimming_open, R.drawable.ic_activity_swimming_open_24dp));
|
||||
MAP.put(WORKOUT, new Pair<>(R.string.activity_type_workout, R.drawable.ic_activity_workout_24dp));
|
||||
}
|
||||
|
||||
private TrackIconUtils() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the icon drawable.
|
||||
*
|
||||
* @param iconValue the icon value
|
||||
*/
|
||||
public static int getIconDrawable(String iconValue) {
|
||||
if (iconValue == null || iconValue.equals("")) {
|
||||
return ACTIVITY_UNKNOWN_LOGO;
|
||||
if (found.isEmpty()) {
|
||||
return ActivityType.UNKNOWN.getIconId();
|
||||
}
|
||||
Pair<Integer, Integer> pair = MAP.get(iconValue);
|
||||
return pair == null ? ACTIVITY_UNKNOWN_LOGO : pair.second;
|
||||
|
||||
return found.get().getIconId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the icon activity type.
|
||||
*
|
||||
* @param iconValue the icon value
|
||||
*/
|
||||
public static int getIconActivityType(String iconValue) {
|
||||
if (iconValue == null || iconValue.equals("")) {
|
||||
return R.string.activity_type_unknown;
|
||||
public static int getIconActivityType(String activityTypeId) {
|
||||
Optional<ActivityType> found = Arrays.stream(ActivityType.values()).filter(
|
||||
it -> it.getId().equals(activityTypeId)
|
||||
).findFirst();
|
||||
|
||||
if (found.isEmpty()) {
|
||||
return ActivityType.UNKNOWN.getFirstLocalizedStringId();
|
||||
}
|
||||
Pair<Integer, Integer> pair = MAP.get(iconValue);
|
||||
return pair == null ? R.string.activity_type_unknown : pair.first;
|
||||
|
||||
return found.get().getFirstLocalizedStringId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all icon values.
|
||||
*/
|
||||
public static List<String> getAllIconValues() {
|
||||
return new ArrayList<>(MAP.keySet());
|
||||
return Arrays.stream(ActivityType.values())
|
||||
.map(ActivityType::getId)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the icon value.
|
||||
*
|
||||
* @param context the context
|
||||
* @param activityType the activity type
|
||||
* @param context the context
|
||||
* @param activityTypeId the activity type
|
||||
*/
|
||||
@NonNull
|
||||
public static String getIconValue(Context context, String activityType) {
|
||||
Resources resources = context.getResources();
|
||||
if (activityType == null || activityType.equals("")) {
|
||||
return UNKNOWN;
|
||||
public static String getIconValue(Context context, String activityTypeId) {
|
||||
Optional<ActivityType> selected = Arrays.stream(ActivityType.values())
|
||||
.filter(
|
||||
it -> Arrays.stream(it.getLocalizedStringIds())
|
||||
.anyMatch(id -> context.getString(id).equals(activityTypeId))
|
||||
)
|
||||
.findFirst();
|
||||
if (selected.isEmpty()) {
|
||||
return ActivityType.UNKNOWN.getId();
|
||||
}
|
||||
if (inList(resources, activityType, AIRPLANE_LIST)) {
|
||||
return AIRPLANE;
|
||||
}
|
||||
if (inList(resources, activityType, BIKE_LIST)) {
|
||||
return BIKE;
|
||||
}
|
||||
if (inList(resources, activityType, MOUNTAIN_BIKE_LIST)) {
|
||||
return MOUNTAIN_BIKE;
|
||||
}
|
||||
if (inList(resources, activityType, CLIMBING_LIST)) {
|
||||
return CLIMBING;
|
||||
}
|
||||
if (inList(resources, activityType, MOTOR_BIKE_LIST)) {
|
||||
return MOTOR_BIKE;
|
||||
}
|
||||
if (inList(resources, activityType, KAYAKING_LIST)) {
|
||||
return KAYAK;
|
||||
}
|
||||
if (inList(resources, activityType, BOAT_LIST)) {
|
||||
return BOAT;
|
||||
}
|
||||
if (inList(resources, activityType, SAILING_LIST)) {
|
||||
return SAILING;
|
||||
}
|
||||
if (inList(resources, activityType, DRIVE_LIST)) {
|
||||
return DRIVE;
|
||||
}
|
||||
if (inList(resources, activityType, INLINE_SKATING_LIST)) {
|
||||
return INLINE_SKATING;
|
||||
}
|
||||
if (inList(resources, activityType, ESCOOTER_LIST)) {
|
||||
return ESCOOTER;
|
||||
}
|
||||
if (inList(resources, activityType, RUN_LIST)) {
|
||||
return RUN;
|
||||
}
|
||||
if (inList(resources, activityType, SKI_LIST)) {
|
||||
return SKI;
|
||||
}
|
||||
if (inList(resources, activityType, SNOW_BOARDING_LIST)) {
|
||||
return SNOW_BOARDING;
|
||||
}
|
||||
if (inList(resources, activityType, SKATE_BOARDING_LIST)) {
|
||||
return SKATE_BOARDING;
|
||||
}
|
||||
if (inList(resources, activityType, WALK_LIST)) {
|
||||
return WALK;
|
||||
}
|
||||
if (inList(resources, activityType, SWIM_LIST)) {
|
||||
return SWIMMING;
|
||||
}
|
||||
if (inList(resources, activityType, WORKOUT_LIST)) {
|
||||
return WORKOUT;
|
||||
}
|
||||
return UNKNOWN;
|
||||
return selected.get().getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the activity type is in the list.
|
||||
*
|
||||
* @param context the context
|
||||
* @param activityType the activity type
|
||||
* @param list the list
|
||||
*/
|
||||
private static boolean inList(Resources context, String activityType, int[] list) {
|
||||
for (int i : list) {
|
||||
if (context.getString(i).equals(activityType)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public static boolean isSpeedIcon(Resources resources, String activityTypeId) {
|
||||
Optional<ActivityType> selected = Arrays.stream(ActivityType.values())
|
||||
.filter(
|
||||
it -> Arrays.stream(it.getLocalizedStringIds())
|
||||
.anyMatch(id -> resources.getString(id).equals(activityTypeId))
|
||||
)
|
||||
.findFirst();
|
||||
|
||||
/**
|
||||
* Returns true if category is in the SPEED_ICON array. Otherwise returns false.
|
||||
*
|
||||
* @param category the name of the category, activity type.
|
||||
*/
|
||||
public static boolean isSpeedIcon(Resources resources, String category) {
|
||||
return inList(resources, category, SPEED_ICON);
|
||||
if (selected.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return selected.get().isShowSpeedPreferred();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,6 @@ import android.util.Pair;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.data.models.DistanceFormatter;
|
||||
import de.dennisguse.opentracks.data.models.HeartRateZones;
|
||||
@@ -274,10 +272,10 @@ public abstract class GenericStatisticsViewHolder extends StatisticViewHolder<St
|
||||
if (sensorDataSet != null && sensorDataSet.getHeartRate() != null) {
|
||||
valueAndUnit = StringUtils.getHeartRateParts(getContext(), sensorDataSet.getHeartRate().first);
|
||||
sensorName = sensorDataSet.getHeartRate().second;
|
||||
textColor = zones.getColorForZone(sensorDataSet.getHeartRate().first);
|
||||
textColor = zones.getTextColorForZone(getContext(), sensorDataSet.getHeartRate().first);
|
||||
} else {
|
||||
valueAndUnit = StringUtils.getHeartRateParts(getContext(), null);
|
||||
textColor = zones.getColorForZone(null);
|
||||
textColor = zones.getTextColorForZone(getContext(), null);
|
||||
}
|
||||
|
||||
getBinding().statsValue.setText(valueAndUnit.first);
|
||||
@@ -287,7 +285,7 @@ public abstract class GenericStatisticsViewHolder extends StatisticViewHolder<St
|
||||
getBinding().statsDescriptionSecondary.setVisibility(View.VISIBLE);
|
||||
getBinding().statsDescriptionSecondary.setText(sensorName);
|
||||
|
||||
getBinding().statsValue.setTextColor(ContextCompat.getColor(getContext(), textColor));
|
||||
getBinding().statsValue.setTextColor(textColor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ limitations under the License.
|
||||
<string name="about_libraries">Bibliotecas</string>
|
||||
<!-- Help -->
|
||||
<string name="help_feature_title">OpenTracks tiene las siguientes características:</string>
|
||||
<string name="help_feature_content">* crear pistas de GPS
|
||||
<string name="help_feature_content">* crear recorridos de GPS
|
||||
\n* utilizar un sensor de frecuencia cardíaca (solo Bluetooth LE)
|
||||
\n* anuncios de voz (por tiempo o distancia)
|
||||
\n* crear marcadores (incluidas imágenes)
|
||||
@@ -220,7 +220,7 @@ limitations under the License.
|
||||
<!-- OpenTracks -->
|
||||
<string name="recording_service">Servicio de grabación</string>
|
||||
<!-- Permission -->
|
||||
<string name="permission_gps_failed">OpenTracks necesita permiso para usar el GPS.</string>
|
||||
<string name="permission_gps_failed">OpenTracks requiere permiso para usar el GPS.</string>
|
||||
<!-- Search -->
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_state_heart_rate">Frecuencia cardíaca</string>
|
||||
@@ -325,22 +325,27 @@ limitations under the License.
|
||||
<!-- Voice -->
|
||||
<plurals name="voiceHours">
|
||||
<item quantity="one">1 hora</item>
|
||||
<item quantity="many">%1$d horas</item>
|
||||
<item quantity="other">%1$d horas</item>
|
||||
</plurals>
|
||||
<plurals name="voiceMinutes">
|
||||
<item quantity="one">1 minuto</item>
|
||||
<item quantity="many">%1$d minutos</item>
|
||||
<item quantity="other">%1$d minutos</item>
|
||||
</plurals>
|
||||
<plurals name="voiceSeconds">
|
||||
<item quantity="one">1 segundo</item>
|
||||
<item quantity="many">%1$d segundos</item>
|
||||
<item quantity="other">%1$d segundos</item>
|
||||
</plurals>
|
||||
<plurals name="voiceSpeedKilometersPerHour">
|
||||
<item quantity="one">1 kilómetro por hora</item>
|
||||
<item quantity="many">%1$.1f kilómetros por hora</item>
|
||||
<item quantity="other">%1$.1f kilómetros por hora</item>
|
||||
</plurals>
|
||||
<plurals name="voiceSpeedMilesPerHour">
|
||||
<item quantity="one">1 milla por hora</item>
|
||||
<item quantity="many">%1$.1f millas por hora</item>
|
||||
<item quantity="other">%1$.1f millas por hora</item>
|
||||
</plurals>
|
||||
<!-- Waypoint Type -->
|
||||
@@ -409,6 +414,7 @@ limitations under the License.
|
||||
<string name="generic_show_errors">Mostrar errores</string>
|
||||
<plurals name="generic_completed_with_errors">
|
||||
<item quantity="one">Completado con un error</item>
|
||||
<item quantity="many">Completado con %1$d errores</item>
|
||||
<item quantity="other">Completado con %1$d errores</item>
|
||||
</plurals>
|
||||
<string name="generic_completed">Completado</string>
|
||||
@@ -476,7 +482,7 @@ limitations under the License.
|
||||
<string name="stats_sensors_power">Poder</string>
|
||||
<string name="field_set_primary">Primario</string>
|
||||
<string name="description_speed_source_gps">GPS</string>
|
||||
<string name="settings_recording_customize_layout_title">Personalice su pantalla de grabación</string>
|
||||
<string name="settings_recording_customize_layout_title">Personalizar pantalla de grabación</string>
|
||||
<string name="settings_recording_customize_layout_select_columns">Datos por columna</string>
|
||||
<string name="settings_layout_reset_confirm_message">Todos los ajustes de diseño se revertirán a los valores predeterminados. Esto no eliminará ningún recorrido en el dispositivo.</string>
|
||||
<string name="settings_layout_reset_confirm_title">¿Restablecer todos los diseños\?</string>
|
||||
@@ -562,13 +568,53 @@ limitations under the License.
|
||||
<string name="total_distance">Distancia total</string>
|
||||
<plurals name="voiceDistanceKilometers">
|
||||
<item quantity="one">1 kilómetro</item>
|
||||
<item quantity="many">%1$.1f kilómetros</item>
|
||||
<item quantity="other">%1$.1f kilómetros</item>
|
||||
</plurals>
|
||||
<plurals name="voiceDistanceMiles">
|
||||
<item quantity="one">1 milla</item>
|
||||
<item quantity="many">%1$.1f millas</item>
|
||||
<item quantity="other">%1$.1f millas</item>
|
||||
</plurals>
|
||||
<string name="average_heart_rate">Ritmo cardíaco promedio</string>
|
||||
<string name="current_heart_rate">Ritmo cardíaco actual</string>
|
||||
<string name="settings_export_filename_title">Formato del nombre del archivo</string>
|
||||
<string name="help_data_google_play_services_content">No</string>
|
||||
<string name="description_pace_nautical">Ritmo (min/NM)</string>
|
||||
<string name="description_speed_nautical">Velocidad (Nudos)</string>
|
||||
<string name="image_discard">Descartar</string>
|
||||
<string name="settings_announcements_average_heart_rate">Frecuencia cardíaca media</string>
|
||||
<string name="settings_announcements_average_speed_pace">Velocidad/Ritmo medio</string>
|
||||
<string name="settings_announcements_lap_speed_pace">Velocidad/Ritmo por vuelta</string>
|
||||
<string name="settings_stats_units_nautical">Náutico (NM, pie)</string>
|
||||
<string name="track_delete_number_of_tracks">%1$d recorridos</string>
|
||||
<string name="track_discarding">Descartando recorrido</string>
|
||||
<string name="unit_nautical_mile">NM</string>
|
||||
<string name="unit_minute_per_nautical_mile">min/NM</string>
|
||||
<string name="value_integer_knots">%1$d nudos</string>
|
||||
<string name="value_float_knots">%1$.1f nudos</string>
|
||||
<string name="value_float_knots_recommended">%1$.1f nudos (recomendado)</string>
|
||||
<string name="voice_per_nautical_mile">por milla náutica</string>
|
||||
<string name="error_crash_title">%1$s falló</string>
|
||||
<string name="report_bug">Reportar error</string>
|
||||
<string name="show_on_map_format_ask">Preguntar</string>
|
||||
<string name="show_on_dashboard">Panel de control del API de OpenTracks</string>
|
||||
<string name="show_on_dashboard_not_installed">No se ha instalado ninguna aplicación compatible con el panel de control del API de OpenTracks.</string>
|
||||
<string name="always">Siempre</string>
|
||||
<string name="settings_announcements_lap_heart_rate">Frecuencia cardiaca por vuelta</string>
|
||||
<string name="settings_public_api_package_title">Nombre del paquete para el API público</string>
|
||||
<string name="unit_knots">Nudo</string>
|
||||
<plurals name="voiceSpeedMKnots">
|
||||
<item quantity="one">%1$.1f nudo</item>
|
||||
<item quantity="many">%1$.1f nudos</item>
|
||||
<item quantity="other">%1$.1f nudos</item>
|
||||
</plurals>
|
||||
<plurals name="voiceDistanceNauticalMiles">
|
||||
<item quantity="one">%1$.1f milla náutica</item>
|
||||
<item quantity="many">%1$.1f millas náuticas</item>
|
||||
<item quantity="other">%1$.1f millas náuticas</item>
|
||||
</plurals>
|
||||
<string name="select_show_on_map_behavior">Seleccionar el comportamiento de \"mostrar en el mapa\"</string>
|
||||
<string name="introduction_osm_dashboard">OpenTracks en sí no proporciona un mapa. Por favor, instale OSMDashboard para ver sus grabaciones en un mapa.</string>
|
||||
<string name="share_crash_report">Compartir informe de fallo</string>
|
||||
</resources>
|
||||
@@ -603,4 +603,6 @@ limitations under the License.
|
||||
<string name="settings_public_api_package_title">Pakkenavn for offentlig API</string>
|
||||
<string name="introduction_osm_dashboard">OpenTracks sørger ikke selv for kart. Installer OSMDashboard for å vise opptakene dine på et kart.</string>
|
||||
<string name="help_data_google_play_services_content">Nei</string>
|
||||
<string name="settings_sensor_heart_rate_max">Soner: Makspuls (bpm)</string>
|
||||
<string name="settings_api_summary">Fjernkontroll- og statistikk-API for andre programmer</string>
|
||||
</resources>
|
||||
@@ -1,173 +1,175 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="activity_type_airplane">avião</string>
|
||||
<string name="activity_type_atv">Todo-o-Terreno</string>
|
||||
<string name="activity_type_atv">quadriciclos</string>
|
||||
<string name="activity_type_biking">ciclismo</string>
|
||||
<string name="activity_type_blimp">dirigível</string>
|
||||
<string name="activity_type_boat">barco</string>
|
||||
<string name="activity_type_climbing">escalada</string>
|
||||
<string name="activity_type_commercial_airplane">avião comercial</string>
|
||||
<string name="activity_type_cross_country_skiing">esqui cross-country</string>
|
||||
<string name="activity_type_cross_country_skiing">Esqui cross-country</string>
|
||||
<string name="activity_type_cycling">ciclismo</string>
|
||||
<string name="activity_type_dirt_bike">motocross</string>
|
||||
<string name="activity_type_donkey_back_riding">passeio de burro</string>
|
||||
<string name="activity_type_driving">condução</string>
|
||||
<string name="activity_type_driving_bus">condução de autocarro</string>
|
||||
<string name="activity_type_driving_car">condução de automóvel</string>
|
||||
<string name="activity_type_ferry">ferry</string>
|
||||
<string name="activity_type_frisbee">disco</string>
|
||||
<string name="activity_type_gliding">voo livre</string>
|
||||
<string name="activity_type_hang_gliding">asa delta</string>
|
||||
<string name="activity_type_donkey_back_riding">passeio a burro</string>
|
||||
<string name="activity_type_driving">dirigindo</string>
|
||||
<string name="activity_type_driving_bus">ônibus</string>
|
||||
<string name="activity_type_driving_car">carro</string>
|
||||
<string name="activity_type_ferry">balsa</string>
|
||||
<string name="activity_type_frisbee">frízebee</string>
|
||||
<string name="activity_type_gliding">asa-delta</string>
|
||||
<string name="activity_type_hang_gliding">voo livre</string>
|
||||
<string name="activity_type_helicopter">helicóptero</string>
|
||||
<string name="activity_type_hiking">caminhada</string>
|
||||
<string name="activity_type_horse_back_riding">equitação</string>
|
||||
<string name="activity_type_horse_back_riding">passeio a cavalo</string>
|
||||
<string name="activity_type_hot_air_balloon">balão de ar quente</string>
|
||||
<string name="activity_type_ice_sailing">vela sobre gelo</string>
|
||||
<string name="activity_type_inline_skating">patins em linha</string>
|
||||
<string name="activity_type_ice_sailing">iatismo no gelo</string>
|
||||
<string name="activity_type_inline_skating">patinação em linha</string>
|
||||
<string name="activity_type_kayaking">caiaque</string>
|
||||
<string name="activity_type_kite_surfing">kite surfing</string>
|
||||
<string name="activity_type_land_sailing">vela em terra</string>
|
||||
<string name="activity_type_kite_surfing">kitesurfe</string>
|
||||
<string name="activity_type_land_sailing">iatismo em terra</string>
|
||||
<string name="activity_type_mixed_type">tipo misto</string>
|
||||
<string name="activity_type_motor_bike">motos</string>
|
||||
<string name="activity_type_motor_boating">barcos a motor</string>
|
||||
<string name="activity_type_mountain_biking">BTT</string>
|
||||
<string name="activity_type_off_trail_hiking">caminhada fora do trilho</string>
|
||||
<string name="activity_type_other">outro</string>
|
||||
<string name="activity_type_paddling">remar</string>
|
||||
<string name="activity_type_motor_bike">motociclismo</string>
|
||||
<string name="activity_type_motor_boating">barco a motor</string>
|
||||
<string name="activity_type_mountain_biking">mountain bike</string>
|
||||
<string name="activity_type_off_trail_hiking">caminhada fora da trilha</string>
|
||||
<string name="activity_type_other">outra</string>
|
||||
<string name="activity_type_paddling">paddle</string>
|
||||
<string name="activity_type_para_gliding">parapente</string>
|
||||
<string name="activity_type_rc_airplane">avião de controlo remoto</string>
|
||||
<string name="activity_type_rc_boat">Barco de controlo remoto</string>
|
||||
<string name="activity_type_rc_helicopter">Helicóptero de controlo remoto</string>
|
||||
<string name="activity_type_riding">ciclismo</string>
|
||||
<string name="activity_type_road_biking">ciclismo de estrada</string>
|
||||
<string name="activity_type_roller_skiing">rollerski</string>
|
||||
<string name="activity_type_rc_airplane">avião de controle remoto</string>
|
||||
<string name="activity_type_rc_boat">barco de controle remoto</string>
|
||||
<string name="activity_type_rc_helicopter">helicóptero de controle remoto</string>
|
||||
<string name="activity_type_riding">equitação</string>
|
||||
<string name="activity_type_road_biking">ciclismo em estrada</string>
|
||||
<string name="activity_type_roller_skiing">esqui roller</string>
|
||||
<string name="activity_type_rowing">remo</string>
|
||||
<string name="activity_type_running">corrida</string>
|
||||
<string name="activity_type_sailing">vela</string>
|
||||
<string name="activity_type_sailing">iatismo</string>
|
||||
<string name="activity_type_seaplane">hidroavião</string>
|
||||
<string name="activity_type_skate_boarding">skate boarding</string>
|
||||
<string name="activity_type_skating">patinagem</string>
|
||||
<string name="activity_type_skate_boarding">skate</string>
|
||||
<string name="activity_type_skating">patinação</string>
|
||||
<string name="activity_type_skiing">esqui</string>
|
||||
<string name="activity_type_sky_jumping">queda livre</string>
|
||||
<string name="activity_type_sky_jumping">paraquedismo</string>
|
||||
<string name="activity_type_sled">trenó</string>
|
||||
<string name="activity_type_snow_boarding">snow boarding</string>
|
||||
<string name="activity_type_snow_shoeing">Caminhada em raquetes de neve</string>
|
||||
<string name="activity_type_speed_walking">caminhada veloz</string>
|
||||
<string name="activity_type_snow_boarding">snowboard</string>
|
||||
<string name="activity_type_snow_shoeing">raquete de neve</string>
|
||||
<string name="activity_type_speed_walking">caminhada rápida</string>
|
||||
<string name="activity_type_street_running">corrida na rua</string>
|
||||
<string name="activity_type_surfing">surf</string>
|
||||
<string name="activity_type_surfing">surfe</string>
|
||||
<string name="activity_type_track_cycling">ciclismo de pista</string>
|
||||
<string name="activity_type_track_running">atletismo de pista</string>
|
||||
<string name="activity_type_trail_hiking">caminhada</string>
|
||||
<string name="activity_type_trail_running">corta-mato</string>
|
||||
<string name="activity_type_train">comboio</string>
|
||||
<string name="activity_type_ultimate_frisbee">jogo do disco</string>
|
||||
<string name="activity_type_unknown">desconhecido</string>
|
||||
<string name="activity_type_wakeboarding">wakeboarding</string>
|
||||
<string name="activity_type_walking">passeio</string>
|
||||
<string name="activity_type_track_running">pista de atletismo</string>
|
||||
<string name="activity_type_trail_hiking">caminhada em trilha</string>
|
||||
<string name="activity_type_trail_running">corrida em trilha</string>
|
||||
<string name="activity_type_train">treino</string>
|
||||
<string name="activity_type_ultimate_frisbee">frízebee final</string>
|
||||
<string name="activity_type_unknown">desconhecida</string>
|
||||
<string name="activity_type_wakeboarding">esqui aquático</string>
|
||||
<string name="activity_type_walking">caminhada</string>
|
||||
<string name="activity_type_water_skiing">esqui aquático</string>
|
||||
<string name="activity_type_wind_surfing">windsurf</string>
|
||||
<string name="activity_type_wind_surfing">windsurfe</string>
|
||||
<string name="description_activity_type">Tipo de atividade: %1$s</string>
|
||||
<string name="description_average_moving_pace_in_minute">Ritmo médio de deslocação: %1$s min/km (%2$s min/mi)</string>
|
||||
<string name="description_average_moving_speed">Velocidade média de deslocação: %1$.2f km/h ( %2$.1f mi / h)</string>
|
||||
<string name="description_average_pace_in_minute">Ritmo médio: %1$s min/km ( %2$s min/mi)</string>
|
||||
<string name="description_average_speed">Velocidade média: %1$.2f km/h ( %2$.1f mi/h)</string>
|
||||
<string name="description_altitude_gain">Diferença de altitude: %1$d m ( %2$d ft)</string>
|
||||
<string name="description_average_moving_pace_in_minute">Ritmo médio de deslocamento: %1$s min/km (%2$s min/mi)</string>
|
||||
<string name="description_average_moving_speed">Velocidade média de deslocamento: %1$.2f km/h (%2$.1f milhas/h)</string>
|
||||
<string name="description_average_pace_in_minute">Ritmo médio: %1$s min/km (%2$s min/mi)</string>
|
||||
<string name="description_average_speed">Velocidade média: %1$.2f km/h (%2$.1f milhas/h)</string>
|
||||
<string name="description_altitude_gain">Ganho de elevação: %1$d m (%2$d pés)</string>
|
||||
<string name="description_altitude_imperial">Elevação (pés)</string>
|
||||
<string name="description_altitude_metric">Elevação (m)</string>
|
||||
<string name="description_fastest_pace_in_minute">Ritmo mais rápido: %1$s min/km (%2$s min/mi)</string>
|
||||
<string name="description_max_altitude">Altitude máxima: %1$d m ( %2$d ft)</string>
|
||||
<string name="description_max_speed">Velocidade máxima: %1$.2f km/h ( %2$.1f mi/h)</string>
|
||||
<string name="description_min_altitude">Altitude mínima: %1$d m ( %2$d ft)</string>
|
||||
<string name="description_moving_time">Tempo de deslocação: %1$s</string>
|
||||
<string name="description_max_altitude">Elevação máx.: %1$d m (%2$d pés)</string>
|
||||
<string name="description_max_speed">Velocidade máx.: %1$.2f km/h (%2$.1f milhas/h)</string>
|
||||
<string name="description_min_altitude">Elevação mín.: %1$d m (%2$d pés)</string>
|
||||
<string name="description_moving_time">Tempo de deslocamento: %1$s</string>
|
||||
<string name="description_pace_imperial">Ritmo (min/mi)</string>
|
||||
<string name="description_pace_metric">Ritmo (min/km)</string>
|
||||
<string name="description_recorded_time">Gravado: %1$s</string>
|
||||
<string name="description_recorded_time">Registro: %1$s</string>
|
||||
<string name="description_sensor_cadence">Cadência (rpm)</string>
|
||||
<string name="description_sensor_heart_rate">Ritmo cardíaco (bpm)</string>
|
||||
<string name="description_sensor_heart_rate">Frequência cardíaca (bpm)</string>
|
||||
<string name="description_sensor_power">Potência (W)</string>
|
||||
<string name="description_speed_imperial">Velocidade (mi/h)</string>
|
||||
<string name="description_speed_imperial">Velocidade (milhas/h)</string>
|
||||
<string name="description_speed_metric">Velocidade (km/h)</string>
|
||||
<string name="description_time">Tempo</string>
|
||||
<string name="description_total_distance">Distância total: %1$.2f km ( %2$.1f mi)</string>
|
||||
<string name="description_total_distance">Distância total: %1$.2f km (%2$.1f milhas)</string>
|
||||
<string name="description_total_time">Tempo total: %1$s</string>
|
||||
<string name="export_progress_message">A exportar para %1$s …</string>
|
||||
<string name="export_progress_message">Exportando para %1$s…</string>
|
||||
<string name="generic_add">Adicionar</string>
|
||||
<string name="generic_delete_selected_confirm_title">Eliminar seleção?</string>
|
||||
<string name="generic_delete_selected_confirm_title">Excluir selecionados\?</string>
|
||||
<string name="generic_description">Descrição</string>
|
||||
<string name="generic_description_line">Descrição: %1$s</string>
|
||||
<string name="generic_name">Nome</string>
|
||||
<string name="generic_name_line">Nome: %1$s</string>
|
||||
<string name="generic_recording">A gravar…</string>
|
||||
<string name="generic_save">Guardar</string>
|
||||
<string name="generic_tracks">Percursos</string>
|
||||
<string name="gps_starting">A iniciar o GPS</string>
|
||||
<string name="gps_wait_for_better_signal">A aguardar melhor sinal de GPS</string>
|
||||
<string name="gps_wait_for_signal">A aguardar por sinal de GPS</string>
|
||||
<string name="generic_recording">Gravando…</string>
|
||||
<string name="generic_save">Salvar</string>
|
||||
<string name="generic_tracks">Rotas</string>
|
||||
<string name="gps_starting">Iniciando GPS</string>
|
||||
<string name="gps_wait_for_better_signal">Aguardando sinal de GPS melhor</string>
|
||||
<string name="gps_wait_for_signal">Aguardando sinal de GPS</string>
|
||||
<string name="image_arrow">Seta</string>
|
||||
<string name="image_marker">Marcador</string>
|
||||
<string name="image_marker_count">Contagem do marcador</string>
|
||||
<string name="image_photo_marker">Marcador de fotografias</string>
|
||||
<string name="image_photo_marker">Marcador de foto</string>
|
||||
<string name="image_record">Gravar</string>
|
||||
<string name="image_stop">Parar</string>
|
||||
<string name="image_track">Localizar</string>
|
||||
<string name="import_progress_message">A importar de %1$s…</string>
|
||||
<string name="marker_add_error">Não é possível inserir um marcador. Sem sinal de GPS. Tente novamente.</string>
|
||||
<string name="marker_add_success">Foi inserido um marcador</string>
|
||||
<string name="marker_add_canceled">Cancelado, nenhum marcador adicionado</string>
|
||||
<string name="marker_delete_one_confirm_message">O marcador será eliminado permanentemente do dispositivo</string>
|
||||
<string name="marker_delete_one_confirm_title">Eliminar marcador?</string>
|
||||
<string name="marker_delete_multiple_confirm_message">Os marcadores selecionados serão eliminados permanentemente do dispositivo</string>
|
||||
<string name="image_track">Rota</string>
|
||||
<string name="import_progress_message">Importando de %1$s…</string>
|
||||
<string name="marker_add_error">Não foi possível inserir um marcador. Não há sinal de GPS. Tente novamente.</string>
|
||||
<string name="marker_add_success">Um marcador foi inserido</string>
|
||||
<string name="marker_add_canceled">Cancelado. Nenhum marcador foi adicionado</string>
|
||||
<string name="marker_delete_one_confirm_message">O marcador será excluído permanentemente do dispositivo</string>
|
||||
<string name="marker_delete_one_confirm_title">Excluir marcador\?</string>
|
||||
<string name="marker_delete_multiple_confirm_message">Os marcadores selecionados serão permanentemente excluídos do dispositivo</string>
|
||||
<string name="marker_name_format">Marcador %1$d</string>
|
||||
<string name="marker_title">%1$d de %2$d</string>
|
||||
<string name="marker_edit_marker_type">Tipo de marcador (por exemplo, cascata)</string>
|
||||
<string name="marker_list_empty_message">Não tem marcadores</string>
|
||||
<string name="menu_aggregated_statistics">Estatísticas agregadas</string>
|
||||
<string name="menu_delete">Eliminar</string>
|
||||
<string name="marker_list_empty_message">Você não tem marcadores</string>
|
||||
<string name="menu_aggregated_statistics">Estatísticas reunidas</string>
|
||||
<string name="menu_delete">Excluir</string>
|
||||
<string name="menu_edit">Editar</string>
|
||||
<string name="menu_export_all">Exportar tudo</string>
|
||||
<string name="menu_export_all">Exportar todas</string>
|
||||
<string name="menu_help">Ajuda</string>
|
||||
<string name="menu_import_all">Importar tudo</string>
|
||||
<string name="menu_import_all">Importar todas</string>
|
||||
<string name="menu_insert_marker">Inserir marcador</string>
|
||||
<string name="menu_insert_photo">Inserir fotografia</string>
|
||||
<string name="menu_insert_photo">Inserir foto</string>
|
||||
<string name="menu_markers">Marcadores</string>
|
||||
<string name="menu_search">Pesquisar</string>
|
||||
<string name="menu_select_all">Selecionar tudo</string>
|
||||
<string name="menu_settings">Definições</string>
|
||||
<string name="menu_share">Partilhar</string>
|
||||
<string name="menu_settings">Configurações</string>
|
||||
<string name="menu_share">Compartilhar</string>
|
||||
<string name="menu_show_on_map">Mostrar no mapa</string>
|
||||
<string name="menu_start_gps">Ligar GPS</string>
|
||||
<string name="menu_stop_gps">Desligar GPS</string>
|
||||
<string name="menu_start_gps">Iniciar GPS</string>
|
||||
<string name="menu_stop_gps">Parar GPS</string>
|
||||
<string name="recording_service">Serviço de gravação</string>
|
||||
<string name="sensor_state_heart_rate">Frequência cardíaca</string>
|
||||
<string name="sensor_state_heart_rate_value">%1$d bpm</string>
|
||||
<string name="sensor_state_power">Potência</string>
|
||||
<string name="sensor_state_power">Alimentação</string>
|
||||
<string name="settings_advanced">Avançado</string>
|
||||
<string name="settings_chart_by_distance">Por distância</string>
|
||||
<string name="settings_chart_by_time">Por tempo</string>
|
||||
<string name="settings_recording_default_activity_title">Tipo de atividade predefinido</string>
|
||||
<string name="settings_recording_location_frequency_summary">%1$s entre locais gravados</string>
|
||||
<string name="settings_recording_max_recording_distance_summary">É criado um novo segmento quando a distância entre os dois locais é superior a %1$s</string>
|
||||
<string name="settings_recording_default_activity_title">Tipo de atividade padrão</string>
|
||||
<string name="settings_recording_location_frequency_summary">%1$s entre os locais gravados</string>
|
||||
<string name="settings_recording_max_recording_distance_summary">Um novo segmento será criado se a distância entre os dois locais for maior que %1$s</string>
|
||||
<string name="settings_recording_max_recording_distance_title">Distância máxima</string>
|
||||
<string name="settings_recording_min_recording_distance_title">Distância entre gravações</string>
|
||||
<string name="settings_recording_min_recording_interval_title">Tempo entre gravações</string>
|
||||
<string name="settings_recording_min_required_accuracy_summary">A localização é ignorada se a precisão for inferior a %1$s</string>
|
||||
<string name="settings_recording_min_recording_distance_title">Interv. distância grav</string>
|
||||
<string name="settings_recording_min_recording_interval_title">Interv. tempo de grav</string>
|
||||
<string name="settings_recording_min_required_accuracy_summary">O local será ignorado se a precisão for menor que %1$s</string>
|
||||
<string name="settings_recording_min_required_accuracy_title">Precisão do GPS</string>
|
||||
<string name="settings_recording_track_name_date_iso_8601_option">Data (ISO 8601)</string>
|
||||
<string name="settings_recording_track_name_date_local_option">Data (local)</string>
|
||||
<string name="settings_recording_track_name_number_option">Número</string>
|
||||
<string name="settings_recording_track_name_title">Nome de percurso predefinido</string>
|
||||
<string name="settings_reset_confirm_message">Todas as definições são revertidas para os valores predefinidos.</string>
|
||||
<string name="settings_reset_confirm_title">Repor agora?</string>
|
||||
<string name="settings_reset_done">Todas as definições foram revertidas para os valores predefinidos</string>
|
||||
<string name="settings_recording_track_name_title">Nome padrão para trilhas</string>
|
||||
<string name="settings_reset_confirm_message">Todas as configurações serão revertidas para os valores padrão.</string>
|
||||
<string name="settings_reset_confirm_title">Redefinir agora\?</string>
|
||||
<string name="settings_reset_done">Todas as configurações foram revertidas para os valores padrão</string>
|
||||
<string name="settings_sensor_bluetooth">Bluetooth</string>
|
||||
<string name="settings_stats_rate_title">Avaliação preferida</string>
|
||||
<string name="settings_stats_rate_title">Taxa preferencial</string>
|
||||
<string name="settings_stats_units_imperial">Imperial (milhas, pés)</string>
|
||||
<string name="settings_stats_units_metric">Métrico (km, m)</string>
|
||||
<string name="settings_stats_units_title">Unidades preferidas</string>
|
||||
<string name="share_track_share_file_body">Acho que pode estar interessado neste percurso.\n\nPara ver este percurso, utilize o Google Earth ou outro software de mapeamento.\n\n%1$s</string>
|
||||
<string name="share_track_subject">Gostaria de partilhar um percurso consigo</string>
|
||||
<string name="stats_average_moving_pace">Espaço médio de deslocação</string>
|
||||
<string name="stats_average_moving_speed">Velocidade média de deslocação</string>
|
||||
<string name="settings_stats_units_metric">Métrica (km, m)</string>
|
||||
<string name="settings_stats_units_title">Unidades preferenciais</string>
|
||||
<string name="share_track_share_file_body">Achei que você pudesse se interessar por essa trilha.
|
||||
\n
|
||||
\n%1$s</string>
|
||||
<string name="share_track_subject">Eu gostaria de compartilhar uma trilha com você</string>
|
||||
<string name="stats_average_moving_pace">Ritmo médio de movimentação</string>
|
||||
<string name="stats_average_moving_speed">Velocidade média de movimentação</string>
|
||||
<string name="stats_average_pace">Ritmo médio</string>
|
||||
<string name="stats_average_speed">Velocidade média</string>
|
||||
<string name="stats_altitude">Elevação</string>
|
||||
@@ -175,39 +177,39 @@
|
||||
<string name="stats_gain">Ganho</string>
|
||||
<string name="stats_latitude">Latitude</string>
|
||||
<string name="stats_longitude">Longitude</string>
|
||||
<string name="stats_max_speed">Velocidade máx.</string>
|
||||
<string name="stats_moving_time">Tempo em movimento</string>
|
||||
<string name="stats_max_speed">Velocidade máx</string>
|
||||
<string name="stats_moving_time">Tempo decorrido</string>
|
||||
<string name="stats_pace">Ritmo</string>
|
||||
<string name="stats_speed">Velocidade</string>
|
||||
<string name="stats_distance">Distância</string>
|
||||
<string name="stats_total_time">Tempo total</string>
|
||||
<string name="track_name_format">Trajeto %1$d</string>
|
||||
<string name="track_markers">Marcadores %1$s</string>
|
||||
<string name="track_delete_one_confirm_message">O percurso e respetivos marcadores são eliminados permanentemente do dispositivo.</string>
|
||||
<string name="track_delete_one_confirm_title">Eliminar percurso?</string>
|
||||
<string name="track_delete_multiple_confirm_message">Os percursos selecionados e respetivos marcadores serão eliminados permanentemente do dispositivo.</string>
|
||||
<string name="track_delete_progress_message">A eliminar…</string>
|
||||
<string name="track_name_format">Trilha %1$d</string>
|
||||
<string name="track_markers">Marcadores de %1$s</string>
|
||||
<string name="track_delete_one_confirm_message">A trilha e seus marcadores serão excluídos permanentemente do dispositivo.</string>
|
||||
<string name="track_delete_one_confirm_title">Excluir rota\?</string>
|
||||
<string name="track_delete_multiple_confirm_message">As trilhas selecionadas e seus respectivos marcadores serão excluídos permanentemente do dispositivo.</string>
|
||||
<string name="track_delete_progress_message">Excluindo…</string>
|
||||
<string name="track_detail_stats_tab">Estatísticas</string>
|
||||
<string name="track_edit_activity_type">Tipo de atividade (por exemplo, caminhada)</string>
|
||||
<string name="track_edit_activity_type_hint">Tipo de atividade</string>
|
||||
<string name="track_list_empty_message">Comece a gravar a sua próxima aventura aqui</string>
|
||||
<string name="track_list_empty_message">Comece a gravar sua próxima aventura aqui</string>
|
||||
<string name="unit_feet">pés</string>
|
||||
<string name="unit_kilometer">km</string>
|
||||
<string name="unit_kilometer_per_hour">km/h</string>
|
||||
<string name="unit_meter">m</string>
|
||||
<string name="unit_mile">mi</string>
|
||||
<string name="unit_mile_per_hour">mi/h</string>
|
||||
<string name="unit_mile">milhas</string>
|
||||
<string name="unit_mile_per_hour">milhas/h</string>
|
||||
<string name="unit_minute_per_kilometer">min/km</string>
|
||||
<string name="unit_minute_per_mile">min/milha</string>
|
||||
<string name="unit_minute_per_mile">min/milhas</string>
|
||||
<string name="value_integer_feet_excellent_gps">%1$d pés (GPS excelente)</string>
|
||||
<string name="value_integer_feet_recommended">%1$d pés (recomendado)</string>
|
||||
<string name="value_integer_kilometer_hour">%1$d km/h</string>
|
||||
<string name="value_integer_meter_excellent_gps">%1$d m (GPS excelente)</string>
|
||||
<string name="value_integer_meter_poor_gps">%1$d m (GPS fraco)</string>
|
||||
<string name="value_integer_meter_poor_gps">%1$d m (GPS com sinal baixo)</string>
|
||||
<string name="value_integer_meter_recommended">%1$d m (recomendado)</string>
|
||||
<string name="value_integer_mile_hour">%1$d mi/h</string>
|
||||
<string name="value_integer_mile_hour">%1$d milhas/h</string>
|
||||
<string name="value_integer_minute">%1$d min</string>
|
||||
<string name="value_integer_second">%1$d seg</string>
|
||||
<string name="value_integer_second">%1$d s</string>
|
||||
<string name="value_none">Nenhuma</string>
|
||||
<string name="value_off">Desativar</string>
|
||||
<string name="value_smallest_recommended">Menor (recomendado)</string>
|
||||
@@ -224,62 +226,333 @@
|
||||
<item quantity="other">%1$d segundos</item>
|
||||
</plurals>
|
||||
<plurals name="voiceSpeedKilometersPerHour">
|
||||
<item quantity="one">%1$.1f quilômetro por hora</item>
|
||||
<item quantity="one">%1$.1f quilómetro por hora</item>
|
||||
<item quantity="other">%1$.1f quilómetros por hora</item>
|
||||
</plurals>
|
||||
<plurals name="voiceSpeedMilesPerHour">
|
||||
<item quantity="one">%1$.1f milha por hora</item>
|
||||
<item quantity="other">%1$.1f milhas por hora</item>
|
||||
</plurals>
|
||||
<string name="waypoint_type_atm">Multibanco</string>
|
||||
<string name="waypoint_type_atm">caixa eletrônico</string>
|
||||
<string name="waypoint_type_bank">banco</string>
|
||||
<string name="waypoint_type_bar">bar</string>
|
||||
<string name="waypoint_type_barbecue">churrasco</string>
|
||||
<string name="waypoint_type_building">edifício</string>
|
||||
<string name="waypoint_type_bus_stop">paragem de autocarro</string>
|
||||
<string name="waypoint_type_cafe">café</string>
|
||||
<string name="waypoint_type_building">construção</string>
|
||||
<string name="waypoint_type_bus_stop">ponto de ônibus</string>
|
||||
<string name="waypoint_type_cafe">cafeteria</string>
|
||||
<string name="waypoint_type_campfire">fogueira</string>
|
||||
<string name="waypoint_type_campground">parque de campismo</string>
|
||||
<string name="waypoint_type_campground">acampamento</string>
|
||||
<string name="waypoint_type_church">igreja</string>
|
||||
<string name="waypoint_type_coffee_house">café</string>
|
||||
<string name="waypoint_type_coffee_house">cafeteria</string>
|
||||
<string name="waypoint_type_convenience_store">loja de conveniência</string>
|
||||
<string name="waypoint_type_drinking_water">água potável</string>
|
||||
<string name="waypoint_type_falling_rocks">queda de pedras</string>
|
||||
<string name="waypoint_type_ferry">ferry</string>
|
||||
<string name="waypoint_type_falling_rocks">área com desmoronamento</string>
|
||||
<string name="waypoint_type_ferry">balsa</string>
|
||||
<string name="waypoint_type_fire_place">lareira</string>
|
||||
<string name="waypoint_type_fire_station">quartel de bombeiros</string>
|
||||
<string name="waypoint_type_fire_station">bombeiros</string>
|
||||
<string name="waypoint_type_fishing">pesca</string>
|
||||
<string name="waypoint_type_gas_station">estação de serviço</string>
|
||||
<string name="waypoint_type_gas_station">posto de gasolina</string>
|
||||
<string name="waypoint_type_golf_course">campo de golfe</string>
|
||||
<string name="waypoint_type_grocery_store">mercearia</string>
|
||||
<string name="waypoint_type_grocery_store">supermercado</string>
|
||||
<string name="waypoint_type_hair_dresser">cabeleireiro</string>
|
||||
<string name="waypoint_type_harbor">porto</string>
|
||||
<string name="waypoint_type_hiking_path">trilho de caminhada</string>
|
||||
<string name="waypoint_type_hiking_path">trilha para caminhada</string>
|
||||
<string name="waypoint_type_hotel">hotel</string>
|
||||
<string name="waypoint_type_house">casa</string>
|
||||
<string name="waypoint_type_information">informação</string>
|
||||
<string name="waypoint_type_intersection">intersecção</string>
|
||||
<string name="waypoint_type_information">informações</string>
|
||||
<string name="waypoint_type_intersection">cruzamento</string>
|
||||
<string name="waypoint_type_mail_box">caixa de correio</string>
|
||||
<string name="waypoint_type_market">mercado</string>
|
||||
<string name="waypoint_type_meeting_point">ponto de encontro</string>
|
||||
<string name="waypoint_type_opera">ópera</string>
|
||||
<string name="waypoint_type_parking">estacionamento</string>
|
||||
<string name="waypoint_type_police_station">esquadra da polícia</string>
|
||||
<string name="waypoint_type_post_office">correios</string>
|
||||
<string name="waypoint_type_police_station">delegacia</string>
|
||||
<string name="waypoint_type_post_office">correio</string>
|
||||
<string name="waypoint_type_pothole">buraco</string>
|
||||
<string name="waypoint_type_railway_crossing">travessia ferroviária</string>
|
||||
<string name="waypoint_type_railway_crossing">travessia de via férrea</string>
|
||||
<string name="waypoint_type_restaurant">restaurante</string>
|
||||
<string name="waypoint_type_shopping">compras</string>
|
||||
<string name="waypoint_type_sight">paisagem</string>
|
||||
<string name="waypoint_type_sight">vista</string>
|
||||
<string name="waypoint_type_store">loja</string>
|
||||
<string name="waypoint_type_swimming_pool">piscina</string>
|
||||
<string name="waypoint_type_telephone">telefone</string>
|
||||
<string name="waypoint_type_theater">cinema</string>
|
||||
<string name="waypoint_type_toilet">WC</string>
|
||||
<string name="waypoint_type_theater">teatro</string>
|
||||
<string name="waypoint_type_toilet">banheiro</string>
|
||||
<string name="waypoint_type_tourist_information">informações turísticas</string>
|
||||
<string name="waypoint_type_tree">árvore</string>
|
||||
<string name="waypoint_type_tunnel">túnel</string>
|
||||
<string name="waypoint_type_waterfall">queda de água</string>
|
||||
<string name="waypoint_type_waterfall">Cascata</string>
|
||||
<string name="waypoint_type_water_fountain">fonte de água</string>
|
||||
<string name="waypoint_type_waypoint">ponto de referência</string>
|
||||
</resources>
|
||||
<string name="about_preference_title">Sobre o OpenTracks</string>
|
||||
<string name="about_description"><i>OpenTracks</i> é uma aplicação de rastreamento de desportes que respeita totalmente a sua privacidade.</string>
|
||||
<string name="about_url">Página do projeto: <a href="%1$s">%1$s</a></string>
|
||||
<string name="about_third_party_data">Dados de terceiros</string>
|
||||
<string name="help_track_map_title">Como mostrar uma pista num mapa\?</string>
|
||||
<string name="help_storage_pictures_title">Como o OpenTracks armazena fotos tiradas como marcadores\?</string>
|
||||
<string name="help_storage_pictures_content">Eles são armazenados no armazenamento interno da app (ou seja, acessíveis apenas no OpenTracks).</string>
|
||||
<string name="help_data_google_play_services_title">O OpenTracks requer/usa o Google Play Services\?</string>
|
||||
<string name="help_data_google_play_services_content">Não</string>
|
||||
<string name="help_recording_title">Como o OpenTracks regista dados\?</string>
|
||||
<string name="help_support_title">Como posso oferecer suporte a OpenTracks\?</string>
|
||||
<string name="open_track_as_KML">Abrir como KML</string>
|
||||
<string name="open_track_as_GPX">Abrir como GPX</string>
|
||||
<string name="open_track_as_trackfileformat">Abrir como %1$s</string>
|
||||
<string name="activity_type_escooter">escolta</string>
|
||||
<string name="activity_type_swimming_open">nadando em águas abertas</string>
|
||||
<string name="export_progress_summary_skip_msg">Trilhas puladas</string>
|
||||
<string name="export_progress_summary_errors_msg">Erros</string>
|
||||
<string name="generic_open_track">Trilho aberto</string>
|
||||
<string name="sensor_state_cadence_max">Ritmo cardíaco médio</string>
|
||||
<string name="sensor_state_heart_rate_avg">Ritmo cardíaco Avg</string>
|
||||
<string name="sensor_state_heart_rate_max">Freqüência cardíaca máxima</string>
|
||||
<string name="settings_default_trackfileformat">Exportar/compartilhar formato de ficheiro</string>
|
||||
<string name="settings_export_filename_title">Formato do nome do ficheiro</string>
|
||||
<string name="settings_recording_customize_layout_title">Personalize o seu layout de gravação</string>
|
||||
<string name="settings_recording_customize_layout_select_columns">Campos de dados por linha</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_title">Mostrar estatísticas no ecrã de bloqueio</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_summary">Durante a gravação, mostre estatísticas sem desbloquear o aparelho.</string>
|
||||
<string name="settings_recording_fullscreen_on_while_recording_title">Ecrã inteiro</string>
|
||||
<string name="settings_night_mode_option_day">Dia</string>
|
||||
<string name="settings_announcements_totaltime_frequency">Intervalo de tempo</string>
|
||||
<string name="settings_announcements_distance_frequency">Intervalo de distância</string>
|
||||
<string name="settings_announcements_average_heart_rate">Frequência cardíaca média</string>
|
||||
<string name="settings_announcements_lap_speed_pace">Velocidade/ritmo de volta</string>
|
||||
<string name="custom_layout_list_title">Estrutura</string>
|
||||
<string name="custom_layout_list_edit_name">Digite o nome do layout a ser adicionado</string>
|
||||
<string name="custom_layout_list_layout_removed">Layout foi removido</string>
|
||||
<string name="settings_layout_reset_confirm_message">Todas as configurações de layout serão revertidas para os valores padrão. Isso não excluirá nenhuma trilha do aparelho.</string>
|
||||
<string name="settings_layout_reset_confirm_title">Redefinir os seus layouts\?</string>
|
||||
<string name="settings_all_reset">Redefinir</string>
|
||||
<string name="settings_stats_units_nautical">Milha náutica (NM, ft)</string>
|
||||
<string name="settings_api_title">API pública</string>
|
||||
<string name="settings_public_api_package_title">Nome do pacote para API pública</string>
|
||||
<string name="settings_public_api_enabled_summary_on">Outras aplicações instaladas podem iniciar ou interromper gravações.</string>
|
||||
<string name="track_recording_notification_accuracy">Precisão da localização: %1$s</string>
|
||||
<string name="unit_nautical_mile">NM</string>
|
||||
<string name="location_latitude_longitude">%1$s, %2$s</string>
|
||||
<string name="value_integer_knots">%1$d nós</string>
|
||||
<string name="average_heart_rate">Frequência cardíaca média</string>
|
||||
<string name="current_heart_rate">Frequência cardíaca atual</string>
|
||||
<string name="share_image_subject">Gostaria de compartilhar uma imagem consigo</string>
|
||||
<string name="field_remove_from_layout">Remover</string>
|
||||
<string name="about_libraries">Bibliotecas</string>
|
||||
<string name="help_feature_title">OpenTracks tem os seguintes recursos:</string>
|
||||
<string name="help_feature_content">* criar pistas GPS
|
||||
\n * utilizar um sensor do ritmo cardíaco (apenas Bluetooth LE)
|
||||
\n * anúncios de voz (por tempo ou distância)
|
||||
\n * criar marcadores (incl. imagens)
|
||||
\n * funciona completamente offline
|
||||
\n * mostrar pistas num mapa (ver abaixo)</string>
|
||||
<string name="about_version_name">Nome da versão: %1$s</string>
|
||||
<string name="about_version_code">Código da versão: %1$d</string>
|
||||
<string name="about_history">OpenTracks é um fork do <a href="https://code.google.com/archive/p/mytracks/"><i>Google\'s MyTracks</i></a> (descontinuado em 2016).</string>
|
||||
<string name="help_track_export_title">Como posso exportar/compartilhar trilhas gravadas\?</string>
|
||||
<string name="help_track_export_content"> As trilhas podem ser exportadas das configurações como KMZ, KML ou GPX. KMZ/KML todos os dados; Localizações apenas GPX. As trilhas compartilhadas por meio do <i>ícone de compartilhamento</i> são compartilhadas como KMZ. </string>
|
||||
<string name="help_track_map_content"> Utilize o pequeno ícone do mapa.
|
||||
\n a) (actualizações ao vivo) Instalar <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>. Fornece mapas online ou offline através de <a href="https://www.openstreetmap.org">OpenStreetMap</a>.
|
||||
\n Na verdade, o OSMDashboard é uma aplicação separada que só pode aceder (temporariamente) aos dados da(s) faixa(s) que vão ser mostrados.
|
||||
\n b) Através de uma aplicação de mapa normal (por exemplo, <a href="http://osmand.net/">OsmAnd</a> e <a href="https://maps.me/">MAPS.ME</a>). Estas aplicações precisam de suportar o formato de ficheiro KMZ (apenas locais e timestamps). De facto, uma aplicação precisa de suportar <i>ACTION_VIEW</i> com MIME <i>application/vnd.google-earth.kmz</i>. </string>
|
||||
<string name="help_recording_content">OpenTracks usa o sensor GPS do aparelho para registar a localização continuamente. Se o aparelho GPS relatar dados imprecisos (por exemplo, localização, velocidade, elevação), o OpenTracks não pode fazer nada a respeito.</string>
|
||||
<string name="help_data_storage_title">Como o OpenTracks armazena dados do sensor\?</string>
|
||||
<string name="help_data_storage_content"> Os dados do sensor são armazenados por local registado. Em termos de sensor de frequência cardíaca, isso significa que apenas <i>uma</i> medição de frequência cardíaca é armazenada por local. Se estiver parado ou dentro de casa, nenhum dado do sensor será registrdo (mas será mostrado). </string>
|
||||
<string name="help_gps_troubleshooting_title">OpenTracks não está gravando locais\?</string>
|
||||
<string name="help_gps_troubleshooting_content"> O que se pode fazer:
|
||||
\n a) verificar se o GPS está activado,
|
||||
\n b) melhorar a recepção GPS (por exemplo, ir para o exterior),
|
||||
\n c) verificar com <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a> app, e
|
||||
\n d) desactivar a poupança de energia.
|
||||
\n
|
||||
\n Se tudo isto não ajudar, por favor, informe um erro. </string>
|
||||
<string name="help_support_content"> Pode:
|
||||
\n a) espalhar a palavra sobre OpenTracks,
|
||||
\n b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">propose features</a>,
|
||||
\n c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">reportar bugs</a>,
|
||||
\n d) ajuda no desenvolvimento de software,
|
||||
\n e) comprar em <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>,
|
||||
\n f) doar, e
|
||||
\n g) fazer o que achar que ajuda a OpenTracks. </string>
|
||||
<string name="activity_type_swimming">natação</string>
|
||||
<string name="activity_type_workout">treino</string>
|
||||
<string name="description_altitude_loss">Perda de elevação: %1$d m (%2$d ft)</string>
|
||||
<string name="description_speed_ms">Velocidade (m/s)</string>
|
||||
<string name="description_pace_nautical">Ritmo (min/NM)</string>
|
||||
<string name="description_default_speed_or_pace">Por tipo de atividade</string>
|
||||
<string name="description_speed_nautical">Velocidade (nós)</string>
|
||||
<string name="description_speed_source_gps">GPS</string>
|
||||
<string name="export_with_photos">com fotos</string>
|
||||
<string name="export_without_photos">sem fotos</string>
|
||||
<string name="export_error_post_workout">A exportação pós-treino falhou, verifique o diretório de exportação.</string>
|
||||
<string name="export_cannot_write_to_dir">Não é possível escrever ao diretório de exportação.</string>
|
||||
<string name="export_dir_not_writable">" (não se escreve!)"</string>
|
||||
<string name="export_track_already_exists_msg">A trilha %1$s já existe no diretório de destino.</string>
|
||||
<string name="export_all_do_it_for_all">faça isso para todos os conflitos</string>
|
||||
<string name="export_track_errors">Trilhas não exportadas</string>
|
||||
<string name="export_progress_summary_new_msg">Novas trilhas exportadas</string>
|
||||
<string name="export_progress_summary_overwrite_msg">Trilhas sobrescritas</string>
|
||||
<string name="generic_overwrite">Sobrescrever</string>
|
||||
<string name="generic_skip">Pular</string>
|
||||
<string name="generic_separator_done_total">/</string>
|
||||
<string name="generic_show_errors">Mostrar erros</string>
|
||||
<plurals name="generic_completed_with_errors">
|
||||
<item quantity="one">Concluído com %1$d erro</item>
|
||||
<item quantity="other">Concluído com %1$d erros</item>
|
||||
</plurals>
|
||||
<string name="generic_completed">Concluído</string>
|
||||
<string name="generic_click_twice_cancel">Clique novamente para cancelar</string>
|
||||
<string name="generic_undo">Desfazer</string>
|
||||
<string name="generic_choose_an_option">Escolha uma opção</string>
|
||||
<string name="generic_filter">Filtro</string>
|
||||
<string name="generic_from">De</string>
|
||||
<string name="generic_to">Para</string>
|
||||
<string name="generic_today">Hoje</string>
|
||||
<string name="generic_yesterday">Ontem</string>
|
||||
<string name="generic_dismiss">Dispensar</string>
|
||||
<string name="gps_disabled_msg">GPS desativado</string>
|
||||
<string name="gps_fixed_and_ready">GPS corrigido e pronto</string>
|
||||
<string name="gps_recording_status">%1$s: %2$s</string>
|
||||
<string name="gps_recording_without_signal">O OpenTracks está gravando sem dados de GPS.</string>
|
||||
<string name="image_discard">Descartar</string>
|
||||
<string name="import_thread_interrupted">Tópico interrompido</string>
|
||||
<string name="import_unsupported_format">Formato de ficheiro não suportado</string>
|
||||
<string name="import_parser_error">Erro do analisador: %1$s</string>
|
||||
<string name="import_unable_to_import_file">Não foi possível importar o ficheiro: %1$s</string>
|
||||
<string name="import_no_kml_file_found">Nenhum ficheiro doc.kml encontrado no KMZ</string>
|
||||
<string name="import_error_info">%1$s: %2$s</string>
|
||||
<string name="import_error_list_dialog_title">Ficheiros não importados</string>
|
||||
<string name="import_file_imported">Ficheiro %1$s importado</string>
|
||||
<string name="import_prevent_reimport">Definiu evitar reimportar a trilha</string>
|
||||
<string name="import_progress_summary_ok_msg">Ficheiros importados</string>
|
||||
<string name="import_progress_summary_exists_msg">Já existe</string>
|
||||
<string name="import_progress_summary_errors_msg">Erros</string>
|
||||
<string name="marker_add_photo_canceled">Cancelado, nenhum marcador de foto adicionado</string>
|
||||
<string name="menu_insert_gallery_img">Inserir imagem da galeria</string>
|
||||
<string name="menu_select_layout">Selecione o layout</string>
|
||||
<string name="menu_voice_rate">Velocidade da voz</string>
|
||||
<string name="menu_resume_track">Retomar trilha</string>
|
||||
<string name="menu_add_custom_layout">Novo Layout</string>
|
||||
<string name="menu_filter">Filtro</string>
|
||||
<string name="delete_service">Serviço de exclusão</string>
|
||||
<string name="permission_gps_failed">OpenTracks requer permissão para usar GPS.</string>
|
||||
<string name="permission_bluetooth_failed">OpenTracks requer permissão para usar Bluetooth.</string>
|
||||
<string name="sensor_state_cadence_avg">Avg Cadência</string>
|
||||
<string name="permission_bluetooth_failed_rejected">Precisa conceder acesso ao OpenTracks manualmente para aparelhos próximos nas configurações do sistema.</string>
|
||||
<string name="sensor_state_power_avg">Energia Avg</string>
|
||||
<string name="sensor_could_not_scan">Não foi possível procurar aparelhos Bluetooth (erro %1$i).</string>
|
||||
<string name="bluetooth_disabled">Ative o Bluetooth.</string>
|
||||
<string name="settings_open_tracks_title">Trilhas abertas</string>
|
||||
<string name="settings_open_tracks_summary">Tudo sobre o Projeto OpenTracks</string>
|
||||
<string name="settings_defaults_title">Unidades e Atividade Default</string>
|
||||
<string name="settings_defaults_summary">Unidades Preferidas, Atividade Padrão, Nome Padrão da Pista</string>
|
||||
<string name="settings_ui_title">Interface do utilizador</string>
|
||||
<string name="settings_ui_summary">Aparência, Layout de gravação, Tema</string>
|
||||
<string name="settings_gps_title">GPS</string>
|
||||
<string name="settings_gps_summary">Intervalo de tempo, Intervalo de distância, Distância máxima, Precisão</string>
|
||||
<string name="settings_sensors_title">Sensores Bluetooth</string>
|
||||
<string name="settings_sensors_summary">Voice announcements</string>
|
||||
<string name="settings_announcements_title">Anúncios de voz</string>
|
||||
<string name="settings_announcements_summary">Tempo, distância, velocidade da voz</string>
|
||||
<string name="settings_import_export_title">Importar/Exportar</string>
|
||||
<string name="settings_import_export_summary">Importar, Exportar, Auto Export</string>
|
||||
<string name="settings_units_category">Unidades</string>
|
||||
<string name="settings_activity_defaults_category">Defaults da atividade</string>
|
||||
<string name="settings_reset_summary">Redefinir configurações para valores padrão</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_title">Mantenha o ecrã ligada</string>
|
||||
<string name="settings_recording_fullscreen_on_while_recording_summary">Durante a gravação, apresente em ecrã inteiro.</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_summary">Durante a gravação, mantenha o ecrã ligado.</string>
|
||||
<string name="settings_recording_idle_speed_title">Limite de velocidade de marcha lenta</string>
|
||||
<string name="settings_night_mode_title">Tema UI</string>
|
||||
<string name="settings_night_mode_option_system">Sistema</string>
|
||||
<string name="settings_night_mode_option_night">Noite</string>
|
||||
<string name="settings_announcements_lap_heart_rate">Frequência cardíaca da volta</string>
|
||||
<string name="settings_announcements_average_speed_pace">Velocidade/ritmo médio</string>
|
||||
<string name="custom_layout_list_edit_already_exists">O nome do layout já existe</string>
|
||||
<string name="custom_layout_select_layout">Selecionar layout</string>
|
||||
<string name="settings_layout_reset_done">Todas as configurações de layout foram revertidas para os valores padrão</string>
|
||||
<string name="settings_generic_sensor">Genérico</string>
|
||||
<string name="stats_custom_layout_default_layout">Layout padrão</string>
|
||||
<string name="settings_layout_reset">Redefinir layout personalizado</string>
|
||||
<string name="settings_cycling_sensor">Ciclismo</string>
|
||||
<string name="settings_running_sensor">Correndo</string>
|
||||
<string name="settings_sensor_cycling_distance_speed">Distância e velocidade</string>
|
||||
<string name="settings_sensor_cycling_cadence">Cadência</string>
|
||||
<string name="settings_sensor_running_speed_and_cadence">Distância, velocidade e cadência</string>
|
||||
<string name="settings_sensor_wheel_circumference">Circunferência da Roda (mm)</string>
|
||||
<string name="settings_sensor_bluetooth_service_filter_enabled">Mostrar apenas aparelhos Bluetooth que anunciam os serviços necessários</string>
|
||||
<string name="settings_public_api_enabled_summary_off">Apenas o OpenTracks pode iniciar e parar gravações.</string>
|
||||
<string name="settings_public_api_enabled_title">API pública</string>
|
||||
<string name="settings_public_api_disabled_toast">A API pública do OpenTracks está desativada: pode ser ativada nas configurações.</string>
|
||||
<string name="settings_public_api_dashboard_enabled_title">Transferência automática de dados</string>
|
||||
<string name="settings_public_api_dashboard_enabled_summary_on">Uma aplicação que iniciou uma gravação também pode acessar os dados gravados.</string>
|
||||
<string name="settings_public_api_dashboard_enabled_summary_off">Os dados gravados não serão compartilhados automaticamente com outras aplicações.</string>
|
||||
<string name="settings_import_section">Importar</string>
|
||||
<string name="settings_export_section">Exportar</string>
|
||||
<string name="settings_prevent_reimport_tracks_title">Impedir a reimportação de trilhas</string>
|
||||
<string name="stats_loss">Perda</string>
|
||||
<string name="stats_coordinates">Latitude/Longitude</string>
|
||||
<string name="stats_split_interval">Intervalo de divisão</string>
|
||||
<string name="stats_sensors_power">Poder</string>
|
||||
<string name="stats_clock">Relógio</string>
|
||||
<string name="stats_sensors_heart_rate">Frequência cardíaca</string>
|
||||
<string name="stats_sensors_cadence">Cadência</string>
|
||||
<string name="track_distance_notification">Distância: %1$s</string>
|
||||
<string name="track_speed_notification">Velocidade: %1$s</string>
|
||||
<string name="track_pace_notification">Parcela: %1$s</string>
|
||||
<string name="track_delete_number_of_tracks">%1$d trilhas</string>
|
||||
<string name="track_detail_intervals_tab">intervalos</string>
|
||||
<string name="aggregated_stats_empty_message">Registe a sua primeira trilha para ver as estatísticas agregadas</string>
|
||||
<string name="track_delete_not_recording">Esta trilha não pode ser excluída porque está gravada no momento.</string>
|
||||
<string name="track_discarding">Descartando trilha</string>
|
||||
<string name="aggregated_stats_filter_no_results">Não há atividades para o filtro especificado</string>
|
||||
<string name="interval_list_empty_message">Não há nenhum intervalo ainda</string>
|
||||
<string name="unit_knots">kn</string>
|
||||
<string name="location_coordinate">%1$s°</string>
|
||||
<string name="unit_minute_per_nautical_mile">min/NM</string>
|
||||
<string name="value_float_kilometer_hour">%1$.1f km/h</string>
|
||||
<string name="value_float_kilometer_hour_recommended">%1$.1f km/h (Recomendado)</string>
|
||||
<string name="value_float_mile_hour">%1$.1f mi/h</string>
|
||||
<string name="value_float_knots">%1$.1f nós</string>
|
||||
<string name="value_float_mile_hour_recommended">%1$.1f mi/h (Recomendado)</string>
|
||||
<string name="value_float_knots_recommended">%1$.1f nós (recomendado)</string>
|
||||
<plurals name="voiceSpeedMKnots">
|
||||
<item quantity="one">%1$.1f nó</item>
|
||||
<item quantity="other">%1$.1f nós</item>
|
||||
</plurals>
|
||||
<string name="voice_per_kilometer">por quilômetro</string>
|
||||
<string name="voice_per_mile">por milha</string>
|
||||
<string name="voice_per_nautical_mile">por milha náutica</string>
|
||||
<string name="lap_time">Tempo da volta</string>
|
||||
<string name="pace">Ritmo</string>
|
||||
<string name="lap_speed">Velocidade da volta</string>
|
||||
<string name="speed">Velocidade</string>
|
||||
<string name="total_distance">Distância total</string>
|
||||
<plurals name="voiceDistanceKilometers">
|
||||
<item quantity="one">%1$.1f quilómetro</item>
|
||||
<item quantity="other">%1$.1f quilómetros</item>
|
||||
</plurals>
|
||||
<plurals name="voiceDistanceMiles">
|
||||
<item quantity="one">%1$.1f milha</item>
|
||||
<item quantity="other">%1$.1f milhas</item>
|
||||
</plurals>
|
||||
<plurals name="voiceDistanceNauticalMiles">
|
||||
<item quantity="one">%1$.1f milha náutica</item>
|
||||
<item quantity="other">%1$.1f milhas náuticas</item>
|
||||
</plurals>
|
||||
<string name="share_image_body">Acho que pode estar interessado nesta imagem.</string>
|
||||
<string name="hold_to_stop">Segure para parar</string>
|
||||
<string name="instant_export_enabled_summary">Exportar trilha para armazenamento depois que a gravação for concluída</string>
|
||||
<string name="instant_export_enabled_title">Exportação instantânea pós-treino</string>
|
||||
<string name="field_set_primary">Primário</string>
|
||||
<string name="settings_default_export_uri_title">Diretório de exportação de trilhas</string>
|
||||
<string name="field_set_secondary">Secundário</string>
|
||||
<string name="no_compatible_file_manager_installed">Nenhum gestor de ficheiros compatível instalado</string>
|
||||
<string name="error_crash_title">%1$s falharam</string>
|
||||
<string name="share_crash_report">Compartilhar relatório de falha</string>
|
||||
<string name="report_bug">Relatório de problema</string>
|
||||
<string name="select_show_on_map_behavior">Selecionar comportamento de \"mostrar no mapa\"</string>
|
||||
<string name="show_on_map_format_ask">Perguntas</string>
|
||||
<string name="show_on_dashboard">Painel API do OpenTracks</string>
|
||||
<string name="always">Sempre</string>
|
||||
<string name="show_on_dashboard_not_installed">Nenhuma aplicação compatível com o painel API do OpenTracks instalado.</string>
|
||||
<string name="introduction_osm_dashboard">O próprio OpenTracks não fornece um mapa. Instale o OSMDashboard para visualizar as suas gravações num mapa.</string>
|
||||
</resources>
|
||||
@@ -61,5 +61,4 @@ limitations under the License.
|
||||
<color name="heart_rate_zone_textcolor_4">#FFBD04</color>
|
||||
<color name="heart_rate_zone_textcolor_3">#6ACC2B</color>
|
||||
<color name="heart_rate_zone_textcolor_2">#64D1FD</color>
|
||||
<color name="heart_rate_zone_textcolor_1">@color/opentracks_on_primary_color</color>
|
||||
</resources>
|
||||
@@ -64,75 +64,6 @@
|
||||
<!-- Stats layout customization default layout -->
|
||||
<string name="default_activity_key" translatable="false">defaultActivity</string>
|
||||
<string name="default_activity_default" translatable="false">@string/activity_type_unknown</string>
|
||||
<string-array name="activity_types">
|
||||
<item>@string/default_activity_default</item>
|
||||
|
||||
<item>@string/activity_type_airplane</item>
|
||||
<item>@string/activity_type_atv</item>
|
||||
<item>@string/activity_type_biking</item>
|
||||
<item>@string/activity_type_blimp</item>
|
||||
<item>@string/activity_type_boat</item>
|
||||
<item>@string/activity_type_climbing</item>
|
||||
<item>@string/activity_type_commercial_airplane</item>
|
||||
<item>@string/activity_type_cross_country_skiing</item>
|
||||
<item>@string/activity_type_cycling</item>
|
||||
<item>@string/activity_type_dirt_bike</item>
|
||||
<item>@string/activity_type_donkey_back_riding</item>
|
||||
<item>@string/activity_type_driving</item>
|
||||
<item>@string/activity_type_driving_bus</item>
|
||||
<item>@string/activity_type_driving_car</item>
|
||||
<item>@string/activity_type_ferry</item>
|
||||
<item>@string/activity_type_frisbee</item>
|
||||
<item>@string/activity_type_gliding</item>
|
||||
<item>@string/activity_type_hang_gliding</item>
|
||||
<item>@string/activity_type_helicopter</item>
|
||||
<item>@string/activity_type_hiking</item>
|
||||
<item>@string/activity_type_horse_back_riding</item>
|
||||
<item>@string/activity_type_hot_air_balloon</item>
|
||||
<item>@string/activity_type_ice_sailing</item>
|
||||
<item>@string/activity_type_inline_skating</item>
|
||||
<item>@string/activity_type_kayaking</item>
|
||||
<item>@string/activity_type_kite_surfing</item>
|
||||
<item>@string/activity_type_land_sailing</item>
|
||||
<item>@string/activity_type_mixed_type</item>
|
||||
<item>@string/activity_type_motor_bike</item>
|
||||
<item>@string/activity_type_motor_boating</item>
|
||||
<item>@string/activity_type_mountain_biking</item>
|
||||
<item>@string/activity_type_off_trail_hiking</item>
|
||||
<item>@string/activity_type_other</item>
|
||||
<item>@string/activity_type_paddling</item>
|
||||
<item>@string/activity_type_para_gliding</item>
|
||||
<item>@string/activity_type_rc_airplane</item>
|
||||
<item>@string/activity_type_rc_boat</item>
|
||||
<item>@string/activity_type_rc_helicopter</item>
|
||||
<item>@string/activity_type_riding</item>
|
||||
<item>@string/activity_type_road_biking</item>
|
||||
<item>@string/activity_type_roller_skiing</item>
|
||||
<item>@string/activity_type_rowing</item>
|
||||
<item>@string/activity_type_running</item>
|
||||
<item>@string/activity_type_sailing</item>
|
||||
<item>@string/activity_type_seaplane</item>
|
||||
<item>@string/activity_type_skate_boarding</item>
|
||||
<item>@string/activity_type_skating</item>
|
||||
<item>@string/activity_type_skiing</item>
|
||||
<item>@string/activity_type_sky_jumping</item>
|
||||
<item>@string/activity_type_sled</item>
|
||||
<item>@string/activity_type_snow_boarding</item>
|
||||
<item>@string/activity_type_snow_shoeing</item>
|
||||
<item>@string/activity_type_speed_walking</item>
|
||||
<item>@string/activity_type_street_running</item>
|
||||
<item>@string/activity_type_surfing</item>
|
||||
<item>@string/activity_type_track_cycling</item>
|
||||
<item>@string/activity_type_track_running</item>
|
||||
<item>@string/activity_type_trail_hiking</item>
|
||||
<item>@string/activity_type_trail_running</item>
|
||||
<item>@string/activity_type_train</item>
|
||||
<item>@string/activity_type_ultimate_frisbee</item>
|
||||
<item>@string/activity_type_wakeboarding</item>
|
||||
<item>@string/activity_type_walking</item>
|
||||
<item>@string/activity_type_water_skiing</item>
|
||||
<item>@string/activity_type_wind_surfing</item>
|
||||
</string-array>
|
||||
|
||||
<string name="recording_distance_interval_key" translatable="false">recordingDistanceInterval</string>
|
||||
<string name="recording_distance_interval_default" translatable="false">10</string>
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<full-backup-content>
|
||||
<include domain="sharedpref" path="." requireFlags="clientSideEncryption"/>
|
||||
<include domain="database" path="." requireFlags="clientSideEncryption"/>
|
||||
<include domain="external" path="." requireFlags="clientSideEncryption"/>
|
||||
</full-backup-content>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<data-extraction-rules>
|
||||
<cloud-backup disableIfNoEncryptionCapabilities="true">
|
||||
<include domain="sharedpref" path="."/>
|
||||
<include domain="database" path="."/>
|
||||
<include domain="external" path="."/>
|
||||
</cloud-backup>
|
||||
<device-transfer>
|
||||
<include domain="sharedpref" path="."/>
|
||||
<include domain="database" path="."/>
|
||||
<include domain="external" path="."/>
|
||||
</device-transfer>
|
||||
</data-extraction-rules>
|
||||
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<locale android:name="ar"/>
|
||||
<locale android:name="bg"/>
|
||||
<locale android:name="ca"/>
|
||||
<locale android:name="cs"/>
|
||||
<locale android:name="da"/>
|
||||
<locale android:name="de"/>
|
||||
<locale android:name="el"/>
|
||||
<locale android:name="en"/>
|
||||
<locale android:name="es"/>
|
||||
<locale android:name="et"/>
|
||||
<locale android:name="eu"/>
|
||||
<locale android:name="fa"/>
|
||||
<locale android:name="fi"/>
|
||||
<locale android:name="fr"/>
|
||||
<locale android:name="ga"/>
|
||||
<locale android:name="gl"/>
|
||||
<locale android:name="hi"/>
|
||||
<locale android:name="hr"/>
|
||||
<locale android:name="hu"/>
|
||||
<locale android:name="in"/>
|
||||
<locale android:name="it"/>
|
||||
<locale android:name="iw"/>
|
||||
<locale android:name="ja"/>
|
||||
<locale android:name="ko"/>
|
||||
<locale android:name="lt"/>
|
||||
<locale android:name="lv"/>
|
||||
<locale android:name="mo"/>
|
||||
<locale android:name="ms"/>
|
||||
<locale android:name="nb"/>
|
||||
<locale android:name="nl"/>
|
||||
<locale android:name="pl"/>
|
||||
<locale android:name="pt"/>
|
||||
<locale android:name="ro"/>
|
||||
<locale android:name="ru"/>
|
||||
<locale android:name="sk"/>
|
||||
<locale android:name="sl"/>
|
||||
<locale android:name="sr"/>
|
||||
<locale android:name="sv"/>
|
||||
<locale android:name="th"/>
|
||||
<locale android:name="tl"/>
|
||||
<locale android:name="tr"/>
|
||||
<locale android:name="uk"/>
|
||||
<locale android:name="vi"/>
|
||||
<locale android:name="zh"/>
|
||||
</locale-config>
|
||||
Reference in New Issue
Block a user