diff options
-rw-r--r--[-rwxr-xr-x] | Android.mk | 38 | ||||
-rw-r--r-- | CleanSpec.mk | 52 | ||||
-rwxr-xr-x | java/Android.mk | 22 | ||||
-rwxr-xr-x | java/AndroidManifest.xml (renamed from AndroidManifest.xml) | 6 | ||||
-rw-r--r-- | java/MODULE_LICENSE_APACHE2 | 0 | ||||
-rw-r--r-- | java/NOTICE | 190 | ||||
-rw-r--r-- | java/proguard.flags | 3 | ||||
-rwxr-xr-x | java/res/drawable-en-hdpi/sym_keyboard_delete.png (renamed from res/drawable-en-hdpi/sym_keyboard_delete.png) | bin | 2315 -> 2315 bytes | |||
-rwxr-xr-x | java/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png (renamed from res/drawable-en-hdpi/sym_keyboard_feedback_delete.png) | bin | 1278 -> 1278 bytes | |||
-rw-r--r-- | java/res/drawable-en-mdpi/sym_keyboard_delete.png (renamed from res/drawable-en-mdpi/sym_keyboard_delete.png) | bin | 1366 -> 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) | bin | 524 -> 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) | bin | 1649 -> 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) | bin | 1696 -> 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) | bin | 715 -> 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) | bin | 1001 -> 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) | bin | 1077 -> 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) | bin | 745 -> 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) | bin | 1042 -> 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) | bin | 1105 -> 1105 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/cancel.png (renamed from res/drawable-hdpi/cancel.png) | bin | 1811 -> 1811 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/candidate_feedback_background.9.png (renamed from res/drawable-hdpi/candidate_feedback_background.9.png) | bin | 833 -> 833 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/caution.png (renamed from res/drawable-hdpi/caution.png) | bin | 1641 -> 1641 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/dialog_bubble_step02.9.png (renamed from res/drawable-hdpi/dialog_bubble_step02.9.png) | bin | 1475 -> 1475 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/dialog_bubble_step07.9.png (renamed from res/drawable-hdpi/dialog_bubble_step07.9.png) | bin | 6012 -> 6012 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/dialog_top_dark_bottom_medium.png (renamed from res/drawable-hdpi/dialog_top_dark_bottom_medium.png) | bin | 1976 -> 1976 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/highlight_pressed.png (renamed from res/drawable-hdpi/highlight_pressed.png) | bin | 4110 -> 4110 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ic_dialog_alert_large.png (renamed from res/drawable-hdpi/ic_dialog_alert_large.png) | bin | 4918 -> 4918 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ic_dialog_keyboard.png (renamed from res/drawable-hdpi/ic_dialog_keyboard.png) | bin | 807 -> 807 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ic_dialog_voice_input.png (renamed from res/drawable-hdpi/ic_dialog_voice_input.png) | bin | 1931 -> 1931 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ic_dialog_wave_0_0.png (renamed from res/drawable-hdpi/ic_dialog_wave_0_0.png) | bin | 15673 -> 15673 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ic_dialog_wave_1_3.png (renamed from res/drawable-hdpi/ic_dialog_wave_1_3.png) | bin | 15823 -> 15823 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ic_dialog_wave_2_3.png (renamed from res/drawable-hdpi/ic_dialog_wave_2_3.png) | bin | 16009 -> 16009 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ic_dialog_wave_3_3.png (renamed from res/drawable-hdpi/ic_dialog_wave_3_3.png) | bin | 16022 -> 16022 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ic_dialog_wave_4_3.png (renamed from res/drawable-hdpi/ic_dialog_wave_4_3.png) | bin | 15910 -> 15910 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/ic_mic_dialog.png (renamed from res/drawable-hdpi/ic_mic_dialog.png) | bin | 3634 -> 3634 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/ic_suggest_strip_microphone.png (renamed from res/drawable-hdpi/ic_suggest_strip_microphone.png) | bin | 548 -> 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) | bin | 438 -> 438 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png (renamed from res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png) | bin | 619 -> 619 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png (renamed from res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png) | bin | 619 -> 619 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/keyboard_background.9.png (renamed from res/drawable-hdpi/keyboard_background.9.png) | bin | 200 -> 200 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/keyboard_suggest_strip.9.png (renamed from res/drawable-hdpi/keyboard_suggest_strip.9.png) | bin | 1577 -> 1577 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/keyboard_suggest_strip_divider.png (renamed from res/drawable-hdpi/keyboard_suggest_strip_divider.png) | bin | 2852 -> 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) | bin | 4203 -> 4203 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/mic_slash.png (renamed from res/drawable-hdpi/mic_slash.png) | bin | 5615 -> 5615 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/ok_cancel.png (renamed from res/drawable-hdpi/ok_cancel.png) | bin | 442 -> 442 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/speak_now_level0.png (renamed from res/drawable-hdpi/speak_now_level0.png) | bin | 1512 -> 1512 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/speak_now_level1.png (renamed from res/drawable-hdpi/speak_now_level1.png) | bin | 2215 -> 2215 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/speak_now_level2.png (renamed from res/drawable-hdpi/speak_now_level2.png) | bin | 3130 -> 3130 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/speak_now_level3.png (renamed from res/drawable-hdpi/speak_now_level3.png) | bin | 3647 -> 3647 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/speak_now_level4.png (renamed from res/drawable-hdpi/speak_now_level4.png) | bin | 3626 -> 3626 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/speak_now_level5.png (renamed from res/drawable-hdpi/speak_now_level5.png) | bin | 3670 -> 3670 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/speak_now_level6.png (renamed from res/drawable-hdpi/speak_now_level6.png) | bin | 4006 -> 4006 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/sym_keyboard_123_mic.png (renamed from res/drawable-hdpi/sym_keyboard_123_mic.png) | bin | 2575 -> 2575 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_delete.png (renamed from res/drawable-hdpi/sym_keyboard_delete.png) | bin | 2282 -> 2282 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_done.png (renamed from res/drawable-hdpi/sym_keyboard_done.png) | bin | 1593 -> 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) | bin | 1046 -> 1046 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_feedback_delete.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_delete.png) | bin | 1278 -> 1278 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_feedback_done.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_done.png) | bin | 1068 -> 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) | bin | 322 -> 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) | bin | 328 -> 328 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/sym_keyboard_feedback_mic.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_mic.png) | bin | 681 -> 681 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_numalt.png) | bin | 1336 -> 1336 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_feedback_return.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_return.png) | bin | 838 -> 838 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_feedback_search.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_search.png) | bin | 1209 -> 1209 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_feedback_shift.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_shift.png) | bin | 885 -> 885 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png) | bin | 700 -> 700 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_feedback_space.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_space.png) | bin | 287 -> 287 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/sym_keyboard_feedback_tab.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_tab.png) | bin | 462 -> 462 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/sym_keyboard_feedback_tabprev.png (renamed from res/drawable-hdpi/sym_keyboard_feedback_tabprev.png) | bin | 463 -> 463 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/sym_keyboard_globe.png (renamed from res/drawable-hdpi/sym_keyboard_globe.png) | bin | 2093 -> 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) | bin | 314 -> 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) | bin | 316 -> 316 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/sym_keyboard_mic.png (renamed from res/drawable-hdpi/sym_keyboard_mic.png) | bin | 1440 -> 1440 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_num0.png (renamed from res/drawable-hdpi/sym_keyboard_num0.png) | bin | 1931 -> 1931 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_num1.png (renamed from res/drawable-hdpi/sym_keyboard_num1.png) | bin | 809 -> 809 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_num2.png (renamed from res/drawable-hdpi/sym_keyboard_num2.png) | bin | 3214 -> 3214 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_num3.png (renamed from res/drawable-hdpi/sym_keyboard_num3.png) | bin | 2805 -> 2805 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_num4.png (renamed from res/drawable-hdpi/sym_keyboard_num4.png) | bin | 2647 -> 2647 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_num5.png (renamed from res/drawable-hdpi/sym_keyboard_num5.png) | bin | 2536 -> 2536 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_num6.png (renamed from res/drawable-hdpi/sym_keyboard_num6.png) | bin | 3573 -> 3573 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_num7.png (renamed from res/drawable-hdpi/sym_keyboard_num7.png) | bin | 3684 -> 3684 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_num8.png (renamed from res/drawable-hdpi/sym_keyboard_num8.png) | bin | 2904 -> 2904 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_num9.png (renamed from res/drawable-hdpi/sym_keyboard_num9.png) | bin | 3860 -> 3860 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_numalt.png (renamed from res/drawable-hdpi/sym_keyboard_numalt.png) | bin | 2919 -> 2919 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_numpound.png (renamed from res/drawable-hdpi/sym_keyboard_numpound.png) | bin | 1600 -> 1600 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_numstar.png (renamed from res/drawable-hdpi/sym_keyboard_numstar.png) | bin | 1749 -> 1749 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_return.png (renamed from res/drawable-hdpi/sym_keyboard_return.png) | bin | 1123 -> 1123 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_search.png (renamed from res/drawable-hdpi/sym_keyboard_search.png) | bin | 1623 -> 1623 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_shift.png (renamed from res/drawable-hdpi/sym_keyboard_shift.png) | bin | 1495 -> 1495 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_shift_locked.png (renamed from res/drawable-hdpi/sym_keyboard_shift_locked.png) | bin | 1119 -> 1119 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/sym_keyboard_space.png (renamed from res/drawable-hdpi/sym_keyboard_space.png) | bin | 371 -> 371 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/sym_keyboard_tab.png (renamed from res/drawable-hdpi/sym_keyboard_tab.png) | bin | 1027 -> 1027 bytes | |||
-rw-r--r-- | java/res/drawable-hdpi/sym_keyboard_tabprev.png (renamed from res/drawable-hdpi/sym_keyboard_tabprev.png) | bin | 1033 -> 1033 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/voice_ime_background.9.png (renamed from res/drawable-hdpi/voice_ime_background.9.png) | bin | 2349 -> 2349 bytes | |||
-rwxr-xr-x | java/res/drawable-hdpi/working.png (renamed from res/drawable-hdpi/working.png) | bin | 8636 -> 8636 bytes | |||
-rwxr-xr-x | java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_normal.9.png) | bin | 737 -> 737 bytes | |||
-rwxr-xr-x | java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png) | bin | 941 -> 941 bytes | |||
-rwxr-xr-x | java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png) | bin | 1076 -> 1076 bytes | |||
-rwxr-xr-x | java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png) | bin | 733 -> 733 bytes | |||
-rwxr-xr-x | java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png) | bin | 964 -> 964 bytes | |||
-rwxr-xr-x | java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png (renamed from res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png) | bin | 1055 -> 1055 bytes | |||
-rwxr-xr-x | java/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png (renamed from res/drawable-land-hdpi/keyboard_suggest_strip_divider.png) | bin | 172 -> 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) | bin | 818 -> 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) | bin | 860 -> 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) | bin | 926 -> 926 bytes | |||
-rwxr-xr-x | java/res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png (renamed from res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png) | bin | 740 -> 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) | bin | 836 -> 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) | bin | 886 -> 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) | bin | 166 -> 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) | bin | 1068 -> 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) | bin | 1021 -> 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) | bin | 726 -> 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) | bin | 860 -> 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) | bin | 926 -> 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) | bin | 664 -> 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) | bin | 836 -> 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) | bin | 886 -> 886 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/candidate_feedback_background.9.png (renamed from res/drawable-mdpi/candidate_feedback_background.9.png) | bin | 1182 -> 1182 bytes | |||
-rwxr-xr-x | java/res/drawable-mdpi/dialog_bubble_step02.9.png (renamed from res/drawable-mdpi/dialog_bubble_step02.9.png) | bin | 1036 -> 1036 bytes | |||
-rwxr-xr-x | java/res/drawable-mdpi/dialog_bubble_step07.9.png (renamed from res/drawable-mdpi/dialog_bubble_step07.9.png) | bin | 4646 -> 4646 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/highlight_pressed.png (renamed from res/drawable-mdpi/highlight_pressed.png) | bin | 593 -> 593 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/ic_dialog_keyboard.png (renamed from res/drawable-mdpi/ic_dialog_keyboard.png) | bin | 528 -> 528 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/ic_mic_dialog.png (renamed from res/drawable-mdpi/ic_mic_dialog.png) | bin | 3312 -> 3312 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/ic_suggest_strip_microphone.png (renamed from res/drawable-mdpi/ic_suggest_strip_microphone.png) | bin | 398 -> 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) | bin | 309 -> 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) | bin | 445 -> 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) | bin | 440 -> 440 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/keyboard_background.9.png (renamed from res/drawable-mdpi/keyboard_background.9.png) | bin | 214 -> 214 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/keyboard_suggest_strip.9.png (renamed from res/drawable-mdpi/keyboard_suggest_strip.9.png) | bin | 220 -> 220 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/keyboard_suggest_strip_divider.png (renamed from res/drawable-mdpi/keyboard_suggest_strip_divider.png) | bin | 2846 -> 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) | bin | 11006 -> 11006 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_123_mic.png (renamed from res/drawable-mdpi/sym_keyboard_123_mic.png) | bin | 1540 -> 1540 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_delete.png (renamed from res/drawable-mdpi/sym_keyboard_delete.png) | bin | 829 -> 829 bytes | |||
-rwxr-xr-x | java/res/drawable-mdpi/sym_keyboard_done.png (renamed from res/drawable-mdpi/sym_keyboard_done.png) | bin | 771 -> 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) | bin | 694 -> 694 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_feedback_delete.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_delete.png) | bin | 374 -> 374 bytes | |||
-rwxr-xr-x | java/res/drawable-mdpi/sym_keyboard_feedback_done.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_done.png) | bin | 498 -> 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) | bin | 249 -> 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) | bin | 249 -> 249 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_feedback_mic.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_mic.png) | bin | 483 -> 483 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_feedback_numalt.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_numalt.png) | bin | 735 -> 735 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_feedback_return.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_return.png) | bin | 381 -> 381 bytes | |||
-rwxr-xr-x | java/res/drawable-mdpi/sym_keyboard_feedback_search.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_search.png) | bin | 501 -> 501 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_feedback_shift.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_shift.png) | bin | 437 -> 437 bytes | |||
-rwxr-xr-x | java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png) | bin | 333 -> 333 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_feedback_space.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_space.png) | bin | 223 -> 223 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_feedback_tab.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_tab.png) | bin | 364 -> 364 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_feedback_tabprev.png (renamed from res/drawable-mdpi/sym_keyboard_feedback_tabprev.png) | bin | 365 -> 365 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_globe.png (renamed from res/drawable-mdpi/sym_keyboard_globe.png) | bin | 1290 -> 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) | bin | 261 -> 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) | bin | 257 -> 257 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_mic.png (renamed from res/drawable-mdpi/sym_keyboard_mic.png) | bin | 859 -> 859 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_num0.png (renamed from res/drawable-mdpi/sym_keyboard_num0.png) | bin | 1160 -> 1160 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_num1.png (renamed from res/drawable-mdpi/sym_keyboard_num1.png) | bin | 506 -> 506 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_num2.png (renamed from res/drawable-mdpi/sym_keyboard_num2.png) | bin | 1778 -> 1778 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_num3.png (renamed from res/drawable-mdpi/sym_keyboard_num3.png) | bin | 1676 -> 1676 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_num4.png (renamed from res/drawable-mdpi/sym_keyboard_num4.png) | bin | 1540 -> 1540 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_num5.png (renamed from res/drawable-mdpi/sym_keyboard_num5.png) | bin | 1417 -> 1417 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_num6.png (renamed from res/drawable-mdpi/sym_keyboard_num6.png) | bin | 1952 -> 1952 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_num7.png (renamed from res/drawable-mdpi/sym_keyboard_num7.png) | bin | 2051 -> 2051 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_num8.png (renamed from res/drawable-mdpi/sym_keyboard_num8.png) | bin | 1605 -> 1605 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_num9.png (renamed from res/drawable-mdpi/sym_keyboard_num9.png) | bin | 2173 -> 2173 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_numalt.png (renamed from res/drawable-mdpi/sym_keyboard_numalt.png) | bin | 1673 -> 1673 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_numpound.png (renamed from res/drawable-mdpi/sym_keyboard_numpound.png) | bin | 963 -> 963 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_numstar.png (renamed from res/drawable-mdpi/sym_keyboard_numstar.png) | bin | 954 -> 954 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_return.png (renamed from res/drawable-mdpi/sym_keyboard_return.png) | bin | 866 -> 866 bytes | |||
-rwxr-xr-x | java/res/drawable-mdpi/sym_keyboard_search.png (renamed from res/drawable-mdpi/sym_keyboard_search.png) | bin | 1029 -> 1029 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_shift.png (renamed from res/drawable-mdpi/sym_keyboard_shift.png) | bin | 1017 -> 1017 bytes | |||
-rwxr-xr-x | java/res/drawable-mdpi/sym_keyboard_shift_locked.png (renamed from res/drawable-mdpi/sym_keyboard_shift_locked.png) | bin | 799 -> 799 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_space.png (renamed from res/drawable-mdpi/sym_keyboard_space.png) | bin | 424 -> 424 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_tab.png (renamed from res/drawable-mdpi/sym_keyboard_tab.png) | bin | 645 -> 645 bytes | |||
-rw-r--r-- | java/res/drawable-mdpi/sym_keyboard_tabprev.png (renamed from res/drawable-mdpi/sym_keyboard_tabprev.png) | bin | 612 -> 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) | bin | 1259 -> 1259 bytes | |||
-rw-r--r-- | java/res/drawable/caution.png (renamed from res/drawable/caution.png) | bin | 1100 -> 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) | bin | 1574 -> 1574 bytes | |||
-rw-r--r-- | java/res/drawable/ic_dialog_alert_large.png (renamed from res/drawable/ic_dialog_alert_large.png) | bin | 4089 -> 4089 bytes | |||
-rw-r--r-- | java/res/drawable/ic_dialog_voice_input.png (renamed from res/drawable/ic_dialog_voice_input.png) | bin | 1040 -> 1040 bytes | |||
-rw-r--r-- | java/res/drawable/ic_dialog_wave_0_0.png (renamed from res/drawable/ic_dialog_wave_0_0.png) | bin | 8471 -> 8471 bytes | |||
-rw-r--r-- | java/res/drawable/ic_dialog_wave_1_3.png (renamed from res/drawable/ic_dialog_wave_1_3.png) | bin | 9017 -> 9017 bytes | |||
-rw-r--r-- | java/res/drawable/ic_dialog_wave_2_3.png (renamed from res/drawable/ic_dialog_wave_2_3.png) | bin | 9614 -> 9614 bytes | |||
-rw-r--r-- | java/res/drawable/ic_dialog_wave_3_3.png (renamed from res/drawable/ic_dialog_wave_3_3.png) | bin | 10089 -> 10089 bytes | |||
-rw-r--r-- | java/res/drawable/ic_dialog_wave_4_3.png (renamed from res/drawable/ic_dialog_wave_4_3.png) | bin | 10514 -> 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) | bin | 3098 -> 3098 bytes | |||
-rw-r--r-- | java/res/drawable/ok_cancel.png (renamed from res/drawable/ok_cancel.png) | bin | 8453 -> 8453 bytes | |||
-rw-r--r-- | java/res/drawable/speak_now_level0.png (renamed from res/drawable/speak_now_level0.png) | bin | 3263 -> 3263 bytes | |||
-rw-r--r-- | java/res/drawable/speak_now_level1.png (renamed from res/drawable/speak_now_level1.png) | bin | 3572 -> 3572 bytes | |||
-rw-r--r-- | java/res/drawable/speak_now_level2.png (renamed from res/drawable/speak_now_level2.png) | bin | 3974 -> 3974 bytes | |||
-rw-r--r-- | java/res/drawable/speak_now_level3.png (renamed from res/drawable/speak_now_level3.png) | bin | 4270 -> 4270 bytes | |||
-rw-r--r-- | java/res/drawable/speak_now_level4.png (renamed from res/drawable/speak_now_level4.png) | bin | 4241 -> 4241 bytes | |||
-rw-r--r-- | java/res/drawable/speak_now_level5.png (renamed from res/drawable/speak_now_level5.png) | bin | 4252 -> 4252 bytes | |||
-rw-r--r-- | java/res/drawable/speak_now_level6.png (renamed from res/drawable/speak_now_level6.png) | bin | 2201 -> 2201 bytes | |||
-rw-r--r-- | java/res/drawable/voice_ime_background.9.png (renamed from res/drawable/voice_ime_background.9.png) | bin | 20661 -> 20661 bytes | |||
-rw-r--r-- | java/res/drawable/voice_swipe_hint.png (renamed from res/drawable/voice_swipe_hint.png) | bin | 3111 -> 3111 bytes | |||
-rw-r--r-- | java/res/drawable/working.png (renamed from res/drawable/working.png) | bin | 33111 -> 33111 bytes | |||
-rw-r--r-- | java/res/layout/bubble_text.xml (renamed from res/layout/bubble_text.xml) | 0 | ||||
-rwxr-xr-x | java/res/layout/candidate_preview.xml (renamed from res/layout/candidate_preview.xml) | 0 | ||||
-rwxr-xr-x | java/res/layout/candidates.xml (renamed from res/layout/candidates.xml) | 0 | ||||
-rwxr-xr-x | java/res/layout/input.xml (renamed from res/layout/input.xml) | 0 | ||||
-rwxr-xr-x | java/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-x | java/res/raw/main.dict (renamed from res/raw/main.dict) | bin | 34 -> 34 bytes | |||
-rwxr-xr-x | java/res/raw/type3.ogg (renamed from res/raw/type3.ogg) | bin | 4126 -> 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-x | java/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-x | java/res/xml-iw/kbd_qwerty.xml | 164 | ||||
-rwxr-xr-x | java/res/xml-ru/kbd_qwerty.xml (renamed from res/xml-ru/kbd_qwerty.xml) | 20 | ||||
-rw-r--r-- | java/res/xml-sv/kbd_qwerty.xml | 215 | ||||
-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-x | java/res/xml/kbd_extension.xml (renamed from res/xml/kbd_extension.xml) | 0 | ||||
-rwxr-xr-x | java/res/xml/kbd_phone.xml (renamed from res/xml/kbd_phone.xml) | 0 | ||||
-rwxr-xr-x | java/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-x | java/res/xml/kbd_qwerty.xml (renamed from res/xml/kbd_qwerty.xml) | 17 | ||||
-rwxr-xr-x | java/res/xml/kbd_symbols.xml (renamed from res/xml/kbd_symbols.xml) | 6 | ||||
-rwxr-xr-x | java/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-x | java/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-x | java/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 | ||||
-rw-r--r-- | native/Android.mk (renamed from dictionary/Android.mk) | 12 | ||||
-rw-r--r-- | native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp (renamed from dictionary/jni/com_android_inputmethod_latin_BinaryDictionary.cpp) | 68 | ||||
-rw-r--r-- | native/src/basechars.h (renamed from dictionary/src/basechars.h) | 0 | ||||
-rw-r--r-- | native/src/char_utils.cpp | 899 | ||||
-rw-r--r-- | native/src/char_utils.h | 26 | ||||
-rw-r--r-- | native/src/dictionary.cpp (renamed from dictionary/src/dictionary.cpp) | 15 | ||||
-rw-r--r-- | native/src/dictionary.h (renamed from dictionary/src/dictionary.h) | 0 |
310 files changed, 2939 insertions, 814 deletions
diff --git a/Android.mk b/Android.mk index ee1a82adb..8f1acc55a 100755..100644 --- a/Android.mk +++ b/Android.mk @@ -1,21 +1,17 @@ -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 - -include $(BUILD_PACKAGE) -include $(LOCAL_PATH)/dictionary/Android.mk +# Copyright (C) 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. + +LOCAL_PATH := $(call my-dir) + +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/CleanSpec.mk b/CleanSpec.mk new file mode 100644 index 000000000..7cdf69a6a --- /dev/null +++ b/CleanSpec.mk @@ -0,0 +1,52 @@ +# Copyright (C) 2007 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# If you don't need to do a full clean build but would like to touch +# a file or delete some intermediate files, add a clean step to the end +# of the list. These steps will only be run once, if they haven't been +# run before. +# +# E.g.: +# $(call add-clean-step, touch -c external/sqlite/sqlite3.h) +# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates) +# +# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with +# files that are missing or have been moved. +# +# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory. +# Use $(OUT_DIR) to refer to the "out" directory. +# +# If you need to re-do something that's already mentioned, just copy +# the command and add it to the bottom of the list. E.g., if a change +# that you made last week required touching a file and a change you +# made today requires touching the same file, just copy the old +# touch step and add it to the end of the list. +# +# ************************************************ +# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST +# ************************************************ + +# For example: +#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates) +#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates) +#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f) +#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*) + +$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/LatinIME*) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app/LatinIME.apk) + +# ************************************************ +# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST +# ************************************************ 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 Binary files differindex 569369e79..569369e79 100755 --- a/res/drawable-en-hdpi/sym_keyboard_delete.png +++ b/java/res/drawable-en-hdpi/sym_keyboard_delete.png diff --git a/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png Binary files differindex ca7637552..ca7637552 100755 --- a/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png +++ b/java/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png diff --git a/res/drawable-en-mdpi/sym_keyboard_delete.png b/java/res/drawable-en-mdpi/sym_keyboard_delete.png Binary files differindex f1f7c58cf..f1f7c58cf 100644 --- a/res/drawable-en-mdpi/sym_keyboard_delete.png +++ b/java/res/drawable-en-mdpi/sym_keyboard_delete.png diff --git a/res/drawable-en-mdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-en-mdpi/sym_keyboard_feedback_delete.png Binary files differindex 3c9083972..3c9083972 100644 --- a/res/drawable-en-mdpi/sym_keyboard_feedback_delete.png +++ b/java/res/drawable-en-mdpi/sym_keyboard_feedback_delete.png 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png Binary files differindex 42c7c146d..42c7c146d 100644 --- a/res/drawable-hdpi/btn_keyboard_key_normal.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png Binary files differindex e047eaff1..e047eaff1 100644 --- a/res/drawable-hdpi/btn_keyboard_key_pressed.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-hdpi/cancel.png b/java/res/drawable-hdpi/cancel.png Binary files differindex 6585bde17..6585bde17 100755 --- a/res/drawable-hdpi/cancel.png +++ b/java/res/drawable-hdpi/cancel.png diff --git a/res/drawable-hdpi/candidate_feedback_background.9.png b/java/res/drawable-hdpi/candidate_feedback_background.9.png Binary files differindex 203c4e640..203c4e640 100755 --- a/res/drawable-hdpi/candidate_feedback_background.9.png +++ b/java/res/drawable-hdpi/candidate_feedback_background.9.png diff --git a/res/drawable-hdpi/caution.png b/java/res/drawable-hdpi/caution.png Binary files differindex 5cb6c54b9..5cb6c54b9 100755 --- a/res/drawable-hdpi/caution.png +++ b/java/res/drawable-hdpi/caution.png diff --git a/res/drawable-hdpi/dialog_bubble_step02.9.png b/java/res/drawable-hdpi/dialog_bubble_step02.9.png Binary files differindex b338364c5..b338364c5 100755 --- a/res/drawable-hdpi/dialog_bubble_step02.9.png +++ b/java/res/drawable-hdpi/dialog_bubble_step02.9.png diff --git a/res/drawable-hdpi/dialog_bubble_step07.9.png b/java/res/drawable-hdpi/dialog_bubble_step07.9.png Binary files differindex 94b915432..94b915432 100755 --- a/res/drawable-hdpi/dialog_bubble_step07.9.png +++ b/java/res/drawable-hdpi/dialog_bubble_step07.9.png diff --git a/res/drawable-hdpi/dialog_top_dark_bottom_medium.png b/java/res/drawable-hdpi/dialog_top_dark_bottom_medium.png Binary files differindex 7c79a4f90..7c79a4f90 100755 --- a/res/drawable-hdpi/dialog_top_dark_bottom_medium.png +++ b/java/res/drawable-hdpi/dialog_top_dark_bottom_medium.png diff --git a/res/drawable-hdpi/highlight_pressed.png b/java/res/drawable-hdpi/highlight_pressed.png Binary files differindex ae04901a0..ae04901a0 100644 --- a/res/drawable-hdpi/highlight_pressed.png +++ b/java/res/drawable-hdpi/highlight_pressed.png diff --git a/res/drawable-hdpi/ic_dialog_alert_large.png b/java/res/drawable-hdpi/ic_dialog_alert_large.png Binary files differindex 7e2646d65..7e2646d65 100755 --- a/res/drawable-hdpi/ic_dialog_alert_large.png +++ b/java/res/drawable-hdpi/ic_dialog_alert_large.png diff --git a/res/drawable-hdpi/ic_dialog_keyboard.png b/java/res/drawable-hdpi/ic_dialog_keyboard.png Binary files differindex c7729566c..c7729566c 100755 --- a/res/drawable-hdpi/ic_dialog_keyboard.png +++ b/java/res/drawable-hdpi/ic_dialog_keyboard.png diff --git a/res/drawable-hdpi/ic_dialog_voice_input.png b/java/res/drawable-hdpi/ic_dialog_voice_input.png Binary files differindex 11a3cfe77..11a3cfe77 100755 --- a/res/drawable-hdpi/ic_dialog_voice_input.png +++ b/java/res/drawable-hdpi/ic_dialog_voice_input.png diff --git a/res/drawable-hdpi/ic_dialog_wave_0_0.png b/java/res/drawable-hdpi/ic_dialog_wave_0_0.png Binary files differindex 33023c3f7..33023c3f7 100755 --- a/res/drawable-hdpi/ic_dialog_wave_0_0.png +++ b/java/res/drawable-hdpi/ic_dialog_wave_0_0.png diff --git a/res/drawable-hdpi/ic_dialog_wave_1_3.png b/java/res/drawable-hdpi/ic_dialog_wave_1_3.png Binary files differindex 662686c0f..662686c0f 100755 --- a/res/drawable-hdpi/ic_dialog_wave_1_3.png +++ b/java/res/drawable-hdpi/ic_dialog_wave_1_3.png diff --git a/res/drawable-hdpi/ic_dialog_wave_2_3.png b/java/res/drawable-hdpi/ic_dialog_wave_2_3.png Binary files differindex e23ada57e..e23ada57e 100755 --- a/res/drawable-hdpi/ic_dialog_wave_2_3.png +++ b/java/res/drawable-hdpi/ic_dialog_wave_2_3.png diff --git a/res/drawable-hdpi/ic_dialog_wave_3_3.png b/java/res/drawable-hdpi/ic_dialog_wave_3_3.png Binary files differindex 5fe5492ad..5fe5492ad 100755 --- a/res/drawable-hdpi/ic_dialog_wave_3_3.png +++ b/java/res/drawable-hdpi/ic_dialog_wave_3_3.png diff --git a/res/drawable-hdpi/ic_dialog_wave_4_3.png b/java/res/drawable-hdpi/ic_dialog_wave_4_3.png Binary files differindex 81b803fd0..81b803fd0 100755 --- a/res/drawable-hdpi/ic_dialog_wave_4_3.png +++ b/java/res/drawable-hdpi/ic_dialog_wave_4_3.png diff --git a/res/drawable-hdpi/ic_mic_dialog.png b/java/res/drawable-hdpi/ic_mic_dialog.png Binary files differindex 349dc4b37..349dc4b37 100644 --- a/res/drawable-hdpi/ic_mic_dialog.png +++ b/java/res/drawable-hdpi/ic_mic_dialog.png diff --git a/res/drawable-hdpi/ic_suggest_strip_microphone.png b/java/res/drawable-hdpi/ic_suggest_strip_microphone.png Binary files differindex c00b4aaa6..c00b4aaa6 100644 --- a/res/drawable-hdpi/ic_suggest_strip_microphone.png +++ b/java/res/drawable-hdpi/ic_suggest_strip_microphone.png diff --git a/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png Binary files differindex 256dc3d61..256dc3d61 100644 --- a/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png +++ b/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-hdpi/keyboard_background.9.png b/java/res/drawable-hdpi/keyboard_background.9.png Binary files differindex edffac5b8..edffac5b8 100755 --- a/res/drawable-hdpi/keyboard_background.9.png +++ b/java/res/drawable-hdpi/keyboard_background.9.png diff --git a/res/drawable-hdpi/keyboard_suggest_strip.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip.9.png Binary files differindex 0cbb3ed86..0cbb3ed86 100755 --- a/res/drawable-hdpi/keyboard_suggest_strip.9.png +++ b/java/res/drawable-hdpi/keyboard_suggest_strip.9.png diff --git a/res/drawable-hdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png Binary files differindex a5980388a..a5980388a 100644 --- a/res/drawable-hdpi/keyboard_suggest_strip_divider.png +++ b/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png diff --git a/res/drawable-hdpi/list_selector_background_pressed.9.png b/java/res/drawable-hdpi/list_selector_background_pressed.9.png Binary files differindex ba79cf7f8..ba79cf7f8 100644 --- a/res/drawable-hdpi/list_selector_background_pressed.9.png +++ b/java/res/drawable-hdpi/list_selector_background_pressed.9.png diff --git a/res/drawable-hdpi/mic_slash.png b/java/res/drawable-hdpi/mic_slash.png Binary files differindex a7b734c71..a7b734c71 100644 --- a/res/drawable-hdpi/mic_slash.png +++ b/java/res/drawable-hdpi/mic_slash.png diff --git a/res/drawable-hdpi/ok_cancel.png b/java/res/drawable-hdpi/ok_cancel.png Binary files differindex 6a99528ef..6a99528ef 100755 --- a/res/drawable-hdpi/ok_cancel.png +++ b/java/res/drawable-hdpi/ok_cancel.png diff --git a/res/drawable-hdpi/speak_now_level0.png b/java/res/drawable-hdpi/speak_now_level0.png Binary files differindex a681da606..a681da606 100755 --- a/res/drawable-hdpi/speak_now_level0.png +++ b/java/res/drawable-hdpi/speak_now_level0.png diff --git a/res/drawable-hdpi/speak_now_level1.png b/java/res/drawable-hdpi/speak_now_level1.png Binary files differindex 0dbec69a7..0dbec69a7 100755 --- a/res/drawable-hdpi/speak_now_level1.png +++ b/java/res/drawable-hdpi/speak_now_level1.png diff --git a/res/drawable-hdpi/speak_now_level2.png b/java/res/drawable-hdpi/speak_now_level2.png Binary files differindex 45cbff2b7..45cbff2b7 100755 --- a/res/drawable-hdpi/speak_now_level2.png +++ b/java/res/drawable-hdpi/speak_now_level2.png diff --git a/res/drawable-hdpi/speak_now_level3.png b/java/res/drawable-hdpi/speak_now_level3.png Binary files differindex abda8f683..abda8f683 100755 --- a/res/drawable-hdpi/speak_now_level3.png +++ b/java/res/drawable-hdpi/speak_now_level3.png diff --git a/res/drawable-hdpi/speak_now_level4.png b/java/res/drawable-hdpi/speak_now_level4.png Binary files differindex 18356351a..18356351a 100755 --- a/res/drawable-hdpi/speak_now_level4.png +++ b/java/res/drawable-hdpi/speak_now_level4.png diff --git a/res/drawable-hdpi/speak_now_level5.png b/java/res/drawable-hdpi/speak_now_level5.png Binary files differindex 7d4fd5f20..7d4fd5f20 100755 --- a/res/drawable-hdpi/speak_now_level5.png +++ b/java/res/drawable-hdpi/speak_now_level5.png diff --git a/res/drawable-hdpi/speak_now_level6.png b/java/res/drawable-hdpi/speak_now_level6.png Binary files differindex e06990faa..e06990faa 100755 --- a/res/drawable-hdpi/speak_now_level6.png +++ b/java/res/drawable-hdpi/speak_now_level6.png diff --git a/res/drawable-hdpi/sym_keyboard_123_mic.png b/java/res/drawable-hdpi/sym_keyboard_123_mic.png Binary files differindex 62669803d..62669803d 100644 --- a/res/drawable-hdpi/sym_keyboard_123_mic.png +++ b/java/res/drawable-hdpi/sym_keyboard_123_mic.png diff --git a/res/drawable-hdpi/sym_keyboard_delete.png b/java/res/drawable-hdpi/sym_keyboard_delete.png Binary files differindex 59d78bec0..59d78bec0 100755 --- a/res/drawable-hdpi/sym_keyboard_delete.png +++ b/java/res/drawable-hdpi/sym_keyboard_delete.png diff --git a/res/drawable-hdpi/sym_keyboard_done.png b/java/res/drawable-hdpi/sym_keyboard_done.png Binary files differindex 471c5021b..471c5021b 100755 --- a/res/drawable-hdpi/sym_keyboard_done.png +++ b/java/res/drawable-hdpi/sym_keyboard_done.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png b/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png Binary files differindex f57e581d5..f57e581d5 100644 --- a/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png Binary files differindex ca7637552..ca7637552 100755 --- a/res/drawable-hdpi/sym_keyboard_feedback_delete.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_done.png b/java/res/drawable-hdpi/sym_keyboard_feedback_done.png Binary files differindex 7015e266a..7015e266a 100755 --- a/res/drawable-hdpi/sym_keyboard_feedback_done.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_done.png 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-hdpi/sym_keyboard_feedback_mic.png b/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png Binary files differindex cb86a5598..cb86a5598 100644 --- a/res/drawable-hdpi/sym_keyboard_feedback_mic.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_numalt.png b/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png Binary files differindex 728c6f7d4..728c6f7d4 100755 --- a/res/drawable-hdpi/sym_keyboard_feedback_numalt.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_return.png b/java/res/drawable-hdpi/sym_keyboard_feedback_return.png Binary files differindex ae57299e4..ae57299e4 100755 --- a/res/drawable-hdpi/sym_keyboard_feedback_return.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_return.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_search.png b/java/res/drawable-hdpi/sym_keyboard_feedback_search.png Binary files differindex d931b39e2..d931b39e2 100755 --- a/res/drawable-hdpi/sym_keyboard_feedback_search.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_search.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_shift.png b/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png Binary files differindex 4db31c849..4db31c849 100755 --- a/res/drawable-hdpi/sym_keyboard_feedback_shift.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png b/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png Binary files differindex 3fd5659fd..3fd5659fd 100755 --- a/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_space.png b/java/res/drawable-hdpi/sym_keyboard_feedback_space.png Binary files differindex 98266ee52..98266ee52 100755 --- a/res/drawable-hdpi/sym_keyboard_feedback_space.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_space.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png Binary files differindex 7754752f3..7754752f3 100644 --- a/res/drawable-hdpi/sym_keyboard_feedback_tab.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png diff --git a/res/drawable-hdpi/sym_keyboard_feedback_tabprev.png b/java/res/drawable-hdpi/sym_keyboard_feedback_tabprev.png Binary files differindex 36f6b5364..36f6b5364 100644 --- a/res/drawable-hdpi/sym_keyboard_feedback_tabprev.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_tabprev.png diff --git a/res/drawable-hdpi/sym_keyboard_globe.png b/java/res/drawable-hdpi/sym_keyboard_globe.png Binary files differindex fa747642d..fa747642d 100644 --- a/res/drawable-hdpi/sym_keyboard_globe.png +++ b/java/res/drawable-hdpi/sym_keyboard_globe.png diff --git a/res/drawable-hdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png Binary files differindex 65ccfda87..65ccfda87 100644 --- a/res/drawable-hdpi/sym_keyboard_language_arrows_left.png +++ b/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png diff --git a/res/drawable-hdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png Binary files differindex 0d01bc224..0d01bc224 100644 --- a/res/drawable-hdpi/sym_keyboard_language_arrows_right.png +++ b/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png diff --git a/res/drawable-hdpi/sym_keyboard_mic.png b/java/res/drawable-hdpi/sym_keyboard_mic.png Binary files differindex 0a0a68a96..0a0a68a96 100644 --- a/res/drawable-hdpi/sym_keyboard_mic.png +++ b/java/res/drawable-hdpi/sym_keyboard_mic.png diff --git a/res/drawable-hdpi/sym_keyboard_num0.png b/java/res/drawable-hdpi/sym_keyboard_num0.png Binary files differindex 10ac70b9d..10ac70b9d 100755 --- a/res/drawable-hdpi/sym_keyboard_num0.png +++ b/java/res/drawable-hdpi/sym_keyboard_num0.png diff --git a/res/drawable-hdpi/sym_keyboard_num1.png b/java/res/drawable-hdpi/sym_keyboard_num1.png Binary files differindex 0fc03efa5..0fc03efa5 100755 --- a/res/drawable-hdpi/sym_keyboard_num1.png +++ b/java/res/drawable-hdpi/sym_keyboard_num1.png diff --git a/res/drawable-hdpi/sym_keyboard_num2.png b/java/res/drawable-hdpi/sym_keyboard_num2.png Binary files differindex 283560b35..283560b35 100755 --- a/res/drawable-hdpi/sym_keyboard_num2.png +++ b/java/res/drawable-hdpi/sym_keyboard_num2.png diff --git a/res/drawable-hdpi/sym_keyboard_num3.png b/java/res/drawable-hdpi/sym_keyboard_num3.png Binary files differindex 9a3b3294b..9a3b3294b 100755 --- a/res/drawable-hdpi/sym_keyboard_num3.png +++ b/java/res/drawable-hdpi/sym_keyboard_num3.png diff --git a/res/drawable-hdpi/sym_keyboard_num4.png b/java/res/drawable-hdpi/sym_keyboard_num4.png Binary files differindex f13ff1ae9..f13ff1ae9 100755 --- a/res/drawable-hdpi/sym_keyboard_num4.png +++ b/java/res/drawable-hdpi/sym_keyboard_num4.png diff --git a/res/drawable-hdpi/sym_keyboard_num5.png b/java/res/drawable-hdpi/sym_keyboard_num5.png Binary files differindex c251329fa..c251329fa 100755 --- a/res/drawable-hdpi/sym_keyboard_num5.png +++ b/java/res/drawable-hdpi/sym_keyboard_num5.png diff --git a/res/drawable-hdpi/sym_keyboard_num6.png b/java/res/drawable-hdpi/sym_keyboard_num6.png Binary files differindex 4acba4c91..4acba4c91 100755 --- a/res/drawable-hdpi/sym_keyboard_num6.png +++ b/java/res/drawable-hdpi/sym_keyboard_num6.png diff --git a/res/drawable-hdpi/sym_keyboard_num7.png b/java/res/drawable-hdpi/sym_keyboard_num7.png Binary files differindex 14931c18c..14931c18c 100755 --- a/res/drawable-hdpi/sym_keyboard_num7.png +++ b/java/res/drawable-hdpi/sym_keyboard_num7.png diff --git a/res/drawable-hdpi/sym_keyboard_num8.png b/java/res/drawable-hdpi/sym_keyboard_num8.png Binary files differindex d4973fdc9..d4973fdc9 100755 --- a/res/drawable-hdpi/sym_keyboard_num8.png +++ b/java/res/drawable-hdpi/sym_keyboard_num8.png diff --git a/res/drawable-hdpi/sym_keyboard_num9.png b/java/res/drawable-hdpi/sym_keyboard_num9.png Binary files differindex 49cec66f4..49cec66f4 100755 --- a/res/drawable-hdpi/sym_keyboard_num9.png +++ b/java/res/drawable-hdpi/sym_keyboard_num9.png diff --git a/res/drawable-hdpi/sym_keyboard_numalt.png b/java/res/drawable-hdpi/sym_keyboard_numalt.png Binary files differindex 3cc5311cd..3cc5311cd 100755 --- a/res/drawable-hdpi/sym_keyboard_numalt.png +++ b/java/res/drawable-hdpi/sym_keyboard_numalt.png diff --git a/res/drawable-hdpi/sym_keyboard_numpound.png b/java/res/drawable-hdpi/sym_keyboard_numpound.png Binary files differindex d09133929..d09133929 100755 --- a/res/drawable-hdpi/sym_keyboard_numpound.png +++ b/java/res/drawable-hdpi/sym_keyboard_numpound.png diff --git a/res/drawable-hdpi/sym_keyboard_numstar.png b/java/res/drawable-hdpi/sym_keyboard_numstar.png Binary files differindex e838e169f..e838e169f 100755 --- a/res/drawable-hdpi/sym_keyboard_numstar.png +++ b/java/res/drawable-hdpi/sym_keyboard_numstar.png diff --git a/res/drawable-hdpi/sym_keyboard_return.png b/java/res/drawable-hdpi/sym_keyboard_return.png Binary files differindex 58505c5e0..58505c5e0 100755 --- a/res/drawable-hdpi/sym_keyboard_return.png +++ b/java/res/drawable-hdpi/sym_keyboard_return.png diff --git a/res/drawable-hdpi/sym_keyboard_search.png b/java/res/drawable-hdpi/sym_keyboard_search.png Binary files differindex e72cde3bb..e72cde3bb 100755 --- a/res/drawable-hdpi/sym_keyboard_search.png +++ b/java/res/drawable-hdpi/sym_keyboard_search.png diff --git a/res/drawable-hdpi/sym_keyboard_shift.png b/java/res/drawable-hdpi/sym_keyboard_shift.png Binary files differindex 814908178..814908178 100755 --- a/res/drawable-hdpi/sym_keyboard_shift.png +++ b/java/res/drawable-hdpi/sym_keyboard_shift.png diff --git a/res/drawable-hdpi/sym_keyboard_shift_locked.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked.png Binary files differindex 31ca27718..31ca27718 100755 --- a/res/drawable-hdpi/sym_keyboard_shift_locked.png +++ b/java/res/drawable-hdpi/sym_keyboard_shift_locked.png diff --git a/res/drawable-hdpi/sym_keyboard_space.png b/java/res/drawable-hdpi/sym_keyboard_space.png Binary files differindex 3e98b3014..3e98b3014 100755 --- a/res/drawable-hdpi/sym_keyboard_space.png +++ b/java/res/drawable-hdpi/sym_keyboard_space.png diff --git a/res/drawable-hdpi/sym_keyboard_tab.png b/java/res/drawable-hdpi/sym_keyboard_tab.png Binary files differindex 1d4d92bd1..1d4d92bd1 100644 --- a/res/drawable-hdpi/sym_keyboard_tab.png +++ b/java/res/drawable-hdpi/sym_keyboard_tab.png diff --git a/res/drawable-hdpi/sym_keyboard_tabprev.png b/java/res/drawable-hdpi/sym_keyboard_tabprev.png Binary files differindex 51bff1bcd..51bff1bcd 100644 --- a/res/drawable-hdpi/sym_keyboard_tabprev.png +++ b/java/res/drawable-hdpi/sym_keyboard_tabprev.png diff --git a/res/drawable-hdpi/voice_ime_background.9.png b/java/res/drawable-hdpi/voice_ime_background.9.png Binary files differindex 73fb0901e..73fb0901e 100755 --- a/res/drawable-hdpi/voice_ime_background.9.png +++ b/java/res/drawable-hdpi/voice_ime_background.9.png diff --git a/res/drawable-hdpi/working.png b/java/res/drawable-hdpi/working.png Binary files differindex 8b51ed116..8b51ed116 100755 --- a/res/drawable-hdpi/working.png +++ b/java/res/drawable-hdpi/working.png 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png Binary files differindex 1a03c52e6..1a03c52e6 100755 --- a/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png +++ b/java/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-land-mdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-land-mdpi/keyboard_suggest_strip_divider.png Binary files differindex e54c5b099..e54c5b099 100644 --- a/res/drawable-land-mdpi/keyboard_suggest_strip_divider.png +++ b/java/res/drawable-land-mdpi/keyboard_suggest_strip_divider.png 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-mdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png Binary files differindex 7ba18dd25..7ba18dd25 100644 --- a/res/drawable-mdpi/btn_keyboard_key_normal.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-mdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png Binary files differindex 39b9314a1..39b9314a1 100644 --- a/res/drawable-mdpi/btn_keyboard_key_pressed.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-mdpi/candidate_feedback_background.9.png b/java/res/drawable-mdpi/candidate_feedback_background.9.png Binary files differindex 2a80f096d..2a80f096d 100644 --- a/res/drawable-mdpi/candidate_feedback_background.9.png +++ b/java/res/drawable-mdpi/candidate_feedback_background.9.png diff --git a/res/drawable-mdpi/dialog_bubble_step02.9.png b/java/res/drawable-mdpi/dialog_bubble_step02.9.png Binary files differindex d77f85fe2..d77f85fe2 100755 --- a/res/drawable-mdpi/dialog_bubble_step02.9.png +++ b/java/res/drawable-mdpi/dialog_bubble_step02.9.png diff --git a/res/drawable-mdpi/dialog_bubble_step07.9.png b/java/res/drawable-mdpi/dialog_bubble_step07.9.png Binary files differindex 80f4a0eaa..80f4a0eaa 100755 --- a/res/drawable-mdpi/dialog_bubble_step07.9.png +++ b/java/res/drawable-mdpi/dialog_bubble_step07.9.png diff --git a/res/drawable-mdpi/highlight_pressed.png b/java/res/drawable-mdpi/highlight_pressed.png Binary files differindex d27f1061a..d27f1061a 100644 --- a/res/drawable-mdpi/highlight_pressed.png +++ b/java/res/drawable-mdpi/highlight_pressed.png diff --git a/res/drawable-mdpi/ic_dialog_keyboard.png b/java/res/drawable-mdpi/ic_dialog_keyboard.png Binary files differindex 9a5aada8b..9a5aada8b 100644 --- a/res/drawable-mdpi/ic_dialog_keyboard.png +++ b/java/res/drawable-mdpi/ic_dialog_keyboard.png diff --git a/res/drawable-mdpi/ic_mic_dialog.png b/java/res/drawable-mdpi/ic_mic_dialog.png Binary files differindex 77613ca05..77613ca05 100644 --- a/res/drawable-mdpi/ic_mic_dialog.png +++ b/java/res/drawable-mdpi/ic_mic_dialog.png diff --git a/res/drawable-mdpi/ic_suggest_strip_microphone.png b/java/res/drawable-mdpi/ic_suggest_strip_microphone.png Binary files differindex 18f314a61..18f314a61 100644 --- a/res/drawable-mdpi/ic_suggest_strip_microphone.png +++ b/java/res/drawable-mdpi/ic_suggest_strip_microphone.png diff --git a/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png Binary files differindex ff629b674..ff629b674 100644 --- a/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png +++ b/java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-mdpi/keyboard_background.9.png b/java/res/drawable-mdpi/keyboard_background.9.png Binary files differindex 2bd4b628d..2bd4b628d 100644 --- a/res/drawable-mdpi/keyboard_background.9.png +++ b/java/res/drawable-mdpi/keyboard_background.9.png diff --git a/res/drawable-mdpi/keyboard_suggest_strip.9.png b/java/res/drawable-mdpi/keyboard_suggest_strip.9.png Binary files differindex 71bf5e8f4..71bf5e8f4 100644 --- a/res/drawable-mdpi/keyboard_suggest_strip.9.png +++ b/java/res/drawable-mdpi/keyboard_suggest_strip.9.png diff --git a/res/drawable-mdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-mdpi/keyboard_suggest_strip_divider.png Binary files differindex c9413d7c1..c9413d7c1 100644 --- a/res/drawable-mdpi/keyboard_suggest_strip_divider.png +++ b/java/res/drawable-mdpi/keyboard_suggest_strip_divider.png diff --git a/res/drawable-mdpi/list_selector_background_pressed.9.png b/java/res/drawable-mdpi/list_selector_background_pressed.9.png Binary files differindex 02b4e9a53..02b4e9a53 100644 --- a/res/drawable-mdpi/list_selector_background_pressed.9.png +++ b/java/res/drawable-mdpi/list_selector_background_pressed.9.png diff --git a/res/drawable-mdpi/sym_keyboard_123_mic.png b/java/res/drawable-mdpi/sym_keyboard_123_mic.png Binary files differindex 35afe0821..35afe0821 100644 --- a/res/drawable-mdpi/sym_keyboard_123_mic.png +++ b/java/res/drawable-mdpi/sym_keyboard_123_mic.png diff --git a/res/drawable-mdpi/sym_keyboard_delete.png b/java/res/drawable-mdpi/sym_keyboard_delete.png Binary files differindex 43a033ead..43a033ead 100644 --- a/res/drawable-mdpi/sym_keyboard_delete.png +++ b/java/res/drawable-mdpi/sym_keyboard_delete.png diff --git a/res/drawable-mdpi/sym_keyboard_done.png b/java/res/drawable-mdpi/sym_keyboard_done.png Binary files differindex c0d6d1394..c0d6d1394 100755 --- a/res/drawable-mdpi/sym_keyboard_done.png +++ b/java/res/drawable-mdpi/sym_keyboard_done.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png b/java/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png Binary files differindex bc11cf31a..bc11cf31a 100644 --- a/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-mdpi/sym_keyboard_feedback_delete.png Binary files differindex 1edb10b4e..1edb10b4e 100644 --- a/res/drawable-mdpi/sym_keyboard_feedback_delete.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_delete.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_done.png b/java/res/drawable-mdpi/sym_keyboard_feedback_done.png Binary files differindex 0d7ebd4e5..0d7ebd4e5 100755 --- a/res/drawable-mdpi/sym_keyboard_feedback_done.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_done.png 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/res/drawable-mdpi/sym_keyboard_feedback_mic.png b/java/res/drawable-mdpi/sym_keyboard_feedback_mic.png Binary files differindex 247d5b3a9..247d5b3a9 100644 --- a/res/drawable-mdpi/sym_keyboard_feedback_mic.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_mic.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_numalt.png b/java/res/drawable-mdpi/sym_keyboard_feedback_numalt.png Binary files differindex aac737615..aac737615 100644 --- a/res/drawable-mdpi/sym_keyboard_feedback_numalt.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_numalt.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_return.png b/java/res/drawable-mdpi/sym_keyboard_feedback_return.png Binary files differindex 03d9c9b2d..03d9c9b2d 100644 --- a/res/drawable-mdpi/sym_keyboard_feedback_return.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_return.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_search.png b/java/res/drawable-mdpi/sym_keyboard_feedback_search.png Binary files differindex f4af341eb..f4af341eb 100755 --- a/res/drawable-mdpi/sym_keyboard_feedback_search.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_search.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_shift.png b/java/res/drawable-mdpi/sym_keyboard_feedback_shift.png Binary files differindex 97f4661f8..97f4661f8 100644 --- a/res/drawable-mdpi/sym_keyboard_feedback_shift.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_shift.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png b/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png Binary files differindex 7194b30b0..7194b30b0 100755 --- a/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_space.png b/java/res/drawable-mdpi/sym_keyboard_feedback_space.png Binary files differindex 739db6879..739db6879 100644 --- a/res/drawable-mdpi/sym_keyboard_feedback_space.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_space.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png Binary files differindex 593fa6703..593fa6703 100644 --- a/res/drawable-mdpi/sym_keyboard_feedback_tab.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png diff --git a/res/drawable-mdpi/sym_keyboard_feedback_tabprev.png b/java/res/drawable-mdpi/sym_keyboard_feedback_tabprev.png Binary files differindex d4b3e7db3..d4b3e7db3 100644 --- a/res/drawable-mdpi/sym_keyboard_feedback_tabprev.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_tabprev.png diff --git a/res/drawable-mdpi/sym_keyboard_globe.png b/java/res/drawable-mdpi/sym_keyboard_globe.png Binary files differindex f30c1b640..f30c1b640 100644 --- a/res/drawable-mdpi/sym_keyboard_globe.png +++ b/java/res/drawable-mdpi/sym_keyboard_globe.png diff --git a/res/drawable-mdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-mdpi/sym_keyboard_language_arrows_left.png Binary files differindex 91eda5f2d..91eda5f2d 100644 --- a/res/drawable-mdpi/sym_keyboard_language_arrows_left.png +++ b/java/res/drawable-mdpi/sym_keyboard_language_arrows_left.png diff --git a/res/drawable-mdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-mdpi/sym_keyboard_language_arrows_right.png Binary files differindex 62a5beba4..62a5beba4 100644 --- a/res/drawable-mdpi/sym_keyboard_language_arrows_right.png +++ b/java/res/drawable-mdpi/sym_keyboard_language_arrows_right.png diff --git a/res/drawable-mdpi/sym_keyboard_mic.png b/java/res/drawable-mdpi/sym_keyboard_mic.png Binary files differindex a75809549..a75809549 100644 --- a/res/drawable-mdpi/sym_keyboard_mic.png +++ b/java/res/drawable-mdpi/sym_keyboard_mic.png diff --git a/res/drawable-mdpi/sym_keyboard_num0.png b/java/res/drawable-mdpi/sym_keyboard_num0.png Binary files differindex e7007c871..e7007c871 100644 --- a/res/drawable-mdpi/sym_keyboard_num0.png +++ b/java/res/drawable-mdpi/sym_keyboard_num0.png diff --git a/res/drawable-mdpi/sym_keyboard_num1.png b/java/res/drawable-mdpi/sym_keyboard_num1.png Binary files differindex aaac11b0c..aaac11b0c 100644 --- a/res/drawable-mdpi/sym_keyboard_num1.png +++ b/java/res/drawable-mdpi/sym_keyboard_num1.png diff --git a/res/drawable-mdpi/sym_keyboard_num2.png b/java/res/drawable-mdpi/sym_keyboard_num2.png Binary files differindex 4372eb8f0..4372eb8f0 100644 --- a/res/drawable-mdpi/sym_keyboard_num2.png +++ b/java/res/drawable-mdpi/sym_keyboard_num2.png diff --git a/res/drawable-mdpi/sym_keyboard_num3.png b/java/res/drawable-mdpi/sym_keyboard_num3.png Binary files differindex 6f54c850f..6f54c850f 100644 --- a/res/drawable-mdpi/sym_keyboard_num3.png +++ b/java/res/drawable-mdpi/sym_keyboard_num3.png diff --git a/res/drawable-mdpi/sym_keyboard_num4.png b/java/res/drawable-mdpi/sym_keyboard_num4.png Binary files differindex 3e50bb957..3e50bb957 100644 --- a/res/drawable-mdpi/sym_keyboard_num4.png +++ b/java/res/drawable-mdpi/sym_keyboard_num4.png diff --git a/res/drawable-mdpi/sym_keyboard_num5.png b/java/res/drawable-mdpi/sym_keyboard_num5.png Binary files differindex c39ef4404..c39ef4404 100644 --- a/res/drawable-mdpi/sym_keyboard_num5.png +++ b/java/res/drawable-mdpi/sym_keyboard_num5.png diff --git a/res/drawable-mdpi/sym_keyboard_num6.png b/java/res/drawable-mdpi/sym_keyboard_num6.png Binary files differindex ea88ceb94..ea88ceb94 100644 --- a/res/drawable-mdpi/sym_keyboard_num6.png +++ b/java/res/drawable-mdpi/sym_keyboard_num6.png diff --git a/res/drawable-mdpi/sym_keyboard_num7.png b/java/res/drawable-mdpi/sym_keyboard_num7.png Binary files differindex ce800ba42..ce800ba42 100644 --- a/res/drawable-mdpi/sym_keyboard_num7.png +++ b/java/res/drawable-mdpi/sym_keyboard_num7.png diff --git a/res/drawable-mdpi/sym_keyboard_num8.png b/java/res/drawable-mdpi/sym_keyboard_num8.png Binary files differindex 1a8ff94bf..1a8ff94bf 100644 --- a/res/drawable-mdpi/sym_keyboard_num8.png +++ b/java/res/drawable-mdpi/sym_keyboard_num8.png diff --git a/res/drawable-mdpi/sym_keyboard_num9.png b/java/res/drawable-mdpi/sym_keyboard_num9.png Binary files differindex 8b344c0a6..8b344c0a6 100644 --- a/res/drawable-mdpi/sym_keyboard_num9.png +++ b/java/res/drawable-mdpi/sym_keyboard_num9.png diff --git a/res/drawable-mdpi/sym_keyboard_numalt.png b/java/res/drawable-mdpi/sym_keyboard_numalt.png Binary files differindex 32a2cf3ca..32a2cf3ca 100644 --- a/res/drawable-mdpi/sym_keyboard_numalt.png +++ b/java/res/drawable-mdpi/sym_keyboard_numalt.png diff --git a/res/drawable-mdpi/sym_keyboard_numpound.png b/java/res/drawable-mdpi/sym_keyboard_numpound.png Binary files differindex b2419d9ab..b2419d9ab 100644 --- a/res/drawable-mdpi/sym_keyboard_numpound.png +++ b/java/res/drawable-mdpi/sym_keyboard_numpound.png diff --git a/res/drawable-mdpi/sym_keyboard_numstar.png b/java/res/drawable-mdpi/sym_keyboard_numstar.png Binary files differindex cb66f968f..cb66f968f 100644 --- a/res/drawable-mdpi/sym_keyboard_numstar.png +++ b/java/res/drawable-mdpi/sym_keyboard_numstar.png diff --git a/res/drawable-mdpi/sym_keyboard_return.png b/java/res/drawable-mdpi/sym_keyboard_return.png Binary files differindex 17f257439..17f257439 100644 --- a/res/drawable-mdpi/sym_keyboard_return.png +++ b/java/res/drawable-mdpi/sym_keyboard_return.png diff --git a/res/drawable-mdpi/sym_keyboard_search.png b/java/res/drawable-mdpi/sym_keyboard_search.png Binary files differindex 127755d6b..127755d6b 100755 --- a/res/drawable-mdpi/sym_keyboard_search.png +++ b/java/res/drawable-mdpi/sym_keyboard_search.png diff --git a/res/drawable-mdpi/sym_keyboard_shift.png b/java/res/drawable-mdpi/sym_keyboard_shift.png Binary files differindex 0566e5a88..0566e5a88 100644 --- a/res/drawable-mdpi/sym_keyboard_shift.png +++ b/java/res/drawable-mdpi/sym_keyboard_shift.png diff --git a/res/drawable-mdpi/sym_keyboard_shift_locked.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked.png Binary files differindex ccaf05d3b..ccaf05d3b 100755 --- a/res/drawable-mdpi/sym_keyboard_shift_locked.png +++ b/java/res/drawable-mdpi/sym_keyboard_shift_locked.png diff --git a/res/drawable-mdpi/sym_keyboard_space.png b/java/res/drawable-mdpi/sym_keyboard_space.png Binary files differindex 4e6273b89..4e6273b89 100644 --- a/res/drawable-mdpi/sym_keyboard_space.png +++ b/java/res/drawable-mdpi/sym_keyboard_space.png diff --git a/res/drawable-mdpi/sym_keyboard_tab.png b/java/res/drawable-mdpi/sym_keyboard_tab.png Binary files differindex cd9daff08..cd9daff08 100644 --- a/res/drawable-mdpi/sym_keyboard_tab.png +++ b/java/res/drawable-mdpi/sym_keyboard_tab.png diff --git a/res/drawable-mdpi/sym_keyboard_tabprev.png b/java/res/drawable-mdpi/sym_keyboard_tabprev.png Binary files differindex eb90872fc..eb90872fc 100644 --- a/res/drawable-mdpi/sym_keyboard_tabprev.png +++ b/java/res/drawable-mdpi/sym_keyboard_tabprev.png 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 Binary files differindex 081532bec..081532bec 100644 --- a/res/drawable/cancel.png +++ b/java/res/drawable/cancel.png diff --git a/res/drawable/caution.png b/java/res/drawable/caution.png Binary files differindex eaef53425..eaef53425 100644 --- a/res/drawable/caution.png +++ b/java/res/drawable/caution.png diff --git a/res/drawable/dialog_top_dark_bottom_medium.9.png b/java/res/drawable/dialog_top_dark_bottom_medium.9.png Binary files differindex cf7ecaf1e..cf7ecaf1e 100644 --- a/res/drawable/dialog_top_dark_bottom_medium.9.png +++ b/java/res/drawable/dialog_top_dark_bottom_medium.9.png diff --git a/res/drawable/ic_dialog_alert_large.png b/java/res/drawable/ic_dialog_alert_large.png Binary files differindex 2d4a164a7..2d4a164a7 100644 --- a/res/drawable/ic_dialog_alert_large.png +++ b/java/res/drawable/ic_dialog_alert_large.png diff --git a/res/drawable/ic_dialog_voice_input.png b/java/res/drawable/ic_dialog_voice_input.png Binary files differindex d28914132..d28914132 100644 --- a/res/drawable/ic_dialog_voice_input.png +++ b/java/res/drawable/ic_dialog_voice_input.png diff --git a/res/drawable/ic_dialog_wave_0_0.png b/java/res/drawable/ic_dialog_wave_0_0.png Binary files differindex 9c3c28f37..9c3c28f37 100644 --- a/res/drawable/ic_dialog_wave_0_0.png +++ b/java/res/drawable/ic_dialog_wave_0_0.png diff --git a/res/drawable/ic_dialog_wave_1_3.png b/java/res/drawable/ic_dialog_wave_1_3.png Binary files differindex d33bd0d9b..d33bd0d9b 100644 --- a/res/drawable/ic_dialog_wave_1_3.png +++ b/java/res/drawable/ic_dialog_wave_1_3.png diff --git a/res/drawable/ic_dialog_wave_2_3.png b/java/res/drawable/ic_dialog_wave_2_3.png Binary files differindex 5094a6e6c..5094a6e6c 100644 --- a/res/drawable/ic_dialog_wave_2_3.png +++ b/java/res/drawable/ic_dialog_wave_2_3.png diff --git a/res/drawable/ic_dialog_wave_3_3.png b/java/res/drawable/ic_dialog_wave_3_3.png Binary files differindex 69917564d..69917564d 100644 --- a/res/drawable/ic_dialog_wave_3_3.png +++ b/java/res/drawable/ic_dialog_wave_3_3.png diff --git a/res/drawable/ic_dialog_wave_4_3.png b/java/res/drawable/ic_dialog_wave_4_3.png Binary files differindex af5a84c31..af5a84c31 100644 --- a/res/drawable/ic_dialog_wave_4_3.png +++ b/java/res/drawable/ic_dialog_wave_4_3.png 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 Binary files differindex 0b0fb5803..0b0fb5803 100644 --- a/res/drawable/mic_slash.png +++ b/java/res/drawable/mic_slash.png diff --git a/res/drawable/ok_cancel.png b/java/res/drawable/ok_cancel.png Binary files differindex 0601d3231..0601d3231 100644 --- a/res/drawable/ok_cancel.png +++ b/java/res/drawable/ok_cancel.png diff --git a/res/drawable/speak_now_level0.png b/java/res/drawable/speak_now_level0.png Binary files differindex abc845466..abc845466 100644 --- a/res/drawable/speak_now_level0.png +++ b/java/res/drawable/speak_now_level0.png diff --git a/res/drawable/speak_now_level1.png b/java/res/drawable/speak_now_level1.png Binary files differindex 67cb235bf..67cb235bf 100644 --- a/res/drawable/speak_now_level1.png +++ b/java/res/drawable/speak_now_level1.png diff --git a/res/drawable/speak_now_level2.png b/java/res/drawable/speak_now_level2.png Binary files differindex 1e07f26c6..1e07f26c6 100644 --- a/res/drawable/speak_now_level2.png +++ b/java/res/drawable/speak_now_level2.png diff --git a/res/drawable/speak_now_level3.png b/java/res/drawable/speak_now_level3.png Binary files differindex 31991daee..31991daee 100644 --- a/res/drawable/speak_now_level3.png +++ b/java/res/drawable/speak_now_level3.png diff --git a/res/drawable/speak_now_level4.png b/java/res/drawable/speak_now_level4.png Binary files differindex 7363ca892..7363ca892 100644 --- a/res/drawable/speak_now_level4.png +++ b/java/res/drawable/speak_now_level4.png diff --git a/res/drawable/speak_now_level5.png b/java/res/drawable/speak_now_level5.png Binary files differindex 9034908f4..9034908f4 100644 --- a/res/drawable/speak_now_level5.png +++ b/java/res/drawable/speak_now_level5.png diff --git a/res/drawable/speak_now_level6.png b/java/res/drawable/speak_now_level6.png Binary files differindex 3eaa9bdad..3eaa9bdad 100644 --- a/res/drawable/speak_now_level6.png +++ b/java/res/drawable/speak_now_level6.png diff --git a/res/drawable/voice_ime_background.9.png b/java/res/drawable/voice_ime_background.9.png Binary files differindex 67802492a..67802492a 100644 --- a/res/drawable/voice_ime_background.9.png +++ b/java/res/drawable/voice_ime_background.9.png diff --git a/res/drawable/voice_swipe_hint.png b/java/res/drawable/voice_swipe_hint.png Binary files differindex bb8873251..bb8873251 100644 --- a/res/drawable/voice_swipe_hint.png +++ b/java/res/drawable/voice_swipe_hint.png diff --git a/res/drawable/working.png b/java/res/drawable/working.png Binary files differindex 6246a6d1c..6246a6d1c 100644 --- a/res/drawable/working.png +++ b/java/res/drawable/working.png 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 Binary files differindex a456cf3d3..a456cf3d3 100755 --- a/res/raw/main.dict +++ b/java/res/raw/main.dict diff --git a/res/raw/type3.ogg b/java/res/raw/type3.ogg Binary files differindex 20e670807..20e670807 100755 --- a/res/raw/type3.ogg +++ b/java/res/raw/type3.ogg 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>"Αγγίξτε & κρατήστε πατημένο αυτό το πλήκτρο για να αλλάξετε τις ρυθμίσεις πληκτρολογίου, όπως η αυτόματη συμπλήρωση"</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 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="&" /> <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=""" /> - <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=""" /> + <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 diff --git a/dictionary/Android.mk b/native/Android.mk index 9ba9f75ec..952448435 100644 --- a/dictionary/Android.mk +++ b/native/Android.mk @@ -5,22 +5,14 @@ LOCAL_C_INCLUDES += $(LOCAL_PATH)/src LOCAL_SRC_FILES := \ jni/com_android_inputmethod_latin_BinaryDictionary.cpp \ - src/dictionary.cpp + src/dictionary.cpp \ + src/char_utils.cpp LOCAL_C_INCLUDES += \ - external/icu4c/common \ $(JNI_H_INCLUDE) -LOCAL_LDLIBS := -lm - LOCAL_PRELINK_MODULE := false -LOCAL_SHARED_LIBRARIES := \ - libandroid_runtime \ - libcutils \ - libutils \ - libicuuc - LOCAL_MODULE := libjni_latinime LOCAL_MODULE_TAGS := user diff --git a/dictionary/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp index d068f3faf..bb45cb538 100644 --- a/dictionary/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp @@ -15,31 +15,18 @@ ** limitations under the License. */ -#define LOG_TAG "BinaryDictionary" -#include "utils/Log.h" - #include <stdio.h> #include <assert.h> #include <unistd.h> #include <fcntl.h> -#include <nativehelper/jni.h> -#include "utils/AssetManager.h" -#include "utils/Asset.h" - +#include <jni.h> #include "dictionary.h" // ---------------------------------------------------------------------------- using namespace latinime; -using namespace android; - -static jfieldID sDescriptorField; -static jfieldID sAssetManagerNativeField; -static jmethodID sAddWordMethod; -static jfieldID sDictLength; - // // helper function to throw an exception // @@ -54,35 +41,15 @@ static void throwException(JNIEnv *env, const char* ex, const char* fmt, int dat } static jint latinime_BinaryDictionary_open - (JNIEnv *env, jobject object, jobject assetManager, jstring resourceString, + (JNIEnv *env, jobject object, jobject dictDirectBuffer, jint typedLetterMultiplier, jint fullWordMultiplier) { - // Get the native file descriptor from the FileDescriptor object - AssetManager *am = (AssetManager*) env->GetIntField(assetManager, sAssetManagerNativeField); - if (!am) { - LOGE("DICT: Couldn't get AssetManager native peer\n"); - return 0; - } - const char *resourcePath = env->GetStringUTFChars(resourceString, NULL); - - Asset *dictAsset = am->openNonAsset(resourcePath, Asset::ACCESS_BUFFER); - if (dictAsset == NULL) { - LOGE("DICT: Couldn't get asset %s\n", resourcePath); - env->ReleaseStringUTFChars(resourceString, resourcePath); - return 0; - } - - void *dict = (void*) dictAsset->getBuffer(false); + void *dict = env->GetDirectBufferAddress(dictDirectBuffer); if (dict == NULL) { - LOGE("DICT: Dictionary buffer is null\n"); - env->ReleaseStringUTFChars(resourceString, resourcePath); + fprintf(stderr, "DICT: Dictionary buffer is null\n"); return 0; } Dictionary *dictionary = new Dictionary(dict, typedLetterMultiplier, fullWordMultiplier); - dictionary->setAsset(dictAsset); - env->SetIntField(object, sDictLength, (jint) dictAsset->getLength()); - - env->ReleaseStringUTFChars(resourceString, resourcePath); return (jint) dictionary; } @@ -131,14 +98,13 @@ static void latinime_BinaryDictionary_close (JNIEnv *env, jobject object, jint dict) { Dictionary *dictionary = (Dictionary*) dict; - ((Asset*) dictionary->getAsset())->close(); delete (Dictionary*) dict; } // ---------------------------------------------------------------------------- static JNINativeMethod gMethods[] = { - {"openNative", "(Landroid/content/res/AssetManager;Ljava/lang/String;II)I", + {"openNative", "(Ljava/nio/ByteBuffer;II)I", (void*)latinime_BinaryDictionary_open}, {"closeNative", "(I)V", (void*)latinime_BinaryDictionary_close}, {"getSuggestionsNative", "(I[II[C[IIIII[II)I", (void*)latinime_BinaryDictionary_getSuggestions}, @@ -167,30 +133,6 @@ static int registerNativeMethods(JNIEnv* env, const char* className, static int registerNatives(JNIEnv *env) { const char* const kClassPathName = "com/android/inputmethod/latin/BinaryDictionary"; - jclass clazz; - - clazz = env->FindClass("java/io/FileDescriptor"); - if (clazz == NULL) { - LOGE("Can't find %s", "java/io/FileDescriptor"); - return -1; - } - sDescriptorField = env->GetFieldID(clazz, "descriptor", "I"); - - clazz = env->FindClass("android/content/res/AssetManager"); - if (clazz == NULL) { - LOGE("Can't find %s", "java/io/FileDescriptor"); - return -1; - } - sAssetManagerNativeField = env->GetFieldID(clazz, "mObject", "I"); - - // Get the field pointer for the dictionary length - clazz = env->FindClass(kClassPathName); - if (clazz == NULL) { - LOGE("Can't find %s", kClassPathName); - return -1; - } - sDictLength = env->GetFieldID(clazz, "mDictLength", "I"); - return registerNativeMethods(env, kClassPathName, gMethods, sizeof(gMethods) / sizeof(gMethods[0])); } diff --git a/dictionary/src/basechars.h b/native/src/basechars.h index 5a4406606..5a4406606 100644 --- a/dictionary/src/basechars.h +++ b/native/src/basechars.h diff --git a/native/src/char_utils.cpp b/native/src/char_utils.cpp new file mode 100644 index 000000000..a31a0632c --- /dev/null +++ b/native/src/char_utils.cpp @@ -0,0 +1,899 @@ +/* + * Copyright (C) 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. + */ + +#include <stdlib.h> + +namespace latinime { + +struct LatinCapitalSmallPair { + unsigned short capital; + unsigned short small; +}; + +// Generated from http://unicode.org/Public/UNIDATA/UnicodeData.txt +// +// 1. Run the following code. Bascially taken from +// Dictionary::toLowerCase(unsigned short c) in dictionary.cpp. +// Then, get the list of chars where cc != ccc. +// +// unsigned short c, cc, ccc, ccc2; +// for (c = 0; c < 0xFFFF ; c++) { +// if (c < sizeof(BASE_CHARS) / sizeof(BASE_CHARS[0])) { +// cc = BASE_CHARS[c]; +// } else { +// cc = c; +// } +// +// // tolower +// int isBase = 0; +// if (cc >='A' && cc <= 'Z') { +// ccc = (cc | 0x20); +// ccc2 = ccc; +// isBase = 1; +// } else if (cc > 0x7F) { +// ccc = u_tolower(cc); +// ccc2 = latin_tolower(cc); +// } else { +// ccc = cc; +// ccc2 = ccc; +// } +// if (!isBase && cc != ccc) { +// wprintf(L" 0x%04X => 0x%04X => 0x%04X %lc => %lc => %lc \n", +// c, cc, ccc, c, cc, ccc); +// //assert(ccc == ccc2); +// } +// } +// +// Initially, started with an empty latin_tolower() as below. +// +// unsigned short latin_tolower(unsigned short c) { +// return c; +// } +// +// +// 2. Process the list obtained by 1 by the following perl script and apply +// 'sort -u' as well. Get the SORTED_CHAR_MAP[]. +// Note that '$1' in the perl script is 'cc' in the above C code. +// +// while(<>) { +// / 0x\w* => 0x(\w*) =/; +// open(HDL, "grep -iw ^" . $1 . " UnicodeData.txt | "); +// $line = <HDL>; +// chomp $line; +// @cols = split(/;/, $line); +// print " { 0x$1, 0x$cols[13] }, // $cols[1]\n"; +// } +// +// +// 3. Update the latin_tolower() function above with SORTED_CHAR_MAP. Enable +// the assert(ccc == ccc2) above and confirm the function exits successfully. +// +static const struct LatinCapitalSmallPair SORTED_CHAR_MAP[] = { + { 0x00C4, 0x00E4 }, // LATIN CAPITAL LETTER A WITH DIAERESIS + { 0x00C5, 0x00E5 }, // LATIN CAPITAL LETTER A WITH RING ABOVE + { 0x00C6, 0x00E6 }, // LATIN CAPITAL LETTER AE + { 0x00D0, 0x00F0 }, // LATIN CAPITAL LETTER ETH + { 0x00D5, 0x00F5 }, // LATIN CAPITAL LETTER O WITH TILDE + { 0x00D6, 0x00F6 }, // LATIN CAPITAL LETTER O WITH DIAERESIS + { 0x00D8, 0x00F8 }, // LATIN CAPITAL LETTER O WITH STROKE + { 0x00DC, 0x00FC }, // LATIN CAPITAL LETTER U WITH DIAERESIS + { 0x00DE, 0x00FE }, // LATIN CAPITAL LETTER THORN + { 0x0110, 0x0111 }, // LATIN CAPITAL LETTER D WITH STROKE + { 0x0126, 0x0127 }, // LATIN CAPITAL LETTER H WITH STROKE + { 0x0141, 0x0142 }, // LATIN CAPITAL LETTER L WITH STROKE + { 0x014A, 0x014B }, // LATIN CAPITAL LETTER ENG + { 0x0152, 0x0153 }, // LATIN CAPITAL LIGATURE OE + { 0x0166, 0x0167 }, // LATIN CAPITAL LETTER T WITH STROKE + { 0x0181, 0x0253 }, // LATIN CAPITAL LETTER B WITH HOOK + { 0x0182, 0x0183 }, // LATIN CAPITAL LETTER B WITH TOPBAR + { 0x0184, 0x0185 }, // LATIN CAPITAL LETTER TONE SIX + { 0x0186, 0x0254 }, // LATIN CAPITAL LETTER OPEN O + { 0x0187, 0x0188 }, // LATIN CAPITAL LETTER C WITH HOOK + { 0x0189, 0x0256 }, // LATIN CAPITAL LETTER AFRICAN D + { 0x018A, 0x0257 }, // LATIN CAPITAL LETTER D WITH HOOK + { 0x018B, 0x018C }, // LATIN CAPITAL LETTER D WITH TOPBAR + { 0x018E, 0x01DD }, // LATIN CAPITAL LETTER REVERSED E + { 0x018F, 0x0259 }, // LATIN CAPITAL LETTER SCHWA + { 0x0190, 0x025B }, // LATIN CAPITAL LETTER OPEN E + { 0x0191, 0x0192 }, // LATIN CAPITAL LETTER F WITH HOOK + { 0x0193, 0x0260 }, // LATIN CAPITAL LETTER G WITH HOOK + { 0x0194, 0x0263 }, // LATIN CAPITAL LETTER GAMMA + { 0x0196, 0x0269 }, // LATIN CAPITAL LETTER IOTA + { 0x0197, 0x0268 }, // LATIN CAPITAL LETTER I WITH STROKE + { 0x0198, 0x0199 }, // LATIN CAPITAL LETTER K WITH HOOK + { 0x019C, 0x026F }, // LATIN CAPITAL LETTER TURNED M + { 0x019D, 0x0272 }, // LATIN CAPITAL LETTER N WITH LEFT HOOK + { 0x019F, 0x0275 }, // LATIN CAPITAL LETTER O WITH MIDDLE TILDE + { 0x01A2, 0x01A3 }, // LATIN CAPITAL LETTER OI + { 0x01A4, 0x01A5 }, // LATIN CAPITAL LETTER P WITH HOOK + { 0x01A6, 0x0280 }, // LATIN LETTER YR + { 0x01A7, 0x01A8 }, // LATIN CAPITAL LETTER TONE TWO + { 0x01A9, 0x0283 }, // LATIN CAPITAL LETTER ESH + { 0x01AC, 0x01AD }, // LATIN CAPITAL LETTER T WITH HOOK + { 0x01AE, 0x0288 }, // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK + { 0x01B1, 0x028A }, // LATIN CAPITAL LETTER UPSILON + { 0x01B2, 0x028B }, // LATIN CAPITAL LETTER V WITH HOOK + { 0x01B3, 0x01B4 }, // LATIN CAPITAL LETTER Y WITH HOOK + { 0x01B5, 0x01B6 }, // LATIN CAPITAL LETTER Z WITH STROKE + { 0x01B7, 0x0292 }, // LATIN CAPITAL LETTER EZH + { 0x01B8, 0x01B9 }, // LATIN CAPITAL LETTER EZH REVERSED + { 0x01BC, 0x01BD }, // LATIN CAPITAL LETTER TONE FIVE + { 0x01E4, 0x01E5 }, // LATIN CAPITAL LETTER G WITH STROKE + { 0x01EA, 0x01EB }, // LATIN CAPITAL LETTER O WITH OGONEK + { 0x01F6, 0x0195 }, // LATIN CAPITAL LETTER HWAIR + { 0x01F7, 0x01BF }, // LATIN CAPITAL LETTER WYNN + { 0x021C, 0x021D }, // LATIN CAPITAL LETTER YOGH + { 0x0220, 0x019E }, // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG + { 0x0222, 0x0223 }, // LATIN CAPITAL LETTER OU + { 0x0224, 0x0225 }, // LATIN CAPITAL LETTER Z WITH HOOK + { 0x0226, 0x0227 }, // LATIN CAPITAL LETTER A WITH DOT ABOVE + { 0x022E, 0x022F }, // LATIN CAPITAL LETTER O WITH DOT ABOVE + { 0x023A, 0x2C65 }, // LATIN CAPITAL LETTER A WITH STROKE + { 0x023B, 0x023C }, // LATIN CAPITAL LETTER C WITH STROKE + { 0x023D, 0x019A }, // LATIN CAPITAL LETTER L WITH BAR + { 0x023E, 0x2C66 }, // LATIN CAPITAL LETTER T WITH DIAGONAL STROKE + { 0x0241, 0x0242 }, // LATIN CAPITAL LETTER GLOTTAL STOP + { 0x0243, 0x0180 }, // LATIN CAPITAL LETTER B WITH STROKE + { 0x0244, 0x0289 }, // LATIN CAPITAL LETTER U BAR + { 0x0245, 0x028C }, // LATIN CAPITAL LETTER TURNED V + { 0x0246, 0x0247 }, // LATIN CAPITAL LETTER E WITH STROKE + { 0x0248, 0x0249 }, // LATIN CAPITAL LETTER J WITH STROKE + { 0x024A, 0x024B }, // LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL + { 0x024C, 0x024D }, // LATIN CAPITAL LETTER R WITH STROKE + { 0x024E, 0x024F }, // LATIN CAPITAL LETTER Y WITH STROKE + { 0x0370, 0x0371 }, // GREEK CAPITAL LETTER HETA + { 0x0372, 0x0373 }, // GREEK CAPITAL LETTER ARCHAIC SAMPI + { 0x0376, 0x0377 }, // GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA + { 0x0391, 0x03B1 }, // GREEK CAPITAL LETTER ALPHA + { 0x0392, 0x03B2 }, // GREEK CAPITAL LETTER BETA + { 0x0393, 0x03B3 }, // GREEK CAPITAL LETTER GAMMA + { 0x0394, 0x03B4 }, // GREEK CAPITAL LETTER DELTA + { 0x0395, 0x03B5 }, // GREEK CAPITAL LETTER EPSILON + { 0x0396, 0x03B6 }, // GREEK CAPITAL LETTER ZETA + { 0x0397, 0x03B7 }, // GREEK CAPITAL LETTER ETA + { 0x0398, 0x03B8 }, // GREEK CAPITAL LETTER THETA + { 0x0399, 0x03B9 }, // GREEK CAPITAL LETTER IOTA + { 0x039A, 0x03BA }, // GREEK CAPITAL LETTER KAPPA + { 0x039B, 0x03BB }, // GREEK CAPITAL LETTER LAMDA + { 0x039C, 0x03BC }, // GREEK CAPITAL LETTER MU + { 0x039D, 0x03BD }, // GREEK CAPITAL LETTER NU + { 0x039E, 0x03BE }, // GREEK CAPITAL LETTER XI + { 0x039F, 0x03BF }, // GREEK CAPITAL LETTER OMICRON + { 0x03A0, 0x03C0 }, // GREEK CAPITAL LETTER PI + { 0x03A1, 0x03C1 }, // GREEK CAPITAL LETTER RHO + { 0x03A3, 0x03C3 }, // GREEK CAPITAL LETTER SIGMA + { 0x03A4, 0x03C4 }, // GREEK CAPITAL LETTER TAU + { 0x03A5, 0x03C5 }, // GREEK CAPITAL LETTER UPSILON + { 0x03A6, 0x03C6 }, // GREEK CAPITAL LETTER PHI + { 0x03A7, 0x03C7 }, // GREEK CAPITAL LETTER CHI + { 0x03A8, 0x03C8 }, // GREEK CAPITAL LETTER PSI + { 0x03A9, 0x03C9 }, // GREEK CAPITAL LETTER OMEGA + { 0x03CF, 0x03D7 }, // GREEK CAPITAL KAI SYMBOL + { 0x03D8, 0x03D9 }, // GREEK LETTER ARCHAIC KOPPA + { 0x03DA, 0x03DB }, // GREEK LETTER STIGMA + { 0x03DC, 0x03DD }, // GREEK LETTER DIGAMMA + { 0x03DE, 0x03DF }, // GREEK LETTER KOPPA + { 0x03E0, 0x03E1 }, // GREEK LETTER SAMPI + { 0x03E2, 0x03E3 }, // COPTIC CAPITAL LETTER SHEI + { 0x03E4, 0x03E5 }, // COPTIC CAPITAL LETTER FEI + { 0x03E6, 0x03E7 }, // COPTIC CAPITAL LETTER KHEI + { 0x03E8, 0x03E9 }, // COPTIC CAPITAL LETTER HORI + { 0x03EA, 0x03EB }, // COPTIC CAPITAL LETTER GANGIA + { 0x03EC, 0x03ED }, // COPTIC CAPITAL LETTER SHIMA + { 0x03EE, 0x03EF }, // COPTIC CAPITAL LETTER DEI + { 0x03F7, 0x03F8 }, // GREEK CAPITAL LETTER SHO + { 0x03FA, 0x03FB }, // GREEK CAPITAL LETTER SAN + { 0x03FD, 0x037B }, // GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL + { 0x03FE, 0x037C }, // GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL + { 0x03FF, 0x037D }, // GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL + { 0x0402, 0x0452 }, // CYRILLIC CAPITAL LETTER DJE + { 0x0404, 0x0454 }, // CYRILLIC CAPITAL LETTER UKRAINIAN IE + { 0x0405, 0x0455 }, // CYRILLIC CAPITAL LETTER DZE + { 0x0406, 0x0456 }, // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I + { 0x0408, 0x0458 }, // CYRILLIC CAPITAL LETTER JE + { 0x0409, 0x0459 }, // CYRILLIC CAPITAL LETTER LJE + { 0x040A, 0x045A }, // CYRILLIC CAPITAL LETTER NJE + { 0x040B, 0x045B }, // CYRILLIC CAPITAL LETTER TSHE + { 0x040F, 0x045F }, // CYRILLIC CAPITAL LETTER DZHE + { 0x0410, 0x0430 }, // CYRILLIC CAPITAL LETTER A + { 0x0411, 0x0431 }, // CYRILLIC CAPITAL LETTER BE + { 0x0412, 0x0432 }, // CYRILLIC CAPITAL LETTER VE + { 0x0413, 0x0433 }, // CYRILLIC CAPITAL LETTER GHE + { 0x0414, 0x0434 }, // CYRILLIC CAPITAL LETTER DE + { 0x0415, 0x0435 }, // CYRILLIC CAPITAL LETTER IE + { 0x0416, 0x0436 }, // CYRILLIC CAPITAL LETTER ZHE + { 0x0417, 0x0437 }, // CYRILLIC CAPITAL LETTER ZE + { 0x0418, 0x0438 }, // CYRILLIC CAPITAL LETTER I + { 0x041A, 0x043A }, // CYRILLIC CAPITAL LETTER KA + { 0x041B, 0x043B }, // CYRILLIC CAPITAL LETTER EL + { 0x041C, 0x043C }, // CYRILLIC CAPITAL LETTER EM + { 0x041D, 0x043D }, // CYRILLIC CAPITAL LETTER EN + { 0x041E, 0x043E }, // CYRILLIC CAPITAL LETTER O + { 0x041F, 0x043F }, // CYRILLIC CAPITAL LETTER PE + { 0x0420, 0x0440 }, // CYRILLIC CAPITAL LETTER ER + { 0x0421, 0x0441 }, // CYRILLIC CAPITAL LETTER ES + { 0x0422, 0x0442 }, // CYRILLIC CAPITAL LETTER TE + { 0x0423, 0x0443 }, // CYRILLIC CAPITAL LETTER U + { 0x0424, 0x0444 }, // CYRILLIC CAPITAL LETTER EF + { 0x0425, 0x0445 }, // CYRILLIC CAPITAL LETTER HA + { 0x0426, 0x0446 }, // CYRILLIC CAPITAL LETTER TSE + { 0x0427, 0x0447 }, // CYRILLIC CAPITAL LETTER CHE + { 0x0428, 0x0448 }, // CYRILLIC CAPITAL LETTER SHA + { 0x0429, 0x0449 }, // CYRILLIC CAPITAL LETTER SHCHA + { 0x042A, 0x044A }, // CYRILLIC CAPITAL LETTER HARD SIGN + { 0x042B, 0x044B }, // CYRILLIC CAPITAL LETTER YERU + { 0x042C, 0x044C }, // CYRILLIC CAPITAL LETTER SOFT SIGN + { 0x042D, 0x044D }, // CYRILLIC CAPITAL LETTER E + { 0x042E, 0x044E }, // CYRILLIC CAPITAL LETTER YU + { 0x042F, 0x044F }, // CYRILLIC CAPITAL LETTER YA + { 0x0460, 0x0461 }, // CYRILLIC CAPITAL LETTER OMEGA + { 0x0462, 0x0463 }, // CYRILLIC CAPITAL LETTER YAT + { 0x0464, 0x0465 }, // CYRILLIC CAPITAL LETTER IOTIFIED E + { 0x0466, 0x0467 }, // CYRILLIC CAPITAL LETTER LITTLE YUS + { 0x0468, 0x0469 }, // CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS + { 0x046A, 0x046B }, // CYRILLIC CAPITAL LETTER BIG YUS + { 0x046C, 0x046D }, // CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS + { 0x046E, 0x046F }, // CYRILLIC CAPITAL LETTER KSI + { 0x0470, 0x0471 }, // CYRILLIC CAPITAL LETTER PSI + { 0x0472, 0x0473 }, // CYRILLIC CAPITAL LETTER FITA + { 0x0474, 0x0475 }, // CYRILLIC CAPITAL LETTER IZHITSA + { 0x0478, 0x0479 }, // CYRILLIC CAPITAL LETTER UK + { 0x047A, 0x047B }, // CYRILLIC CAPITAL LETTER ROUND OMEGA + { 0x047C, 0x047D }, // CYRILLIC CAPITAL LETTER OMEGA WITH TITLO + { 0x047E, 0x047F }, // CYRILLIC CAPITAL LETTER OT + { 0x0480, 0x0481 }, // CYRILLIC CAPITAL LETTER KOPPA + { 0x048A, 0x048B }, // CYRILLIC CAPITAL LETTER SHORT I WITH TAIL + { 0x048C, 0x048D }, // CYRILLIC CAPITAL LETTER SEMISOFT SIGN + { 0x048E, 0x048F }, // CYRILLIC CAPITAL LETTER ER WITH TICK + { 0x0490, 0x0491 }, // CYRILLIC CAPITAL LETTER GHE WITH UPTURN + { 0x0492, 0x0493 }, // CYRILLIC CAPITAL LETTER GHE WITH STROKE + { 0x0494, 0x0495 }, // CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK + { 0x0496, 0x0497 }, // CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER + { 0x0498, 0x0499 }, // CYRILLIC CAPITAL LETTER ZE WITH DESCENDER + { 0x049A, 0x049B }, // CYRILLIC CAPITAL LETTER KA WITH DESCENDER + { 0x049C, 0x049D }, // CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE + { 0x049E, 0x049F }, // CYRILLIC CAPITAL LETTER KA WITH STROKE + { 0x04A0, 0x04A1 }, // CYRILLIC CAPITAL LETTER BASHKIR KA + { 0x04A2, 0x04A3 }, // CYRILLIC CAPITAL LETTER EN WITH DESCENDER + { 0x04A4, 0x04A5 }, // CYRILLIC CAPITAL LIGATURE EN GHE + { 0x04A6, 0x04A7 }, // CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK + { 0x04A8, 0x04A9 }, // CYRILLIC CAPITAL LETTER ABKHASIAN HA + { 0x04AA, 0x04AB }, // CYRILLIC CAPITAL LETTER ES WITH DESCENDER + { 0x04AC, 0x04AD }, // CYRILLIC CAPITAL LETTER TE WITH DESCENDER + { 0x04AE, 0x04AF }, // CYRILLIC CAPITAL LETTER STRAIGHT U + { 0x04B0, 0x04B1 }, // CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE + { 0x04B2, 0x04B3 }, // CYRILLIC CAPITAL LETTER HA WITH DESCENDER + { 0x04B4, 0x04B5 }, // CYRILLIC CAPITAL LIGATURE TE TSE + { 0x04B6, 0x04B7 }, // CYRILLIC CAPITAL LETTER CHE WITH DESCENDER + { 0x04B8, 0x04B9 }, // CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE + { 0x04BA, 0x04BB }, // CYRILLIC CAPITAL LETTER SHHA + { 0x04BC, 0x04BD }, // CYRILLIC CAPITAL LETTER ABKHASIAN CHE + { 0x04BE, 0x04BF }, // CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER + { 0x04C0, 0x04CF }, // CYRILLIC LETTER PALOCHKA + { 0x04C3, 0x04C4 }, // CYRILLIC CAPITAL LETTER KA WITH HOOK + { 0x04C5, 0x04C6 }, // CYRILLIC CAPITAL LETTER EL WITH TAIL + { 0x04C7, 0x04C8 }, // CYRILLIC CAPITAL LETTER EN WITH HOOK + { 0x04C9, 0x04CA }, // CYRILLIC CAPITAL LETTER EN WITH TAIL + { 0x04CB, 0x04CC }, // CYRILLIC CAPITAL LETTER KHAKASSIAN CHE + { 0x04CD, 0x04CE }, // CYRILLIC CAPITAL LETTER EM WITH TAIL + { 0x04D4, 0x04D5 }, // CYRILLIC CAPITAL LIGATURE A IE + { 0x04D8, 0x04D9 }, // CYRILLIC CAPITAL LETTER SCHWA + { 0x04E0, 0x04E1 }, // CYRILLIC CAPITAL LETTER ABKHASIAN DZE + { 0x04E8, 0x04E9 }, // CYRILLIC CAPITAL LETTER BARRED O + { 0x04F6, 0x04F7 }, // CYRILLIC CAPITAL LETTER GHE WITH DESCENDER + { 0x04FA, 0x04FB }, // CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK + { 0x04FC, 0x04FD }, // CYRILLIC CAPITAL LETTER HA WITH HOOK + { 0x04FE, 0x04FF }, // CYRILLIC CAPITAL LETTER HA WITH STROKE + { 0x0500, 0x0501 }, // CYRILLIC CAPITAL LETTER KOMI DE + { 0x0502, 0x0503 }, // CYRILLIC CAPITAL LETTER KOMI DJE + { 0x0504, 0x0505 }, // CYRILLIC CAPITAL LETTER KOMI ZJE + { 0x0506, 0x0507 }, // CYRILLIC CAPITAL LETTER KOMI DZJE + { 0x0508, 0x0509 }, // CYRILLIC CAPITAL LETTER KOMI LJE + { 0x050A, 0x050B }, // CYRILLIC CAPITAL LETTER KOMI NJE + { 0x050C, 0x050D }, // CYRILLIC CAPITAL LETTER KOMI SJE + { 0x050E, 0x050F }, // CYRILLIC CAPITAL LETTER KOMI TJE + { 0x0510, 0x0511 }, // CYRILLIC CAPITAL LETTER REVERSED ZE + { 0x0512, 0x0513 }, // CYRILLIC CAPITAL LETTER EL WITH HOOK + { 0x0514, 0x0515 }, // CYRILLIC CAPITAL LETTER LHA + { 0x0516, 0x0517 }, // CYRILLIC CAPITAL LETTER RHA + { 0x0518, 0x0519 }, // CYRILLIC CAPITAL LETTER YAE + { 0x051A, 0x051B }, // CYRILLIC CAPITAL LETTER QA + { 0x051C, 0x051D }, // CYRILLIC CAPITAL LETTER WE + { 0x051E, 0x051F }, // CYRILLIC CAPITAL LETTER ALEUT KA + { 0x0520, 0x0521 }, // CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK + { 0x0522, 0x0523 }, // CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK + { 0x0524, 0x0525 }, // CYRILLIC CAPITAL LETTER PE WITH DESCENDER + { 0x0531, 0x0561 }, // ARMENIAN CAPITAL LETTER AYB + { 0x0532, 0x0562 }, // ARMENIAN CAPITAL LETTER BEN + { 0x0533, 0x0563 }, // ARMENIAN CAPITAL LETTER GIM + { 0x0534, 0x0564 }, // ARMENIAN CAPITAL LETTER DA + { 0x0535, 0x0565 }, // ARMENIAN CAPITAL LETTER ECH + { 0x0536, 0x0566 }, // ARMENIAN CAPITAL LETTER ZA + { 0x0537, 0x0567 }, // ARMENIAN CAPITAL LETTER EH + { 0x0538, 0x0568 }, // ARMENIAN CAPITAL LETTER ET + { 0x0539, 0x0569 }, // ARMENIAN CAPITAL LETTER TO + { 0x053A, 0x056A }, // ARMENIAN CAPITAL LETTER ZHE + { 0x053B, 0x056B }, // ARMENIAN CAPITAL LETTER INI + { 0x053C, 0x056C }, // ARMENIAN CAPITAL LETTER LIWN + { 0x053D, 0x056D }, // ARMENIAN CAPITAL LETTER XEH + { 0x053E, 0x056E }, // ARMENIAN CAPITAL LETTER CA + { 0x053F, 0x056F }, // ARMENIAN CAPITAL LETTER KEN + { 0x0540, 0x0570 }, // ARMENIAN CAPITAL LETTER HO + { 0x0541, 0x0571 }, // ARMENIAN CAPITAL LETTER JA + { 0x0542, 0x0572 }, // ARMENIAN CAPITAL LETTER GHAD + { 0x0543, 0x0573 }, // ARMENIAN CAPITAL LETTER CHEH + { 0x0544, 0x0574 }, // ARMENIAN CAPITAL LETTER MEN + { 0x0545, 0x0575 }, // ARMENIAN CAPITAL LETTER YI + { 0x0546, 0x0576 }, // ARMENIAN CAPITAL LETTER NOW + { 0x0547, 0x0577 }, // ARMENIAN CAPITAL LETTER SHA + { 0x0548, 0x0578 }, // ARMENIAN CAPITAL LETTER VO + { 0x0549, 0x0579 }, // ARMENIAN CAPITAL LETTER CHA + { 0x054A, 0x057A }, // ARMENIAN CAPITAL LETTER PEH + { 0x054B, 0x057B }, // ARMENIAN CAPITAL LETTER JHEH + { 0x054C, 0x057C }, // ARMENIAN CAPITAL LETTER RA + { 0x054D, 0x057D }, // ARMENIAN CAPITAL LETTER SEH + { 0x054E, 0x057E }, // ARMENIAN CAPITAL LETTER VEW + { 0x054F, 0x057F }, // ARMENIAN CAPITAL LETTER TIWN + { 0x0550, 0x0580 }, // ARMENIAN CAPITAL LETTER REH + { 0x0551, 0x0581 }, // ARMENIAN CAPITAL LETTER CO + { 0x0552, 0x0582 }, // ARMENIAN CAPITAL LETTER YIWN + { 0x0553, 0x0583 }, // ARMENIAN CAPITAL LETTER PIWR + { 0x0554, 0x0584 }, // ARMENIAN CAPITAL LETTER KEH + { 0x0555, 0x0585 }, // ARMENIAN CAPITAL LETTER OH + { 0x0556, 0x0586 }, // ARMENIAN CAPITAL LETTER FEH + { 0x10A0, 0x2D00 }, // GEORGIAN CAPITAL LETTER AN + { 0x10A1, 0x2D01 }, // GEORGIAN CAPITAL LETTER BAN + { 0x10A2, 0x2D02 }, // GEORGIAN CAPITAL LETTER GAN + { 0x10A3, 0x2D03 }, // GEORGIAN CAPITAL LETTER DON + { 0x10A4, 0x2D04 }, // GEORGIAN CAPITAL LETTER EN + { 0x10A5, 0x2D05 }, // GEORGIAN CAPITAL LETTER VIN + { 0x10A6, 0x2D06 }, // GEORGIAN CAPITAL LETTER ZEN + { 0x10A7, 0x2D07 }, // GEORGIAN CAPITAL LETTER TAN + { 0x10A8, 0x2D08 }, // GEORGIAN CAPITAL LETTER IN + { 0x10A9, 0x2D09 }, // GEORGIAN CAPITAL LETTER KAN + { 0x10AA, 0x2D0A }, // GEORGIAN CAPITAL LETTER LAS + { 0x10AB, 0x2D0B }, // GEORGIAN CAPITAL LETTER MAN + { 0x10AC, 0x2D0C }, // GEORGIAN CAPITAL LETTER NAR + { 0x10AD, 0x2D0D }, // GEORGIAN CAPITAL LETTER ON + { 0x10AE, 0x2D0E }, // GEORGIAN CAPITAL LETTER PAR + { 0x10AF, 0x2D0F }, // GEORGIAN CAPITAL LETTER ZHAR + { 0x10B0, 0x2D10 }, // GEORGIAN CAPITAL LETTER RAE + { 0x10B1, 0x2D11 }, // GEORGIAN CAPITAL LETTER SAN + { 0x10B2, 0x2D12 }, // GEORGIAN CAPITAL LETTER TAR + { 0x10B3, 0x2D13 }, // GEORGIAN CAPITAL LETTER UN + { 0x10B4, 0x2D14 }, // GEORGIAN CAPITAL LETTER PHAR + { 0x10B5, 0x2D15 }, // GEORGIAN CAPITAL LETTER KHAR + { 0x10B6, 0x2D16 }, // GEORGIAN CAPITAL LETTER GHAN + { 0x10B7, 0x2D17 }, // GEORGIAN CAPITAL LETTER QAR + { 0x10B8, 0x2D18 }, // GEORGIAN CAPITAL LETTER SHIN + { 0x10B9, 0x2D19 }, // GEORGIAN CAPITAL LETTER CHIN + { 0x10BA, 0x2D1A }, // GEORGIAN CAPITAL LETTER CAN + { 0x10BB, 0x2D1B }, // GEORGIAN CAPITAL LETTER JIL + { 0x10BC, 0x2D1C }, // GEORGIAN CAPITAL LETTER CIL + { 0x10BD, 0x2D1D }, // GEORGIAN CAPITAL LETTER CHAR + { 0x10BE, 0x2D1E }, // GEORGIAN CAPITAL LETTER XAN + { 0x10BF, 0x2D1F }, // GEORGIAN CAPITAL LETTER JHAN + { 0x10C0, 0x2D20 }, // GEORGIAN CAPITAL LETTER HAE + { 0x10C1, 0x2D21 }, // GEORGIAN CAPITAL LETTER HE + { 0x10C2, 0x2D22 }, // GEORGIAN CAPITAL LETTER HIE + { 0x10C3, 0x2D23 }, // GEORGIAN CAPITAL LETTER WE + { 0x10C4, 0x2D24 }, // GEORGIAN CAPITAL LETTER HAR + { 0x10C5, 0x2D25 }, // GEORGIAN CAPITAL LETTER HOE + { 0x1E00, 0x1E01 }, // LATIN CAPITAL LETTER A WITH RING BELOW + { 0x1E02, 0x1E03 }, // LATIN CAPITAL LETTER B WITH DOT ABOVE + { 0x1E04, 0x1E05 }, // LATIN CAPITAL LETTER B WITH DOT BELOW + { 0x1E06, 0x1E07 }, // LATIN CAPITAL LETTER B WITH LINE BELOW + { 0x1E08, 0x1E09 }, // LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + { 0x1E0A, 0x1E0B }, // LATIN CAPITAL LETTER D WITH DOT ABOVE + { 0x1E0C, 0x1E0D }, // LATIN CAPITAL LETTER D WITH DOT BELOW + { 0x1E0E, 0x1E0F }, // LATIN CAPITAL LETTER D WITH LINE BELOW + { 0x1E10, 0x1E11 }, // LATIN CAPITAL LETTER D WITH CEDILLA + { 0x1E12, 0x1E13 }, // LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW + { 0x1E14, 0x1E15 }, // LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + { 0x1E16, 0x1E17 }, // LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + { 0x1E18, 0x1E19 }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW + { 0x1E1A, 0x1E1B }, // LATIN CAPITAL LETTER E WITH TILDE BELOW + { 0x1E1C, 0x1E1D }, // LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + { 0x1E1E, 0x1E1F }, // LATIN CAPITAL LETTER F WITH DOT ABOVE + { 0x1E20, 0x1E21 }, // LATIN CAPITAL LETTER G WITH MACRON + { 0x1E22, 0x1E23 }, // LATIN CAPITAL LETTER H WITH DOT ABOVE + { 0x1E24, 0x1E25 }, // LATIN CAPITAL LETTER H WITH DOT BELOW + { 0x1E26, 0x1E27 }, // LATIN CAPITAL LETTER H WITH DIAERESIS + { 0x1E28, 0x1E29 }, // LATIN CAPITAL LETTER H WITH CEDILLA + { 0x1E2A, 0x1E2B }, // LATIN CAPITAL LETTER H WITH BREVE BELOW + { 0x1E2C, 0x1E2D }, // LATIN CAPITAL LETTER I WITH TILDE BELOW + { 0x1E2E, 0x1E2F }, // LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + { 0x1E30, 0x1E31 }, // LATIN CAPITAL LETTER K WITH ACUTE + { 0x1E32, 0x1E33 }, // LATIN CAPITAL LETTER K WITH DOT BELOW + { 0x1E34, 0x1E35 }, // LATIN CAPITAL LETTER K WITH LINE BELOW + { 0x1E36, 0x1E37 }, // LATIN CAPITAL LETTER L WITH DOT BELOW + { 0x1E38, 0x1E39 }, // LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + { 0x1E3A, 0x1E3B }, // LATIN CAPITAL LETTER L WITH LINE BELOW + { 0x1E3C, 0x1E3D }, // LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW + { 0x1E3E, 0x1E3F }, // LATIN CAPITAL LETTER M WITH ACUTE + { 0x1E40, 0x1E41 }, // LATIN CAPITAL LETTER M WITH DOT ABOVE + { 0x1E42, 0x1E43 }, // LATIN CAPITAL LETTER M WITH DOT BELOW + { 0x1E44, 0x1E45 }, // LATIN CAPITAL LETTER N WITH DOT ABOVE + { 0x1E46, 0x1E47 }, // LATIN CAPITAL LETTER N WITH DOT BELOW + { 0x1E48, 0x1E49 }, // LATIN CAPITAL LETTER N WITH LINE BELOW + { 0x1E4A, 0x1E4B }, // LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW + { 0x1E4C, 0x1E4D }, // LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + { 0x1E4E, 0x1E4F }, // LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + { 0x1E50, 0x1E51 }, // LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + { 0x1E52, 0x1E53 }, // LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + { 0x1E54, 0x1E55 }, // LATIN CAPITAL LETTER P WITH ACUTE + { 0x1E56, 0x1E57 }, // LATIN CAPITAL LETTER P WITH DOT ABOVE + { 0x1E58, 0x1E59 }, // LATIN CAPITAL LETTER R WITH DOT ABOVE + { 0x1E5A, 0x1E5B }, // LATIN CAPITAL LETTER R WITH DOT BELOW + { 0x1E5C, 0x1E5D }, // LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + { 0x1E5E, 0x1E5F }, // LATIN CAPITAL LETTER R WITH LINE BELOW + { 0x1E60, 0x1E61 }, // LATIN CAPITAL LETTER S WITH DOT ABOVE + { 0x1E62, 0x1E63 }, // LATIN CAPITAL LETTER S WITH DOT BELOW + { 0x1E64, 0x1E65 }, // LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + { 0x1E66, 0x1E67 }, // LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + { 0x1E68, 0x1E69 }, // LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + { 0x1E6A, 0x1E6B }, // LATIN CAPITAL LETTER T WITH DOT ABOVE + { 0x1E6C, 0x1E6D }, // LATIN CAPITAL LETTER T WITH DOT BELOW + { 0x1E6E, 0x1E6F }, // LATIN CAPITAL LETTER T WITH LINE BELOW + { 0x1E70, 0x1E71 }, // LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW + { 0x1E72, 0x1E73 }, // LATIN CAPITAL LETTER U WITH DIAERESIS BELOW + { 0x1E74, 0x1E75 }, // LATIN CAPITAL LETTER U WITH TILDE BELOW + { 0x1E76, 0x1E77 }, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW + { 0x1E78, 0x1E79 }, // LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + { 0x1E7A, 0x1E7B }, // LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + { 0x1E7C, 0x1E7D }, // LATIN CAPITAL LETTER V WITH TILDE + { 0x1E7E, 0x1E7F }, // LATIN CAPITAL LETTER V WITH DOT BELOW + { 0x1E80, 0x1E81 }, // LATIN CAPITAL LETTER W WITH GRAVE + { 0x1E82, 0x1E83 }, // LATIN CAPITAL LETTER W WITH ACUTE + { 0x1E84, 0x1E85 }, // LATIN CAPITAL LETTER W WITH DIAERESIS + { 0x1E86, 0x1E87 }, // LATIN CAPITAL LETTER W WITH DOT ABOVE + { 0x1E88, 0x1E89 }, // LATIN CAPITAL LETTER W WITH DOT BELOW + { 0x1E8A, 0x1E8B }, // LATIN CAPITAL LETTER X WITH DOT ABOVE + { 0x1E8C, 0x1E8D }, // LATIN CAPITAL LETTER X WITH DIAERESIS + { 0x1E8E, 0x1E8F }, // LATIN CAPITAL LETTER Y WITH DOT ABOVE + { 0x1E90, 0x1E91 }, // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + { 0x1E92, 0x1E93 }, // LATIN CAPITAL LETTER Z WITH DOT BELOW + { 0x1E94, 0x1E95 }, // LATIN CAPITAL LETTER Z WITH LINE BELOW + { 0x1E9E, 0x00DF }, // LATIN CAPITAL LETTER SHARP S + { 0x1EA0, 0x1EA1 }, // LATIN CAPITAL LETTER A WITH DOT BELOW + { 0x1EA2, 0x1EA3 }, // LATIN CAPITAL LETTER A WITH HOOK ABOVE + { 0x1EA4, 0x1EA5 }, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + { 0x1EA6, 0x1EA7 }, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + { 0x1EA8, 0x1EA9 }, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + { 0x1EAA, 0x1EAB }, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + { 0x1EAC, 0x1EAD }, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + { 0x1EAE, 0x1EAF }, // LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + { 0x1EB0, 0x1EB1 }, // LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + { 0x1EB2, 0x1EB3 }, // LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + { 0x1EB4, 0x1EB5 }, // LATIN CAPITAL LETTER A WITH BREVE AND TILDE + { 0x1EB6, 0x1EB7 }, // LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + { 0x1EB8, 0x1EB9 }, // LATIN CAPITAL LETTER E WITH DOT BELOW + { 0x1EBA, 0x1EBB }, // LATIN CAPITAL LETTER E WITH HOOK ABOVE + { 0x1EBC, 0x1EBD }, // LATIN CAPITAL LETTER E WITH TILDE + { 0x1EBE, 0x1EBF }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + { 0x1EC0, 0x1EC1 }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + { 0x1EC2, 0x1EC3 }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + { 0x1EC4, 0x1EC5 }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + { 0x1EC6, 0x1EC7 }, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + { 0x1EC8, 0x1EC9 }, // LATIN CAPITAL LETTER I WITH HOOK ABOVE + { 0x1ECA, 0x1ECB }, // LATIN CAPITAL LETTER I WITH DOT BELOW + { 0x1ECC, 0x1ECD }, // LATIN CAPITAL LETTER O WITH DOT BELOW + { 0x1ECE, 0x1ECF }, // LATIN CAPITAL LETTER O WITH HOOK ABOVE + { 0x1ED0, 0x1ED1 }, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + { 0x1ED2, 0x1ED3 }, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + { 0x1ED4, 0x1ED5 }, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + { 0x1ED6, 0x1ED7 }, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + { 0x1ED8, 0x1ED9 }, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + { 0x1EDA, 0x1EDB }, // LATIN CAPITAL LETTER O WITH HORN AND ACUTE + { 0x1EDC, 0x1EDD }, // LATIN CAPITAL LETTER O WITH HORN AND GRAVE + { 0x1EDE, 0x1EDF }, // LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + { 0x1EE0, 0x1EE1 }, // LATIN CAPITAL LETTER O WITH HORN AND TILDE + { 0x1EE2, 0x1EE3 }, // LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + { 0x1EE4, 0x1EE5 }, // LATIN CAPITAL LETTER U WITH DOT BELOW + { 0x1EE6, 0x1EE7 }, // LATIN CAPITAL LETTER U WITH HOOK ABOVE + { 0x1EE8, 0x1EE9 }, // LATIN CAPITAL LETTER U WITH HORN AND ACUTE + { 0x1EEA, 0x1EEB }, // LATIN CAPITAL LETTER U WITH HORN AND GRAVE + { 0x1EEC, 0x1EED }, // LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + { 0x1EEE, 0x1EEF }, // LATIN CAPITAL LETTER U WITH HORN AND TILDE + { 0x1EF0, 0x1EF1 }, // LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + { 0x1EF2, 0x1EF3 }, // LATIN CAPITAL LETTER Y WITH GRAVE + { 0x1EF4, 0x1EF5 }, // LATIN CAPITAL LETTER Y WITH DOT BELOW + { 0x1EF6, 0x1EF7 }, // LATIN CAPITAL LETTER Y WITH HOOK ABOVE + { 0x1EF8, 0x1EF9 }, // LATIN CAPITAL LETTER Y WITH TILDE + { 0x1EFA, 0x1EFB }, // LATIN CAPITAL LETTER MIDDLE-WELSH LL + { 0x1EFC, 0x1EFD }, // LATIN CAPITAL LETTER MIDDLE-WELSH V + { 0x1EFE, 0x1EFF }, // LATIN CAPITAL LETTER Y WITH LOOP + { 0x1F08, 0x1F00 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI + { 0x1F09, 0x1F01 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA + { 0x1F0A, 0x1F02 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + { 0x1F0B, 0x1F03 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + { 0x1F0C, 0x1F04 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + { 0x1F0D, 0x1F05 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + { 0x1F0E, 0x1F06 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + { 0x1F0F, 0x1F07 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + { 0x1F18, 0x1F10 }, // GREEK CAPITAL LETTER EPSILON WITH PSILI + { 0x1F19, 0x1F11 }, // GREEK CAPITAL LETTER EPSILON WITH DASIA + { 0x1F1A, 0x1F12 }, // GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + { 0x1F1B, 0x1F13 }, // GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + { 0x1F1C, 0x1F14 }, // GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + { 0x1F1D, 0x1F15 }, // GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + { 0x1F28, 0x1F20 }, // GREEK CAPITAL LETTER ETA WITH PSILI + { 0x1F29, 0x1F21 }, // GREEK CAPITAL LETTER ETA WITH DASIA + { 0x1F2A, 0x1F22 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + { 0x1F2B, 0x1F23 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + { 0x1F2C, 0x1F24 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + { 0x1F2D, 0x1F25 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + { 0x1F2E, 0x1F26 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + { 0x1F2F, 0x1F27 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + { 0x1F38, 0x1F30 }, // GREEK CAPITAL LETTER IOTA WITH PSILI + { 0x1F39, 0x1F31 }, // GREEK CAPITAL LETTER IOTA WITH DASIA + { 0x1F3A, 0x1F32 }, // GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + { 0x1F3B, 0x1F33 }, // GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + { 0x1F3C, 0x1F34 }, // GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + { 0x1F3D, 0x1F35 }, // GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + { 0x1F3E, 0x1F36 }, // GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + { 0x1F3F, 0x1F37 }, // GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + { 0x1F48, 0x1F40 }, // GREEK CAPITAL LETTER OMICRON WITH PSILI + { 0x1F49, 0x1F41 }, // GREEK CAPITAL LETTER OMICRON WITH DASIA + { 0x1F4A, 0x1F42 }, // GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + { 0x1F4B, 0x1F43 }, // GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + { 0x1F4C, 0x1F44 }, // GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + { 0x1F4D, 0x1F45 }, // GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + { 0x1F59, 0x1F51 }, // GREEK CAPITAL LETTER UPSILON WITH DASIA + { 0x1F5B, 0x1F53 }, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + { 0x1F5D, 0x1F55 }, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + { 0x1F5F, 0x1F57 }, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + { 0x1F68, 0x1F60 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI + { 0x1F69, 0x1F61 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA + { 0x1F6A, 0x1F62 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + { 0x1F6B, 0x1F63 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + { 0x1F6C, 0x1F64 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + { 0x1F6D, 0x1F65 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + { 0x1F6E, 0x1F66 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + { 0x1F6F, 0x1F67 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + { 0x1F88, 0x1F80 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI + { 0x1F89, 0x1F81 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI + { 0x1F8A, 0x1F82 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + { 0x1F8B, 0x1F83 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + { 0x1F8C, 0x1F84 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + { 0x1F8D, 0x1F85 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + { 0x1F8E, 0x1F86 }, // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + { 0x1F8F, 0x1F87 }, // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + { 0x1F98, 0x1F90 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI + { 0x1F99, 0x1F91 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI + { 0x1F9A, 0x1F92 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + { 0x1F9B, 0x1F93 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + { 0x1F9C, 0x1F94 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + { 0x1F9D, 0x1F95 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + { 0x1F9E, 0x1F96 }, // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + { 0x1F9F, 0x1F97 }, // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + { 0x1FA8, 0x1FA0 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI + { 0x1FA9, 0x1FA1 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI + { 0x1FAA, 0x1FA2 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + { 0x1FAB, 0x1FA3 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + { 0x1FAC, 0x1FA4 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + { 0x1FAD, 0x1FA5 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + { 0x1FAE, 0x1FA6 }, // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + { 0x1FAF, 0x1FA7 }, // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + { 0x1FB8, 0x1FB0 }, // GREEK CAPITAL LETTER ALPHA WITH VRACHY + { 0x1FB9, 0x1FB1 }, // GREEK CAPITAL LETTER ALPHA WITH MACRON + { 0x1FBA, 0x1F70 }, // GREEK CAPITAL LETTER ALPHA WITH VARIA + { 0x1FBB, 0x1F71 }, // GREEK CAPITAL LETTER ALPHA WITH OXIA + { 0x1FBC, 0x1FB3 }, // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI + { 0x1FC8, 0x1F72 }, // GREEK CAPITAL LETTER EPSILON WITH VARIA + { 0x1FC9, 0x1F73 }, // GREEK CAPITAL LETTER EPSILON WITH OXIA + { 0x1FCA, 0x1F74 }, // GREEK CAPITAL LETTER ETA WITH VARIA + { 0x1FCB, 0x1F75 }, // GREEK CAPITAL LETTER ETA WITH OXIA + { 0x1FCC, 0x1FC3 }, // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI + { 0x1FD8, 0x1FD0 }, // GREEK CAPITAL LETTER IOTA WITH VRACHY + { 0x1FD9, 0x1FD1 }, // GREEK CAPITAL LETTER IOTA WITH MACRON + { 0x1FDA, 0x1F76 }, // GREEK CAPITAL LETTER IOTA WITH VARIA + { 0x1FDB, 0x1F77 }, // GREEK CAPITAL LETTER IOTA WITH OXIA + { 0x1FE8, 0x1FE0 }, // GREEK CAPITAL LETTER UPSILON WITH VRACHY + { 0x1FE9, 0x1FE1 }, // GREEK CAPITAL LETTER UPSILON WITH MACRON + { 0x1FEA, 0x1F7A }, // GREEK CAPITAL LETTER UPSILON WITH VARIA + { 0x1FEB, 0x1F7B }, // GREEK CAPITAL LETTER UPSILON WITH OXIA + { 0x1FEC, 0x1FE5 }, // GREEK CAPITAL LETTER RHO WITH DASIA + { 0x1FF8, 0x1F78 }, // GREEK CAPITAL LETTER OMICRON WITH VARIA + { 0x1FF9, 0x1F79 }, // GREEK CAPITAL LETTER OMICRON WITH OXIA + { 0x1FFA, 0x1F7C }, // GREEK CAPITAL LETTER OMEGA WITH VARIA + { 0x1FFB, 0x1F7D }, // GREEK CAPITAL LETTER OMEGA WITH OXIA + { 0x1FFC, 0x1FF3 }, // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI + { 0x2126, 0x03C9 }, // OHM SIGN + { 0x212A, 0x006B }, // KELVIN SIGN + { 0x212B, 0x00E5 }, // ANGSTROM SIGN + { 0x2132, 0x214E }, // TURNED CAPITAL F + { 0x2160, 0x2170 }, // ROMAN NUMERAL ONE + { 0x2161, 0x2171 }, // ROMAN NUMERAL TWO + { 0x2162, 0x2172 }, // ROMAN NUMERAL THREE + { 0x2163, 0x2173 }, // ROMAN NUMERAL FOUR + { 0x2164, 0x2174 }, // ROMAN NUMERAL FIVE + { 0x2165, 0x2175 }, // ROMAN NUMERAL SIX + { 0x2166, 0x2176 }, // ROMAN NUMERAL SEVEN + { 0x2167, 0x2177 }, // ROMAN NUMERAL EIGHT + { 0x2168, 0x2178 }, // ROMAN NUMERAL NINE + { 0x2169, 0x2179 }, // ROMAN NUMERAL TEN + { 0x216A, 0x217A }, // ROMAN NUMERAL ELEVEN + { 0x216B, 0x217B }, // ROMAN NUMERAL TWELVE + { 0x216C, 0x217C }, // ROMAN NUMERAL FIFTY + { 0x216D, 0x217D }, // ROMAN NUMERAL ONE HUNDRED + { 0x216E, 0x217E }, // ROMAN NUMERAL FIVE HUNDRED + { 0x216F, 0x217F }, // ROMAN NUMERAL ONE THOUSAND + { 0x2183, 0x2184 }, // ROMAN NUMERAL REVERSED ONE HUNDRED + { 0x24B6, 0x24D0 }, // CIRCLED LATIN CAPITAL LETTER A + { 0x24B7, 0x24D1 }, // CIRCLED LATIN CAPITAL LETTER B + { 0x24B8, 0x24D2 }, // CIRCLED LATIN CAPITAL LETTER C + { 0x24B9, 0x24D3 }, // CIRCLED LATIN CAPITAL LETTER D + { 0x24BA, 0x24D4 }, // CIRCLED LATIN CAPITAL LETTER E + { 0x24BB, 0x24D5 }, // CIRCLED LATIN CAPITAL LETTER F + { 0x24BC, 0x24D6 }, // CIRCLED LATIN CAPITAL LETTER G + { 0x24BD, 0x24D7 }, // CIRCLED LATIN CAPITAL LETTER H + { 0x24BE, 0x24D8 }, // CIRCLED LATIN CAPITAL LETTER I + { 0x24BF, 0x24D9 }, // CIRCLED LATIN CAPITAL LETTER J + { 0x24C0, 0x24DA }, // CIRCLED LATIN CAPITAL LETTER K + { 0x24C1, 0x24DB }, // CIRCLED LATIN CAPITAL LETTER L + { 0x24C2, 0x24DC }, // CIRCLED LATIN CAPITAL LETTER M + { 0x24C3, 0x24DD }, // CIRCLED LATIN CAPITAL LETTER N + { 0x24C4, 0x24DE }, // CIRCLED LATIN CAPITAL LETTER O + { 0x24C5, 0x24DF }, // CIRCLED LATIN CAPITAL LETTER P + { 0x24C6, 0x24E0 }, // CIRCLED LATIN CAPITAL LETTER Q + { 0x24C7, 0x24E1 }, // CIRCLED LATIN CAPITAL LETTER R + { 0x24C8, 0x24E2 }, // CIRCLED LATIN CAPITAL LETTER S + { 0x24C9, 0x24E3 }, // CIRCLED LATIN CAPITAL LETTER T + { 0x24CA, 0x24E4 }, // CIRCLED LATIN CAPITAL LETTER U + { 0x24CB, 0x24E5 }, // CIRCLED LATIN CAPITAL LETTER V + { 0x24CC, 0x24E6 }, // CIRCLED LATIN CAPITAL LETTER W + { 0x24CD, 0x24E7 }, // CIRCLED LATIN CAPITAL LETTER X + { 0x24CE, 0x24E8 }, // CIRCLED LATIN CAPITAL LETTER Y + { 0x24CF, 0x24E9 }, // CIRCLED LATIN CAPITAL LETTER Z + { 0x2C00, 0x2C30 }, // GLAGOLITIC CAPITAL LETTER AZU + { 0x2C01, 0x2C31 }, // GLAGOLITIC CAPITAL LETTER BUKY + { 0x2C02, 0x2C32 }, // GLAGOLITIC CAPITAL LETTER VEDE + { 0x2C03, 0x2C33 }, // GLAGOLITIC CAPITAL LETTER GLAGOLI + { 0x2C04, 0x2C34 }, // GLAGOLITIC CAPITAL LETTER DOBRO + { 0x2C05, 0x2C35 }, // GLAGOLITIC CAPITAL LETTER YESTU + { 0x2C06, 0x2C36 }, // GLAGOLITIC CAPITAL LETTER ZHIVETE + { 0x2C07, 0x2C37 }, // GLAGOLITIC CAPITAL LETTER DZELO + { 0x2C08, 0x2C38 }, // GLAGOLITIC CAPITAL LETTER ZEMLJA + { 0x2C09, 0x2C39 }, // GLAGOLITIC CAPITAL LETTER IZHE + { 0x2C0A, 0x2C3A }, // GLAGOLITIC CAPITAL LETTER INITIAL IZHE + { 0x2C0B, 0x2C3B }, // GLAGOLITIC CAPITAL LETTER I + { 0x2C0C, 0x2C3C }, // GLAGOLITIC CAPITAL LETTER DJERVI + { 0x2C0D, 0x2C3D }, // GLAGOLITIC CAPITAL LETTER KAKO + { 0x2C0E, 0x2C3E }, // GLAGOLITIC CAPITAL LETTER LJUDIJE + { 0x2C0F, 0x2C3F }, // GLAGOLITIC CAPITAL LETTER MYSLITE + { 0x2C10, 0x2C40 }, // GLAGOLITIC CAPITAL LETTER NASHI + { 0x2C11, 0x2C41 }, // GLAGOLITIC CAPITAL LETTER ONU + { 0x2C12, 0x2C42 }, // GLAGOLITIC CAPITAL LETTER POKOJI + { 0x2C13, 0x2C43 }, // GLAGOLITIC CAPITAL LETTER RITSI + { 0x2C14, 0x2C44 }, // GLAGOLITIC CAPITAL LETTER SLOVO + { 0x2C15, 0x2C45 }, // GLAGOLITIC CAPITAL LETTER TVRIDO + { 0x2C16, 0x2C46 }, // GLAGOLITIC CAPITAL LETTER UKU + { 0x2C17, 0x2C47 }, // GLAGOLITIC CAPITAL LETTER FRITU + { 0x2C18, 0x2C48 }, // GLAGOLITIC CAPITAL LETTER HERU + { 0x2C19, 0x2C49 }, // GLAGOLITIC CAPITAL LETTER OTU + { 0x2C1A, 0x2C4A }, // GLAGOLITIC CAPITAL LETTER PE + { 0x2C1B, 0x2C4B }, // GLAGOLITIC CAPITAL LETTER SHTA + { 0x2C1C, 0x2C4C }, // GLAGOLITIC CAPITAL LETTER TSI + { 0x2C1D, 0x2C4D }, // GLAGOLITIC CAPITAL LETTER CHRIVI + { 0x2C1E, 0x2C4E }, // GLAGOLITIC CAPITAL LETTER SHA + { 0x2C1F, 0x2C4F }, // GLAGOLITIC CAPITAL LETTER YERU + { 0x2C20, 0x2C50 }, // GLAGOLITIC CAPITAL LETTER YERI + { 0x2C21, 0x2C51 }, // GLAGOLITIC CAPITAL LETTER YATI + { 0x2C22, 0x2C52 }, // GLAGOLITIC CAPITAL LETTER SPIDERY HA + { 0x2C23, 0x2C53 }, // GLAGOLITIC CAPITAL LETTER YU + { 0x2C24, 0x2C54 }, // GLAGOLITIC CAPITAL LETTER SMALL YUS + { 0x2C25, 0x2C55 }, // GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL + { 0x2C26, 0x2C56 }, // GLAGOLITIC CAPITAL LETTER YO + { 0x2C27, 0x2C57 }, // GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS + { 0x2C28, 0x2C58 }, // GLAGOLITIC CAPITAL LETTER BIG YUS + { 0x2C29, 0x2C59 }, // GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS + { 0x2C2A, 0x2C5A }, // GLAGOLITIC CAPITAL LETTER FITA + { 0x2C2B, 0x2C5B }, // GLAGOLITIC CAPITAL LETTER IZHITSA + { 0x2C2C, 0x2C5C }, // GLAGOLITIC CAPITAL LETTER SHTAPIC + { 0x2C2D, 0x2C5D }, // GLAGOLITIC CAPITAL LETTER TROKUTASTI A + { 0x2C2E, 0x2C5E }, // GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE + { 0x2C60, 0x2C61 }, // LATIN CAPITAL LETTER L WITH DOUBLE BAR + { 0x2C62, 0x026B }, // LATIN CAPITAL LETTER L WITH MIDDLE TILDE + { 0x2C63, 0x1D7D }, // LATIN CAPITAL LETTER P WITH STROKE + { 0x2C64, 0x027D }, // LATIN CAPITAL LETTER R WITH TAIL + { 0x2C67, 0x2C68 }, // LATIN CAPITAL LETTER H WITH DESCENDER + { 0x2C69, 0x2C6A }, // LATIN CAPITAL LETTER K WITH DESCENDER + { 0x2C6B, 0x2C6C }, // LATIN CAPITAL LETTER Z WITH DESCENDER + { 0x2C6D, 0x0251 }, // LATIN CAPITAL LETTER ALPHA + { 0x2C6E, 0x0271 }, // LATIN CAPITAL LETTER M WITH HOOK + { 0x2C6F, 0x0250 }, // LATIN CAPITAL LETTER TURNED A + { 0x2C70, 0x0252 }, // LATIN CAPITAL LETTER TURNED ALPHA + { 0x2C72, 0x2C73 }, // LATIN CAPITAL LETTER W WITH HOOK + { 0x2C75, 0x2C76 }, // LATIN CAPITAL LETTER HALF H + { 0x2C7E, 0x023F }, // LATIN CAPITAL LETTER S WITH SWASH TAIL + { 0x2C7F, 0x0240 }, // LATIN CAPITAL LETTER Z WITH SWASH TAIL + { 0x2C80, 0x2C81 }, // COPTIC CAPITAL LETTER ALFA + { 0x2C82, 0x2C83 }, // COPTIC CAPITAL LETTER VIDA + { 0x2C84, 0x2C85 }, // COPTIC CAPITAL LETTER GAMMA + { 0x2C86, 0x2C87 }, // COPTIC CAPITAL LETTER DALDA + { 0x2C88, 0x2C89 }, // COPTIC CAPITAL LETTER EIE + { 0x2C8A, 0x2C8B }, // COPTIC CAPITAL LETTER SOU + { 0x2C8C, 0x2C8D }, // COPTIC CAPITAL LETTER ZATA + { 0x2C8E, 0x2C8F }, // COPTIC CAPITAL LETTER HATE + { 0x2C90, 0x2C91 }, // COPTIC CAPITAL LETTER THETHE + { 0x2C92, 0x2C93 }, // COPTIC CAPITAL LETTER IAUDA + { 0x2C94, 0x2C95 }, // COPTIC CAPITAL LETTER KAPA + { 0x2C96, 0x2C97 }, // COPTIC CAPITAL LETTER LAULA + { 0x2C98, 0x2C99 }, // COPTIC CAPITAL LETTER MI + { 0x2C9A, 0x2C9B }, // COPTIC CAPITAL LETTER NI + { 0x2C9C, 0x2C9D }, // COPTIC CAPITAL LETTER KSI + { 0x2C9E, 0x2C9F }, // COPTIC CAPITAL LETTER O + { 0x2CA0, 0x2CA1 }, // COPTIC CAPITAL LETTER PI + { 0x2CA2, 0x2CA3 }, // COPTIC CAPITAL LETTER RO + { 0x2CA4, 0x2CA5 }, // COPTIC CAPITAL LETTER SIMA + { 0x2CA6, 0x2CA7 }, // COPTIC CAPITAL LETTER TAU + { 0x2CA8, 0x2CA9 }, // COPTIC CAPITAL LETTER UA + { 0x2CAA, 0x2CAB }, // COPTIC CAPITAL LETTER FI + { 0x2CAC, 0x2CAD }, // COPTIC CAPITAL LETTER KHI + { 0x2CAE, 0x2CAF }, // COPTIC CAPITAL LETTER PSI + { 0x2CB0, 0x2CB1 }, // COPTIC CAPITAL LETTER OOU + { 0x2CB2, 0x2CB3 }, // COPTIC CAPITAL LETTER DIALECT-P ALEF + { 0x2CB4, 0x2CB5 }, // COPTIC CAPITAL LETTER OLD COPTIC AIN + { 0x2CB6, 0x2CB7 }, // COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE + { 0x2CB8, 0x2CB9 }, // COPTIC CAPITAL LETTER DIALECT-P KAPA + { 0x2CBA, 0x2CBB }, // COPTIC CAPITAL LETTER DIALECT-P NI + { 0x2CBC, 0x2CBD }, // COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI + { 0x2CBE, 0x2CBF }, // COPTIC CAPITAL LETTER OLD COPTIC OOU + { 0x2CC0, 0x2CC1 }, // COPTIC CAPITAL LETTER SAMPI + { 0x2CC2, 0x2CC3 }, // COPTIC CAPITAL LETTER CROSSED SHEI + { 0x2CC4, 0x2CC5 }, // COPTIC CAPITAL LETTER OLD COPTIC SHEI + { 0x2CC6, 0x2CC7 }, // COPTIC CAPITAL LETTER OLD COPTIC ESH + { 0x2CC8, 0x2CC9 }, // COPTIC CAPITAL LETTER AKHMIMIC KHEI + { 0x2CCA, 0x2CCB }, // COPTIC CAPITAL LETTER DIALECT-P HORI + { 0x2CCC, 0x2CCD }, // COPTIC CAPITAL LETTER OLD COPTIC HORI + { 0x2CCE, 0x2CCF }, // COPTIC CAPITAL LETTER OLD COPTIC HA + { 0x2CD0, 0x2CD1 }, // COPTIC CAPITAL LETTER L-SHAPED HA + { 0x2CD2, 0x2CD3 }, // COPTIC CAPITAL LETTER OLD COPTIC HEI + { 0x2CD4, 0x2CD5 }, // COPTIC CAPITAL LETTER OLD COPTIC HAT + { 0x2CD6, 0x2CD7 }, // COPTIC CAPITAL LETTER OLD COPTIC GANGIA + { 0x2CD8, 0x2CD9 }, // COPTIC CAPITAL LETTER OLD COPTIC DJA + { 0x2CDA, 0x2CDB }, // COPTIC CAPITAL LETTER OLD COPTIC SHIMA + { 0x2CDC, 0x2CDD }, // COPTIC CAPITAL LETTER OLD NUBIAN SHIMA + { 0x2CDE, 0x2CDF }, // COPTIC CAPITAL LETTER OLD NUBIAN NGI + { 0x2CE0, 0x2CE1 }, // COPTIC CAPITAL LETTER OLD NUBIAN NYI + { 0x2CE2, 0x2CE3 }, // COPTIC CAPITAL LETTER OLD NUBIAN WAU + { 0x2CEB, 0x2CEC }, // COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI + { 0x2CED, 0x2CEE }, // COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA + { 0xA640, 0xA641 }, // CYRILLIC CAPITAL LETTER ZEMLYA + { 0xA642, 0xA643 }, // CYRILLIC CAPITAL LETTER DZELO + { 0xA644, 0xA645 }, // CYRILLIC CAPITAL LETTER REVERSED DZE + { 0xA646, 0xA647 }, // CYRILLIC CAPITAL LETTER IOTA + { 0xA648, 0xA649 }, // CYRILLIC CAPITAL LETTER DJERV + { 0xA64A, 0xA64B }, // CYRILLIC CAPITAL LETTER MONOGRAPH UK + { 0xA64C, 0xA64D }, // CYRILLIC CAPITAL LETTER BROAD OMEGA + { 0xA64E, 0xA64F }, // CYRILLIC CAPITAL LETTER NEUTRAL YER + { 0xA650, 0xA651 }, // CYRILLIC CAPITAL LETTER YERU WITH BACK YER + { 0xA652, 0xA653 }, // CYRILLIC CAPITAL LETTER IOTIFIED YAT + { 0xA654, 0xA655 }, // CYRILLIC CAPITAL LETTER REVERSED YU + { 0xA656, 0xA657 }, // CYRILLIC CAPITAL LETTER IOTIFIED A + { 0xA658, 0xA659 }, // CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS + { 0xA65A, 0xA65B }, // CYRILLIC CAPITAL LETTER BLENDED YUS + { 0xA65C, 0xA65D }, // CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS + { 0xA65E, 0xA65F }, // CYRILLIC CAPITAL LETTER YN + { 0xA662, 0xA663 }, // CYRILLIC CAPITAL LETTER SOFT DE + { 0xA664, 0xA665 }, // CYRILLIC CAPITAL LETTER SOFT EL + { 0xA666, 0xA667 }, // CYRILLIC CAPITAL LETTER SOFT EM + { 0xA668, 0xA669 }, // CYRILLIC CAPITAL LETTER MONOCULAR O + { 0xA66A, 0xA66B }, // CYRILLIC CAPITAL LETTER BINOCULAR O + { 0xA66C, 0xA66D }, // CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O + { 0xA680, 0xA681 }, // CYRILLIC CAPITAL LETTER DWE + { 0xA682, 0xA683 }, // CYRILLIC CAPITAL LETTER DZWE + { 0xA684, 0xA685 }, // CYRILLIC CAPITAL LETTER ZHWE + { 0xA686, 0xA687 }, // CYRILLIC CAPITAL LETTER CCHE + { 0xA688, 0xA689 }, // CYRILLIC CAPITAL LETTER DZZE + { 0xA68A, 0xA68B }, // CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK + { 0xA68C, 0xA68D }, // CYRILLIC CAPITAL LETTER TWE + { 0xA68E, 0xA68F }, // CYRILLIC CAPITAL LETTER TSWE + { 0xA690, 0xA691 }, // CYRILLIC CAPITAL LETTER TSSE + { 0xA692, 0xA693 }, // CYRILLIC CAPITAL LETTER TCHE + { 0xA694, 0xA695 }, // CYRILLIC CAPITAL LETTER HWE + { 0xA696, 0xA697 }, // CYRILLIC CAPITAL LETTER SHWE + { 0xA722, 0xA723 }, // LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF + { 0xA724, 0xA725 }, // LATIN CAPITAL LETTER EGYPTOLOGICAL AIN + { 0xA726, 0xA727 }, // LATIN CAPITAL LETTER HENG + { 0xA728, 0xA729 }, // LATIN CAPITAL LETTER TZ + { 0xA72A, 0xA72B }, // LATIN CAPITAL LETTER TRESILLO + { 0xA72C, 0xA72D }, // LATIN CAPITAL LETTER CUATRILLO + { 0xA72E, 0xA72F }, // LATIN CAPITAL LETTER CUATRILLO WITH COMMA + { 0xA732, 0xA733 }, // LATIN CAPITAL LETTER AA + { 0xA734, 0xA735 }, // LATIN CAPITAL LETTER AO + { 0xA736, 0xA737 }, // LATIN CAPITAL LETTER AU + { 0xA738, 0xA739 }, // LATIN CAPITAL LETTER AV + { 0xA73A, 0xA73B }, // LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR + { 0xA73C, 0xA73D }, // LATIN CAPITAL LETTER AY + { 0xA73E, 0xA73F }, // LATIN CAPITAL LETTER REVERSED C WITH DOT + { 0xA740, 0xA741 }, // LATIN CAPITAL LETTER K WITH STROKE + { 0xA742, 0xA743 }, // LATIN CAPITAL LETTER K WITH DIAGONAL STROKE + { 0xA744, 0xA745 }, // LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE + { 0xA746, 0xA747 }, // LATIN CAPITAL LETTER BROKEN L + { 0xA748, 0xA749 }, // LATIN CAPITAL LETTER L WITH HIGH STROKE + { 0xA74A, 0xA74B }, // LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY + { 0xA74C, 0xA74D }, // LATIN CAPITAL LETTER O WITH LOOP + { 0xA74E, 0xA74F }, // LATIN CAPITAL LETTER OO + { 0xA750, 0xA751 }, // LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER + { 0xA752, 0xA753 }, // LATIN CAPITAL LETTER P WITH FLOURISH + { 0xA754, 0xA755 }, // LATIN CAPITAL LETTER P WITH SQUIRREL TAIL + { 0xA756, 0xA757 }, // LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER + { 0xA758, 0xA759 }, // LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE + { 0xA75A, 0xA75B }, // LATIN CAPITAL LETTER R ROTUNDA + { 0xA75C, 0xA75D }, // LATIN CAPITAL LETTER RUM ROTUNDA + { 0xA75E, 0xA75F }, // LATIN CAPITAL LETTER V WITH DIAGONAL STROKE + { 0xA760, 0xA761 }, // LATIN CAPITAL LETTER VY + { 0xA762, 0xA763 }, // LATIN CAPITAL LETTER VISIGOTHIC Z + { 0xA764, 0xA765 }, // LATIN CAPITAL LETTER THORN WITH STROKE + { 0xA766, 0xA767 }, // LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER + { 0xA768, 0xA769 }, // LATIN CAPITAL LETTER VEND + { 0xA76A, 0xA76B }, // LATIN CAPITAL LETTER ET + { 0xA76C, 0xA76D }, // LATIN CAPITAL LETTER IS + { 0xA76E, 0xA76F }, // LATIN CAPITAL LETTER CON + { 0xA779, 0xA77A }, // LATIN CAPITAL LETTER INSULAR D + { 0xA77B, 0xA77C }, // LATIN CAPITAL LETTER INSULAR F + { 0xA77D, 0x1D79 }, // LATIN CAPITAL LETTER INSULAR G + { 0xA77E, 0xA77F }, // LATIN CAPITAL LETTER TURNED INSULAR G + { 0xA780, 0xA781 }, // LATIN CAPITAL LETTER TURNED L + { 0xA782, 0xA783 }, // LATIN CAPITAL LETTER INSULAR R + { 0xA784, 0xA785 }, // LATIN CAPITAL LETTER INSULAR S + { 0xA786, 0xA787 }, // LATIN CAPITAL LETTER INSULAR T + { 0xA78B, 0xA78C }, // LATIN CAPITAL LETTER SALTILLO + { 0xFF21, 0xFF41 }, // FULLWIDTH LATIN CAPITAL LETTER A + { 0xFF22, 0xFF42 }, // FULLWIDTH LATIN CAPITAL LETTER B + { 0xFF23, 0xFF43 }, // FULLWIDTH LATIN CAPITAL LETTER C + { 0xFF24, 0xFF44 }, // FULLWIDTH LATIN CAPITAL LETTER D + { 0xFF25, 0xFF45 }, // FULLWIDTH LATIN CAPITAL LETTER E + { 0xFF26, 0xFF46 }, // FULLWIDTH LATIN CAPITAL LETTER F + { 0xFF27, 0xFF47 }, // FULLWIDTH LATIN CAPITAL LETTER G + { 0xFF28, 0xFF48 }, // FULLWIDTH LATIN CAPITAL LETTER H + { 0xFF29, 0xFF49 }, // FULLWIDTH LATIN CAPITAL LETTER I + { 0xFF2A, 0xFF4A }, // FULLWIDTH LATIN CAPITAL LETTER J + { 0xFF2B, 0xFF4B }, // FULLWIDTH LATIN CAPITAL LETTER K + { 0xFF2C, 0xFF4C }, // FULLWIDTH LATIN CAPITAL LETTER L + { 0xFF2D, 0xFF4D }, // FULLWIDTH LATIN CAPITAL LETTER M + { 0xFF2E, 0xFF4E }, // FULLWIDTH LATIN CAPITAL LETTER N + { 0xFF2F, 0xFF4F }, // FULLWIDTH LATIN CAPITAL LETTER O + { 0xFF30, 0xFF50 }, // FULLWIDTH LATIN CAPITAL LETTER P + { 0xFF31, 0xFF51 }, // FULLWIDTH LATIN CAPITAL LETTER Q + { 0xFF32, 0xFF52 }, // FULLWIDTH LATIN CAPITAL LETTER R + { 0xFF33, 0xFF53 }, // FULLWIDTH LATIN CAPITAL LETTER S + { 0xFF34, 0xFF54 }, // FULLWIDTH LATIN CAPITAL LETTER T + { 0xFF35, 0xFF55 }, // FULLWIDTH LATIN CAPITAL LETTER U + { 0xFF36, 0xFF56 }, // FULLWIDTH LATIN CAPITAL LETTER V + { 0xFF37, 0xFF57 }, // FULLWIDTH LATIN CAPITAL LETTER W + { 0xFF38, 0xFF58 }, // FULLWIDTH LATIN CAPITAL LETTER X + { 0xFF39, 0xFF59 }, // FULLWIDTH LATIN CAPITAL LETTER Y + { 0xFF3A, 0xFF5A } // FULLWIDTH LATIN CAPITAL LETTER Z +}; + +static int compare_pair_capital(const void *a, const void *b) { + return (int)(*(unsigned short *)a) + - (int)((struct LatinCapitalSmallPair*)b)->capital; +} + +unsigned short latin_tolower(unsigned short c) { + struct LatinCapitalSmallPair *p = + (struct LatinCapitalSmallPair *)bsearch(&c, SORTED_CHAR_MAP, + sizeof(SORTED_CHAR_MAP) / sizeof(SORTED_CHAR_MAP[0]), + sizeof(SORTED_CHAR_MAP[0]), + compare_pair_capital); + return p ? p->small : c; +} + +} // namespace latinime diff --git a/native/src/char_utils.h b/native/src/char_utils.h new file mode 100644 index 000000000..921ecb4a5 --- /dev/null +++ b/native/src/char_utils.h @@ -0,0 +1,26 @@ +/* + * Copyright (C) 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. + */ + +#ifndef LATINIME_CHAR_UTILS_H +#define LATINIME_CHAR_UTILS_H + +namespace latinime { + +unsigned short latin_tolower(unsigned short c); + +}; // namespace latinime + +#endif // LATINIME_CHAR_UTILS_H diff --git a/dictionary/src/dictionary.cpp b/native/src/dictionary.cpp index 6e6f44182..e75beb5b7 100644 --- a/dictionary/src/dictionary.cpp +++ b/native/src/dictionary.cpp @@ -19,19 +19,12 @@ #include <fcntl.h> #include <sys/mman.h> #include <string.h> -#include <cutils/log.h> - -#include <unicode/uchar.h> - -//#define USE_ASSET_MANAGER - -#ifdef USE_ASSET_MANAGER -#include <utils/AssetManager.h> -#include <utils/Asset.h> -#endif +//#include <cutils/log.h> +#define LOGI #include "dictionary.h" #include "basechars.h" +#include "char_utils.h" #define DEBUG_DICT 0 @@ -176,7 +169,7 @@ Dictionary::toLowerCase(unsigned short c) { if (c >='A' && c <= 'Z') { c |= 32; } else if (c > 127) { - c = u_tolower(c); + c = latin_tolower(c); } return c; } diff --git a/dictionary/src/dictionary.h b/native/src/dictionary.h index 3749f3d88..3749f3d88 100644 --- a/dictionary/src/dictionary.h +++ b/native/src/dictionary.h |