Add support for singular/plural.

This commit is contained in:
Jimmy Shih
2011-11-17 14:31:37 -08:00
parent 0ea4f6f13a
commit f6983bba4b
15 changed files with 329 additions and 268 deletions
+1 -12
View File
@@ -197,20 +197,9 @@ limitations under the License.
<string name="track_record_error">No es pot iniciar l\'enregistrament. Proveu de nou.</string>
<string name="track_record_notification">S\'està enregistrant la ruta...</string>
<string name="track_record_success">Ara s\'està enregistrant una ruta nova.</string>
<string name="voice_hour">hora</string>
<string name="voice_hours">hores</string>
<string name="voice_kilometer_per_hour">kilòmetres per hora</string>
<string name="voice_kilometers">kilòmetres</string>
<string name="voice_mile_per_hour">milles per hora</string>
<string name="voice_miles">milles</string>
<string name="voice_minute">minut</string>
<string name="voice_minutes">minuts</string>
<string name="voice_no_distance">Sense distància My Tracks</string>
<string name="voice_total_distance_zero">Sense distància My Tracks</string>
<string name="voice_per_kilometer">per kilòmetre</string>
<string name="voice_per_mile">per milla</string>
<string name="voice_second">segon</string>
<string name="voice_seconds">segons</string>
<string name="voice_template">My Tracks %1$.2f %2$s en %3$s at %4$s %5$s</string>
<string name="welcome_about">Quant a My Tracks</string>
<string name="welcome_title">Benvingut</string>
</resources>
+1 -12
View File
@@ -208,20 +208,9 @@ limitations under the License.
<string name="unit_feet">Fuß</string>
<string name="unit_hour">Std</string>
<string name="unit_minute">Min</string>
<string name="voice_hour">Stunde</string>
<string name="voice_hours">Stunden</string>
<string name="voice_kilometer_per_hour">Kilometer pro Stunde</string>
<string name="voice_kilometers">Kilometer</string>
<string name="voice_mile_per_hour">Meilen pro Stunde</string>
<string name="voice_miles">Meilen</string>
<string name="voice_minute">Minute</string>
<string name="voice_minutes">Minuten</string>
<string name="voice_no_distance">My Tracks keine Entfernung</string>
<string name="voice_total_distance_zero">My Tracks keine Entfernung</string>
<string name="voice_per_kilometer">pro Kilometer</string>
<string name="voice_per_mile">pro Meile</string>
<string name="voice_second">Sekunde</string>
<string name="voice_seconds">Sekunden</string>
<string name="voice_template">My Tracks %1$.2f %2$s in %3$s mit %4$s %5$s</string>
<string name="welcome_about">Über My Tracks</string>
<string name="welcome_title">Willkommen</string>
</resources>
+1 -13
View File
@@ -41,7 +41,6 @@ limitations under the License.
<string name="gps_wait_for_fix">Esperando una ubicación mas exacta del GPS. Asegúrese que el cielo sea visible.</string>
<string name="import_error">Error importando el archivo %s</string>
<string name="import_no_file">No se encontraron archivos GPX en %s. Es posible que la tarjeta SD no sea accesible o que el directorio no contenga archivos GPX.</string>
<string name="import_success">Importados %1$d de %2$d archivos GPX de %3$s</string>
<string name="marker_detail_marker_description">Descripción de señal</string>
<string name="marker_detail_marker_name">Nombre de señal</string>
<string name="marker_detail_marker_type">Tipo de señal (por ejemplo, edificio, bache, atracción...)</string>
@@ -250,20 +249,9 @@ limitations under the License.
<string name="track_record_notification">Grabando su recorrido...</string>
<string name="track_record_success">Grabando un nuevo recorrido.</string>
<string name="unit_feet">pies</string>
<string name="voice_hour">hora</string>
<string name="voice_hours">horas</string>
<string name="voice_kilometer_per_hour">kilómetros por hora</string>
<string name="voice_kilometers">kilómetros</string>
<string name="voice_mile_per_hour">millas por hora</string>
<string name="voice_miles">millas</string>
<string name="voice_minute">minuto</string>
<string name="voice_minutes">minutos</string>
<string name="voice_no_distance">My Tracks sin distancia</string>
<string name="voice_total_distance_zero">My Tracks sin distancia</string>
<string name="voice_per_kilometer">por kilómetro</string>
<string name="voice_per_mile">por milla</string>
<string name="voice_second">segundo</string>
<string name="voice_seconds">segundos</string>
<string name="voice_template">My Tracks %1$.2f %2$s en %3$s a %4$s %5$s</string>
<string name="welcome_about">Sobre My Tracks</string>
<string name="welcome_title">Bienvenido</string>
</resources>
+1 -13
View File
@@ -44,7 +44,6 @@ limitations under the License.
<string name="gps_wait_for_fix">Odotetaan parempaa GPS-yhteyttä. Varmista että taivas on näkyvissä.</string>
<string name="import_error">Virhe tuotaessa tiedostoa %s</string>
<string name="import_no_file">Lähteestä %s ei löytynyt GPX-tiedostoja. SD-kortti saattaa olla lukukelvoton tai hakemistossa ei ole GPX-tiedostoja.</string>
<string name="import_success">Tuotu %1$d GPX-tiedostoa %2$d:sta lähteestä %3$s</string>
<string name="marker_detail_marker_description">Merkinnän kuvaus</string>
<string name="marker_detail_marker_name">Merkinnän nimi</string>
<string name="marker_detail_marker_type">Merkinnän tyyppi (esim. rakennus, kuoppa, nähtävyys...)</string>
@@ -250,20 +249,9 @@ limitations under the License.
<string name="unit_minute_per_mile">min/mi</string>
<string name="unit_revolution_per_minute">rpm</string>
<string name="unit_watt">W</string>
<string name="voice_hour">tunti</string>
<string name="voice_hours">tuntia</string>
<string name="voice_kilometer_per_hour">kilometriä tunnissa</string>
<string name="voice_kilometers">kilometriä</string>
<string name="voice_mile_per_hour">mailia tunnissa</string>
<string name="voice_miles">mailia</string>
<string name="voice_minute">minuutti</string>
<string name="voice_minutes">minuuttia</string>
<string name="voice_no_distance">My Tracks ei etäisyyttä</string>
<string name="voice_total_distance_zero">My Tracks ei etäisyyttä</string>
<string name="voice_per_kilometer">per kilometri</string>
<string name="voice_per_mile">per maili</string>
<string name="voice_second">sekunti</string>
<string name="voice_seconds">sekuntia</string>
<string name="voice_template">My Tracks %1$.2f %2$s ajassa %3$s nopeudella %4$s %5$s</string>
<string name="welcome_about">Tietoa My Tracksista</string>
<string name="welcome_title">Tervetuloa</string>
</resources>
+1 -10
View File
@@ -198,18 +198,9 @@ limitations under the License.
<string name="unit_feet">pied</string>
<string name="unit_kilometer_per_hour">km/h</string>
<string name="unit_mile_per_hour">mi/h</string>
<string name="voice_hour">heure</string>
<string name="voice_hours">heures</string>
<string name="voice_kilometer_per_hour">kilomètres/heure</string>
<string name="voice_kilometers">kilomètres</string>
<string name="voice_mile_per_hour">miles/heure</string>
<string name="voice_miles">milles</string>
<string name="voice_no_distance">My Tracks pas de distance disponible</string>
<string name="voice_total_distance_zero">My Tracks pas de distance disponible</string>
<string name="voice_per_kilometer">par kilomètre</string>
<string name="voice_per_mile">per mile</string>
<string name="voice_second">seconde</string>
<string name="voice_seconds">secondes</string>
<string name="voice_template">My Tracks %1$.2f %2$s en %3$s at %4$s %5$s</string>
<string name="welcome_about">À propos de My Tracks</string>
<string name="welcome_title">Bienvenue</string>
</resources>
+1 -12
View File
@@ -170,20 +170,9 @@ limitations under the License.
<string name="unit_minute">min</string>
<string name="unit_minute_per_kilometer">min/km</string>
<string name="unit_minute_per_mile">min/mi</string>
<string name="voice_hour">ora</string>
<string name="voice_hours">ore</string>
<string name="voice_kilometer_per_hour">chilometri orari</string>
<string name="voice_kilometers">chilometri</string>
<string name="voice_mile_per_hour">miglia orarie</string>
<string name="voice_miles">miglia</string>
<string name="voice_minute">minuto</string>
<string name="voice_minutes">minuti</string>
<string name="voice_no_distance">Mai Tracks Distanza non disponibile</string>
<string name="voice_total_distance_zero">Mai Tracks Distanza non disponibile</string>
<string name="voice_per_kilometer">per chilometro</string>
<string name="voice_per_mile">per miglio</string>
<string name="voice_second">secondo</string>
<string name="voice_seconds">secondi</string>
<string name="voice_template">Mai Tracks %1$.2f %2$s in %3$s a %4$s %5$s</string>
<string name="welcome_about">Informazioni su My Tracks</string>
<string name="welcome_title">Benvenuto</string>
</resources>
+1 -13
View File
@@ -42,7 +42,6 @@ limitations under the License.
<string name="gps_wait_for_fix">GPS位置精度がよくなるまで待機しています.空が見えるところにいて下さい.</string>
<string name="import_error">ファイル %s のインポートエラー</string>
<string name="import_no_file">%s ではGPXファイルがありません.SDカードを読み込めないかディレクトリにGPXファイルが無いかも知れません.</string>
<string name="import_success">%3$s からGPXファイル %2$d件のうち %1$d件をインポートしました</string>
<string name="marker_detail_marker_description">マーカー説明</string>
<string name="marker_detail_marker_name">マーカー名</string>
<string name="marker_detail_marker_type">マーカータイプ(建物、洞穴、名所...)</string>
@@ -226,20 +225,9 @@ limitations under the License.
<string name="track_record_success">新しいトラックを記録中です.</string>
<string name="unit_hour">時</string>
<string name="unit_minute">分</string>
<string name="voice_hour">時</string>
<string name="voice_hours">時</string>
<string name="voice_kilometer_per_hour">キロメータ毎時</string>
<string name="voice_kilometers">キロメータ</string>
<string name="voice_mile_per_hour">マイル毎時</string>
<string name="voice_miles">マイル</string>
<string name="voice_minute">分</string>
<string name="voice_minutes">分</string>
<string name="voice_no_distance">My Tracks 移動していません</string>
<string name="voice_total_distance_zero">My Tracks 移動していません</string>
<string name="voice_per_kilometer">毎キロメータ</string>
<string name="voice_per_mile">毎マイル</string>
<string name="voice_second">秒</string>
<string name="voice_seconds">秒</string>
<string name="voice_template">My Tracks %1$.2f %2$s 時間 %3$s 速度/ペース %4$s %5$s</string>
<string name="welcome_about">My Tracksについて</string>
<string name="welcome_title">ようこそ</string>
</resources>
+1 -12
View File
@@ -199,20 +199,9 @@ limitations under the License.
<string name="unit_minute">min</string>
<string name="unit_minute_per_kilometer">min/km</string>
<string name="unit_minute_per_mile">min/mi</string>
<string name="voice_hour">godzina</string>
<string name="voice_hours">godziny</string>
<string name="voice_kilometer_per_hour">kilometry na godzinę</string>
<string name="voice_kilometers">kilometerów</string>
<string name="voice_mile_per_hour">mile na godzinę</string>
<string name="voice_miles">mil</string>
<string name="voice_minute">minuta</string>
<string name="voice_minutes">minuty</string>
<string name="voice_no_distance">My Tracks brak odległości</string>
<string name="voice_total_distance_zero">My Tracks brak odległości</string>
<string name="voice_per_kilometer">na kilometr</string>
<string name="voice_per_mile">na milę</string>
<string name="voice_second">sekunda</string>
<string name="voice_seconds">sekundy</string>
<string name="voice_template">My Tracks %1$.2f %2$s w %3$s w tempie %4$s %5$s</string>
<string name="welcome_about">O My Tracks</string>
<string name="welcome_title">Witamy</string>
</resources>
+1 -12
View File
@@ -159,20 +159,9 @@ limitations under the License.
<string name="track_record_success">Gravando um novo caminho.</string>
<string name="unit_feet">pés</string>
<string name="unit_hour">h</string>
<string name="voice_hour">hora</string>
<string name="voice_hours">horas</string>
<string name="voice_kilometer_per_hour">kilômetros por hora</string>
<string name="voice_kilometers">kilômetros</string>
<string name="voice_mile_per_hour">milhas por hora</string>
<string name="voice_miles">milhas</string>
<string name="voice_minute">minuto</string>
<string name="voice_minutes">minutos</string>
<string name="voice_no_distance">My Tracks sem distância</string>
<string name="voice_total_distance_zero">My Tracks sem distância</string>
<string name="voice_per_kilometer">por kilômetro</string>
<string name="voice_per_mile">por milha</string>
<string name="voice_second">segundo</string>
<string name="voice_seconds">segundos</string>
<string name="voice_template">My Tracks %1$.2f %2$s em %3$s a %4$s %5$s</string>
<string name="welcome_about">Sobre My Tracks</string>
<string name="welcome_title">Bem-vindo</string>
</resources>
+1 -13
View File
@@ -43,7 +43,6 @@ limitations under the License.
<string name="gps_wait_for_fix">Ожидание сигнала GPS. Убедитесь в том, что вы находитесь под открытым небом.</string>
<string name="import_error">Ошибка импорта файла %s</string>
<string name="import_no_file">GPX файлы не найденны в %s. Возможно не читается SD-карта или каталог не содержит GPX файлы.</string>
<string name="import_success">Импортировано %1$d из %2$d GPX файлов с %3$s</string>
<string name="marker_detail_marker_description">Описание маркера</string>
<string name="marker_detail_marker_name">Имя маркера</string>
<string name="marker_detail_marker_type">Тип маркера (например: здание, выбоина, достопримечательность...)</string>
@@ -246,20 +245,9 @@ limitations under the License.
<string name="unit_minute_per_mile">мин/миля</string>
<string name="unit_revolution_per_minute">об/мин</string>
<string name="unit_watt">Вт</string>
<string name="voice_hour">час</string>
<string name="voice_hours">часов</string>
<string name="voice_kilometer_per_hour">километров в час</string>
<string name="voice_kilometers">километров</string>
<string name="voice_mile_per_hour">миль в час</string>
<string name="voice_miles">мили</string>
<string name="voice_minute">минута</string>
<string name="voice_minutes">минут</string>
<string name="voice_no_distance">My Tracks нет расстояния</string>
<string name="voice_total_distance_zero">My Tracks нет расстояния</string>
<string name="voice_per_kilometer">за километр</string>
<string name="voice_per_mile">за милю</string>
<string name="voice_second">секунда</string>
<string name="voice_seconds">секунд</string>
<string name="voice_template">Мои треки %1$.2f %2$s в %3$s на %4$s %5$s</string>
<string name="welcome_about">О My Tracks</string>
<string name="welcome_title">Добро пожаловать</string>
</resources>
+1 -12
View File
@@ -169,20 +169,9 @@ limitations under the License.
<string name="unit_minute">min</string>
<string name="unit_minute_per_kilometer">min/km</string>
<string name="unit_minute_per_mile">min/mi</string>
<string name="voice_hour">timme</string>
<string name="voice_hours">timmar</string>
<string name="voice_kilometer_per_hour">kilometer i timmen</string>
<string name="voice_kilometers">kilometer</string>
<string name="voice_mile_per_hour">miles i timmen</string>
<string name="voice_miles">miles</string>
<string name="voice_minute">minut</string>
<string name="voice_minutes">minuter</string>
<string name="voice_no_distance">My Tracks ingen distans</string>
<string name="voice_total_distance_zero">My Tracks ingen distans</string>
<string name="voice_per_kilometer">per kilometer</string>
<string name="voice_per_mile">per mile</string>
<string name="voice_second">sekund</string>
<string name="voice_seconds">sekunder</string>
<string name="voice_template">My Tracks %1$.2f %2$s på %3$s i %4$s %5$s</string>
<string name="welcome_about">Om My Tracks</string>
<string name="welcome_title">Välkommen</string>
</resources>
+1 -13
View File
@@ -44,7 +44,6 @@ limitations under the License.
<string name="gps_wait_for_fix">等待更准确的 GPS 定位. 请确定可以看见天空.</string>
<string name="import_error">导入文件 %s 出错.</string>
<string name="import_no_file">在 %s 中未找到 GPX 文件. SD 存储卡不可用或者目录中没有 GPX 文件.</string>
<string name="import_success">已从 %3$s 导入 %1$d 个 GPX 文件, 共 %2$d 个.</string>
<string name="marker_detail_marker_description">标记描述</string>
<string name="marker_detail_marker_name">标记名称</string>
<string name="marker_detail_marker_type">标记类型 (例如: 建筑, 陷坑, 景点...)</string>
@@ -227,20 +226,9 @@ limitations under the License.
<string name="track_record_success">现在开始记录新的轨迹.</string>
<string name="unit_hour">时</string>
<string name="unit_minute">分</string>
<string name="voice_hour">小时</string>
<string name="voice_hours">小时</string>
<string name="voice_kilometer_per_hour">千米每小时</string>
<string name="voice_kilometers">千米</string>
<string name="voice_mile_per_hour">英里每小时</string>
<string name="voice_miles">英里</string>
<string name="voice_minute">分钟</string>
<string name="voice_minutes">分钟</string>
<string name="voice_no_distance">My Tracks 无距离</string>
<string name="voice_total_distance_zero">My Tracks 无距离</string>
<string name="voice_per_kilometer">每千米</string>
<string name="voice_per_mile">每英里</string>
<string name="voice_second">秒</string>
<string name="voice_seconds">秒</string>
<string name="voice_template">My Tracks %1$.2f %2$s 用时 %3$s 速度 %4$s %5$s</string>
<string name="welcome_about">关于 My Tracks</string>
<string name="welcome_title">欢迎</string>
</resources>
+253 -57
View File
@@ -348,14 +348,14 @@ limitations under the License.
My Tracks is run by volunteers and Googlers in their 20% time. If you would like to contribute,
please visit:\n
\n
http://mytracks.googlecode.com\n
http://mytracks.googlecode.com\n
</string>
<string name="android_market_promo_text"
translation_description="For the Android Market (not used in the app), the promotion text. 80
characters limit.">
My Tracks allows you to record and share your GPS tracks, including statistics.
</string>
<!-- Chart Settings -->
<string name="chart_settings_by_distance"
translation_description="In the Chart Settings, under the 'X axis' section, the radio option
@@ -603,14 +603,44 @@ limitations under the License.
translation_description="When importing all the tracks, a toast message indicating import error
for one of the tracks.
%1$s: the track's file path. E.g., '/mnt/sdcard/MyTacks/gpx/1.gpx'.">
%1$s: the track's file path on the SD card. E.g., '/mnt/sdcard/MyTacks/gpx/1.gpx'.">
Import error for file %1$s.
</string>
<string name="import_gpx_files_few"
translation_description="When importing all the tracks, phrase for 'few' GPX files.
%1$d an integer number. The number is a small number.">
%1$d GPX files
</string>
<string name="import_gpx_files_many"
translation_description="When importing all the tracks, phrase for 'many' GPX files.
%1$d an integer number. The number is a large number.">
%1$d GPX files
</string>
<string name="import_gpx_files_one"
translation_description="When importing all the tracks, phrase for 1 GPX file.">
1 GPX file
</string>
<string name="import_gpx_files_other"
translation_description="When importing all the tracks, phrase for 'other' GPX files.
%1$d an integer number. The number doesn't require special treatment.">
%1$d GPX files
</string>
<string name="import_gpx_files_two"
translation_description="When importing all the tracks, phrase for 2 GPX files.">
2 GPX files
</string>
<string name="import_gpx_files_zero"
translation_description="When importing all the tracks, phrase for 0 GPX files.">
0 GPX files
</string>
<string name="import_no_file"
translation_description="After importing all the tracks from the SD card, the alert message
indicating that no track is imported.
%1$s: the directory path. E.g., '/mnt/sdcard/MyTracks/gpx/'.">
%1$s: the SD card directory path. E.g., '/mnt/sdcard/MyTracks/gpx/'.">
No GPX file found in %1$s. The SD card may be unreadable or the directory may not contain any
GPX file.
</string>
@@ -618,10 +648,10 @@ limitations under the License.
translation_description="After importing all the tracks from the SD card, the alert message
indicating success.
%1$d the number of successfully imported tracks. E.g., '5'.
%2$d the number of total tracks to be imported. E.g., '6'.
%3$s the directory path. E.g., '/mnt/sdcard/MyTracks/gpx/'.">
Imported to My Tracks %1$d of %2$d GPX files from %3$s.
%1$d the number of successfully imported tracks. E.g., '1'.
%2$s the number of GPX files in the SD card. E.g., '1 GPX file' or '2 GPX files'.
%3$s the SD card directory path. E.g., '/mnt/sdcard/MyTracks/gpx/'.">
My Tracks: Imported %1$d of %2$s from %3$s.
</string>
<!-- Marker -->
@@ -1995,73 +2025,239 @@ limitations under the License.
</string>
<!-- Voice -->
<string name="voice_hour"
translation_description="For voice announcement, to say hour like 'one hour'.">
hour
<string name="voice_hours_few"
translation_description="For voice announcement, to say 'few' hours.
%1$d an integer number. The number is a small number.">
%1$d hours
</string>
<string name="voice_hours"
translation_description="For voice announcement, to say hours like 'two hours'.">
hours
<string name="voice_hours_many"
translation_description="For voice announcement, to say 'many' hours.
%1$d an integer number. The number is a large number.">
%1$d hours
</string>
<string name="voice_kilometer_per_hour"
translation_description="For voice announcement, to say 'kilometers per hour' for speed like
'two kilometers per hour'.">
kilometers per hour
<string name="voice_hours_one"
translation_description="For voice announcement, to say 1 hour.">
1 hour
</string>
<string name="voice_kilometers"
translation_description="For voice announcement, to say kilometers like 'two kilometers'.">
kilometers
<string name="voice_hours_other"
translation_description="For voice announcement, to say 'other' hours.
%1$d an integer number. The number doesn't require special treatment.">
%1$d hours
</string>
<string name="voice_mile_per_hour"
translation_description="For voice announcement, to say 'miles per hour' for speed like 'two
miles per hour'.">
miles per hour
<string name="voice_hours_two"
translation_description="For voice announcement, to say 2 hours.">
2 hours
</string>
<string name="voice_miles"
translation_description="For voice announcement, to say miles like 'two miles'.">
miles
<string name="voice_hours_zero"
translation_description="For voice announcement, to say 0 hours.">
0 hours
</string>
<string name="voice_minute"
translation_description="For voice announcement, to say minute like 'one minute'.">
minute
<string name="voice_minutes_few"
translation_description="For voice announcement, to say 'few' minutes.
%1$d an integer number. The number is a small number.">
%1$d minutes
</string>
<string name="voice_minutes"
translation_description="For voice announcement, to say minutes like 'two minutes'.">
minutes
<string name="voice_minutes_many"
translation_description="For voice announcement, to say 'many' minutes.
%1$d an integer number. The number is a large number.">
%1$d minutes
</string>
<string name="voice_no_distance"
translation_description="For the voice announcement, the announcement when the current track's
total distance is zero.">
My Tracks no distance.
<string name="voice_minutes_one"
translation_description="For voice announcement, to say 1 minute.">
1 minute
</string>
<string name="voice_minutes_other"
translation_description="For voice announcement, to say 'other' minutes.
%1$d an integer number. The number doesn't require special treatment.">
%1$d minutes
</string>
<string name="voice_minutes_two"
translation_description="For voice announcement, to say 2 minutes.">
2 minutes
</string>
<string name="voice_minutes_zero"
translation_description="For voice announcement, to say 0 minutes.">
0 minutes
</string>
<string name="voice_per_kilometer"
translation_description="For voice announcement, to say 'per kilometer' for pace like 'two
minutes per kilometer'.">
hours 2 minutes per kilometer'.">
per kilometer
</string>
<string name="voice_per_mile"
translation_description="For voice announcement, to say 'per mile' for pace like 'two minutes
per mile'.">
translation_description="For voice announcement, to say 'per mile' for pace like 'two hours 2
minutes per mile'.">
per mile
</string>
<string name="voice_second"
translation_description="For voice announcement, to say second like 'one second'.">
second
<string name="voice_seconds_few"
translation_description="For voice announcement, to say 'few' seconds.
%1$d an integer number. The number is a small number.">
%1$d seconds
</string>
<string name="voice_seconds"
translation_description="For voice announcement, to say seconds like 'two seconds'.">
seconds
<string name="voice_seconds_many"
translation_description="For voice announcement, to say 'many' seconds.
%1$d an integer number. The number is a large number.">
%1$d seconds
</string>
<string name="voice_seconds_one"
translation_description="For voice announcement, to say 1 second.">
1 second
</string>
<string name="voice_seconds_other"
translation_description="For voice announcement, to say 'other' seconds.
%1$d an integer number. The number doesn't require special treatment.">
%1$d seconds
</string>
<string name="voice_seconds_two"
translation_description="For voice announcement, to say 2 seconds.">
2 seconds
</string>
<string name="voice_seconds_zero"
translation_description="For voice announcement, to say 0 seconds.">
0 seconds
</string>
<string name="voice_speed_kilometers_per_hour_few"
translation_description="For voice announcement, to say 'few' kilometers per hour.
%1$.1f a float number. The number is a small number.">
%1$.1f kilometers per hour
</string>
<string name="voice_speed_kilometers_per_hour_many"
translation_description="For voice announcement, to say 'many' kilometers per hour.
%1$.1f a float number. The number is a large number.">
%1$.1f kilometers per hour
</string>
<string name="voice_speed_kilometers_per_hour_one"
translation_description="For voice announcement, to say 1 kilometer per hour.">
1 kilometer per hour
</string>
<string name="voice_speed_kilometers_per_hour_other"
translation_description="For voice announcement, to say 'other' kilometers per hour.
%1$.1f a float number. The number doesn't require special treatment.">
%1$.1f kilometers per hour
</string>
<string name="voice_speed_kilometers_per_hour_two"
translation_description="For voice announcement, to say 2 kilometers per hour.">
2 kilometers per hour
</string>
<string name="voice_speed_kilometers_per_hour_zero"
translation_description="For voice announcement, to say 0 kilometers per hour.">
0 kilometers per hour
</string>
<string name="voice_speed_miles_per_hour_few"
translation_description="For voice announcement, to say 'few' miles per hour.
%1$.1f a float number. The number is a small number.">
%1$.1f miles per hour
</string>
<string name="voice_speed_miles_per_hour_many"
translation_description="For voice announcement, to say 'many' miles per hour.
%1$.1f a float number. The number is a large number.">
%1$.1f miles per hour
</string>
<string name="voice_speed_miles_per_hour_one"
translation_description="For voice announcement, to say 1 mile per hour.">
1 mile per hour
</string>
<string name="voice_speed_miles_per_hour_other"
translation_description="For voice announcement, to say 'other' miles per hour.
%1$.1f a float number. The number doesn't require special treatment.">
%1$.1f miles per hour
</string>
<string name="voice_speed_miles_per_hour_two"
translation_description="For voice announcement, to say 2 miles per hour.">
2 miles per hour
</string>
<string name="voice_speed_miles_per_hour_zero"
translation_description="For voice announcement, to say 0 miles per hour.">
0 miles per hour
</string>
<string name="voice_template"
translation_description="For the voice announcement, the template to make an announcement.
%1$.2f: distance value. E.g., '5.2'.
%2$s: distance unit. 'miles' or 'kilometers'
%3$s: time value. E.g., '1 hour and 30 minutes' or '20 minutes and 1 second'
%4$s: speed/pace value. For speed, e.g., '2.2'. For pace, e.g., '2 hours and 1 minute'.
%5$s: speed/pace unit. For speed, 'miles per hour' or 'kilometers per hour'. For pace, 'per
mile' or 'per kilometer'.">
My Tracks total distance %1$.2f %2$s in %3$s at %4$s %5$s.
%1$s: distance string. E.g., '1 mile' or '1.2 miles', '1 kilometer', '2.2 kilometers'
%2$s: time string. E.g., '1 hour and 30 minutes' or '20 minutes 1 second'
%3$s: speed/pace string. For speed, e.g., '2.2 miles per hour', '1 kilometer per hour'. For
pace, e.g., '2 hours 1 minute per mile', '30 minutes 1 second per kilometer'.">
My Tracks total distance %1$s in %2$s at %3$s.
</string>
<string name="voice_total_distance_kilometers_few"
translation_description="For voice announcement, to say total distance 'few' kilometers.
%1$.2f a float number. The number is a small number.">
total distance %1$.2f kilometers
</string>
<string name="voice_total_distance_kilometers_many"
translation_description="For voice announcement, to say total distance 'many' kilometers.
%1$.2f a float number. The number is a large number.">
total distance %1$.2f kilometers
</string>
<string name="voice_total_distance_kilometers_one"
translation_description="For voice announcement, to say total distance 1 kilometer.">
total distance 1 kilometer
</string>
<string name="voice_total_distance_kilometers_other"
translation_description="For voice announcement, to say total distance 'other' kilometers.
%1$.2f a float number. The number doesn't require special treatment.">
total distance %1$.2f kilometers
</string>
<string name="voice_total_distance_kilometers_two"
translation_description="For voice announcement, to say total distance 2 kilometers.">
total distance 2 kilometers
</string>
<string name="voice_total_distance_kilometers_zero"
translation_description="For voice announcement, to say total distance 0 kilometers.">
total distance 0 kilometers
</string>
<string name="voice_total_distance_miles_few"
translation_description="For voice announcement, to say total distance 'few' miles.
%1$.2f a float number. The number is a small number.">
total distance %1$.2f miles
</string>
<string name="voice_total_distance_miles_many"
translation_description="For voice announcement, to say total distance 'many' miles.
%1$.2f a float number. The number is a large number.">
total distance %1$.2f miles
</string>
<string name="voice_total_distance_miles_one"
translation_description="For voice announcement, to say total distance 1 mile.">
total distance 1 mile
</string>
<string name="voice_total_distance_miles_other"
translation_description="For voice announcement, to say total distance 'other' miles.
%1$.2f a float number. The number doesn't require special treatment.">
total distance %1$.2f miles
</string>
<string name="voice_total_distance_miles_two"
translation_description="For voice announcement, to say total distance 2 miles.">
total distance 2 miles
</string>
<string name="voice_total_distance_miles_zero"
translation_description="For voice announcement, to say total distance 0 miles.">
total distance 0 miles
</string>
<string name="voice_total_distance_zero"
translation_description="For the voice announcement, the announcement when the current track's
total distance is zero.">
My Tracks total distance zero.
</string>
<!-- Waypoint Type -->
@@ -2292,7 +2488,7 @@ limitations under the License.
statistics, and graphs view.
</string>
<string name="welcome_app_navigation_question"
translation_description="In the 'Welcome' page, the help content question on app navigatation.">
translation_description="In the 'Welcome' page, the help content question on app navigation.">
How do I see the map, statistics, and graphs view?
</string>
<string name="welcome_battery_life_answer"
@@ -2372,7 +2568,7 @@ limitations under the License.
depends on the quality of the GPS signal. The blue circle around the orange location arrow
indicates estimated precision. (You may need to zoom in or out to see the circle.) You can
change the GPS precision at Settings -> Recording -> GPS accuracy. If the precision is too low,
at the top of the screen, you will see the message \"Waiting for a better GPS fix.\".
at the top of the screen, you will see the message \"Waiting for a better GPS fix.\".
</string>
<string name="welcome_location_precision_question"
translation_description="In the 'Welcome' page, the help content question on location
@@ -2435,7 +2631,7 @@ limitations under the License.
How do I share tracks with friends and the rest of the world?
</string>
<string name="welcome_split_track_answer"
translation_description="In the 'Welcome' page, the help content answer on splitted long
translation_description="In the 'Welcome' page, the help content answer on splitting long
tracks.">
Tracks on Google My Maps and Google Fusion Tables are limited to certain sizes.
</string>
@@ -128,8 +128,10 @@ public class ImportAllTracks {
if (gpxFileCount == 0) {
builder.setMessage(activity.getString(R.string.import_no_file, gpxPath));
} else {
String totalFiles = activity.getResources().getQuantityString(
R.plurals.importGpxFiles, gpxFileCount, gpxFileCount);
builder.setMessage(
activity.getString(R.string.import_success, importSuccessCount, gpxFileCount, gpxPath));
activity.getString(R.string.import_success, importSuccessCount, totalFiles, gpxPath));
}
builder.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
@Override
@@ -150,66 +150,72 @@ public class StatusAnnouncerTask implements PeriodicTask {
*/
// @VisibleForTesting
protected String getAnnouncement(TripStatistics stats) {
SharedPreferences preferences =
context.getSharedPreferences(Constants.SETTINGS_NAME, 0);
boolean metricUnits = true;
boolean reportSpeed = true;
SharedPreferences preferences = context.getSharedPreferences(Constants.SETTINGS_NAME, 0);
if (preferences != null) {
metricUnits =
preferences.getBoolean(context.getString(R.string.metric_units_key),
true);
reportSpeed =
preferences.getBoolean(context.getString(R.string.report_speed_key),
true);
metricUnits = preferences.getBoolean(context.getString(R.string.metric_units_key), true);
reportSpeed = preferences.getBoolean(context.getString(R.string.report_speed_key), true);
}
double d = stats.getTotalDistance() / 1000;
double s = stats.getAverageMovingSpeed() * 3.6;
double d = stats.getTotalDistance() / 1000; // d is in kilometers
double s = stats.getAverageMovingSpeed() * 3.6; // s is in kilometers per hour
if (d == 0) {
return context.getString(R.string.voice_no_distance);
return context.getString(R.string.voice_total_distance_zero);
}
int speedLabel;
if (metricUnits) {
if (reportSpeed) {
speedLabel = R.string.voice_kilometer_per_hour;
} else {
speedLabel = R.string.voice_per_kilometer;
}
} else {
s *= UnitConversions.KMH_TO_MPH;
if (!metricUnits) {
d *= UnitConversions.KM_TO_MI;
if (reportSpeed) {
speedLabel = R.string.voice_mile_per_hour;
} else {
speedLabel = R.string.voice_per_mile;
}
s *= UnitConversions.KMH_TO_MPH;
}
String speed = null;
if ((s == 0) || Double.isNaN(s)) {
speed = context.getString(R.string.value_unknown);
if (!reportSpeed) {
s = 3600000.0 / s; // converts from speed to pace
}
// Makes sure s is not NaN.
if (Double.isNaN(s)) {
s = 0;
}
String speed;
if (reportSpeed) {
int speedId = metricUnits ? R.plurals.voiceSpeedKilometersPerHour
: R.plurals.voiceSpeedMilesPerHour;
speed = context.getResources().getQuantityString(speedId, getQuantityCount(s), s);
} else {
if (reportSpeed) {
speed = String.format("%.1f", s);
} else {
double pace = 3600000.0 / s;
Log.w(Constants.TAG,
"Converted speed: " + s + " to pace: " + pace);
speed = getAnnounceTime((long) pace);
}
int perDistancelId = metricUnits ? R.string.voice_per_kilometer : R.string.voice_per_mile;
speed = getAnnounceTime((long) s) + " " + context.getString(perDistancelId);
}
return context.getString(R.string.voice_template,
d,
context.getString(metricUnits
? R.string.voice_kilometers
: R.string.voice_miles),
getAnnounceTime(stats.getMovingTime()),
speed,
context.getString(speedLabel));
}
int totalDistanceId = metricUnits ? R.plurals.voiceTotalDistanceKilometers
: R.plurals.voiceTotalDistanceMiles;
String totalDistance = context.getResources().getQuantityString(
totalDistanceId, getQuantityCount(d), d);
return context.getString(
R.string.voice_template, totalDistance, getAnnounceTime(stats.getMovingTime()), speed);
}
/**
* Gets the plural count to be used by getQuantityString.
*
* @param d the double value
*/
private int getQuantityCount(double d) {
if (d == 0) {
return 0;
} else if (d == 1) {
return 1;
} else if (d == 2) {
return 2;
} else {
int count = (int) d;
return count < 3 ? 3 : count;
}
}
@Override
public void start() {
Log.i(Constants.TAG, "Starting TTS");
@@ -331,30 +337,22 @@ public class StatusAnnouncerTask implements PeriodicTask {
@VisibleForTesting
String getAnnounceTime(long time) {
int[] parts = StringUtils.getTimeParts(time);
String secLabel =
context.getString(parts[0] == 1 ? R.string.voice_second : R.string.voice_seconds);
String minLabel =
context.getString(parts[1] == 1 ? R.string.voice_minute : R.string.voice_minutes);
String hourLabel =
context.getString(parts[2] == 1 ? R.string.voice_hour : R.string.voice_hours);
String seconds = context.getResources().getQuantityString(
R.plurals.voiceSeconds, parts[0], parts[0]);
String minutes = context.getResources().getQuantityString(
R.plurals.voiceMinutes, parts[1], parts[1]);
String hours = context.getResources().getQuantityString(
R.plurals.voiceHours, parts[2], parts[2]);
StringBuilder sb = new StringBuilder();
if (parts[2] != 0) {
sb.append(parts[2]);
sb.append(hours);
sb.append(" ");
sb.append(hourLabel);
sb.append(" ");
sb.append(parts[1]);
sb.append(" ");
sb.append(minLabel);
sb.append(minutes);
} else {
sb.append(parts[1]);
sb.append(minutes);
sb.append(" ");
sb.append(minLabel);
sb.append(" ");
sb.append(parts[0]);
sb.append(" ");
sb.append(secLabel);
sb.append(seconds);
}
return sb.toString();
}