aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xjava/Android.mk22
-rwxr-xr-xjava/AndroidManifest.xml (renamed from AndroidManifest.xml)6
-rw-r--r--java/MODULE_LICENSE_APACHE20
-rw-r--r--java/NOTICE190
-rw-r--r--java/proguard.flags3
-rwxr-xr-xjava/res/drawable-en-hdpi/sym_keyboard_delete.png (renamed from res/drawable-en-hdpi/sym_keyboard_delete.png)bin2315 -> 2315 bytes
-rwxr-xr-xjava/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png (renamed from res/drawable-en-hdpi/sym_keyboard_feedback_delete.png)bin1278 -> 1278 bytes
-rw-r--r--java/res/drawable-en-mdpi/sym_keyboard_delete.png (renamed from res/drawable-en-mdpi/sym_keyboard_delete.png)bin1366 -> 1366 bytes
-rw-r--r--java/res/drawable-en-mdpi/sym_keyboard_feedback_delete.png (renamed from res/drawable-en-mdpi/sym_keyboard_feedback_delete.png)bin524 -> 524 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png (renamed from res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png)bin1649 -> 1649 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png (renamed from res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png)bin1696 -> 1696 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal.9.png (renamed from res/drawable-hdpi/btn_keyboard_key_normal.9.png)bin715 -> 715 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png (renamed from res/drawable-hdpi/btn_keyboard_key_normal_off.9.png)bin1001 -> 1001 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png (renamed from res/drawable-hdpi/btn_keyboard_key_normal_on.9.png)bin1077 -> 1077 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png (renamed from res/drawable-hdpi/btn_keyboard_key_pressed.9.png)bin745 -> 745 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png (renamed from res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png)bin1042 -> 1042 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png (renamed from res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png)bin1105 -> 1105 bytes
-rwxr-xr-xjava/res/drawable-hdpi/cancel.png (renamed from res/drawable-hdpi/cancel.png)bin1811 -> 1811 bytes
-rwxr-xr-xjava/res/drawable-hdpi/candidate_feedback_background.9.png (renamed from res/drawable-hdpi/candidate_feedback_background.9.png)bin833 -> 833 bytes
-rwxr-xr-xjava/res/drawable-hdpi/caution.png (renamed from res/drawable-hdpi/caution.png)bin1641 -> 1641 bytes
-rwxr-xr-xjava/res/drawable-hdpi/dialog_bubble_step02.9.png (renamed from res/drawable-hdpi/dialog_bubble_step02.9.png)bin1475 -> 1475 bytes
-rwxr-xr-xjava/res/drawable-hdpi/dialog_bubble_step07.9.png (renamed from res/drawable-hdpi/dialog_bubble_step07.9.png)bin6012 -> 6012 bytes
-rwxr-xr-xjava/res/drawable-hdpi/dialog_top_dark_bottom_medium.png (renamed from res/drawable-hdpi/dialog_top_dark_bottom_medium.png)bin1976 -> 1976 bytes
-rw-r--r--java/res/drawable-hdpi/highlight_pressed.png (renamed from res/drawable-hdpi/highlight_pressed.png)bin4110 -> 4110 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ic_dialog_alert_large.png (renamed from res/drawable-hdpi/ic_dialog_alert_large.png)bin4918 -> 4918 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ic_dialog_keyboard.png (renamed from res/drawable-hdpi/ic_dialog_keyboard.png)bin807 -> 807 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ic_dialog_voice_input.png (renamed from res/drawable-hdpi/ic_dialog_voice_input.png)bin1931 -> 1931 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ic_dialog_wave_0_0.png (renamed from res/drawable-hdpi/ic_dialog_wave_0_0.png)bin15673 -> 15673 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ic_dialog_wave_1_3.png (renamed from res/drawable-hdpi/ic_dialog_wave_1_3.png)bin15823 -> 15823 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ic_dialog_wave_2_3.png (renamed from res/drawable-hdpi/ic_dialog_wave_2_3.png)bin16009 -> 16009 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ic_dialog_wave_3_3.png (renamed from res/drawable-hdpi/ic_dialog_wave_3_3.png)bin16022 -> 16022 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ic_dialog_wave_4_3.png (renamed from res/drawable-hdpi/ic_dialog_wave_4_3.png)bin15910 -> 15910 bytes
-rw-r--r--java/res/drawable-hdpi/ic_mic_dialog.png (renamed from res/drawable-hdpi/ic_mic_dialog.png)bin3634 -> 3634 bytes
-rw-r--r--java/res/drawable-hdpi/ic_suggest_strip_microphone.png (renamed from res/drawable-hdpi/ic_suggest_strip_microphone.png)bin548 -> 548 bytes
-rw-r--r--java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png (renamed from res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png)bin438 -> 438 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png (renamed from res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png)bin619 -> 619 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png (renamed from res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png)bin619 -> 619 bytes
-rwxr-xr-xjava/res/drawable-hdpi/keyboard_background.9.png (renamed from res/drawable-hdpi/keyboard_background.9.png)bin200 -> 200 bytes
-rwxr-xr-xjava/res/drawable-hdpi/keyboard_suggest_strip.9.png (renamed from res/drawable-hdpi/keyboard_suggest_strip.9.png)bin1577 -> 1577 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_suggest_strip_divider.png (renamed from res/drawable-hdpi/keyboard_suggest_strip_divider.png)bin2852 -> 2852 bytes
-rw-r--r--java/res/drawable-hdpi/list_selector_background_pressed.9.png (renamed from res/drawable-hdpi/list_selector_background_pressed.9.png)bin4203 -> 4203 bytes
-rw-r--r--java/res/drawable-hdpi/mic_slash.png (renamed from res/drawable-hdpi/mic_slash.png)bin5615 -> 5615 bytes
-rwxr-xr-xjava/res/drawable-hdpi/ok_cancel.png (renamed from res/drawable-hdpi/ok_cancel.png)bin442 -> 442 bytes
-rwxr-xr-xjava/res/drawable-hdpi/speak_now_level0.png (renamed from res/drawable-hdpi/speak_now_level0.png)bin1512 -> 1512 bytes
-rwxr-xr-xjava/res/drawable-hdpi/speak_now_level1.png (renamed from res/drawable-hdpi/speak_now_level1.png)bin2215 -> 2215 bytes
-rwxr-xr-xjava/res/drawable-hdpi/speak_now_level2.png (renamed from res/drawable-hdpi/speak_now_level2.png)bin3130 -> 3130 bytes
-rwxr-xr-xjava/res/drawable-hdpi/speak_now_level3.png (renamed from res/drawable-hdpi/speak_now_level3.png)bin3647 -> 3647 bytes
-rwxr-xr-xjava/res/drawable-hdpi/speak_now_level4.png (renamed from res/drawable-hdpi/speak_now_level4.png)bin3626 -> 3626 bytes
-rwxr-xr-xjava/res/drawable-hdpi/speak_now_level5.png (renamed from res/drawable-hdpi/speak_now_level5.png)bin3670 -> 3670 bytes
-rwxr-xr-xjava/res/drawable-hdpi/speak_now_level6.png (renamed from res/drawable-hdpi/speak_now_level6.png)bin4006 -> 4006 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_123_mic.png (renamed from res/drawable-hdpi/sym_keyboard_123_mic.png)bin2575 -> 2575 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_delete.png (renamed from res/drawable-hdpi/sym_keyboard_delete.png)bin2282 -> 2282 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_done.png (renamed from res/drawable-hdpi/sym_keyboard_done.png)bin1593 -> 1593 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_123_mic.png)bin1046 -> 1046 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_feedback_delete.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_delete.png)bin1278 -> 1278 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_feedback_done.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_done.png)bin1068 -> 1068 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png)bin322 -> 322 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png)bin328 -> 328 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_mic.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_mic.png)bin681 -> 681 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_feedback_numalt.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_numalt.png)bin1336 -> 1336 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_feedback_return.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_return.png)bin838 -> 838 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_feedback_search.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_search.png)bin1209 -> 1209 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_feedback_shift.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_shift.png)bin885 -> 885 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png)bin700 -> 700 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_feedback_space.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_space.png)bin287 -> 287 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_tab.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_tab.png)bin462 -> 462 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_tabprev.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_tabprev.png)bin463 -> 463 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_globe.png (renamed from res/drawable-hdpi/sym_keyboard_globe.png)bin2093 -> 2093 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png (renamed from res/drawable-hdpi/sym_keyboard_language_arrows_left.png)bin314 -> 314 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png (renamed from res/drawable-hdpi/sym_keyboard_language_arrows_right.png)bin316 -> 316 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_mic.png (renamed from res/drawable-hdpi/sym_keyboard_mic.png)bin1440 -> 1440 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_num0.png (renamed from res/drawable-hdpi/sym_keyboard_num0.png)bin1931 -> 1931 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_num1.png (renamed from res/drawable-hdpi/sym_keyboard_num1.png)bin809 -> 809 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_num2.png (renamed from res/drawable-hdpi/sym_keyboard_num2.png)bin3214 -> 3214 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_num3.png (renamed from res/drawable-hdpi/sym_keyboard_num3.png)bin2805 -> 2805 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_num4.png (renamed from res/drawable-hdpi/sym_keyboard_num4.png)bin2647 -> 2647 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_num5.png (renamed from res/drawable-hdpi/sym_keyboard_num5.png)bin2536 -> 2536 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_num6.png (renamed from res/drawable-hdpi/sym_keyboard_num6.png)bin3573 -> 3573 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_num7.png (renamed from res/drawable-hdpi/sym_keyboard_num7.png)bin3684 -> 3684 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_num8.png (renamed from res/drawable-hdpi/sym_keyboard_num8.png)bin2904 -> 2904 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_num9.png (renamed from res/drawable-hdpi/sym_keyboard_num9.png)bin3860 -> 3860 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_numalt.png (renamed from res/drawable-hdpi/sym_keyboard_numalt.png)bin2919 -> 2919 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_numpound.png (renamed from res/drawable-hdpi/sym_keyboard_numpound.png)bin1600 -> 1600 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_numstar.png (renamed from res/drawable-hdpi/sym_keyboard_numstar.png)bin1749 -> 1749 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_return.png (renamed from res/drawable-hdpi/sym_keyboard_return.png)bin1123 -> 1123 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_search.png (renamed from res/drawable-hdpi/sym_keyboard_search.png)bin1623 -> 1623 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_shift.png (renamed from res/drawable-hdpi/sym_keyboard_shift.png)bin1495 -> 1495 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_shift_locked.png (renamed from res/drawable-hdpi/sym_keyboard_shift_locked.png)bin1119 -> 1119 bytes
-rwxr-xr-xjava/res/drawable-hdpi/sym_keyboard_space.png (renamed from res/drawable-hdpi/sym_keyboard_space.png)bin371 -> 371 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_tab.png (renamed from res/drawable-hdpi/sym_keyboard_tab.png)bin1027 -> 1027 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_tabprev.png (renamed from res/drawable-hdpi/sym_keyboard_tabprev.png)bin1033 -> 1033 bytes
-rwxr-xr-xjava/res/drawable-hdpi/voice_ime_background.9.png (renamed from res/drawable-hdpi/voice_ime_background.9.png)bin2349 -> 2349 bytes
-rwxr-xr-xjava/res/drawable-hdpi/working.png (renamed from res/drawable-hdpi/working.png)bin8636 -> 8636 bytes
-rwxr-xr-xjava/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_normal.9.png)bin737 -> 737 bytes
-rwxr-xr-xjava/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png)bin941 -> 941 bytes
-rwxr-xr-xjava/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png)bin1076 -> 1076 bytes
-rwxr-xr-xjava/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png)bin733 -> 733 bytes
-rwxr-xr-xjava/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png)bin964 -> 964 bytes
-rwxr-xr-xjava/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png)bin1055 -> 1055 bytes
-rwxr-xr-xjava/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png (renamed from res/drawable-land-hdpi/keyboard_suggest_strip_divider.png)bin172 -> 172 bytes
-rw-r--r--java/res/drawable-land-mdpi/btn_keyboard_key_normal.9.png (renamed from res/drawable-land-mdpi/btn_keyboard_key_normal.9.png)bin818 -> 818 bytes
-rw-r--r--java/res/drawable-land-mdpi/btn_keyboard_key_normal_off.9.png (renamed from res/drawable-land-mdpi/btn_keyboard_key_normal_off.9.png)bin860 -> 860 bytes
-rw-r--r--java/res/drawable-land-mdpi/btn_keyboard_key_normal_on.9.png (renamed from res/drawable-land-mdpi/btn_keyboard_key_normal_on.9.png)bin926 -> 926 bytes
-rwxr-xr-xjava/res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png (renamed from res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png)bin740 -> 740 bytes
-rw-r--r--java/res/drawable-land-mdpi/btn_keyboard_key_pressed_off.9.png (renamed from res/drawable-land-mdpi/btn_keyboard_key_pressed_off.9.png)bin836 -> 836 bytes
-rw-r--r--java/res/drawable-land-mdpi/btn_keyboard_key_pressed_on.9.png (renamed from res/drawable-land-mdpi/btn_keyboard_key_pressed_on.9.png)bin886 -> 886 bytes
-rw-r--r--java/res/drawable-land-mdpi/keyboard_suggest_strip_divider.png (renamed from res/drawable-land-mdpi/keyboard_suggest_strip_divider.png)bin166 -> 166 bytes
-rw-r--r--java/res/drawable-land/btn_keyboard_key.xml (renamed from res/drawable-land/btn_keyboard_key.xml)0
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png (renamed from res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png)bin1068 -> 1068 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png (renamed from res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png)bin1021 -> 1021 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal.9.png (renamed from res/drawable-mdpi/btn_keyboard_key_normal.9.png)bin726 -> 726 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png (renamed from res/drawable-mdpi/btn_keyboard_key_normal_off.9.png)bin860 -> 860 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png (renamed from res/drawable-mdpi/btn_keyboard_key_normal_on.9.png)bin926 -> 926 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png (renamed from res/drawable-mdpi/btn_keyboard_key_pressed.9.png)bin664 -> 664 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png (renamed from res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png)bin836 -> 836 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png (renamed from res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png)bin886 -> 886 bytes
-rw-r--r--java/res/drawable-mdpi/candidate_feedback_background.9.png (renamed from res/drawable-mdpi/candidate_feedback_background.9.png)bin1182 -> 1182 bytes
-rwxr-xr-xjava/res/drawable-mdpi/dialog_bubble_step02.9.png (renamed from res/drawable-mdpi/dialog_bubble_step02.9.png)bin1036 -> 1036 bytes
-rwxr-xr-xjava/res/drawable-mdpi/dialog_bubble_step07.9.png (renamed from res/drawable-mdpi/dialog_bubble_step07.9.png)bin4646 -> 4646 bytes
-rw-r--r--java/res/drawable-mdpi/highlight_pressed.png (renamed from res/drawable-mdpi/highlight_pressed.png)bin593 -> 593 bytes
-rw-r--r--java/res/drawable-mdpi/ic_dialog_keyboard.png (renamed from res/drawable-mdpi/ic_dialog_keyboard.png)bin528 -> 528 bytes
-rw-r--r--java/res/drawable-mdpi/ic_mic_dialog.png (renamed from res/drawable-mdpi/ic_mic_dialog.png)bin3312 -> 3312 bytes
-rw-r--r--java/res/drawable-mdpi/ic_suggest_strip_microphone.png (renamed from res/drawable-mdpi/ic_suggest_strip_microphone.png)bin398 -> 398 bytes
-rw-r--r--java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png (renamed from res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png)bin309 -> 309 bytes
-rw-r--r--java/res/drawable-mdpi/ic_suggest_strip_scroll_left_arrow.png (renamed from res/drawable-mdpi/ic_suggest_strip_scroll_left_arrow.png)bin445 -> 445 bytes
-rw-r--r--java/res/drawable-mdpi/ic_suggest_strip_scroll_right_arrow.png (renamed from res/drawable-mdpi/ic_suggest_strip_scroll_right_arrow.png)bin440 -> 440 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_background.9.png (renamed from res/drawable-mdpi/keyboard_background.9.png)bin214 -> 214 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_suggest_strip.9.png (renamed from res/drawable-mdpi/keyboard_suggest_strip.9.png)bin220 -> 220 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_suggest_strip_divider.png (renamed from res/drawable-mdpi/keyboard_suggest_strip_divider.png)bin2846 -> 2846 bytes
-rw-r--r--java/res/drawable-mdpi/list_selector_background_pressed.9.png (renamed from res/drawable-mdpi/list_selector_background_pressed.9.png)bin11006 -> 11006 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_123_mic.png (renamed from res/drawable-mdpi/sym_keyboard_123_mic.png)bin1540 -> 1540 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_delete.png (renamed from res/drawable-mdpi/sym_keyboard_delete.png)bin829 -> 829 bytes
-rwxr-xr-xjava/res/drawable-mdpi/sym_keyboard_done.png (renamed from res/drawable-mdpi/sym_keyboard_done.png)bin771 -> 771 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_123_mic.png)bin694 -> 694 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_delete.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_delete.png)bin374 -> 374 bytes
-rwxr-xr-xjava/res/drawable-mdpi/sym_keyboard_feedback_done.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_done.png)bin498 -> 498 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_left.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_language_arrows_left.png)bin249 -> 249 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png)bin249 -> 249 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_mic.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_mic.png)bin483 -> 483 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_numalt.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_numalt.png)bin735 -> 735 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_return.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_return.png)bin381 -> 381 bytes
-rwxr-xr-xjava/res/drawable-mdpi/sym_keyboard_feedback_search.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_search.png)bin501 -> 501 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_shift.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_shift.png)bin437 -> 437 bytes
-rwxr-xr-xjava/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png)bin333 -> 333 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_space.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_space.png)bin223 -> 223 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_tab.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_tab.png)bin364 -> 364 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_tabprev.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_tabprev.png)bin365 -> 365 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_globe.png (renamed from res/drawable-mdpi/sym_keyboard_globe.png)bin1290 -> 1290 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_language_arrows_left.png (renamed from res/drawable-mdpi/sym_keyboard_language_arrows_left.png)bin261 -> 261 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_language_arrows_right.png (renamed from res/drawable-mdpi/sym_keyboard_language_arrows_right.png)bin257 -> 257 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_mic.png (renamed from res/drawable-mdpi/sym_keyboard_mic.png)bin859 -> 859 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num0.png (renamed from res/drawable-mdpi/sym_keyboard_num0.png)bin1160 -> 1160 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num1.png (renamed from res/drawable-mdpi/sym_keyboard_num1.png)bin506 -> 506 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num2.png (renamed from res/drawable-mdpi/sym_keyboard_num2.png)bin1778 -> 1778 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num3.png (renamed from res/drawable-mdpi/sym_keyboard_num3.png)bin1676 -> 1676 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num4.png (renamed from res/drawable-mdpi/sym_keyboard_num4.png)bin1540 -> 1540 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num5.png (renamed from res/drawable-mdpi/sym_keyboard_num5.png)bin1417 -> 1417 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num6.png (renamed from res/drawable-mdpi/sym_keyboard_num6.png)bin1952 -> 1952 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num7.png (renamed from res/drawable-mdpi/sym_keyboard_num7.png)bin2051 -> 2051 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num8.png (renamed from res/drawable-mdpi/sym_keyboard_num8.png)bin1605 -> 1605 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num9.png (renamed from res/drawable-mdpi/sym_keyboard_num9.png)bin2173 -> 2173 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_numalt.png (renamed from res/drawable-mdpi/sym_keyboard_numalt.png)bin1673 -> 1673 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_numpound.png (renamed from res/drawable-mdpi/sym_keyboard_numpound.png)bin963 -> 963 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_numstar.png (renamed from res/drawable-mdpi/sym_keyboard_numstar.png)bin954 -> 954 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_return.png (renamed from res/drawable-mdpi/sym_keyboard_return.png)bin866 -> 866 bytes
-rwxr-xr-xjava/res/drawable-mdpi/sym_keyboard_search.png (renamed from res/drawable-mdpi/sym_keyboard_search.png)bin1029 -> 1029 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_shift.png (renamed from res/drawable-mdpi/sym_keyboard_shift.png)bin1017 -> 1017 bytes
-rwxr-xr-xjava/res/drawable-mdpi/sym_keyboard_shift_locked.png (renamed from res/drawable-mdpi/sym_keyboard_shift_locked.png)bin799 -> 799 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_space.png (renamed from res/drawable-mdpi/sym_keyboard_space.png)bin424 -> 424 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_tab.png (renamed from res/drawable-mdpi/sym_keyboard_tab.png)bin645 -> 645 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_tabprev.png (renamed from res/drawable-mdpi/sym_keyboard_tabprev.png)bin612 -> 612 bytes
-rw-r--r--java/res/drawable/btn_keyboard_key.xml (renamed from res/drawable/btn_keyboard_key.xml)0
-rw-r--r--java/res/drawable/btn_keyboard_key_fulltrans.xml (renamed from res/drawable/btn_keyboard_key_fulltrans.xml)0
-rw-r--r--java/res/drawable/cancel.png (renamed from res/drawable/cancel.png)bin1259 -> 1259 bytes
-rw-r--r--java/res/drawable/caution.png (renamed from res/drawable/caution.png)bin1100 -> 1100 bytes
-rw-r--r--java/res/drawable/dialog_top_dark_bottom_medium.9.png (renamed from res/drawable/dialog_top_dark_bottom_medium.9.png)bin1574 -> 1574 bytes
-rw-r--r--java/res/drawable/ic_dialog_alert_large.png (renamed from res/drawable/ic_dialog_alert_large.png)bin4089 -> 4089 bytes
-rw-r--r--java/res/drawable/ic_dialog_voice_input.png (renamed from res/drawable/ic_dialog_voice_input.png)bin1040 -> 1040 bytes
-rw-r--r--java/res/drawable/ic_dialog_wave_0_0.png (renamed from res/drawable/ic_dialog_wave_0_0.png)bin8471 -> 8471 bytes
-rw-r--r--java/res/drawable/ic_dialog_wave_1_3.png (renamed from res/drawable/ic_dialog_wave_1_3.png)bin9017 -> 9017 bytes
-rw-r--r--java/res/drawable/ic_dialog_wave_2_3.png (renamed from res/drawable/ic_dialog_wave_2_3.png)bin9614 -> 9614 bytes
-rw-r--r--java/res/drawable/ic_dialog_wave_3_3.png (renamed from res/drawable/ic_dialog_wave_3_3.png)bin10089 -> 10089 bytes
-rw-r--r--java/res/drawable/ic_dialog_wave_4_3.png (renamed from res/drawable/ic_dialog_wave_4_3.png)bin10514 -> 10514 bytes
-rw-r--r--java/res/drawable/ic_suggest_scroll_background.xml (renamed from res/drawable/ic_suggest_scroll_background.xml)0
-rw-r--r--java/res/drawable/mic_slash.png (renamed from res/drawable/mic_slash.png)bin3098 -> 3098 bytes
-rw-r--r--java/res/drawable/ok_cancel.png (renamed from res/drawable/ok_cancel.png)bin8453 -> 8453 bytes
-rw-r--r--java/res/drawable/speak_now_level0.png (renamed from res/drawable/speak_now_level0.png)bin3263 -> 3263 bytes
-rw-r--r--java/res/drawable/speak_now_level1.png (renamed from res/drawable/speak_now_level1.png)bin3572 -> 3572 bytes
-rw-r--r--java/res/drawable/speak_now_level2.png (renamed from res/drawable/speak_now_level2.png)bin3974 -> 3974 bytes
-rw-r--r--java/res/drawable/speak_now_level3.png (renamed from res/drawable/speak_now_level3.png)bin4270 -> 4270 bytes
-rw-r--r--java/res/drawable/speak_now_level4.png (renamed from res/drawable/speak_now_level4.png)bin4241 -> 4241 bytes
-rw-r--r--java/res/drawable/speak_now_level5.png (renamed from res/drawable/speak_now_level5.png)bin4252 -> 4252 bytes
-rw-r--r--java/res/drawable/speak_now_level6.png (renamed from res/drawable/speak_now_level6.png)bin2201 -> 2201 bytes
-rw-r--r--java/res/drawable/voice_ime_background.9.png (renamed from res/drawable/voice_ime_background.9.png)bin20661 -> 20661 bytes
-rw-r--r--java/res/drawable/voice_swipe_hint.png (renamed from res/drawable/voice_swipe_hint.png)bin3111 -> 3111 bytes
-rw-r--r--java/res/drawable/working.png (renamed from res/drawable/working.png)bin33111 -> 33111 bytes
-rw-r--r--java/res/layout/bubble_text.xml (renamed from res/layout/bubble_text.xml)0
-rwxr-xr-xjava/res/layout/candidate_preview.xml (renamed from res/layout/candidate_preview.xml)0
-rwxr-xr-xjava/res/layout/candidates.xml (renamed from res/layout/candidates.xml)0
-rwxr-xr-xjava/res/layout/input.xml (renamed from res/layout/input.xml)0
-rwxr-xr-xjava/res/layout/input_trans.xml (renamed from res/layout/input_trans.xml)1
-rw-r--r--java/res/layout/recognition_status.xml (renamed from res/layout/recognition_status.xml)4
-rw-r--r--java/res/layout/voice_punctuation_hint.xml (renamed from res/layout/voice_punctuation_hint.xml)0
-rw-r--r--java/res/layout/voice_swipe_hint.xml (renamed from res/layout/voice_swipe_hint.xml)0
-rwxr-xr-xjava/res/raw/main.dict (renamed from res/raw/main.dict)bin34 -> 34 bytes
-rwxr-xr-xjava/res/raw/type3.ogg (renamed from res/raw/type3.ogg)bin4126 -> 4126 bytes
-rw-r--r--java/res/values-cs/bools.xml (renamed from res/values-cs/bools.xml)0
-rw-r--r--java/res/values-cs/donottranslate.xml (renamed from res/values-cs/donottranslate.xml)0
-rw-r--r--java/res/values-cs/strings.xml (renamed from res/values-cs/strings.xml)72
-rw-r--r--java/res/values-da/strings.xml (renamed from res/values-da/strings.xml)48
-rw-r--r--java/res/values-de/bools.xml (renamed from res/values-de/bools.xml)0
-rw-r--r--java/res/values-de/strings.xml (renamed from res/values-de/strings.xml)50
-rw-r--r--java/res/values-el/strings.xml (renamed from res/values-el/strings.xml)34
-rw-r--r--java/res/values-en/bools.xml (renamed from res/values-en/bools.xml)0
-rw-r--r--java/res/values-es-rUS/strings.xml (renamed from res/values-es-rUS/strings.xml)34
-rw-r--r--java/res/values-es/bools.xml (renamed from res/values-es/bools.xml)0
-rw-r--r--java/res/values-es/strings.xml (renamed from res/values-es/strings.xml)54
-rw-r--r--java/res/values-fr-rCA/strings.xml (renamed from res/values-fr-rCA/strings.xml)0
-rw-r--r--java/res/values-fr/bools.xml (renamed from res/values-fr/bools.xml)0
-rw-r--r--java/res/values-fr/donottranslate.xml (renamed from res/values-fr/donottranslate.xml)0
-rw-r--r--java/res/values-fr/strings.xml (renamed from res/values-fr/strings.xml)38
-rw-r--r--java/res/values-it/bools.xml (renamed from res/values-it/bools.xml)0
-rw-r--r--java/res/values-it/donottranslate.xml (renamed from res/values-it/donottranslate.xml)0
-rw-r--r--java/res/values-it/strings.xml (renamed from res/values-it/strings.xml)50
-rw-r--r--java/res/values-ja/strings.xml (renamed from res/values-ja/strings.xml)32
-rw-r--r--java/res/values-ko/strings.xml (renamed from res/values-ko/strings.xml)56
-rw-r--r--java/res/values-land/dimens.xml (renamed from res/values-land/dimens.xml)0
-rw-r--r--java/res/values-nb/strings.xml (renamed from res/values-nb/strings.xml)38
-rw-r--r--java/res/values-nl/bools.xml (renamed from res/values-nl/bools.xml)0
-rw-r--r--java/res/values-nl/strings.xml (renamed from res/values-nl/strings.xml)40
-rw-r--r--java/res/values-pl/bools.xml (renamed from res/values-pl/bools.xml)0
-rw-r--r--java/res/values-pl/donottranslate.xml (renamed from res/values-pl/donottranslate.xml)0
-rw-r--r--java/res/values-pl/strings.xml (renamed from res/values-pl/strings.xml)42
-rw-r--r--java/res/values-pt-rPT/strings.xml (renamed from res/values-pt-rPT/strings.xml)42
-rw-r--r--java/res/values-pt/strings.xml (renamed from res/values-pt/strings.xml)38
-rw-r--r--java/res/values-ru/strings.xml (renamed from res/values-ru/strings.xml)50
-rw-r--r--java/res/values-sv/strings.xml (renamed from res/values-sv/strings.xml)36
-rw-r--r--java/res/values-tr/donottranslate.xml (renamed from res/values-tr/donottranslate.xml)0
-rw-r--r--java/res/values-tr/strings.xml (renamed from res/values-tr/strings.xml)32
-rw-r--r--java/res/values-zh-rCN/strings.xml (renamed from res/values-zh-rCN/strings.xml)58
-rw-r--r--java/res/values-zh-rTW/strings.xml (renamed from res/values-zh-rTW/strings.xml)62
-rw-r--r--java/res/values/bools.xml (renamed from res/values/bools.xml)0
-rw-r--r--java/res/values/colors.xml (renamed from res/values/colors.xml)0
-rw-r--r--java/res/values/dimens.xml (renamed from res/values/dimens.xml)0
-rw-r--r--java/res/values/donottranslate.xml (renamed from res/values/donottranslate.xml)2
-rw-r--r--java/res/values/durations.xml (renamed from res/values/durations.xml)0
-rw-r--r--java/res/values/keycodes.xml (renamed from res/values/keycodes.xml)0
-rw-r--r--java/res/values/strings.xml (renamed from res/values/strings.xml)3
-rwxr-xr-xjava/res/xml-de/kbd_qwerty.xml (renamed from res/xml-de/kbd_qwerty.xml)12
-rw-r--r--java/res/xml-fr/kbd_qwerty.xml (renamed from res/xml-fr/kbd_qwerty.xml)12
-rwxr-xr-xjava/res/xml-iw/kbd_qwerty.xml164
-rwxr-xr-xjava/res/xml-ru/kbd_qwerty.xml (renamed from res/xml-ru/kbd_qwerty.xml)20
-rw-r--r--java/res/xml-sv/kbd_qwerty.xml215
-rw-r--r--java/res/xml/azerty.xml (renamed from res/xml/azerty.xml)0
-rw-r--r--java/res/xml/kbd_alpha.xml (renamed from res/xml/kbd_alpha.xml)0
-rwxr-xr-xjava/res/xml/kbd_extension.xml (renamed from res/xml/kbd_extension.xml)0
-rwxr-xr-xjava/res/xml/kbd_phone.xml (renamed from res/xml/kbd_phone.xml)0
-rwxr-xr-xjava/res/xml/kbd_phone_symbols.xml (renamed from res/xml/kbd_phone_symbols.xml)0
-rw-r--r--java/res/xml/kbd_popup_template.xml (renamed from res/xml/kbd_popup_template.xml)0
-rwxr-xr-xjava/res/xml/kbd_qwerty.xml (renamed from res/xml/kbd_qwerty.xml)17
-rwxr-xr-xjava/res/xml/kbd_symbols.xml (renamed from res/xml/kbd_symbols.xml)6
-rwxr-xr-xjava/res/xml/kbd_symbols_shift.xml (renamed from res/xml/kbd_symbols_shift.xml)0
-rw-r--r--java/res/xml/language_prefs.xml (renamed from res/xml/language_prefs.xml)0
-rw-r--r--java/res/xml/method.xml (renamed from res/xml/method.xml)0
-rw-r--r--java/res/xml/popup_domains.xml (renamed from res/xml/popup_domains.xml)0
-rw-r--r--java/res/xml/popup_punctuation.xml (renamed from res/xml/popup_punctuation.xml)18
-rw-r--r--java/res/xml/popup_smileys.xml (renamed from res/xml/popup_smileys.xml)0
-rw-r--r--java/res/xml/prefs.xml (renamed from res/xml/prefs.xml)4
-rw-r--r--java/src/com/android/inputmethod/latin/AutoDictionary.java (renamed from src/com/android/inputmethod/latin/AutoDictionary.java)142
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java (renamed from src/com/android/inputmethod/latin/BinaryDictionary.java)42
-rwxr-xr-xjava/src/com/android/inputmethod/latin/CandidateView.java (renamed from src/com/android/inputmethod/latin/CandidateView.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/CandidateViewContainer.java (renamed from src/com/android/inputmethod/latin/CandidateViewContainer.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/ContactsDictionary.java (renamed from src/com/android/inputmethod/latin/ContactsDictionary.java)73
-rw-r--r--java/src/com/android/inputmethod/latin/Dictionary.java (renamed from src/com/android/inputmethod/latin/Dictionary.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/ExpandableDictionary.java (renamed from src/com/android/inputmethod/latin/ExpandableDictionary.java)71
-rw-r--r--java/src/com/android/inputmethod/latin/Hints.java (renamed from src/com/android/inputmethod/latin/Hints.java)0
-rw-r--r--java/src/com/android/inputmethod/latin/InputLanguageSelection.java (renamed from src/com/android/inputmethod/latin/InputLanguageSelection.java)37
-rw-r--r--java/src/com/android/inputmethod/latin/KeyboardSwitcher.java (renamed from src/com/android/inputmethod/latin/KeyboardSwitcher.java)5
-rw-r--r--java/src/com/android/inputmethod/latin/LanguageSwitcher.java (renamed from src/com/android/inputmethod/latin/LanguageSwitcher.java)0
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java (renamed from src/com/android/inputmethod/latin/LatinIME.java)193
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIMEBackupAgent.java (renamed from src/com/android/inputmethod/latin/LatinIMEBackupAgent.java)8
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIMESettings.java (renamed from src/com/android/inputmethod/latin/LatinIMESettings.java)10
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboard.java (renamed from src/com/android/inputmethod/latin/LatinKeyboard.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboardView.java (renamed from src/com/android/inputmethod/latin/LatinKeyboardView.java)170
-rwxr-xr-xjava/src/com/android/inputmethod/latin/Suggest.java (renamed from src/com/android/inputmethod/latin/Suggest.java)13
-rw-r--r--java/src/com/android/inputmethod/latin/TextEntryState.java (renamed from src/com/android/inputmethod/latin/TextEntryState.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/Tutorial.java (renamed from src/com/android/inputmethod/latin/Tutorial.java)2
-rw-r--r--java/src/com/android/inputmethod/latin/UserDictionary.java (renamed from src/com/android/inputmethod/latin/UserDictionary.java)25
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java (renamed from src/com/android/inputmethod/latin/WordComposer.java)18
-rw-r--r--java/src/com/android/inputmethod/voice/EditingUtil.java (renamed from src/com/android/inputmethod/voice/EditingUtil.java)0
-rw-r--r--java/src/com/android/inputmethod/voice/FieldContext.java (renamed from src/com/android/inputmethod/voice/FieldContext.java)0
-rw-r--r--java/src/com/android/inputmethod/voice/LatinIMEWithVoice.java (renamed from src/com/android/inputmethod/voice/LatinIMEWithVoice.java)0
-rw-r--r--java/src/com/android/inputmethod/voice/LatinIMEWithVoiceSettings.java (renamed from src/com/android/inputmethod/voice/LatinIMEWithVoiceSettings.java)0
-rw-r--r--java/src/com/android/inputmethod/voice/RecognitionView.java (renamed from src/com/android/inputmethod/voice/RecognitionView.java)35
-rw-r--r--java/src/com/android/inputmethod/voice/SettingsUtil.java (renamed from src/com/android/inputmethod/voice/SettingsUtil.java)0
-rw-r--r--java/src/com/android/inputmethod/voice/VoiceInput.java (renamed from src/com/android/inputmethod/voice/VoiceInput.java)145
-rw-r--r--java/src/com/android/inputmethod/voice/VoiceInputLogger.java (renamed from src/com/android/inputmethod/voice/VoiceInputLogger.java)39
-rw-r--r--java/src/com/android/inputmethod/voice/WaveformImage.java (renamed from src/com/android/inputmethod/voice/WaveformImage.java)0
-rw-r--r--java/src/com/android/inputmethod/voice/Whitelist.java (renamed from src/com/android/inputmethod/voice/Whitelist.java)0
-rw-r--r--java/src/com/google/android/voicesearch/LatinIMEWithVoice.java (renamed from src/com/google/android/voicesearch/LatinIMEWithVoice.java)0
-rw-r--r--java/src/com/google/android/voicesearch/LatinIMEWithVoiceSettings.java (renamed from src/com/google/android/voicesearch/LatinIMEWithVoiceSettings.java)0
301 files changed, 1934 insertions, 709 deletions
diff --git a/java/Android.mk b/java/Android.mk
new file mode 100755
index 000000000..4bb8986ee
--- /dev/null
+++ b/java/Android.mk
@@ -0,0 +1,22 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_PACKAGE_NAME := LatinIME
+
+LOCAL_CERTIFICATE := shared
+
+LOCAL_JNI_SHARED_LIBRARIES := libjni_latinime
+
+LOCAL_STATIC_JAVA_LIBRARIES := android-common
+
+#LOCAL_AAPT_FLAGS := -0 .dict
+
+LOCAL_SDK_VERSION := current
+
+LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
+
+include $(BUILD_PACKAGE)
diff --git a/AndroidManifest.xml b/java/AndroidManifest.xml
index c42ad42ef..e229bc76a 100755
--- a/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -1,6 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.inputmethod.latin"
- android:sharedUserId="android.uid.shared">
+ package="com.android.inputmethod.latin">
<original-package android:name="com.android.inputmethod.latin" />
@@ -8,6 +7,7 @@
<uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
+ <uses-permission android:name="android.permission.READ_CONTACTS" />
<application android:label="@string/english_ime_name"
android:backupAgent="LatinIMEBackupAgent"
@@ -32,6 +32,8 @@
android:label="@string/language_selection_title">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
+ <action android:name="com.android.inputmethod.latin.INPUT_LANGUAGE_SELECTION"/>
+ <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
diff --git a/java/MODULE_LICENSE_APACHE2 b/java/MODULE_LICENSE_APACHE2
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/java/MODULE_LICENSE_APACHE2
diff --git a/java/NOTICE b/java/NOTICE
new file mode 100644
index 000000000..7340b9e35
--- /dev/null
+++ b/java/NOTICE
@@ -0,0 +1,190 @@
+
+ Copyright (c) 2008, 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.
+
+ 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.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/java/proguard.flags b/java/proguard.flags
new file mode 100644
index 000000000..0a5d2dda9
--- /dev/null
+++ b/java/proguard.flags
@@ -0,0 +1,3 @@
+-keep class com.android.inputmethod.latin.BinaryDictionary {
+ int mDictLength;
+}
diff --git a/res/drawable-en-hdpi/sym_keyboard_delete.png b/java/res/drawable-en-hdpi/sym_keyboard_delete.png
index 569369e79..569369e79 100755
--- a/res/drawable-en-hdpi/sym_keyboard_delete.png
+++ b/java/res/drawable-en-hdpi/sym_keyboard_delete.png
Binary files differ
diff --git a/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png
index ca7637552..ca7637552 100755
--- a/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png
+++ b/java/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png
Binary files differ
diff --git a/res/drawable-en-mdpi/sym_keyboard_delete.png b/java/res/drawable-en-mdpi/sym_keyboard_delete.png
index f1f7c58cf..f1f7c58cf 100644
--- a/res/drawable-en-mdpi/sym_keyboard_delete.png
+++ b/java/res/drawable-en-mdpi/sym_keyboard_delete.png
Binary files differ
diff --git a/res/drawable-en-mdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-en-mdpi/sym_keyboard_feedback_delete.png
index 3c9083972..3c9083972 100644
--- a/res/drawable-en-mdpi/sym_keyboard_feedback_delete.png
+++ b/java/res/drawable-en-mdpi/sym_keyboard_feedback_delete.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png
index b6c234c04..b6c234c04 100644
--- a/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
index 73a8cd1c3..73a8cd1c3 100644
--- a/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png
index 42c7c146d..42c7c146d 100644
--- a/res/drawable-hdpi/btn_keyboard_key_normal.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
index 01e2506b0..01e2506b0 100644
--- a/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
index 83c6eb3fc..83c6eb3fc 100644
--- a/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
index e047eaff1..e047eaff1 100644
--- a/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
index 218a2d29e..218a2d29e 100644
--- a/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
index afe49512e..afe49512e 100644
--- a/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/res/drawable-hdpi/cancel.png b/java/res/drawable-hdpi/cancel.png
index 6585bde17..6585bde17 100755
--- a/res/drawable-hdpi/cancel.png
+++ b/java/res/drawable-hdpi/cancel.png
Binary files differ
diff --git a/res/drawable-hdpi/candidate_feedback_background.9.png b/java/res/drawable-hdpi/candidate_feedback_background.9.png
index 203c4e640..203c4e640 100755
--- a/res/drawable-hdpi/candidate_feedback_background.9.png
+++ b/java/res/drawable-hdpi/candidate_feedback_background.9.png
Binary files differ
diff --git a/res/drawable-hdpi/caution.png b/java/res/drawable-hdpi/caution.png
index 5cb6c54b9..5cb6c54b9 100755
--- a/res/drawable-hdpi/caution.png
+++ b/java/res/drawable-hdpi/caution.png
Binary files differ
diff --git a/res/drawable-hdpi/dialog_bubble_step02.9.png b/java/res/drawable-hdpi/dialog_bubble_step02.9.png
index b338364c5..b338364c5 100755
--- a/res/drawable-hdpi/dialog_bubble_step02.9.png
+++ b/java/res/drawable-hdpi/dialog_bubble_step02.9.png
Binary files differ
diff --git a/res/drawable-hdpi/dialog_bubble_step07.9.png b/java/res/drawable-hdpi/dialog_bubble_step07.9.png
index 94b915432..94b915432 100755
--- a/res/drawable-hdpi/dialog_bubble_step07.9.png
+++ b/java/res/drawable-hdpi/dialog_bubble_step07.9.png
Binary files differ
diff --git a/res/drawable-hdpi/dialog_top_dark_bottom_medium.png b/java/res/drawable-hdpi/dialog_top_dark_bottom_medium.png
index 7c79a4f90..7c79a4f90 100755
--- a/res/drawable-hdpi/dialog_top_dark_bottom_medium.png
+++ b/java/res/drawable-hdpi/dialog_top_dark_bottom_medium.png
Binary files differ
diff --git a/res/drawable-hdpi/highlight_pressed.png b/java/res/drawable-hdpi/highlight_pressed.png
index ae04901a0..ae04901a0 100644
--- a/res/drawable-hdpi/highlight_pressed.png
+++ b/java/res/drawable-hdpi/highlight_pressed.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialog_alert_large.png b/java/res/drawable-hdpi/ic_dialog_alert_large.png
index 7e2646d65..7e2646d65 100755
--- a/res/drawable-hdpi/ic_dialog_alert_large.png
+++ b/java/res/drawable-hdpi/ic_dialog_alert_large.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialog_keyboard.png b/java/res/drawable-hdpi/ic_dialog_keyboard.png
index c7729566c..c7729566c 100755
--- a/res/drawable-hdpi/ic_dialog_keyboard.png
+++ b/java/res/drawable-hdpi/ic_dialog_keyboard.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialog_voice_input.png b/java/res/drawable-hdpi/ic_dialog_voice_input.png
index 11a3cfe77..11a3cfe77 100755
--- a/res/drawable-hdpi/ic_dialog_voice_input.png
+++ b/java/res/drawable-hdpi/ic_dialog_voice_input.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialog_wave_0_0.png b/java/res/drawable-hdpi/ic_dialog_wave_0_0.png
index 33023c3f7..33023c3f7 100755
--- a/res/drawable-hdpi/ic_dialog_wave_0_0.png
+++ b/java/res/drawable-hdpi/ic_dialog_wave_0_0.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialog_wave_1_3.png b/java/res/drawable-hdpi/ic_dialog_wave_1_3.png
index 662686c0f..662686c0f 100755
--- a/res/drawable-hdpi/ic_dialog_wave_1_3.png
+++ b/java/res/drawable-hdpi/ic_dialog_wave_1_3.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialog_wave_2_3.png b/java/res/drawable-hdpi/ic_dialog_wave_2_3.png
index e23ada57e..e23ada57e 100755
--- a/res/drawable-hdpi/ic_dialog_wave_2_3.png
+++ b/java/res/drawable-hdpi/ic_dialog_wave_2_3.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialog_wave_3_3.png b/java/res/drawable-hdpi/ic_dialog_wave_3_3.png
index 5fe5492ad..5fe5492ad 100755
--- a/res/drawable-hdpi/ic_dialog_wave_3_3.png
+++ b/java/res/drawable-hdpi/ic_dialog_wave_3_3.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialog_wave_4_3.png b/java/res/drawable-hdpi/ic_dialog_wave_4_3.png
index 81b803fd0..81b803fd0 100755
--- a/res/drawable-hdpi/ic_dialog_wave_4_3.png
+++ b/java/res/drawable-hdpi/ic_dialog_wave_4_3.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_mic_dialog.png b/java/res/drawable-hdpi/ic_mic_dialog.png
index 349dc4b37..349dc4b37 100644
--- a/res/drawable-hdpi/ic_mic_dialog.png
+++ b/java/res/drawable-hdpi/ic_mic_dialog.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_suggest_strip_microphone.png b/java/res/drawable-hdpi/ic_suggest_strip_microphone.png
index c00b4aaa6..c00b4aaa6 100644
--- a/res/drawable-hdpi/ic_suggest_strip_microphone.png
+++ b/java/res/drawable-hdpi/ic_suggest_strip_microphone.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png
index 256dc3d61..256dc3d61 100644
--- a/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png
+++ b/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png b/java/res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png
index e375f262f..e375f262f 100755
--- a/res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png
+++ b/java/res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png b/java/res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png
index d38ae7562..d38ae7562 100755
--- a/res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png
+++ b/java/res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png
Binary files differ
diff --git a/res/drawable-hdpi/keyboard_background.9.png b/java/res/drawable-hdpi/keyboard_background.9.png
index edffac5b8..edffac5b8 100755
--- a/res/drawable-hdpi/keyboard_background.9.png
+++ b/java/res/drawable-hdpi/keyboard_background.9.png
Binary files differ
diff --git a/res/drawable-hdpi/keyboard_suggest_strip.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip.9.png
index 0cbb3ed86..0cbb3ed86 100755
--- a/res/drawable-hdpi/keyboard_suggest_strip.9.png
+++ b/java/res/drawable-hdpi/keyboard_suggest_strip.9.png
Binary files differ
diff --git a/res/drawable-hdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png
index a5980388a..a5980388a 100644
--- a/res/drawable-hdpi/keyboard_suggest_strip_divider.png
+++ b/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png
Binary files differ
diff --git a/res/drawable-hdpi/list_selector_background_pressed.9.png b/java/res/drawable-hdpi/list_selector_background_pressed.9.png
index ba79cf7f8..ba79cf7f8 100644
--- a/res/drawable-hdpi/list_selector_background_pressed.9.png
+++ b/java/res/drawable-hdpi/list_selector_background_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/mic_slash.png b/java/res/drawable-hdpi/mic_slash.png
index a7b734c71..a7b734c71 100644
--- a/res/drawable-hdpi/mic_slash.png
+++ b/java/res/drawable-hdpi/mic_slash.png
Binary files differ
diff --git a/res/drawable-hdpi/ok_cancel.png b/java/res/drawable-hdpi/ok_cancel.png
index 6a99528ef..6a99528ef 100755
--- a/res/drawable-hdpi/ok_cancel.png
+++ b/java/res/drawable-hdpi/ok_cancel.png
Binary files differ
diff --git a/res/drawable-hdpi/speak_now_level0.png b/java/res/drawable-hdpi/speak_now_level0.png
index a681da606..a681da606 100755
--- a/res/drawable-hdpi/speak_now_level0.png
+++ b/java/res/drawable-hdpi/speak_now_level0.png
Binary files differ
diff --git a/res/drawable-hdpi/speak_now_level1.png b/java/res/drawable-hdpi/speak_now_level1.png
index 0dbec69a7..0dbec69a7 100755
--- a/res/drawable-hdpi/speak_now_level1.png
+++ b/java/res/drawable-hdpi/speak_now_level1.png
Binary files differ
diff --git a/res/drawable-hdpi/speak_now_level2.png b/java/res/drawable-hdpi/speak_now_level2.png
index 45cbff2b7..45cbff2b7 100755
--- a/res/drawable-hdpi/speak_now_level2.png
+++ b/java/res/drawable-hdpi/speak_now_level2.png
Binary files differ
diff --git a/res/drawable-hdpi/speak_now_level3.png b/java/res/drawable-hdpi/speak_now_level3.png
index abda8f683..abda8f683 100755
--- a/res/drawable-hdpi/speak_now_level3.png
+++ b/java/res/drawable-hdpi/speak_now_level3.png
Binary files differ
diff --git a/res/drawable-hdpi/speak_now_level4.png b/java/res/drawable-hdpi/speak_now_level4.png
index 18356351a..18356351a 100755
--- a/res/drawable-hdpi/speak_now_level4.png
+++ b/java/res/drawable-hdpi/speak_now_level4.png
Binary files differ
diff --git a/res/drawable-hdpi/speak_now_level5.png b/java/res/drawable-hdpi/speak_now_level5.png
index 7d4fd5f20..7d4fd5f20 100755
--- a/res/drawable-hdpi/speak_now_level5.png
+++ b/java/res/drawable-hdpi/speak_now_level5.png
Binary files differ
diff --git a/res/drawable-hdpi/speak_now_level6.png b/java/res/drawable-hdpi/speak_now_level6.png
index e06990faa..e06990faa 100755
--- a/res/drawable-hdpi/speak_now_level6.png
+++ b/java/res/drawable-hdpi/speak_now_level6.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_123_mic.png b/java/res/drawable-hdpi/sym_keyboard_123_mic.png
index 62669803d..62669803d 100644
--- a/res/drawable-hdpi/sym_keyboard_123_mic.png
+++ b/java/res/drawable-hdpi/sym_keyboard_123_mic.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_delete.png b/java/res/drawable-hdpi/sym_keyboard_delete.png
index 59d78bec0..59d78bec0 100755
--- a/res/drawable-hdpi/sym_keyboard_delete.png
+++ b/java/res/drawable-hdpi/sym_keyboard_delete.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_done.png b/java/res/drawable-hdpi/sym_keyboard_done.png
index 471c5021b..471c5021b 100755
--- a/res/drawable-hdpi/sym_keyboard_done.png
+++ b/java/res/drawable-hdpi/sym_keyboard_done.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png b/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png
index f57e581d5..f57e581d5 100644
--- a/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png
index ca7637552..ca7637552 100755
--- a/res/drawable-hdpi/sym_keyboard_feedback_delete.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_done.png b/java/res/drawable-hdpi/sym_keyboard_feedback_done.png
index 7015e266a..7015e266a 100755
--- a/res/drawable-hdpi/sym_keyboard_feedback_done.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_done.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png
index c7638bff1..c7638bff1 100644
--- a/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png
index 7acb07c86..7acb07c86 100644
--- a/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_mic.png b/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png
index cb86a5598..cb86a5598 100644
--- a/res/drawable-hdpi/sym_keyboard_feedback_mic.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_numalt.png b/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png
index 728c6f7d4..728c6f7d4 100755
--- a/res/drawable-hdpi/sym_keyboard_feedback_numalt.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_return.png b/java/res/drawable-hdpi/sym_keyboard_feedback_return.png
index ae57299e4..ae57299e4 100755
--- a/res/drawable-hdpi/sym_keyboard_feedback_return.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_return.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_search.png b/java/res/drawable-hdpi/sym_keyboard_feedback_search.png
index d931b39e2..d931b39e2 100755
--- a/res/drawable-hdpi/sym_keyboard_feedback_search.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_search.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_shift.png b/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png
index 4db31c849..4db31c849 100755
--- a/res/drawable-hdpi/sym_keyboard_feedback_shift.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png b/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png
index 3fd5659fd..3fd5659fd 100755
--- a/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_space.png b/java/res/drawable-hdpi/sym_keyboard_feedback_space.png
index 98266ee52..98266ee52 100755
--- a/res/drawable-hdpi/sym_keyboard_feedback_space.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_space.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png
index 7754752f3..7754752f3 100644
--- a/res/drawable-hdpi/sym_keyboard_feedback_tab.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_feedback_tabprev.png b/java/res/drawable-hdpi/sym_keyboard_feedback_tabprev.png
index 36f6b5364..36f6b5364 100644
--- a/res/drawable-hdpi/sym_keyboard_feedback_tabprev.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_tabprev.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_globe.png b/java/res/drawable-hdpi/sym_keyboard_globe.png
index fa747642d..fa747642d 100644
--- a/res/drawable-hdpi/sym_keyboard_globe.png
+++ b/java/res/drawable-hdpi/sym_keyboard_globe.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png
index 65ccfda87..65ccfda87 100644
--- a/res/drawable-hdpi/sym_keyboard_language_arrows_left.png
+++ b/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png
index 0d01bc224..0d01bc224 100644
--- a/res/drawable-hdpi/sym_keyboard_language_arrows_right.png
+++ b/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_mic.png b/java/res/drawable-hdpi/sym_keyboard_mic.png
index 0a0a68a96..0a0a68a96 100644
--- a/res/drawable-hdpi/sym_keyboard_mic.png
+++ b/java/res/drawable-hdpi/sym_keyboard_mic.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_num0.png b/java/res/drawable-hdpi/sym_keyboard_num0.png
index 10ac70b9d..10ac70b9d 100755
--- a/res/drawable-hdpi/sym_keyboard_num0.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num0.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_num1.png b/java/res/drawable-hdpi/sym_keyboard_num1.png
index 0fc03efa5..0fc03efa5 100755
--- a/res/drawable-hdpi/sym_keyboard_num1.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num1.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_num2.png b/java/res/drawable-hdpi/sym_keyboard_num2.png
index 283560b35..283560b35 100755
--- a/res/drawable-hdpi/sym_keyboard_num2.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num2.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_num3.png b/java/res/drawable-hdpi/sym_keyboard_num3.png
index 9a3b3294b..9a3b3294b 100755
--- a/res/drawable-hdpi/sym_keyboard_num3.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num3.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_num4.png b/java/res/drawable-hdpi/sym_keyboard_num4.png
index f13ff1ae9..f13ff1ae9 100755
--- a/res/drawable-hdpi/sym_keyboard_num4.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num4.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_num5.png b/java/res/drawable-hdpi/sym_keyboard_num5.png
index c251329fa..c251329fa 100755
--- a/res/drawable-hdpi/sym_keyboard_num5.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num5.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_num6.png b/java/res/drawable-hdpi/sym_keyboard_num6.png
index 4acba4c91..4acba4c91 100755
--- a/res/drawable-hdpi/sym_keyboard_num6.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num6.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_num7.png b/java/res/drawable-hdpi/sym_keyboard_num7.png
index 14931c18c..14931c18c 100755
--- a/res/drawable-hdpi/sym_keyboard_num7.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num7.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_num8.png b/java/res/drawable-hdpi/sym_keyboard_num8.png
index d4973fdc9..d4973fdc9 100755
--- a/res/drawable-hdpi/sym_keyboard_num8.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num8.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_num9.png b/java/res/drawable-hdpi/sym_keyboard_num9.png
index 49cec66f4..49cec66f4 100755
--- a/res/drawable-hdpi/sym_keyboard_num9.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num9.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_numalt.png b/java/res/drawable-hdpi/sym_keyboard_numalt.png
index 3cc5311cd..3cc5311cd 100755
--- a/res/drawable-hdpi/sym_keyboard_numalt.png
+++ b/java/res/drawable-hdpi/sym_keyboard_numalt.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_numpound.png b/java/res/drawable-hdpi/sym_keyboard_numpound.png
index d09133929..d09133929 100755
--- a/res/drawable-hdpi/sym_keyboard_numpound.png
+++ b/java/res/drawable-hdpi/sym_keyboard_numpound.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_numstar.png b/java/res/drawable-hdpi/sym_keyboard_numstar.png
index e838e169f..e838e169f 100755
--- a/res/drawable-hdpi/sym_keyboard_numstar.png
+++ b/java/res/drawable-hdpi/sym_keyboard_numstar.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_return.png b/java/res/drawable-hdpi/sym_keyboard_return.png
index 58505c5e0..58505c5e0 100755
--- a/res/drawable-hdpi/sym_keyboard_return.png
+++ b/java/res/drawable-hdpi/sym_keyboard_return.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_search.png b/java/res/drawable-hdpi/sym_keyboard_search.png
index e72cde3bb..e72cde3bb 100755
--- a/res/drawable-hdpi/sym_keyboard_search.png
+++ b/java/res/drawable-hdpi/sym_keyboard_search.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_shift.png b/java/res/drawable-hdpi/sym_keyboard_shift.png
index 814908178..814908178 100755
--- a/res/drawable-hdpi/sym_keyboard_shift.png
+++ b/java/res/drawable-hdpi/sym_keyboard_shift.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_shift_locked.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked.png
index 31ca27718..31ca27718 100755
--- a/res/drawable-hdpi/sym_keyboard_shift_locked.png
+++ b/java/res/drawable-hdpi/sym_keyboard_shift_locked.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_space.png b/java/res/drawable-hdpi/sym_keyboard_space.png
index 3e98b3014..3e98b3014 100755
--- a/res/drawable-hdpi/sym_keyboard_space.png
+++ b/java/res/drawable-hdpi/sym_keyboard_space.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_tab.png b/java/res/drawable-hdpi/sym_keyboard_tab.png
index 1d4d92bd1..1d4d92bd1 100644
--- a/res/drawable-hdpi/sym_keyboard_tab.png
+++ b/java/res/drawable-hdpi/sym_keyboard_tab.png
Binary files differ
diff --git a/res/drawable-hdpi/sym_keyboard_tabprev.png b/java/res/drawable-hdpi/sym_keyboard_tabprev.png
index 51bff1bcd..51bff1bcd 100644
--- a/res/drawable-hdpi/sym_keyboard_tabprev.png
+++ b/java/res/drawable-hdpi/sym_keyboard_tabprev.png
Binary files differ
diff --git a/res/drawable-hdpi/voice_ime_background.9.png b/java/res/drawable-hdpi/voice_ime_background.9.png
index 73fb0901e..73fb0901e 100755
--- a/res/drawable-hdpi/voice_ime_background.9.png
+++ b/java/res/drawable-hdpi/voice_ime_background.9.png
Binary files differ
diff --git a/res/drawable-hdpi/working.png b/java/res/drawable-hdpi/working.png
index 8b51ed116..8b51ed116 100755
--- a/res/drawable-hdpi/working.png
+++ b/java/res/drawable-hdpi/working.png
Binary files differ
diff --git a/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png
index 603bf0e15..603bf0e15 100755
--- a/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png
index 6ddd516e7..6ddd516e7 100755
--- a/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png
index 65fdeb353..65fdeb353 100755
--- a/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png
index 7ec915fe8..7ec915fe8 100755
--- a/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png
index 439271723..439271723 100755
--- a/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png
index c2cc32044..c2cc32044 100755
--- a/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png
index 1a03c52e6..1a03c52e6 100755
--- a/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png
+++ b/java/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png
Binary files differ
diff --git a/res/drawable-land-mdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-land-mdpi/btn_keyboard_key_normal.9.png
index ea2506c6d..ea2506c6d 100644
--- a/res/drawable-land-mdpi/btn_keyboard_key_normal.9.png
+++ b/java/res/drawable-land-mdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-land-mdpi/btn_keyboard_key_normal_off.9.png
index bda9b8394..bda9b8394 100644
--- a/res/drawable-land-mdpi/btn_keyboard_key_normal_off.9.png
+++ b/java/res/drawable-land-mdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-land-mdpi/btn_keyboard_key_normal_on.9.png
index 0c16ed509..0c16ed509 100644
--- a/res/drawable-land-mdpi/btn_keyboard_key_normal_on.9.png
+++ b/java/res/drawable-land-mdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png
index 6b5c718c7..6b5c718c7 100755
--- a/res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png
+++ b/java/res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-land-mdpi/btn_keyboard_key_pressed_off.9.png
index bdcf06e1b..bdcf06e1b 100644
--- a/res/drawable-land-mdpi/btn_keyboard_key_pressed_off.9.png
+++ b/java/res/drawable-land-mdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-land-mdpi/btn_keyboard_key_pressed_on.9.png
index 79621a9e6..79621a9e6 100644
--- a/res/drawable-land-mdpi/btn_keyboard_key_pressed_on.9.png
+++ b/java/res/drawable-land-mdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-land-mdpi/keyboard_suggest_strip_divider.png
index e54c5b099..e54c5b099 100644
--- a/res/drawable-land-mdpi/keyboard_suggest_strip_divider.png
+++ b/java/res/drawable-land-mdpi/keyboard_suggest_strip_divider.png
Binary files differ
diff --git a/res/drawable-land/btn_keyboard_key.xml b/java/res/drawable-land/btn_keyboard_key.xml
index 45578e582..45578e582 100644
--- a/res/drawable-land/btn_keyboard_key.xml
+++ b/java/res/drawable-land/btn_keyboard_key.xml
diff --git a/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png
index 20f3d5087..20f3d5087 100644
--- a/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png
index 1ed3065c5..1ed3065c5 100644
--- a/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png
index 7ba18dd25..7ba18dd25 100644
--- a/res/drawable-mdpi/btn_keyboard_key_normal.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png
index bda9b8394..bda9b8394 100644
--- a/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png
index 0c16ed509..0c16ed509 100644
--- a/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png
index 39b9314a1..39b9314a1 100644
--- a/res/drawable-mdpi/btn_keyboard_key_pressed.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png
index bdcf06e1b..bdcf06e1b 100644
--- a/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png
index 79621a9e6..79621a9e6 100644
--- a/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/res/drawable-mdpi/candidate_feedback_background.9.png b/java/res/drawable-mdpi/candidate_feedback_background.9.png
index 2a80f096d..2a80f096d 100644
--- a/res/drawable-mdpi/candidate_feedback_background.9.png
+++ b/java/res/drawable-mdpi/candidate_feedback_background.9.png
Binary files differ
diff --git a/res/drawable-mdpi/dialog_bubble_step02.9.png b/java/res/drawable-mdpi/dialog_bubble_step02.9.png
index d77f85fe2..d77f85fe2 100755
--- a/res/drawable-mdpi/dialog_bubble_step02.9.png
+++ b/java/res/drawable-mdpi/dialog_bubble_step02.9.png
Binary files differ
diff --git a/res/drawable-mdpi/dialog_bubble_step07.9.png b/java/res/drawable-mdpi/dialog_bubble_step07.9.png
index 80f4a0eaa..80f4a0eaa 100755
--- a/res/drawable-mdpi/dialog_bubble_step07.9.png
+++ b/java/res/drawable-mdpi/dialog_bubble_step07.9.png
Binary files differ
diff --git a/res/drawable-mdpi/highlight_pressed.png b/java/res/drawable-mdpi/highlight_pressed.png
index d27f1061a..d27f1061a 100644
--- a/res/drawable-mdpi/highlight_pressed.png
+++ b/java/res/drawable-mdpi/highlight_pressed.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialog_keyboard.png b/java/res/drawable-mdpi/ic_dialog_keyboard.png
index 9a5aada8b..9a5aada8b 100644
--- a/res/drawable-mdpi/ic_dialog_keyboard.png
+++ b/java/res/drawable-mdpi/ic_dialog_keyboard.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_mic_dialog.png b/java/res/drawable-mdpi/ic_mic_dialog.png
index 77613ca05..77613ca05 100644
--- a/res/drawable-mdpi/ic_mic_dialog.png
+++ b/java/res/drawable-mdpi/ic_mic_dialog.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_suggest_strip_microphone.png b/java/res/drawable-mdpi/ic_suggest_strip_microphone.png
index 18f314a61..18f314a61 100644
--- a/res/drawable-mdpi/ic_suggest_strip_microphone.png
+++ b/java/res/drawable-mdpi/ic_suggest_strip_microphone.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png
index ff629b674..ff629b674 100644
--- a/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png
+++ b/java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_suggest_strip_scroll_left_arrow.png b/java/res/drawable-mdpi/ic_suggest_strip_scroll_left_arrow.png
index a9adef2ba..a9adef2ba 100644
--- a/res/drawable-mdpi/ic_suggest_strip_scroll_left_arrow.png
+++ b/java/res/drawable-mdpi/ic_suggest_strip_scroll_left_arrow.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_suggest_strip_scroll_right_arrow.png b/java/res/drawable-mdpi/ic_suggest_strip_scroll_right_arrow.png
index 639a28711..639a28711 100644
--- a/res/drawable-mdpi/ic_suggest_strip_scroll_right_arrow.png
+++ b/java/res/drawable-mdpi/ic_suggest_strip_scroll_right_arrow.png
Binary files differ
diff --git a/res/drawable-mdpi/keyboard_background.9.png b/java/res/drawable-mdpi/keyboard_background.9.png
index 2bd4b628d..2bd4b628d 100644
--- a/res/drawable-mdpi/keyboard_background.9.png
+++ b/java/res/drawable-mdpi/keyboard_background.9.png
Binary files differ
diff --git a/res/drawable-mdpi/keyboard_suggest_strip.9.png b/java/res/drawable-mdpi/keyboard_suggest_strip.9.png
index 71bf5e8f4..71bf5e8f4 100644
--- a/res/drawable-mdpi/keyboard_suggest_strip.9.png
+++ b/java/res/drawable-mdpi/keyboard_suggest_strip.9.png
Binary files differ
diff --git a/res/drawable-mdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-mdpi/keyboard_suggest_strip_divider.png
index c9413d7c1..c9413d7c1 100644
--- a/res/drawable-mdpi/keyboard_suggest_strip_divider.png
+++ b/java/res/drawable-mdpi/keyboard_suggest_strip_divider.png
Binary files differ
diff --git a/res/drawable-mdpi/list_selector_background_pressed.9.png b/java/res/drawable-mdpi/list_selector_background_pressed.9.png
index 02b4e9a53..02b4e9a53 100644
--- a/res/drawable-mdpi/list_selector_background_pressed.9.png
+++ b/java/res/drawable-mdpi/list_selector_background_pressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_123_mic.png b/java/res/drawable-mdpi/sym_keyboard_123_mic.png
index 35afe0821..35afe0821 100644
--- a/res/drawable-mdpi/sym_keyboard_123_mic.png
+++ b/java/res/drawable-mdpi/sym_keyboard_123_mic.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_delete.png b/java/res/drawable-mdpi/sym_keyboard_delete.png
index 43a033ead..43a033ead 100644
--- a/res/drawable-mdpi/sym_keyboard_delete.png
+++ b/java/res/drawable-mdpi/sym_keyboard_delete.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_done.png b/java/res/drawable-mdpi/sym_keyboard_done.png
index c0d6d1394..c0d6d1394 100755
--- a/res/drawable-mdpi/sym_keyboard_done.png
+++ b/java/res/drawable-mdpi/sym_keyboard_done.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png b/java/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png
index bc11cf31a..bc11cf31a 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-mdpi/sym_keyboard_feedback_delete.png
index 1edb10b4e..1edb10b4e 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_delete.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_delete.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_done.png b/java/res/drawable-mdpi/sym_keyboard_feedback_done.png
index 0d7ebd4e5..0d7ebd4e5 100755
--- a/res/drawable-mdpi/sym_keyboard_feedback_done.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_done.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_left.png b/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_left.png
index e3f80fada..e3f80fada 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_left.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_left.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png b/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png
index 3cb0d9913..3cb0d9913 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_mic.png b/java/res/drawable-mdpi/sym_keyboard_feedback_mic.png
index 247d5b3a9..247d5b3a9 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_mic.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_mic.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_numalt.png b/java/res/drawable-mdpi/sym_keyboard_feedback_numalt.png
index aac737615..aac737615 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_numalt.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_numalt.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_return.png b/java/res/drawable-mdpi/sym_keyboard_feedback_return.png
index 03d9c9b2d..03d9c9b2d 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_return.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_return.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_search.png b/java/res/drawable-mdpi/sym_keyboard_feedback_search.png
index f4af341eb..f4af341eb 100755
--- a/res/drawable-mdpi/sym_keyboard_feedback_search.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_search.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_shift.png b/java/res/drawable-mdpi/sym_keyboard_feedback_shift.png
index 97f4661f8..97f4661f8 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_shift.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_shift.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png b/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png
index 7194b30b0..7194b30b0 100755
--- a/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_space.png b/java/res/drawable-mdpi/sym_keyboard_feedback_space.png
index 739db6879..739db6879 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_space.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_space.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png
index 593fa6703..593fa6703 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_tab.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_feedback_tabprev.png b/java/res/drawable-mdpi/sym_keyboard_feedback_tabprev.png
index d4b3e7db3..d4b3e7db3 100644
--- a/res/drawable-mdpi/sym_keyboard_feedback_tabprev.png
+++ b/java/res/drawable-mdpi/sym_keyboard_feedback_tabprev.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_globe.png b/java/res/drawable-mdpi/sym_keyboard_globe.png
index f30c1b640..f30c1b640 100644
--- a/res/drawable-mdpi/sym_keyboard_globe.png
+++ b/java/res/drawable-mdpi/sym_keyboard_globe.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-mdpi/sym_keyboard_language_arrows_left.png
index 91eda5f2d..91eda5f2d 100644
--- a/res/drawable-mdpi/sym_keyboard_language_arrows_left.png
+++ b/java/res/drawable-mdpi/sym_keyboard_language_arrows_left.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-mdpi/sym_keyboard_language_arrows_right.png
index 62a5beba4..62a5beba4 100644
--- a/res/drawable-mdpi/sym_keyboard_language_arrows_right.png
+++ b/java/res/drawable-mdpi/sym_keyboard_language_arrows_right.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_mic.png b/java/res/drawable-mdpi/sym_keyboard_mic.png
index a75809549..a75809549 100644
--- a/res/drawable-mdpi/sym_keyboard_mic.png
+++ b/java/res/drawable-mdpi/sym_keyboard_mic.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_num0.png b/java/res/drawable-mdpi/sym_keyboard_num0.png
index e7007c871..e7007c871 100644
--- a/res/drawable-mdpi/sym_keyboard_num0.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num0.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_num1.png b/java/res/drawable-mdpi/sym_keyboard_num1.png
index aaac11b0c..aaac11b0c 100644
--- a/res/drawable-mdpi/sym_keyboard_num1.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num1.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_num2.png b/java/res/drawable-mdpi/sym_keyboard_num2.png
index 4372eb8f0..4372eb8f0 100644
--- a/res/drawable-mdpi/sym_keyboard_num2.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num2.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_num3.png b/java/res/drawable-mdpi/sym_keyboard_num3.png
index 6f54c850f..6f54c850f 100644
--- a/res/drawable-mdpi/sym_keyboard_num3.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num3.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_num4.png b/java/res/drawable-mdpi/sym_keyboard_num4.png
index 3e50bb957..3e50bb957 100644
--- a/res/drawable-mdpi/sym_keyboard_num4.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num4.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_num5.png b/java/res/drawable-mdpi/sym_keyboard_num5.png
index c39ef4404..c39ef4404 100644
--- a/res/drawable-mdpi/sym_keyboard_num5.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num5.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_num6.png b/java/res/drawable-mdpi/sym_keyboard_num6.png
index ea88ceb94..ea88ceb94 100644
--- a/res/drawable-mdpi/sym_keyboard_num6.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num6.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_num7.png b/java/res/drawable-mdpi/sym_keyboard_num7.png
index ce800ba42..ce800ba42 100644
--- a/res/drawable-mdpi/sym_keyboard_num7.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num7.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_num8.png b/java/res/drawable-mdpi/sym_keyboard_num8.png
index 1a8ff94bf..1a8ff94bf 100644
--- a/res/drawable-mdpi/sym_keyboard_num8.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num8.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_num9.png b/java/res/drawable-mdpi/sym_keyboard_num9.png
index 8b344c0a6..8b344c0a6 100644
--- a/res/drawable-mdpi/sym_keyboard_num9.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num9.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_numalt.png b/java/res/drawable-mdpi/sym_keyboard_numalt.png
index 32a2cf3ca..32a2cf3ca 100644
--- a/res/drawable-mdpi/sym_keyboard_numalt.png
+++ b/java/res/drawable-mdpi/sym_keyboard_numalt.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_numpound.png b/java/res/drawable-mdpi/sym_keyboard_numpound.png
index b2419d9ab..b2419d9ab 100644
--- a/res/drawable-mdpi/sym_keyboard_numpound.png
+++ b/java/res/drawable-mdpi/sym_keyboard_numpound.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_numstar.png b/java/res/drawable-mdpi/sym_keyboard_numstar.png
index cb66f968f..cb66f968f 100644
--- a/res/drawable-mdpi/sym_keyboard_numstar.png
+++ b/java/res/drawable-mdpi/sym_keyboard_numstar.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_return.png b/java/res/drawable-mdpi/sym_keyboard_return.png
index 17f257439..17f257439 100644
--- a/res/drawable-mdpi/sym_keyboard_return.png
+++ b/java/res/drawable-mdpi/sym_keyboard_return.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_search.png b/java/res/drawable-mdpi/sym_keyboard_search.png
index 127755d6b..127755d6b 100755
--- a/res/drawable-mdpi/sym_keyboard_search.png
+++ b/java/res/drawable-mdpi/sym_keyboard_search.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_shift.png b/java/res/drawable-mdpi/sym_keyboard_shift.png
index 0566e5a88..0566e5a88 100644
--- a/res/drawable-mdpi/sym_keyboard_shift.png
+++ b/java/res/drawable-mdpi/sym_keyboard_shift.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_shift_locked.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked.png
index ccaf05d3b..ccaf05d3b 100755
--- a/res/drawable-mdpi/sym_keyboard_shift_locked.png
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_locked.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_space.png b/java/res/drawable-mdpi/sym_keyboard_space.png
index 4e6273b89..4e6273b89 100644
--- a/res/drawable-mdpi/sym_keyboard_space.png
+++ b/java/res/drawable-mdpi/sym_keyboard_space.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_tab.png b/java/res/drawable-mdpi/sym_keyboard_tab.png
index cd9daff08..cd9daff08 100644
--- a/res/drawable-mdpi/sym_keyboard_tab.png
+++ b/java/res/drawable-mdpi/sym_keyboard_tab.png
Binary files differ
diff --git a/res/drawable-mdpi/sym_keyboard_tabprev.png b/java/res/drawable-mdpi/sym_keyboard_tabprev.png
index eb90872fc..eb90872fc 100644
--- a/res/drawable-mdpi/sym_keyboard_tabprev.png
+++ b/java/res/drawable-mdpi/sym_keyboard_tabprev.png
Binary files differ
diff --git a/res/drawable/btn_keyboard_key.xml b/java/res/drawable/btn_keyboard_key.xml
index 45578e582..45578e582 100644
--- a/res/drawable/btn_keyboard_key.xml
+++ b/java/res/drawable/btn_keyboard_key.xml
diff --git a/res/drawable/btn_keyboard_key_fulltrans.xml b/java/res/drawable/btn_keyboard_key_fulltrans.xml
index bad2a931d..bad2a931d 100644
--- a/res/drawable/btn_keyboard_key_fulltrans.xml
+++ b/java/res/drawable/btn_keyboard_key_fulltrans.xml
diff --git a/res/drawable/cancel.png b/java/res/drawable/cancel.png
index 081532bec..081532bec 100644
--- a/res/drawable/cancel.png
+++ b/java/res/drawable/cancel.png
Binary files differ
diff --git a/res/drawable/caution.png b/java/res/drawable/caution.png
index eaef53425..eaef53425 100644
--- a/res/drawable/caution.png
+++ b/java/res/drawable/caution.png
Binary files differ
diff --git a/res/drawable/dialog_top_dark_bottom_medium.9.png b/java/res/drawable/dialog_top_dark_bottom_medium.9.png
index cf7ecaf1e..cf7ecaf1e 100644
--- a/res/drawable/dialog_top_dark_bottom_medium.9.png
+++ b/java/res/drawable/dialog_top_dark_bottom_medium.9.png
Binary files differ
diff --git a/res/drawable/ic_dialog_alert_large.png b/java/res/drawable/ic_dialog_alert_large.png
index 2d4a164a7..2d4a164a7 100644
--- a/res/drawable/ic_dialog_alert_large.png
+++ b/java/res/drawable/ic_dialog_alert_large.png
Binary files differ
diff --git a/res/drawable/ic_dialog_voice_input.png b/java/res/drawable/ic_dialog_voice_input.png
index d28914132..d28914132 100644
--- a/res/drawable/ic_dialog_voice_input.png
+++ b/java/res/drawable/ic_dialog_voice_input.png
Binary files differ
diff --git a/res/drawable/ic_dialog_wave_0_0.png b/java/res/drawable/ic_dialog_wave_0_0.png
index 9c3c28f37..9c3c28f37 100644
--- a/res/drawable/ic_dialog_wave_0_0.png
+++ b/java/res/drawable/ic_dialog_wave_0_0.png
Binary files differ
diff --git a/res/drawable/ic_dialog_wave_1_3.png b/java/res/drawable/ic_dialog_wave_1_3.png
index d33bd0d9b..d33bd0d9b 100644
--- a/res/drawable/ic_dialog_wave_1_3.png
+++ b/java/res/drawable/ic_dialog_wave_1_3.png
Binary files differ
diff --git a/res/drawable/ic_dialog_wave_2_3.png b/java/res/drawable/ic_dialog_wave_2_3.png
index 5094a6e6c..5094a6e6c 100644
--- a/res/drawable/ic_dialog_wave_2_3.png
+++ b/java/res/drawable/ic_dialog_wave_2_3.png
Binary files differ
diff --git a/res/drawable/ic_dialog_wave_3_3.png b/java/res/drawable/ic_dialog_wave_3_3.png
index 69917564d..69917564d 100644
--- a/res/drawable/ic_dialog_wave_3_3.png
+++ b/java/res/drawable/ic_dialog_wave_3_3.png
Binary files differ
diff --git a/res/drawable/ic_dialog_wave_4_3.png b/java/res/drawable/ic_dialog_wave_4_3.png
index af5a84c31..af5a84c31 100644
--- a/res/drawable/ic_dialog_wave_4_3.png
+++ b/java/res/drawable/ic_dialog_wave_4_3.png
Binary files differ
diff --git a/res/drawable/ic_suggest_scroll_background.xml b/java/res/drawable/ic_suggest_scroll_background.xml
index 9d246e40e..9d246e40e 100644
--- a/res/drawable/ic_suggest_scroll_background.xml
+++ b/java/res/drawable/ic_suggest_scroll_background.xml
diff --git a/res/drawable/mic_slash.png b/java/res/drawable/mic_slash.png
index 0b0fb5803..0b0fb5803 100644
--- a/res/drawable/mic_slash.png
+++ b/java/res/drawable/mic_slash.png
Binary files differ
diff --git a/res/drawable/ok_cancel.png b/java/res/drawable/ok_cancel.png
index 0601d3231..0601d3231 100644
--- a/res/drawable/ok_cancel.png
+++ b/java/res/drawable/ok_cancel.png
Binary files differ
diff --git a/res/drawable/speak_now_level0.png b/java/res/drawable/speak_now_level0.png
index abc845466..abc845466 100644
--- a/res/drawable/speak_now_level0.png
+++ b/java/res/drawable/speak_now_level0.png
Binary files differ
diff --git a/res/drawable/speak_now_level1.png b/java/res/drawable/speak_now_level1.png
index 67cb235bf..67cb235bf 100644
--- a/res/drawable/speak_now_level1.png
+++ b/java/res/drawable/speak_now_level1.png
Binary files differ
diff --git a/res/drawable/speak_now_level2.png b/java/res/drawable/speak_now_level2.png
index 1e07f26c6..1e07f26c6 100644
--- a/res/drawable/speak_now_level2.png
+++ b/java/res/drawable/speak_now_level2.png
Binary files differ
diff --git a/res/drawable/speak_now_level3.png b/java/res/drawable/speak_now_level3.png
index 31991daee..31991daee 100644
--- a/res/drawable/speak_now_level3.png
+++ b/java/res/drawable/speak_now_level3.png
Binary files differ
diff --git a/res/drawable/speak_now_level4.png b/java/res/drawable/speak_now_level4.png
index 7363ca892..7363ca892 100644
--- a/res/drawable/speak_now_level4.png
+++ b/java/res/drawable/speak_now_level4.png
Binary files differ
diff --git a/res/drawable/speak_now_level5.png b/java/res/drawable/speak_now_level5.png
index 9034908f4..9034908f4 100644
--- a/res/drawable/speak_now_level5.png
+++ b/java/res/drawable/speak_now_level5.png
Binary files differ
diff --git a/res/drawable/speak_now_level6.png b/java/res/drawable/speak_now_level6.png
index 3eaa9bdad..3eaa9bdad 100644
--- a/res/drawable/speak_now_level6.png
+++ b/java/res/drawable/speak_now_level6.png
Binary files differ
diff --git a/res/drawable/voice_ime_background.9.png b/java/res/drawable/voice_ime_background.9.png
index 67802492a..67802492a 100644
--- a/res/drawable/voice_ime_background.9.png
+++ b/java/res/drawable/voice_ime_background.9.png
Binary files differ
diff --git a/res/drawable/voice_swipe_hint.png b/java/res/drawable/voice_swipe_hint.png
index bb8873251..bb8873251 100644
--- a/res/drawable/voice_swipe_hint.png
+++ b/java/res/drawable/voice_swipe_hint.png
Binary files differ
diff --git a/res/drawable/working.png b/java/res/drawable/working.png
index 6246a6d1c..6246a6d1c 100644
--- a/res/drawable/working.png
+++ b/java/res/drawable/working.png
Binary files differ
diff --git a/res/layout/bubble_text.xml b/java/res/layout/bubble_text.xml
index c3957b65e..c3957b65e 100644
--- a/res/layout/bubble_text.xml
+++ b/java/res/layout/bubble_text.xml
diff --git a/res/layout/candidate_preview.xml b/java/res/layout/candidate_preview.xml
index fe2002d46..fe2002d46 100755
--- a/res/layout/candidate_preview.xml
+++ b/java/res/layout/candidate_preview.xml
diff --git a/res/layout/candidates.xml b/java/res/layout/candidates.xml
index 068c17e56..068c17e56 100755
--- a/res/layout/candidates.xml
+++ b/java/res/layout/candidates.xml
diff --git a/res/layout/input.xml b/java/res/layout/input.xml
index 1d7c6f746..1d7c6f746 100755
--- a/res/layout/input.xml
+++ b/java/res/layout/input.xml
diff --git a/res/layout/input_trans.xml b/java/res/layout/input_trans.xml
index a988bcc68..94806f7e3 100755
--- a/res/layout/input_trans.xml
+++ b/java/res/layout/input_trans.xml
@@ -25,5 +25,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#A0000000"
+ android:verticalCorrection="0dip"
android:keyBackground="@drawable/btn_keyboard_key_fulltrans"
/>
diff --git a/res/layout/recognition_status.xml b/java/res/layout/recognition_status.xml
index ea23824a1..49af77360 100644
--- a/res/layout/recognition_status.xml
+++ b/java/res/layout/recognition_status.xml
@@ -63,10 +63,10 @@
<ProgressBar android:id="@+id/progress"
android:layout_height="60dip"
android:layout_width="60dip"
- android:layout_marginTop="20dip"
- android:layout_gravity="center_horizontal"
+ android:layout_gravity="center"
android:visibility="gone"
android:indeterminate="true"
+ android:indeterminateOnly="false"
/>
diff --git a/res/layout/voice_punctuation_hint.xml b/java/res/layout/voice_punctuation_hint.xml
index 629a7f2b5..629a7f2b5 100644
--- a/res/layout/voice_punctuation_hint.xml
+++ b/java/res/layout/voice_punctuation_hint.xml
diff --git a/res/layout/voice_swipe_hint.xml b/java/res/layout/voice_swipe_hint.xml
index 4e8859a71..4e8859a71 100644
--- a/res/layout/voice_swipe_hint.xml
+++ b/java/res/layout/voice_swipe_hint.xml
diff --git a/res/raw/main.dict b/java/res/raw/main.dict
index a456cf3d3..a456cf3d3 100755
--- a/res/raw/main.dict
+++ b/java/res/raw/main.dict
Binary files differ
diff --git a/res/raw/type3.ogg b/java/res/raw/type3.ogg
index 20e670807..20e670807 100755
--- a/res/raw/type3.ogg
+++ b/java/res/raw/type3.ogg
Binary files differ
diff --git a/res/values-cs/bools.xml b/java/res/values-cs/bools.xml
index 897f4b3db..897f4b3db 100644
--- a/res/values-cs/bools.xml
+++ b/java/res/values-cs/bools.xml
diff --git a/res/values-cs/donottranslate.xml b/java/res/values-cs/donottranslate.xml
index 9c2a476a6..9c2a476a6 100644
--- a/res/values-cs/donottranslate.xml
+++ b/java/res/values-cs/donottranslate.xml
diff --git a/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index 02361e1c1..4bc1f5543 100644
--- a/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Klávesnice Android"</string>
@@ -37,17 +42,17 @@
<!-- no translation found for auto_punctuate_summary (6589441565817502132) -->
<skip />
<string name="quick_fixes" msgid="5353213327680897927">"Rychlé opravy"</string>
- <string name="quick_fixes_summary" msgid="3405028402510332373">"Opravuje běžné překlepy"</string>
- <string name="show_suggestions" msgid="507074425254289133">"Zobrazovat návrhy"</string>
- <string name="show_suggestions_summary" msgid="1989672863935759654">"Při psaní zobrazovat návrhy slov"</string>
+ <string name="quick_fixes_summary" msgid="3405028402510332373">"Opravuje nejčastější chyby při psaní"</string>
+ <string name="show_suggestions" msgid="507074425254289133">"Zobrazit návrhy"</string>
+ <string name="show_suggestions_summary" msgid="1989672863935759654">"Zobrazovat navržená slova během psaní"</string>
<string name="auto_complete" msgid="1103196318775486023">"Automatické dokončování"</string>
- <string name="auto_complete_summary" msgid="6113149638718274624">"Stisknutí mezerníku nebo interpunkce automaticky vloží zvýrazněné slovo"</string>
+ <string name="auto_complete_summary" msgid="6113149638718274624">"Stisknutím mezerníku nebo interpunkčního znaménka automaticky vložíte zvýrazněné slovo."</string>
<string-array name="prediction_modes">
- <item msgid="4870266572388153286">"Není"</item>
+ <item msgid="4870266572388153286">"Žádný"</item>
<item msgid="1669461741568287396">"Základní"</item>
<item msgid="4894328801530136615">"Pokročilé"</item>
</string-array>
- <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Uloženo"</string>
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: Uloženo"</string>
<string name="alternates_for_a" msgid="2566516493365324765">"áàâãäåæ"</string>
<string name="alternates_for_e" msgid="3900510936875547555">"éěèêë"</string>
<string name="alternates_for_i" msgid="7097915268629342242">"íìîï"</string>
@@ -57,18 +62,18 @@
<string name="alternates_for_n" msgid="6257322556221886400">"ňñ"</string>
<string name="alternates_for_c" msgid="151699780720639892">"čç"</string>
<string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
- <string name="tip_long_press" msgid="6101270866284343344">"Podržením klávesy zobrazíte diakritiku (ž, á atd.)"</string>
- <string name="tip_dismiss" msgid="7585579046862204381">"Stisknutím klávesy Zpět ↶ můžete klávesnici kdykoli zavřít"</string>
+ <string name="tip_long_press" msgid="6101270866284343344">"Podržením klávesy zobrazíte diakritiku (á, ž apod.)"</string>
+ <string name="tip_dismiss" msgid="7585579046862204381">"Stisknutím klávesy Zpět ↶ můžete klávesnici kdykoli zavřít."</string>
<string name="tip_access_symbols" msgid="6344098517525531652">"Přístup k číslům a symbolům"</string>
- <string name="tip_add_to_dictionary" msgid="1487293888469227817">"Stisknutím a podržením slova zcela vlevo toto slovo přidáte do slovníku"</string>
- <string name="touch_to_continue" msgid="7869803257948414531">"Chcete-li pokračovat, dotkněte se této rady »"</string>
- <string name="touch_to_finish" msgid="7990196086480585789">"Chcete-li tuto radu zavřít a začít psát, dotkněte se zde."</string>
- <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"Klávesnice se zobrazí, kdykoli se dotknete textového pole."</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Stisknutím a podržením klávesy zobrazíte diakritiku"\n"(ó, ø, ö, ô atd.)"</b></string>
- <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Stisknutím této klávesy přejdete do režimu číslic a symbolů"</b></string>
- <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Opětovným stisknutím této klávesy se vrátíte zpět do režimu písmen"</b></string>
- <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Chcete-li změnit nastavení klávesnice, jako například automatické dokončování, stiskněte tuto klávesu a podržte ji."</b></string>
- <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Zkuste to."</b></string>
+ <string name="tip_add_to_dictionary" msgid="1487293888469227817">"Stisknutím a podržením slova zcela vlevo toto slovo přidáte do slovníku."</string>
+ <string name="touch_to_continue" msgid="7869803257948414531">"Chcete-li pokračovat, dotkněte se tohoto tipu »"</string>
+ <string name="touch_to_finish" msgid="7990196086480585789">"Chcete-li tento tip zavřít a začít psát, dotkněte se zde."</string>
+ <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"Klávesnice se otevře vždy, když se dotknete textového pole."</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Přidržením klávesy zobrazíte diakritiku"\n"(ó, ø, ö, ô apod.)"</b></string>
+ <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Chcete-li přepnout na režim zadávání číslic a symbolů, dotkněte se této klávesy."</b></string>
+ <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Chcete-li přejít zpět k zadávání písmen, dotkněte se této klávesy znovu."</b></string>
+ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Přidržením této klávesy změníte nastavení klávesnice (např. automatické dokončování)."</b></string>
+ <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Vyzkoušejte si to."</b></string>
<string name="label_go_key" msgid="1635148082137219148">"Přejít"</string>
<string name="label_next_key" msgid="362972844525672568">"Další"</string>
<string name="label_done_key" msgid="2441578748772529288">"Hotovo"</string>
@@ -111,9 +116,9 @@
</string-array>
<string name="auto_submit" msgid="9151008027068358518">"Po hlasovém vstupu automaticky odeslat"</string>
<string name="auto_submit_summary" msgid="4961875269610384226">"Při vyhledávání nebo přechodu na další pole automaticky stisknout Enter."</string>
- <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Otevřete klávesnici"\n</b></font><font size="3">\n</font>"Dotkněte se jakéhokoli textového pole."</string>
- <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Zavřete klávesnici"\n</b></font><font size="3">\n</font>"Stiskněte klávesu Zpět."</string>
- <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Přidržením klávesy zobrazte možnosti"\n</b></font><font size="3">\n</font>"Použijte interpunkční znaménka a diakritiku."</string>
+ <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Otevřete klávesnici"\n</b></font><font size="3">\n</font>"Dotkněte se libovolného textového pole."</string>
+ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Zavřete klávesnici"\n</b></font><font size="3">\n</font>"Stiskněte tlačítko Zpět."</string>
+ <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Přidržením klávesy zobrazte možnosti"\n</b></font><font size="3">\n</font>"Přístup k interpunkčním znaménkům a diakritice."</string>
<string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Nastavení klávesnice"\n</b></font><font size="3">\n</font>"Dotkněte se klávesy "<b>"?123"</b>" a přidržte ji."</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".cz"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Vstupní jazyky"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Jazyk můžete změnit posunutím prstu po mezerníku."</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Uložte slovo opětovným klepnutím"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"K dispozici je slovník"</string>
</resources>
diff --git a/res/values-da/strings.xml b/java/res/values-da/strings.xml
index 15f6b1c6b..750d67b20 100644
--- a/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Android-tastatur"</string>
@@ -58,16 +63,16 @@
<string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
<string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
<string name="tip_long_press" msgid="6101270866284343344">"Hold en tast nede for at se accenter (ø, ö osv.)"</string>
- <string name="tip_dismiss" msgid="7585579046862204381">"Tryk på tilbagetasten ↶ for når som helst at lukke for tastaturet"</string>
+ <string name="tip_dismiss" msgid="7585579046862204381">"Tryk på knappen Tilbage ↶ for når som helst at lukke for tastaturet"</string>
<string name="tip_access_symbols" msgid="6344098517525531652">"Få adgang til tal og symboler"</string>
<string name="tip_add_to_dictionary" msgid="1487293888469227817">"Tryk og hold på ordet længst til venstre for at føje det til ordbogen"</string>
<string name="touch_to_continue" msgid="7869803257948414531">"Berør dette tip for at fortsætte »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"Berør her for at lukke dette tip og begynde at indtaste!"</string>
- <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"Tastaturet åbnes, når du berører et tekstfelt"</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Berør og hold en tast nede for at vise accenter"\n"(ø, ö, ô, ó osv.)"</b></string>
+ <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"Tastaturet åbner når som helst, du berører et tekstfelt"</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Tryk på en tast, og hold den nede for a vise accenter"\n"(ø, ö, ô, ó osv.)"</b></string>
<string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Skift til tal og symboler ved at røre denne tast"</b></string>
- <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Gå tilbage til bogstaverne ved at berøre denne tast igen"</b></string>
- <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Berør og hold denne tast nede for at ændre indstillingerne for tastaturet, som f.eks. automatisk udfyldelse"</b></string>
+ <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Gå tilbage til bogstaver ved at berøre denne tast igen"</b></string>
+ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Tryk på denne tast, og hold den nede for at ændre tastaturindstillingerne, som f.eks. automatisk udfyldelse"</b></string>
<string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Prøv det!"</b></string>
<string name="label_go_key" msgid="1635148082137219148">"Gå"</string>
<string name="label_next_key" msgid="362972844525672568">"Næste"</string>
@@ -112,9 +117,9 @@
<string name="auto_submit" msgid="9151008027068358518">"Send automatisk efter stemme"</string>
<string name="auto_submit_summary" msgid="4961875269610384226">"Tryk automatisk på enter, når du søger eller går til det næste felt."</string>
<string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Åbn tastaturet"\n</b></font><font size="3">\n</font>"Tryk på et hvilket som helst tekstfelt."</string>
- <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Luk tastaturet"\n</b></font><font size="3">\n</font>"Tryk på Tilbagetasten."</string>
- <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tryk på og hold en tast nede for valgmuligheder"\n</b></font><font size="3">\n</font>"Få adgang til tegnsætning og accenter."</string>
- <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Indstillinger for tastatur"\n</b></font><font size="3">\n</font>"Tryk på og hold tasten "<b>"?123"</b>" nede."</string>
+ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Luk tastaturet"\n</b></font><font size="3">\n</font>"Tryk på knappen Tilbage."</string>
+ <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tryk på en tast, og hold den nede for valgmuligheder"\n</b></font><font size="3">\n</font>"Få adgang til tegnsætning og accenter."</string>
+ <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Tastaturindstillinger"\n</b></font><font size="3">\n</font>"Tryk på tasten "<b>"?123"</b>", og hold den nede."</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".net"</string>
<string name="popular_domain_2" msgid="3036812463748402878">".org"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Inputsprog"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Træk fingeren på mellemrumstasten for at skifte sprog"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Tast igen for at gemme"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Ordbog er tilgængelig"</string>
</resources>
diff --git a/res/values-de/bools.xml b/java/res/values-de/bools.xml
index 897f4b3db..897f4b3db 100644
--- a/res/values-de/bools.xml
+++ b/java/res/values-de/bools.xml
diff --git a/res/values-de/strings.xml b/java/res/values-de/strings.xml
index e203fb394..7d3d53c3c 100644
--- a/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Android-Tastatur"</string>
@@ -31,7 +36,7 @@
<string name="auto_complete_dialog_title" msgid="2172048590607201920">"Autom. vervollständigen"</string>
<string name="prediction_landscape" msgid="4874601565593216183">"Textfeld vergrößern"</string>
<string name="prediction_landscape_summary" msgid="6736551095997839472">"Wortvorschläge in Querformat ausblenden"</string>
- <string name="auto_cap" msgid="1719746674854628252">"Autom. Groß-/Kleinschreibung"</string>
+ <string name="auto_cap" msgid="1719746674854628252">"Autom. Groß-/Kleinschr."</string>
<string name="auto_cap_summary" msgid="3260681697600786825">"Sätze mit Großbuchstaben beginnen"</string>
<string name="auto_punctuate" msgid="7276672334264521751">"Autom. Zeichensetzung"</string>
<!-- no translation found for auto_punctuate_summary (6589441565817502132) -->
@@ -43,11 +48,11 @@
<string name="auto_complete" msgid="1103196318775486023">"Autom. vervollständigen"</string>
<string name="auto_complete_summary" msgid="6113149638718274624">"Leertaste und Interpunktion fügen autom. ein markiertes Wort ein"</string>
<string-array name="prediction_modes">
- <item msgid="4870266572388153286">"Keine"</item>
+ <item msgid="4870266572388153286">"Kein"</item>
<item msgid="1669461741568287396">"Standard"</item>
<item msgid="4894328801530136615">"Erweitert"</item>
</string-array>
- <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Gespeichert"</string>
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: gespeichert"</string>
<string name="alternates_for_a" msgid="2566516493365324765">"ä"</string>
<string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
<string name="alternates_for_i" msgid="7097915268629342242">"ìíîï"</string>
@@ -64,11 +69,11 @@
<string name="touch_to_continue" msgid="7869803257948414531">"Diesen Hinweis berühren, um fortzufahren »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"Hier berühren, um diesen Hinweis zu schließen und mit dem Tippen zu beginnen!"</string>
<string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"Die Tastatur wird immer dann geöffnet, wenn Sie ein Textfeld berühren."</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Halten Sie eine Taste gedrückt, um Sonderzeichen anzuzeigen"\n"(ø, ö, ô, ó usw.)."</b></string>
- <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Wechseln Sie zu Nummern und Symbolen, indem Sie diese Taste berühren."</b></string>
- <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Gehen Sie zurück zu Buchstaben, indem Sie diese Taste erneut drücken."</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Halten Sie eine Taste gedrückt, um Akzente anzuzeigen"\n"(ø, ö, ô, ó usw.)."</b></string>
+ <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Wechseln Sie zu Ziffern und Symbolen, indem Sie diese Taste berühren."</b></string>
+ <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Durch erneutes Drücken dieser Taste gelangen Sie zurück zu den Buchstaben."</b></string>
<string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Halten Sie diese Taste gedrückt, um die Tastatureinstellungen, wie beispielsweise die automatische Vervollständigung, zu ändern."</b></string>
- <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Probieren Sie es!"</b></string>
+ <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Probieren Sie es aus!"</b></string>
<string name="label_go_key" msgid="1635148082137219148">"Los"</string>
<string name="label_next_key" msgid="362972844525672568">"Weiter"</string>
<string name="label_done_key" msgid="2441578748772529288">"Fertig"</string>
@@ -112,8 +117,8 @@
<string name="auto_submit" msgid="9151008027068358518">"Nach Sprachaufnahme automatisch senden"</string>
<string name="auto_submit_summary" msgid="4961875269610384226">"Drücken Sie auf die Eingabetaste, wenn Sie einen Suchvorgang durchführen oder zum nächsten Feld wechseln."</string>
<string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Tastatur öffnen"\n</b></font><font size="3">\n</font>"Berühren Sie ein beliebiges Textfeld."</string>
- <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Tastatur schließen"\n</b></font><font size="3">\n</font>"Drücken Sie die Taste \"Zurück\"."</string>
- <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Eine Taste für Optionen berühren und gedrückt halten"\n</b></font><font size="3">\n</font>"Greifen Sie auf Satzzeichen und Akzente zu."</string>
+ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Tastatur schließen"\n</b></font><font size="3">\n</font>"Drücken Sie die Zurück-Taste."</string>
+ <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Für Optionen eine Taste berühren und gedrückt halten"\n</b></font><font size="3">\n</font>"Greifen Sie auf Satzzeichen und Akzente zu."</string>
<string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Tastatureinstellungen"\n</b></font><font size="3">\n</font>"Berühren und halten Sie die Taste "<b>"?123"</b>" gedrückt."</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".net"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Eingabesprachen"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Finger über die Leertaste bewegen, um die Sprache zu ändern"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Zum Speichern erneut tippen"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Wörterbuch verfügbar"</string>
</resources>
diff --git a/res/values-el/strings.xml b/java/res/values-el/strings.xml
index 85c18dff4..c4a50771a 100644
--- a/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Πληκτρολόγιο Android"</string>
@@ -67,7 +72,7 @@
<string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Αγγίξτε και κρατήστε κάποιο πλήκτρο για να προβάλετε τους τονισμένους χαρακτήρες"\n"(ø, ö, ô, ó κ.τ.λ.)"</b></string>
<string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Αλλαγή σε αριθμούς και σύμβολα με το πάτημα αυτού του πλήκτρου"</b></string>
<string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Επιστρέψτε στα γράμματα αγγίζοντας ξανά αυτό το πλήκτρο"</b></string>
- <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Αγγίξτε &amp; κρατήστε πατημένο αυτό το πλήκτρο για να αλλάξετε τις ρυθμίσεις πληκτρολογίου, όπως η αυτόματη συμπλήρωση"</b></string>
+ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Αγγίξτε και κρατήστε πατημένο αυτό το πληκτρολόγιο για να αλλάξετε τις ρυθμίσεις πληκτρολογίου, όπως η αυτόματη συμπλήρωση"</b></string>
<string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Δοκιμάστε το!"</b></string>
<string name="label_go_key" msgid="1635148082137219148">"Μετάβαση"</string>
<string name="label_next_key" msgid="362972844525672568">"Επόμενο"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Γλώσσες εισόδου"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Σύρετε το δάχτυλο στο πλήκτρο διαστήματος για να αλλάξετε γλώσσα"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Πατήστε ξανά για αποθήκευση"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Λεξικό διαθέσιμο"</string>
</resources>
diff --git a/res/values-en/bools.xml b/java/res/values-en/bools.xml
index 897f4b3db..897f4b3db 100644
--- a/res/values-en/bools.xml
+++ b/java/res/values-en/bools.xml
diff --git a/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index 541e153b3..cd17dba31 100644
--- a/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Teclado de Android"</string>
@@ -67,7 +72,7 @@
<string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Toca y mantén presionada una tecla para ver los acentos"\n"(ø, ö, ô, ó, y así sucesivamente)."</b></string>
<string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Cambia de números a símbolos tocando esta tecla."</b></string>
<string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Vuelve a letras tocando esta tecla nuevamente."</b></string>
- <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Toca &amp;amp y mantén presionada esta tecla para cambiar la configuración del teclado, como completar automáticamente."</b></string>
+ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Toca y mantén presionada esta tecla para cambiar la configuración del teclado, como completar automáticamente."</b></string>
<string name="tip_to_start_typing" msgid="7213843601369174313"><b>"¡Pruébalo!"</b></string>
<string name="label_go_key" msgid="1635148082137219148">"Ir"</string>
<string name="label_next_key" msgid="362972844525672568">"Siguiente"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Deslizarse manualmente por la barra espaciadora para cambiar el idioma"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Presionar nuevamente para guardar"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Diccionario disponible"</string>
</resources>
diff --git a/res/values-es/bools.xml b/java/res/values-es/bools.xml
index 897f4b3db..897f4b3db 100644
--- a/res/values-es/bools.xml
+++ b/java/res/values-es/bools.xml
diff --git a/res/values-es/strings.xml b/java/res/values-es/strings.xml
index fbc597ed2..fbe3ad347 100644
--- a/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -1,22 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Teclado de Android"</string>
- <string name="english_ime_settings" msgid="6661589557206947774">"Configuración del teclado de Android"</string>
+ <string name="english_ime_settings" msgid="6661589557206947774">"Ajustes del teclado de Android"</string>
<string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar al pulsar tecla"</string>
<string name="sound_on_keypress" msgid="6093592297198243644">"Sonido al pulsar tecla"</string>
<string name="hit_correction" msgid="4855351009261318389">"Corregir errores de escritura"</string>
@@ -26,7 +31,7 @@
<string name="auto_correction" msgid="7911639788808958255">"Sugerencias de palabras"</string>
<string name="auto_correction_summary" msgid="6881047311475758267">"Corregir automáticamente la palabra anterior"</string>
<string name="prediction" msgid="466220283138359837">"Sugerencias de palabras"</string>
- <string name="prediction_category" msgid="7027100625580696660">"Configuración de sugerencia de palabras"</string>
+ <string name="prediction_category" msgid="7027100625580696660">"Ajustes de sugerencia de palabras"</string>
<string name="prediction_summary" msgid="459788228830873110">"Habilitar Autocompletar al escribir"</string>
<string name="auto_complete_dialog_title" msgid="2172048590607201920">"Autocompletar"</string>
<string name="prediction_landscape" msgid="4874601565593216183">"Aumentar el tamaño del campo de texto"</string>
@@ -47,7 +52,7 @@
<item msgid="1669461741568287396">"Básico"</item>
<item msgid="4894328801530136615">"Avanzado"</item>
</string-array>
- <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Guardada"</string>
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: guardada"</string>
<string name="alternates_for_a" msgid="2566516493365324765">"á"</string>
<string name="alternates_for_e" msgid="3900510936875547555">"é"</string>
<string name="alternates_for_i" msgid="7097915268629342242">"ìíîï"</string>
@@ -64,14 +69,14 @@
<string name="touch_to_continue" msgid="7869803257948414531">"Toca esta sugerencia para continuar »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"Toca aquí para cerrar la sugerencia y comenzar a escribir."</string>
<string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"El teclado se abre cada vez que tocas un campo de texto"</b>"."</string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Mantén pulsada una tecla para ver los caracteres acentuados "\n"(ø, ö, ô, ó, etc.)"</b></string>
- <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Toca esta tecla para cambiar al teclado de números y símbolos"</b>"."</string>
- <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Toca esta tecla de nuevo para volver a las letras"</b></string>
- <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Mantén pulsada esta tecla para cambiar la configuración del teclado como, por ejemplo, la opción de autocompletar"</b>"."</string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Mantén pulsada una tecla para ver los caracteres acentuados"\n"(ø, ö, ô, ó, etc.)."</b></string>
+ <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Cambiar a números y a símbolos tocando esta tecla"</b></string>
+ <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Volver a las letras tocando esta tecla de nuevo"</b></string>
+ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Mantén pulsada esta tecla para cambiar la configuración de teclado a, por ejemplo, autocompletar"</b>"."</string>
<string name="tip_to_start_typing" msgid="7213843601369174313"><b>"¡Pruébalo!"</b></string>
<string name="label_go_key" msgid="1635148082137219148">"Ir"</string>
<string name="label_next_key" msgid="362972844525672568">"Sig."</string>
- <string name="label_done_key" msgid="2441578748772529288">"Hecho"</string>
+ <string name="label_done_key" msgid="2441578748772529288">"Listo"</string>
<string name="label_send_key" msgid="2815056534433717444">"Enviar"</string>
<string name="label_symbol_key" msgid="6175820506864489453">"?123"</string>
<string name="label_phone_key" msgid="4275497665515080551">"123"</string>
@@ -111,17 +116,18 @@
</string-array>
<string name="auto_submit" msgid="9151008027068358518">"Enviar automáticamente después de la introducción de voz"</string>
<string name="auto_submit_summary" msgid="4961875269610384226">"Pulsar Intro automáticamente al buscar o al pasar al siguiente campo"</string>
- <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Abrir el teclado"\n</b></font><font size="3">\n</font>"Pulsa cualquier campo de texto."</string>
+ <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Abrir el teclado"\n</b></font><font size="3">\n</font>"Toca cualquier campo de texto."</string>
<string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Cerrar el teclado"\n</b></font><font size="3">\n</font>"Pulsa la tecla \"Atrás\"."</string>
<string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Mantén pulsada una tecla para acceder a las opciones."\n</b></font><font size="3">\n</font>"Accede a los signos de puntuación y a los acentos."</string>
- <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Configuración del teclado"\n</b></font><font size="3">\n</font>"Mantén pulsada la tecla "<b>"?123"</b>"."</string>
+ <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Ajustes del teclado"\n</b></font><font size="3">\n</font>"Mantén pulsada la tecla "<b>"?123"</b>"."</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".net"</string>
<string name="popular_domain_2" msgid="3036812463748402878">".org"</string>
<string name="popular_domain_3" msgid="8718639560809452028">".gov"</string>
<string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
<string name="inputMethod" msgid="7854532062009028116">"Método de introducción de texto"</string>
- <string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
+ <string name="language_selection_title" msgid="1651299598555326750">"Idiomas"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Deslizar el dedo por la barra espaciadora para cambiar el idioma"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Volver a tocar para guardar"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Hay un diccionario disponible."</string>
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/java/res/values-fr-rCA/strings.xml
index b56463ed9..b56463ed9 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/java/res/values-fr-rCA/strings.xml
diff --git a/res/values-fr/bools.xml b/java/res/values-fr/bools.xml
index 897f4b3db..897f4b3db 100644
--- a/res/values-fr/bools.xml
+++ b/java/res/values-fr/bools.xml
diff --git a/res/values-fr/donottranslate.xml b/java/res/values-fr/donottranslate.xml
index b79df7b37..b79df7b37 100644
--- a/res/values-fr/donottranslate.xml
+++ b/java/res/values-fr/donottranslate.xml
diff --git a/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index 085941415..2cabe40d9 100644
--- a/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Clavier Android"</string>
@@ -64,9 +69,9 @@
<string name="touch_to_continue" msgid="7869803257948414531">"Touchez ce conseil pour continuer »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"Touchez ici pour fermer ce conseil et commencer à saisir votre texte."</string>
<string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"Le clavier s\'affiche à chaque fois que vous touchez une zone de texte."</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Maintenez une touche enfoncée pour afficher les accents"\n"(ø, ö, ô, ó, etc.)"</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Maintenez une touche enfoncée pour afficher les accents"\n"(ø, ö, ô, ó, etc.)"</b>"."</string>
<string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Appuyez sur cette touche pour basculer vers les chiffres et les symboles."</b></string>
- <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Retourner au clavier en appuyant de nouveau sur cette touche"</b></string>
+ <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Appuyez de nouveau sur cette touche pour retourner aux lettres."</b></string>
<string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Maintenez cette touche enfoncée afin de modifier les paramètres du clavier, tels que la saisie semi-automatique."</b></string>
<string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Essayez !"</b></string>
<string name="label_go_key" msgid="1635148082137219148">"OK"</string>
@@ -113,7 +118,7 @@
<string name="auto_submit_summary" msgid="4961875269610384226">"Appuyez automatiquement sur Entrée pour effectuer une recherche ou accéder au champ suivant."</string>
<string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Ouvrir le clavier"\n</b></font><font size="3">\n</font>"Appuyez sur un champ de texte."</string>
<string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Fermer le clavier"\n</b></font><font size="3">\n</font>"Appuyez sur la touche Retour."</string>
- <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Appuyer sur une touche de manière prolongée pour accéder aux options"\n</b></font><font size="3">\n</font>"Accédez aux signes de ponctuation et aux accents."</string>
+ <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Appuyez sur une touche de manière prolongée pour accéder aux options"\n</b></font><font size="3">\n</font>"Accédez aux signes de ponctuation et aux accents."</string>
<string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Paramètres du clavier"\n</b></font><font size="3">\n</font>"Appuyez sur la touche "<b>"?123"</b>" de manière prolongée."</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".net"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Langues de saisie"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Faites glisser votre doigt sur la barre d\'espacement pour changer la langue."</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Appuyer de nouveau pour enregistrer"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Dictionnaire disponible"</string>
</resources>
diff --git a/res/values-it/bools.xml b/java/res/values-it/bools.xml
index 897f4b3db..897f4b3db 100644
--- a/res/values-it/bools.xml
+++ b/java/res/values-it/bools.xml
diff --git a/res/values-it/donottranslate.xml b/java/res/values-it/donottranslate.xml
index 3e3f3ef2a..3e3f3ef2a 100644
--- a/res/values-it/donottranslate.xml
+++ b/java/res/values-it/donottranslate.xml
diff --git a/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 1135dd00a..3844aea8f 100644
--- a/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -1,24 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Tastiera Android"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Impostazioni tastiera Android"</string>
- <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibra se premi un tasto"</string>
- <string name="sound_on_keypress" msgid="6093592297198243644">"Suona se premi un tasto"</string>
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibra alla pressione di un tasto"</string>
+ <string name="sound_on_keypress" msgid="6093592297198243644">"Suona alla pressione di un tasto"</string>
<string name="hit_correction" msgid="4855351009261318389">"Correggi errori di digitazione"</string>
<string name="hit_correction_summary" msgid="8761701873008070796">"Attiva la correzione degli errori di inserimento"</string>
<string name="hit_correction_land" msgid="2567691684825205448">"Errori di inserimento in visualizzazione orizzontale"</string>
@@ -64,11 +69,11 @@
<string name="touch_to_continue" msgid="7869803257948414531">"Tocca questo suggerimento per continuare »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"Tocca qui per chiudere questo suggerimento e iniziare a digitare."</string>
<string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"La tastiera si apre ogni volta che tocchi un campo di testo"</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Tocca e tieni premuto un tasto per visualizzare le lettere con segni diacritici"\n"(ø, ö, ô, ó e così via)"</b></string>
- <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Passa a numeri e simboli toccando questo tasto"</b></string>
- <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Torna all\'alfabeto toccando di nuovo questo tasto"</b></string>
- <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Tocca e tieni premuto questo tasto per modificare le impostazioni della tastiera, come il completamento automatico"</b></string>
- <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Prova."</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Tocca e tieni premuto un pulsante per visualizzare le lettere con segni diacritici"\n"(ø, ö, ô, ó e così via)"</b></string>
+ <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Passa a numeri e simboli toccando questo pulsante"</b></string>
+ <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Torna alle lettere toccando di nuovo questo pulsante"</b></string>
+ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Tocca e tieni premuto questo pulsante per modificare le impostazioni della tastiera, come il completamento automatico"</b></string>
+ <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Prova!"</b></string>
<string name="label_go_key" msgid="1635148082137219148">"Vai"</string>
<string name="label_next_key" msgid="362972844525672568">"Avanti"</string>
<string name="label_done_key" msgid="2441578748772529288">"Fine"</string>
@@ -113,8 +118,8 @@
<string name="auto_submit_summary" msgid="4961875269610384226">"Premi automaticamente \"Invio\" durante una ricerca o un passaggio al campo successivo."</string>
<string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Apertura tastiera"\n</b></font><font size="3">\n</font>"Tocca qualsiasi campo di testo."</string>
<string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Chiusura tastiera"\n</b></font><font size="3">\n</font>"Premi il tasto Indietro."</string>
- <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tocca e tieni premuto un tasto per le opzioni"\n</b></font><font size="3">\n</font>"Accesso a punteggiatura e accenti."</string>
- <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Impostazioni tastiera"\n</b></font><font size="3">\n</font>"Tocca e tieni premuto il tasto "<b>"?123"</b>"."</string>
+ <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tocca e tieni premuto un pulsante per le opzioni"\n</b></font><font size="3">\n</font>"Accesso a punteggiatura e accenti."</string>
+ <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Impostazioni tastiera"\n</b></font><font size="3">\n</font>"Tocca e tieni premuto il pulsante "<b>"?123"</b>"."</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".net"</string>
<string name="popular_domain_2" msgid="3036812463748402878">".org"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Lingue comandi"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Scorri il dito sulla barra spaziatrice per cambiare la lingua"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Tocca di nuovo per salvare"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Dizionario disponibile"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index 9097bd936..7867684cb 100644
--- a/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Androidキーボード"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"入力言語"</string>
<string name="language_selection_summary" msgid="187110938289512256">"スペースバーで指をスライドさせて言語を変更する"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"←保存するにはもう一度タップ"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"辞書を利用できます"</string>
</resources>
diff --git a/res/values-ko/strings.xml b/java/res/values-ko/strings.xml
index 15000e655..350957939 100644
--- a/res/values-ko/strings.xml
+++ b/java/res/values-ko/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Android 키보드"</string>
@@ -30,7 +35,7 @@
<string name="prediction_summary" msgid="459788228830873110">"입력할 때 자동 완성 사용"</string>
<string name="auto_complete_dialog_title" msgid="2172048590607201920">"자동 완성"</string>
<string name="prediction_landscape" msgid="4874601565593216183">"입력란 크기 늘리기"</string>
- <string name="prediction_landscape_summary" msgid="6736551095997839472">"가로 보기에서 단어 추천 숨기기"</string>
+ <string name="prediction_landscape_summary" msgid="6736551095997839472">"가로 보기에서 추천 단어 숨기기"</string>
<string name="auto_cap" msgid="1719746674854628252">"자동 대문자화"</string>
<string name="auto_cap_summary" msgid="3260681697600786825">"문장의 첫 글자를 대문자로 표시"</string>
<string name="auto_punctuate" msgid="7276672334264521751">"자동 구두점 입력"</string>
@@ -47,7 +52,7 @@
<item msgid="1669461741568287396">"기본"</item>
<item msgid="4894328801530136615">"고급"</item>
</string-array>
- <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : 저장됨"</string>
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: 저장됨"</string>
<string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
<string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
<string name="alternates_for_i" msgid="7097915268629342242">"ìíîï"</string>
@@ -59,16 +64,16 @@
<string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
<string name="tip_long_press" msgid="6101270866284343344">"키를 길게 누르면 악센트(ø, ö 등)가 표시됩니다."</string>
<string name="tip_dismiss" msgid="7585579046862204381">"키보드를 닫으려면 언제든지 뒤로 키(↶)를 누르세요."</string>
- <string name="tip_access_symbols" msgid="6344098517525531652">"숫자 및 기호 액세스"</string>
+ <string name="tip_access_symbols" msgid="6344098517525531652">"숫자 및 기호 사용"</string>
<string name="tip_add_to_dictionary" msgid="1487293888469227817">"맨 왼쪽에 있는 단어를 길게 누르면 사전에 추가됩니다."</string>
<string name="touch_to_continue" msgid="7869803257948414531">"계속하려면 힌트를 터치하세요. »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"힌트를 닫고 입력을 시작하려면 여기를 터치하세요."</string>
- <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"입력란을 터치하면 키보드가 열립니다."</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"키를 길게 누르면 악센트"\n"(ø, ö, ô, ó 등)를 볼 수 있습니다."</b></string>
- <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"이 키를 터치하면 숫자 및 기호 자판으로 변경됩니다."</b></string>
- <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"이 키를 다시 터치하면 키보드가 표시됩니다."</b></string>
- <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"자동 완성과 같은 키보드 설정을 변경하려면 이 키를 길게 누르세요."</b></string>
- <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"이제 직접 사용해 보세요!"</b></string>
+ <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"언제든지 입력란을 터치하면 키보드가 열립니다."</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"키를 길게 터치하면 악센트"\n"(ø, ö, ô, ó 등)가 표시됩니다."</b></string>
+ <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"이 키를 터치하면 숫자 및 기호 키보드로 전환됩니다."</b></string>
+ <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"이 키를 다시 터치하면 문자 키보드로 돌아갑니다."</b></string>
+ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"자동 완성과 같은 키보드 설정을 변경하려면 이 키를 길게 터치하세요."</b></string>
+ <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"이제 사용해 보세요."</b></string>
<string name="label_go_key" msgid="1635148082137219148">"이동"</string>
<string name="label_next_key" msgid="362972844525672568">"다음"</string>
<string name="label_done_key" msgid="2441578748772529288">"완료"</string>
@@ -94,7 +99,7 @@
<string name="voice_speech_timeout" msgid="8461817525075498795">"음성이 인식되지 않았습니다."</string>
<string name="voice_no_match" msgid="4285117547030179174">"일치하는 항목 없음"</string>
<string name="voice_not_installed" msgid="5552450909753842415">"음성 검색이 설치되지 않았습니다."</string>
- <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"도움말:"</b>" 키보드를 스와이프하고 말하세요."</string>
+ <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"도움말:"</b>" 키보드 위로 손가락을 미끄러지듯 움직이고 나서 말하세요."</string>
<string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"도움말:"</b>" 다음 번에는 \'마침표\', \'쉼표\', \'물음표\'와 같은 구두점을 말해 보세요."</string>
<string name="cancel" msgid="6830980399865683324">"취소"</string>
<string name="ok" msgid="7898366843681727667">"확인"</string>
@@ -113,8 +118,8 @@
<string name="auto_submit_summary" msgid="4961875269610384226">"검색하거나 다음 입력란으로 이동할 때 자동으로 Enter 키를 누릅니다."</string>
<string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"키보드 열기"\n</b></font><font size="3">\n</font>"아무 텍스트 입력란이나 터치하세요."</string>
<string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"키보드 닫기"\n</b></font><font size="3">\n</font>"\'뒤로\' 키를 누르세요."</string>
- <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"키를 길게 터치하여 옵션 보기"\n</b></font><font size="3">\n</font>"문장 부호 및 악센트 기호에 액세스하세요."</string>
- <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"키보드 설정"\n</b></font><font size="3">\n</font><b>"?123"</b>" 키를 길게 터치하세요."</string>
+ <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"키를 길게 눌러 옵션 보기"\n</b></font><font size="3">\n</font>"문장 부호 및 악센트 기호 입력창이 열립니다."</string>
+ <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"키보드 설정"\n</b></font><font size="3">\n</font><b>"?123"</b>" 키를 길게 누르세요."</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".net"</string>
<string name="popular_domain_2" msgid="3036812463748402878">".org"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"입력 언어"</string>
<string name="language_selection_summary" msgid="187110938289512256">"손가락을 스페이스바에서 미끄러지듯 움직여 언어 변경"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← 저장하려면 다시 누르세요."</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"사전 사용 가능"</string>
</resources>
diff --git a/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index 43951552e..43951552e 100644
--- a/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
diff --git a/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index a7ddc7533..041d07eb3 100644
--- a/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Skjermtastatur"</string>
@@ -40,7 +45,7 @@
<string name="quick_fixes_summary" msgid="3405028402510332373">"Retter vanlige stavefeil"</string>
<string name="show_suggestions" msgid="507074425254289133">"Vis forslag"</string>
<string name="show_suggestions_summary" msgid="1989672863935759654">"Vis foreslåtte ord under skriving"</string>
- <string name="auto_complete" msgid="1103196318775486023">"Autokomplettering"</string>
+ <string name="auto_complete" msgid="1103196318775486023">"Autofullføring"</string>
<string name="auto_complete_summary" msgid="6113149638718274624">"Mellomrom og punktum setter automatisk inn valgt ord"</string>
<string-array name="prediction_modes">
<item msgid="4870266572388153286">"Ingen"</item>
@@ -105,8 +110,8 @@
<item msgid="7283103513488381103">"Av"</item>
</string-array>
<string-array name="voice_input_modes_summary">
- <item msgid="554248625705084903">"Mikronfon på hovedtastatur"</item>
- <item msgid="6907837061058876770">"Mikronfon på talltastatur"</item>
+ <item msgid="554248625705084903">"Mikrofon på hovedtastatur"</item>
+ <item msgid="6907837061058876770">"Mikrofon på talltastatur"</item>
<item msgid="3664304608587798036">"Talekommando er deaktivert"</item>
</string-array>
<string name="auto_submit" msgid="9151008027068358518">"Send inn automatisk etter tale"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Inndataspråk"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Dra fingeren på mellomromstasten for å endre språk"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Trykk på nytt for å lagre"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Ordbok tilgjengelig"</string>
</resources>
diff --git a/res/values-nl/bools.xml b/java/res/values-nl/bools.xml
index 897f4b3db..897f4b3db 100644
--- a/res/values-nl/bools.xml
+++ b/java/res/values-nl/bools.xml
diff --git a/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index 9a69c128e..00b197bf1 100644
--- a/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -1,23 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Android-toetsenbord"</string>
<string name="english_ime_settings" msgid="6661589557206947774">"Instellingen voor Android-toetsenbord"</string>
- <string name="vibrate_on_keypress" msgid="5258079494276955460">"Trillen bij druk op een toets"</string>
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Trillen bij druk op toets"</string>
<string name="sound_on_keypress" msgid="6093592297198243644">"Geluid bij druk op een toets"</string>
<string name="hit_correction" msgid="4855351009261318389">"Typefouten corrigeren"</string>
<string name="hit_correction_summary" msgid="8761701873008070796">"Foutcorrectie tijdens invoer inschakelen"</string>
@@ -31,7 +36,7 @@
<string name="auto_complete_dialog_title" msgid="2172048590607201920">"Automatisch voltooien"</string>
<string name="prediction_landscape" msgid="4874601565593216183">"Tekstveld vergroten"</string>
<string name="prediction_landscape_summary" msgid="6736551095997839472">"Woordsuggesties verbergen in liggende weergave"</string>
- <string name="auto_cap" msgid="1719746674854628252">"Automatisch hoofdlettergebruik"</string>
+ <string name="auto_cap" msgid="1719746674854628252">"Auto-hoofdlettergebruik"</string>
<string name="auto_cap_summary" msgid="3260681697600786825">"Hoofdletter gebruiken aan het begin van een zin"</string>
<string name="auto_punctuate" msgid="7276672334264521751">"Automatische interpunctie"</string>
<!-- no translation found for auto_punctuate_summary (6589441565817502132) -->
@@ -47,7 +52,7 @@
<item msgid="1669461741568287396">"Basis"</item>
<item msgid="4894328801530136615">"Geavanceerd"</item>
</string-array>
- <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Opgeslagen"</string>
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: opgeslagen"</string>
<string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
<string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
<string name="alternates_for_i" msgid="7097915268629342242">"ìíîï"</string>
@@ -114,7 +119,7 @@
<string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Het toetsenbord openen"\n</b></font><font size="3">\n</font>"Raak een tekstveld aan."</string>
<string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Het toetsenbord sluiten"\n</b></font><font size="3">\n</font>"Druk op de terugtoets."</string>
<string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Een toets blijven aanraken voor opties"\n</b></font><font size="3">\n</font>"Toegang tot interpunctie en diakritische tekens."</string>
- <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Toetsenbordinstellingen"\n</b></font><font size="3">\n</font>"Blijf de toets "<b>"?123"</b>" aanraken."</string>
+ <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Toetsenbordinstellingen"\n</b></font><font size="3">\n</font>"Blijf de toets \'"<b>"?123"</b>"\' aanraken."</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".net"</string>
<string name="popular_domain_2" msgid="3036812463748402878">".org"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Invoertalen"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Schuif uw vinger over de spatiebalk om de taal te wijzigen"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Tik nogmaals om op te slaan"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Woordenboek beschikbaar"</string>
</resources>
diff --git a/res/values-pl/bools.xml b/java/res/values-pl/bools.xml
index 897f4b3db..897f4b3db 100644
--- a/res/values-pl/bools.xml
+++ b/java/res/values-pl/bools.xml
diff --git a/res/values-pl/donottranslate.xml b/java/res/values-pl/donottranslate.xml
index 196e73c1d..196e73c1d 100644
--- a/res/values-pl/donottranslate.xml
+++ b/java/res/values-pl/donottranslate.xml
diff --git a/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index a411cc213..0c72727ce 100644
--- a/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Klawiatura Android"</string>
@@ -23,14 +28,14 @@
<string name="hit_correction_summary" msgid="8761701873008070796">"Włącz poprawianie błędów wprowadzania"</string>
<string name="hit_correction_land" msgid="2567691684825205448">"Błędy wprowadzania w orientacji poziomej"</string>
<string name="hit_correction_land_summary" msgid="4076803842198368328">"Włącz poprawianie błędów wprowadzania"</string>
- <string name="auto_correction" msgid="7911639788808958255">"Propozycje słów"</string>
+ <string name="auto_correction" msgid="7911639788808958255">"Sugestie słów"</string>
<string name="auto_correction_summary" msgid="6881047311475758267">"Automatycznie poprawiaj poprzednie słowo"</string>
- <string name="prediction" msgid="466220283138359837">"Propozycje słów"</string>
+ <string name="prediction" msgid="466220283138359837">"Sugestie słów"</string>
<string name="prediction_category" msgid="7027100625580696660">"Ustawienia propozycji słów"</string>
<string name="prediction_summary" msgid="459788228830873110">"Włącz autouzupełnianie podczas wpisywania"</string>
<string name="auto_complete_dialog_title" msgid="2172048590607201920">"Autouzupełnianie"</string>
<string name="prediction_landscape" msgid="4874601565593216183">"Zwiększ rozmiar pola tekstowego"</string>
- <string name="prediction_landscape_summary" msgid="6736551095997839472">"Wyłącz propozycje słów w orientacji poziomej"</string>
+ <string name="prediction_landscape_summary" msgid="6736551095997839472">"Wyłącz sugestie słów w orientacji poziomej"</string>
<string name="auto_cap" msgid="1719746674854628252">"Wstawiaj wielkie litery"</string>
<string name="auto_cap_summary" msgid="3260681697600786825">"Zamieniaj na wielką pierwszą literę zdania"</string>
<string name="auto_punctuate" msgid="7276672334264521751">"Automatyczna interpunkcja"</string>
@@ -69,7 +74,7 @@
<string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Wróć do trybu liter, dotykając ponownie tego klawisza."</b></string>
<string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Dotknij i przytrzymaj ten klawisz, aby zmienić ustawienia klawiatury, takie jak autouzupełnianie."</b></string>
<string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Wypróbuj!"</b></string>
- <string name="label_go_key" msgid="1635148082137219148">"Przejdź"</string>
+ <string name="label_go_key" msgid="1635148082137219148">"OK"</string>
<string name="label_next_key" msgid="362972844525672568">"Dalej"</string>
<string name="label_done_key" msgid="2441578748772529288">"Gotowe"</string>
<string name="label_send_key" msgid="2815056534433717444">"Wyślij"</string>
@@ -83,7 +88,7 @@
<string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Aby wyłączyć wprowadzanie głosowe, przejdź do ustawień klawiatury."</string>
<string name="voice_hint_dialog_message" msgid="6892342981545727994">"Aby skorzystać z wprowadzania głosowego, naciśnij przycisk mikrofonu lub przesuń palcem po klawiaturze ekranowej."</string>
<string name="voice_listening" msgid="467518160751321844">"Mów teraz"</string>
- <string name="voice_working" msgid="6666937792815731889">"Działa"</string>
+ <string name="voice_working" msgid="6666937792815731889">"W toku"</string>
<!-- no translation found for voice_initializing (661962047129906646) -->
<skip />
<string name="voice_error" msgid="5140896300312186162">"Błąd. Spróbuj ponownie."</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Języki wprowadzania"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Przesuń palcem po spacji, aby zmienić język"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Dotknij ponownie, aby zapisać"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Słownik dostępny"</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index 399975d88..35a9cb715 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Teclado do Android"</string>
@@ -31,7 +36,7 @@
<string name="auto_complete_dialog_title" msgid="2172048590607201920">"Conclusão automática"</string>
<string name="prediction_landscape" msgid="4874601565593216183">"Aumentar o tamanho do campo de texto"</string>
<string name="prediction_landscape_summary" msgid="6736551095997839472">"Ocultar sugestões de palavras na vista horizontal"</string>
- <string name="auto_cap" msgid="1719746674854628252">"Maiúsculas automáticas"</string>
+ <string name="auto_cap" msgid="1719746674854628252">"Letras maiúsculas automáticas"</string>
<string name="auto_cap_summary" msgid="3260681697600786825">"Colocar inicial maiúscula no início de uma frase"</string>
<string name="auto_punctuate" msgid="7276672334264521751">"Pontuação automática"</string>
<!-- no translation found for auto_punctuate_summary (6589441565817502132) -->
@@ -39,7 +44,7 @@
<string name="quick_fixes" msgid="5353213327680897927">"Correcções rápidas"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige os erros de escrita comuns"</string>
<string name="show_suggestions" msgid="507074425254289133">"Mostrar sugestões"</string>
- <string name="show_suggestions_summary" msgid="1989672863935759654">"Apresentar palavras sugeridas durante a escrita"</string>
+ <string name="show_suggestions_summary" msgid="1989672863935759654">"Apresentar sugestões de palavras ao escrever"</string>
<string name="auto_complete" msgid="1103196318775486023">"Conclusão automática"</string>
<string name="auto_complete_summary" msgid="6113149638718274624">"A barra de espaços e a pontuação inserem automaticamente uma palavra realçada"</string>
<string-array name="prediction_modes">
@@ -47,7 +52,7 @@
<item msgid="1669461741568287396">"Básico"</item>
<item msgid="4894328801530136615">"Avançados"</item>
</string-array>
- <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: Guardada"</string>
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: guardada"</string>
<string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
<string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
<string name="alternates_for_i" msgid="7097915268629342242">"ìíîï"</string>
@@ -64,10 +69,10 @@
<string name="touch_to_continue" msgid="7869803257948414531">"Toque nesta sugestão para continuar »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"Toque aqui para fechar esta sugestão e começar a escrever!"</string>
<string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"O teclado abre quando tocar num campo de texto"</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Toque e mantenha premida uma tecla para ver os acentos"\n"(ø, ö, ô, ó, etc.)"</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Mantenha premida uma tecla para ver os acentos"\n"(ø, ö, ô, ó, etc.)"</b></string>
<string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Mude para números e símbolos tocando nesta tecla"</b></string>
<string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Regresse às letras tocando novamente nesta tecla"</b></string>
- <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Toque e mantenha premida esta tecla para alterar definições do teclado, como a conclusão automática."</b></string>
+ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Mantenha premida esta tecla para alterar definições do teclado, tais como a conclusão automática"</b></string>
<string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Experimente!"</b></string>
<string name="label_go_key" msgid="1635148082137219148">"Ir"</string>
<string name="label_next_key" msgid="362972844525672568">"Seguinte"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Deslize o dedo pela barra de espaço para alterar o idioma"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Toque novamente para guardar"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Dicionário disponível"</string>
</resources>
diff --git a/res/values-pt/strings.xml b/java/res/values-pt/strings.xml
index 18ffdf011..235fd65ac 100644
--- a/res/values-pt/strings.xml
+++ b/java/res/values-pt/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Teclado Android"</string>
@@ -63,8 +68,8 @@
<string name="tip_add_to_dictionary" msgid="1487293888469227817">"Pressione e segure a palavra mais à esquerda para adicioná-la ao dicionário"</string>
<string name="touch_to_continue" msgid="7869803257948414531">"Toque nesta dica para continuar »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"Toque aqui para fechar esta dica e começar a digitar!"</string>
- <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"O teclado abre toda vez que você tocar em um arquivo de texto"</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Tocar e segurar a tecla para visualizar acentos"\n"(ø, ö, ô, ó e assim por diante)"</b></string>
+ <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"O teclado abre toda vez que você tocar em um campo de texto"</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Tocar e segurar uma tecla para visualizar acentos"\n"(ø, ö, ô, ó e assim por diante)"</b></string>
<string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Alternar para números e símbolos tocando nessa tecla"</b></string>
<string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Voltar às letras tocando novamente nessa tecla"</b></string>
<string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Tocar e segurar esta tecla para alterar as configurações do teclado, como a conclusão automática"</b></string>
@@ -113,7 +118,7 @@
<string name="auto_submit_summary" msgid="4961875269610384226">"Pressione Enter automaticamente ao pesquisar ou ir para o próximo campo."</string>
<string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Abra o teclado"\n</b></font><font size="3">\n</font>"Toque em qualquer campo de texto."</string>
<string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Feche o teclado"\n</b></font><font size="3">\n</font>"Pressione a tecla Voltar."</string>
- <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Toque e mantenha pressionada uma tecla para ver as opções"\n</b></font><font size="3">\n</font>"Acesse a pontuação e os acentos."</string>
+ <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Toque e mantenha pressionada uma tecla para ver as opções"\n</b></font><font size="3">\n</font>"Acesse a pontuação e as pronúncias."</string>
<string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Configurações de teclado"\n</b></font><font size="3">\n</font>"Toque e mantenha pressionada a tecla "<b>"?123"</b>"."</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".net"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Deslize o dedo na barra de espaços para alterar o idioma"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Toque novamente para salvar"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Dicionário disponível"</string>
</resources>
diff --git a/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index d4ebc6d60..e27402c7f 100644
--- a/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Клавиатура Android"</string>
@@ -33,7 +38,7 @@
<string name="prediction_landscape_summary" msgid="6736551095997839472">"Скрывать предложение слов в горизонтальной ориентации"</string>
<string name="auto_cap" msgid="1719746674854628252">"Автоподст. заглавных"</string>
<string name="auto_cap_summary" msgid="3260681697600786825">"Делать заглавной первую букву предложения"</string>
- <string name="auto_punctuate" msgid="7276672334264521751">"Автоматическая пунктуация"</string>
+ <string name="auto_punctuate" msgid="7276672334264521751">"Автопунктуация"</string>
<!-- no translation found for auto_punctuate_summary (6589441565817502132) -->
<skip />
<string name="quick_fixes" msgid="5353213327680897927">"Быстрое исправление"</string>
@@ -41,13 +46,13 @@
<string name="show_suggestions" msgid="507074425254289133">"Предлагать варианты"</string>
<string name="show_suggestions_summary" msgid="1989672863935759654">"Предлагать варианты слов во время ввода"</string>
<string name="auto_complete" msgid="1103196318775486023">"Автозавершение"</string>
- <string name="auto_complete_summary" msgid="6113149638718274624">"При нажатии пробела или знака препинания вставлять предложенное слово"</string>
+ <string name="auto_complete_summary" msgid="6113149638718274624">"При нажатии пробела вставлять предложенное слово"</string>
<string-array name="prediction_modes">
<item msgid="4870266572388153286">"Нет"</item>
<item msgid="1669461741568287396">"Основной"</item>
- <item msgid="4894328801530136615">"Расширенный"</item>
+ <item msgid="4894328801530136615">"Дополнительно"</item>
</string-array>
- <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : сохранено"</string>
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: сохранено"</string>
<string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
<string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
<string name="alternates_for_i" msgid="7097915268629342242">"ìíîï"</string>
@@ -64,12 +69,12 @@
<string name="touch_to_continue" msgid="7869803257948414531">"Чтобы продолжить, нажмите на эту подсказку »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"Нажмите здесь, чтобы закрыть подсказку и начать вводить текст."</string>
<string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"Клавиатура появляется автоматически при касании текстового поля"</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Нажмите и удерживайте клавишу, чтобы появились спецсимволы "\n"(ø, ö, ô, ó и т. п.)"</b></string>
- <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Чтобы переключаться между вводом цифр и символов, используйте эту клавишу"</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Нажмите и удерживайте клавишу для отображения вариантов с диакритическими знаками "\n"(ø, ö, ô, ó и т. п.)"</b></string>
+ <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Для переключения между вводом цифр и символов используйте эту клавишу"</b></string>
<string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Чтобы вернуться к буквенной клавиатуре, снова нажмите на эту клавишу"</b></string>
- <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Чтобы сменить настройки клавиатуры (такие как автозавершение), нажмите и удерживайте эту клавишу"</b></string>
+ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Чтобы изменить настройки клавиатуры (такие как автозавершение), нажмите и удерживайте эту клавишу"</b></string>
<string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Попробуйте!"</b></string>
- <string name="label_go_key" msgid="1635148082137219148">"Перейти"</string>
+ <string name="label_go_key" msgid="1635148082137219148">"Поиск"</string>
<string name="label_next_key" msgid="362972844525672568">"Далее"</string>
<string name="label_done_key" msgid="2441578748772529288">"Готово"</string>
<string name="label_send_key" msgid="2815056534433717444">"Отправить"</string>
@@ -111,7 +116,7 @@
</string-array>
<string name="auto_submit" msgid="9151008027068358518">"Автоматически отправлять по окончании голосового ввода"</string>
<string name="auto_submit_summary" msgid="4961875269610384226">"Автоматически нажимать \"Ввод\" при поиске или переходе к следующему полю."</string>
- <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Откройте клавиатуру"\n</b></font><font size="3">\n</font>"Нажмите на любое текстовое поле."</string>
+ <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Открытие клавиатуры"\n</b></font><font size="3">\n</font>"Нажмите на любое текстовое поле."</string>
<string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Закрытие клавиатуры"\n</b></font><font size="3">\n</font>"Нажмите клавишу \"Назад\"."</string>
<string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Нажмите и удерживайте клавишу для вызова параметров"\n</b></font><font size="3">\n</font>"Доступ к пунктуационным и диакритическим знакам."</string>
<string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Настройки клавиатуры"\n</b></font><font size="3">\n</font>"Нажмите и удерживайте клавишу "<b>"?123"</b>"."</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Языки ввода"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Для изменения языка проведите пальцем по пробелу"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Нажмите повторно, чтобы сохранить"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Доступен словарь"</string>
</resources>
diff --git a/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index 2d07a076a..9c6c22159 100644
--- a/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Androids tangentbord"</string>
@@ -64,7 +69,7 @@
<string name="touch_to_continue" msgid="7869803257948414531">"Tryck på tipset för att fortsätta »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"Tryck här om du vill stänga tipset och börja skriva!"</string>
<string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"Tangentbordet öppnas när du trycker på ett textfält"</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Tryck och håll ned en tangent om du vill visa accenter"\n"(ø, ö, ô, ó och så vidare)"</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Tryck och håll nere en tangent om du vill visa accenter"\n"(ø, ö, ô, ó och så vidare)"</b></string>
<string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Växla till siffror och symboler med den här tangenten"</b></string>
<string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Återgå till bokstäver genom att trycka på tangenten en gång till"</b></string>
<string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Tryck och håll ned tangenten om du vill ändra inställningarna för tangentbordet, till exempel Komplettera automatiskt"</b></string>
@@ -114,7 +119,7 @@
<string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Öppna tangentbordet"\n</b></font><font size="3">\n</font>"Tryck på ett textfält."</string>
<string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Stäng tangentbordet"\n</b></font><font size="3">\n</font>"Tryck på Tillbaka."</string>
<string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tryck länge på en tangent om du vill se alternativ"\n</b></font><font size="3">\n</font>"Använda skiljetecken och accenter."</string>
- <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Tangentbordsinställningar"\n</b></font><font size="3">\n</font>"Tryck länge på tangenten "<b>"?123"</b>"."</string>
+ <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Tangentbordsinställningar"\n</b></font><font size="3">\n</font>"Tryck länge på tangenten"<b>"?123"</b>"."</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".net"</string>
<string name="popular_domain_2" msgid="3036812463748402878">".org"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Inmatningsspråk"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Dra med fingret på blanksteg om du vill ändra språk"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Peka igen för att spara"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"En ordlista är tillgänglig"</string>
</resources>
diff --git a/res/values-tr/donottranslate.xml b/java/res/values-tr/donottranslate.xml
index 2154c16bb..2154c16bb 100644
--- a/res/values-tr/donottranslate.xml
+++ b/java/res/values-tr/donottranslate.xml
diff --git a/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index e150a5ee7..0fbdc7da3 100644
--- a/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Android klavyesi"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"Giriş dilleri"</string>
<string name="language_selection_summary" msgid="187110938289512256">"Dili değiştirmek için parmağınızı boşluk çubuğu üzerinde kaydırın"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Kaydetmek için tekrar dokunun"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Sözlük kullanılabilir"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index f3729914b..9c9b25708 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Android 键盘"</string>
@@ -20,16 +25,16 @@
<string name="vibrate_on_keypress" msgid="5258079494276955460">"按键时振动"</string>
<string name="sound_on_keypress" msgid="6093592297198243644">"按键时播放音效"</string>
<string name="hit_correction" msgid="4855351009261318389">"纠正输入错误"</string>
- <string name="hit_correction_summary" msgid="8761701873008070796">"启用输入错误纠正"</string>
+ <string name="hit_correction_summary" msgid="8761701873008070796">"启用输入错误纠正功能"</string>
<string name="hit_correction_land" msgid="2567691684825205448">"横向输入错误"</string>
- <string name="hit_correction_land_summary" msgid="4076803842198368328">"启用输入错误纠正"</string>
+ <string name="hit_correction_land_summary" msgid="4076803842198368328">"启用输入错误纠正功能"</string>
<string name="auto_correction" msgid="7911639788808958255">"字词建议"</string>
- <string name="auto_correction_summary" msgid="6881047311475758267">"自动纠正之前的字词"</string>
+ <string name="auto_correction_summary" msgid="6881047311475758267">"自动纠正前面的字词"</string>
<string name="prediction" msgid="466220283138359837">"字词建议"</string>
<string name="prediction_category" msgid="7027100625580696660">"字词建议设置"</string>
<string name="prediction_summary" msgid="459788228830873110">"输入时启用自动填写功能"</string>
<string name="auto_complete_dialog_title" msgid="2172048590607201920">"自动完成"</string>
- <string name="prediction_landscape" msgid="4874601565593216183">"增加文本域的大小"</string>
+ <string name="prediction_landscape" msgid="4874601565593216183">"扩大文字字段"</string>
<string name="prediction_landscape_summary" msgid="6736551095997839472">"在横向视图中隐藏字词建议"</string>
<string name="auto_cap" msgid="1719746674854628252">"自动大写"</string>
<string name="auto_cap_summary" msgid="3260681697600786825">"句首字母大写"</string>
@@ -45,7 +50,7 @@
<string-array name="prediction_modes">
<item msgid="4870266572388153286">"无"</item>
<item msgid="1669461741568287396">"基本模式"</item>
- <item msgid="4894328801530136615">"高级模式"</item>
+ <item msgid="4894328801530136615">"高级"</item>
</string-array>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>:已保存"</string>
<string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
@@ -63,11 +68,11 @@
<string name="tip_add_to_dictionary" msgid="1487293888469227817">"长按最左侧的字可将其添加到词典中"</string>
<string name="touch_to_continue" msgid="7869803257948414531">"轻触此提示继续 »"</string>
<string name="touch_to_finish" msgid="7990196086480585789">"轻触此处可关闭该提示,然后便可开始输入内容!"</string>
- <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"轻触文本字段即可打开键盘"</b></string>
- <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"按住某个键可看到重音符号"\n"(例如 ø、ö、ô、ó 等)"</b></string>
- <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"轻触该键可切换到数字和符号输入模式"</b></string>
- <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"再次轻触该键可返回字母输入模式"</b></string>
- <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"长按该键可更改键盘设置,例如自动填写"</b></string>
+ <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"您可以随时通过触摸文字字段打开键盘"</b></string>
+ <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"轻触并按住某个键可以查看重音符号"\n"(ø、ö、ô、ó 等)"</b></string>
+ <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"轻触该键即可切换到数字和符号键盘"</b></string>
+ <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"再次轻触该键即可返回字母键盘"</b></string>
+ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"触摸并按住该键可更改键盘设置,例如自动完成"</b></string>
<string name="tip_to_start_typing" msgid="7213843601369174313"><b>"试试吧!"</b></string>
<string name="label_go_key" msgid="1635148082137219148">"开始"</string>
<string name="label_next_key" msgid="362972844525672568">"下一步"</string>
@@ -111,10 +116,10 @@
</string-array>
<string name="auto_submit" msgid="9151008027068358518">"语音结束后自动提交"</string>
<string name="auto_submit_summary" msgid="4961875269610384226">"搜索或转到下一字段时自动按 Enter。"</string>
- <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"打开键盘"\n</b></font><font size="3">\n</font>"轻触任意文本字段。"</string>
+ <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"打开键盘"\n</b></font><font size="3">\n</font>"触摸任意文本字段。"</string>
<string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"关闭键盘"\n</b></font><font size="3">\n</font>"按“返回”键。"</string>
- <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"按住某个键可开启其他字符选项"\n</b></font><font size="3">\n</font>"访问标点和重音符号。"</string>
- <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"键盘设置"\n</b></font><font size="3">\n</font>"长按 "<b>"?123"</b>" 键。"</string>
+ <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"触摸并按住选项键"\n</b></font><font size="3">\n</font>"进入标点/重音符号界面。"</string>
+ <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"键盘设置"\n</b></font><font size="3">\n</font>"触摸并按住 "<b>"?123"</b>" 键。"</string>
<string name="popular_domain_0" msgid="3745279225122472969">".com"</string>
<string name="popular_domain_1" msgid="1370572248164278467">".net"</string>
<string name="popular_domain_2" msgid="3036812463748402878">".org"</string>
@@ -124,4 +129,5 @@
<string name="language_selection_title" msgid="1651299598555326750">"输入语言"</string>
<string name="language_selection_summary" msgid="187110938289512256">"在空格键上滑动手指可更改语言"</string>
<string name="hint_add_to_dictionary" msgid="8058519710062071085">"← 再次点按即可保存"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"提供字典"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index c4efd00a6..4f83be405 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -1,18 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
- 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.
--->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="english_ime_name" msgid="7252517407088836577">"Android 鍵盤"</string>
@@ -70,7 +75,7 @@
<string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"輕觸並按住此鍵即可變更鍵盤設定,例如自動完成"</b></string>
<string name="tip_to_start_typing" msgid="7213843601369174313"><b>"試試看!"</b></string>
<string name="label_go_key" msgid="1635148082137219148">"開始"</string>
- <string name="label_next_key" msgid="362972844525672568">"下一步"</string>
+ <string name="label_next_key" msgid="362972844525672568">"繼續"</string>
<string name="label_done_key" msgid="2441578748772529288">"完成"</string>
<string name="label_send_key" msgid="2815056534433717444">"傳送"</string>
<string name="label_symbol_key" msgid="6175820506864489453">"?123"</string>
@@ -98,14 +103,17 @@
<string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"提示:"</b>"下次可嘗試說出標點符號,例如「句號」、「逗號」或「問號」。"</string>
<string name="cancel" msgid="6830980399865683324">"取消"</string>
<string name="ok" msgid="7898366843681727667">"確定"</string>
- <!-- no translation found for voice_input (2466640768843347841) -->
- <skip />
- <!-- no translation found for voice_input_modes:0 (1349082139076086774) -->
- <!-- no translation found for voice_input_modes:1 (8529385602829095903) -->
- <!-- no translation found for voice_input_modes:2 (7283103513488381103) -->
- <!-- no translation found for voice_input_modes_summary:0 (554248625705084903) -->
- <!-- no translation found for voice_input_modes_summary:1 (6907837061058876770) -->
- <!-- no translation found for voice_input_modes_summary:2 (3664304608587798036) -->
+ <string name="voice_input" msgid="2466640768843347841">"語音輸入"</string>
+ <string-array name="voice_input_modes">
+ <item msgid="1349082139076086774">"於主鍵盤"</item>
+ <item msgid="8529385602829095903">"於符號鍵盤"</item>
+ <item msgid="7283103513488381103">"關閉"</item>
+ </string-array>
+ <string-array name="voice_input_modes_summary">
+ <item msgid="554248625705084903">"主鍵盤上的麥克風"</item>
+ <item msgid="6907837061058876770">"符號鍵盤上的麥克風"</item>
+ <item msgid="3664304608587798036">"已停用語音輸入"</item>
+ </string-array>
<string name="auto_submit" msgid="9151008027068358518">"說話後自動提交"</string>
<string name="auto_submit_summary" msgid="4961875269610384226">"搜尋或前往下一個欄位時自動按下輸入。"</string>
<string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"開啟鍵盤"\n</b></font><font size="3">\n</font>"輕觸任何文字欄位。"</string>
@@ -118,10 +126,8 @@
<string name="popular_domain_3" msgid="8718639560809452028">".gov"</string>
<string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
<string name="inputMethod" msgid="7854532062009028116">"輸入方式"</string>
- <!-- no translation found for language_selection_title (1651299598555326750) -->
- <skip />
- <!-- no translation found for language_selection_summary (187110938289512256) -->
- <skip />
- <!-- no translation found for hint_add_to_dictionary (8058519710062071085) -->
- <skip />
+ <string name="language_selection_title" msgid="1651299598555326750">"輸入語言"</string>
+ <string name="language_selection_summary" msgid="187110938289512256">"以手指在空白鍵上滑動可變更語言"</string>
+ <string name="hint_add_to_dictionary" msgid="8058519710062071085">"← 再次輕按可儲存"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"可使用字典"</string>
</resources>
diff --git a/res/values/bools.xml b/java/res/values/bools.xml
index ebe2f04e5..ebe2f04e5 100644
--- a/res/values/bools.xml
+++ b/java/res/values/bools.xml
diff --git a/res/values/colors.xml b/java/res/values/colors.xml
index c90d9f6af..c90d9f6af 100644
--- a/res/values/colors.xml
+++ b/java/res/values/colors.xml
diff --git a/res/values/dimens.xml b/java/res/values/dimens.xml
index 5b2095c0e..5b2095c0e 100644
--- a/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
diff --git a/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index 87c28aeba..d5017353d 100644
--- a/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -34,4 +34,6 @@
<string name="alternates_for_z"></string>
<!-- Accented characters related to "l" -->
<string name="alternates_for_l"></string>
+ <!-- Accented characters related to "g" -->
+ <string name="alternates_for_g"></string>
</resources>
diff --git a/res/values/durations.xml b/java/res/values/durations.xml
index 92af68e39..92af68e39 100644
--- a/res/values/durations.xml
+++ b/java/res/values/durations.xml
diff --git a/res/values/keycodes.xml b/java/res/values/keycodes.xml
index 8156c0e07..8156c0e07 100644
--- a/res/values/keycodes.xml
+++ b/java/res/values/keycodes.xml
diff --git a/res/values/strings.xml b/java/res/values/strings.xml
index 9025ca0f6..35dd3e089 100644
--- a/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -319,4 +319,7 @@
<!-- Add to dictionary hint -->
<string name="hint_add_to_dictionary">\u2190 Tap again to save</string>
+
+ <!-- Inform the user that a particular language has an available dictionary -->
+ <string name="has_dictionary">Dictionary available</string>
</resources>
diff --git a/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml
index 4e57c6067..da833b2c4 100755
--- a/res/xml-de/kbd_qwerty.xml
+++ b/java/res/xml-de/kbd_qwerty.xml
@@ -120,11 +120,11 @@
<Key android:keyLabel="/" android:keyWidth="10%p"/>
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
- <Key android:keyLabel="@string/popular_domain_0"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <!--Key android:keyLabel="@string/popular_domain_0"
android:keyOutputText="@string/popular_domain_0"
android:popupKeyboard="@xml/popup_domains"
- android:keyWidth="20%p"/>
+ android:keyWidth="20%p"/-->
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
android:keyWidth="10%p"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
@@ -140,11 +140,11 @@
<Key android:keyLabel="\@"/>
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
- <Key android:keyLabel="@string/popular_domain_0"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <!--Key android:keyLabel="@string/popular_domain_0"
android:keyOutputText="@string/popular_domain_0"
android:popupKeyboard="@xml/popup_domains"
- android:keyWidth="20%p"/>
+ android:keyWidth="20%p"/-->
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
android:iconPreview="@drawable/sym_keyboard_feedback_return"
diff --git a/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml
index 1b20c0438..77076fd2f 100644
--- a/res/xml-fr/kbd_qwerty.xml
+++ b/java/res/xml-fr/kbd_qwerty.xml
@@ -122,11 +122,11 @@
<Key android:keyLabel="/" android:keyWidth="10%p"/>
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
- <Key android:keyLabel="@string/popular_domain_0"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <!--Key android:keyLabel="@string/popular_domain_0"
android:keyOutputText="@string/popular_domain_0"
android:popupKeyboard="@xml/popup_domains"
- android:keyWidth="20%p"/>
+ android:keyWidth="20%p"/-->
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
android:keyWidth="10%p"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
@@ -142,11 +142,11 @@
<Key android:keyLabel="\@"/>
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
- <Key android:keyLabel="@string/popular_domain_0"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <!--Key android:keyLabel="@string/popular_domain_0"
android:keyOutputText="@string/popular_domain_0"
android:popupKeyboard="@xml/popup_domains"
- android:keyWidth="20%p"/>
+ android:keyWidth="20%p"/-->
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
android:iconPreview="@drawable/sym_keyboard_feedback_return"
diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml
new file mode 100755
index 000000000..3cec7cda4
--- /dev/null
+++ b/java/res/xml-iw/kbd_qwerty.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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.
+*/
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+ android:keyWidth="10%p"
+ android:horizontalGap="0px"
+ android:verticalGap="0px"
+ android:keyHeight="@dimen/key_height"
+ >
+
+ <Row>
+ <Key android:keyLabel="ק"
+ android:horizontalGap="5%p"
+ android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="ר"/>
+ <Key android:keyLabel="א"/>
+ <Key android:keyLabel="ט"/>
+ <Key android:keyLabel="ו"/>
+ <Key android:keyLabel="ן"/>
+ <Key android:keyLabel="ם"/>
+ <Key android:keyLabel="פ"/>
+ <Key android:codes="-5"
+ android:horizontalGap="1.25%p"
+ android:keyIcon="@drawable/sym_keyboard_delete"
+ android:keyWidth="13.75%p" android:keyEdgeFlags="right"
+ android:iconPreview="@drawable/sym_keyboard_feedback_delete"
+ android:isRepeatable="true"/>
+ </Row>
+
+ <Row>
+ <Key android:keyLabel="ש" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="ד"/>
+ <Key android:keyLabel="ג"/>
+ <Key android:keyLabel="כ"/>
+ <Key android:keyLabel="ע"/>
+ <Key android:keyLabel="י"/>
+ <Key android:keyLabel="ח"/>
+ <Key android:keyLabel="ל"/>
+ <Key android:keyLabel="ך"/>
+ <Key android:keyLabel="ף" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row>
+ <Key android:keyLabel="ז" android:horizontalGap="5%p" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="ס"/>
+ <Key android:keyLabel="ב"/>
+ <Key android:keyLabel="ה"/>
+ <Key android:keyLabel="נ"/>
+ <Key android:keyLabel="מ"/>
+ <Key android:keyLabel="צ"/>
+ <Key android:keyLabel="ת"/>
+ <Key android:keyLabel="ץ" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:keyboardMode="@+id/mode_normal" android:rowEdgeFlags="bottom">
+ <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="_"
+ android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+ <Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_globe"
+ android:keyWidth="10%p"/>
+ <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+ android:keyWidth="10%p"/>
+ <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+ android:iconPreview="@drawable/sym_keyboard_feedback_return"
+ android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:keyboardMode="@+id/mode_url" android:rowEdgeFlags="bottom">
+ <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="_"
+ android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="/" android:keyWidth="10%p"/>
+ <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"
+ android:keyWidth="20%p" android:isRepeatable="true"/>
+ <Key android:keyLabel="@string/popular_domain_0"
+ android:keyOutputText="@string/popular_domain_0"
+ android:popupKeyboard="@xml/popup_domains"
+ android:keyWidth="20%p"/>
+ <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+ android:keyWidth="10%p"/>
+ <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+ android:iconPreview="@drawable/sym_keyboard_feedback_return"
+ android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:keyboardMode="@+id/mode_email" android:rowEdgeFlags="bottom">
+ <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="_"
+ android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="\@" android:keyWidth="10%p"/>
+ <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"
+ android:keyWidth="20%p" android:isRepeatable="true"/>
+ <Key android:keyLabel="@string/popular_domain_0"
+ android:keyOutputText="@string/popular_domain_0"
+ android:popupKeyboard="@xml/popup_domains"
+ android:keyWidth="20%p"/>
+ <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
+ <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+ android:iconPreview="@drawable/sym_keyboard_feedback_return"
+ android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom">
+ <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="_"
+ android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+ <Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_globe"
+ android:keyWidth="10%p"/>
+ <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+ android:keyWidth="10%p"/>
+ <Key android:keyLabel=":-)" android:keyOutputText=":-) "
+ android:popupKeyboard="@xml/popup_smileys"
+ android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:keyboardMode="@+id/mode_webentry" android:rowEdgeFlags="bottom">
+ <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="_"
+ android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+ <Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_globe"
+ android:keyWidth="10%p"/>
+ <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"
+ android:keyWidth="20%p" android:isRepeatable="true"/>
+ <Key android:codes="9" android:keyIcon="@drawable/sym_keyboard_tab"
+ android:iconPreview="@drawable/sym_keyboard_feedback_tab"
+ android:keyWidth="20%p"/>
+ <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
+ <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+ android:iconPreview="@drawable/sym_keyboard_feedback_return"
+ android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+ </Row>
+</Keyboard>
+
diff --git a/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml
index 45d355b0f..cbb518f24 100755
--- a/res/xml-ru/kbd_qwerty.xml
+++ b/java/res/xml-ru/kbd_qwerty.xml
@@ -26,7 +26,7 @@
>
<Row>
- <Key android:keyLabel="й"
+ <Key android:keyLabel="й" android:keyWidth="8.75%p"
android:keyEdgeFlags="left"/>
<Key android:keyLabel="ц"/>
<Key android:keyLabel="у"/>
@@ -39,12 +39,12 @@
<Key android:keyLabel="ш"/>
<Key android:keyLabel="щ"/>
<Key android:keyLabel="з"/>
- <Key android:keyLabel="х"
+ <Key android:keyLabel="х" android:keyWidth="8.75%p"
android:keyEdgeFlags="right"/>
</Row>
<Row>
- <Key android:keyLabel="ф"
+ <Key android:keyLabel="ф" android:keyWidth="8.75%p"
android:keyEdgeFlags="left"/>
<Key android:keyLabel="ы"/>
<Key android:keyLabel="в"/>
@@ -55,7 +55,7 @@
<Key android:keyLabel="л"/>
<Key android:keyLabel="д"/>
<Key android:keyLabel="ж"/>
- <Key android:keyLabel="э"
+ <Key android:keyLabel="э" android:keyWidth="8.75%p"
android:keyEdgeFlags="right"/>
</Row>
@@ -104,11 +104,11 @@
<Key android:keyLabel="/" android:keyWidth="10%p"/>
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
- <Key android:keyLabel="@string/popular_domain_0"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <!--Key android:keyLabel="@string/popular_domain_0"
android:keyOutputText="@string/popular_domain_0"
android:popupKeyboard="@xml/popup_domains"
- android:keyWidth="20%p"/>
+ android:keyWidth="20%p"/-->
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
android:keyWidth="10%p"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
@@ -124,11 +124,11 @@
<Key android:keyLabel="\@" android:keyWidth="10%p"/>
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
- <Key android:keyLabel="@string/popular_domain_0"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <!--Key android:keyLabel="@string/popular_domain_0"
android:keyOutputText="@string/popular_domain_0"
android:popupKeyboard="@xml/popup_domains"
- android:keyWidth="20%p"/>
+ android:keyWidth="20%p"/-->
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
android:iconPreview="@drawable/sym_keyboard_feedback_return"
diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml
new file mode 100644
index 000000000..d4ffa4d52
--- /dev/null
+++ b/java/res/xml-sv/kbd_qwerty.xml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+-->
+
+<!--
+ Swedish Keyboard Layout
+
+ Key positioning: Svensk standard SS 66 22 41
+ Foreign letters: Svenska skrivregler (2:a uppl.) §302
+ Local additions: ۧ
+-->
+
+<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
+ android:keyWidth="9.09%p"
+ android:horizontalGap="0px"
+ android:verticalGap="0px"
+ android:keyHeight="@dimen/key_height"
+ >
+
+ <Row>
+ <Key android:codes="113" android:keyLabel="q"
+ android:keyWidth="8.75%p" android:keyEdgeFlags="left"/>
+ <Key android:codes="119" android:keyLabel="w"/>
+ <Key android:codes="101" android:keyLabel="e"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="éèêëę€"/>
+ <Key android:codes="114" android:keyLabel="r"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="ř"/>
+ <Key android:codes="116" android:keyLabel="t"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="ťþ"/>
+ <Key android:codes="121" android:keyLabel="y"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="ýÿü"/>
+ <Key android:codes="117" android:keyLabel="u"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="úùûū"/>
+ <Key android:codes="105" android:keyLabel="i"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="íìîï"/>
+ <Key android:codes="111" android:keyLabel="o"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="óòôõ"/>
+ <Key android:codes="112" android:keyLabel="p"/>
+ <Key android:keyLabel="å"
+ android:keyWidth="8.75%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row>
+ <Key android:codes="97" android:keyLabel="a"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="áàâąã"
+ android:keyWidth="8.75%p" android:keyEdgeFlags="left"/>
+ <Key android:codes="115" android:keyLabel="s"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="śšşß"/>
+ <Key android:codes="100" android:keyLabel="d"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="ðď"/>
+ <Key android:codes="102" android:keyLabel="f"/>
+ <Key android:codes="103" android:keyLabel="g"/>
+ <Key android:codes="104" android:keyLabel="h"/>
+ <Key android:codes="106" android:keyLabel="j"/>
+ <Key android:codes="107" android:keyLabel="k"/>
+ <Key android:codes="108" android:keyLabel="l"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="ł"/>
+ <Key android:keyLabel="ö"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="øœ"/>
+ <Key android:keyLabel="ä"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="æ"
+ android:keyWidth="8.75%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:keyWidth="10%p">
+ <Key android:codes="-1" android:keyIcon="@drawable/sym_keyboard_shift"
+ android:keyWidth="15%p" android:isModifier="true"
+ android:iconPreview="@drawable/sym_keyboard_feedback_shift"
+ android:isSticky="true" android:keyEdgeFlags="left"/>
+ <Key android:codes="122" android:keyLabel="z"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="źžż"/>
+ <Key android:codes="120" android:keyLabel="x"/>
+ <Key android:codes="99" android:keyLabel="c"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="çćč"/>
+ <Key android:codes="118" android:keyLabel="v"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="w"/>
+ <Key android:codes="98" android:keyLabel="b"/>
+ <Key android:codes="110" android:keyLabel="n"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="ńñň"/>
+ <Key android:codes="109" android:keyLabel="m"/>
+ <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete"
+ android:keyWidth="15%p" android:keyEdgeFlags="right"
+ android:iconPreview="@drawable/sym_keyboard_feedback_delete"
+ android:isRepeatable="true"/>
+ </Row>
+
+ <Row android:keyboardMode="@+id/mode_normal" android:rowEdgeFlags="bottom">
+ <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="_"
+ android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+ <Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_mic"
+ android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+ android:keyWidth="10%p"/>
+ <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+ android:keyWidth="10%p"/>
+ <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+ android:iconPreview="@drawable/sym_keyboard_feedback_return"
+ android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:keyboardMode="@+id/mode_url" android:rowEdgeFlags="bottom">
+ <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="_"
+ android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="/" android:keyWidth="10%p"/>
+ <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <!--Key android:keyLabel="@string/popular_domain_0"
+ android:keyOutputText="@string/popular_domain_0"
+ android:popupKeyboard="@xml/popup_domains"
+ android:keyWidth="20%p"/-->
+ <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+ android:keyWidth="10%p"/>
+ <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+ android:iconPreview="@drawable/sym_keyboard_feedback_return"
+ android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:keyboardMode="@+id/mode_email" android:rowEdgeFlags="bottom">
+ <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="_"
+ android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="\@"/>
+ <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <!--Key android:keyLabel="@string/popular_domain_0"
+ android:keyOutputText="@string/popular_domain_0"
+ android:popupKeyboard="@xml/popup_domains"
+ android:keyWidth="20%p"/-->
+ <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
+ <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+ android:iconPreview="@drawable/sym_keyboard_feedback_return"
+ android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom">
+ <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="_"
+ android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+ <Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_mic"
+ android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+ android:keyWidth="10%p"/>
+ <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+ android:keyWidth="10%p"/>
+ <Key android:keyLabel=":-)" android:keyOutputText=":-) "
+ android:popupKeyboard="@xml/popup_smileys"
+ android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+ <Row android:keyboardMode="@+id/mode_webentry" android:rowEdgeFlags="bottom">
+ <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="_"
+ android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+ <Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_mic"
+ android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+ android:keyWidth="10%p"/>
+ <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"
+ android:keyWidth="20%p" android:isRepeatable="true"/>
+ <Key android:codes="9" android:keyIcon="@drawable/sym_keyboard_tab"
+ android:iconPreview="@drawable/sym_keyboard_feedback_tab"
+ android:keyWidth="20%p"/>
+ <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
+ <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+ android:iconPreview="@drawable/sym_keyboard_feedback_return"
+ android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+ </Row>
+
+</Keyboard>
diff --git a/res/xml/azerty.xml b/java/res/xml/azerty.xml
index 614aa4936..614aa4936 100644
--- a/res/xml/azerty.xml
+++ b/java/res/xml/azerty.xml
diff --git a/res/xml/kbd_alpha.xml b/java/res/xml/kbd_alpha.xml
index 4e8af3399..4e8af3399 100644
--- a/res/xml/kbd_alpha.xml
+++ b/java/res/xml/kbd_alpha.xml
diff --git a/res/xml/kbd_extension.xml b/java/res/xml/kbd_extension.xml
index c64f666d0..c64f666d0 100755
--- a/res/xml/kbd_extension.xml
+++ b/java/res/xml/kbd_extension.xml
diff --git a/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml
index d2bcdac52..d2bcdac52 100755
--- a/res/xml/kbd_phone.xml
+++ b/java/res/xml/kbd_phone.xml
diff --git a/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index 9604664fa..9604664fa 100755
--- a/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
diff --git a/res/xml/kbd_popup_template.xml b/java/res/xml/kbd_popup_template.xml
index aca46930f..aca46930f 100644
--- a/res/xml/kbd_popup_template.xml
+++ b/java/res/xml/kbd_popup_template.xml
diff --git a/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index 4aa476136..7cb18b04e 100755
--- a/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -70,7 +70,10 @@
android:popupKeyboard="@xml/kbd_popup_template"
android:popupCharacters="@string/alternates_for_d"/>
<Key android:codes="102" android:keyLabel="f"/>
- <Key android:codes="103" android:keyLabel="g"/>
+ <Key android:codes="103" android:keyLabel="g"
+ android:popupKeyboard="@xml/kbd_popup_template"
+ android:popupCharacters="@string/alternates_for_g"
+ />
<Key android:codes="104" android:keyLabel="h"/>
<Key android:codes="106" android:keyLabel="j"/>
<Key android:codes="107" android:keyLabel="k"/>
@@ -132,11 +135,11 @@
<Key android:keyLabel="/" android:keyWidth="10%p"/>
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
- <Key android:keyLabel="@string/popular_domain_0"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <!--Key android:keyLabel="@string/popular_domain_0"
android:keyOutputText="@string/popular_domain_0"
android:popupKeyboard="@xml/popup_domains"
- android:keyWidth="20%p"/>
+ android:keyWidth="20%p"/-->
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
android:keyWidth="10%p"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
@@ -152,11 +155,11 @@
<Key android:keyLabel="\@"/>
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
- <Key android:keyLabel="@string/popular_domain_0"
+ android:keyWidth="40%p" android:isRepeatable="true"/>
+ <!--Key android:keyLabel="@string/popular_domain_0"
android:keyOutputText="@string/popular_domain_0"
android:popupKeyboard="@xml/popup_domains"
- android:keyWidth="20%p"/>
+ android:keyWidth="20%p"/-->
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
android:iconPreview="@drawable/sym_keyboard_feedback_return"
diff --git a/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index 067932b3f..ab5792fd1 100755
--- a/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -77,7 +77,7 @@
/>
<Key android:codes="45" android:keyLabel="-"
android:popupKeyboard="@xml/kbd_popup_template"
- android:popupCharacters="–—"
+ android:popupCharacters="_–—"
/>
<Key android:keyLabel="+"
android:popupKeyboard="@xml/kbd_popup_template"
@@ -131,7 +131,9 @@
android:keyWidth="40%p"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
android:isRepeatable="true"/>
- <Key android:keyLabel="." android:keyWidth="10%p" />
+ <Key android:codes="46" android:keyLabel="."
+ android:popupKeyboard="@xml/popup_punctuation"
+ android:keyWidth="10%p"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:keyWidth="20%p" android:keyEdgeFlags="right"
android:iconPreview="@drawable/sym_keyboard_feedback_return"
/>
diff --git a/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index 09b5c3f9d..09b5c3f9d 100755
--- a/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
diff --git a/res/xml/language_prefs.xml b/java/res/xml/language_prefs.xml
index b7a4c07db..b7a4c07db 100644
--- a/res/xml/language_prefs.xml
+++ b/java/res/xml/language_prefs.xml
diff --git a/res/xml/method.xml b/java/res/xml/method.xml
index 195691b7b..195691b7b 100644
--- a/res/xml/method.xml
+++ b/java/res/xml/method.xml
diff --git a/res/xml/popup_domains.xml b/java/res/xml/popup_domains.xml
index b733fe24f..b733fe24f 100644
--- a/res/xml/popup_domains.xml
+++ b/java/res/xml/popup_domains.xml
diff --git a/res/xml/popup_punctuation.xml b/java/res/xml/popup_punctuation.xml
index 518e3f1f2..a29fb520d 100644
--- a/res/xml/popup_punctuation.xml
+++ b/java/res/xml/popup_punctuation.xml
@@ -26,8 +26,8 @@
>
<Row android:rowEdgeFlags="top">
- <Key android:keyLabel=";" android:keyEdgeFlags="left" />
- <Key android:keyLabel="," />
+ <Key android:keyLabel=":" android:keyEdgeFlags="left" />
+ <Key android:keyLabel="/" />
<Key android:keyLabel="&amp;" />
<Key android:keyLabel="(" />
<Key android:keyLabel=")" />
@@ -35,12 +35,12 @@
<Key android:keyLabel="+" android:keyEdgeFlags="right" />
</Row>
<Row android:rowEdgeFlags="bottom">
- <Key android:codes="58" android:keyLabel=":" android:keyEdgeFlags="left" />
- <Key android:codes="47" android:keyLabel="/" />
- <Key android:codes="64" android:keyLabel="\@" />
- <Key android:codes="39" android:keyLabel="\'" />
- <Key android:codes="34" android:keyLabel="&quot;" />
- <Key android:codes="63" android:keyLabel="\?" />
- <Key android:codes="33" android:keyLabel="!" android:keyEdgeFlags="right" />
+ <Key android:keyLabel=";" android:keyEdgeFlags="left" />
+ <Key android:keyLabel="," />
+ <Key android:keyLabel="\@" />
+ <Key android:keyLabel="\'" />
+ <Key android:keyLabel="&quot;" />
+ <Key android:keyLabel="\?" />
+ <Key android:keyLabel="!" android:keyEdgeFlags="right" />
</Row>
</Keyboard>
diff --git a/res/xml/popup_smileys.xml b/java/res/xml/popup_smileys.xml
index 5663fefc8..5663fefc8 100644
--- a/res/xml/popup_smileys.xml
+++ b/java/res/xml/popup_smileys.xml
diff --git a/res/xml/prefs.xml b/java/res/xml/prefs.xml
index 29c43cba5..535b63f3b 100644
--- a/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -50,9 +50,7 @@
android:title="@string/language_selection_title"
android:summary="@string/language_selection_summary">
<intent
- android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.inputmethod.latin"
- android:targetClass="com.android.inputmethod.latin.InputLanguageSelection" />
+ android:action="com.android.inputmethod.latin.INPUT_LANGUAGE_SELECTION"/>
</PreferenceScreen>
<PreferenceCategory
diff --git a/src/com/android/inputmethod/latin/AutoDictionary.java b/java/src/com/android/inputmethod/latin/AutoDictionary.java
index 3d76dc301..93f1985ca 100644
--- a/src/com/android/inputmethod/latin/AutoDictionary.java
+++ b/java/src/com/android/inputmethod/latin/AutoDictionary.java
@@ -17,6 +17,8 @@
package com.android.inputmethod.latin;
import java.util.HashMap;
+import java.util.Set;
+import java.util.Map.Entry;
import android.content.ContentValues;
import android.content.Context;
@@ -24,8 +26,8 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
+import android.os.AsyncTask;
import android.provider.BaseColumns;
-import android.provider.UserDictionary.Words;
import android.util.Log;
/**
@@ -51,6 +53,9 @@ public class AutoDictionary extends ExpandableDictionary {
// Locale for which this auto dictionary is storing words
private String mLocale;
+ private HashMap<String,Integer> mPendingWrites = new HashMap<String,Integer>();
+ private final Object mPendingWritesLock = new Object();
+
private static final String DATABASE_NAME = "auto_dict.db";
private static final int DATABASE_VERSION = 1;
@@ -78,13 +83,15 @@ public class AutoDictionary extends ExpandableDictionary {
sDictProjectionMap.put(COLUMN_LOCALE, COLUMN_LOCALE);
}
- private DatabaseHelper mOpenHelper;
+ private static DatabaseHelper mOpenHelper = null;
public AutoDictionary(Context context, LatinIME ime, String locale) {
super(context);
mIme = ime;
mLocale = locale;
- mOpenHelper = new DatabaseHelper(getContext());
+ if (mOpenHelper == null) {
+ mOpenHelper = new DatabaseHelper(getContext());
+ }
if (mLocale != null && mLocale.length() > 1) {
loadDictionary();
}
@@ -96,28 +103,38 @@ public class AutoDictionary extends ExpandableDictionary {
return frequency >= VALIDITY_THRESHOLD;
}
+ @Override
public void close() {
- mOpenHelper.close();
+ flushPendingWrites();
+ // Don't close the database as locale changes will require it to be reopened anyway
+ // Also, the database is written to somewhat frequently, so it needs to be kept alive
+ // throughout the life of the process.
+ // mOpenHelper.close();
+ super.close();
}
- private void loadDictionary() {
+ @Override
+ public void loadDictionaryAsync() {
// Load the words that correspond to the current input locale
Cursor cursor = query(COLUMN_LOCALE + "=?", new String[] { mLocale });
- if (cursor.moveToFirst()) {
- int wordIndex = cursor.getColumnIndex(COLUMN_WORD);
- int frequencyIndex = cursor.getColumnIndex(COLUMN_FREQUENCY);
- while (!cursor.isAfterLast()) {
- String word = cursor.getString(wordIndex);
- int frequency = cursor.getInt(frequencyIndex);
- // Safeguard against adding really long words. Stack may overflow due
- // to recursive lookup
- if (word.length() < getMaxWordLength()) {
- super.addWord(word, frequency);
+ try {
+ if (cursor.moveToFirst()) {
+ int wordIndex = cursor.getColumnIndex(COLUMN_WORD);
+ int frequencyIndex = cursor.getColumnIndex(COLUMN_FREQUENCY);
+ while (!cursor.isAfterLast()) {
+ String word = cursor.getString(wordIndex);
+ int frequency = cursor.getInt(frequencyIndex);
+ // Safeguard against adding really long words. Stack may overflow due
+ // to recursive lookup
+ if (word.length() < getMaxWordLength()) {
+ super.addWord(word, frequency);
+ }
+ cursor.moveToNext();
}
- cursor.moveToNext();
}
+ } finally {
+ cursor.close();
}
- cursor.close();
}
@Override
@@ -132,14 +149,29 @@ public class AutoDictionary extends ExpandableDictionary {
int freq = getWordFrequency(word);
freq = freq < 0 ? addFrequency : freq + addFrequency;
super.addWord(word, freq);
+
if (freq >= PROMOTION_THRESHOLD) {
mIme.promoteToUserDictionary(word, FREQUENCY_FOR_AUTO_ADD);
- // Delete the word (for input locale) from the auto dictionary db, as it
- // is now in the user dictionary provider.
- delete(COLUMN_WORD + "=? AND " + COLUMN_LOCALE + "=?",
- new String[] { word, mLocale });
- } else {
- update(word, freq, mLocale);
+ freq = 0;
+ }
+
+ synchronized (mPendingWritesLock) {
+ // Write a null frequency if it is to be deleted from the db
+ mPendingWrites.put(word, freq == 0 ? null : new Integer(freq));
+ }
+ }
+
+ /**
+ * Schedules a background thread to write any pending words to the database.
+ */
+ public void flushPendingWrites() {
+ synchronized (mPendingWritesLock) {
+ // Nothing pending? Return
+ if (mPendingWrites.isEmpty()) return;
+ // Create a background thread to write the pending entries
+ new UpdateDbTask(getContext(), mOpenHelper, mPendingWrites, mLocale).execute();
+ // Create a new map for writing new entries into while the old one is written to db
+ mPendingWrites = new HashMap<String, Integer>();
}
}
@@ -183,35 +215,45 @@ public class AutoDictionary extends ExpandableDictionary {
return c;
}
- private boolean insert(ContentValues values) {
- SQLiteDatabase db = mOpenHelper.getWritableDatabase();
- long rowId = db.insert(AUTODICT_TABLE_NAME, Words.WORD, values);
- if (rowId > 0) {
- return true;
- }
- return false;
- }
+ /**
+ * Async task to write pending words to the database so that it stays in sync with
+ * the in-memory trie.
+ */
+ private static class UpdateDbTask extends AsyncTask<Void, Void, Void> {
+ private final HashMap<String, Integer> mMap;
+ private final DatabaseHelper mDbHelper;
+ private final String mLocale;
- private int delete(String where, String[] whereArgs) {
- SQLiteDatabase db = mOpenHelper.getWritableDatabase();
- int count = db.delete(AUTODICT_TABLE_NAME, where, whereArgs);
- return count;
- }
+ public UpdateDbTask(Context context, DatabaseHelper openHelper,
+ HashMap<String, Integer> pendingWrites, String locale) {
+ mMap = pendingWrites;
+ mLocale = locale;
+ mDbHelper = openHelper;
+ }
- private int update(String word, int frequency, String locale) {
- SQLiteDatabase db = mOpenHelper.getWritableDatabase();
- long count = db.delete(AUTODICT_TABLE_NAME, COLUMN_WORD + "=? AND " + COLUMN_LOCALE + "=?",
- new String[] { word, locale });
- count = db.insert(AUTODICT_TABLE_NAME, null,
- getContentValues(word, frequency, locale));
- return (int) count;
- }
+ @Override
+ protected Void doInBackground(Void... v) {
+ SQLiteDatabase db = mDbHelper.getWritableDatabase();
+ // Write all the entries to the db
+ Set<Entry<String,Integer>> mEntries = mMap.entrySet();
+ for (Entry<String,Integer> entry : mEntries) {
+ Integer freq = entry.getValue();
+ db.delete(AUTODICT_TABLE_NAME, COLUMN_WORD + "=? AND " + COLUMN_LOCALE + "=?",
+ new String[] { entry.getKey(), mLocale });
+ if (freq != null) {
+ db.insert(AUTODICT_TABLE_NAME, null,
+ getContentValues(entry.getKey(), freq, mLocale));
+ }
+ }
+ return null;
+ }
- private ContentValues getContentValues(String word, int frequency, String locale) {
- ContentValues values = new ContentValues(4);
- values.put(COLUMN_WORD, word);
- values.put(COLUMN_FREQUENCY, frequency);
- values.put(COLUMN_LOCALE, locale);
- return values;
+ private ContentValues getContentValues(String word, int frequency, String locale) {
+ ContentValues values = new ContentValues(4);
+ values.put(COLUMN_WORD, word);
+ values.put(COLUMN_FREQUENCY, frequency);
+ values.put(COLUMN_LOCALE, locale);
+ return values;
+ }
}
}
diff --git a/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index ec467c88d..4901b210b 100644
--- a/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008 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
@@ -16,6 +16,11 @@
package com.android.inputmethod.latin;
+import java.io.InputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.channels.Channels;
import java.util.Arrays;
import android.content.Context;
@@ -27,6 +32,7 @@ import android.util.Log;
*/
public class BinaryDictionary extends Dictionary {
+ private static final String TAG = "BinaryDictionary";
public static final int MAX_WORD_LENGTH = 48;
private static final int MAX_ALTERNATIVES = 16;
private static final int MAX_WORDS = 16;
@@ -35,10 +41,13 @@ public class BinaryDictionary extends Dictionary {
private static final boolean ENABLE_MISSED_CHARACTERS = true;
private int mNativeDict;
- private int mDictLength; // This value is set from native code, don't change the name!!!!
+ private int mDictLength;
private int[] mInputCodes = new int[MAX_WORD_LENGTH * MAX_ALTERNATIVES];
private char[] mOutputChars = new char[MAX_WORD_LENGTH * MAX_WORDS];
private int[] mFrequencies = new int[MAX_WORDS];
+ // Keep a reference to the native dict direct buffer in Java to avoid
+ // unexpected deallocation of the direct buffer.
+ private ByteBuffer mNativeDictDirectBuffer;
static {
try {
@@ -59,8 +68,7 @@ public class BinaryDictionary extends Dictionary {
}
}
- private native int openNative(AssetManager am, String resourcePath, int typedLetterMultiplier,
- int fullWordMultiplier);
+ private native int openNative(ByteBuffer bb, int typedLetterMultiplier, int fullWordMultiplier);
private native void closeNative(int dict);
private native boolean isValidWordNative(int nativeData, char[] word, int wordLength);
private native int getSuggestionsNative(int dict, int[] inputCodes, int codesSize,
@@ -69,9 +77,28 @@ public class BinaryDictionary extends Dictionary {
int[] nextLettersFrequencies, int nextLettersSize);
private final void loadDictionary(Context context, int resId) {
- AssetManager am = context.getResources().getAssets();
- String assetName = context.getResources().getString(resId);
- mNativeDict = openNative(am, assetName, TYPED_LETTER_MULTIPLIER, FULL_WORD_FREQ_MULTIPLIER);
+ InputStream is = context.getResources().openRawResource(resId);
+ try {
+ int avail = is.available();
+ mNativeDictDirectBuffer =
+ ByteBuffer.allocateDirect(avail).order(ByteOrder.nativeOrder());
+ int got = Channels.newChannel(is).read(mNativeDictDirectBuffer);
+ if (got != avail) {
+ Log.e(TAG, "Read " + got + " bytes, expected " + avail);
+ } else {
+ mNativeDict = openNative(mNativeDictDirectBuffer,
+ TYPED_LETTER_MULTIPLIER, FULL_WORD_FREQ_MULTIPLIER);
+ mDictLength = avail;
+ }
+ } catch (IOException e) {
+ Log.w(TAG, "No available size for binary dictionary");
+ } finally {
+ try {
+ is.close();
+ } catch (IOException e) {
+ Log.w(TAG, "Failed to close input stream");
+ }
+ }
}
@Override
@@ -138,7 +165,6 @@ public class BinaryDictionary extends Dictionary {
@Override
public synchronized void close() {
if (mNativeDict != 0) {
- System.err.println("Closing BinaryDictionary");
closeNative(mNativeDict);
mNativeDict = 0;
}
diff --git a/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index 0c0373b3b..3a199bbaf 100755
--- a/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008 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
diff --git a/src/com/android/inputmethod/latin/CandidateViewContainer.java b/java/src/com/android/inputmethod/latin/CandidateViewContainer.java
index e13f2738c..e0cb8c3b0 100644
--- a/src/com/android/inputmethod/latin/CandidateViewContainer.java
+++ b/java/src/com/android/inputmethod/latin/CandidateViewContainer.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008 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
diff --git a/src/com/android/inputmethod/latin/ContactsDictionary.java b/java/src/com/android/inputmethod/latin/ContactsDictionary.java
index f53ebf3f5..15edb706a 100644
--- a/src/com/android/inputmethod/latin/ContactsDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ContactsDictionary.java
@@ -35,15 +35,8 @@ public class ContactsDictionary extends ExpandableDictionary {
private ContentObserver mObserver;
- private boolean mRequiresReload;
-
private long mLastLoadedContacts;
- private boolean mUpdatingContacts;
-
- // Use this lock before touching mUpdatingContacts & mRequiresDownload
- private Object mUpdatingLock = new Object();
-
public ContactsDictionary(Context context) {
super(context);
// Perform a managed query. The Activity will handle closing and requerying the cursor
@@ -53,15 +46,10 @@ public class ContactsDictionary extends ExpandableDictionary {
cres.registerContentObserver(Contacts.CONTENT_URI, true, mObserver = new ContentObserver(null) {
@Override
public void onChange(boolean self) {
- synchronized (mUpdatingLock) {
- mRequiresReload = true;
- }
+ setRequiresReload(true);
}
});
-
- synchronized (mUpdatingLock) {
- loadDictionaryAsyncLocked();
- }
+ loadDictionary();
}
public synchronized void close() {
@@ -69,41 +57,26 @@ public class ContactsDictionary extends ExpandableDictionary {
getContext().getContentResolver().unregisterContentObserver(mObserver);
mObserver = null;
}
+ super.close();
}
- private synchronized void loadDictionaryAsyncLocked() {
+ @Override
+ public void startDictionaryLoadingTaskLocked() {
long now = SystemClock.uptimeMillis();
if (mLastLoadedContacts == 0
|| now - mLastLoadedContacts > 30 * 60 * 1000 /* 30 minutes */) {
- if (!mUpdatingContacts) {
- mUpdatingContacts = true;
- mRequiresReload = false;
- new LoadContactsTask().execute();
- }
- }
- }
-
- @Override
- public synchronized void getWords(final WordComposer codes, final WordCallback callback,
- int[] nextLettersFrequencies) {
- synchronized (mUpdatingLock) {
- // If we need to update, start off a background task
- if (mRequiresReload) loadDictionaryAsyncLocked();
- // Currently updating contacts, don't return any results.
- if (mUpdatingContacts) return;
+ super.startDictionaryLoadingTaskLocked();
}
- super.getWords(codes, callback, nextLettersFrequencies);
}
@Override
- public synchronized boolean isValidWord(CharSequence word) {
- synchronized (mUpdatingLock) {
- // If we need to update, start off a background task
- if (mRequiresReload) loadDictionaryAsyncLocked();
- if (mUpdatingContacts) return false;
+ public void loadDictionaryAsync() {
+ Cursor cursor = getContext().getContentResolver()
+ .query(Contacts.CONTENT_URI, PROJECTION, null, null, null);
+ if (cursor != null) {
+ addWords(cursor);
}
-
- return super.isValidWord(word);
+ mLastLoadedContacts = SystemClock.uptimeMillis();
}
private void addWords(Cursor cursor) {
@@ -150,27 +123,5 @@ public class ContactsDictionary extends ExpandableDictionary {
}
cursor.close();
}
-
- private class LoadContactsTask extends AsyncTask<Void, Void, Void> {
- @Override
- protected Void doInBackground(Void... v) {
- Cursor cursor = getContext().getContentResolver()
- .query(Contacts.CONTENT_URI, PROJECTION, null, null, null);
- if (cursor != null) {
- addWords(cursor);
- }
- mLastLoadedContacts = SystemClock.uptimeMillis();
- return null;
- }
- @Override
- protected void onPostExecute(Void result) {
- // TODO Auto-generated method stub
- synchronized (mUpdatingLock) {
- mUpdatingContacts = false;
- }
- super.onPostExecute(result);
- }
-
- }
}
diff --git a/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java
index b656d04dc..e7b526663 100644
--- a/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008 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
diff --git a/src/com/android/inputmethod/latin/ExpandableDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
index 648f577ca..46bc41c42 100644
--- a/src/com/android/inputmethod/latin/ExpandableDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
@@ -16,7 +16,11 @@
package com.android.inputmethod.latin;
+import com.android.inputmethod.latin.Dictionary.WordCallback;
+
import android.content.Context;
+import android.os.AsyncTask;
+import android.os.SystemClock;
/**
* Base class for an in-memory dictionary that can grow dynamically and can
@@ -32,6 +36,13 @@ public class ExpandableDictionary extends Dictionary {
public static final int MAX_WORD_LENGTH = 32;
private static final char QUOTE = '\'';
+ private boolean mRequiresReload;
+
+ private boolean mUpdatingDictionary;
+
+ // Use this lock before touching mUpdatingDictionary & mRequiresDownload
+ private Object mUpdatingLock = new Object();
+
static class Node {
char code;
int frequency;
@@ -70,6 +81,34 @@ public class ExpandableDictionary extends Dictionary {
mCodes = new int[MAX_WORD_LENGTH][];
}
+ public void loadDictionary() {
+ synchronized (mUpdatingLock) {
+ startDictionaryLoadingTaskLocked();
+ }
+ }
+
+ public void startDictionaryLoadingTaskLocked() {
+ if (!mUpdatingDictionary) {
+ mUpdatingDictionary = true;
+ mRequiresReload = false;
+ new LoadDictionaryTask().execute();
+ }
+ }
+
+ public void setRequiresReload(boolean reload) {
+ synchronized (mUpdatingLock) {
+ mRequiresReload = reload;
+ }
+ }
+
+ public boolean getRequiresReload() {
+ return mRequiresReload;
+ }
+
+ /** Override to load your dictionary here, on a background thread. */
+ public void loadDictionaryAsync() {
+ }
+
Context getContext() {
return mContext;
}
@@ -119,6 +158,13 @@ public class ExpandableDictionary extends Dictionary {
@Override
public void getWords(final WordComposer codes, final WordCallback callback,
int[] nextLettersFrequencies) {
+ synchronized (mUpdatingLock) {
+ // If we need to update, start off a background task
+ if (mRequiresReload) startDictionaryLoadingTaskLocked();
+ // Currently updating contacts, don't return any results.
+ if (mUpdatingDictionary) return;
+ }
+
mInputLength = codes.size();
mNextLettersFrequencies = nextLettersFrequencies;
if (mCodes.length < mInputLength) mCodes = new int[mInputLength][];
@@ -135,6 +181,11 @@ public class ExpandableDictionary extends Dictionary {
@Override
public synchronized boolean isValidWord(CharSequence word) {
+ synchronized (mUpdatingLock) {
+ // If we need to update, start off a background task
+ if (mRequiresReload) startDictionaryLoadingTaskLocked();
+ if (mUpdatingDictionary) return false;
+ }
final int freq = getWordFrequencyRec(mRoots, word, 0, word.length());
return freq > -1;
}
@@ -248,7 +299,7 @@ public class ExpandableDictionary extends Dictionary {
if (currentChar == lowerC || currentChar == c) {
word[depth] = c;
- if (codeSize == depth + 1) {
+ if (codeSize == inputIndex + 1) {
if (terminal) {
if (INCLUDE_TYPED_WORD_IF_VALID
|| !same(word, depth + 1, codes.getTypedWord())) {
@@ -277,6 +328,24 @@ public class ExpandableDictionary extends Dictionary {
mRoots = new NodeArray();
}
+ private class LoadDictionaryTask extends AsyncTask<Void, Void, Void> {
+ @Override
+ protected Void doInBackground(Void... v) {
+ loadDictionaryAsync();
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ // TODO Auto-generated method stub
+ synchronized (mUpdatingLock) {
+ mUpdatingDictionary = false;
+ }
+ super.onPostExecute(result);
+ }
+
+ }
+
static char toLowerCase(char c) {
if (c < BASE_CHARS.length) {
c = BASE_CHARS[c];
diff --git a/src/com/android/inputmethod/latin/Hints.java b/java/src/com/android/inputmethod/latin/Hints.java
index 689c8d852..689c8d852 100644
--- a/src/com/android/inputmethod/latin/Hints.java
+++ b/java/src/com/android/inputmethod/latin/Hints.java
diff --git a/src/com/android/inputmethod/latin/InputLanguageSelection.java b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
index 73298e33c..b5a11010b 100644
--- a/src/com/android/inputmethod/latin/InputLanguageSelection.java
+++ b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
@@ -23,6 +23,8 @@ import java.util.Locale;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
+import android.content.res.Configuration;
+import android.content.res.Resources;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.PreferenceActivity;
@@ -34,6 +36,9 @@ public class InputLanguageSelection extends PreferenceActivity {
private String mSelectedLanguages;
private ArrayList<Loc> mAvailableLanguages = new ArrayList<Loc>();
+ private static final String[] BLACKLIST_LANGUAGES = {
+ "ko", "ja", "zh", "el"
+ };
private static class Loc implements Comparable {
static Collator sCollator = Collator.getInstance();
@@ -72,6 +77,9 @@ public class InputLanguageSelection extends PreferenceActivity {
pref.setTitle(LanguageSwitcher.toTitleCase(locale.getDisplayName(locale)));
boolean checked = isLocaleIn(locale, languageList);
pref.setChecked(checked);
+ if (hasDictionary(locale)) {
+ pref.setSummary(R.string.has_dictionary);
+ }
parent.addPreference(pref);
}
}
@@ -89,6 +97,25 @@ public class InputLanguageSelection extends PreferenceActivity {
return false;
}
+ private boolean hasDictionary(Locale locale) {
+ Resources res = getResources();
+ Configuration conf = res.getConfiguration();
+ Locale saveLocale = conf.locale;
+ boolean haveDictionary = false;
+ conf.locale = locale;
+ res.updateConfiguration(conf, res.getDisplayMetrics());
+ BinaryDictionary bd = new BinaryDictionary(this, R.raw.main);
+ // Is the dictionary larger than a placeholder? Arbitrarily chose a lower limit of
+ // 4000-5000 words, whereas the LARGE_DICTIONARY is about 20000+ words.
+ if (bd.getSize() > Suggest.LARGE_DICTIONARY_THRESHOLD / 4) {
+ haveDictionary = true;
+ }
+ bd.close();
+ conf.locale = saveLocale;
+ res.updateConfiguration(conf, res.getDisplayMetrics());
+ return haveDictionary;
+ }
+
private String get5Code(Locale locale) {
String country = locale.getCountry();
return locale.getLanguage()
@@ -137,6 +164,9 @@ public class InputLanguageSelection extends PreferenceActivity {
String country = s.substring(3, 5);
Locale l = new Locale(language, country);
+ // Exclude languages that are not relevant to LatinIME
+ if (arrayContains(BLACKLIST_LANGUAGES, language)) continue;
+
if (finalSize == 0) {
preprocess[finalSize++] =
new Loc(LanguageSwitcher.toTitleCase(l.getDisplayName(l)), l);
@@ -167,4 +197,11 @@ public class InputLanguageSelection extends PreferenceActivity {
}
return uniqueLocales;
}
+
+ private boolean arrayContains(String[] array, String value) {
+ for (int i = 0; i < array.length; i++) {
+ if (array[i].equalsIgnoreCase(value)) return true;
+ }
+ return false;
+ }
}
diff --git a/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
index 4322997e8..1a196448f 100644
--- a/src/com/android/inputmethod/latin/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Google Inc.
+ * Copyright (C) 2008 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
@@ -147,8 +147,7 @@ public class KeyboardSwitcher {
public boolean equals(KeyboardId other) {
return other.mXml == this.mXml
&& other.mKeyboardMode == this.mKeyboardMode
- && other.mEnableShiftLock == this.mEnableShiftLock
- && other.mHasVoice == this.mHasVoice;
+ && other.mEnableShiftLock == this.mEnableShiftLock;
}
public int hashCode() {
diff --git a/src/com/android/inputmethod/latin/LanguageSwitcher.java b/java/src/com/android/inputmethod/latin/LanguageSwitcher.java
index 12045125f..12045125f 100644
--- a/src/com/android/inputmethod/latin/LanguageSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/LanguageSwitcher.java
diff --git a/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 4c81b33b1..d0baed52a 100644
--- a/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
- *
+ * Copyright (C) 2008 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
@@ -39,7 +39,7 @@ import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.preference.PreferenceManager;
-import android.speech.RecognitionManager;
+import android.speech.SpeechRecognizer;
import android.text.AutoText;
import android.text.ClipboardManager;
import android.text.TextUtils;
@@ -50,6 +50,8 @@ import android.view.HapticFeedbackConstants;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewParent;
+import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.CompletionInfo;
@@ -156,13 +158,14 @@ public class LatinIME extends InputMethodService
private UserDictionary mUserDictionary;
private ContactsDictionary mContactsDictionary;
- private ExpandableDictionary mAutoDictionary;
+ private AutoDictionary mAutoDictionary;
private Hints mHints;
Resources mResources;
- private String mLocale;
+ private String mInputLocale;
+ private String mSystemLocale;
private LanguageSwitcher mLanguageSwitcher;
private StringBuilder mComposing = new StringBuilder();
@@ -221,6 +224,10 @@ public class LatinIME extends InputMethodService
private VoiceInput mVoiceInput;
private VoiceResults mVoiceResults = new VoiceResults();
private long mSwipeTriggerTimeMillis;
+ private boolean mConfigurationChanging;
+
+ // Keeps track of most recently inserted text (multi-character key) for reverting
+ private CharSequence mEnteredText;
// For each word, a list of potential replacements, usually from voice.
private Map<String, List<CharSequence>> mWordToSuggestions =
@@ -230,6 +237,7 @@ public class LatinIME extends InputMethodService
List<String> candidates;
Map<String, List<CharSequence>> alternatives;
}
+
private boolean mRefreshKeyboardRequired;
Handler mHandler = new Handler() {
@@ -274,7 +282,7 @@ public class LatinIME extends InputMethodService
mLanguageSwitcher.loadLocales(prefs);
mKeyboardSwitcher = new KeyboardSwitcher(this, this);
mKeyboardSwitcher.setLanguageSwitcher(mLanguageSwitcher);
- boolean enableMultipleLanguages = mLanguageSwitcher.getLocaleCount() > 0;
+ mSystemLocale = conf.locale.toString();
String inputLanguage = mLanguageSwitcher.getInputLanguage();
if (inputLanguage == null) {
inputLanguage = conf.locale.toString();
@@ -303,7 +311,7 @@ public class LatinIME extends InputMethodService
}
private void initSuggest(String locale) {
- mLocale = locale;
+ mInputLocale = locale;
Resources orig = getResources();
Configuration conf = orig.getConfiguration();
@@ -318,14 +326,14 @@ public class LatinIME extends InputMethodService
mSuggest = new Suggest(this, R.raw.main);
updateAutoTextEnabled(saveLocale);
if (mUserDictionary != null) mUserDictionary.close();
- mUserDictionary = new UserDictionary(this, mLocale);
+ mUserDictionary = new UserDictionary(this, mInputLocale);
if (mContactsDictionary == null) {
mContactsDictionary = new ContactsDictionary(this);
}
if (mAutoDictionary != null) {
mAutoDictionary.close();
}
- mAutoDictionary = new AutoDictionary(this, this, mLocale);
+ mAutoDictionary = new AutoDictionary(this, this, mInputLocale);
mSuggest.setUserDictionary(mUserDictionary);
mSuggest.setContactsDictionary(mContactsDictionary);
mSuggest.setAutoDictionary(mAutoDictionary);
@@ -351,10 +359,12 @@ public class LatinIME extends InputMethodService
@Override
public void onConfigurationChanged(Configuration conf) {
// If the system locale changes and is different from the saved
- // locale (mLocale), then reload the input locale list from the
+ // locale (mSystemLocale), then reload the input locale list from the
// latin ime settings (shared prefs) and reset the input locale
// to the first one.
- if (!TextUtils.equals(conf.locale.toString(), mLocale)) {
+ final String systemLocale = conf.locale.toString();
+ if (!TextUtils.equals(systemLocale, mSystemLocale)) {
+ mSystemLocale = systemLocale;
if (mLanguageSwitcher != null) {
mLanguageSwitcher.loadLocales(
PreferenceManager.getDefaultSharedPreferences(this));
@@ -371,7 +381,12 @@ public class LatinIME extends InputMethodService
mOrientation = conf.orientation;
reloadKeyboards();
}
+ mConfigurationChanging = true;
super.onConfigurationChanged(conf);
+ if (mRecognizing) {
+ switchToRecognitionStatusView();
+ }
+ mConfigurationChanging = false;
}
@Override
@@ -388,21 +403,6 @@ public class LatinIME extends InputMethodService
}
@Override
- public void onInitializeInterface() {
- // Create a new view associated with voice input if the old
- // view is stuck in another layout (e.g. if switching from
- // portrait to landscape while speaking)
- // NOTE: This must be done here because for some reason
- // onCreateInputView isn't called after an orientation change while
- // speech rec is in progress.
- if (mVoiceInput != null && mVoiceInput.getView().getParent() != null) {
- mVoiceInput.newView();
- }
-
- super.onInitializeInterface();
- }
-
- @Override
public View onCreateCandidatesView() {
mKeyboardSwitcher.makeKeyboards(true);
mCandidateViewContainer = (CandidateViewContainer) getLayoutInflater().inflate(
@@ -455,6 +455,8 @@ public class LatinIME extends InputMethodService
mCompletions = null;
mCapsLock = false;
mEmailText = false;
+ mEnteredText = null;
+
switch (attribute.inputType & EditorInfo.TYPE_MASK_CLASS) {
case EditorInfo.TYPE_CLASS_NUMBER:
case EditorInfo.TYPE_CLASS_DATETIME:
@@ -534,6 +536,7 @@ public class LatinIME extends InputMethodService
mDeleteCount = 0;
mJustAddedAutoSpace = false;
loadSettings();
+ updateShiftKeyState(attribute);
setCandidatesViewShown(false);
setSuggestions(null, false, false, false);
@@ -553,20 +556,18 @@ public class LatinIME extends InputMethodService
public void onFinishInput() {
super.onFinishInput();
- if (VOICE_INSTALLED && mAfterVoiceInput) {
- mVoiceInput.logInputEnded();
- }
-
- if (VOICE_INSTALLED) {
+ if (VOICE_INSTALLED && !mConfigurationChanging) {
+ if (mAfterVoiceInput) {
+ mVoiceInput.flushAllTextModificationCounters();
+ mVoiceInput.logInputEnded();
+ }
mVoiceInput.flushLogs();
+ mVoiceInput.cancel();
}
-
if (mInputView != null) {
mInputView.closing();
}
- if (VOICE_INSTALLED && mRecognizing) {
- mVoiceInput.cancel();
- }
+ if (mAutoDictionary != null) mAutoDictionary.flushPendingWrites();
}
@Override
@@ -574,8 +575,6 @@ public class LatinIME extends InputMethodService
super.onUpdateExtractedText(token, text);
InputConnection ic = getCurrentInputConnection();
if (!mImmediatelyAfterVoiceInput && mAfterVoiceInput && ic != null) {
- mVoiceInput.logTextModified();
-
if (mHints.showPunctuationHintIfNecessary(ic)) {
mVoiceInput.logPunctuationHintDisplayed();
}
@@ -599,6 +598,11 @@ public class LatinIME extends InputMethodService
+ ", ce=" + candidatesEnd);
}
+ if (mAfterVoiceInput) {
+ mVoiceInput.setCursorPos(newSelEnd);
+ mVoiceInput.setSelectionSpan(newSelEnd - newSelStart);
+ }
+
mSuggestionShouldReplaceCurrentWord = false;
// If the current selection in the text view changes, we should
// clear whatever candidate text we have.
@@ -653,23 +657,21 @@ public class LatinIME extends InputMethodService
@Override
public void hideWindow() {
- if (mAfterVoiceInput) mVoiceInput.logInputEnded();
if (TRACE) Debug.stopMethodTracing();
if (mOptionsDialog != null && mOptionsDialog.isShowing()) {
mOptionsDialog.dismiss();
mOptionsDialog = null;
}
- if (mVoiceWarningDialog != null && mVoiceWarningDialog.isShowing()) {
- mVoiceInput.logKeyboardWarningDialogDismissed();
- mVoiceWarningDialog.dismiss();
- mVoiceWarningDialog = null;
- }
- if (mTutorial != null) {
- mTutorial.close();
- mTutorial = null;
- }
- if (VOICE_INSTALLED & mRecognizing) {
- mVoiceInput.cancel();
+ if (!mConfigurationChanging) {
+ if (mAfterVoiceInput) mVoiceInput.logInputEnded();
+ if (mVoiceWarningDialog != null && mVoiceWarningDialog.isShowing()) {
+ mVoiceInput.logKeyboardWarningDialogDismissed();
+ mVoiceWarningDialog.dismiss();
+ mVoiceWarningDialog = null;
+ }
+ if (VOICE_INSTALLED & mRecognizing) {
+ mVoiceInput.cancel();
+ }
}
super.hideWindow();
TextEntryState.endSession();
@@ -706,7 +708,8 @@ public class LatinIME extends InputMethodService
public void setCandidatesViewShown(boolean shown) {
// TODO: Remove this if we support candidates with hard keyboard
if (onEvaluateInputViewShown()) {
- super.setCandidatesViewShown(shown);
+ // Show the candidates view only if input view is showing
+ super.setCandidatesViewShown(shown && mInputView != null && mInputView.isShown());
}
}
@@ -983,6 +986,8 @@ public class LatinIME extends InputMethodService
if (mKeyboardSwitcher.onKey(primaryCode)) {
changeKeyboardMode();
}
+ // Reset after any single keystroke
+ mEnteredText = null;
}
public void onText(CharSequence text) {
@@ -1001,16 +1006,32 @@ public class LatinIME extends InputMethodService
updateShiftKeyState(getCurrentInputEditorInfo());
mJustRevertedSeparator = null;
mJustAddedAutoSpace = false;
+ mEnteredText = text;
}
private void handleBackspace() {
if (VOICE_INSTALLED && mVoiceInputHighlighted) {
+ mVoiceInput.incrementTextModificationDeleteCount(
+ mVoiceResults.candidates.get(0).toString().length());
revertVoiceInput();
return;
}
boolean deleteChar = false;
InputConnection ic = getCurrentInputConnection();
if (ic == null) return;
+
+ if (mAfterVoiceInput) {
+ // Don't log delete if the user is pressing delete at
+ // the beginning of the text box (hence not deleting anything)
+ if (mVoiceInput.getCursorPos() > 0) {
+ // If anything was selected before the delete was pressed, increment the
+ // delete count by the length of the selection
+ int deleteLen = mVoiceInput.getSelectionSpan() > 0 ?
+ mVoiceInput.getSelectionSpan() : 1;
+ mVoiceInput.incrementTextModificationDeleteCount(deleteLen);
+ }
+ }
+
if (mPredicting) {
final int length = mComposing.length();
if (length > 0) {
@@ -1032,6 +1053,8 @@ public class LatinIME extends InputMethodService
if (TextEntryState.getState() == TextEntryState.STATE_UNDO_COMMIT) {
revertLastWord(deleteChar);
return;
+ } else if (mEnteredText != null && sameAsTextBeforeCursor(ic, mEnteredText)) {
+ ic.deleteSurroundingText(mEnteredText.length(), 0);
} else if (deleteChar) {
sendDownUpKeyEvents(KeyEvent.KEYCODE_DEL);
if (mDeleteCount > DELETE_ACCELERATE_AT) {
@@ -1056,6 +1079,12 @@ public class LatinIME extends InputMethodService
if (VOICE_INSTALLED && mVoiceInputHighlighted) {
commitVoiceInput();
}
+
+ if (mAfterVoiceInput) {
+ // Assume input length is 1. This assumption fails for smiley face insertions.
+ mVoiceInput.incrementTextModificationInsertCount(1);
+ }
+
if (isAlphabet(primaryCode) && isPredictionOn() && !isCursorTouchingWord()) {
if (!mPredicting) {
mPredicting = true;
@@ -1099,6 +1128,12 @@ public class LatinIME extends InputMethodService
if (VOICE_INSTALLED && mVoiceInputHighlighted) {
commitVoiceInput();
}
+
+ if (mAfterVoiceInput){
+ // Assume input length is 1. This assumption fails for smiley face insertions.
+ mVoiceInput.incrementTextModificationInsertPunctuationCount(1);
+ }
+
boolean pickedDefault = false;
// Handle separator
InputConnection ic = getCurrentInputConnection();
@@ -1210,12 +1245,21 @@ public class LatinIME extends InputMethodService
}
private void switchToRecognitionStatusView() {
- mHandler.post(new Runnable() {
- public void run() {
- mRecognizing = true;
- setInputView(mVoiceInput.getView());
- updateInputViewShown();
- }});
+ final boolean configChanged = mConfigurationChanging;
+ mHandler.post(new Runnable() {
+ public void run() {
+ mRecognizing = true;
+ View v = mVoiceInput.getView();
+ ViewParent p = v.getParent();
+ if (p != null && p instanceof ViewGroup) {
+ ((ViewGroup)v.getParent()).removeView(v);
+ }
+ setInputView(v);
+ updateInputViewShown();
+ if (configChanged) {
+ mVoiceInput.onConfigurationChanged();
+ }
+ }});
}
private void startListening(boolean swipe) {
@@ -1343,7 +1387,7 @@ public class LatinIME extends InputMethodService
String bestResult = nBest.get(0).toString();
- mVoiceInput.logVoiceInputDelivered();
+ mVoiceInput.logVoiceInputDelivered(bestResult.length());
mHints.registerVoiceResult(bestResult);
@@ -1404,7 +1448,7 @@ public class LatinIME extends InputMethodService
((LatinKeyboard) mInputView.getKeyboard()).setPreferredLetters(nextLettersFrequencies);
- boolean correctionAvailable = mSuggest.hasMinimalCorrection();
+ boolean correctionAvailable = !mInputTypeNoAutoCorrect && mSuggest.hasMinimalCorrection();
//|| mCorrectionMode == mSuggest.CORRECTION_FULL;
CharSequence typedWord = mWord.getTypedWord();
// If we're in basic correct
@@ -1435,7 +1479,7 @@ public class LatinIME extends InputMethodService
mHandler.removeMessages(MSG_UPDATE_SUGGESTIONS);
updateSuggestions();
}
- if (mBestWord != null) {
+ if (mBestWord != null && mBestWord.length() > 0) {
TextEntryState.acceptedDefault(mWord.getTypedWord(), mBestWord);
mJustAccepted = true;
pickSuggestion(mBestWord);
@@ -1447,6 +1491,12 @@ public class LatinIME extends InputMethodService
public void pickSuggestionManually(int index, CharSequence suggestion) {
if (mAfterVoiceInput && mShowingVoiceSuggestions) mVoiceInput.logNBestChoose(index);
+ if (mAfterVoiceInput && !mShowingVoiceSuggestions) {
+ mVoiceInput.flushAllTextModificationCounters();
+ // send this intent AFTER logging any prior aggregated edits.
+ mVoiceInput.logTextModifiedByChooseSuggestion(suggestion.length());
+ }
+
InputConnection ic = getCurrentInputConnection();
if (ic != null) {
ic.beginBatchEdit();
@@ -1479,7 +1529,9 @@ public class LatinIME extends InputMethodService
mJustAccepted = true;
pickSuggestion(suggestion);
// Add the word to the auto dictionary if it's not a known word
- checkAddToDictionary(suggestion, AutoDictionary.FREQUENCY_FOR_PICKED);
+ if (index == 0) {
+ checkAddToDictionary(suggestion, AutoDictionary.FREQUENCY_FOR_PICKED);
+ }
TextEntryState.acceptedSuggestion(mComposing.toString(), suggestion);
// Follow it with a space
if (mAutoSpace) {
@@ -1525,8 +1577,13 @@ public class LatinIME extends InputMethodService
}
private void checkAddToDictionary(CharSequence suggestion, int frequencyDelta) {
+ // Only auto-add to dictionary if auto-correct is ON. Otherwise we'll be
+ // adding words in situations where the user or application really didn't
+ // want corrections enabled or learned.
+ if (!(mCorrectionMode == Suggest.CORRECTION_FULL)) return;
if (mAutoDictionary.isValidWord(suggestion)
- || !mSuggest.isValidWord(suggestion.toString().toLowerCase())) {
+ || (!mSuggest.isValidWord(suggestion.toString())
+ && !mSuggest.isValidWord(suggestion.toString().toLowerCase()))) {
mAutoDictionary.addWord(suggestion.toString(), frequencyDelta);
}
}
@@ -1547,6 +1604,11 @@ public class LatinIME extends InputMethodService
return false;
}
+ private boolean sameAsTextBeforeCursor(InputConnection ic, CharSequence text) {
+ CharSequence beforeText = ic.getTextBeforeCursor(text.length(), 0);
+ return TextUtils.equals(text, beforeText);
+ }
+
public void revertLastWord(boolean deleteChar) {
final int length = mComposing.length();
if (!mPredicting && length > 0) {
@@ -1678,7 +1740,7 @@ public class LatinIME extends InputMethodService
return ENABLE_VOICE_BUTTON && fieldCanDoVoice(fieldContext)
&& !(attribute != null && attribute.privateImeOptions != null
&& attribute.privateImeOptions.equals(IME_OPTION_NO_MICROPHONE))
- && RecognitionManager.isRecognitionAvailable(this);
+ && SpeechRecognizer.isRecognitionAvailable(this);
}
// receive ringer mode changes to detect silent mode
@@ -1736,7 +1798,7 @@ public class LatinIME extends InputMethodService
return;
}
if (mInputView != null) {
- mInputView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY,
+ mInputView.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP,
HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
}
}
@@ -1785,7 +1847,8 @@ public class LatinIME extends InputMethodService
private void updateAutoTextEnabled(Locale systemLocale) {
if (mSuggest == null) return;
- boolean different = !systemLocale.getLanguage().equalsIgnoreCase(mLocale.substring(0, 2));
+ boolean different =
+ !systemLocale.getLanguage().equalsIgnoreCase(mInputLocale.substring(0, 2));
mSuggest.setAutoTextEnabled(!different && mQuickFixes);
}
@@ -1824,7 +1887,7 @@ public class LatinIME extends InputMethodService
ArrayList<String> voiceInputSupportedLocales =
newArrayList(supportedLocalesString.split("\\s+"));
- mLocaleSupportedForVoiceInput = voiceInputSupportedLocales.contains(mLocale);
+ mLocaleSupportedForVoiceInput = voiceInputSupportedLocales.contains(mInputLocale);
mShowSuggestions = sp.getBoolean(PREF_SHOW_SUGGESTIONS, true);
diff --git a/src/com/android/inputmethod/latin/LatinIMEBackupAgent.java b/java/src/com/android/inputmethod/latin/LatinIMEBackupAgent.java
index b6a800ebd..568b31d04 100644
--- a/src/com/android/inputmethod/latin/LatinIMEBackupAgent.java
+++ b/java/src/com/android/inputmethod/latin/LatinIMEBackupAgent.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2008 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
@@ -16,13 +16,13 @@
package com.android.inputmethod.latin;
-import android.backup.BackupHelperAgent;
-import android.backup.SharedPreferencesBackupHelper;
+import android.app.backup.BackupAgentHelper;
+import android.app.backup.SharedPreferencesBackupHelper;
/**
* Backs up the Latin IME shared preferences.
*/
-public class LatinIMEBackupAgent extends BackupHelperAgent {
+public class LatinIMEBackupAgent extends BackupAgentHelper {
public void onCreate() {
addHelper("shared_pref", new SharedPreferencesBackupHelper(this,
diff --git a/src/com/android/inputmethod/latin/LatinIMESettings.java b/java/src/com/android/inputmethod/latin/LatinIMESettings.java
index 82f5d54b3..21b967420 100644
--- a/src/com/android/inputmethod/latin/LatinIMESettings.java
+++ b/java/src/com/android/inputmethod/latin/LatinIMESettings.java
@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
- *
+ * Copyright (C) 2008 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
@@ -21,7 +21,7 @@ import java.util.Locale;
import android.app.AlertDialog;
import android.app.Dialog;
-import android.backup.BackupManager;
+import android.app.backup.BackupManager;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
@@ -31,7 +31,7 @@ import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceGroup;
import android.preference.Preference.OnPreferenceClickListener;
-import android.speech.RecognitionManager;
+import android.speech.SpeechRecognizer;
import android.text.AutoText;
import android.util.Log;
@@ -88,7 +88,7 @@ public class LatinIMESettings extends PreferenceActivity
.removePreference(mQuickFixes);
}
if (!LatinIME.VOICE_INSTALLED
- || !RecognitionManager.isRecognitionAvailable(this)) {
+ || !SpeechRecognizer.isRecognitionAvailable(this)) {
getPreferenceScreen().removePreference(mVoicePreference);
} else {
updateVoiceModeSummary();
diff --git a/src/com/android/inputmethod/latin/LatinKeyboard.java b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
index 58e1dc767..32cd8a45f 100644
--- a/src/com/android/inputmethod/latin/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008 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
diff --git a/src/com/android/inputmethod/latin/LatinKeyboardView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
index 2686a93c6..74fc475e6 100644
--- a/src/com/android/inputmethod/latin/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008 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
@@ -23,6 +23,7 @@ import android.graphics.Canvas;
import android.graphics.Paint;
import android.inputmethodservice.Keyboard;
import android.inputmethodservice.KeyboardView;
+import android.inputmethodservice.KeyboardView.OnKeyboardActionListener;
import android.inputmethodservice.Keyboard.Key;
import android.os.Handler;
import android.os.Message;
@@ -43,10 +44,27 @@ public class LatinKeyboardView extends KeyboardView {
private Keyboard mPhoneKeyboard;
+ /** Whether the extension of this keyboard is visible */
private boolean mExtensionVisible;
+ /** The view that is shown as an extension of this keyboard view */
private LatinKeyboardView mExtension;
+ /** The popup window that contains the extension of this keyboard */
private PopupWindow mExtensionPopup;
+ /** Whether this view is an extension of another keyboard */
+ private boolean mIsExtensionType;
private boolean mFirstEvent;
+ /** Whether we've started dropping move events because we found a big jump */
+ private boolean mDroppingEvents;
+ /**
+ * Whether multi-touch disambiguation needs to be disabled for any reason. There are 2 reasons
+ * for this to happen - (1) if a real multi-touch event has occured and (2) we've opened an
+ * extension keyboard.
+ */
+ private boolean mDisableDisambiguation;
+ /** The distance threshold at which we start treating the touch session as a multi-touch */
+ private int mJumpThresholdSquare = Integer.MAX_VALUE;
+ /** The y coordinate of the last row */
+ private int mLastRowY;
public LatinKeyboardView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -61,6 +79,17 @@ public class LatinKeyboardView extends KeyboardView {
}
@Override
+ public void setKeyboard(Keyboard k) {
+ super.setKeyboard(k);
+ // One-seventh of the keyboard width seems like a reasonable threshold
+ mJumpThresholdSquare = k.getMinWidth() / 7;
+ mJumpThresholdSquare *= mJumpThresholdSquare;
+ // Assuming there are 4 rows, this is the coordinate of the last row
+ mLastRowY = (k.getHeight() * 3) / 4;
+ setKeyboardLocal(k);
+ }
+
+ @Override
protected boolean onLongPress(Key key) {
if (key.codes[0] == Keyboard.KEYCODE_MODE_CHANGE) {
getOnKeyboardActionListener().onKey(KEYCODE_OPTIONS, null);
@@ -78,6 +107,83 @@ public class LatinKeyboardView extends KeyboardView {
}
}
+ /**
+ * This function checks to see if we need to handle any sudden jumps in the pointer location
+ * that could be due to a multi-touch being treated as a move by the firmware or hardware.
+ * Once a sudden jump is detected, all subsequent move events are discarded
+ * until an UP is received.<P>
+ * When a sudden jump is detected, an UP event is simulated at the last position and when
+ * the sudden moves subside, a DOWN event is simulated for the second key.
+ * @param me the motion event
+ * @return true if the event was consumed, so that it doesn't continue to be handled by
+ * KeyboardView.
+ */
+ private boolean handleSuddenJump(MotionEvent me) {
+ final int action = me.getAction();
+ final int x = (int) me.getX();
+ final int y = (int) me.getY();
+ boolean result = false;
+
+ // Real multi-touch event? Stop looking for sudden jumps
+ if (me.getPointerCount() > 1) {
+ mDisableDisambiguation = true;
+ }
+ if (mDisableDisambiguation) {
+ // If UP, reset the multi-touch flag
+ if (action == MotionEvent.ACTION_UP) mDisableDisambiguation = false;
+ return false;
+ }
+
+ switch (action) {
+ case MotionEvent.ACTION_DOWN:
+ // Reset the "session"
+ mDroppingEvents = false;
+ mDisableDisambiguation = false;
+ break;
+ case MotionEvent.ACTION_MOVE:
+ // Is this a big jump?
+ final int distanceSquare = (mLastX - x) * (mLastX - x) + (mLastY - y) * (mLastY - y);
+ // Check the distance and also if the move is not entirely within the bottom row
+ // If it's only in the bottom row, it might be an intentional slide gesture
+ // for language switching
+ if (distanceSquare > mJumpThresholdSquare
+ && (mLastY < mLastRowY || y < mLastRowY)) {
+ // If we're not yet dropping events, start dropping and send an UP event
+ if (!mDroppingEvents) {
+ mDroppingEvents = true;
+ // Send an up event
+ MotionEvent translated = MotionEvent.obtain(me.getEventTime(), me.getEventTime(),
+ MotionEvent.ACTION_UP,
+ mLastX, mLastY, me.getMetaState());
+ super.onTouchEvent(translated);
+ translated.recycle();
+ }
+ result = true;
+ } else if (mDroppingEvents) {
+ // If moves are small and we're already dropping events, continue dropping
+ result = true;
+ }
+ break;
+ case MotionEvent.ACTION_UP:
+ if (mDroppingEvents) {
+ // Send a down event first, as we dropped a bunch of sudden jumps and assume that
+ // the user is releasing the touch on the second key.
+ MotionEvent translated = MotionEvent.obtain(me.getEventTime(), me.getEventTime(),
+ MotionEvent.ACTION_DOWN,
+ x, y, me.getMetaState());
+ super.onTouchEvent(translated);
+ translated.recycle();
+ mDroppingEvents = false;
+ // Let the up event get processed as well, result = false
+ }
+ break;
+ }
+ // Track the previous coordinate
+ mLastX = x;
+ mLastY = y;
+ return result;
+ }
+
@Override
public boolean onTouchEvent(MotionEvent me) {
LatinKeyboard keyboard = (LatinKeyboard) getKeyboard();
@@ -86,6 +192,12 @@ public class LatinKeyboardView extends KeyboardView {
mLastY = (int) me.getY();
invalidate();
}
+
+ // If an extension keyboard is visible or this is an extension keyboard, don't look
+ // for sudden jumps. Otherwise, if there was a sudden jump, return without processing the
+ // actual motion event.
+ if (!mExtensionVisible && !mIsExtensionType
+ && handleSuddenJump(me)) return true;
// Reset any bounding box controls in the keyboard
if (me.getAction() == MotionEvent.ACTION_DOWN) {
keyboard.keyReleased();
@@ -107,7 +219,9 @@ public class LatinKeyboardView extends KeyboardView {
if (keyboard.getExtension() == 0) {
return super.onTouchEvent(me);
}
- if (me.getY() < 0) {
+ // If the motion event is above the keyboard and it's not an UP event coming
+ // even before the first MOVE event into the extension area
+ if (me.getY() < 0 && (mExtensionVisible || me.getAction() != MotionEvent.ACTION_UP)) {
if (mExtensionVisible) {
int action = me.getAction();
if (mFirstEvent) action = MotionEvent.ACTION_DOWN;
@@ -139,6 +253,8 @@ public class LatinKeyboardView extends KeyboardView {
} else {
mFirstEvent = true;
}
+ // Stop processing multi-touch errors
+ mDisableDisambiguation = true;
}
return true;
}
@@ -157,7 +273,15 @@ public class LatinKeyboardView extends KeyboardView {
}
}
+ private void setExtensionType(boolean isExtensionType) {
+ mIsExtensionType = isExtensionType;
+ }
+
private boolean openExtension() {
+ // If the current keyboard is not visible, don't show the popup
+ if (!isShown()) {
+ return false;
+ }
if (((LatinKeyboard) getKeyboard()).getExtension() == 0) return false;
makePopupWindow();
mExtensionVisible = true;
@@ -172,7 +296,9 @@ public class LatinKeyboardView extends KeyboardView {
LayoutInflater li = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
mExtension = (LatinKeyboardView) li.inflate(R.layout.input_trans, null);
- mExtension.setOnKeyboardActionListener((LatinIME) getContext());
+ mExtension.setExtensionType(true);
+ mExtension.setOnKeyboardActionListener(
+ new ExtensionKeyboardListener(getOnKeyboardActionListener()));
mExtension.setPopupParent(this);
mExtension.setPopupOffset(0, -windowLocation[1]);
Keyboard keyboard;
@@ -181,6 +307,7 @@ public class LatinKeyboardView extends KeyboardView {
mExtensionPopup.setContentView(mExtension);
mExtensionPopup.setWidth(getWidth());
mExtensionPopup.setHeight(keyboard.getHeight());
+ mExtensionPopup.setAnimationStyle(-1);
getLocationInWindow(windowLocation);
// TODO: Fix the "- 30".
mExtension.setPopupOffset(0, -windowLocation[1] - 30);
@@ -201,11 +328,42 @@ public class LatinKeyboardView extends KeyboardView {
}
private void closeExtension() {
- mExtension.setVisibility(INVISIBLE);
mExtension.closing();
+ mExtension.setVisibility(INVISIBLE);
mExtensionVisible = false;
}
+ private static class ExtensionKeyboardListener implements OnKeyboardActionListener {
+ private OnKeyboardActionListener mTarget;
+ ExtensionKeyboardListener(OnKeyboardActionListener target) {
+ mTarget = target;
+ }
+ public void onKey(int primaryCode, int[] keyCodes) {
+ mTarget.onKey(primaryCode, keyCodes);
+ }
+ public void onPress(int primaryCode) {
+ mTarget.onPress(primaryCode);
+ }
+ public void onRelease(int primaryCode) {
+ mTarget.onRelease(primaryCode);
+ }
+ public void onText(CharSequence text) {
+ mTarget.onText(text);
+ }
+ public void swipeDown() {
+ // Don't pass through
+ }
+ public void swipeLeft() {
+ // Don't pass through
+ }
+ public void swipeRight() {
+ // Don't pass through
+ }
+ public void swipeUp() {
+ // Don't pass through
+ }
+ }
+
/**************************** INSTRUMENTATION *******************************/
static final boolean DEBUG_AUTO_PLAY = false;
@@ -224,9 +382,7 @@ public class LatinKeyboardView extends KeyboardView {
private int mLastY;
private Paint mPaint;
- @Override
- public void setKeyboard(Keyboard k) {
- super.setKeyboard(k);
+ private void setKeyboardLocal(Keyboard k) {
if (DEBUG_AUTO_PLAY) {
findKeys();
if (mHandler2 == null) {
diff --git a/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 712b9cf37..a70bea003 100755
--- a/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008 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
@@ -39,7 +39,7 @@ public class Suggest implements Dictionary.WordCallback {
public static final int CORRECTION_BASIC = 1;
public static final int CORRECTION_FULL = 2;
- private static final int LARGE_DICTIONARY_THRESHOLD = 200 * 1000;
+ static final int LARGE_DICTIONARY_THRESHOLD = 200 * 1000;
private BinaryDictionary mMainDict;
@@ -346,11 +346,10 @@ public class Suggest implements Dictionary.WordCallback {
if (word == null || word.length() == 0) {
return false;
}
- return (mCorrectionMode == CORRECTION_FULL && mMainDict.isValidWord(word))
- || (mCorrectionMode > CORRECTION_NONE &&
- ((mUserDictionary != null && mUserDictionary.isValidWord(word)))
- || (mAutoDictionary != null && mAutoDictionary.isValidWord(word))
- || (mContactsDictionary != null && mContactsDictionary.isValidWord(word)));
+ return mMainDict.isValidWord(word)
+ || (mUserDictionary != null && mUserDictionary.isValidWord(word))
+ || (mAutoDictionary != null && mAutoDictionary.isValidWord(word))
+ || (mContactsDictionary != null && mContactsDictionary.isValidWord(word));
}
private void collectGarbage() {
diff --git a/src/com/android/inputmethod/latin/TextEntryState.java b/java/src/com/android/inputmethod/latin/TextEntryState.java
index c5e8ad9a1..d056ceb16 100644
--- a/src/com/android/inputmethod/latin/TextEntryState.java
+++ b/java/src/com/android/inputmethod/latin/TextEntryState.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008 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
diff --git a/src/com/android/inputmethod/latin/Tutorial.java b/java/src/com/android/inputmethod/latin/Tutorial.java
index 03d4858c4..a8123317b 100644
--- a/src/com/android/inputmethod/latin/Tutorial.java
+++ b/java/src/com/android/inputmethod/latin/Tutorial.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008 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
diff --git a/src/com/android/inputmethod/latin/UserDictionary.java b/java/src/com/android/inputmethod/latin/UserDictionary.java
index 4b98eacce..e8ca33af3 100644
--- a/src/com/android/inputmethod/latin/UserDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserDictionary.java
@@ -16,16 +16,11 @@
package com.android.inputmethod.latin;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.ContentObserver;
import android.database.Cursor;
-import android.net.Uri;
import android.provider.UserDictionary.Words;
public class UserDictionary extends ExpandableDictionary {
@@ -40,8 +35,6 @@ public class UserDictionary extends ExpandableDictionary {
private static final int INDEX_FREQUENCY = 2;
private ContentObserver mObserver;
-
- private boolean mRequiresReload;
private String mLocale;
public UserDictionary(Context context, String locale) {
@@ -54,26 +47,27 @@ public class UserDictionary extends ExpandableDictionary {
cres.registerContentObserver(Words.CONTENT_URI, true, mObserver = new ContentObserver(null) {
@Override
public void onChange(boolean self) {
- mRequiresReload = true;
+ setRequiresReload(true);
}
});
loadDictionary();
}
-
+
public synchronized void close() {
if (mObserver != null) {
getContext().getContentResolver().unregisterContentObserver(mObserver);
mObserver = null;
}
+ super.close();
}
-
- private synchronized void loadDictionary() {
+
+ @Override
+ public void loadDictionaryAsync() {
Cursor cursor = getContext().getContentResolver()
.query(Words.CONTENT_URI, PROJECTION, "(locale IS NULL) or (locale=?)",
new String[] { mLocale }, null);
addWords(cursor);
- mRequiresReload = false;
}
/**
@@ -86,7 +80,8 @@ public class UserDictionary extends ExpandableDictionary {
*/
@Override
public synchronized void addWord(String word, int frequency) {
- if (mRequiresReload) loadDictionary();
+ // Force load the dictionary here synchronously
+ if (getRequiresReload()) loadDictionaryAsync();
// Safeguard against adding long words. Can cause stack overflow.
if (word.length() >= getMaxWordLength()) return;
@@ -101,19 +96,17 @@ public class UserDictionary extends ExpandableDictionary {
getContext().getContentResolver().insert(Words.CONTENT_URI, values);
// In case the above does a synchronous callback of the change observer
- mRequiresReload = false;
+ setRequiresReload(false);
}
@Override
public synchronized void getWords(final WordComposer codes, final WordCallback callback,
int[] nextLettersFrequencies) {
- if (mRequiresReload) loadDictionary();
super.getWords(codes, callback, nextLettersFrequencies);
}
@Override
public synchronized boolean isValidWord(CharSequence word) {
- if (mRequiresReload) loadDictionary();
return super.isValidWord(word);
}
diff --git a/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index e97cb24ba..19f714ae7 100644
--- a/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008 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
@@ -84,11 +84,27 @@ public class WordComposer {
*/
public void add(int primaryCode, int[] codes) {
mTypedWord.append((char) primaryCode);
+ correctPrimaryJuxtapos(primaryCode, codes);
mCodes.add(codes);
if (Character.isUpperCase((char) primaryCode)) mCapsCount++;
}
/**
+ * Swaps the first and second values in the codes array if the primary code is not the first
+ * value in the array but the second. This happens when the preferred key is not the key that
+ * the user released the finger on.
+ * @param primaryCode the preferred character
+ * @param codes array of codes based on distance from touch point
+ */
+ private void correctPrimaryJuxtapos(int primaryCode, int[] codes) {
+ if (codes.length < 2) return;
+ if (codes[0] > 0 && codes[1] > 0 && codes[0] != primaryCode && codes[1] == primaryCode) {
+ codes[1] = codes[0];
+ codes[0] = primaryCode;
+ }
+ }
+
+ /**
* Delete the last keystroke as a result of hitting backspace.
*/
public void deleteLast() {
diff --git a/src/com/android/inputmethod/voice/EditingUtil.java b/java/src/com/android/inputmethod/voice/EditingUtil.java
index 6316d8ccf..6316d8ccf 100644
--- a/src/com/android/inputmethod/voice/EditingUtil.java
+++ b/java/src/com/android/inputmethod/voice/EditingUtil.java
diff --git a/src/com/android/inputmethod/voice/FieldContext.java b/java/src/com/android/inputmethod/voice/FieldContext.java
index 5fbacfb6c..5fbacfb6c 100644
--- a/src/com/android/inputmethod/voice/FieldContext.java
+++ b/java/src/com/android/inputmethod/voice/FieldContext.java
diff --git a/src/com/android/inputmethod/voice/LatinIMEWithVoice.java b/java/src/com/android/inputmethod/voice/LatinIMEWithVoice.java
index ccbf5b6bc..ccbf5b6bc 100644
--- a/src/com/android/inputmethod/voice/LatinIMEWithVoice.java
+++ b/java/src/com/android/inputmethod/voice/LatinIMEWithVoice.java
diff --git a/src/com/android/inputmethod/voice/LatinIMEWithVoiceSettings.java b/java/src/com/android/inputmethod/voice/LatinIMEWithVoiceSettings.java
index 13a58e14d..13a58e14d 100644
--- a/src/com/android/inputmethod/voice/LatinIMEWithVoiceSettings.java
+++ b/java/src/com/android/inputmethod/voice/LatinIMEWithVoiceSettings.java
diff --git a/src/com/android/inputmethod/voice/RecognitionView.java b/java/src/com/android/inputmethod/voice/RecognitionView.java
index 5d4a0e0e1..7cec0b04a 100644
--- a/src/com/android/inputmethod/voice/RecognitionView.java
+++ b/java/src/com/android/inputmethod/voice/RecognitionView.java
@@ -16,7 +16,12 @@
package com.android.inputmethod.voice;
-import com.android.inputmethod.latin.R;
+import java.io.ByteArrayOutputStream;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.ShortBuffer;
+import java.util.ArrayList;
+import java.util.List;
import android.content.ContentResolver;
import android.content.Context;
@@ -35,14 +40,10 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.ImageView;
+import android.widget.ProgressBar;
import android.widget.TextView;
-import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.ShortBuffer;
-import java.util.ArrayList;
-import java.util.List;
+import com.android.inputmethod.latin.R;
/**
* The user interface for the "Speak now" and "working" states.
@@ -103,7 +104,6 @@ public class RecognitionView {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
mView = inflater.inflate(R.layout.recognition_status, null);
-
ContentResolver cr = context.getContentResolver();
mMinMicrophoneLevel = SettingsUtil.getSettingsFloat(
cr, SettingsUtil.LATIN_IME_MIN_MICROPHONE_LEVEL, 15.f);
@@ -139,6 +139,18 @@ public class RecognitionView {
return mView;
}
+ public void restoreState() {
+ mUiHandler.post(new Runnable() {
+ public void run() {
+ // Restart the spinner
+ if (mState == State.WORKING) {
+ ((ProgressBar)mProgress).setIndeterminate(false);
+ ((ProgressBar)mProgress).setIndeterminate(true);
+ }
+ }
+ });
+ }
+
public void showInitializing() {
mUiHandler.post(new Runnable() {
public void run() {
@@ -262,12 +274,11 @@ public class RecognitionView {
final int count = (endIndex - startIndex) / numSamplePerWave;
final float deltaX = 1.0f * w / count;
- int yMax = h / 2 - 10;
+ int yMax = h / 2 - 8;
Path path = new Path();
c.translate(0, yMax);
float x = 0;
path.moveTo(x, 0);
- yMax -= 10;
for (int i = 0; i < count; i++) {
final int avabs = getAverageAbs(waveBuffer, startIndex, i , numSamplePerWave);
int sign = ( (i & 01) == 0) ? -1 : 1;
@@ -285,8 +296,8 @@ public class RecognitionView {
mImage.setImageBitmap(b);
mImage.setVisibility(View.VISIBLE);
MarginLayoutParams mProgressParams = (MarginLayoutParams)mProgress.getLayoutParams();
- mProgressParams.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
- -h / 2 - 18, mContext.getResources().getDisplayMetrics());
+ mProgressParams.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX,
+ -h , mContext.getResources().getDisplayMetrics());
// Tweak the padding manually to fill out the whole view horizontally.
// TODO: Do this in the xml layout instead.
diff --git a/src/com/android/inputmethod/voice/SettingsUtil.java b/java/src/com/android/inputmethod/voice/SettingsUtil.java
index abf52047f..abf52047f 100644
--- a/src/com/android/inputmethod/voice/SettingsUtil.java
+++ b/java/src/com/android/inputmethod/voice/SettingsUtil.java
diff --git a/src/com/android/inputmethod/voice/VoiceInput.java b/java/src/com/android/inputmethod/voice/VoiceInput.java
index a2e210536..ac06ab50d 100644
--- a/src/com/android/inputmethod/voice/VoiceInput.java
+++ b/java/src/com/android/inputmethod/voice/VoiceInput.java
@@ -26,7 +26,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.speech.RecognitionListener;
-import android.speech.RecognitionManager;
+import android.speech.SpeechRecognizer;
import android.speech.RecognizerIntent;
import android.util.Log;
import android.view.View;
@@ -94,6 +94,12 @@ public class VoiceInput implements OnClickListener {
public static final int WORKING = 2;
public static final int ERROR = 3;
+ private int mAfterVoiceInputDeleteCount = 0;
+ private int mAfterVoiceInputInsertCount = 0;
+ private int mAfterVoiceInputInsertPunctuationCount = 0;
+ private int mAfterVoiceInputCursorPos = 0;
+ private int mAfterVoiceInputSelectionSpan = 0;
+
private int mState = DEFAULT;
private final static int MSG_CLOSE_ERROR_DIALOG = 1;
@@ -128,7 +134,7 @@ public class VoiceInput implements OnClickListener {
public void onCancelVoice();
}
- private RecognitionManager mRecognitionManager;
+ private SpeechRecognizer mSpeechRecognizer;
private RecognitionListener mRecognitionListener;
private RecognitionView mRecognitionView;
private UiListener mUiListener;
@@ -141,8 +147,8 @@ public class VoiceInput implements OnClickListener {
public VoiceInput(Context context, UiListener uiHandler) {
mLogger = VoiceInputLogger.getLogger(context);
mRecognitionListener = new ImeRecognitionListener();
- mRecognitionManager = RecognitionManager.createRecognitionManager(context);
- mRecognitionManager.setRecognitionListener(mRecognitionListener);
+ mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(context);
+ mSpeechRecognizer.setRecognitionListener(mRecognitionListener);
mUiListener = uiHandler;
mContext = context;
newView();
@@ -161,6 +167,95 @@ public class VoiceInput implements OnClickListener {
mBlacklist.addApp("com.android.setupwizard");
}
+ public void setCursorPos(int pos) {
+ mAfterVoiceInputCursorPos = pos;
+ }
+
+ public int getCursorPos() {
+ return mAfterVoiceInputCursorPos;
+ }
+
+ public void setSelectionSpan(int span) {
+ mAfterVoiceInputSelectionSpan = span;
+ }
+
+ public int getSelectionSpan() {
+ return mAfterVoiceInputSelectionSpan;
+ }
+
+ public void incrementTextModificationDeleteCount(int count){
+ mAfterVoiceInputDeleteCount += count;
+ // Send up intents for other text modification types
+ if (mAfterVoiceInputInsertCount > 0) {
+ logTextModifiedByTypingInsertion(mAfterVoiceInputInsertCount);
+ mAfterVoiceInputInsertCount = 0;
+ }
+ if (mAfterVoiceInputInsertPunctuationCount > 0) {
+ logTextModifiedByTypingInsertionPunctuation(mAfterVoiceInputInsertPunctuationCount);
+ mAfterVoiceInputInsertPunctuationCount = 0;
+ }
+
+ }
+
+ public void incrementTextModificationInsertCount(int count){
+ mAfterVoiceInputInsertCount += count;
+ if (mAfterVoiceInputSelectionSpan > 0) {
+ // If text was highlighted before inserting the char, count this as
+ // a delete.
+ mAfterVoiceInputDeleteCount += mAfterVoiceInputSelectionSpan;
+ }
+ // Send up intents for other text modification types
+ if (mAfterVoiceInputDeleteCount > 0) {
+ logTextModifiedByTypingDeletion(mAfterVoiceInputDeleteCount);
+ mAfterVoiceInputDeleteCount = 0;
+ }
+ if (mAfterVoiceInputInsertPunctuationCount > 0) {
+ logTextModifiedByTypingInsertionPunctuation(mAfterVoiceInputInsertPunctuationCount);
+ mAfterVoiceInputInsertPunctuationCount = 0;
+ }
+ }
+
+ public void incrementTextModificationInsertPunctuationCount(int count){
+ mAfterVoiceInputInsertPunctuationCount += 1;
+ if (mAfterVoiceInputSelectionSpan > 0) {
+ // If text was highlighted before inserting the char, count this as
+ // a delete.
+ mAfterVoiceInputDeleteCount += mAfterVoiceInputSelectionSpan;
+ }
+ // Send up intents for aggregated non-punctuation insertions
+ if (mAfterVoiceInputDeleteCount > 0) {
+ logTextModifiedByTypingDeletion(mAfterVoiceInputDeleteCount);
+ mAfterVoiceInputDeleteCount = 0;
+ }
+ if (mAfterVoiceInputInsertCount > 0) {
+ logTextModifiedByTypingInsertion(mAfterVoiceInputInsertCount);
+ mAfterVoiceInputInsertCount = 0;
+ }
+ }
+
+ public void flushAllTextModificationCounters() {
+ if (mAfterVoiceInputInsertCount > 0) {
+ logTextModifiedByTypingInsertion(mAfterVoiceInputInsertCount);
+ mAfterVoiceInputInsertCount = 0;
+ }
+ if (mAfterVoiceInputDeleteCount > 0) {
+ logTextModifiedByTypingDeletion(mAfterVoiceInputDeleteCount);
+ mAfterVoiceInputDeleteCount = 0;
+ }
+ if (mAfterVoiceInputInsertPunctuationCount > 0) {
+ logTextModifiedByTypingInsertionPunctuation(mAfterVoiceInputInsertPunctuationCount);
+ mAfterVoiceInputInsertPunctuationCount = 0;
+ }
+ }
+
+ /**
+ * The configuration of the IME changed and may have caused the views to be layed out
+ * again. Restore the state of the recognition view.
+ */
+ public void onConfigurationChanged() {
+ mRecognitionView.restoreState();
+ }
+
/**
* @return true if field is blacklisted for voice
*/
@@ -239,7 +334,7 @@ public class VoiceInput implements OnClickListener {
EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS,
null /* rely on endpointer default */);
- mRecognitionManager.startListening(intent);
+ mSpeechRecognizer.startListening(intent);
}
/**
@@ -262,7 +357,7 @@ public class VoiceInput implements OnClickListener {
}
public void destroy() {
- mRecognitionManager.destroy();
+ mSpeechRecognizer.destroy();
}
/**
@@ -294,8 +389,20 @@ public class VoiceInput implements OnClickListener {
}
}
- public void logTextModified() {
- mLogger.textModified();
+ public void logTextModifiedByTypingInsertion(int length) {
+ mLogger.textModifiedByTypingInsertion(length);
+ }
+
+ public void logTextModifiedByTypingInsertionPunctuation(int length) {
+ mLogger.textModifiedByTypingInsertionPunctuation(length);
+ }
+
+ public void logTextModifiedByTypingDeletion(int length) {
+ mLogger.textModifiedByTypingDeletion(length);
+ }
+
+ public void logTextModifiedByChooseSuggestion(int length) {
+ mLogger.textModifiedByChooseSuggestion(length);
}
public void logKeyboardWarningDialogShown() {
@@ -322,8 +429,8 @@ public class VoiceInput implements OnClickListener {
mLogger.punctuationHintDisplayed();
}
- public void logVoiceInputDelivered() {
- mLogger.voiceInputDelivered();
+ public void logVoiceInputDelivered(int length) {
+ mLogger.voiceInputDelivered(length);
}
public void logNBestChoose(int index) {
@@ -377,7 +484,7 @@ public class VoiceInput implements OnClickListener {
// Remove all pending tasks (e.g., timers to cancel voice input)
mHandler.removeMessages(MSG_CLOSE_ERROR_DIALOG);
- mRecognitionManager.cancel();
+ mSpeechRecognizer.cancel();
mUiListener.onCancelVoice();
mRecognitionView.finish();
}
@@ -385,20 +492,20 @@ public class VoiceInput implements OnClickListener {
private int getErrorStringId(int errorType, boolean endpointed) {
switch (errorType) {
// We use CLIENT_ERROR to signify that voice search is not available on the device.
- case RecognitionManager.ERROR_CLIENT:
+ case SpeechRecognizer.ERROR_CLIENT:
return R.string.voice_not_installed;
- case RecognitionManager.ERROR_NETWORK:
+ case SpeechRecognizer.ERROR_NETWORK:
return R.string.voice_network_error;
- case RecognitionManager.ERROR_NETWORK_TIMEOUT:
+ case SpeechRecognizer.ERROR_NETWORK_TIMEOUT:
return endpointed ?
R.string.voice_network_error : R.string.voice_too_much_speech;
- case RecognitionManager.ERROR_AUDIO:
+ case SpeechRecognizer.ERROR_AUDIO:
return R.string.voice_audio_error;
- case RecognitionManager.ERROR_SERVER:
+ case SpeechRecognizer.ERROR_SERVER:
return R.string.voice_server_error;
- case RecognitionManager.ERROR_SPEECH_TIMEOUT:
+ case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:
return R.string.voice_speech_timeout;
- case RecognitionManager.ERROR_NO_MATCH:
+ case SpeechRecognizer.ERROR_NO_MATCH:
return R.string.voice_no_match;
default: return R.string.voice_error;
}
@@ -455,7 +562,7 @@ public class VoiceInput implements OnClickListener {
public void onResults(Bundle resultsBundle) {
List<String> results = resultsBundle
- .getStringArrayList(RecognitionManager.RESULTS_RECOGNITION);
+ .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
mState = DEFAULT;
final Map<String, List<CharSequence>> alternatives =
diff --git a/src/com/android/inputmethod/voice/VoiceInputLogger.java b/java/src/com/android/inputmethod/voice/VoiceInputLogger.java
index 659033340..9d3a92037 100644
--- a/src/com/android/inputmethod/voice/VoiceInputLogger.java
+++ b/java/src/com/android/inputmethod/voice/VoiceInputLogger.java
@@ -147,12 +147,43 @@ public class VoiceInputLogger {
mContext.sendBroadcast(i);
}
- public void voiceInputDelivered() {
- mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.VOICE_INPUT_DELIVERED));
+ public void voiceInputDelivered(int length) {
+ Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.VOICE_INPUT_DELIVERED);
+ i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length);
+ mContext.sendBroadcast(i);
+ }
+
+ public void textModifiedByTypingInsertion(int length) {
+ Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED);
+ i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length);
+ i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_TYPE,
+ LoggingEvents.VoiceIme.TEXT_MODIFIED_TYPE_TYPING_INSERTION);
+ mContext.sendBroadcast(i);
+ }
+
+ public void textModifiedByTypingInsertionPunctuation(int length) {
+ Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED);
+ i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length);
+ i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_TYPE,
+ LoggingEvents.VoiceIme.TEXT_MODIFIED_TYPE_TYPING_INSERTION_PUNCTUATION);
+ mContext.sendBroadcast(i);
+ }
+
+ public void textModifiedByTypingDeletion(int length) {
+ Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED);
+ i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length);
+ i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_TYPE,
+ LoggingEvents.VoiceIme.TEXT_MODIFIED_TYPE_TYPING_DELETION);
+
+ mContext.sendBroadcast(i);
}
- public void textModified() {
- mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED));
+ public void textModifiedByChooseSuggestion(int length) {
+ Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED);
+ i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length);
+ i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_TYPE,
+ LoggingEvents.VoiceIme.TEXT_MODIFIED_TYPE_CHOOSE_SUGGESTION);
+ mContext.sendBroadcast(i);
}
public void nBestChoose(int index) {
diff --git a/src/com/android/inputmethod/voice/WaveformImage.java b/java/src/com/android/inputmethod/voice/WaveformImage.java
index 08d87c8f3..08d87c8f3 100644
--- a/src/com/android/inputmethod/voice/WaveformImage.java
+++ b/java/src/com/android/inputmethod/voice/WaveformImage.java
diff --git a/src/com/android/inputmethod/voice/Whitelist.java b/java/src/com/android/inputmethod/voice/Whitelist.java
index 167b688ca..167b688ca 100644
--- a/src/com/android/inputmethod/voice/Whitelist.java
+++ b/java/src/com/android/inputmethod/voice/Whitelist.java
diff --git a/src/com/google/android/voicesearch/LatinIMEWithVoice.java b/java/src/com/google/android/voicesearch/LatinIMEWithVoice.java
index 8a339d14a..8a339d14a 100644
--- a/src/com/google/android/voicesearch/LatinIMEWithVoice.java
+++ b/java/src/com/google/android/voicesearch/LatinIMEWithVoice.java
diff --git a/src/com/google/android/voicesearch/LatinIMEWithVoiceSettings.java b/java/src/com/google/android/voicesearch/LatinIMEWithVoiceSettings.java
index a53cebfd9..a53cebfd9 100644
--- a/src/com/google/android/voicesearch/LatinIMEWithVoiceSettings.java
+++ b/java/src/com/google/android/voicesearch/LatinIMEWithVoiceSettings.java