Merge heads

This commit is contained in:
youtaol
2012-06-21 12:26:07 +08:00
parent 67d24783d8
commit 36e6641980
7 changed files with 284 additions and 102 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ limitations under the License.
--> -->
<resources> <resources>
<!-- DO NOT TRANSLATE ANY STRINGS IN THIS FILE. --> <!-- DO NOT TRANSLATE ANY STRINGS IN THIS FILE. -->
<string name="maps_public_unlisted_url">support.google.com/maps/bin/answer.py?answer=62845</string> <string name="maps_public_unlisted_url">support.google.com/maps/bin/answer.py?answer=144365</string>
<string name="marker_statistics_icon_url">http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png</string> <string name="marker_statistics_icon_url">http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png</string>
<string name="marker_waypoint_icon_url">http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png</string> <string name="marker_waypoint_icon_url">http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png</string>
<string name="my_tracks_privacy_url">www.google.com/policies/privacy/</string> <string name="my_tracks_privacy_url">www.google.com/policies/privacy/</string>
+136 -98
View File
@@ -724,8 +724,7 @@ limitations under the License.
How can I edit or correct tracks for accuracy? How can I edit or correct tracks for accuracy?
</string> </string>
<string name="help_elevation_precision_answer" <string name="help_elevation_precision_answer"
translation_description="In the 'Help' page, the help content answer on elevation translation_description="In the 'Help' page, the help content answer on elevation precision.">
precision.">
GPS receivers measure elevations much less precisely than latitude and longitude. Elevations GPS receivers measure elevations much less precisely than latitude and longitude. Elevations
can sometimes be off by a few hundred feet, though relative changes are tracked more precisely. can sometimes be off by a few hundred feet, though relative changes are tracked more precisely.
To get a good elevation measurement, make sure that you have a strong GPS signal and wait a few To get a good elevation measurement, make sure that you have a strong GPS signal and wait a few
@@ -738,9 +737,9 @@ limitations under the License.
<string name="help_google_services_answer" <string name="help_google_services_answer"
translation_description="In the 'Help' page, the answer on locations of google services. translation_description="In the 'Help' page, the answer on locations of google services.
%1$s url. E.g., 'maps.google.com'. %1$s url. E.g., 'maps.google.com'.
%2$s url. E.g., 'google.com/fusiontables'. %2$s url. E.g., 'google.com/fusiontables'.
%3$s url. E.g., 'docs.google.com'."> %3$s url. E.g., 'docs.google.com'.">
For Google Maps, go to %1$s and click on \"My Places\". For Google Fusion Tables, go to %2$s. For Google Maps, go to %1$s and click on \"My Places\". For Google Fusion Tables, go to %2$s.
For Google Docs, go to %3$s. For Google Docs, go to %3$s.
</string> </string>
@@ -773,7 +772,7 @@ limitations under the License.
<string name="help_maps_public_unlisted_answer" <string name="help_maps_public_unlisted_answer"
translation_description="In the 'Help' page, the answer on public versus unlisted maps. translation_description="In the 'Help' page, the answer on public versus unlisted maps.
%1$s url. E.g., 'support.google.com/maps/bin/answer.py?answer=62845'."> %1$s url. E.g., 'support.google.com/maps/bin/answer.py?answer=144365'.">
See %1$s. See %1$s.
</string> </string>
<string name="help_maps_public_unlisted_question" <string name="help_maps_public_unlisted_question"
@@ -904,13 +903,13 @@ limitations under the License.
<!-- Maps List --> <!-- Maps List -->
<string name="maps_list_error" <string name="maps_list_error"
translation_description="When sending a track to an existing Google Map, the text on the translation_description="When sending a track to an existing Google Map, the text on the Maps'
'Maps' list page informing the user that his maps cannot be loaded at this time."> list page informing the user that his maps cannot be loaded at this time.">
Your maps could not be loaded at this time. Your maps could not be loaded at this time.
</string> </string>
<string name="maps_list_no_maps" <string name="maps_list_no_maps"
translation_description="When sending a track to an existing Google Map, the text on the translation_description="When sending a track to an existing Google Map, the text on the 'Maps'
'Maps' list page informing the user that he doesn't have any maps."> list page informing the user that he doesn't have any maps.">
You don\'t have any maps. You don\'t have any maps.
</string> </string>
<string name="maps_list_progress_message" <string name="maps_list_progress_message"
@@ -919,18 +918,18 @@ limitations under the License.
Loading your Google Maps... Loading your Google Maps...
</string> </string>
<string name="maps_list_public_label" <string name="maps_list_public_label"
translation_description="When sending a track to an existing Google Map, in the 'Maps' translation_description="When sending a track to an existing Google Map, in the 'Maps' list
list page, the label next to the maps that are public, as opposed to being unlisted."> page, the label next to the maps that are public, as opposed to being unlisted.">
Public Public
</string> </string>
<string name="maps_list_title" <string name="maps_list_title"
translation_description="When sending a track to an existing Google Map, the title of the translation_description="When sending a track to an existing Google Map, the title of the page
page asking the user to pick a map."> asking the user to pick a map.">
Pick a Map Pick a Map
</string> </string>
<string name="maps_list_unlisted_label" <string name="maps_list_unlisted_label"
translation_description="When sending a track to an existing Google Map, in the 'Maps' translation_description="When sending a track to an existing Google Map, in the 'Maps' list
list page, the label next to the maps that are unlisted, as opposed to being public."> page, the label next to the maps that are unlisted, as opposed to being public.">
Unlisted Unlisted
</string> </string>
@@ -982,7 +981,7 @@ limitations under the License.
name. E.g., 'track_name (Start)'. name. E.g., 'track_name (Start)'.
%1$s track name. E.g., 'track_name'."> %1$s track name. E.g., 'track_name'.">
%1$s (Start) %1$s (Start)
</string> </string>
<string name="marker_list_empty_message" <string name="marker_list_empty_message"
translation_description="The message when the marker list is empty."> translation_description="The message when the marker list is empty.">
@@ -1061,8 +1060,8 @@ limitations under the License.
Save all to SD card... Save all to SD card...
</string> </string>
<string name="menu_save_format" <string name="menu_save_format"
translation_description="Under the save to SD card menu option, the option to save a track translation_description="Under the save to SD card menu option, the option to save a track as a
as a certain file format. certain file format.
%1$s: file format. 'GPX', 'KML', 'CSV', or 'TCX'."> %1$s: file format. 'GPX', 'KML', 'CSV', or 'TCX'.">
Save as %1$s Save as %1$s
@@ -1092,8 +1091,8 @@ limitations under the License.
Show on map Show on map
</string> </string>
<string name="menu_split_frequency" <string name="menu_split_frequency"
translation_description="In the menu, to configure the split frequency, how frequent to insert translation_description="In the menu, to configure the split frequency, how frequent to insert a
a split marker."> split marker.">
Split frequency Split frequency
</string> </string>
<string name="menu_stop_recording" <string name="menu_stop_recording"
@@ -1253,8 +1252,8 @@ limitations under the License.
<!-- Send Google --> <!-- Send Google -->
<string name="send_google_by_my_tracks" <string name="send_google_by_my_tracks"
translation_description="When sending a track to Google, a note indicating it is created by translation_description="When sending a track to Google, a note indicating it is created by My
My Tracks on Android. Tracks on Android.
%1$s: the html anchor opening tag. Place this placeholder before the app name, 'My Tracks'. %1$s: the html anchor opening tag. Place this placeholder before the app name, 'My Tracks'.
%2$s: the html anchor closing tag. Place this placeholder after the app name, 'My Tracks'."> %2$s: the html anchor closing tag. Place this placeholder after the app name, 'My Tracks'.">
@@ -1294,13 +1293,13 @@ limitations under the License.
Google Maps Google Maps
</string> </string>
<string name="send_google_new_public_map" <string name="send_google_new_public_map"
translation_description="When sending a track to Google Maps, the radio option to create a translation_description="When sending a track to Google Maps, the radio option to create a new
new public map as opposed to use an existing map."> public map as opposed to use an existing map.">
Create new public map Create new public map
</string> </string>
<string name="send_google_new_unlisted_map" <string name="send_google_new_unlisted_map"
translation_description="When sending a track to Google Maps, the radio option to create a translation_description="When sending a track to Google Maps, the radio option to create a new
new unlisted map as opposed to use an existing map."> unlisted map as opposed to use an existing map.">
Create new unlisted map Create new unlisted map
</string> </string>
<string name="send_google_no_account_message" <string name="send_google_no_account_message"
@@ -1357,8 +1356,9 @@ limitations under the License.
</string> </string>
<string name="sensor_state_cadence" <string name="sensor_state_cadence"
translation_description="In the 'Sensor state' page, the label for the cadence on the bike translation_description="In the 'Sensor state' page, the label for the cadence on the bike
sensor. Cadence is the number of revolutions of the crank per minute. E.g., sensor. Cadence is the number of revolutions of the crank per minute. E.g., 'Cadence: 80 rpm'.
'Cadence: 80 rpm'.">
Character limit: ~23 (1 line)">
Cadence Cadence
</string> </string>
<string name="sensor_state_cadence_value" <string name="sensor_state_cadence_value"
@@ -1385,7 +1385,9 @@ limitations under the License.
</string> </string>
<string name="sensor_state_heart_rate" <string name="sensor_state_heart_rate"
translation_description="In the 'Sensor state' page, the label for the heart rate from a heart translation_description="In the 'Sensor state' page, the label for the heart rate from a heart
rate sensor. E.g., 'Hear rate: 100 bpm'."> rate sensor. E.g., 'Hear rate: 100 bpm'.
Character limit: ~23 (1 line)">
Heart rate Heart rate
</string> </string>
<string name="sensor_state_heart_rate_value" <string name="sensor_state_heart_rate_value"
@@ -1402,7 +1404,9 @@ limitations under the License.
</string> </string>
<string name="sensor_state_power" <string name="sensor_state_power"
translation_description="In the 'Sensor state' page, the label for the power from the bike translation_description="In the 'Sensor state' page, the label for the power from the bike
sensor. Power is the power output of the rider. E.g., 'Power: 50 W'."> sensor. Power is the power output of the rider. E.g., 'Power: 50 W'.
Character limit: ~23 (1 line)">
Power Power
</string> </string>
<string name="sensor_state_power_value" <string name="sensor_state_power_value"
@@ -1427,8 +1431,8 @@ limitations under the License.
Backup Backup
</string> </string>
<string name="settings_backup_now" <string name="settings_backup_now"
translation_description="In the 'Backup' settings, under the 'SD card' section, the translation_description="In the 'Backup' settings, under the 'SD card' section, the option to
option to backup to the SD card now. backup to the SD card now.
Character limit: ~26 (1 line)"> Character limit: ~26 (1 line)">
Backup now Backup now
@@ -1439,14 +1443,14 @@ limitations under the License.
Writing all tracks and settings... Writing all tracks and settings...
</string> </string>
<string name="settings_backup_now_summary" <string name="settings_backup_now_summary"
translation_description="In the 'Backup' settings, under the 'SD card' section, the translation_description="In the 'Backup' settings, under the 'SD card' section, the summary for
summary for the 'Backup now' option explaining that all tracks and settings will be written to the 'Backup now' option explaining that all tracks and settings will be written to the SD
the SD card."> card.">
Write a full copy of all your tracks and settings to the SD card. Write a full copy of all your tracks and settings to the SD card.
</string> </string>
<string name="settings_backup_restore" <string name="settings_backup_restore"
translation_description="In the 'Backup' settings, under the 'SD card' section, the translation_description="In the 'Backup' settings, under the 'SD card' section, the option to
option to restore everything from the SD card. restore everything from the SD card.
Character limit: ~26 (1 line)"> Character limit: ~26 (1 line)">
Restore now Restore now
@@ -1474,9 +1478,9 @@ limitations under the License.
Select a backup to restore Select a backup to restore
</string> </string>
<string name="settings_backup_restore_summary" <string name="settings_backup_restore_summary"
translation_description="In the 'Backup' settings, under the 'SD card' section, the translation_description="In the 'Backup' settings, under the 'SD card' section, the summary for
summary for the 'Restore now' option explaining that it restores all tracks and settings from the 'Restore now' option explaining that it restores all tracks and settings from the SD
the SD card."> card.">
Restore all tracks and settings from the SD card. Restore all tracks and settings from the SD card.
</string> </string>
@@ -1492,19 +1496,25 @@ limitations under the License.
</string> </string>
<string name="settings_chart_x_axis" <string name="settings_chart_x_axis"
translation_description="In the 'Chart' settings, the option to change the x axis display, translation_description="In the 'Chart' settings, the option to change the x axis display,
either by distance or by time."> either by distance or by time.
Character limit: ~23 (1 line)">
X axis X axis
</string> </string>
<!-- Settings Map --> <!-- Settings Map -->
<string name="settings_map_medium" <string name="settings_map_medium"
translation_description="In the 'Map' settings, under the 'Fixed thresholds' configurations, the translation_description="In the 'Map' settings, under the 'Fixed thresholds' configurations, the
option for configuring the top medium speed."> option for configuring the top medium speed.
Character limit: ~23 (1 line)">
Top medium speed Top medium speed
</string> </string>
<string name="settings_map_percentage" <string name="settings_map_percentage"
translation_description="In the 'Map' settings, under the 'Dynamic thresholds' configurations, translation_description="In the 'Map' settings, under the 'Dynamic thresholds' configurations,
the option for configuring the percentage from the average speed for the medium speed range."> the option for configuring the percentage from the average speed for the medium speed range.
Character limit: ~23 (1 line)">
Percentage from average Percentage from average
</string> </string>
<string name="settings_map_percentage_summary" <string name="settings_map_percentage_summary"
@@ -1516,29 +1526,38 @@ limitations under the License.
Percentage from the average speed for the medium speed range. Percentage from the average speed for the medium speed range.
</string> </string>
<string name="settings_map_slow" <string name="settings_map_slow"
translation_description="In the 'Map' settings, under the 'Fixed thresholds' configurations, translation_description="In the 'Map' settings, under the 'Fixed thresholds' configurations, the
the option for configuring the top slow speed."> option for configuring the top slow speed.
Character limit: ~23 (1 line)">
Top slow speed Top slow speed
</string> </string>
<string name="settings_map_track_color_mode" <string name="settings_map_track_color_mode"
translation_description="In the 'Map' settings, the option to select a track color mode for how translation_description="In the 'Map' settings, the option to select a track color mode for how
to use different colors to color a track based on slow, medium, and fast speed."> to use different colors to color a track based on slow, medium, and fast speed.
Track color mode
Character limit: ~23 (1 line)">
Track color
</string> </string>
<string name="settings_map_track_color_mode_dynamic" <string name="settings_map_track_color_mode_dynamic"
translation_description="In the 'Map' settings, for the 'Track color mode' dropdown, the translation_description="In the 'Map' settings, for the 'Track color mode' dropdown, the option
option to use different colors to color a track based on dynamically determined speed to use different colors to color a track based on dynamically determined speed thresholds.
thresholds.">
Character limit: ~21 (1 line)">
Dynamic thresholds Dynamic thresholds
</string> </string>
<string name="settings_map_track_color_mode_fixed" <string name="settings_map_track_color_mode_fixed"
translation_description="In the 'Map' settings, for the 'Track color mode' dropdown, the translation_description="In the 'Map' settings, for the 'Track color mode' dropdown, the option
option to use different colors to color a track based on fixed speed thresholds."> to use different colors to color a track based on fixed speed thresholds.
Character limit: ~21 (1 line)">
Fixed thresholds Fixed thresholds
</string> </string>
<string name="settings_map_track_color_mode_single" <string name="settings_map_track_color_mode_single"
translation_description="In the 'Map' settings, for the 'Track color mode' dropdown, the translation_description="In the 'Map' settings, for the 'Track color mode' dropdown, the option
option to use a single color for all speeds."> to use a single color for all speeds.
Character limit: ~21 (1 line)">
Single color Single color
</string> </string>
<string name="settings_map_track_color_mode_summary" <string name="settings_map_track_color_mode_summary"
@@ -1571,9 +1590,9 @@ limitations under the License.
Auto-resume Auto-resume
</string> </string>
<string name="settings_recording_auto_resume_summary" <string name="settings_recording_auto_resume_summary"
translation_description="In the 'Recording' settings, the summary for the 'Auto-resume' translation_description="In the 'Recording' settings, the summary for the 'Auto-resume' dropdown
dropdown option explaining that it configures the maximum time after which a previous option explaining that it configures the maximum time after which a previous recording will
recording will not be resumed after phone reboot."> not be resumed after phone reboot.">
Maximum time after which a previously recording track will not be resumed after phone reboot. Maximum time after which a previously recording track will not be resumed after phone reboot.
</string> </string>
<string name="settings_recording_default_activity" <string name="settings_recording_default_activity"
@@ -1597,14 +1616,14 @@ limitations under the License.
</string> </string>
<string name="settings_recording_distance_summary" <string name="settings_recording_distance_summary"
translation_description="In the 'Recording' settings, the summary for the 'Distance interval' translation_description="In the 'Recording' settings, the summary for the 'Distance interval'
dropdown option explaining that it configures the smallest distance between two dropdown option explaining that it configures the smallest distance between two recordings of
recordings of your position."> your position.">
Smallest distance between two recordings of your position. Smallest distance between two recordings of your position.
</string> </string>
<string name="settings_recording_gps_accuracy" <string name="settings_recording_gps_accuracy"
translation_description="In the 'Recording' settings, the dropdown option to configure the translation_description="In the 'Recording' settings, the dropdown option to configure the
required GPS accuracy. If a GPS position's accuracy is below the requirement, then it will required GPS accuracy. If a GPS position's accuracy is below the requirement, then it will not
not be used. be used.
Character limit: ~23 (1 line)"> Character limit: ~23 (1 line)">
GPS accuracy GPS accuracy
@@ -1616,8 +1635,8 @@ limitations under the License.
GPS position will be ignored if it is not this accurate. GPS position will be ignored if it is not this accurate.
</string> </string>
<string name="settings_recording_interval" <string name="settings_recording_interval"
translation_description="In the 'Recording' settings, the dropdown option to configure the translation_description="In the 'Recording' settings, the dropdown option to configure the time
time between two recorded points. between two recorded points.
Character limit: ~23 (1 line)"> Character limit: ~23 (1 line)">
Time interval Time interval
@@ -1637,8 +1656,8 @@ limitations under the License.
</string> </string>
<string name="settings_recording_track_distance_summary" <string name="settings_recording_track_distance_summary"
translation_description="In the 'Recording' settings, the summary for the 'Max interval' translation_description="In the 'Recording' settings, the summary for the 'Max interval'
dropdown option explaining that it configures the maximum distance for two recorded dropdown option explaining that it configures the maximum distance for two recorded points for
points for them to be still considered as the same track."> them to be still considered as the same track.">
Maximum distance between two recordings of your position. If two positions are further than Maximum distance between two recordings of your position. If two positions are further than
this, the track will be split. this, the track will be split.
</string> </string>
@@ -1697,14 +1716,14 @@ limitations under the License.
preserved. preserved.
</string> </string>
<string name="settings_reset_done" <string name="settings_reset_done"
translation_description="In the 'Settings' page, after pressing the 'Reset' option, translation_description="In the 'Settings' page, after pressing the 'Reset' option, the
the confirmation dialog informing the user that all settings have been reverted to their confirmation dialog informing the user that all settings have been reverted to their
defaults."> defaults.">
All settings have been reverted to their defaults. All settings have been reverted to their defaults.
</string> </string>
<string name="settings_reset_summary" <string name="settings_reset_summary"
translation_description="In the 'Settings' page, the summary for the 'Reset' option translation_description="In the 'Settings' page, the summary for the 'Reset' option explaining
explaining reverting all the settings to the default values."> reverting all the settings to the default values.">
Revert all your settings to the default values. Revert all your settings to the default values.
</string> </string>
@@ -1720,7 +1739,7 @@ limitations under the License.
translation_description="In the 'Sensor' settings, the section header to configure the ANT+ translation_description="In the 'Sensor' settings, the section header to configure the ANT+
options. Note that ANT+ is a radio standard. options. Note that ANT+ is a radio standard.
Character limit: ~40 (1 line)"> Character limit: ~26 (1 line)">
ANT+ options ANT+ options
</string> </string>
<string name="settings_sensor_ant_paired" <string name="settings_sensor_ant_paired"
@@ -1763,7 +1782,7 @@ limitations under the License.
translation_description="In the 'Sensor' settings, the section header to configure the Bluetooth translation_description="In the 'Sensor' settings, the section header to configure the Bluetooth
options. options.
Character limit: ~40 (1 line)"> Character limit: ~26 (1 line)">
Bluetooth options Bluetooth options
</string> </string>
<string name="settings_sensor_bluetooth_pairing" <string name="settings_sensor_bluetooth_pairing"
@@ -1861,9 +1880,9 @@ limitations under the License.
</string> </string>
<string name="settings_sharing_allow_access_confirm_message" <string name="settings_sharing_allow_access_confirm_message"
translation_description="In the 'Sharing' settings, after checking the 'Allow access' checkbox, translation_description="In the 'Sharing' settings, after checking the 'Allow access' checkbox,
the confirmation dialog message informing the user that other apps, including apps the confirmation dialog message informing the user that other apps, including apps installed
installed in the future, will be able to control and access My Tracks data. In addition, no in the future, will be able to control and access My Tracks data. In addition, no further
further notification of third party app access will be shown."> notification of third party app access will be shown.">
Other apps, including future apps, will be able to control and access My Tracks data. There will Other apps, including future apps, will be able to control and access My Tracks data. There will
be no further notification. be no further notification.
</string> </string>
@@ -1882,7 +1901,7 @@ limitations under the License.
<string name="settings_sharing_map_public" <string name="settings_sharing_map_public"
translation_description="In the 'Sharing' settings, the title of the option to make new maps translation_description="In the 'Sharing' settings, the title of the option to make new maps
created in Google Maps public, as opposed to unlisted. See created in Google Maps public, as opposed to unlisted. See
http://support.google.com/maps/bin/answer.py?answer=62845 for public versus unlisted. http://support.google.com/maps/bin/answer.py?answer=144365 for public versus unlisted.
Character limit: ~23 (1 line)"> Character limit: ~23 (1 line)">
Make new maps public Make new maps public
@@ -1890,15 +1909,15 @@ limitations under the License.
<string name="settings_sharing_map_public_summary" <string name="settings_sharing_map_public_summary"
translation_description="In the 'Sharing' settings, the summary for the 'Make new maps public' translation_description="In the 'Sharing' settings, the summary for the 'Make new maps public'
option explaining that new maps created in Google Maps will be public, as opposed to unlisted. option explaining that new maps created in Google Maps will be public, as opposed to unlisted.
See http://support.google.com/maps/bin/answer.py?answer=62845 for public versus unlisted. See http://support.google.com/maps/bin/answer.py?answer=144365 for public versus unlisted.
%1$s url. E.g., 'support.google.com/maps/bin/answer.py?answer=62845'."> %1$s url. E.g., 'support.google.com/maps/bin/answer.py?answer=144365'.">
New maps created in Google Maps will be public. See %1$s for more info. New maps created in Google Maps will be public. See %1$s for more info.
</string> </string>
<string name="settings_sharing_map_unlisted" <string name="settings_sharing_map_unlisted"
translation_description="In the 'Sharing' settings, the title of the option to make new maps translation_description="In the 'Sharing' settings, the title of the option to make new maps
created in Google Maps unlisted, as opposed to public. See created in Google Maps unlisted, as opposed to public. See
http://support.google.com/maps/bin/answer.py?answer=62845 for public versus unlisted. http://support.google.com/maps/bin/answer.py?answer=144365 for public versus unlisted.
Character limit: ~23 (1 line)"> Character limit: ~23 (1 line)">
Make new maps unlisted Make new maps unlisted
@@ -1906,15 +1925,17 @@ limitations under the License.
<string name="settings_sharing_map_unlisted_summary" <string name="settings_sharing_map_unlisted_summary"
translation_description="In the 'Sharing' settings, the summary for the 'Make new maps unlisted' translation_description="In the 'Sharing' settings, the summary for the 'Make new maps unlisted'
option explaining that new maps created in Google Maps will be unlisted, as opposed to public. option explaining that new maps created in Google Maps will be unlisted, as opposed to public.
See http://support.google.com/maps/bin/answer.py?answer=62845 for public versus unlisted. See http://support.google.com/maps/bin/answer.py?answer=144365 for public versus unlisted.
%1$s url. E.g., 'support.google.com/maps/bin/answer.py?answer=62845'."> %1$s url. E.g., 'support.google.com/maps/bin/answer.py?answer=144365'.">
New maps created in Google Maps will be unlisted. See %1$s for more info. New maps created in Google Maps will be unlisted. See %1$s for more info.
</string> </string>
<!-- Settings Show --> <!-- Settings Show -->
<string name="settings_show" <string name="settings_show"
translation_description="In settings, the section label to show additional values."> translation_description="In settings, the section label to show additional values.
Character limit: ~26 (1 line)">
Show Show
</string> </string>
@@ -1926,22 +1947,30 @@ limitations under the License.
<!-- Settings Stats --> <!-- Settings Stats -->
<string name="settings_stats_coordinate" <string name="settings_stats_coordinate"
translation_description="In the 'Stats settings, the option to show latitude and longitude."> translation_description="In the 'Stats settings, the option to show latitude and longitude.
Character limit: ~23 (1 line)">
Latitude/Longitude Latitude/Longitude
</string> </string>
<string name="settings_stats_grade" <string name="settings_stats_grade"
translation_description="In the 'Stats settings, the option to show grade. Grade is the amount translation_description="In the 'Stats settings, the option to show grade. Grade is the amount
of inclination to the horizontal, also known as slope or incline."> of inclination to the horizontal, also known as slope or incline.
Character limit: ~23 (1 line)">
Grade Grade
</string> </string>
<string name="settings_stats_rate_title" <string name="settings_stats_rate_title"
translation_description="In the 'Stats' settings, the option to change the preferred rate, translation_description="In the 'Stats' settings, the option to change the preferred rate,
either speed (mi/hr) or pace (hr/mi)."> either speed (mi/hr) or pace (hr/mi).
Character limit: ~23 (1 line)">
Preferred rate Preferred rate
</string> </string>
<string name="settings_stats_time_title" <string name="settings_stats_time_title"
translation_description="In the 'Stats' settings, the option to change the time measurement, translation_description="In the 'Stats' settings, the option to change the time measurement,
either total time or moving time."> either total time or moving time.
Character limit: ~23 (1 line)">
Time measurement Time measurement
</string> </string>
<string name="settings_stats_units_imperial" <string name="settings_stats_units_imperial"
@@ -1956,13 +1985,17 @@ limitations under the License.
</string> </string>
<string name="settings_stats_units_title" <string name="settings_stats_units_title"
translation_description="In the 'Stats' settings page, the option to change the preferred units, translation_description="In the 'Stats' settings page, the option to change the preferred units,
either metric (km) or imperial (mi)."> either metric (km) or imperial (mi).
Character limit: ~23 (1 line)">
Preferred units Preferred units
</string> </string>
<!-- Settings Switch Account --> <!-- Settings Switch Account -->
<string name="settings_switch_account" <string name="settings_switch_account"
translation_description="In the 'Settings' page, the option to switch account."> translation_description="In the 'Settings' page, the option to switch account.
Character limit: ~26 (1 line)">
Switch account Switch account
</string> </string>
@@ -1976,14 +2009,14 @@ limitations under the License.
<string name="share_track_confirm_message" <string name="share_track_confirm_message"
translation_description="The confirmation message when sharing a track with friends. translation_description="The confirmation message when sharing a track with friends.
%1$s url. E.g., 'support.google.com/maps/bin/answer.py?answer=62845'."> %1$s url. E.g., 'support.google.com/maps/bin/answer.py?answer=144365'.">
This will upload your track to Google Maps so that you can share the map url with friends. The This will upload your track to Google Maps so that you can share the map url with friends. The
map will be either public or unlisted depending on your setting at Settings -> Sharing. For more map will be either public or unlisted depending on your setting at Settings -> Sharing. For more
info on public versus unlisted, see %1$s. info on public versus unlisted, see %1$s.
</string> </string>
<string name="share_track_picker_title" <string name="share_track_picker_title"
translation_description="When sharing a track with friends, the title on the picker to ask translation_description="When sharing a track with friends, the title on the picker to ask the
the user to select an application."> user to select an application.">
Select an application Select an application
</string> </string>
<string name="share_track_share_file" <string name="share_track_share_file"
@@ -1994,7 +2027,7 @@ limitations under the License.
<string name="share_track_share_file_body" <string name="share_track_share_file_body"
translation_description="When sharing a track file with friends, the body of the message. translation_description="When sharing a track file with friends, the body of the message.
%1$s: track description."> %1$s: track description.">
I think you might be interested in this track.\n\nTo view this track, use Google Earth or other I think you might be interested in this track.\n\nTo view this track, use Google Earth or other
mapping software.\n\n%1$s mapping software.\n\n%1$s
</string> </string>
@@ -2033,7 +2066,9 @@ limitations under the License.
Average speed Average speed
</string> </string>
<string name="stats_elevation" <string name="stats_elevation"
translation_description="In the 'Stats' page, the elevation."> translation_description="In the 'Stats' page, the elevation.
Character limit: ~23 (1 line)">
Elevation Elevation
</string> </string>
<string name="stats_elevation_gain" <string name="stats_elevation_gain"
@@ -2077,11 +2112,15 @@ limitations under the License.
Moving time Moving time
</string> </string>
<string name="stats_pace" <string name="stats_pace"
translation_description="In the 'Stats' page, the pace like hours per mile."> translation_description="In the 'Stats' page, the pace like hours per mile.
Character limit: ~23 (1 line)">
Pace Pace
</string> </string>
<string name="stats_speed" <string name="stats_speed"
translation_description="In the 'Stats' page, the speed like miles per hour."> translation_description="In the 'Stats' page, the speed like miles per hour.
Character limit: ~23 (1 line)">
Speed Speed
</string> </string>
<string name="stats_total_distance" <string name="stats_total_distance"
@@ -2210,7 +2249,7 @@ limitations under the License.
translation_description="To display a latitude or longitude coordinate in degree. E.g., translation_description="To display a latitude or longitude coordinate in degree. E.g.,
2.2 \u00B0. \u00B0 is the unicode value for the degree symbol. 2.2 \u00B0. \u00B0 is the unicode value for the degree symbol.
%1$s: a string value of the coordinate. E.g., '2.2'"> %1$s: a string value of the coordinate. E.g., '2.2'">
%1$s \u00B0 %1$s \u00B0
</string> </string>
<string name="value_float_feet" <string name="value_float_feet"
@@ -2353,9 +2392,8 @@ limitations under the License.
<string name="value_integer_percent" <string name="value_integer_percent"
translation_description="To display a value in percent like 2 %. %% is the escape sequence for translation_description="To display a value in percent like 2 %. %% is the escape sequence for
the percent symbol. the percent symbol.
for the percent symbol.
%1$d: an integer value. E.g., '2'"> %1$d: an integer value. E.g., '2'">
%1$d %% %1$d %%
</string> </string>
<string name="value_integer_second" <string name="value_integer_second"
@@ -22,6 +22,7 @@ import com.google.android.apps.mytracks.util.IntentUtils;
import com.google.android.apps.mytracks.util.StringUtils; import com.google.android.apps.mytracks.util.StringUtils;
import com.google.android.apps.mytracks.util.UnitConversions; import com.google.android.apps.mytracks.util.UnitConversions;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
import com.google.common.annotations.VisibleForTesting;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -999,4 +1000,14 @@ public class ChartView extends View {
return false; return false;
} }
} }
/**
* Returns the status of metricUnits.
*
* @return the status of metricUnits
*/
@VisibleForTesting
public boolean isMetricUnits() {
return metricUnits;
}
} }
@@ -37,6 +37,7 @@ import java.io.File;
public class IntentUtils { public class IntentUtils {
public static final String TEXT_PLAIN_TYPE = "text/plain"; public static final String TEXT_PLAIN_TYPE = "text/plain";
private static final String BLUETOOTH_PACKAGE_NAME = "com.android.bluetooth";
private static final String TWITTER_PACKAGE_NAME = "com.twitter.android"; private static final String TWITTER_PACKAGE_NAME = "com.twitter.android";
private IntentUtils() {} private IntentUtils() {}
@@ -67,11 +68,13 @@ public class IntentUtils {
Track track = MyTracksProviderUtils.Factory.get(context).getTrack(trackId); Track track = MyTracksProviderUtils.Factory.get(context).getTrack(trackId);
String trackDescription = track == null ? "" String trackDescription = track == null ? ""
: new DescriptionGeneratorImpl(context).generateTrackDescription(track, null, null, false); : new DescriptionGeneratorImpl(context).generateTrackDescription(track, null, null, false);
boolean urlOnly = TWITTER_PACKAGE_NAME.equals(packageName)
|| BLUETOOTH_PACKAGE_NAME.equals(packageName);
return new Intent(Intent.ACTION_SEND) return new Intent(Intent.ACTION_SEND)
.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP) .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP)
.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.share_track_subject)) .putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.share_track_subject))
.putExtra(Intent.EXTRA_TEXT, TWITTER_PACKAGE_NAME.equals(packageName) .putExtra(Intent.EXTRA_TEXT, urlOnly
? trackUrl ? trackUrl
: context.getString(R.string.share_track_share_url_body, trackUrl, trackDescription)) : context.getString(R.string.share_track_share_url_body, trackUrl, trackDescription))
.setComponent(new ComponentName(packageName, className)) .setComponent(new ComponentName(packageName, className))
@@ -210,8 +210,14 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2<Tra
public void testTrackStartTime() { public void testTrackStartTime() {
// Delete all track first. // Delete all track first.
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_delete_all), true); EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_delete_all), true);
EndToEndTestUtils.SOLO.clickOnButton(activityMyTracks.getString(R.string.generic_ok));
// Reset all settings.
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true);
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_reset));
EndToEndTestUtils.SOLO.clickOnButton(activityMyTracks.getString(R.string.generic_ok)); EndToEndTestUtils.SOLO.clickOnButton(activityMyTracks.getString(R.string.generic_ok));
instrumentation.waitForIdleSync(); instrumentation.waitForIdleSync();
EndToEndTestUtils.SOLO.goBack();
// Test should not show relative time. // Test should not show relative time.
EndToEndTestUtils.startRecording(); EndToEndTestUtils.startRecording();
instrumentation.waitForIdleSync(); instrumentation.waitForIdleSync();
@@ -15,6 +15,7 @@
*/ */
package com.google.android.apps.mytracks.endtoendtest; package com.google.android.apps.mytracks.endtoendtest;
import com.google.android.apps.mytracks.ChartView;
import com.google.android.apps.mytracks.TrackListActivity; import com.google.android.apps.mytracks.TrackListActivity;
import com.google.android.apps.mytracks.util.FileUtils; import com.google.android.apps.mytracks.util.FileUtils;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
@@ -503,4 +504,37 @@ public class EndToEndTestUtils {
} }
return null; return null;
} }
/**
* Finds a text view with specified test in a view.
*
* @param findText text to find
* @param parent which text view in in
* @return the text view, null means can not find it
*/
static TextView findTextView(String findText, View parent) {
ArrayList<TextView> textViews = EndToEndTestUtils.SOLO.getCurrentTextViews(parent);
for (TextView textView : textViews) {
String text = (String) textView.getText();
if (textView.isShown() && text.endsWith(findText)) {
return textView;
}
}
return null;
}
/**
* Gets the ChartView.
*
* @return the ChartView or null if not find
*/
static ChartView getChartView() {
ArrayList<View> views = EndToEndTestUtils.SOLO.getViews();
for (View view : views) {
if (view instanceof ChartView) {
return (ChartView) view;
}
}
return null;
}
} }
@@ -15,6 +15,7 @@
*/ */
package com.google.android.apps.mytracks.endtoendtest; package com.google.android.apps.mytracks.endtoendtest;
import com.google.android.apps.mytracks.ChartView;
import com.google.android.apps.mytracks.TrackListActivity; import com.google.android.apps.mytracks.TrackListActivity;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
@@ -57,7 +58,7 @@ public class SettingTest extends ActivityInstrumentationTestCase2<TrackListActiv
* <li>Changes the setting of Sharing.</li> * <li>Changes the setting of Sharing.</li>
* </ul> * </ul>
*/ */
public void testSetting() { public void testChangeAndReset() {
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true); EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true);
instrumentation.waitForIdleSync(); instrumentation.waitForIdleSync();
// Rotate on the settings page. // Rotate on the settings page.
@@ -110,6 +111,95 @@ public class SettingTest extends ActivityInstrumentationTestCase2<TrackListActiv
assertEquals(newMapsPublic, sharingCheckBoxs.get(0).isChecked()); assertEquals(newMapsPublic, sharingCheckBoxs.get(0).isChecked());
} }
/**
* Tests the change of preferred units.
*/
public void testChangePreferredUnits() {
EndToEndTestUtils.createTrackIfEmpty(5, false);
// Change it and verify it.
ChangePreferredUnits();
// Change it back and verify it.
ChangePreferredUnits();
}
/**
* Tests the change of stats settings during recording on chart view.
*/
public void testChangeStatsSettings_underRecording_chart() {
EndToEndTestUtils.startRecording();
// Test just change preferred units when display CHART tab.
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_chart_tab));
EndToEndTestUtils.sendGps(3);
ChangeStatsSettings(true, false);
EndToEndTestUtils.sendGps(3);
EndToEndTestUtils.stopRecording(true);
}
/**
* Tests the change of stats settings during recording on stats view.
*/
public void testChangeStatsSettings_underRecording_stats() {
EndToEndTestUtils.startRecording();
// Test change preferred units and preferred rate when display STATS tab.
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab));
EndToEndTestUtils.sendGps(3);
ChangeStatsSettings(true, true);
EndToEndTestUtils.sendGps(3);
EndToEndTestUtils.stopRecording(true);
}
/**
* Changes settings of preferred units and preferred rate.
*
* @param changeUnits is change the preferred unit
* @param changeRate is change the preferred rate
*/
private void ChangeStatsSettings(boolean changeUnits, boolean changeRate) {
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true);
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab));
assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks
.getString(R.string.settings_stats_units_title)));
// Change preferred units.
if (changeUnits) {
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks
.getString(R.string.settings_stats_units_title));
}
if (changeRate) {
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks
.getString(R.string.settings_stats_rate_title));
}
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.SOLO.goBack();
}
/**
* Changes PreferredUnits and verifies the change.
*/
private void ChangePreferredUnits() {
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true);
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab));
assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks
.getString(R.string.settings_stats_units_title)));
boolean isImperial = EndToEndTestUtils.findTextView(activityMyTracks
.getString(R.string.settings_stats_units_imperial), EndToEndTestUtils.SOLO
.getCurrentListViews().get(0)) != null;
// Change preferred units.
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks
.getString(R.string.settings_stats_units_title));
isImperial = !isImperial;
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_chart_tab));
instrumentation.waitForIdleSync();
ChartView chartView = EndToEndTestUtils.getChartView();
assertEquals(!isImperial, chartView.isMetricUnits());
}
/** /**
* Tests the backup. * Tests the backup.
*/ */