Merged from 2.8.5 branch.

------------------------------------------------------------
Use --include-merges or -n0 to see merged revisions.
pull/14/head
Tim Su 15 years ago
parent 42aa15967c
commit 7a3f00e105

@ -0,0 +1,27 @@
#!/bin/bash
############################################################################
# Astrid pre-commit hook:
#
# 1. if translation .xml files have been changed, check for
# change in .po files as well
#
############################################################################
XML_FILES="res/values/strings.xml res/values/arrays.xml"
TRANSLATION_PATH="translations/"
STATUS=$(bzr status)
for FILE in $XML_FILES; do
echo $STATUS | grep $FILE &> /dev/null
if [ "$?" == "0" ]; then
PO_FILE=${FILE##*/}
PO_FILE=${TRANSLATION_PATH}${PO_FILE%%.*}.po
echo $STATUS | grep $PO_FILE &> /dev/null
if [ "$?" != "0" ]; then
echo "[pre-commit] Error: please update .po file: $PO_FILE"
exit 1
fi
fi
done
exit 0

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.timsu.astrid"
android:versionCode="110"
android:versionName="2.8.4">
android:versionCode="111"
android:versionName="2.8.5">
<!-- ============================ Metadata ============================ -->
@ -18,7 +18,7 @@
<uses-sdk android:minSdkVersion="1" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<!-- ======================== Activities ========================= -->

@ -22,8 +22,8 @@
#
#Set the languages here (long version is the android resource append string).
short_lang=("nl" "de" "fr") #do not include template language ("en" usually).
long_lang=("nl_rNL" "de" "fr") #do not include template language ("en" usually).
short_lang=("es" "de" "ja") #do not include template language ("en" usually).
long_lang=("es" "de" "ja") #do not include template language ("en" usually).
#Change the dirs where the files are located.
launchpad_po_files_dir="translations"
launchpad_pot_file_dir="translations"
@ -40,7 +40,7 @@ function import_po2xml
echo "Importing .xml from .po for "${resource_file}-${short_lang[i]}""
mkdir -p "${android_xml_files_res_dir}"-"${long_lang[i]}"
${xml2po} -a -l "${short_lang[i]}" -p "${launchpad_po_files_dir}"/"${resource_file}"-"${short_lang[i]}".po \
"${android_xml_files_res_dir}"/"${android_xml_filename}".xml > "${android_xml_files_res_dir}"-"${long_lang[i]}"/"${resource_file}".xml
"${android_xml_files_res_dir}"/"${resource_file}".xml > "${android_xml_files_res_dir}"-"${long_lang[i]}"/"${resource_file}".xml
done
done
}

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

@ -1,89 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Translation Note:
Guidelines to those translating the resources
1) Quality over Quantity: the quality of the phrases is important not the number of phrases used in any given
languages.
2) Dynamic Equivalence not necessary literal translation but capture the idea and create the same desired effect
-->
<resources>
<!-- Make these < 20 chars so the task name is displayed
Goal: Maximize the chance that they will perform the task while minimizing the annoyance.-->
<string-array name="reminders">
<item>Hallo! Haste 'ne Sekunde?</item>
<item>Kann ich deine Aufmerksamkeit für ein paar Sekunden haben?</item>
<item>Hast Du n paar Minuten?</item>
<item>Hast Du's vergessen?</item>
<item>Entschuldigung!</item>
<item>Falls Du ne Minute hast:</item>
<item>Auf Deinem Tagesplan:</item>
<item>Einen kurzen Moment Zeit?</item>
<item>Astrid hier!</item>
<item>Hallo! Kann ich Dich kurz stören?</item>
<item>Kann ich eine Minute haben?</item>
<item>Es ist ein wunderbarer Tag zum</item>
</string-array>
<!-- Astrid says... (user should answer yes or no) -->
<string-array name="reminder_responses">
<item>Ich habe was für Dich!</item>
<item>Bereit folgendes zur Vergangenheit zu machen?</item>
<item>Warum erledigst Du das nicht?</item>
<item>Wie schaut's aus? Fertig?</item>
<item>Bereit das anzugehen?</item>
<item>Schaffst Du das?</item>
<item>Du kannst glücklich sein! Erledige das!</item>
<item>Ich verspreche, dass es Dir besser geht, wenn das erledigt ist!</item>
<item>Wirst Du das heute nicht mehr machen?</item>
<item>Bitte erledige das, Ich kann es nicht mehr sehen!</item>
<item>Kannst Du das erledigen? Ja, kannst Du!</item>
<item>Wirst Du das jemals erledigen?</item>
<item>Tu was für dein Wohlbefinden! Erledige das!</item>
<item>Ich bin stolz auf Dich! Lass uns das abschließen!</item>
<item>Eine kleinen Snack wenn das erledigt ist?</item>
<item>Nur diese eine Aufgabe? Bitte?</item>
<item>Es ist Zeit deine Aufgabenliste zu verkleinern!</item>
</string-array>
<!-- Astrid's nagging when user clicks postpone -->
<string-array name="postpone_nags">
<item>Bitte sag mir, dass Du nicht alles aufschiebst!</item>
<item>Ist es nicht manchmal langweilig faul zu sein?</item>
<item>Irgendwer, irgendwo vertraut darauf, dass Du das abschließt!</item>
<item>Als Du \'verschieben\' gesagt hast, meintest Du eigentlich \'Ich werde es erledigen\', oder?</item>
<item>Das ist das letzte Mal, dass Du das hier aufschiebst, richtig?</item>
<item>Erledige das einfach heute, und ich sage es niemandem. Ok?!</item>
<item>Warum verschieben? Du könntest es doch einfach .. nicht verschieben!</item>
<item>Ich nehme an, dass Du das irgendwann mal abschließen wirst?</item>
<item>Es läuft doch! Wie wäre es, wenn Du das nicht bis zur letzten Minute aufschiebst?</item>
<item>Wirst Du deine Ziele erreichen?</item>
<item>Verschieben, verschieben, verschieben. Wann wirst Du dich verändern?</item>
<item>Ich habe genug von deinen Ausreden! Mach es einfach!</item>
<item>Ist das nicht die gleiche Ausrede wie letztes Mal?</item>
<item>Ich kann Dir so anicht helfen dein Leben zu organisieren..</item>
</string-array>
<!-- Icons for notification tray -->
<string-array name="notif_icon_entries">
<item>Rosa</item>
<item>Langweilig</item>
<item>Astrid</item>
</string-array>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Translation Note:
Guidelines to those translating the resources
1) Quality over Quantity: the quality of the phrases is important not the number of phrases used in any given
languages.
2) Dynamic Equivalence not necessary literal translation but capture the idea and create the same desired effect
-->
<resources>
<!--
Goal: Maximize the chance that they will perform the task while minimizing the annoyance.-->
<string-array name="reminders">
<!-- reminders: Make these < 20 chars so the task name is displayed -->
<item>Hallo! Haste mal 'ne Sekunde?</item>
<item>Na, 'n paar Sekunden für mich Zeit?</item>
<item>Haste mal 'n paar Minuten?</item>
<item>Hast du's vergessen?</item>
<item>Entschuldigung!</item>
<item>Falls du mal 'ne Minute hast:</item>
<item>Auf deinem Tagesplan:</item>
<item>Einen Augenblick Zeit?</item>
<item>Astrid ist da!</item>
<item>Hallo! Kann ich dich kurz nerven?</item>
<item>Schenk mir doch mal eine Minute!</item>
<item>Es ist ein toller Tag zum</item>
</string-array>
<string-array name="reminder_responses">
<!-- reminder_responses: Astrid says... (user should answer yes or no) -->
<item>Ich habe was für dich!</item>
<item>Bereit dies in die Vergangenheit zu befördern?</item>
<item>Warum erledigst du's nicht?</item>
<item>Wie schauts aus? Fertig?</item>
<item>Bereit das anzupacken?</item>
<item>Nun mach aber mal!</item>
<item>Machs einfach! Danach kannst du durchatmen.</item>
<item>Ich verspreche dir, du wirst dich besser fühlen, wenn du's erledigt hast!</item>
<item>Mal ehrlich, was spricht denn gegen sofort?</item>
<item>Nun mach aber mal, langsam stinkts mir!</item>
<item>Kannst du das erledigen? Yes, you can!</item>
<item>Wirst du das jemals tun?</item>
<item>Tu was fürs freie Atmen! Lass knacken!</item>
<item>Das beenden wir nun mal. Ich bin stolz auf dich.</item>
<item>Einen kleinen Imbiss, wenn das erledigt ist?</item>
<item>Nur diese eine Aufgabe? Bitte?</item>
<item>Es ist Zeit deine Aufgabenliste zu verkürzen!</item>
</string-array>
<string-array name="postpone_nags">
<!-- Astrid's nagging when user clicks postpone -->
<item>Wie, du bist stolz darauf, alles aufzuschieben?</item>
<item>Ist es nicht manchmal langweilig faul zu sein?</item>
<item>Irgendwer, irgendwo vertraut darauf, dass du das abschließt!</item>
<item>Als du "verschieben" gesagt hast, meintest du doch eigentlich "Ich werde es erledigen", oder?</item>
<item>Das ist das letzte Mal, dass du das hier aufschiebst, okay?</item>
<item>Erledige das einfach heute und ich sage es niemandem. Okay?!</item>
<item>Warum verschieben? Du könntest es doch einfach ... nicht verschieben!</item>
<item>Ich nehme an, dass du das irgendwann mal abschließen wirst?</item>
<item>Es läuft doch! Wie wäre es, wenn du das nicht bis zur letzten Minute aufschiebst?</item>
<item>Wirst du deine Ziele erreichen, wenn du das tust?</item>
<item>Verschieben, verschieben, verschieben. Wann wirst du dich verändern?</item>
<item>Ich habe genug von deinen Ausreden! Mach es einfach!</item>
<item>Ist das nicht die gleiche Ausrede wie letztes Mal?</item>
<item>Dann kann ich dir auch nicht helfen, dein Leben zu organisieren.</item>
</string-array>
<string-array name="notif_icon_entries">
<!-- Icons for notification tray -->
<item>Rosa</item>
<item>Langweilig</item>
<item>Astrid</item>
</string-array>
<string-array name="notif_icon_values">
<!-- Corresponding to the constants in Preferences.java (do not edit) -->
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="sync_interval_entries">
<!-- sync_interval_entries: Synchronization Intervals -->
<item>Deaktiviere</item>
<item>zweimal stündlich</item>
<item>stündlich</item>
<item>zweimal täglich</item>
<item>täglich</item>
<item>zweimal wöchentlich</item>
<item>wöchentlich</item>
</string-array>
<string-array name="sync_interval_values">
<!-- sync_interval_values: interval in seconds for sync entries (do not edit) -->
<item>0</item>
<item>1800</item>
<item>3600</item>
<item>43200</item>
<item>86400</item>
<item>302400</item>
<item>604800</item>
</string-array>
</resources>

@ -1,104 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
ASTRID: Android's Simple Task Recording Dashboard Copyright (c) 2009 Tim
Su This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version. This program is distributed in the hope that
it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. You should have received a
copy of the GNU General Public License along with this program; if not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
-->
<!--
ASTRID: Android's Simple Task Recording Dashboard
Copyright (c) 2009 Tim Su
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- application -->
<string name="app_name">Astrid</string>
<!-- application -->
<string name="app_name">Astrid</string>
<!-- General String Constants -->
<skip />
<!-- Importance Labels -->
<string name="importance_1">!!!!</string>
<string name="importance_2">!!!</string>
<string name="importance_3">!!</string>
<string name="importance_4">!</string>
<!-- Repeat Interval Labels -->
<string name="repeat_days">Tag(e)</string>
<string name="repeat_weeks">Woche(n)</string>
<string name="repeat_months">Monat(e)</string>
<string name="repeat_hours">Stunde(n)</string>
<!-- Plurals -->
<plurals name="Ntasks">
<item quantity="one">1 Aufgabe</item>
<item quantity="other">%d Aufgaben</item>
</plurals>
<plurals name="NactiveTasks">
<item quantity="one">%d / %d Aktiv</item>
<skip/>
<!-- Importance Labels -->
<string name="importance_1">!!!!</string>
<string name="importance_2">!!!</string>
<string name="importance_3">!!</string>
<string name="importance_4">!</string>
<!-- Repeat Interval Labels -->
<string name="repeat_days">Tag(e)</string>
<string name="repeat_weeks">Woche(n)</string>
<string name="repeat_months">Monat(e)</string>
<string name="repeat_hours">Stunde(n)</string>
<!-- Plurals -->
<plurals name="Ntasks">
<!-- plurals: tasks -->
<item quantity="one">1 Aufgabe</item>
<item quantity="other">%d Aufgaben</item>
</plurals>
<plurals name="NactiveTasks">
<!-- plurals: active tasks vs total tasks -->
<item quantity="one">%d / %d Aktiv</item>
<item quantity="other">%d / %d Aktiv</item>
</plurals>
<plurals name="Nalarms">
<!-- plurals: alarms -->
<item quantity="one">Ein Alarm</item>
<item quantity="two">Zwei Alarme</item>
<item quantity="other">%d Alarme</item>
</plurals>
<plurals name="Ntags">
<!-- plurals: tags -->
<item quantity="one">1 Tag</item>
<item quantity="other">%d Tags</item>
</plurals>
<!-- Time Constants -->
<string name="dateFormatter">d. MMM.</string> <!-- used for long due
dates. c.f. Java's SimpleDateFormat -->
<string name="daysVertical">T\na\ng\ne</string> <!-- vertical labels
are used in the number dialogs -->
<string name="hoursVertical">S\nt\nd</string>
<!-- used for long due dates. c.f. Java's SimpleDateFormat -->
<string name="dateFormatter">d MMM</string>
<!-- used for alarms -->
<string name="alarmDateFormatter">T
a
g
e</string>
<!-- vertical labels are used in dialog boxes -->
<string name="daysVertical">T
a
g
e</string>
<string name="hoursVertical">S
t
d</string>
<plurals name="Ndays">
<!-- plurals: days -->
<item quantity="one">1 Tag</item>
<item quantity="other">%d Tage</item>
</plurals>
<plurals name="NdaysPreposition">
<!-- plurals: days (used after a preopsition, i.e. due in 5 days) -->
<item quantity="one">1 Tag</item>
<item quantity="other">%d Tagen</item>
<item quantity="other">%d Tage</item>
</plurals>
<plurals name="Nhours">
<!-- plurals: hours -->
<item quantity="one">1 Stunde</item>
<item quantity="other">%d Stunden</item>
</plurals>
<plurals name="Nminutes">
<!-- plurals: minutes -->
<item quantity="one">1 Minute</item>
<item quantity="other">%d Minuten</item>
</plurals>
<plurals name="Nseconds">
<!-- plurals: seconds -->
<item quantity="one">1 Sekunde</item>
<item quantity="other">%d Sekunden</item>
</plurals>
<plurals name="NhoursShort">
<!-- plurals: hours (abbreviated) -->
<item quantity="one">1 Std</item>
<item quantity="other">%d Std</item>
</plurals>
<plurals name="NminutesShort">
<!-- plurals: minutes (abbreviated) -->
<item quantity="one">1 Min</item>
<item quantity="other">%d Min</item>
</plurals>
<plurals name="NsecondsShort">
<!-- plurals: seconds (abbreviated) -->
<item quantity="one">1 Sek</item>
<item quantity="other">%d Sek</item>
</plurals>
<string name="ago_suffix">vor</string><!-- appended after time
<string name="ago_suffix">Vor</string><!-- appended after time
constants to show time in past -->
<!-- TaskList -->
<skip />
<skip/>
<!-- title bar -->
<string name="taskList_titlePrefix">Astrid: </string>
<string name="taskList_titleTagPrefix">Tagged \"%s\": </string>
<string name="taskList_hiddenSuffix"> versteckt</string>
<string name="taskList_titlePrefix">Astrid:</string>
<string name="taskList_titleTagPrefix">Tagged "%s":</string>
<string name="taskList_titleUntagged">Aufgaben ohne Tags:</string>
<string name="taskList_hiddenSuffix">versteckt</string>
<string name="addtask_label">Neue Aufgabe</string>
<string name="missing_tag">Could Not Find Requested Tag!</string>
<string name="missing_tag">Konnte gesuchten Tag nicht finden!</string>
<!-- text in the actual list -->
<string name="taskList_hiddenPrefix">V</string><!-- prefix to show that a task is hidden -->
@ -109,9 +143,9 @@
<string name="taskList_completedPrefix">Erledigt</string><!-- i.e. Finished 4 days ago -->
<string name="taskList_estimatedTimePrefix">Zeitschätzung:</string><!-- i.e. Estimated 4: hours -->
<string name="taskList_elapsedTimePrefix">Verbracht:</string><!-- i.e. Spent 88 minutes on tax. -->
<string name="taskList_periodicReminderPrefix">Anstubsen jede</string><!-- time interval to set frequency to remind user -->
<string name="taskList_repeatPrefix">Wiederholt sich jede</string><!-- time interval to set repeated tasks-->
<string name="taskList_repeatsRemotely">Wiederholt auf dem Server</string><!-- displayed when repeat is on remote server-->
<string name="taskList_periodicReminderPrefix">Anstubsen alle</string><!-- time interval to set frequency to remind user -->
<string name="taskList_repeatPrefix">Wiederholt sich alle</string><!-- time interval to set repeated tasks-->
<string name="taskList_repeatsRemotely">Wiederholungen auf dem Server</string><!-- displayed when repeat is on remote server-->
<string name="taskList_alarmPrefix">Nächster Alarm:</string>
<string name="taskList_tagsPrefix">Tags:</string>
<string name="taskList_notesPrefix">Notizen:</string>
@ -119,16 +153,16 @@
<string name="taskList_deleted">Gelöscht</string><!-- Deleted: MM/DD/YY -->
<!-- menu items -->
<string name="taskList_menu_insert">Hinzufügen</string><!-- Add or Insert -->
<string name="taskList_menu_insert">Neue Aufgabe</string><!-- New Tasks, Add or Insert -->
<string name="taskList_menu_tags">Tags</string>
<string name="taskList_menu_filters">Anzeigen</string>
<string name="taskList_menu_filters">Sortieren/Filter</string>
<string name="taskList_menu_syncshortcut">Sync</string>
<string name="taskList_menu_more">Mehr</string>
<string name="taskList_menu_sync">Synchronisation</string>
<string name="taskList_menu_settings">Einstellungen</string>
<string name="taskList_menu_help">Hilfe (öffnet im Browser)</string>
<string name="taskList_menu_survey">Nimm an Astrids Befragung teil!</string>
<string name="taskList_menu_tips">Schnelle Tipps</string>
<string name="taskList_menu_tips">Quick Tips</string>
<string name="taskList_menu_cleanup">Alte Aufgaben löschen</string>
<string name="taskList_context_edit">Aufgabe bearbeiten</string>
@ -148,48 +182,49 @@
<string name="taskList_sort_reverse">Umgekehrt sortieren</string>
<string name="taskList_nonag_reminder">Wähle eine Aktion:</string>
<string name="taskList_postpone_count">Wie oft aufgeschoben: %d</string>
<string name="taskList_postpone_count">Wieviel mal du aufgeschoben hast: %d</string>
<string name="taskList_postpone_dialog">Wie lange aufschieben?</string>
<string name="taskList_cleanup_dialog">"Lösche erledigte Aufgaben, die älter sind als # Tage:"</string>
<!-- TaskEdit -->
<skip />
<skip/>
<!-- title bar -->
<string name="taskEdit_titleGeneric">Astrid: Aufgabe bearbeiten</string>
<string name="taskEdit_titlePrefix">Astrid: Bearbeite </string>
<string name="taskEdit_titlePrefix">Bearbeiten</string>
<string name="taskEdit_label">Astrid: Neue Aufgabe</string>
<!-- tabs -->
<string name="taskEdit_tab_basic">Allgemein</string>
<string name="taskEdit_tab_dates">Datum/Zeit</string>
<string name="taskEdit_tab_alerts">Erinnerungen</string>
<string name="taskEdit_tab_alerts">Alarme</string>
<!-- labels -->
<string name="name_label">Zusammenfassung</string>
<string name="name_hint">Beschreibung der Aufgabe</string>
<string name="name_hint">Zusammenfassung</string>
<string name="importance_label">Wie wichtig ist es?</string>
<string name="tags_label">Tags:</string>
<string name="tag_hint">Tag</string>
<string name="estimatedDuration_label">Wie lange wird es dauern?</string>
<string name="elapsedDuration_label">Für die Aufgabe bereits verbrachte Zeit</string>
<string name="elapsedDuration_label">An der Aufgabe bereits verbrachte Zeit</string>
<string name="definiteDueDate_label">Absolute Frist</string>
<string name="preferredDueDate_label">Zielfrist</string>
<string name="addToCalendar_label">Aufgabe zum Kalender hinzufügen</string>
<string name="showCalendar_label">Zeige Termin im Kalender an</string>
<string name="showCalendar_label">Öffne Termin im Kalender</string>
<string name="hiddenUntil_label">Bis zu diesem Datum verstecken</string>
<string name="repeat_label">Wiederhole alle</string>
<string name="repeat_value_unset">Keine Wiederholung eingestellt</string>
<string name="blockingOn_label">Verstecke bis diese Aufgabe erledigt ist.</string>
<string name="blockingOn_label">Verstecken bis diese Aufgabe erledigt ist</string>
<string name="notes_label">Notizen</string>
<string name="notes_hint">Aufgaben-Notizen eingeben</string>
<string name="notes_hint">Notizen zu den Aufgaben eingeben</string>
<string name="notification_label">Regelmäßige Erinnerungen</string>
<string name="notification_prefix">Jede</string>
<string name="notification_prefix">Alle</string>
<string name="flags_label">Erinnere mich...</string>
<string name="flag_before">Beim Nähern der Fristen</string>
<string name="flag_before">Beim Nahen der Fristen</string>
<string name="flag_during">Beim Erreichen der Fristen</string>
<string name="flag_after">Nachdem die absolute Frist verstrichen ist</string>
<string name="flag_nonstop">Pausenlos bis ich die Aufgabe anschaue</string>
<string name="flag_nonstop">Weckermodus</string>
<string name="alerts_label">Festgesetzte Erinnerungen</string>
<string name="add_alert">Neue Erinnerung hinzufügen</string>
@ -198,63 +233,51 @@
<string name="notification_dialog">Erinnere mich alle</string>
<string name="repeat_picker_title">Wiederhole alle (0 zum Deaktivieren)</string>
<string name="repeat_help_dialog_title">Hilfe: Astrid Wiederholungen</string>
<string name="repeat_help_dialog">
Stelle oben zu mindest eine Frist ein um Wiederholungen zu nutzen. Wenn du die Aufgabe erledigst, wird die Frist automatisch verschoben.
\n\n
Um Wiederholungen zu nutzen, stelle oben zumindes eine Frist ein. Wenn du die Aufgabe erledigst, wird die Frist automatisch verschoben.
\n
Wenn du die neue Aufgabe nicht gleich nach der Fertigstellung der alten sehen willst, solltest du das Feld nutzen, welches auch autmatisch verschoben wird.
\n
Wenn du die neue Aufgabe nicht gleich nach der Fertigstellung der alten sehen willst, solltest du das Feld "Verstecken bis" nutzen, das auch automatisch verschoben wird. </string>
<string name="repeat_help_hide">Diese Hilfe nicht mehr anzeigen</string>
<string name="repeat_help_dialog">Um Wiederholungen zu nutzen, stelle oben zumindest eine Frist ein. Wenn du die Aufgabe erledigst, wird die Frist automatisch verschoben. \n\n Wenn du die neue Aufgabe nicht gleich nach der Fertigstellung der alten sehen willst, solltest du das Feld "Verstecken bis" nutzen, das ebenfalls automatisch verschoben wird. \n</string>
<string name="repeat_help_hide">Hilfe nicht mehr anzeigen</string>
<!-- buttons -->
<string name="save_label">Speichern</string>
<string name="discard_label">Verwerfen</string>
<string name="edit_label">Bearbeiten</string>
<string name="delete_label">Löschen</string>
<string name="blank_button_title">Klicken zum Einstellen</string>
<string name="blank_button_title">Anklicken zum Einstellen</string>
<string name="startTimer_label">Timer starten</string>
<string name="stopTimer_label">Timer stoppen</string>
<string name="taskEdit_menu_save">Speichern</string>
<string name="taskEdit_onTaskSave_Due">Aufgabe gespeichert: Fällig in %s</string>
<string name="taskEdit_onTaskSave_Due">Aufgabe gespeichert: fällig in %s</string>
<string name="taskEdit_onTaskSave_Overdue">Aufgabe gespeichert: fällig vor %s</string>
<string name="taskEdit_onTaskSave_notDue">Aufgabe gespeichert</string>
<!-- TaskView -->
<skip />
<skip/>
<string name="taskView_notifyTitle">Astrid sagt...</string>
<!-- Tag List -->
<skip />
<string name="tagList_titlePrefix">Astrid: Tag Ansicht: </string>
<skip/>
<string name="tagList_titlePrefix">Astrid: Tag Ansicht:</string>
<string name="tagList_context_create">Aufgabe mit Tag erstellen</string>
<string name="tagList_context_edit">Aufgabe bearbeiten</string>
<string name="tagList_context_delete">Aufgabe löschen</string>
<string name="tagList_context_edit">Tag bearbeiten</string>
<string name="tagList_context_delete">Tag löschen</string>
<string name="tagList_context_showTag">Auf der Startseite anzeigen</string>
<string name="tagList_context_hideTag">Auf der Startseite verstecken</string>
<string name="tagList_context_shortcut">Verknüpfung erstellen</string>
<string name="tagList_shortcut_created">Verknüpfung wurde auf der Startseite erstellt!</string>
<string name="tagList_shortcut_prefix">Tag:</string>
<string name="tagList_untagged">-- Not tagged --</string>
<string name="tagList_untagged">Not tagged</string>
<string name="tagList_menu_sortAlpha">Sortiere von A-Z</string>
<string name="tagList_menu_sortSize">Sortiere nach Größe</string>
<!-- Synchronization -->
<skip />
<string name="sync_upgrade_v99">Astrid 2.7 führt nun Synchronisationen mit RTM im Hintergrund aus. du wirst zur \"preferences page\" geleitet, um festzulegen, wie oft dies geschehen soll. (Das wirkt sich ein wenig auf die Akkulaufzeit aus.)
</string>
<string name="sync_uptodate"> Sync: Aktualisiert!</string>
<skip/>
<string name="sync_pref_group">Synchronisations-Dienste</string>
<string name="sync_pref_group_actions">Aktionen</string>
<string name="sync_pref_group_options">Optionen</string>
<string name="p_sync_rtm">sync_rtm</string>
<string name="sync_rtm_title">Remember The Milk</string><!-- Proper noun - don't translate ? -->
<string name="sync_rtm_title">Remember The Milk</string><!-- Proper noun - don't translate -->
<string name="sync_rtm_desc">http://www.rememberthemilk.com</string>
<string name="sync_interval_title">Auto-Synchronisieren</string>
<string name="sync_interval_desc">Synchronisiert automatisch im eingestellten Interval, falls ausgewählt</string>
@ -264,17 +287,14 @@ Wenn du die neue Aufgabe nicht gleich nach der Fertigstellung der alten sehen wi
<string name="sync_quiet_desc">Verstecke das Sync-Fenster</string>
<string name="sync_bgwifi_title">Auto-Sync nur über WLAN</string>
<string name="sync_bgwifi_desc">Synchronisiert nur über WLAN, falls ausgewählt</string>
<string name="sync_error">Synchronisations-Fehler! Entschuldige die Störung! Fehler:</string>
<string name="sync_auth_request">
Bitte logge dich in dein %s Konto ein und authorisiere Astrid deine Daten zu lesen, um synchronisieren zu können.
\n\n
Nach der Fertigstellung, starte Astrid neu und komm hierher zurück.
</string>
<string name="sync_error">Sync-Fehler! Entschuldige die Störung! Fehler:</string>
<string name="sync_upgrade_v99">Astrid 2.7 führt nun die Synchronisation mit RTM im Hintergrund aus. Du wirst zur "preferences page" geleitet, um festzulegen, wie oft dies geschehen soll. (Das wirkt sich ein wenig auf die Akkulaufzeit aus.)</string>
<string name="sync_now">Synchronisiere jetzt!</string>
<string name="sync_forget">Persönliche Daten löschen</string>
<string name="sync_forget_confirm">Daten für ausgewähltes Dienste löschen?</string>
<string name="sync_no_synchronizers">Keine Synchronisiergerät eingestellt!</string>
<string name="sync_last_sync">Zuletzt synchronisiert: %s</string>
<string name="sync_uptodate">Sync: Akualisiert!</string>
<string name="sync_forget_confirm">Daten für ausgewählte Dienste löschen?</string>
<string name="sync_no_synchronizers">Keine Synchronisiergeräte eingestellt!</string>
<string name="sync_last_sync">Zuletzt synchronisiert: %s</string>
<string name="sync_last_auto_sync">Letzter Sync-Versuch: %s</string>
<string name="sync_date_never">Noch nie</string>
<string name="sync_result_title">%s Ergebnisse</string>
@ -287,19 +307,27 @@ Nach der Fertigstellung, starte Astrid neu und komm hierher zurück.
<string name="sync_progress_remote">Empfange Daten vom Server</string>
<string name="sync_progress_rxlist">Empfange Liste: %s</string>
<string name="sync_progress_repeating">Synchronisiere wiederholende Aufgabe</string>
<string name="sync_progress_localtx">Sende Aufgabe: %s</string>
<string name="sync_progress_repeating">Synchronisiere sich wiederholende Aufgabe</string>
<string name="sync_progress_localtx">Übertragung: %s</string>
<string name="sync_progress_localdel">Lokal gelöschte Aufgaben</string>
<string name="sync_progress_remotetx">Empfange Aufgabe: %s</string>
<string name="sync_progress_remotetx">Empfange: %s</string>
<string name="rtm_login_label">Bitte bei RTM anmelden...</string>
<string name="rtm_login_error">
Sorry, there was an error verifying your login. Please try again.
\n\n
Error Message:
</string>
<!-- Dialog Boxes -->
<skip />
<skip/>
<string name="loading">Lade...</string>
<string name="updating">Aktualisiere Liste...</string>
<string name="information_title">Information</string>
<string name="question_title">Frage</string>
<string name="notify_yes">Aufgabe anzeigen</string>
<string name="done_label">Erledigt</string>
<string name="notify_yes">Aufgabe ansehen</string>
<string name="notify_done">Schon erledigt!</string>
<string name="notify_snooze">Schlummern</string>
<string name="notify_no">Schließen</string>
@ -307,60 +335,54 @@ Nach der Fertigstellung, starte Astrid neu und komm hierher zurück.
<string name="delete_title">Löschen</string>
<string name="delete_this_task_title">Diese Aufgabe löschen?</string>
<string name="delete_this_tag_title">Diesen Tag von allen Aufgaben entfernen?</string>
<string name="delete_this_tag_title">Diesen Tag aus allen Aufgaben entfernen?</string>
<string name="stop_timer_title">Den Timer stoppen?</string>
<string name="quick_tips">
Ein paar Dinge über Astrid, die Du vielleicht noch nicht kennst:\n
\n
- Tippe einfach los, um eine Aufgabe zu erstellen!\n
- Drücke beim Bearbeiten einer Aufgabe auf \'Zurück\' um sie zu speichern\n
- Wähle die Aufgabe aus &amp; drücke 1-4 um schnell die Priorität zu ändern\n
- Wenn eine Aufgabe ein Frist hat, dann drücke lange auf sie um sie aufzuschieben\n
\n
Danke, dass Du Astrid benutzt!\n
</string>
<string name="locale_edit_alerts_title">Astrid Tag Alarm</string>
<string name="locale_edit_intro">Astrid sendet dir eine Erinnerung, solltest du unerledigte Aufgaben haben mit den folgenden Kriterien:</string>
<string name="locale_pick_tag">Tagged mit:</string>
<string name="quick_tips">Ein paar Dinge über Astrid, die du vielleicht noch nicht kennst:\n\n - Tippe einfach los, um eine Aufgabe zu erstellen!\n - Tippe beim Bearbeiten einer Aufgabe auf \'Zurück\' um sie zu speichern\n - Wähle eine Aufgabe aus &amp; drücke 1-4 um schnell die Priorität zu ändern\n - Wenn eine Aufgabe ein Frist hat, dann drücke lange drauf, um sie aufzuschieben\n \n Danke, dass du Astrid benutzt!\n</string>
<!-- Locale Plugin -->
<skip/>
<string name="locale_edit_alerts_title">Astrid Tag Alarm</string>
<string name="locale_edit_intro">Astrid sendet dir eine Erinnerung, solltest du unerledigte Aufgaben haben mit den folgenden Kriterien:</string>
<string name="locale_pick_tag">Tagged mit:</string>
<!-- Notification -->
<skip />
<skip/>
<string name="notif_definiteDueDate">Absolute Frist!</string>
<string name="notif_preferredDueDate">Zielfrist!</string>
<string name="notif_timerStarted">Arbeite an:</string>
<string name="notif_tagNotification">You have %d task(s) tagged %s!</string>
<!-- Error Messages -->
<skip />
<skip/>
<string name="error_opening">Konnte dieses Element nicht finden:</string>
<string name="error_saving">Konnte nicht speichern:</string>
<!-- Preference Keys. Strings starting with p_* should not be localized -->
<skip />
<skip/>
<string name="prefs_category_alerts">Erinnerungen</string>
<string name="prefs_quietStart_title">Ruhestunden beginnen</string>
<string name="prefs_quietStart_desc">Stunde, ab der die Ruhestunden beginnen (z.B. 22)</string>
<string name="prefs_quietStart_desc">Stunde, ab der die Ruhestunden beginnen (z. B. 22)</string>
<string name="prefs_quietEnd_title">Ruhestunden beenden</string>
<string name="prefs_quietEnd_desc">Stunde, bei der Astrid aufhört ruhig zu sein (z.B. 08)</string>
<string name="prefs_quietEnd_desc">Stunde, ab der Astrid aufhört ruhig zu sein (z. B. 08)</string>
<string name="p_notif_defaultRemind">notif_default_reminder</string>
<string name="prefs_defaultRemind_title">Standarderinnerungen</string>
<string name="prefs_defaultRemind_desc">Für neue Aufgaben, in Tagen (z.B. 7). Zum Deaktivieren leer lassen</string>
<string name="prefs_defaultRemind_desc">Für neue Aufgaben, in Tagen (z. B. 7). Zum Deaktivieren leer lassen</string>
<string name="prefs_annoy_title">Hartnäckiger Modus</string>
<string name="prefs_annoy_desc">Wenn eingestellt, musst Du die Erinnerung anschauen, um sie zu entfernen</string>
<string name="prefs_annoy_desc">Wenn eingestellt, musst du die Erinnerung anschauen, um sie zu entfernen</string>
<string name="prefs_notification_title">Erinnerungsklingelton</string>
<string name="prefs_notification_desc">Wähle einen Klingelton für Astrids Erinnerungen</string>
<string name="prefs_notificon_title">Erinnerungsicon</string>
<string name="prefs_notificon_desc">Wähle Astrids Icon für die Benachrichtigunsleiste</string>
<string name="prefs_notificon_title">Erinnerungssymbol</string>
<string name="prefs_notificon_desc">Wähle Astrids Symbol für die Benachrichtigunsleiste</string>
<string name="prefs_category_appearance">Erscheinungsbild</string>
@ -368,33 +390,41 @@ Danke, dass Du Astrid benutzt!\n
<string name="prefs_colorize_desc">Unterschiedliche Farben für unterschiedliche Prioritäten</string>
<string name="prefs_fontSize_title">Schriftart der Aufgabenliste</string>
<string name="prefs_fontSize_desc">Schriftart auf der Hauptlistenseite (z.B. 22)</string>
<string name="prefs_fontSize_desc">Schriftart auf der Hauptlistenseite (z. B. 22)</string>
<string name="prefs_category_other">Weiteres</string>
<string name="prefs_nagging_title">Nörgel-Nachrichten</string>
<string name="prefs_nagging_desc">Astrids Kommentare zeigen, wenn Du Erinnerungen anschaust oder Aufgaben aufschiebst?</string>
<string name="prefs_nagging_desc">Astrids Kommentare zeigen, wenn du Erinnerungen anschaust oder Aufgaben aufschiebst?</string>
<string name="prefs_deadlineTime_title">Standardfristen</string>
<string name="prefs_deadlineTime_desc"># der Tage ab heute zum Setzten neuer Fristen</string>
<string name="prefs_deadlineTime_desc"># der Tage ab heute zum Setzen neuer Fristen</string>
<string name="displayedFields_PrefScreen_Title">Angezeigte Felder</string>
<string name="displayedFields_PrefScreen_Desc">Wähle die in der Aufgabenliste zu zeigenden Felder aus</string>
<string name="prefs_titleVisible_title">Task Title</string>
<string name="prefs_titleVisible_desc">Task description</string>
<string name="prefs_deadlineVisible_title">Dates</string>
<string name="prefs_deadlineVisible_desc">Upcoming deadlines / completed date</string>
<string name="prefs_timeVisible_title">Times</string>
<string name="prefs_timeVisible_desc">Estimated &amp; Elapsed Times</string>
<string name="prefs_importanceVisible_title">Importance</string>
<string name="prefs_importanceVisible_desc">Task importance indicator</string>
<string name="prefs_titleVisible_title">Aufgabenname</string>
<string name="prefs_titleVisible_desc">Aufgabenbeschreibung</string>
<string name="prefs_deadlineVisible_title">Datum/Zeit</string>
<string name="prefs_deadlineVisible_desc">Kommende Fristen / erledigter Termin</string>
<string name="prefs_timeVisible_title">Zeiten</string>
<string name="prefs_timeVisible_desc">Geschätzte &amp; verstrichene Zeiten</string>
<string name="prefs_importanceVisible_title">Wichtigkeit</string>
<string name="prefs_importanceVisible_desc">Wichtigkeitsanzeiger</string>
<string name="prefs_tagsVisible_title">Tags</string>
<string name="prefs_tagsVisible_desc">Tags associated with this task</string>
<string name="prefs_repeatVisible_title">Repeats</string>
<string name="prefs_tagsVisible_desc">Tags, verknüpft mit dieser Aufgabe</string>
<string name="prefs_repeatVisible_title">Wiederholungen</string>
<string name="prefs_repeatVisible_desc">Task repeat information</string>
<string name="prefs_reminderVisible_title">Reminders</string>
<string name="prefs_reminderVisible_desc">Displayed if this task has reminders</string>
<string name="prefs_notesVisible_title">Notes</string>
<string name="prefs_notesVisible_desc">Notes associated with this task</string>
<string name="prefs_reminderVisible_title">Erinnerungen</string>
<string name="prefs_reminderVisible_desc">Anzeige, falls Aufgabenerinnerungen vorhanden</string>
<string name="prefs_notesVisible_title">Notizen</string>
<string name="prefs_notesVisible_desc">Notizen, verknüpft mit dieser Aufgabe</string>
<!-- Automatically filled in by Launchpad: -->
<string name="about_translators">Launchpad Contributions:
Friedrich https://launchpad.net/~fwulf
Jon Paris https://launchpad.net/~jon-todoroo
Tim Su https://launchpad.net/~tim-todoroo</string>
</resources>

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Translation Note:
Guidelines to those translating the resources
1) Quality over Quantity: the quality of the phrases is important not the number of phrases used in any given
languages.
2) Dynamic Equivalence not necessary literal translation but capture the idea and create the same desired effect
-->
<resources>
<!--
Goal: Maximize the chance that they will perform the task while minimizing the annoyance.-->
<string-array name="reminders">
<!-- reminders: Make these < 20 chars so the task name is displayed -->
<item>¡Hola! ¿Tienes un segundo?</item>
<item>¿Puedo verte por un segundo?</item>
<item>¿Tienes unos minutos?</item>
<item>¿Te has olvidado?</item>
<item>¡Perdón!</item>
<item>Cuando tengas un minuto:</item>
<item>En tú agenda:</item>
<item>¿Disponible por un momento?</item>
<item>¡Aquí Astrid!</item>
<item>¡Hola! ¿Puedo molestarte?</item>
<item>¿Un minuto de tu tiempo?</item>
<item>Es un gran día para</item>
</string-array>
<string-array name="reminder_responses">
<!-- reminder_responses: Astrid says... (user should answer yes or no) -->
<item>¡Tengo algo para ti!</item>
<item>¿Listo para poner esto en el pasado?</item>
<item>¿Porqué no terminas esto?</item>
<item>¿Qué tal? ¿Listo tigre?</item>
<item>¿Listo para hacer esto?</item>
<item>¿Puedes con esto?</item>
<item>¡Puedes ser feliz! ¡Solo termínalo!</item>
<item>¡Te prometo que te sentirás mejor si lo terminas!</item>
<item>¿Porqué no haces esto hoy?</item>
<item>¡Por favor termínalo, esto cansado de ello!</item>
<item>¿Puedes terminar esto? ¡Yes you can!</item>
<item>¿Vas a hacer esto?</item>
<item>¡Sientete mejor contigo mismo! ¡Vamos!</item>
<item>¡Estoy muy orgulloso de ti! ¡Termínalo!</item>
<item>¿Un descanso después de acabar esto?</item>
<item>¿Solo esta tarea? ¿Por favor?</item>
<item>¡Hora de acortar tu lista de tarea!</item>
</string-array>
<string-array name="postpone_nags">
<!-- Astrid's nagging when user clicks postpone -->
<item>¡Por favor, no me digas que eres un procrastinador!</item>
<item>¿Sentirse vago no hace sentirte viejo algunas veces?</item>
<item>¡En algún lugar, alguien está esperando que lo acabes!</item>
<item>Cuando dices posponer, realmente quieres decir \'estoy haciendo esto\', ¿verdad?</item>
<item>Esta es la última vez que lo pospones, ¿verdad?</item>
<item>Acábalo hoy, ¡no se lo diré a nadie!</item>
<item>Por que posponerlo cuando puedes uhm... ¡no posponerlo!</item>
<item>Lo acabarás en cualquier momento, ¿supongo?</item>
<item>¡Creo que eres genial! ¿Qué tal no posponerlo?</item>
<item>¿Podrás alcanzar tus metas si haces eso?</item>
<item>Posponer, posponer, posponer. ¡Cuando cambiarás!</item>
<item>¡Ya estoy harto de tus excusas! ¡Hazlo ya!</item>
<item>¿Esa no fue la excusa la última vez?</item>
<item>No te puedo ayudar a organizar tu vida si haces eso...</item>
</string-array>
<string-array name="notif_icon_entries">
<!-- Icons for notification tray -->
<item>Rosa</item>
<item>Aburrido</item>
<item>Astrid</item>
</string-array>
<string-array name="notif_icon_values">
<!-- Corresponding to the constants in Preferences.java (do not edit) -->
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="sync_interval_entries">
<!-- sync_interval_entries: Synchronization Intervals -->
<item>desactivado</item>
<item>cada media hora</item>
<item>cada hora</item>
<item>dos veces al día</item>
<item>diario</item>
<item>dos veces a la semana</item>
<item>semanalmente</item>
</string-array>
<string-array name="sync_interval_values">
<!-- sync_interval_values: interval in seconds for sync entries (do not edit) -->
<item>0</item>
<item>1800</item>
<item>3600</item>
<item>43200</item>
<item>86400</item>
<item>302400</item>
<item>604800</item>
</string-array>
</resources>

@ -0,0 +1,418 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
ASTRID: Android's Simple Task Recording Dashboard
Copyright (c) 2009 Tim Su
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- application -->
<string name="app_name">Astrid</string>
<!-- General String Constants -->
<skip/>
<!-- Importance Labels -->
<string name="importance_1">!!!!</string>
<string name="importance_2">!!!</string>
<string name="importance_3">!!</string>
<string name="importance_4">!</string>
<!-- Repeat Interval Labels -->
<string name="repeat_days">Día(s)</string>
<string name="repeat_weeks">Semana(s)</string>
<string name="repeat_months">Mes(es)</string>
<string name="repeat_hours">Hora(s)</string>
<!-- Plurals -->
<plurals name="Ntasks">
<!-- plurals: tasks -->
<item quantity="one">1 Tarea</item>
<item quantity="other">%d Tareas</item>
</plurals>
<plurals name="NactiveTasks">
<!-- plurals: active tasks vs total tasks -->
<item quantity="one">%d / %d Activo</item>
<item quantity="other">%d / %d Activo</item>
</plurals>
<plurals name="Nalarms">
<!-- plurals: alarms -->
<item quantity="one">Una alarma</item>
<item quantity="two">Dos alarmas</item>
<item quantity="other">%d alarmas</item>
</plurals>
<plurals name="Ntags">
<!-- plurals: tags -->
<item quantity="one">1 Etiqueta</item>
<item quantity="other">%d Etiquetas</item>
</plurals>
<!-- Time Constants -->
<!-- used for long due dates. c.f. Java's SimpleDateFormat -->
<string name="dateFormatter">d MMM</string>
<!-- used for alarms -->
<string name="alarmDateFormatter">HH:mm dd/M</string>
<!-- vertical labels are used in dialog boxes -->
<string name="daysVertical">D\ní\na\ns</string>
<string name="hoursVertical">H\no\nr\na\ns</string>
<plurals name="Ndays">
<!-- plurals: days -->
<item quantity="one">1 Día</item>
<item quantity="other">%d Días</item>
</plurals>
<plurals name="NdaysPreposition">
<!-- plurals: days (used after a preopsition, i.e. due in 5 days) -->
<item quantity="one">1 Día</item>
<item quantity="other">%d Días</item>
</plurals>
<plurals name="Nhours">
<!-- plurals: hours -->
<item quantity="one">1 Hora</item>
<item quantity="other">%d Horas</item>
</plurals>
<plurals name="Nminutes">
<!-- plurals: minutes -->
<item quantity="one">1 Minuto</item>
<item quantity="other">%d Minutos</item>
</plurals>
<plurals name="Nseconds">
<!-- plurals: seconds -->
<item quantity="one">1 Segundo</item>
<item quantity="other">%d Segundos</item>
</plurals>
<plurals name="NhoursShort">
<!-- plurals: hours (abbreviated) -->
<item quantity="one">1 Hr</item>
<item quantity="other">%d Hrs</item>
</plurals>
<plurals name="NminutesShort">
<!-- plurals: minutes (abbreviated) -->
<item quantity="one">1 Min</item>
<item quantity="other">%d Min</item>
</plurals>
<plurals name="NsecondsShort">
<!-- plurals: seconds (abbreviated) -->
<item quantity="one">1 Seg</item>
<item quantity="other">%d Seg</item>
</plurals>
<string name="ago_suffix">Hace</string><!-- appended after time
constants to show time in past -->
<!-- TaskList -->
<skip/>
<!-- title bar -->
<string name="taskList_titlePrefix">Astrid:</string>
<string name="taskList_titleTagPrefix">Etiquetado \"%s\":</string>
<string name="taskList_titleUntagged">Tareas sin etiquetar:</string>
<string name="taskList_hiddenSuffix">ocultado</string>
<string name="addtask_label">Nueva tarea</string>
<string name="missing_tag">¡No se puede encontrar la etiqueta!</string>
<!-- text in the actual list -->
<string name="taskList_hiddenPrefix">O</string><!-- prefix to show that a task is hidden -->
<string name="taskList_dueRelativeTime">Finaliza en</string><!-- i.e. Due in 4 days -->
<string name="taskList_dueAbsoluteDate">Finaliza el</string><!-- i.e. Due on Jan 2 -->
<string name="taskList_goalPrefix">Meta</string><!-- prefix to deadline -->
<string name="taskList_overdueBy">Con retraso de</string>
<string name="taskList_completedPrefix">Finalizado</string><!-- i.e. Finished 4 days ago -->
<string name="taskList_estimatedTimePrefix">Estimado:</string><!-- i.e. Estimated 4: hours -->
<string name="taskList_elapsedTimePrefix">Gastado:</string><!-- i.e. Spent 88 minutes on tax. -->
<string name="taskList_periodicReminderPrefix">Molestar cada</string><!-- time interval to set frequency to remind user -->
<string name="taskList_repeatPrefix">Repetir cada</string><!-- time interval to set repeated tasks-->
<string name="taskList_repeatsRemotely">Repetir en servidor remoto</string><!-- displayed when repeat is on remote server-->
<string name="taskList_alarmPrefix">Próxima alarma:</string>
<string name="taskList_tagsPrefix">Etiquetas:</string>
<string name="taskList_notesPrefix">Notas:</string>
<string name="taskList_createdPrefix">Creado:</string><!-- Created: MM/DD/YY -->
<string name="taskList_deleted">Borrado</string><!-- Deleted: MM/DD/YY -->
<!-- menu items -->
<string name="taskList_menu_insert">Nueva tarea</string><!-- New Tasks, Add or Insert -->
<string name="taskList_menu_tags">Etiquetas</string>
<string name="taskList_menu_filters">Ordenar/Filtros</string>
<string name="taskList_menu_syncshortcut">Sinc</string>
<string name="taskList_menu_more">Más</string>
<string name="taskList_menu_sync">Sincronización</string>
<string name="taskList_menu_settings">Preferencias</string>
<string name="taskList_menu_help">Ayuda (se abre en un navegador)</string>
<string name="taskList_menu_survey">¡Realizar la encuesta de Astrid!</string>
<string name="taskList_menu_tips">Consejos rápidos</string>
<string name="taskList_menu_cleanup">Limpiar antiguas tareas</string>
<string name="taskList_context_edit">Editar tarea</string>
<string name="taskList_context_delete">Borrar tarea</string>
<string name="taskList_context_startTimer">Comenzar tiempo</string>
<string name="taskList_context_stopTimer">Parar tiempo</string>
<string name="taskList_context_postpone">Posponer</string>
<!-- filter menu -->
<string name="taskList_filter_title">Ordenar/Filtros</string>
<string name="taskList_filter_hidden">Tareas ocultas/bloqueadas</string>
<string name="taskList_filter_done">Tareas completadas</string>
<string name="taskList_filter_tagged">Etiquetado \'%s\'</string>
<string name="taskList_sort_auto">Auto ordenar</string>
<string name="taskList_sort_alpha">Ordenar por nombre</string>
<string name="taskList_sort_duedate">Ordenar por fecha de finalización</string>
<string name="taskList_sort_reverse">Ordenar al revés</string>
<string name="taskList_nonag_reminder">Elegir una acción:</string>
<string name="taskList_postpone_count">Veces que lo has pospuesto: %d</string>
<string name="taskList_postpone_dialog">¿Posponer por cuanto?</string>
<string name="taskList_cleanup_dialog">"Borrar tareas completadas más antiguas que # días:"</string>
<!-- TaskEdit -->
<skip/>
<!-- title bar -->
<string name="taskEdit_titleGeneric">Astrid: editando tarea</string>
<string name="taskEdit_titlePrefix">Astrid: editando</string>
<string name="taskEdit_label">Astrid: nueva tarea</string>
<!-- tabs -->
<string name="taskEdit_tab_basic">Básico</string>
<string name="taskEdit_tab_dates">Fechas</string>
<string name="taskEdit_tab_alerts">Alertas</string>
<!-- labels -->
<string name="name_label">Resumen</string>
<string name="name_hint">Nombre de la tarea</string>
<string name="importance_label">¿Cuán impontante es?</string>
<string name="tags_label">Etiquetas:</string>
<string name="tag_hint">Nombre de la Etiqueta</string>
<string name="estimatedDuration_label">¿Cuanto tiempo llevará?</string>
<string name="elapsedDuration_label">Tiempo gastado en la tarea</string>
<string name="definiteDueDate_label">Fecha límite absoluta</string>
<string name="preferredDueDate_label">Final de la fecha límite</string>
<string name="addToCalendar_label">Añadir tarea al calendario</string>
<string name="showCalendar_label">Abrir el evento del calendario</string>
<string name="hiddenUntil_label">Ocultar hasta esta fecha</string>
<string name="repeat_label">Repetir cada</string>
<string name="repeat_value_unset">No poner repetición</string>
<string name="blockingOn_label">Ocultar hasta que la tarea este acabada</string>
<string name="notes_label">Notas</string>
<string name="notes_hint">Escribir notas a la tarea</string>
<string name="notification_label">Recordatorios periódicos</string>
<string name="notification_prefix">Cada</string>
<string name="flags_label">Notificarme...</string>
<string name="flag_before">Cuando la fecha límite se acerca</string>
<string name="flag_during">En la fecha límite</string>
<string name="flag_after">Después que pase la fecha límite</string>
<string name="flag_nonstop">Modo de alarma</string>
<string name="alerts_label">Recordatorios fijos</string>
<string name="add_alert">Añadir nuevo recordatorio</string>
<!-- dialog boxes -->
<string name="hour_minutes_dialog">Tiempo (horas : minutos)</string>
<string name="notification_dialog">Recordar cada</string>
<string name="repeat_picker_title">Repetir cada (0 para desactivar)</string>
<string name="repeat_help_dialog_title">Ayuda: repeticiones en Astrid</string>
<string name="repeat_help_dialog">Para usar repeticiones, pon al menos una fecha límite. Cuando termines esta tarea, la fecha límite avanzará automáticamente. \n\n Si no quieres ver la nueva tarea una vez que hayas completado la antigua, debes usar el campo "Ocultar hasta", el cual también avanzará automáticamente. \n</string>
<string name="repeat_help_hide">No mostrar la ayuda más</string>
<!-- buttons -->
<string name="save_label">Guardar</string>
<string name="discard_label">Descartar</string>
<string name="edit_label">Editar</string>
<string name="delete_label">Borrar</string>
<string name="blank_button_title">Pulse para fijar</string>
<string name="startTimer_label">Comenzar tiempo</string>
<string name="stopTimer_label">Parar tiempo</string>
<string name="taskEdit_menu_save">Guardar</string>
<string name="taskEdit_onTaskSave_Due">Tarea guardada: finaliza en %s</string>
<string name="taskEdit_onTaskSave_Overdue">Tarea guardada: finalizó hace %s</string>
<string name="taskEdit_onTaskSave_notDue">Tarea guardada</string>
<!-- TaskView -->
<skip/>
<string name="taskView_notifyTitle">Astrid dice...</string>
<!-- Tag List -->
<skip/>
<string name="tagList_titlePrefix">Astrid: vista de etiqueta:</string>
<string name="tagList_context_create">Crear tarea con etiqueta</string>
<string name="tagList_context_edit">Editar etiqueta</string>
<string name="tagList_context_delete">Borrar etiqueta</string>
<string name="tagList_context_showTag">Mostrar en página principal</string>
<string name="tagList_context_hideTag">Ocultar en página principal</string>
<string name="tagList_context_shortcut">Crear acceso directo</string>
<string name="tagList_shortcut_created">¡Acceso directo creado en tu página principal!</string>
<string name="tagList_shortcut_prefix">Etiqueta:</string>
<string name="tagList_untagged">[sin etiquetar]</string>
<string name="tagList_menu_sortAlpha">Ordenar A-Z</string>
<string name="tagList_menu_sortSize">Ordenar por tamaño</string>
<!-- Synchronization -->
<skip/>
<string name="sync_pref_group">Servicios de sincronización</string>
<string name="sync_pref_group_actions">Acciones</string>
<string name="sync_pref_group_options">Opciones</string>
<string name="sync_rtm_title">Remember The Milk</string><!-- Proper noun - don't translate -->
<string name="sync_rtm_desc">http://www.rememberthemilk.com</string>
<string name="sync_interval_title">Auto-sincronizar</string>
<string name="sync_interval_desc">Si está activado la sincronización se hará en el intervalo dado</string>
<string name="sync_button_title">Acceso directo al menú principal</string>
<string name="sync_button_desc">Mostrar \"Sincronizar\" en el menú de Astrid</string>
<string name="sync_quiet_title">Ocultar dialogos</string>
<string name="sync_quiet_desc">Ocultar los resultados de la sincronización</string>
<string name="sync_bgwifi_title">Autosincronizar solo con wifi</string>
<string name="sync_bgwifi_desc">Si está activado la auto sincronización se hará cuando la Wifi esté activa</string>
<string name="sync_error">¡Error de sincronización! ¡Siento los problemas! Error:</string>
<string name="sync_upgrade_v99">Astrid 2.7 sincroniza ahora con RTM en segundo plano. Deberás ir a la página de prefernecias para configurar cada cuanto quieras que esto pase (es un pequeño gasto en la batería).</string>
<string name="sync_now">¡Sincronizar ahora!</string>
<string name="sync_forget">Borrar datos personales</string>
<string name="sync_uptodate">Sinc: ¡al día!</string>
<string name="sync_forget_confirm">¿Borrar datos en los servicios seleccionados?</string>
<string name="sync_no_synchronizers">¡No hay programas de sincronización activados!</string>
<string name="sync_last_sync">Última sincronización con fecha: %s</string>
<string name="sync_last_auto_sync">Último intento de auto sincronización: %s</string>
<string name="sync_date_never">nunca</string>
<string name="sync_result_title">%s resultados</string>
<string name="sync_result_local">Resumen - Tareas en Astrid:</string>
<string name="sync_result_remote">Resumen - Servidor remoto:</string>
<string name="sync_result_created">Creado: %d</string>
<string name="sync_result_updated">Actualizado: %d</string>
<string name="sync_result_deleted">Borrado: %d</string>
<string name="sync_result_merged">Unido: %d</string>
<string name="sync_progress_remote">Leyendo datos remotos</string>
<string name="sync_progress_rxlist">Leyendo lista: %s</string>
<string name="sync_progress_repeating">Sincronizando de tareas repetidas</string>
<string name="sync_progress_localtx">Transmitiendo: %s</string>
<string name="sync_progress_localdel">Tareas borradas localmente</string>
<string name="sync_progress_remotetx">Recibiendo tarea: %s</string>
<string name="rtm_login_label">Por favor, conectate a RTM...</string>
<string name="rtm_login_error">Lo siento, ha habido un error al verificar tus datos. Por favor inténtelo de nuevo. \n\n Mensaje de error:</string>
<!-- Dialog Boxes -->
<skip/>
<string name="loading">Cargando...</string>
<string name="updating">Actualizando lista...</string>
<string name="information_title">Información</string>
<string name="question_title">Pregunta</string>
<string name="done_label">Listo</string>
<string name="notify_yes">Ver tarea</string>
<string name="notify_done">¡Ya acabada!</string>
<string name="notify_snooze">Snooze</string>
<string name="notify_no">Quitar</string>
<string name="notify_snooze_title">Hours/minutes to snooze?</string>
<string name="delete_title">Borrar</string>
<string name="delete_this_task_title">¿Borrar esta tarea?</string>
<string name="delete_this_tag_title">¿Borrar esta etiqueta de todas las tareas?</string>
<string name="stop_timer_title">¿Parar el temporizador?</string>
<string name="quick_tips">Algunas cosas que puede que no sepas sobre Astrid:\n\n- Para crear una tarea, ¡solo tienes que empezar a escribir!\n
- Mientras editas una tarea, pulsa \'volver\' para guardarla\n- Con una tarea seleccionada &amp; pulsa 1-4 para cambiar rapidamente de prioridad\n- Si una tarea tiene tiempo de finalización, dejala pulsada para posponerla\n\n¡Gracias por usar Astrid!\n</string>
<!-- Locale Plugin -->
<skip/>
<string name="locale_edit_alerts_title">Aviso de etiqueta de Astrid</string>
<string name="locale_edit_intro">Astrid mandará un recordatorio cuando tengas tareas sin acabar siguiendo el siguiente criterio:</string>
<string name="locale_pick_tag">Etiquetado con:</string>
<!-- Notification -->
<skip/>
<string name="notif_definiteDueDate">¡Fecha límite absoluta!</string>
<string name="notif_preferredDueDate">¡Fin de fecha límite!</string>
<string name="notif_timerStarted">Trabajando en:</string>
<string name="notif_tagNotification">¡Tienes %d tarea(s) etiquetada(s) %s!</string>
<!-- Error Messages -->
<skip/>
<string name="error_opening">No se puede encontrar este punto:</string>
<string name="error_saving">No puede guardar:</string>
<skip/>
<string name="prefs_category_alerts">Notificaciones</string>
<string name="prefs_quietStart_title">Comienzo del horario en silencio</string>
<string name="prefs_quietStart_desc">Hora de inicio en el cual Astrid estará en silencio (ej. 22)</string>
<string name="prefs_quietEnd_title">Fin del horario en silencio</string>
<string name="prefs_quietEnd_desc">Hora de finalización en el cual Astrid estará en silencio (ej. 08)</string>
<string name="prefs_defaultRemind_title">Recordatorios por defecto</string>
<string name="prefs_defaultRemind_desc">Para nuevas tareas, en días (ej. 7). Vacío para desactivar</string>
<string name="prefs_annoy_title">Modo persistente</string>
<string name="prefs_annoy_desc">Si está activo, el LED y las notificaciones deberán estar listas una vez a la vez</string>
<string name="prefs_notification_title">Tono de notificación</string>
<string name="prefs_notification_desc">Elige el tono para las alertas Astrid</string>
<string name="prefs_notificon_title">Iconos de notificación</string>
<string name="prefs_notificon_desc">Elige el icono para la barra de notificación de Astrid</string>
<string name="prefs_category_appearance">Apariencia</string>
<string name="prefs_colorize_title">Colorear la lista de tareas</string>
<string name="prefs_colorize_desc">Diferentes colores para diferentes prioridades</string>
<string name="prefs_fontSize_title">Fuente para la lista de tareas</string>
<string name="prefs_fontSize_desc">Tamaño de fuente en el listado principal (ej. 22)</string>
<string name="prefs_category_other">Otro</string>
<string name="prefs_nagging_title">Mensajes persistentes</string>
<string name="prefs_nagging_desc">¿Mostrar comentarios de Astrid al ver recordatorios y posponer tareas?</string>
<string name="prefs_deadlineTime_title">Fecha límite por defecto</string>
<string name="prefs_deadlineTime_desc"># días desde ahora para la fecha límite</string>
<string name="displayedFields_PrefScreen_Title">Campos mostrados</string>
<string name="displayedFields_PrefScreen_Desc">Selecciona los campos que se muestran en la lista de tareas</string>
<string name="prefs_titleVisible_title">Título de la tarea</string>
<string name="prefs_titleVisible_desc">Descripción de la tarea</string>
<string name="prefs_deadlineVisible_title">Fechas</string>
<string name="prefs_deadlineVisible_desc">Próximas fechas límites / fecha terminada</string>
<string name="prefs_timeVisible_title">Veces</string>
<string name="prefs_timeVisible_desc">Tiempos estimados y transcurridos</string>
<string name="prefs_importanceVisible_title">Importancia</string>
<string name="prefs_importanceVisible_desc">Indicador de importancia de la tarea</string>
<string name="prefs_tagsVisible_title">Etiquetas</string>
<string name="prefs_tagsVisible_desc">Etiquetas asociadas a esta tarea</string>
<string name="prefs_repeatVisible_title">Repeticiones</string>
<string name="prefs_repeatVisible_desc">Información de la tarea repetida</string>
<string name="prefs_reminderVisible_title">Recordatorios</string>
<string name="prefs_reminderVisible_desc">Mostrar si esta tarea tiene recordatorios</string>
<string name="prefs_notesVisible_title">Notas</string>
<string name="prefs_notesVisible_desc">Notas asociadas con esta tarea</string>
<!-- Automatically filled in by Launchpad: -->
<string name="about_translators">Launchpad Contributions:
Pablo Ledesma https://launchpad.net/~venraiker
Tim Su https://launchpad.net/~tim-todoroo</string>
</resources>

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Translation Note:
Guidelines to those translating the resources
1) Quality over Quantity: the quality of the phrases is important not the number of phrases used in any given
languages.
2) Dynamic Equivalence not necessary literal translation but capture the idea and create the same desired effect
-->
<resources>
<!--
Goal: Maximize the chance that they will perform the task while minimizing the annoyance.-->
<string-array name="reminders">
<!-- reminders: Make these < 20 chars so the task name is displayed -->
<item>やぁみんな! ちょっといいかな?</item>
<item>ちょっと見ていい?</item>
<item>ちょっと時間あるかな?</item>
<item>忘れちゃった?</item>
<item>ごめんよ!</item>
<item>ちょっと時間があるとき:</item>
<item>予定上:</item>
<item>ちょっとヒマある?</item>
<item>Astridだよ!</item>
<item>やぁ! バグってる?</item>
<item>1分ぐらいいいかな?</item>
<item>すばらしい日にするために</item>
</string-array>
<string-array name="reminder_responses">
<!-- reminder_responses: Astrid says... (user should answer yes or no) -->
<item>あなたのためにしましたよ!</item>
<item>これを過去のものにして良い?</item>
<item>なんでこれしないの?</item>
<item>どう? いけそう?</item>
<item>これする準備できてる?</item>
<item>これ処理できる?</item>
<item>幸せになれるよ! これが終われば!</item>
<item>これさえ終われば、気分爽快になることを約束します!</item>
<item>今日はしないの?</item>
<item>これやっちゃおうよ、やる気萎えちゃうよ!</item>
<item>これやっちゃえる? そう、あなたならできる!</item>
<item>ずっとこれしないつもり?</item>
<item>自分でしたら気持ちいいよ! さぁやろう!</item>
<item>あなたが自慢だよ。さぁそれやっちゃおう!</item>
<item>これやっちゃってお茶しない?</item>
<item>あとひとつだけ? じゃあお願いできる?</item>
<item>ToDoリストを処理する時間ですよ</item>
</string-array>
<string-array name="postpone_nags">
<!-- Astrid's nagging when user clicks postpone -->
<item>あなたがずぼらな人でないと教えてください!</item>
<item>ときどき時間がゆっくりになるんですか?</item>
<item>どこかで誰かがこれを終えるのを待ってますよ!</item>
<item>あなたが延期決めるとき、本当に「一所懸命やりました」と言えますか?</item>
<item>これを後回しにするのはこれで最後だよね?</item>
<item>今日はこれやろう! もう言わないから。</item>
<item>あなたが後回しにして良いと思うなら・・・って、できないじゃん!</item>
<item>あなたならそのうち出来る、と思うけど?</item>
<item>あんたホントにすごいよ! どうやって延期を回避したの?</item>
<item>もしそうするなら、あなたは目的を達成できるでしょう</item>
<item>後回し、後回し、後回し。そんなあなたを変えよう!</item>
<item>言い訳はもうたくさん! すぐやっちゃおう!</item>
<item>あなたこの前その言い訳しなかった?</item>
<item>もしあなたがそうするなら、あなたの人生の備えを手伝うことはできません・・・</item>
</string-array>
<string-array name="notif_icon_entries">
<!-- Icons for notification tray -->
<item>ピンク</item>
<item>退屈な</item>
<item>Astrid</item>
</string-array>
<string-array name="notif_icon_values">
<!-- Corresponding to the constants in Preferences.java (do not edit) -->
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="sync_interval_entries">
<!-- sync_interval_entries: Synchronization Intervals -->
<item>無効</item>
<item>時間に2回</item>
<item>1時間毎</item>
<item>日に2回</item>
<item>毎日</item>
<item>週に2回</item>
<item>毎週</item>
</string-array>
<string-array name="sync_interval_values">
<!-- sync_interval_values: interval in seconds for sync entries (do not edit) -->
<item>0</item>
<item>1800</item>
<item>3600</item>
<item>43200</item>
<item>86400</item>
<item>302400</item>
<item>604800</item>
</string-array>
</resources>

@ -0,0 +1,422 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
ASTRID: Android's Simple Task Recording Dashboard
Copyright (c) 2009 Tim Su
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- application -->
<string name="app_name">Astrid</string>
<!-- General String Constants -->
<skip/>
<!-- Importance Labels -->
<string name="importance_1">!!!!</string>
<string name="importance_2">!!!</string>
<string name="importance_3">!!</string>
<string name="importance_4">!</string>
<!-- Repeat Interval Labels -->
<string name="repeat_days">毎日</string>
<string name="repeat_weeks">毎週</string>
<string name="repeat_months">毎月</string>
<string name="repeat_hours">毎時</string>
<!-- Plurals -->
<plurals name="Ntasks">
<!-- plurals: tasks -->
<item quantity="one">1 タスク</item>
<item quantity="other">%d タスク</item>
</plurals>
<plurals name="NactiveTasks">
<!-- plurals: active tasks vs total tasks -->
<item quantity="one">%d / %d 有効</item>
<item quantity="other">%d / %d 有効</item>
</plurals>
<plurals name="Nalarms">
<!-- plurals: alarms -->
<item quantity="one">1 アラーム</item>
<item quantity="two">2 アラーム</item>
<item quantity="other">%d アラーム</item>
</plurals>
<plurals name="Ntags">
<!-- plurals: tags -->
<item quantity="one">1 タグ</item>
<item quantity="other">%d タグ</item>
</plurals>
<!-- Time Constants -->
<!-- used for long due dates. c.f. Java's SimpleDateFormat -->
<string name="dateFormatter">MMM d</string>
<!-- used for alarms -->
<string name="alarmDateFormatter">M/dd HH:mm</string>
<!-- vertical labels are used in dialog boxes -->
<string name="daysVertical"></string>
<string name="hoursVertical">時\n間</string>
<plurals name="Ndays">
<!-- plurals: days -->
<item quantity="one">1 日</item>
<item quantity="other">%d 日</item>
</plurals>
<plurals name="NdaysPreposition">
<!-- plurals: days (used after a preopsition, i.e. due in 5 days) -->
<item quantity="one">1 日</item>
<item quantity="other">%d 日</item>
</plurals>
<plurals name="Nhours">
<!-- plurals: hours -->
<item quantity="one">1 時間</item>
<item quantity="other">%d 時間</item>
</plurals>
<plurals name="Nminutes">
<!-- plurals: minutes -->
<item quantity="one">1 分</item>
<item quantity="other">%d 分</item>
</plurals>
<plurals name="Nseconds">
<!-- plurals: seconds -->
<item quantity="one">1 秒</item>
<item quantity="other">%d 秒</item>
</plurals>
<plurals name="NhoursShort">
<!-- plurals: hours (abbreviated) -->
<item quantity="one">1 時間</item>
<item quantity="other">%d 時間</item>
</plurals>
<plurals name="NminutesShort">
<!-- plurals: minutes (abbreviated) -->
<item quantity="one">1 分</item>
<item quantity="other">%d 分</item>
</plurals>
<plurals name="NsecondsShort">
<!-- plurals: seconds (abbreviated) -->
<item quantity="one">1 秒</item>
<item quantity="other">%d 秒</item>
</plurals>
<string name="ago_suffix"></string><!-- appended after time
constants to show time in past -->
<!-- TaskList -->
<skip/>
<!-- title bar -->
<string name="taskList_titlePrefix">Astrid:</string>
<string name="taskList_titleTagPrefix">タグ \"%s\":</string>
<string name="taskList_titleUntagged">タグが付いてないタスク:</string>
<string name="taskList_hiddenSuffix">非表示</string>
<string name="addtask_label">新規タスク</string>
<string name="missing_tag">タグが見つかりませんでした!</string>
<!-- text in the actual list -->
<string name="taskList_hiddenPrefix">H</string><!-- prefix to show that a task is hidden -->
<string name="taskList_dueRelativeTime">表示まで</string><!-- i.e. Due in 4 days -->
<string name="taskList_dueAbsoluteDate">期日まで</string><!-- i.e. Due on Jan 2 -->
<string name="taskList_goalPrefix">目標</string><!-- prefix to deadline -->
<string name="taskList_overdueBy">遅延</string>
<string name="taskList_completedPrefix">完了</string><!-- i.e. Finished 4 days ago -->
<string name="taskList_estimatedTimePrefix">概要:</string><!-- i.e. Estimated 4: hours -->
<string name="taskList_elapsedTimePrefix">経過:</string><!-- i.e. Spent 88 minutes on tax. -->
<string name="taskList_periodicReminderPrefix">通知周期</string><!-- time interval to set frequency to remind user -->
<string name="taskList_repeatPrefix">繰り返し周期</string><!-- time interval to set repeated tasks-->
<string name="taskList_repeatsRemotely">サーバーでの周期</string><!-- displayed when repeat is on remote server-->
<string name="taskList_alarmPrefix">次のアラーム:</string>
<string name="taskList_tagsPrefix">タグ:</string>
<string name="taskList_notesPrefix">メモ:</string>
<string name="taskList_createdPrefix">作成日時:</string><!-- Created: MM/DD/YY -->
<string name="taskList_deleted">削除済み</string><!-- Deleted: MM/DD/YY -->
<!-- menu items -->
<string name="taskList_menu_insert">新規タスク</string><!-- New Tasks, Add or Insert -->
<string name="taskList_menu_tags">タグ</string>
<string name="taskList_menu_filters">ソート/フィルター</string>
<string name="taskList_menu_syncshortcut">同期する</string>
<string name="taskList_menu_more">さらに</string>
<string name="taskList_menu_sync">同期</string>
<string name="taskList_menu_settings">設定</string>
<string name="taskList_menu_help">ヘルプ(ブラウザで開く)</string>
<string name="taskList_menu_survey">Astridによる調査を使う!</string>
<string name="taskList_menu_tips">Quick Tips</string>
<string name="taskList_menu_cleanup">古いタスクを整理する</string>
<string name="taskList_context_edit">タスクを編集</string>
<string name="taskList_context_delete">タスクを削除</string>
<string name="taskList_context_startTimer">タイマーを開始</string>
<string name="taskList_context_stopTimer">タイマーを停止</string>
<string name="taskList_context_postpone">延期する</string>
<!-- filter menu -->
<string name="taskList_filter_title">ソート/フィルター</string>
<string name="taskList_filter_hidden">非表示/処理待ちタスク</string>
<string name="taskList_filter_done">完了したタスク</string>
<string name="taskList_filter_tagged">タグ \'%s\'</string>
<string name="taskList_sort_auto">自動で並び替える</string>
<string name="taskList_sort_alpha">名前順</string>
<string name="taskList_sort_duedate">残り時間順</string>
<string name="taskList_sort_reverse">逆順</string>
<string name="taskList_nonag_reminder">行動を選択:</string>
<string name="taskList_postpone_count">延期した時間: %d</string>
<string name="taskList_postpone_dialog">どの程度の期間延期しますか?</string>
<string name="taskList_cleanup_dialog">"完了してから # 日以上経ったタスクを削除:"</string>
<!-- TaskEdit -->
<skip/>
<!-- title bar -->
<string name="taskEdit_titleGeneric">Astrid: タスク編集中</string>
<string name="taskEdit_titlePrefix">Astrid: 編集中</string>
<string name="taskEdit_label">Astrid: 新規タスク</string>
<!-- tabs -->
<string name="taskEdit_tab_basic">基本</string>
<string name="taskEdit_tab_dates">日時</string>
<string name="taskEdit_tab_alerts">アラート</string>
<!-- labels -->
<string name="name_label">要約</string>
<string name="name_hint">要約</string>
<string name="importance_label">どれくらい重要?</string>
<string name="tags_label">タグ:</string>
<string name="tag_hint">タグ</string>
<string name="estimatedDuration_label">所要時間は?</string>
<string name="elapsedDuration_label">既にタスクに費やした時間</string>
<string name="definiteDueDate_label">期日</string>
<string name="preferredDueDate_label">目標日</string>
<string name="addToCalendar_label">カレンダーにタスクを追加</string>
<string name="showCalendar_label">カレンダーのイベントを開く</string>
<string name="hiddenUntil_label">この日時まで隠す</string>
<string name="repeat_label">繰り返し周期</string>
<string name="repeat_value_unset">繰り返しはしない</string>
<string name="blockingOn_label">このタスクが処理されるまで隠す</string>
<string name="notes_label">メモ</string>
<string name="notes_hint">メモをここに入力します...</string>
<string name="notification_label">周期的なリマインダー</string>
<string name="notification_prefix">周期</string>
<string name="flags_label">以下の場合通知する...</string>
<string name="flag_before">期限が近づいたとき</string>
<string name="flag_during">期限になったとき</string>
<string name="flag_after">期限を過ぎた後</string>
<string name="flag_nonstop">アラームクロックモード</string>
<string name="alerts_label">リマインダーを修正しました</string>
<string name="add_alert">リマインダーの追加</string>
<!-- dialog boxes -->
<string name="hour_minutes_dialog">時間 (時:分)</string>
<string name="notification_dialog">リマインダーの周期</string>
<string name="repeat_picker_title">繰り返し周期 (0で無効化)</string>
<string name="repeat_help_dialog_title">ヘルプ: Astridの繰り返しについて</string>
<string name="repeat_help_dialog">繰り返しを使うために、上記の期限のうちの少なくとも1つを決めてください。あなたがこのタスクを完了したタイミングで、期限は自動的に繰り越されます。\n\nもしあなたが現在のタスクを消化し終えるまで次回のタスクを見たくないならば、「〜まで隠す」の項目を使って自動的に繰り越すべきです。\n</string>
<string name="repeat_help_hide">もうヘルプを表示しない</string>
<!-- buttons -->
<string name="save_label">保存</string>
<string name="discard_label">破棄</string>
<string name="edit_label">編集</string>
<string name="delete_label">削除</string>
<string name="blank_button_title">セットする</string>
<string name="startTimer_label">タイマーを開始</string>
<string name="stopTimer_label">タイマーを停止</string>
<string name="taskEdit_menu_save">保存</string>
<string name="taskEdit_onTaskSave_Due">タスクは保存されました: 残り %s</string>
<string name="taskEdit_onTaskSave_Overdue">タスクは保存されました: 期限は %s 前です</string>
<string name="taskEdit_onTaskSave_notDue">タスクは保存されました</string>
<!-- TaskView -->
<skip/>
<string name="taskView_notifyTitle">Astridより...</string>
<!-- Tag List -->
<skip/>
<string name="tagList_titlePrefix">Astrid: タグビュー:</string>
<string name="tagList_context_create">タグを使ってタスク生成</string>
<string name="tagList_context_edit">タグ編集</string>
<string name="tagList_context_delete">タグ削除</string>
<string name="tagList_context_showTag">ホームページを表示</string>
<string name="tagList_context_hideTag">ホームページを隠す</string>
<string name="tagList_context_shortcut">ショートカットを作る</string>
<string name="tagList_shortcut_created">Home画面にショートカットを作りました</string>
<string name="tagList_shortcut_prefix">タグ:</string>
<string name="tagList_untagged">[タグは付いていません]</string>
<string name="tagList_menu_sortAlpha">A-Z順(文字順)</string>
<string name="tagList_menu_sortSize">サイズ順</string>
<!-- Synchronization -->
<skip/>
<string name="sync_pref_group">同期サービス</string>
<string name="sync_pref_group_actions">アクション</string>
<string name="sync_pref_group_options">オプション</string>
<string name="sync_rtm_title">Remember The Milk</string><!-- Proper noun - don't translate -->
<string name="sync_rtm_desc">http://www.rememberthemilk.com</string>
<string name="sync_interval_title">自動的に同期する</string>
<string name="sync_interval_desc">セットすると、自動的に間隔を置いて同期されます</string>
<string name="sync_button_title">メインメニューのショートカット</string>
<string name="sync_button_desc">Astridのメニューの中に\"Synchronize\"を表示</string>
<string name="sync_quiet_title">ダイアログを表示しない</string>
<string name="sync_quiet_desc">同期結果ダイアログを表示しない</string>
<string name="sync_bgwifi_title">Wifiの場合のみ自動同期する</string>
<string name="sync_bgwifi_desc">セットすると、Wifiが使えるときだけ自動同期します</string>
<string name="sync_error">同期エラー発生! ご迷惑をおかけします! エラー内容:</string>
<string name="sync_upgrade_v99">Astrid 2.7はバックグラウンドにてRTMを使った同期処理を行います。どのくらいの頻度で起動するか設定することにより、好きなページに誘導されるでしょう。(これは少しバッテリーを消費します)</string>
<string name="sync_now">同期中!</string>
<string name="sync_forget">個人情報を削除</string>
<string name="sync_uptodate">同期: アップデート中!</string>
<string name="sync_forget_confirm">選択されたサービスのデータをクリアしますか?</string>
<string name="sync_no_synchronizers">同期機能が有効になっていません!</string>
<string name="sync_last_sync">最後に同期した日時: %s</string>
<string name="sync_last_auto_sync">最後に自動同期を試みた日時: %s</string>
<string name="sync_date_never">しない</string>
<string name="sync_result_title">%s 結果</string>
<string name="sync_result_local">要約 - Astridのタスク:</string>
<string name="sync_result_remote">要約 - サーバー:</string>
<string name="sync_result_created">作成日時: %d</string>
<string name="sync_result_updated">更新日時: %d</string>
<string name="sync_result_deleted">削除した日時: %d</string>
<string name="sync_result_merged">まとめた日時: %d</string>
<string name="sync_progress_remote">サーバのデータを読み込み中</string>
<string name="sync_progress_rxlist">読み込み中のリスト: %s</string>
<string name="sync_progress_repeating">繰り返すタスクを同期しています</string>
<string name="sync_progress_localtx">転送中: %s</string>
<string name="sync_progress_localdel">端末内で削除されたタスク</string>
<string name="sync_progress_remotetx">受信中: %s</string>
<string name="rtm_login_label">RTMにログインしてください...</string>
<string name="rtm_login_error">
Sorry, there was an error verifying your login. Please try again.
\n\n
Error Message:
</string>
<!-- Dialog Boxes -->
<skip/>
<string name="loading">読み込み中...</string>
<string name="updating">リスト更新中...</string>
<string name="information_title">インフォメーション</string>
<string name="question_title">質問</string>
<string name="done_label">完了</string>
<string name="notify_yes">タスク確認</string>
<string name="notify_done">既に完了しています!</string>
<string name="notify_snooze">スヌーズ</string>
<string name="notify_no">終了</string>
<string name="notify_snooze_title">スヌーズのための時/分は?</string>
<string name="delete_title">削除</string>
<string name="delete_this_task_title">このタスクを削除しますか?</string>
<string name="delete_this_tag_title">すべてのタスクからこのタグを削除しますか?</string>
<string name="stop_timer_title">タイマーを停止しますか?</string>
<string name="quick_tips">Astridについて知らないかもしれないいくつかのこと\n\nタスクをつくるためには、ちょっと入力するだけです\nタスクを編集している時は、戻るボタンを押すことで保存できます。\n素早く優先順位を変えるには、1から4のキーを押してタスクを選択してください。\nタスクに期限があるならば、それを延長するために、長押ししてください。\n\nAstridを利用してくれてありがとう\n</string>
<!-- Locale Plugin -->
<skip/>
<string name="locale_edit_alerts_title">Astridからのタグアラート</string>
<string name="locale_edit_intro">Astridは次の基準に従い、未完了タスクがある場合にリマインダーを送ります:</string>
<string name="locale_pick_tag">関連タグ:</string>
<!-- Notification -->
<skip/>
<string name="notif_definiteDueDate">期日!</string>
<string name="notif_preferredDueDate">目標日!</string>
<string name="notif_timerStarted">処理中:</string>
<string name="notif_tagNotification">You have %d task(s) tagged %s!</string>
<!-- Error Messages -->
<skip/>
<string name="error_opening">この項目は見つかりませんでした:</string>
<string name="error_saving">保存できませんでした:</string>
<skip/>
<string name="prefs_category_alerts">通知</string>
<string name="prefs_quietStart_title">消音時間の始まり</string>
<string name="prefs_quietStart_desc">Astridが消音すべき時間の始まり (例:22時)</string>
<string name="prefs_quietEnd_title">消音時間の終わり</string>
<string name="prefs_quietEnd_desc">Astridが消音すべき時間の終わり (例:08時)</string>
<string name="prefs_defaultRemind_title">標準リマインダー</string>
<string name="prefs_defaultRemind_desc">新規タスクについての残日数。空白にすると無効</string>
<string name="prefs_annoy_title">継続モード</string>
<string name="prefs_annoy_desc">チェックしたなら、それをクリアする前にリマインダーとLEDを確認する必要があります。</string>
<string name="prefs_notification_title">通知音</string>
<string name="prefs_notification_desc">Astridのアラート音を選択</string>
<string name="prefs_notificon_title">通知アイコン</string>
<string name="prefs_notificon_desc">Astridの通知用アイコンを選択</string>
<string name="prefs_category_appearance">外観</string>
<string name="prefs_colorize_title">タスクリストの色分け</string>
<string name="prefs_colorize_desc">優先順位毎に色分け</string>
<string name="prefs_fontSize_title">タスクリストのフォント</string>
<string name="prefs_fontSize_desc">メイン画面のフォントサイズ (例:22)</string>
<string name="prefs_category_other">その他</string>
<string name="prefs_nagging_title">しつこくメッセージを表示</string>
<string name="prefs_nagging_desc">リマインダーと延期タスクを確認するとき、Astridの解説を表示しますか?</string>
<string name="prefs_deadlineTime_title">期限の初期値</string>
<string name="prefs_deadlineTime_desc">新しい期限を設定するための現在からの日数 #</string>
<string name="displayedFields_PrefScreen_Title">表示する項目</string>
<string name="displayedFields_PrefScreen_Desc">タスクリストの内表示する項目を選択</string>
<string name="prefs_titleVisible_title">タスク名</string>
<string name="prefs_titleVisible_desc">タスクの説明</string>
<string name="prefs_deadlineVisible_title">日時</string>
<string name="prefs_deadlineVisible_desc">次の期限 / 完了日</string>
<string name="prefs_timeVisible_title">時間</string>
<string name="prefs_timeVisible_desc">予定時間と経過時間</string>
<string name="prefs_importanceVisible_title">重要性</string>
<string name="prefs_importanceVisible_desc">タスクの重要度</string>
<string name="prefs_tagsVisible_title">タグ</string>
<string name="prefs_tagsVisible_desc">このタスクの関連タグ</string>
<string name="prefs_repeatVisible_title">繰り返し</string>
<string name="prefs_repeatVisible_desc">タスクの繰り返し設定</string>
<string name="prefs_reminderVisible_title">リマインダー</string>
<string name="prefs_reminderVisible_desc">このタスクにリマインダーが設定されていれば表示される</string>
<string name="prefs_notesVisible_title">メモ</string>
<string name="prefs_notesVisible_desc">このタスクの関連メモ</string>
<!-- Automatically filled in by Launchpad: -->
<string name="about_translators">Launchpad Contributions:
Jon Paris https://launchpad.net/~jon-todoroo
Tim Su https://launchpad.net/~tim-todoroo
maimuzo https://launchpad.net/~maimuzo</string>
</resources>

@ -31,23 +31,13 @@ import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.HttpVersion;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.BasicHttpProcessor;
import org.apache.http.protocol.HTTP;
import org.apache.http.protocol.RequestConnControl;
import org.apache.http.protocol.RequestContent;
import org.apache.http.protocol.RequestExpectContinue;
import org.apache.http.protocol.RequestTargetHost;
import org.apache.http.protocol.RequestUserAgent;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@ -84,13 +74,13 @@ public class Invoker {
builder = aBuilder;
}
public static final String REST_SERVICE_URL_POSTFIX = "/services/rest/";
private static final String ENCODING = "UTF-8";
public static final String ENCODING = "UTF-8";
private static final String API_SIG_PARAM = "api_sig";
public static final String API_SIG_PARAM = "api_sig";
private static final long INVOCATION_INTERVAL = 400;
public static final long INVOCATION_INTERVAL = 400;
private static final String USER_AGENT = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)";
private long lastInvocation;
@ -102,10 +92,6 @@ public class Invoker {
private BasicHeader basicHeader;
private BasicHttpParams globalHttpParams;
private BasicHttpProcessor httpProcessor;
private HttpClient httpClient;
public Invoker(String serverHostName, int serverPortNumber,
@ -113,23 +99,8 @@ public class Invoker {
throws ServiceInternalException {
this.serviceRelativeUri = serviceRelativeUri;
new HttpHost(serverHostName, serverPortNumber);
globalHttpParams = new BasicHttpParams();
HttpProtocolParams.setVersion(globalHttpParams, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(globalHttpParams, ENCODING);
HttpProtocolParams.setUseExpectContinue(globalHttpParams, true);
basicHeader = new BasicHeader(HTTP.CHARSET_PARAM, ENCODING);
httpProcessor = new BasicHttpProcessor();
// Required protocol interceptors
httpProcessor.addInterceptor(new RequestContent());
httpProcessor.addInterceptor(new RequestTargetHost());
// Recommended protocol interceptors
httpProcessor.addInterceptor(new RequestConnControl());
httpProcessor.addInterceptor(new RequestUserAgent());
httpProcessor.addInterceptor(new RequestExpectContinue());
httpClient = new DefaultHttpClient();
lastInvocation = System.currentTimeMillis();
@ -190,6 +161,7 @@ public class Invoker {
final HttpGet request = new HttpGet("http://"
+ ServiceImpl.SERVER_HOST_NAME + requestUri.toString());
request.setHeader(basicHeader);
request.addHeader("User-Agent", USER_AGENT);
final String methodUri = request.getRequestLine().getUri();
Element result;
@ -269,9 +241,9 @@ public class Invoker {
}
}
} catch (IOException e) {
throw new ServiceInternalException("Connection error", e);
throw new ServiceInternalException("IOException: " + e.getMessage(), e);
} catch (SAXException e) {
throw new ServiceInternalException("XML Parse Exception", e);
throw new ServiceInternalException("XML Parse: " + e.getMessage(), e);
} finally {
httpClient.getConnectionManager().closeExpiredConnections();
}

@ -23,7 +23,7 @@ package com.mdt.rtm;
/**
* Introduced in order to get rid of the {@link RuntimeException}, and have only one time of regular exception to cope with, from the API end-user
* point of view.
*
*
* @author Edouard Mercier
* @since 2008.04.23
*/
@ -41,7 +41,7 @@ public class ServiceInternalException
public ServiceInternalException(String message, Exception exception)
{
super(-1, "Service internal exception: " + message);
super(-1, message);
this.enclosedException = exception;
}

@ -109,6 +109,12 @@ public final class LocaleEditAlerts extends Activity {
* Private helper method to persist the Toast message in the return {@code Intent}.
*/
private void updateResult() {
// no tags, so it's not possible to save
if(tagNames.length == 0) {
setResult(com.twofortyfouram.Intent.RESULT_REMOVE);
return;
}
final int index = ((Spinner) findViewById(R.id.spinner)).getSelectedItemPosition();
final String tagName = tagNames[index];
final TagModelForView tag = tags.get(index);

@ -119,7 +119,7 @@ public class SyncLoginActivity extends Activity {
@Override
public void run() {
final String result = callback.verifyLogin(handler);
TaskListSubActivity.syncPreferencesOpened = true;
if(result == null) {
TaskList.synchronizeNow = true;
finish();

@ -219,32 +219,34 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
if(model.getCalendarUri() != null)
addToCalendar.setText(r.getString(R.string.showCalendar_label));
// tags
tags = tagController.getAllTags();
if(model.getTaskIdentifier() != null) {
taskTags = tagController.getTaskTags(model.getTaskIdentifier());
if(taskTags.size() > 0) {
Map<TagIdentifier, TagModelForView> tagsMap =
new HashMap<TagIdentifier, TagModelForView>();
for(TagModelForView tag : tags)
tagsMap.put(tag.getTagIdentifier(), tag);
for(TagIdentifier id : taskTags) {
if(!tagsMap.containsKey(id))
continue;
TagModelForView tag = tagsMap.get(id);
addTag(tag.getName());
// tags (only configure if not already set)
if(tagsContainer.getChildCount() == 0) {
tags = tagController.getAllTags();
if(model.getTaskIdentifier() != null) {
taskTags = tagController.getTaskTags(model.getTaskIdentifier());
if(taskTags.size() > 0) {
Map<TagIdentifier, TagModelForView> tagsMap =
new HashMap<TagIdentifier, TagModelForView>();
for(TagModelForView tag : tags)
tagsMap.put(tag.getTagIdentifier(), tag);
for(TagIdentifier id : taskTags) {
if(!tagsMap.containsKey(id))
continue;
TagModelForView tag = tagsMap.get(id);
addTag(tag.getName());
}
}
}
} else {
taskTags = new LinkedList<TagIdentifier>();
} else {
taskTags = new LinkedList<TagIdentifier>();
Bundle extras = getIntent().getExtras();
if(extras != null && extras.containsKey(TAG_NAME_TOKEN)) {
addTag(extras.getString(TAG_NAME_TOKEN));
Bundle extras = getIntent().getExtras();
if(extras != null && extras.containsKey(TAG_NAME_TOKEN)) {
addTag(extras.getString(TAG_NAME_TOKEN));
}
}
addTag("");
}
addTag("");
// alerts
if(model.getTaskIdentifier() != null) {
@ -697,7 +699,6 @@ public class TaskEdit extends TaskModificationTabbedActivity<TaskModelForEdit> {
@Override
protected void onSaveInstanceState(Bundle outState) {
save();
super.onSaveInstanceState(outState);
// save the tag name token for when we rotate the screen

@ -42,6 +42,7 @@ import com.timsu.astrid.sync.SynchronizationService;
import com.timsu.astrid.sync.Synchronizer;
import com.timsu.astrid.utilities.Constants;
import com.timsu.astrid.utilities.StartupReceiver;
import com.timsu.astrid.utilities.AstridUtilities.AstridUncaughtExceptionHandler;
/**
* TaskList is the main launched activity for Astrid. It uses a ViewFlipper
@ -104,6 +105,9 @@ public class TaskList extends Activity {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// set uncaught exception handler
Thread.setDefaultUncaughtExceptionHandler(new AstridUncaughtExceptionHandler());
// open controllers & perform application startup rituals
StartupReceiver.onStartupApplication(this);
shouldCloseInstance = false;

@ -55,6 +55,7 @@ import com.timsu.astrid.data.task.TaskController;
import com.timsu.astrid.data.task.TaskIdentifier;
import com.timsu.astrid.data.task.TaskModelForList;
import com.timsu.astrid.data.task.AbstractTaskModel.RepeatInfo;
import com.timsu.astrid.utilities.AstridUtilities;
import com.timsu.astrid.utilities.DateUtilities;
import com.timsu.astrid.utilities.Preferences;
import com.timsu.astrid.utilities.TaskFieldsVisibility;
@ -170,9 +171,7 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
view.requestFocus();
}
} catch (Exception e) {
FlurryAgent.onError("task-adapter-set-expanded", e.toString(),
e.getClass().getSimpleName());
AstridUtilities.reportFlurryError("task-adapter-set-expanded", e);
Log.e("astrid", "Error in setExpanded", e);
}
}

@ -63,6 +63,7 @@ import com.timsu.astrid.data.task.TaskModelForList;
import com.timsu.astrid.sync.SynchronizationService;
import com.timsu.astrid.sync.Synchronizer;
import com.timsu.astrid.sync.Synchronizer.SynchronizerListener;
import com.timsu.astrid.utilities.AstridUtilities;
import com.timsu.astrid.utilities.Constants;
import com.timsu.astrid.utilities.DialogUtilities;
import com.timsu.astrid.utilities.Notifications;
@ -592,8 +593,7 @@ public class TaskListSubActivity extends SubActivity {
Log.w("astrid", "StaleDataException", e);
return;
} catch (final IllegalStateException e) {
FlurryAgent.onError("task-list-error", e.toString(), e.getClass()
.getSimpleName());
AstridUtilities.reportFlurryError("task-list-error", e);
// happens when you run out of memory usually
Log.e("astrid", "Error loading task list", e);
@ -607,8 +607,7 @@ public class TaskListSubActivity extends SubActivity {
});
return;
} catch (final Exception e) {
FlurryAgent.onError("task-list-error", e.toString(), e.getClass()
.getSimpleName());
AstridUtilities.reportFlurryError("task-list-error", e);
Log.e("astrid", "Error loading task list", e);
return;
@ -761,8 +760,7 @@ public class TaskListSubActivity extends SubActivity {
context.listAdapter.setExpanded(v, context.selectedTask, true);
listView.setSelection(selectedPosition);
} catch (Exception e) {
FlurryAgent.onError("task-list-selected", e.toString(), e
.getClass().getSimpleName());
AstridUtilities.reportFlurryError("task-list-selected", e);
Log.e("astrid", "error with selected task", e);
}
}
@ -876,8 +874,8 @@ public class TaskListSubActivity extends SubActivity {
syncPreferencesOpened = false;
if (TaskList.synchronizeNow) {
synchronize();
TaskList.synchronizeNow = false;
synchronize();
}
// stop & start synchronization service

@ -29,6 +29,7 @@ import com.timsu.astrid.R;
import com.timsu.astrid.data.task.AbstractTaskModel;
import com.timsu.astrid.data.task.TaskController;
import com.timsu.astrid.data.task.TaskIdentifier;
import com.timsu.astrid.utilities.AstridUtilities;
import com.timsu.astrid.utilities.Constants;
import com.timsu.astrid.utilities.DialogUtilities;
@ -39,37 +40,58 @@ import com.timsu.astrid.utilities.DialogUtilities;
public abstract class TaskModificationTabbedActivity<MODEL_TYPE extends
AbstractTaskModel> extends TabActivity {
protected static final String LOAD_INSTANCE_TOKEN = TaskModificationActivity.LOAD_INSTANCE_TOKEN;
protected TaskController controller;
protected MODEL_TYPE model;
protected class Context {
protected MODEL_TYPE cModel;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
controller = new TaskController(this);
controller.open();
try {
// check if we have a TaskIdentifier
TaskIdentifier identifier = null;
Bundle extras = getIntent().getExtras();
if(savedInstanceState != null && savedInstanceState.containsKey(LOAD_INSTANCE_TOKEN)) {
identifier = new TaskIdentifier(savedInstanceState.getLong(
LOAD_INSTANCE_TOKEN));
} else if(extras != null && extras.containsKey(LOAD_INSTANCE_TOKEN))
identifier = new TaskIdentifier(extras.getLong(
LOAD_INSTANCE_TOKEN));
model = getModel(identifier);
} catch (Exception e) {
showErrorAndFinish(R.string.error_opening, e);
// if we've saved our model, use that instead
if(getLastNonConfigurationInstance() != null) {
Context context = (Context)getLastNonConfigurationInstance();
model = context.cModel;
} else {
try {
// check if we have a TaskIdentifier
TaskIdentifier identifier = null;
Bundle extras = getIntent().getExtras();
if(savedInstanceState != null && savedInstanceState.containsKey(LOAD_INSTANCE_TOKEN)) {
identifier = new TaskIdentifier(savedInstanceState.getLong(
LOAD_INSTANCE_TOKEN));
} else if(extras != null && extras.containsKey(LOAD_INSTANCE_TOKEN))
identifier = new TaskIdentifier(extras.getLong(
LOAD_INSTANCE_TOKEN));
model = getModel(identifier);
} catch (Exception e) {
showErrorAndFinish(R.string.error_opening, e);
}
}
}
/**
* Called when screen is rotated. We return the model we are editing so that
* we will have access to it instead of having to re-read from the database
*/
@Override
public Object onRetainNonConfigurationInstance() {
Context context = new Context();
context.cModel = model;
return context;
}
@Override
protected void onStart() {
super.onStart();
// set up flurry
FlurryAgent.onStartSession(this, Constants.FLURRY_KEY);
}
@ -80,6 +102,7 @@ public abstract class TaskModificationTabbedActivity<MODEL_TYPE extends
}
protected void showErrorAndFinish(int prefix, Throwable e) {
AstridUtilities.reportFlurryError("taskedit", e);
Resources r = getResources();
DialogUtilities.okDialog(this,
r.getString(prefix) + " " +

@ -156,8 +156,7 @@ public class RTMSyncProvider extends SynchronizationProvider {
return null;
} catch (final Exception e) {
// didn't work
FlurryAgent.onError("rtm-verify-login", AstridUtilities.throwableToString(e),
SynchronizationProvider.class.getSimpleName());
AstridUtilities.reportFlurryError("rtm-verify-login", e);
rtmService = null;
return r.getString(R.string.rtm_login_error) +
@ -176,15 +175,13 @@ public class RTMSyncProvider extends SynchronizationProvider {
} catch (IllegalStateException e) {
// occurs when application was closed
FlurryAgent.onError("rtm-authenticate-caught", AstridUtilities.throwableToString(e),
SynchronizationProvider.class.getSimpleName());
AstridUtilities.reportFlurryError("rtm-authenticate-caught", e);
Log.e("rtmsync", "Illegal State during Sync", e);
} catch (Exception e) {
FlurryAgent.onError("rtm-authenticate", AstridUtilities.throwableToString(e),
SynchronizationProvider.class.getSimpleName());
AstridUtilities.reportFlurryError("rtm-authenticate", e);
// IO Exception
if(e instanceof ServiceInternalException &&
@ -263,8 +260,7 @@ public class RTMSyncProvider extends SynchronizationProvider {
postUpdate(new ProgressUpdater(5, 5));
addTasksToList(context, tasks, remoteChanges);
} catch (Exception e) {
FlurryAgent.onError("rtm-quick-sync", AstridUtilities.throwableToString(e),
SynchronizationProvider.class.getSimpleName());
AstridUtilities.reportFlurryError("rtm-quick-sync", e);
Log.e("rtmsync", "Error sync-ing list!", e);
remoteChanges.clear();
@ -284,8 +280,7 @@ public class RTMSyncProvider extends SynchronizationProvider {
filter, lastSyncDate);
addTasksToList(context, tasks, remoteChanges);
} catch (Exception e) {
FlurryAgent.onError("rtm-indiv-sync", AstridUtilities.throwableToString(e),
SynchronizationProvider.class.getSimpleName());
AstridUtilities.reportFlurryError("rtm-indiv-sync", e);
Log.e("rtmsync", "Error sync-ing list!", e);
postUpdate(new Runnable() {
@ -303,22 +298,19 @@ public class RTMSyncProvider extends SynchronizationProvider {
synchronizeTasks(context, remoteChanges, new RtmSyncHelper(context, timeline));
// add a bit of fudge time so we don't load tasks we just edited
Date syncTime = new Date(System.currentTimeMillis() + 1000);
Date syncTime = new Date();
Preferences.setSyncRTMLastSync(context, syncTime);
FlurryAgent.onEvent("rtm-sync-finished");
} catch (IllegalStateException e) {
// occurs when application was closed
FlurryAgent.onError("rtm-sync-caught", AstridUtilities.throwableToString(e),
SynchronizationProvider.class.getSimpleName());
AstridUtilities.reportFlurryError("rtm-sync-caught", e);
Log.e("rtmsync", "Illegal State during Sync", e);
} catch (Exception e) {
FlurryAgent.onError("rtm-sync", AstridUtilities.throwableToString(e),
SynchronizationProvider.class.getSimpleName());
AstridUtilities.reportFlurryError("rtm-sync", e);
Log.e("rtmsync", "Error in synchronization", e);
showError(context, e, null);

@ -20,6 +20,8 @@
package com.timsu.astrid.sync;
import java.io.IOException;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
@ -132,8 +134,7 @@ public abstract class SynchronizationProvider {
*/
void showError(final Context context, Throwable e, String message) {
Log.e("astrid", "Synchronization Error", e);
FlurryAgent.onError("sync-error", AstridUtilities.throwableToString(e),
SynchronizationProvider.class.getSimpleName());
AstridUtilities.reportFlurryError("sync-error", e);
if(isBackgroundService())
return;
@ -314,8 +315,7 @@ public abstract class SynchronizationProvider {
else
log.append("updated '" + task.getName() + "'\n");
} catch (Exception e) {
FlurryAgent.onError("sync-push-task", AstridUtilities.throwableToString(e),
SynchronizationProvider.class.getSimpleName());
AstridUtilities.reportFlurryError("sync-push-task", e);
Log.e("astrid", "Exception pushing task", e);
log.append("error sending '" + task.getName() + "'\n");
@ -333,6 +333,33 @@ public abstract class SynchronizationProvider {
// 4. REMOTE SYNC load remote information
log.append("\n>> on astrid:\n");
postUpdate(new ProgressUpdater(0, 1));
// Rearrange remoteTasks so completed tasks get synchronized first.
// This prevents bugs where a repeated task has two copies come down
// the wire, the new version and the completed old version. The new
// version would get merged, then completed, if done in the wrong order.
Collections.sort(remoteTasks, new Comparator<TaskProxy>() {
@Override
public int compare(TaskProxy object1, TaskProxy object2) {
if(object1.isDeleted && object2.isDeleted)
return 0;
else if(object1.isDeleted)
return -1;
else if(object2.isDeleted())
return 1;
if(object1.completionDate != null && object2.completionDate != null)
return object1.completionDate.compareTo(object2.completionDate);
else if(object1.completionDate != null)
return -1;
else if(object2.completionDate != null)
return 1;
return 0;
}
});
for(TaskProxy remoteTask : remoteTasks) {
if(remoteTask.name != null)
postUpdate(new ProgressLabelUpdater(context, R.string.sync_progress_remotetx,
@ -349,13 +376,21 @@ public abstract class SynchronizationProvider {
}
task = taskController.searchForTaskForSync(remoteTask.name);
if(task == null) {
task = new TaskModelForSync();
setupTaskDefaults(context, task);
log.append("added " + remoteTask.name + "\n");
} else {
mapping = data.localIdToSyncMapping.get(task.getTaskIdentifier());
log.append("merged " + remoteTask.name + "\n");
// delete old mapping
mapping = data.localIdToSyncMapping.get(task.getTaskIdentifier());
if(mapping != null) {
syncController.deleteSyncMapping(mapping);
data.localIdToSyncMapping.remove(task.getTaskIdentifier());
mapping = null;
}
}
} else {
mapping = data.remoteIdToSyncMapping.get(remoteTask.getRemoteId());

@ -26,7 +26,6 @@ import android.app.Activity;
import android.content.Context;
import android.util.Log;
import com.flurry.android.FlurryAgent;
import com.timsu.astrid.activities.TaskListSubActivity;
import com.timsu.astrid.data.AbstractController;
import com.timsu.astrid.data.alerts.AlertController;
@ -187,8 +186,7 @@ public class Synchronizer {
}
} catch (Exception e) {
Log.e("sync", "Error continuing synchronization", e);
FlurryAgent.onError("sync-continue", AstridUtilities.throwableToString(e),
SynchronizationProvider.class.getSimpleName());
AstridUtilities.reportFlurryError("sync-continue", e);
finishSynchronization(context);
}
}

@ -2,6 +2,11 @@ package com.timsu.astrid.utilities;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.Thread.UncaughtExceptionHandler;
import android.database.sqlite.SQLiteException;
import com.flurry.android.FlurryAgent;
/**
* General purpose utilities for the Astrid project. Grab-bag of stuff.
@ -17,14 +22,49 @@ public class AstridUtilities {
* @param input
* @return
*/
public static String throwableToString(Throwable input) {
public static void reportFlurryError(String name, Throwable error) {
String message = error.toString();
StringWriter writer = new StringWriter();
PrintWriter writerPrinter = new PrintWriter(writer);
input.printStackTrace(writerPrinter);
error.printStackTrace(writerPrinter);
writerPrinter.flush();
writerPrinter.close();
return writer.toString();
String trace = writer.toString();
// shorten the string
trace = trace.substring(message.length());
trace.replaceAll("android", "A");
trace.replaceAll("database", "db");
trace.replaceAll(IllegalStateException.class.getName(), "IlStEx");
trace.replaceAll(ClassCastException.class.getName(), "ClCaEx");
trace.replaceAll(NullPointerException.class.getName(), "NPE");
trace.replaceAll(SQLiteException.class.getName(), "SqLiEx");
trace.replaceAll("com.timsu.", "");
FlurryAgent.onError(name, message, trace);
}
/**
* For reporting uncaught exceptions
*
* @author timsu
*
*/
public static class AstridUncaughtExceptionHandler implements UncaughtExceptionHandler {
private UncaughtExceptionHandler defaultUEH;
public AstridUncaughtExceptionHandler() {
defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
AstridUtilities.reportFlurryError("uncaught", ex);
defaultUEH.uncaughtException(thread, ex);
}
}
}

@ -26,7 +26,7 @@ import com.timsu.astrid.data.task.TaskIdentifier;
public class LocaleReceiver extends BroadcastReceiver {
/** minimum amount of time between two notifications */
private static final long MIN_NOTIFY_INTERVAL = 8*3600*1000L;
private static final long MIN_NOTIFY_INTERVAL = 12*3600*1000L;
@Override
/** Called when the system is started up */

@ -0,0 +1,274 @@
msgid ""
msgstr ""
"Project-Id-Version: Astrid\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-13 01:16-0700\n"
"PO-Revision-Date: 2009-06-10 17:52+0000\n"
"Last-Translator: Friedrich <Unknown>\n"
"Language-Team: German <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-06-13 20:28+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. reminders: Make these < 20 chars so the task name is displayed
#: res/values/arrays.xml:32(item)
msgid "Hi there! Have a sec?"
msgstr "Hallo! Haste mal 'ne Sekunde?"
#: res/values/arrays.xml:33(item)
msgid "Can I see you for a sec?"
msgstr "Na, 'n paar Sekunden für mich Zeit?"
#: res/values/arrays.xml:34(item)
msgid "Have a few minutes?"
msgstr "Haste mal 'n paar Minuten?"
#: res/values/arrays.xml:35(item)
msgid "Did you forget?"
msgstr "Hast du's vergessen?"
#: res/values/arrays.xml:36(item)
msgid "Excuse me!"
msgstr "Entschuldigung!"
#: res/values/arrays.xml:37(item)
msgid "When you have a minute:"
msgstr "Falls du mal 'ne Minute hast:"
#: res/values/arrays.xml:38(item)
msgid "On your agenda:"
msgstr "Auf deinem Tagesplan:"
#: res/values/arrays.xml:39(item)
msgid "Free for a moment?"
msgstr "Einen Augenblick Zeit?"
#: res/values/arrays.xml:40(item)
msgid "Astrid here!"
msgstr "Astrid ist da!"
#: res/values/arrays.xml:41(item)
msgid "Hi! Can I bug you?"
msgstr "Hallo! Kann ich dich kurz nerven?"
#: res/values/arrays.xml:42(item)
msgid "A minute of your time?"
msgstr "Schenk mir doch mal eine Minute!"
#: res/values/arrays.xml:43(item)
msgid "It\\'s a great day to"
msgstr "Es ist ein toller Tag zum"
#. reminder_responses: Astrid says... (user should answer yes or no)
#: res/values/arrays.xml:48(item)
msgid "I\\'ve got something for you!"
msgstr "Ich habe was für dich!"
#: res/values/arrays.xml:49(item)
msgid "Ready to put this in the past?"
msgstr "Bereit dies in die Vergangenheit zu befördern?"
#: res/values/arrays.xml:50(item)
msgid "Why don\\'t you get this done?"
msgstr "Warum erledigst du's nicht?"
#: res/values/arrays.xml:51(item)
msgid "How about it? Ready tiger?"
msgstr "Wie schauts aus? Fertig?"
#: res/values/arrays.xml:52(item)
msgid "Ready to do this?"
msgstr "Bereit das anzupacken?"
#: res/values/arrays.xml:53(item)
msgid "Can you handle this?"
msgstr "Nun mach aber mal!"
#: res/values/arrays.xml:54(item)
msgid "You can be happy! Just finish this!"
msgstr "Machs einfach! Danach kannst du durchatmen."
#: res/values/arrays.xml:55(item)
msgid "I promise you\\'ll feel better if you finish this!"
msgstr ""
"Ich verspreche dir, du wirst dich besser fühlen, wenn du's erledigt hast!"
#: res/values/arrays.xml:56(item)
msgid "Won\\'t you do this today?"
msgstr "Mal ehrlich, was spricht denn gegen sofort?"
#: res/values/arrays.xml:57(item)
msgid "Please finish this, I\\'m sick of it!"
msgstr "Nun mach aber mal, langsam stinkts mir!"
#: res/values/arrays.xml:58(item)
msgid "Can you finish this? Yes you can!"
msgstr "Kannst du das erledigen? Yes, you can!"
#: res/values/arrays.xml:59(item)
msgid "Are you ever going to do this?"
msgstr "Wirst du das jemals tun?"
#: res/values/arrays.xml:60(item)
msgid "Feel good about yourself! Let\\'s go!"
msgstr "Tu was fürs freie Atmen! Lass knacken!"
#: res/values/arrays.xml:61(item)
msgid "I'm so proud of you! Lets get it done!"
msgstr "Das beenden wir nun mal. Ich bin stolz auf dich."
#: res/values/arrays.xml:62(item)
msgid "A little snack after you finish this?"
msgstr "Einen kleinen Imbiss, wenn das erledigt ist?"
#: res/values/arrays.xml:63(item)
msgid "Just this one task? Please?"
msgstr "Nur diese eine Aufgabe? Bitte?"
#: res/values/arrays.xml:64(item)
msgid "Time to shorten your todo list!"
msgstr "Es ist Zeit deine Aufgabenliste zu verkürzen!"
#. Astrid's nagging when user clicks postpone
#: res/values/arrays.xml:69(item)
msgid "Please tell me it isn\\'t true that you're a procrastinator!"
msgstr "Wie, du bist stolz darauf, alles aufzuschieben?"
#: res/values/arrays.xml:70(item)
msgid "Doesn\\'t being lazy get old sometimes?"
msgstr "Ist es nicht manchmal langweilig faul zu sein?"
#: res/values/arrays.xml:71(item)
msgid "Somewhere, someone is depending on you to finish this!"
msgstr "Irgendwer, irgendwo vertraut darauf, dass du das abschließt!"
#: res/values/arrays.xml:72(item)
msgid ""
"When you said postpone, you really meant \\'I\\'m doing this\\', right?"
msgstr ""
"Als du \"verschieben\" gesagt hast, meintest du doch eigentlich \"Ich werde "
"es erledigen\", oder?"
#: res/values/arrays.xml:73(item)
msgid "This is the last time you postpone this, right?"
msgstr "Das ist das letzte Mal, dass du das hier aufschiebst, okay?"
#: res/values/arrays.xml:74(item)
msgid "Just finish this today, I won\\'t tell anyone!"
msgstr "Erledige das einfach heute und ich sage es niemandem. Okay?!"
#: res/values/arrays.xml:75(item)
msgid "Why postpone when you can um... not postpone!"
msgstr ""
"Warum verschieben? Du könntest es doch einfach ... nicht verschieben!"
#: res/values/arrays.xml:76(item)
msgid "You\\'ll finish this eventually, I presume?"
msgstr "Ich nehme an, dass du das irgendwann mal abschließen wirst?"
#: res/values/arrays.xml:77(item)
msgid "I think you\\'re really great! How about not putting this off?"
msgstr ""
"Es läuft doch! Wie wäre es, wenn du das nicht bis zur letzten Minute "
"aufschiebst?"
#: res/values/arrays.xml:78(item)
msgid "Will you be able to achieve your goals if you do that?"
msgstr "Wirst du deine Ziele erreichen, wenn du das tust?"
#: res/values/arrays.xml:79(item)
msgid "Postpone, postpone, postpone. When will you change!"
msgstr "Verschieben, verschieben, verschieben. Wann wirst du dich verändern?"
#: res/values/arrays.xml:80(item)
msgid "I\\'ve had enough with your excuses! Just do it already!"
msgstr "Ich habe genug von deinen Ausreden! Mach es einfach!"
#: res/values/arrays.xml:81(item)
msgid "Didn\\'t you make that excuse last time?"
msgstr "Ist das nicht die gleiche Ausrede wie letztes Mal?"
#: res/values/arrays.xml:82(item)
msgid "I can\\'t help you organize your life if you do that..."
msgstr "Dann kann ich dir auch nicht helfen, dein Leben zu organisieren."
#. Icons for notification tray
#: res/values/arrays.xml:87(item)
msgid "Pink"
msgstr "Rosa"
#: res/values/arrays.xml:88(item)
msgid "Boring"
msgstr "Langweilig"
#: res/values/arrays.xml:89(item)
msgid "Astrid"
msgstr "Astrid"
#. Corresponding to the constants in Preferences.java (do not edit)
#: res/values/arrays.xml:94(item) res/values/arrays.xml:112(item)
msgid "0"
msgstr "0"
#: res/values/arrays.xml:95(item)
msgid "1"
msgstr "1"
#: res/values/arrays.xml:96(item)
msgid "2"
msgstr "2"
#. sync_interval_entries: Synchronization Intervals
#: res/values/arrays.xml:101(item)
msgid "disable"
msgstr "Deaktiviere"
#: res/values/arrays.xml:102(item)
msgid "twice an hour"
msgstr "zweimal stündlich"
#: res/values/arrays.xml:103(item)
msgid "hourly"
msgstr "stündlich"
#: res/values/arrays.xml:104(item)
msgid "twice a day"
msgstr "zweimal täglich"
#: res/values/arrays.xml:105(item)
msgid "daily"
msgstr "täglich"
#: res/values/arrays.xml:106(item)
msgid "twice a week"
msgstr "zweimal wöchentlich"
#: res/values/arrays.xml:107(item)
msgid "weekly"
msgstr "wöchentlich"
#: res/values/arrays.xml:113(item)
msgid "1800"
msgstr "1800"
#: res/values/arrays.xml:114(item)
msgid "3600"
msgstr "3600"
#: res/values/arrays.xml:115(item)
msgid "43200"
msgstr "43200"
#: res/values/arrays.xml:116(item)
msgid "86400"
msgstr "86400"
#: res/values/arrays.xml:117(item)
msgid "302400"
msgstr "302400"
#: res/values/arrays.xml:118(item)
msgid "604800"
msgstr "604800"

@ -0,0 +1,275 @@
# Spanish translation for astrid-translation
# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
# This file is distributed under the same license as the astrid-translation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: astrid-translation\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-06-13 01:16-0700\n"
"PO-Revision-Date: 2009-06-06 08:06+0000\n"
"Last-Translator: Pablo Ledesma <venraiker@gmail.com>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-06-13 20:28+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. reminders: Make these < 20 chars so the task name is displayed
#: res/values/arrays.xml:32(item)
msgid "Hi there! Have a sec?"
msgstr "¡Hola! ¿Tienes un segundo?"
#: res/values/arrays.xml:33(item)
msgid "Can I see you for a sec?"
msgstr "¿Puedo verte por un segundo?"
#: res/values/arrays.xml:34(item)
msgid "Have a few minutes?"
msgstr "¿Tienes unos minutos?"
#: res/values/arrays.xml:35(item)
msgid "Did you forget?"
msgstr "¿Te has olvidado?"
#: res/values/arrays.xml:36(item)
msgid "Excuse me!"
msgstr "¡Perdón!"
#: res/values/arrays.xml:37(item)
msgid "When you have a minute:"
msgstr "Cuando tengas un minuto:"
#: res/values/arrays.xml:38(item)
msgid "On your agenda:"
msgstr "En tú agenda:"
#: res/values/arrays.xml:39(item)
msgid "Free for a moment?"
msgstr "¿Disponible por un momento?"
#: res/values/arrays.xml:40(item)
msgid "Astrid here!"
msgstr "¡Aquí Astrid!"
#: res/values/arrays.xml:41(item)
msgid "Hi! Can I bug you?"
msgstr "¡Hola! ¿Puedo molestarte?"
#: res/values/arrays.xml:42(item)
msgid "A minute of your time?"
msgstr "¿Un minuto de tu tiempo?"
#: res/values/arrays.xml:43(item)
msgid "It\\'s a great day to"
msgstr "Es un gran día para"
#. reminder_responses: Astrid says... (user should answer yes or no)
#: res/values/arrays.xml:48(item)
msgid "I\\'ve got something for you!"
msgstr "¡Tengo algo para ti!"
#: res/values/arrays.xml:49(item)
msgid "Ready to put this in the past?"
msgstr "¿Listo para poner esto en el pasado?"
#: res/values/arrays.xml:50(item)
msgid "Why don\\'t you get this done?"
msgstr "¿Porqué no terminas esto?"
#: res/values/arrays.xml:51(item)
msgid "How about it? Ready tiger?"
msgstr "¿Qué tal? ¿Listo tigre?"
#: res/values/arrays.xml:52(item)
msgid "Ready to do this?"
msgstr "¿Listo para hacer esto?"
#: res/values/arrays.xml:53(item)
msgid "Can you handle this?"
msgstr "¿Puedes con esto?"
#: res/values/arrays.xml:54(item)
msgid "You can be happy! Just finish this!"
msgstr "¡Puedes ser feliz! ¡Solo termínalo!"
#: res/values/arrays.xml:55(item)
msgid "I promise you\\'ll feel better if you finish this!"
msgstr "¡Te prometo que te sentirás mejor si lo terminas!"
#: res/values/arrays.xml:56(item)
msgid "Won\\'t you do this today?"
msgstr "¿Porqué no haces esto hoy?"
#: res/values/arrays.xml:57(item)
msgid "Please finish this, I\\'m sick of it!"
msgstr "¡Por favor termínalo, esto cansado de ello!"
#: res/values/arrays.xml:58(item)
msgid "Can you finish this? Yes you can!"
msgstr "¿Puedes terminar esto? ¡Yes you can!"
#: res/values/arrays.xml:59(item)
msgid "Are you ever going to do this?"
msgstr "¿Vas a hacer esto?"
#: res/values/arrays.xml:60(item)
msgid "Feel good about yourself! Let\\'s go!"
msgstr "¡Sientete mejor contigo mismo! ¡Vamos!"
#: res/values/arrays.xml:61(item)
msgid "I'm so proud of you! Lets get it done!"
msgstr "¡Estoy muy orgulloso de ti! ¡Termínalo!"
#: res/values/arrays.xml:62(item)
msgid "A little snack after you finish this?"
msgstr "¿Un descanso después de acabar esto?"
#: res/values/arrays.xml:63(item)
msgid "Just this one task? Please?"
msgstr "¿Solo esta tarea? ¿Por favor?"
#: res/values/arrays.xml:64(item)
msgid "Time to shorten your todo list!"
msgstr "¡Hora de acortar tu lista de tarea!"
#. Astrid's nagging when user clicks postpone
#: res/values/arrays.xml:69(item)
msgid "Please tell me it isn\\'t true that you're a procrastinator!"
msgstr "¡Por favor, no me digas que eres un procrastinador!"
#: res/values/arrays.xml:70(item)
msgid "Doesn\\'t being lazy get old sometimes?"
msgstr "¿Sentirse vago no hace sentirte viejo algunas veces?"
#: res/values/arrays.xml:71(item)
msgid "Somewhere, someone is depending on you to finish this!"
msgstr "¡En algún lugar, alguien está esperando que lo acabes!"
#: res/values/arrays.xml:72(item)
msgid ""
"When you said postpone, you really meant \\'I\\'m doing this\\', right?"
msgstr ""
"Cuando dices posponer, realmente quieres decir \\'estoy haciendo esto\\', "
"¿verdad?"
#: res/values/arrays.xml:73(item)
msgid "This is the last time you postpone this, right?"
msgstr "Esta es la última vez que lo pospones, ¿verdad?"
#: res/values/arrays.xml:74(item)
msgid "Just finish this today, I won\\'t tell anyone!"
msgstr "Acábalo hoy, ¡no se lo diré a nadie!"
#: res/values/arrays.xml:75(item)
msgid "Why postpone when you can um... not postpone!"
msgstr "Por que posponerlo cuando puedes uhm... ¡no posponerlo!"
#: res/values/arrays.xml:76(item)
msgid "You\\'ll finish this eventually, I presume?"
msgstr "Lo acabarás en cualquier momento, ¿supongo?"
#: res/values/arrays.xml:77(item)
msgid "I think you\\'re really great! How about not putting this off?"
msgstr "¡Creo que eres genial! ¿Qué tal no posponerlo?"
#: res/values/arrays.xml:78(item)
msgid "Will you be able to achieve your goals if you do that?"
msgstr "¿Podrás alcanzar tus metas si haces eso?"
#: res/values/arrays.xml:79(item)
msgid "Postpone, postpone, postpone. When will you change!"
msgstr "Posponer, posponer, posponer. ¡Cuando cambiarás!"
#: res/values/arrays.xml:80(item)
msgid "I\\'ve had enough with your excuses! Just do it already!"
msgstr "¡Ya estoy harto de tus excusas! ¡Hazlo ya!"
#: res/values/arrays.xml:81(item)
msgid "Didn\\'t you make that excuse last time?"
msgstr "¿Esa no fue la excusa la última vez?"
#: res/values/arrays.xml:82(item)
msgid "I can\\'t help you organize your life if you do that..."
msgstr "No te puedo ayudar a organizar tu vida si haces eso..."
#. Icons for notification tray
#: res/values/arrays.xml:87(item)
msgid "Pink"
msgstr "Rosa"
#: res/values/arrays.xml:88(item)
msgid "Boring"
msgstr "Aburrido"
#: res/values/arrays.xml:89(item)
msgid "Astrid"
msgstr "Astrid"
#. Corresponding to the constants in Preferences.java (do not edit)
#: res/values/arrays.xml:94(item) res/values/arrays.xml:112(item)
msgid "0"
msgstr "0"
#: res/values/arrays.xml:95(item)
msgid "1"
msgstr "1"
#: res/values/arrays.xml:96(item)
msgid "2"
msgstr "2"
#. sync_interval_entries: Synchronization Intervals
#: res/values/arrays.xml:101(item)
msgid "disable"
msgstr "desactivado"
#: res/values/arrays.xml:102(item)
msgid "twice an hour"
msgstr "cada media hora"
#: res/values/arrays.xml:103(item)
msgid "hourly"
msgstr "cada hora"
#: res/values/arrays.xml:104(item)
msgid "twice a day"
msgstr "dos veces al día"
#: res/values/arrays.xml:105(item)
msgid "daily"
msgstr "diario"
#: res/values/arrays.xml:106(item)
msgid "twice a week"
msgstr "dos veces a la semana"
#: res/values/arrays.xml:107(item)
msgid "weekly"
msgstr "semanalmente"
#: res/values/arrays.xml:113(item)
msgid "1800"
msgstr "1800"
#: res/values/arrays.xml:114(item)
msgid "3600"
msgstr "3600"
#: res/values/arrays.xml:115(item)
msgid "43200"
msgstr "43200"
#: res/values/arrays.xml:116(item)
msgid "86400"
msgstr "86400"
#: res/values/arrays.xml:117(item)
msgid "302400"
msgstr "302400"
#: res/values/arrays.xml:118(item)
msgid "604800"
msgstr "604800"

@ -0,0 +1,268 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-13 01:16-0700\n"
"PO-Revision-Date: 2009-06-11 08:31+0000\n"
"Last-Translator: maimuzo <maimuzo@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-06-13 20:28+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. reminders: Make these < 20 chars so the task name is displayed
#: res/values/arrays.xml:32(item)
msgid "Hi there! Have a sec?"
msgstr "やぁみんな! ちょっといいかな?"
#: res/values/arrays.xml:33(item)
msgid "Can I see you for a sec?"
msgstr "ちょっと見ていい?"
#: res/values/arrays.xml:34(item)
msgid "Have a few minutes?"
msgstr "ちょっと時間あるかな?"
#: res/values/arrays.xml:35(item)
msgid "Did you forget?"
msgstr "忘れちゃった?"
#: res/values/arrays.xml:36(item)
msgid "Excuse me!"
msgstr "ごめんよ!"
#: res/values/arrays.xml:37(item)
msgid "When you have a minute:"
msgstr "ちょっと時間があるとき:"
#: res/values/arrays.xml:38(item)
msgid "On your agenda:"
msgstr "予定上:"
#: res/values/arrays.xml:39(item)
msgid "Free for a moment?"
msgstr "ちょっとヒマある?"
#: res/values/arrays.xml:40(item)
msgid "Astrid here!"
msgstr "Astridだよ!"
#: res/values/arrays.xml:41(item)
msgid "Hi! Can I bug you?"
msgstr "やぁ! バグってる?"
#: res/values/arrays.xml:42(item)
msgid "A minute of your time?"
msgstr "1分ぐらいいいかな?"
#: res/values/arrays.xml:43(item)
msgid "It\\'s a great day to"
msgstr "すばらしい日にするために"
#. reminder_responses: Astrid says... (user should answer yes or no)
#: res/values/arrays.xml:48(item)
msgid "I\\'ve got something for you!"
msgstr "あなたのためにしましたよ!"
#: res/values/arrays.xml:49(item)
msgid "Ready to put this in the past?"
msgstr "これを過去のものにして良い?"
#: res/values/arrays.xml:50(item)
msgid "Why don\\'t you get this done?"
msgstr "なんでこれしないの?"
#: res/values/arrays.xml:51(item)
msgid "How about it? Ready tiger?"
msgstr "どう? いけそう?"
#: res/values/arrays.xml:52(item)
msgid "Ready to do this?"
msgstr "これする準備できてる?"
#: res/values/arrays.xml:53(item)
msgid "Can you handle this?"
msgstr "これ処理できる?"
#: res/values/arrays.xml:54(item)
msgid "You can be happy! Just finish this!"
msgstr "幸せになれるよ! これが終われば!"
#: res/values/arrays.xml:55(item)
msgid "I promise you\\'ll feel better if you finish this!"
msgstr "これさえ終われば、気分爽快になることを約束します!"
#: res/values/arrays.xml:56(item)
msgid "Won\\'t you do this today?"
msgstr "今日はしないの?"
#: res/values/arrays.xml:57(item)
msgid "Please finish this, I\\'m sick of it!"
msgstr "これやっちゃおうよ、やる気萎えちゃうよ!"
#: res/values/arrays.xml:58(item)
msgid "Can you finish this? Yes you can!"
msgstr "これやっちゃえる? そう、あなたならできる!"
#: res/values/arrays.xml:59(item)
msgid "Are you ever going to do this?"
msgstr "ずっとこれしないつもり?"
#: res/values/arrays.xml:60(item)
msgid "Feel good about yourself! Let\\'s go!"
msgstr "自分でしたら気持ちいいよ! さぁやろう!"
#: res/values/arrays.xml:61(item)
msgid "I'm so proud of you! Lets get it done!"
msgstr "あなたが自慢だよ。さぁそれやっちゃおう!"
#: res/values/arrays.xml:62(item)
msgid "A little snack after you finish this?"
msgstr "これやっちゃってお茶しない?"
#: res/values/arrays.xml:63(item)
msgid "Just this one task? Please?"
msgstr "あとひとつだけ? じゃあお願いできる?"
#: res/values/arrays.xml:64(item)
msgid "Time to shorten your todo list!"
msgstr "ToDoリストを処理する時間ですよ"
#. Astrid's nagging when user clicks postpone
#: res/values/arrays.xml:69(item)
msgid "Please tell me it isn\\'t true that you're a procrastinator!"
msgstr "あなたがずぼらな人でないと教えてください!"
#: res/values/arrays.xml:70(item)
msgid "Doesn\\'t being lazy get old sometimes?"
msgstr "ときどき時間がゆっくりになるんですか?"
#: res/values/arrays.xml:71(item)
msgid "Somewhere, someone is depending on you to finish this!"
msgstr "どこかで誰かがこれを終えるのを待ってますよ!"
#: res/values/arrays.xml:72(item)
msgid ""
"When you said postpone, you really meant \\'I\\'m doing this\\', right?"
msgstr "あなたが延期決めるとき、本当に「一所懸命やりました」と言えますか?"
#: res/values/arrays.xml:73(item)
msgid "This is the last time you postpone this, right?"
msgstr "これを後回しにするのはこれで最後だよね?"
#: res/values/arrays.xml:74(item)
msgid "Just finish this today, I won\\'t tell anyone!"
msgstr "今日はこれやろう! もう言わないから。"
#: res/values/arrays.xml:75(item)
msgid "Why postpone when you can um... not postpone!"
msgstr "あなたが後回しにして良いと思うなら・・・って、できないじゃん!"
#: res/values/arrays.xml:76(item)
msgid "You\\'ll finish this eventually, I presume?"
msgstr "あなたならそのうち出来る、と思うけど?"
#: res/values/arrays.xml:77(item)
msgid "I think you\\'re really great! How about not putting this off?"
msgstr "あんたホントにすごいよ! どうやって延期を回避したの?"
#: res/values/arrays.xml:78(item)
msgid "Will you be able to achieve your goals if you do that?"
msgstr "もしそうするなら、あなたは目的を達成できるでしょう"
#: res/values/arrays.xml:79(item)
msgid "Postpone, postpone, postpone. When will you change!"
msgstr "後回し、後回し、後回し。そんなあなたを変えよう!"
#: res/values/arrays.xml:80(item)
msgid "I\\'ve had enough with your excuses! Just do it already!"
msgstr "言い訳はもうたくさん! すぐやっちゃおう!"
#: res/values/arrays.xml:81(item)
msgid "Didn\\'t you make that excuse last time?"
msgstr "あなたこの前その言い訳しなかった?"
#: res/values/arrays.xml:82(item)
msgid "I can\\'t help you organize your life if you do that..."
msgstr "もしあなたがそうするなら、あなたの人生の備えを手伝うことはできません・・・"
#. Icons for notification tray
#: res/values/arrays.xml:87(item)
msgid "Pink"
msgstr "ピンク"
#: res/values/arrays.xml:88(item)
msgid "Boring"
msgstr "退屈な"
#: res/values/arrays.xml:89(item)
msgid "Astrid"
msgstr "Astrid"
#. Corresponding to the constants in Preferences.java (do not edit)
#: res/values/arrays.xml:94(item) res/values/arrays.xml:112(item)
msgid "0"
msgstr "0"
#: res/values/arrays.xml:95(item)
msgid "1"
msgstr "1"
#: res/values/arrays.xml:96(item)
msgid "2"
msgstr "2"
#. sync_interval_entries: Synchronization Intervals
#: res/values/arrays.xml:101(item)
msgid "disable"
msgstr "無効"
#: res/values/arrays.xml:102(item)
msgid "twice an hour"
msgstr "時間に2回"
#: res/values/arrays.xml:103(item)
msgid "hourly"
msgstr "1時間毎"
#: res/values/arrays.xml:104(item)
msgid "twice a day"
msgstr "日に2回"
#: res/values/arrays.xml:105(item)
msgid "daily"
msgstr "毎日"
#: res/values/arrays.xml:106(item)
msgid "twice a week"
msgstr "週に2回"
#: res/values/arrays.xml:107(item)
msgid "weekly"
msgstr "毎週"
#: res/values/arrays.xml:113(item)
msgid "1800"
msgstr "1800"
#: res/values/arrays.xml:114(item)
msgid "3600"
msgstr "3600"
#: res/values/arrays.xml:115(item)
msgid "43200"
msgstr "43200"
#: res/values/arrays.xml:116(item)
msgid "86400"
msgstr "86400"
#: res/values/arrays.xml:117(item)
msgid "302400"
msgstr "302400"
#: res/values/arrays.xml:118(item)
msgid "604800"
msgstr "604800"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save