OSDN Git Service

auto import from //branches/cupcake/...@126645
authorThe Android Open Source Project <initial-contribution@android.com>
Fri, 16 Jan 2009 00:12:13 +0000 (16:12 -0800)
committerThe Android Open Source Project <initial-contribution@android.com>
Fri, 16 Jan 2009 00:12:13 +0000 (16:12 -0800)
18 files changed:
AndroidManifest.xml
res/layout-finger/call_detail.xml [new file with mode: 0644]
res/layout-finger/call_detail_item.xml [new file with mode: 0644]
res/values-cs/strings.xml
res/values-de/strings.xml
res/values-es/strings.xml [new file with mode: 0644]
res/values-fr/strings.xml
res/values-it/strings.xml
res/values-ja/strings.xml
res/values-nl/strings.xml [new file with mode: 0644]
res/values-pl/strings.xml [new file with mode: 0644]
res/values-ru/strings.xml [new file with mode: 0644]
res/values-zh-rCN/strings.xml
res/values-zh-rTW/strings.xml [new file with mode: 0644]
res/values/strings.xml
src/com/android/contacts/CallDetailActivity.java [new file with mode: 0755]
src/com/android/contacts/EditContactActivity.java
src/com/android/contacts/RecentCallsListActivity.java

index 949bfc8..2a4bf80 100644 (file)
 
         </activity-alias>
 
+        <activity android:name="CallDetailActivity"
+            android:label="@string/callDetailTitle"
+        >
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:mimeType="vnd.android.cursor.item/calls" />
+            </intent-filter>
+        </activity>
+
         <!-- Views the details of a single contact -->
         <activity android:name="ViewContactActivity"
             android:label="@string/viewContactTitle"
diff --git a/res/layout-finger/call_detail.xml b/res/layout-finger/call_detail.xml
new file mode 100644 (file)
index 0000000..c9fc500
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<ListView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/list"
+    android:layout_width="fill_parent" 
+    android:layout_height="fill_parent"
+    android:scrollbarStyle="outsideOverlay"
+/>
\ No newline at end of file
diff --git a/res/layout-finger/call_detail_item.xml b/res/layout-finger/call_detail_item.xml
new file mode 100644 (file)
index 0000000..7970735
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:stretchColumns="1"
+    android:shrinkColumns="0,1,2"
+    android:paddingLeft="12dip"
+    android:paddingRight="12dip"
+>
+
+    <TableRow
+        android:paddingTop="12dip"
+        android:paddingBottom="12dip"
+        android:gravity="center_vertical"
+    >
+
+        <TextView
+            android:text="@string/call_type"
+            android:layout_width="80dip"
+            android:layout_marginRight="12dip"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+        />
+
+        <TextView android:id="@+id/call_type"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+        />
+
+        <ImageView android:id="@+id/call_type_icon" />
+
+    </TableRow>
+
+    <TableRow
+        android:paddingBottom="12dip"
+        android:gravity="center_vertical"
+    >
+
+        <TextView
+            android:text="@string/call_time"
+            android:layout_marginRight="12dip"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+        />
+
+        <TextView android:id="@+id/call_time"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:layout_span="2"
+        />
+
+    </TableRow>
+
+    <TableRow android:id="@+id/call_duration_row"
+        android:paddingBottom="12dip"
+        android:gravity="center_vertical"
+        >
+
+        <TextView
+            android:text="@string/call_duration"
+            android:layout_marginRight="12dip"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+        />
+
+        <TextView android:id="@+id/call_duration"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:layout_span="2"
+        />
+
+    </TableRow>
+
+</TableLayout>
index 9b8f033..17aaa16 100644 (file)
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"Kontakty"</string>
-    <!-- no translation found for shortcutContact (1520089872483067797) -->
-    <skip />
-    <string name="starredList">"Hlavní"</string>
+    <string name="shortcutContact">"Kontakt"</string>
+    <string name="starredList">"Označené hvězdičkou"</string>
     <string name="frequentList">"Časté"</string>
-    <string name="strequentList">"Oblíbené položky"</string>
-    <!-- no translation found for viewContactTitle (5340316765801746261) -->
-    <skip />
-    <!-- no translation found for viewContactDesription (5593543465183236254) -->
-    <skip />
-    <!-- no translation found for editContactDescription (207393633337592309) -->
-    <skip />
-    <!-- no translation found for insertContactDescription (8392185611221432248) -->
-    <skip />
-    <string name="searchHint">"Hledat v kontaktech"</string>
+    <string name="strequentList">"Oblíbené"</string>
+    <string name="viewContactTitle">"Kontaktní informace"</string>
+    <string name="viewContactDesription">"Zobrazit kontakt"</string>
+    <string name="editContactDescription">"Upravit kontakt"</string>
+    <string name="insertContactDescription">"Vytvořit kontakt"</string>
+    <string name="searchHint">"Vyhledat kontakty"</string>
     <string name="menu_newContact">"Nový kontakt"</string>
     <string name="menu_viewContact">"Zobrazit kontakt"</string>
-    <!-- unknown placeholder CONTACT in menu_callNumber -->
-    <skip />
-    <string name="menu_addStar">"Přidat hvězdičku"</string>
-    <string name="menu_removeStar">"Odebrat hvězdičku"</string>
-    <!-- no translation found for menu_showBarcode (4627916987700748636) -->
-    <skip />
+    <string name="menu_callNumber">"Volat kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Přidat k oblíbeným položkám"</string>
+    <string name="menu_removeStar">"Odebrat z oblíbených položek"</string>
+    <string name="menu_showBarcode">"Zobrazit čárový kód"</string>
     <string name="menu_editContact">"Upravit kontakt"</string>
-    <string name="menu_deleteContact">"Odstranit kontakt"</string>
+    <string name="menu_deleteContact">"Smazat kontakt"</string>
     <string name="menu_call">"Volat"</string>
-    <string name="menu_sendSMS">"Odeslat text"</string>
+    <string name="menu_sendSMS">"Odeslat SMS nebo MMS"</string>
     <string name="menu_sendEmail">"Odeslat e-mail"</string>
     <string name="menu_viewAddress">"Adresa na mapě"</string>
-    <string name="menu_makeDefaultNumber">"Vytvořit výchozí číslo"</string>
-    <!-- no translation found for deleteConfirmation_title (1628057421142368583) -->
-    <skip />
-    <string name="deleteConfirmation">"Odstranit tento kontakt?"</string>
+    <string name="menu_makeDefaultNumber">"Nastavit jako výchozí číslo"</string>
+    <string name="deleteConfirmation_title">"Smazat"</string>
+    <string name="deleteConfirmation">"Tento kontakt bude smazán."</string>
     <string name="menu_done">"Uložit"</string>
     <string name="menu_doNotSave">"Zrušit změny"</string>
     <string name="button_save">"Uložit"</string>
     <string name="button_discard">"Zrušit změny"</string>
     <string name="editContact_title_edit">"Upravit kontakt"</string>
     <string name="editContact_title_insert">"Nový kontakt"</string>
-    <string name="menu_addItem">"a další"</string>
+    <string name="menu_addItem">"Další informace"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
     <string name="label_notes">"Poznámky"</string>
-    <!-- no translation found for label_ringtone (1269538172838343970) -->
+    <string name="label_ringtone">"Vyzváněcí tón"</string>
+    <string name="ghostData_name">"Jméno a příjmení"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
     <skip />
-    <string name="ghostData_name">"První a poslední"</string>
     <string name="ghostData_company">"Společnost"</string>
-    <string name="ghostData_title">"Poloha"</string>
-    <string name="ghostData_im">"Jméno pro zasílání rychlých zpráv"</string>
-    <string name="ghostData_notes">"Poznámka"</string>
+    <string name="ghostData_title">"Funkce"</string>
+    <string name="ghostData_im">"Název v chatu"</string>
+    <string name="ghostData_notes">"Má poznámka"</string>
     <string name="ghostData_phone">"Telefonní číslo"</string>
     <string name="ghostData_email">"E-mailová adresa"</string>
-    <!-- unknown placeholder BREAK_0 in ghostData_postal -->
-    <skip />
-    <string name="invalidContactMessage">"Kontakty musí mít názvy"</string>
+    <string name="ghostData_postal">"Poštovní adresa"</string>
+    <string name="invalidContactMessage">"Kontakt neexistuje."</string>
     <string name="pickerNewContactHeader">"Vytvořit nový kontakt"</string>
-    <string name="selectLabel">"Vybrat štítek"</string>
+    <string name="selectLabel">"Vyberte štítek"</string>
     <string name="phoneLabelsGroup">"Telefon"</string>
     <string name="emailLabelsGroup">"E-mail"</string>
-    <string name="imLabelsGroup">"Rych. zpr."</string>
+    <string name="imLabelsGroup">"Chat"</string>
     <string name="postalLabelsGroup">"Poštovní adresa"</string>
-    <string name="otherLabelsGroup">"Jiné"</string>
-    <!-- no translation found for otherLabels:0 (3318569574569948132) -->
-    <!-- no translation found for otherLabels:1 (3325413568383685728) -->
-    <string name="errorDialogTitle">"Upozornění!"</string>
-    <string name="photoPickerNotFoundText">"Žádné obrázky nejsou k dispozici."</string>
-    <string name="attachToContact">"Obrázek kontaktu"</string>
-    <string name="customLabelPickerTitle">"Vlastní štítek"</string>
-    <!-- no translation found for menu_displayGroup (2835746769742496686) -->
-    <skip />
-    <!-- no translation found for syncGroupPreference (759121296595419145) -->
-    <skip />
-    <string name="importFromSim">"Importovat z karty SIM"</string>
-    <!-- no translation found for alphabet (4977128516779796464) -->
-    <skip />
-    <!-- no translation found for send_to_voicemail_checkbox (1699633783417579410) -->
-    <skip />
-    <!-- no translation found for send_to_voicemail_view (4299389800446371057) -->
-    <skip />
-    <!-- no translation found for default_ringtone (3998437793418131562) -->
-    <skip />
-    <!-- no translation found for addPicture (7010902051370875352) -->
-    <skip />
-    <!-- no translation found for removePicture (2322840177008417519) -->
-    <skip />
-    <!-- no translation found for noContacts (7515781671301309298) -->
-    <skip />
-    <!-- no translation found for noContactsWithPhoneNumbers (3105170743499016241) -->
-    <skip />
-    <!-- no translation found for noFavorites (7957536428532225634) -->
-    <skip />
-    <!-- no translation found for select_group_title (8821785850959403592) -->
-    <skip />
-    <!-- no translation found for groupEmpty (1733723844723885242) -->
-    <skip />
-    <!-- no translation found for showAllGroups (4524662887308889400) -->
-    <skip />
-    <!-- no translation found for syncAllGroups (8415112909188430211) -->
-    <skip />
-    <!-- no translation found for groupNameMyContacts (1298661863710879264) -->
-    <skip />
-    <!-- no translation found for groupNameWithPhones (4051877952712463294) -->
-    <skip />
-    <!-- no translation found for contactCreatedToast (5309869712901550955) -->
-    <skip />
-    <!-- no translation found for contactSavedToast (1228932477738680325) -->
-    <skip />
-    <!-- no translation found for listSeparatorCallNumber (9142725721395758026) -->
-    <skip />
-    <!-- no translation found for listSeparatorSendSmsMms (8878062000446372333) -->
-    <skip />
-    <!-- no translation found for listSeparatorSendEmail (3813935531061488274) -->
-    <skip />
-    <!-- no translation found for listSeparatorSendIm (3885045096980470847) -->
-    <skip />
-    <!-- no translation found for listSeparatorMapAddress (7749519405208811410) -->
-    <skip />
-    <!-- no translation found for listSeparatorOrganizations (5731454670822188295) -->
-    <skip />
-    <!-- no translation found for listSeparatorOtherInformation (3399084175925138065) -->
-    <skip />
-    <!-- no translation found for contactsIconLabel (392729648321810378) -->
-    <skip />
-    <!-- no translation found for contactsFavoritesLabel (6274307000699136596) -->
-    <skip />
-    <!-- no translation found for dialerIconLabel (396765298398417139) -->
-    <skip />
-    <!-- no translation found for recentCallsIconLabel (7432201162713288826) -->
-    <skip />
-    <!-- no translation found for liveFolderAll (5991510762804226223) -->
-    <skip />
-    <!-- no translation found for liveFolderFavorites (8755759874416875970) -->
-    <skip />
-    <!-- no translation found for liveFolderPhone (3440101264360244544) -->
-    <skip />
-    <!-- no translation found for menu_sendTextMessage (3055919380461974147) -->
-    <skip />
-    <!-- no translation found for recentCalls_callNumber (924407199258234369) -->
-    <skip />
-    <!-- no translation found for recentCalls_editNumberBeforeCall (7859145185424954030) -->
-    <skip />
-    <!-- no translation found for recentCalls_addToContact (6950267092567953305) -->
-    <skip />
-    <!-- no translation found for recentCalls_removeFromRecentList (5273789011391059975) -->
-    <skip />
-    <!-- no translation found for recentCalls_deleteAll (425798199678070888) -->
-    <skip />
-    <!-- no translation found for recentCalls_empty (7787624895504983911) -->
-    <skip />
-    <!-- no translation found for imei (1052536402066249452) -->
-    <skip />
-    <!-- no translation found for voicemail (1135686231023059817) -->
-    <skip />
-    <!-- no translation found for unknown (6231893925212017656) -->
-    <skip />
-    <!-- no translation found for private_num (3065614133902647350) -->
-    <skip />
-    <!-- no translation found for dialerKeyboardHintText (2013777173021862941) -->
-    <skip />
-    <!-- no translation found for simContacts_emptyLoading (4828419758306519589) -->
-    <skip />
-    <!-- no translation found for simContacts_title (4162577066960174009) -->
-    <skip />
-    <!-- no translation found for contactsSyncPlug (1549212649158409469) -->
-    <skip />
-    <!-- no translation found for noContactsHelpText (6155730972704522463) -->
-    <skip />
-    <!-- no translation found for seclectSyncGroups_title (7675331949118054911) -->
-    <skip />
-    <!-- no translation found for liveFolder_all_label (3716551598022430019) -->
-    <skip />
-    <!-- no translation found for liveFolder_favorites_label (9053985659909059395) -->
-    <skip />
-    <!-- no translation found for liveFolder_phones_label (8943901400107401868) -->
-    <skip />
+    <string name="otherLabelsGroup">"Ostatní"</string>
+  <string-array name="otherLabels">
+    <item>"Organizace"</item>
+    <item>"Poznámka"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Žádné fotografie"</string>
+    <string name="photoPickerNotFoundText">"V telefonu nejsou žádné fotografie."</string>
+    <string name="attachToContact">"Ikona kontaktu"</string>
+    <string name="customLabelPickerTitle">"Vlastní název štítku"</string>
+    <string name="menu_displayGroup">"Zobrazit skupinu"</string>
+    <string name="syncGroupPreference">"Upravit synchronizované skupiny"</string>
+    <string name="importFromSim">"Importovat kontakty"</string>
+    <string name="send_to_voicemail_checkbox">"Přesměrovat hovory přímo do hlasové schránky."</string>
+    <string name="send_to_voicemail_view">"Hovory jsou přesměrovány přímo do hlasové schránky."</string>
+    <string name="default_ringtone">"Výchozí"</string>
+    <string name="addPicture">"Přidat ikonu"</string>
+    <string name="removePicture">"Odstranit ikonu"</string>
+    <string name="noContacts">"Žádné kontakty."</string>
+    <string name="noContactsWithPhoneNumbers">"Ke kontaktům nejsou přiřazena žádná telefonní čísla."</string>
+    <string name="noFavorites">"Žádné oblíbené položky."</string>
+    <string name="select_group_title">"Skupiny"</string>
+    <string name="groupEmpty">"Skupina <xliff:g id="GROUPNAME">%s</xliff:g> je prázdná."</string>
+    <string name="showAllGroups">"Všechny kontakty"</string>
+    <string name="syncAllGroups">"Synchronizovat všechny kontakty"</string>
+    <string name="groupNameMyContacts">"Moje kontakty"</string>
+    <string name="groupNameWithPhones">"Kontakty s telefonním číslem"</string>
+    <string name="contactCreatedToast">"Kontakt byl vytvořen."</string>
+    <string name="contactSavedToast">"Kontakt byl uložen."</string>
+    <string name="listSeparatorCallNumber">"Vytočit číslo"</string>
+    <string name="listSeparatorSendSmsMms">"Odeslat SMS nebo MMS"</string>
+    <string name="listSeparatorSendEmail">"Odeslat e-mail"</string>
+    <string name="listSeparatorSendIm">"Odeslat zprávu chatu"</string>
+    <string name="listSeparatorMapAddress">"Adresa na mapě"</string>
+    <string name="listSeparatorOrganizations">"Organizace"</string>
+    <string name="listSeparatorOtherInformation">"Ostatní informace"</string>
+    <string name="contactsIconLabel">"Kontakty"</string>
+    <string name="contactsFavoritesLabel">"Oblíbené"</string>
+    <string name="dialerIconLabel">"Vytáčení"</string>
+    <string name="recentCallsIconLabel">"Hovory"</string>
+    <string name="liveFolderAll">"Všechny kontakty"</string>
+    <string name="liveFolderFavorites">"Kontakty označené hvězdičkou"</string>
+    <string name="liveFolderPhone">"Kontakty s telefonními čísly"</string>
+    <string name="menu_sendTextMessage">"Odeslat zprávu SMS"</string>
+    <string name="recentCalls_callNumber">"Volat kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Před voláním upravit číslo"</string>
+    <string name="recentCalls_addToContact">"Přidat mezi kontakty"</string>
+    <string name="recentCalls_removeFromRecentList">"Odstranit z hovorů"</string>
+    <string name="recentCalls_deleteAll">"Vymazat hovory"</string>
+    <string name="recentCalls_empty">"Záznam hovorů je prázdný."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Hlasová schránka"</string>
+    <string name="unknown">"Neznámé číslo"</string>
+    <string name="private_num">"Soukromé číslo"</string>
+    <string name="dialerKeyboardHintText">"Číslo vytočíte pomocí klávesnice"</string>
+    <string name="dialerDialpadHintText">"Vytočením přidat hovor"</string>
+    <string name="simContacts_emptyLoading">"Načítání z karty SIM..."</string>
+    <string name="simContacts_title">"Kontakty na kartě SIM"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synchronizujte své kontakty Google!"</font>" "\n"Po synchronizaci telefonu budete mít kontaktní informace vždy u sebe."</string>
+    <string name="noContactsHelpText">"Nemáte žádné kontakty."\n\n"Chcete-li přidat kontakty, stiskněte tlačítko "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a vyberte:"\n\n"        "\n<li><font fgcolor="#ffffffff"><b>"Upravit synchronizované skupiny"</b></font>", chcete-li přidat kontakty z nového nebo existujícího účtu Google"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", chcete-li vytvořit zcela nový kontakt"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Importovat kontakty"</b></font>", chcete-li přidat kontakty ze své karty SIM"\n</li></string>
+    <string name="seclectSyncGroups_title">"Vyberte skupiny, které chcete synchronizovat"</string>
+    <string name="liveFolder_all_label">"Všechny kontakty"</string>
+    <string name="liveFolder_favorites_label">"S hvězdičkou"</string>
+    <string name="liveFolder_phones_label">"Telefony"</string>
+    <string name="dialer_useDtmfDialpad">"Použít dotykovou tónovou klávesnici"</string>
+    <string name="dialer_returnToInCallScreen">"Návrat k probíhajícímu hovoru"</string>
+    <string name="dialer_addAnotherCall">"Přidat hovor"</string>
 </resources>
index 0b98318..e826bf6 100644 (file)
     <string name="editContact_title_edit">"Kontakt bearbeiten"</string>
     <string name="editContact_title_insert">"Neuer Kontakt"</string>
     <string name="menu_addItem">"Weitere Informationen"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
     <string name="label_notes">"Notizen"</string>
     <string name="label_ringtone">"Klingelton"</string>
     <string name="ghostData_name">"Vor- und Nachname"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
+    <skip />
     <string name="ghostData_company">"Unternehmen"</string>
     <string name="ghostData_title">"Position"</string>
     <string name="ghostData_im">"IM-Name"</string>
@@ -64,7 +68,6 @@
     <string name="menu_displayGroup">"Gruppe anzeigen"</string>
     <string name="syncGroupPreference">"Synchron. bearbeiten"</string>
     <string name="importFromSim">"Kontakte importieren"</string>
-    <string name="alphabet">"ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="send_to_voicemail_checkbox">"Anrufe direkt an Mailbox senden"</string>
     <string name="send_to_voicemail_view">"Anrufe werden direkt an Mailbox gesendet"</string>
     <string name="default_ringtone">"Standard"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
new file mode 100644 (file)
index 0000000..03ba12e
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Contactos"</string>
+    <string name="shortcutContact">"Contacto"</string>
+    <string name="starredList">"Destacados"</string>
+    <string name="frequentList">"Frecuentes"</string>
+    <string name="strequentList">"Favoritos"</string>
+    <string name="viewContactTitle">"Detalles del contacto"</string>
+    <string name="viewContactDesription">"Ver contacto"</string>
+    <string name="editContactDescription">"Editar contacto"</string>
+    <string name="insertContactDescription">"Crear contacto"</string>
+    <string name="searchHint">"Buscar contactos"</string>
+    <string name="menu_newContact">"Contacto nuevo"</string>
+    <string name="menu_viewContact">"Ver contacto"</string>
+    <string name="menu_callNumber">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Añadir a \"Favoritos\""</string>
+    <string name="menu_removeStar">"Eliminar de \"Favoritos\""</string>
+    <string name="menu_showBarcode">"Mostrar código de barras"</string>
+    <string name="menu_editContact">"Editar contacto"</string>
+    <string name="menu_deleteContact">"Eliminar contacto"</string>
+    <string name="menu_call">"Llamar"</string>
+    <string name="menu_sendSMS">"Enviar SMS/MMS"</string>
+    <string name="menu_sendEmail">"Enviar mensaje de correo electrónico"</string>
+    <string name="menu_viewAddress">"Dirección en mapa"</string>
+    <string name="menu_makeDefaultNumber">"Convertir en número predeterminado"</string>
+    <string name="deleteConfirmation_title">"Suprimir"</string>
+    <string name="deleteConfirmation">"El contacto se eliminará."</string>
+    <string name="menu_done">"Guardar"</string>
+    <string name="menu_doNotSave">"Descartar cambios"</string>
+    <string name="button_save">"Guardar"</string>
+    <string name="button_discard">"Descartar cambios"</string>
+    <string name="editContact_title_edit">"Editar contacto"</string>
+    <string name="editContact_title_insert">"Contacto nuevo"</string>
+    <string name="menu_addItem">"Más información"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
+    <string name="label_notes">"Notas"</string>
+    <string name="label_ringtone">"Tono"</string>
+    <string name="ghostData_name">"Nombre y apellido"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
+    <skip />
+    <string name="ghostData_company">"Empresa"</string>
+    <string name="ghostData_title">"Posición"</string>
+    <string name="ghostData_im">"Nombre de MI"</string>
+    <string name="ghostData_notes">"Mi nota"</string>
+    <string name="ghostData_phone">"Número de teléfono"</string>
+    <string name="ghostData_email">"Dirección de correo electrónico"</string>
+    <string name="ghostData_postal">"Dirección postal"</string>
+    <string name="invalidContactMessage">"Ese contacto no existe."</string>
+    <string name="pickerNewContactHeader">"Crear contacto nuevo"</string>
+    <string name="selectLabel">"Seleccionar etiqueta"</string>
+    <string name="phoneLabelsGroup">"Teléfono"</string>
+    <string name="emailLabelsGroup">"Correo electrónico"</string>
+    <string name="imLabelsGroup">"MI"</string>
+    <string name="postalLabelsGroup">"Dirección postal"</string>
+    <string name="otherLabelsGroup">"Otros"</string>
+  <string-array name="otherLabels">
+    <item>"Organización"</item>
+    <item>"Nota"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Ninguna imagen"</string>
+    <string name="photoPickerNotFoundText">"No hay ninguna imagen disponible en el teléfono."</string>
+    <string name="attachToContact">"Icono de contacto"</string>
+    <string name="customLabelPickerTitle">"Nombre de etiqueta personalizada"</string>
+    <string name="menu_displayGroup">"Mostrar grupo"</string>
+    <string name="syncGroupPreference">"Editar grupos de sincronización"</string>
+    <string name="importFromSim">"Importar contactos"</string>
+    <string name="send_to_voicemail_checkbox">"Enviar llamadas directamente al buzón de voz"</string>
+    <string name="send_to_voicemail_view">"Las llamadas se envían directamente al buzón de voz."</string>
+    <string name="default_ringtone">"Predeterminado"</string>
+    <string name="addPicture">"Añadir icono"</string>
+    <string name="removePicture">"Eliminar icono"</string>
+    <string name="noContacts">"No hay ningún contacto."</string>
+    <string name="noContactsWithPhoneNumbers">"No hay ningún contacto con número de teléfono."</string>
+    <string name="noFavorites">"No hay ningún favorito."</string>
+    <string name="select_group_title">"Grupos"</string>
+    <string name="groupEmpty">"El grupo \"<xliff:g id="GROUPNAME">%s</xliff:g>\" está vacío."</string>
+    <string name="showAllGroups">"Todos los contactos"</string>
+    <string name="syncAllGroups">"Sincronizar todos los contactos"</string>
+    <string name="groupNameMyContacts">"Mis contactos"</string>
+    <string name="groupNameWithPhones">"Contactos con números de teléfono"</string>
+    <string name="contactCreatedToast">"Se ha creado el contacto."</string>
+    <string name="contactSavedToast">"El contacto se ha guardado."</string>
+    <string name="listSeparatorCallNumber">"Marcar número"</string>
+    <string name="listSeparatorSendSmsMms">"Enviar SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Enviar mensaje de correo electrónico"</string>
+    <string name="listSeparatorSendIm">"Enviar mensaje instantáneo"</string>
+    <string name="listSeparatorMapAddress">"Dirección en mapa"</string>
+    <string name="listSeparatorOrganizations">"Organizaciones"</string>
+    <string name="listSeparatorOtherInformation">"Otra información"</string>
+    <string name="contactsIconLabel">"Contactos"</string>
+    <string name="contactsFavoritesLabel">"Favoritos"</string>
+    <string name="dialerIconLabel">"Marcación"</string>
+    <string name="recentCallsIconLabel">"Registro de llamadas"</string>
+    <string name="liveFolderAll">"Todos los contactos"</string>
+    <string name="liveFolderFavorites">"Contactos destacados"</string>
+    <string name="liveFolderPhone">"Contactos con números de teléfono"</string>
+    <string name="menu_sendTextMessage">"Enviar mensaje SMS"</string>
+    <string name="recentCalls_callNumber">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Editar número antes de llamar"</string>
+    <string name="recentCalls_addToContact">"Añadir a contactos"</string>
+    <string name="recentCalls_removeFromRecentList">"Eliminar del registro de llamadas"</string>
+    <string name="recentCalls_deleteAll">"Borrar registro de llamadas"</string>
+    <string name="recentCalls_empty">"El registro de llamadas está vacío."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Buzón de voz"</string>
+    <string name="unknown">"Desconocidos"</string>
+    <string name="private_num">"Número privado"</string>
+    <string name="dialerKeyboardHintText">"Utilizar teclado para marcar"</string>
+    <string name="dialerDialpadHintText">"Marcar para añadir una llamada"</string>
+    <string name="simContacts_emptyLoading">"Cargando desde tarjeta SIM…"</string>
+    <string name="simContacts_title">"Contactos de tarjeta SIM"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Sincroniza tus contactos de Google"</font>" "\n"Después de sincronizarlos con tu teléfono, podrás acceder a tus contactos desde cualquier lugar."</string>
+    <string name="noContactsHelpText">"No tienes ningún contacto."\n\n"Para añadir contactos, pulsa "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" y selecciona:"\n\n"        "\n<li><font fgcolor="#ffffffff"><b>"Editar grupos de sincronización"</b></font>" para añadir contactos de una cuenta de Google nueva o existente"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un contacto desde cero"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para añadir contactos de tu tarjeta SIM"\n</li></string>
+    <string name="seclectSyncGroups_title">"Seleccionar grupos para la sincronización"</string>
+    <string name="liveFolder_all_label">"Todos los contactos"</string>
+    <string name="liveFolder_favorites_label">"Destacados"</string>
+    <string name="liveFolder_phones_label">"Teléfonos"</string>
+    <string name="dialer_useDtmfDialpad">"Usar el teclado de tonos"</string>
+    <string name="dialer_returnToInCallScreen">"Volver a la llamada en curso"</string>
+    <string name="dialer_addAnotherCall">"Añadir llamada"</string>
+</resources>
index a84d26e..aeed55f 100644 (file)
     <string name="editContact_title_edit">"Modifier le contact"</string>
     <string name="editContact_title_insert">"Nouveau contact"</string>
     <string name="menu_addItem">"Plus d\'infos"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
     <string name="label_notes">"Remarques"</string>
     <string name="label_ringtone">"Sonnerie"</string>
     <string name="ghostData_name">"Premier et dernier"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
+    <skip />
     <string name="ghostData_company">"Société"</string>
     <string name="ghostData_title">"Position"</string>
     <string name="ghostData_im">"Nom du compte de MI"</string>
index 9426b69..b0a8f54 100644 (file)
     <string name="editContact_title_edit">"Modifica contatto"</string>
     <string name="editContact_title_insert">"Nuovo contatto"</string>
     <string name="menu_addItem">"Altre info"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
     <string name="label_notes">"Note"</string>
     <string name="label_ringtone">"Suoneria"</string>
     <string name="ghostData_name">"Nome e cognome"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
+    <skip />
     <string name="ghostData_company">"Società"</string>
     <string name="ghostData_title">"Mansione"</string>
     <string name="ghostData_im">"Nome IM"</string>
index 3b911fb..d5ec049 100644 (file)
     <string name="menu_newContact">"新しい連絡先"</string>
     <string name="menu_viewContact">"連絡先を表示"</string>
     <string name="menu_callNumber">"<xliff:g id="NAME">%s</xliff:g>さんに発信"</string>
-    <!-- no translation found for menu_addStar (2908478235715404876) -->
-    <skip />
-    <!-- no translation found for menu_removeStar (5844227078364227030) -->
-    <skip />
-    <!-- no translation found for menu_showBarcode (309973637178814132) -->
-    <skip />
+    <string name="menu_addStar">"お気に入りに追加"</string>
+    <string name="menu_removeStar">"お気に入りから削除"</string>
+    <string name="menu_showBarcode">"バーコードを表示"</string>
     <string name="menu_editContact">"連絡先を編集"</string>
     <string name="menu_deleteContact">"連絡先を削除"</string>
     <string name="menu_call">"発信"</string>
     <string name="menu_sendSMS">"SMS/MMSを送信"</string>
     <string name="menu_sendEmail">"メールを送信"</string>
-    <string name="menu_viewAddress">"å\9c°å\9b³ã\81®ä½\8fæ\89\80"</string>
+    <string name="menu_viewAddress">"å\9c°å\9b³ã\81§ã\81¿ã\82\8b"</string>
     <string name="menu_makeDefaultNumber">"デフォルトの番号に設定"</string>
     <string name="deleteConfirmation_title">"削除"</string>
     <string name="deleteConfirmation">"この連絡先を削除します。"</string>
     <string name="button_discard">"変更を破棄"</string>
     <string name="editContact_title_edit">"連絡先を編集"</string>
     <string name="editContact_title_insert">"新しい連絡先"</string>
-    <string name="menu_addItem">"詳細情報"</string>
-    <string name="label_phonetic_name">フリガナ</string>
+    <string name="menu_addItem">"情報を追加"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
     <string name="label_notes">"メモ"</string>
     <string name="label_ringtone">"着信音"</string>
-    <string name="ghostData_name">"氏名を入力してください"</string>
-    <string name="ghostData_phonetic_name">フリガナ</string>
+    <string name="ghostData_name">"名前"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
+    <skip />
     <string name="ghostData_company">"会社"</string>
     <string name="ghostData_title">"役職"</string>
     <string name="ghostData_im">"IM名"</string>
     <string name="errorDialogTitle">"写真なし"</string>
     <string name="photoPickerNotFoundText">"使用できる写真が携帯電話にありません。"</string>
     <string name="attachToContact">"連絡先のアイコン"</string>
-    <!-- no translation found for customLabelPickerTitle (1081475101983255212) -->
-    <skip />
+    <string name="customLabelPickerTitle">"独自のラベル名"</string>
     <string name="menu_displayGroup">"グループを表示"</string>
     <string name="syncGroupPreference">"同期グループを編集"</string>
     <string name="importFromSim">"連絡先をインポート"</string>
-    <string name="alphabet">"ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
-    <string name="send_to_voicemail_checkbox">"着信を直接ボイスメールに転送する"</string>
+    <string name="send_to_voicemail_checkbox">"電話はボイスメールに送信する"</string>
     <string name="send_to_voicemail_view">"着信はボイスメールに直接転送されます。"</string>
     <string name="default_ringtone">"デフォルト"</string>
     <string name="addPicture">"アイコンを追加"</string>
     <string name="noContacts">"連絡先がありません。"</string>
     <string name="noContactsWithPhoneNumbers">"電話番号のある連絡先がありません。"</string>
     <string name="noFavorites">"お気に入りがありません。"</string>
-    <!-- no translation found for select_group_title (7955698611959835612) -->
-    <skip />
+    <string name="select_group_title">"グループ"</string>
     <string name="groupEmpty">"「<xliff:g id="GROUPNAME">%s</xliff:g>」グループには何も登録されていません。"</string>
     <string name="showAllGroups">"すべての連絡先"</string>
     <string name="syncAllGroups">"全連絡先の同期を取る"</string>
-    <string name="groupNameMyContacts">"連絡先リスト"</string>
+    <string name="groupNameMyContacts">"Myコンタクト"</string>
     <string name="groupNameWithPhones">"電話番号のある連絡先"</string>
     <string name="contactCreatedToast">"連絡先を作成しました。"</string>
     <string name="contactSavedToast">"連絡先を保存しました。"</string>
     <string name="listSeparatorSendSmsMms">"SMS/MMSを送信"</string>
     <string name="listSeparatorSendEmail">"メールを送信"</string>
     <string name="listSeparatorSendIm">"インスタントメッセージを送信"</string>
-    <string name="listSeparatorMapAddress">"地図の住所"</string>
+    <string name="listSeparatorMapAddress">"住所を地図でみる"</string>
     <string name="listSeparatorOrganizations">"組織"</string>
     <string name="listSeparatorOtherInformation">"その他の情報"</string>
     <string name="contactsIconLabel">"連絡先"</string>
     <string name="contactsFavoritesLabel">"お気に入り"</string>
-    <string name="dialerIconLabel">"ダイヤラ"</string>
+    <string name="dialerIconLabel">"通話"</string>
     <string name="recentCallsIconLabel">"通話ログ"</string>
-    <!-- no translation found for liveFolderAll (4789010460767506206) -->
-    <skip />
-    <!-- no translation found for liveFolderFavorites (3100957542927222282) -->
-    <skip />
-    <!-- no translation found for liveFolderPhone (3739376066610926780) -->
-    <skip />
+    <string name="liveFolderAll">"すべての連絡先"</string>
+    <string name="liveFolderFavorites">"スター付きの連絡先"</string>
+    <string name="liveFolderPhone">"電話番号が登録されている連絡先"</string>
     <string name="menu_sendTextMessage">"SMSメッセージを送信"</string>
     <string name="recentCalls_callNumber">"<xliff:g id="NAME">%s</xliff:g>さんに発信"</string>
     <string name="recentCalls_editNumberBeforeCall">"番号を編集して発信"</string>
     <string name="unknown">"不明"</string>
     <string name="private_num">"非通知番号"</string>
     <string name="dialerKeyboardHintText">"番号をキーボードから入力してください"</string>
-    <!-- no translation found for dialerDialpadHintText (5824490365898349041) -->
-    <skip />
+    <string name="dialerDialpadHintText">"ダイヤルして通話を追加します"</string>
     <string name="simContacts_emptyLoading">"SIMカードからロードしています..."</string>
     <string name="simContacts_title">"SIMカードの連絡先"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Googleコンタクトと同期を取ります。"</font>" "\n"同期が終わると、いつでもこの携帯電話で連絡先を使用できます。"</string>
     <string name="noContactsHelpText">"登録されている連絡先がありません。"\n\n"連絡先を追加するには["<font fgcolor="#ffffffff"><b>"メニュー"</b></font>"]を押して、次のどれかを選択します。"\n\n"        "\n<li>"["<font fgcolor="#ffffffff"><b>"同期グループを編集"</b></font>"]-新規または既存のGoogleアカウントから追加する場合"\n</li>\n"        "\n<li>"["<font fgcolor="#ffffffff"><b>"新しい連絡先"</b></font>"]-最初から新しい連絡先を作成する場合"\n</li>\n"        "\n<li>"["<font fgcolor="#ffffffff"><b>"連絡先をインポート"</b></font>"]-SIMカードから連絡先を追加する場合"\n</li></string>
     <string name="seclectSyncGroups_title">"同期を取るグループを選択"</string>
-    <!-- no translation found for liveFolder_all_label (1552523730090319259) -->
-    <skip />
-    <!-- no translation found for liveFolder_favorites_label (2674341514070517105) -->
-    <skip />
-    <!-- no translation found for liveFolder_phones_label (1709786878793436245) -->
-    <skip />
-    <!-- no translation found for dialer_useDtmfDialpad (1707548397435075040) -->
-    <skip />
-    <!-- no translation found for dialer_returnToInCallScreen (3719386377550913067) -->
-    <skip />
-    <!-- no translation found for dialer_addAnotherCall (4205688819890074468) -->
-    <skip />
+    <string name="liveFolder_all_label">"すべての連絡先"</string>
+    <string name="liveFolder_favorites_label">"スター付き"</string>
+    <string name="liveFolder_phones_label">"電話"</string>
+    <string name="dialer_useDtmfDialpad">"タッチ トーン キーパッドを使用する"</string>
+    <string name="dialer_returnToInCallScreen">"保留中の通話に戻る"</string>
+    <string name="dialer_addAnotherCall">"通話を追加"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
new file mode 100644 (file)
index 0000000..bf407f9
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Contactpersonen"</string>
+    <string name="shortcutContact">"Contactpersonen"</string>
+    <string name="starredList">"Met ster"</string>
+    <string name="frequentList">"Vaak"</string>
+    <string name="strequentList">"Favorieten"</string>
+    <string name="viewContactTitle">"Details van contactpersoon"</string>
+    <string name="viewContactDesription">"Contactpersoon weergeven"</string>
+    <string name="editContactDescription">"Contactpersoon bewerken"</string>
+    <string name="insertContactDescription">"Contactpersoon maken"</string>
+    <string name="searchHint">"Contactpersonen zoeken"</string>
+    <string name="menu_newContact">"Nieuwe contactpersoon"</string>
+    <string name="menu_viewContact">"Contactpersoon weergeven"</string>
+    <string name="menu_callNumber">"<xliff:g id="NAME">%s</xliff:g> bellen"</string>
+    <string name="menu_addStar">"Toevoegen aan favorieten"</string>
+    <string name="menu_removeStar">"Uit favorieten verwijderen"</string>
+    <string name="menu_showBarcode">"Barcode weergeven"</string>
+    <string name="menu_editContact">"Contactpersoon bewerken"</string>
+    <string name="menu_deleteContact">"Contactpersoon verwijderen"</string>
+    <string name="menu_call">"Bellen"</string>
+    <string name="menu_sendSMS">"SMS/MMS verzenden"</string>
+    <string name="menu_sendEmail">"E-mail verzenden"</string>
+    <string name="menu_viewAddress">"Adres op kaart weergeven"</string>
+    <string name="menu_makeDefaultNumber">"Als standaardnummer instellen"</string>
+    <string name="deleteConfirmation_title">"Verwijderen"</string>
+    <string name="deleteConfirmation">"Deze contactpersoon wordt verwijderd."</string>
+    <string name="menu_done">"Opslaan"</string>
+    <string name="menu_doNotSave">"Wijzigingen ongedaan maken"</string>
+    <string name="button_save">"Opslaan"</string>
+    <string name="button_discard">"Wijzigingen ongedaan maken"</string>
+    <string name="editContact_title_edit">"Contactpersoon bewerken"</string>
+    <string name="editContact_title_insert">"Nieuwe contactpersoon"</string>
+    <string name="menu_addItem">"Meer informatie"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
+    <string name="label_notes">"Opmerkingen"</string>
+    <string name="label_ringtone">"Beltoon"</string>
+    <string name="ghostData_name">"Voor- en achternaam"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
+    <skip />
+    <string name="ghostData_company">"Bedrijf"</string>
+    <string name="ghostData_title">"Positie"</string>
+    <string name="ghostData_im">"Chatnaam"</string>
+    <string name="ghostData_notes">"Mijn opmerking"</string>
+    <string name="ghostData_phone">"Telefoonnummer"</string>
+    <string name="ghostData_email">"E-mailadres"</string>
+    <string name="ghostData_postal">"Postadres"</string>
+    <string name="invalidContactMessage">"De contactpersoon bestaat niet."</string>
+    <string name="pickerNewContactHeader">"Nieuwe contactpersoon maken"</string>
+    <string name="selectLabel">"Label selecteren"</string>
+    <string name="phoneLabelsGroup">"Telefoon"</string>
+    <string name="emailLabelsGroup">"E-mailadres"</string>
+    <string name="imLabelsGroup">"Chat"</string>
+    <string name="postalLabelsGroup">"Postadres"</string>
+    <string name="otherLabelsGroup">"Overig"</string>
+  <string-array name="otherLabels">
+    <item>"Organisatie"</item>
+    <item>"Opmerking"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Geen foto\'s"</string>
+    <string name="photoPickerNotFoundText">"Er zijn geen foto\'s beschikbaar op de telefoon."</string>
+    <string name="attachToContact">"Pictogram voor contactpersoon"</string>
+    <string name="customLabelPickerTitle">"Aangepaste labelnaam"</string>
+    <string name="menu_displayGroup">"Groep weergeven"</string>
+    <string name="syncGroupPreference">"Gesynchroniseerde groepen bewerken"</string>
+    <string name="importFromSim">"Contactpersonen importeren"</string>
+    <string name="send_to_voicemail_checkbox">"Oproepen rechtstreeks naar voicemail."</string>
+    <string name="send_to_voicemail_view">"Oproepen worden rechtstreeks naar voicemail verzonden."</string>
+    <string name="default_ringtone">"Standaard"</string>
+    <string name="addPicture">"Pictogram toevoegen"</string>
+    <string name="removePicture">"Pictogram verwijderen"</string>
+    <string name="noContacts">"Geen contactpersonen."</string>
+    <string name="noContactsWithPhoneNumbers">"Geen contactpersonen met telefoonnummers."</string>
+    <string name="noFavorites">"Geen favorieten."</string>
+    <string name="select_group_title">"Groepen"</string>
+    <string name="groupEmpty">"De groep \'<xliff:g id="GROUPNAME">%s</xliff:g>\' is leeg."</string>
+    <string name="showAllGroups">"Alle contactpersonen"</string>
+    <string name="syncAllGroups">"Alle contactpersonen synchroniseren"</string>
+    <string name="groupNameMyContacts">"Mijn contactpersonen"</string>
+    <string name="groupNameWithPhones">"Contactpersonen met telefoonnummers"</string>
+    <string name="contactCreatedToast">"Contactpersoon is gemaakt."</string>
+    <string name="contactSavedToast">"Contactpersoon opgeslagen."</string>
+    <string name="listSeparatorCallNumber">"Nummer bellen"</string>
+    <string name="listSeparatorSendSmsMms">"SMS/MMS verzenden"</string>
+    <string name="listSeparatorSendEmail">"E-mail verzenden"</string>
+    <string name="listSeparatorSendIm">"Chatbericht verzenden"</string>
+    <string name="listSeparatorMapAddress">"Adres op kaart weergeven"</string>
+    <string name="listSeparatorOrganizations">"Organisaties"</string>
+    <string name="listSeparatorOtherInformation">"Overige informatie"</string>
+    <string name="contactsIconLabel">"Contactpersonen"</string>
+    <string name="contactsFavoritesLabel">"Favorieten"</string>
+    <string name="dialerIconLabel">"Dialer"</string>
+    <string name="recentCallsIconLabel">"Gesprekslogboek"</string>
+    <string name="liveFolderAll">"Alle contactpersonen"</string>
+    <string name="liveFolderFavorites">"Contactpersonen met ster"</string>
+    <string name="liveFolderPhone">"Contactpersonen met telefoonnummers"</string>
+    <string name="menu_sendTextMessage">"SMS-bericht verzenden"</string>
+    <string name="recentCalls_callNumber">"<xliff:g id="NAME">%s</xliff:g> bellen"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Nummer bewerken voor bellen"</string>
+    <string name="recentCalls_addToContact">"Toevoegen aan contactpersonen"</string>
+    <string name="recentCalls_removeFromRecentList">"Verwijderen uit gesprekslogboek"</string>
+    <string name="recentCalls_deleteAll">"Gesprekslogboek wissen"</string>
+    <string name="recentCalls_empty">"Gesprekslogboek is leeg."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Voicemail"</string>
+    <string name="unknown">"Onbekend"</string>
+    <string name="private_num">"Privénummer"</string>
+    <string name="dialerKeyboardHintText">"Toetsen gebruiken om te bellen"</string>
+    <string name="dialerDialpadHintText">"Bellen om een oproep toe te voegen"</string>
+    <string name="simContacts_emptyLoading">"Laden vanaf SIM-kaart..."</string>
+    <string name="simContacts_title">"Contactpersonen op SIM-kaart"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synchroniseer uw Google-contactpersonen!"</font>" "\n"Zodra uw telefoon is gesynchroniseerd, heeft u uw contactpersonen altijd ter beschikking."</string>
+    <string name="noContactsHelpText">"U heeft geen contactpersonen."\n\n"Als u contactpersonen wilt toevoegen, drukt u op "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" en selecteert u:"\n\n"        "\n<li><font fgcolor="#ffffffff"><b>"Gesynchroniseerde groepen bewerken"</b></font>" als u contactpersonen vanuit een nieuwe of bestaande Google-account wilt toevoegen."\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Nieuwe contactpersoon"</b></font>" als u een nieuwe contactpersoon wilt invoeren"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Contactpersonen importeren"</b></font>" als u contactpersonen wilt toevoegen vanaf uw SIM-kaart"\n</li></string>
+    <string name="seclectSyncGroups_title">"Groepen selecteren om te synchroniseren"</string>
+    <string name="liveFolder_all_label">"Alle contactpersonen"</string>
+    <string name="liveFolder_favorites_label">"Met ster"</string>
+    <string name="liveFolder_phones_label">"Telefoons"</string>
+    <string name="dialer_useDtmfDialpad">"Toetsen voor toonkiezen gebruiken"</string>
+    <string name="dialer_returnToInCallScreen">"Terug naar actief gesprek"</string>
+    <string name="dialer_addAnotherCall">"Oproep toevoegen"</string>
+</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
new file mode 100644 (file)
index 0000000..301b9dc
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Kontakty"</string>
+    <string name="shortcutContact">"Kontakt"</string>
+    <string name="starredList">"Oznaczony gwiazdką"</string>
+    <string name="frequentList">"Częste"</string>
+    <string name="strequentList">"Ulubione"</string>
+    <string name="viewContactTitle">"Szczegóły kontaktu"</string>
+    <string name="viewContactDesription">"Wyświetl kontakt"</string>
+    <string name="editContactDescription">"Edytuj kontakt"</string>
+    <string name="insertContactDescription">"Utwórz kontakt"</string>
+    <string name="searchHint">"Przeszukuj kontakty"</string>
+    <string name="menu_newContact">"Nowy kontakt"</string>
+    <string name="menu_viewContact">"Wyświetl kontakt"</string>
+    <string name="menu_callNumber">"Zadzwoń do kontaktu <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Dodaj do ulubionych"</string>
+    <string name="menu_removeStar">"Usuń z ulubionych"</string>
+    <string name="menu_showBarcode">"Pokaż kod kreskowy"</string>
+    <string name="menu_editContact">"Edytuj kontakt"</string>
+    <string name="menu_deleteContact">"Usuń kontakt"</string>
+    <string name="menu_call">"Zadzwoń"</string>
+    <string name="menu_sendSMS">"Wyślij wiadomość SMS/MMS"</string>
+    <string name="menu_sendEmail">"Wyślij wiadomość e-mail"</string>
+    <string name="menu_viewAddress">"Pokaż adres na mapie"</string>
+    <string name="menu_makeDefaultNumber">"Ustaw ten numer jako domyślny"</string>
+    <string name="deleteConfirmation_title">"Usuń"</string>
+    <string name="deleteConfirmation">"Ten kontakt zostanie usunięty."</string>
+    <string name="menu_done">"Zapisz"</string>
+    <string name="menu_doNotSave">"Odrzuć zmiany"</string>
+    <string name="button_save">"Zapisz"</string>
+    <string name="button_discard">"Odrzuć zmiany"</string>
+    <string name="editContact_title_edit">"Edytuj kontakt"</string>
+    <string name="editContact_title_insert">"Nowy kontakt"</string>
+    <string name="menu_addItem">"Więcej informacji"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
+    <string name="label_notes">"Notatki"</string>
+    <string name="label_ringtone">"Dzwonek"</string>
+    <string name="ghostData_name">"Imię i nazwisko"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
+    <skip />
+    <string name="ghostData_company">"Firma"</string>
+    <string name="ghostData_title">"Pozycja"</string>
+    <string name="ghostData_im">"Nazwa w komunikatorze"</string>
+    <string name="ghostData_notes">"Moja notatka"</string>
+    <string name="ghostData_phone">"Numer telefonu"</string>
+    <string name="ghostData_email">"Adres e-mail"</string>
+    <string name="ghostData_postal">"Adres pocztowy"</string>
+    <string name="invalidContactMessage">"Kontakt nie istnieje."</string>
+    <string name="pickerNewContactHeader">"Utwórz nowy kontakt"</string>
+    <string name="selectLabel">"Wybierz etykietę"</string>
+    <string name="phoneLabelsGroup">"Telefon"</string>
+    <string name="emailLabelsGroup">"E-mail"</string>
+    <string name="imLabelsGroup">"Komunikatory"</string>
+    <string name="postalLabelsGroup">"Adres pocztowy"</string>
+    <string name="otherLabelsGroup">"Inne"</string>
+  <string-array name="otherLabels">
+    <item>"Organizacja"</item>
+    <item>"Notatka"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Brak zdjęć"</string>
+    <string name="photoPickerNotFoundText">"W telefonie brak dostępnych zdjęć."</string>
+    <string name="attachToContact">"Ikona kontaktu"</string>
+    <string name="customLabelPickerTitle">"Nazwa etykiety niestandardowej"</string>
+    <string name="menu_displayGroup">"Wyświetl grupę"</string>
+    <string name="syncGroupPreference">"Edytuj grupy synchronizacji"</string>
+    <string name="importFromSim">"Importuj kontakty"</string>
+    <string name="send_to_voicemail_checkbox">"Kieruj połączenia bezpośrednio do poczty głosowej."</string>
+    <string name="send_to_voicemail_view">"Połączenia są przekazywane bezpośrednio do poczty głosowej."</string>
+    <string name="default_ringtone">"Domyślny"</string>
+    <string name="addPicture">"Dodaj ikonę"</string>
+    <string name="removePicture">"Usuń ikonę"</string>
+    <string name="noContacts">"Brak kontaktów."</string>
+    <string name="noContactsWithPhoneNumbers">"Brak kontaktów z numerami telefonów."</string>
+    <string name="noFavorites">"Brak ulubionych"</string>
+    <string name="select_group_title">"Grupy"</string>
+    <string name="groupEmpty">"Grupa „<xliff:g id="GROUPNAME">%s</xliff:g>” jest pusta."</string>
+    <string name="showAllGroups">"Wszystkie kontakty"</string>
+    <string name="syncAllGroups">"Synchronizuj wszystkie kontakty"</string>
+    <string name="groupNameMyContacts">"Moje kontakty"</string>
+    <string name="groupNameWithPhones">"Kontakty z numerami telefonu"</string>
+    <string name="contactCreatedToast">"Utworzono kontakt."</string>
+    <string name="contactSavedToast">"Kontakt został zapisany."</string>
+    <string name="listSeparatorCallNumber">"Wybierz numer"</string>
+    <string name="listSeparatorSendSmsMms">"Wyślij wiadomość SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Wyślij wiadomość e-mail"</string>
+    <string name="listSeparatorSendIm">"Wyślij wiadomość błyskawiczną"</string>
+    <string name="listSeparatorMapAddress">"Pokaż adres na mapie"</string>
+    <string name="listSeparatorOrganizations">"Organizacje"</string>
+    <string name="listSeparatorOtherInformation">"Inne informacje"</string>
+    <string name="contactsIconLabel">"Kontakty"</string>
+    <string name="contactsFavoritesLabel">"Ulubione"</string>
+    <string name="dialerIconLabel">"Klawisze"</string>
+    <string name="recentCallsIconLabel">"Rejestr połączeń"</string>
+    <string name="liveFolderAll">"Wszystkie kontakty"</string>
+    <string name="liveFolderFavorites">"Kontakty oznaczone gwiazdkami"</string>
+    <string name="liveFolderPhone">"Kontakty z numerami telefonów"</string>
+    <string name="menu_sendTextMessage">"Wyślij wiadomość SMS"</string>
+    <string name="recentCalls_callNumber">"Zadzwoń do kontaktu <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Edytuj numer przed nawiązaniem połączenia"</string>
+    <string name="recentCalls_addToContact">"Dodaj do kontaktów"</string>
+    <string name="recentCalls_removeFromRecentList">"Usuń z rejestru połączeń"</string>
+    <string name="recentCalls_deleteAll">"Wyczyść rejestr połączeń"</string>
+    <string name="recentCalls_empty">"Rejestr połączeń jest pusty."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Poczta głosowa"</string>
+    <string name="unknown">"Nieznane"</string>
+    <string name="private_num">"Numer prywatny"</string>
+    <string name="dialerKeyboardHintText">"Wybierz numer za pomocą klawiatury"</string>
+    <string name="dialerDialpadHintText">"Wybierz numer, aby dodać połączenie"</string>
+    <string name="simContacts_emptyLoading">"Wczytywanie z karty SIM…"</string>
+    <string name="simContacts_title">"Kontakty z karty SIM"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Zsynchronizuj kontakty Google!"</font>" "\n"Po zsynchronizowaniu telefonu zawsze będziesz mieć kontakty pod ręką."</string>
+    <string name="noContactsHelpText">"Nie masz kontaktów."\n\n"Aby dodać kontakty, naciśnij przycisk "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" i wybierz jedną z opcji:"\n\n"        "\n<li><font fgcolor="#ffffffff"><b>"Edytuj grupy synchronizacji"</b></font>", aby dodać kontakty z nowego lub istniejącego konta Google;"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>", aby utworzyć nowy kontakt od podstaw;"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Importuj kontakty"</b></font>", aby dodać kontakty z karty SIM."\n</li></string>
+    <string name="seclectSyncGroups_title">"Wybierz grupy do zsynchronizowania"</string>
+    <string name="liveFolder_all_label">"Wszystkie kontakty"</string>
+    <string name="liveFolder_favorites_label">"Oznaczone gwiazdkami"</string>
+    <string name="liveFolder_phones_label">"Telefony"</string>
+    <string name="dialer_useDtmfDialpad">"Użyj klawiatury tonowej"</string>
+    <string name="dialer_returnToInCallScreen">"Powrót do aktywnego połączenia"</string>
+    <string name="dialer_addAnotherCall">"Dodaj połączenie"</string>
+</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
new file mode 100644 (file)
index 0000000..1c45a2d
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Контакты"</string>
+    <string name="shortcutContact">"Контакт"</string>
+    <string name="starredList">"Помеченные"</string>
+    <string name="frequentList">"Частые"</string>
+    <string name="strequentList">"Избранные"</string>
+    <string name="viewContactTitle">"Сведения о контакте"</string>
+    <string name="viewContactDesription">"Просмотреть контакт"</string>
+    <string name="editContactDescription">"Изменить контакт"</string>
+    <string name="insertContactDescription">"Создать контакт"</string>
+    <string name="searchHint">"Искать контакты"</string>
+    <string name="menu_newContact">"Создать контакт"</string>
+    <string name="menu_viewContact">"Просмотреть контакт"</string>
+    <string name="menu_callNumber">"Позвонить: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Добавить к избранному"</string>
+    <string name="menu_removeStar">"Удалить из избранного"</string>
+    <string name="menu_showBarcode">"Показать штрихкод"</string>
+    <string name="menu_editContact">"Изменить контакт"</string>
+    <string name="menu_deleteContact">"Удалить контакт"</string>
+    <string name="menu_call">"Позвонить"</string>
+    <string name="menu_sendSMS">"Отправить SMS/MMS"</string>
+    <string name="menu_sendEmail">"Отправить сообщение электронной почты"</string>
+    <string name="menu_viewAddress">"Адрес на карте"</string>
+    <string name="menu_makeDefaultNumber">"Сделать номером по умолчанию"</string>
+    <string name="deleteConfirmation_title">"Удаление"</string>
+    <string name="deleteConfirmation">"Этот контакт будет удален."</string>
+    <string name="menu_done">"Сохранить"</string>
+    <string name="menu_doNotSave">"Отменить изменения"</string>
+    <string name="button_save">"Сохранить"</string>
+    <string name="button_discard">"Отменить изменения"</string>
+    <string name="editContact_title_edit">"Изменить контакт"</string>
+    <string name="editContact_title_insert">"Создание контакта"</string>
+    <string name="menu_addItem">"Подробнее"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
+    <string name="label_notes">"Примечания"</string>
+    <string name="label_ringtone">"Мелодия звонка"</string>
+    <string name="ghostData_name">"Первый и последний"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
+    <skip />
+    <string name="ghostData_company">"Компания"</string>
+    <string name="ghostData_title">"Должность"</string>
+    <string name="ghostData_im">"Имя в чате"</string>
+    <string name="ghostData_notes">"Мое примечание"</string>
+    <string name="ghostData_phone">"Телефонный номер"</string>
+    <string name="ghostData_email">"Адрес электронной почты"</string>
+    <string name="ghostData_postal">"Почтовый адрес"</string>
+    <string name="invalidContactMessage">"Контакт не существует."</string>
+    <string name="pickerNewContactHeader">"Создать новый контакт"</string>
+    <string name="selectLabel">"Выбор ярлыка"</string>
+    <string name="phoneLabelsGroup">"Телефон"</string>
+    <string name="emailLabelsGroup">"Электронная почта"</string>
+    <string name="imLabelsGroup">"Чат"</string>
+    <string name="postalLabelsGroup">"Почтовый адрес"</string>
+    <string name="otherLabelsGroup">"Прочее"</string>
+  <string-array name="otherLabels">
+    <item>"Организация"</item>
+    <item>"Примечание"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Нет изображений"</string>
+    <string name="photoPickerNotFoundText">"На телефоне нет изображений."</string>
+    <string name="attachToContact">"Значок контакта"</string>
+    <string name="customLabelPickerTitle">"Имя персонализированного ярлыка"</string>
+    <string name="menu_displayGroup">"Показать группу"</string>
+    <string name="syncGroupPreference">"Изменить группы синхронизации"</string>
+    <string name="importFromSim">"Импортировать контакты"</string>
+    <string name="send_to_voicemail_checkbox">"Направлять вызовы прямо в голосовую почту."</string>
+    <string name="send_to_voicemail_view">"Вызовы направляются прямо в голосовую почту."</string>
+    <string name="default_ringtone">"По умолчанию"</string>
+    <string name="addPicture">"Добавить значок"</string>
+    <string name="removePicture">"Убрать значок"</string>
+    <string name="noContacts">"Нет контактов."</string>
+    <string name="noContactsWithPhoneNumbers">"Нет контактов с телефонными номерами."</string>
+    <string name="noFavorites">"Нет избранных."</string>
+    <string name="select_group_title">"Группы"</string>
+    <string name="groupEmpty">"Группа \"<xliff:g id="GROUPNAME">%s</xliff:g>\" пуста."</string>
+    <string name="showAllGroups">"Все контакты"</string>
+    <string name="syncAllGroups">"Синхронизировать все контакты"</string>
+    <string name="groupNameMyContacts">"Мои контакты"</string>
+    <string name="groupNameWithPhones">"Контакты с телефонными номерами"</string>
+    <string name="contactCreatedToast">"Контакт создан."</string>
+    <string name="contactSavedToast">"Контакт сохранен."</string>
+    <string name="listSeparatorCallNumber">"Набрать номер"</string>
+    <string name="listSeparatorSendSmsMms">"Отправить SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Отправить сообщение электронной почты"</string>
+    <string name="listSeparatorSendIm">"Отправить мгновенное сообщение"</string>
+    <string name="listSeparatorMapAddress">"Адрес на карте"</string>
+    <string name="listSeparatorOrganizations">"Организации"</string>
+    <string name="listSeparatorOtherInformation">"Другие сведения"</string>
+    <string name="contactsIconLabel">"Контакты"</string>
+    <string name="contactsFavoritesLabel">"Избранные"</string>
+    <string name="dialerIconLabel">"Набор номеров"</string>
+    <string name="recentCallsIconLabel">"Журнал вызовов"</string>
+    <string name="liveFolderAll">"Все контакты"</string>
+    <string name="liveFolderFavorites">"Помеченные контакты"</string>
+    <string name="liveFolderPhone">"Контакты с номерами телефонов"</string>
+    <string name="menu_sendTextMessage">"Отправить сообщение SMS"</string>
+    <string name="recentCalls_callNumber">"Позвонить: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Изменить номер перед вызовом"</string>
+    <string name="recentCalls_addToContact">"Добавить в контакты"</string>
+    <string name="recentCalls_removeFromRecentList">"Удалить из журнала вызовов"</string>
+    <string name="recentCalls_deleteAll">"Очистить журнал вызовов"</string>
+    <string name="recentCalls_empty">"Журнал вызовов пуст."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Голосовая почта"</string>
+    <string name="unknown">"Неизвестно"</string>
+    <string name="private_num">"Частный номер"</string>
+    <string name="dialerKeyboardHintText">"Для набора воспользуйтесь клавиатурой"</string>
+    <string name="dialerDialpadHintText">"Звонок для добавления вызова"</string>
+    <string name="simContacts_emptyLoading">"Идет загрузка с SIM-карты…"</string>
+    <string name="simContacts_title">"Контакты на SIM-карте"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Синхронизируйте свои контакты Google!"</font>" "\n"После синхронизации с телефоном вы сможете общаться со знакомыми, где бы вы ни были."</string>
+    <string name="noContactsHelpText">"У вас пока нет контактов."\n\n"Чтобы добавить контакты, нажмите кнопку "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" и выберите:"\n\n"        "\n<li><font fgcolor="#ffffffff"><b>"Изменить группы синхронизации"</b></font>" для добавления из нового или существующего аккаунта Google"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Создать контакт"</b></font>" для создания контакта с нуля"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Импортировать контакты"</b></font>" для добавления контактов с SIM-карты"\n</li></string>
+    <string name="seclectSyncGroups_title">"Выбор групп для синхронизации"</string>
+    <string name="liveFolder_all_label">"Все контакты"</string>
+    <string name="liveFolder_favorites_label">"Помеченные"</string>
+    <string name="liveFolder_phones_label">"Телефоны"</string>
+    <string name="dialer_useDtmfDialpad">"Использовать клавиатуру тонального набора"</string>
+    <string name="dialer_returnToInCallScreen">"Отобразить текущий вызов"</string>
+    <string name="dialer_addAnotherCall">"Добавить вызов"</string>
+</resources>
index 5d472c1..0533f6b 100644 (file)
     <string name="editContact_title_edit">"编辑联系人"</string>
     <string name="editContact_title_insert">"添加联系人"</string>
     <string name="menu_addItem">"详细信息"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
     <string name="label_notes">"备注"</string>
     <string name="label_ringtone">"铃声"</string>
     <string name="ghostData_name">"第一个和最后一个"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
+    <skip />
     <string name="ghostData_company">"公司"</string>
     <string name="ghostData_title">"位置"</string>
     <string name="ghostData_im">"即时消息名称"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
new file mode 100644 (file)
index 0000000..016689c
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"連絡人"</string>
+    <string name="shortcutContact">"連絡人"</string>
+    <string name="starredList">"已標記星號"</string>
+    <string name="frequentList">"經常聯絡"</string>
+    <string name="strequentList">"我的最愛"</string>
+    <string name="viewContactTitle">"連絡人詳細資料"</string>
+    <string name="viewContactDesription">"檢視連絡人"</string>
+    <string name="editContactDescription">"編輯連絡人"</string>
+    <string name="insertContactDescription">"建立連絡人"</string>
+    <string name="searchHint">"搜尋連絡人"</string>
+    <string name="menu_newContact">"新增連絡人"</string>
+    <string name="menu_viewContact">"檢視連絡人"</string>
+    <string name="menu_callNumber">"撥打電話給 <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"新增至我的最愛"</string>
+    <string name="menu_removeStar">"從我的最愛中移除"</string>
+    <string name="menu_showBarcode">"顯示條碼"</string>
+    <string name="menu_editContact">"編輯連絡人"</string>
+    <string name="menu_deleteContact">"刪除連絡人"</string>
+    <string name="menu_call">"通話"</string>
+    <string name="menu_sendSMS">"傳送 SMS/MMS"</string>
+    <string name="menu_sendEmail">"傳送電子郵件"</string>
+    <string name="menu_viewAddress">"在地圖上顯示地址"</string>
+    <string name="menu_makeDefaultNumber">"設為預設號碼"</string>
+    <string name="deleteConfirmation_title">"刪除"</string>
+    <string name="deleteConfirmation">"此連絡人會被刪除。"</string>
+    <string name="menu_done">"儲存"</string>
+    <string name="menu_doNotSave">"放棄變更"</string>
+    <string name="button_save">"儲存"</string>
+    <string name="button_discard">"放棄變更"</string>
+    <string name="editContact_title_edit">"編輯連絡人"</string>
+    <string name="editContact_title_insert">"新增連絡人"</string>
+    <string name="menu_addItem">"更多資訊"</string>
+    <!-- no translation found for label_phonetic_name (2288082649573927286) -->
+    <skip />
+    <string name="label_notes">"附註"</string>
+    <string name="label_ringtone">"鈴聲"</string>
+    <string name="ghostData_name">"姓名"</string>
+    <!-- no translation found for ghostData_phonetic_name (7852749081984070902) -->
+    <skip />
+    <string name="ghostData_company">"公司"</string>
+    <string name="ghostData_title">"職位"</string>
+    <string name="ghostData_im">"即時訊息帳號"</string>
+    <string name="ghostData_notes">"我的附註"</string>
+    <string name="ghostData_phone">"電話號碼"</string>
+    <string name="ghostData_email">"電子郵件地址"</string>
+    <string name="ghostData_postal">"郵寄地址"</string>
+    <string name="invalidContactMessage">"連絡人不存在"</string>
+    <string name="pickerNewContactHeader">"建立新連絡人"</string>
+    <string name="selectLabel">"選取標籤"</string>
+    <string name="phoneLabelsGroup">"電話"</string>
+    <string name="emailLabelsGroup">"電子郵件"</string>
+    <string name="imLabelsGroup">"即時訊息"</string>
+    <string name="postalLabelsGroup">"郵寄地址"</string>
+    <string name="otherLabelsGroup">"其他"</string>
+  <string-array name="otherLabels">
+    <item>"組織"</item>
+    <item>"附註"</item>
+  </string-array>
+    <string name="errorDialogTitle">"沒有相片"</string>
+    <string name="photoPickerNotFoundText">"手機上沒有相片 。"</string>
+    <string name="attachToContact">"連絡人圖示"</string>
+    <string name="customLabelPickerTitle">"自訂標籤名稱"</string>
+    <string name="menu_displayGroup">"顯示群組"</string>
+    <string name="syncGroupPreference">"編輯同步處理群組"</string>
+    <string name="importFromSim">"匯入連絡人"</string>
+    <string name="send_to_voicemail_checkbox">"將通話直接轉至語音信箱"</string>
+    <string name="send_to_voicemail_view">"通話已直接轉至語音信箱"</string>
+    <string name="default_ringtone">"預設值"</string>
+    <string name="addPicture">"新增圖示"</string>
+    <string name="removePicture">"移除圖示"</string>
+    <string name="noContacts">"沒有連絡人"</string>
+    <string name="noContactsWithPhoneNumbers">"沒有連絡人有電話號碼。"</string>
+    <string name="noFavorites">"沒有我的最愛。"</string>
+    <string name="select_group_title">"群組"</string>
+    <string name="groupEmpty">"您的「<xliff:g id="GROUPNAME">%s</xliff:g>」群組是空的。"</string>
+    <string name="showAllGroups">"所有連絡人"</string>
+    <string name="syncAllGroups">"同步處理所有連絡人"</string>
+    <string name="groupNameMyContacts">"我的聯絡人"</string>
+    <string name="groupNameWithPhones">"有電話號碼的連絡人"</string>
+    <string name="contactCreatedToast">"已建立連絡人"</string>
+    <string name="contactSavedToast">"連絡人已儲存。"</string>
+    <string name="listSeparatorCallNumber">"撥打號碼"</string>
+    <string name="listSeparatorSendSmsMms">"傳送  SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"傳送電子郵件"</string>
+    <string name="listSeparatorSendIm">"傳送即時訊息"</string>
+    <string name="listSeparatorMapAddress">"在地圖上顯示地址"</string>
+    <string name="listSeparatorOrganizations">"組織"</string>
+    <string name="listSeparatorOtherInformation">"其他資訊"</string>
+    <string name="contactsIconLabel">"連絡人"</string>
+    <string name="contactsFavoritesLabel">"我的最愛"</string>
+    <string name="dialerIconLabel">"撥號"</string>
+    <string name="recentCallsIconLabel">"通話紀錄"</string>
+    <string name="liveFolderAll">"全部聯絡人"</string>
+    <string name="liveFolderFavorites">"已加星號的聯絡人"</string>
+    <string name="liveFolderPhone">"有電話號碼的聯絡人"</string>
+    <string name="menu_sendTextMessage">"傳送  SMS 訊息"</string>
+    <string name="recentCalls_callNumber">"撥打電話給 <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"撥打電話前編輯號碼"</string>
+    <string name="recentCalls_addToContact">"新增至連絡人"</string>
+    <string name="recentCalls_removeFromRecentList">"從通話紀錄中移除"</string>
+    <string name="recentCalls_deleteAll">"清除通話紀錄"</string>
+    <string name="recentCalls_empty">"通話紀錄是空的。"</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"語音信箱"</string>
+    <string name="unknown">"未知的"</string>
+    <string name="private_num">"私人號碼"</string>
+    <string name="dialerKeyboardHintText">"使用鍵盤撥號"</string>
+    <string name="dialerDialpadHintText">"撥號即可新增通話"</string>
+    <string name="simContacts_emptyLoading">"從  SIM 卡讀取中…"</string>
+    <string name="simContacts_title">"SIM 卡連絡人"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">" 同步處理您的 Google 連絡人!"</font>" "\n" 與手機同步處理後,無論您走到哪,都可存取連絡人資訊。"</string>
+    <string name="noContactsHelpText">"您沒有任何連絡人。"\n\n" 若要新增連絡人,請按 "<font fgcolor="#ffffffff"><b>" [選單] "</b></font>",並選取:"\n\n"        "\n<li><font fgcolor="#ffffffff"><b>" [編輯同步處理群組] "</b></font>" 從新的或已存在的 Google 帳戶 "\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>" 新增連絡人 "</b></font>" 建立新的連絡人 "\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>" 匯入連絡人 "</b></font>" 從 SIM 卡新增連絡人 "\n</li></string>
+    <string name="seclectSyncGroups_title">"選取要同步處理的群組"</string>
+    <string name="liveFolder_all_label">"全部聯絡人"</string>
+    <string name="liveFolder_favorites_label">"已加星號"</string>
+    <string name="liveFolder_phones_label">"電話"</string>
+    <string name="dialer_useDtmfDialpad">"使用按鍵式鍵盤"</string>
+    <string name="dialer_returnToInCallScreen">"返回進行中的通話"</string>
+    <string name="dialer_addAnotherCall">"新增通話"</string>
+</resources>
index 1b74492..b98ee50 100644 (file)
         \n<li><font fgcolor="#ffffffff"><b>New contact</b></font> to create a new contact from scratch\n</li>
         \n<li><font fgcolor="#ffffffff"><b>Import contacts</b></font> to add contacts from your SIM card\n</li>"
     </string>
-    
+
     <!-- Activity title for the activity that lets the user choose which groups of contacts to sync from the server -->
     <string name="seclectSyncGroups_title">Select groups to sync</string>
 
          is already in progress.) -->
     <string name="dialer_addAnotherCall">Add call</string>
 
+    <!-- Title bar for call detail screen -->
+    <string name="callDetailTitle">Call details</string>
+
+    <!-- Toast for call detail screen when couldn't read the requested details -->
+    <string name="toast_call_detail_error">Couldn\'t read details for the requested call.</string>
+
+    <!-- In call detail screen, label for call type -->
+    <string name="call_type">Type</string>
+
+    <!-- In call detail screen, expanded titles for call types -->
+    <string name="type_incoming">Incoming call</string>
+    <string name="type_outgoing">Outgoing call</string>
+    <string name="type_missed">Missed call</string>
+
+    <!-- In call detail screen, label for call date/time -->
+    <string name="call_time">Time</string>
+
+    <!-- In call detail screen, combine date/time string and relative time to give verbose call date/time -->
+    <string name="datetime_relative">"<xliff:g id="datetime" example="Dec 31, 2007, 11:00 am">%1$s</xliff:g> (<xliff:g id="relative" example="4 hours ago">%2$s</xliff:g>)"</string>
+
+    <!-- In call detail screen, label for call duration -->
+    <string name="call_duration">Duration</string>
+
+    <!-- In call detail screen, header title for actions section -->
+    <string name="header_actions">Actions</string>
+
 </resources>
diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
new file mode 100755 (executable)
index 0000000..8b25c09
--- /dev/null
@@ -0,0 +1,402 @@
+/*
+ * Copyright (C) 2009 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.
+ */
+
+package com.android.contacts;
+
+import android.app.ListActivity;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.CallLog;
+import android.provider.CallLog.Calls;
+import android.provider.Contacts;
+import android.provider.Contacts.Intents.Insert;
+import android.provider.Contacts.People;
+import android.provider.Contacts.Phones;
+import android.telephony.TelephonyManager;
+import android.text.format.DateUtils;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Displays the details of a specific call log entry.
+ */
+public class CallDetailActivity extends ListActivity implements
+        AdapterView.OnItemClickListener {
+    private static final String TAG = "CallDetail";
+
+    private Uri mUri;
+    
+    private View mCallDetailItem;
+    
+    private TextView mCallType;
+    private ImageView mCallTypeIcon;
+    private TextView mCallTime;
+    private View mCallDurationRow;
+    private TextView mCallDuration;
+
+    private String mNumber = null;
+    
+    /* package */ LayoutInflater mInflater;
+    /* package */ Resources mResources;
+    
+    static final String[] CALL_LOG_PROJECTION = new String[] {
+        CallLog.Calls.DATE,
+        CallLog.Calls.DURATION,
+        CallLog.Calls.NUMBER,
+        CallLog.Calls.TYPE,
+    };
+    
+    static final int DATE_COLUMN_INDEX = 0;
+    static final int DURATION_COLUMN_INDEX = 1;
+    static final int NUMBER_COLUMN_INDEX = 2;
+    static final int CALL_TYPE_COLUMN_INDEX = 3;
+    
+    static final String[] PHONES_PROJECTION = new String[] {
+        Phones.PERSON_ID,
+    };
+
+    static final int PERSON_ID_COLUMN_INDEX = 0;
+    
+    private static final int INVALID_TYPE = -1;
+
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        setContentView(R.layout.call_detail);
+
+        mInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
+        mResources = getResources();
+        
+        mCallDetailItem = mInflater.inflate(R.layout.call_detail_item, getListView(), false);
+        
+        mCallType = (TextView) mCallDetailItem.findViewById(R.id.call_type);
+        mCallTypeIcon = (ImageView) mCallDetailItem.findViewById(R.id.call_type_icon);
+        mCallTime = (TextView) mCallDetailItem.findViewById(R.id.call_time);
+        mCallDurationRow = mCallDetailItem.findViewById(R.id.call_duration_row);
+        mCallDuration = (TextView) mCallDetailItem.findViewById(R.id.call_duration);
+        
+        getListView().setOnItemClickListener(this);
+    }
+    
+    @Override
+    public void onResume() {
+        super.onResume();
+        updateData(getIntent().getData());
+    }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        switch (keyCode) {
+            case KeyEvent.KEYCODE_CALL: {
+                // Make sure phone isn't already busy before starting direct call
+                TelephonyManager tm = (TelephonyManager)
+                        getSystemService(Context.TELEPHONY_SERVICE);
+                if (tm.getCallState() == TelephonyManager.CALL_STATE_IDLE) {
+                    Intent callIntent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
+                            Uri.fromParts("tel", mNumber, null));
+                    startActivity(callIntent);
+                    return true;
+                }
+            }
+        }
+        
+        return super.onKeyDown(keyCode, event);
+    }
+    
+    /**
+     * Try a reverse-phonebook lookup to find the contact, if any, behind the given number.
+     * 
+     * @param number Phone number to perform reverse-lookup against
+     * @return Uri into {@link Contacts.People} if found, otherwise null
+     */ 
+    private Uri getPersonUri(String number) {
+        Uri personUri = null;
+        
+        // Perform a reverse-phonebook lookup to find the PERSON_ID
+        ContentResolver resolver = getContentResolver();
+        Uri phoneUri = Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, Uri.encode(number));
+        Cursor phonesCursor = resolver.query(phoneUri, PHONES_PROJECTION, null, null, null);
+        try {
+            if (phonesCursor != null && phonesCursor.moveToFirst()) {
+                long personId = phonesCursor.getLong(PERSON_ID_COLUMN_INDEX);
+                personUri = ContentUris.withAppendedId(Contacts.People.CONTENT_URI, personId);
+            }
+        } finally {
+            if (phonesCursor != null) {
+                phonesCursor.close();
+            }
+        }
+        
+        return personUri;
+    }
+    
+    /**
+     * Update user interface with details of given call.
+     * 
+     * @param callUri Uri into {@link CallLog.Calls}
+     */
+    private void updateData(Uri callUri) {
+        ContentResolver resolver = getContentResolver();
+        Cursor callCursor = resolver.query(callUri, CALL_LOG_PROJECTION, null, null, null);
+        try {
+            if (callCursor != null && callCursor.moveToFirst()) {
+                // Read call log specifics
+                mNumber = callCursor.getString(NUMBER_COLUMN_INDEX);
+                long date = callCursor.getLong(DATE_COLUMN_INDEX);
+                long duration = callCursor.getLong(DURATION_COLUMN_INDEX);
+                int callType = callCursor.getInt(CALL_TYPE_COLUMN_INDEX);
+                
+                // Pull out string in format [relative], [date]
+                CharSequence dateClause = DateUtils.formatDateRange(this, date, date,
+                        DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE |
+                        DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_YEAR |
+                        DateUtils.FORMAT_ABBREV_ALL);
+                long now = System.currentTimeMillis();
+                CharSequence relativeClause = DateUtils.getRelativeTimeSpanString(date, now,
+                        DateUtils.SECOND_IN_MILLIS, DateUtils.FORMAT_ABBREV_RELATIVE);
+                String dateString = getString(R.string.datetime_relative,
+                        dateClause, relativeClause);
+                mCallTime.setText(dateString);
+                
+                // Set the duration
+                if (callType == Calls.MISSED_TYPE) {
+                    mCallDurationRow.setVisibility(View.GONE);
+                } else {
+                    mCallDurationRow.setVisibility(View.VISIBLE);
+                    mCallDuration.setText(DateUtils.formatElapsedTime(duration));
+                }
+    
+                // Set the call type icon and caption
+                switch (callType) {
+                    case Calls.INCOMING_TYPE:
+                        mCallTypeIcon.setImageResource(android.R.drawable.sym_call_incoming);
+                        mCallType.setText(R.string.type_incoming);
+                        break;
+    
+                    case Calls.OUTGOING_TYPE:
+                        mCallTypeIcon.setImageResource(android.R.drawable.sym_call_outgoing);
+                        mCallType.setText(R.string.type_outgoing);
+                        break;
+    
+                    case Calls.MISSED_TYPE:
+                        mCallTypeIcon.setImageResource(android.R.drawable.sym_call_missed);
+                        mCallType.setText(R.string.type_missed);
+                        break;
+                }
+    
+                // Build list of various available actions
+                List<ViewEntry> actions = new LinkedList<ViewEntry>();
+                
+                Intent callIntent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
+                        Uri.fromParts("tel", mNumber, null));
+                actions.add(new ViewEntry(R.drawable.ic_dialer_fork_current_call,
+                        getString(R.string.recentCalls_callNumber, mNumber), callIntent));
+    
+                Intent smsIntent = new Intent(Intent.ACTION_SENDTO,
+                        Uri.fromParts("sms", mNumber, null));
+                actions.add(new ViewEntry(R.drawable.sym_action_sms,
+                        getString(R.string.menu_sendTextMessage), smsIntent));
+    
+                // Let user view contact details if they exist, otherwise add option
+                // to create new contact from this number.
+                Uri personUri = getPersonUri(mNumber);
+                
+                if (personUri != null) {
+                    Intent viewIntent = new Intent(Intent.ACTION_VIEW, personUri);
+                    actions.add(new ViewEntry(R.drawable.ic_tab_unselected_contacts,
+                            getString(R.string.menu_viewContact), viewIntent));
+                } else {
+                    Intent createIntent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
+                    createIntent.setType(People.CONTENT_ITEM_TYPE);
+                    createIntent.putExtra(Insert.PHONE, mNumber);
+                    actions.add(new ViewEntry(R.drawable.ic_dialer_fork_add_call,
+                            getString(R.string.recentCalls_addToContact), createIntent));
+                }
+                
+                ViewAdapter adapter = new ViewAdapter(this, mCallDetailItem, actions);
+                setListAdapter(adapter);
+            } else {
+                // Something went wrong reading in our primary data, so we're going to
+                // bail out and show error to users.
+                Toast.makeText(this, R.string.toast_call_detail_error,
+                        Toast.LENGTH_SHORT).show();
+                finish();
+            }
+        } finally {
+            if (callCursor != null) {
+                callCursor.close();
+            }
+        }
+    }
+
+    static final class ViewEntry {
+        public int icon = -1;
+        public String text = null;
+        public Intent intent = null;
+        
+        public ViewEntry(int icon, String text, Intent intent) {
+            this.icon = icon;
+            this.text = text;
+            this.intent = intent;
+        }
+    }
+
+    static final class ViewAdapter extends BaseAdapter {
+        
+        private final View mCallDetailItem;
+        private final List<ViewEntry> mActions;
+        
+        private final Context mContext;
+        private final LayoutInflater mInflater;
+        
+        public ViewAdapter(Context context, View callDetailItem, List<ViewEntry> actions) {
+            mCallDetailItem = callDetailItem;
+            mActions = actions;
+            
+            mContext = context;
+            mInflater = (LayoutInflater) context
+                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+        }
+        
+        public int getCount() {
+            // Count is actions plus two headers and call details panel.
+            return mActions.size() + 2;
+        }
+
+        public Object getItem(int position) {
+            if (position >= POS_FIRST_ITEM) {
+                return mActions.get(position - POS_FIRST_ITEM);
+            }
+            return null;
+        }
+
+        public long getItemId(int position) {
+            return position;
+        }
+        
+        private static final int TYPE_HEADER = 0;
+        private static final int TYPE_CALL_DETAILS = 1;
+        private static final int TYPE_ACTION = 2;
+        
+        private static final int POS_CALL_DETAILS = 0;
+        private static final int POS_ACTIONS_HEADER = 1;
+        private static final int POS_FIRST_ITEM = 2;
+
+        public int getViewTypeCount() {
+            // Types are headers, call details panel, and actions.
+            return 3;
+        }
+        
+        public int getItemViewType(int position) {
+            switch(position) {
+                case POS_CALL_DETAILS:
+                    return TYPE_CALL_DETAILS;
+                case POS_ACTIONS_HEADER:
+                    return TYPE_HEADER;
+                default:
+                    return TYPE_ACTION;
+            }
+        }
+        
+        public boolean areAllItemsEnabled() {
+            return false;
+        }
+        
+        public boolean isEnabled(int position) {
+            return (position > POS_ACTIONS_HEADER);
+        }
+
+        public View getView(int position, View convertView, ViewGroup parent) {
+            // Make sure we have a valid convertView to start with
+            if (convertView == null) {
+                switch(getItemViewType(position)) {
+                    case TYPE_HEADER: {
+                        convertView = mInflater.inflate(R.layout.list_separator, parent, false);
+                        break;
+                    }
+                    case TYPE_CALL_DETAILS: {
+                        convertView = mCallDetailItem;
+                        break;
+                    }
+                    case TYPE_ACTION: {
+                        convertView = mInflater.inflate(R.layout.dialpad_chooser_list_item,
+                                parent, false);
+                        break;
+                    }
+                }
+            }
+
+            // Now fill our known-good convertView with data
+            switch(position) {
+                case POS_CALL_DETAILS: {
+                    // Assume mCallDetailItem is already filled with correct data.
+                    break;
+                }
+                case POS_ACTIONS_HEADER: {
+                    TextView textView = (TextView) convertView;
+                    textView.setText(mContext.getResources().getString(
+                            R.string.header_actions));
+                    break;
+                }
+                default: {
+                    // Fill action with icon and text.
+                    ViewEntry entry = (ViewEntry) getItem(position);
+                    convertView.setTag(entry);
+                    
+                    ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
+                    TextView text = (TextView) convertView.findViewById(R.id.text);
+                    
+                    icon.setImageResource(entry.icon);
+                    text.setText(entry.text);
+                    
+                    break;
+                }
+            }
+            
+            return convertView;
+        }
+
+    }
+    
+    public void onItemClick(AdapterView parent, View view, int position, long id) {
+        // Handle passing action off to correct handler.
+        if (view.getTag() instanceof ViewEntry) {
+            ViewEntry entry = (ViewEntry) view.getTag();
+            if (entry.intent != null) {
+                startActivity(entry.intent);
+            }
+        }
+    }    
+}
index 2994ce4..cdf2cef 100644 (file)
@@ -74,7 +74,9 @@ import android.provider.Contacts.Organizations;
 import android.provider.Contacts.People;
 import android.provider.Contacts.Phones;
 import android.telephony.PhoneNumberFormattingTextWatcher;
+import android.text.Editable;
 import android.text.TextUtils;
+import android.text.TextWatcher;
 import android.text.method.DialerKeyListener;
 import android.text.method.TextKeyListener;
 import android.text.method.TextKeyListener.Capitalize;
@@ -90,6 +92,7 @@ import android.view.ViewParent;
 import android.view.inputmethod.EditorInfo;
 import android.widget.Button;
 import android.widget.CheckBox;
+import android.widget.CompoundButton;
 import android.widget.EditText;
 import android.widget.ExpandableListView;
 import android.widget.ImageView;
@@ -110,7 +113,7 @@ import java.util.Map;
  * background while this activity is running, the updates will be overwritten.
  */
 public final class EditContactActivity extends Activity implements View.OnClickListener,
-        ExpandableListView.OnChildClickListener {
+        ExpandableListView.OnChildClickListener, TextWatcher, CheckBox.OnCheckedChangeListener {
     private static final String TAG = "EditContactActivity";
 
     private static final int STATE_UNKNOWN = 0;
@@ -177,6 +180,9 @@ public final class EditContactActivity extends Activity implements View.OnClickL
     private EditText mPhoneticNameView;
     private LinearLayout mPhoneticNameLayout;
 
+    /** Flag marking this contact as changed, meaning we should write changes back. */
+    private boolean mContactChanged = false;
+
     // These are accessed by inner classes. They're package scoped to make access more efficient.
     /* package */ ContentResolver mResolver;
     /* package */ ArrayList<EditEntry> mPhoneEntries = new ArrayList<EditEntry>();
@@ -395,6 +401,7 @@ public final class EditContactActivity extends Activity implements View.OnClickL
         outState.putBoolean("photoChanged", mPhotoChanged);
         outState.putBoolean("sendToVoicemail", mSendToVoicemailCheckBox.isChecked());
         outState.putString("phoneticName", mPhoneticNameView.getText().toString());
+        outState.putBoolean("contactChanged", mContactChanged);
     }
 
     @Override
@@ -421,6 +428,7 @@ public final class EditContactActivity extends Activity implements View.OnClickL
         mPhotoChanged = inState.getBoolean("photoChanged");
         mSendToVoicemailCheckBox.setChecked(inState.getBoolean("sendToVoicemail"));
         mPhoneticNameView.setText(inState.getString("phoneticName"));
+        mContactChanged = inState.getBoolean("contactChanged");
 
         // Now that everything is restored, build the view
         buildViews();
@@ -448,6 +456,7 @@ public final class EditContactActivity extends Activity implements View.OnClickL
             case RINGTONE_PICKED: {
                 Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
                 handleRingtonePicked(pickedUri);
+                mContactChanged = true;
                 break;
             }
         }
@@ -754,6 +763,7 @@ public final class EditContactActivity extends Activity implements View.OnClickL
         // Rebuild the views if needed
         if (entry != null) {
             buildViews();
+            mContactChanged = true;
 
             View dataView = entry.view.findViewById(R.id.data);
             if (dataView == null) {
@@ -897,6 +907,8 @@ public final class EditContactActivity extends Activity implements View.OnClickL
                     public void onClick(DialogInterface dialog, int which) {
                         entry.setLabel(EditContactActivity.this, ContactMethods.TYPE_CUSTOM,
                                 label.getText().toString());
+                        mContactChanged = true;
+
                         if (addTo != null) {
                             addTo.add(entry);
                             buildViews();
@@ -999,7 +1011,11 @@ public final class EditContactActivity extends Activity implements View.OnClickL
             // Add the entry to the my contacts group if it isn't there already
             People.addToMyContactsGroup(mResolver, ContentUris.parseId(mUri));
             setResult(RESULT_OK, new Intent().setData(mUri));
-            Toast.makeText(this, R.string.contactSavedToast, Toast.LENGTH_SHORT).show();
+
+            // Only notify user if we actually changed contact
+            if (mContactChanged || mPhotoChanged) {
+                Toast.makeText(this, R.string.contactSavedToast, Toast.LENGTH_SHORT).show();
+            }
         }
     }
 
@@ -1108,6 +1124,7 @@ public final class EditContactActivity extends Activity implements View.OnClickL
 
         // Name
         mNameView.setText(personCursor.getString(CONTACT_NAME_COLUMN));
+        mNameView.addTextChangedListener(this);
 
         // Photo
         mPhoto = People.loadContactPhoto(this, mUri, 0, null);
@@ -1121,6 +1138,8 @@ public final class EditContactActivity extends Activity implements View.OnClickL
         // Send to voicemail
         mSendToVoicemailCheckBox
                 .setChecked(personCursor.getInt(CONTACT_SEND_TO_VOICEMAIL_COLUMN) == 1);
+        mSendToVoicemailCheckBox
+                .setOnCheckedChangeListener(this);
 
         // Organizations
         Uri organizationsUri = Uri.withAppendedPath(mUri, Organizations.CONTENT_DIRECTORY);
@@ -1158,6 +1177,7 @@ public final class EditContactActivity extends Activity implements View.OnClickL
 
         // Phonetic name
         mPhoneticNameView.setText(personCursor.getString(CONTACT_PHONETIC_NAME_COLUMN));
+        mPhoneticNameView.addTextChangedListener(this);
 
         personCursor.close();
 
@@ -1269,6 +1289,8 @@ public final class EditContactActivity extends Activity implements View.OnClickL
             entry.isPrimary = true;
             mEmailEntries.add(entry);
         }
+
+        mContactChanged = false;
     }
 
     /**
@@ -1562,6 +1584,14 @@ public final class EditContactActivity extends Activity implements View.OnClickL
             }
         }
 
+        // Connect listeners up to watch for changed values.
+        if (data instanceof EditText) {
+            data.addTextChangedListener(this);
+        }
+        if (data2 instanceof EditText) {
+            data2.addTextChangedListener(this);
+        }
+
         // Hook up the delete button
         View delete = view.findViewById(R.id.delete);
         if (delete != null) delete.setOnClickListener(this);
@@ -1597,9 +1627,11 @@ public final class EditContactActivity extends Activity implements View.OnClickL
                     createCustomPicker(mEntry, null);
                 } else {
                     mEntry.setLabel(EditContactActivity.this, type, mLabels[which]);
+                    mContactChanged = true;
                 }
             } else {
                 mEntry.setLabel(EditContactActivity.this, which, mLabels[which]);
+                mContactChanged = true;
             }
         }
     }
@@ -1847,7 +1879,13 @@ public final class EditContactActivity extends Activity implements View.OnClickL
                     break;
             }
 
-            values.put(ContactMethods.ISPRIMARY, isPrimary ? "1" : "0");
+            // Only set the ISPRIMARY flag if part of the incoming data.  This is because the
+            // ContentProvider will try finding a new primary when setting to false, meaning
+            // it's possible to lose primary altogether as we walk down the list.  If this editor
+            // implements editing of primaries in the future, this will need to be revisited.
+            if (isPrimary) {
+                values.put(ContactMethods.ISPRIMARY, 1);
+            }
 
             // Save the data
             if (view != null && syncDataWithView) {
@@ -2029,4 +2067,22 @@ public final class EditContactActivity extends Activity implements View.OnClickL
             return entry;
         }
     }
+
+    public void afterTextChanged(Editable s) {
+        // Someone edited a text field, so assume this contact is dirty.
+        mContactChanged = true;
+    }
+
+    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+        // Do nothing; editing handled by afterTextChanged()
+    }
+
+    public void onTextChanged(CharSequence s, int start, int before, int count) {
+        // Do nothing; editing handled by afterTextChanged()
+    }
+
+    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+        // Someone changed a checkbox, so assume this contact is dirty.
+        mContactChanged = true;
+    }
 }
index 85099fa..8298d21 100644 (file)
@@ -32,6 +32,7 @@ import android.os.Message;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemClock;
+import android.provider.CallLog;
 import android.provider.CallLog.Calls;
 import android.provider.Contacts.People;
 import android.provider.Contacts.Phones;
@@ -433,11 +434,12 @@ public class RecentCallsListActivity extends ListActivity
                 views.durationView.setText(DateUtils.formatElapsedTime(c.getLong(DURATION_COLUMN_INDEX)));
             }
 
-            // Set the time and date
+            // Set the date/time field by mixing relative and absolute times.
             int flags = DateUtils.FORMAT_ABBREV_RELATIVE | DateUtils.FORMAT_SHOW_DATE
                     | DateUtils.FORMAT_ABBREV_MONTH;
+            
             views.dateView.setText(DateUtils.getRelativeDateTimeString(context, date,
-                    DateUtils.MINUTE_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, flags));
+                    DateUtils.MINUTE_IN_MILLIS, DateUtils.DAY_IN_MILLIS * 2, flags));
 
             // Set the icon
             switch (type) {
@@ -815,6 +817,8 @@ public class RecentCallsListActivity extends ListActivity
 
     @Override
     protected void onListItemClick(ListView l, View v, int position, long id) {
-        callEntry(position);
+        Intent intent = new Intent(this, CallDetailActivity.class);
+        intent.setData(ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI, id));
+        startActivity(intent);
     }
 }