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_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_notification">S\'està enregistrant la ruta...</string>
<string name="track_record_success">Ara s\'està enregistrant una ruta nova.</string> <string name="track_record_success">Ara s\'està enregistrant una ruta nova.</string>
<string name="voice_hour">hora</string> <string name="voice_total_distance_zero">Sense distància My Tracks</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_per_kilometer">per kilòmetre</string> <string name="voice_per_kilometer">per kilòmetre</string>
<string name="voice_per_mile">per milla</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_about">Quant a My Tracks</string>
<string name="welcome_title">Benvingut</string> <string name="welcome_title">Benvingut</string>
</resources> </resources>
+1 -12
View File
@@ -208,20 +208,9 @@ limitations under the License.
<string name="unit_feet">Fuß</string> <string name="unit_feet">Fuß</string>
<string name="unit_hour">Std</string> <string name="unit_hour">Std</string>
<string name="unit_minute">Min</string> <string name="unit_minute">Min</string>
<string name="voice_hour">Stunde</string> <string name="voice_total_distance_zero">My Tracks keine Entfernung</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_per_kilometer">pro Kilometer</string> <string name="voice_per_kilometer">pro Kilometer</string>
<string name="voice_per_mile">pro Meile</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_about">Über My Tracks</string>
<string name="welcome_title">Willkommen</string> <string name="welcome_title">Willkommen</string>
</resources> </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="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_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_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_description">Descripción de señal</string>
<string name="marker_detail_marker_name">Nombre 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> <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_notification">Grabando su recorrido...</string>
<string name="track_record_success">Grabando un nuevo recorrido.</string> <string name="track_record_success">Grabando un nuevo recorrido.</string>
<string name="unit_feet">pies</string> <string name="unit_feet">pies</string>
<string name="voice_hour">hora</string> <string name="voice_total_distance_zero">My Tracks sin distancia</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_per_kilometer">por kilómetro</string> <string name="voice_per_kilometer">por kilómetro</string>
<string name="voice_per_mile">por milla</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_about">Sobre My Tracks</string>
<string name="welcome_title">Bienvenido</string> <string name="welcome_title">Bienvenido</string>
</resources> </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="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_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_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_description">Merkinnän kuvaus</string>
<string name="marker_detail_marker_name">Merkinnän nimi</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> <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_minute_per_mile">min/mi</string>
<string name="unit_revolution_per_minute">rpm</string> <string name="unit_revolution_per_minute">rpm</string>
<string name="unit_watt">W</string> <string name="unit_watt">W</string>
<string name="voice_hour">tunti</string> <string name="voice_total_distance_zero">My Tracks ei etäisyyttä</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_per_kilometer">per kilometri</string> <string name="voice_per_kilometer">per kilometri</string>
<string name="voice_per_mile">per maili</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_about">Tietoa My Tracksista</string>
<string name="welcome_title">Tervetuloa</string> <string name="welcome_title">Tervetuloa</string>
</resources> </resources>
+1 -10
View File
@@ -198,18 +198,9 @@ limitations under the License.
<string name="unit_feet">pied</string> <string name="unit_feet">pied</string>
<string name="unit_kilometer_per_hour">km/h</string> <string name="unit_kilometer_per_hour">km/h</string>
<string name="unit_mile_per_hour">mi/h</string> <string name="unit_mile_per_hour">mi/h</string>
<string name="voice_hour">heure</string> <string name="voice_total_distance_zero">My Tracks pas de distance disponible</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_per_kilometer">par kilomètre</string> <string name="voice_per_kilometer">par kilomètre</string>
<string name="voice_per_mile">per mile</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_about">À propos de My Tracks</string>
<string name="welcome_title">Bienvenue</string> <string name="welcome_title">Bienvenue</string>
</resources> </resources>
+1 -12
View File
@@ -170,20 +170,9 @@ limitations under the License.
<string name="unit_minute">min</string> <string name="unit_minute">min</string>
<string name="unit_minute_per_kilometer">min/km</string> <string name="unit_minute_per_kilometer">min/km</string>
<string name="unit_minute_per_mile">min/mi</string> <string name="unit_minute_per_mile">min/mi</string>
<string name="voice_hour">ora</string> <string name="voice_total_distance_zero">Mai Tracks Distanza non disponibile</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_per_kilometer">per chilometro</string> <string name="voice_per_kilometer">per chilometro</string>
<string name="voice_per_mile">per miglio</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_about">Informazioni su My Tracks</string>
<string name="welcome_title">Benvenuto</string> <string name="welcome_title">Benvenuto</string>
</resources> </resources>
+1 -13
View File
@@ -42,7 +42,6 @@ limitations under the License.
<string name="gps_wait_for_fix">GPS位置精度がよくなるまで待機しています.空が見えるところにいて下さい.</string> <string name="gps_wait_for_fix">GPS位置精度がよくなるまで待機しています.空が見えるところにいて下さい.</string>
<string name="import_error">ファイル %s のインポートエラー</string> <string name="import_error">ファイル %s のインポートエラー</string>
<string name="import_no_file">%s ではGPXファイルがありません.SDカードを読み込めないかディレクトリにGPXファイルが無いかも知れません.</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_description">マーカー説明</string>
<string name="marker_detail_marker_name">マーカー名</string> <string name="marker_detail_marker_name">マーカー名</string>
<string name="marker_detail_marker_type">マーカータイプ(建物、洞穴、名所...)</string> <string name="marker_detail_marker_type">マーカータイプ(建物、洞穴、名所...)</string>
@@ -226,20 +225,9 @@ limitations under the License.
<string name="track_record_success">新しいトラックを記録中です.</string> <string name="track_record_success">新しいトラックを記録中です.</string>
<string name="unit_hour">時</string> <string name="unit_hour">時</string>
<string name="unit_minute">分</string> <string name="unit_minute">分</string>
<string name="voice_hour">時</string> <string name="voice_total_distance_zero">My Tracks 移動していません</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_per_kilometer">毎キロメータ</string> <string name="voice_per_kilometer">毎キロメータ</string>
<string name="voice_per_mile">毎マイル</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_about">My Tracksについて</string>
<string name="welcome_title">ようこそ</string> <string name="welcome_title">ようこそ</string>
</resources> </resources>
+1 -12
View File
@@ -199,20 +199,9 @@ limitations under the License.
<string name="unit_minute">min</string> <string name="unit_minute">min</string>
<string name="unit_minute_per_kilometer">min/km</string> <string name="unit_minute_per_kilometer">min/km</string>
<string name="unit_minute_per_mile">min/mi</string> <string name="unit_minute_per_mile">min/mi</string>
<string name="voice_hour">godzina</string> <string name="voice_total_distance_zero">My Tracks brak odległości</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_per_kilometer">na kilometr</string> <string name="voice_per_kilometer">na kilometr</string>
<string name="voice_per_mile">na milę</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_about">O My Tracks</string>
<string name="welcome_title">Witamy</string> <string name="welcome_title">Witamy</string>
</resources> </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="track_record_success">Gravando um novo caminho.</string>
<string name="unit_feet">pés</string> <string name="unit_feet">pés</string>
<string name="unit_hour">h</string> <string name="unit_hour">h</string>
<string name="voice_hour">hora</string> <string name="voice_total_distance_zero">My Tracks sem distância</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_per_kilometer">por kilômetro</string> <string name="voice_per_kilometer">por kilômetro</string>
<string name="voice_per_mile">por milha</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_about">Sobre My Tracks</string>
<string name="welcome_title">Bem-vindo</string> <string name="welcome_title">Bem-vindo</string>
</resources> </resources>
+1 -13
View File
@@ -43,7 +43,6 @@ limitations under the License.
<string name="gps_wait_for_fix">Ожидание сигнала GPS. Убедитесь в том, что вы находитесь под открытым небом.</string> <string name="gps_wait_for_fix">Ожидание сигнала GPS. Убедитесь в том, что вы находитесь под открытым небом.</string>
<string name="import_error">Ошибка импорта файла %s</string> <string name="import_error">Ошибка импорта файла %s</string>
<string name="import_no_file">GPX файлы не найденны в %s. Возможно не читается SD-карта или каталог не содержит GPX файлы.</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_description">Описание маркера</string>
<string name="marker_detail_marker_name">Имя маркера</string> <string name="marker_detail_marker_name">Имя маркера</string>
<string name="marker_detail_marker_type">Тип маркера (например: здание, выбоина, достопримечательность...)</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_minute_per_mile">мин/миля</string>
<string name="unit_revolution_per_minute">об/мин</string> <string name="unit_revolution_per_minute">об/мин</string>
<string name="unit_watt">Вт</string> <string name="unit_watt">Вт</string>
<string name="voice_hour">час</string> <string name="voice_total_distance_zero">My Tracks нет расстояния</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_per_kilometer">за километр</string> <string name="voice_per_kilometer">за километр</string>
<string name="voice_per_mile">за милю</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_about">О My Tracks</string>
<string name="welcome_title">Добро пожаловать</string> <string name="welcome_title">Добро пожаловать</string>
</resources> </resources>
+1 -12
View File
@@ -169,20 +169,9 @@ limitations under the License.
<string name="unit_minute">min</string> <string name="unit_minute">min</string>
<string name="unit_minute_per_kilometer">min/km</string> <string name="unit_minute_per_kilometer">min/km</string>
<string name="unit_minute_per_mile">min/mi</string> <string name="unit_minute_per_mile">min/mi</string>
<string name="voice_hour">timme</string> <string name="voice_total_distance_zero">My Tracks ingen distans</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_per_kilometer">per kilometer</string> <string name="voice_per_kilometer">per kilometer</string>
<string name="voice_per_mile">per mile</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_about">Om My Tracks</string>
<string name="welcome_title">Välkommen</string> <string name="welcome_title">Välkommen</string>
</resources> </resources>
+1 -13
View File
@@ -44,7 +44,6 @@ limitations under the License.
<string name="gps_wait_for_fix">等待更准确的 GPS 定位. 请确定可以看见天空.</string> <string name="gps_wait_for_fix">等待更准确的 GPS 定位. 请确定可以看见天空.</string>
<string name="import_error">导入文件 %s 出错.</string> <string name="import_error">导入文件 %s 出错.</string>
<string name="import_no_file">在 %s 中未找到 GPX 文件. SD 存储卡不可用或者目录中没有 GPX 文件.</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_description">标记描述</string>
<string name="marker_detail_marker_name">标记名称</string> <string name="marker_detail_marker_name">标记名称</string>
<string name="marker_detail_marker_type">标记类型 (例如: 建筑, 陷坑, 景点...)</string> <string name="marker_detail_marker_type">标记类型 (例如: 建筑, 陷坑, 景点...)</string>
@@ -227,20 +226,9 @@ limitations under the License.
<string name="track_record_success">现在开始记录新的轨迹.</string> <string name="track_record_success">现在开始记录新的轨迹.</string>
<string name="unit_hour">时</string> <string name="unit_hour">时</string>
<string name="unit_minute">分</string> <string name="unit_minute">分</string>
<string name="voice_hour">小时</string> <string name="voice_total_distance_zero">My Tracks 无距离</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_per_kilometer">每千米</string> <string name="voice_per_kilometer">每千米</string>
<string name="voice_per_mile">每英里</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_about">关于 My Tracks</string>
<string name="welcome_title">欢迎</string> <string name="welcome_title">欢迎</string>
</resources> </resources>
+250 -54
View File
@@ -603,14 +603,44 @@ limitations under the License.
translation_description="When importing all the tracks, a toast message indicating import error translation_description="When importing all the tracks, a toast message indicating import error
for one of the tracks. 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. Import error for file %1$s.
</string> </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" <string name="import_no_file"
translation_description="After importing all the tracks from the SD card, the alert message translation_description="After importing all the tracks from the SD card, the alert message
indicating that no track is imported. 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 No GPX file found in %1$s. The SD card may be unreadable or the directory may not contain any
GPX file. GPX file.
</string> </string>
@@ -618,10 +648,10 @@ limitations under the License.
translation_description="After importing all the tracks from the SD card, the alert message translation_description="After importing all the tracks from the SD card, the alert message
indicating success. indicating success.
%1$d the number of successfully imported tracks. E.g., '5'. %1$d the number of successfully imported tracks. E.g., '1'.
%2$d the number of total tracks to be imported. E.g., '6'. %2$s the number of GPX files in the SD card. E.g., '1 GPX file' or '2 GPX files'.
%3$s the directory path. E.g., '/mnt/sdcard/MyTracks/gpx/'."> %3$s the SD card directory path. E.g., '/mnt/sdcard/MyTracks/gpx/'.">
Imported to My Tracks %1$d of %2$d GPX files from %3$s. My Tracks: Imported %1$d of %2$s from %3$s.
</string> </string>
<!-- Marker --> <!-- Marker -->
@@ -1995,73 +2025,239 @@ limitations under the License.
</string> </string>
<!-- Voice --> <!-- Voice -->
<string name="voice_hour" <string name="voice_hours_few"
translation_description="For voice announcement, to say hour like 'one hour'."> translation_description="For voice announcement, to say 'few' hours.
hour
%1$d an integer number. The number is a small number.">
%1$d hours
</string> </string>
<string name="voice_hours" <string name="voice_hours_many"
translation_description="For voice announcement, to say hours like 'two hours'."> translation_description="For voice announcement, to say 'many' hours.
hours
%1$d an integer number. The number is a large number.">
%1$d hours
</string> </string>
<string name="voice_kilometer_per_hour" <string name="voice_hours_one"
translation_description="For voice announcement, to say 'kilometers per hour' for speed like translation_description="For voice announcement, to say 1 hour.">
'two kilometers per hour'."> 1 hour
kilometers per hour
</string> </string>
<string name="voice_kilometers" <string name="voice_hours_other"
translation_description="For voice announcement, to say kilometers like 'two kilometers'."> translation_description="For voice announcement, to say 'other' hours.
kilometers
%1$d an integer number. The number doesn't require special treatment.">
%1$d hours
</string> </string>
<string name="voice_mile_per_hour" <string name="voice_hours_two"
translation_description="For voice announcement, to say 'miles per hour' for speed like 'two translation_description="For voice announcement, to say 2 hours.">
miles per hour'."> 2 hours
miles per hour
</string> </string>
<string name="voice_miles" <string name="voice_hours_zero"
translation_description="For voice announcement, to say miles like 'two miles'."> translation_description="For voice announcement, to say 0 hours.">
miles 0 hours
</string> </string>
<string name="voice_minute" <string name="voice_minutes_few"
translation_description="For voice announcement, to say minute like 'one minute'."> translation_description="For voice announcement, to say 'few' minutes.
minute
%1$d an integer number. The number is a small number.">
%1$d minutes
</string> </string>
<string name="voice_minutes" <string name="voice_minutes_many"
translation_description="For voice announcement, to say minutes like 'two minutes'."> translation_description="For voice announcement, to say 'many' minutes.
minutes
%1$d an integer number. The number is a large number.">
%1$d minutes
</string> </string>
<string name="voice_no_distance" <string name="voice_minutes_one"
translation_description="For the voice announcement, the announcement when the current track's translation_description="For voice announcement, to say 1 minute.">
total distance is zero."> 1 minute
My Tracks no distance. </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>
<string name="voice_per_kilometer" <string name="voice_per_kilometer"
translation_description="For voice announcement, to say 'per kilometer' for pace like 'two translation_description="For voice announcement, to say 'per kilometer' for pace like 'two
minutes per kilometer'."> hours 2 minutes per kilometer'.">
per kilometer per kilometer
</string> </string>
<string name="voice_per_mile" <string name="voice_per_mile"
translation_description="For voice announcement, to say 'per mile' for pace like 'two minutes translation_description="For voice announcement, to say 'per mile' for pace like 'two hours 2
per mile'."> minutes per mile'.">
per mile per mile
</string> </string>
<string name="voice_second" <string name="voice_seconds_few"
translation_description="For voice announcement, to say second like 'one second'."> translation_description="For voice announcement, to say 'few' seconds.
second
%1$d an integer number. The number is a small number.">
%1$d seconds
</string> </string>
<string name="voice_seconds" <string name="voice_seconds_many"
translation_description="For voice announcement, to say seconds like 'two seconds'."> translation_description="For voice announcement, to say 'many' seconds.
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>
<string name="voice_template" <string name="voice_template"
translation_description="For the voice announcement, the template to make an announcement. translation_description="For the voice announcement, the template to make an announcement.
%1$.2f: distance value. E.g., '5.2'. %1$s: distance string. E.g., '1 mile' or '1.2 miles', '1 kilometer', '2.2 kilometers'
%2$s: distance unit. 'miles' or 'kilometers' %2$s: time string. E.g., '1 hour and 30 minutes' or '20 minutes 1 second'
%3$s: time value. E.g., '1 hour and 30 minutes' or '20 minutes and 1 second' %3$s: speed/pace string. For speed, e.g., '2.2 miles per hour', '1 kilometer per hour'. For
%4$s: speed/pace value. For speed, e.g., '2.2'. For pace, e.g., '2 hours and 1 minute'. pace, e.g., '2 hours 1 minute per mile', '30 minutes 1 second per kilometer'.">
%5$s: speed/pace unit. For speed, 'miles per hour' or 'kilometers per hour'. For pace, 'per My Tracks total distance %1$s in %2$s at %3$s.
mile' or 'per kilometer'."> </string>
My Tracks total distance %1$.2f %2$s in %3$s at %4$s %5$s. <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> </string>
<!-- Waypoint Type --> <!-- Waypoint Type -->
@@ -2292,7 +2488,7 @@ limitations under the License.
statistics, and graphs view. statistics, and graphs view.
</string> </string>
<string name="welcome_app_navigation_question" <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? How do I see the map, statistics, and graphs view?
</string> </string>
<string name="welcome_battery_life_answer" <string name="welcome_battery_life_answer"
@@ -2435,7 +2631,7 @@ limitations under the License.
How do I share tracks with friends and the rest of the world? How do I share tracks with friends and the rest of the world?
</string> </string>
<string name="welcome_split_track_answer" <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.">
Tracks on Google My Maps and Google Fusion Tables are limited to certain sizes. Tracks on Google My Maps and Google Fusion Tables are limited to certain sizes.
</string> </string>
@@ -128,8 +128,10 @@ public class ImportAllTracks {
if (gpxFileCount == 0) { if (gpxFileCount == 0) {
builder.setMessage(activity.getString(R.string.import_no_file, gpxPath)); builder.setMessage(activity.getString(R.string.import_no_file, gpxPath));
} else { } else {
String totalFiles = activity.getResources().getQuantityString(
R.plurals.importGpxFiles, gpxFileCount, gpxFileCount);
builder.setMessage( 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() { builder.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
@Override @Override
@@ -150,64 +150,70 @@ public class StatusAnnouncerTask implements PeriodicTask {
*/ */
// @VisibleForTesting // @VisibleForTesting
protected String getAnnouncement(TripStatistics stats) { protected String getAnnouncement(TripStatistics stats) {
SharedPreferences preferences =
context.getSharedPreferences(Constants.SETTINGS_NAME, 0);
boolean metricUnits = true; boolean metricUnits = true;
boolean reportSpeed = true; boolean reportSpeed = true;
SharedPreferences preferences = context.getSharedPreferences(Constants.SETTINGS_NAME, 0);
if (preferences != null) { if (preferences != null) {
metricUnits = metricUnits = preferences.getBoolean(context.getString(R.string.metric_units_key), true);
preferences.getBoolean(context.getString(R.string.metric_units_key), reportSpeed = preferences.getBoolean(context.getString(R.string.report_speed_key), true);
true);
reportSpeed =
preferences.getBoolean(context.getString(R.string.report_speed_key),
true);
} }
double d = stats.getTotalDistance() / 1000; double d = stats.getTotalDistance() / 1000; // d is in kilometers
double s = stats.getAverageMovingSpeed() * 3.6; double s = stats.getAverageMovingSpeed() * 3.6; // s is in kilometers per hour
if (d == 0) { 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 (metricUnits) {
if (reportSpeed) {
speedLabel = R.string.voice_kilometer_per_hour;
} else {
speedLabel = R.string.voice_per_kilometer;
}
} else {
s *= UnitConversions.KMH_TO_MPH;
d *= UnitConversions.KM_TO_MI; d *= UnitConversions.KM_TO_MI;
if (reportSpeed) { s *= UnitConversions.KMH_TO_MPH;
speedLabel = R.string.voice_mile_per_hour;
} else {
speedLabel = R.string.voice_per_mile;
}
} }
String speed = null; if (!reportSpeed) {
if ((s == 0) || Double.isNaN(s)) { s = 3600000.0 / s; // converts from speed to pace
speed = context.getString(R.string.value_unknown); }
// 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 { } else {
if (reportSpeed) { int perDistancelId = metricUnits ? R.string.voice_per_kilometer : R.string.voice_per_mile;
speed = String.format("%.1f", s); speed = getAnnounceTime((long) s) + " " + context.getString(perDistancelId);
} else {
double pace = 3600000.0 / s;
Log.w(Constants.TAG,
"Converted speed: " + s + " to pace: " + pace);
speed = getAnnounceTime((long) pace);
}
} }
return context.getString(R.string.voice_template, int totalDistanceId = metricUnits ? R.plurals.voiceTotalDistanceKilometers
d, : R.plurals.voiceTotalDistanceMiles;
context.getString(metricUnits String totalDistance = context.getResources().getQuantityString(
? R.string.voice_kilometers totalDistanceId, getQuantityCount(d), d);
: R.string.voice_miles),
getAnnounceTime(stats.getMovingTime()), return context.getString(
speed, R.string.voice_template, totalDistance, getAnnounceTime(stats.getMovingTime()), speed);
context.getString(speedLabel)); }
/**
* 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 @Override
@@ -331,30 +337,22 @@ public class StatusAnnouncerTask implements PeriodicTask {
@VisibleForTesting @VisibleForTesting
String getAnnounceTime(long time) { String getAnnounceTime(long time) {
int[] parts = StringUtils.getTimeParts(time); int[] parts = StringUtils.getTimeParts(time);
String secLabel = String seconds = context.getResources().getQuantityString(
context.getString(parts[0] == 1 ? R.string.voice_second : R.string.voice_seconds); R.plurals.voiceSeconds, parts[0], parts[0]);
String minLabel = String minutes = context.getResources().getQuantityString(
context.getString(parts[1] == 1 ? R.string.voice_minute : R.string.voice_minutes); R.plurals.voiceMinutes, parts[1], parts[1]);
String hourLabel = String hours = context.getResources().getQuantityString(
context.getString(parts[2] == 1 ? R.string.voice_hour : R.string.voice_hours); R.plurals.voiceHours, parts[2], parts[2]);
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (parts[2] != 0) { if (parts[2] != 0) {
sb.append(parts[2]); sb.append(hours);
sb.append(" "); sb.append(" ");
sb.append(hourLabel); sb.append(minutes);
sb.append(" ");
sb.append(parts[1]);
sb.append(" ");
sb.append(minLabel);
} else { } else {
sb.append(parts[1]); sb.append(minutes);
sb.append(" "); sb.append(" ");
sb.append(minLabel); sb.append(seconds);
sb.append(" ");
sb.append(parts[0]);
sb.append(" ");
sb.append(secLabel);
} }
return sb.toString(); return sb.toString();
} }