diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..037fe927578c780e87f488a5d134cf69d5cf376e --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# Gradle +.externalNativeBuild/ +.gradle/ +.idea/ +LatinIME.iml +build/ +local.properties diff --git a/Android.bp b/Android.bp index 05598467cfe3f25741c5ad868a286eb6e42c4b6d..3abd6c19f831d641d90357a88e4c7681abd92d86 100644 --- a/Android.bp +++ b/Android.bp @@ -30,8 +30,8 @@ filegroup { "java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java", "java/src/com/android/inputmethod/latin/utils/JniUtils.java", - "java-overridable/src/com/android/inputmethod/latin/define/DebugFlags.java", - "java-overridable/src/com/android/inputmethod/latin/define/DecoderSpecificConstants.java", + "java/src/com/android/inputmethod/latin/define/DebugFlags.java", + "java/src/com/android/inputmethod/latin/define/DecoderSpecificConstants.java", "tests/src/com/android/inputmethod/latin/utils/ByteArrayDictBuffer.java", "tests/src/com/android/inputmethod/latin/makedict/**/*.java", diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..ab631c0efe96c9a8ec9265f24605d3021944a864 --- /dev/null +++ b/build.gradle @@ -0,0 +1,110 @@ +buildscript { + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:3.2.0-beta03' + } +} + +apply plugin: 'com.android.application' + +android { + compileSdkVersion 28 + buildToolsVersion '28.0.0' + + // Required if using classes in android.test.runner + useLibrary 'android.test.runner' + + // Required if using classes in android.test.base + useLibrary 'android.test.base' + + // Required if using classes in android.test.mock + useLibrary 'android.test.mock' + + defaultConfig { + minSdkVersion 21 + targetSdkVersion 28 + versionName "1.0" + + applicationId 'com.android.inputmethod.latin' + testApplicationId 'com.android.inputmethod.latin.tests' + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables.useSupportLibrary = false + + signingConfig signingConfigs.debug + } + + signingConfigs { + debug { + storeFile file("java/shared.keystore") + } + } + + buildTypes { + debug { + minifyEnabled false + } + release { + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.flags' + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + flavorDimensions "default" + + sourceSets { + main { + res.srcDirs = ['java/res'] + java.srcDirs = ['common/src', 'java/src'] + manifest.srcFile 'java/AndroidManifest.xml' + } + + androidTest { + res.srcDirs = ['tests/res'] + java.srcDirs = ['tests/src'] + manifest.srcFile "tests/AndroidManifest.xml" + } + } + + lintOptions { + checkReleaseBuilds false + } + + aaptOptions { + noCompress 'dict' + } + + externalNativeBuild { + ndkBuild { + path 'native/jni/Android.mk' + } + } +} + +repositories { + maven { url "../../../prebuilts/fullsdk-darwin/extras/android/m2repository" } + maven { url "../../../prebuilts/fullsdk-linux/extras/android/m2repository" } + mavenCentral() + google() + jcenter() +} + +dependencies { + implementation 'androidx.legacy:legacy-support-v4:+' + implementation 'com.google.code.findbugs:jsr305:3.0.2' + + testImplementation 'junit:junit:4.12' + androidTestImplementation "org.mockito:mockito-core:1.9.5" + androidTestImplementation 'com.google.dexmaker:dexmaker:1.2' + androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test:rules:1.0.2' + androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3' + androidTestImplementation "com.android.support:support-annotations:27.1.1" +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..13372aef5e24af05341d49695ee84e5f9b594659 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000000000000000000000000000000000..33c5632befd78e0544163b2ce8c32bcf5d434ec3 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sat Jun 23 15:45:27 PDT 2018 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000000000000000000000000000000000000..9d82f78915133e1c35a6ea51252590fb38efac2f --- /dev/null +++ b/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000000000000000000000000000000000..aec99730b4e8fcd90b57a0e8e01544fea7c31a89 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/java/Android.bp b/java/Android.bp index f6dc596610a2f23dc1ee7352e69553c8f575dd77..f41e94af0c46eae81853dc7e7f9e87f77df59926 100644 --- a/java/Android.bp +++ b/java/Android.bp @@ -15,10 +15,7 @@ android_app { name: "LatinIME", - srcs: [ - "src/**/*.java", - ":LatinIME_java-overridable", - ], + srcs: ["src/**/*.java"], certificate: "shared", @@ -26,10 +23,9 @@ android_app { static_libs: [ "android-common", - "inputmethod-common", "jsr305", "latinime-common", - "android-support-v4", + "androidx.legacy_legacy-support-v4", ], // Do not compress dictionary files to mmap dict data runtime @@ -38,6 +34,8 @@ android_app { // Include all the resources regardless of system supported locales aapt_include_all_resources: true, + min_sdk_version: "14", + target_sdk_version: "23", sdk_version: "current", product_specific: true, diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml index dedece55cb4d2dfc8bdd7d350aee5f6ff4e63835..79d337310a72c18835b255cbce2f93387f39fe97 100644 --- a/java/AndroidManifest.xml +++ b/java/AndroidManifest.xml @@ -16,9 +16,10 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" coreApp="true" - package="com.android.inputmethod.latin"> + package="com.android.inputmethod.latin" + android:versionCode="28"> - <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" /> + <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> diff --git a/java/res/layout/emoji_palettes_view.xml b/java/res/layout/emoji_palettes_view.xml index 26cc042ab8487c9c308e01765fe51463c078c7a3..7c5f6c0a6eb95595ab27705c8b8ec6393fb19952 100644 --- a/java/res/layout/emoji_palettes_view.xml +++ b/java/res/layout/emoji_palettes_view.xml @@ -71,7 +71,7 @@ android:soundEffectsEnabled="false" android:contentDescription="@string/spoken_description_delete" /> </LinearLayout> - <android.support.v4.view.ViewPager + <androidx.viewpager.widget.ViewPager android:id="@+id/emoji_keyboard_pager" android:layout_width="match_parent" android:layout_height="wrap_content" /> diff --git a/java/res/layout/user_dictionary_add_word.xml b/java/res/layout/user_dictionary_add_word.xml deleted file mode 100644 index 615fde589e278b0ba2cfce4539c36f3b7f9e3aa2..0000000000000000000000000000000000000000 --- a/java/res/layout/user_dictionary_add_word.xml +++ /dev/null @@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2013 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. - --> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/user_dict_settings_add_dialog_top" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" > - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" > - - <com.android.internal.widget.DialogTitle - style="?android:attr/windowTitleStyle" - android:layout_width="match_parent" - android:layout_height="64dip" - android:layout_marginEnd="16dip" - android:layout_marginStart="16dip" - android:ellipsize="end" - android:gravity="center_vertical|start" - android:singleLine="true" - android:text="@string/user_dict_settings_add_dialog_title" /> - - <View - android:layout_width="match_parent" - android:layout_height="2dip" - android:background="@android:color/holo_blue_light" /> - </LinearLayout> - - <EditText - android:id="@+id/user_dictionary_add_word_text" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_gravity="fill_horizontal|center_vertical" - android:layout_marginBottom="8dip" - android:layout_marginStart="8dip" - android:layout_marginTop="8dip" - android:hint="@string/user_dict_settings_add_word_hint" - android:imeOptions="flagNoFullscreen" - android:inputType="textNoSuggestions" - android:maxLength="@integer/config_user_dictionary_max_word_length" > - - <requestFocus /> - </EditText> - - <LinearLayout - style="?android:attr/buttonBarStyle" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:measureWithLargestChild="true" - android:orientation="horizontal" > - - <Button - style="?android:attr/buttonBarButtonStyle" - android:layout_width="0dip" - android:layout_height="wrap_content" - android:layout_gravity="start" - android:layout_weight="1" - android:maxLines="2" - android:onClick="onClickCancel" - android:text="@string/cancel" - android:textSize="14sp" /> - - <Button - style="?android:attr/buttonBarButtonStyle" - android:layout_width="0dip" - android:layout_height="wrap_content" - android:layout_gravity="end" - android:layout_weight="1" - android:maxLines="2" - android:onClick="onClickConfirm" - android:text="@string/user_dict_settings_add_dialog_confirm" - android:textSize="14sp" /> - </LinearLayout> - -</LinearLayout> \ No newline at end of file diff --git a/java/res/values-ar/strings-emoji-descriptions.xml b/java/res/values-ar/strings-emoji-descriptions.xml index b314d2418991415045f5fb6cb917a3c425e92511..03d0aca7d05008b9cba12ae5d2b8d7a006d5cb0d 100644 --- a/java/res/values-ar/strings-emoji-descriptions.xml +++ b/java/res/values-ar/strings-emoji-descriptions.xml @@ -1109,7 +1109,7 @@ <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"ØاÙلة ترولي"</string> <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"موق٠ØاÙلات"</string> <string name="spoken_emoji_1F690" msgid="8080964620200195262">"ØاÙلة صغيرة"</string> - <string name="spoken_emoji_1F691" msgid="999173032408730501">"سيارة إسعاÙ"</string> + <string name="spoken_emoji_1F691" msgid="999173032408730501">"إسعاÙ"</string> <string name="spoken_emoji_1F692" msgid="1712863785341849487">"سيارة إطÙاء"</string> <string name="spoken_emoji_1F693" msgid="7987109037389768934">"سيارة شرطة"</string> <string name="spoken_emoji_1F694" msgid="6061658916653884608">"سيارة شرطة عن قرب"</string> diff --git a/java/res/values-ar/strings-talkback-descriptions.xml b/java/res/values-ar/strings-talkback-descriptions.xml index a17f340675accd7e9c5c9e2fcc4d8de2edc30bd5..e5bc479b32b761730bce52b2c929e72ffcd4778a 100644 --- a/java/res/values-ar/strings-talkback-descriptions.xml +++ b/java/res/values-ar/strings-talkback-descriptions.xml @@ -47,8 +47,8 @@ <string name="spoken_description_language_switch" msgid="6818666779313544553">"تبديل اللغة"</string> <string name="spoken_description_action_next" msgid="431761808119616962">"التالي"</string> <string name="spoken_description_action_previous" msgid="2919072174697865110">"السابق"</string> - <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"â€ØªÙ… تمكين Shift"</string> - <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"â€ØªÙ… تمكين Caps lock"</string> + <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"â€ØªÙ… تÙعيل Shift"</string> + <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"â€ØªÙ… تÙعيل Caps lock"</string> <string name="spoken_description_mode_symbol" msgid="111186851131446691">"وضع الرموز"</string> <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"المزيد من وضع الرموز"</string> <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"وضع الأØرÙ"</string> diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml index bab2b7ba7982eec9a57b9edd88a34d546df267e7..8b76c511018238b31b6a1b0ad5eafa0f95598496 100644 --- a/java/res/values-ar/strings.xml +++ b/java/res/values-ar/strings.xml @@ -33,7 +33,7 @@ <string name="settings_screen_correction" msgid="1616818407747682955">"تصØÙŠØ Ø§Ù„Ù†Øµ"</string> <string name="settings_screen_advanced" msgid="7472408607625972994">"الإعدادات المتقدمة"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"المظهر"</string> - <string name="enable_split_keyboard" msgid="4177264923999493614">"هل تريد تمكين لوØØ© المÙØ§ØªÙŠØ Ø§Ù„Ù…Ù‚Ø³Ù…Ø©"</string> + <string name="enable_split_keyboard" msgid="4177264923999493614">"هل تريد تÙعيل لوØØ© المÙØ§ØªÙŠØ Ø§Ù„Ù…Ù‚Ø³Ù…Ø©"</string> <string name="cloud_sync_title" msgid="8579271074443847055">"â€Ù…زامنة لوØØ© Ù…ÙØ§ØªÙŠØ Google"</string> <string name="cloud_sync_summary" msgid="7684887161145650857">"تم تشغيل المزامنة"</string> <string name="cloud_sync_summary_disabled" msgid="4553338970382825796">"يمكنك مزامنة قاموسك الشخصي على جميع الأجهزة"</string> @@ -49,18 +49,18 @@ <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"التبديل إلى أسلوب إدخال آخر"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"يغطي Ù…ÙØªØ§Ø ØªØ¨Ø¯ÙŠÙ„ اللغات أساليب الإدخال الأخرى أيضًا"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"Ù…ÙØªØ§Ø ØªØ¨Ø¯ÙŠÙ„ اللغة"</string> - <string name="show_language_switch_key_summary" msgid="7343403647474265713">"يظهر عندما يتم تمكين لغات الإدخال متعددة"</string> + <string name="show_language_switch_key_summary" msgid="7343403647474265713">"يظهر عندما يتم تÙعيل لغات الإدخال متعددة"</string> <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"تأخير إزالة الناÙذة المنبثقة الأساسية"</string> <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"بلا تأخير"</string> <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"تلقائي"</string> <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> مللي ثانية"</string> - <string name="settings_system_default" msgid="6268225104743331821">"الإعداد الاÙتراضي للنظام"</string> + <string name="settings_system_default" msgid="6268225104743331821">"الإعداد التلقائي للنظام"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"Ø§Ù‚ØªØ±Ø§Ø Ø£Ø³Ù…Ø§Ø¡ جهات الاتصال"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"استخدام الأسماء من جهات الاتصال للاقتراØات والتصØÙŠØات"</string> <string name="use_personalized_dicts" msgid="5167396352105467626">"اقتراØات مخصصة"</string> <string name="enable_metrics_logging" msgid="5506372337118822837">"تØسين <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="use_double_space_period" msgid="8781529969425082860">"نقطة المساÙØ© المزدوجة"</string> - <string name="use_double_space_period_summary" msgid="6532892187247952799">"يؤدي النقر نقرًا مزدوجًا على Ù…ÙØªØ§Ø Ø§Ù„Ù…Ø³Ø§ÙØ© إلى إدخال نقطة متبوعة بمساÙØ©"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"يؤدي النقر مرّتين على Ù…ÙØªØ§Ø Ø§Ù„Ù…Ø³Ø§ÙØ© إلى إدخال نقطة متبوعة بمساÙØ©"</string> <string name="auto_cap" msgid="1719746674854628252">"Ø£Øر٠كبيرة تلقائيًا"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"كتابة الØر٠الأول من كل جملة بØر٠كبير."</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"القاموس الشخصي"</string> @@ -78,7 +78,7 @@ <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"شديد الصرامة"</string> <string name="bigram_prediction" msgid="1084449187723948550">"اقتراØات الكلمات التالية"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"استخدام الكلمة السابقة ÙÙŠ تقديم الاقتراØات"</string> - <string name="gesture_input" msgid="826951152254563827">"تمكين الكتابة بالإيماءة"</string> + <string name="gesture_input" msgid="826951152254563827">"تÙعيل الكتابة بالإيماءة"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"إدخال كلمة من خلال التمرير على الأØرÙ"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"عرض مسار الإيماءة"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"معاينة نصوص متØركة ديناميكية"</string> @@ -86,7 +86,7 @@ <string name="gesture_space_aware" msgid="2078291600664682496">"عبارة الإيماء"</string> <string name="gesture_space_aware_summary" msgid="4371385818348528538">"إدخال مساÙات خلال الإيماءات من خلال تمرير Ù…ÙØªØ§Ø Ø§Ù„Ù…Ø³Ø§ÙØ©"</string> <string name="voice_input" msgid="3583258583521397548">"Ù…ÙØªØ§Ø Ø§Ù„Ø¥Ø¯Ø®Ø§Ù„ الصوتي"</string> - <string name="voice_input_disabled_summary" msgid="6323489602945135165">"لم يتم تمكين أي أساليب إدخال صوتي. تØقق من إعدادات اللغات والإدخال."</string> + <string name="voice_input_disabled_summary" msgid="6323489602945135165">"لم يتم تÙعيل أي أساليب إدخال صوتي. تØقق من إعدادات اللغات والإدخال."</string> <string name="configure_input_method" msgid="373356270290742459">"تهيئة طرق الإدخال"</string> <string name="language_selection_title" msgid="3666971864764478269">"اللغات"</string> <string name="help_and_feedback" msgid="5328219371839879161">"المساعدة والتعليقات"</string> @@ -130,25 +130,25 @@ <string name="save" msgid="7646738597196767214">"ØÙظ"</string> <string name="subtype_locale" msgid="8576443440738143764">"اللغة"</string> <string name="keyboard_layout_set" msgid="4309233698194565609">"التخطيط"</string> - <string name="custom_input_style_note_message" msgid="8826731320846363423">"يجب تمكين نمط الإدخال المخصص قبل استخدامه. هل تريد تمكينه الآن؟"</string> - <string name="enable" msgid="5031294444630523247">"تمكين"</string> + <string name="custom_input_style_note_message" msgid="8826731320846363423">"يجب تÙعيل نمط الإدخال المخصص قبل استخدامه. هل تريد تÙعيله الآن؟"</string> + <string name="enable" msgid="5031294444630523247">"تÙعيل"</string> <string name="not_now" msgid="6172462888202790482">"ليس الآن"</string> <string name="custom_input_style_already_exists" msgid="8008728952215449707">"نمط الإدخال ذاته موجود من قبل: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"مدة اهتزاز الضغط على المÙاتيØ"</string> <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"مستوى صوت الضغط على المÙاتيØ"</string> - <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"تأخير الضغط الطويل للمÙاتيØ"</string> + <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"مهلة الضغط الطويل على المÙاتيØ"</string> <string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"الرموز التعبيرية للوØØ© Ù…ÙØ§ØªÙŠØ Ùعلية"</string> <string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"â€Ù…ÙØªØ§Ø Alt الÙعلي يعرض لوØØ© الرموز التعبيرية"</string> - <string name="button_default" msgid="3988017840431881491">"الاÙتراضية"</string> + <string name="button_default" msgid="3988017840431881491">"التلقائية"</string> <string name="setup_welcome_title" msgid="6112821709832031715">"أهلاً بك ÙÙŠ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_welcome_additional_description" msgid="8150252008545768953">"مع الكتابة بالإشارة"</string> <string name="setup_start_action" msgid="8936036460897347708">"بدء الاستخدام"</string> <string name="setup_next_action" msgid="371821437915144603">"الخطوة التالية"</string> <string name="setup_steps_title" msgid="6400373034871816182">"إعداد <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> - <string name="setup_step1_title" msgid="3147967630253462315">"تمكين <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> + <string name="setup_step1_title" msgid="3147967630253462315">"تÙعيل <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step1_instruction" msgid="4295448056733329661">"ÙŠÙرجى تØديد \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" من خلال إعدادات اللغات والإدخال؛ وذلك Ù„Ù„Ø³Ù…Ø§Ø Ø¨ØªØ´ØºÙŠÙ„ هذا التطبيق على جهازك."</string> - <string name="setup_step1_finished_instruction" msgid="8701441895377434947">"تم تمكين <xliff:g id="APPLICATION_NAME">%s</xliff:g> من قبل ÙÙŠ إعدادات اللغات والإدخال، وبالتالي هذه الخطوة مكتملة. انتقل إلى الخطوة التالية."</string> - <string name="setup_step1_action" msgid="4366513534999901728">"تمكين ÙÙŠ الإعدادات"</string> + <string name="setup_step1_finished_instruction" msgid="8701441895377434947">"تم تÙعيل <xliff:g id="APPLICATION_NAME">%s</xliff:g> من قبل ÙÙŠ إعدادات اللغات والإدخال، وبالتالي هذه الخطوة مكتملة. انتقل إلى الخطوة التالية."</string> + <string name="setup_step1_action" msgid="4366513534999901728">"تÙعيل ÙÙŠ الإعدادات"</string> <string name="setup_step2_title" msgid="6860725447906690594">"التبديل إلى <xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string> <string name="setup_step2_instruction" msgid="9141481964870023336">"بعد ذلك، Øدد \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" باعتباره أسلوب إدخال النص النشط."</string> <string name="setup_step2_action" msgid="1660330307159824337">"تبديل أساليب الإدخال"</string> @@ -170,7 +170,7 @@ <string name="dictionary_available" msgid="4728975345815214218">"القاموس متاØ"</string> <string name="dictionary_downloading" msgid="2982650524622620983">"يتم Øاليًا التنزيل"</string> <string name="dictionary_installed" msgid="8081558343559342962">"تم التثبيت"</string> - <string name="dictionary_disabled" msgid="8950383219564621762">"مثبت، معطل"</string> + <string name="dictionary_disabled" msgid="8950383219564621762">"مثبت، غير Ù…Ùعّل"</string> <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"مشكلة ÙÙŠ الاتصال بخدمة القاموس"</string> <string name="no_dictionaries_available" msgid="8039920716566132611">"لا تتوÙر أي قواميس"</string> <string name="check_for_updates_now" msgid="8087688440916388581">"تØديث"</string> @@ -204,7 +204,7 @@ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"تعديل كلمة"</string> <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"تعديل"</string> <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"ØØ°Ù"</string> - <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"لا تتوÙر أي كلمات ÙÙŠ قاموس المستخدم، ولإضاÙØ© كلمة، انقر على زر الإضاÙØ© (+)."</string> + <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"ليس هناك أي كلمات ÙÙŠ قاموس المستخدم. لإضاÙØ© كلمة، انقر على زر الإضاÙØ© (+)."</string> <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"لجميع اللغات"</string> <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"مزيد من اللغات..."</string> <string name="user_dict_settings_delete" msgid="110413335187193859">"ØØ°Ù"</string> diff --git a/java/res/values-as/strings-action-keys.xml b/java/res/values-as/strings-action-keys.xml new file mode 100644 index 0000000000000000000000000000000000000000..1fcce7bdfc59e9bf8b42c167f3359f649b898a49 --- /dev/null +++ b/java/res/values-as/strings-action-keys.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2013, 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="label_go_key" msgid="4033615332628671065">"যাওক"</string> + <string name="label_next_key" msgid="5586407279258592635">"পৰৱৰà§à¦¤à§€"</string> + <string name="label_previous_key" msgid="1421141755779895275">"আগৰ"</string> + <string name="label_done_key" msgid="7564866296502630852">"হ’ল"</string> + <string name="label_send_key" msgid="482252074224462163">"পঠিয়াওক"</string> + <string name="label_search_key" msgid="7965186050435796642">"সনà§à¦§à¦¾à¦¨"</string> + <string name="label_pause_key" msgid="2225922926459730642">"পজ কৰক"</string> + <string name="label_wait_key" msgid="5891247853595466039">"ৰ\'ব"</string> +</resources> diff --git a/java/res/values-as/strings-appname.xml b/java/res/values-as/strings-appname.xml new file mode 100644 index 0000000000000000000000000000000000000000..8874600db54ec88ae299aac576bb8964bf6e61fa --- /dev/null +++ b/java/res/values-as/strings-appname.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2013, 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. +*/ + --> + +<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="5940510615957428904">"Android কীব\'ৰà§à¦¡ (AOSP)"</string> + <string name="spell_checker_service_name" msgid="1254221805440242662">"Android বানান পৰীকà§à¦·à¦• (AOSP)"</string> + <string name="english_ime_settings" msgid="5760361067176802794">"Android কীব\'ৰà§à¦¡à§° ছেটিংসমূহ (AOSP)"</string> + <string name="android_spell_checker_settings" msgid="6123949487832861885">"Android বানান পৰীকà§à¦·à¦•à§° ছেটিংসমূহ (AOSP)"</string> +</resources> diff --git a/java/res/values-as/strings-config-important-notice.xml b/java/res/values-as/strings-config-important-notice.xml new file mode 100644 index 0000000000000000000000000000000000000000..3af48f3111aff5238cd7a10c1e6a32745e0611eb --- /dev/null +++ b/java/res/values-as/strings-config-important-notice.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2014, 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="use_personalized_dicts_summary" msgid="590432261305469627">"পৰামৰà§à¦¶à¦¾à§±à¦²à§€ উনà§à¦¨à¦¤ কৰিবলৈ যোগাযোগ পদà§à¦§à¦¤à¦¿à¦¸à¦®à§‚হৰ পৰা আৰৠটাইপ কৰা ডেটাৰ পৰা শিকক"</string> +</resources> diff --git a/java/res/values-as/strings-emoji-descriptions.xml b/java/res/values-as/strings-emoji-descriptions.xml new file mode 100644 index 0000000000000000000000000000000000000000..6f84f7675c7c3cdbeef00f20346dbac4bcbd6b6f --- /dev/null +++ b/java/res/values-as/strings-emoji-descriptions.xml @@ -0,0 +1,1756 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2014, 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. +*/ + --> + +<!-- + These Emoji symbols are unsupported by TTS. + TODO: Remove this file when TTS/TalkBack support these Emoji symbols. + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="spoken_emoji_00A9" msgid="2859822817116803638">"সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à§°à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_00AE" msgid="7708335454134589027">"পঞà§à¦œà§€à¦•à§ƒà¦¤ চিহà§à¦¨"</string> + <string name="spoken_emoji_203C" msgid="153340916701508663">"দà§à¦¬à§ˆà¦¤ à¦à¦¾à§±à¦¬à§‹à¦§à¦• চিহà§à¦¨"</string> + <string name="spoken_emoji_2049" msgid="4877256448299555371">"à¦à¦¾à§±à¦¬à§‹à¦§à¦• আৰৠপà§à§°à¦¶à§à¦¨à¦¬à§‹à¦§à¦• চিহà§à¦¨"</string> + <string name="spoken_emoji_2122" msgid="9188440722954720429">"টà§à§°à§‡à¦¡ মাৰà§à¦•à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_2139" msgid="9114342638917304327">"তথà§à¦¯à§° উৎস"</string> + <string name="spoken_emoji_2194" msgid="8055202727034946680">"সোঠআৰৠবাওঠউà¦à¦¯à¦¼ দিশ নিরà§à¦¦à§‡à¦¶ কৰা কাà¦à¦¡à¦¼à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_2195" msgid="8028122253301087407">"ওপৰ তল উà¦à¦¯à¦¼ দিশ নিদেরà§à¦¶ কৰা কাà¦à¦¡à¦¼à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_2196" msgid="4019164898967854363">"উতà§à¦¤à§°-পশà§à¦šà¦¿à¦®à¦®à§à§±à¦¾ কাà¦à¦¡à¦¼"</string> + <string name="spoken_emoji_2197" msgid="4255723717709017801">"উতà§à¦¤à§°-পূবমà§à§±à¦¾ কাà¦à¦¡à¦¼"</string> + <string name="spoken_emoji_2198" msgid="1452063451313622090">"দকà§à¦·à¦¿à¦£-পূবমà§à§±à¦¾ কাà¦à¦¡à¦¼"</string> + <string name="spoken_emoji_2199" msgid="6942722693368807849">"দকà§à¦·à¦¿à¦£-পশà§à¦šà¦¿à¦®à¦®à§à§±à¦¾ কাà¦à¦¡à¦¼"</string> + <string name="spoken_emoji_21A9" msgid="5204750172335111188">"হà§à¦• সহ বাওà¦à¦®à§à§±à¦¾ কাà¦à¦¡à¦¼"</string> + <string name="spoken_emoji_21AA" msgid="3950259884359247006">"সোà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা হà§à¦• থকা কাà¦à¦¡à¦¼à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_231A" msgid="6751448803233874993">"হাতঘড়ী"</string> + <string name="spoken_emoji_231B" msgid="5956428809948426182">"বালি-ঘড়ী"</string> + <!-- no translation found for spoken_emoji_2328 (8004906090359197446) --> + <skip /> + <!-- no translation found for spoken_emoji_23CF (8619437871899719070) --> + <skip /> + <string name="spoken_emoji_23E9" msgid="4022497733535162237">"ক\'লা ৰঙৰ সোà¦à¦«à¦¾à¦²à§‡ নিৰà§à¦¦à§‡à¦¶ কৰা দà§à¦¬à§ˆà¦¤ তà§à§°à¦¿à¦à§à¦œ"</string> + <string name="spoken_emoji_23EA" msgid="2251396938087774944">"ক\'লা ৰঙৰ বাওà¦à¦«à¦¾à¦²à§‡ নিৰà§à¦¦à§‡à¦¶ কৰা দà§à¦¬à§ˆà¦¤ তà§à§°à¦¿à¦à§à¦œ"</string> + <string name="spoken_emoji_23EB" msgid="3746885195641491865">"ক\'লা ৰঙৰ ওপৰফালে নিৰà§à¦¦à§‡à¦¶ কৰা দà§à¦¬à§ˆà¦¤ তà§à§°à¦¿à¦à§à¦œ"</string> + <string name="spoken_emoji_23EC" msgid="7852372752901163416">"ক\'লা ৰঙৰ তলফালে নিৰà§à¦¦à§‡à¦¶ কৰা দà§à¦¬à§ˆà¦¤ তà§à§°à¦¿à¦à§à¦œ"</string> + <!-- no translation found for spoken_emoji_23ED (4064850193044573080) --> + <skip /> + <!-- no translation found for spoken_emoji_23EE (9014449600450857793) --> + <skip /> + <!-- no translation found for spoken_emoji_23EF (3823680845887006998) --> + <skip /> + <string name="spoken_emoji_23F0" msgid="8474219588750627870">"à¦à¦²à¦¾à§°à§à¦® ঘড়ী"</string> + <!-- no translation found for spoken_emoji_23F1 (2303619241672210658) --> + <skip /> + <!-- no translation found for spoken_emoji_23F2 (2178084138229786936) --> + <skip /> + <string name="spoken_emoji_23F3" msgid="166900119581024371">"সৰি পৰি থকা বালিৰে বালি-ঘড়ী"</string> + <!-- no translation found for spoken_emoji_23F8 (1924914079210161141) --> + <skip /> + <!-- no translation found for spoken_emoji_23F9 (1268967989320035023) --> + <skip /> + <!-- no translation found for spoken_emoji_23FA (3359902126862990795) --> + <skip /> + <string name="spoken_emoji_24C2" msgid="3948348737566038470">"বৃতà§à¦¤à§° à¦à¦¿à¦¤à§°à¦¤ থকা লেটিন বৰফলা বৰà§à¦£ \'m\'"</string> + <string name="spoken_emoji_25AA" msgid="7865181015100227349">"ক\'লা ৰঙৰ সৰৠবৰà§à¦—"</string> + <string name="spoken_emoji_25AB" msgid="6446532820937381457">"বগা ৰঙৰ সৰৠবরà§à¦—"</string> + <string name="spoken_emoji_25B6" msgid="2423897708496040947">"ক\'লা ৰঙৰ সোà¦à¦«à¦¾à¦²à§‡ নিৰà§à¦¦à§‡à¦¶ কৰা তà§à§°à¦¿à¦à§à¦œ"</string> + <string name="spoken_emoji_25C0" msgid="3595083440074484934">"ক\'লা ৰঙৰ বাওà¦à¦«à¦¾à¦²à§‡ নিৰà§à¦¦à§‡à¦¶ কৰা তà§à§°à¦¿à¦à§à¦œ"</string> + <string name="spoken_emoji_25FB" msgid="4838691986881215419">"বগা ৰঙৰ মজলীয়া আকাৰৰ বরà§à¦—"</string> + <string name="spoken_emoji_25FC" msgid="7008859564991191050">"ক\'লা ৰঙৰ মজলীয়া আকাৰৰ বরà§à¦—"</string> + <string name="spoken_emoji_25FD" msgid="7673439755069217479">"বগা ৰঙৰ মজলীয়া আকাৰৰ সৰৠবরà§à¦—"</string> + <string name="spoken_emoji_25FE" msgid="6782214109919768923">"ক\'লা ৰঙৰ মধà§à¦¯à¦®à§€à¦¯à¦¼à¦¾ সৰৠবৰà§à¦—"</string> + <string name="spoken_emoji_2600" msgid="2272722634618990413">"ৰশà§à¦®à¦¿à¦¸à¦¹ ক\'লা সূৰà§à¦¯"</string> + <string name="spoken_emoji_2601" msgid="6205136889311537150">"ডাৱৰ"</string> + <!-- no translation found for spoken_emoji_2602 (6293136501817877234) --> + <skip /> + <!-- no translation found for spoken_emoji_2603 (7285313121103197207) --> + <skip /> + <string name="spoken_emoji_2604" msgid="8632808648689048735">"ধূমকেতà§"</string> + <string name="spoken_emoji_260E" msgid="8670395193046424238">"ক\'লা ৰঙৰ টেলিফ\'ন"</string> + <string name="spoken_emoji_2611" msgid="4530550203347054611">"শà§à¦¦à§à¦§ চিনযà§à¦•à§à¦¤ বেলট বাকচ"</string> + <string name="spoken_emoji_2614" msgid="1612791247861229500">"বৰষà§à¦£à§° টোপাল পৰা ছাতি"</string> + <string name="spoken_emoji_2615" msgid="3320562382424018588">"গৰম পানীয়"</string> + <!-- no translation found for spoken_emoji_2618 (5581533965699965354) --> + <skip /> + <string name="spoken_emoji_261D" msgid="4690554173549768467">"ওপৰলৈ নিরà§à¦¦à§‡à¦¶ কৰি থকা তরà§à¦œà¦¨à§€ আঙà§à¦²à¦¿à§° চিহà§à¦¨"</string> + <!-- no translation found for spoken_emoji_2620 (4434290857196023657) --> + <skip /> + <!-- no translation found for spoken_emoji_2622 (2534880989000210921) --> + <skip /> + <!-- no translation found for spoken_emoji_2623 (141484483765762677) --> + <skip /> + <!-- no translation found for spoken_emoji_2626 (2857954123507187408) --> + <skip /> + <!-- no translation found for spoken_emoji_262A (6726891928565290372) --> + <skip /> + <!-- no translation found for spoken_emoji_262E (3189887039765290178) --> + <skip /> + <!-- no translation found for spoken_emoji_262F (7138150472623738307) --> + <skip /> + <!-- no translation found for spoken_emoji_2638 (9073003565602256277) --> + <skip /> + <string name="spoken_emoji_2639" msgid="6128305824180156835">"খঙাল মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_263A" msgid="3170094381521989300">"হাà¦à¦¹à¦¿ থকা শà§à¦à§à§° মà§à¦–"</string> + <string name="spoken_emoji_2648" msgid="4621241062667020673">"মেষ ৰাশি"</string> + <string name="spoken_emoji_2649" msgid="7694461245947059086">"বৃষ ৰাশি"</string> + <string name="spoken_emoji_264A" msgid="1258074605878705030">"মিথà§à¦¨ ৰাশি"</string> + <string name="spoken_emoji_264B" msgid="4409219914377810956">"কৰà§à¦•à¦Ÿ ৰাশি"</string> + <string name="spoken_emoji_264C" msgid="6520255367817054163">"সিংহ ৰাশি"</string> + <string name="spoken_emoji_264D" msgid="1504758945499854018">"কনà§à¦¯à¦¾ ৰাশি"</string> + <string name="spoken_emoji_264E" msgid="2354847104530633519">"তà§à¦²à¦¾ ৰাশি"</string> + <string name="spoken_emoji_264F" msgid="5822933280406416112">"বৃশà§à¦šà¦¿à¦• ৰাশি"</string> + <string name="spoken_emoji_2650" msgid="4832481156714796163">"ধনৠৰাশি"</string> + <string name="spoken_emoji_2651" msgid="840953134601595090">"মকৰ ৰাশি"</string> + <string name="spoken_emoji_2652" msgid="3586925968718775281">"কà§à¦®à§à¦ ৰাশি"</string> + <string name="spoken_emoji_2653" msgid="8420547731496254492">"মীন ৰাশি"</string> + <string name="spoken_emoji_2660" msgid="4541170554542412536">"ক\'লা ইসà§à¦•à¦¾à¦ªà¦¨"</string> + <string name="spoken_emoji_2663" msgid="3669352721942285724">"ক\'লা চিৰিতন"</string> + <string name="spoken_emoji_2665" msgid="6347941599683765843">"ক\'লা ৰহিতন"</string> + <string name="spoken_emoji_2666" msgid="8296769213401115999">"ক\'লা ৰোহিতন"</string> + <string name="spoken_emoji_2668" msgid="7063148281053820386">"গৰম পানী উহ"</string> + <string name="spoken_emoji_267B" msgid="21716857176812762">"ক\'লা ৰঙৰ নৱীকৰণযোগà§à¦¯ সামগà§à§°à§€à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_267F" msgid="8833496533226475443">"হà§à¦‡à¦²à¦šà§à¦šà§‡à¦¯à¦¼à¦¾à§°à§° পà§à§°à¦¤à§€à¦•"</string> + <!-- no translation found for spoken_emoji_2692 (633276166375803852) --> + <skip /> + <string name="spoken_emoji_2693" msgid="7443148847598433088">"লংগৰ"</string> + <!-- no translation found for spoken_emoji_2694 (4114117110598973648) --> + <skip /> + <!-- no translation found for spoken_emoji_2696 (7920282042498350920) --> + <skip /> + <!-- no translation found for spoken_emoji_2697 (7576307101162421601) --> + <skip /> + <!-- no translation found for spoken_emoji_2699 (8525225054232323125) --> + <skip /> + <!-- no translation found for spoken_emoji_269B (9146644473418235977) --> + <skip /> + <string name="spoken_emoji_269C" msgid="1883421369883009835">"ফà§à¦²à¦¾à§°-দà§à¦¯-লি"</string> + <string name="spoken_emoji_26A0" msgid="6272635532992727510">"সতৰà§à¦•à¦¬à¦¾à¦£à§€à§° চিন"</string> + <string name="spoken_emoji_26A1" msgid="5604749644693339145">"উচà§à¦š কà§à¦·à¦®à¦¤à¦¾à¦¸à¦®à§à¦ªà¦¨à§à¦¨ বৈদà§à¦¯à§à¦¤à¦¿à¦• সামগà§à§°à§€à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_26AA" msgid="8005748091690377153">"বগা ৰঙৰ মধà§à¦¯à¦®à§€à¦¯à¦¼à¦¾ বৃতà§à¦¤"</string> + <string name="spoken_emoji_26AB" msgid="1655910278422753244">"মধà§à¦¯à¦®à§€à¦¯à¦¼à¦¾ ক\'লা বৃতà§à¦¤"</string> + <!-- no translation found for spoken_emoji_26B0 (5742048235215593821) --> + <skip /> + <!-- no translation found for spoken_emoji_26B1 (2096529437455909562) --> + <skip /> + <string name="spoken_emoji_26BD" msgid="1545218197938889737">"ফà§à¦Ÿà¦¬à¦²"</string> + <string name="spoken_emoji_26BE" msgid="8959760533076498209">"বে\'ছবল"</string> + <string name="spoken_emoji_26C4" msgid="3045791757044255626">"তà§à¦·à¦¾à§° অবিহনে তà§à¦·à¦¾à§° মানৱ"</string> + <string name="spoken_emoji_26C5" msgid="5580129409712578639">"ডাৱৰৰ পিছফালে সূরà§à¦¯ থকা দৃশà§à¦¯"</string> + <!-- no translation found for spoken_emoji_26C8 (4641925705576445058) --> + <skip /> + <string name="spoken_emoji_26CE" msgid="8963656417276062998">"অ\'ফিউচাছ"</string> + <!-- no translation found for spoken_emoji_26CF (1048987245528185548) --> + <skip /> + <!-- no translation found for spoken_emoji_26D1 (5122253261153603676) --> + <skip /> + <!-- no translation found for spoken_emoji_26D3 (7567590167882104907) --> + <skip /> + <string name="spoken_emoji_26D4" msgid="2231451988209604130">"পà§à§°à§±à§‡à¦¶ নিষেধ"</string> + <!-- no translation found for spoken_emoji_26E9 (5219739268764945756) --> + <skip /> + <string name="spoken_emoji_26EA" msgid="7513319636103804907">"গীৰà§à¦œà¦¾"</string> + <!-- no translation found for spoken_emoji_26F0 (8690606275240650121) --> + <skip /> + <!-- no translation found for spoken_emoji_26F1 (7617840615623596077) --> + <skip /> + <string name="spoken_emoji_26F2" msgid="7134115206158891037">"পানীৰ ফোৱাৰা"</string> + <string name="spoken_emoji_26F3" msgid="4912302210162075465">"গ\'লà§à¦« খেলৰ গাà¦à¦¤à¦¤ পà§à¦¤à¦¿ ৰখা পতাকা"</string> + <!-- no translation found for spoken_emoji_26F4 (8296597141413923967) --> + <skip /> + <string name="spoken_emoji_26F5" msgid="4766328116769075217">"ডিঙা"</string> + <!-- no translation found for spoken_emoji_26F7 (5002838791562917075) --> + <skip /> + <!-- no translation found for spoken_emoji_26F8 (2326041972852924376) --> + <skip /> + <!-- no translation found for spoken_emoji_26F9 (1588803158145064802) --> + <skip /> + <string name="spoken_emoji_26FA" msgid="5888017494809199037">"তমà§à¦¬à§"</string> + <string name="spoken_emoji_26FD" msgid="2417060622927453534">"তেলৰ পামà§à¦ª"</string> + <string name="spoken_emoji_2702" msgid="4005741160717451912">"ক\'লা কেà¦à¦šà§€"</string> + <string name="spoken_emoji_2705" msgid="164605766946697759">"ডাঠবগা ৰঙৰ শà§à¦¦à§à¦§ চিন"</string> + <string name="spoken_emoji_2708" msgid="7153840886849268988">"à¦à¦¯à¦¼à¦¾à§°à¦ªà§à¦²à§‡à¦‡à¦¨"</string> + <string name="spoken_emoji_2709" msgid="2217319160724311369">"খাম"</string> + <string name="spoken_emoji_270A" msgid="508347232762319473">"উতà§à¦¥à¦¿à¦¤ মà§à¦·à§à¦Ÿà¦¿"</string> + <string name="spoken_emoji_270B" msgid="6640562128327753423">"হাত দাঙি সà¦à¦¹à¦¾à§°à¦¿ জনোৱা"</string> + <string name="spoken_emoji_270C" msgid="1344288035704944581">"বিজয়ী হাত"</string> + <!-- no translation found for spoken_emoji_270D (8850355355131892496) --> + <skip /> + <string name="spoken_emoji_270F" msgid="6108251586067318718">"পেনà§à¦¸à¦¿à¦²"</string> + <string name="spoken_emoji_2712" msgid="6320544535087710482">"ক\'লা ৰঙৰ নিবà§"</string> + <string name="spoken_emoji_2714" msgid="1968242800064001654">"গাঢ় শà§à¦¦à§à¦§ চিহà§à¦¨"</string> + <string name="spoken_emoji_2716" msgid="511941294762977228">"গাঢ় পà§à§°à¦£ চিহà§à¦¨"</string> + <!-- no translation found for spoken_emoji_271D (2367275551961395862) --> + <skip /> + <!-- no translation found for spoken_emoji_2721 (4150694777322944905) --> + <skip /> + <string name="spoken_emoji_2728" msgid="5650330815808691881">"তিৰবিৰণি"</string> + <string name="spoken_emoji_2733" msgid="8915809595141157327">"আঠডাল দণà§à¦¡à§°à§‡ তাৰকা চিহà§à¦¨"</string> + <string name="spoken_emoji_2734" msgid="4846583547980754332">"আঠকোণীয়া ক\'লা তৰা"</string> + <string name="spoken_emoji_2744" msgid="4350636647760161042">"তà§à¦·à¦¾à§°à¦•à¦£à¦¾"</string> + <string name="spoken_emoji_2747" msgid="3718282973916474455">"তিৰবিৰনি"</string> + <string name="spoken_emoji_274C" msgid="2752145886733295314">"কটা চিন"</string> + <string name="spoken_emoji_274E" msgid="4262918689871098338">"ঋণাতà§à¦®à¦• বৰà§à¦—াকৃতিৰ কà§à§°à¦› চিন"</string> + <string name="spoken_emoji_2753" msgid="6935897159942119808">"গাঢ় ক\'লা ৰঙৰ পà§à§°à¦¶à§à¦¨à¦¬à§‹à¦§à¦• চিহà§à¦¨"</string> + <string name="spoken_emoji_2754" msgid="7277504915105532954">"গাঢ় বগা ৰঙৰ পà§à§°à¦¶à§à¦¨à¦¬à§‹à¦§à¦• চিহà§à¦¨"</string> + <string name="spoken_emoji_2755" msgid="6853076969826960210">"বগা à¦à¦¾à§±à¦¬à§‹à¦§à¦• চিনৰ অলংকাৰ"</string> + <string name="spoken_emoji_2757" msgid="3707907828776912174">"ডাঠà¦à¦¾à§±à¦¬à§‹à¦§à¦• চিনৰ পà§à§°à¦¤à§€à¦•"</string> + <!-- no translation found for spoken_emoji_2763 (3255858123691890971) --> + <skip /> + <string name="spoken_emoji_2764" msgid="4214257843609432167">"গাঢ় ক\'লা ৰঙৰ হৃদয় আকৃতি"</string> + <string name="spoken_emoji_2795" msgid="6563954833786162168">"গাঢ় যোগ চিহà§à¦¨"</string> + <string name="spoken_emoji_2796" msgid="5990926508250772777">"ডাঠবিয়োগ চিহà§à¦¨"</string> + <string name="spoken_emoji_2797" msgid="24694184172879174">"ডাঠহৰণ চিন"</string> + <string name="spoken_emoji_27A1" msgid="3513434778263100580">"সোà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা ক\'লা ৰঙৰ কাà¦à¦¡à¦¼à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_27B0" msgid="203395646864662198">"ক\'লা ৰঙৰ পকোৱা চিন"</string> + <string name="spoken_emoji_27BF" msgid="4940514642375640510">"দà§à¦¬à§ˆà¦¤ ক\'লা ৰঙৰ পকোৱা চিন"</string> + <string name="spoken_emoji_2934" msgid="9062130477982973457">"সোà¦à¦«à¦¾à¦² নিরà§à¦¦à§‡à¦¶ কৰা ঊরà§à¦§à§à¦¬à¦®à§à¦–ী কাà¦à¦¡à¦¼à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_2935" msgid="6198710960720232074">"সোà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰি পিছত বেà¦à¦•à¦¾ হৈ তলফালে মà§à¦– কৰা কাà¦à¦¡à¦¼"</string> + <string name="spoken_emoji_2B05" msgid="4813405635410707690">"বাওà¦à¦®à§à§±à¦¾ ক\'লা কাà¦à¦¡à¦¼"</string> + <string name="spoken_emoji_2B06" msgid="1223172079106250748">"ঊরà§à¦§à§à¦¬à¦®à§à¦–ী ক\'লা কাà¦à¦¡à¦¼à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_2B07" msgid="1599124424746596150">"নিমà§à¦¨à¦®à§à¦–ী ক\'লা কাà¦à¦¡à¦¼à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"ক\'লা ৰঙৰ ডাঙৰ বৰà§à¦—"</string> + <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"বগা ৰঙৰ বিশাল বৰà§à¦—"</string> + <string name="spoken_emoji_2B50" msgid="3850845519526950524">"বগা মধà§à¦¯à¦®à§€à¦¯à¦¼à¦¾ তৰা চিহà§à¦¨"</string> + <string name="spoken_emoji_2B55" msgid="9137882158811541824">"ডাঠতৰপৰ ডাঙৰ বৃতà§à¦¤"</string> + <string name="spoken_emoji_3030" msgid="4609172241893565639">"ৰঙা ৰঙৰ ঢৌ খেলোৱা ডেশà§à¦¬"</string> + <string name="spoken_emoji_303D" msgid="2545833934975907505">"গায়কে গাবলগীয়া অংশৰ আৰমà§à¦à¦£à¦¿ সূচোৱা চিহà§à¦¨"</string> + <string name="spoken_emoji_3297" msgid="928912923628973800">"বৃতà§à¦¤à¦¾à¦•à¦¾à§° আইডিঅ\'গà§à§°à¦¾à¦«à§° অà¦à¦¿à¦¨à¦¨à§à¦¦à¦¨ সূচক চিহà§à¦¨"</string> + <string name="spoken_emoji_3299" msgid="3930347573693668426">"বৃতà§à¦¤à¦¾à¦•à¦¾à§° আইডিঅ\'গà§à§°à¦¾à¦«à§° গোপন চিহà§à¦¨"</string> + <string name="spoken_emoji_1F004" msgid="1705216181345894600">"মাহজং টাইলৰ ৰঙা ডà§à§°à§‡à¦—ন"</string> + <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"তাà¦à¦š পাতৰ ক\'লা জ\'কৰ"</string> + <string name="spoken_emoji_1F170" msgid="3817698686602826773">"তেজৰ গà§à§°à§à¦ª A"</string> + <string name="spoken_emoji_1F171" msgid="3684218589626650242">"তেজৰ গà§à§°à§à¦ª B"</string> + <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"তেজৰ গà§à§°à§à¦ª O"</string> + <string name="spoken_emoji_1F17F" msgid="463634348668462040">"পারà§à¦•à¦¿à¦™à§° ঠাই"</string> + <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"তেজৰ পà§à§°à¦•à¦¾à§° AB"</string> + <string name="spoken_emoji_1F191" msgid="5386969264431429221">"\'CL\' লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F192" msgid="8324226436829162496">"\'কà§à¦²\' লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F193" msgid="4731758603321515364">"বিনামূলীয়া লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F194" msgid="4903128609556175887">"à¦à¦¿à¦¤à§°à¦¤ ID লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F195" msgid="1433142500411060924">"\'নতà§à¦¨\' লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F196" msgid="8825160701159634202">"N G লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F197" msgid="7841079241554176535">"অ\'কে লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F198" msgid="7020298909426960622">"\'SOS\' লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F199" msgid="5971252667136235630">"à¦à¦¾à¦¬à¦¬à§‹à¦§à¦• চিনসহ \'আপ\' লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"\'vs\' লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F201" msgid="7000490044681139002">"ইয়াত লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F202" msgid="8560906958695043947">"সেৱা লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"মাচà§à¦²à¦¬à¦¿à¦¹à§€à¦¨ সূচোৱা আইডিঅ\'গà§à§°à¦¾à¦«à¦¯à§à¦•à§à¦¤ বরà§à¦—"</string> + <string name="spoken_emoji_1F22F" msgid="609797148862445402">"সংৰকà§à¦·à¦¿à¦¤ আসন সূচোৱা আইডিঅ\'গà§à§°à¦¾à¦«à¦¯à§à¦•à§à¦¤ বরà§à¦—"</string> + <string name="spoken_emoji_1F232" msgid="8125716331632035820">"নিষেধ সূচোৱা আইডিঅ\'গà§à§°à¦¾à¦«à¦¯à§à¦•à§à¦¤ বরà§à¦—"</string> + <string name="spoken_emoji_1F233" msgid="8749401090457355028">"খালী ঠাই সূচোৱা আইডিঅ\'গà§à§°à¦¾à¦«à¦¯à§à¦•à§à¦¤ বরà§à¦—"</string> + <string name="spoken_emoji_1F234" msgid="3546951604285970768">"গà§à§°à¦¹à¦£ কৰা সূচোৱা আইডিঅ\'গà§à§°à¦¾à¦«à¦¯à§à¦•à§à¦¤ বরà§à¦—"</string> + <string name="spoken_emoji_1F235" msgid="5320186982841793711">"à¦à§°à§à¦¤à¦¿ বà§à¦œà§‹à§±à¦¾ বরà§à¦—াকাৰ আইডিঅ\'গà§à§°à¦¾à¦«"</string> + <string name="spoken_emoji_1F236" msgid="879755752069393034">"পৰিশোধ হ’ল বà§à¦œà§‹à§±à¦¾ বরà§à¦—াকাৰ আইডিঅ\'গà§à§°à¦¾à¦«"</string> + <string name="spoken_emoji_1F237" msgid="6741807001205851437">"মাহিলী বà§à¦œà§‹à§±à¦¾ বরà§à¦—াকাৰ আইডিঅ\'গà§à§°à¦¾à¦«"</string> + <string name="spoken_emoji_1F238" msgid="5504414186438196912">"আইডিঅ\'গà§à§°à¦¾à¦« à¦à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à§à¦¬à¦¨ লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F239" msgid="1634067311597618959">"ৰেহাই বà§à¦œà§‹à§±à¦¾ বরà§à¦—াকাৰ আইডিঅ\'গà§à§°à¦¾à¦«"</string> + <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"বà§à¦¯à§±à¦¸à¦¾à¦¯à¦¼à¦¤ আছে বà§à¦œà§‹à§±à¦¾ বরà§à¦—াকাৰ আইডিঅ\'গà§à§°à¦¾à¦«"</string> + <string name="spoken_emoji_1F250" msgid="6586943922806727907">"বৃতà§à¦¤à§° à¦à¦¿à¦¤à§°à¦¤ থকা সà§à¦¬à¦¿à¦§à¦¾ সূচোৱা আইডিঅ\'গà§à§°à¦¾à¦«"</string> + <string name="spoken_emoji_1F251" msgid="9099032855993346948">"গà§à§°à¦¹à¦£ কৰা সূচোৱা আইডিঅ\'গà§à§°à¦¾à¦«à¦¯à§à¦•à§à¦¤ বরà§à¦—"</string> + <string name="spoken_emoji_1F300" msgid="4720098285295840383">"ঘূৰà§à¦£à§€à¦¬à¦¾à¦¯à¦¼à§"</string> + <string name="spoken_emoji_1F301" msgid="3601962477653752974">"কà§à¦à§±à¦²à§€à¦®à¦¯à¦¼"</string> + <string name="spoken_emoji_1F302" msgid="3404357123421753593">"জপাই থোৱা ছাতি"</string> + <string name="spoken_emoji_1F303" msgid="3899301321538188206">"আকাশত তৰা থকা নিশাৰ দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F304" msgid="2767148930689050040">"পরà§à¦¬à¦¤à§° শিখৰত সূরà§à¦¯à§à¦¯ উদয় হোৱা দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F305" msgid="9165812924292061196">"সূৰà§à¦¯à§‹à¦¦à¦¯à¦¼"</string> + <string name="spoken_emoji_1F306" msgid="5889294736109193104">"গধূলি সময়ৰ চহৰৰ দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F307" msgid="2714290867291163713">"অটà§à¦Ÿà¦¾à¦²à¦¿à¦•à¦¾à¦¸à¦®à§‚হৰ পিছফালে বেলি মাৰ যোৱাৰ দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F308" msgid="688704703985173377">"ৰামধেনà§"</string> + <string name="spoken_emoji_1F309" msgid="6217981957992313528">"নিশাৰ দলঙৰ দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"পানীৰ ঢৌ"</string> + <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"আগà§à¦¨à§‡à¦¯à¦¼à¦—িৰি"</string> + <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"হাতীপটি"</string> + <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"ইউৰোপ আৰৠআফà§à§°à¦¿à¦•à¦¾à§° মেপ থকা গোলক"</string> + <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"উতà§à¦¤à§° আৰৠদকà§à¦·à¦¿à¦£ আমেৰিকাৰ মেপ থকা গোলক"</string> + <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"à¦à¦›à¦¿à¦¯à¦¼à¦¾ আৰৠঅষà§à¦Ÿà§à§°à§‡à¦²à¦¿à¦¯à¦¼à¦¾à§° মানচিতà§à§° থকা গোলক"</string> + <string name="spoken_emoji_1F310" msgid="2959618582975247601">"অকà§à¦·à§°à§‡à¦–া আৰৠদà§à§°à¦¾à¦˜à¦¿à¦®à¦¾à§°à§‡à¦–াৰ সৈতে গোলক"</string> + <string name="spoken_emoji_1F311" msgid="623906380914895542">"ন জোনৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F312" msgid="4458575672576125401">"বৰà§à¦§à¦®à¦¾à¦¨ অৰà§à¦§à¦šà¦¨à§à¦¦à§à§°à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F313" msgid="7599181787989497294">"পà§à§°à¦¥à¦® à¦à¦• চতà§à§°à§à¦¥à¦¾à¦‚শ বিশিষà§à¦Ÿ চনà§à¦¦à§à§°à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F314" msgid="4898293184964365413">"বৰà§à¦§à¦®à¦¾à¦¨ সà§à¦«à§€à¦¤ চনà§à¦¦à§à§°à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F315" msgid="3218117051779496309">"পূৰà§à¦£ চনà§à¦¦à§à§°à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_1F316" msgid="2061317145777689569">"কলাকà§à¦·à¦¯à¦¼ জোনৰ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F317" msgid="2721090687319539049">"অনà§à¦¤à¦¿à¦® à¦à¦• চতà§à§°à§à¦¥à¦¾à¦‚শ বিশিষà§à¦Ÿ চনà§à¦¦à§à§°à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F318" msgid="3814091755648887570">"কমি অহা অৰà§à¦§à¦šà¦¨à§à¦¦à§à§°à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F319" msgid="4074299824890459465">"অৰà§à¦§à¦šà¦¨à§à¦¦à§à§°"</string> + <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"মà§à¦–মণà§à¦¡à¦²à§° সৈতে ন জোন"</string> + <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"মà§à¦–ৰ সৈতে পà§à§°à¦¥à¦® à¦à¦• চতà§à§°à§à¦¥à¦¾à¦‚শ জোন"</string> + <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"মà§à¦–ৰ সৈতে অনà§à¦¤à¦¿à¦® à¦à¦• চতà§à§°à§à¦¥à¦¾à¦‚শ জোন"</string> + <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"মà§à¦–মণà§à¦¡à¦² থকা পূরà§à¦£ চনà§à¦¦à§à§°à§° দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"মà§à¦–ৰ সৈতে সূৰà§à¦¯"</string> + <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"জিকমিক তৰাৰ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F320" msgid="5450591979068216115">"উলà§à¦•à¦¾"</string> + <!-- no translation found for spoken_emoji_1F321 (581288529301493075) --> + <skip /> + <!-- no translation found for spoken_emoji_1F324 (2930891297836314896) --> + <skip /> + <!-- no translation found for spoken_emoji_1F325 (5282092301688177705) --> + <skip /> + <!-- no translation found for spoken_emoji_1F326 (165046788529872891) --> + <skip /> + <!-- no translation found for spoken_emoji_1F327 (4384791469343260600) --> + <skip /> + <!-- no translation found for spoken_emoji_1F328 (1991614733939171872) --> + <skip /> + <!-- no translation found for spoken_emoji_1F329 (6016235695016510649) --> + <skip /> + <!-- no translation found for spoken_emoji_1F32A (5889026615334911758) --> + <skip /> + <!-- no translation found for spoken_emoji_1F32B (3223192457131343118) --> + <skip /> + <!-- no translation found for spoken_emoji_1F32C (3479270390051226956) --> + <skip /> + <!-- no translation found for spoken_emoji_1F32D (8869598854109228966) --> + <skip /> + <!-- no translation found for spoken_emoji_1F32E (6077879860650582531) --> + <skip /> + <!-- no translation found for spoken_emoji_1F32F (6730078269862769637) --> + <skip /> + <string name="spoken_emoji_1F330" msgid="3115760035618051575">"কাঠবাদাম"</string> + <string name="spoken_emoji_1F331" msgid="5658888205290008691">"অংকà§à§°"</string> + <string name="spoken_emoji_1F332" msgid="2935650450421165938">"চিৰসেউজ গছ"</string> + <string name="spoken_emoji_1F333" msgid="5898847427062482675">"পৰà§à¦£à¦ªà¦¾à¦¤à§€ গছ"</string> + <string name="spoken_emoji_1F334" msgid="6183375224678417894">"পাম গছ"</string> + <string name="spoken_emoji_1F335" msgid="5352418412103584941">"কেকটাছ গছ"</string> + <!-- no translation found for spoken_emoji_1F336 (5912660172314184275) --> + <skip /> + <string name="spoken_emoji_1F337" msgid="3839107352363566289">"টিউলিপ ফà§à¦²"</string> + <string name="spoken_emoji_1F338" msgid="6389970364260468490">"পà§à§°à¦¸à§à¦«à§à¦¤à¦¿à¦¤ চেৰি ফà§à¦²"</string> + <string name="spoken_emoji_1F339" msgid="9128891447985256151">"গোলাপ ফà§à¦²"</string> + <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"জবা ফà§à¦²"</string> + <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"সূৰà§à¦¯à¦®à§à¦–ী ফà§à¦²"</string> + <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"পà§à§°à¦¸à§à¦«à§à¦¤à¦¿à¦¤"</string> + <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"গোমধান"</string> + <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"ধানৰ থোক"</string> + <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"বনৌষধি"</string> + <string name="spoken_emoji_1F340" msgid="3494255459156499305">"চাৰিটা পাতযà§à¦•à§à¦¤ উদà§à¦à¦¿à¦¦"</string> + <string name="spoken_emoji_1F341" msgid="4581959481754990158">"মেপলৰ পাত"</string> + <string name="spoken_emoji_1F342" msgid="3119068426871821222">"সৰা পাত"</string> + <string name="spoken_emoji_1F343" msgid="2663317495805149004">"বতাহত উৰি ফà§à§°à¦¾ পাত"</string> + <string name="spoken_emoji_1F344" msgid="2738517881678722159">"কাঠফà§à¦²à¦¾"</string> + <string name="spoken_emoji_1F345" msgid="6135288642349085554">"বিলাহী"</string> + <string name="spoken_emoji_1F346" msgid="2075395322785406367">"বেঙেনা"</string> + <string name="spoken_emoji_1F347" msgid="7753453754963890571">"আঙà§à§°"</string> + <string name="spoken_emoji_1F348" msgid="1247076837284932788">"তৰমà§à¦œ"</string> + <string name="spoken_emoji_1F349" msgid="5563054555180611086">"তৰমà§à¦œ"</string> + <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"টেঞà§à¦œà¦¾à§°à¦¿à¦¨"</string> + <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"নেমà§"</string> + <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"কল"</string> + <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"আনাৰস"</string> + <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"ৰঙা আপেল"</string> + <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"সেউজীয়া আপেল"</string> + <string name="spoken_emoji_1F350" msgid="625802980159197701">"নাচপতি"</string> + <string name="spoken_emoji_1F351" msgid="4269460120610911895">"নৰা বগৰী"</string> + <string name="spoken_emoji_1F352" msgid="965600953360182635">"চেৰি"</string> + <string name="spoken_emoji_1F353" msgid="7068623879906925592">"ষà§à¦Ÿà§à§°\'বেৰী"</string> + <string name="spoken_emoji_1F354" msgid="45162285238888494">"হেমবাৰà§à¦—াৰ"</string> + <string name="spoken_emoji_1F355" msgid="9157587635526433283">"পিৎছাৰ টà§à¦•à§à§°à¦¾"</string> + <string name="spoken_emoji_1F356" msgid="2667196119149852244">"হাà¦à¦¡à¦¼ থকা মঙহ"</string> + <string name="spoken_emoji_1F357" msgid="8022817413851052256">"কà§à¦•à§à§°à¦¾à§° ঠেং"</string> + <string name="spoken_emoji_1F358" msgid="3042693264748036476">"চাউলৰ পৰা তৈয়াৰী পিঠা"</string> + <string name="spoken_emoji_1F359" msgid="3988148661730121958">"ৰাইচ বল"</string> + <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"à¦à¦¾à¦¤"</string> + <string name="spoken_emoji_1F35B" msgid="62530406745717835">"তৰকাৰী আৰৠà¦à¦¾à¦¤"</string> + <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"তপত আহাৰৰ সৈতে বাটি"</string> + <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"সà§à¦ªà§‡à¦˜à§‡à¦Ÿà§€"</string> + <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"বà§à§°à§‡à¦¡"</string> + <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"ফà§à§°à§‡à¦¨à§à¦¸ ফà§à§°à¦¾à¦‡"</string> + <string name="spoken_emoji_1F360" msgid="4094659855684686801">"পোৰা মিঠা আলà§"</string> + <string name="spoken_emoji_1F361" msgid="6475486395784096109">"ডাঙগ\' মিঠাই"</string> + <string name="spoken_emoji_1F362" msgid="5004692577661076275">"অ\'ডেন"</string> + <string name="spoken_emoji_1F363" msgid="1606603765717743806">"ছà§à¦¶à§à¦¬à¦¿"</string> + <string name="spoken_emoji_1F364" msgid="6550457766169570811">"à¦à¦œà¦¾ মিছামাছ"</string> + <string name="spoken_emoji_1F365" msgid="4963815540953316307">"চাকনৈয়াৰ নকà§à¦¸à¦¾à¦¸à¦¹ মাছেৰে তৈয়াৰী কেইক"</string> + <string name="spoken_emoji_1F366" msgid="7862401745277049404">"কোমল আইচকà§à§°à§€à¦®"</string> + <string name="spoken_emoji_1F367" msgid="7447972978281980414">"বৰফ গà§à¦¡à¦¼à¦¿"</string> + <string name="spoken_emoji_1F368" msgid="7790003146142724913">"আইচকà§à§°à§€à¦®"</string> + <string name="spoken_emoji_1F369" msgid="7383712944084857350">"ড\'নাট"</string> + <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"কà§à¦•à¦¿"</string> + <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"চকলেট"</string> + <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"কেণà§à¦¡à§€"</string> + <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"ল\'লিপ\'প"</string> + <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"কাষà§à¦Ÿà¦¾à§°à§à¦¡"</string> + <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"মৌ-জোল ৰখা পাতà§à§°"</string> + <string name="spoken_emoji_1F370" msgid="7243244547866114951">"শà§à¦¬à§°à§à¦Ÿà¦•à§‡à¦‡à¦•"</string> + <string name="spoken_emoji_1F371" msgid="6731527040552916358">"বেণà§à¦Ÿà§‹ বকà§à¦¸"</string> + <string name="spoken_emoji_1F372" msgid="1635035323832181733">"খাদà§à¦¯à§° পাতà§à§°"</string> + <string name="spoken_emoji_1F373" msgid="7799289534289221045">"ৰনà§à¦§à¦¨"</string> + <string name="spoken_emoji_1F374" msgid="5973820884987069131">"কাà¦à¦Ÿà¦¾à¦šà¦¾à¦®à§à¦š আৰৠছà§à§°à§€ কটাৰী"</string> + <string name="spoken_emoji_1F375" msgid="1074832087699617700">"হেণà§à¦¡à§‡à¦²à¦¬à¦¿à¦¹à§€à¦¨ চাহৰ কাপ"</string> + <string name="spoken_emoji_1F376" msgid="6499274685584852067">"ছাকেৰ বটল আৰৠকাপ"</string> + <string name="spoken_emoji_1F377" msgid="1762398562314172075">"সà§à§°à¦¾à§° গিলাছ"</string> + <string name="spoken_emoji_1F378" msgid="5528234560590117516">"ক\'কটেইল গিলাছ"</string> + <string name="spoken_emoji_1F379" msgid="790581290787943325">"গà§à§°à§€à¦·à§à¦®à¦®à¦£à§à¦¡à¦²à§€à¦¯à¦¼ অঞà§à¦šà¦²à§° পানীয়"</string> + <string name="spoken_emoji_1F37A" msgid="391966822450619516">"বিয়েৰৰ মগ"</string> + <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"যà§à¦à¦œà¦¾ লগোৱা দà§à¦Ÿà¦¾ বিয়েৰৰ মগ"</string> + <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"কেà¦à¦šà§à§±à¦¾à¦• দà§à¦—à§à¦§à¦ªà¦¾à¦¨ কৰোৱা গিলাছ"</string> + <!-- no translation found for spoken_emoji_1F37D (8887228479219886429) --> + <skip /> + <!-- no translation found for spoken_emoji_1F37E (37593222775513943) --> + <skip /> + <!-- no translation found for spoken_emoji_1F37F (4196704853559909123) --> + <skip /> + <string name="spoken_emoji_1F380" msgid="3487363857092458827">"ফিটা"</string> + <string name="spoken_emoji_1F381" msgid="614180683680675444">"ৰঙীণ কাগজেৰে বনà§à¦§à¦¾ উপহাৰৰ বাকচ"</string> + <string name="spoken_emoji_1F382" msgid="4720497171946687501">"জনà§à¦®à¦¦à¦¿à¦¨à§° কেইক"</string> + <string name="spoken_emoji_1F383" msgid="3536505941578757623">"জেক-অ\'-লেনটাৰà§à¦£"</string> + <string name="spoken_emoji_1F384" msgid="1797870204479059004">"খà§à§°à§€à¦·à§à¦Ÿà¦®à¦¾à¦› টà§à§°à§€"</string> + <string name="spoken_emoji_1F385" msgid="1754174063483626367">"ছাণà§à¦Ÿà¦¾à¦•à§à¦²à¦œ"</string> + <string name="spoken_emoji_1F386" msgid="2130445450758114746">"আতচ-বাজী"</string> + <string name="spoken_emoji_1F387" msgid="3403182563117999933">"ফিৰফিৰি"</string> + <string name="spoken_emoji_1F388" msgid="2903047203723251804">"বেলà§à¦¨"</string> + <string name="spoken_emoji_1F389" msgid="2352830665883549388">"পাৰà§à¦Ÿà§€ প\'পাৰ"</string> + <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"ক\'নফেটà§à¦Ÿà¦¿ বল"</string> + <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"টানাবাটা গছ"</string> + <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"পূৰণ চিনৰ আকৃতিত ৰখা দà§à¦–ন পতাকা"</string> + <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"পাইন গছৰ সজà§à¦œà¦¾"</string> + <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"জাপানী পà§à¦¤à¦²à¦¾"</string> + <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"কাৰà§à¦ª ষà§à¦Ÿà§à§°à§€à¦®à¦¾à§°"</string> + <string name="spoken_emoji_1F390" msgid="8903307048095431374">"ৱিণà§à¦¡ চà§à¦šà¦¾à¦‡à¦®"</string> + <string name="spoken_emoji_1F391" msgid="2134952069191911841">"জোন চোৱা পরà§à¦¬"</string> + <string name="spoken_emoji_1F392" msgid="6380405493914304737">"সà§à¦•à§à¦²à§€à¦¯à¦¼à¦¾ বেগ"</string> + <string name="spoken_emoji_1F393" msgid="6947890064872470996">"সà§à¦¨à¦¾à¦¤à¦• ডিগà§à§°à§€ লাঠকৰোà¦à¦¤à§‡ পিনà§à¦§à¦¾ টà§à¦ªà¦¿"</string> + <!-- no translation found for spoken_emoji_1F396 (8356140738000265647) --> + <skip /> + <!-- no translation found for spoken_emoji_1F397 (5249863289838097468) --> + <skip /> + <!-- no translation found for spoken_emoji_1F399 (6087019010423147017) --> + <skip /> + <string name="spoken_emoji_1F39A" msgid="1627914548345466924">"লেà¦à§‡à¦² শà§à¦²à¦¾à¦‡à¦¡à¦¾à§°"</string> + <!-- no translation found for spoken_emoji_1F39B (648039433701743585) --> + <skip /> + <!-- no translation found for spoken_emoji_1F39E (2918731924907952534) --> + <skip /> + <!-- no translation found for spoken_emoji_1F39F (2427606024950432412) --> + <skip /> + <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"পà§à¦¤à¦²à¦¾ ঘোà¦à§°à¦¾"</string> + <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"ফেৰিছ চকৰী"</string> + <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"ৰ\'লাৰ ক\'ষà§à¦Ÿà¦¾à§°"</string> + <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"বৰশী ডাà¦à§°à¦¿à¦•à§€ আৰৠমাছ"</string> + <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"মাইকà§à§°\'ফ\'ন"</string> + <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"বোলছবি নিরà§à¦®à¦¾à¦£à§° কেমেৰা"</string> + <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"বোলছবি"</string> + <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"হেডফ\'ন"</string> + <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"চিতà§à§°à¦¶à¦¿à¦²à§à¦ªà§€à§° পেলেট"</string> + <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"ওখ টà§à¦ªà¦¿"</string> + <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"চাৰà§à¦•à¦¾à¦›à§° তমà§à¦¬à§"</string> + <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"টিকেট"</string> + <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"কà§à¦²à§‡à¦ªà¦¾à§° ব\'ৰà§à¦¡"</string> + <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"পৰিৱেশà§à¦¯ কলা"</string> + <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"à¦à¦¿à¦¡à¦¿à¦…\' গেইম"</string> + <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"পোনপটীয়াকৈ লকà§à¦·à§à¦¯à¦à§‡à¦¦ কৰা"</string> + <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"শà§à¦²â€™à¦Ÿ মেচিন"</string> + <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"বিলিয়াৰà§à¦¡"</string> + <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"লà§à¦¡à§ খেলৰ গà§à¦Ÿà¦¿"</string> + <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"ব\'লিং খেল"</string> + <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"ফà§à¦²à§° ছবি থকা তাচপাত"</string> + <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"সাংগীতিক সà§à¦¬à§°"</string> + <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"à¦à¦•à¦¾à¦§à¦¿à¦• সাংগীতিক সà§à¦¬à§°"</string> + <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"ছেকà§à¦¸\'ফ\'ন"</string> + <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"গিটাৰ"</string> + <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"সাংগীতিক কীব\'ৰà§à¦¡"</string> + <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"শিঙা"</string> + <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"বেহেলা"</string> + <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"গানৰ কলি লিখি থোৱা পতà§à§°"</string> + <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"দৌৰোতে পিনà§à¦§à¦¾ ফিটা লগা চোলা"</string> + <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"টেনিছ ৰেকেট আৰৠবল"</string> + <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"সà§à¦•à¦¿ আৰৠসà§à¦•à¦¿ খেলত পিনà§à¦§à¦¾ জোতা"</string> + <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"বাসà§à¦•à§‡à¦Ÿà¦¬à¦² আৰৠহà§à¦ª"</string> + <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"ক\'লা-বগা বৰà§à¦—াকৃতিৰ ঘৰযà§à¦•à§à¦¤ পতাকা"</string> + <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"সà§à¦¨\'ব\'ৰà§à¦¡à¦¾à§°"</string> + <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"দৌৰবিদ"</string> + <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"ছাৰà§à¦« কৰোà¦à¦¤à¦¾"</string> + <!-- no translation found for spoken_emoji_1F3C5 (3256434181486954695) --> + <skip /> + <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"টà§à§°\'ফী"</string> + <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"ঘোà¦à§°à¦¾à¦¦à§Œà§°"</string> + <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"আমেৰিকান ফà§à¦Ÿà¦¬à¦²"</string> + <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"ৰাগবী ফà§à¦Ÿà¦¬à¦²"</string> + <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"সাà¦à¦¤à§‹à§°à¦¬à¦¿à¦¦"</string> + <!-- no translation found for spoken_emoji_1F3CB (6201404884476413631) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3CC (5773930948380166403) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3CD (3174865701360723287) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3CE (298990178863007728) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3CF (220014996836173720) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3D0 (1515966148588308407) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3D1 (9065400886436849028) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3D2 (9113415091165206322) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3D3 (5392602379011857837) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3D4 (5682806162641888464) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3D5 (485622019934191893) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3D6 (8056487018845189239) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3D7 (9200931466909972688) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3D8 (4060224387880105443) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3D9 (5239036983837296458) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3DA (4479002058414881869) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3DB (5481092245291634716) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3DC (7540751465637885253) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3DD (2957722522033693226) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3DE (8767730963119889199) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3DF (360348087882746758) --> + <skip /> + <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"নিৰà§à¦®à¦¾à¦£à§°à¦¤ ঘৰ"</string> + <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"বাগিছাৰ সৈতে ঘৰ"</string> + <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"কাৰà§à¦¯à¦¾à¦²à¦¯à¦¼à§° à¦à§±à¦¨"</string> + <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"জাপানী ডাকঘৰ"</string> + <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"ইউৰোপীয়ান ডাকঘৰ"</string> + <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"চিকিৎসালয়"</string> + <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"বেংক"</string> + <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"অট\'মেটেড টেলাৰ মেচিন"</string> + <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"হোটেল"</string> + <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"ল\'ঠহোটেল"</string> + <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"ঘৰত দৈননà§à¦¦à¦¿à¦¨ বà§à¦¯à§±à¦¹à§ƒà¦¤ সামগà§à§°à§€à¦¸à¦®à§‚হৰ দোকান"</string> + <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"বিদà§à¦¯à¦¾à¦²à¦¯à¦¼"</string> + <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"ডিপারà§à¦Ÿà¦®à§‡à¦£à§à¦Ÿà§‡à¦² ষà§à¦Ÿ\'ৰ"</string> + <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"কাৰখানা"</string> + <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"ইজাকায়া লেম"</string> + <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"জাপানী দà§à§°à§à¦—"</string> + <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"ইউৰোপীয় দà§à§°à§à¦—"</string> + <!-- no translation found for spoken_emoji_1F3F3 (6471977885401554862) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3F4 (6634164537580574234) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3F5 (5247950040998935573) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3F7 (5140855387008703511) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3F8 (7061216387824058281) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3F9 (1287386031701875351) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3FA (972388608151034163) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3FB (2482905976407635663) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3FC (2438230702000819552) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3FD (8205610118230779658) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3FE (2707903021796601195) --> + <skip /> + <!-- no translation found for spoken_emoji_1F3FF (12056714027518795) --> + <skip /> + <string name="spoken_emoji_1F400" msgid="2063034795679578294">"à¦à¦¨à§à¦¦à§à§°"</string> + <string name="spoken_emoji_1F401" msgid="6736421616217369594">"নিগনি"</string> + <string name="spoken_emoji_1F402" msgid="7276670995895485604">"ষাà¦à¦¡à¦¼à¦—ৰà§"</string> + <string name="spoken_emoji_1F403" msgid="8045709541897118928">"ম\'হ"</string> + <string name="spoken_emoji_1F404" msgid="5240777285676662335">"গাই গৰà§"</string> + <!-- no translation found for spoken_emoji_1F405 (4304847753343143926) --> + <skip /> + <string name="spoken_emoji_1F406" msgid="5163461930159540018">"নাহফà§à¦Ÿà§à¦•à§€ বাঘ"</string> + <string name="spoken_emoji_1F407" msgid="6905370221172708160">"শহা"</string> + <string name="spoken_emoji_1F408" msgid="1362164550508207284">"মেকà§à§°à§€"</string> + <string name="spoken_emoji_1F409" msgid="8476130983168866013">"ডà§à§°à§‡à¦—ন"</string> + <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"ঘà¦à§°à¦¿à¦¯à¦¼à¦¾à¦²"</string> + <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"তিমি"</string> + <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"শামà§à¦•"</string> + <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"সাপ"</string> + <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"ঘোà¦à§°à¦¾"</string> + <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"ৰামছাগলী"</string> + <string name="spoken_emoji_1F410" msgid="8686765722255775031">"ছাগলী"</string> + <string name="spoken_emoji_1F411" msgid="3585715397876383525">"à¦à§‡à¦¡à¦¼à¦¾"</string> + <string name="spoken_emoji_1F412" msgid="4924794582980077838">"বানà§à¦¦à§°"</string> + <string name="spoken_emoji_1F413" msgid="1460475310405677377">"মতা কà§à¦•à§à§°à¦¾"</string> + <string name="spoken_emoji_1F414" msgid="5857296282631892219">"কà§à¦•à§à§°à¦¾à§° পোৱালী"</string> + <string name="spoken_emoji_1F415" msgid="5920041074892949527">"কà§à¦•à§à§°"</string> + <string name="spoken_emoji_1F416" msgid="4362403392912540286">"গাহৰি"</string> + <string name="spoken_emoji_1F417" msgid="6836978415840795128">"বন গাহৰি"</string> + <string name="spoken_emoji_1F418" msgid="7926161463897783691">"হাতী"</string> + <string name="spoken_emoji_1F419" msgid="1055233959755784186">"অকà§à¦Ÿà§‹à¦ªà¦¾à¦›"</string> + <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"শামà§à¦•à§° খোলা"</string> + <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"পোক"</string> + <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"পৰà§à§±à¦¾"</string> + <string name="spoken_emoji_1F41D" msgid="718579308764058851">"মৌ-মাখি"</string> + <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"সোণপৰà§à§±à¦¾"</string> + <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"মাছ"</string> + <string name="spoken_emoji_1F420" msgid="1041145003133609221">"গà§à§°à§€à¦·à§à¦®à¦®à¦£à§à¦¡à¦²à§€à¦¯à¦¼ অঞà§à¦šà¦²à§° মাছ"</string> + <string name="spoken_emoji_1F421" msgid="1748378324417438751">"বà§à¦²\'ফিশà§à¦¬"</string> + <string name="spoken_emoji_1F422" msgid="4106724877523329148">"কাছ"</string> + <string name="spoken_emoji_1F423" msgid="4077407945958691907">"কণী ফà§à¦Ÿà¦¿ ওলোৱা কà§à¦•à§à§°à¦¾à§° পোৱালি"</string> + <string name="spoken_emoji_1F424" msgid="6911326019270172283">"কà§à¦•à§à§°à¦¾ পোৱালী"</string> + <string name="spoken_emoji_1F425" msgid="5466514196557885577">"সনà§à¦®à§à¦–লৈ চাই থকা কà§à¦•à§à§°à¦¾ পোৱালি"</string> + <string name="spoken_emoji_1F426" msgid="2163979138772892755">"চৰাই"</string> + <string name="spoken_emoji_1F427" msgid="3585670324511212961">"পেংগà§à¦‡à¦¨"</string> + <string name="spoken_emoji_1F428" msgid="7955440808647898579">"কোৱালা"</string> + <string name="spoken_emoji_1F429" msgid="5028269352809819035">"পোডল"</string> + <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"à¦à¦Ÿà¦¾ কà§à¦à¦œà§° উট"</string> + <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"দà§à¦Ÿà¦¾ কà§à¦à¦œ থকা উট"</string> + <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"ড\'লফিন"</string> + <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"নিগনিৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"গৰà§à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"বাঘৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F430" msgid="525492897063150160">"শহাৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F431" msgid="6051358666235016851">"মেকà§à§°à§€à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F432" msgid="7698001871193018305">"ডà§à§°à§‡à¦—নৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F433" msgid="3762356053512899326">"সà§à¦ªà¦¾à¦‰à¦Ÿà¦¿à¦‚ তিমি"</string> + <string name="spoken_emoji_1F434" msgid="3619943222159943226">"ঘোà¦à§°à¦¾à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F435" msgid="59199202683252958">"বানà§à¦¦à§°à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F436" msgid="340544719369009828">"কà§à¦•à§à§°à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F437" msgid="1219818379784982585">"গাহৰিৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F438" msgid="9128124743321008210">"à¦à§‡à¦•à§à¦²à§€à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F439" msgid="1424161319554642266">"হেমষà§à¦Ÿà¦¾à§°à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾ বাঘৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"à¦à¦¾à¦²à§à¦•à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"পাণà§à¦¡à¦¾à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"গাহৰিৰ নাক"</string> + <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"হাতোৰাৰ ছাপ"</string> + <!-- no translation found for spoken_emoji_1F43F (84025195766364970) --> + <skip /> + <string name="spoken_emoji_1F440" msgid="7144338258163384433">"চকà§"</string> + <!-- no translation found for spoken_emoji_1F441 (5716781405495001412) --> + <skip /> + <string name="spoken_emoji_1F442" msgid="1905515392292676124">"কাণ"</string> + <string name="spoken_emoji_1F443" msgid="1491504447758933115">"নাক"</string> + <string name="spoken_emoji_1F444" msgid="3654613047946080332">"মà§à¦–"</string> + <string name="spoken_emoji_1F445" msgid="7024905244040509204">"জিà¦à¦¾"</string> + <string name="spoken_emoji_1F446" msgid="2150365643636471745">"বগা পৃষà§à¦ পটত ঊৰà§à¦§à§à¦¬à¦®à§à¦–ী তরà§à¦œà¦¨à§€ আঙà§à¦²à¦¿à§° সৈতে হাতৰ পিছফাল"</string> + <string name="spoken_emoji_1F447" msgid="8794022344940891388">"তলফালে নিৰà§à¦¦à§‡à¦¶ কৰা তৰà§à¦œà¦¨à§€ আঙà§à¦²à¦¿"</string> + <string name="spoken_emoji_1F448" msgid="3261812959215550650">"বগা পৃষà§à¦ পটত বাওà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা তরà§à¦œà¦¨à§€ আঙà§à¦²à¦¿à§° সৈতে হাতৰ পিছফাল"</string> + <string name="spoken_emoji_1F449" msgid="4764447975177805991">"সোà¦à¦«à¦¾à¦²à§‡ নিৰà§à¦¦à§‡à¦¶ কৰা তৰà§à¦œà¦¨à§€ আঙà§à¦²à¦¿"</string> + <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"হাতৰ মà§à¦ িৰ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"হাত-বাউলি দি থকা à¦à¦‚গী"</string> + <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"সকলো ঠিক আছে বà§à¦œà§‹à§±à¦¾ হাতৰ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"উৎসাহবà§à¦¯à¦žà§à¦œà¦• à¦à¦‚গি"</string> + <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"বà§à¦¢à¦¼à¦¾ আঙà§à¦²à¦¿ তললৈ নিরà§à¦¦à§‡à¦¶ কৰি অসনà§à¦®à¦¤à¦¿ সূচোৱা চিহà§à¦¨"</string> + <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"হাত-চাপৰি বজোৱা চিহà§à¦¨"</string> + <string name="spoken_emoji_1F450" msgid="1012021072085157054">"খোলা মà§à¦ ি বà§à¦œà§‹à§±à¦¾ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F451" msgid="8257466714629051320">"ৰাজমà§à¦•à§à¦Ÿ"</string> + <string name="spoken_emoji_1F452" msgid="4567394011149905466">"মহিলাসকলে পিনà§à¦§à¦¾ টà§à¦ªà§€"</string> + <string name="spoken_emoji_1F453" msgid="5978410551173163010">"চশমা"</string> + <string name="spoken_emoji_1F454" msgid="348469036193323252">"নে\'ক-টাই"</string> + <string name="spoken_emoji_1F455" msgid="5665118831861433578">"টি-শà§à¦¬à¦¾à§°à§à¦Ÿ"</string> + <string name="spoken_emoji_1F456" msgid="1890991330923356408">"জিনছà§"</string> + <string name="spoken_emoji_1F457" msgid="3904310482655702620">"পোছাক"</string> + <string name="spoken_emoji_1F458" msgid="5704243858031107692">"কিম\'ন\'"</string> + <string name="spoken_emoji_1F459" msgid="3553148747050035251">"বিকিনি"</string> + <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"মহিলাৰ পোছাক"</string> + <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"পাৰà§à¦š"</string> + <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"হেণà§à¦¡à¦¬à§‡à¦—"</string> + <string name="spoken_emoji_1F45D" msgid="812176504300064819">"সৰৠবেগ"</string> + <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"পà§à§°à§à¦·à§° জোতা"</string> + <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"কà§à§°à§€à¦¡à¦¼à¦¾à¦¬à¦¿à¦¦à§‡ পিনà§à¦§à¦¾ জোতা"</string> + <string name="spoken_emoji_1F460" msgid="305863879170420855">"ওখ খà§à§°à¦¾à¦¯à§à¦•à§à¦¤ জোতা"</string> + <string name="spoken_emoji_1F461" msgid="5160493217831417630">"মহিলাৰ ছেণà§à¦¡à§‡à¦²"</string> + <string name="spoken_emoji_1F462" msgid="1722897795554863734">"মহিলাৰ বà§à¦Ÿ জোতা"</string> + <string name="spoken_emoji_1F463" msgid="5850772903593010699">"পদচিহà§à¦¨"</string> + <string name="spoken_emoji_1F464" msgid="1228335905487734913">"আবকà§à¦· পà§à§°à¦¤à¦¿à¦®à¦¾à§° ছাà¦à¦¯à¦¼à¦¾à¦®à§‚ৰà§à¦¤à¦¿"</string> + <string name="spoken_emoji_1F465" msgid="4461307702499679879">"দà§à¦œà¦¨ বà§à¦¯à¦•à§à¦¤à¦¿à§° আবকà§à¦·à¦®à§‚ৰà§à¦¤à¦¿"</string> + <string name="spoken_emoji_1F466" msgid="1938873085514108889">"ল\'ৰা"</string> + <string name="spoken_emoji_1F467" msgid="8237080594860144998">"ছোৱালী"</string> + <string name="spoken_emoji_1F468" msgid="6081300722526675382">"পà§à§°à§à¦·"</string> + <string name="spoken_emoji_1F469" msgid="1090140923076108158">"মহিলা"</string> + <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"পৰিয়াল"</string> + <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"হাতে হাত ধৰা পà§à§°à§à¦·-মহিলা"</string> + <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"দà§à¦œà¦¨ মানà§à¦¹à§‡ হাতে-হাত ধৰি থকা ছবি"</string> + <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"দà§à¦—ৰাকী মহিলাই হাতে হাত ধৰি থকা à¦à¦‚গী"</string> + <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"আৰকà§à¦·à§€ বিষয়া"</string> + <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"পà§à¦¤à¦²à¦¾ শহাপহà§à§° কাণ পিনà§à¦§à¦¾ মহিলা"</string> + <string name="spoken_emoji_1F470" msgid="6409995400510338892">"ওৰণি লোৱা কইনা"</string> + <string name="spoken_emoji_1F471" msgid="3058247860441670806">"সোণালী ৰঙৰ চà§à¦²à¦¿à§° বà§à¦¯à¦•à§à¦¤à¦¿"</string> + <string name="spoken_emoji_1F472" msgid="3928854667819339142">"চীনা টà§à¦ªà§€ পৰিহিত মানà§à¦¹"</string> + <string name="spoken_emoji_1F473" msgid="5921952095808988381">"পাগà§à§°à¦¿ পৰিহিত মানà§à¦¹"</string> + <string name="spoken_emoji_1F474" msgid="1082237499496725183">"বয়সীয়াল মানà§à¦¹"</string> + <string name="spoken_emoji_1F475" msgid="7280323988642212761">"বয়সসà§à¦¥ মহিলা"</string> + <string name="spoken_emoji_1F476" msgid="4713322657821088296">"কেà¦à¦šà§à§±à¦¾"</string> + <string name="spoken_emoji_1F477" msgid="2197036131029221370">"নিৰà§à¦®à¦¾à¦£ কারà§à¦¯à¦¤ জড়িত শà§à§°à¦®à¦¿à¦•"</string> + <string name="spoken_emoji_1F478" msgid="7245521193493488875">"ৰাজকà§à¦®à¦¾à§°à§€"</string> + <string name="spoken_emoji_1F479" msgid="6876475321015553972">"জাপানী দানৱ"</string> + <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"জাপানী গ\'বলিন"</string> + <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"à¦à§‚ত"</string> + <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"শিশৠদেৱদূত"</string> + <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"বহিৰà§à¦œà¦¾à¦—তিক পà§à§°à¦¾à¦£à§€"</string> + <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"বহিৰà§à¦—à§à§°à¦¹à§° দানৱ"</string> + <string name="spoken_emoji_1F47F" msgid="441605977269926252">"দà§à¦·à§à¦Ÿ à¦à§‚ত পোৱালী"</string> + <string name="spoken_emoji_1F480" msgid="3696253485164878739">"লাওখোলা"</string> + <string name="spoken_emoji_1F481" msgid="320408708521966893">"তথà§à¦¯ যোগান ধৰা ডেসà§à¦•à¦¤ থকা লোক"</string> + <string name="spoken_emoji_1F482" msgid="3424354860245608949">"ৰখীয়া"</string> + <string name="spoken_emoji_1F483" msgid="3221113594843849083">"নৰà§à¦¤à¦•à§€"</string> + <string name="spoken_emoji_1F484" msgid="7348014979080444885">"লিপষà§à¦Ÿà¦¿à¦•"</string> + <string name="spoken_emoji_1F485" msgid="6133507975565116339">"নেইল প\'লিশà§à¦¬"</string> + <string name="spoken_emoji_1F486" msgid="9085459968247394155">"মà§à¦–মণà§à¦¡à¦² মালিছ কৰা"</string> + <string name="spoken_emoji_1F487" msgid="1479113637259592150">"চà§à¦²à¦¿ কটোৱা"</string> + <string name="spoken_emoji_1F488" msgid="6922559285234100252">"নাপিতৰ খà§à¦à¦Ÿà¦¿"</string> + <string name="spoken_emoji_1F489" msgid="8114863680950147305">"ছিৰিঞà§à¦œ"</string> + <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"পিল"</string> + <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"চà§à¦®à§à¦¬à¦¨à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"পà§à§°à§‡à¦®à¦ªà¦¤à§à§°"</string> + <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"আঙঠি"</string> + <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"ৰতà§à¦¨ পাথৰ"</string> + <string name="spoken_emoji_1F48F" msgid="741593675183677907">"চà§à¦®à§à¦¬à¦¨"</string> + <string name="spoken_emoji_1F490" msgid="4482549128959806736">"ফà§à¦²à§° থোপা"</string> + <string name="spoken_emoji_1F491" msgid="2305245307882441500">"হৃদয় চিহà§à¦¨à§° সৈতে পà§à§°à§à¦· আৰৠমহিলা"</string> + <string name="spoken_emoji_1F492" msgid="3884119934804475732">"বিবাহ"</string> + <string name="spoken_emoji_1F493" msgid="1208828371565525121">"সà§à¦ªà¦¨à§à¦¦à¦¿à¦¤ হৃদয়"</string> + <string name="spoken_emoji_1F494" msgid="6198876398509338718">"à¦à¦™à¦¾ হৃদয়"</string> + <string name="spoken_emoji_1F495" msgid="9206202744967130919">"দà§à¦–ন হৃদয়"</string> + <string name="spoken_emoji_1F496" msgid="5436953041732207775">"চিকমিকাই থকা হৃদয়"</string> + <string name="spoken_emoji_1F497" msgid="7285142863951448473">"বৰà§à¦§à¦®à¦¾à¦¨ হৃদয়"</string> + <string name="spoken_emoji_1F498" msgid="7940131245037575715">"হৃদয় আৰৠকাà¦à¦¡à¦¼"</string> + <string name="spoken_emoji_1F499" msgid="4453235040265550009">"নীলা ৰঙৰ হৃদয়"</string> + <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"সেউজীয়া ৰঙৰ হৃদয়"</string> + <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"হালধীয়া ৰঙৰ হৃদয়"</string> + <string name="spoken_emoji_1F49C" msgid="453829540120898698">"বেঙà§à¦¨à§€à¦¯à¦¼à¦¾ ৰঙৰ হৃদয়ৰ ছবি"</string> + <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"ফিটাৰ সৈতে হৃদয়"</string> + <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"আৱৰà§à¦¤à¦¨ কৰি থকা হৃদয়"</string> + <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"হৃদয় পà§à§°à¦¤à§€à¦•à§° সৈতে সজোৱা কাৰà§à¦¯"</string> + <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"à¦à¦¿à¦¤à§°à¦¤ à¦à¦Ÿà¦¾ বিনà§à¦¦à§ থকা হীৰাৰ আকৃতি"</string> + <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"বৈদà§à¦¯à§à¦¤à¦¿à¦• বাতি"</string> + <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"খঙৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"বোমা"</string> + <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"নিদà§à§°à¦¾à§°à¦¤ অৱসà§à¦¥à¦¾à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"সংঘৰà§à¦·à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"ঘাম ওলোৱা বà§à¦œà§‹à§±à¦¾ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"টোপাল"</string> + <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"পà§à§°à¦šà¦£à§à¦¡ বেগেৰে গতি কৰাৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"à¦à¦¦\'ম বিষà§à¦ া"</string> + <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"ফà§à¦²à§‹à§±à¦¾ বাইচেপ"</string> + <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"মূৰ ঘূৰোৱাৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"সংলাপ বà§à¦œà§‹à§±à¦¾ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"চিনà§à¦¤à¦¾-à¦à¦¾à¦¬à¦¨à¦¾à§° বেলà§à¦¨"</string> + <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"বগা ফà§à¦²"</string> + <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"à¦à¦¶ পইণà§à¦Ÿ বà§à¦œà§‹à§±à¦¾ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"মানি বেগ"</string> + <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"মà§à¦¦à§à§°à¦¾à§° বিনিময়"</string> + <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"ডাঠকৈ অংকিত ড\'লাৰৰ চিন"</string> + <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"কà§à§°à§‡à¦¡à¦¿à¦Ÿ কাৰà§à¦¡"</string> + <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"য়েন চিনযà§à¦•à§à¦¤ বেংকনোটৰ ছবি"</string> + <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"ডলাৰ চিহà§à¦¨ থকা বেংক ন\'ট বà§à¦œà§‹à§±à¦¾ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"ইউৰ\' চিনযà§à¦•à§à¦¤ বেংকনোটৰ ছবি"</string> + <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"পাউণà§à¦¡ চিনযà§à¦•à§à¦¤ বেংকনোটৰ ছবি"</string> + <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"পাখী লগা পইচা"</string> + <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"ঊৰà§à¦§à§à¦¬à¦®à§à¦–ী পà§à§°à§±à¦£à¦¤à¦¾à§° সৈতে চà§à¦šà¦¾à§°à§à¦Ÿ আৰৠয়েনৰ চিন"</string> + <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"আসন"</string> + <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à§°"</string> + <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"বà§à§°à¦¿à¦«à¦•à§‡à¦›"</string> + <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"সৰৠডিসà§à¦•"</string> + <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"ফà§à¦²\'পী ডিসà§à¦•"</string> + <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"অপà§à¦Ÿà¦¿à¦•à§‡à¦² ডিসà§à¦•"</string> + <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"ডি. à¦à¦¿. ডি."</string> + <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"ফাইলৰ ফ\'লà§à¦¡à¦¾à§°"</string> + <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"খোলা ফাইলৰ ফ\'লà§à¦¡à¦¾à§°"</string> + <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"চà§à¦• মেৰখাই থকা পৃষà§à¦ া"</string> + <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"সোà¦à¦«à¦¾à¦²à¦Ÿà§‹ মà§à¦–ৰফালে পাক খাই থকা পৃষà§à¦ া"</string> + <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"কেলেণà§à¦¡à¦¾à§°"</string> + <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"বেৰত ওলমাই থোৱা কেলেণà§à¦¡à¦¾à§°"</string> + <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"কাৰà§à¦¡ ইণà§à¦¡à§‡à¦•à§à¦¸"</string> + <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"ঊৰà§à¦§à§à¦¬à¦®à§à¦–ী পà§à§°à§±à¦£à¦¤à¦¾à§° সৈতে চà§à¦šà¦¾à§°à§à¦Ÿ"</string> + <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"অধোগামী পà§à§°à§±à¦£à¦¤à¦¾à§° সৈতে চà§à¦šà¦¾à§°à§à¦Ÿ"</string> + <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"দণà§à¦¡ চিতà§à§°"</string> + <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"কà§à¦²à¦¿à¦ªà¦¬\'ৰà§à¦¡"</string> + <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"পà§à¦¶à§à¦¬à¦ªà¦¿à¦¨"</string> + <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"ওপৰৰ অংশ গোলাকাৰ আকৃতিৰ হেà¦à¦šà¦¿ দিলে সোমোৱা গজাল"</string> + <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"পেপাৰকà§à¦²à¦¿à¦ª"</string> + <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"পোন ৰà§à¦²à¦¾à§°"</string> + <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"তà§à§°à¦¿à¦•à§‹à¦£à¦¾à¦•à¦¾à§° ৰà§à¦²à¦¾à§°"</string> + <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"বà§à¦•à¦®à¦¾à¦°à§à¦•à§° টেব"</string> + <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"লেজাৰ"</string> + <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"টোকাবহী"</string> + <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"সà§à¦¨à§à¦¦à§°à¦•à§ˆ সজোৱা ক\'à¦à¦¾à§°à§° টোকাবহী"</string> + <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"বনà§à¦§ কিতাপ"</string> + <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"খোলা কিতাপ"</string> + <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"সেউজীয়া ৰঙৰ কিতাপ"</string> + <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"নীলা ৰঙৰ কিতাপ"</string> + <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"কমলা ৰঙৰ কিতাপ"</string> + <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"কিতাপ"</string> + <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"নাম লিখা বেজ"</string> + <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"সà§à¦•à§à§°\'ল"</string> + <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"মেম\'"</string> + <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"টেলিফ\'ন ৰিচিà¦à¦¾à§°"</string> + <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"পেজাৰ"</string> + <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"ফেকà§à¦¸ মেচিন"</string> + <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"উপগà§à§°à¦¹à§° পৰা তথà§à¦¯ আহৰণ কৰা à¦à¦£à§à¦Ÿà§‡à¦¨à¦¾"</string> + <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"ৰাইজক উদà§à¦¦à§‡à¦¶à§à¦¯ কৰি বà§à¦¯à§±à¦¹à§ƒà¦¤ লাউডসà§à¦ªà§€à¦•à¦¾à§°"</string> + <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"হৰà§à¦·à¦§à§à¦¬à¦¨à¦¿à§° কাৰণে মেগাফ\'ন"</string> + <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"আউটবকà§à¦¸ টà§à§°à§‡\'"</string> + <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"ইনবকà§à¦¸ টà§à§°à§‡\'"</string> + <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"টোপোলা"</string> + <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"ই-মেইলৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"অনà§à¦¤à§°à§à¦—ামী লেফাফা"</string> + <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"ওপৰত অধোগামী কাà¦à¦¡à¦¼ চিহà§à¦¨ থকা খাম"</string> + <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"নিমà§à¦¨à¦—ামী পতাকাযà§à¦•à§à¦¤ বনà§à¦§ চিঠিৰ বাকচ"</string> + <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"উতà§à¦¤à§‹à¦²à¦¿à¦¤ পতাকাযà§à¦•à§à¦¤ বনà§à¦§ চিঠিৰ বাকচ"</string> + <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"উতà§à¦¤à§‹à¦²à¦¿à¦¤ পতাকাযà§à¦•à§à¦¤ খোলা চিঠিৰ বাকচ"</string> + <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"নিমà§à¦¨à¦—ামী পতাকাযà§à¦•à§à¦¤ খোলা চিঠিৰ বাকচ"</string> + <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"প\'ষà§à¦Ÿà¦¬à¦¾à¦•à¦š"</string> + <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"ডাক পেà¦à¦ªà¦¾"</string> + <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"বাতৰিকাকত"</string> + <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"ম’বাইল ফ\'ন"</string> + <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"বাওà¦à¦«à¦¾à¦²à§‡ সà§à¦¥à¦¿à¦¤ সোà¦à¦«à¦¾à¦²à§‡ নিদেরà§à¦¶ কৰা কাà¦à¦¡à¦¼à§° চিহà§à¦¨à¦¸à¦¹ ম’বাইল ফ\'ন"</string> + <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"কমà§à¦ªà¦¨ ম\'ড"</string> + <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"অফ হৈ থকা ম’বাইল ফ\'ন"</string> + <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"ম’বাইল ফ\'নৰ বà§à¦¯à§±à¦¹à¦¾à§° নিষিদà§à¦§"</string> + <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"ছিংগনেলৰ দণà§à¦¡à§° সৈতে à¦à¦£à§à¦Ÿà§‡à¦¨à¦¾"</string> + <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"কেমেৰা"</string> + <!-- no translation found for spoken_emoji_1F4F8 (6874216216317936645) --> + <skip /> + <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"à¦à¦¿à¦¡à¦¿à¦…\' কেমেৰা"</string> + <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"দূৰদৰà§à¦¶à¦¨"</string> + <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"ৰেডিঅ’"</string> + <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"à¦à¦¿à¦¡à¦¿à¦…\' কেছেট"</string> + <!-- no translation found for spoken_emoji_1F4FD (992184090920043081) --> + <skip /> + <!-- no translation found for spoken_emoji_1F4FF (6566102135671766103) --> + <skip /> + <string name="spoken_emoji_1F500" msgid="2389947994502144547">"পাকখোৱা সোà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা দà§à¦¡à¦¾à¦² কাà¦à¦¡à¦¼à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_1F501" msgid="2132188352433347009">"ঘড়ীৰ কাটাৰ দিশত থকা সোà¦à¦«à¦¾à¦²à§‡ আৰৠবাওà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা দà§à¦¡à¦¾à¦² পৃথক কাà¦à¦¡à¦¼à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_1F502" msgid="2361976580513178391">"ঘড়ীৰ কাটাৰ দিশত সোà¦à¦«à¦¾à¦²à§‡ আৰৠবাওà¦à¦«à¦¾à¦²à§‡ বৃতà§à¦¤à¦¾à¦•à§ƒà¦¤à¦¿à§° আৱৰণেৰে খোলা মà§à¦–ৰ চকà§à§°à¦¾à¦•à¦¾à§° কাà¦à¦¡à¦¼"</string> + <string name="spoken_emoji_1F503" msgid="8936283551917858793">"ঘড়ীৰ কাটাৰ দিশত নিমà§à¦¨à¦®à§à¦–ী আৰৠঊৰà§à¦§à§à¦¬à¦®à§à¦–ী চকà§à§°à¦¾à¦•à¦¾à§° কাà¦à¦¡à¦¼à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_1F504" msgid="708290317843535943">"ঘড়ীৰ কাটাৰ বিপৰীত দিশত তলমà§à§±à¦¾ আৰৠওপৰমà§à§±à¦¾ খোলা মà§à¦–ৰ চকà§à§°à¦¾à¦•à¦¾à§° কাà¦à¦¡à¦¼"</string> + <string name="spoken_emoji_1F505" msgid="6348909939004951860">"কম উজà§à¦œà§à¦¬à¦²à¦¤à¦¾à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_1F506" msgid="4449609297521280173">"অতà§à¦¯à¦¨à§à¦¤ উজà§à¦œà§à¦¬à¦² সূচোৱা পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F507" msgid="7136386694923708448">"শবà§à¦¦ নিৰৱ কৰা চিহà§à¦¨ থকা সà§à¦ªà§€à¦•à¦¾à§°"</string> + <string name="spoken_emoji_1F508" msgid="5063567689831527865">"সà§à¦ªà§€à¦•à¦¾à§°"</string> + <string name="spoken_emoji_1F509" msgid="3948050077992370791">"à¦à¦Ÿà¦¾ ধà§à¦¬à¦¨à¦¿ তৰংগৰ সৈতে সà§à¦ªà§€à¦•à¦¾à§°"</string> + <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"তিনিডাল শবà§à¦¦ ধà§à¦¬à¦¨à¦¿à§° চিহà§à¦¨ থকা সà§à¦ªà§€à¦•à¦¾à§°"</string> + <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"বেটাৰি"</string> + <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"বৈদà§à¦¯à§à¦¤à¦¿à¦• পà§à¦²à¦¾à¦—"</string> + <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"বাওà¦à¦«à¦¾à¦²à§‡ নিৰà§à¦¦à§‡à¦¶ কৰা আতচী কাচ"</string> + <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"সোà¦à¦«à¦¾à¦²à§‡ নিৰà§à¦¦à§‡à¦¶ কৰা আতচী কাচ"</string> + <string name="spoken_emoji_1F50F" msgid="915079280472199605">"তলা আৰৠচিà¦à¦¯à¦¼à¦¾à¦¹à§€ কলম"</string> + <string name="spoken_emoji_1F510" msgid="7658381761691758318">"চাবিৰ সৈতে বনà§à¦§ তলা"</string> + <string name="spoken_emoji_1F511" msgid="262319867774655688">"চাবি"</string> + <string name="spoken_emoji_1F512" msgid="5628688337255115175">"তলা"</string> + <string name="spoken_emoji_1F513" msgid="8579201846619420981">"খোল খাই থকা তলা"</string> + <string name="spoken_emoji_1F514" msgid="7027268683047322521">"ঘণà§à¦Ÿà¦¾"</string> + <string name="spoken_emoji_1F515" msgid="8903179856036069242">"কোনোধৰণৰ শবà§à¦¦ কৰা নিষেধ"</string> + <string name="spoken_emoji_1F516" msgid="108097933937925381">"বà§à¦•à¦®à¦¾à¦°à§à¦•"</string> + <string name="spoken_emoji_1F517" msgid="2450846665734313397">"শিকলিৰ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F518" msgid="7028220286841437832">"ৰেডিঅ\' বà§à¦Ÿà¦¾à¦®"</string> + <string name="spoken_emoji_1F519" msgid="8211189165075445687">"ওপৰত বাওà¦à¦«à¦¾à¦²à§‡ নিদেরà§à¦¶ কৰা কাà¦à¦¡à¦¼à§° চিহà§à¦¨ থকা \'বেক\' লিখা বরà§à¦—"</string> + <string name="spoken_emoji_1F51A" msgid="823966751787338892">"বাওà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা কাà¦à¦¡à¦¼à§° চিহà§à¦¨à§° তলত \'End\' লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"সোà¦-বাওঠদà§à¦¯à¦¼à§‹à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা কাà¦à¦¡à¦¼à§° চিহà§à¦¨à§° তলত \'On\' লিখা বরà§à¦—"</string> + <string name="spoken_emoji_1F51C" msgid="110609810659826676">"সোà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা কাà¦à¦¡à¦¼à§° চিহà§à¦¨à§° তলত \'Soon\' লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"ওপৰলৈ নিরà§à¦¦à§‡à¦¶ কৰা কাà¦à¦¡à¦¼à§° চিহà§à¦¨à§° তলত \'Top\' লিখা থকা বরà§à¦—"</string> + <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"ওঠৰ বছৰৰ তলৰ লোকৰ পà§à§°à§±à§‡à¦¶ নিষেধ সূচোৱা পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"কীকেপ টেন"</string> + <string name="spoken_emoji_1F520" msgid="7335109890337048900">"লেটিন বৰফলা আখৰৰ বাবে ইনপà§à¦Ÿ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F521" msgid="2693185864450925778">"লেটিন সৰà§à¦«à¦²à¦¾à§° আখৰৰ বাবে ইনপà§à¦Ÿ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F522" msgid="8419130286280673347">"সংখà§à¦¯à¦¾à§° ইনপà§à¦Ÿ সূচোৱা চিহà§à¦¨"</string> + <string name="spoken_emoji_1F523" msgid="3318053476401719421">"পà§à§°à¦¤à§€à¦•à¦¸à¦®à§‚হৰ বাবে ইনপà§à¦Ÿ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F524" msgid="1625073997522316331">"লেটিন à¦à¦¾à¦·à¦¾à§° বরà§à¦£à§° ইনপà§à¦Ÿ সূচোৱা চিহà§à¦¨"</string> + <string name="spoken_emoji_1F525" msgid="4083884189172963790">"জà§à¦‡"</string> + <string name="spoken_emoji_1F526" msgid="2035494936742643580">"বৈদà§à¦¯à§à¦¤à¦¿à¦• টৰà§à¦š লাইট"</string> + <string name="spoken_emoji_1F527" msgid="134257142354034271">"ৰেঞà§à¦š"</string> + <string name="spoken_emoji_1F528" msgid="700627429570609375">"হাতà§à§°à¦¿"</string> + <string name="spoken_emoji_1F529" msgid="7480548235904988573">"নট আৰৠবলà§à¦Ÿà§"</string> + <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"হ\'চ\'"</string> + <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"পিষà§à¦Ÿà¦²"</string> + <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"অণà§à¦¬à§€à¦•à§à¦·à¦£ যনà§à¦¤à§à§°"</string> + <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"দূৰবীকà§à¦·à¦£ যনà§à¦¤à§à§°"</string> + <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"সà§à¦«à¦Ÿà¦¿à¦•à§° বল"</string> + <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"ছয়টা চà§à¦• আৰৠমাজত বিনà§à¦¦à§ থকা তৰাচিহà§à¦¨"</string> + <string name="spoken_emoji_1F530" msgid="3572898444281774023">"শিকাৰৠবà§à¦œà§‹à§±à¦¾ জাপানী চিহà§à¦¨"</string> + <string name="spoken_emoji_1F531" msgid="5225633376450025396">"তà§à§°à¦¿à¦¶à§‚লৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F532" msgid="9169568490485180779">"ক\'লা ৰঙৰ বরà§à¦—ৰ বà§à¦Ÿà¦¾à¦®"</string> + <string name="spoken_emoji_1F533" msgid="6554193837201918598">"বৰà§à¦—াকৃতিৰ বগা বà§à¦Ÿà¦¾à¦®"</string> + <string name="spoken_emoji_1F534" msgid="8339298801331865340">"ডাঙৰ ৰঙা বৃতà§à¦¤"</string> + <string name="spoken_emoji_1F535" msgid="1227403104835533512">"ডাঙৰ নীলা চকà§à§°"</string> + <string name="spoken_emoji_1F536" msgid="5477372445510469331">"কমলা ৰঙৰ ডাঙৰ হীৰা"</string> + <string name="spoken_emoji_1F537" msgid="3158915214347274626">"ডাঙৰ নীলা হীৰা"</string> + <string name="spoken_emoji_1F538" msgid="4300084249474451991">"সৰৠকমলাৰঙী হীৰা"</string> + <string name="spoken_emoji_1F539" msgid="6535159756325742275">"সৰৠনীলা হীৰা"</string> + <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"ঊরà§à¦§à§à¦¬à¦®à§à¦–ী ৰঙা তà§à§°à¦¿à¦à§à¦œ"</string> + <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"তলমà§à§±à¦¾ ৰঙা তà§à§°à¦¿à¦à§à¦œ"</string> + <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"ওপৰমà§à§±à¦¾ সৰৠৰঙা তà§à§°à¦¿à¦à§à¦œ"</string> + <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"তলমà§à§±à¦¾ সৰৠৰঙা তà§à§°à¦¿à¦à§à¦œ"</string> + <!-- no translation found for spoken_emoji_1F549 (4488493812823912137) --> + <skip /> + <!-- no translation found for spoken_emoji_1F54A (6329445861053369293) --> + <skip /> + <!-- no translation found for spoken_emoji_1F54B (1632185618342057203) --> + <skip /> + <!-- no translation found for spoken_emoji_1F54C (2444758230008443504) --> + <skip /> + <!-- no translation found for spoken_emoji_1F54D (8871149889908118955) --> + <skip /> + <!-- no translation found for spoken_emoji_1F54E (2602602033588655819) --> + <skip /> + <string name="spoken_emoji_1F550" msgid="7761392621689986218">"ঘড়ীত à¦à¦Ÿà¦¾ বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F551" msgid="2699448504113431716">"ঘড়ীত দà§à¦Ÿà¦¾ বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F552" msgid="5872107867411853750">"ঘড়ীত তিনিটা বজা দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F553" msgid="8490966286158640743">"ঘড়ীত চাৰিটা বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F554" msgid="7662585417832909280">"ঘড়ীত পাà¦à¦šà¦Ÿà¦¾ বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F555" msgid="5564698204520412009">"ঘড়ীত ছয়টা বজা দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F556" msgid="7325712194836512205">"ঘড়ীত সাতটা বজা দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F557" msgid="4398343183682848693">"ঘড়ীত আঠটা বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F558" msgid="3110507820404018172">"ঘড়ীত নটা বজা দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F559" msgid="2972160366448337839">"ঘড়ীত দহটা বজা দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"ঘড়ীত à¦à¦˜à¦¾à§°à¦Ÿà¦¾ বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"ঘড়ীত বাৰটা বজা দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"ঘড়ীত ডেৰটা বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"ঘড়ীত আঢ়ৈটা বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"ঘড়ীত চাৰে তিনিটা বজা দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"ঘড়ীত চাৰে চাৰিটা বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F560" msgid="5771339179963924448">"ঘড়ীত চাৰে পাচà¦à¦Ÿà¦¾ বজা দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F561" msgid="3139944777062475382">"ঘড়ীত চাৰে ছয়টা বজা দৃশà§à¦¯"</string> + <string name="spoken_emoji_1F562" msgid="8273944611162457084">"ঘড়ীত সাত বাজি তà§à§°à¦¿à¦¶ মিনিট দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F563" msgid="8643976903718136299">"ঘড়ীত চাৰে আঠটা বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F564" msgid="3511070239796141638">"ঘড়ীত চাৰে নটা বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F565" msgid="4567451985272963088">"ঘড়ীত চাৰে দহটা বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F566" msgid="2790552288169929810">"ঘড়ীত চাৰে à¦à¦˜à¦¾à§°à¦Ÿà¦¾ বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <string name="spoken_emoji_1F567" msgid="9026037362100689337">"ঘড়ীত চাৰে বাৰটা বজা দেখà§à§±à¦¾à¦‡à¦›à§‡"</string> + <!-- no translation found for spoken_emoji_1F56F (2425394083258103670) --> + <skip /> + <!-- no translation found for spoken_emoji_1F570 (2611444774363424788) --> + <skip /> + <!-- no translation found for spoken_emoji_1F573 (1039753319384915644) --> + <skip /> + <!-- no translation found for spoken_emoji_1F574 (1370973157808858727) --> + <skip /> + <!-- no translation found for spoken_emoji_1F575 (3393287560881832534) --> + <skip /> + <!-- no translation found for spoken_emoji_1F576 (6510040886626337527) --> + <skip /> + <!-- no translation found for spoken_emoji_1F577 (1745605672232546738) --> + <skip /> + <!-- no translation found for spoken_emoji_1F578 (5843261607004481128) --> + <skip /> + <!-- no translation found for spoken_emoji_1F579 (356353388497335187) --> + <skip /> + <!-- no translation found for spoken_emoji_1F587 (1529578701645787678) --> + <skip /> + <!-- no translation found for spoken_emoji_1F58A (5535685878758638056) --> + <skip /> + <!-- no translation found for spoken_emoji_1F58B (8383182102775796958) --> + <skip /> + <!-- no translation found for spoken_emoji_1F58C (3645908884921776727) --> + <skip /> + <!-- no translation found for spoken_emoji_1F58D (8498569396909368249) --> + <skip /> + <!-- no translation found for spoken_emoji_1F590 (1764003432828568259) --> + <skip /> + <!-- no translation found for spoken_emoji_1F595 (2331418391124951688) --> + <skip /> + <!-- no translation found for spoken_emoji_1F596 (1326418921526428839) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5A5 (5652785146334053695) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5A8 (1431495880490623659) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5B1 (5175363198176970281) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5B2 (638466571223781802) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5BC (2406817930103032256) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5C2 (5722791826015378721) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5C3 (2361411623100608566) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5C4 (5699005642361736394) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5D1 (8837990226577655561) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5D2 (875563245704330618) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5D3 (5759637997516385074) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5DC (2134509111665528807) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5DD (2537536524658220506) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5DE (369717954301912562) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5E1 (4756313645316161687) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5E3 (725415936980269374) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5EF (6775383222346053007) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5F3 (5365297662012404100) --> + <skip /> + <!-- no translation found for spoken_emoji_1F5FA (4806783543043181633) --> + <skip /> + <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"মাউণà§à¦Ÿ ফà§à¦œà¦¿"</string> + <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"ট\'কিঅ\' টাৱাৰ"</string> + <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"ষà§à¦Ÿà§‡à¦šà§ অৱ লিবাৰà§à¦Ÿà§€"</string> + <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"জাপানৰ মেপ"</string> + <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"ম\'য়াই মূরà§à¦¤à¦¿"</string> + <string name="spoken_emoji_1F600" msgid="7601109464776835283">"হাà¦à¦¹à¦¿à¦®à§à¦–ীয়া চেহেৰা"</string> + <string name="spoken_emoji_1F601" msgid="746026523967444503">"হাà¦à¦¹à¦¿ থকা চকà§à§°à§‡ হাà¦à¦¹à¦¿à¦®à§à¦–ীয়া চেহেৰা"</string> + <string name="spoken_emoji_1F602" msgid="8354558091785198246">"আননà§à¦¦à§° চকà§à¦²à§‹à§° সৈতে মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F603" msgid="3861022912544159823">"মেলা মà§à¦–েৰে হাà¦à¦¹à¦¿ থকা চেহেৰা"</string> + <string name="spoken_emoji_1F604" msgid="5119021072966343531">"মà§à¦– মেলি হাà¦à¦¹à¦¿ থকা মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F605" msgid="6140813923973561735">"খোলা মà§à¦– আৰৠশীতল ঘামেৰে হাà¦à¦¹à¦¿ থকা মà§à¦–"</string> + <string name="spoken_emoji_1F606" msgid="3549936813966832799">"মেলা মà§à¦–েৰে কিনà§à¦¤à§ জোৰকৈ চকৠমà§à¦¦à¦¿ হাà¦à¦¹à¦¿ থকা চেহেৰা"</string> + <string name="spoken_emoji_1F607" msgid="2826424078212384817">"মৰলৰ সৈতে হাà¦à¦¹à¦¿à¦®à§à¦–ীয়া à¦à¦‚গী"</string> + <string name="spoken_emoji_1F608" msgid="7343559595089811640">"শিঙৰ সৈতে হাà¦à¦¹à¦¿à¦®à§à¦–ীয়া মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F609" msgid="5481030187207504405">"চকৠটিপিয়াই থকা মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"চকà§à§°à§‡ পà§à§°à¦•à¦¾à¦¶ পোৱা হাà¦à¦¹à¦¿à¦®à§à¦–ীয়া মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"সà§à¦¸à§à¦¬à¦¾à¦¦à§ খাদà§à¦¯à§° আমেজ লোৱা চেহেৰা"</string> + <string name="spoken_emoji_1F60C" msgid="349384012958268496">"সà§à¦¬à¦¸à§à¦¤à¦¿ অনà§à¦à§± কৰা মà§à¦–"</string> + <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"হৃদয় আকৃতিৰ চকà§à¦¸à¦¹ হাà¦à¦¹à¦¿ থকা মà§à¦–"</string> + <string name="spoken_emoji_1F60E" msgid="441718886380605643">"ছানগà§à¦²à¦¾à¦› পৰিহিত হাà¦à¦¹à¦¿ থকা মà§à¦–"</string> + <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"বেà¦à¦•à¦¾ হাà¦à¦¹à¦¿ মৰা চেহেৰা"</string> + <string name="spoken_emoji_1F610" msgid="3225675825334102369">"কোনো à¦à¦‚গী পà§à§°à¦•à¦¾à¦¶ নকৰা মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F611" msgid="7199179827619679668">"অনà§à¦à§‚তিহীন মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F612" msgid="985081329745137998">"বিৰকà§à¦¤ মà§à¦–"</string> + <string name="spoken_emoji_1F613" msgid="5548607684830303562">"ঘাম নিরà§à¦—ত হোৱা মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F614" msgid="3196305665259916390">"চিনà§à¦¤à¦¿à¦¤ মà§à¦–"</string> + <string name="spoken_emoji_1F615" msgid="3051674239303969101">"বিà¦à§à§°à¦¾à¦¨à§à¦¤ চেহেৰা"</string> + <string name="spoken_emoji_1F616" msgid="8124887056243813089">"বিবà§à¦¦à§à¦§à¦¿à¦¤ পৰা à¦à¦‚গীৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F617" msgid="7052733625511122870">"চà§à¦®à¦¾ খোৱা মà§à¦–"</string> + <string name="spoken_emoji_1F618" msgid="408207170572303753">"চà§à¦®à¦¾ যà¦à¦šà¦¾ à¦à¦‚গীৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F619" msgid="8645430335143153645">"চকà§à§°à§‡ হাà¦à¦¹à¦¿ পà§à§°à¦•à¦¾à¦¶ পোৱা আৰৠচà§à¦®à¦¾ যà¦à¦šà¦¾ à¦à¦‚গীৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"চকৠমà§à¦¦à¦¿ চà§à¦®à¦¾ যà¦à¦šà¦¾ à¦à¦‚গীৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"বাহিৰলৈ জিà¦à¦¾ উলিয়াই থকা মà§à¦–"</string> + <string name="spoken_emoji_1F61C" msgid="198943912107589389">"চকৠটিপিয়াই জিà¦à¦¾ উলিয়াই থকা মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"চকৠমà§à¦¦à¦¿ জিà¦à¦¾ উলিয়াই থকা ধেমেলীয়া à¦à¦‚গী"</string> + <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"নিৰাশ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"চিনà§à¦¤à¦¿à¦¤ চেহেৰা"</string> + <string name="spoken_emoji_1F620" msgid="6051942001307375830">"খঙাল মà§à¦–"</string> + <string name="spoken_emoji_1F621" msgid="2114711878097257704">"খঙাল মà§à¦–"</string> + <string name="spoken_emoji_1F622" msgid="29291014645931822">"কনà§à¦¦à¦¨à§°à¦¤ মà§à¦–"</string> + <string name="spoken_emoji_1F623" msgid="7803959833595184773">"অধà§à¦¯à§±à¦¸à¦¾à¦¯à¦¼à§€ চেহেৰা"</string> + <string name="spoken_emoji_1F624" msgid="8637637647725752799">"বিজয়ৰ আননà§à¦¦à¦¤ আতà§à¦®à¦¹à¦¾à§°à¦¾ চেহেৰা"</string> + <string name="spoken_emoji_1F625" msgid="6153625183493635030">"হতাশ কিনà§à¦¤à§ সà§à¦¬à¦¸à§à¦¤à¦¿à§° মà§à¦–"</string> + <string name="spoken_emoji_1F626" msgid="6179485689935562950">"মà§à¦– মেলি থকা à¦à§à§°à§‚ কà§à¦žà§à¦šà¦¿à¦¤ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F627" msgid="8566204052903012809">"কà§à¦·à§‹à¦ পà§à§°à¦•à¦¾à¦¶ কৰা à¦à¦‚গীৰে মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F628" msgid="8875777401624904224">"à¦à§€à¦¤à¦¿à¦—à§à§°à¦¸à§à¦¤ চেহেৰা"</string> + <string name="spoken_emoji_1F629" msgid="1411538490319190118">"কà§à¦²à¦¾à¦¨à§à¦¤ চেহেৰা"</string> + <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"টোপনি ধৰি থকা à¦à¦‚গীৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"কà§à¦²à¦¾à¦¨à§à¦¤ চেহেৰা"</string> + <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"মà§à¦– বিকটাই থকা"</string> + <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"উচà§à¦šà¦¸à§à¦¬à§°à§‡ কনà§à¦¦à¦¨à§°à¦¤ চেহেৰা"</string> + <string name="spoken_emoji_1F62E" msgid="726083405284353894">"মà§à¦– মেলি থকা চেহেৰা"</string> + <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"মৌন মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F630" msgid="3298804852155581163">"মেলা মà§à¦– আৰৠশীতল ঘামৰে ঘমাৰà§à¦¤ চেহেৰা"</string> + <string name="spoken_emoji_1F631" msgid="1603391150954646779">"শংকিত মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F632" msgid="4846193232203976013">"বিসà§à¦®à¦¿à¦¤ চেহেৰা"</string> + <string name="spoken_emoji_1F633" msgid="4023593836629700443">"ৰঙাপৰা মà§à¦–"</string> + <string name="spoken_emoji_1F634" msgid="3155265083246248129">"নিদà§à§°à¦¾à¦²à§ মà§à¦–"</string> + <string name="spoken_emoji_1F635" msgid="4616691133452764482">"মূৰ ঘূৰণি হোৱা মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F636" msgid="947000211822375683">"মà§à¦–বিহীন চেহেৰা"</string> + <string name="spoken_emoji_1F637" msgid="1269551267347165774">"চিকিৎসা কাৰà§à¦¯à¦¤ বà§à¦¯à§±à¦¹à¦¾à§° কৰা মà§à¦–া"</string> + <string name="spoken_emoji_1F638" msgid="3410766467496872301">"হাà¦à¦¹à¦¿ থকা চকà§à§°à§‡ হাà¦à¦¹à¦¿à¦®à§à¦–ীয়া মেকà§à§°à§€à§° চেহেৰা"</string> + <string name="spoken_emoji_1F639" msgid="1833417519781022031">"আননà§à¦¦à§° চকà§à¦²à§‹à§° সৈতে মেকà§à§°à§€à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"মেলা মà§à¦–েৰে হাà¦à¦¹à¦¿ থকা মেকà§à§°à§€"</string> + <string name="spoken_emoji_1F63B" msgid="74417995938927571">"হৃদয়ৰ আকাৰৰ চকà§à§° হাà¦à¦¹à¦¿ মà§à¦–ীয়া মেকà§à§°à§€à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"বেà¦à¦•à¦¾ হাà¦à¦¹à¦¿ মাৰি থকা মেকà§à§°à§€"</string> + <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"চকৠমà§à¦¦à¦¿ চà§à¦®à¦¾ খোৱা à¦à¦‚গীৰ মেকà§à§°à§€à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"খঙাল à¦à¦‚গীৰ মেকà§à§°à§€à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"কানà§à¦¦à¦¿ থকা à¦à¦‚গীৰ মেকà§à§°à§€à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F640" msgid="6023054549904329638">"বেà¦à¦•à¦¾ হাà¦à¦¹à¦¿ মৰা মেকà§à§°à§€ মà§à¦–"</string> + <!-- no translation found for spoken_emoji_1F641 (2580807588556383139) --> + <skip /> + <!-- no translation found for spoken_emoji_1F642 (1150197386159721331) --> + <skip /> + <!-- no translation found for spoken_emoji_1F643 (7631520433919530552) --> + <skip /> + <!-- no translation found for spoken_emoji_1F644 (446284817942609022) --> + <skip /> + <string name="spoken_emoji_1F645" msgid="5202090629227587076">"কোনো à¦à¦¾à¦² অà¦à¦¿à¦¬à§à¦¯à¦•à§à¦¤à¦¿ পà§à§°à¦•à¦¾à¦¶ নোপোৱা মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F646" msgid="6734425134415138134">"আসà§à¦¬à¦¸à§à¦¤ অনà§à¦à§± কৰা চেহেৰা"</string> + <string name="spoken_emoji_1F647" msgid="1090285518444205483">"গà¦à§€à§°à¦à¦¾à§±à§‡ শিৰ নত কৰা বà§à¦¯à¦•à§à¦¤à¦¿"</string> + <string name="spoken_emoji_1F648" msgid="8978535230610522356">"বেয়া বসà§à¦¤à§ নোচোৱা বানà§à¦¦à§°à§° চেহেৰা"</string> + <string name="spoken_emoji_1F649" msgid="8486145279809495102">"হাতেৰে কাণ ঢাকি থকা বানà§à¦¦à§°à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"হাতেৰে মà§à¦– ঢাকি কথা নোকোৱা à¦à¦‚গীত থকা বানà§à¦¦à§°à§° মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"ওপৰলৈ à¦à¦–ন হাত দাঙি সà§à¦–ী বà§à¦¯à¦•à§à¦¤à¦¿à§° চেহেৰা"</string> + <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"উলà§à¦²à¦¾à¦¸à§‡à§°à§‡ দà§à¦¯à¦¼à§‹à¦–ন হাত দাঙি থকা বà§à¦¯à¦•à§à¦¤à¦¿à§° চেহেৰা"</string> + <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"চেলাউৰি কোà¦à¦š খà§à§±à¦¾à¦‡ অসà§à¦¬à¦¸à§à¦¤à¦¿ অনà§à¦à§± কৰা বà§à¦¯à¦•à§à¦¤à¦¿à§° চেহেৰা"</string> + <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"খং কৰি থকা বà§à¦¯à¦•à§à¦¤à¦¿"</string> + <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"হাত সাৱটি থকা বà§à¦¯à¦•à§à¦¤à¦¿à§° চেহেৰা"</string> + <string name="spoken_emoji_1F680" msgid="513263736012689059">"ৰকেট"</string> + <string name="spoken_emoji_1F681" msgid="9201341783850525339">"হেলিকপà§à¦Ÿà¦¾à§°"</string> + <string name="spoken_emoji_1F682" msgid="8046933583867498698">"বাষà§à¦ªà¦šà¦¾à¦²à¦¿à¦¤ ৰে\'ল ইঞà§à¦œà¦¿à¦¨"</string> + <string name="spoken_emoji_1F683" msgid="8772750354339223092">"ৰেলৰ ডবা"</string> + <string name="spoken_emoji_1F684" msgid="346396777356203608">"দà§à§°à§à¦¤à¦¬à§‡à¦—ী ৰে\'ল"</string> + <string name="spoken_emoji_1F685" msgid="1237059817190832730">"বনà§à¦§à§à¦•à§° গà§à¦²à¦¿ সদৃশ তীবà§à§°-গতিৰ টà§à§°à§‡à¦‡à¦¨"</string> + <string name="spoken_emoji_1F686" msgid="3525197227223620343">"টà§à§°à§‡à¦‡à¦¨"</string> + <string name="spoken_emoji_1F687" msgid="5110143437960392837">"মেটà§à§°\'"</string> + <string name="spoken_emoji_1F688" msgid="4702085029871797965">"পাতল চিৰিৰ ৰে\'ল পথ"</string> + <string name="spoken_emoji_1F689" msgid="2375851019798817094">"ষà§à¦Ÿà§‡à¦šà¦¨"</string> + <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"টà§à§°à¦¾à¦® গাড়ী"</string> + <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"টà§à§°à¦¾à¦®à§° ডবা"</string> + <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"বাছ"</string> + <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"আহি থকা বাছ"</string> + <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"বৈদà§à¦¯à§à¦¤à¦¿à¦• শকà§à¦¤à¦¿à§°à§‡ চালিত বাছ"</string> + <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"বাছ আসà§à¦¥à¦¾à¦¨"</string> + <string name="spoken_emoji_1F690" msgid="8080964620200195262">"মিনিবাছ"</string> + <string name="spoken_emoji_1F691" msgid="999173032408730501">"à¦à¦®à§à¦¬à§à¦²à§‡à¦žà§à¦š"</string> + <string name="spoken_emoji_1F692" msgid="1712863785341849487">"জà§à¦‡ নà§à¦®à§à§±à¦¾ গাড়ী"</string> + <string name="spoken_emoji_1F693" msgid="7987109037389768934">"পà§à¦²à¦¿à¦šà§° গাড়ী"</string> + <string name="spoken_emoji_1F694" msgid="6061658916653884608">"আহি থকা পà§à¦²à¦¿à¦šà§° গাড়ী"</string> + <string name="spoken_emoji_1F695" msgid="6913445460364247283">"টেকà§à¦¸à¦¿"</string> + <string name="spoken_emoji_1F696" msgid="6391604457418285404">"আহি থকা টেকà§à¦¸à¦¿"</string> + <string name="spoken_emoji_1F697" msgid="7978399334396733790">"যান-বাহন"</string> + <string name="spoken_emoji_1F698" msgid="7006050861129732018">"আহি থকা যান"</string> + <string name="spoken_emoji_1F699" msgid="630317052666590607">"বিনোদনমূলক কামত বà§à¦¯à§±à¦¹à§ƒà¦¤ বাহন"</string> + <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"বসà§à¦¤à§ বিতৰণ কৰা টà§à§°à¦¾à¦•"</string> + <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"টà§à§°à¦¾à¦•à§° পিছফালে টà§à§°à§‡à¦‡à¦²à¦¾à§° লগোৱা দীঘল ল\'ৰী"</string> + <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"টà§à§°à§‡à¦•à§à¦Ÿà§°"</string> + <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"ম\'ন\' ৰেল"</string> + <string name="spoken_emoji_1F69E" msgid="169238196389832234">"পাহাৰীয়া ৰে\'লপথ"</string> + <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"ওলমা ৰেলগাড়ী"</string> + <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"পরà§à¦¬à¦¤à¦¤ বà§à¦¯à§±à¦¹à¦¾à§° হোৱা ৰজà§à¦œà§à¦ªà¦¥"</string> + <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"কেবà§à¦²à§° সহায়ত চলা বায়বীয় টà§à§°à¦¾à¦®"</string> + <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"জাহাজ"</string> + <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"বঠা মাৰি বোৱা নাও"</string> + <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"সà§à¦ªà§€à¦¡à¦¬\'ট"</string> + <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"অানà§à¦à§‚মিক টà§à§°à§‡à¦«à¦¿à¦• লাইট"</string> + <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"উলমà§à¦¬ টà§à§°à§‡à¦«à¦¿à¦• লাইট"</string> + <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"নিৰà§à¦®à¦¾à¦£ কাৰà§à¦¯ পà§à§°à¦—তিত আছে সূচোৱা চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"আৱৰà§à¦¤à¦¿à¦¤ লাইটসহ পà§à¦²à¦¿à¦šà§° গাড়ী"</string> + <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"খà§à¦à¦Ÿà¦¾à¦¤ আà¦à§°à¦¿ থোৱা তà§à§°à¦¿à¦à§à¦œà¦¾à¦•à¦¾à§° পতাকা"</string> + <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"দà§à§±à¦¾à§°"</string> + <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"পà§à§°à§±à§‡à¦¶ নিষিদà§à¦§ সূচোৱা চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"ধূমপানৰ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"ধূমপান নিষেধৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"উপযà§à¦•à§à¦¤ সà§à¦¥à¦¾à¦¨à¦¤ পেলনীয়া বসà§à¦¤à§à¦¬à§‹à§° পেলাবলৈ দিয়া চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"পেলনীয়া বসà§à¦¤à§à¦¬à§‹à§° à¦à¦‡ সà§à¦¥à¦¾à¦¨à¦¤ পেলোৱা নিষেধ সূচোৱা চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"খোৱা পানীৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"পানী খোৱাৰ উপযোগী নোহোৱা বà§à¦œà§‹à§±à¦¾ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"বাইচাইকেল"</string> + <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"চাইকেলৰ পà§à§°à§±à§‡à¦¶ নিষেধ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"চাইকেল আৰোহী"</string> + <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"পাৰà§à¦¬à¦¤à§à¦¯ পথত চাইকেল চলোৱা লোক"</string> + <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"পথচাৰী"</string> + <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"পদযাতà§à§°à§€à§° পà§à§°à§±à§‡à¦¶ নিষেধ"</string> + <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"শিশà§à§±à§‡ ৰাষà§à¦Ÿà¦¾ পাৰ হোৱা ঠাই"</string> + <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"পà§à§°à§à¦·à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"মহিলাৰ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"শৌচাগাৰ"</string> + <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"কেà¦à¦šà§à§±à¦¾à§° চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"শৌচালয়"</string> + <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"শৌচাগাৰৰ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"বাথৰà§à¦®à§° শà§à¦¬à¦¾à§±à¦¾à§°"</string> + <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"সà§à¦¨à¦¾à¦¨à¦¾à¦—াৰৰ চিহà§à¦¨"</string> + <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"বাথটাব"</string> + <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"পাৰপতà§à§° নিয়নà§à¦¤à§à§°à¦£"</string> + <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"সীমাশà§à¦²à§à¦• বিà¦à¦¾à¦—"</string> + <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"যাতà§à§°à§€à§° বেগ ৰখা ঠাই"</string> + <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"সাময়িকà¦à¦¾à§±à§‡ বসà§à¦¤à§ ৰখা ঠাইৰ চিহà§à¦¨"</string> + <!-- no translation found for spoken_emoji_1F6CB (3573872215992460856) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6CC (5533098630848925915) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6CD (4591419999684883647) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6CE (3747424887764059629) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6CF (4913111315645834484) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6D0 (7538197710400229967) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6E0 (3263282970310123206) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6E1 (6426910766335807918) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6E2 (5167605828052365314) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6E3 (1107731664336606313) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6E4 (5902467073917590761) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6E5 (5188878074701467086) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6E9 (5852950271931619238) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6EB (2733806707250741222) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6EC (4869529552294301253) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6F0 (3448012994947964984) --> + <skip /> + <!-- no translation found for spoken_emoji_1F6F3 (1127894976097893258) --> + <skip /> + <!-- no translation found for spoken_emoji_1F910 (4360725090163247960) --> + <skip /> + <!-- no translation found for spoken_emoji_1F911 (8595715714642200771) --> + <skip /> + <!-- no translation found for spoken_emoji_1F912 (6361337370946123054) --> + <skip /> + <!-- no translation found for spoken_emoji_1F913 (3175822147540114526) --> + <skip /> + <!-- no translation found for spoken_emoji_1F914 (3784454242803834936) --> + <skip /> + <!-- no translation found for spoken_emoji_1F915 (8277232429785015709) --> + <skip /> + <!-- no translation found for spoken_emoji_1F916 (4717142652070467513) --> + <skip /> + <!-- no translation found for spoken_emoji_1F917 (5434814678071084726) --> + <skip /> + <!-- no translation found for spoken_emoji_1F918 (6065030046434546286) --> + <skip /> + <!-- no translation found for spoken_emoji_1F980 (7396183110343909685) --> + <skip /> + <!-- no translation found for spoken_emoji_1F981 (1201691097417167784) --> + <skip /> + <!-- no translation found for spoken_emoji_1F982 (7295087763708065402) --> + <skip /> + <!-- no translation found for spoken_emoji_1F983 (9086413570044829984) --> + <skip /> + <!-- no translation found for spoken_emoji_1F984 (5757150507762082864) --> + <skip /> + <!-- no translation found for spoken_emoji_1F9C0 (3346738126264740148) --> + <skip /> + <!-- no translation found for spoken_emoji_0023_20E3 (3693649188523505503) --> + <skip /> + <!-- no translation found for spoken_emoji_002A_20E3 (6500437684406442358) --> + <skip /> + <!-- no translation found for spoken_emoji_0030_20E3 (6312420508970951699) --> + <skip /> + <!-- no translation found for spoken_emoji_0031_20E3 (5101790681679370329) --> + <skip /> + <!-- no translation found for spoken_emoji_0032_20E3 (6852105251673250734) --> + <skip /> + <!-- no translation found for spoken_emoji_0033_20E3 (6436737625517381721) --> + <skip /> + <!-- no translation found for spoken_emoji_0034_20E3 (7652958059237626893) --> + <skip /> + <!-- no translation found for spoken_emoji_0035_20E3 (1222504383755215423) --> + <skip /> + <!-- no translation found for spoken_emoji_0036_20E3 (7251599202525740371) --> + <skip /> + <!-- no translation found for spoken_emoji_0037_20E3 (7717155024038170161) --> + <skip /> + <!-- no translation found for spoken_emoji_0038_20E3 (744556233370117245) --> + <skip /> + <!-- no translation found for spoken_emoji_0039_20E3 (1891172571916106023) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1E8 (515584542061392145) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1E9 (9021988927513031086) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1EA (4856101611523027311) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1EB (3716145572492094038) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1EC (7286661601747455727) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1EE (94989132936786231) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1F1 (182374112533705554) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1F2 (8083744008211394946) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1F4 (1162797094210816783) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1F6 (8423968169207301745) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1F7 (6876638422035482357) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1F8 (8277196879892990334) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1F9 (2248522124836544558) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1FA (4458840480641529325) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1FC (1163927173985102777) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1FD (3030463315371570615) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E6_1F1FF (612355136879823825) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1E6 (8760838318301758538) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1E7 (3157629488105877061) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1E9 (3576256753416957572) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1EA (664083045789831960) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1EB (1288425089161930952) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1EC (7159669370784906474) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1ED (6171060568325681800) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1EE (8825724034337572789) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1EF (481381108368354037) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1F1 (323880581960666092) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1F2 (6865529687293471865) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1F3 (6196184089269330603) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1F4 (7901700697723663375) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1F6 (3206988419974375148) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1F7 (3483402348221577606) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1F8 (3399891901314769071) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1F9 (8985883748925470425) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1FB (3357087874695825993) --> + <skip /> + <string name="spoken_emoji_1F1E7_1F1FC" msgid="2010150990697392924">"ব\'টছোৱানাৰ পতাকা"</string> + <!-- no translation found for spoken_emoji_1F1E7_1F1FE (7660069185149104762) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E7_1F1FF (4808586235664381640) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1E6 (1994799795544707087) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1E8 (4545193589020675153) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1E9 (971846413301682398) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1EB (7040500840320409927) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1EC (7814411108372534362) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1ED (7525661715353339833) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1EE (918386022730555752) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1F0 (1272608483604229355) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1F1 (4368512465692540121) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1F2 (1029570029642994892) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1F3 (1409448857910840128) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1F4 (6875493644298026833) --> + <skip /> + <string name="spoken_emoji_1F1E8_1F1F5" msgid="2538762550371590224">"কà§à¦²à§€à¦ªà¦¾à¦°à§à¦Ÿà¦¨ দà§à¦¬à§€à¦ªà§° পতাকা"</string> + <!-- no translation found for spoken_emoji_1F1E8_1F1F7 (888554264338218550) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1FA (4443590407200355667) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1FB (5581596688027484825) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1FC (7291024802305602214) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1FD (2788698554656649228) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1FE (5037633794290940318) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E8_1F1FF (5384200881950442912) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E9_1F1EA (4047812762841623779) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E9_1F1EC (3569858113686878222) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E9_1F1EF (5200510107957246395) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E9_1F1F0 (8230065040498090250) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E9_1F1F2 (6971088854496559333) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E9_1F1F4 (2684281180913271831) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1E9_1F1FF (5134944828411359548) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EA_1F1E6 (5992703503107448385) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EA_1F1E8 (7604769613933532639) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EA_1F1EA (780881058311953116) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EA_1F1EC (5379955220214737541) --> + <skip /> + <string name="spoken_emoji_1F1EA_1F1ED" msgid="608191363783136124">"দকà§à¦·à¦¿à¦£ ছাহাৰাৰ পতাকা"</string> + <!-- no translation found for spoken_emoji_1F1EA_1F1F7 (1974034165386559979) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EA_1F1F8 (7667964716717428380) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EA_1F1F9 (4028236645746627833) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EA_1F1FA (2605433302354957477) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EB_1F1EE (825447084506872225) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EB_1F1EF (1029994540873767904) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EB_1F1F0 (2992979756365410511) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EB_1F1F2 (1986035899283103062) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EB_1F1F4 (2441016703335601117) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EB_1F1F7 (6052493581307010327) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1E6 (8950853954004506523) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1E7 (8888357158195515349) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1E9 (3463286702486956748) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1EA (1180536780790586881) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1EB (1203001730316543314) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1EC (1840977808701617077) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1ED (8783297421754572238) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1EE (2567172982673015319) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1F1 (8178317151097107486) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1F2 (8595547572836079090) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1F3 (3646326386653741855) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1F5 (6864411408511905871) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1F6 (2059115105795502868) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1F7 (6459258808903505755) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1F8 (5458754397575470944) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1F9 (1467915615110741560) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1FA (4393335139566648919) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1FC (3425188247186220041) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EC_1F1FE (1021690400460955309) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1ED_1F1F0 (3761740442568650190) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1ED_1F1F2 (6910358977247451757) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1ED_1F1F3 (1646439132096214446) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1ED_1F1F7 (1052046916656026391) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1ED_1F1F9 (8078385390509081446) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1ED_1F1FA (8804528562628572718) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1E8 (3140919483825058219) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1E9 (5502581798727777828) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1EA (644825647040215471) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1F1 (5743874630545163729) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1F2 (3120136719636059223) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1F3 (7645444982385343194) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1F4 (9194565409945825135) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1F6 (8988731584319817673) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1F7 (2725630029704415631) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1F8 (1010746786020461229) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EE_1F1F9 (9197939415727389837) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EF_1F1EA (2768571528360031663) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EF_1F1F2 (5221399784104523954) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EF_1F1F4 (5417778604376647557) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1EF_1F1F5 (6507273654908139469) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F0_1F1EA (21237090866742866) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F0_1F1EC (8276011655824240009) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F0_1F1ED (6083653169314926215) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F0_1F1EE (9065926492362391494) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F0_1F1F2 (3247483394872878766) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F0_1F1F3 (5367548209741205839) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F0_1F1F5 (8936494847635883781) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F0_1F1F7 (6083499745947821288) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F0_1F1FC (1379041347924516759) --> + <skip /> + <string name="spoken_emoji_1F1F0_1F1FE" msgid="4109777537443572630">"কে\'মেন দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œà§° পতাকা"</string> + <!-- no translation found for spoken_emoji_1F1F0_1F1FF (552222434607517957) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1E6 (5166202354177379139) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1E7 (5664910004482751646) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1E8 (4030901907323824445) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1EE (1173785145388735876) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1F0 (3577045271636841729) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1F7 (7993304871488957893) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1F8 (5224840012819747543) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1F9 (3594812865734584207) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1FA (224221840159454205) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1FB (7718987237653945359) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F1_1F1FE (5998022588266933168) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1E6 (8965537225940059216) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1E8 (5827062380829465964) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1E9 (1226461313141287009) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1EA (559788800834584573) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1EB (5222394276026013118) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1EC (7183384701516848699) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1ED (6898522028833048325) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1F0 (7068152815895976960) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1F1 (7611046424376988616) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1F2 (491461913101284240) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1F3 (1450454181585256539) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1F4 (3352572139711280528) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1F5 (7536142087380383112) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1F6 (5424070233210033210) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1F7 (108173332528207905) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1F8 (4922582142276070473) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1F9 (3215356274998633531) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1FA (7064984448662302120) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1FB (7349657291755821742) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1FC (2970112458704297219) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1FD (6249447018233900361) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1FE (2415463066267602417) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F2_1F1FF (5374300224943425292) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F3_1F1E6 (7995033472926590061) --> + <skip /> + <string name="spoken_emoji_1F1F3_1F1E8" msgid="6673558559311734824">"নিউ কেলেড\'নিয়াৰ পতাকা"</string> + <!-- no translation found for spoken_emoji_1F1F3_1F1EA (5248874974108203948) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F3_1F1EB (8586671186548769011) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F3_1F1EC (3610271061141196804) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F3_1F1EE (3793576318302879471) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F3_1F1F1 (7394150679646822106) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F3_1F1F4 (4823752697520630443) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F3_1F1F5 (8143013034442974213) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F3_1F1F7 (2718588476956930593) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F3_1F1FA (2136206841853719289) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F3_1F1FF (7114679379862776721) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F4_1F1F2 (1366056698822189642) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1E6 (2318048598212415394) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1EA (3843366473938653876) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1EB (5842604724881232116) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1EC (1527509030357350666) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1ED (4519745708610996392) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1F0 (6461277576429215252) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1F1 (8076361813157658785) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1F2 (2895871984922747795) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1F3 (3351998070564812928) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1F7 (2273664192514768865) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1F8 (4184730889323208578) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1F9 (6088372177025496872) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1FC (6503480614531765009) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F5_1F1FE (8948077259790298897) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F6_1F1E6 (5941022501487103264) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F7_1F1EA (6520393107511408733) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F7_1F1F4 (24771949751001440) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F7_1F1F8 (3958542649861771783) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F7_1F1FA (1079726084663529719) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F7_1F1FC (3705031663938652819) --> + <skip /> + <string name="spoken_emoji_1F1F8_1F1E6" msgid="2776179858340260230">"ছৌদী আৰবৰ পতাকা"</string> + <!-- no translation found for spoken_emoji_1F1F8_1F1E7 (3665472085378450456) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1E8 (4466400506433158307) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1E9 (5614788248607521243) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1EA (2665982185283861392) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1EC (1054034328208566506) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1ED (4263061939910522547) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1EE (6565744105871887098) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1EF (3016523221609614043) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1F0 (5390016769601791982) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1F1 (6403850165793367854) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1F2 (4310711409277111575) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1F3 (6489885135970927076) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1F4 (5341079828952201668) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1F7 (8817875467979840211) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1F8 (2660263148212045846) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1F9 (8238122890022856070) --> + <skip /> + <string name="spoken_emoji_1F1F8_1F1FB" msgid="4615906903576645230">"à¦à¦² ছালà¦à¦¾à¦¡\'ৰৰ পতাকা"</string> + <!-- no translation found for spoken_emoji_1F1F8_1F1FD (4404781163148659815) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1FE (7179176431724187154) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F8_1F1FF (8456502038439909076) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1E6 (7462600413724750923) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1E8 (8714687302692115701) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1E9 (4271932459960645451) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1EB (8824845043239747091) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1EC (6378688671192754868) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1ED (3342706257317087047) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1EF (1902800890327368738) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1F0 (5328199482828913429) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1F1 (8753850591122992884) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1F2 (5491037548857189992) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1F3 (7278463413655866267) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1F4 (7624316225889181844) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1F7 (5932331866489640094) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1F9 (4042249888728442471) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1FB (4705386325884538832) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1FC (9106106156487112003) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1F9_1F1FF (6594567669471176195) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FA_1F1E6 (7516283481055191487) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FA_1F1EC (7713151466830788434) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FA_1F1F2 (169503347987231777) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FA_1F1F8 (3794069376561841694) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FA_1F1FE (7768717385050492537) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FA_1F1FF (1957036711159158590) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FB_1F1E6 (6686626035855100794) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FB_1F1E8 (958901562721846738) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FB_1F1EA (8171514854370897858) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FB_1F1EC (7825072244650491600) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FB_1F1EE (8177320330941963456) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FB_1F1F3 (6211275163002022414) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FB_1F1FA (7638199094441690866) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FC_1F1EB (2750545602487865333) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FC_1F1F8 (1717055707936794276) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FD_1F1F0 (8924460310127605012) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FE_1F1EA (5020385658435288646) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FE_1F1F9 (5627032701159894458) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FF_1F1E6 (3518155724469542909) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FF_1F1F2 (1316086892525163001) --> + <skip /> + <!-- no translation found for spoken_emoji_1F1FF_1F1FC (7229025296887296741) --> + <skip /> +</resources> diff --git a/java/res/values-as/strings-letter-descriptions.xml b/java/res/values-as/strings-letter-descriptions.xml new file mode 100644 index 0000000000000000000000000000000000000000..7cedd40ebbd97f6673cb0d3c3407cade5887329e --- /dev/null +++ b/java/res/values-as/strings-letter-descriptions.xml @@ -0,0 +1,208 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2014, 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. +*/ + --> + +<!-- + These accented letters (spoken_accented_letter_*) are unsupported by TTS. + These symbols (spoken_symbol_*) are also unsupported by TTS. + TODO: Remove these string resources when TTS/TalkBack support these letters. + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"অনà§à¦¯ বরà§à¦£à§° সোà¦à¦«à¦¾à¦²à§‡ ওপৰত লিখা \'a\' সূচক"</string> + <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"মিউ বরà§à¦£à§° চিহà§à¦¨"</string> + <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"অনà§à¦¯ বরà§à¦£à§° সোà¦à¦«à¦¾à¦²à§‡ ওপৰত লিখা \'o\' সূচক"</string> + <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"বিটা বরà§à¦£à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"Aৰ ওপৰত গà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"Aৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"Aৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"Aৰ ওপৰত টিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"Aৰ ওপৰত ডায়েৰেচিছ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"ওপৰত সৰৠবৃতà§à¦¤ থকা \'a\' আখৰ"</string> + <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"\'A, E\' আখৰৰ যà§à¦•à§à¦¤à¦¾à¦•à§à¦·à§°"</string> + <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"Cৰ তলত চেডিলা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"Eৰ ওপৰত গà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"Eৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"Eৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"Eৰ ওপৰত ডায়েৰেচিছ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"Iৰ ওপৰত গà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"Iৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"Iৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"Iৰ ওপৰত ডায়েৰেচিছ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"লেটিন বরà§à¦£à¦®à¦¾à¦²à¦¾à§° আখৰ \'Eth\' ৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"Nৰ ওপৰত টিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"Oৰ ওপৰত গà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"Oৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"Oৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"Oৰ ওপৰত টিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"Oৰ ওপৰত ডায়েৰেচিছ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"Oত ষà§à¦Ÿà§à§°\'ক à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"Uৰ ওপৰত গà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"Uৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"Uৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"Uৰ ওপৰত ডায়েৰেচিছ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Yৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"লেটিন বরà§à¦£à¦®à¦¾à¦²à¦¾à§° সৰà§à¦«à¦²à¦¾à§° থৰà§à¦£ বৰà§à¦£"</string> + <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Yৰ ওপৰত ডায়েৰেচিছ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"Aৰ ওপৰত মেকà§à§°à¦¨ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"Aৰ ওপৰত বà§à§°à§€à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"Aৰ তলত অগ\'নেক à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"Cৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"Cৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"Cৰ ওপৰত à¦à¦Ÿà¦¾ বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"Cৰ ওপৰত কেৰণ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_010F" msgid="603374318657992205">"Dৰ ওপৰত কেৰণ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"Dৰ ওপৰত ষà§à¦Ÿà§à§°\'ক à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"Eৰ ওপৰত মেকà§à§°à¦¨ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"Eৰ ওপৰত বà§à§°à§€à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"Eৰ ওপৰত à¦à¦Ÿà¦¾ বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"Eৰ তলত অগ\'নেক à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"Eৰ ওপৰত কেৰণ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"Gৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"Gৰ ওপৰত বà§à§°à§€à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"Gৰ ওপৰত à¦à¦Ÿà¦¾ বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"Gৰ ওপৰত চেডিলা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"Hৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"Hৰ ওপৰত ষà§à¦Ÿà§à§°\'ক à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"Iৰ ওপৰত টিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"Iৰ ওপৰত মেকà§à§°à¦¨ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"Iৰ ওপৰত বà§à§°à§€à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"Iৰ তলত অগ\'নেক à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"ওপৰত বিনà§à¦¦à§ নথকা \'I\'"</string> + <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J আখৰৰ যà§à¦•à§à¦¤à¦¾à¦•à§à¦·à§°"</string> + <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"Jৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"Kৰ তলত চেডিলা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"লেটিন à¦à¦¾à¦·à¦¾à§° \'Kra\' বরà§à¦£à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"Lৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"lৰ তলত চেডিলা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"Lৰ ওপৰত কেৰণ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"সোà¦à¦«à¦¾à¦²à§‡ মধà§à¦¯ অংশত বিনà§à¦¦à§ থকা \'L\'"</string> + <string name="spoken_accented_letter_0142" msgid="752931798111122240">"Lত ষà§à¦Ÿà§à§°\'ক à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0144" msgid="201843550323875352">"Nৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"Nৰ ওপৰত চেডিলা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"Nৰ ওপৰত কেৰণ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"ঊরà§à¦§à§à¦¬à¦•à¦®à¦¾à§° পাছত থকা \'N\'"</string> + <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"লেটিন বরà§à¦£à¦®à¦¾à¦²à¦¾à§° সৰà§à¦«à¦²à¦¾ \'Eng\' বà§à¦œà§‹à§±à¦¾ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"Oৰ ওপৰত মেকà§à§°à¦¨ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"Oৰ ওপৰত বà§à§°à§€à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"Oৰ ওপৰত দà§à¦¡à¦¾à¦² à¦à¦•à¦¿à¦‰à¦Ÿà§° à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"\'oe\' আখৰৰ যà§à¦•à§à¦¤à¦¾à¦•à§à¦·à§°"</string> + <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"Rৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"Rৰ তলত চেডিলা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"Rৰ ওপৰত কেৰণ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"Sৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"Sৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"Sৰ তলত চেডিলা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"Sৰ ওপৰত কেৰণ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"Tৰ তলত চেডিলা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"Tৰ ওপৰত কেৰণ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"Tত ষà§à¦Ÿà§à§°\'ক à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0169" msgid="413046581387735371">"Uৰ ওপৰত টিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"Uৰ ওপৰত মেকà§à§°à¦¨à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"Uৰ ওপৰত বà§à§°à§€à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"ওপৰত সৰৠবৃতà§à¦¤ থকা \'U\' আখৰ"</string> + <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"Uৰ ওপৰত দà§à¦¡à¦¾à¦² à¦à¦•à¦¿à¦‰à¦Ÿà§° à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"Uৰ তলত অগ\'নেক à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"Wৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"yৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"zৰ ওপৰত à¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Zৰ ওপৰত à¦à¦Ÿà¦¾ বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"zৰ ওপৰত কেৰণ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_017F" msgid="317501463253362415">"দীঘল \'s\' আকৃতিৰ লেটিন বরà§à¦£à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"Oৰ ওপৰত হৰà§à¦£"</string> + <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"uৰ ওপৰত হরà§à¦£ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"তলত কমা থকা \'s\'"</string> + <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"তলত কমা থকা \'t\'"</string> + <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"লেটিন à¦à¦¾à¦·à¦¾à§° সৰà§à¦«à¦²à¦¾ আখৰ সà§à¦¬à¦¾"</string> + <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"Aৰ তলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"\'a\'ৰ ওপৰত হà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"aৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠà¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"aৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠগà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"aৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠহà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"aৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠটিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"aৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸à§° à¦à¦•à¦šà§‡à¦£à§à¦Ÿ আৰৠতলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"Aৰ ওপৰত বà§à§°à§€à¦ আৰৠà¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"aৰ ওপৰত বà§à§°à§€à¦ আৰৠগà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"aৰ ওপৰত বà§à§°à§€à¦ আৰৠহà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"aৰ ওপৰত বà§à§°à§€à¦ আৰৠটিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"aৰ ওপৰত বà§à§°à§€à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ আৰৠতলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"Eৰ তলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"eৰ ওপৰত গà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"eৰ ওপৰত টিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"eৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠà¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"eৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠগà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"Eৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠহà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"Eৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠটিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"eৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ আৰৠতলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"iৰ ওপৰত হà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"iৰ তলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"Oৰ তলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"oৰ ওপৰত হà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"Oৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠà¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"oৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠগà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"oৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠহà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"oৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸ আৰৠটিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"Oৰ ওপৰত চাৰকামফà§à¦²à§‡à¦•à§à¦¸à§° à¦à¦•à¦šà§‡à¦£à§à¦Ÿ আৰৠতলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"Oৰ ওপৰত হরà§à¦£ আৰৠà¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"oৰ ওপৰত হ\'রà§à¦£ আৰৠগà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"oৰ ওপৰত হরà§à¦£ আৰৠহà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"oৰ ওপৰত হরà§à¦£ আৰৠটিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"oৰ ওপৰত হ\'রà§à¦£ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ আৰৠতলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"Uৰ তলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"Uৰ ওপৰত হà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"Uৰ ওপৰত হরà§à¦£ আৰৠà¦à¦•à¦¿à¦‰à¦Ÿ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"Uৰ ওপৰত হরà§à¦£ আৰৠগà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"Uৰ ওপৰত হরà§à¦£ আৰৠহà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"Uৰ ওপৰত হরà§à¦£ আৰৠটিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"Uৰ ওপৰত হ\'রà§à¦£ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ আৰৠতলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Yৰ ওপৰত গà§à§°à§‡à¦ à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"yৰ তলত বিনà§à¦¦à§"</string> + <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"yৰ ওপৰত হà§à¦• à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"yৰ ওপৰত টিলডা à¦à¦•à¦šà§‡à¦£à§à¦Ÿ"</string> + <string name="spoken_symbol_00A1" msgid="4281758332905123408">"ওলোটা à¦à¦¾à¦¬à¦¬à§‹à¦§à¦• চিহà§à¦¨"</string> + <string name="spoken_symbol_00AB" msgid="4093069643313064892">"বাওà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা দà§à¦Ÿà¦¾ কোণৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_symbol_00B7" msgid="2447718728927874920">"মধà§à¦¯ বিনà§à¦¦à§"</string> + <string name="spoken_symbol_00B9" msgid="8026257165451461231">"সোà¦à¦«à¦¾à¦²à§‡ ওপৰৰ অংশত লিখা সৰৠ\'1\'"</string> + <string name="spoken_symbol_00BB" msgid="1102740075655373928">"সোà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা দà§à¦Ÿà¦¾ কোণৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_symbol_00BF" msgid="6233794752573788098">"ওলোটা পà§à§°à¦¶à§à¦¨à¦¬à§‹à¦§à¦• চিহà§à¦¨"</string> + <string name="spoken_symbol_2018" msgid="4886476295598930225">"বাওà¦à¦«à¦¾à¦²à§° ঊৰà§à¦§à§à¦¬à¦•à¦®à¦¾"</string> + <string name="spoken_symbol_2019" msgid="8892530161598134083">"সোà¦à¦«à¦¾à¦²à§° à¦à¦¡à¦¾à¦² ঊৰà§à¦§à§à¦¬à¦•à¦®à¦¾"</string> + <string name="spoken_symbol_201A" msgid="2072987157683446644">"তলত লিখা সোà¦à¦«à¦¾à¦²à§° ঊৰà§à¦§à§à¦¬à¦•à¦®à¦¾"</string> + <string name="spoken_symbol_201C" msgid="4588048378803665427">"বাওঠদà§à¦¬à§ˆà¦¤ ঊৰà§à¦§à§à¦¬à¦•à¦®à¦¾"</string> + <string name="spoken_symbol_201D" msgid="1642776849495925895">"সোঠদà§à¦¬à§ˆà¦¤ ঊৰà§à¦§à§à¦¬à¦•à¦®à¦¾"</string> + <string name="spoken_symbol_2020" msgid="9084628638189344431">"ডেগাৰ চিহà§à¦¨"</string> + <string name="spoken_symbol_2021" msgid="5081396468559426475">"দà§à¦¬à§ˆà¦¤à§à¦¬ ডেগাৰ চিহà§à¦¨"</string> + <string name="spoken_symbol_2030" msgid="9068837172419431755">"পà§à§°à¦¤à¦¿ মাইলত বà§à¦œà§‹à§±à¦¾ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_symbol_2032" msgid="3014506329156664396">"পà§à§°à¦¾à¦‡à¦®"</string> + <string name="spoken_symbol_2033" msgid="1251022699713475088">"দৈরà§à¦˜à§à¦¯ জোখা à¦à¦•à¦• ইঞà§à¦šà¦¿à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_symbol_2039" msgid="6989616457213775957">"বাওà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা à¦à¦Ÿà¦¾ কোণৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_symbol_203A" msgid="31245095449823701">"সোà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা à¦à¦Ÿà¦¾ কোণৰ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_symbol_2074" msgid="2116717717093306894">"সোà¦à¦«à¦¾à¦²à§‡ ওপৰত লিখা সৰৠ\'4\'"</string> + <string name="spoken_symbol_207F" msgid="1706731172134246659">"সোà¦à¦«à¦¾à¦²à§‡ ওপৰত লিখা সৰৠ\'n\'"</string> + <string name="spoken_symbol_20B1" msgid="2159994270622444689">"পেছ\' মà§à¦¦à§à§°à¦¾à§° পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_symbol_2105" msgid="7289404939366976829">"পà§à§°à¦¯à¦¤à§à¦¨à§‡"</string> + <string name="spoken_symbol_2192" msgid="827804523596125414">"সোà¦à¦«à¦¾à¦²à§‡ নিরà§à¦¦à§‡à¦¶ কৰা কাà¦à¦¡à¦¼à¦šà¦¿à¦¹à§à¦¨"</string> + <string name="spoken_symbol_2193" msgid="2659541693445985717">"অধোমà§à¦–ী কাà¦à¦¡à¦¼ চিহà§à¦¨"</string> + <string name="spoken_symbol_2205" msgid="4457188084269117343">"ৰিকà§à¦¤ সংহতি"</string> + <string name="spoken_symbol_2206" msgid="4856786565708380687">"বৃদà§à¦§à¦¿"</string> + <string name="spoken_symbol_2264" msgid="5092061257745123554">"ইয়াতকৈ কম বা ইয়াৰ সমান বà§à¦œà§‹à§±à¦¾ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_symbol_2265" msgid="1907966479878036357">"ইয়াতকৈ বেছি বা ইয়াৰ সমান বà§à¦œà§‹à§±à¦¾ পà§à§°à¦¤à§€à¦•"</string> + <string name="spoken_symbol_2605" msgid="5202920479405857753">"ক\'লা তৰা পà§à§°à¦¤à§€à¦•"</string> +</resources> diff --git a/java/res/values-as/strings-talkback-descriptions.xml b/java/res/values-as/strings-talkback-descriptions.xml new file mode 100644 index 0000000000000000000000000000000000000000..dad3944f5237293a8efd1f2be72fde7ff8b110e2 --- /dev/null +++ b/java/res/values-as/strings-talkback-descriptions.xml @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2015, 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="spoken_use_headphones" msgid="4313642710742229868">"পাছৱৰà§à¦¡ কীবোৰ উচà§à¦šà¦¾à§°à¦£ কৰা শà§à¦¨à¦¿à¦¬à¦²à§ˆ হেডছেট à¦à¦Ÿà¦¾ লগাওক৷"</string> + <string name="spoken_current_text_is" msgid="4240549866156675799">"বৰà§à¦¤à¦®à¦¾à¦¨à§° পাঠহৈছে %s"</string> + <string name="spoken_no_text_entered" msgid="1711276837961785646">"কোনো পাঠলিখা হোৱা নাই"</string> + <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g>ঠ<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>ৰ পৰা <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>লৈ শà§à¦¦à§à¦§ কৰে"</string> + <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g>ঠসà§à¦¬à¦¯à¦¼à¦‚কà§à§°à¦¿à¦¯à¦¼à¦à¦¾à§±à§‡ শà§à¦¦à§à¦§ কৰে"</string> + <string name="spoken_empty_suggestion" msgid="4250215619373459752">"কোনো পৰামরà§à¦¶ নাই"</string> + <string name="spoken_description_unknown" msgid="5139930082759824442">"অজà§à¦žà¦¾à¦¤ বরà§à¦£"</string> + <string name="spoken_description_shift" msgid="7209798151676638728">"শà§à¦¬à¦¿à¦«à§à¦Ÿ"</string> + <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"অধিক চিহà§à¦¨"</string> + <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"শà§à¦¬à¦¿à¦«à§à¦Ÿ"</string> + <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"পà§à§°à¦¤à§€à¦•à¦¸à¦®à§‚হ"</string> + <string name="spoken_description_caps_lock" msgid="1224851412185975036">"শà§à¦¬à¦¿à¦«à§à¦Ÿ"</string> + <string name="spoken_description_delete" msgid="3878902286264983302">"মচক"</string> + <string name="spoken_description_to_symbol" msgid="8244903740201126590">"পà§à§°à¦¤à§€à¦•à¦¸à¦®à§‚à§à¦¹"</string> + <string name="spoken_description_to_alpha" msgid="4081215210530031950">"বৰà§à¦£à¦¸à¦®à§‚হ"</string> + <string name="spoken_description_to_numeric" msgid="4560261331530795682">"সংখà§à¦¯à¦¾à¦¸à¦®à§‚হ"</string> + <string name="spoken_description_settings" msgid="7281251004003143204">"ছেটিংসমূহ"</string> + <string name="spoken_description_tab" msgid="8210782459446866716">"টেব"</string> + <string name="spoken_description_space" msgid="5908716896642059145">"সà§à¦ªà§‡à¦š"</string> + <string name="spoken_description_mic" msgid="6153138783813452464">"ধà§à¦¬à¦¨à¦¿ ইনপà§à¦Ÿ"</string> + <string name="spoken_description_emoji" msgid="7990051553008088470">"ইম\'জি"</string> + <string name="spoken_description_return" msgid="3183692287397645708">"উà¦à¦¤à¦¿ যাওক"</string> + <string name="spoken_description_search" msgid="5099937658231911288">"সনà§à¦§à¦¾à¦¨ কৰক"</string> + <string name="spoken_description_dot" msgid="5644176501632325560">"বিনà§à¦¦à§"</string> + <string name="spoken_description_language_switch" msgid="6818666779313544553">"à¦à¦¾à¦·à¦¾ সলনি কৰক"</string> + <string name="spoken_description_action_next" msgid="431761808119616962">"পৰৱৰà§à¦¤à§€"</string> + <string name="spoken_description_action_previous" msgid="2919072174697865110">"পূৰà§à¦¬à§±à§°à§à¦¤à§€"</string> + <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"শà§à¦¬à¦¿à¦«à§à¦Ÿ সকà§à¦·à¦® কৰা হ’ল"</string> + <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"কেপছৠলক সকà§à¦·à¦® কৰা হ’ল"</string> + <string name="spoken_description_mode_symbol" msgid="111186851131446691">"চিহà§à¦¨ ম\'ড"</string> + <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"অধিক পà§à§°à¦¤à§€à¦• ম\'ড"</string> + <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"বৰà§à¦£ ম\'ড"</string> + <string name="spoken_description_mode_phone" msgid="2061220553756692903">"ফ\'ন ম\'ড"</string> + <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"ফ\'নৰ চিহà§à¦¨à§° ম\'ড"</string> + <string name="announce_keyboard_hidden" msgid="2313574218950517779">"কীব\'ৰà§à¦¡ লà§à¦•à§à¦“ৱা হ’ল"</string> + <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> কীব\'ৰà§à¦¡ দেখà§à¦“ৱা হৈছে"</string> + <string name="keyboard_mode_date" msgid="6597407244976713364">"তাৰিখ"</string> + <string name="keyboard_mode_date_time" msgid="3642804408726668808">"তাৰিখ আৰৠসময়"</string> + <string name="keyboard_mode_email" msgid="1239682082047693644">"ই-মেইল"</string> + <string name="keyboard_mode_im" msgid="3812086215529493501">"বাৰà§à¦¤à¦¾ লিখন"</string> + <string name="keyboard_mode_number" msgid="5395042245837996809">"সংখà§à¦¯à¦¾"</string> + <string name="keyboard_mode_phone" msgid="2486230278064523665">"ফ’ন"</string> + <string name="keyboard_mode_text" msgid="9138789594969187494">"পাঠ"</string> + <string name="keyboard_mode_time" msgid="8558297845514402675">"সময়"</string> + <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string> + <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"শেহতীয়া সমলসমূহ"</string> + <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"সমà§à¦ªà§°à§à¦• বà§à¦¯à¦•à§à¦¤à¦¿à¦¸à¦•à¦²"</string> + <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"বসà§à¦¤à§à¦¸à¦®à§‚হ"</string> + <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"পà§à§°à¦•à§ƒà¦¤à¦¿"</string> + <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"ঠাইসমূহ"</string> + <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"পà§à§°à¦¤à§€à¦•à¦¸à¦®à§‚হ"</string> + <!-- no translation found for spoken_descrption_emoji_category_flags (5971573825866381472) --> + <skip /> + <!-- no translation found for spoken_descrption_emoji_category_eight_smiley_people (5682663819532433464) --> + <skip /> + <!-- no translation found for spoken_descrption_emoji_category_eight_animals_nature (5844950234883716704) --> + <skip /> + <!-- no translation found for spoken_descrption_emoji_category_eight_food_drink (6196944764485349650) --> + <skip /> + <!-- no translation found for spoken_descrption_emoji_category_eight_travel_places (3834085499381434611) --> + <skip /> + <!-- no translation found for spoken_descrption_emoji_category_eight_activity (4795281669042975993) --> + <skip /> + <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"ইম\'টিকন"</string> + <string name="spoken_description_upper_case" msgid="4904835255229433916">"বৰফলা <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string> + <string name="spoken_letter_0049" msgid="4743162182646977944">"বৰফলা l"</string> + <string name="spoken_letter_0130" msgid="4766619646231612274">"ওপৰত বিনà§à¦¦à§à§° সৈতে লেটিন বৰফলা I"</string> + <string name="spoken_symbol_unknown" msgid="717298227061173706">"অজà§à¦žà¦¾à¦¤ চিহà§à¦¨"</string> + <string name="spoken_emoji_unknown" msgid="5981009928135394306">"অজà§à¦žà¦¾à¦¤ ইম\'জি"</string> + <string name="spoken_emoticon_3A_2D_21_20" msgid="2410905667389534573">"আমনি পোৱা à¦à¦‚গীৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoticon_3A_2D_24_20" msgid="2481260475945560438">"লজà§à¦œà¦¿à¦¤ à¦à¦‚গীৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoticon_42_2D_29_20" msgid="1063205250387128068">"ছানগà§à¦²à¦¾à¦› পৰিহিত মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoticon_3A_4F_20" msgid="532695091593447238">"আচৰিত হোৱা à¦à¦‚গীৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoticon_3A_2D_2A_20" msgid="5612342617244114291">"চà§à¦®à¦¾ খোৱা à¦à¦‚গীৰ মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_emoticon_3A_2D_5B_20" msgid="2223507987759905920">"দà§à¦–ী মà§à¦–মণà§à¦¡à¦²"</string> + <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"বিকলà§à¦ª বৰà§à¦£ আছে"</string> + <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"বিকলà§à¦ª বৰà§à¦£à¦¬à§‹à§° অগà§à§°à¦¾à¦¹à§à¦¯ কৰা হৈছে"</string> + <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"বিকলà§à¦ª পৰামরà§à¦¶ আছে"</string> + <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"বিকলà§à¦ª পৰামরà§à¦¶à¦¬à§‹à§° অগà§à§°à¦¾à¦¹à§à¦¯ কৰা হৈছে"</string> +</resources> diff --git a/java/res/values-as/strings.xml b/java/res/values-as/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..d58badc74e07e8d71d8110ee292132d7bb7765bf --- /dev/null +++ b/java/res/values-as/strings.xml @@ -0,0 +1,219 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="english_ime_input_options" msgid="3909945612939668554">"ইনপà§à¦Ÿ বিকলà§à¦ªà¦¸à¦®à§‚হ"</string> + <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"সমà§à¦ªà§°à§à¦•à¦¸à§‚চীৰ নামবোৰত চাওক"</string> + <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"বানান পৰীকà§à¦·à¦•à§‡ আপোনাৰ সমà§à¦ªà§°à§à¦•à¦¸à§‚চীৰ নামবোৰ বà§à¦¯à§±à¦¹à¦¾à§° কৰে"</string> + <string name="vibrate_on_keypress" msgid="5258079494276955460">"কী টিপিলে কমà§à¦ªà¦¨ কৰক"</string> + <string name="sound_on_keypress" msgid="6093592297198243644">"কী টিপিলে শবà§à¦¦ হ\'ব"</string> + <string name="popup_on_keypress" msgid="123894815723512944">"কী টিপিলে প\'পআপ ওলাব"</string> + <string name="settings_screen_preferences" msgid="2696713156722014624">"অগà§à§°à¦¾à¦§à¦¿à¦•à¦¾à§°à¦¸à¦®à§‚হ"</string> + <string name="settings_screen_accounts" msgid="2786418968536696670">"à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿ আৰৠগোপনীয়তা"</string> + <string name="settings_screen_appearance" msgid="7358046399111611615">"বাহà§à¦¯à¦¿à¦• ৰূপ আৰৠচানেকিসমূহ"</string> + <string name="settings_screen_gesture" msgid="8826372746901183556">"আঙà§à¦²à¦¿ পিছলাই টাইপ কৰাৰ সà§à¦¬à¦¿à¦§à¦¾"</string> + <string name="settings_screen_correction" msgid="1616818407747682955">"পাঠশà§à¦§à§°à¦£à¦¿"</string> + <string name="settings_screen_advanced" msgid="7472408607625972994">"উচà§à¦šà¦–াপৰ"</string> + <string name="settings_screen_theme" msgid="2137262503543943871">"থীম"</string> + <string name="enable_split_keyboard" msgid="4177264923999493614">"বিà¦à¦•à§à¦¤ কীবরà§à¦¡ সকà§à¦·à¦® কৰক"</string> + <string name="cloud_sync_title" msgid="8579271074443847055">"Google কীব\'ৰà§à¦¡ ছিংক"</string> + <string name="cloud_sync_summary" msgid="7684887161145650857">"ছিংক হৈ আছে"</string> + <string name="cloud_sync_summary_disabled" msgid="4553338970382825796">"সকলো ডিà¦à¦¾à¦‡à¦šà¦¤ আপোনাৰ বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত অà¦à¦¿à¦§à¦¾à¦¨ ছিংক কৰক"</string> + <string name="sync_now_title" msgid="3088838136743277721">"à¦à¦¤à¦¿à¦¯à¦¼à¦¾ ছিংক কৰক"</string> + <string name="clear_sync_data_title" msgid="8582001557037069154">"কà§à¦²à¦¾à¦‰à¦¡ ডেটা মচক"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"আপোনাৰ ছিংক কৰা ডেটাসমূহ Googleৰ পৰা মচে"</string> + <string name="clear_sync_data_confirmation" msgid="2811931135574727678">"আপোনাৰ কà§à¦²à¦¾à¦‰à¦¡à§° পৰা ছিংক কৰা ডেটাসমূহ মচা হ\'ব। আপà§à¦¨à¦¿ নিশà§à¦šà¦¿à¦¤à¦¨à§‡?"</string> + <string name="clear_sync_data_ok" msgid="613104067705915132">"মচক"</string> + <string name="cloud_sync_cancel" msgid="5877481252150919037">"বাতিল কৰক"</string> + <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"আপোনাৰ বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত অà¦à¦¿à¦§à¦¾à¦¨ ছিংক কৰা হ\'ব আৰৠGoogle ছারà§à¦à¦¾à§°à¦¤ বেক আপ লোৱা হ\'ব।শবà§à¦¦à§° সঘনতা পৰিসংখà§à¦¯à¦¾à§° তথà§à¦¯ আমাৰ সামগà§à§°à§€à¦¸à¦®à§‚হ উনà§à¦¨à¦¤ কৰাত সহায় কৰিবলৈ সংগà§à§°à¦¹ কৰা হ\'ব পাৰে। সংগà§à§°à¦¹ আৰৠবà§à¦¯à§±à¦¹à¦¾à§° কৰা সকলো তথà§à¦¯à§° বাবে "<a href="https://www.google.com/policies/privacy">"Googleৰ বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত নীতি"</a>" মনা হ\'ব।"</string> + <string name="add_account_to_enable_sync" msgid="7836932571852055265">"à¦à¦‡ সà§à¦¬à¦¿à¦§à¦¾ সকà§à¦·à¦® কৰিবলৈ ডিà¦à¦¾à¦‡à¦šà¦¤ à¦à¦Ÿà¦¾ Google à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿ যোগ কৰক"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"বà§à¦¯à§±à¦¸à¦¾à¦¯à¦¼ à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿà¦¸à¦®à§‚হৰ বাবে বà§à¦¯à§±à¦¹à¦¾à§° কৰা Google à¦à¦ªà¦¸à¦®à§‚হৰ ডিà¦à¦¾à¦‡à¦šà¦¬à§‹à§°à§° বাবে ছিংক উপলবà§à¦§ নহয়"</string> + <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"আন ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦²à§ˆ সলনি কৰক"</string> + <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"à¦à¦¾à¦·à¦¾ সলনি কৰা কীটোৱে আন ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¸à¦®à§‚হকো সামৰি লয়"</string> + <string name="show_language_switch_key" msgid="5915478828318774384">"à¦à¦¾à¦·à¦¾ সলনি কৰা কী"</string> + <string name="show_language_switch_key_summary" msgid="7343403647474265713">"যেতিয়া à¦à¦•à¦¾à¦§à¦¿à¦• ইনপà§à¦Ÿ à¦à¦¾à¦·à¦¾ সকà§à¦·à¦® কৰি থোৱা থাকে তেতিয়া দেখà§à§±à¦¾à¦“ক"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"কী প\'পআপৰ পà§à§°à¦¤à§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦¨ বিলমà§à¦¬"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"কোনো বিলমà§à¦¬ নাই"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"ডিফ\'লà§à¦Ÿ"</string> + <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>মি. ছে."</string> + <string name="settings_system_default" msgid="6268225104743331821">"ছিষà§à¦Ÿà§‡à¦® ডিফ\'লà§à¦Ÿ"</string> + <string name="use_contacts_dict" msgid="4435317977804180815">"সমà§à¦ªà§°à§à¦• নামৰ পৰামৰà§à¦¶ দিয়ক"</string> + <string name="use_contacts_dict_summary" msgid="6599983334507879959">"পৰামৰà§à¦¶ আৰৠশà§à¦§à§°à¦£à¦¿à§° বাবে সমà§à¦ªà§°à§à¦•à¦¸à§‚চীৰ পৰা নামবোৰ বà§à¦¯à§±à¦¹à¦¾à§° কৰক"</string> + <string name="use_personalized_dicts" msgid="5167396352105467626">"বà§à¦¯à¦•à§à¦¤à¦¿à¦—তকৰণ কৰা পৰামরà§à¦¶à¦¸à¦®à§‚হ"</string> + <string name="enable_metrics_logging" msgid="5506372337118822837">"উনà§à¦¨à¦¤ কৰক <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> + <string name="use_double_space_period" msgid="8781529969425082860">"দà§à¦¬à¦¾à§° সà§à¦ªà§‡à¦šà¦¬à¦¾à§° টিপি দাড়ি দিয়াৰ সà§à¦¬à¦¿à¦§à¦¾"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"সà§à¦ªà§‡à¦šà¦¬à¦¾à§°à¦¤ দà§à¦¬à¦¾à§° টিপিলে à¦à¦¡à¦¾à¦² দাড়ি বহà§à§±à¦¾à¦‡ তাৰ পিছত à¦à¦Ÿà¦¾ সà§à¦ªà§‡à¦š à¦à§°à¦¾à¦¯à¦¼"</string> + <string name="auto_cap" msgid="1719746674854628252">"সà§à¦¬à¦¯à¦¼à¦‚-বৰফলাকৰণ"</string> + <string name="auto_cap_summary" msgid="7934452761022946874">"পà§à§°à¦¤à¦¿à¦Ÿà§‹ বাকà§à¦¯à§° পà§à§°à¦¥à¦®à¦Ÿà§‹ শবà§à¦¦à§° পà§à§°à¦¥à¦® আখৰটো বৰফলাৰ কৰক"</string> + <string name="edit_personal_dictionary" msgid="3996910038952940420">"বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত অà¦à¦¿à¦§à¦¾à¦¨"</string> + <string name="configure_dictionaries_title" msgid="4238652338556902049">"অতিৰিকà§à¦¤ অà¦à¦¿à¦§à¦¾à¦¨"</string> + <string name="main_dictionary" msgid="4798763781818361168">"মà§à¦–à§à¦¯ অà¦à¦¿à¦§à¦¾à¦¨"</string> + <string name="prefs_show_suggestions" msgid="8026799663445531637">"শà§à¦§à§°à¦£à¦¿à§° পৰামৰà§à¦¶à¦¬à§‹à§° দেখà§à§±à¦¾à¦“ক"</string> + <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"টাইপ কৰি থাকোà¦à¦¤à§‡ পৰামৰà§à¦¶à§° শবà§à¦¦à¦¬à§‹à§° দেখà§à§±à¦¾à¦“ক"</string> + <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"আপতà§à¦¤à¦¿à¦œà¦¨à¦• শবà§à¦¦à¦¬à§‹à§° অৱৰোধ কৰক"</string> + <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"সামà§à¦à¦¾à¦¬à§à¦¯ আপতà§à¦¤à¦¿à¦œà¦¨à¦• শবà§à¦¦à¦¬à§‹à§°à§° পৰামৰà§à¦¶ নিদিব"</string> + <string name="auto_correction" msgid="7630720885194996950">"সà§à¦¬à¦¯à¦¼à¦‚-সংশোধন"</string> + <string name="auto_correction_summary" msgid="5625751551134658006">"সà§à¦ªà§‡à¦šà¦¬à¦¾à§° আৰৠযতিচিহà§à¦¨à¦‡ à¦à§à¦²à¦•à§ˆ টাইপ কৰা শবà§à¦¦à¦¬à§‹à§° সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à¦¿à¦¯à¦¼à¦à¦¾à§±à§‡ শà§à¦¦à§à¦§ কৰে"</string> + <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"অফ কৰক"</string> + <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"পৰিমিত"</string> + <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"আগà§à§°à¦¾à¦¸à§€"</string> + <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"অতি আগà§à§°à¦¾à¦¸à§€"</string> + <string name="bigram_prediction" msgid="1084449187723948550">"পৰৱৰà§à¦¤à§€ শবà§à¦¦à§° পৰামৰà§à¦¶à¦¸à¦®à§‚হ"</string> + <string name="bigram_prediction_summary" msgid="3896362682751109677">"পৰামৰà§à¦¶ পà§à§°à¦¦à¦¾à¦¨ কৰিবলৈ পূৰà§à¦¬à§±à§°à§à¦¤à§€ শবà§à¦¦à¦Ÿà§‹ বà§à¦¯à§±à¦¹à¦¾à§° কৰক"</string> + <string name="gesture_input" msgid="826951152254563827">"সà§à¦ªà§°à§à¦¶ লিখন সকà§à¦·à¦® কৰক"</string> + <string name="gesture_input_summary" msgid="9180350639305731231">"আখৰৰ ওপৰেৰে আঙà§à¦²à¦¿ পিছলাই শবà§à¦¦ লিখক"</string> + <string name="gesture_preview_trail" msgid="3802333369335722221">"আঙà§à¦²à¦¿ পিছলাই দিয়া নিৰà§à¦¦à§‡à¦¶à¦¸à¦®à§‚হৰ গতিপথৰ চিহà§à¦¨ দেখà§à§±à¦¾à¦“ক"</string> + <string name="gesture_floating_preview_text" msgid="4443240334739381053">"গতিশীল পà§à§°à¦¬à¦¾à¦¹à¦¿à¦¤ পূৰà§à¦¬à¦¦à§°à§à¦¶à¦¨"</string> + <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"আঙà§à¦²à¦¿à§°à§‡ নিৰà§à¦¦à§‡à¦¶ দিয়াৰ সময়ত পৰামৰà§à¦¶ দিয়া শবà§à¦¦à¦Ÿà§‹ চাওক"</string> + <string name="gesture_space_aware" msgid="2078291600664682496">"আঙà§à¦²à¦¿ পিছলাই দিয়া নিৰà§à¦¦à§‡à¦¶à§‡à§°à§‡ বাকà§à¦¯à¦¾à¦‚শ লিখক"</string> + <string name="gesture_space_aware_summary" msgid="4371385818348528538">"আঙà§à¦²à¦¿ পিছলাই দিয়া নিৰà§à¦¦à§‡à¦¶ দিওà¦à¦¤à§‡ সà§à¦ªà§‡à¦š কীটোৰ ওপৰেৰে আঙà§à¦²à¦¿ পিছলাই সà§à¦ªà§‡à¦š দিয়ক"</string> + <string name="voice_input" msgid="3583258583521397548">"কথনৰ দà§à¦¬à¦¾à§°à¦¾ লিখন কী"</string> + <!-- no translation found for voice_input_disabled_summary (6323489602945135165) --> + <skip /> + <string name="configure_input_method" msgid="373356270290742459">"ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¸à¦®à§‚হ কনফিগাৰ কৰক"</string> + <string name="language_selection_title" msgid="3666971864764478269">"à¦à¦¾à¦·à¦¾"</string> + <string name="help_and_feedback" msgid="5328219371839879161">"সহায় আৰৠমতামত"</string> + <string name="select_language" msgid="5709487854987078367">"à¦à¦¾à¦·à¦¾"</string> + <!-- no translation found for hint_add_to_dictionary (2645988432867033007) --> + <skip /> + <!-- no translation found for hint_add_to_dictionary_without_word (6710206006427574423) --> + <skip /> + <string name="has_dictionary" msgid="6071847973466625007">"অà¦à¦¿à¦§à¦¾à¦¨ উপলবà§à¦§"</string> + <string name="keyboard_layout" msgid="8451164783510487501">"কীব\'ৰà§à¦¡ থীম"</string> + <string name="switch_accounts" msgid="3321216593719006162">"à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿ সলনি কৰক"</string> + <string name="no_accounts_selected" msgid="2073821619103904330">"কোনো à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿ বাছনি কৰা হোৱা নাই"</string> + <string name="account_selected" msgid="2846876462199625974">"<xliff:g id="EMAIL_ADDRESS">%1$s</xliff:g> বরà§à¦¤à¦®à¦¾à¦¨ বà§à¦¯à§±à¦¹à¦¾à§° কৰি থকা হৈছে"</string> + <string name="account_select_ok" msgid="9141195141763227797">"ঠিক আছে"</string> + <string name="account_select_cancel" msgid="5181012062618504340">"বাতিল কৰক"</string> + <string name="account_select_sign_out" msgid="3299651159390187933">"ছাইন আউট কৰক"</string> + <string name="account_select_title" msgid="6279711684772922649">"বà§à¦¯à§±à¦¹à¦¾à§° কৰিবৰ বাবে à¦à¦Ÿà¦¾ à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿ বাছনি কৰক"</string> + <string name="subtype_en_GB" msgid="88170601942311355">"ইংৰাজী (ইউ. কে.)"</string> + <string name="subtype_en_US" msgid="6160452336634534239">"ইংৰাজী (ইউ. à¦à¦›.)"</string> + <string name="subtype_es_US" msgid="5583145191430180200">"সà§à¦ªà§‡à¦¨à¦¿à¦¶à§à¦¬ (ইউ. à¦à¦›.)"</string> + <string name="subtype_hi_ZZ" msgid="8860448146262798623">"হিংলিশà§à¦¬"</string> + <string name="subtype_sr_ZZ" msgid="9059219552986034343">"ছাৰà§à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨ (লেটিন)"</string> + <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"ইংৰাজী (ইউ. কে.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"ইংৰাজী (ইউ. à¦à¦›.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_es_US" msgid="510930471167541338">"সà§à¦ªà§‡à¦¨à¦¿à¦¶à§à¦¬ (ইউ. à¦à¦›.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_hi_ZZ" msgid="6827402953860547044">"হিংলিশà§à¦¬ (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_sr_ZZ" msgid="2859024772719772407">"ছাৰà§à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨ (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (পৰমà§à¦ªà§°à¦¾à¦—ত)"</string> + <string name="subtype_generic_compact" msgid="3353673321203202922">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (চমà§)"</string> + <string name="subtype_no_language" msgid="7137390094240139495">"কোনো à¦à¦¾à¦·à¦¾ নাই (বৰà§à¦£à¦®à¦¾à¦²à¦¾)"</string> + <string name="subtype_no_language_qwerty" msgid="244337630616742604">"বৰà§à¦£à¦®à¦¾à¦²à¦¾ (QWERTY)"</string> + <string name="subtype_no_language_qwertz" msgid="443066912507547976">"বৰà§à¦£à¦®à¦¾à¦²à¦¾ (QWERTZ)"</string> + <string name="subtype_no_language_azerty" msgid="8144348527575640087">"বৰà§à¦£à¦®à¦¾à¦²à¦¾ (AZERTY)"</string> + <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"বৰà§à¦£à¦®à¦¾à¦²à¦¾ (Dvorak)"</string> + <string name="subtype_no_language_colemak" msgid="5837418400010302623">"বৰà§à¦£à¦®à¦¾à¦²à¦¾ (Colemak)"</string> + <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"বৰà§à¦£à¦®à¦¾à¦²à¦¾ (পি. চি.)"</string> + <string name="subtype_emoji" msgid="7483586578074549196">"ইম\'জি"</string> + <string name="keyboard_theme" msgid="4909551808526178852">"কীব\'ৰà§à¦¡ থীম"</string> + <string name="custom_input_styles_title" msgid="8429952441821251512">"কাষà§à¦Ÿà¦® ইনপà§à¦Ÿ শৈলী"</string> + <string name="add_style" msgid="6163126614514489951">"শৈলী যোগ কৰক"</string> + <string name="add" msgid="8299699805688017798">"যোগ কৰক"</string> + <string name="remove" msgid="4486081658752944606">"আà¦à¦¤à§°à¦¾à¦“ক"</string> + <string name="save" msgid="7646738597196767214">"ছেঠকৰক"</string> + <string name="subtype_locale" msgid="8576443440738143764">"à¦à¦¾à¦·à¦¾"</string> + <string name="keyboard_layout_set" msgid="4309233698194565609">"চানেকি"</string> + <string name="custom_input_style_note_message" msgid="8826731320846363423">"আপà§à¦¨à¦¿ কাষà§à¦Ÿà¦® ইনপà§à¦Ÿ শৈলীটো বà§à¦¯à§±à¦¹à¦¾à§° কৰাৰ আগেয়ে তাক সকà§à¦·à¦® কৰিব লাগিব৷ আপà§à¦¨à¦¿ à¦à¦¤à¦¿à¦¯à¦¼à¦¾à¦‡ তাক সকà§à¦·à¦® কৰিবলৈ বিচাৰেনে?"</string> + <string name="enable" msgid="5031294444630523247">"সকà§à¦·à¦® কৰক"</string> + <string name="not_now" msgid="6172462888202790482">"à¦à¦¤à¦¿à¦¯à¦¼à¦¾ নহয়"</string> + <string name="custom_input_style_already_exists" msgid="8008728952215449707">"à¦à¦•à§‡ ইনপà§à¦Ÿ শৈলী ইতিমধà§à¦¯à§‡ মজà§à¦¤ আছে: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string> + <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"কী টিপিলে হোৱা কমà§à¦ªà¦¨à§° কাল-দৈৰà§à¦˜à§à¦¯"</string> + <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"কী টিপিলে হোৱা ধà§à¦¬à¦¨à¦¿à§° মাতà§à§°à¦¾"</string> + <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"কী দীঘলীয়াকৈ টিপি ৰখাৰ সময়"</string> + <string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"কায়িক কীব\'ৰà§à¦¡à§° বাবে ইম\'জী"</string> + <string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"কায়িক Alt কীয়ে ইম\'জী পেলেট দেখà§à§±à¦¾à¦¯à¦¼"</string> + <string name="button_default" msgid="3988017840431881491">"ডিফ\'লà§à¦Ÿ"</string> + <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>লৈ সà§à¦¬à¦¾à¦—তম জনাইছোà¦"</string> + <string name="setup_welcome_additional_description" msgid="8150252008545768953">"আঙà§à¦²à¦¿ পিছলাই দিয়া নিৰà§à¦¦à§‡à¦¶à§‡à§°à§‡ টাইপ কৰাৰ সà§à¦¬à¦¿à¦§à¦¾à§° সৈতে"</string> + <string name="setup_start_action" msgid="8936036460897347708">"আৰমà§à¦ কৰক"</string> + <string name="setup_next_action" msgid="371821437915144603">"পৰৱৰà§à¦¤à§€ পদকà§à¦·à§‡à¦ª"</string> + <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ছেট আপ কৰি থকা হৈছে"</string> + <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> সকà§à¦·à¦® কৰক"</string> + <!-- no translation found for setup_step1_instruction (4295448056733329661) --> + <skip /> + <!-- no translation found for setup_step1_finished_instruction (8701441895377434947) --> + <skip /> + <string name="setup_step1_action" msgid="4366513534999901728">"ছেটিংসমূহলৈ গৈ সকà§à¦·à¦® কৰক"</string> + <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> লৈ সলনি কৰক"</string> + <string name="setup_step2_instruction" msgid="9141481964870023336">"ইয়াৰ পিছত, আপোনাৰ সকà§à§°à¦¿à¦¯à¦¼ পাঠইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿ হিচাপে \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" বাছনি কৰক৷"</string> + <string name="setup_step2_action" msgid="1660330307159824337">"ইনপà§à¦Ÿ পদà§à¦§à¦¤à¦¿à¦¸à¦®à§‚হ সলনি কৰক"</string> + <string name="setup_step3_title" msgid="3154757183631490281">"আপোনাক অà¦à¦¿à¦¨à¦¨à§à¦¦à¦¨ জনাইছোà¦, আপà§à¦¨à¦¿ à¦à¦¤à¦¿à¦¯à¦¼à¦¾ সাজà§!"</string> + <string name="setup_step3_instruction" msgid="8025981829605426000">"আপà§à¦¨à¦¿ à¦à¦¤à¦¿à¦¯à¦¼à¦¾ আপোনাৰ পà§à§°à¦¿à¦¯à¦¼ à¦à¦ªà¦¸à¦®à§‚হত <xliff:g id="APPLICATION_NAME">%s</xliff:g>ৰ সৈতে লিখিব পাৰিব৷"</string> + <string name="setup_step3_action" msgid="600879797256942259">"অতিৰিকà§à¦¤ à¦à¦¾à¦·à¦¾ কনফিগাৰ কৰক"</string> + <string name="setup_finish_action" msgid="276559243409465389">"সমà§à¦ªà§‚ৰà§à¦£ হ’ল"</string> + <string name="show_setup_wizard_icon" msgid="5008028590593710830">"à¦à¦ªà§° আইকন দেখà§à§±à¦¾à¦“ক"</string> + <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"লঞà§à¦šà¦¾à§°à¦¤ à¦à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à§à¦¬à¦¨ আইকন দেখà§à§±à¦¾à¦“ক"</string> + <string name="app_name" msgid="6320102637491234792">"অà¦à¦¿à¦§à¦¾à¦¨ পà§à§°à¦¦à¦¾à¦¨à¦•à¦¾à§°à§€"</string> + <string name="dictionary_provider_name" msgid="3027315045397363079">"অà¦à¦¿à¦§à¦¾à¦¨ পà§à§°à¦¦à¦¾à¦¨à¦•à¦¾à§°à§€"</string> + <string name="dictionary_service_name" msgid="6237472350693511448">"অà¦à¦¿à¦§à¦¾à¦¨ সেৱা"</string> + <string name="download_description" msgid="6014835283119198591">"অà¦à¦¿à¦§à¦¾à¦¨ আপডে’ট কৰাৰ তথà§à¦¯"</string> + <string name="dictionary_settings_title" msgid="8091417676045693313">"অতিৰিকà§à¦¤ অà¦à¦¿à¦§à¦¾à¦¨"</string> + <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"অà¦à¦¿à¦§à¦¾à¦¨ উপলবà§à¦§"</string> + <string name="dictionary_settings_summary" msgid="5305694987799824349">"অà¦à¦¿à¦§à¦¾à¦¨à¦¸à¦®à§‚হৰ বাবে ছেটিংসমূহ"</string> + <string name="user_dictionaries" msgid="3582332055892252845">"বà§à¦¯à§±à¦¹à¦¾à§°à¦•à¦¾à§°à§€à§° অà¦à¦¿à¦§à¦¾à¦¨à¦¸à¦®à§‚হ"</string> + <string name="default_user_dict_pref_name" msgid="1625055720489280530">"বà§à¦¯à§±à¦¹à¦¾à§°à¦•à¦¾à§°à§€à§° অà¦à¦¿à¦§à¦¾à¦¨"</string> + <string name="dictionary_available" msgid="4728975345815214218">"অà¦à¦¿à¦§à¦¾à¦¨ উপলবà§à¦§"</string> + <string name="dictionary_downloading" msgid="2982650524622620983">"বৰà§à¦¤à¦®à¦¾à¦¨ ডাউনল’ড হৈ আছে"</string> + <string name="dictionary_installed" msgid="8081558343559342962">"ইনষà§à¦Ÿà¦² কৰা হ’ল"</string> + <string name="dictionary_disabled" msgid="8950383219564621762">"ফাইল ইনষà§à¦Ÿà¦² হৈছে কিনà§à¦¤à§ অà¦à¦¿à¦§à¦¾à¦¨ অকà§à¦·à¦® হৈ আছে"</string> + <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"অà¦à¦¿à¦§à¦¾à¦¨ সেৱাৰ লগত সংযোগ কৰোà¦à¦¤à§‡ সমসà§à¦¯à¦¾à§° সৃষà§à¦Ÿà¦¿ হৈছে"</string> + <string name="no_dictionaries_available" msgid="8039920716566132611">"কোনো অà¦à¦¿à¦§à¦¾à¦¨ নাই"</string> + <string name="check_for_updates_now" msgid="8087688440916388581">"ৰিফà§à§°à§‡à¦¶à§à¦¬ কৰক"</string> + <string name="last_update" msgid="730467549913588780">"অনà§à¦¤à¦¿à¦®à¦¬à¦¾à§° আপডে’ট কৰা হৈছিল"</string> + <string name="message_updating" msgid="4457761393932375219">"আপডে’ট আছে নেকি পৰীকà§à¦·à¦¾ কৰি থকা হৈছে"</string> + <string name="message_loading" msgid="5638680861387748936">"ল\'ড হৈ আছে…"</string> + <string name="main_dict_description" msgid="3072821352793492143">"মà§à¦–à§à¦¯ অà¦à¦¿à¦§à¦¾à¦¨"</string> + <string name="cancel" msgid="6830980399865683324">"বাতিল কৰক"</string> + <string name="go_to_settings" msgid="3876892339342569259">"ছেটিংসমূহ"</string> + <string name="install_dict" msgid="180852772562189365">"ইনষà§à¦Ÿà¦² কৰক"</string> + <string name="cancel_download_dict" msgid="7843340278507019303">"বাতিল কৰক"</string> + <string name="delete_dict" msgid="756853268088330054">"মচক"</string> + <!-- no translation found for should_download_over_metered_prompt (6737084685073734292) --> + <skip /> + <string name="download_over_metered" msgid="1643065851159409546">"à¦à¦¤à¦¿à¦¯à¦¼à¦¾à¦‡ ডাউনল’ড কৰক (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>à¦à¦®. বি.)"</string> + <string name="do_not_download_over_metered" msgid="2176209579313941583">"ৱাই-ফাইৰ যোগেৰে ডাউনল’ড কৰক"</string> + <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>ৰ বাবে à¦à¦–ন অà¦à¦¿à¦§à¦¾à¦¨ উপলবà§à¦§"</string> + <string name="dict_available_notification_description" msgid="1075194169443163487">"সমীকà§à¦·à¦¾ আৰৠডাউনল’ড কৰিবলৈ হেà¦à¦šà¦•"</string> + <string name="toast_downloading_suggestions" msgid="6128155879830851739">"ডাউনল’ড কৰি থকা হৈছে: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>ৰ বাবে পৰামৰà§à¦¶à¦¬à§‹à§° সোনকালে সাজৠহ\'ব।"</string> + <string name="version_text" msgid="2715354215568469385">"সংসà§à¦•à§°à¦£ <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string> + <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"যোগ কৰক"</string> + <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"অà¦à¦¿à¦§à¦¾à¦¨à¦¤ যোগ কৰক"</string> + <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"বাকà§à¦¯à¦¾à¦‚শ"</string> + <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"অধিক বিকলà§à¦ª"</string> + <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"কম বিকলà§à¦ª"</string> + <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"ঠিক আছে"</string> + <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"শবà§à¦¦:"</string> + <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"শà§à¦¬à§°à§à¦Ÿà¦•à¦¾à¦Ÿ:"</string> + <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"à¦à¦¾à¦·à¦¾:"</string> + <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"কোনো শবà§à¦¦ লিখক"</string> + <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"à¦à¦šà§à¦›à¦¿à¦• শà§à¦¬à§°à§à¦Ÿà¦•à¦¾à¦Ÿ"</string> + <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"শবà§à¦¦ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰক"</string> + <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰক"</string> + <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"মচক"</string> + <!-- no translation found for user_dict_settings_empty_text (6889278304342592383) --> + <skip /> + <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"সকলো à¦à¦¾à¦·à¦¾à§° বাবে"</string> + <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"অধিক à¦à¦¾à¦·à¦¾â€¦"</string> + <string name="user_dict_settings_delete" msgid="110413335187193859">"মচক"</string> + <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string> +</resources> diff --git a/java/res/values-b+sr+Latn/strings-talkback-descriptions.xml b/java/res/values-b+sr+Latn/strings-talkback-descriptions.xml index 556b5ab79b54fe85d0a3632c20cd8a3c6a89c869..114dcf1cff154124d32684f40774d0460528173a 100644 --- a/java/res/values-b+sr+Latn/strings-talkback-descriptions.xml +++ b/java/res/values-b+sr+Latn/strings-talkback-descriptions.xml @@ -46,7 +46,7 @@ <string name="spoken_description_dot" msgid="5644176501632325560">"TaÄka"</string> <string name="spoken_description_language_switch" msgid="6818666779313544553">"Prebaci jezik"</string> <string name="spoken_description_action_next" msgid="431761808119616962">"Prethodno"</string> - <string name="spoken_description_action_previous" msgid="2919072174697865110">"Sledeće"</string> + <string name="spoken_description_action_previous" msgid="2919072174697865110">"Nazad"</string> <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift je omogućen"</string> <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock je omogućen"</string> <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Režim simbola"</string> diff --git a/java/res/values-bn/strings-talkback-descriptions.xml b/java/res/values-bn/strings-talkback-descriptions.xml index 1d438bd406ad88b46ac6e1dc2c68994653d2f50c..ff7b0d8a0207e0c08b45aadca2f2b22df10316be 100644 --- a/java/res/values-bn/strings-talkback-descriptions.xml +++ b/java/res/values-bn/strings-talkback-descriptions.xml @@ -42,7 +42,7 @@ <string name="spoken_description_mic" msgid="6153138783813452464">"à¦à¦¯à¦¼à§‡à¦¸ ইনপà§à¦Ÿ"</string> <string name="spoken_description_emoji" msgid="7990051553008088470">"ইমোজি"</string> <string name="spoken_description_return" msgid="3183692287397645708">"ফেরত যান"</string> - <string name="spoken_description_search" msgid="5099937658231911288">"অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨"</string> + <string name="spoken_description_search" msgid="5099937658231911288">"সারà§à¦š"</string> <string name="spoken_description_dot" msgid="5644176501632325560">"ডট"</string> <string name="spoken_description_language_switch" msgid="6818666779313544553">"à¦à¦¾à¦·à¦¾ সà§à¦¯à§à¦‡à¦š করà§à¦¨"</string> <string name="spoken_description_action_next" msgid="431761808119616962">"পরবরà§à¦¤à§€"</string> @@ -76,7 +76,7 @@ <string name="spoken_descrption_emoji_category_eight_animals_nature" msgid="5844950234883716704">"জীবজনà§à¦¤à§ ও পà§à¦°à¦•à§ƒà¦¤à¦¿"</string> <string name="spoken_descrption_emoji_category_eight_food_drink" msgid="6196944764485349650">"খাদà§à¦¯ ও পানীয়"</string> <string name="spoken_descrption_emoji_category_eight_travel_places" msgid="3834085499381434611">"à¦à§à¦°à¦®à¦£ ও সà§à¦¥à¦¾à¦¨à¦—à§à¦²à¦¿"</string> - <string name="spoken_descrption_emoji_category_eight_activity" msgid="4795281669042975993">"কারà§à¦¯à¦•à¦²à¦¾à¦ª"</string> + <string name="spoken_descrption_emoji_category_eight_activity" msgid="4795281669042975993">"অà§à¦¯à¦¾à¦•à§à¦Ÿà¦¿à¦à¦¿à¦Ÿà¦¿"</string> <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"ইমোটিকনগà§à¦²à¦¿"</string> <string name="spoken_description_upper_case" msgid="4904835255229433916">"বড় হাতের <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string> <string name="spoken_letter_0049" msgid="4743162182646977944">"বড় হাতের I"</string> diff --git a/java/res/values-bn/strings.xml b/java/res/values-bn/strings.xml index 13569eabdfda053d22376fa693c32a089f46c950..8ba390511fce847573993fb4377fd9d29bc392a3 100644 --- a/java/res/values-bn/strings.xml +++ b/java/res/values-bn/strings.xml @@ -71,7 +71,7 @@ <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"আপতà§à¦¤à¦¿à¦œà¦¨à¦• শবà§à¦¦ অবরোধ করà§à¦¨"</string> <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"সমà§à¦à¦¾à¦¬à§à¦¯ অশোà¦à¦¨ শবà§à¦¦ সà§à¦ªà¦¾à¦°à¦¿à¦¶ করবেন না"</string> <string name="auto_correction" msgid="7630720885194996950">"সà§à¦¬à¦¤:সংশোধন"</string> - <string name="auto_correction_summary" msgid="5625751551134658006">"সà§à¦ªà§‡à¦¸à¦¬à¦¾à¦° ও যতিচিহà§à¦¨ à¦à§à¦²à¦à¦¾à¦¬à§‡ টাইপ করা শবà§à¦¦ সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼à¦à¦¾à¦¬à§‡ সংশোধন করে"</string> + <string name="auto_correction_summary" msgid="5625751551134658006">"সà§à¦ªà§‡à¦¸à¦¬à¦¾à¦° ও যতিচিহà§à¦¨ à¦à§à¦²à¦à¦¾à¦¬à§‡ টাইপ করা শবà§à¦¦ অটোমেটিক সংশোধন করে"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"বনà§à¦§ করà§à¦¨"</string> <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"মাà¦à¦¾à¦°à¦¿"</string> <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"আকà§à¦°à¦®à¦£à¦¾à¦¤à§à¦®à¦•"</string> @@ -123,17 +123,17 @@ <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"বরà§à¦£à¦®à¦¾à¦²à¦¾ (PC)"</string> <string name="subtype_emoji" msgid="7483586578074549196">"ইমোজি"</string> <string name="keyboard_theme" msgid="4909551808526178852">"কীবোরà§à¦¡ থিম"</string> - <string name="custom_input_styles_title" msgid="8429952441821251512">"কাসà§à¦Ÿà¦® ইনপà§à¦Ÿ শৈলীগà§à¦²à¦¿"</string> - <string name="add_style" msgid="6163126614514489951">"শৈলী জà§à¦¡à¦¼à§à¦¨"</string> + <string name="custom_input_styles_title" msgid="8429952441821251512">"কাসà§à¦Ÿà¦® ইনপà§à¦Ÿ সà§à¦Ÿà¦¾à¦‡à¦²à¦—à§à¦²à¦¿"</string> + <string name="add_style" msgid="6163126614514489951">"সà§à¦Ÿà¦¾à¦‡à¦² জà§à¦¡à¦¼à§à¦¨"</string> <string name="add" msgid="8299699805688017798">"জà§à¦¡à¦¼à§à¦¨"</string> <string name="remove" msgid="4486081658752944606">"সরান"</string> <string name="save" msgid="7646738597196767214">"সেঠকরà§à¦¨"</string> <string name="subtype_locale" msgid="8576443440738143764">"à¦à¦¾à¦·à¦¾"</string> <string name="keyboard_layout_set" msgid="4309233698194565609">"লেআউট"</string> - <string name="custom_input_style_note_message" msgid="8826731320846363423">"আপনার কাসà§à¦Ÿà¦® ইনপà§à¦Ÿ শৈলী বà§à¦¯à¦¬à¦¹à¦¾à¦° শà§à¦°à§ করার আগে à¦à¦Ÿà¦¿ সকà§à¦·à¦® করা পà§à¦°à¦¯à¦¼à§‹à¦œà¦¨à¥¤ আপনি কি à¦à¦–ন à¦à¦Ÿà¦¿ সকà§à¦·à¦® করতে চান?"</string> + <string name="custom_input_style_note_message" msgid="8826731320846363423">"আপনার কাসà§à¦Ÿà¦® ইনপà§à¦Ÿ সà§à¦Ÿà¦¾à¦‡à¦² বà§à¦¯à¦¬à¦¹à¦¾à¦° শà§à¦°à§ করার আগে à¦à¦Ÿà¦¿ সকà§à¦·à¦® করা পà§à¦°à¦¯à¦¼à§‹à¦œà¦¨à¥¤ আপনি কি à¦à¦–ন à¦à¦Ÿà¦¿ সকà§à¦·à¦® করতে চান?"</string> <string name="enable" msgid="5031294444630523247">"সকà§à¦·à¦® করà§à¦¨"</string> <string name="not_now" msgid="6172462888202790482">"à¦à¦–ন নয়"</string> - <string name="custom_input_style_already_exists" msgid="8008728952215449707">"à¦à¦•à¦‡ ইনপà§à¦Ÿ শৈলী ইতোমধà§à¦¯à§‡ বিদà§à¦¯à¦®à¦¾à¦¨: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string> + <string name="custom_input_style_already_exists" msgid="8008728952215449707">"à¦à¦•à¦‡ ইনপà§à¦Ÿ সà§à¦Ÿà¦¾à¦‡à¦² ইতোমধà§à¦¯à§‡ বিদà§à¦¯à¦®à¦¾à¦¨: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"কীপà§à¦°à§‡à¦¸ à¦à¦¾à¦‡à¦¬à§à¦°à§‡à¦Ÿ সময়কাল"</string> <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"কীপà§à¦°à§‡à¦¸ সাউনà§à¦¡ à¦à¦²à¦¿à¦‰à¦®"</string> <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"কী পà§à¦°à§‡à¦¸à§‡ দীরà§à¦˜ বিলমà§à¦¬"</string> @@ -183,7 +183,7 @@ <string name="install_dict" msgid="180852772562189365">"ইনসà§à¦Ÿà¦² করà§à¦¨"</string> <string name="cancel_download_dict" msgid="7843340278507019303">"বাতিল করà§à¦¨"</string> <string name="delete_dict" msgid="756853268088330054">"মà§à¦›à§à¦¨"</string> - <string name="should_download_over_metered_prompt" msgid="6737084685073734292">"আপনার মোবাইল ডিà¦à¦¾à¦‡à¦¸à§‡ নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ à¦à¦¾à¦·à¦¾à¦° জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ অà¦à¦¿à¦§à¦¾à¦¨ উপলà¦à§à¦¯ আছে। <br/> আপনার টাইপিং à¦à¦° অà¦à¦¿à¦œà§à¦žà¦¤à¦¾ à¦à¦¾à¦²à§‹ করার জনà§à¦¯ আমরা <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> অà¦à¦¿à¦§à¦¾à¦¨ <b>ডাউনলোড করার</b> পরামরà§à¦¶ দিই। <br/> <br/> 3G-র মাধà§à¦¯à¦®à§‡ ডাউনলোড হতে à¦à¦• বা দà§à¦‡ মিনিট সময় লাগতে পারে। আপনার কাছে কোন <b>আনলিমিটেড ডেটা পà§à¦²à§à¦¯à¦¾à¦¨</b>.<br/> না থাকলে চারà§à¦œ পà§à¦°à¦¯à§‹à¦œà§à¦¯ হতে পারে, আপনার কাছে কোন ডেটা পà§à¦²à§à¦¯à¦¾à¦¨ আছে তা নিয়ে আপনি নিশà§à¦šà¦¿à¦¤ না থাকলে সেকà§à¦·à§‡à¦¤à§à¦°à§‡ আমরা ডাউনলোড সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼à¦à¦¾à¦¬à§‡ শà§à¦°à§ করার জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ Wi-Fi সংযোগ খোà¦à¦œà¦¾à¦° পরামরà§à¦¶ দিই। <br/> <br/>টিপ: আপনি আপনার মোবাইল ডিà¦à¦¾à¦‡à¦¸à§‡ <b>সেটিংস</b> মেনà§à¦¤à§‡ <b>à¦à¦¾à¦·à¦¾ à¦à¦¬à¦‚ ইনপà§à¦Ÿ</b> à¦à¦° মধà§à¦¯à§‡ গিয়ে অà¦à¦¿à¦§à¦¾à¦¨ ডাউনলোড করতে ও মà§à¦›à¦¤à§‡ পারবেন।"</string> + <string name="should_download_over_metered_prompt" msgid="6737084685073734292">"আপনার মোবাইল ডিà¦à¦¾à¦‡à¦¸à§‡ নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ à¦à¦¾à¦·à¦¾à¦° জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ অà¦à¦¿à¦§à¦¾à¦¨ উপলà¦à§à¦¯ আছে। <br/> আপনার টাইপিং à¦à¦° অà¦à¦¿à¦œà§à¦žà¦¤à¦¾ à¦à¦¾à¦²à§‹ করার জনà§à¦¯ আমরা <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> অà¦à¦¿à¦§à¦¾à¦¨ <b>ডাউনলোড করার</b> পরামরà§à¦¶ দিই। <br/> <br/> 3G-র মাধà§à¦¯à¦®à§‡ ডাউনলোড হতে à¦à¦• বা দà§à¦‡ মিনিট সময় লাগতে পারে। আপনার কাছে কোন <b>আনলিমিটেড ডেটা পà§à¦²à§à¦¯à¦¾à¦¨</b>.<br/> না থাকলে চারà§à¦œ পà§à¦°à¦¯à§‹à¦œà§à¦¯ হতে পারে, আপনার কাছে কোন ডেটা পà§à¦²à§à¦¯à¦¾à¦¨ আছে তা নিয়ে আপনি নিশà§à¦šà¦¿à¦¤ না থাকলে সেকà§à¦·à§‡à¦¤à§à¦°à§‡ আমরা ডাউনলোড অটোমেটিক শà§à¦°à§ করার জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ Wi-Fi সংযোগ খোà¦à¦œà¦¾à¦° পরামরà§à¦¶ দিই। <br/> <br/>টিপ: আপনি আপনার মোবাইল ডিà¦à¦¾à¦‡à¦¸à§‡ <b>সেটিংস</b> মেনà§à¦¤à§‡ <b>à¦à¦¾à¦·à¦¾ à¦à¦¬à¦‚ ইনপà§à¦Ÿ</b> à¦à¦° মধà§à¦¯à§‡ গিয়ে অà¦à¦¿à¦§à¦¾à¦¨ ডাউনলোড করতে ও মà§à¦›à¦¤à§‡ পারবেন।"</string> <string name="download_over_metered" msgid="1643065851159409546">"à¦à¦–ন ডাউনলোড করà§à¦¨ (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>মেবা)"</string> <string name="do_not_download_over_metered" msgid="2176209579313941583">"ওয়াই-ফাই মাধà§à¦¯à¦®à§‡ ডাউনলোড করà§à¦¨"</string> <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> à¦à¦¾à¦·à¦¾à¦° জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ অà¦à¦¿à¦§à¦¾à¦¨ উপলবà§à¦§"</string> diff --git a/java/res/values-bs/strings.xml b/java/res/values-bs/strings.xml index ee310f3e9e7406901f517ed396009a0cd5ddf05f..824b29a4cbc2258f4660b833364782f9e3e52059 100644 --- a/java/res/values-bs/strings.xml +++ b/java/res/values-bs/strings.xml @@ -26,10 +26,10 @@ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibracija pri pritisku na tipku"</string> <string name="sound_on_keypress" msgid="6093592297198243644">"Zvuk pri pritisku tipke"</string> <string name="popup_on_keypress" msgid="123894815723512944">"IskaÄuÄi prozor pri pritisku na tipku"</string> - <string name="settings_screen_preferences" msgid="2696713156722014624">"Karakteristike"</string> + <string name="settings_screen_preferences" msgid="2696713156722014624">"Postavke"</string> <string name="settings_screen_accounts" msgid="2786418968536696670">"RaÄuni i privatnost"</string> <string name="settings_screen_appearance" msgid="7358046399111611615">"Izgled i rasporedi tipki"</string> - <string name="settings_screen_gesture" msgid="8826372746901183556">"Kucanje pokretima"</string> + <string name="settings_screen_gesture" msgid="8826372746901183556">"Pisanje pokretima"</string> <string name="settings_screen_correction" msgid="1616818407747682955">"Ispravka teksta"</string> <string name="settings_screen_advanced" msgid="7472408607625972994">"Napredno"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> @@ -38,7 +38,7 @@ <string name="cloud_sync_summary" msgid="7684887161145650857">"Sinhronizacija je ukljuÄena"</string> <string name="cloud_sync_summary_disabled" msgid="4553338970382825796">"Sinhronizirajte vlastiti rjeÄnik na svim ureÄ‘ajima"</string> <string name="sync_now_title" msgid="3088838136743277721">"Sinhroniziraj sada"</string> - <string name="clear_sync_data_title" msgid="8582001557037069154">"ObriÅ¡i podatke iz oblaka"</string> + <string name="clear_sync_data_title" msgid="8582001557037069154">"Brisanje podataka iz oblaka"</string> <string name="clear_sync_data_summary" msgid="993477139012576584">"BriÅ¡e vaÅ¡e sinhronizirane podatke s Googlea"</string> <string name="clear_sync_data_confirmation" msgid="2811931135574727678">"VaÅ¡i snihronizirani podaci bit će izbrisani iz oblaka. Sigurno?"</string> <string name="clear_sync_data_ok" msgid="613104067705915132">"IzbriÅ¡i"</string> @@ -78,7 +78,7 @@ <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Veoma napadno"</string> <string name="bigram_prediction" msgid="1084449187723948550">"Prijedlozi za sljedeću rijeÄ"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"Prilikom odluÄivanja koristi prethodno"</string> - <string name="gesture_input" msgid="826951152254563827">"Omogućite kucanje pokretima"</string> + <string name="gesture_input" msgid="826951152254563827">"Omogućite pisanje pokretima"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"Unesite rijeÄ klizanjem prstom preko slova"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"Prikaži trag pokreta"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Pregled dinamiÄkim lebdenjem"</string> @@ -86,7 +86,7 @@ <string name="gesture_space_aware" msgid="2078291600664682496">"Pokret za fraze"</string> <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Klizanjem na tipku za razmak umetni razmake tokom pokreta"</string> <string name="voice_input" msgid="3583258583521397548">"Tipka za govorni unos"</string> - <string name="voice_input_disabled_summary" msgid="6323489602945135165">"Nisu omogućeni naÄini za glasovni unos. Provjerite postavke sekcije Jezici i unos."</string> + <string name="voice_input_disabled_summary" msgid="6323489602945135165">"Nisu omogućeni naÄini za glasovni unos. Provjerite postavke odjeljka Jezici i unos."</string> <string name="configure_input_method" msgid="373356270290742459">"Konfiguriraj naÄine unosa"</string> <string name="language_selection_title" msgid="3666971864764478269">"Jezici"</string> <string name="help_and_feedback" msgid="5328219371839879161">"Pomoć i povratne informacije"</string> @@ -141,13 +141,13 @@ <string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"Tipka Alt na fiziÄkoj tastaturi aktivira paletu za emoji"</string> <string name="button_default" msgid="3988017840431881491">"Zadano"</string> <string name="setup_welcome_title" msgid="6112821709832031715">"Dobro doÅ¡li u aplikaciju <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> - <string name="setup_welcome_additional_description" msgid="8150252008545768953">"s kucanjem pokretima"</string> + <string name="setup_welcome_additional_description" msgid="8150252008545768953">"s Pisanjem pokretima"</string> <string name="setup_start_action" msgid="8936036460897347708">"ZapoÄnite"</string> <string name="setup_next_action" msgid="371821437915144603">"Sljedeći korak"</string> <string name="setup_steps_title" msgid="6400373034871816182">"Postavljanje aplikacije <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step1_title" msgid="3147967630253462315">"Omogući aplikaciju <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> - <string name="setup_step1_instruction" msgid="4295448056733329661">"OznaÄite aplikaciju \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" u postavkama sekcije Jezici i unos. Na taj naÄin ćete joj dozvoliti da se pokrene na vaÅ¡em ureÄ‘aju."</string> - <string name="setup_step1_finished_instruction" msgid="8701441895377434947">"Aplikacija <xliff:g id="APPLICATION_NAME">%s</xliff:g> je već omogućena u vaÅ¡im postavkama sekcije Jezici i unos, tako da je ovaj korak zavrÅ¡en. PreÄ‘ite na sljedeći!"</string> + <string name="setup_step1_instruction" msgid="4295448056733329661">"OznaÄite aplikaciju \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" u postavkama odjeljka Jezici i unos. Na taj naÄin ćete joj dozvoliti da se pokrene na vaÅ¡em ureÄ‘aju."</string> + <string name="setup_step1_finished_instruction" msgid="8701441895377434947">"Aplikacija <xliff:g id="APPLICATION_NAME">%s</xliff:g> je već omogućena u vaÅ¡im postavkama odjeljka Jezici i unos, tako da je ovaj korak zavrÅ¡en. PreÄ‘ite na sljedeći!"</string> <string name="setup_step1_action" msgid="4366513534999901728">"Omogući u Postavkama"</string> <string name="setup_step2_title" msgid="6860725447906690594">"Prebacite se na aplikaciju <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step2_instruction" msgid="9141481964870023336">"Zatim odaberite aplikaciju \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" kao vaÅ¡ aktivni naÄin unosa teksta."</string> @@ -183,9 +183,9 @@ <string name="install_dict" msgid="180852772562189365">"Instaliraj"</string> <string name="cancel_download_dict" msgid="7843340278507019303">"Otkaži"</string> <string name="delete_dict" msgid="756853268088330054">"IzbriÅ¡i"</string> - <string name="should_download_over_metered_prompt" msgid="6737084685073734292">"Za odabrani jezik na vaÅ¡em ureÄ‘aju postoji dostupan rjeÄnik.<br/> Predlažemo da <b>preuzmete</b> rjeÄnik za <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> kako biste poboljÅ¡ali svoje iskustvo tipkanja.<br/> <br/> Preuzimanje putem 3G mreže može potrajati minut-dva. Mogući su troÅ¡kovi ukoliko nemate <b>paket s neograniÄenim prijenosom podataka</b>.<br/> Ako ne znate koji paket za prijenos podataka imate, preporuÄujemo da pronaÄ‘ete Wi-Fi mrežu kako biste poÄeli automatsko preuzimanje.<br/> <br/> Savjet: RjeÄnike možete preuzimati i uklanjati ako odete na <b>Jezici i unos</b> u meniju <b>Postavke</b> na vaÅ¡em mobilnom ureÄ‘aju."</string> + <string name="should_download_over_metered_prompt" msgid="6737084685073734292">"Za odabrani jezik na vaÅ¡em ureÄ‘aju postoji dostupan rjeÄnik.<br/> Predlažemo da <b>preuzmete</b> rjeÄnik za <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> kako biste poboljÅ¡ali svoje iskustvo tipkanja.<br/> <br/> Preuzimanje putem 3G mreže može potrajati minut-dva. Mogući su troÅ¡kovi ukoliko nemate <b>paket s neograniÄenim prijenosom podataka</b>.<br/> Ako ne znate koji paket za prijenos podataka imate, preporuÄujemo da pronaÄ‘ete WiFi mrežu kako biste poÄeli automatsko preuzimanje.<br/> <br/> Savjet: RjeÄnike možete preuzimati i uklanjati ako odete na <b>Jezici i unos</b> u meniju <b>Postavke</b> na vaÅ¡em mobilnom ureÄ‘aju."</string> <string name="download_over_metered" msgid="1643065851159409546">"Preuzmi odmah (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string> - <string name="do_not_download_over_metered" msgid="2176209579313941583">"Preuzmi putem Wi-Fi mreže"</string> + <string name="do_not_download_over_metered" msgid="2176209579313941583">"Preuzmi putem WiFi mreže"</string> <string name="dict_available_notification_title" msgid="4583842811218581658">"RjeÄnik je dostupan za <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string> <string name="dict_available_notification_description" msgid="1075194169443163487">"Pritisnite za pregled i preuzimanje"</string> <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Preuzimanje: prijedlozi za <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> bit će uskoro spremni."</string> diff --git a/java/res/values-ca/strings-emoji-descriptions.xml b/java/res/values-ca/strings-emoji-descriptions.xml index 4371fc2102f6293aebe1132dff977eaa9fb35712..86ba6a8f819f4e5193201f629dd8ca89e7bb0778 100644 --- a/java/res/values-ca/strings-emoji-descriptions.xml +++ b/java/res/values-ca/strings-emoji-descriptions.xml @@ -275,7 +275,7 @@ <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Sortida del sol sobre les muntanyes"</string> <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Sortida del sol"</string> <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Paisatge urbà al vespre"</string> - <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Posta del sol sobre els edificis"</string> + <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Posta de sol sobre els edificis"</string> <string name="spoken_emoji_1F308" msgid="688704703985173377">"Arc de Sant MartÃ"</string> <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Pont a la nit"</string> <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Onada"</string> diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml index 77ec50eb75b5b2641c9cd18c47b3b7f8044308a7..f1839021963fd0398dce4c94bf8a90153b909563 100644 --- a/java/res/values-ca/strings.xml +++ b/java/res/values-ca/strings.xml @@ -62,7 +62,7 @@ <string name="use_double_space_period" msgid="8781529969425082860">"Doble espai per punt"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"Fer dos tocs a la barra d\'espai insereix punt seguit d\'un espai"</string> <string name="auto_cap" msgid="1719746674854628252">"Majúscules automà tiques"</string> - <string name="auto_cap_summary" msgid="7934452761022946874">"Posa en majúscula la primera paraula de cada frase"</string> + <string name="auto_cap_summary" msgid="7934452761022946874">"Escriu en majúscula la primera lletra de la primera paraula de cada frase"</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"Diccionari personal"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Diccionaris complementaris"</string> <string name="main_dictionary" msgid="4798763781818361168">"Diccionari principal"</string> diff --git a/java/res/values-cs/strings-emoji-descriptions.xml b/java/res/values-cs/strings-emoji-descriptions.xml index 988abd12d905c2f99a8dd0eb0bd3c1f1d42eaf46..db072c41589158d677abeea2c7bcdc8eac7b09b2 100644 --- a/java/res/values-cs/strings-emoji-descriptions.xml +++ b/java/res/values-cs/strings-emoji-descriptions.xml @@ -1100,7 +1100,7 @@ <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Vysokorychlostnà vlak s kulatou pÅ™ÃdÃ"</string> <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Vlak"</string> <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metro"</string> - <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Železnice"</string> + <string name="spoken_emoji_1F688" msgid="4702085029871797965">"MÄ›stská dráha"</string> <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Stanice"</string> <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Tramvaj"</string> <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Vagon tramvaje"</string> diff --git a/java/res/values-da/strings-emoji-descriptions.xml b/java/res/values-da/strings-emoji-descriptions.xml index e82b06c1ef635fd055d76c329fc445124cddac55..e3773c47f2414711b42e8a516ff3291613501ddb 100644 --- a/java/res/values-da/strings-emoji-descriptions.xml +++ b/java/res/values-da/strings-emoji-descriptions.xml @@ -806,7 +806,7 @@ <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Udbakke"</string> <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Indbakke"</string> <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Pakke"</string> - <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"E-mailsymbol"</string> + <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"Mailsymbol"</string> <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"IndgÃ¥ende kuvert"</string> <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Kuvert under pil, der peger nedad"</string> <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Lukket postkasse med flaget nede"</string> diff --git a/java/res/values-da/strings-talkback-descriptions.xml b/java/res/values-da/strings-talkback-descriptions.xml index 8ee20d3b82f41b7efcf7212a91a2b0ee0807ef17..29740154d05db342fffec529ed4da98f3fd87a3f 100644 --- a/java/res/values-da/strings-talkback-descriptions.xml +++ b/java/res/values-da/strings-talkback-descriptions.xml @@ -58,7 +58,7 @@ <string name="announce_keyboard_mode" msgid="6698257917367823205">"Viser tastatur til <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string> <string name="keyboard_mode_date" msgid="6597407244976713364">"dato"</string> <string name="keyboard_mode_date_time" msgid="3642804408726668808">"dato og klokkeslæt"</string> - <string name="keyboard_mode_email" msgid="1239682082047693644">"e-mail"</string> + <string name="keyboard_mode_email" msgid="1239682082047693644">"mail"</string> <string name="keyboard_mode_im" msgid="3812086215529493501">"beskeder"</string> <string name="keyboard_mode_number" msgid="5395042245837996809">"tal"</string> <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefonnummer"</string> diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml index 2c3546cfa88f1afea6abf98f9bd9d4d44710f1d2..5471ea019574f852ffcd90a1d036c367167544ce 100644 --- a/java/res/values-da/strings.xml +++ b/java/res/values-da/strings.xml @@ -56,7 +56,7 @@ <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> ms"</string> <string name="settings_system_default" msgid="6268225104743331821">"Systemstandard"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"ForeslÃ¥ navne pÃ¥ kontakter"</string> - <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Brug navne fra Kontaktpersoner til forslag og rettelser"</string> + <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Brug navne fra Kontakter til forslag og rettelser"</string> <string name="use_personalized_dicts" msgid="5167396352105467626">"Tilpassede forslag"</string> <string name="enable_metrics_logging" msgid="5506372337118822837">"Gør <xliff:g id="APPLICATION_NAME">%s</xliff:g> bedre"</string> <string name="use_double_space_period" msgid="8781529969425082860">"To mellemrum for punktum"</string> diff --git a/java/res/values-de/strings-emoji-descriptions.xml b/java/res/values-de/strings-emoji-descriptions.xml index 8b6fbb6ec36952f0d684327fd4a96ea61f96fd2f..0e4699b7c3a254e41789546a5894dbf3186a8c40 100644 --- a/java/res/values-de/strings-emoji-descriptions.xml +++ b/java/res/values-de/strings-emoji-descriptions.xml @@ -227,7 +227,7 @@ <string name="spoken_emoji_2935" msgid="6198710960720232074">"Pfeil nach rechts und dann im Bogen nach unten"</string> <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Schwarzer Pfeil nach links"</string> <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Schwarzer Pfeil nach oben"</string> - <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Schwarzer Pfeil nach unten"</string> + <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Schwarzer Abwärtspfeil"</string> <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Großes schwarzes Quadrat"</string> <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Großes weißes Quadrat"</string> <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Mittelgroßer weißer Stern"</string> @@ -249,7 +249,7 @@ <string name="spoken_emoji_1F194" msgid="4903128609556175887">"Quadrat mit \"ID\""</string> <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Quadrat mit \"New\""</string> <string name="spoken_emoji_1F196" msgid="8825160701159634202">"Quadrat mit \"NG\" (No Good)"</string> - <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Quadrat mit \"Ok\""</string> + <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Quadrat mit \"OK\""</string> <string name="spoken_emoji_1F198" msgid="7020298909426960622">"Quadrat mit \"SOS\""</string> <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Quadrat mit \"UP\" und Ausrufezeichen"</string> <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"Quadrat mit \"VS\" (Versus)"</string> @@ -651,7 +651,7 @@ <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Handrückseite mit nach rechts deutendem Zeigefinger"</string> <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Faust"</string> <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Winkende Hand"</string> - <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Handzeichen für \"Ok\""</string> + <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Handzeichen für \"OK\""</string> <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Daumen hoch"</string> <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Daumen runter"</string> <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Klatschende Hände"</string> @@ -1082,7 +1082,7 @@ <!-- no translation found for spoken_emoji_1F644 (446284817942609022) --> <skip /> <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Gesicht mit Nicht in Ordnung-Geste"</string> - <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Gesicht mit Ok-Geste"</string> + <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Gesicht mit OK-Geste"</string> <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Sich tief verneigende Person"</string> <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Nichts-Sehen-Affe"</string> <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Nichts-Hören-Affe"</string> diff --git a/java/res/values-de/strings-letter-descriptions.xml b/java/res/values-de/strings-letter-descriptions.xml index 78cf742303f03e3b8eb03d8c577fc3ebff1fdf9e..92b1d6c4f1e08340492101162922dc1d3dfa9d6e 100644 --- a/java/res/values-de/strings-letter-descriptions.xml +++ b/java/res/values-de/strings-letter-descriptions.xml @@ -199,7 +199,7 @@ <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso-Zeichen"</string> <string name="spoken_symbol_2105" msgid="7289404939366976829">"Per Adresse"</string> <string name="spoken_symbol_2192" msgid="827804523596125414">"Pfeil nach rechts"</string> - <string name="spoken_symbol_2193" msgid="2659541693445985717">"Pfeil nach unten"</string> + <string name="spoken_symbol_2193" msgid="2659541693445985717">"Abwärtspfeil"</string> <string name="spoken_symbol_2205" msgid="4457188084269117343">"Leere Menge"</string> <string name="spoken_symbol_2206" msgid="4856786565708380687">"Differenzzeichen"</string> <string name="spoken_symbol_2264" msgid="5092061257745123554">"Kleiner/gleich"</string> diff --git a/java/res/values-de/strings-talkback-descriptions.xml b/java/res/values-de/strings-talkback-descriptions.xml index 17e9c946ad2457b41ac8cd0df0deed88668e7ba8..7580678ec464f3dca95fc5f830374a0ad82bd468 100644 --- a/java/res/values-de/strings-talkback-descriptions.xml +++ b/java/res/values-de/strings-talkback-descriptions.xml @@ -29,9 +29,9 @@ <string name="spoken_description_unknown" msgid="5139930082759824442">"Unbekanntes Zeichen"</string> <string name="spoken_description_shift" msgid="7209798151676638728">"Umschalttaste"</string> <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Weitere Symbole"</string> - <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift-Taste"</string> + <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Umschalttaste-Taste"</string> <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symbole"</string> - <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift-Taste"</string> + <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Umschalttaste-Taste"</string> <string name="spoken_description_delete" msgid="3878902286264983302">"Löschen"</string> <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symbole"</string> <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Buchstaben"</string> diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml index c81bb69f8cbda9cc45d038ca107328ef3da36f72..6de763aaa4450d183f651441d3b2854d570300fb 100644 --- a/java/res/values-de/strings.xml +++ b/java/res/values-de/strings.xml @@ -98,7 +98,7 @@ <string name="switch_accounts" msgid="3321216593719006162">"Konto wechseln"</string> <string name="no_accounts_selected" msgid="2073821619103904330">"Keine Konten ausgewählt"</string> <string name="account_selected" msgid="2846876462199625974">"Momentan wird <xliff:g id="EMAIL_ADDRESS">%1$s</xliff:g> verwendet."</string> - <string name="account_select_ok" msgid="9141195141763227797">"Ok"</string> + <string name="account_select_ok" msgid="9141195141763227797">"OK"</string> <string name="account_select_cancel" msgid="5181012062618504340">"Abbrechen"</string> <string name="account_select_sign_out" msgid="3299651159390187933">"Abmelden"</string> <string name="account_select_title" msgid="6279711684772922649">"Zu verwendendes Konto auswählen"</string> @@ -195,7 +195,7 @@ <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"Wortgruppe"</string> <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"Weitere Optionen"</string> <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Weniger Optionen"</string> - <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"Ok"</string> + <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"OK"</string> <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Wort:"</string> <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Tastaturkürzel:"</string> <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"Sprache:"</string> diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml index 377f4edd2832e0ed7e2538a29eb1e2bd4b4d56db..e894b392ea91927d1b89c8e8dd5cc448f3f3f63e 100644 --- a/java/res/values-el/strings.xml +++ b/java/res/values-el/strings.xml @@ -158,8 +158,8 @@ <string name="setup_finish_action" msgid="276559243409465389">"ΟλοκληÏώθηκε"</string> <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Εμφάνιση εικονιδίου εφαÏμογής"</string> <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Εμφάνιση εικονιδίου εφαÏμογής στο Ï€ÏόγÏαμμα εκκίνησης"</string> - <string name="app_name" msgid="6320102637491234792">"ΠαÏοχÎας λεξικοÏ"</string> - <string name="dictionary_provider_name" msgid="3027315045397363079">"ΠαÏοχÎας λεξικοÏ"</string> + <string name="app_name" msgid="6320102637491234792">"ΠάÏοχος λεξικοÏ"</string> + <string name="dictionary_provider_name" msgid="3027315045397363079">"ΠάÏοχος λεξικοÏ"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"ΥπηÏεσία λεξικοÏ"</string> <string name="download_description" msgid="6014835283119198591">"ΕνημÎÏωση πληÏοφοÏιών λεξικοÏ"</string> <string name="dictionary_settings_title" msgid="8091417676045693313">"Î Ïόσθετα λεξικά"</string> diff --git a/java/res/values-en-rAU/strings-emoji-descriptions.xml b/java/res/values-en-rAU/strings-emoji-descriptions.xml index b3eb4cc17ad34530c34c94ad19d778eec7cf420f..695dcfe1b5c625969f3495ba4e1f06211732820d 100644 --- a/java/res/values-en-rAU/strings-emoji-descriptions.xml +++ b/java/res/values-en-rAU/strings-emoji-descriptions.xml @@ -1151,7 +1151,7 @@ <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Children crossing"</string> <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Mens symbol"</string> <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Womens symbol"</string> - <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Restroom"</string> + <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Toilet"</string> <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Baby symbol"</string> <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Toilet"</string> <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Water closet"</string> diff --git a/java/res/values-en-rAU/strings.xml b/java/res/values-en-rAU/strings.xml index 95ed54a7f8d25b1218ccaebc9603a5d5fa9c9eda..74b7e1fc4cb4d07342081ab7c282e4ce9f329084 100644 --- a/java/res/values-en-rAU/strings.xml +++ b/java/res/values-en-rAU/strings.xml @@ -44,7 +44,7 @@ <string name="clear_sync_data_ok" msgid="613104067705915132">"Delete"</string> <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancel"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Your personal dictionary will be synced and backed up to Google servers. The statistical information of word frequency may be collected to help improve our products. The collection and usage of all the information will be compliant with "<a href="https://www.google.com/policies/privacy">"Google\'s Privacy Policy"</a>"."</string> - <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google Account to this device to enable this feature"</string> + <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google account to this device to enable this feature"</string> <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sync is not available for devices with Google Apps for Business accounts"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Switch to other input methods"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Language switch key also covers other input methods"</string> diff --git a/java/res/values-en-rCA/strings-emoji-descriptions.xml b/java/res/values-en-rCA/strings-emoji-descriptions.xml index b3eb4cc17ad34530c34c94ad19d778eec7cf420f..952c27be6018c6c4ff29cc3a907f9bd04bc2dcb8 100644 --- a/java/res/values-en-rCA/strings-emoji-descriptions.xml +++ b/java/res/values-en-rCA/strings-emoji-descriptions.xml @@ -188,7 +188,7 @@ <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Fuel pump"</string> <string name="spoken_emoji_2702" msgid="4005741160717451912">"Black scissors"</string> <string name="spoken_emoji_2705" msgid="164605766946697759">"White heavy tick"</string> - <string name="spoken_emoji_2708" msgid="7153840886849268988">"Aeroplane"</string> + <string name="spoken_emoji_2708" msgid="7153840886849268988">"Airplane"</string> <string name="spoken_emoji_2709" msgid="2217319160724311369">"Envelope"</string> <string name="spoken_emoji_270A" msgid="508347232762319473">"Raised fist"</string> <string name="spoken_emoji_270B" msgid="6640562128327753423">"Raised hand"</string> @@ -1151,7 +1151,7 @@ <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Children crossing"</string> <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Mens symbol"</string> <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Womens symbol"</string> - <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Restroom"</string> + <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Toilet"</string> <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Baby symbol"</string> <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Toilet"</string> <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Water closet"</string> diff --git a/java/res/values-en-rCA/strings.xml b/java/res/values-en-rCA/strings.xml index 95ed54a7f8d25b1218ccaebc9603a5d5fa9c9eda..74b7e1fc4cb4d07342081ab7c282e4ce9f329084 100644 --- a/java/res/values-en-rCA/strings.xml +++ b/java/res/values-en-rCA/strings.xml @@ -44,7 +44,7 @@ <string name="clear_sync_data_ok" msgid="613104067705915132">"Delete"</string> <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancel"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Your personal dictionary will be synced and backed up to Google servers. The statistical information of word frequency may be collected to help improve our products. The collection and usage of all the information will be compliant with "<a href="https://www.google.com/policies/privacy">"Google\'s Privacy Policy"</a>"."</string> - <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google Account to this device to enable this feature"</string> + <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google account to this device to enable this feature"</string> <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sync is not available for devices with Google Apps for Business accounts"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Switch to other input methods"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Language switch key also covers other input methods"</string> diff --git a/java/res/values-en-rGB/strings-emoji-descriptions.xml b/java/res/values-en-rGB/strings-emoji-descriptions.xml index b3eb4cc17ad34530c34c94ad19d778eec7cf420f..695dcfe1b5c625969f3495ba4e1f06211732820d 100644 --- a/java/res/values-en-rGB/strings-emoji-descriptions.xml +++ b/java/res/values-en-rGB/strings-emoji-descriptions.xml @@ -1151,7 +1151,7 @@ <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Children crossing"</string> <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Mens symbol"</string> <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Womens symbol"</string> - <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Restroom"</string> + <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Toilet"</string> <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Baby symbol"</string> <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Toilet"</string> <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Water closet"</string> diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml index 95ed54a7f8d25b1218ccaebc9603a5d5fa9c9eda..74b7e1fc4cb4d07342081ab7c282e4ce9f329084 100644 --- a/java/res/values-en-rGB/strings.xml +++ b/java/res/values-en-rGB/strings.xml @@ -44,7 +44,7 @@ <string name="clear_sync_data_ok" msgid="613104067705915132">"Delete"</string> <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancel"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Your personal dictionary will be synced and backed up to Google servers. The statistical information of word frequency may be collected to help improve our products. The collection and usage of all the information will be compliant with "<a href="https://www.google.com/policies/privacy">"Google\'s Privacy Policy"</a>"."</string> - <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google Account to this device to enable this feature"</string> + <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google account to this device to enable this feature"</string> <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sync is not available for devices with Google Apps for Business accounts"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Switch to other input methods"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Language switch key also covers other input methods"</string> diff --git a/java/res/values-en-rIN/strings-emoji-descriptions.xml b/java/res/values-en-rIN/strings-emoji-descriptions.xml index b3eb4cc17ad34530c34c94ad19d778eec7cf420f..695dcfe1b5c625969f3495ba4e1f06211732820d 100644 --- a/java/res/values-en-rIN/strings-emoji-descriptions.xml +++ b/java/res/values-en-rIN/strings-emoji-descriptions.xml @@ -1151,7 +1151,7 @@ <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Children crossing"</string> <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Mens symbol"</string> <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Womens symbol"</string> - <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Restroom"</string> + <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Toilet"</string> <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Baby symbol"</string> <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Toilet"</string> <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Water closet"</string> diff --git a/java/res/values-en-rIN/strings.xml b/java/res/values-en-rIN/strings.xml index 95ed54a7f8d25b1218ccaebc9603a5d5fa9c9eda..74b7e1fc4cb4d07342081ab7c282e4ce9f329084 100644 --- a/java/res/values-en-rIN/strings.xml +++ b/java/res/values-en-rIN/strings.xml @@ -44,7 +44,7 @@ <string name="clear_sync_data_ok" msgid="613104067705915132">"Delete"</string> <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancel"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Your personal dictionary will be synced and backed up to Google servers. The statistical information of word frequency may be collected to help improve our products. The collection and usage of all the information will be compliant with "<a href="https://www.google.com/policies/privacy">"Google\'s Privacy Policy"</a>"."</string> - <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google Account to this device to enable this feature"</string> + <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Please add a Google account to this device to enable this feature"</string> <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sync is not available for devices with Google Apps for Business accounts"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Switch to other input methods"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Language switch key also covers other input methods"</string> diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml index c8df11304fe9cebe00a553bf42d7b98a29e226e0..62c13565878561a1af08e8f06b3d9e8843fa0734 100644 --- a/java/res/values-es-rUS/strings.xml +++ b/java/res/values-es-rUS/strings.xml @@ -43,7 +43,7 @@ <string name="clear_sync_data_confirmation" msgid="2811931135574727678">"Se eliminarán los datos sincronizados de la nube. ¿Estás seguro?"</string> <string name="clear_sync_data_ok" msgid="613104067705915132">"Eliminar"</string> <string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancelar"</string> - <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Se creará una copia de tu diccionario personal y se sincronizará con los servidores de Google. Es posible que se recopile información estadÃstica de la frecuencia de palabras para mejorar nuestros productos. La recopilación y el uso de toda la información se realizará conforme a la "<a href="https://www.google.com/policies/privacy">"PolÃtica de privacidad de Google"</a>"."</string> + <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Se creará una copia de tu diccionario personal y se sincronizará con los servidores de Google. Es posible que se recopile información estadÃstica de la frecuencia de palabras para mejorar nuestros productos. La recopilación y el uso de toda la información se realizará conforme a la "<a href="https://www.google.com/policies/privacy">"PolÃtica de Privacidad de Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Para habilitar esta función, agrega una cuenta de Google."</string> <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinc. no disponible en dispositivos con cuentas de Google Apps for Business"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Otros métodos de entrada"</string> diff --git a/java/res/values-es/strings-talkback-descriptions.xml b/java/res/values-es/strings-talkback-descriptions.xml index 139b637f9360d9d7acc075e204d0bfea8f52b4c7..4f79193d0f69c3f890294abdc8dcb15ad8b3465b 100644 --- a/java/res/values-es/strings-talkback-descriptions.xml +++ b/java/res/values-es/strings-talkback-descriptions.xml @@ -74,7 +74,7 @@ <string name="spoken_descrption_emoji_category_flags" msgid="5971573825866381472">"Banderas"</string> <string name="spoken_descrption_emoji_category_eight_smiley_people" msgid="5682663819532433464">"Sonrisas y personas"</string> <string name="spoken_descrption_emoji_category_eight_animals_nature" msgid="5844950234883716704">"Animales y naturaleza"</string> - <string name="spoken_descrption_emoji_category_eight_food_drink" msgid="6196944764485349650">"Alimentación y bebidas"</string> + <string name="spoken_descrption_emoji_category_eight_food_drink" msgid="6196944764485349650">"Comer y beber"</string> <string name="spoken_descrption_emoji_category_eight_travel_places" msgid="3834085499381434611">"Viajes y sitios"</string> <string name="spoken_descrption_emoji_category_eight_activity" msgid="4795281669042975993">"Actividad"</string> <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticonos"</string> diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml index ced838e83c12bab7b94f312bc5ba99184d939fd9..eab31f51431973f845d844f9ae9c00aed40b4fa6 100644 --- a/java/res/values-es/strings.xml +++ b/java/res/values-es/strings.xml @@ -59,15 +59,15 @@ <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utilizar nombres de contactos para sugerencias y correcciones"</string> <string name="use_personalized_dicts" msgid="5167396352105467626">"Sugerencias personalizadas"</string> <string name="enable_metrics_logging" msgid="5506372337118822837">"Mejorar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> - <string name="use_double_space_period" msgid="8781529969425082860">"Punto y espacio"</string> - <string name="use_double_space_period_summary" msgid="6532892187247952799">"Si tocas dos veces el espacio, se inserta un punto seguido de un espacio"</string> + <string name="use_double_space_period" msgid="8781529969425082860">"Doble espacio inserta punto"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"Insertar un punto seguido de un espacio al tocar dos veces la barra espaciadora"</string> <string name="auto_cap" msgid="1719746674854628252">"Mayúsculas automáticas"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Escribir la primera letra de cada frase en mayúscula"</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"Diccionario personal"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Diccionarios complementarios"</string> <string name="main_dictionary" msgid="4798763781818361168">"Diccionario principal"</string> <string name="prefs_show_suggestions" msgid="8026799663445531637">"Sugerencias de correcciones"</string> - <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Mostrar las palabras sugeridas mientras se escribe"</string> + <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Mostrar las palabras sugeridas mientras escribes"</string> <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Bloquear palabras ofensivas"</string> <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"No sugerir palabras que pueden ser ofensivas"</string> <string name="auto_correction" msgid="7630720885194996950">"Autocorrección"</string> diff --git a/java/res/values-et/strings-emoji-descriptions.xml b/java/res/values-et/strings-emoji-descriptions.xml index 0bd3707c48796a84b56f96c152d5949da1b1b1e5..795c7d0110cf0b4652f8353dbd562790ac17d0af 100644 --- a/java/res/values-et/strings-emoji-descriptions.xml +++ b/java/res/values-et/strings-emoji-descriptions.xml @@ -818,7 +818,7 @@ <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Ajaleht"</string> <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Mobiiltelefon"</string> <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Mobiiiltelefon, millest vasakul on paremnool"</string> - <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Värinarežiim"</string> + <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Vibreerimisrežiim"</string> <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Mobiiltelefon väljas"</string> <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Mobiiltelefonid pole lubatud"</string> <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Antennipostid"</string> diff --git a/java/res/values-et/strings.xml b/java/res/values-et/strings.xml index a0bf57da4dd5a91e32c44413683eb89669a3531b..54de874ef1be5a73b4f5efdbf2f99065d6d9d081 100644 --- a/java/res/values-et/strings.xml +++ b/java/res/values-et/strings.xml @@ -69,7 +69,7 @@ <string name="prefs_show_suggestions" msgid="8026799663445531637">"Kuva korrigeerimise soovitused"</string> <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Kuva sisestamise ajal sõnasoovitusi"</string> <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Blokeeri solvavad sõnad"</string> - <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Ära soovita potentsiaals. solvavaid sõnu"</string> + <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Ära soovita potentsiaalselt solvavaid sõnu"</string> <string name="auto_correction" msgid="7630720885194996950">"Automaatne korrigeerimine"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"Tühik ja kirjavahemärgid parand. autom. kirjavigadega sõnad"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Väljas"</string> diff --git a/java/res/values-eu/strings-emoji-descriptions.xml b/java/res/values-eu/strings-emoji-descriptions.xml index 9af7e6429d23b98a7b6fc0a2f937d9080a917b11..c4a788a0c6d2a23e6744339133a59994d8601826 100644 --- a/java/res/values-eu/strings-emoji-descriptions.xml +++ b/java/res/values-eu/strings-emoji-descriptions.xml @@ -70,8 +70,8 @@ <string name="spoken_emoji_24C2" msgid="3948348737566038470">"M letra larri latindarra zirkulu batean"</string> <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Karratu beltz txikia"</string> <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Karratu zuri txikia"</string> - <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Triangelu beltza gorantz begira"</string> - <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Triangelu beltza ezkerrerantz begira"</string> + <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Triangelu beltza gora begira"</string> + <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Triangelu beltza ezkerrera begira"</string> <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Karratu zuri ertaina"</string> <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Karratu beltz ertaina"</string> <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Karratu zuri txiki-ertaina"</string> @@ -220,14 +220,14 @@ <string name="spoken_emoji_2795" msgid="6563954833786162168">"Gehi ikur lodia"</string> <string name="spoken_emoji_2796" msgid="5990926508250772777">"Ken ikur lodia"</string> <string name="spoken_emoji_2797" msgid="24694184172879174">"Zatiketa ikur lodia"</string> - <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Gezi beltza eskuinerantz"</string> + <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Gezi beltza eskuinera"</string> <string name="spoken_emoji_27B0" msgid="203395646864662198">"Kiribila"</string> <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Kiribil bikoitza"</string> - <string name="spoken_emoji_2934" msgid="9062130477982973457">"Gezia eskuinerantz begira eta gero gorantz biratuta"</string> - <string name="spoken_emoji_2935" msgid="6198710960720232074">"Gezia eskuinerantz begira eta gero beherantz biratuta"</string> - <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Gezi beltza ezkerrerantz"</string> - <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Gezi beltza gorantz"</string> - <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Gezi beltza beherantz"</string> + <string name="spoken_emoji_2934" msgid="9062130477982973457">"Gezia eskuinera begira eta gero gora biratuta"</string> + <string name="spoken_emoji_2935" msgid="6198710960720232074">"Gezia eskuinera begira eta gero behera biratuta"</string> + <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Gezi beltza ezkerrera"</string> + <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Gezi beltza gora"</string> + <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Gezi beltza behera"</string> <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Karratu beltz handia"</string> <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Karratu zuri handia"</string> <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Izar zuri ertaina"</string> @@ -645,10 +645,10 @@ <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Sudurra"</string> <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Ahoa"</string> <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Mihia"</string> - <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Esku zuri baten atzeko aldea, hatz erakuslearekin gorantz seinalatzen duela"</string> - <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Esku zuri baten atzeko aldea, hatz erakuslearekin beherantz seinalatzen duela"</string> - <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Esku zuri baten atzeko aldea, hatz erakuslearekin ezkerrerantz seinalatzen duela"</string> - <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Esku zuri baten atzeko aldea, hatz erakuslearekin eskuinerantz seinalatzen duela"</string> + <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Esku zuri baten atzeko aldea, hatz erakuslearekin gora seinalatzen duela"</string> + <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Esku zuri baten atzeko aldea, hatz erakuslearekin behera seinalatzen duela"</string> + <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Esku zuri baten atzeko aldea, hatz erakuslearekin ezkerrera seinalatzen duela"</string> + <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Esku zuri baten atzeko aldea, hatz erakuslearekin eskuinera seinalatzen duela"</string> <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Ukabila"</string> <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Eskua agurtzen"</string> <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Ados keinua eskuarekin"</string> @@ -752,7 +752,7 @@ <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Lore zuria"</string> <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Ehun puntuen ikurra"</string> <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Diru-poltsa"</string> - <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Moneta-trukaketa"</string> + <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Dibisa-trukaketa"</string> <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Dolarraren ikur lodia"</string> <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Kreditu-txartela"</string> <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Billetea yenaren ikurrarekin"</string> @@ -833,7 +833,7 @@ <skip /> <!-- no translation found for spoken_emoji_1F4FF (6566102135671766103) --> <skip /> - <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Elkar gurutzatzen diren geziak eskuinerantz"</string> + <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Elkar gurutzatzen diren geziak eskuinera"</string> <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Erlojuaren noranzkoan doazen zirkulu irekiko gezi horizontalak"</string> <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Erlojuaren noranzkoan doazen zirkulu irekiko gezi horizontalak, 1 zenbakiarekin"</string> <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Erlojuaren noranzkoan doazen zirkulu irekiko gezi bertikalak"</string> @@ -846,8 +846,8 @@ <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Bozgorailua, hiru soinu-uhinekin"</string> <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Bateria"</string> <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Entxufe elektrikoa"</string> - <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Lupa ezkerrerantz"</string> - <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Lupa eskuinerantz"</string> + <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Lupa ezkerrera"</string> + <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Lupa eskuinera"</string> <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Giltzarrapoa eta bolaluma"</string> <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Giltzarrapoa itxita eta giltza"</string> <string name="spoken_emoji_1F511" msgid="262319867774655688">"Giltza"</string> @@ -858,11 +858,11 @@ <string name="spoken_emoji_1F516" msgid="108097933937925381">"Orri-markatzailea"</string> <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Estekaren ikurra"</string> <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Aukera-botoia"</string> - <string name="spoken_emoji_1F519" msgid="8211189165075445687">"\"Back\" hitza eta ezkerrerantz gezia gainean"</string> - <string name="spoken_emoji_1F51A" msgid="823966751787338892">"\"End\" hitza eta ezkerrerantz gezia gainean"</string> - <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"\"On\" hitza harridura markarekin eta ezkerrerantz gezia gainean"</string> - <string name="spoken_emoji_1F51C" msgid="110609810659826676">"\"Soon\" hitza eta eskuinerantz gezia gainean"</string> - <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"\"Top\" hitza eta gorantz gezia gainean"</string> + <string name="spoken_emoji_1F519" msgid="8211189165075445687">"\"Back\" hitza eta ezkerrera gezia gainean"</string> + <string name="spoken_emoji_1F51A" msgid="823966751787338892">"\"End\" hitza eta ezkerrera gezia gainean"</string> + <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"\"On\" hitza harridura markarekin eta ezkerrera gezia gainean"</string> + <string name="spoken_emoji_1F51C" msgid="110609810659826676">"\"Soon\" hitza eta eskuinera gezia gainean"</string> + <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"\"Top\" hitza eta gora gezia gainean"</string> <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"Hemezortzi urte beherakorik ez ikurra"</string> <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Hamar tekla"</string> <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Letra larri latindarren idazketa-ikurra"</string> @@ -1021,7 +1021,7 @@ <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Aurpegi irribarretsua poztasun-begiekin"</string> <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Janari gozoa dastatzearen aurpegia"</string> <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Lasaitasun-aurpegia"</string> - <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Aurpegi irribarretsua bihotz formako begiekin"</string> + <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Aurpegi irribarretsua bihotz-formako begiekin"</string> <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Aurpegi irribarretsua betaurrekoekin"</string> <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Konplizitate irribarreko aurpegia"</string> <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Aurpegi neutroa"</string> diff --git a/java/res/values-eu/strings.xml b/java/res/values-eu/strings.xml index b63d83e8686724d20afe5d55899566470dd149e8..dfb2c1ca90e4e5ebf85ae373cd98413ce45ff0d2 100644 --- a/java/res/values-eu/strings.xml +++ b/java/res/values-eu/strings.xml @@ -43,7 +43,7 @@ <string name="clear_sync_data_confirmation" msgid="2811931135574727678">"Datuak hodeitik ezabatuko dira. Ziur hori egin nahi duzula?"</string> <string name="clear_sync_data_ok" msgid="613104067705915132">"Ezabatu"</string> <string name="cloud_sync_cancel" msgid="5877481252150919037">"Utzi"</string> - <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Hiztegi pertsonalizatua sinkronizatu egingo da eta Google zerbitzarietan gordeko da babeskopia gisa. Hitzak erabiltzeko maiztasunari buruzko estatistikak bil daitezke produktuak hobetzen laguntzeko. Informazioaren bilketak eta erabilerak "<a href="https://www.google.com/policies/privacy">"Google Pribatutasun-gidalerroak"</a>" gordeko ditu uneoro."</string> + <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Hiztegi pertsonalizatua sinkronizatu egingo da eta Google zerbitzarietan gordeko da babeskopia gisa. Hitzak erabiltzeko maiztasunari buruzko estatistikak bil daitezke produktuak hobetzen laguntzeko. Informazioaren bilketak eta erabilerak "<a href="https://www.google.com/policies/privacy">"Google Pribatutasun-gidalerroak"</a>" gordeko ditu une oro."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Eginbidea gaitzeko, gehitu Google kontua gailuan"</string> <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinkronizazioa ez dago erabilgarri Google Apps for Business kontuak dituzten gailuetan"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Aldatu idazketa-metodoa"</string> diff --git a/java/res/values-fa/strings-emoji-descriptions.xml b/java/res/values-fa/strings-emoji-descriptions.xml index 747bf1a977e30ba005221aad652ea433cf5cbc9c..35139efb718fc91118067ab419a17556322d4f27 100644 --- a/java/res/values-fa/strings-emoji-descriptions.xml +++ b/java/res/values-fa/strings-emoji-descriptions.xml @@ -806,7 +806,7 @@ <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"سینی صندوق خروجی"</string> <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"سینی صندوق ورودی"</string> <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"بسته‌بندی"</string> - <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"نماد رایانامه"</string> + <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"نماد ایمیل"</string> <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"پاکت نامه ورودی"</string> <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"پاکت نامه با پیکان‌های رو به پایین در بالا"</string> <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"صندوق پستی بسته شده با پرچم پایین آمده"</string> diff --git a/java/res/values-fa/strings-talkback-descriptions.xml b/java/res/values-fa/strings-talkback-descriptions.xml index 12b55be65f31ade6de528d6d17b3e2e490990265..4613d32fd461e1a45245fd8a44cbef590a822de6 100644 --- a/java/res/values-fa/strings-talkback-descriptions.xml +++ b/java/res/values-fa/strings-talkback-descriptions.xml @@ -58,7 +58,7 @@ <string name="announce_keyboard_mode" msgid="6698257917367823205">"در Øال نمایش صÙØه‌کلید <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string> <string name="keyboard_mode_date" msgid="6597407244976713364">"تاریخ"</string> <string name="keyboard_mode_date_time" msgid="3642804408726668808">"تاریخ Ùˆ زمان"</string> - <string name="keyboard_mode_email" msgid="1239682082047693644">"رایانامه"</string> + <string name="keyboard_mode_email" msgid="1239682082047693644">"ایمیل"</string> <string name="keyboard_mode_im" msgid="3812086215529493501">"پیام‌رسانی"</string> <string name="keyboard_mode_number" msgid="5395042245837996809">"عدد"</string> <string name="keyboard_mode_phone" msgid="2486230278064523665">"تلÙÙ†"</string> diff --git a/java/res/values-fr-rCA/strings.xml b/java/res/values-fr-rCA/strings.xml index 139e77571c9087fa1a6bd13bf4c4ac41f0e814a5..d1f7e1991b840246aa483abe96c4b67f20546357 100644 --- a/java/res/values-fr-rCA/strings.xml +++ b/java/res/values-fr-rCA/strings.xml @@ -169,7 +169,7 @@ <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Dictionnaire personnel"</string> <string name="dictionary_available" msgid="4728975345815214218">"Dictionnaire disponible"</string> <string name="dictionary_downloading" msgid="2982650524622620983">"Téléchargement en cours…"</string> - <string name="dictionary_installed" msgid="8081558343559342962">"Installé"</string> + <string name="dictionary_installed" msgid="8081558343559342962">"Installés"</string> <string name="dictionary_disabled" msgid="8950383219564621762">"Installé, désactivé"</string> <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Pas de service dico."</string> <string name="no_dictionaries_available" msgid="8039920716566132611">"Aucun dictionnaire"</string> @@ -204,7 +204,7 @@ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Modifier le mot"</string> <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Modifier"</string> <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Supprimer"</string> - <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"Votre dictionnaire personnel ne contient aucun mot. Pour ajouter un mot, touchez le bouton d\'ajout (« + »)."</string> + <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"Votre dictionnaire personnel ne contient aucun mot. Pour ajouter un mot, touchez le bouton d\'ajout (+)."</string> <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Pour toutes les langues"</string> <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Plus de langues…"</string> <string name="user_dict_settings_delete" msgid="110413335187193859">"Supprimer"</string> diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml index f8490b27ed6eabb0162555ca5397dd5e48faefd0..9e42ecc3dda2d0046273c14b70676872f108c0e4 100644 --- a/java/res/values-fr/strings.xml +++ b/java/res/values-fr/strings.xml @@ -74,7 +74,7 @@ <string name="auto_correction_summary" msgid="5625751551134658006">"Corriger l\'orthographe (pression sur barre espace/signes ponctuation)"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Désactiver"</string> <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Simple"</string> - <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Proactive"</string> + <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Forcée"</string> <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Très proactive"</string> <string name="bigram_prediction" msgid="1084449187723948550">"Suggestions pour mot suivant"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"Utiliser le mot précédent pour les suggestions"</string> diff --git a/java/res/values-gl/strings.xml b/java/res/values-gl/strings.xml index 2f5f134a76a71eb41be823f5c54e7439bfa849dd..2a2af99be767ab36ebb543329a1ae18f9817e3ae 100644 --- a/java/res/values-gl/strings.xml +++ b/java/res/values-gl/strings.xml @@ -31,7 +31,7 @@ <string name="settings_screen_appearance" msgid="7358046399111611615">"Aparencia e deseños"</string> <string name="settings_screen_gesture" msgid="8826372746901183556">"Escritura por xestos"</string> <string name="settings_screen_correction" msgid="1616818407747682955">"Corrección de texto"</string> - <string name="settings_screen_advanced" msgid="7472408607625972994">"Opcións avanzadas"</string> + <string name="settings_screen_advanced" msgid="7472408607625972994">"Configuración avanzada"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Activar teclado dividido"</string> <string name="cloud_sync_title" msgid="8579271074443847055">"Sincronización do teclado Google"</string> @@ -157,7 +157,7 @@ <string name="setup_step3_action" msgid="600879797256942259">"Configurar idiomas adicionais"</string> <string name="setup_finish_action" msgid="276559243409465389">"Finalizado"</string> <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Mostrar icona da aplicación"</string> - <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Mostra a icona da aplicación no menú de aplicacións"</string> + <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Mostra a icona da aplicación no Launcher"</string> <string name="app_name" msgid="6320102637491234792">"Fornecedor do dicionario"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"Fornecedor do dicionario"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"Servizo de dicionario"</string> @@ -166,7 +166,7 @@ <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Dicionario dispoñible"</string> <string name="dictionary_settings_summary" msgid="5305694987799824349">"Configuración dos dicionarios"</string> <string name="user_dictionaries" msgid="3582332055892252845">"Dicionarios de usuario"</string> - <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Dicionario de usuario"</string> + <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Dicionario do usuario"</string> <string name="dictionary_available" msgid="4728975345815214218">"Dicionario dispoñible"</string> <string name="dictionary_downloading" msgid="2982650524622620983">"Descarga en curso"</string> <string name="dictionary_installed" msgid="8081558343559342962">"Instalado"</string> diff --git a/java/res/values-hi/strings-action-keys.xml b/java/res/values-hi/strings-action-keys.xml index 01021604466d2b6e197ab5520eeb78056fc54d9d..ff7478fb32812ff1f401d17daf4f5085611e2dd5 100644 --- a/java/res/values-hi/strings-action-keys.xml +++ b/java/res/values-hi/strings-action-keys.xml @@ -21,7 +21,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="label_go_key" msgid="4033615332628671065">"जाà¤à¤‚"</string> - <string name="label_next_key" msgid="5586407279258592635">"आगे"</string> + <string name="label_next_key" msgid="5586407279258592635">"अगला"</string> <string name="label_previous_key" msgid="1421141755779895275">"पीछे जाà¤à¤‚"</string> <string name="label_done_key" msgid="7564866296502630852">"हो गया"</string> <string name="label_send_key" msgid="482252074224462163">"à¤à¥‡à¤œà¥‡à¤‚"</string> diff --git a/java/res/values-hi/strings-talkback-descriptions.xml b/java/res/values-hi/strings-talkback-descriptions.xml index b6b3170fb6073ad2dc2f88ed00f7e916a5b340ad..677dd3695df647a68607404f73c6c3bbcf6802b6 100644 --- a/java/res/values-hi/strings-talkback-descriptions.xml +++ b/java/res/values-hi/strings-talkback-descriptions.xml @@ -45,7 +45,7 @@ <string name="spoken_description_search" msgid="5099937658231911288">"सरà¥à¤š करें"</string> <string name="spoken_description_dot" msgid="5644176501632325560">"डॉट"</string> <string name="spoken_description_language_switch" msgid="6818666779313544553">"à¤à¤¾à¤·à¤¾ सà¥à¤µà¤¿à¤š करें"</string> - <string name="spoken_description_action_next" msgid="431761808119616962">"आगे"</string> + <string name="spoken_description_action_next" msgid="431761808119616962">"आगे बढ़ें"</string> <string name="spoken_description_action_previous" msgid="2919072174697865110">"पीछे जाà¤à¤‚"</string> <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"शिफ़à¥à¤Ÿ सकà¥à¤·à¤® किया गया"</string> <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"कैपà¥à¤¸ लॉक सकà¥à¤·à¤® किया गया"</string> diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml index 3e71425134a82f27acd9baae8850bf5f5968448e..4f6d372f9c74b6e84b267ebd41b58cba34e721af 100644 --- a/java/res/values-hi/strings.xml +++ b/java/res/values-hi/strings.xml @@ -156,7 +156,7 @@ <string name="setup_step3_instruction" msgid="8025981829605426000">"अब आप <xliff:g id="APPLICATION_NAME">%s</xliff:g> के साथ अपने सà¤à¥€ पसंदीदा à¤à¤ªà¥à¤¸ में लिख सकते हैं."</string> <string name="setup_step3_action" msgid="600879797256942259">"अतिरिकà¥à¤¤ à¤à¤¾à¤·à¤¾à¤à¤‚ कॉनà¥à¤«à¤¼à¤¿à¤—र करें"</string> <string name="setup_finish_action" msgid="276559243409465389">"समापà¥à¤¤"</string> - <string name="show_setup_wizard_icon" msgid="5008028590593710830">"à¤à¤ª आइकॉन दिखाà¤à¤‚"</string> + <string name="show_setup_wizard_icon" msgid="5008028590593710830">"à¤à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨ का आइकॉन दिखाà¤à¤‚"</string> <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"लॉनà¥à¤šà¤° में à¤à¤ª आइकॉन दिखाà¤à¤‚"</string> <string name="app_name" msgid="6320102637491234792">"डिकà¥â€à¤¶à¤¨à¤°à¥€ पà¥à¤°à¤¦à¤¾à¤¤à¤¾"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"डिकà¥â€à¤¶à¤¨à¤°à¥€ पà¥à¤°à¤¦à¤¾à¤¤à¤¾"</string> diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml index d5f72c27c535b908b2550d04954c83482bbd5ee7..57c169293218bbfbbb31a3f5484c2364f361edda 100644 --- a/java/res/values-hr/strings.xml +++ b/java/res/values-hr/strings.xml @@ -79,7 +79,7 @@ <string name="bigram_prediction" msgid="1084449187723948550">"Prijedlozi za sljedeću rijeÄ"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"Koristi se prethodnom rijeÄi u izradi prijedloga"</string> <string name="gesture_input" msgid="826951152254563827">"Omogući pisanje kretnjama"</string> - <string name="gesture_input_summary" msgid="9180350639305731231">"Unesi rijeÄ klizanjem preko slova"</string> + <string name="gesture_input_summary" msgid="9180350639305731231">"Unesite rijeÄ klizanjem preko slova"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"Prikaži trag pokreta"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"DinamiÄki plutajući pregled"</string> <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Vidi predloženu rijeÄ tijekom pokreta"</string> diff --git a/java/res/values-hy/strings.xml b/java/res/values-hy/strings.xml index 3d9b39f5a4b00a3fba344b4598396c21d0255a58..5e2568cbfdc13cceb2039272d9933da5f06f5fbf 100644 --- a/java/res/values-hy/strings.xml +++ b/java/res/values-hy/strings.xml @@ -59,10 +59,10 @@ <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Õ•Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¯Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ¶Õ¥Ö€Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨Õ Õ¡Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¶Õ¥Ö€Õ« Ö‡ Õ¸Ö‚Õ²Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€"</string> <string name="use_personalized_dicts" msgid="5167396352105467626">"Ô±Õ¶Õ°Õ¡Õ¿Õ¡Õ¯Õ¡Õ¶Õ¡ÖÕ¾Õ¡Õ® Õ¡Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¶Õ¥Ö€"</string> <string name="enable_metrics_logging" msgid="5506372337118822837">"Ô²Õ¡Ö€Õ¥Õ¬Õ¡Õ¾Õ¥Õ¬ <xliff:g id="APPLICATION_NAME">%s</xliff:g>-Õ¨"</string> - <string name="use_double_space_period" msgid="8781529969425082860">"Ô¿Ö€Õ¯Õ¶Õ¡Õ¢Õ¡ÖÕ¡Õ¯Õ« Õ¾Õ¥Ö€Õ»Õ¡Õ¯Õ¥Õ¿"</string> - <string name="use_double_space_period_summary" msgid="6532892187247952799">"Ô²Õ¡ÖÕ¡Õ¯Õ« Õ½Õ¿Õ¥Õ²Õ¶Õ« Õ¯Ö€Õ¯Õ¶Õ¡Õ¯Õ« Õ°ÕºÕ¸Ö‚Õ´Õ¨ Õ¢Õ¡ÖÕ¡Õ¯Õ«Ö Õ°Õ¥Õ¿Õ¸ Õ¾Õ¥Ö€Õ»Õ¡Õ¯Õ¥Õ¿ Õ§ Õ¤Õ¶Õ¸Ö‚Õ´"</string> + <string name="use_double_space_period" msgid="8781529969425082860">"Ô¿Ö€Õ¯Õ¶Õ¡Õ¢Õ¡ÖÕ¡Õ¿Õ¸Õ¾ Õ¾Õ¥Ö€Õ»Õ¡Õ¯Õ¥Õ¿"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"Ô²Õ¡ÖÕ¡Õ¿Õ« Õ½Õ¿Õ¥Õ²Õ¶Õ« Õ¯Ö€Õ¯Õ¶Õ¡Õ¯Õ« Õ°ÕºÕ¸Ö‚Õ´Õ¨ Õ¢Õ¡ÖÕ¡Õ¿Õ«Ö Õ°Õ¥Õ¿Õ¸ Õ¾Õ¥Ö€Õ»Õ¡Õ¯Õ¥Õ¿ Õ§ Õ¤Õ¶Õ¸Ö‚Õ´"</string> <string name="auto_cap" msgid="1719746674854628252">"Ô±Õ¾Õ¿Õ¸Õ´Õ¡Õ¿ Õ£Õ¬ÕÕ¡Õ¿Õ¡Õ¼Õ¡ÖÕ¸Ö‚Õ´"</string> - <string name="auto_cap_summary" msgid="7934452761022946874">"Ô³Õ¬ÕÕ¡Õ¿Õ¡Õ¼Õ¥Õ¬ ÕµÕ¸Ö‚Ö€Õ¡Ö„Õ¡Õ¶Õ¹ÕµÕ¸Ö‚Ö€ Õ¶Õ¡ÕÕ¡Õ¤Õ¡Õ½Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¡Õ¼Õ¡Õ»Õ«Õ¶ Õ¢Õ¡Õ¼Õ¨"</string> + <string name="auto_cap_summary" msgid="7934452761022946874">"Õ„Õ¥Õ®Õ¡Õ¿Õ¡Õ¼Õ¸Õ¾ Õ£Ö€Õ¥Õ¬ ÕµÕ¸Ö‚Ö€Õ¡Ö„Õ¡Õ¶Õ¹ÕµÕ¸Ö‚Ö€ Õ¶Õ¡ÕÕ¡Õ¤Õ¡Õ½Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¡Õ¼Õ¡Õ»Õ«Õ¶ Õ¢Õ¡Õ¼Õ¨"</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"Ô±Õ¶Õ°Õ¡Õ¿Õ¡Õ¯Õ¡Õ¶ Õ¢Õ¡Õ¼Õ¡Ö€Õ¡Õ¶"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Õ€Õ¡Õ¾Õ¥Õ¬ÕµÕ¡Õ¬ Õ¢Õ¡Õ¼Õ¡Ö€Õ¡Õ¶Õ¶Õ¥Ö€"</string> <string name="main_dictionary" msgid="4798763781818361168">"Õ€Õ«Õ´Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¢Õ¡Õ¼Õ¡Ö€Õ¡Õ¶"</string> @@ -79,7 +79,7 @@ <string name="bigram_prediction" msgid="1084449187723948550">"Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ¢Õ¡Õ¼Õ« Õ¡Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¶Õ¥Ö€"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"Ô±Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¶Õ¥Ö€ Õ¯Õ¡Õ¦Õ´Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¶Õ¡ÕÕ¸Ö€Õ¤ Õ¢Õ¡Õ¼Õ¨"</string> <string name="gesture_input" msgid="826951152254563827">"Õ„Õ«Õ¡ÖÕ¶Õ¥Õ¬ ÕªÕ¥Õ½Õ¿Õ¥Ö€Õ¸Õ¾ Õ´Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¸Ö‚Õ´Õ¨"</string> - <string name="gesture_input_summary" msgid="9180350639305731231">"Õ„Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Ö„ Õ¢Õ¡Õ¼` Õ½Õ¡Õ°Õ¥ÖÕ¶Õ¥Õ¬Õ¸Õ¾ Õ¿Õ¡Õ¼Õ¥Ö€Õ¨"</string> + <string name="gesture_input_summary" msgid="9180350639305731231">"Õ„Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Ö„ Õ¢Õ¡Õ¼` Õ´Õ¡Õ¿Õ¨ Õ¿Õ¡Õ¼Õ«Ö Õ¿Õ¡Õ¼ Õ½Õ¡Õ°Õ¥ÖÕ¶Õ¥Õ¬Õ¸Õ¾"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"Õ‘Õ¸Ö‚ÕµÖ Õ¿Õ¡Õ¬ ÕªÕ¥Õ½Õ¿Õ« Õ°Õ¥Õ¿Õ¡Õ£Õ«Õ®Õ¨"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Ô´Õ«Õ¶Õ¡Õ´Õ«Õ¯ Õ½Õ¡Õ°Õ¸Õ² Õ¶Õ¡ÕÕ¡Õ¿Õ¥Õ½Ö„"</string> <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ÕÕ¥Õ½Õ¥Ö„ Õ¡Õ¼Õ¡Õ»Õ¡Ö€Õ¯Õ¾Õ¡Õ® Õ¢Õ¡Õ¼Õ¨Õ ÕªÕ¥Õ½Õ¿Õ« Õ´Õ«Õ»Õ¸ÖÕ¸Õ¾"</string> @@ -157,7 +157,7 @@ <string name="setup_step3_action" msgid="600879797256942259">"Ô¿Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¬Ö€Õ¡ÖÕ¸Ö‚ÖÕ«Õ¹ Õ¬Õ¥Õ¦Õ¸Ö‚Õ¶Õ¥Ö€Õ¨"</string> <string name="setup_finish_action" msgid="276559243409465389">"Ô±Õ¾Õ¡Ö€Õ¿Õ¾Õ¡Õ®"</string> <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Õ‘Õ¸Ö‚ÕµÖ Õ¿Õ¡Õ¬ Õ°Õ¡Õ¾Õ¥Õ¬Õ¾Õ¡Õ®Õ« ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¡Õ¯Õ¨"</string> - <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ°Õ¡Õ¾Õ¥Õ¬Õ¾Õ¡Õ®Õ« ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¡Õ¯Õ¨ Õ©Õ¸Õ²Õ¡Ö€Õ¯Õ¹Õ¸Ö‚Õ´"</string> + <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ°Õ¡Õ¾Õ¥Õ¬Õ¾Õ¡Õ®Õ« ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¡Õ¯Õ¨ Õ£Õ¸Ö€Õ®Õ¡Ö€Õ¯Õ«Õ¹Õ¸Ö‚Õ´"</string> <string name="app_name" msgid="6320102637491234792">"Ô²Õ¡Õ¼Õ¡Ö€Õ¡Õ¶Õ« Õ´Õ¡Õ¿Õ¡Õ¯Õ¡Ö€Õ¡Ö€"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"Ô²Õ¡Õ¼Õ¡Ö€Õ¡Õ¶Õ« Õ´Õ¡Õ¿Õ¡Õ¯Õ¡Ö€Õ¡Ö€"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"Ô²Õ¡Õ¼Õ¡Ö€Õ¡Õ¶Õ« Õ®Õ¡Õ¼Õ¡ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶"</string> diff --git a/java/res/values-in/strings-emoji-descriptions.xml b/java/res/values-in/strings-emoji-descriptions.xml index f5cc867942b79c593f82de6bd5c17533260e57d8..e3f8d0f56f1d91dda727b1d8d61c5aca8f8f1b42 100644 --- a/java/res/values-in/strings-emoji-descriptions.xml +++ b/java/res/values-in/strings-emoji-descriptions.xml @@ -677,8 +677,8 @@ <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Jejak kaki"</string> <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Siluet patung dada"</string> <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Siluet patung dada"</string> - <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Anak laki-laki"</string> - <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Anak perempuan"</string> + <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Laki-laki"</string> + <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Perempuan"</string> <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Pria"</string> <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Wanita"</string> <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Keluarga"</string> @@ -1082,7 +1082,7 @@ <!-- no translation found for spoken_emoji_1F644 (446284817942609022) --> <skip /> <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Wajah dengan isyarat tidak setuju"</string> - <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Wajah dengan isyarat oke"</string> + <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Wajah dengan gestur oke"</string> <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Orang yang membungkuk dalam-dalam"</string> <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Monyet menutup mata"</string> <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Monyet menutup telinga"</string> diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml index 22a3c808962a4238fde63da521c454fd57611fce..7061c40c52a6047b5efad91f29af870aa475f855 100644 --- a/java/res/values-in/strings.xml +++ b/java/res/values-in/strings.xml @@ -29,7 +29,7 @@ <string name="settings_screen_preferences" msgid="2696713156722014624">"Preferensi"</string> <string name="settings_screen_accounts" msgid="2786418968536696670">"Akun & Privasi"</string> <string name="settings_screen_appearance" msgid="7358046399111611615">"Tampilan & Tata Letak"</string> - <string name="settings_screen_gesture" msgid="8826372746901183556">"Ketikan Isyarat"</string> + <string name="settings_screen_gesture" msgid="8826372746901183556">"Ketikan Gestur"</string> <string name="settings_screen_correction" msgid="1616818407747682955">"Koreksi teks"</string> <string name="settings_screen_advanced" msgid="7472408607625972994">"Lanjutan"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> @@ -43,7 +43,7 @@ <string name="clear_sync_data_confirmation" msgid="2811931135574727678">"Data yang disinkronkan akan dihapus dari awan. Anda yakin?"</string> <string name="clear_sync_data_ok" msgid="613104067705915132">"Hapus"</string> <string name="cloud_sync_cancel" msgid="5877481252150919037">"Batal"</string> - <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Kamus pribadi akan disinkronkan dan dicadangkan ke server Google. Informasi statistik tentang frekuensi kata dapat dikumpulkan untuk membantu menyempurnakan produk kami. Pengumpulan dan penggunaan data tunduk pada "<a href="https://www.google.com/policies/privacy">"Kebijakan Privasi Google"</a>"."</string> + <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Kamus pribadi akan disinkronkan dan di-backup ke server Google. Informasi statistik tentang frekuensi kata dapat dikumpulkan untuk membantu menyempurnakan produk kami. Pengumpulan dan penggunaan data tunduk pada "<a href="https://www.google.com/policies/privacy">"Kebijakan Privasi Google"</a>"."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Tambahkan akun Google ke perangkat ini untuk mengaktifkan fitur ini"</string> <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinkronisasi tidak tersedia untuk perangkat yang memiliki akun Google Apps for Business"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Beralih ke metode masukan lain"</string> @@ -78,12 +78,12 @@ <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Sangat agresif"</string> <string name="bigram_prediction" msgid="1084449187723948550">"Saran kata berikutnya"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"Gunakan kata sebelumnya dalam membuat saran"</string> - <string name="gesture_input" msgid="826951152254563827">"Aktifkan pengetikan isyarat"</string> + <string name="gesture_input" msgid="826951152254563827">"Aktifkan pengetikan gestur"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"Masukkan kata dengan menggeser huruf ke kanan/kiri"</string> - <string name="gesture_preview_trail" msgid="3802333369335722221">"Tampilkan jejak isyarat"</string> + <string name="gesture_preview_trail" msgid="3802333369335722221">"Tampilkan jejak gestur"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Pratinjau mengambang dinamis"</string> <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Lihat kata yang disarankan saat melakukan isyarat"</string> - <string name="gesture_space_aware" msgid="2078291600664682496">"Isyarat frasa"</string> + <string name="gesture_space_aware" msgid="2078291600664682496">"Gesture frasa"</string> <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Masukkan spasi dalam isyarat dengan meluncur ke tombol spasi"</string> <string name="voice_input" msgid="3583258583521397548">"Tombol masukan suara"</string> <string name="voice_input_disabled_summary" msgid="6323489602945135165">"Tidak ada metode masukan suara yang diaktifkan. Periksa setelan Bahasan & masukan."</string> @@ -91,8 +91,8 @@ <string name="language_selection_title" msgid="3666971864764478269">"Bahasa"</string> <string name="help_and_feedback" msgid="5328219371839879161">"Bantuan & masukan"</string> <string name="select_language" msgid="5709487854987078367">"Bahasa"</string> - <string name="hint_add_to_dictionary" msgid="2645988432867033007">"Ketuk sekali lagi untuk menyimpan"</string> - <string name="hint_add_to_dictionary_without_word" msgid="6710206006427574423">"Ketuk di sini untuk menyimpan"</string> + <string name="hint_add_to_dictionary" msgid="2645988432867033007">"Tap sekali lagi untuk menyimpan"</string> + <string name="hint_add_to_dictionary_without_word" msgid="6710206006427574423">"Tap di sini untuk menyimpan"</string> <string name="has_dictionary" msgid="6071847973466625007">"Kamus yang tersedia"</string> <string name="keyboard_layout" msgid="8451164783510487501">"Tema keyboard"</string> <string name="switch_accounts" msgid="3321216593719006162">"Beralih akun"</string> @@ -141,7 +141,7 @@ <string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"Tombol Alt fisik menampilkan palet emoji"</string> <string name="button_default" msgid="3988017840431881491">"Default"</string> <string name="setup_welcome_title" msgid="6112821709832031715">"Selamat datang di <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> - <string name="setup_welcome_additional_description" msgid="8150252008545768953">"dengan Ketikan Isyarat"</string> + <string name="setup_welcome_additional_description" msgid="8150252008545768953">"dengan Ketikan Gestur"</string> <string name="setup_start_action" msgid="8936036460897347708">"Memulai"</string> <string name="setup_next_action" msgid="371821437915144603">"Langkah berikutnya"</string> <string name="setup_steps_title" msgid="6400373034871816182">"Menyiapkan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> @@ -204,7 +204,7 @@ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Edit kata"</string> <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Edit"</string> <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Hapus"</string> - <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"Tidak ada kata-kata dalam kamus pengguna. Untuk menambahkan kata, ketuk tombol Tambahkan (+)."</string> + <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"Tidak ada kata-kata dalam kamus pengguna. Untuk menambahkan kata, tap tombol Tambahkan (+)."</string> <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Untuk semua bahasa"</string> <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Bahasa lainnya..."</string> <string name="user_dict_settings_delete" msgid="110413335187193859">"Hapus"</string> diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml index 73a2961967423781ade21489339b131a55f67993..a44b2fb36af78a04cebe32ef1dba015bbdd86904 100644 --- a/java/res/values-it/strings.xml +++ b/java/res/values-it/strings.xml @@ -44,7 +44,7 @@ <string name="clear_sync_data_ok" msgid="613104067705915132">"Elimina"</string> <string name="cloud_sync_cancel" msgid="5877481252150919037">"Annulla"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Il tuo dizionario personale verrà sincronizzato sui server di Google e ne verrà effettuato il backup. Potrebbero essere raccolte informazioni statistiche relative alla frequenza delle parole per migliorare i nostri prodotti. La raccolta e l\'utilizzo di tutte le informazioni saranno conformi alle "<a href="https://www.google.com/policies/privacy">"Norme sulla privacy di Google"</a>"."</string> - <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Per attivare la funzione, aggiungi un account Google al dispositivo"</string> + <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Per attivare la funzione, aggiungi un Account Google al dispositivo"</string> <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"La sincronizzazione non è disponibile per i dispositivi con account Google Apps for Business"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Altri metodi immissione"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Il tasto per cambiare lingua offre altri metodi di immissione"</string> @@ -157,7 +157,7 @@ <string name="setup_step3_action" msgid="600879797256942259">"Configura altre lingue"</string> <string name="setup_finish_action" msgid="276559243409465389">"Terminato"</string> <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Mostra icona app"</string> - <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Mostra l\'icona dell\'app in Avvio applicazioni"</string> + <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Mostra l\'icona dell\'app in Avvio app"</string> <string name="app_name" msgid="6320102637491234792">"Dictionary Provider"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"Dictionary Provider"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"Servizio dizionario"</string> diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml index 0289d83d599692c5322bd7ee449e9ba20f53473d..2fc113333f4bd61e049e44fdc5a0ef78694f6efb 100644 --- a/java/res/values-ja/strings.xml +++ b/java/res/values-ja/strings.xml @@ -23,7 +23,7 @@ <string name="english_ime_input_options" msgid="3909945612939668554">"入力オプション"</string> <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"連絡先åã®æ¤œç´¢"</string> <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"スペルãƒã‚§ãƒƒã‚«ãƒ¼ã§ã¯é€£çµ¡å…ˆãƒªã‚¹ãƒˆã®ã‚¨ãƒ³ãƒˆãƒªã‚’使用ã—ã¾ã™"</string> - <string name="vibrate_on_keypress" msgid="5258079494276955460">"ã‚ーæ“作ãƒã‚¤ãƒ–"</string> + <string name="vibrate_on_keypress" msgid="5258079494276955460">"ã‚ーæ“作ãƒã‚¤ãƒ–レーション"</string> <string name="sound_on_keypress" msgid="6093592297198243644">"ã‚ーæ“作音"</string> <string name="popup_on_keypress" msgid="123894815723512944">"ã‚ー押下時ãƒãƒƒãƒ—アップ"</string> <string name="settings_screen_preferences" msgid="2696713156722014624">"è¨å®š"</string> @@ -36,7 +36,7 @@ <string name="enable_split_keyboard" msgid="4177264923999493614">"スプリットã‚ーボードを有効ã«ã™ã‚‹"</string> <string name="cloud_sync_title" msgid="8579271074443847055">"Googleã‚ーボードã®åŒæœŸ"</string> <string name="cloud_sync_summary" msgid="7684887161145650857">"åŒæœŸã¯ON"</string> - <string name="cloud_sync_summary_disabled" msgid="4553338970382825796">"デãƒã‚¤ã‚¹é–“ã§å˜èªžãƒªã‚¹ãƒˆã‚’åŒæœŸã™ã‚‹"</string> + <string name="cloud_sync_summary_disabled" msgid="4553338970382825796">"端末間ã§å˜èªžãƒªã‚¹ãƒˆã‚’åŒæœŸã™ã‚‹"</string> <string name="sync_now_title" msgid="3088838136743277721">"今ã™ãåŒæœŸ"</string> <string name="clear_sync_data_title" msgid="8582001557037069154">"クラウドデータã®å‰Šé™¤"</string> <string name="clear_sync_data_summary" msgid="993477139012576584">"Googleã‹ã‚‰åŒæœŸãƒ‡ãƒ¼ã‚¿ã‚’削除ã™ã‚‹"</string> @@ -44,8 +44,8 @@ <string name="clear_sync_data_ok" msgid="613104067705915132">"削除"</string> <string name="cloud_sync_cancel" msgid="5877481252150919037">"ã‚ャンセル"</string> <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"å˜èªžãƒªã‚¹ãƒˆãŒGoogleã®ã‚µãƒ¼ãƒãƒ¼ã¨åŒæœŸã•ã‚Œã€ã‚µãƒ¼ãƒãƒ¼ã«ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã•ã‚Œã¾ã™ã€‚Googleã®ã‚µãƒ¼ãƒ“ス改善を目的ã¨ã—ã¦ã€èªžå¥ã®ä½¿ç”¨é »åº¦ã«é–¢ã™ã‚‹çµ±è¨ˆæƒ…å ±ãŒåŽé›†ã•ã‚Œã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚åŽé›†ã—ãŸæƒ…å ±ãŠã‚ˆã³ãã®åˆ©ç”¨æ–¹æ³•ã¯ã€"<a href="https://www.google.com/policies/privacy">"Googleプライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼"</a>"ã«æº–æ‹ ã—ã¾ã™ã€‚"</string> - <string name="add_account_to_enable_sync" msgid="7836932571852055265">"ã“ã®æ©Ÿèƒ½ã‚’有効ã«ã™ã‚‹ã«ã¯ãƒ‡ãƒã‚¤ã‚¹ã«Googleã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’è¿½åŠ ã—ã¦ãã ã•ã„"</string> - <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"åŒæœŸã¯ã€Google Apps for Businessアカウントã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯ã”利用ã„ãŸã ã‘ã¾ã›ã‚“"</string> + <string name="add_account_to_enable_sync" msgid="7836932571852055265">"ã“ã®æ©Ÿèƒ½ã‚’有効ã«ã™ã‚‹ã«ã¯ç«¯æœ«ã«Googleã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’è¿½åŠ ã—ã¦ãã ã•ã„"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"åŒæœŸã¯ã€Google Apps for Businessアカウントã®ç«¯æœ«ã§ã¯ã”利用ã„ãŸã ã‘ã¾ã›ã‚“"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ä»–ã®å…¥åŠ›æ–¹æ³•ã«åˆ‡ã‚Šæ›¿ãˆ"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"言語切り替ãˆã‚ーã¯ä»–ã®å…¥åŠ›æ–¹æ³•ã«ã‚‚対応ã—ã¦ã„ã¾ã™"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"言語切り替ãˆã‚ー"</string> @@ -134,7 +134,7 @@ <string name="enable" msgid="5031294444630523247">"有効ã«ã™ã‚‹"</string> <string name="not_now" msgid="6172462888202790482">"後ã§è¡Œã†"</string> <string name="custom_input_style_already_exists" msgid="8008728952215449707">"åŒã˜å…¥åŠ›ã‚¹ã‚¿ã‚¤ãƒ«ãŒæ—¢ã«å˜åœ¨ã—ã¾ã™: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string> - <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"ã‚ーæ“作ãƒã‚¤ãƒ–ã®æŒ¯å‹•æ™‚é–“"</string> + <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"ã‚ーæ“作ãƒã‚¤ãƒ–レーションã®æŒ¯å‹•æ™‚é–“"</string> <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"ã‚ーæ“作音ã®éŸ³é‡"</string> <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"ã‚ーã®é•·æŠ¼ã—時間"</string> <string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"物ç†ã‚ーボードã®çµµæ–‡å—"</string> @@ -146,7 +146,7 @@ <string name="setup_next_action" msgid="371821437915144603">"次ã®ã‚¹ãƒ†ãƒƒãƒ—"</string> <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ã®è¨å®š"</string> <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ã®æœ‰åŠ¹åŒ–"</string> - <string name="setup_step1_instruction" msgid="4295448056733329661">"[言語ã¨å…¥åŠ›] è¨å®šã§ã€Œ<xliff:g id="APPLICATION_NAME">%s</xliff:g>ã€ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’オンã«ã—ã¦ãã ã•ã„。ã“ã‚Œã§ã€ã“ã®ãƒ‡ãƒã‚¤ã‚¹ã§åˆ©ç”¨ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚"</string> + <string name="setup_step1_instruction" msgid="4295448056733329661">"[言語ã¨å…¥åŠ›] è¨å®šã§ã€Œ<xliff:g id="APPLICATION_NAME">%s</xliff:g>ã€ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’オンã«ã—ã¦ãã ã•ã„。ã“ã‚Œã§ã€ã“ã®ç«¯æœ«ã§åˆ©ç”¨ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚"</string> <string name="setup_step1_finished_instruction" msgid="8701441895377434947">"[言語ã¨å…¥åŠ›] è¨å®šã§ã€Œ<xliff:g id="APPLICATION_NAME">%s</xliff:g>ã€ã¯æ—¢ã«æœ‰åŠ¹ã«ãªã£ã¦ã„ã‚‹ãŸã‚ã€ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã¯å®Œäº†ã§ã™ã€‚次ã®ã‚¹ãƒ†ãƒƒãƒ—ã«é€²ã‚“ã§ãã ã•ã„。"</string> <string name="setup_step1_action" msgid="4366513534999901728">"è¨å®šã§ã®æœ‰åŠ¹åŒ–"</string> <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ã¸ã®åˆ‡ã‚Šæ›¿ãˆ"</string> @@ -183,7 +183,7 @@ <string name="install_dict" msgid="180852772562189365">"インストール"</string> <string name="cancel_download_dict" msgid="7843340278507019303">"ã‚ャンセル"</string> <string name="delete_dict" msgid="756853268088330054">"削除"</string> - <string name="should_download_over_metered_prompt" msgid="6737084685073734292">"ãŠä½¿ã„ã®ãƒ¢ãƒã‚¤ãƒ«ãƒ‡ãƒã‚¤ã‚¹ã§é¸æŠžã—ãŸè¨€èªžã«ã¯å¯¾å¿œã™ã‚‹è¾žæ›¸ãŒã‚ã‚Šã¾ã™ã€‚<br/>入力機能をより快é©ã«ã”利用ã„ãŸã ããŸã‚ã€<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>ã®è¾žæ›¸ã®<b>ダウンãƒãƒ¼ãƒ‰</b>ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚<br/> <br/>3G ã‚’ã”利用ã®å ´åˆã€ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã«è¦ã™ã‚‹æ™‚間㯠1~2 分ã§ã™ã€‚<b>定é¡åˆ¶ã®ãƒ‡ãƒ¼ã‚¿ãƒ—ラン</b>ã‚’ã”利用ã§ãªã„å ´åˆã¯é€šä¿¡æ–™ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚<br/>ã”利用ã®ãƒ‡ãƒ¼ã‚¿ãƒ—ランãŒä¸æ˜Žãªå ´åˆã¯ã€è‡ªå‹•çš„ã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ãŒé–‹å§‹ã•ã‚Œã‚‹ Wi-Fi 接続ã®ã”利用をãŠã™ã™ã‚ã—ã¾ã™ã€‚<br/> <br/>ヒント: 辞書ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã‚„削除ã¯ã€ãŠä½¿ã„ã®ãƒ¢ãƒã‚¤ãƒ«ãƒ‡ãƒã‚¤ã‚¹ã® [<b>è¨å®š</b>] メニュー㮠[<b>言語ã¨å…¥åŠ›</b>] ã§è¡Œãˆã¾ã™ã€‚"</string> + <string name="should_download_over_metered_prompt" msgid="6737084685073734292">"ãŠä½¿ã„ã®ãƒ¢ãƒã‚¤ãƒ«ç«¯æœ«ã§é¸æŠžã—ãŸè¨€èªžã«ã¯å¯¾å¿œã™ã‚‹è¾žæ›¸ãŒã‚ã‚Šã¾ã™ã€‚<br/>入力機能をより快é©ã«ã”利用ã„ãŸã ããŸã‚ã€<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>ã®è¾žæ›¸ã®<b>ダウンãƒãƒ¼ãƒ‰</b>ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚<br/> <br/>3G ã‚’ã”利用ã®å ´åˆã€ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã«è¦ã™ã‚‹æ™‚間㯠1~2 分ã§ã™ã€‚<b>定é¡åˆ¶ã®ãƒ‡ãƒ¼ã‚¿ãƒ—ラン</b>ã‚’ã”利用ã§ãªã„å ´åˆã¯é€šä¿¡æ–™ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚<br/>ã”利用ã®ãƒ‡ãƒ¼ã‚¿ãƒ—ランãŒä¸æ˜Žãªå ´åˆã¯ã€è‡ªå‹•çš„ã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ãŒé–‹å§‹ã•ã‚Œã‚‹ Wi-Fi 接続ã®ã”利用をãŠã™ã™ã‚ã—ã¾ã™ã€‚<br/> <br/>ヒント: 辞書ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã‚„削除ã¯ã€ãŠä½¿ã„ã®ãƒ¢ãƒã‚¤ãƒ«ç«¯æœ«ã® [<b>è¨å®š</b>] メニュー㮠[<b>言語ã¨å…¥åŠ›</b>] ã§è¡Œãˆã¾ã™ã€‚"</string> <string name="download_over_metered" msgid="1643065851159409546">"今ã™ãダウンãƒãƒ¼ãƒ‰ï¼ˆ<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string> <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi経由ã§ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰"</string> <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>ã®è¾žæ›¸ã‚’利用ã§ãã¾ã™"</string> diff --git a/java/res/values-kk/strings-emoji-descriptions.xml b/java/res/values-kk/strings-emoji-descriptions.xml index 989c645954d758a8e4542af70cc0d4dd11ea8ef3..8d6c438d0c153cbed3a822531a7d08d644fc442d 100644 --- a/java/res/values-kk/strings-emoji-descriptions.xml +++ b/java/res/values-kk/strings-emoji-descriptions.xml @@ -249,7 +249,7 @@ <string name="spoken_emoji_1F194" msgid="4903128609556175887">"Шаршыдағы ID"</string> <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Шаршыдағы «new»"</string> <string name="spoken_emoji_1F196" msgid="8825160701159634202">"Шаршыдағы «N G»"</string> - <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Шаршыдағы «OK»"</string> + <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Шаршыдағы «Жарайды»"</string> <string name="spoken_emoji_1F198" msgid="7020298909426960622">"Шаршыдағы «SOS»"</string> <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Шаршыдағы «Up» және леп белгіÑÑ–"</string> <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"Шаршыдағы «vs»"</string> diff --git a/java/res/values-kk/strings.xml b/java/res/values-kk/strings.xml index 275300daab493550923ae50d827ba26d2a4839bc..b7da51b1c2bd16f9be42dd446c68792ff0de171c 100644 --- a/java/res/values-kk/strings.xml +++ b/java/res/values-kk/strings.xml @@ -31,7 +31,7 @@ <string name="settings_screen_appearance" msgid="7358046399111611615">"Сыртқы түр және орналаÑулар"</string> <string name="settings_screen_gesture" msgid="8826372746901183556">"Қимыл арқылы теру"</string> <string name="settings_screen_correction" msgid="1616818407747682955">"Мәтінді түзету"</string> - <string name="settings_screen_advanced" msgid="7472408607625972994">"Кеңейтілген"</string> + <string name="settings_screen_advanced" msgid="7472408607625972994">"ҚоÑымша"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Тақырып"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Бөлінген пернетақтаны қоÑу"</string> <string name="cloud_sync_title" msgid="8579271074443847055">"Google пернетақтаÑын Ñинхрондау"</string> @@ -54,21 +54,21 @@ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"ÐšÑ–Ð´Ñ–Ñ€Ñ–Ñ Ð¶Ð¾Ò›"</string> <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Әдепкі"</string> <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>мÑ"</string> - <string name="settings_system_default" msgid="6268225104743331821">"Жүйе әдепкіÑÑ–"</string> + <string name="settings_system_default" msgid="6268225104743331821">"Жүйенің әдепкі мәні"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"Контакт аттарын Ò±Ñыну"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Ò°ÑыныÑтар мен түзетулер үшін контакт аттарын пайдалану"</string> <string name="use_personalized_dicts" msgid="5167396352105467626">"Жекелендірілген Ò±ÑыныÑтар"</string> <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> жақÑарту"</string> <string name="use_double_space_period" msgid="8781529969425082860">"Ðүкте мен Ð±Ð¾Ñ Ð¾Ñ€Ñ‹Ð½ қою"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"Ð‘Ð¾Ñ Ð¾Ñ€Ñ‹Ð½ пернеÑін екі рет түртÑе, нүкте мен Ð±Ð¾Ñ Ð¾Ñ€Ñ‹Ð½ қойылады"</string> - <string name="auto_cap" msgid="1719746674854628252">"Ðвто Ð±Ð°Ñ Ó™Ñ€Ñ–Ð¿Ñ‚ÐµÑ€Ð³Ðµ түрлендіру"</string> + <string name="auto_cap" msgid="1719746674854628252">"Ðвтоматты Ð±Ð°Ñ Ó™Ñ€Ñ–Ð¿ÐºÐµ ауыÑтыру"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Әрбір Ñөйлемнің бірінші әріпін Ð±Ð°Ñ Ó™Ñ€Ñ–Ð¿ÐºÐµ түрлендіру"</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"Жеке Ñөздік"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"ҚоÑымша Ñөздіктер"</string> <string name="main_dictionary" msgid="4798763781818361168">"Ðегізгі Ñөздік"</string> <string name="prefs_show_suggestions" msgid="8026799663445531637">"Түзету Ò±ÑыныÑтарын көрÑету"</string> <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Теру кезінде Ò±Ñынылған Ñөздерді көрÑету"</string> - <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Қорлаушы Ñөздерді Ñ‚Ñ‹ÑŽ"</string> + <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Балағат Ñөздерге тыйым Ñалу"</string> <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Қорлаушы Ñөздерді Ò±Ñынбау"</string> <string name="auto_correction" msgid="7630720885194996950">"Ðвто түзету"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"Ð‘Ð¾Ñ Ð¾Ñ€Ñ‹Ð½ және Ñ‚Ñ‹Ð½Ñ‹Ñ Ð±ÐµÐ»Ð³Ñ– автоматты түрде қателерді түзетеді"</string> @@ -157,7 +157,7 @@ <string name="setup_step3_action" msgid="600879797256942259">"ҚоÑымша тілдерді теңшеу"</string> <string name="setup_finish_action" msgid="276559243409465389">"ÐÑқталған"</string> <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Қолданба белгішеÑін көрÑету"</string> - <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"ІÑке қоÑу құралындағы қолданба белгішеÑін көрÑету"</string> + <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"ІÑке қоÑу құралында қолданба белгішеÑін көрÑету"</string> <string name="app_name" msgid="6320102637491234792">"Сөздік провайдері"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"Сөздік провайдері"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"Сөздік қызметі"</string> diff --git a/java/res/values-km/strings.xml b/java/res/values-km/strings.xml index d5dce2a41a95e1dfc08cc76bbe17d32a96d508b7..71a185d71a14786e3d8fb15613a6b87b06200c43 100644 --- a/java/res/values-km/strings.xml +++ b/java/res/values-km/strings.xml @@ -156,8 +156,8 @@ <string name="setup_step3_instruction" msgid="8025981829605426000">"ឥឡូវ​​អ្នក​អាច​​វាយ​បញ្ចូល​នៅ​ក្នុង​​កម្មវិធី​​ពáŸáž‰â€‹áž…áž·ážáŸ’ážâ€‹ážšáž”ស់​អ្នក​ទាំងអស់​ជាមួយ <xliff:g id="APPLICATION_NAME">%s</xliff:g> ។"</string> <string name="setup_step3_action" msgid="600879797256942259">"កំណážáŸ‹â€‹ážšáž…នា​សម្ពáŸáž“្ធ​ភាសា​បន្ážáŸ‚ម"</string> <string name="setup_finish_action" msgid="276559243409465389">"បាន​បញ្ចប់"</string> - <string name="show_setup_wizard_icon" msgid="5008028590593710830">"បង្ហាញ​រូប​ážáŸ†ážŽáž¶áž„​កម្មវិធី"</string> - <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"បង្ហាញ​រូប​ážáŸ†ážŽáž¶áž„​កម្មវិធី​នៅ​ក្នុង​កម្ម​​វិធី​ចាប់ផ្ដើម"</string> + <string name="show_setup_wizard_icon" msgid="5008028590593710830">"បង្ហាញ​រូប​កម្មវិធី"</string> + <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"បង្ហាញ​រូប​កម្មវិធី​នៅ​ក្នុង​កម្ម​​វិធី​ចាប់ផ្ដើម"</string> <string name="app_name" msgid="6320102637491234792">"កម្មវិធី​ផ្ដល់​វចនានុក្រម"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"កម្មវិធី​ផ្ដល់​វចនានុក្រម"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"សáŸážœáž¶áž€áž˜áŸ’ម​​វចនានុក្រម"</string> diff --git a/java/res/values-kn/strings.xml b/java/res/values-kn/strings.xml index 924f05930700b44592d8fec482516ecd5601425b..45f05abdbda0a0ae40abe1ca570a5637028c8523 100644 --- a/java/res/values-kn/strings.xml +++ b/java/res/values-kn/strings.xml @@ -80,7 +80,7 @@ <string name="bigram_prediction_summary" msgid="3896362682751109677">"ಸಲಹೆಗಳನà³à²¨à³ ಮಾಡà³à²µà²¾à²— ಹಿಂದಿನ ಪದವನà³à²¨à³ ಬಳಸà³"</string> <string name="gesture_input" msgid="826951152254563827">"ಗೆಶà³à²šà²°à³ ಟೈಪಿಂಗೠಸಕà³à²°à²¿à²¯à²—ೊಳಿಸà³"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"ಅಕà³à²·à²°à²—ಳ ಮೇಲೆ ಸರಿಸà³à²µ ಮೂಲಕ ಪದವೊಂದನà³à²¨à³ ನಮೂದಿಸಿ"</string> - <string name="gesture_preview_trail" msgid="3802333369335722221">"ಗೆಶà³à²šà²°à³ ಟà³à²°à²¯à²²à³ ತೋರಿಸà³"</string> + <string name="gesture_preview_trail" msgid="3802333369335722221">"ಗೆಶà³à²šà²°à³ ಟà³à²°à³‡à²²à³ ತೋರಿಸà³"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ಡೈನಮಿಕೠಫà³à²²à³‹à²Ÿà²¿à²‚ಗೠಪೂರà³à²µà²µà³€à²•à³à²·à²£à³†"</string> <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ಗೆಸà³à²Ÿà²°à³ ಮಾಡà³à²µà²¾à²— ಸೂಚಿಸಿದ ಪದವನà³à²¨à³ ನೋಡಿ"</string> <string name="gesture_space_aware" msgid="2078291600664682496">"ಪದಗà³à²šà³à²›à²¦ ಗೆಶà³à²šà²°à³"</string> diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml index 5f2fb8e63288cac7d60b53dd110f2fc396b4165b..90fec1b312a56af486c5f1437795a957bee3b879 100644 --- a/java/res/values-ko/strings.xml +++ b/java/res/values-ko/strings.xml @@ -60,7 +60,7 @@ <string name="use_personalized_dicts" msgid="5167396352105467626">"맞춤 추천 검색어"</string> <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ê°œì„ "</string> <string name="use_double_space_period" msgid="8781529969425082860">"ë”블스페ì´ìŠ¤ 마침표"</string> - <string name="use_double_space_period_summary" msgid="6532892187247952799">"스페ì´ìŠ¤ë°”를 ë‘ ë²ˆ íƒí•˜ë©´ 마침표와 공백 í•œ 개가 삽입ë©ë‹ˆë‹¤."</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"스페ì´ìŠ¤ë°”를 ë‘ ë²ˆ íƒí•˜ë©´ 마침표와 공백 í•œ 개가 삽입ë¨"</string> <string name="auto_cap" msgid="1719746674854628252">"ìžë™ 대문ìží™”"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"ë¬¸ìž¥ì˜ ì²« 단어를 대문ìžë¡œ 표시"</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"ê°œì¸ ì‚¬ì „"</string> diff --git a/java/res/values-ky/strings.xml b/java/res/values-ky/strings.xml index c6be21a6ca5bb4171937f3dcbcaba0ea5f09fbcb..59ef3634dc8880129a9edb5d0a765cb448a1e85f 100644 --- a/java/res/values-ky/strings.xml +++ b/java/res/values-ky/strings.xml @@ -24,7 +24,7 @@ <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Байланыш Ñ‹Ñымдарын издөө"</string> <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"ÐžÑ€Ñ„Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ Ñ‚ÐµÐºÑˆÐµÑ€Ð¸Ð»Ð¸Ð¿ жатканда байланыштар тизмеÑи колдонулат"</string> <string name="vibrate_on_keypress" msgid="5258079494276955460">"БаÑкыч баÑылганда дирилдеÑин"</string> - <string name="sound_on_keypress" msgid="6093592297198243644">"БаÑкыч баÑылганда чыккан үн"</string> + <string name="sound_on_keypress" msgid="6093592297198243644">"БаÑкычты баÑканда үн чыгат"</string> <string name="popup_on_keypress" msgid="123894815723512944">"БаÑкыч баÑылганда калкып чыкма"</string> <string name="settings_screen_preferences" msgid="2696713156722014624">"Мүмкүнчүлүктөрдү тандоо"</string> <string name="settings_screen_accounts" msgid="2786418968536696670">"Каттоо ÑÑептери жана купуÑлык"</string> @@ -69,7 +69,7 @@ <string name="prefs_show_suggestions" msgid="8026799663445531637">"Оңдоо Ñунуштары көрÑөтүлÑүн"</string> <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Терүү учурунда Ñунушталган Ñөздөрдү көрÑÓ©Ñ‚Ò¯Ò¯"</string> <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"ÐдепÑиз Ñөздөрдү бөгөттө"</string> - <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"ÐдепÑиз Ñөздөр ÑунушталбаÑын"</string> + <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"ÐдепÑиз Ñөздөр Ñунушталбайт"</string> <string name="auto_correction" msgid="7630720885194996950">"Ðвто оңдоо"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"Боштук жана тыныш белгиÑи автоматтык түрдө туура ÑÐ¼ÐµÑ Ñ‚ÐµÑ€Ð¸Ð»Ð³ÐµÐ½ Ñөздөрдү оңдойт"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Өчүк"</string> @@ -79,7 +79,7 @@ <string name="bigram_prediction" msgid="1084449187723948550">"Кийинки Ñөздү Ñунуштоо"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"Сунуштоодо мурунку Ñөздү пайдалануу"</string> <string name="gesture_input" msgid="826951152254563827">"ЖаңÑап терүүнү иштетүү"</string> - <string name="gesture_input_summary" msgid="9180350639305731231">"Тамгаларды Ñүрүп Ñөз киргизүү"</string> + <string name="gesture_input_summary" msgid="9180350639305731231">"Сөздү тамгаларды Ñүрүп киргизеÑиз"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"ЖаңÑоо изи көрүнүп турÑун"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Динамикалык калкыма алдын-ала көрүү"</string> <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ЖаңÑалганда Ñунушталган Ñөздү көрүү"</string> @@ -157,7 +157,7 @@ <string name="setup_step3_action" msgid="600879797256942259">"Кошумча тилдерди конфигурациÑлоо"</string> <string name="setup_finish_action" msgid="276559243409465389">"ÐÑктады"</string> <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Колдонмонун ÑүрөтчөÑүн көрÑÓ©Ñ‚Ò¯Ò¯"</string> - <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Колдонмонун ÑүрөтчөÑүн иштетүү тактаÑында көрÑÓ©Ñ‚Ò¯Ò¯"</string> + <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Колдонмонун ÑүрөтчөÑÒ¯ иштетүү тактаÑында көрүнөт"</string> <string name="app_name" msgid="6320102637491234792">"Сөздүк жабдуучуÑу"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"Сөздүк жабдуучуÑу"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"Сөздүк кызматы"</string> diff --git a/java/res/values-lo/strings.xml b/java/res/values-lo/strings.xml index 2c37c9ae06b2ff2989e34a1e3452773f63957b82..fc9342511d439fc15ca55e465b65eaf21ac682e1 100644 --- a/java/res/values-lo/strings.xml +++ b/java/res/values-lo/strings.xml @@ -21,7 +21,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="english_ime_input_options" msgid="3909945612939668554">"ຕົວເລືàºàºàºàº²àº™àº›à»‰àºàº™àº‚à»à»‰àº¡àº¹àº™"</string> - <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"ເບິ່ງທີ່ຊື່ຂàºàº‡àº¥àº²àºàºŠàº·à»ˆàºœàº¹à»ˆàº•àº´àº”ຕà»à»ˆ"</string> + <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"ຊàºàºàº«àº²àº¥àº²àºàºŠàº·à»ˆàºœàº¹à»‰àº•àº´àº”ຕà»à»ˆ"</string> <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"ໂຕຊ່ວàºàºªàº°àºàº»àº”ໃຊ້ຂà»à»‰àº¡àº¹àº™àºˆàº²àºàº¥àº²àºàºàº²àº™àº‚àºàº‡àº¥àº²àºàºŠàº·à»ˆàºœàº¹à»ˆàº•àº´àº”ຕà»à»ˆàº‚àºàº‡àº—່ານ"</string> <string name="vibrate_on_keypress" msgid="5258079494276955460">"ສັ່ນເຕືàºàº™à»€àº¡àº·à»ˆàºàºžàº´àº¡"</string> <string name="sound_on_keypress" msgid="6093592297198243644">"ສຽງໃນàºàº²àº™àºàº»àº”ປຸ່ມ"</string> @@ -156,8 +156,8 @@ <string name="setup_step3_instruction" msgid="8025981829605426000">"ຕàºàº™àº™àºµà»‰àº—່ານສາມາດພິມໃນà»àºàº±àºšàº¯àº—ີ່ທ່ານມັàºà»„ດ້ທຸàºà»àºàº±àºšàº¯àº”້ວຠ<xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string> <string name="setup_step3_action" msgid="600879797256942259">"ປັບຄ່າພາສາເພີ່ມເຕີມ"</string> <string name="setup_finish_action" msgid="276559243409465389">"ສຳເລັດà»àº¥à»‰àº§"</string> - <string name="show_setup_wizard_icon" msgid="5008028590593710830">"ສະà»àº”ງໄàºàº„àºàº™àº‚àºàº‡à»àºàº±àºšàº¯"</string> - <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"ສະà»àº”ງໄàºàº„àºàº™àº‚àºàº‡à»àºàº±àºšàº¯à»ƒàº™ Launcher"</string> + <string name="show_setup_wizard_icon" msgid="5008028590593710830">"ສະà»àº”ງໄàºàº„àºàº™àº‚àºàº‡à»àºàº±àºš"</string> + <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"ສະà»àº”ງໄàºàº„àºàº™àº‚àºàº‡à»àºàº±àºšà»ƒàº™ Launcher"</string> <string name="app_name" msgid="6320102637491234792">"ຜູ່​ສະ​ຫນàºàº‡â€‹àº§àº±àº”ຈະ​ນາ​ນຸ​àºàº»àº¡"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"ຜູ່​ສະ​ຫນàºàº‡â€‹àº§àº±àº”ຈະ​ນາ​ນຸ​àºàº»àº¡"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"ບà»àº¥àº´àºàº²àº™àº§àº±àº”ຈະນານຸàºàº»àº¡"</string> diff --git a/java/res/values-mk/strings-talkback-descriptions.xml b/java/res/values-mk/strings-talkback-descriptions.xml index 0955656e2c06267c23b92f22255a73df5c1f4ca1..44ac433a12ed2cf3f2df49cfdd239bd046fa3c1b 100644 --- a/java/res/values-mk/strings-talkback-descriptions.xml +++ b/java/res/values-mk/strings-talkback-descriptions.xml @@ -64,7 +64,7 @@ <string name="keyboard_mode_phone" msgid="2486230278064523665">"телефон"</string> <string name="keyboard_mode_text" msgid="9138789594969187494">"текÑÑ‚"</string> <string name="keyboard_mode_time" msgid="8558297845514402675">"време"</string> - <string name="keyboard_mode_url" msgid="8072011652949962550">"УРЛ"</string> + <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string> <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Ðеодамнешни"</string> <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Луѓе"</string> <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Предмети"</string> diff --git a/java/res/values-ml/strings.xml b/java/res/values-ml/strings.xml index f6df04409929a8fd087a7d23afbea1e1cb395676..bc1aebc07de33ea508d5b00f0a7639f86903dea9 100644 --- a/java/res/values-ml/strings.xml +++ b/java/res/values-ml/strings.xml @@ -59,7 +59,7 @@ <string name="use_contacts_dict_summary" msgid="6599983334507879959">"നിർദàµà´¦àµ‡à´¶à´™àµà´™àµ¾à´•àµà´•àµà´‚ തിരàµà´¤àµà´¤à´²àµà´•àµ¾à´•àµà´•àµà´®à´¾à´¯à´¿ കോൺടാകàµâ€Œà´±àµà´±àµà´•à´³à´¿àµ½ നിനàµà´¨àµà´³àµà´³ പേരàµà´•àµ¾ ഉപയോഗികàµà´•àµà´•"</string> <string name="use_personalized_dicts" msgid="5167396352105467626">"à´µàµà´¯à´•àµà´¤à´¿à´—à´¤ നിർദàµà´¦àµ‡à´¶à´™àµà´™àµ¾"</string> <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> മെചàµà´šà´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•"</string> - <string name="use_double_space_period" msgid="8781529969425082860">"ഡബിൾ à´¸àµà´ªàµ‡à´¸àµ പീരിഡàµ"</string> + <string name="use_double_space_period" msgid="8781529969425082860">"ഡബിൾ à´¸àµà´ªàµ‡à´¸àµ പിരീഡàµ"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"à´¸àµâ€Œà´ªàµ†à´¯àµâ€Œà´¸àµ ബാറിൽ ഇരടàµà´Ÿ ടാപàµà´ªàµà´šàµ†à´¯àµà´¯àµà´¨àµà´¨à´¤àµ, ഒരൠസàµâ€Œà´ªàµ†à´¯àµâ€Œà´¸à´¿à´¨àµ à´®àµà´®àµà´ªà´¾à´¯à´¿ വിരാമം ഇടàµà´¨àµà´¨àµ"</string> <string name="auto_cap" msgid="1719746674854628252">"à´¸àµà´µà´¯à´‚ വലിയകàµà´·à´°à´®à´¾à´•àµà´•àµà´•"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"ഓരോ വാകàµà´¯à´¤àµà´¤à´¿à´¨àµà´±àµ†à´¯àµà´‚ ആദàµà´¯ പദം വലിയകàµà´·à´°à´®à´¾à´•àµà´•àµà´•"</string> @@ -78,7 +78,7 @@ <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"വളരെ നിർബനàµà´§à´¿à´¤à´®à´¾à´¯à´¿"</string> <string name="bigram_prediction" msgid="1084449187723948550">"à´…à´Ÿàµà´¤àµà´¤-പദ നിർദàµà´¦àµ‡à´¶à´™àµà´™àµ¾"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"നിർദàµà´¦àµ‡à´¶à´™àµà´™àµ¾ സൃഷàµâ€Œà´Ÿà´¿à´•àµà´•à´¾àµ» à´®àµà´®àµà´ªà´¤àµà´¤àµ† പദം ഉപയോഗികàµà´•àµà´•"</string> - <string name="gesture_input" msgid="826951152254563827">"ജെസàµà´±àµà´±àµ¼à´Ÿàµˆà´ªàµà´ªà´¿à´‚ഗൠസജീവമാകàµà´•àµ‚"</string> + <string name="gesture_input" msgid="826951152254563827">"ജെസàµà´±àµà´±àµ¼à´Ÿàµˆà´ªàµà´ªà´¿à´‚ഗൠസജീവമാകàµà´•àµà´•"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"à´…à´•àµà´·à´°à´™àµà´™à´³à´¿à´²àµ‚ടെ à´¸àµà´²àµˆà´¡àµ ചെയàµâ€Œà´¤àµà´•àµŠà´£àµà´Ÿàµ ഒരൠപദം ടൈപàµà´ªàµà´šàµ†à´¯àµà´¯àµà´•"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"വിരൽചലന à´Ÿàµà´°àµ†à´¯à´¿àµ½ കാണികàµà´•àµà´•"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ചലനാതàµà´®à´• à´«àµà´²àµ‹à´Ÿàµà´Ÿà´¿à´‚ഗൠപàµà´°à´¿à´µàµà´¯àµ‚"</string> @@ -204,7 +204,7 @@ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"പദം à´Žà´¡à´¿à´±àµà´±àµà´šàµ†à´¯àµà´¯àµà´•"</string> <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"à´Žà´¡à´¿à´±àµà´±àµà´šàµ†à´¯àµà´¯àµà´•"</string> <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"ഇലàµà´²à´¾à´¤à´¾à´•àµà´•àµà´•"</string> - <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"ഉപയോകàµà´¤àµƒ നിഘണàµà´Ÿàµà´µà´¿àµ½ നിങàµà´™àµ¾à´•àµà´•àµ പദങàµà´™à´³àµŠà´¨àµà´¨àµà´®à´¿à´²àµà´². ഒരൠപദം ചേർകàµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµ, ചേർകàµà´•àµà´• (+) ബടàµà´Ÿàµº ടാപàµà´ªàµ ചെയàµà´¯àµà´•."</string> + <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"ഉപയോകàµà´¤àµƒ നിഘണàµà´Ÿàµà´µà´¿àµ½ നിങàµà´™àµ¾à´•àµà´•àµ പദങàµà´™à´³àµŠà´¨àµà´¨àµà´®à´¿à´²àµà´². ഒരൠപദം ചേർകàµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµ, ചേർകàµà´•àµà´• (+) ബടàµà´Ÿàµº ടാപàµà´ªàµà´šàµ†à´¯àµà´¯àµà´•."</string> <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"à´Žà´²àµà´²à´¾ à´à´¾à´·à´•àµ¾à´•àµà´•àµà´®à´¾à´¯à´¿"</string> <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"കൂടàµà´¤àµ½ à´à´¾à´·à´•àµ¾â€¦"</string> <string name="user_dict_settings_delete" msgid="110413335187193859">"ഇലàµà´²à´¾à´¤à´¾à´•àµà´•àµà´•"</string> diff --git a/java/res/values-mn/strings.xml b/java/res/values-mn/strings.xml index a2efc42b42a54bfb1fcc6ed174216351ff403a7a..69f96733a02b46477c890a620696ae549f23b4f0 100644 --- a/java/res/values-mn/strings.xml +++ b/java/res/values-mn/strings.xml @@ -30,7 +30,7 @@ <string name="settings_screen_accounts" msgid="2786418968536696670">"ХаÑг & Ðууцлал"</string> <string name="settings_screen_appearance" msgid="7358046399111611615">"Харагдах байдал & Зураглал"</string> <string name="settings_screen_gesture" msgid="8826372746901183556">"Зангаагаар бичих"</string> - <string name="settings_screen_correction" msgid="1616818407747682955">"ТекÑÑ‚ залруулалт"</string> + <string name="settings_screen_correction" msgid="1616818407747682955">"ТекÑÑ‚ заÑварлах"</string> <string name="settings_screen_advanced" msgid="7472408607625972994">"ДÑлгÑÑ€Ñнгүй"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Загвар"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Хуваагдмал гарыг идÑвхжүүлÑÑ…"</string> @@ -135,7 +135,7 @@ <string name="not_now" msgid="6172462888202790482">"Одоо биш"</string> <string name="custom_input_style_already_exists" msgid="8008728952215449707">"ИжилхÑн оруулах загвар байна: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Товч дарах чичиргÑÑний хугацаа"</string> - <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Товчны дууны Ñ…ÑмжÑÑ"</string> + <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Товчны дууны түвшин"</string> <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Товчны удаан даралтын тохиргоо"</string> <string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"Бодит гарт зориулÑан Ñможи"</string> <string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"Бодит Alt товчлуур нь Ñможи палитрыг харуулдаг"</string> diff --git a/java/res/values-mr/strings-emoji-descriptions.xml b/java/res/values-mr/strings-emoji-descriptions.xml index 07b5b503d130a9cc8c14b27bb3f93616d518efb4..373ef29cbb0821c8356b6e6e38a639249b5d8456 100644 --- a/java/res/values-mr/strings-emoji-descriptions.xml +++ b/java/res/values-mr/strings-emoji-descriptions.xml @@ -818,7 +818,7 @@ <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"वरà¥à¤¤à¤®à¤¾à¤¨à¤ªà¤¤à¥à¤°"</string> <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"मोबाईल फोन"</string> <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"डावीकडे उजवीकडे जाणारà¥â€à¤¯à¤¾ बाणासह मोबाईल फोन"</string> - <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"कंपन मोड"</string> + <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"वà¥à¤¹à¤¾à¤¯à¤¬à¥à¤°à¥‡à¤Ÿ मोड"</string> <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"मोबाईल फोन बंद"</string> <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"मोबाईल फोन नाहीत"</string> <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"बार सह अà¤à¤Ÿà¥‡à¤¨à¤¾"</string> diff --git a/java/res/values-mr/strings.xml b/java/res/values-mr/strings.xml index a7963ef4dfe66ef5fd9a27f8810cf7a453353510..a9665829e4eba1c1a282600ee4eebfdd30d41253 100644 --- a/java/res/values-mr/strings.xml +++ b/java/res/values-mr/strings.xml @@ -22,8 +22,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="english_ime_input_options" msgid="3909945612939668554">"इनपà¥à¤Ÿ परà¥à¤¯à¤¾à¤¯"</string> <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"संपरà¥à¤• नावे शोधा"</string> - <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"शबà¥à¤¦à¤²à¥‡à¤–न तपासक आपलà¥à¤¯à¤¾ संपरà¥à¤• सूचीमधील पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¥à¤¯à¤¾ वापरतो"</string> - <string name="vibrate_on_keypress" msgid="5258079494276955460">"की दाबताना कंपन"</string> + <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"शबà¥à¤¦à¤²à¥‡à¤–न तपासक आपलà¥à¤¯à¤¾ संपरà¥à¤• सूचीमधील à¤à¤‚टà¥à¤°à¥€ वापरतो"</string> + <string name="vibrate_on_keypress" msgid="5258079494276955460">"की दाबताना वà¥à¤¹à¤¾à¤¯à¤¬à¥à¤°à¥‡à¤Ÿ"</string> <string name="sound_on_keypress" msgid="6093592297198243644">"की दाबताना आवाज"</string> <string name="popup_on_keypress" msgid="123894815723512944">"की दाबताना पॉपअप"</string> <string name="settings_screen_preferences" msgid="2696713156722014624">"पà¥à¤°à¤¾à¤§à¤¾à¤¨à¥à¤¯à¥‡"</string> @@ -33,19 +33,19 @@ <string name="settings_screen_correction" msgid="1616818407747682955">"मजकूर दà¥à¤°à¥à¤¸à¥à¤¤à¥€"</string> <string name="settings_screen_advanced" msgid="7472408607625972994">"पà¥à¤°à¤—त"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"थीम"</string> - <string name="enable_split_keyboard" msgid="4177264923999493614">"विà¤à¤¾à¤œà¤¿à¤¤ कीबोरà¥à¤¡ सकà¥à¤·à¤® करा"</string> - <string name="cloud_sync_title" msgid="8579271074443847055">"Google कीबोरà¥à¤¡ संकालन"</string> - <string name="cloud_sync_summary" msgid="7684887161145650857">"संकालन चालू केले आहे"</string> - <string name="cloud_sync_summary_disabled" msgid="4553338970382825796">"डिवà¥â€à¤¹à¤¾à¤‡à¤¸à¥‡à¤¸ वरून आपला वैयकà¥à¤¤à¤¿à¤• शबà¥à¤¦à¤•à¥‹à¤¶ संकालित करा"</string> - <string name="sync_now_title" msgid="3088838136743277721">"आता संकालन करा"</string> + <string name="enable_split_keyboard" msgid="4177264923999493614">"विà¤à¤¾à¤œà¤¿à¤¤ कीबोरà¥à¤¡ सà¥à¤°à¥‚ करा"</string> + <string name="cloud_sync_title" msgid="8579271074443847055">"Google कीबोरà¥à¤¡ सिंक"</string> + <string name="cloud_sync_summary" msgid="7684887161145650857">"सिंक चालू केले आहे"</string> + <string name="cloud_sync_summary_disabled" msgid="4553338970382825796">"डिवà¥â€à¤¹à¤¾à¤‡à¤¸à¥‡à¤¸ वरून तà¥à¤®à¤šà¤¾ वैयकà¥à¤¤à¤¿à¤• शबà¥à¤¦à¤•à¥‹à¤¶ संकालित करा"</string> + <string name="sync_now_title" msgid="3088838136743277721">"आता सिंक करा"</string> <string name="clear_sync_data_title" msgid="8582001557037069154">"कà¥à¤²à¤¾à¤‰à¤¡ डेटा हटवा"</string> - <string name="clear_sync_data_summary" msgid="993477139012576584">"Google वरून आपला संकालित केलेला डेटा हटविते"</string> - <string name="clear_sync_data_confirmation" msgid="2811931135574727678">"आपला संकालित केलेला डेटा मेघवरून हटविला जाईल. आपलà¥â€à¤¯à¤¾à¤²à¤¾ खातà¥à¤°à¥€ आहे?"</string> + <string name="clear_sync_data_summary" msgid="993477139012576584">"Google वरून तà¥à¤®à¤šà¤¾ संकालित केलेला डेटा हटविते"</string> + <string name="clear_sync_data_confirmation" msgid="2811931135574727678">"तà¥à¤®à¤šà¤¾ संकालित केलेला डेटा मेघवरून हटवला जाईल. आपलà¥â€à¤¯à¤¾à¤²à¤¾ खातà¥à¤°à¥€ आहे?"</string> <string name="clear_sync_data_ok" msgid="613104067705915132">"हटवा"</string> <string name="cloud_sync_cancel" msgid="5877481252150919037">"रदà¥à¤¦ करा"</string> - <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"आपली वैयकà¥à¤¤à¤¿à¤• डिरेकà¥à¤Ÿà¤°à¥€ Google सरà¥à¤µà¥à¤¹à¤°à¤µà¤° सिंक केली जाईल आणि बॅकअप घेतला जाईल. आमचे उतà¥à¤ªà¤¾à¤¦à¤¨ सà¥à¤§à¤¾à¤°à¤¿à¤¤ करणà¥à¤¯à¤¾à¤¤ मदत करणà¥à¤¯à¤¾à¤¸à¤¾à¤ ी शबà¥à¤¦à¤¾à¤šà¥à¤¯à¤¾ वारंवारतेची आकडेवारी माहिती गोळा केली जाऊ शकते. सरà¥à¤µ माहितीचे संकलन आणि वापर "<a href="https://www.google.com/policies/privacy">"Google चे गोपनीयता धोरण"</a>" शी सà¥à¤¸à¤‚गत असेल."</string> + <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"तà¥à¤®à¤šà¥€ वैयकà¥à¤¤à¤¿à¤• डिरेकà¥à¤Ÿà¤°à¥€ Google सरà¥à¤µà¥à¤¹à¤°à¤µà¤° सिंक केली जाईल आणि बॅकअप घेतला जाईल. आमचे उतà¥à¤ªà¤¾à¤¦à¤¨ सà¥à¤§à¤¾à¤°à¤¿à¤¤ करणà¥à¤¯à¤¾à¤¤ मदत करणà¥à¤¯à¤¾à¤¸à¤¾à¤ ी शबà¥à¤¦à¤¾à¤šà¥à¤¯à¤¾ वारंवारतेची आकडेवारी माहिती गोळा केली जाऊ शकते. सरà¥à¤µ माहितीचे संकलन आणि वापर "<a href="https://www.google.com/policies/privacy">"Google चे गोपनीयता धोरण"</a>" शी सà¥à¤¸à¤‚गत असेल."</string> <string name="add_account_to_enable_sync" msgid="7836932571852055265">"या डीवà¥à¤¹à¤¾à¤‡à¤¸à¤®à¤§à¥à¤¯à¥‡ हे वैशिषà¥à¤Ÿà¥à¤¯ सकà¥à¤·à¤® करणà¥à¤¯à¤¾à¤¸à¤¾à¤ ी कृपया à¤à¤• Google खाते जोडा"</string> - <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Google Apps for Business खातà¥à¤¯à¤¾à¤‚सह डिवà¥à¤¹à¤¾à¤‡à¤¸à¥‡à¤¸à¤¸à¤¾à¤ ी संकालन उपलबà¥à¤§ नाही"</string> + <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Google Apps for Business खातà¥à¤¯à¤¾à¤‚सह डिवà¥à¤¹à¤¾à¤‡à¤¸à¥‡à¤¸à¤¸à¤¾à¤ ी सिंक उपलबà¥à¤§ नाही"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"अनà¥à¤¯ इनपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€à¤‚वर सà¥à¤µà¤¿à¤š करा"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"à¤à¤¾à¤·à¤¾ सà¥à¤µà¤¿à¤š की अनà¥à¤¯ इनपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€ देखील समाविषà¥à¤Ÿ करते"</string> <string name="show_language_switch_key" msgid="5915478828318774384">"à¤à¤¾à¤·à¤¾ सà¥à¤µà¤¿à¤š की"</string> @@ -57,7 +57,7 @@ <string name="settings_system_default" msgid="6268225104743331821">"सिसà¥à¤Ÿà¤® डीफॉलà¥à¤Ÿ"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"संपरà¥à¤• नावे सà¥à¤šà¤µà¤¾"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"सूचनांसाठी आणि सà¥à¤§à¤¾à¤°à¤£à¤¾à¤‚साठी संपरà¥à¤•à¤¾à¤‚मधील नावे वापरा"</string> - <string name="use_personalized_dicts" msgid="5167396352105467626">"वैयकà¥à¤¤à¤¿à¤•à¥ƒà¤¤ केलेलà¥à¤¯à¤¾ सूचना"</string> + <string name="use_personalized_dicts" msgid="5167396352105467626">"परà¥à¤¸à¤¨à¤²à¤¾à¤‡à¤ केलेलà¥à¤¯à¤¾ सूचना"</string> <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> मधà¥à¤¯à¥‡ सà¥à¤§à¤¾à¤°à¤£à¤¾ करा"</string> <string name="use_double_space_period" msgid="8781529969425082860">"डबल-सà¥à¤ªà¥‡à¤¸ पूरà¥à¤£à¤µà¤¿à¤°à¤¾à¤®à¤šà¤¿à¤¨à¥à¤¹"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"सà¥à¤ªà¥‡à¤¸à¤¬à¤¾à¤°à¤µà¤° डबल टॅप केलà¥à¤¯à¤¾à¤¨à¥‡ पूरà¥à¤£à¤µà¤¿à¤°à¤¾à¤®à¤šà¤¿à¤¨à¥à¤¹ व तà¥à¤¯à¤¾à¤ªà¤¾à¤ ोपाठसà¥à¤ªà¥‡à¤¸ घातली जाते"</string> @@ -70,7 +70,7 @@ <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"टाइप करताना सà¥à¤šà¤µà¤¿à¤²à¥‡à¤²à¥‡ शबà¥à¤¦ पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ करा"</string> <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"आकà¥à¤·à¥‡à¤ªà¤¾à¤°à¥à¤¹ शबà¥à¤¦ बà¥à¤²à¥‰à¤• करा"</string> <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"संà¤à¤¾à¤µà¥à¤¯ आकà¥à¤·à¥‡à¤ªà¤¾à¤°à¥à¤¹ शबà¥à¤¦ सà¥à¤šà¤µà¥‚ नका"</string> - <string name="auto_correction" msgid="7630720885194996950">"सà¥â€à¤µà¤¯à¤‚-सà¥à¤§à¤¾à¤°à¤£à¤¾"</string> + <string name="auto_correction" msgid="7630720885194996950">"ऑटो-करेकà¥à¤¶à¤¨"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"चà¥à¤•à¥€à¤šà¥‡ टाइप केलेले शबà¥à¤¦ सà¥à¤ªà¥‡à¤¸à¤¬à¤¾à¤° आणि विरामचिनà¥à¤¹à¥‡ सà¥à¤µà¤¯à¤‚चलितपणे सà¥à¤§à¤¾à¤°à¤¤à¥‡"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"बंद"</string> <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"मरà¥à¤¯à¤¾à¤¦à¤¶à¥€à¤²"</string> @@ -78,7 +78,7 @@ <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"खूप आकà¥à¤°à¤®à¤•"</string> <string name="bigram_prediction" msgid="1084449187723948550">"पà¥à¤¢à¥€à¤²-शबà¥à¤¦ सूचना"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"सूचना करताना मागील शबà¥à¤¦ वापरा"</string> - <string name="gesture_input" msgid="826951152254563827">"जेशà¥à¤šà¤° टायपिंग सकà¥à¤·à¤® करा"</string> + <string name="gesture_input" msgid="826951152254563827">"जेशà¥à¤šà¤° टायपिंग सà¥à¤°à¥‚ करा"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"अकà¥à¤·à¤°à¤¾à¤‚मधून सà¥à¤²à¤¾à¤¯à¤¡à¤¿à¤‚ग करून à¤à¤• शबà¥à¤¦ इनपà¥à¤Ÿ करा"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"जेशà¥à¤šà¤° अनà¥à¤šà¤¿à¤¨à¥à¤¹ दरà¥à¤¶à¤µà¤¾"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"डायनॅमिक फà¥à¤²à¥‹à¤Ÿà¤¿à¤‚ग पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨"</string> @@ -91,8 +91,8 @@ <string name="language_selection_title" msgid="3666971864764478269">"à¤à¤¾à¤·à¤¾"</string> <string name="help_and_feedback" msgid="5328219371839879161">"मदत आणि अà¤à¤¿à¤ªà¥à¤°à¤¾à¤¯"</string> <string name="select_language" msgid="5709487854987078367">"à¤à¤¾à¤·à¤¾"</string> - <string name="hint_add_to_dictionary" msgid="2645988432867033007">"जतन करणà¥à¤¯à¤¾à¤¸à¤¾à¤ ी पà¥à¤¨à¥à¤¹à¤¾ टॅप करा"</string> - <string name="hint_add_to_dictionary_without_word" msgid="6710206006427574423">"जतन करणà¥à¤¯à¤¾à¤¸à¤¾à¤ ी येथे टॅप करा"</string> + <string name="hint_add_to_dictionary" msgid="2645988432867033007">"सेवà¥à¤¹ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ ी पà¥à¤¨à¥à¤¹à¤¾ टॅप करा"</string> + <string name="hint_add_to_dictionary_without_word" msgid="6710206006427574423">"सेवà¥à¤¹ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ ी येथे टॅप करा"</string> <string name="has_dictionary" msgid="6071847973466625007">"शबà¥à¤¦à¤•à¥‹à¤¶ उपलबà¥à¤§"</string> <string name="keyboard_layout" msgid="8451164783510487501">"कीबोरà¥à¤¡ थीम"</string> <string name="switch_accounts" msgid="3321216593719006162">"खाती सà¥à¤µà¤¿à¤š करा"</string> @@ -123,18 +123,18 @@ <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"वरà¥à¤£à¤®à¤¾à¤²à¤¾ (PC)"</string> <string name="subtype_emoji" msgid="7483586578074549196">"इमोजी"</string> <string name="keyboard_theme" msgid="4909551808526178852">"कीबोरà¥à¤¡ थीम"</string> - <string name="custom_input_styles_title" msgid="8429952441821251512">"सानà¥à¤•à¥‚ल इनपà¥à¤Ÿ शैली"</string> + <string name="custom_input_styles_title" msgid="8429952441821251512">"कसà¥à¤Ÿà¤® इनपà¥à¤Ÿ शैली"</string> <string name="add_style" msgid="6163126614514489951">"सà¥à¤Ÿà¤¾à¤‡à¤² जोडा"</string> <string name="add" msgid="8299699805688017798">"जोडा"</string> <string name="remove" msgid="4486081658752944606">"काढा"</string> <string name="save" msgid="7646738597196767214">"सेवà¥à¤¹ करा"</string> <string name="subtype_locale" msgid="8576443440738143764">"à¤à¤¾à¤·à¤¾"</string> <string name="keyboard_layout_set" msgid="4309233698194565609">"लेआउट"</string> - <string name="custom_input_style_note_message" msgid="8826731320846363423">"आपली सानà¥à¤•à¥‚ल इनपà¥à¤Ÿ शैली आपण ती वापरणे पà¥à¤°à¤¾à¤°à¤‚ठकरणà¥à¤¯à¤¾à¤ªà¥‚रà¥à¤µà¥€ सकà¥à¤·à¤® करणे आवशà¥à¤¯à¤• आहे. आपण आता ती सकà¥à¤·à¤® करू इचà¥â€à¤›à¤¿à¤¤à¤¾?"</string> - <string name="enable" msgid="5031294444630523247">"सकà¥à¤·à¤® करा"</string> + <string name="custom_input_style_note_message" msgid="8826731320846363423">"तà¥à¤®à¤šà¥€ कसà¥à¤Ÿà¤® इनपà¥à¤Ÿ शैली तà¥à¤®à¥à¤¹à¥€ ती वापरणे पà¥à¤°à¤¾à¤°à¤‚ठकरणà¥à¤¯à¤¾à¤ªà¥‚रà¥à¤µà¥€ सकà¥à¤·à¤® करणे आवशà¥à¤¯à¤• आहे. तà¥à¤®à¥à¤¹à¥€ आता ती सकà¥à¤·à¤® करू इचà¥â€à¤›à¤¿à¤¤à¤¾?"</string> + <string name="enable" msgid="5031294444630523247">"सà¥à¤°à¥‚ करा"</string> <string name="not_now" msgid="6172462888202790482">"आता नाही"</string> <string name="custom_input_style_already_exists" msgid="8008728952215449707">"समान इनपà¥à¤Ÿ शैली आधीपासूनच असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ आहे: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string> - <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"की दाबलà¥à¤¯à¤¾à¤¨à¤‚तरचा कंपन कालावधी"</string> + <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"की दाबलà¥à¤¯à¤¾à¤¨à¤‚तरचा वà¥à¤¹à¤¾à¤¯à¤¬à¥à¤°à¥‡à¤Ÿ कालावधी"</string> <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"की दाबलà¥à¤¯à¤¾à¤µà¤° आवाजाची तीवà¥à¤°à¤¤à¤¾"</string> <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"की जासà¥à¤¤ दाबणà¥à¤¯à¤¾à¤¤ विलंब"</string> <string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"वासà¥à¤¤à¤µà¤¿à¤• कीबोरà¥à¤¡à¤¸à¤¾à¤ ी इमोजी"</string> @@ -145,18 +145,18 @@ <string name="setup_start_action" msgid="8936036460897347708">"सà¥à¤°à¥‚ करा"</string> <string name="setup_next_action" msgid="371821437915144603">"पà¥à¤¢à¥€à¤² चरण"</string> <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सेट अप करत आहे"</string> - <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सकà¥à¤·à¤® करा"</string> + <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सà¥à¤°à¥‚ करा"</string> <string name="setup_step1_instruction" msgid="4295448056733329661">"कृपया आपलà¥à¤¯à¤¾ à¤à¤¾à¤·à¤¾à¤‚मधà¥à¤¯à¥‡ आणि इनपà¥à¤Ÿ सेटिंगà¥à¤œà¤®à¤§à¥à¤¯à¥‡ \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" तपासा. आपलà¥à¤¯à¤¾ डिवà¥à¤¹à¤¾à¤‡à¤¸à¤µà¤° चालणà¥à¤¯à¤¾à¤¸à¤¾à¤ ी तà¥à¤¯à¤¾à¤¸ हे अधिकृत करेल."</string> <string name="setup_step1_finished_instruction" msgid="8701441895377434947">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> आपलà¥à¤¯à¤¾ à¤à¤¾à¤·à¤¾à¤‚मधà¥à¤¯à¥‡ आणि इनपà¥à¤Ÿ सेटिंगà¥à¤œà¤®à¤§à¥à¤¯à¥‡ आधीपासून सकà¥à¤·à¤® केला आहे, तà¥à¤¯à¤¾à¤®à¥à¤³à¥‡ हे चरण पूरà¥à¤£ à¤à¤¾à¤²à¥‡ आहे. पà¥à¤¢à¥€à¤² चरणावर!"</string> - <string name="setup_step1_action" msgid="4366513534999901728">"सेटिंगà¥à¤œà¤®à¤§à¥à¤¯à¥‡ सकà¥à¤·à¤® करा"</string> + <string name="setup_step1_action" msgid="4366513534999901728">"सेटिंगà¥à¤œà¤®à¤§à¥à¤¯à¥‡ सà¥à¤°à¥‚ करा"</string> <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> वर सà¥à¤µà¤¿à¤š करा"</string> - <string name="setup_step2_instruction" msgid="9141481964870023336">"पà¥à¤¢à¥‡, आपली सकà¥à¤°à¤¿à¤¯ मजकूर-इनपà¥à¤Ÿ पदà¥à¤§à¤¤ मà¥à¤¹à¤£à¥‚न \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" निवडा."</string> + <string name="setup_step2_instruction" msgid="9141481964870023336">"पà¥à¤¢à¥‡, तà¥à¤®à¤šà¥€ सकà¥à¤°à¤¿à¤¯ मजकूर-इनपà¥à¤Ÿ पदà¥à¤§à¤¤ मà¥à¤¹à¤£à¥‚न \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" निवडा."</string> <string name="setup_step2_action" msgid="1660330307159824337">"इनपà¥à¤Ÿ पदà¥à¤§à¤¤à¥€ सà¥à¤µà¤¿à¤š करा"</string> - <string name="setup_step3_title" msgid="3154757183631490281">"अà¤à¤¿à¤¨à¤‚दन, आता आपण तयार आहात!"</string> - <string name="setup_step3_instruction" msgid="8025981829605426000">"आता आपण <xliff:g id="APPLICATION_NAME">%s</xliff:g> सह आपलà¥à¤¯à¤¾ सरà¥à¤µ आवडतà¥à¤¯à¤¾ अॅपà¥à¤¸à¤®à¤§à¥à¤¯à¥‡ टाइप करू शकता."</string> + <string name="setup_step3_title" msgid="3154757183631490281">"अà¤à¤¿à¤¨à¤‚दन, आता तà¥à¤®à¥à¤¹à¥€ तयार आहात!"</string> + <string name="setup_step3_instruction" msgid="8025981829605426000">"आता तà¥à¤®à¥à¤¹à¥€ <xliff:g id="APPLICATION_NAME">%s</xliff:g> सह आपलà¥à¤¯à¤¾ सरà¥à¤µ आवडतà¥à¤¯à¤¾ अॅपà¥à¤¸à¤®à¤§à¥à¤¯à¥‡ टाइप करू शकता."</string> <string name="setup_step3_action" msgid="600879797256942259">"अतिरिकà¥à¤¤ à¤à¤¾à¤·à¤¾ कॉनà¥à¤«à¤¿à¤—र करा"</string> <string name="setup_finish_action" msgid="276559243409465389">"समापà¥à¤¤"</string> - <string name="show_setup_wizard_icon" msgid="5008028590593710830">"अॅप आयकन दरà¥à¤¶à¤µà¤¾"</string> + <string name="show_setup_wizard_icon" msgid="5008028590593710830">"अâ€à¥…प आयकन दरà¥à¤¶à¤µà¤¾"</string> <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"लाà¤à¤šà¤° मधà¥à¤¯à¥‡ अॅपà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨ आयकन दाखवा"</string> <string name="app_name" msgid="6320102637491234792">"शबà¥à¤¦à¤•à¥‹à¤¶ पà¥à¤°à¤¦à¤¾à¤¤à¤¾"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"शबà¥à¤¦à¤•à¥‹à¤¶ पà¥à¤°à¤¦à¤¾à¤¤à¤¾"</string> diff --git a/java/res/values-my/strings.xml b/java/res/values-my/strings.xml index 685dc9b640a30b56704caf973ff461a77168c0da..10709bba7bb4bc4fe67916a2f8b76b75cf3202ed 100644 --- a/java/res/values-my/strings.xml +++ b/java/res/values-my/strings.xml @@ -25,7 +25,7 @@ <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"စာလုံးပေါင်းစစ်စနစ်က သင့်အဆက်အသွယ်စာရင်းမှ ရယူအသုံးပြုသည်"</string> <string name="vibrate_on_keypress" msgid="5258079494276955460">"á€á€œá€¯á€á€ºá€”ှá€á€•á€ºá€žá€Šá€ºá€”ှင့် á€á€¯á€¶á€á€«á€…ေပါ"</string> <string name="sound_on_keypress" msgid="6093592297198243644">"á€á€œá€¯á€á€ºá€”ှá€á€•á€ºá€œá€»á€¾á€„် အသံမြည်"</string> - <string name="popup_on_keypress" msgid="123894815723512944">"ကီးနှá€á€•á€ºá€œá€á€¯á€€á€ºá€žá€Šá€ºá€”ှင့် ပေါ်လာရန်"</string> + <string name="popup_on_keypress" msgid="123894815723512944">"á€á€œá€¯á€á€ºá€”ှá€á€•á€ºá€œá€á€¯á€€á€ºá€žá€Šá€ºá€”ှင့် ပေါ်လာရန်"</string> <string name="settings_screen_preferences" msgid="2696713156722014624">"ရွေးá€á€»á€šá€ºá€…ရာများ"</string> <string name="settings_screen_accounts" msgid="2786418968536696670">"အကောင့်များ & ကá€á€¯á€šá€ºá€•á€á€¯á€„်ကá€á€…္စ"</string> <string name="settings_screen_appearance" msgid="7358046399111611615">"ပုံပန်းသွင်ပြင် & အပြင်အဆင်များ"</string> @@ -91,8 +91,8 @@ <string name="language_selection_title" msgid="3666971864764478269">"ဘာသာစကားများ"</string> <string name="help_and_feedback" msgid="5328219371839879161">"အကူအညီနှင့် အကြံပြုá€á€»á€€á€º"</string> <string name="select_language" msgid="5709487854987078367">"ဘာသာစကားများ"</string> - <string name="hint_add_to_dictionary" msgid="2645988432867033007">"သá€á€™á€ºá€¸á€†á€Šá€ºá€¸á€›á€”် နောက်á€á€…်ကြá€á€™á€º á€á€á€¯á€·á€•á€«"</string> - <string name="hint_add_to_dictionary_without_word" msgid="6710206006427574423">"သá€á€™á€ºá€¸á€†á€Šá€ºá€¸á€›á€”် ဤနေရာá€á€½á€„် á€á€á€¯á€·á€•á€«"</string> + <string name="hint_add_to_dictionary" msgid="2645988432867033007">"သá€á€™á€ºá€¸á€›á€”် နောက်á€á€…်ကြá€á€™á€º á€á€á€¯á€·á€•á€«"</string> + <string name="hint_add_to_dictionary_without_word" msgid="6710206006427574423">"သá€á€™á€ºá€¸á€›á€”် ဤနေရာá€á€½á€„် á€á€á€¯á€·á€•á€«"</string> <string name="has_dictionary" msgid="6071847973466625007">"အဘá€á€“ါန်ရနá€á€¯á€„်"</string> <string name="keyboard_layout" msgid="8451164783510487501">"ကီးဘုá€á€ºá€¡á€›á€±á€¬á€„်"</string> <string name="switch_accounts" msgid="3321216593719006162">"အကောင့်များကá€á€¯ ပြောင်းရန်"</string> @@ -156,7 +156,7 @@ <string name="setup_step3_instruction" msgid="8025981829605426000">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ဖြင့်သင့် ကြá€á€¯á€€á€ºá€”ှစ်သက်ရာ အပလီကေးရှင်းများအားလုံးအား ရá€á€¯á€€á€ºá€‘ည့်နá€á€¯á€„်ပါပြီá‹"</string> <string name="setup_step3_action" msgid="600879797256942259">"ထပ်ပေါင်းဘာသာစကားများ ပြုပြင်မည်"</string> <string name="setup_finish_action" msgid="276559243409465389">"ပြီးဆုံးသွားပြီ"</string> - <string name="show_setup_wizard_icon" msgid="5008028590593710830">"အက်ပ်သင်္ကေဠပြပါ"</string> + <string name="show_setup_wizard_icon" msgid="5008028590593710830">"အက်ပ်သင်္ကေá€á€•á€¼á€á€¼á€„်း"</string> <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"launcher á€á€½á€„် အပလီကေးရှင်း သင်္ကေá€á€€á€á€¯á€•á€¼á€›á€”်"</string> <string name="app_name" msgid="6320102637491234792">"အဘá€á€“ါန် ထောက်ပံ့သူ"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"အဘá€á€“ါန် ထောက်ပံ့သူ"</string> diff --git a/java/res/values-ne/strings-emoji-descriptions.xml b/java/res/values-ne/strings-emoji-descriptions.xml index 23961561a60fa2f2fc6beb728c527055dbc3e06d..b2ee8381e356f80288a69dc999c721be863bd794 100644 --- a/java/res/values-ne/strings-emoji-descriptions.xml +++ b/java/res/values-ne/strings-emoji-descriptions.xml @@ -249,7 +249,7 @@ <string name="spoken_emoji_1F194" msgid="4903128609556175887">"चारपाते ID"</string> <string name="spoken_emoji_1F195" msgid="1433142500411060924">"चारपाते नयाà¤"</string> <string name="spoken_emoji_1F196" msgid="8825160701159634202">"चारपाते N G"</string> - <string name="spoken_emoji_1F197" msgid="7841079241554176535">"चारपाते ठीक"</string> + <string name="spoken_emoji_1F197" msgid="7841079241554176535">"चारपाते ठिक"</string> <string name="spoken_emoji_1F198" msgid="7020298909426960622">"चारपाते SOS"</string> <string name="spoken_emoji_1F199" msgid="5971252667136235630">"उदà¥à¤—ार चिनà¥à¤¹ साथ चारपाते"</string> <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"चारपाते बिरà¥à¤¦à¥à¤§"</string> @@ -651,7 +651,7 @@ <string name="spoken_emoji_1F449" msgid="4764447975177805991">"औंला इशारा पछाडिबाट सूचकांक दायाà¤"</string> <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"मà¥à¤ ी चिनà¥à¤¹"</string> <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"हलà¥à¤²à¤¾à¤à¤•à¥‹ हात चिनà¥à¤¹"</string> - <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"ठीक हात चिनà¥à¤¹"</string> + <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"ठिक हात चिनà¥à¤¹"</string> <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"औंठा माथी चिनà¥à¤¹"</string> <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"औंठा तल चिनà¥à¤¹"</string> <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"ताली चिनà¥à¤¹"</string> @@ -868,7 +868,7 @@ <string name="spoken_emoji_1F520" msgid="7335109890337048900">"ठà¥à¤²à¥‹ लà¥à¤¯à¤¾à¤Ÿà¤¿à¤¨ अकà¥à¤·à¤°à¤•à¤¾ आगत पà¥à¤°à¤¤à¥€à¤•"</string> <string name="spoken_emoji_1F521" msgid="2693185864450925778">"सानो लà¥à¤¯à¤¾à¤Ÿà¤¿à¤¨ अकà¥à¤·à¤°à¤•à¤¾ आगत पà¥à¤°à¤¤à¥€à¤•"</string> <string name="spoken_emoji_1F522" msgid="8419130286280673347">"संखà¥à¤¯à¤¾à¤•à¤¾ लागि आगत पà¥à¤°à¤¤à¥€à¤•"</string> - <string name="spoken_emoji_1F523" msgid="3318053476401719421">"पà¥à¤°à¤¤à¥€à¤•à¤•à¥‹ लागि पà¥à¤°à¤¤à¥€à¤• पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string> + <string name="spoken_emoji_1F523" msgid="3318053476401719421">"पà¥à¤°à¤¤à¥€à¤•à¤•à¥‹ लागि पà¥à¤°à¤¤à¥€à¤• पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string> <string name="spoken_emoji_1F524" msgid="1625073997522316331">"लà¥à¤¯à¤¾à¤Ÿà¤¿à¤¨ अकà¥à¤·à¤°à¤•à¤¾ आगत पà¥à¤°à¤¤à¥€à¤•"</string> <string name="spoken_emoji_1F525" msgid="4083884189172963790">"आगो"</string> <string name="spoken_emoji_1F526" msgid="2035494936742643580">"बिजà¥à¤²à¥€ बतà¥à¤¤à¥€"</string> @@ -1082,7 +1082,7 @@ <!-- no translation found for spoken_emoji_1F644 (446284817942609022) --> <skip /> <string name="spoken_emoji_1F645" msgid="5202090629227587076">"कà¥à¤¨à¥ˆ रामà¥à¤°à¥‹ सङà¥à¤•à¥‡à¤¤ बिना साथ अनà¥à¤¹à¤¾à¤°"</string> - <string name="spoken_emoji_1F646" msgid="6734425134415138134">"ठीक इशारा साथ अनà¥à¤¹à¤¾à¤°"</string> + <string name="spoken_emoji_1F646" msgid="6734425134415138134">"ठिक इशारा साथ अनà¥à¤¹à¤¾à¤°"</string> <string name="spoken_emoji_1F647" msgid="1090285518444205483">"गहिरो निहà¥à¤°à¥‡à¤•à¥‹ वà¥à¤¯à¤•à¥à¤¤à¤¿"</string> <string name="spoken_emoji_1F648" msgid="8978535230610522356">"हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥-कà¥à¤¨à¥ˆ-दà¥à¤·à¥à¤Ÿ बाà¤à¤¦à¤°"</string> <string name="spoken_emoji_1F649" msgid="8486145279809495102">"सà¥à¤¨-कà¥à¤¨à¥ˆ-दà¥à¤·à¥à¤Ÿ बाà¤à¤¦à¤°"</string> diff --git a/java/res/values-ne/strings-talkback-descriptions.xml b/java/res/values-ne/strings-talkback-descriptions.xml index 4a8438693da52d77ffeed5743b59b63a124baf85..5d4d1315b077c493b3950ecd5a02ce27037baad5 100644 --- a/java/res/values-ne/strings-talkback-descriptions.xml +++ b/java/res/values-ne/strings-talkback-descriptions.xml @@ -72,7 +72,7 @@ <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"सà¥à¤¥à¤¾à¤¨à¤¹à¤°à¥‚"</string> <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"पà¥à¤°à¤¤à¤¿à¤•à¤¹à¤°à¥‚"</string> <string name="spoken_descrption_emoji_category_flags" msgid="5971573825866381472">"à¤à¤£à¥à¤¡à¤¾à¤¹à¤°à¥‚"</string> - <string name="spoken_descrption_emoji_category_eight_smiley_people" msgid="5682663819532433464">"सà¥à¤®à¤¾à¤‡à¤²à¥€ र वà¥à¤¯à¤•à¥à¤¤à¤¿à¤¹à¤°à¥‚"</string> + <string name="spoken_descrption_emoji_category_eight_smiley_people" msgid="5682663819532433464">"सà¥à¤®à¤¾à¤‡à¤²à¥€ र मानà¥à¤›à¥‡à¤¹à¤°à¥‚"</string> <string name="spoken_descrption_emoji_category_eight_animals_nature" msgid="5844950234883716704">"पशà¥à¤¹à¤°à¥‚ र पà¥à¤°à¤•à¥ƒà¤¤à¤¿"</string> <string name="spoken_descrption_emoji_category_eight_food_drink" msgid="6196944764485349650">"खादà¥à¤¯ र पेय"</string> <string name="spoken_descrption_emoji_category_eight_travel_places" msgid="3834085499381434611">"यातà¥à¤°à¤¾ र सà¥à¤¥à¤¾à¤¨à¤¹à¤°à¥‚"</string> diff --git a/java/res/values-ne/strings.xml b/java/res/values-ne/strings.xml index b552dd5eed14d19efc7abb1219d13feed0766fd1..03ee8b016d4c22642e2e18b8597c1d5c3cda27f0 100644 --- a/java/res/values-ne/strings.xml +++ b/java/res/values-ne/strings.xml @@ -98,7 +98,7 @@ <string name="switch_accounts" msgid="3321216593719006162">"खाताहरू सà¥à¤µà¤¿à¤š गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string> <string name="no_accounts_selected" msgid="2073821619103904330">"कà¥à¤¨à¥ˆ खाता चयन गरिà¤à¤•à¥‹ छैन"</string> <string name="account_selected" msgid="2846876462199625974">"हाल पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¦à¥ˆ <xliff:g id="EMAIL_ADDRESS">%1$s</xliff:g>"</string> - <string name="account_select_ok" msgid="9141195141763227797">"ठीक छ"</string> + <string name="account_select_ok" msgid="9141195141763227797">"ठिक छ"</string> <string name="account_select_cancel" msgid="5181012062618504340">"रदà¥à¤¦ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string> <string name="account_select_sign_out" msgid="3299651159390187933">"बाहिर निकलà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string> <string name="account_select_title" msgid="6279711684772922649">"पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨ खाता चयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string> @@ -146,14 +146,14 @@ <string name="setup_next_action" msgid="371821437915144603">"अरà¥à¤•à¥‹ चरण"</string> <string name="setup_steps_title" msgid="6400373034871816182">"सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरà¥à¤¦à¥ˆ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step1_title" msgid="3147967630253462315">"सकà¥à¤·à¤® पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> - <string name="setup_step1_instruction" msgid="4295448056733329661">"कृपया आफà¥à¤¨à¥‹ à¤à¤¾à¤·à¤¾ र इनपà¥à¤Ÿ समà¥à¤¬à¤¨à¥à¤§à¥€ सेटिङहरूमा \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—लाई जाà¤à¤š गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤ यस कारबाहीले अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—लाई तपाईà¤à¤•à¥‹ यनà¥à¤¤à¥à¤°à¤®à¤¾ सञà¥à¤šà¤¾à¤²à¤¨ हà¥à¤¨ आधिकार पà¥à¤°à¤¦à¤¾à¤¨ गरà¥à¤¨à¥‡à¤›à¥¤"</string> + <string name="setup_step1_instruction" msgid="4295448056733329661">"कृपया आफà¥à¤¨à¥‹ à¤à¤¾à¤·à¤¾ र इनपà¥à¤Ÿ समà¥à¤¬à¤¨à¥à¤§à¥€ सेटिङहरूमा \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—लाई जाà¤à¤š गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤ यस कारबाहीले अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—लाई तपाईà¤à¤•à¥‹ यनà¥à¤¤à¥à¤°à¤®à¤¾ सञà¥à¤šà¤¾à¤²à¤¨ हà¥à¤¨ आधिकार पà¥à¤°à¤¦à¤¾à¤¨ गरà¥à¤¨à¥‡ छ।"</string> <string name="setup_step1_finished_instruction" msgid="8701441895377434947">"तपाईà¤à¤•à¥‹ à¤à¤¾à¤·à¤¾ र इनपà¥à¤Ÿ समà¥à¤¬à¤¨à¥à¤§à¥€ सेटिङहरूमा <xliff:g id="APPLICATION_NAME">%s</xliff:g> लाई पहिले नै सकà¥à¤°à¤¿à¤¯ गरिà¤à¤•à¥‹ छ, तà¥à¤¯à¤¸à¥ˆà¤²à¥‡ यो चरण समà¥à¤ªà¤¨à¥à¤¨ à¤à¤‡à¤¸à¤•à¥‡à¤•à¥‹ छ। अरà¥à¤•à¥‹ चरणमा जानà¥à¤¹à¥‹à¤¸à¥!"</string> <string name="setup_step1_action" msgid="4366513534999901728">"सेटिङहरूमा सकà¥à¤·à¤® पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string> <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>मा सà¥à¤µà¤¿à¤š गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string> <string name="setup_step2_instruction" msgid="9141481964870023336">"तà¥à¤¯à¤¸à¤ªà¤›à¤¿, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" लाई तपाईà¤à¤•à¥‹ सकà¥à¤°à¤¿à¤¯ पाठइनपà¥à¤Ÿ विधिका रूपमा चयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤"</string> <string name="setup_step2_action" msgid="1660330307159824337">"इनपà¥à¤Ÿ विधि सà¥à¤µà¤¿à¤š गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string> <string name="setup_step3_title" msgid="3154757183631490281">"बधाई छ, तपाईà¤à¤²à¥‡ सेट पà¥à¤°à¤¾ गरà¥à¤¨à¥à¤à¤¯à¥‹!"</string> - <string name="setup_step3_instruction" msgid="8025981829605426000">"अब तपाईं <xliff:g id="APPLICATION_NAME">%s</xliff:g>का साथ तपाईंका समà¥à¤ªà¥‚रà¥à¤£ मनपरà¥à¤¨à¥‡ अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—हरू टाइप गरà¥à¤¨ सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤›à¥¤"</string> + <string name="setup_step3_instruction" msgid="8025981829605426000">"अब तपाईं <xliff:g id="APPLICATION_NAME">%s</xliff:g>का साथ तपाईंका समà¥à¤ªà¥‚रà¥à¤£ मन परà¥à¤¨à¥‡ अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—हरू टाइप गरà¥à¤¨ सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤›à¥¤"</string> <string name="setup_step3_action" msgid="600879797256942259">"थप à¤à¤¾à¤·à¤¾à¤¹à¤°à¥‚ कनà¥à¤«à¤¿à¤—र गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"</string> <string name="setup_finish_action" msgid="276559243409465389">"समापà¥à¤¤ à¤à¤¯à¥‹"</string> <string name="show_setup_wizard_icon" msgid="5008028590593710830">"अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— आइकन देखाउनà¥à¤¹à¥‹à¤¸à¥"</string> @@ -195,7 +195,7 @@ <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"पदावली"</string> <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"थप विकलà¥à¤ªà¤¹à¤°à¥‚"</string> <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"कम विकलà¥à¤ªà¤¹à¤°à¥‚"</string> - <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"ठीक छ"</string> + <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"ठिक छ"</string> <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"शबà¥à¤¦:"</string> <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"सरà¥à¤Ÿà¤•à¤Ÿ:"</string> <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"à¤à¤¾à¤·à¤¾:"</string> diff --git a/java/res/values-nl/strings-emoji-descriptions.xml b/java/res/values-nl/strings-emoji-descriptions.xml index 1a355072ff1df82b9552aa1af12bfbd258d03945..583e04f55d396ef4657c148ee3639c0a833d50e7 100644 --- a/java/res/values-nl/strings-emoji-descriptions.xml +++ b/java/res/values-nl/strings-emoji-descriptions.xml @@ -416,7 +416,7 @@ <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Verjaardagstaart"</string> <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Pompoenlantaarn"</string> <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Kerstboom"</string> - <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Kerstman"</string> + <string name="spoken_emoji_1F385" msgid="1754174063483626367">"De kerstman"</string> <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Vuurwerk"</string> <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Sterretje"</string> <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Ballon"</string> @@ -870,7 +870,7 @@ <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Invoersymbool voor cijfers"</string> <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Invoersymbool voor symbolen"</string> <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Invoersymbool voor Latijnse letters"</string> - <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Vuur"</string> + <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Brandweer"</string> <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Zaklamp"</string> <string name="spoken_emoji_1F527" msgid="134257142354034271">"Moersleutel"</string> <string name="spoken_emoji_1F528" msgid="700627429570609375">"Hamer"</string> diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml index 195821b3c2ce0a74341a342059ec55c7e44475eb..4951f97ac9e7e23413d85d32931690f7dfc65101 100644 --- a/java/res/values-nl/strings.xml +++ b/java/res/values-nl/strings.xml @@ -89,7 +89,7 @@ <string name="voice_input_disabled_summary" msgid="6323489602945135165">"Geen spraakinvoermethoden ingeschakeld. Bekijk de instellingen bij \'Talen en invoer\'."</string> <string name="configure_input_method" msgid="373356270290742459">"Invoermethoden configureren"</string> <string name="language_selection_title" msgid="3666971864764478269">"Talen"</string> - <string name="help_and_feedback" msgid="5328219371839879161">"Help en feedback"</string> + <string name="help_and_feedback" msgid="5328219371839879161">"Hulp en feedback"</string> <string name="select_language" msgid="5709487854987078367">"Talen"</string> <string name="hint_add_to_dictionary" msgid="2645988432867033007">"Tik nogmaals om op te slaan"</string> <string name="hint_add_to_dictionary_without_word" msgid="6710206006427574423">"Tik hier om op te slaan"</string> diff --git a/java/res/values-pa/strings.xml b/java/res/values-pa/strings.xml index bcce742a0dae72cf575317499913bdee26811a75..0f972e52a457e84045f4009a6c5c25212aed14e1 100644 --- a/java/res/values-pa/strings.xml +++ b/java/res/values-pa/strings.xml @@ -62,7 +62,7 @@ <string name="use_double_space_period" msgid="8781529969425082860">"ਡਬਲ-ਸਪੇਸ ਡੰਡੀ"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"ਸਪੇਸਬਾਰ ’ਤੇ ਡਬਲ ਟੈਪ ਕਰਨਾ ਇੱਕ ਡੰਡੀ ਤੋਂ ਬਾਅਦ ਇੱਕ ਸਪੇਸ ਦਾਖਲ ਕਰਦਾ ਹੈ"</string> <string name="auto_cap" msgid="1719746674854628252">"ਆਟੋ-ਕੈਪਿਟਲਾਈਜ਼ੇਸ਼ਨ"</string> - <string name="auto_cap_summary" msgid="7934452761022946874">"ਹਰੇਕ ਵਾਕ ਦਾ ਪਹਿਲਾ ਸ਼ਬਦ ਕੈਪੀਟਲਾਈਜ਼ ਕਰੋ"</string> + <string name="auto_cap_summary" msgid="7934452761022946874">"ਹਰੇਕ ਵਾਕ ਦਾ ਪਹਿਲਾ ਅੱਖਰ ਵੱਡਾ ਕਰੋ"</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"ਨਿੱਜੀ ਸ਼ਬਦਕੋਸ਼"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"à¨à¨¡-ਆਨ ਸ਼ਬਦਕੋਸ਼"</string> <string name="main_dictionary" msgid="4798763781818361168">"ਮà©à©±à¨– ਸ਼ਬਦਕੋਸ਼"</string> @@ -80,12 +80,12 @@ <string name="bigram_prediction_summary" msgid="3896362682751109677">"ਸà©à¨à¨¾à¨… ਦੇਣ ਵਿੱਚ ਪਿਛਲਾ ਸ਼ਬਦ ਵਰਤੋ"</string> <string name="gesture_input" msgid="826951152254563827">"ਸੰਕੇਤ ਟਾਈਪਿੰਗ ਚਾਲੂ ਕਰੋ"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"ਅੱਖਰਾਂ ਰਾਹੀਂ ਸਲਾਈਡ ਕਰਕੇ ਇੱਕ ਸ਼ਬਦ ਦਾਖਲ ਕਰੋ"</string> - <string name="gesture_preview_trail" msgid="3802333369335722221">"ਸੰਕੇਤ ਲੀਹ ਦਿਖਾਓ"</string> + <string name="gesture_preview_trail" msgid="3802333369335722221">"ਸੰਕੇਤ ਲੀਹ ਦਿਖਾਓ"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ਸਕਿਰਿਆ ਫਲੋਟਿੰਗ ਪੂਰਵ-à¨à¨²à¨•"</string> <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ਸੰਕੇਤ ਦਿੰਦੇ ਸਮੇਂ ਸà©à¨à¨¾à¨‡à¨† ਗਿਆ ਸ਼ਬਦ ਦੇਖੋ"</string> <string name="gesture_space_aware" msgid="2078291600664682496">"ਵਾਕਾਂਸ਼ ਸੰਕੇਤ"</string> <string name="gesture_space_aware_summary" msgid="4371385818348528538">"ਸਪੇਸ ਕà©à©°à¨œà©€ ਸਰਕਾ ਕੇ ਸੰਕੇਤਾਂ ਦੇ ਦੌਰਾਨ ਸਪੇਸ ਇਨਪà©à¨Ÿ ਕਰੋ"</string> - <string name="voice_input" msgid="3583258583521397548">"ਵੌਇਸ ਇਨਪà©à¨Ÿ ਕà©à©°à¨œà©€"</string> + <string name="voice_input" msgid="3583258583521397548">"ਅਵਾਜ਼ੀ ਇਨਪà©à©±à¨Ÿ ਕà©à©°à¨œà©€"</string> <string name="voice_input_disabled_summary" msgid="6323489602945135165">"ਕੋਈ ਵੌਇਸ ਇਨਪà©à©±à¨Ÿ ਵਿਧੀਆਂ ਚਾਲੂ ਨਹੀਂ ਕੀਤੀਆਂ ਹਨ। à¨à¨¾à¨¸à¨¼à¨¾à¨µà¨¾à¨‚ ਅਤੇ ਇਨਪà©à©±à¨Ÿ ਸੈਟਿੰਗਾਂ ਦੀ ਜਾਂਚ ਕਰੋ।"</string> <string name="configure_input_method" msgid="373356270290742459">"ਇਨਪà©à©±à¨Ÿ ਵਿਧੀਆਂ ਦੀ ਰੂਪ-ਰੇਖਾ ਬਦਲੋ"</string> <string name="language_selection_title" msgid="3666971864764478269">"à¨à¨¾à¨¸à¨¼à¨¾à¨µà¨¾à¨‚"</string> diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml index 81b40f0c19b8fa78ab7de4ed8fff33e1b2647a3d..3912782e8dd5051c4a22575148e53852384491e8 100644 --- a/java/res/values-pl/strings.xml +++ b/java/res/values-pl/strings.xml @@ -57,7 +57,7 @@ <string name="settings_system_default" msgid="6268225104743331821">"Ustawienie domyÅ›lne"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"Proponuj osoby z kontaktów"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"W podpowiedziach i poprawkach używaj nazwisk z kontaktów"</string> - <string name="use_personalized_dicts" msgid="5167396352105467626">"Spersonalizowane sugestie"</string> + <string name="use_personalized_dicts" msgid="5167396352105467626">"Dostosowane sugestie"</string> <string name="enable_metrics_logging" msgid="5506372337118822837">"Popraw aplikacjÄ™ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="use_double_space_period" msgid="8781529969425082860">"Szybka kropka ze spacjÄ…"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dwukrotne klikniÄ™cie spacji wstawia kropkÄ™ ze spacjÄ…"</string> diff --git a/java/res/values-pt/strings-emoji-descriptions.xml b/java/res/values-pt/strings-emoji-descriptions.xml index 05d37397473fbb094bee318da62beab8ef9dc71c..e6f51a92a78a974dd823af22910d1b186466b1e9 100644 --- a/java/res/values-pt/strings-emoji-descriptions.xml +++ b/java/res/values-pt/strings-emoji-descriptions.xml @@ -813,7 +813,7 @@ <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Caixa de correio fechada com bandeira levantada"</string> <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Caixa de correio aberta com bandeira levantada"</string> <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Caixa de correio aberta com bandeira abaixada"</string> - <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Caixa de e-mails"</string> + <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Caixa de correio"</string> <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Corneta de correio"</string> <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Jornal"</string> <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Celular"</string> diff --git a/java/res/values-pt/strings-talkback-descriptions.xml b/java/res/values-pt/strings-talkback-descriptions.xml index fc0c6eec869c744fe3fa5047c38ce9504dcf5536..c41baac99de6c99508bea3ebfbb03b1df9914227 100644 --- a/java/res/values-pt/strings-talkback-descriptions.xml +++ b/java/res/values-pt/strings-talkback-descriptions.xml @@ -72,7 +72,7 @@ <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Lugares"</string> <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"SÃmbolos"</string> <string name="spoken_descrption_emoji_category_flags" msgid="5971573825866381472">"Sinalizações"</string> - <string name="spoken_descrption_emoji_category_eight_smiley_people" msgid="5682663819532433464">"Emoticon e pessoas"</string> + <string name="spoken_descrption_emoji_category_eight_smiley_people" msgid="5682663819532433464">"Emoticons e pessoas"</string> <string name="spoken_descrption_emoji_category_eight_animals_nature" msgid="5844950234883716704">"Animais e natureza"</string> <string name="spoken_descrption_emoji_category_eight_food_drink" msgid="6196944764485349650">"Comidas e bebidas"</string> <string name="spoken_descrption_emoji_category_eight_travel_places" msgid="3834085499381434611">"Viagens e lugares"</string> diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml index c3112be6ce6c1194842b2eb39c6d88fc6dda4680..019e28ca273931b31174924dd98a2b1bfa32ed87 100644 --- a/java/res/values-pt/strings.xml +++ b/java/res/values-pt/strings.xml @@ -23,15 +23,15 @@ <string name="english_ime_input_options" msgid="3909945612939668554">"Opções de entrada"</string> <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Buscar nomes de contatos"</string> <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"O corretor ortográfico usa entradas de sua lista de contatos"</string> - <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar ao tocar a tecla"</string> + <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar ao digitar"</string> <string name="sound_on_keypress" msgid="6093592297198243644">"Som ao tocar a tecla"</string> - <string name="popup_on_keypress" msgid="123894815723512944">"Exibir pop-up ao digitar"</string> + <string name="popup_on_keypress" msgid="123894815723512944">"Mostrar letra em pop-up ao digitar"</string> <string name="settings_screen_preferences" msgid="2696713156722014624">"Preferências"</string> <string name="settings_screen_accounts" msgid="2786418968536696670">"Contas e privacidade"</string> <string name="settings_screen_appearance" msgid="7358046399111611615">"Aparência e layouts"</string> <string name="settings_screen_gesture" msgid="8826372746901183556">"Escrita com gestos"</string> <string name="settings_screen_correction" msgid="1616818407747682955">"Correção de texto"</string> - <string name="settings_screen_advanced" msgid="7472408607625972994">"Avançadas"</string> + <string name="settings_screen_advanced" msgid="7472408607625972994">"Avançado"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Ativar teclado dividido"</string> <string name="cloud_sync_title" msgid="8579271074443847055">"Sincronização Teclado do Google"</string> @@ -62,14 +62,14 @@ <string name="use_double_space_period" msgid="8781529969425082860">"Duplo espaço para ponto"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"Toque duplo na barra de espaço insere um ponto seguido de espaço"</string> <string name="auto_cap" msgid="1719746674854628252">"Capitalização automática"</string> - <string name="auto_cap_summary" msgid="7934452761022946874">"Inicia a primeira palavra de cada frase com letra maiúscula"</string> + <string name="auto_cap_summary" msgid="7934452761022946874">"Iniciar a primeira palavra de cada frase com letra maiúscula"</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"Dicionário pessoal"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Dicionários complementares"</string> <string name="main_dictionary" msgid="4798763781818361168">"Dicionário principal"</string> <string name="prefs_show_suggestions" msgid="8026799663445531637">"Mostrar sugestões de correção"</string> <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Exibir sugestões de palavras durante a digitação"</string> <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Bloquear palavras ofensivas"</string> - <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Não sugere palavras potencialmente ofensivas"</string> + <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Não sugerir palavras potencialmente ofensivas"</string> <string name="auto_correction" msgid="7630720885194996950">"Correção automática"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"A barra de espaço e a pontuação corrigem automaticamente palavras com erro de digitação"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desativado"</string> @@ -77,7 +77,7 @@ <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Agressivo"</string> <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Muito agressivo"</string> <string name="bigram_prediction" msgid="1084449187723948550">"Sugerir palavra seguinte"</string> - <string name="bigram_prediction_summary" msgid="3896362682751109677">"Usa a palavra anterior ao fazer sugestões"</string> + <string name="bigram_prediction_summary" msgid="3896362682751109677">"Usar a palavra anterior ao fazer sugestões"</string> <string name="gesture_input" msgid="826951152254563827">"Ativar a escrita com gestos"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"Insere uma palavra deslizando os dedos pelas letras"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"Mostrar percurso do gesto"</string> @@ -121,7 +121,7 @@ <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"Alfabeto (Dvorak)"</string> <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabeto (Colemak)"</string> <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabeto (PC)"</string> - <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string> + <string name="subtype_emoji" msgid="7483586578074549196">"Emojis"</string> <string name="keyboard_theme" msgid="4909551808526178852">"Tema do teclado"</string> <string name="custom_input_styles_title" msgid="8429952441821251512">"Estilos personalizados"</string> <string name="add_style" msgid="6163126614514489951">"Adic. estilo"</string> @@ -137,8 +137,8 @@ <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Duração da vibração ao tocar"</string> <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volume ao tocar na tela"</string> <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Atraso ao pressionar teclas"</string> - <string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"Emoticons para teclado fÃsico"</string> - <string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"Tecla Alt fÃsica mostra a paleta de emoticons"</string> + <string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"Emojis para teclado fÃsico"</string> + <string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"Exibe o teclado de emojis ao pressionar a tecla Alt"</string> <string name="button_default" msgid="3988017840431881491">"Padrão"</string> <string name="setup_welcome_title" msgid="6112821709832031715">"Bem-vindo ao <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_welcome_additional_description" msgid="8150252008545768953">"com entrada por gestos"</string> diff --git a/java/res/values-ru/strings-emoji-descriptions.xml b/java/res/values-ru/strings-emoji-descriptions.xml index a133412ff7e46ee2a83ce366c0ae5837f03ccb56..1c6f4e07ad008ef12f6220403f1c84c610ef0004 100644 --- a/java/res/values-ru/strings-emoji-descriptions.xml +++ b/java/res/values-ru/strings-emoji-descriptions.xml @@ -249,7 +249,7 @@ <string name="spoken_emoji_1F194" msgid="4903128609556175887">"Квадратный значок идентификатора."</string> <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Квадратный значок Ðовый."</string> <string name="spoken_emoji_1F196" msgid="8825160701159634202">"Квадратный значок Ðехорошо."</string> - <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Квадратный значок О\'кей."</string> + <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Квадратный значок Окей."</string> <string name="spoken_emoji_1F198" msgid="7020298909426960622">"Квадратный значок СОС."</string> <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Квадратный значок Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð²Ð¾Ñклицательным знаком."</string> <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"Квадратный значок Против."</string> @@ -651,7 +651,7 @@ <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Ð‘ÐµÐ»Ð°Ñ Ñ€ÑƒÐºÐ° Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼ пальцем вправо Ñ Ñ‚Ñ‹Ð»ÑŒÐ½Ð¾Ð¹ Ñтороны."</string> <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Кулак."</string> <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"ÐœÐ°ÑˆÑƒÑ‰Ð°Ñ Ñ€Ð°ÑÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð»Ð°Ð´Ð¾Ð½ÑŒ."</string> - <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Пальцы, Ñложенные знаком О\'кей."</string> + <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Пальцы, Ñложенные знаком Окей."</string> <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Большой палец вверх."</string> <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Большой палец вниз."</string> <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"ÐплодиÑменты."</string> diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml index 2415299d54dacf354fa945d13f56a990f106e868..40ab5b582170f065eb32e57d3f80ab95b7327628 100644 --- a/java/res/values-ru/strings.xml +++ b/java/res/values-ru/strings.xml @@ -58,7 +58,7 @@ <string name="use_contacts_dict" msgid="4435317977804180815">"ПодÑказывать имена"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"ПодÑказывать иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° оÑнове имен из ÑпиÑка контактов"</string> <string name="use_personalized_dicts" msgid="5167396352105467626">"ПользовательÑкие Ñловари"</string> - <string name="enable_metrics_logging" msgid="5506372337118822837">"Помочь улучшить <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> + <string name="enable_metrics_logging" msgid="5506372337118822837">"Помочь улучшить приложение <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="use_double_space_period" msgid="8781529969425082860">"Точки автоматичеÑки"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"Вводить точку Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð¾Ð¼ двойным нажатием пробела."</string> <string name="auto_cap" msgid="1719746674854628252">"Заглавные автоматичеÑки"</string> @@ -72,7 +72,7 @@ <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Ðе предлагать Ñлова, которые могут быть Ñочтены оÑкорбительными"</string> <string name="auto_correction" msgid="7630720885194996950">"ÐвтоиÑправление"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"ÐвтоматичеÑкое иÑправление опечаток при вводе знака Ð¿Ñ€ÐµÐ¿Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ пробела"</string> - <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Откл."</string> + <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Отключено"</string> <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Умеренное"</string> <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Ðктивно"</string> <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Очень активно"</string> diff --git a/java/res/values-sq/strings.xml b/java/res/values-sq/strings.xml index 5889c7e07855d87190c6eea665db30bc5d5693dd..7fc2837d3487c66a857c003faf258da55b8b6e1a 100644 --- a/java/res/values-sq/strings.xml +++ b/java/res/values-sq/strings.xml @@ -204,7 +204,7 @@ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Redakto fjalën"</string> <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Redakto"</string> <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Fshi"</string> - <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"Nuk ke asnjë fjalë në fjalorin e përdoruesit. Për të shtuar një fjalë, trokit te butoni Shto (+)."</string> + <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"Nuk ke asnjë fjalë në fjalorin e përdoruesit. Për të shtuar një fjalë, trokit te butoni \"Shto (+)\"."</string> <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Për të gjitha gjuhët"</string> <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Gjuhë të tjera…"</string> <string name="user_dict_settings_delete" msgid="110413335187193859">"Fshi"</string> diff --git a/java/res/values-sr/strings-talkback-descriptions.xml b/java/res/values-sr/strings-talkback-descriptions.xml index ae18556143e3aee9788f23b92384441563c8b0ee..e1728bf45dd1e2f23a9628102fb180fc3dd764c3 100644 --- a/java/res/values-sr/strings-talkback-descriptions.xml +++ b/java/res/values-sr/strings-talkback-descriptions.xml @@ -46,7 +46,7 @@ <string name="spoken_description_dot" msgid="5644176501632325560">"Тачка"</string> <string name="spoken_description_language_switch" msgid="6818666779313544553">"Пребаци језик"</string> <string name="spoken_description_action_next" msgid="431761808119616962">"Претходно"</string> - <string name="spoken_description_action_previous" msgid="2919072174697865110">"Следеће"</string> + <string name="spoken_description_action_previous" msgid="2919072174697865110">"Ðазад"</string> <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift је омогућен"</string> <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock је омогућен"</string> <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Режим Ñимбола"</string> diff --git a/java/res/values-sw/strings-config-important-notice.xml b/java/res/values-sw/strings-config-important-notice.xml index 7b10085b59c8727f1dd36fdfbd0e75bb2e29c906..efc283d430e5004eb92e67f8bc813ee1897f657a 100644 --- a/java/res/values-sw/strings-config-important-notice.xml +++ b/java/res/values-sw/strings-config-important-notice.xml @@ -20,5 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Jifunze kutoka kwenye mawasiliano yako na data iliyocharazwa ili kuboresha mapendekezo"</string> + <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Tumia mawasiliano yako na data unayocharaza, kujifunza ili kuboresha mapendekezo"</string> </resources> diff --git a/java/res/values-sw/strings-emoji-descriptions.xml b/java/res/values-sw/strings-emoji-descriptions.xml index f633d7cd003c092fa76514d5818e8c7d01d8848c..7010dd6d63898d6e338c985d1a78e5b4acb1c7c1 100644 --- a/java/res/values-sw/strings-emoji-descriptions.xml +++ b/java/res/values-sw/strings-emoji-descriptions.xml @@ -241,7 +241,7 @@ <string name="spoken_emoji_1F170" msgid="3817698686602826773">"Aina A ya damu"</string> <string name="spoken_emoji_1F171" msgid="3684218589626650242">"Aina B ya damu"</string> <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"Aina O ya damu"</string> - <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Eneo la kuegesha magari"</string> + <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Maegesho"</string> <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"Aina AB ya damu"</string> <string name="spoken_emoji_1F191" msgid="5386969264431429221">"Herufi CL ndani ya mraba"</string> <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Neno cool ndani ya mraba"</string> diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml index a3268d5ddecf9857a4e269629dbe0a1c66fc40f0..16cfa80c55fdf2ea3f4e76d2312c21a96fdc1fae 100644 --- a/java/res/values-sw/strings.xml +++ b/java/res/values-sw/strings.xml @@ -52,9 +52,9 @@ <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Onyesha wakati lugha ingizo mbalimbali zinapowezeshwa"</string> <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Kuchelewesha kutupa kitufe ibukizi"</string> <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Hakuna kuchelewa"</string> - <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Chaguo-msingi"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Chaguomsingi"</string> <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"Milisekunde <xliff:g id="MILLISECONDS">%s</xliff:g>"</string> - <string name="settings_system_default" msgid="6268225104743331821">"Chaguo-msingi la mfumo"</string> + <string name="settings_system_default" msgid="6268225104743331821">"Chaguomsingi la mfumo"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"Pendekeza majini ya Anwani"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Tumia majina kutoka kwa Anwani kama mapendekezo na marekebisho"</string> <string name="use_personalized_dicts" msgid="5167396352105467626">"Mapendekezo yaliyobadilishwa kukufaa"</string> @@ -136,10 +136,10 @@ <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Mfumo sawa wa maingizo tayari upo: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Bonyeza kitufe cha muda wa kutetema"</string> <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Bonyeza kitufe cha kiwango cha sauti"</string> - <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Ucheleweshaji wa kubofya kitufe na kushikilia"</string> + <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Ucheleweshaji unapobofya kitufe na kushikilia"</string> <string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"Emoji za kibodi halisi"</string> <string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"Kitufe halisi cha Alt huonyesha kibao cha emoji"</string> - <string name="button_default" msgid="3988017840431881491">"Chaguo-msingi"</string> + <string name="button_default" msgid="3988017840431881491">"Chaguomsingi"</string> <string name="setup_welcome_title" msgid="6112821709832031715">"Karibu kwenye <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_welcome_additional_description" msgid="8150252008545768953">"kwa Kuandika kwa ishara"</string> <string name="setup_start_action" msgid="8936036460897347708">"Anza kutumia"</string> @@ -194,7 +194,7 @@ <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Ongeza kwenye kamusi"</string> <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"Fungu la maneno"</string> <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"Hiari zingine"</string> - <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Hiari chache"</string> + <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Chaguo chache"</string> <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"Sawa"</string> <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Neno:"</string> <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Njia ya mkato:"</string> diff --git a/java/res/values-ta/strings.xml b/java/res/values-ta/strings.xml index 59853c30cea2386061f9eaeebd6f61283ae44c72..e15e42125e3ed44d4a17f93d268e9214e5a2715f 100644 --- a/java/res/values-ta/strings.xml +++ b/java/res/values-ta/strings.xml @@ -68,8 +68,8 @@ <string name="main_dictionary" msgid="4798763781818361168">"à®®à¯à®¤à®©à¯à®®à¯ˆ அகராதி"</string> <string name="prefs_show_suggestions" msgid="8026799663445531637">"திரà¯à®¤à¯à®¤à¯à®¤à®²à¯ விரà¯à®ªà¯à®ªà®™à¯à®•à®³à¯ˆà®•à¯ காடà¯à®Ÿà¯"</string> <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"உளà¯à®³à®¿à®Ÿà¯à®®à¯à®ªà¯‹à®¤à¯ பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ வாரà¯à®¤à¯à®¤à¯ˆà®•à®³à¯ˆà®•à¯ காடà¯à®Ÿà¯à®®à¯"</string> - <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"வனà¯à®®à¯Šà®´à®¿ சொறà¯à®•à®³à¯ˆà®¤à¯ தடà¯"</string> - <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"வனà¯à®®à¯Šà®´à®¿à®¯à®¾à®• இரà¯à®•à¯à®•à¯à®®à¯ சாதà¯à®¤à®¿à®¯à®®à¯à®³à¯à®³ சொறà¯à®•à®³à¯ˆà®ªà¯ பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®• வேணà¯à®Ÿà®¾à®®à¯"</string> + <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"பà¯à®£à¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®®à¯ சொறà¯à®•à®³à¯ˆà®¤à¯ தடà¯"</string> + <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"மனதைப௠பà¯à®£à¯à®ªà®Ÿà¯à®¤à¯à®¤à®•à¯ கூடிய சொறà¯à®•à®³à¯ˆà®ªà¯ பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®• வேணà¯à®Ÿà®¾à®®à¯"</string> <string name="auto_correction" msgid="7630720885194996950">"தனà¯à®©à®¿à®¯à®•à¯à®• திரà¯à®¤à¯à®¤à®®à¯"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"ஸà¯à®ªà¯‡à®¸à¯à®ªà®¾à®°à¯à®®à¯, நிறà¯à®¤à¯à®¤à®±à¯à®•à¯à®±à®¿à®•à®³à¯à®®à¯ தவறாக உளà¯à®³à®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿ வாரà¯à®¤à¯à®¤à¯ˆà®•à®³à¯ˆ தானாக திரà¯à®¤à¯à®¤à¯à®®à¯"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ஆஃபà¯"</string> diff --git a/java/res/values-te/strings.xml b/java/res/values-te/strings.xml index 2b155648476d0ab659590d38991e546ab67ac152..9233af8724df65e60ba9a7d8df669730ce36424a 100644 --- a/java/res/values-te/strings.xml +++ b/java/res/values-te/strings.xml @@ -71,12 +71,12 @@ <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"à°…à°à±à°¯à°‚తరకరమైన పదాలనౠబà±à°²à°¾à°•à± చేయి"</string> <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"సంà°à°¾à°µà±à°¯à°‚à°—à°¾ à°…à°à±à°¯à°‚తరకరమైన పదాలనౠసూచించవదà±à°¦à±"</string> <string name="auto_correction" msgid="7630720885194996950">"à°¸à±à°µà±€à°¯-సవరణ"</string> - <string name="auto_correction_summary" msgid="5625751551134658006">"à°¸à±à°ªà±‡à°¸à± బారౠమరియౠవిరామ à°šà°¿à°¹à±à°¨à°¾à°²à± తపà±à°ªà±à°—à°¾ టైపౠచేసిన పదాలనౠసà±à°µà°¯à°‚చాలకంగా సరి చేసà±à°¤à°¾à°¯à°¿"</string> + <string name="auto_correction_summary" msgid="5625751551134658006">"à°¸à±à°ªà±‡à°¸à± బారౠమరియౠవిరామ à°šà°¿à°¹à±à°¨à°¾à°²à± తపà±à°ªà±à°—à°¾ టైపౠచేసిన పదాలనౠఆటోమేటికà±â€Œà°—à°¾ సరి చేసà±à°¤à°¾à°¯à°¿"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ఆఫà±â€Œ చేయి"</string> <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"మధà±à°¯à°¸à±à°¥à°‚"</string> <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"తీవà±à°°à°‚"</string> <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"చాలా తీవà±à°°à°‚"</string> - <string name="bigram_prediction" msgid="1084449187723948550">"తరà±à°µà°¾à°¤-పదం సూచనలà±"</string> + <string name="bigram_prediction" msgid="1084449187723948550">"తరà±à°µà°¾à°¤à°¿-పదం సూచనలà±"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"సూచనలనౠరూపొందించడంలో à°®à±à°¨à±à°ªà°Ÿà°¿ పదానà±à°¨à°¿ ఉపయోగించà±"</string> <string name="gesture_input" msgid="826951152254563827">"సంజà±à°ž టైపింగà±â€Œà°¨à± à°ªà±à°°à°¾à°°à°‚à°à°¿à°‚à°šà°‚à°¡à°¿"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"à°…à°•à±à°·à°°à°¾à°² à°—à±à°‚à°¡à°¾ à°¸à±à°²à±ˆà°¡à± చేయడం à°¦à±à°µà°¾à°°à°¾ పదానà±à°¨à°¿ ఇనà±â€Œà°ªà±à°Ÿà± చేయండి"</string> @@ -156,8 +156,8 @@ <string name="setup_step3_instruction" msgid="8025981829605426000">"ఇపà±à°ªà±à°¡à± మీరౠ<xliff:g id="APPLICATION_NAME">%s</xliff:g>తో మీకౠఇషà±à°Ÿà°®à±ˆà°¨ à°…à°¨à±à°¨à°¿ à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°²à±à°²à±‹ టైపౠచేయవచà±à°šà±."</string> <string name="setup_step3_action" msgid="600879797256942259">"అదనపౠà°à°¾à°·à°²à°¨à± కానà±à°«à°¿à°—రౠచేయండి"</string> <string name="setup_finish_action" msgid="276559243409465389">"పూరà±à°¤à°¯à°¿à°‚ది"</string> - <string name="show_setup_wizard_icon" msgid="5008028590593710830">"à°…à°¨à±à°µà°°à±à°¤à°¨ à°šà°¿à°¹à±à°¨à°¾à°¨à±à°¨à°¿ చూపà±"</string> - <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"లాంచరà±â€Œà°²à±‹ à°…à°¨à±à°µà°°à±à°¤à°¨ à°šà°¿à°¹à±à°¨à°¾à°¨à±à°¨à°¿ à°ªà±à°°à°¦à°°à±à°¶à°¿à°‚à°šà±"</string> + <string name="show_setup_wizard_icon" msgid="5008028590593710830">"యాపà±â€Œ à°šà°¿à°¹à±à°¨à°¾à°¨à±à°¨à°¿ చూపà±"</string> + <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"లాంచరà±â€Œà°²à±‹ యాపà±â€Œ à°šà°¿à°¹à±à°¨à°¾à°¨à±à°¨à°¿ à°ªà±à°°à°¦à°°à±à°¶à°¿à°‚à°šà±"</string> <string name="app_name" msgid="6320102637491234792">"నిఘంటà±à°µà± à°ªà±à°°à°¦à°¾à°¤"</string> <string name="dictionary_provider_name" msgid="3027315045397363079">"నిఘంటà±à°µà± à°ªà±à°°à°¦à°¾à°¤"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"నిఘంటà±à°µà± సేవ"</string> diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml index cf2833fa7c1b63aeadd1b4e2f2265d4439bb606c..885b633f3d48fa5df67c8169c5bc8d8834e2f3fc 100644 --- a/java/res/values-th/strings.xml +++ b/java/res/values-th/strings.xml @@ -70,7 +70,7 @@ <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"à¹à¸ªà¸”งคำที่à¹à¸™à¸°à¸™à¸³à¸‚ณะพิมพ์"</string> <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"บล็à¸à¸à¸„ำที่ไม่เหมาะสม"</string> <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"ไม่à¹à¸™à¸°à¸™à¸³à¸„ำที่à¸à¸²à¸ˆà¹„ม่เหมาะสม"</string> - <string name="auto_correction" msgid="7630720885194996950">"à¸à¸²à¸£à¹à¸à¹‰à¹„ขà¸à¸±à¸•à¹‚นมัติ"</string> + <string name="auto_correction" msgid="7630720885194996950">"à¸à¸²à¸£à¹à¸à¹‰à¹„ขคำผิดà¸à¸±à¸•à¹‚นมัติ"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"à¸à¸”เว้นวรรคà¹à¸¥à¸°à¹€à¸„รื่à¸à¸‡à¸«à¸¡à¸²à¸¢à¸ˆà¸°à¹à¸à¹‰à¸„ำผิดà¸à¸±à¸•à¹‚นมัติ"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ปิด"</string> <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"ปานà¸à¸¥à¸²à¸‡"</string> diff --git a/java/res/values-tl/strings-emoji-descriptions.xml b/java/res/values-tl/strings-emoji-descriptions.xml index 20279206a610c6f22425be092ef4c69f206142c0..c3645875f5289cdb9c3d11c99cb4cd8af79cd025 100644 --- a/java/res/values-tl/strings-emoji-descriptions.xml +++ b/java/res/values-tl/strings-emoji-descriptions.xml @@ -272,10 +272,10 @@ <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Mahamog"</string> <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Nakasarang payong"</string> <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Gabi na may mga bituin"</string> - <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Pagsikat ng araw sa mga bundok"</string> - <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Pagsikat ng araw"</string> + <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Sunrise sa mga bundok"</string> + <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Sunrise"</string> <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Lungsod sa dapit-hapon"</string> - <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Paglubog ng araw sa mga gusali"</string> + <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Sunset sa mga gusali"</string> <string name="spoken_emoji_1F308" msgid="688704703985173377">"Bahaghari"</string> <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Tulay sa gabi"</string> <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Alon ng tubig"</string> diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml index 0566591fd609cc98d49d85c7d8bdfc4c7366d75c..2b4ca3e384255bee798ba87c3e79d7842237d8c0 100644 --- a/java/res/values-tl/strings.xml +++ b/java/res/values-tl/strings.xml @@ -68,7 +68,7 @@ <string name="main_dictionary" msgid="4798763781818361168">"Pangunahing diksyonaryo"</string> <string name="prefs_show_suggestions" msgid="8026799663445531637">"Ipakita ang mga suhestiyon sa pagwawasto"</string> <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Ipakita ang mga iminumungkahing salita habang nagta-type"</string> - <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"I-block ang nakakapanakit na salita"</string> + <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"I-block ang masakit na salita"</string> <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Huwag magmungkahi ng mga maaaring nakakapanakit na salita"</string> <string name="auto_correction" msgid="7630720885194996950">"Auto na pagwawasto"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"Awtomatikong tinatama ng spacebar at bantas ang maling na-type"</string> @@ -85,7 +85,7 @@ <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Tingnan ang iminungkahing salita habang gumagalaw"</string> <string name="gesture_space_aware" msgid="2078291600664682496">"Phrase gesture"</string> <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Maglagay ng espasyo sa pamamagitan ng pag-glide sa space key"</string> - <string name="voice_input" msgid="3583258583521397548">"Voice input key"</string> + <string name="voice_input" msgid="3583258583521397548">"Key sa voice input"</string> <string name="voice_input_disabled_summary" msgid="6323489602945135165">"Walang naka-enable na paraan ng pag-input gamit ang boses. Tingnan ang Mga setting ng wika at input."</string> <string name="configure_input_method" msgid="373356270290742459">"I-configure ang mga pamamaraan ng pag-input"</string> <string name="language_selection_title" msgid="3666971864764478269">"Mga Wika"</string> @@ -204,7 +204,7 @@ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"I-edit ang salita"</string> <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"I-edit"</string> <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"I-delete"</string> - <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"Wala kang anumang mga salita sa diksyonaryo ng user. Upang magdagdag ng salita, i-tap ang button na Magdagdag (+)."</string> + <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"Wala kang anumang salita sa diksyonaryo ng user. Para magdagdag ng salita, i-tap ang button na Magdagdag (+)."</string> <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Para sa lahat ng wika"</string> <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Higit pang mga wika..."</string> <string name="user_dict_settings_delete" msgid="110413335187193859">"I-delete"</string> diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml index d41ea6902a3de3d9925f79847b175df66a96f160..bfebd9789492dc9558b1301fac3bfd49b44be196 100644 --- a/java/res/values-tr/strings.xml +++ b/java/res/values-tr/strings.xml @@ -62,14 +62,14 @@ <string name="use_double_space_period" msgid="8781529969425082860">"Çift boÅŸlukla nokta ekle"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"BoÅŸluk çubuÄŸuna iki kez dokunmak nokta ve ardından bir boÅŸluk ekler"</string> <string name="auto_cap" msgid="1719746674854628252">"Otomatik büyük harf yap"</string> - <string name="auto_cap_summary" msgid="7934452761022946874">"Her cümlenin ilk harfini büyük harf yap"</string> + <string name="auto_cap_summary" msgid="7934452761022946874">"Her cümlenin ilk harfini büyük harf yapar"</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"KiÅŸisel sözlük"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Ek sözlükler"</string> <string name="main_dictionary" msgid="4798763781818361168">"Ana sözlük"</string> <string name="prefs_show_suggestions" msgid="8026799663445531637">"Düzeltme önerilerini göster"</string> <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Yazarken, önerilen kelimeleri görüntüle"</string> <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Rahatsız edici kelimeleri engelle"</string> - <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Rahatsız edici olabilecek kelimeleri önerme"</string> + <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Rahatsız edici olabilecek kelimeleri önermez"</string> <string name="auto_correction" msgid="7630720885194996950">"Otomatik düzelt"</string> <string name="auto_correction_summary" msgid="5625751551134658006">"BoÅŸluk tuÅŸu ve noktalama iÅŸaretleri yanlış yazılan kelimeleri otomatikman düzeltir"</string> <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Kapalı"</string> @@ -77,7 +77,7 @@ <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"GeniÅŸ ölçekte"</string> <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Çok geniÅŸ ölçekte"</string> <string name="bigram_prediction" msgid="1084449187723948550">"Sonraki kelime önerileri"</string> - <string name="bigram_prediction_summary" msgid="3896362682751109677">"Öneride bulunurken önceki kelimeyi kullan"</string> + <string name="bigram_prediction_summary" msgid="3896362682751109677">"Öneride bulunurken önceki kelimeyi kullanır"</string> <string name="gesture_input" msgid="826951152254563827">"Hareketle yazmayı etkinleÅŸtir"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"Kelime girmek için parmağınızı harflerin üzerinde kaydırın"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"Hareket izini göster"</string> diff --git a/java/res/values-uz/strings-action-keys.xml b/java/res/values-uz/strings-action-keys.xml index c395901785acdf4a647904926f134d3218fe930f..e6cb07cdd816acaa50cb0c86760e10df8306b0ca 100644 --- a/java/res/values-uz/strings-action-keys.xml +++ b/java/res/values-uz/strings-action-keys.xml @@ -22,7 +22,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="label_go_key" msgid="4033615332628671065">"OK"</string> <string name="label_next_key" msgid="5586407279258592635">"Keyingisi"</string> - <string name="label_previous_key" msgid="1421141755779895275">"Avvalgi"</string> + <string name="label_previous_key" msgid="1421141755779895275">"Orqaga"</string> <string name="label_done_key" msgid="7564866296502630852">"Tayyor"</string> <string name="label_send_key" msgid="482252074224462163">"Yuborish"</string> <string name="label_search_key" msgid="7965186050435796642">"Qidiruv"</string> diff --git a/java/res/values-uz/strings-talkback-descriptions.xml b/java/res/values-uz/strings-talkback-descriptions.xml index d6eb3c857386ccce5e61bb8fb0d5bbe45a9218c5..88434b74fe758ac5d0e0df7b4aedcd79554c8ec2 100644 --- a/java/res/values-uz/strings-talkback-descriptions.xml +++ b/java/res/values-uz/strings-talkback-descriptions.xml @@ -44,9 +44,9 @@ <string name="spoken_description_return" msgid="3183692287397645708">"Kiritish"</string> <string name="spoken_description_search" msgid="5099937658231911288">"Qidiruv"</string> <string name="spoken_description_dot" msgid="5644176501632325560">"Qora nuqta"</string> - <string name="spoken_description_language_switch" msgid="6818666779313544553">"Tilni o‘zgartirish"</string> + <string name="spoken_description_language_switch" msgid="6818666779313544553">"Tilni almashtirish"</string> <string name="spoken_description_action_next" msgid="431761808119616962">"Keyingisi"</string> - <string name="spoken_description_action_previous" msgid="2919072174697865110">"Avvalgi"</string> + <string name="spoken_description_action_previous" msgid="2919072174697865110">"Orqaga"</string> <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Yuqori registr yoqildi"</string> <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock yoqildi"</string> <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Belgilar rejimi"</string> @@ -65,7 +65,7 @@ <string name="keyboard_mode_text" msgid="9138789594969187494">"matn kiritish"</string> <string name="keyboard_mode_time" msgid="8558297845514402675">"vaqt"</string> <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string> - <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"So‘nggi ishlatilganlar"</string> + <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Oxirgilar"</string> <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Odamlar"</string> <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Narsa-buyumlar"</string> <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Tabiat"</string> diff --git a/java/res/values-uz/strings.xml b/java/res/values-uz/strings.xml index fea99751ff9650f0ea15a989d02babf870cb38e0..e29b9fb044c2431530dc153c8d74e7ee932cb375 100644 --- a/java/res/values-uz/strings.xml +++ b/java/res/values-uz/strings.xml @@ -31,7 +31,7 @@ <string name="settings_screen_appearance" msgid="7358046399111611615">"Ko‘rinish va sxema"</string> <string name="settings_screen_gesture" msgid="8826372746901183556">"Qo‘l uzmasdan yozish"</string> <string name="settings_screen_correction" msgid="1616818407747682955">"Matnni tuzatish"</string> - <string name="settings_screen_advanced" msgid="7472408607625972994">"Qo‘shimcha sozlamalar"</string> + <string name="settings_screen_advanced" msgid="7472408607625972994">"Kengaytirilgan sozlamalar"</string> <string name="settings_screen_theme" msgid="2137262503543943871">"Mavzu"</string> <string name="enable_split_keyboard" msgid="4177264923999493614">"Ikkiga ajratiladigan klaviaturani yoqish"</string> <string name="cloud_sync_title" msgid="8579271074443847055">"Klaviaturani sinxronlash"</string> @@ -47,8 +47,8 @@ <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Ushbu imkoniyatni yoqish uchun, iltimos, Google hisobingizni qo‘shing"</string> <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"“Biznes uchun Google Apps†hisobi mavjud qurilmalarda sinxronlab bo‘lmaydi"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Boshqa usullarga o‘tish"</string> - <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tilni o‘zgartirish tugmasi matn kiritish usulini ham o‘zgartiradi"</string> - <string name="show_language_switch_key" msgid="5915478828318774384">"Tilni o‘zgartirish tugmasi"</string> + <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tilni almashtirish tugmasi matn kiritish usulini ham o‘zgartiradi"</string> + <string name="show_language_switch_key" msgid="5915478828318774384">"Tilni almashtirish tugmasi"</string> <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Bir nechta matn kiritish tili mavjud bo‘lganda ko‘rsatilsin"</string> <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Yopilish vaqti"</string> <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Kechikishsiz"</string> diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml index 9da6de7173086f6f16bbb121b69fc7a062c59a67..60777608e3d579059c441ed1387ccce3abacad95 100644 --- a/java/res/values-vi/strings.xml +++ b/java/res/values-vi/strings.xml @@ -25,7 +25,7 @@ <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Trình kiểm tra chÃnh tả sá» dụng các mục nháºp từ danh bạ của bạn"</string> <string name="vibrate_on_keypress" msgid="5258079494276955460">"Rung khi nhấn phÃm"</string> <string name="sound_on_keypress" msgid="6093592297198243644">"Âm thanh khi nhấn phÃm"</string> - <string name="popup_on_keypress" msgid="123894815723512944">"Báºt lên khi nhấn phÃm"</string> + <string name="popup_on_keypress" msgid="123894815723512944">"Phông chữ lá»›n hÆ¡n báºt lên khi nhấn phÃm"</string> <string name="settings_screen_preferences" msgid="2696713156722014624">"Tùy chá»n"</string> <string name="settings_screen_accounts" msgid="2786418968536696670">"Tà i khoản và bảo máºt"</string> <string name="settings_screen_appearance" msgid="7358046399111611615">"Giao diện và bố cục"</string> @@ -85,7 +85,7 @@ <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Xem từ được Ä‘á» xuất trong khi dùng cá» chỉ"</string> <string name="gesture_space_aware" msgid="2078291600664682496">"Cá» chỉ nháºp cụm từ"</string> <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Nháºp dấu cách khi thá»±c hiện cá» chỉ bằng cách trượt tá»›i phÃm cách"</string> - <string name="voice_input" msgid="3583258583521397548">"Khóa nháºp giá»ng nói"</string> + <string name="voice_input" msgid="3583258583521397548">"PhÃm nháºp liệu bằng giá»ng nói"</string> <string name="voice_input_disabled_summary" msgid="6323489602945135165">"Không có phÆ°Æ¡ng thức nháºp bằng giá»ng nói nà o được báºt. Kiểm tra cà i đặt Ngôn ngữ và phÆ°Æ¡ng thức nháºp."</string> <string name="configure_input_method" msgid="373356270290742459">"Äịnh cấu hình phÆ°Æ¡ng thức nháºp"</string> <string name="language_selection_title" msgid="3666971864764478269">"Ngôn ngữ"</string> diff --git a/java/res/values-zh-rHK/strings-talkback-descriptions.xml b/java/res/values-zh-rHK/strings-talkback-descriptions.xml index c7a1b25fd7c53d1f12d40c2ba1943ef61b9fb354..3930dd3edecab1618d9bed0087483d2adcaa2a92 100644 --- a/java/res/values-zh-rHK/strings-talkback-descriptions.xml +++ b/java/res/values-zh-rHK/strings-talkback-descriptions.xml @@ -20,7 +20,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="spoken_use_headphones" msgid="4313642710742229868">"æ’上耳機å³å¯è½åˆ°ç³»çµ±æœ—讀密碼éµã€‚"</string> + <string name="spoken_use_headphones" msgid="4313642710742229868">"æ’上耳機å³å¯è½åˆ°ç³»çµ±è®€å‡ºå¯†ç¢¼éµã€‚"</string> <string name="spoken_current_text_is" msgid="4240549866156675799">"ç›®å‰æ–‡å—為 %s"</string> <string name="spoken_no_text_entered" msgid="1711276837961785646">"未輸入文å—"</string> <string name="spoken_auto_correct" msgid="8989324692167993804">"按「<xliff:g id="KEY_NAME">%1$s</xliff:g>ã€å¯å°‡ã€Œ<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>ã€ä¿®æ£ç‚ºã€Œ<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>ã€"</string> diff --git a/java/res/values-zh-rHK/strings.xml b/java/res/values-zh-rHK/strings.xml index 29b6812bf7f9344c6545b95790ee003221c3ef78..f5b7c949db3dedeee4c4d7fae40e6f85d1935e71 100644 --- a/java/res/values-zh-rHK/strings.xml +++ b/java/res/values-zh-rHK/strings.xml @@ -77,9 +77,9 @@ <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"åŠ å¼·æ¨¡å¼"</string> <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"æ¥µåº¦åŠ å¼·æ¨¡å¼"</string> <string name="bigram_prediction" msgid="1084449187723948550">"建è°ä¸‹ä¸€å€‹å—è©ž"</string> - <string name="bigram_prediction_summary" msgid="3896362682751109677">"æ ¹æ“šå‰ä¸€å€‹å—è©žæ出建è°"</string> + <string name="bigram_prediction_summary" msgid="3896362682751109677">"æ ¹æ“šä¸Šä¸€å€‹å—è©žæ供建è°"</string> <string name="gesture_input" msgid="826951152254563827">"啟用手勢輸入功能"</string> - <string name="gesture_input_summary" msgid="9180350639305731231">"é€éŽæ»‘動手指寫出å—æ¯ä¾†è¼¸å…¥å—è©ž"</string> + <string name="gesture_input_summary" msgid="9180350639305731231">"é€éŽåœ¨å—æ¯ä¸Šæ»‘動輸入å—è©ž"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"顯示觸控蹤跡"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"動態浮動é 覽"</string> <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"在啟用手勢輸入時顯示建è°çš„å—è©ž"</string> @@ -204,7 +204,7 @@ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"編輯å—è©ž"</string> <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"編輯"</string> <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"刪除"</string> - <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"用戶å—å…¸ä¸æ²’有任何å—詞。如è¦æ–°å¢žå—詞,請輕按「新增ã€(+) 按鈕。"</string> + <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"您的用戶å—å…¸ä¸æ²’有任何å—詞。如è¦æ–°å¢žå—詞,請輕按 [新增] (+) 按鈕。"</string> <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"所有語言"</string> <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"更多語言..."</string> <string name="user_dict_settings_delete" msgid="110413335187193859">"刪除"</string> diff --git a/java/res/values-zh-rTW/strings-config-important-notice.xml b/java/res/values-zh-rTW/strings-config-important-notice.xml index 326d6ce64af90d8126e101ddf2a973de51b5a20f..4c94b06f7f12a275b5e9750463afc4daf4d7f323 100644 --- a/java/res/values-zh-rTW/strings-config-important-notice.xml +++ b/java/res/values-zh-rTW/strings-config-important-notice.xml @@ -20,5 +20,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="use_personalized_dicts_summary" msgid="590432261305469627">"æ ¹æ“šä½ çš„é€šè¨Šç´€éŒ„å’Œä»¥å¾€è¼¸å…¥çš„è³‡æ–™æ”¹å–„å»ºè°é …ç›®"</string> + <string name="use_personalized_dicts_summary" msgid="590432261305469627">"æ ¹æ“šä½ çš„é€šè¨Šè¨˜éŒ„å’Œä»¥å¾€è¼¸å…¥çš„è³‡æ–™æ”¹å–„å»ºè°é …ç›®"</string> </resources> diff --git a/java/shared.keystore b/java/shared.keystore new file mode 100644 index 0000000000000000000000000000000000000000..9c2f1bdc2a0e798cb7c59e33a105ac2baa018e33 Binary files /dev/null and b/java/shared.keystore differ diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java index 442ab3e3a5ac428fdbc500cccea26884742bc90c..31e142e72cec6157d36edb40940313ed41887b35 100644 --- a/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java +++ b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java @@ -21,7 +21,7 @@ import android.media.AudioManager; import android.os.Build; import android.os.SystemClock; import android.provider.Settings; -import android.support.v4.view.accessibility.AccessibilityEventCompat; +import androidx.core.view.accessibility.AccessibilityEventCompat; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java index 237117d10a6e0a30cd3c3c97823e40efe4b01551..f7a11639d4326a5f6d7f903128e96f4d756cf893 100644 --- a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java +++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java @@ -18,9 +18,9 @@ package com.android.inputmethod.accessibility; import android.content.Context; import android.os.SystemClock; -import android.support.v4.view.AccessibilityDelegateCompat; -import android.support.v4.view.ViewCompat; -import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; +import androidx.core.view.AccessibilityDelegateCompat; +import androidx.core.view.ViewCompat; +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import android.util.Log; import android.view.MotionEvent; import android.view.View; diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java index 2de71cec9b993071a405e6f6bcb6d206ab84c3d7..a3511c63f42ea76f48ee991a4f9f514d254e7af1 100644 --- a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java +++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java @@ -18,11 +18,11 @@ package com.android.inputmethod.accessibility; import android.graphics.Rect; import android.os.Bundle; -import android.support.v4.view.ViewCompat; -import android.support.v4.view.accessibility.AccessibilityEventCompat; -import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; -import android.support.v4.view.accessibility.AccessibilityNodeProviderCompat; -import android.support.v4.view.accessibility.AccessibilityRecordCompat; +import androidx.core.view.ViewCompat; +import androidx.core.view.accessibility.AccessibilityEventCompat; +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; +import androidx.core.view.accessibility.AccessibilityNodeProviderCompat; +import androidx.core.view.accessibility.AccessibilityRecordCompat; import android.util.Log; import android.view.View; import android.view.accessibility.AccessibilityEvent; diff --git a/java-overridable/src/com/android/inputmethod/compat/AppWorkaroundsHelper.java b/java/src/com/android/inputmethod/compat/AppWorkaroundsHelper.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/compat/AppWorkaroundsHelper.java rename to java/src/com/android/inputmethod/compat/AppWorkaroundsHelper.java diff --git a/java/src/com/android/inputmethod/compat/UserManagerCompatUtils.java b/java/src/com/android/inputmethod/compat/UserManagerCompatUtils.java index 5dee3162914dc1b3d7d09dec24c9e680dc84ddd2..a0ca2c9f22f259a695793b7067304b76b47159f0 100644 --- a/java/src/com/android/inputmethod/compat/UserManagerCompatUtils.java +++ b/java/src/com/android/inputmethod/compat/UserManagerCompatUtils.java @@ -19,7 +19,7 @@ package com.android.inputmethod.compat; import android.content.Context; import android.os.Build; import android.os.UserManager; -import android.support.annotation.IntDef; +import androidx.annotation.IntDef; import java.lang.annotation.Retention; import java.lang.reflect.Method; diff --git a/java/src/com/android/inputmethod/compat/ViewCompatUtils.java b/java/src/com/android/inputmethod/compat/ViewCompatUtils.java index 16260ab6a4b02764ebf89138f4e0bfed9326fe1a..a584625e245115b2c9d43a94b843d85baebdd826 100644 --- a/java/src/com/android/inputmethod/compat/ViewCompatUtils.java +++ b/java/src/com/android/inputmethod/compat/ViewCompatUtils.java @@ -20,7 +20,7 @@ import android.view.View; import java.lang.reflect.Method; -// TODO: Use {@link android.support.v4.view.ViewCompat} instead of this utility class. +// TODO: Use {@link androidx.core.view.ViewCompat} instead of this utility class. // Currently {@link #getPaddingEnd(View)} and {@link #setPaddingRelative(View,int,int,int,int)} // are missing from android-support-v4 static library in KitKat SDK. public final class ViewCompatUtils { diff --git a/java-overridable/src/com/android/inputmethod/dictionarypack/DictionaryPackConstants.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryPackConstants.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/dictionarypack/DictionaryPackConstants.java rename to java/src/com/android/inputmethod/dictionarypack/DictionaryPackConstants.java diff --git a/java-overridable/src/com/android/inputmethod/dictionarypack/MetadataUriGetter.java b/java/src/com/android/inputmethod/dictionarypack/MetadataUriGetter.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/dictionarypack/MetadataUriGetter.java rename to java/src/com/android/inputmethod/dictionarypack/MetadataUriGetter.java diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java index 582e09124687674b49924baebead55efc46a2a65..797541a157ae513ed3d7a0b30fe01dc2c884efe9 100644 --- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java +++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java @@ -17,7 +17,7 @@ package com.android.inputmethod.keyboard.emoji; import android.content.res.Resources; -import android.support.v4.view.ViewPager; +import androidx.viewpager.widget.ViewPager; import android.view.View; import android.widget.LinearLayout; diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java index 68056e0ebad1acdd8bc476f40dbf1e6b458747a1..18b9c7e36ce21cf1ba62b52fd17d7244420153ab 100644 --- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java +++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java @@ -16,7 +16,7 @@ package com.android.inputmethod.keyboard.emoji; -import android.support.v4.view.PagerAdapter; +import androidx.viewpager.widget.PagerAdapter; import android.util.Log; import android.util.SparseArray; import android.view.LayoutInflater; diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java index a3b869d7346b0906e889c375d95e1e0041496b8e..9ba8d2ba2170c564c322f0371e3b5ac27051308b 100644 --- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java +++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java @@ -23,7 +23,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Color; import android.preference.PreferenceManager; -import android.support.v4.view.ViewPager; +import androidx.viewpager.widget.ViewPager; import android.util.AttributeSet; import android.util.Pair; import android.util.TypedValue; diff --git a/java-overridable/src/com/android/inputmethod/latin/DictionaryFacilitatorProvider.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorProvider.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/DictionaryFacilitatorProvider.java rename to java/src/com/android/inputmethod/latin/DictionaryFacilitatorProvider.java diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index cddd4533bf10500a21c42258d3fd3a387402bc5a..31307bad1631951a47bf35ca33578e05c9496b6d 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -21,6 +21,7 @@ import static com.android.inputmethod.latin.common.Constants.ImeOption.NO_MICROP import static com.android.inputmethod.latin.common.Constants.ImeOption.NO_MICROPHONE_COMPAT; import android.Manifest.permission; +import android.app.ActivityOptions; import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; @@ -1778,6 +1779,22 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } }; + /** + * Starts {@link android.app.Activity} on the same display where the IME is shown. + * + * @param intent {@link Intent} to be used to start {@link android.app.Activity}. + */ + private void startActivityOnTheSameDisplay(Intent intent) { + // Note that WindowManager#getDefaultDisplay() returns the display ID associated with the + // Context from which the WindowManager instance was obtained. Therefore the following code + // returns the display ID for the window where the IME is shown. + final int currentDisplayId = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)) + .getDefaultDisplay().getDisplayId(); + + startActivity(intent, + ActivityOptions.makeBasic().setLaunchDisplayId(currentDisplayId).toBundle()); + } + void launchSettings(final String extraEntryValue) { mInputLogic.commitTyped(mSettings.getCurrent(), LastComposedWord.NOT_A_SEPARATOR); requestHideSelf(0); @@ -1792,7 +1809,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen | Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(SettingsActivity.EXTRA_SHOW_HOME_AS_UP, false); intent.putExtra(SettingsActivity.EXTRA_ENTRY_KEY, extraEntryValue); - startActivity(intent); + startActivityOnTheSameDisplay(intent); } private void showSubtypeSelectorAndSettings() { @@ -1816,7 +1833,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(Intent.EXTRA_TITLE, languageSelectionTitle); - startActivity(intent); + startActivityOnTheSameDisplay(intent); break; case 1: launchSettings(SettingsActivity.EXTRA_ENTRY_VALUE_LONG_PRESS_COMMA); diff --git a/java/src/com/android/inputmethod/latin/PersonalDictionaryLookup.java b/java/src/com/android/inputmethod/latin/PersonalDictionaryLookup.java deleted file mode 100644 index eed4ec1a0cbd0f827707bb9d62cce7d7b500fc23..0000000000000000000000000000000000000000 --- a/java/src/com/android/inputmethod/latin/PersonalDictionaryLookup.java +++ /dev/null @@ -1,651 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.latin; - -import android.content.ContentResolver; -import android.content.Context; -import android.database.ContentObserver; -import android.database.Cursor; -import android.net.Uri; -import android.provider.UserDictionary; -import android.text.TextUtils; -import android.util.Log; - -import com.android.inputmethod.annotations.UsedForTesting; -import com.android.inputmethod.latin.common.CollectionUtils; -import com.android.inputmethod.latin.common.LocaleUtils; -import com.android.inputmethod.latin.define.DebugFlags; -import com.android.inputmethod.latin.utils.ExecutorUtils; - -import java.io.Closeable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -/** - * This class provides the ability to look into the system-wide "Personal dictionary". It loads the - * data once when created and reloads it when notified of changes to {@link UserDictionary} - * - * It can be used directly to validate words or expand shortcuts, and it can be used by instances - * of {@link PersonalLanguageModelHelper} that create language model files for a specific input - * locale. - * - * Note, that the initial dictionary loading happens asynchronously so it is possible (hopefully - * rarely) that {@link #isValidWord} or {@link #expandShortcut} is called before the initial load - * has started. - * - * The caller should explicitly call {@link #close} when the object is no longer needed, in order - * to release any resources and references to this object. A service should create this object in - * {@link android.app.Service#onCreate} and close it in {@link android.app.Service#onDestroy}. - */ -public class PersonalDictionaryLookup implements Closeable { - - /** - * To avoid loading too many dictionary entries in memory, we cap them at this number. If - * that number is exceeded, the lowest-frequency items will be dropped. Note, there is no - * explicit cap on the number of locales in every entry. - */ - private static final int MAX_NUM_ENTRIES = 1000; - - /** - * The delay (in milliseconds) to impose on reloads. Previously scheduled reloads will be - * cancelled if a new reload is scheduled before the delay expires. Thus, only the last - * reload in the series of frequent reloads will execute. - * - * Note, this value should be low enough to allow the "Add to dictionary" feature in the - * TextView correction (red underline) drop-down menu to work properly in the following case: - * - * 1. User types OOV (out-of-vocabulary) word. - * 2. The OOV is red-underlined. - * 3. User selects "Add to dictionary". The red underline disappears while the OOV is - * in a composing span. - * 4. The user taps space. The red underline should NOT reappear. If this value is very - * high and the user performs the space tap fast enough, the red underline may reappear. - */ - @UsedForTesting - static final int RELOAD_DELAY_MS = 200; - - @UsedForTesting - static final Locale ANY_LOCALE = new Locale(""); - - private final String mTag; - private final ContentResolver mResolver; - private final String mServiceName; - - /** - * Interface to implement for classes interested in getting notified of updates. - */ - public static interface PersonalDictionaryListener { - public void onUpdate(); - } - - private final Set<PersonalDictionaryListener> mListeners = new HashSet<>(); - - public void addListener(@Nonnull final PersonalDictionaryListener listener) { - mListeners.add(listener); - } - - public void removeListener(@Nonnull final PersonalDictionaryListener listener) { - mListeners.remove(listener); - } - - /** - * Broadcast the update to all the Locale-specific language models. - */ - @UsedForTesting - void notifyListeners() { - for (PersonalDictionaryListener listener : mListeners) { - listener.onUpdate(); - } - } - - /** - * Content observer for changes to the personal dictionary. It has the following properties: - * 1. It spawns off a reload in another thread, after some delay. - * 2. It cancels previously scheduled reloads, and only executes the latest. - * 3. It may be called multiple times quickly in succession (and is in fact called so - * when the dictionary is edited through its settings UI, when sometimes multiple - * notifications are sent for the edited entry, but also for the entire dictionary). - */ - private class PersonalDictionaryContentObserver extends ContentObserver implements Runnable { - public PersonalDictionaryContentObserver() { - super(null); - } - - @Override - public boolean deliverSelfNotifications() { - return true; - } - - // Support pre-API16 platforms. - @Override - public void onChange(boolean selfChange) { - onChange(selfChange, null); - } - - @Override - public void onChange(boolean selfChange, Uri uri) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "onChange() : URI = " + uri); - } - // Cancel (but don't interrupt) any pending reloads (except the initial load). - if (mReloadFuture != null && !mReloadFuture.isCancelled() && - !mReloadFuture.isDone()) { - // Note, that if already cancelled or done, this will do nothing. - boolean isCancelled = mReloadFuture.cancel(false); - if (DebugFlags.DEBUG_ENABLED) { - if (isCancelled) { - Log.d(mTag, "onChange() : Canceled previous reload request"); - } else { - Log.d(mTag, "onChange() : Failed to cancel previous reload request"); - } - } - } - - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "onChange() : Scheduling reload in " + RELOAD_DELAY_MS + " ms"); - } - - // Schedule a new reload after RELOAD_DELAY_MS. - mReloadFuture = ExecutorUtils.getBackgroundExecutor(mServiceName) - .schedule(this, RELOAD_DELAY_MS, TimeUnit.MILLISECONDS); - } - - @Override - public void run() { - loadPersonalDictionary(); - } - } - - private final PersonalDictionaryContentObserver mPersonalDictionaryContentObserver = - new PersonalDictionaryContentObserver(); - - /** - * Indicates that a load is in progress, so no need for another. - */ - private AtomicBoolean mIsLoading = new AtomicBoolean(false); - - /** - * Indicates that this lookup object has been close()d. - */ - private AtomicBoolean mIsClosed = new AtomicBoolean(false); - - /** - * We store a map from a dictionary word to the set of locales & raw string(as it appears) - * We then iterate over the set of locales to find a match using LocaleUtils. - */ - private volatile HashMap<String, HashMap<Locale, String>> mDictWords; - - /** - * We store a map from a shortcut to a word for each locale. - * Shortcuts that apply to any locale are keyed by {@link #ANY_LOCALE}. - */ - private volatile HashMap<Locale, HashMap<String, String>> mShortcutsPerLocale; - - /** - * The last-scheduled reload future. Saved in order to cancel a pending reload if a new one - * is coming. - */ - private volatile ScheduledFuture<?> mReloadFuture; - - private volatile List<DictionaryStats> mDictionaryStats; - - /** - * @param context the context from which to obtain content resolver - */ - public PersonalDictionaryLookup( - @Nonnull final Context context, - @Nonnull final String serviceName) { - mTag = serviceName + ".Personal"; - - Log.i(mTag, "create()"); - - mServiceName = serviceName; - mDictionaryStats = new ArrayList<DictionaryStats>(); - mDictionaryStats.add(new DictionaryStats(ANY_LOCALE, Dictionary.TYPE_USER, 0)); - mDictionaryStats.add(new DictionaryStats(ANY_LOCALE, Dictionary.TYPE_USER_SHORTCUT, 0)); - - // Obtain a content resolver. - mResolver = context.getContentResolver(); - } - - public List<DictionaryStats> getDictionaryStats() { - return mDictionaryStats; - } - - public void open() { - Log.i(mTag, "open()"); - - // Schedule the initial load to run immediately. It's possible that the first call to - // isValidWord occurs before the dictionary has actually loaded, so it should not - // assume that the dictionary has been loaded. - loadPersonalDictionary(); - - // Register the observer to be notified on changes to the personal dictionary and all - // individual items. - // - // If the user is interacting with the Personal Dictionary settings UI, or with the - // "Add to dictionary" drop-down option, duplicate notifications will be sent for the same - // edit: if a new entry is added, there is a notification for the entry itself, and - // separately for the entire dictionary. However, when used programmatically, - // only notifications for the specific edits are sent. Thus, the observer is registered to - // receive every possible notification, and instead has throttling logic to avoid doing too - // many reloads. - mResolver.registerContentObserver( - UserDictionary.Words.CONTENT_URI, - true /* notifyForDescendents */, - mPersonalDictionaryContentObserver); - } - - /** - * To be called by the garbage collector in the off chance that the service did not clean up - * properly. Do not rely on this getting called, and make sure close() is called explicitly. - */ - @Override - public void finalize() throws Throwable { - try { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "finalize()"); - } - close(); - } finally { - super.finalize(); - } - } - - /** - * Cleans up PersonalDictionaryLookup: shuts down any extra threads and unregisters the observer. - * - * It is safe, but not advised to call this multiple times, and isValidWord would continue to - * work, but no data will be reloaded any longer. - */ - @Override - public void close() { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "close() : Unregistering content observer"); - } - if (mIsClosed.compareAndSet(false, true)) { - // Unregister the content observer. - mResolver.unregisterContentObserver(mPersonalDictionaryContentObserver); - } - } - - /** - * Returns true if the initial load has been performed. - * - * @return true if the initial load is successful - */ - public boolean isLoaded() { - return mDictWords != null && mShortcutsPerLocale != null; - } - - /** - * Returns the set of words defined for the given locale and more general locales. - * - * For example, input locale en_US uses data for en_US, en, and the global dictionary. - * - * Note that this method returns expanded words, not shortcuts. Shortcuts are handled - * by {@link #getShortcutsForLocale}. - * - * @param inputLocale the locale to restrict for - * @return set of words that apply to the given locale. - */ - public Set<String> getWordsForLocale(@Nonnull final Locale inputLocale) { - final HashMap<String, HashMap<Locale, String>> dictWords = mDictWords; - if (CollectionUtils.isNullOrEmpty(dictWords)) { - return Collections.emptySet(); - } - - final Set<String> words = new HashSet<>(); - final String inputLocaleString = inputLocale.toString(); - for (String word : dictWords.keySet()) { - HashMap<Locale, String> localeStringMap = dictWords.get(word); - if (!CollectionUtils.isNullOrEmpty(localeStringMap)) { - for (Locale wordLocale : localeStringMap.keySet()) { - final String wordLocaleString = wordLocale.toString(); - final int match = LocaleUtils.getMatchLevel(wordLocaleString, inputLocaleString); - if (LocaleUtils.isMatch(match)) { - words.add(localeStringMap.get(wordLocale)); - } - } - } - } - return words; - } - - /** - * Returns the set of shortcuts defined for the given locale and more general locales. - * - * For example, input locale en_US uses data for en_US, en, and the global dictionary. - * - * Note that this method returns shortcut keys, not expanded words. Words are handled - * by {@link #getWordsForLocale}. - * - * @param inputLocale the locale to restrict for - * @return set of shortcuts that apply to the given locale. - */ - public Set<String> getShortcutsForLocale(@Nonnull final Locale inputLocale) { - final Map<Locale, HashMap<String, String>> shortcutsPerLocale = mShortcutsPerLocale; - if (CollectionUtils.isNullOrEmpty(shortcutsPerLocale)) { - return Collections.emptySet(); - } - - final Set<String> shortcuts = new HashSet<>(); - if (!TextUtils.isEmpty(inputLocale.getCountry())) { - // First look for the country-specific shortcut: en_US, en_UK, fr_FR, etc. - final Map<String, String> countryShortcuts = shortcutsPerLocale.get(inputLocale); - if (!CollectionUtils.isNullOrEmpty(countryShortcuts)) { - shortcuts.addAll(countryShortcuts.keySet()); - } - } - - // Next look for the language-specific shortcut: en, fr, etc. - final Locale languageOnlyLocale = - LocaleUtils.constructLocaleFromString(inputLocale.getLanguage()); - final Map<String, String> languageShortcuts = shortcutsPerLocale.get(languageOnlyLocale); - if (!CollectionUtils.isNullOrEmpty(languageShortcuts)) { - shortcuts.addAll(languageShortcuts.keySet()); - } - - // If all else fails, look for a global shortcut. - final Map<String, String> globalShortcuts = shortcutsPerLocale.get(ANY_LOCALE); - if (!CollectionUtils.isNullOrEmpty(globalShortcuts)) { - shortcuts.addAll(globalShortcuts.keySet()); - } - - return shortcuts; - } - - /** - * Determines if the given word is a valid word in the given locale based on the dictionary. - * It tries hard to find a match: for example, casing is ignored and if the word is present in a - * more general locale (e.g. en or all locales), and isValidWord is asking for a more specific - * locale (e.g. en_US), it will be considered a match. - * - * @param word the word to match - * @param inputLocale the locale in which to match the word - * @return true iff the word has been matched for this locale in the dictionary. - */ - public boolean isValidWord(@Nonnull final String word, @Nonnull final Locale inputLocale) { - if (!isLoaded()) { - // This is a corner case in the event the initial load of the dictionary has not - // completed. In that case, we assume the word is not a valid word in the dictionary. - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "isValidWord() : Initial load not complete"); - } - return false; - } - - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "isValidWord() : Word [" + word + "] in Locale [" + inputLocale + "]"); - } - // Atomically obtain the current copy of mDictWords; - final HashMap<String, HashMap<Locale, String>> dictWords = mDictWords; - // Lowercase the word using the given locale. Note, that dictionary - // words are lowercased using their locale, and theoretically the - // lowercasing between two matching locales may differ. For simplicity - // we ignore that possibility. - final String lowercased = word.toLowerCase(inputLocale); - final HashMap<Locale, String> dictLocales = dictWords.get(lowercased); - - if (CollectionUtils.isNullOrEmpty(dictLocales)) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "isValidWord() : No entry for word [" + word + "]"); - } - return false; - } else { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "isValidWord() : Found entry for word [" + word + "]"); - } - // Iterate over the locales this word is in. - for (final Locale dictLocale : dictLocales.keySet()) { - final int matchLevel = LocaleUtils.getMatchLevel(dictLocale.toString(), - inputLocale.toString()); - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "isValidWord() : MatchLevel for DictLocale [" + dictLocale - + "] and InputLocale [" + inputLocale + "] is " + matchLevel); - } - if (LocaleUtils.isMatch(matchLevel)) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "isValidWord() : MatchLevel " + matchLevel + " IS a match"); - } - return true; - } - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "isValidWord() : MatchLevel " + matchLevel + " is NOT a match"); - } - } - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "isValidWord() : False, since none of the locales matched"); - } - return false; - } - } - - /** - * Expands the given shortcut for the given locale. - * - * @param shortcut the shortcut to expand - * @param inputLocale the locale in which to expand the shortcut - * @return expanded shortcut iff the word is a shortcut in the dictionary. - */ - @Nullable public String expandShortcut( - @Nonnull final String shortcut, @Nonnull final Locale inputLocale) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "expandShortcut() : Shortcut [" + shortcut + "] for [" + inputLocale + "]"); - } - - // Atomically obtain the current copy of mShortcuts; - final HashMap<Locale, HashMap<String, String>> shortcutsPerLocale = mShortcutsPerLocale; - - // Exit as early as possible. Most users don't use shortcuts. - if (CollectionUtils.isNullOrEmpty(shortcutsPerLocale)) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "expandShortcut() : User has no shortcuts"); - } - return null; - } - - if (!TextUtils.isEmpty(inputLocale.getCountry())) { - // First look for the country-specific shortcut: en_US, en_UK, fr_FR, etc. - final String expansionForCountry = expandShortcut( - shortcutsPerLocale, shortcut, inputLocale); - if (!TextUtils.isEmpty(expansionForCountry)) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "expandShortcut() : Country expansion is [" - + expansionForCountry + "]"); - } - return expansionForCountry; - } - } - - // Next look for the language-specific shortcut: en, fr, etc. - final Locale languageOnlyLocale = - LocaleUtils.constructLocaleFromString(inputLocale.getLanguage()); - final String expansionForLanguage = expandShortcut( - shortcutsPerLocale, shortcut, languageOnlyLocale); - if (!TextUtils.isEmpty(expansionForLanguage)) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "expandShortcut() : Language expansion is [" - + expansionForLanguage + "]"); - } - return expansionForLanguage; - } - - // If all else fails, look for a global shortcut. - final String expansionForGlobal = expandShortcut(shortcutsPerLocale, shortcut, ANY_LOCALE); - if (!TextUtils.isEmpty(expansionForGlobal) && DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "expandShortcut() : Global expansion is [" + expansionForGlobal + "]"); - } - return expansionForGlobal; - } - - @Nullable private String expandShortcut( - @Nullable final HashMap<Locale, HashMap<String, String>> shortcutsPerLocale, - @Nonnull final String shortcut, - @Nonnull final Locale locale) { - if (CollectionUtils.isNullOrEmpty(shortcutsPerLocale)) { - return null; - } - final HashMap<String, String> localeShortcuts = shortcutsPerLocale.get(locale); - if (CollectionUtils.isNullOrEmpty(localeShortcuts)) { - return null; - } - return localeShortcuts.get(shortcut); - } - - /** - * Loads the personal dictionary in the current thread. - * - * Only one reload can happen at a time. If already running, will exit quickly. - */ - private void loadPersonalDictionary() { - // Bail out if already in the process of loading. - if (!mIsLoading.compareAndSet(false, true)) { - Log.i(mTag, "loadPersonalDictionary() : Already Loading (exit)"); - return; - } - Log.i(mTag, "loadPersonalDictionary() : Start Loading"); - HashMap<String, HashMap<Locale, String>> dictWords = new HashMap<>(); - HashMap<Locale, HashMap<String, String>> shortcutsPerLocale = new HashMap<>(); - // Load the dictionary. Items are returned in the default sort order (by frequency). - Cursor cursor = mResolver.query(UserDictionary.Words.CONTENT_URI, - null, null, null, UserDictionary.Words.DEFAULT_SORT_ORDER); - if (null == cursor || cursor.getCount() < 1) { - Log.i(mTag, "loadPersonalDictionary() : Empty"); - } else { - // Iterate over the entries in the personal dictionary. Note, that iteration is in - // descending frequency by default. - while (dictWords.size() < MAX_NUM_ENTRIES && cursor.moveToNext()) { - // If there is no column for locale, skip this entry. An empty - // locale on the other hand will not be skipped. - final int dictLocaleIndex = cursor.getColumnIndex(UserDictionary.Words.LOCALE); - if (dictLocaleIndex < 0) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "loadPersonalDictionary() : Entry without LOCALE, skipping"); - } - continue; - } - // If there is no column for word, skip this entry. - final int dictWordIndex = cursor.getColumnIndex(UserDictionary.Words.WORD); - if (dictWordIndex < 0) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "loadPersonalDictionary() : Entry without WORD, skipping"); - } - continue; - } - // If the word is null, skip this entry. - final String rawDictWord = cursor.getString(dictWordIndex); - if (null == rawDictWord) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "loadPersonalDictionary() : Null word"); - } - continue; - } - // If the locale is null, that's interpreted to mean all locales. Note, the special - // zz locale for an Alphabet (QWERTY) layout will not match any actual language. - String localeString = cursor.getString(dictLocaleIndex); - if (null == localeString) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "loadPersonalDictionary() : Null locale for word [" + - rawDictWord + "], assuming all locales"); - } - // For purposes of LocaleUtils, an empty locale matches everything. - localeString = ""; - } - final Locale dictLocale = LocaleUtils.constructLocaleFromString(localeString); - // Lowercase the word before storing it. - final String dictWord = rawDictWord.toLowerCase(dictLocale); - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "loadPersonalDictionary() : Adding word [" + dictWord - + "] for locale " + dictLocale + "with value" + rawDictWord); - } - // Check if there is an existing entry for this word. - HashMap<Locale, String> dictLocales = dictWords.get(dictWord); - if (CollectionUtils.isNullOrEmpty(dictLocales)) { - // If there is no entry for this word, create one. - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "loadPersonalDictionary() : Word [" + dictWord + - "] not seen for other locales, creating new entry"); - } - dictLocales = new HashMap<>(); - dictWords.put(dictWord, dictLocales); - } - // Append the locale to the list of locales this word is in. - dictLocales.put(dictLocale, rawDictWord); - - // If there is no column for a shortcut, we're done. - final int shortcutIndex = cursor.getColumnIndex(UserDictionary.Words.SHORTCUT); - if (shortcutIndex < 0) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "loadPersonalDictionary() : Entry without SHORTCUT, done"); - } - continue; - } - // If the shortcut is null, we're done. - final String shortcut = cursor.getString(shortcutIndex); - if (shortcut == null) { - if (DebugFlags.DEBUG_ENABLED) { - Log.d(mTag, "loadPersonalDictionary() : Null shortcut"); - } - continue; - } - // Else, save the shortcut. - HashMap<String, String> localeShortcuts = shortcutsPerLocale.get(dictLocale); - if (localeShortcuts == null) { - localeShortcuts = new HashMap<>(); - shortcutsPerLocale.put(dictLocale, localeShortcuts); - } - // Map to the raw input, which might be capitalized. - // This lets the user create a shortcut from "gm" to "General Motors". - localeShortcuts.put(shortcut, rawDictWord); - } - } - - List<DictionaryStats> stats = new ArrayList<>(); - stats.add(new DictionaryStats(ANY_LOCALE, Dictionary.TYPE_USER, dictWords.size())); - int numShortcuts = 0; - for (HashMap<String, String> shortcuts : shortcutsPerLocale.values()) { - numShortcuts += shortcuts.size(); - } - stats.add(new DictionaryStats(ANY_LOCALE, Dictionary.TYPE_USER_SHORTCUT, numShortcuts)); - mDictionaryStats = stats; - - // Atomically replace the copy of mDictWords and mShortcuts. - mDictWords = dictWords; - mShortcutsPerLocale = shortcutsPerLocale; - - // Allow other calls to loadPersonalDictionary to execute now. - mIsLoading.set(false); - - Log.i(mTag, "loadPersonalDictionary() : Loaded " + mDictWords.size() - + " words and " + numShortcuts + " shortcuts"); - - notifyListeners(); - } -} diff --git a/java-overridable/src/com/android/inputmethod/latin/about/AboutPreferences.java b/java/src/com/android/inputmethod/latin/about/AboutPreferences.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/about/AboutPreferences.java rename to java/src/com/android/inputmethod/latin/about/AboutPreferences.java diff --git a/java-overridable/src/com/android/inputmethod/latin/accounts/AccountStateChangedListener.java b/java/src/com/android/inputmethod/latin/accounts/AccountStateChangedListener.java similarity index 98% rename from java-overridable/src/com/android/inputmethod/latin/accounts/AccountStateChangedListener.java rename to java/src/com/android/inputmethod/latin/accounts/AccountStateChangedListener.java index 60d420fc31e92b0194b8a22f925def6ccecccab1..3c39c9a160b6335789279d0b12acf8008856c6bf 100644 --- a/java-overridable/src/com/android/inputmethod/latin/accounts/AccountStateChangedListener.java +++ b/java/src/com/android/inputmethod/latin/accounts/AccountStateChangedListener.java @@ -16,7 +16,7 @@ package com.android.inputmethod.latin.accounts; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import javax.annotation.Nullable; diff --git a/java-overridable/src/com/android/inputmethod/latin/accounts/LoginAccountUtils.java b/java/src/com/android/inputmethod/latin/accounts/LoginAccountUtils.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/accounts/LoginAccountUtils.java rename to java/src/com/android/inputmethod/latin/accounts/LoginAccountUtils.java diff --git a/java-overridable/src/com/android/inputmethod/latin/define/DebugFlags.java b/java/src/com/android/inputmethod/latin/define/DebugFlags.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/define/DebugFlags.java rename to java/src/com/android/inputmethod/latin/define/DebugFlags.java diff --git a/java-overridable/src/com/android/inputmethod/latin/define/DecoderSpecificConstants.java b/java/src/com/android/inputmethod/latin/define/DecoderSpecificConstants.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/define/DecoderSpecificConstants.java rename to java/src/com/android/inputmethod/latin/define/DecoderSpecificConstants.java diff --git a/java-overridable/src/com/android/inputmethod/latin/define/JniLibName.java b/java/src/com/android/inputmethod/latin/define/JniLibName.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/define/JniLibName.java rename to java/src/com/android/inputmethod/latin/define/JniLibName.java diff --git a/java-overridable/src/com/android/inputmethod/latin/define/ProductionFlags.java b/java/src/com/android/inputmethod/latin/define/ProductionFlags.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/define/ProductionFlags.java rename to java/src/com/android/inputmethod/latin/define/ProductionFlags.java diff --git a/java/src/com/android/inputmethod/latin/permissions/PermissionsActivity.java b/java/src/com/android/inputmethod/latin/permissions/PermissionsActivity.java index bdd63fa00d28e53924573eb9ebf784aa30d5943b..36d8ed9430f8f35270ff3b3bfab23a45245af29c 100644 --- a/java/src/com/android/inputmethod/latin/permissions/PermissionsActivity.java +++ b/java/src/com/android/inputmethod/latin/permissions/PermissionsActivity.java @@ -21,8 +21,8 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; /** * An activity to help request permissions. It's used when no other activity is available, e.g. in diff --git a/java/src/com/android/inputmethod/latin/permissions/PermissionsUtil.java b/java/src/com/android/inputmethod/latin/permissions/PermissionsUtil.java index 747f64f24ee6466b22863166fa133f865e037077..9a618a7559a2bd8f072beba68c89a66f025faacb 100644 --- a/java/src/com/android/inputmethod/latin/permissions/PermissionsUtil.java +++ b/java/src/com/android/inputmethod/latin/permissions/PermissionsUtil.java @@ -20,9 +20,9 @@ import android.app.Activity; import android.content.Context; import android.content.pm.PackageManager; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import java.util.ArrayList; import java.util.List; diff --git a/java-overridable/src/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java b/java/src/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java rename to java/src/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java diff --git a/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java index 46fcc710697e66f4085737bb9a9ce86f39c6467a..56e8f1623bbb4822f71ccb96d92788b6d35e4de7 100644 --- a/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java +++ b/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java @@ -26,7 +26,7 @@ import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceGroup; -import android.support.v4.view.ViewCompat; +import androidx.core.view.ViewCompat; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java b/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java index a7d157a6b9175cea8e5fce7639ba081fe322e026..ac165776261d27b40f186279ec58cc247ecce6e9 100644 --- a/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java +++ b/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java @@ -25,7 +25,7 @@ import android.app.ActionBar; import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceActivity; -import android.support.v4.app.ActivityCompat; +import androidx.core.app.ActivityCompat; import android.view.MenuItem; public final class SettingsActivity extends PreferenceActivity diff --git a/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java b/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java index 73d25f6aae039fcadb1b05c49c2a5d4c3039032e..789694f0801b38ed433269de3e547d592b525461 100644 --- a/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java +++ b/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java @@ -21,7 +21,7 @@ import android.content.res.ColorStateList; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; -import android.support.v4.view.ViewCompat; +import androidx.core.view.ViewCompat; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; diff --git a/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java b/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java index 6734e61b88f538c7bf8e7f18303c570c9e7d181a..9a39ceaceee236c909bb84451c8b9838571ba754 100644 --- a/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java +++ b/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java @@ -20,7 +20,7 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; -import android.support.v4.view.ViewCompat; +import androidx.core.view.ViewCompat; import android.util.AttributeSet; import android.view.View; diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsActivity.java b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsActivity.java index 356d9d021814ef444c09b7ab745d4215416de15a..5f99f900429e0575bc623b30f146dfe8315e3fb3 100644 --- a/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsActivity.java +++ b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsActivity.java @@ -24,7 +24,7 @@ import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceActivity; -import android.support.v4.app.ActivityCompat; +import androidx.core.app.ActivityCompat; /** * Spell checker preference screen. diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java index c1d1fad68c0acc817faa280ea86b2765eb469d10..840a4aa3d039edc8e69e2782ba02e3dbc5f82b9e 100644 --- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java @@ -21,7 +21,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.drawable.Drawable; -import android.support.v4.view.ViewCompat; +import androidx.core.view.ViewCompat; import android.text.TextUtils; import android.util.AttributeSet; import android.util.TypedValue; diff --git a/java-overridable/src/com/android/inputmethod/latin/touchinputconsumer/GestureConsumer.java b/java/src/com/android/inputmethod/latin/touchinputconsumer/GestureConsumer.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/touchinputconsumer/GestureConsumer.java rename to java/src/com/android/inputmethod/latin/touchinputconsumer/GestureConsumer.java diff --git a/java-overridable/src/com/android/inputmethod/latin/utils/DictionaryHeaderUtils.java b/java/src/com/android/inputmethod/latin/utils/DictionaryHeaderUtils.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/utils/DictionaryHeaderUtils.java rename to java/src/com/android/inputmethod/latin/utils/DictionaryHeaderUtils.java diff --git a/java-overridable/src/com/android/inputmethod/latin/utils/FeedbackUtils.java b/java/src/com/android/inputmethod/latin/utils/FeedbackUtils.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/utils/FeedbackUtils.java rename to java/src/com/android/inputmethod/latin/utils/FeedbackUtils.java diff --git a/java-overridable/src/com/android/inputmethod/latin/utils/FileTransforms.java b/java/src/com/android/inputmethod/latin/utils/FileTransforms.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/utils/FileTransforms.java rename to java/src/com/android/inputmethod/latin/utils/FileTransforms.java diff --git a/java-overridable/src/com/android/inputmethod/latin/utils/ManagedProfileUtils.java b/java/src/com/android/inputmethod/latin/utils/ManagedProfileUtils.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/utils/ManagedProfileUtils.java rename to java/src/com/android/inputmethod/latin/utils/ManagedProfileUtils.java diff --git a/java-overridable/src/com/android/inputmethod/latin/utils/MetadataFileUriGetter.java b/java/src/com/android/inputmethod/latin/utils/MetadataFileUriGetter.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/utils/MetadataFileUriGetter.java rename to java/src/com/android/inputmethod/latin/utils/MetadataFileUriGetter.java diff --git a/java-overridable/src/com/android/inputmethod/latin/utils/StatsUtils.java b/java/src/com/android/inputmethod/latin/utils/StatsUtils.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/utils/StatsUtils.java rename to java/src/com/android/inputmethod/latin/utils/StatsUtils.java diff --git a/java-overridable/src/com/android/inputmethod/latin/utils/StatsUtilsManager.java b/java/src/com/android/inputmethod/latin/utils/StatsUtilsManager.java similarity index 100% rename from java-overridable/src/com/android/inputmethod/latin/utils/StatsUtilsManager.java rename to java/src/com/android/inputmethod/latin/utils/StatsUtilsManager.java diff --git a/java/src/com/android/inputmethodcommon/InputMethodSettingsActivity.java b/java/src/com/android/inputmethodcommon/InputMethodSettingsActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..6e868c9fff6190c32ee7ae6eb8bebc4d4a0b439b --- /dev/null +++ b/java/src/com/android/inputmethodcommon/InputMethodSettingsActivity.java @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.inputmethodcommon; + +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.preference.PreferenceActivity; + +/** + * This is a helper class for an IME's settings preference activity. It's recommended for every + * IME to have its own settings preference activity which inherits this class. + */ +public abstract class InputMethodSettingsActivity extends PreferenceActivity + implements InputMethodSettingsInterface { + private final InputMethodSettingsImpl mSettings = new InputMethodSettingsImpl(); + @SuppressWarnings("deprecation") + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setPreferenceScreen(getPreferenceManager().createPreferenceScreen(this)); + mSettings.init(this, getPreferenceScreen()); + } + + /** + * {@inheritDoc} + */ + @Override + public void setInputMethodSettingsCategoryTitle(int resId) { + mSettings.setInputMethodSettingsCategoryTitle(resId); + } + + /** + * {@inheritDoc} + */ + @Override + public void setInputMethodSettingsCategoryTitle(CharSequence title) { + mSettings.setInputMethodSettingsCategoryTitle(title); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerTitle(int resId) { + mSettings.setSubtypeEnablerTitle(resId); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerTitle(CharSequence title) { + mSettings.setSubtypeEnablerTitle(title); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerIcon(int resId) { + mSettings.setSubtypeEnablerIcon(resId); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerIcon(Drawable drawable) { + mSettings.setSubtypeEnablerIcon(drawable); + } + + /** + * {@inheritDoc} + */ + @Override + public void onResume() { + super.onResume(); + mSettings.updateSubtypeEnabler(); + } +} diff --git a/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java b/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..49f0b87f1dc7f3556791d52ef9576a2b007ac92f --- /dev/null +++ b/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethodcommon; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.preference.PreferenceFragment; + +/** + * This is a helper class for an IME's settings preference fragment. It's recommended for every + * IME to have its own settings preference fragment which inherits this class. + */ +public abstract class InputMethodSettingsFragment extends PreferenceFragment + implements InputMethodSettingsInterface { + private final InputMethodSettingsImpl mSettings = new InputMethodSettingsImpl(); + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + final Context context = getActivity(); + setPreferenceScreen(getPreferenceManager().createPreferenceScreen(context)); + mSettings.init(context, getPreferenceScreen()); + } + + /** + * {@inheritDoc} + */ + @Override + public void setInputMethodSettingsCategoryTitle(int resId) { + mSettings.setInputMethodSettingsCategoryTitle(resId); + } + + /** + * {@inheritDoc} + */ + @Override + public void setInputMethodSettingsCategoryTitle(CharSequence title) { + mSettings.setInputMethodSettingsCategoryTitle(title); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerTitle(int resId) { + mSettings.setSubtypeEnablerTitle(resId); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerTitle(CharSequence title) { + mSettings.setSubtypeEnablerTitle(title); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerIcon(int resId) { + mSettings.setSubtypeEnablerIcon(resId); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerIcon(Drawable drawable) { + mSettings.setSubtypeEnablerIcon(drawable); + } + + /** + * {@inheritDoc} + */ + @Override + public void onResume() { + super.onResume(); + mSettings.updateSubtypeEnabler(); + } +} diff --git a/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java b/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..cfa1a659614bc18f5e252a616f890a12f85cc3b1 --- /dev/null +++ b/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java @@ -0,0 +1,179 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethodcommon; + +import android.content.Context; +import android.content.Intent; +import android.graphics.drawable.Drawable; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceScreen; +import android.provider.Settings; +import android.text.TextUtils; +import android.view.inputmethod.InputMethodInfo; +import android.view.inputmethod.InputMethodManager; +import android.view.inputmethod.InputMethodSubtype; + +import java.util.List; + +/* package private */ class InputMethodSettingsImpl implements InputMethodSettingsInterface { + private Preference mSubtypeEnablerPreference; + private int mInputMethodSettingsCategoryTitleRes; + private CharSequence mInputMethodSettingsCategoryTitle; + private int mSubtypeEnablerTitleRes; + private CharSequence mSubtypeEnablerTitle; + private int mSubtypeEnablerIconRes; + private Drawable mSubtypeEnablerIcon; + private InputMethodManager mImm; + private InputMethodInfo mImi; + + /** + * Initialize internal states of this object. + * @param context the context for this application. + * @param prefScreen a PreferenceScreen of PreferenceActivity or PreferenceFragment. + * @return true if this application is an IME and has two or more subtypes, false otherwise. + */ + public boolean init(final Context context, final PreferenceScreen prefScreen) { + mImm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + mImi = getMyImi(context, mImm); + if (mImi == null || mImi.getSubtypeCount() <= 1) { + return false; + } + final Intent intent = new Intent(Settings.ACTION_INPUT_METHOD_SUBTYPE_SETTINGS); + intent.putExtra(Settings.EXTRA_INPUT_METHOD_ID, mImi.getId()); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK + | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED + | Intent.FLAG_ACTIVITY_CLEAR_TOP); + mSubtypeEnablerPreference = new Preference(context); + mSubtypeEnablerPreference.setIntent(intent); + prefScreen.addPreference(mSubtypeEnablerPreference); + updateSubtypeEnabler(); + return true; + } + + private static InputMethodInfo getMyImi(Context context, InputMethodManager imm) { + final List<InputMethodInfo> imis = imm.getInputMethodList(); + for (int i = 0; i < imis.size(); ++i) { + final InputMethodInfo imi = imis.get(i); + if (imis.get(i).getPackageName().equals(context.getPackageName())) { + return imi; + } + } + return null; + } + + private static String getEnabledSubtypesLabel( + Context context, InputMethodManager imm, InputMethodInfo imi) { + if (context == null || imm == null || imi == null) return null; + final List<InputMethodSubtype> subtypes = imm.getEnabledInputMethodSubtypeList(imi, true); + final StringBuilder sb = new StringBuilder(); + final int N = subtypes.size(); + for (int i = 0; i < N; ++i) { + final InputMethodSubtype subtype = subtypes.get(i); + if (sb.length() > 0) { + sb.append(", "); + } + sb.append(subtype.getDisplayName(context, imi.getPackageName(), + imi.getServiceInfo().applicationInfo)); + } + return sb.toString(); + } + /** + * {@inheritDoc} + */ + @Override + public void setInputMethodSettingsCategoryTitle(int resId) { + mInputMethodSettingsCategoryTitleRes = resId; + updateSubtypeEnabler(); + } + + /** + * {@inheritDoc} + */ + @Override + public void setInputMethodSettingsCategoryTitle(CharSequence title) { + mInputMethodSettingsCategoryTitleRes = 0; + mInputMethodSettingsCategoryTitle = title; + updateSubtypeEnabler(); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerTitle(int resId) { + mSubtypeEnablerTitleRes = resId; + updateSubtypeEnabler(); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerTitle(CharSequence title) { + mSubtypeEnablerTitleRes = 0; + mSubtypeEnablerTitle = title; + updateSubtypeEnabler(); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerIcon(int resId) { + mSubtypeEnablerIconRes = resId; + updateSubtypeEnabler(); + } + + /** + * {@inheritDoc} + */ + @Override + public void setSubtypeEnablerIcon(Drawable drawable) { + mSubtypeEnablerIconRes = 0; + mSubtypeEnablerIcon = drawable; + updateSubtypeEnabler(); + } + + public void updateSubtypeEnabler() { + final Preference pref = mSubtypeEnablerPreference; + if (pref == null) { + return; + } + final Context context = pref.getContext(); + final CharSequence title; + if (mSubtypeEnablerTitleRes != 0) { + title = context.getString(mSubtypeEnablerTitleRes); + } else { + title = mSubtypeEnablerTitle; + } + pref.setTitle(title); + final Intent intent = pref.getIntent(); + if (intent != null) { + intent.putExtra(Intent.EXTRA_TITLE, title); + } + final String summary = getEnabledSubtypesLabel(context, mImm, mImi); + if (!TextUtils.isEmpty(summary)) { + pref.setSummary(summary); + } + if (mSubtypeEnablerIconRes != 0) { + pref.setIcon(mSubtypeEnablerIconRes); + } else { + pref.setIcon(mSubtypeEnablerIcon); + } + } +} diff --git a/java/src/com/android/inputmethodcommon/InputMethodSettingsInterface.java b/java/src/com/android/inputmethodcommon/InputMethodSettingsInterface.java new file mode 100644 index 0000000000000000000000000000000000000000..6e97faeb7386334bcbd2e5ca40897c7c7a6c9e9d --- /dev/null +++ b/java/src/com/android/inputmethodcommon/InputMethodSettingsInterface.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.inputmethodcommon; + +import android.graphics.drawable.Drawable; + +/** + * InputMethodSettingsInterface is the interface for adding IME related preferences to + * PreferenceActivity or PreferenceFragment. + */ +public interface InputMethodSettingsInterface { + /** + * Sets the title for the input method settings category with a resource ID. + * @param resId The resource ID of the title. + */ + public void setInputMethodSettingsCategoryTitle(int resId); + + /** + * Sets the title for the input method settings category with a CharSequence. + * @param title The title for this preference. + */ + public void setInputMethodSettingsCategoryTitle(CharSequence title); + + /** + * Sets the title for the input method enabler preference for launching subtype enabler with a + * resource ID. + * @param resId The resource ID of the title. + */ + public void setSubtypeEnablerTitle(int resId); + + /** + * Sets the title for the input method enabler preference for launching subtype enabler with a + * CharSequence. + * @param title The title for this preference. + */ + public void setSubtypeEnablerTitle(CharSequence title); + + /** + * Sets the icon for the preference for launching subtype enabler with a resource ID. + * @param resId The resource id of an optional icon for the preference. + */ + public void setSubtypeEnablerIcon(int resId); + + /** + * Sets the icon for the Preference for launching subtype enabler with a Drawable. + * @param drawable The drawable of an optional icon for the preference. + */ + public void setSubtypeEnablerIcon(Drawable drawable); +} diff --git a/native/jni/Android.bp b/native/jni/Android.bp index 0d4b3bb65e111deefa34e322e8e13b9f118741bf..5649fc1ea4ddf827aa4a68c08245cfdd2277a548 100644 --- a/native/jni/Android.bp +++ b/native/jni/Android.bp @@ -124,6 +124,7 @@ cc_library { "-Woverloaded-virtual", "-Wsign-promo", "-Wno-system-headers", + "-Wno-format-nonliteral", // To suppress compiler warnings for unused variables/functions used for debug features etc. "-Wno-unused-parameter", diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h index 10b930e4f5168bee58ca411fbde39f82f021bc3f..1531b6cbe50776a17e1fecabb992854fbc0a9f66 100644 --- a/native/jni/src/defines.h +++ b/native/jni/src/defines.h @@ -17,6 +17,8 @@ #ifndef LATINIME_DEFINES_H #define LATINIME_DEFINES_H +#include <cstdint> + #ifdef __GNUC__ #define AK_FORCE_INLINE __attribute__((always_inline)) __inline__ #else // __GNUC__ @@ -51,7 +53,7 @@ AK_FORCE_INLINE static int intArrayToCharArray(const int *const source, const in int si = 0; int di = 0; while (si < sourceSize && di < destLimit && 0 != source[si]) { - const int codePoint = source[si++]; + const uint32_t codePoint = static_cast<uint32_t>(source[si++]); if (codePoint < 0x7F) { // One byte dest[di++] = codePoint; } else if (codePoint < 0x7FF) { // Two bytes diff --git a/tests/Android.bp b/tests/Android.bp index a99cc5b41f4e26106f3e5702ce086f3993c4f3ae..76681f669ee7acfb721e6f69cb70413f953875b8 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -26,7 +26,7 @@ android_test { ], static_libs: [ - "android-support-test", + "androidx.test.rules", "mockito-target-minus-junit4", ], libs: [ @@ -40,5 +40,7 @@ android_test { instrumentation_for: "LatinIME", + min_sdk_version: "14", + target_sdk_version: "21", sdk_version: "current", } diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml index c7a9e13a2a05bd35fe330beb4c409173026aba0e..e788e0b7c1d04facb0d848f380fd2c423b3cc1af 100644 --- a/tests/AndroidManifest.xml +++ b/tests/AndroidManifest.xml @@ -15,9 +15,10 @@ --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.inputmethod.latin.tests"> + package="com.android.inputmethod.latin.tests" + android:versionCode="28"> - <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> + <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> @@ -27,7 +28,7 @@ <!-- meta-data android:name="com.android.contacts.iconset" android:resource="@xml/iconset" /--> </application> - <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner" + <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" android:targetPackage="com.android.inputmethod.latin" android:label="LatinIME tests"> </instrumentation> diff --git a/tests/AndroidTest.xml b/tests/AndroidTest.xml new file mode 100644 index 0000000000000000000000000000000000000000..41334d5a8e4783441b0398037a47069b62ae765f --- /dev/null +++ b/tests/AndroidTest.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2018 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. +--> +<configuration description="Runs Tests for LatinIME."> + <!-- + To run this test with atest, run the following commands: + + tapas adb LatinIME LatinIMETests arm64 userdebug && \ + DISABLE_PROGUARD=true make -j LatinIME && \ + adb install -r $OUT/system/app/LatinIME/LatinIME.apk && \ + atest LatinIMETests + + currently tradefed does not look up files under $OUT/system/ + hence we cannot rely on "test-file-name" to install LatinIME.apk + --> + + <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup"> + <option name="cleanup-apks" value="true" /> + <option name="test-file-name" value="LatinIMETests.apk" /> + </target_preparer> + + <option name="test-tag" value="LatinIMETests" /> + <test class="com.android.tradefed.testtype.AndroidJUnitTest" > + <option name="package" value="com.android.inputmethod.latin.tests" /> + <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" /> + <option name="hidden-api-checks" value="false"/> + </test> +</configuration> diff --git a/tests/src/com/android/inputmethod/compat/LocaleSpanCompatUtilsTests.java b/tests/src/com/android/inputmethod/compat/LocaleSpanCompatUtilsTests.java index 67e76464bd663b1f82fcd9c19108cc129481865b..6203238b82fc6c335932577fdeec3f84f9129afd 100644 --- a/tests/src/com/android/inputmethod/compat/LocaleSpanCompatUtilsTests.java +++ b/tests/src/com/android/inputmethod/compat/LocaleSpanCompatUtilsTests.java @@ -16,18 +16,28 @@ package com.android.inputmethod.compat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import android.graphics.Typeface; import android.os.Build; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; import android.text.SpannableString; import android.text.Spanned; import android.text.style.StyleSpan; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Locale; @SmallTest -public class LocaleSpanCompatUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class LocaleSpanCompatUtilsTests { + @Test public void testInstantiatable() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) { // LocaleSpan isn't yet available. @@ -61,6 +71,7 @@ public class LocaleSpanCompatUtilsTests extends AndroidTestCase { assertEquals(expectedCount, spans.length); } + @Test public void testUpdateLocaleSpan() { if (!LocaleSpanCompatUtils.isLocaleSpanAvailable()) { return; diff --git a/tests/src/com/android/inputmethod/compat/SuggestionSpanUtilsTest.java b/tests/src/com/android/inputmethod/compat/SuggestionSpanUtilsTest.java index 2d6d28f2b5e42fe16b7f82d09a7880a17c48c9ad..a0544d62a1fe6ed6455db1b558d557fdc081ca5e 100644 --- a/tests/src/com/android/inputmethod/compat/SuggestionSpanUtilsTest.java +++ b/tests/src/com/android/inputmethod/compat/SuggestionSpanUtilsTest.java @@ -16,17 +16,26 @@ package com.android.inputmethod.compat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + import android.annotation.TargetApi; +import android.content.Context; import android.os.Build; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; import android.text.Spanned; import android.text.TextUtils; import android.text.style.SuggestionSpan; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.SuggestedWords; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.ArrayList; import java.util.Arrays; import java.util.Locale; @@ -34,7 +43,12 @@ import java.util.Locale; import javax.annotation.Nullable; @SmallTest -public class SuggestionSpanUtilsTest extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class SuggestionSpanUtilsTest { + + private Context getContext() { + return InstrumentationRegistry.getTargetContext(); + } /** * Helper method to create a dummy {@link SuggestedWordInfo}. @@ -91,6 +105,7 @@ public class SuggestionSpanUtilsTest extends AndroidTestCase { } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) + @Test public void testGetTextWithAutoCorrectionIndicatorUnderline() { final String ORIGINAL_TEXT = "Hey!"; final Locale NONNULL_LOCALE = new Locale("en", "GB"); @@ -107,6 +122,7 @@ public class SuggestionSpanUtilsTest extends AndroidTestCase { } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) + @Test public void testGetTextWithAutoCorrectionIndicatorUnderlineRootLocale() { final String ORIGINAL_TEXT = "Hey!"; final CharSequence text = SuggestionSpanUtils.getTextWithAutoCorrectionIndicatorUnderline( @@ -121,6 +137,7 @@ public class SuggestionSpanUtilsTest extends AndroidTestCase { new String[]{}, Locale.ROOT, text); } + @Test public void testGetTextWithSuggestionSpan() { final SuggestedWordInfo prediction1 = createWordInfo("Quality", SuggestedWordInfo.KIND_PREDICTION); @@ -218,6 +235,7 @@ public class SuggestionSpanUtilsTest extends AndroidTestCase { } } + @Test public void testFindFirstLocaleFromSuggestionSpans() { final String[] suggestions = new String[] {"Quality", "Speed", "Price"}; final SuggestionSpan nullLocaleSpan = new SuggestionSpan((Locale)null, suggestions, 0); diff --git a/tests/src/com/android/inputmethod/compat/TextInfoCompatUtilsTests.java b/tests/src/com/android/inputmethod/compat/TextInfoCompatUtilsTests.java index c399cced6cc8b8da9d49f8588456f67670b9a375..d4dbfd4c68e79a899f39693d9ed0019ee17f0816 100644 --- a/tests/src/com/android/inputmethod/compat/TextInfoCompatUtilsTests.java +++ b/tests/src/com/android/inputmethod/compat/TextInfoCompatUtilsTests.java @@ -16,10 +16,10 @@ package com.android.inputmethod.compat; +import static org.junit.Assert.assertTrue; + import android.graphics.Typeface; import android.os.Parcel; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; import android.text.SpannableString; import android.text.Spanned; import android.text.TextUtils; @@ -27,10 +27,17 @@ import android.text.style.StyleSpan; import android.text.style.URLSpan; import android.view.textservice.TextInfo; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Arrays; @SmallTest -public class TextInfoCompatUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class TextInfoCompatUtilsTests { final private static String TEST_TEXT = "0123456789"; final private static int TEST_COOKIE = 0x1234; final private static int TEST_SEQUENCE_NUMBER = 0x4321; @@ -45,6 +52,7 @@ public class TextInfoCompatUtilsTests extends AndroidTestCase { final private static int TEST_URL_SPAN_END = 7; final private static int TEST_URL_SPAN_FLAGS = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; + @Test public void testGetCharSequence() { final SpannableString text = new SpannableString(TEST_TEXT); text.setSpan(TEST_STYLE_SPAN, TEST_STYLE_SPAN_START, TEST_STYLE_SPAN_END, diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutTest.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutTest.java index 1e1f82fc0e674c374cc22f3c568e4a42ea0505c9..ddace1a385933a6bb2ac9a52e45ff129b4d7bfbc 100644 --- a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutTest.java +++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutTest.java @@ -18,15 +18,17 @@ package com.android.inputmethod.keyboard; import static org.junit.Assert.assertEquals; -import android.test.suitebuilder.annotation.SmallTest; - -import java.util.ArrayList; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.ArrayList; @SmallTest +@RunWith(AndroidJUnit4.class) public class KeyboardLayoutTest { - @Test public void testNewKeyboardLayout() { KeyboardLayout keyboardLayout = KeyboardLayout diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java index 33e88c13b58c01aedb594e7f28edce4356ce847d..2f8140e2373c046b8cc7ed130b4ddaf6fa8abd0c 100644 --- a/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java +++ b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java @@ -21,17 +21,30 @@ import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_KLP; import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_LXX_DARK; import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_LXX_LIGHT; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import android.content.Context; import android.content.SharedPreferences; import android.os.Build; import android.os.Build.VERSION_CODES; import android.preference.PreferenceManager; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; import java.util.Arrays; @SmallTest -public class KeyboardThemeTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class KeyboardThemeTests { private SharedPreferences mPrefs; private static final int THEME_ID_NULL = -1; @@ -39,9 +52,12 @@ public class KeyboardThemeTests extends AndroidTestCase { private static final int THEME_ID_ILLEGAL = -3; private static final String ILLEGAL_THEME_ID_STRING = "ThisCausesNumberFormatExecption"; - @Override - protected void setUp() throws Exception { - super.setUp(); + private Context getContext() { + return InstrumentationRegistry.getTargetContext(); + } + + @Before + public void setUp() throws Exception { mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext()); } @@ -110,6 +126,7 @@ public class KeyboardThemeTests extends AndroidTestCase { assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId); } + @Test public void testKeyboardThemePreferenceOnKlp() { assertKeyboardThemePreferenceOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH); assertKeyboardThemePreferenceOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1); @@ -130,6 +147,7 @@ public class KeyboardThemeTests extends AndroidTestCase { assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId); } + @Test public void testKeyboardThemePreferenceOnLxx() { assertKeyboardThemePreferenceOnLxx(Build.VERSION_CODES.LOLLIPOP); } @@ -165,6 +183,7 @@ public class KeyboardThemeTests extends AndroidTestCase { assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_KLP); } + @Test public void testDefaultKeyboardThemeOnKlp() { assertDefaultKeyboardThemeOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH); assertDefaultKeyboardThemeOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1); @@ -183,6 +202,7 @@ public class KeyboardThemeTests extends AndroidTestCase { assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT); } + @Test public void testDefaultKeyboardThemeOnLxx() { assertDefaultKeyboardThemeOnLxx(Build.VERSION_CODES.LOLLIPOP); } @@ -231,6 +251,7 @@ public class KeyboardThemeTests extends AndroidTestCase { } // Upgrading keyboard on I,J and K. + @Test public void testUpgradeKeyboardToLxxOnKlp() { assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH); assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1); @@ -250,6 +271,7 @@ public class KeyboardThemeTests extends AndroidTestCase { } // Upgrading keyboard on L. + @Test public void testUpgradeKeyboardToLxxOnLxx() { assertUpgradeKeyboardToLxxOnLxx(Build.VERSION_CODES.LOLLIPOP); } @@ -293,6 +315,7 @@ public class KeyboardThemeTests extends AndroidTestCase { } // Update platform from I,J, and K to I,J, and K + @Test public void testUpgradePlatformToKlpFromKlp() { assertUpgradePlatformToKlpFrom(VERSION_CODES.ICE_CREAM_SANDWICH); assertUpgradePlatformToKlpFrom(VERSION_CODES.ICE_CREAM_SANDWICH_MR1); @@ -318,6 +341,7 @@ public class KeyboardThemeTests extends AndroidTestCase { } // Update platform from I,J, and K to L + @Test public void testUpgradePlatformToLxx() { assertUpgradePlatformToLxxFrom(VERSION_CODES.ICE_CREAM_SANDWICH); assertUpgradePlatformToLxxFrom(VERSION_CODES.ICE_CREAM_SANDWICH_MR1); @@ -328,6 +352,7 @@ public class KeyboardThemeTests extends AndroidTestCase { } // Update platform from L to L. + @Test public void testUpgradePlatformToLxxFromLxx() { final int oldSdkVersion = Build.VERSION_CODES.LOLLIPOP; final int newSdkVersion = Build.VERSION_CODES.LOLLIPOP; @@ -364,10 +389,12 @@ public class KeyboardThemeTests extends AndroidTestCase { } } + @Test public void testSortedKeyboardTheme() { assertSortedKeyboardThemeArray(KeyboardTheme.KEYBOARD_THEMES); } + @Test public void testSortedAvailableKeyboardTheme() { assertSortedKeyboardThemeArray(KeyboardTheme.getAvailableThemeArray(getContext())); } @@ -384,6 +411,7 @@ public class KeyboardThemeTests extends AndroidTestCase { assertSortedKeyboardThemeArray(LIMITED_THEMES); } + @Test public void testMissingSelectedThemeIcs() { // Clean up preferences. setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL); @@ -399,6 +427,7 @@ public class KeyboardThemeTests extends AndroidTestCase { assertEquals(THEME_ID_KLP, actualTheme.mThemeId); } + @Test public void testMissingSelectedThemeKlp() { // Clean up preferences. setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL); @@ -414,6 +443,7 @@ public class KeyboardThemeTests extends AndroidTestCase { assertEquals(THEME_ID_KLP, actualTheme.mThemeId); } + @Test public void testMissingSelectedThemeLxx() { // Clean up preferences. setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL); diff --git a/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderAutoOrderTests.java b/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderAutoOrderTests.java index ebefe2d0e7eb95397959123c4bac48eed9ddc745..90963d4ca658cf9175bc1baab00fa1a19bb12e7a 100644 --- a/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderAutoOrderTests.java +++ b/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderAutoOrderTests.java @@ -16,13 +16,21 @@ package com.android.inputmethod.keyboard; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.MediumTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; + +import androidx.test.filters.MediumTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.keyboard.MoreKeysKeyboard.MoreKeysKeyboardParams; +import org.junit.Test; +import org.junit.runner.RunWith; + @MediumTest -public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class MoreKeysKeyboardBuilderAutoOrderTests { private static final int WIDTH = 10; private static final int HEIGHT = 10; @@ -38,11 +46,6 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { private static final int XPOS_R1 = WIDTH * 8 + WIDTH / 2; private static final int XPOS_R0 = WIDTH * 9 + WIDTH / 2; - @Override - protected void setUp() throws Exception { - super.setUp(); - } - private static MoreKeysKeyboardParams createParams(final int numKeys, final int columnNum, final int coordXInParent) { final MoreKeysKeyboardParams params = new MoreKeysKeyboardParams(); @@ -52,6 +55,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { return params; } + @Test public void testLayoutError() { MoreKeysKeyboardParams params = null; try { @@ -69,6 +73,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // "<1>" is the default key. // <1> + @Test public void testLayout1KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_M0); assertEquals("1 key auto 5 M0 columns", 1, params.mNumColumns); @@ -81,6 +86,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |<1> + @Test public void testLayout1KeyAuto5L0() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L0); assertEquals("1 key auto 5 L0 columns", 1, params.mNumColumns); @@ -93,6 +99,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ <1> + @Test public void testLayout1KeyAuto5L1() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L1); assertEquals("1 key auto 5 L1 columns", 1, params.mNumColumns); @@ -105,6 +112,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ ___ <1> + @Test public void testLayout1KeyAuto5L2() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L2); assertEquals("1 key auto 5 L2 columns", 1, params.mNumColumns); @@ -117,6 +125,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // <1>| + @Test public void testLayout1KeyAuto5R0() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R0); assertEquals("1 key auto 5 R0 columns", 1, params.mNumColumns); @@ -129,6 +138,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // <1> ___| + @Test public void testLayout1KeyAuto5R1() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R1); assertEquals("1 key auto 5 R1 columns", 1, params.mNumColumns); @@ -141,6 +151,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // <1> ___ ___| + @Test public void testLayout1KeyAuto5R2() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R2); assertEquals("1 key auto 5 R2 columns", 1, params.mNumColumns); @@ -153,6 +164,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // <1> [2] + @Test public void testLayout2KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_M0); assertEquals("2 key auto 5 M0 columns", 2, params.mNumColumns); @@ -166,6 +178,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |<1> [2] + @Test public void testLayout2KeyAuto5L0() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L0); assertEquals("2 key auto 5 L0 columns", 2, params.mNumColumns); @@ -179,6 +192,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ <1> [2] + @Test public void testLayout2KeyAuto5L1() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L1); assertEquals("2 key auto 5 L1 columns", 2, params.mNumColumns); @@ -192,6 +206,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ ___ <1> [2] + @Test public void testLayout2KeyAuto5L2() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L2); assertEquals("2 key auto 5 L2 columns", 2, params.mNumColumns); @@ -205,6 +220,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [2] <1>| + @Test public void testLayout2KeyAuto5R0() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R0); assertEquals("2 key auto 5 R0 columns", 2, params.mNumColumns); @@ -218,6 +234,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [2] <1> ___| + @Test public void testLayout2KeyAuto5R1() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R1); assertEquals("2 key auto 5 R1 columns", 2, params.mNumColumns); @@ -231,6 +248,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // <1> [2] ___| + @Test public void testLayout2KeyAuto5R2() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R2); assertEquals("2 key auto 5 R2 columns", 2, params.mNumColumns); @@ -244,6 +262,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [3] <1> [2] + @Test public void testLayout3KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_M0); assertEquals("3 key auto 5 M0 columns", 3, params.mNumColumns); @@ -258,6 +277,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |<1> [2] [3] + @Test public void testLayout3KeyAuto5L0() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L0); assertEquals("3 key auto 5 L0 columns", 3, params.mNumColumns); @@ -272,6 +292,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] + @Test public void testLayout3KeyAuto5L1() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L1); assertEquals("3 key auto 5 L1 columns", 3, params.mNumColumns); @@ -286,6 +307,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ [3] <1> [2] + @Test public void testLayout3KeyAuto5L2() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L2); assertEquals("3 key auto 5 L2 columns", 3, params.mNumColumns); @@ -300,6 +322,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [3] [2] <1>| + @Test public void testLayout3KeyAuto5R0() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R0); assertEquals("3 key auto 5 R0 columns", 3, params.mNumColumns); @@ -314,6 +337,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [3] [2] <1> ___| + @Test public void testLayout3KeyAuto5R1() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R1); assertEquals("3 key auto 5 R1 columns", 3, params.mNumColumns); @@ -328,6 +352,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [3] <1> [2] ___| + @Test public void testLayout3KeyAuto5R2() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R2); assertEquals("3 key auto 5 R2 columns", 3, params.mNumColumns); @@ -343,6 +368,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [3] // <1> [2] + @Test public void testLayout3KeyAuto2M0() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_M0); assertEquals("3 key auto 2 M0 columns", 2, params.mNumColumns); @@ -358,6 +384,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[3] // |<1> [2] + @Test public void testLayout3KeyAuto2L0() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L0); assertEquals("3 key auto 2 L0 columns", 2, params.mNumColumns); @@ -373,6 +400,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [3] // |___ <1> [2] + @Test public void testLayout3KeyAuto2L1() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L1); assertEquals("3 key auto 2 L1 columns", 2, params.mNumColumns); @@ -388,6 +416,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // | [3] // |___ ___ <1> [2] + @Test public void testLayout3KeyAuto2L2() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L2); assertEquals("3 key auto 2 L2 columns", 2, params.mNumColumns); @@ -403,6 +432,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [3]| // [2] <1>| + @Test public void testLayout3KeyAuto2R0() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R0); assertEquals("3 key auto 2 R0 columns", 2, params.mNumColumns); @@ -418,6 +448,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [3] | // [2] <1> ___| + @Test public void testLayout3KeyAuto2R1() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R1); assertEquals("3 key auto 2 R1 columns", 2, params.mNumColumns); @@ -433,6 +464,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [3] | // <1> [2] ___| + @Test public void testLayout3KeyAuto2R2() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R2); assertEquals("3 key auto 2 R2 columns", 2, params.mNumColumns); @@ -448,6 +480,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [4] // [3] <1> [2] + @Test public void testLayout4KeyAuto3M0() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_M0); assertEquals("4 key auto 3 M0 columns", 3, params.mNumColumns); @@ -464,6 +497,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[4] // |<1> [2] [3] + @Test public void testLayout4KeyAuto3L0() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L0); assertEquals("4 key auto 3 L0 columns", 3, params.mNumColumns); @@ -480,6 +514,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [4] // |___ <1> [2] [3] + @Test public void testLayout4KeyAuto3L1() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L1); assertEquals("4 key auto 3 L1 columns", 3, params.mNumColumns); @@ -496,6 +531,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ ___ [4] // |___ [3] <1> [2] + @Test public void testLayout4KeyAuto3L2() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L2); assertEquals("4 key auto 3 L2 columns", 3, params.mNumColumns); @@ -512,6 +548,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [4]| // [3] [2] <1>| + @Test public void testLayout4KeyAuto3R0() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R0); assertEquals("4 key auto 3 R0 columns", 3, params.mNumColumns); @@ -528,6 +565,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [4] ___| // [3] [2] <1> ___| + @Test public void testLayout4KeyAuto3R1() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R1); assertEquals("4 key auto 3 R1 columns", 3, params.mNumColumns); @@ -544,6 +582,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [4] ___| // [3] <1> [2] ___| + @Test public void testLayout4KeyAuto3R2() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R2); assertEquals("4 key auto 3 R2 columns", 3, params.mNumColumns); @@ -559,6 +598,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [3] <1> [2] [4] + @Test public void testLayout4KeyAuto4M0() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_M0); assertEquals("4 key auto 4 M0 columns", 4, params.mNumColumns); @@ -574,6 +614,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] + @Test public void testLayout4KeyAuto4L0() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L0); assertEquals("4 key auto 4 L0 columns", 4, params.mNumColumns); @@ -589,6 +630,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] + @Test public void testLayout4KeyAuto4L1() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L1); assertEquals("4 key auto 4 L1 columns", 4, params.mNumColumns); @@ -604,6 +646,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ [3] <1> [2] [4] + @Test public void testLayout4KeyAuto4L2() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L2); assertEquals("4 key auto 4 L2 columns", 4, params.mNumColumns); @@ -619,6 +662,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [4] [3] [2] <1>| + @Test public void testLayout4KeyAuto4R0() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R0); assertEquals("4 key auto 4 R0 columns", 4, params.mNumColumns); @@ -634,6 +678,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [4] [3] [2] <1> ___| + @Test public void testLayout4KeyAuto4R1() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R1); assertEquals("4 key auto 4 R1 columns", 4, params.mNumColumns); @@ -649,6 +694,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [4] [3] <1> [2] ___| + @Test public void testLayout4KeyAuto4R2() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R2); assertEquals("4 key auto 4 R2 columns", 4, params.mNumColumns); @@ -664,6 +710,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [3] <1> [2] [4] + @Test public void testLayout4KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_M0); assertEquals("4 key auto 5 M0 columns", 4, params.mNumColumns); @@ -679,6 +726,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] + @Test public void testLayout4KeyAuto5L0() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L0); assertEquals("4 key auto 5 L0 columns", 4, params.mNumColumns); @@ -694,6 +742,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] + @Test public void testLayout4KeyAuto5L1() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L1); assertEquals("4 key auto 5 L1 columns", 4, params.mNumColumns); @@ -709,6 +758,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ [3] <1> [2] [4] + @Test public void testLayout4KeyAuto5L2() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L2); assertEquals("4 key auto 5 L2 columns", 4, params.mNumColumns); @@ -724,6 +774,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [4] [3] [2] <1>| + @Test public void testLayout4KeyAuto5R0() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R0); assertEquals("4 key auto 5 R0 columns", 4, params.mNumColumns); @@ -739,6 +790,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [4] [3] [2] <1> ___| + @Test public void testLayout4KeyAuto5R1() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R1); assertEquals("4 key auto 5 R1 columns", 4, params.mNumColumns); @@ -754,6 +806,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [4] [3] <1> [2] ___| + @Test public void testLayout4KeyAuto5R2() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R2); assertEquals("4 key auto 5 R2 columns", 4, params.mNumColumns); @@ -770,6 +823,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [4] [5] // [3] <1> [2] + @Test public void testLayout5KeyAuto3M0() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_M0); assertEquals("5 key auto 3 M0 columns", 3, params.mNumColumns); @@ -787,6 +841,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[4] [5] // |<1> [2] [3] + @Test public void testLayout5KeyAuto3L0() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L0); assertEquals("5 key auto 3 L0 columns", 3, params.mNumColumns); @@ -804,6 +859,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [4] [5] // |___ <1> [2] [3] + @Test public void testLayout5KeyAuto3L1() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L1); assertEquals("5 key auto 3 L1 columns", 3, params.mNumColumns); @@ -821,6 +877,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [4] [5] // |___ [3] <1> [2] + @Test public void testLayout5KeyAuto3L2() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L2); assertEquals("5 key auto 3 L2 columns", 3, params.mNumColumns); @@ -838,6 +895,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [5] [4]| // [3] [2] <1>| + @Test public void testLayout5KeyAuto3R0() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R0); assertEquals("5 key auto 3 R0 columns", 3, params.mNumColumns); @@ -855,6 +913,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [5] [4] ___| // [3] [2] <1> ___| + @Test public void testLayout5KeyAuto3R1() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R1); assertEquals("5 key auto 3 R1 columns", 3, params.mNumColumns); @@ -872,6 +931,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [4] [5] ___| // [3] <1> [2] ___| + @Test public void testLayout5KeyAuto3R2() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R2); assertEquals("5 key auto 3 R2 columns", 3, params.mNumColumns); @@ -889,6 +949,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [5] // [3] <1> [2] [4] + @Test public void testLayout5KeyAuto4M0() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_M0); assertEquals("5 key auto 4 M0 columns", 4, params.mNumColumns); @@ -906,6 +967,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[5] // |<1> [2] [3] [4] + @Test public void testLayout5KeyAuto4L0() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L0); assertEquals("5 key auto 4 L0 columns", 4, params.mNumColumns); @@ -923,6 +985,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [5] // |___ <1> [2] [3] [4] + @Test public void testLayout5KeyAuto4L1() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L1); assertEquals("5 key auto 4 L1 columns", 4, params.mNumColumns); @@ -940,6 +1003,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [5] // |___ [3] <1> [2] [4] + @Test public void testLayout5KeyAuto4L2() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L2); assertEquals("5 key auto 4 L2 columns", 4, params.mNumColumns); @@ -957,6 +1021,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [5]| // [4] [3] [2] <1>| + @Test public void testLayout5KeyAuto4R0() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R0); assertEquals("5 key auto 4 R0 columns", 4, params.mNumColumns); @@ -974,6 +1039,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [5] ___| // [4] [3] [2] <1> ___| + @Test public void testLayout5KeyAuto4R1() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R1); assertEquals("5 key auto 4 R1 columns", 4, params.mNumColumns); @@ -991,6 +1057,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [5] ___| // [4] [3] <1> [2] ___| + @Test public void testLayout5KeyAuto4R2() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R2); assertEquals("5 key auto 4 R2 columns", 4, params.mNumColumns); @@ -1007,6 +1074,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [5] [3] <1> [2] [4] + @Test public void testLayout5KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_M0); assertEquals("5 key auto 5 M0 columns", 5, params.mNumColumns); @@ -1023,6 +1091,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] [5] + @Test public void testLayout5KeyAuto5L0() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L0); assertEquals("5 key auto 5 L0 columns", 5, params.mNumColumns); @@ -1039,6 +1108,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] [5] + @Test public void testLayout5KeyAuto5L1() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L1); assertEquals("5 key auto 5 L1 columns", 5, params.mNumColumns); @@ -1055,6 +1125,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ [3] <1> [2] [4] [5] + @Test public void testLayout5KeyAuto5L2() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L2); assertEquals("5 key auto 5 L2 columns", 5, params.mNumColumns); @@ -1071,6 +1142,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [5] [4] [3] [2] <1>| + @Test public void testLayout5KeyAuto5R0() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R0); assertEquals("5 key auto 5 R0 columns", 5, params.mNumColumns); @@ -1087,6 +1159,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [5] [4] [3] [2] <1> ___| + @Test public void testLayout5KeyAuto5R1() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R1); assertEquals("5 key auto 5 R1 columns", 5, params.mNumColumns); @@ -1103,6 +1176,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // [5] [4] [3] <1> [2] ___| + @Test public void testLayout5KeyAuto5R2() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R2); assertEquals("5 key auto 5 R2 columns", 5, params.mNumColumns); @@ -1120,6 +1194,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [5] [6] // [3] <1> [2] [4] + @Test public void testLayout6KeyAuto4M0() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_M0); assertEquals("6 key auto 4 M0 columns", 4, params.mNumColumns); @@ -1138,6 +1213,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[5] [6] // |<1> [2] [3] [4] + @Test public void testLayout6KeyAuto4L0() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L0); assertEquals("6 key auto 4 L0 columns", 4, params.mNumColumns); @@ -1156,6 +1232,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [5] [6] // |___ <1> [2] [3] [4] + @Test public void testLayout6KeyAuto4L1() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L1); assertEquals("6 key auto 4 L1 columns", 4, params.mNumColumns); @@ -1174,6 +1251,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [5] [6] // |___ [3] <1> [2] [4] + @Test public void testLayout6KeyAuto4L2() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L2); assertEquals("6 key auto 4 L2 columns", 4, params.mNumColumns); @@ -1192,6 +1270,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [6] [5]| // [4] [3] [2] <1>| + @Test public void testLayout6KeyAuto4R0() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R0); assertEquals("6 key auto 4 R0 columns", 4, params.mNumColumns); @@ -1210,6 +1289,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [6] [5] ___| // [4] [3] [2] <1> ___| + @Test public void testLayout6KeyAuto4R1() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R1); assertEquals("6 key auto 4 R1 columns", 4, params.mNumColumns); @@ -1228,6 +1308,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [5] [6] ___| // [4] [3] <1> [2] ___| + @Test public void testLayout6KeyAuto4R2() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R2); assertEquals("6 key auto 4 R2 columns", 4, params.mNumColumns); @@ -1246,6 +1327,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [6] // [5] [3] <1> [2] [4] + @Test public void testLayout6KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_M0); assertEquals("6 key auto 5 M0 columns", 5, params.mNumColumns); @@ -1264,6 +1346,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[6] // |<1> [2] [3] [4] [5] + @Test public void testLayout6KeyAuto5L0() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L0); assertEquals("6 key auto 5 L0 columns", 5, params.mNumColumns); @@ -1282,6 +1365,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [6] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout6KeyAuto5L1() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L1); assertEquals("6 key auto 5 L1 columns", 5, params.mNumColumns); @@ -1300,6 +1384,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [6] // |___ [3] <1> [2] [4] [5] + @Test public void testLayout6KeyAuto5L2() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L2); assertEquals("6 key auto 5 L2 columns", 5, params.mNumColumns); @@ -1318,6 +1403,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [6]| // [5] [4] [3] [2] <1>| + @Test public void testLayout6KeyAuto5R0() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R0); assertEquals("6 key auto 5 R0 columns", 5, params.mNumColumns); @@ -1336,6 +1422,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [6] ___| // [5] [4] [3] [2] <1> ___| + @Test public void testLayout6KeyAuto5R1() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R1); assertEquals("6 key auto 5 R1 columns", 5, params.mNumColumns); @@ -1354,6 +1441,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [6] ___| // [5] [4] [3] <1> [2] ___| + @Test public void testLayout6KeyAuto5R2() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R2); assertEquals("6 key auto 5 R2 columns", 5, params.mNumColumns); @@ -1371,6 +1459,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] [5] [6] [7] ___ ___ ___| + @Test public void testLayout7KeyAuto7L0() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L0); assertEquals("7 key auto 7 L0 columns", 7, params.mNumColumns); @@ -1389,6 +1478,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] [5] [6] [7] ___ ___| + @Test public void testLayout7KeyAuto7L1() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L1); assertEquals("7 key auto 7 L1 columns", 7, params.mNumColumns); @@ -1407,6 +1497,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ [3] <1> [2] [4] [5] [6] [7] ___ ___| + @Test public void testLayout7KeyAuto7L2() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L2); assertEquals("7 key auto 7 L2 columns", 7, params.mNumColumns); @@ -1425,6 +1516,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ [5] [3] <1> [2] [4] [6] [7] ___ ___| + @Test public void testLayout7KeyAuto7L3() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L3); assertEquals("7 key auto 7 L3 columns", 7, params.mNumColumns); @@ -1443,6 +1535,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ [7] [5] [3] <1> [2] [4] [6] ___ ___| + @Test public void testLayout7KeyAuto7M0() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M0); assertEquals("7 key auto 7 M0 columns", 7, params.mNumColumns); @@ -1461,6 +1554,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ ___ [7] [5] [3] <1> [2] [4] [6] ___| + @Test public void testLayout7KeyAuto7M1() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M1); assertEquals("7 key auto 7 M1 columns", 7, params.mNumColumns); @@ -1479,6 +1573,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ ___ [7] [6] [5] [3] <1> [2] [4] ___| + @Test public void testLayout7KeyAuto7R3() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R3); assertEquals("7 key auto 7 R3 columns", 7, params.mNumColumns); @@ -1497,6 +1592,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ ___ [7] [6] [5] [4] [3] <1> [2] ___| + @Test public void testLayout7KeyAuto7R2() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R2); assertEquals("7 key auto 7 R2 columns", 7, params.mNumColumns); @@ -1515,6 +1611,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ ___ [7] [6] [5] [4] [3] [2] <1> ___| + @Test public void testLayout7KeyAuto7R1() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R1); assertEquals("7 key auto 7 R1 columns", 7, params.mNumColumns); @@ -1533,6 +1630,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { } // |___ ___ [7] [6] [5] [4] [3] [2] <1>| + @Test public void testLayout7KeyAuto7R0() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R0); assertEquals("7 key auto 7 R0 columns", 7, params.mNumColumns); @@ -1552,6 +1650,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [6] [7] // [5] [3] <1> [2] [4] + @Test public void testLayout7KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_M0); assertEquals("7 key auto 5 M0 columns", 5, params.mNumColumns); @@ -1571,6 +1670,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[6] [7] // |<1> [2] [3] [4] [5] + @Test public void testLayout7KeyAuto5L0() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L0); assertEquals("7 key auto 5 L0 columns", 5, params.mNumColumns); @@ -1590,6 +1690,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [6] [7] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout7KeyAuto5L1() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L1); assertEquals("7 key auto 5 L1 columns", 5, params.mNumColumns); @@ -1609,6 +1710,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [6] [7] // |___ [3] <1> [2] [4] [5] + @Test public void testLayout7KeyAuto5L2() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L2); assertEquals("7 key auto 5 L2 columns", 5, params.mNumColumns); @@ -1628,6 +1730,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [7] [6]| // [5] [4] [3] [2] <1>| + @Test public void testLayout7KeyAuto5R0() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R0); assertEquals("7 key auto 5 R0 columns", 5, params.mNumColumns); @@ -1647,6 +1750,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [7] [6] ___| // [5] [4] [3] [2] <1> ___| + @Test public void testLayout7KeyAuto5R1() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R1); assertEquals("7 key auto 5 R1 columns", 5, params.mNumColumns); @@ -1666,6 +1770,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [6] [7] ___| // [5] [4] [3] <1> [2] ___| + @Test public void testLayout7KeyAuto5R2() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R2); assertEquals("7 key auto 5 R2 columns", 5, params.mNumColumns); @@ -1686,6 +1791,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [7] // [6] [4] [5] // [3] <1> [2] + @Test public void testLayout7KeyAuto3M0() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_M0); assertEquals("7 key auto 3 M0 columns", 3, params.mNumColumns); @@ -1706,6 +1812,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[7] // |[4] [5] [6] // |<1> [2] [3] + @Test public void testLayout7KeyAuto3L0() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L0); assertEquals("7 key auto 3 L0 columns", 3, params.mNumColumns); @@ -1726,6 +1833,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [7] // |___ [4] [5] [6] // |___ <1> [2] [3] + @Test public void testLayout7KeyAuto3L1() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L1); assertEquals("7 key auto 3 L1 columns", 3, params.mNumColumns); @@ -1746,6 +1854,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [7] // |___ [6] [4] [5] // |___ [3] <1> [2] + @Test public void testLayout7KeyAuto3L2() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L2); assertEquals("7 key auto 3 L2 columns", 3, params.mNumColumns); @@ -1766,6 +1875,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [7]| // [6] [5] [4]| // [3] [2] <1>| + @Test public void testLayout7KeyAuto3R0() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R0); assertEquals("7 key auto 3 R0 columns", 3, params.mNumColumns); @@ -1786,6 +1896,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [7] ___| // [6] [5] [4] ___| // [3] [2] <1> ___| + @Test public void testLayout7KeyAuto3R1() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R1); assertEquals("7 key auto 3 R1 columns", 3, params.mNumColumns); @@ -1806,6 +1917,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [7] ___| // [6] [4] [5] ___| // [3] <1> [2] ___| + @Test public void testLayout7KeyAuto3R2() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R2); assertEquals("7 key auto 3 R2 columns", 3, params.mNumColumns); @@ -1825,6 +1937,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [8] [6] [7] // [5] [3] <1> [2] [4] + @Test public void testLayout8KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_M0); assertEquals("8 key auto 5 M0 columns", 5, params.mNumColumns); @@ -1845,6 +1958,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[6] [7] [8] // |<1> [2] [3] [4] [5] + @Test public void testLayout8KeyAuto5L0() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L0); assertEquals("8 key auto 5 L0 columns", 5, params.mNumColumns); @@ -1865,6 +1979,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [6] [7] [8] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout8KeyAuto5L1() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L1); assertEquals("8 key auto 5 L1 columns", 5, params.mNumColumns); @@ -1885,6 +2000,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [8] [6] [7] // |___ [3] <1> [2] [4] [5] + @Test public void testLayout8KeyAuto5L2() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L2); assertEquals("8 key auto 5 L2 columns", 5, params.mNumColumns); @@ -1905,6 +2021,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [8] [7] [6]| // [5] [4] [3] [2] <1>| + @Test public void testLayout8KeyAuto5R0() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R0); assertEquals("8 key auto 5 R0 columns", 5, params.mNumColumns); @@ -1925,6 +2042,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [8] [7] [6] ___| // [5] [4] [3] [2] <1> ___| + @Test public void testLayout8KeyAuto5R1() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R1); assertEquals("8 key auto 5 R1 columns", 5, params.mNumColumns); @@ -1945,6 +2063,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [8] [6] [7] ___| // [5] [4] [3] <1> [2] ___| + @Test public void testLayout8KeyAuto5R2() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R2); assertEquals("8 key auto 5 R2 columns", 5, params.mNumColumns); @@ -1965,6 +2084,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [8] [6] [7] [9] // [5] [3] <1> [2] [4] + @Test public void testLayout9KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_M0); assertEquals("9 key auto 5 M0 columns", 5, params.mNumColumns); @@ -1986,6 +2106,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[6] [7] [8] [9] // |<1> [2] [3] [4] [5] + @Test public void testLayout9KeyAuto5L0() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L0); assertEquals("9 key auto 5 L0 columns", 5, params.mNumColumns); @@ -2007,6 +2128,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [6] [7] [8] [9] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout9KeyAuto5L1() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L1); assertEquals("9 key auto 5 L1 columns", 5, params.mNumColumns); @@ -2028,6 +2150,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [6] [7] [8] [9] // |___ [3] <1> [2] [4] [5] + @Test public void testLayout9KeyAuto5L2() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L2); assertEquals("9 key auto 5 L2 columns", 5, params.mNumColumns); @@ -2049,6 +2172,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [9] [8] [7] [6]| // [5] [4] [3] [2] <1>| + @Test public void testLayout9KeyAuto5R0() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R0); assertEquals("9 key auto 5 R0 columns", 5, params.mNumColumns); @@ -2070,6 +2194,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [9] [8] [7] [6] ___| // [5] [4] [3] [2] <1> ___| + @Test public void testLayout9KeyAuto5R1() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R1); assertEquals("9 key auto 5 R1 columns", 5, params.mNumColumns); @@ -2091,6 +2216,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [9] [8] [6] [7] ___| // [5] [4] [3] <1> [2] ___| + @Test public void testLayout9KeyAuto5R2() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R2); assertEquals("9 key auto 5 R2 columns", 5, params.mNumColumns); @@ -2112,6 +2238,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [A] [8] [6] [7] [9] // [5] [3] <1> [2] [4] + @Test public void testLayout10KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_M0); assertEquals("10 key auto 5 M0 columns", 5, params.mNumColumns); @@ -2134,6 +2261,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |[6] [7] [8] [9] [A] // |<1> [2] [3] [4] [5] + @Test public void testLayout10KeyAuto5L0() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L0); assertEquals("10 key auto 5 L0 columns", 5, params.mNumColumns); @@ -2156,6 +2284,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [6] [7] [8] [9] [A] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout10KeyAuto5L1() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L1); assertEquals("10 key auto 5 L1 columns", 5, params.mNumColumns); @@ -2178,6 +2307,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // |___ [8] [6] [7] [9] [A] // |___ [3] <1> [2] [4] [5] + @Test public void testLayout10KeyAuto5L2() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L2); assertEquals("10 key auto 5 L2 columns", 5, params.mNumColumns); @@ -2200,6 +2330,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [A] [9] [8] [7] [6]| // [5] [4] [3] [2] <1>| + @Test public void testLayout10KeyAuto5R0() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R0); assertEquals("10 key auto 5 R0 columns", 5, params.mNumColumns); @@ -2222,6 +2353,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [A] [9] [8] [7] [6] ___| // [5] [4] [3] [2] <1> ___| + @Test public void testLayout10KeyAuto5R1() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R1); assertEquals("10 key auto 5 R1 columns", 5, params.mNumColumns); @@ -2244,6 +2376,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [A] [9] [8] [6] [7] ___| // [5] [4] [3] <1> [2] ___| + @Test public void testLayout10KeyAuto5R2() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R2); assertEquals("10 key auto 5 R2 columns", 5, params.mNumColumns); @@ -2267,6 +2400,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [B] // [A] [8] [6] [7] [9] // [5] [3] <1> [2] [4] + @Test public void testLayout11KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(11, 5, XPOS_M0); assertEquals("11 key auto 5 M0 columns", 5, params.mNumColumns); @@ -2291,6 +2425,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [B] [C] // [A] [8] [6] [7] [9] // [5] [3] <1> [2] [4] + @Test public void testLayout12KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(12, 5, XPOS_M0); assertEquals("12 key auto 5 M0 columns", 5, params.mNumColumns); @@ -2316,6 +2451,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [D] [B] [C] // [A] [8] [6] [7] [9] // [5] [3] <1> [2] [4] + @Test public void testLayout13KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(13, 5, XPOS_M0); assertEquals("13 key auto 5 M0 columns", 5, params.mNumColumns); @@ -2342,6 +2478,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [D] [B] [C] [E] // [A] [8] [6] [7] [9] // [5] [3] <1> [2] [4] + @Test public void testLayout14KeyAuto5M0() { MoreKeysKeyboardParams params = createParams(14, 5, XPOS_M0); assertEquals("13 key auto 5 M0 columns", 5, params.mNumColumns); @@ -2369,6 +2506,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [J] [I] [H] ___| // [G] [F] [E] [D] [C] [B] [A] [9] ___| // [8] [7] [6] [5] [4] [3] [2] <1> ___| + @Test public void testLayout19KeyAuto8R1() { MoreKeysKeyboardParams params = createParams(19, 8, XPOS_R1); assertEquals("19 key auto 8 R1 columns", 8, params.mNumColumns); @@ -2401,6 +2539,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [J] [H] [I] ___| // [G] [F] [E] [D] [C] [B] [9] [A] ___| // [8] [7] [6] [5] [4] [3] <1> [2] ___| + @Test public void testLayout19KeyAuto8R2() { MoreKeysKeyboardParams params = createParams(19, 8, XPOS_R2); assertEquals("19 key auto 8 R2 columns", 8, params.mNumColumns); @@ -2433,6 +2572,7 @@ public class MoreKeysKeyboardBuilderAutoOrderTests extends AndroidTestCase { // [J] [H] [I] ___| // [G] [F] [E] [D] [B] [9] [A] [C] ___| // [8] [7] [6] [5] [3] <1> [2] [4] ___| + @Test public void testLayout19KeyAuto8R3() { MoreKeysKeyboardParams params = createParams(19, 8, XPOS_R3); assertEquals("19 key auto 8 R3 columns", 8, params.mNumColumns); diff --git a/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderFixedOrderTests.java b/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderFixedOrderTests.java index 7e51d955d1b7240aa57b9ba42592f2339fc8dca1..3c5c298f656febb85977e90511c9fe599e24e953 100644 --- a/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderFixedOrderTests.java +++ b/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderFixedOrderTests.java @@ -16,13 +16,21 @@ package com.android.inputmethod.keyboard; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.MediumTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; + +import androidx.test.filters.MediumTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.keyboard.MoreKeysKeyboard.MoreKeysKeyboardParams; +import org.junit.Test; +import org.junit.runner.RunWith; + @MediumTest -public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class MoreKeysKeyboardBuilderFixedOrderTests { private static final int WIDTH = 10; private static final int HEIGHT = 10; @@ -38,11 +46,6 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { private static final int XPOS_R1 = WIDTH * 8 + WIDTH / 2; private static final int XPOS_R0 = WIDTH * 9 + WIDTH / 2; - @Override - protected void setUp() throws Exception { - super.setUp(); - } - private static MoreKeysKeyboardParams createParams(final int numKeys, final int columnNum, final int coordXInParent) { final MoreKeysKeyboardParams params = new MoreKeysKeyboardParams(); @@ -52,6 +55,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { return params; } + @Test public void testLayoutError() { MoreKeysKeyboardParams params = null; try { @@ -69,6 +73,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // "<m>" is the default key. // <1> + @Test public void testLayout1KeyFix5M0() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_M0); assertEquals("1 key fix 5 M0 columns", 1, params.mNumColumns); @@ -81,6 +86,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |<1> + @Test public void testLayout1KeyFix5L0() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L0); assertEquals("1 key fix 5 L0 columns", 1, params.mNumColumns); @@ -93,6 +99,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ <1> + @Test public void testLayout1KeyFix5L1() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L1); assertEquals("1 key fix 5 L1 columns", 1, params.mNumColumns); @@ -105,6 +112,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ ___ <1> + @Test public void testLayout1KeyFix5L2() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L2); assertEquals("1 key fix 5 L2 columns", 1, params.mNumColumns); @@ -117,6 +125,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // <1>| + @Test public void testLayout1KeyFix5R0() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R0); assertEquals("1 key fix 5 R0 columns", 1, params.mNumColumns); @@ -129,6 +138,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // <1> ___| + @Test public void testLayout1KeyFix5R1() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R1); assertEquals("1 key fix 5 R1 columns", 1, params.mNumColumns); @@ -141,6 +151,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // <1> ___ ___| + @Test public void testLayout1KeyFix5R2() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R2); assertEquals("1 key fix 5 R2 columns", 1, params.mNumColumns); @@ -153,6 +164,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // <1> [2] + @Test public void testLayout2KeyFix5M0() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_M0); assertEquals("2 key fix 5 M0 columns", 2, params.mNumColumns); @@ -166,6 +178,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |<1> [2] + @Test public void testLayout2KeyFix5L0() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L0); assertEquals("2 key fix 5 L0 columns", 2, params.mNumColumns); @@ -179,6 +192,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ <1> [2] + @Test public void testLayout2KeyFix5L1() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L1); assertEquals("2 key fix 5 L1 columns", 2, params.mNumColumns); @@ -192,6 +206,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ ___ <1> [2] + @Test public void testLayout2KeyFix5L2() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L2); assertEquals("2 key fix 5 L2 columns", 2, params.mNumColumns); @@ -205,6 +220,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] <2>| + @Test public void testLayout2KeyFix5R0() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R0); assertEquals("2 key fix 5 R0 columns", 2, params.mNumColumns); @@ -218,6 +234,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] <2> ___| + @Test public void testLayout2KeyFix5R1() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R1); assertEquals("2 key fix 5 R1 columns", 2, params.mNumColumns); @@ -231,6 +248,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // <1> [2] ___| + @Test public void testLayout2KeyFix5R2() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R2); assertEquals("2 key fix 5 R2 columns", 2, params.mNumColumns); @@ -245,6 +263,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [3] // <1> [2] + @Test public void testLayout3KeyFix2M0() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_M0); assertEquals("3 key fix 2 M0 columns", 2, params.mNumColumns); @@ -260,6 +279,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[3] // |<1> [2] + @Test public void testLayout3KeyFix2L0() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L0); assertEquals("3 key fix 2 L0 columns", 2, params.mNumColumns); @@ -275,6 +295,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [3] // |___ <1> [2] + @Test public void testLayout3KeyFix2L1() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L1); assertEquals("3 key fix 2 L1 columns", 2, params.mNumColumns); @@ -290,6 +311,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // | [3] // |___ ___ <1> [2] + @Test public void testLayout3KeyFix2L2() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L2); assertEquals("3 key fix 2 L2 columns", 2, params.mNumColumns); @@ -305,6 +327,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [3]| // [1] <2>| + @Test public void testLayout3KeyFix2R0() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R0); assertEquals("3 key fix 2 R0 columns", 2, params.mNumColumns); @@ -320,6 +343,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [3] ___| // [1] <2> ___| + @Test public void testLayout3KeyFix2R1() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R1); assertEquals("3 key fix 2 R1 columns", 2, params.mNumColumns); @@ -335,6 +359,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [3] ___| // <1> [2] ___| + @Test public void testLayout3KeyFix2R2() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R2); assertEquals("3 key fix 2 R2 columns", 2, params.mNumColumns); @@ -350,6 +375,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [3] [4] // <1> [2] + @Test public void testLayout4KeyFix2M0() { MoreKeysKeyboardParams params = createParams(4, 2, XPOS_M0); assertEquals("3 key fix 2 M0 columns", 2, params.mNumColumns); @@ -366,6 +392,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[3] [4] // |<1> [2] + @Test public void testLayout4KeyFix2L0() { MoreKeysKeyboardParams params = createParams(4, 2, XPOS_L0); assertEquals("3 key fix 2 L0 columns", 2, params.mNumColumns); @@ -382,6 +409,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [3] [4] // |___ <1> [2] + @Test public void testLayout4KeyFix2L1() { MoreKeysKeyboardParams params = createParams(4, 2, XPOS_L1); assertEquals("3 key fix 2 L1 columns", 2, params.mNumColumns); @@ -398,6 +426,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // | [3] [4] // |___ ___ <1> [2] + @Test public void testLayout4KeyFix2L2() { MoreKeysKeyboardParams params = createParams(4, 2, XPOS_L2); assertEquals("3 key fix 2 L2 columns", 2, params.mNumColumns); @@ -414,6 +443,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [3] [4]| // [1] <2>| + @Test public void testLayout4KeyFix2R0() { MoreKeysKeyboardParams params = createParams(4, 2, XPOS_R0); assertEquals("3 key fix 2 R0 columns", 2, params.mNumColumns); @@ -430,6 +460,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [3] [4] ___| // [1] <2> ___| + @Test public void testLayout4KeyFix2R1() { MoreKeysKeyboardParams params = createParams(4, 2, XPOS_R1); assertEquals("3 key fix 2 R1 columns", 2, params.mNumColumns); @@ -446,6 +477,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [3] [4] ___| // <1> [2] ___| + @Test public void testLayout4KeyFix2R2() { MoreKeysKeyboardParams params = createParams(4, 2, XPOS_R2); assertEquals("3 key fix 2 R2 columns", 2, params.mNumColumns); @@ -461,6 +493,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] <2> [3] + @Test public void testLayout3KeyFix5M0() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_M0); assertEquals("3 key fix 5 columns", 3, params.mNumColumns); @@ -475,6 +508,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |<1> [2] [3] + @Test public void testLayout3KeyFix5L0() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L0); assertEquals("3 key fix 5 L0 columns", 3, params.mNumColumns); @@ -489,6 +523,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] + @Test public void testLayout3KeyFix5L1() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L1); assertEquals("3 key fix 5 L1 columns", 3, params.mNumColumns); @@ -503,6 +538,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ [1] <2> [3] + @Test public void testLayout3KeyFix5L2() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L2); assertEquals("3 key fix 5 L2 columns", 3, params.mNumColumns); @@ -517,6 +553,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] <3>| + @Test public void testLayout3KeyFix5R0() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R0); assertEquals("3 key fix 5 R0 columns", 3, params.mNumColumns); @@ -531,6 +568,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] <3> ___| + @Test public void testLayout3KeyFix5R1() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R1); assertEquals("3 key fix 5 R1 columns", 3, params.mNumColumns); @@ -545,6 +583,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] <2> [3] ___| + @Test public void testLayout3KeyFix5R2() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R2); assertEquals("3 key fix 5 R2 columns", 3, params.mNumColumns); @@ -560,6 +599,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] // [1] <2> [3] + @Test public void testLayout4KeyFix3M0() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_M0); assertEquals("4 key fix 3 M0 columns", 3, params.mNumColumns); @@ -576,6 +616,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[4] // |<1> [2] [3] + @Test public void testLayout4KeyFix3L0() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L0); assertEquals("4 key fix 3 L0 columns", 3, params.mNumColumns); @@ -592,6 +633,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [4] // |___ <1> [2] [3] + @Test public void testLayout4KeyFix3L1() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L1); assertEquals("4 key fix 3 L1 columns", 3, params.mNumColumns); @@ -608,6 +650,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ ___ [4] // |___ ___ [1] <2> [3] + @Test public void testLayout4KeyFix3L2() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L2); assertEquals("4 key fix 3 L2 columns", 3, params.mNumColumns); @@ -624,6 +667,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4]| // [1] [2] <3>| + @Test public void testLayout4KeyFix3R0() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R0); assertEquals("4 key fix 3 R0 columns", 3, params.mNumColumns); @@ -640,6 +684,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] ___| // [1] [2] <3> ___| + @Test public void testLayout4KeyFix3R1() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R1); assertEquals("4 key fix 3 R1 columns", 3, params.mNumColumns); @@ -656,6 +701,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] ___| // [1] <2> [3] ___| + @Test public void testLayout4KeyFix3R2() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R2); assertEquals("4 key fix 3 R2 columns", 3, params.mNumColumns); @@ -672,6 +718,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] [5] // [1] <2> [3] + @Test public void testLayout5KeyFix3M0() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_M0); assertEquals("5 key fix 3 M0 columns", 3, params.mNumColumns); @@ -689,6 +736,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[4] [5] // |<1> [2] [3] + @Test public void testLayout5KeyFix3L0() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L0); assertEquals("5 key fix 3 L0 columns", 3, params.mNumColumns); @@ -706,6 +754,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [4] [5] // |___ <1> [2] [3] + @Test public void testLayout5KeyFix3L1() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L1); assertEquals("5 key fix 3 L1 columns", 3, params.mNumColumns); @@ -723,6 +772,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [4] [5] // |___ [1] <2> [3] + @Test public void testLayout5KeyFix3L2() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L2); assertEquals("5 key fix 3 L2 columns", 3, params.mNumColumns); @@ -740,6 +790,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] [5]| // [1] [2] <3>| + @Test public void testLayout5KeyFix3R0() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R0); assertEquals("5 key fix 3 R0 columns", 3, params.mNumColumns); @@ -757,6 +808,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] [5] ___| // [1] [2] <3> ___| + @Test public void testLayout5KeyFix3R1() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R1); assertEquals("5 key fix 3 R1 columns", 3, params.mNumColumns); @@ -774,6 +826,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] [5] ___| // [1] <2> [3] ___| + @Test public void testLayout5KeyFix3R2() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R2); assertEquals("5 key fix 3 R2 columns", 3, params.mNumColumns); @@ -791,6 +844,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] [5] [6] // [1] <2> [3] + @Test public void testLayout6KeyFix3M0() { MoreKeysKeyboardParams params = createParams(6, 3, XPOS_M0); assertEquals("6 key fix 3 M0 columns", 3, params.mNumColumns); @@ -809,6 +863,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[4] [5] [6] // |<1> [2] [3] + @Test public void testLayout6KeyFix3L0() { MoreKeysKeyboardParams params = createParams(6, 3, XPOS_L0); assertEquals("6 key fix 3 L0 columns", 3, params.mNumColumns); @@ -827,6 +882,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [4] [5] [6] // |___ <1> [2] [3] + @Test public void testLayout6KeyFix3L1() { MoreKeysKeyboardParams params = createParams(6, 3, XPOS_L1); assertEquals("6 key fix 3 L1 columns", 3, params.mNumColumns); @@ -845,6 +901,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [4] [5] [6] // |___ [1] <2> [3] + @Test public void testLayout6KeyFix3L2() { MoreKeysKeyboardParams params = createParams(6, 3, XPOS_L2); assertEquals("6 key fix 3 L2 columns", 3, params.mNumColumns); @@ -863,6 +920,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] [5] [6]| // [1] [2] <3>| + @Test public void testLayout6KeyFix3R0() { MoreKeysKeyboardParams params = createParams(6, 3, XPOS_R0); assertEquals("6 key fix 3 R0 columns", 3, params.mNumColumns); @@ -881,6 +939,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] [5] [6] ___| // [1] [2] <3> ___| + @Test public void testLayout6KeyFix3R1() { MoreKeysKeyboardParams params = createParams(6, 3, XPOS_R1); assertEquals("6 key fix 3 R1 columns", 3, params.mNumColumns); @@ -899,6 +958,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [4] [5] [6] ___| // [1] <2> [3] ___| + @Test public void testLayout6KeyFix3R2() { MoreKeysKeyboardParams params = createParams(6, 3, XPOS_R2); assertEquals("6 key fix 3 R2 columns", 3, params.mNumColumns); @@ -916,6 +976,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // <1> [2] [3] [4] + @Test public void testLayout4KeyFix5M0() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_M0); assertEquals("4 key fix 5 columns", 4, params.mNumColumns); @@ -931,6 +992,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] + @Test public void testLayout4KeyFix5L0() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L0); assertEquals("4 key fix 5 L0 columns", 4, params.mNumColumns); @@ -946,6 +1008,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] + @Test public void testLayout4KeyFix5L1() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L1); assertEquals("4 key fix 5 L1 columns", 4, params.mNumColumns); @@ -961,6 +1024,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ [1] <2> [3] [4] + @Test public void testLayout4KeyFix5L2() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L2); assertEquals("4 key fix 5 L2 columns", 4, params.mNumColumns); @@ -976,6 +1040,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] [3] <4>| + @Test public void testLayout4KeyFix5R0() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R0); assertEquals("4 key fix 5 R0 columns", 4, params.mNumColumns); @@ -991,6 +1056,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] [3] <4> ___| + @Test public void testLayout4KeyFix5R1() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R1); assertEquals("4 key fix 5 R1 columns", 4, params.mNumColumns); @@ -1006,6 +1072,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] <3> [4] ___| + @Test public void testLayout4KeyFix5R2() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R2); assertEquals("4 key fix 5 R2 columns", 4, params.mNumColumns); @@ -1022,6 +1089,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] // [1] <2> [3] [4] + @Test public void testLayout5KeyFix4M0() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_M0); assertEquals("5 key fix 4 M0 columns", 4, params.mNumColumns); @@ -1039,6 +1107,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[5] // |<1> [2] [3] [4] + @Test public void testLayout5KeyFix4L0() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L0); assertEquals("5 key fix 4 L0 columns", 4, params.mNumColumns); @@ -1056,6 +1125,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [5] // |___ <1> [2] [3] [4] + @Test public void testLayout5KeyFix4L1() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L1); assertEquals("5 key fix 4 L1 columns", 4, params.mNumColumns); @@ -1073,6 +1143,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [5] // |___ [1] <2> [3] [4] + @Test public void testLayout5KeyFix4L2() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L2); assertEquals("5 key fix 4 L2 columns", 4, params.mNumColumns); @@ -1090,6 +1161,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5]| // [1] [2] [3] <4>| + @Test public void testLayout5KeyFix4R0() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R0); assertEquals("5 key fix 4 R0 columns", 4, params.mNumColumns); @@ -1107,6 +1179,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] ___| // [1] [2] [3] <4> ___| + @Test public void testLayout5KeyFix4R1() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R1); assertEquals("5 key fix 4 R1 columns", 4, params.mNumColumns); @@ -1124,6 +1197,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] ___| // [1] [2] <3> [4] ___| + @Test public void testLayout5KeyFix4R2() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R2); assertEquals("5 key fix 4 R2 columns", 4, params.mNumColumns); @@ -1141,6 +1215,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] // [1] <2> [3] [4] + @Test public void testLayout6KeyFix4M0() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_M0); assertEquals("6 key fix 4 M0 columns", 4, params.mNumColumns); @@ -1159,6 +1234,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[5] [6] // |<1> [2] [3] [4] + @Test public void testLayout6KeyFix4L0() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L0); assertEquals("6 key fix 4 L0 columns", 4, params.mNumColumns); @@ -1177,6 +1253,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [5] [6] // |___ <1> [2] [3] [4] + @Test public void testLayout6KeyFix4L1() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L1); assertEquals("6 key fix 4 L1 columns", 4, params.mNumColumns); @@ -1195,6 +1272,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [5] [6] // |___ [1] <2> [3] [4] + @Test public void testLayout6KeyFix4L2() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L2); assertEquals("6 key fix 4 L2 columns", 4, params.mNumColumns); @@ -1213,6 +1291,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6]| // [1] [2] [3] <4>| + @Test public void testLayout6KeyFix4R0() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R0); assertEquals("6 key fix 4 R0 columns", 4, params.mNumColumns); @@ -1231,6 +1310,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] ___| // [1] [2] [3] <4> ___| + @Test public void testLayout6KeyFix4R1() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R1); assertEquals("6 key fix 4 R1 columns", 4, params.mNumColumns); @@ -1249,6 +1329,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] ___| // [1] [2] <3> [4] ___| + @Test public void testLayout6KeyFix4R2() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R2); assertEquals("6 key fix 4 R2 columns", 4, params.mNumColumns); @@ -1267,6 +1348,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] [7] // [1] <2> [3] [4] + @Test public void testLayout7KeyFix4M0() { MoreKeysKeyboardParams params = createParams(7, 4, XPOS_M0); assertEquals("7 key fix 4 M0 columns", 4, params.mNumColumns); @@ -1286,6 +1368,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[5] [6] [7] // |<1> [2] [3] [4] + @Test public void testLayout7KeyFix4L0() { MoreKeysKeyboardParams params = createParams(7, 4, XPOS_L0); assertEquals("7 key fix 4 L0 columns", 4, params.mNumColumns); @@ -1305,6 +1388,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [5] [6] [7] // |___ <1> [2] [3] [4] + @Test public void testLayout7KeyFix4L1() { MoreKeysKeyboardParams params = createParams(7, 4, XPOS_L1); assertEquals("7 key fix 4 L1 columns", 4, params.mNumColumns); @@ -1324,6 +1408,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [5] [6] [7] // |___ [1] <2> [3] [4] + @Test public void testLayout7KeyFix4L2() { MoreKeysKeyboardParams params = createParams(7, 4, XPOS_L2); assertEquals("7 key fix 4 L2 columns", 4, params.mNumColumns); @@ -1343,6 +1428,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] [7]| // [1] [2] [3] <4>| + @Test public void testLayout7KeyFix4R0() { MoreKeysKeyboardParams params = createParams(7, 4, XPOS_R0); assertEquals("7 key fix 4 R0 columns", 4, params.mNumColumns); @@ -1362,6 +1448,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] [7] ___| // [1] [2] [3] <4> ___| + @Test public void testLayout7KeyFix4R1() { MoreKeysKeyboardParams params = createParams(7, 4, XPOS_R1); assertEquals("7 key fix 4 R1 columns", 4, params.mNumColumns); @@ -1381,6 +1468,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] [7] ___| // [1] [2] <3> [4] ___| + @Test public void testLayout7KeyFix4R2() { MoreKeysKeyboardParams params = createParams(7, 4, XPOS_R2); assertEquals("7 key fix 4 R2 columns", 4, params.mNumColumns); @@ -1400,6 +1488,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] [7] [8] // [1] <2> [3] [4] + @Test public void testLayout8KeyFix4M0() { MoreKeysKeyboardParams params = createParams(8, 4, XPOS_M0); assertEquals("8 key fix 4 M0 columns", 4, params.mNumColumns); @@ -1420,6 +1509,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[5] [6] [7] [8] // |<1> [2] [3] [4] + @Test public void testLayout8KeyFix4L0() { MoreKeysKeyboardParams params = createParams(8, 4, XPOS_L0); assertEquals("8 key fix 4 L0 columns", 4, params.mNumColumns); @@ -1440,6 +1530,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [5] [6] [7] [8] // |___ <1> [2] [3] [4] + @Test public void testLayout8KeyFix4L1() { MoreKeysKeyboardParams params = createParams(8, 4, XPOS_L1); assertEquals("8 key fix 4 L1 columns", 4, params.mNumColumns); @@ -1460,6 +1551,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [5] [6] [7] [8] // |___ [1] <2> [3] [4] + @Test public void testLayout8KeyFix4L2() { MoreKeysKeyboardParams params = createParams(8, 4, XPOS_L2); assertEquals("8 key fix 4 L2 columns", 4, params.mNumColumns); @@ -1480,6 +1572,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] [7] [8]| // [1] [2] [3] <4>| + @Test public void testLayout8KeyFix4R0() { MoreKeysKeyboardParams params = createParams(8, 4, XPOS_R0); assertEquals("8 key fix 4 R0 columns", 4, params.mNumColumns); @@ -1500,6 +1593,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] [7] [8] ___| // [1] [2] [3] <4> ___| + @Test public void testLayout8KeyFix4R1() { MoreKeysKeyboardParams params = createParams(8, 4, XPOS_R1); assertEquals("8 key fix 4 R1 columns", 4, params.mNumColumns); @@ -1520,6 +1614,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [5] [6] [7] [8] ___| // [1] [2] <3> [4] ___| + @Test public void testLayout8KeyFix4R2() { MoreKeysKeyboardParams params = createParams(8, 4, XPOS_R2); assertEquals("8 key fix 4 R2 columns", 4, params.mNumColumns); @@ -1539,6 +1634,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] <3> [4] [5] + @Test public void testLayout5KeyFix5M0() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_M0); assertEquals("5 key fix 5 columns", 5, params.mNumColumns); @@ -1555,6 +1651,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] [5] + @Test public void testLayout5KeyFix5L0() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L0); assertEquals("5 key fix 5 L0 columns", 5, params.mNumColumns); @@ -1571,6 +1668,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] [5] + @Test public void testLayout5KeyFix5L1() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L1); assertEquals("5 key fix 5 L1 columns", 5, params.mNumColumns); @@ -1587,6 +1685,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ [1] <2> [3] [4] [5] + @Test public void testLayout5KeyFix5L2() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L2); assertEquals("5 key fix 5 L2 columns", 5, params.mNumColumns); @@ -1603,6 +1702,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] [3] [4] <5>| + @Test public void testLayout5KeyFix5R0() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R0); assertEquals("5 key fix 5 R0 columns", 5, params.mNumColumns); @@ -1619,6 +1719,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] [3] [4] <5> ___| + @Test public void testLayout5KeyFix5R1() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R1); assertEquals("5 key fix 5 R1 columns", 5, params.mNumColumns); @@ -1635,6 +1736,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] [3] <4> [5] ___| + @Test public void testLayout5KeyFix5R2() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R2); assertEquals("5 key fix 5 R2 columns", 5, params.mNumColumns); @@ -1652,6 +1754,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] // [1] [2] <3> [4] [5] + @Test public void testLayout6KeyFix5M0() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_M0); assertEquals("6 key fix 5 columns", 5, params.mNumColumns); @@ -1670,6 +1773,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[6] // |<1> [2] [3] [4] [5] + @Test public void testLayout6KeyFix5L0() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L0); assertEquals("6 key fix 5 L0 columns", 5, params.mNumColumns); @@ -1688,6 +1792,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [6] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout6KeyFix5L1() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L1); assertEquals("6 key fix 5 L1 columns", 5, params.mNumColumns); @@ -1706,6 +1811,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [6] // |___ [1] <2> [3] [4] [5] + @Test public void testLayout6KeyFix5L2() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L2); assertEquals("6 key fix 5 L2 columns", 5, params.mNumColumns); @@ -1724,6 +1830,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6]| // [1] [2] [3] [4] <5>| + @Test public void testLayout6KeyFix5R0() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R0); assertEquals("6 key fix 5 R0 columns", 5, params.mNumColumns); @@ -1742,6 +1849,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] ___| // [1] [2] [3] [4] <5> ___| + @Test public void testLayout6KeyFix5R1() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R1); assertEquals("6 key fix 5 R1 columns", 5, params.mNumColumns); @@ -1760,6 +1868,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] ___| // [1] [2] [3] <4> [5] ___| + @Test public void testLayout6KeyFix5R2() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R2); assertEquals("6 key fix 5 R2 columns", 5, params.mNumColumns); @@ -1778,6 +1887,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] // [1] [2] <3> [4] [5] + @Test public void testLayout7KeyFix5M0() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_M0); assertEquals("7 key fix 5 columns", 5, params.mNumColumns); @@ -1797,6 +1907,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[6] [7] // |<1> [2] [3] [4] [5] + @Test public void testLayout7KeyFix5L0() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L0); assertEquals("7 key fix 5 L0 columns", 5, params.mNumColumns); @@ -1816,6 +1927,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [6] [7] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout7KeyFix5L1() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L1); assertEquals("7 key fix 5 L1 columns", 5, params.mNumColumns); @@ -1835,6 +1947,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [6] [7] // |___ [1] <2> [3] [4] [5] + @Test public void testLayout7KeyFix5L2() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L2); assertEquals("7 key fix 5 L2 columns", 5, params.mNumColumns); @@ -1854,6 +1967,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7]| // [1] [2] [3] [4] <5>| + @Test public void testLayout7KeyFix5R0() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R0); assertEquals("7 key fix 5 R0 columns", 5, params.mNumColumns); @@ -1873,6 +1987,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] ___| // [1] [2] [3] [4] <5> ___| + @Test public void testLayout7KeyFix5R1() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R1); assertEquals("7 key fix 5 R1 columns", 5, params.mNumColumns); @@ -1892,6 +2007,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] ___| // [1] [2] [3] <4> [5] ___| + @Test public void testLayout7KeyFix5R2() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R2); assertEquals("7 key fix 5 R2 columns",5, params.mNumColumns); @@ -1911,6 +2027,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] // [1] [2] <3> [4] [5] + @Test public void testLayout8KeyFix5M0() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_M0); assertEquals("8 key fix 5 M0 columns", 5, params.mNumColumns); @@ -1931,6 +2048,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[6] [7] [8] // |<1> [2] [3] [4] [5] + @Test public void testLayout8KeyFix5L0() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L0); assertEquals("8 key fix 5 L0 columns", 5, params.mNumColumns); @@ -1951,6 +2069,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [6] [7] [8] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout8KeyFix5L1() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L1); assertEquals("8 key fix 5 L1 columns", 5, params.mNumColumns); @@ -1971,6 +2090,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [6] [7] [8] // |___ [1] <2> [3] [4] [5] + @Test public void testLayout8KeyFix5L2() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L2); assertEquals("8 key fix 5 L2 columns", 5, params.mNumColumns); @@ -1991,6 +2111,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8]| // [1] [2] [3] [4] <5>| + @Test public void testLayout8KeyFix5R0() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R0); assertEquals("8 key fix 5 R0 columns", 5, params.mNumColumns); @@ -2011,6 +2132,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] ___| // [1] [2] [3] [4] <5> ___| + @Test public void testLayout8KeyFix5R1() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R1); assertEquals("8 key fix 5 R1 columns", 5, params.mNumColumns); @@ -2031,6 +2153,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] ___| // [1] [2] [3] <4> [5] ___| + @Test public void testLayout8KeyFix5R2() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R2); assertEquals("8 key fix 5 R2 columns", 5, params.mNumColumns); @@ -2051,6 +2174,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] [9] // [1] [2] <3> [4] [5] + @Test public void testLayout9KeyFix5M0() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_M0); assertEquals("9 key fix 5 M0 columns", 5, params.mNumColumns); @@ -2072,6 +2196,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[6] [7] [8] [9] // |<1> [2] [3] [4] [5] + @Test public void testLayout9KeyFix5L0() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L0); assertEquals("9 key fix 5 L0 columns", 5, params.mNumColumns); @@ -2093,6 +2218,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [6] [7] [8] [9] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout9KeyFix5L1() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L1); assertEquals("9 key fix 5 L1 columns", 5, params.mNumColumns); @@ -2114,6 +2240,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [6] [7] [8] [9] // |___ [1] <2> [3] [4] [5] + @Test public void testLayout9KeyFix5L2() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L2); assertEquals("9 key fix 5 L2 columns", 5, params.mNumColumns); @@ -2135,6 +2262,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] [9]| // [1] [2] [3] [4] <5>| + @Test public void testLayout9KeyFix5R0() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R0); assertEquals("9 key fix 5 R0 columns", 5, params.mNumColumns); @@ -2156,6 +2284,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] [9] ___| // [1] [2] [3] [4] <5> ___| + @Test public void testLayout9KeyFix5R1() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R1); assertEquals("9 key fix 5 R1 columns", 5, params.mNumColumns); @@ -2177,6 +2306,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] [9] ___| // [1] [2] [3] <4> [5] ___| + @Test public void testLayout9KeyFix5R2() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R2); assertEquals("9 key fix 5 R2 columns", 5, params.mNumColumns); @@ -2198,6 +2328,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] [9] [A] // [1] [2] <3> [4] [5] + @Test public void testLayout10KeyFix5M0() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_M0); assertEquals("10 key fix 5 M0 columns", 5, params.mNumColumns); @@ -2220,6 +2351,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |[6] [7] [8] [9] [A] // |<1> [2] [3] [4] [5] + @Test public void testLayout10KeyFix5L0() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L0); assertEquals("10 key fix 5 L0 columns", 5, params.mNumColumns); @@ -2242,6 +2374,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [6] [7] [8] [9] [A] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout10KeyFix5L1() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L1); assertEquals("10 key fix 5 L1 columns", 5, params.mNumColumns); @@ -2264,6 +2397,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // |___ [6] [7] [8] [9] [A] // |___ [1] <2> [3] [4] [5] + @Test public void testLayout10KeyFix5L2() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L2); assertEquals("10 key fix 5 L2 columns", 5, params.mNumColumns); @@ -2286,6 +2420,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] [9] [A]| // [1] [2] [3] [4] <5>| + @Test public void testLayout10KeyFix5R0() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R0); assertEquals("10 key fix 5 R0 columns", 5, params.mNumColumns); @@ -2308,6 +2443,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] [9] [A] ___| // [1] [2] [3] [4] <5> ___| + @Test public void testLayout10KeyFix5R1() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R1); assertEquals("10 key fix 5 R1 columns", 5, params.mNumColumns); @@ -2330,6 +2466,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [6] [7] [8] [9] [A] ___| // [1] [2] [3] <4> [5] ___| + @Test public void testLayout10KeyFix5R2() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R2); assertEquals("10 key fix 5 R2 columns", 5, params.mNumColumns); @@ -2353,6 +2490,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [B] // [6] [7] [8] [9] [A] // [1] [2] <3> [4] [5] + @Test public void testLayout11KeyFix5M0() { MoreKeysKeyboardParams params = createParams(11, 5, XPOS_M0); assertEquals("11 key fix 5 M0 columns", 5, params.mNumColumns); @@ -2377,6 +2515,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [B] [C] // [6] [7] [8] [9] [A] // [1] [2] <3> [4] [5] + @Test public void testLayout12KeyFix5M0() { MoreKeysKeyboardParams params = createParams(12, 5, XPOS_M0); assertEquals("12 key fix 5 M0 columns", 5, params.mNumColumns); @@ -2402,6 +2541,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [B] [C] [D] // [6] [7] [8] [9] [A] // [1] [2] <3> [4] [5] + @Test public void testLayout13KeyFix5M0() { MoreKeysKeyboardParams params = createParams(13, 5, XPOS_M0); assertEquals("13 key fix 5 M0 columns", 5, params.mNumColumns); @@ -2428,6 +2568,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { // [B] [C] [D] [E] // [6] [7] [8] [9] [A] // [1] [2] <3> [4] [5] + @Test public void testLayout14KeyFix5M0() { MoreKeysKeyboardParams params = createParams(14, 5, XPOS_M0); assertEquals("14 key fix 5 M0 columns", 5, params.mNumColumns); @@ -2453,6 +2594,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] [5] [6] [7] + @Test public void testLayout7KeyFix7L0() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L0); assertEquals("7 key fix 7 L0 columns", 7, params.mNumColumns); @@ -2471,6 +2613,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] [5] [6] [7] + @Test public void testLayout7KeyFix7L1() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L1); assertEquals("7 key fix 7 L1 columns", 7, params.mNumColumns); @@ -2489,6 +2632,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ [1] <2> [3] [4] [5] [6] [7] + @Test public void testLayout7KeyFix7L2() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L2); assertEquals("7 key fix 7 L2 columns", 7, params.mNumColumns); @@ -2507,6 +2651,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ [1] [2] <3> [4] [5] [6] [7] + @Test public void testLayout7KeyFix7L3() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L3); assertEquals("7 key fix 7 L3 columns", 7, params.mNumColumns); @@ -2525,6 +2670,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ [1] [2] [3] <4> [5] [6] [7] ___ ___| + @Test public void testLayout7KeyFix7M0() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M0); assertEquals("7 key fix 7 M0 columns", 7, params.mNumColumns); @@ -2543,6 +2689,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // |___ ___ [1] [2] [3] <4> [5] [6] [7] ___| + @Test public void testLayout7KeyFix7M1() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M1); assertEquals("7 key fix 7 M1 columns", 7, params.mNumColumns); @@ -2561,6 +2708,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] [3] [4] <5> [6] [7] ___| + @Test public void testLayout7KeyFix7R3() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R3); assertEquals("7 key fix 7 R3 columns", 7, params.mNumColumns); @@ -2579,6 +2727,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] [3] [4] [5] <6> [7] ___| + @Test public void testLayout7KeyFix7R2() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R2); assertEquals("7 key fix 7 R2 columns", 7, params.mNumColumns); @@ -2597,6 +2746,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] [3] [4] [5] [6] <7> ___| + @Test public void testLayout7KeyFix7R1() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R1); assertEquals("7 key fix 7 R1 columns", 7, params.mNumColumns); @@ -2615,6 +2765,7 @@ public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase { } // [1] [2] [3] [4] [5] [6] <7>| + @Test public void testLayout7KeyFix7R0() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R0); assertEquals("7 key fix 7 R0 columns", 7, params.mNumColumns); diff --git a/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderMaxOrderTests.java b/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderMaxOrderTests.java index 806790eff8e248c031e83b7981f332201bb69173..1d28c2295adcc5b5ed87237434bf5eff7ffc4e35 100644 --- a/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderMaxOrderTests.java +++ b/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderMaxOrderTests.java @@ -16,13 +16,21 @@ package com.android.inputmethod.keyboard; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.MediumTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; + +import androidx.test.filters.MediumTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.keyboard.MoreKeysKeyboard.MoreKeysKeyboardParams; +import org.junit.Test; +import org.junit.runner.RunWith; + @MediumTest -public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class MoreKeysKeyboardBuilderMaxOrderTests { private static final int WIDTH = 10; private static final int HEIGHT = 10; @@ -38,11 +46,6 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { private static final int XPOS_R1 = WIDTH * 8 + WIDTH / 2; private static final int XPOS_R0 = WIDTH * 9 + WIDTH / 2; - @Override - protected void setUp() throws Exception { - super.setUp(); - } - private static MoreKeysKeyboardParams createParams(final int numKeys, final int maxColumns, final int coordXInParent) { final MoreKeysKeyboardParams params = new MoreKeysKeyboardParams(); @@ -52,6 +55,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { return params; } + @Test public void testLayoutError() { MoreKeysKeyboardParams params = null; try { @@ -69,6 +73,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // "<1>" is the default key. // <1> + @Test public void testLayout1KeyMax5M0() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_M0); assertEquals("1 key max 5 M0 columns", 1, params.mNumColumns); @@ -81,6 +86,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |<1> + @Test public void testLayout1KeyMax5L0() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L0); assertEquals("1 key max 5 L0 columns", 1, params.mNumColumns); @@ -93,6 +99,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ <1> + @Test public void testLayout1KeyMax5L1() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L1); assertEquals("1 key max 5 L1 columns", 1, params.mNumColumns); @@ -105,6 +112,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ ___ <1> + @Test public void testLayout1KeyMax5L2() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L2); assertEquals("1 key max 5 L2 columns", 1, params.mNumColumns); @@ -117,6 +125,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // <1>| + @Test public void testLayout1KeyMax5R0() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R0); assertEquals("1 key max 5 R0 columns", 1, params.mNumColumns); @@ -129,6 +138,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // <1> ___| + @Test public void testLayout1KeyMax5R1() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R1); assertEquals("1 key max 5 R1 columns", 1, params.mNumColumns); @@ -141,6 +151,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // <1> ___ ___| + @Test public void testLayout1KeyMax5R2() { MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R2); assertEquals("1 key max 5 R2 columns", 1, params.mNumColumns); @@ -153,6 +164,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // <1> [2] + @Test public void testLayout2KeyMax5M0() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_M0); assertEquals("2 key max 5 M0 columns", 2, params.mNumColumns); @@ -166,6 +178,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |<1> [2] + @Test public void testLayout2KeyMax5L0() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L0); assertEquals("2 key max 5 L0 columns", 2, params.mNumColumns); @@ -179,6 +192,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ <1> [2] + @Test public void testLayout2KeyMax5L1() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L1); assertEquals("2 key max 5 L1 columns", 2, params.mNumColumns); @@ -192,6 +206,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ ___ <1> [2] + @Test public void testLayout2KeyMax5L2() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L2); assertEquals("2 key max 5 L2 columns", 2, params.mNumColumns); @@ -205,6 +220,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [2] <1>| + @Test public void testLayout2KeyMax5R0() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R0); assertEquals("2 key max 5 R0 columns", 2, params.mNumColumns); @@ -218,6 +234,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [2] <1> ___| + @Test public void testLayout2KeyMax5R1() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R1); assertEquals("2 key max 5 R1 columns", 2, params.mNumColumns); @@ -231,6 +248,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // <1> [2] ___| + @Test public void testLayout2KeyMax5R2() { MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R2); assertEquals("2 key max 5 R2 columns", 2, params.mNumColumns); @@ -244,6 +262,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [3] <1> [2] + @Test public void testLayout3KeyMax5M0() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_M0); assertEquals("3 key max 5 M0 columns", 3, params.mNumColumns); @@ -258,6 +277,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |<1> [2] [3] + @Test public void testLayout3KeyMax5L0() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L0); assertEquals("3 key max 5 L0 columns", 3, params.mNumColumns); @@ -272,6 +292,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] + @Test public void testLayout3KeyMax5L1() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L1); assertEquals("3 key max 5 L1 columns", 3, params.mNumColumns); @@ -286,6 +307,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ [3] <1> [2] + @Test public void testLayout3KeyMax5L2() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L2); assertEquals("3 key max 5 L2 columns", 3, params.mNumColumns); @@ -300,6 +322,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [3] [2] <1>| + @Test public void testLayout3KeyMax5R0() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R0); assertEquals("3 key max 5 R0 columns", 3, params.mNumColumns); @@ -314,6 +337,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [3] [2] <1> ___| + @Test public void testLayout3KeyMax5R1() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R1); assertEquals("3 key max 5 R1 columns", 3, params.mNumColumns); @@ -328,6 +352,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [3] <1> [2] ___| + @Test public void testLayout3KeyMax5R2() { MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R2); assertEquals("3 key max 5 R2 columns", 3, params.mNumColumns); @@ -343,6 +368,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [3] // <1> [2] + @Test public void testLayout3KeyMax2M0() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_M0); assertEquals("3 key max 2 M0 columns", 2, params.mNumColumns); @@ -358,6 +384,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[3] // |<1> [2] + @Test public void testLayout3KeyMax2L0() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L0); assertEquals("3 key max 2 L0 columns", 2, params.mNumColumns); @@ -373,6 +400,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [3] // |___ <1> [2] + @Test public void testLayout3KeyMax2L1() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L1); assertEquals("3 key max 2 L1 columns", 2, params.mNumColumns); @@ -388,6 +416,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // | [3] // |___ ___ <1> [2] + @Test public void testLayout3KeyMax2L2() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L2); assertEquals("3 key max 2 L2 columns", 2, params.mNumColumns); @@ -403,6 +432,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [3]| // [2] <1>| + @Test public void testLayout3KeyMax2R0() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R0); assertEquals("3 key max 2 R0 columns", 2, params.mNumColumns); @@ -418,6 +448,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [3] | // [2] <1> ___| + @Test public void testLayout3KeyMax2R1() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R1); assertEquals("3 key max 2 R1 columns", 2, params.mNumColumns); @@ -433,6 +464,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [3] | // <1> [2] ___| + @Test public void testLayout3KeyMax2R2() { MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R2); assertEquals("3 key max 2 R2 columns", 2, params.mNumColumns); @@ -448,6 +480,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [3] [4] // <1> [2] + @Test public void testLayout4KeyMax3M0() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_M0); assertEquals("4 key max 3 M0 columns", 2, params.mNumColumns); @@ -464,6 +497,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[3] [4] // |<1> [2] + @Test public void testLayout4KeyMax3L0() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L0); assertEquals("4 key max 3 L0 columns", 2, params.mNumColumns); @@ -480,6 +514,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [3] [4] // |___ <1> [2] + @Test public void testLayout4KeyMax3L1() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L1); assertEquals("4 key max 3 L1 columns", 2, params.mNumColumns); @@ -496,6 +531,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ ___ [3] [4] // |___ ___ <1> [2] + @Test public void testLayout4KeyMax3L2() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L2); assertEquals("4 key max 3 L2 columns", 2, params.mNumColumns); @@ -512,6 +548,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [4] [3]| // [2] <1>| + @Test public void testLayout4KeyMax3R0() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R0); assertEquals("4 key max 3 R0 columns", 2, params.mNumColumns); @@ -528,6 +565,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [4] [3] ___| // [2] <1> ___| + @Test public void testLayout4KeyMax3R1() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R1); assertEquals("4 key max 3 R1 columns", 2, params.mNumColumns); @@ -544,6 +582,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [3] [4] ___| // <1> [2] ___| + @Test public void testLayout4KeyMax3R2() { MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R2); assertEquals("4 key max 3 R2 columns", 2, params.mNumColumns); @@ -559,6 +598,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [3] <1> [2] [4] + @Test public void testLayout4KeyMax4M0() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_M0); assertEquals("4 key max 4 M0 columns", 4, params.mNumColumns); @@ -574,6 +614,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] + @Test public void testLayout4KeyMax4L0() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L0); assertEquals("4 key max 4 L0 columns", 4, params.mNumColumns); @@ -589,6 +630,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] + @Test public void testLayout4KeyMax4L1() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L1); assertEquals("4 key max 4 L1 columns", 4, params.mNumColumns); @@ -604,6 +646,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ [3] <1> [2] [4] + @Test public void testLayout4KeyMax4L2() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L2); assertEquals("4 key max 4 L2 columns", 4, params.mNumColumns); @@ -619,6 +662,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [4] [3] [2] <1>| + @Test public void testLayout4KeyMax4R0() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R0); assertEquals("4 key max 4 R0 columns", 4, params.mNumColumns); @@ -634,6 +678,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [4] [3] [2] <1> ___| + @Test public void testLayout4KeyMax4R1() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R1); assertEquals("4 key max 4 R1 columns", 4, params.mNumColumns); @@ -649,6 +694,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [4] [3] <1> [2] ___| + @Test public void testLayout4KeyMax4R2() { MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R2); assertEquals("4 key max 4 R2 columns", 4, params.mNumColumns); @@ -664,6 +710,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [3] <1> [2] [4] + @Test public void testLayout4KeyMax5M0() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_M0); assertEquals("4 key max 5 M0 columns", 4, params.mNumColumns); @@ -679,6 +726,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] + @Test public void testLayout4KeyMax5L0() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L0); assertEquals("4 key max 5 L0 columns", 4, params.mNumColumns); @@ -694,6 +742,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] + @Test public void testLayout4KeyMax5L1() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L1); assertEquals("4 key max 5 L1 columns", 4, params.mNumColumns); @@ -709,6 +758,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ [3] <1> [2] [4] + @Test public void testLayout4KeyMax5L2() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L2); assertEquals("4 key max 5 L2 columns", 4, params.mNumColumns); @@ -724,6 +774,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [4] [3] [2] <1>| + @Test public void testLayout4KeyMax5R0() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R0); assertEquals("4 key max 5 R0 columns", 4, params.mNumColumns); @@ -739,6 +790,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [4] [3] [2] <1> ___| + @Test public void testLayout4KeyMax5R1() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R1); assertEquals("4 key max 5 R1 columns", 4, params.mNumColumns); @@ -754,6 +806,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [4] [3] <1> [2] ___| + @Test public void testLayout4KeyMax5R2() { MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R2); assertEquals("4 key max 5 R2 columns", 4, params.mNumColumns); @@ -770,6 +823,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [4] [5] // [3] <1> [2] + @Test public void testLayout5KeyMax3M0() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_M0); assertEquals("5 key max 3 M0 columns", 3, params.mNumColumns); @@ -787,6 +841,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[4] [5] // |<1> [2] [3] + @Test public void testLayout5KeyMax3L0() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L0); assertEquals("5 key max 3 L0 columns", 3, params.mNumColumns); @@ -804,6 +859,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [4] [5] // |___ <1> [2] [3] + @Test public void testLayout5KeyMax3L1() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L1); assertEquals("5 key max 3 L1 columns", 3, params.mNumColumns); @@ -821,6 +877,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [4] [5] // |___ [3] <1> [2] + @Test public void testLayout5KeyMax3L2() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L2); assertEquals("5 key max 3 L2 columns", 3, params.mNumColumns); @@ -838,6 +895,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [5] [4]| // [3] [2] <1>| + @Test public void testLayout5KeyMax3R0() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R0); assertEquals("5 key max 3 R0 columns", 3, params.mNumColumns); @@ -855,6 +913,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [5] [4] ___| // [3] [2] <1> ___| + @Test public void testLayout5KeyMax3R1() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R1); assertEquals("5 key max 3 R1 columns", 3, params.mNumColumns); @@ -872,6 +931,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [4] [5] ___| // [3] <1> [2] ___| + @Test public void testLayout5KeyMax3R2() { MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R2); assertEquals("5 key max 3 R2 columns", 3, params.mNumColumns); @@ -889,6 +949,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [4] [5] // [3] <1> [2] + @Test public void testLayout5KeyMax4M0() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_M0); assertEquals("5 key max 4 M0 columns", 3, params.mNumColumns); @@ -906,6 +967,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[4] [5] // |<1> [2] [3] + @Test public void testLayout5KeyMax4L0() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L0); assertEquals("5 key max 4 L0 columns", 3, params.mNumColumns); @@ -923,6 +985,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [4] [5] // |___ <1> [2] [3] + @Test public void testLayout5KeyMax4L1() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L1); assertEquals("5 key max 4 L1 columns", 3, params.mNumColumns); @@ -940,6 +1003,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [4] [5] // |___ [3] <1> [2] + @Test public void testLayout5KeyMax4L2() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L2); assertEquals("5 key max 4 L2 columns", 3, params.mNumColumns); @@ -957,6 +1021,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [5] [4]| // [3] [2] <1>| + @Test public void testLayout5KeyMax4R0() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R0); assertEquals("5 key max 4 R0 columns", 3, params.mNumColumns); @@ -974,6 +1039,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [5] [4] ___| // [3] [2] <1> ___| + @Test public void testLayout5KeyMax4R1() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R1); assertEquals("5 key max 4 R1 columns", 3, params.mNumColumns); @@ -991,6 +1057,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [4] [5] ___| // [3] <1> [2] ___| + @Test public void testLayout5KeyMax4R2() { MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R2); assertEquals("5 key max 4 R2 columns", 3, params.mNumColumns); @@ -1007,6 +1074,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [5] [3] <1> [2] [4] + @Test public void testLayout5KeyMax5M0() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_M0); assertEquals("5 key max 5 M0 columns", 5, params.mNumColumns); @@ -1023,6 +1091,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] [5] + @Test public void testLayout5KeyMax5L0() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L0); assertEquals("5 key max 5 L0 columns", 5, params.mNumColumns); @@ -1039,6 +1108,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] [5] + @Test public void testLayout5KeyMax5L1() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L1); assertEquals("5 key max 5 L1 columns", 5, params.mNumColumns); @@ -1055,6 +1125,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ [3] <1> [2] [4] [5] + @Test public void testLayout5KeyMax5L2() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L2); assertEquals("5 key max 5 L2 columns", 5, params.mNumColumns); @@ -1071,6 +1142,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [5] [4] [3] [2] <1>| + @Test public void testLayout5KeyMax5R0() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R0); assertEquals("5 key max 5 R0 columns", 5, params.mNumColumns); @@ -1087,6 +1159,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [5] [4] [3] [2] <1> ___| + @Test public void testLayout5KeyMax5R1() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R1); assertEquals("5 key max 5 R1 columns", 5, params.mNumColumns); @@ -1103,6 +1176,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // [5] [4] [3] <1> [2] ___| + @Test public void testLayout5KeyMax5R2() { MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R2); assertEquals("5 key max 5 R2 columns", 5, params.mNumColumns); @@ -1120,6 +1194,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [6] [4] [5] // [3] <1> [2] + @Test public void testLayout6KeyMax4M0() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_M0); assertEquals("6 key max 4 M0 columns", 3, params.mNumColumns); @@ -1138,6 +1213,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[4] [5] [6] // |<1> [2] [3] + @Test public void testLayout6KeyMax4L0() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L0); assertEquals("6 key max 4 L0 columns", 3, params.mNumColumns); @@ -1156,6 +1232,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [4] [5] [6] // |___ <1> [2] [3] + @Test public void testLayout6KeyMax4L1() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L1); assertEquals("6 key max 4 L1 columns", 3, params.mNumColumns); @@ -1174,6 +1251,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [6] [4] [5] // |___ [3] <1> [2] + @Test public void testLayout6KeyMax4L2() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L2); assertEquals("6 key max 4 L2 columns", 3, params.mNumColumns); @@ -1192,6 +1270,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [6] [5] [4]| // [3] [2] <1>| + @Test public void testLayout6KeyMax4R0() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R0); assertEquals("6 key max 4 R0 columns", 3, params.mNumColumns); @@ -1210,6 +1289,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [6] [5] [4] ___| // [3] [2] <1> ___| + @Test public void testLayout6KeyMax4R1() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R1); assertEquals("6 key max 4 R1 columns", 3, params.mNumColumns); @@ -1228,6 +1308,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [6] [4] [5] ___| // [3] <1> [2] ___| + @Test public void testLayout6KeyMax4R2() { MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R2); assertEquals("6 key max 4 R2 columns", 3, params.mNumColumns); @@ -1246,6 +1327,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [6] [4] [5] // [3] <1> [2] + @Test public void testLayout6KeyMax5M0() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_M0); assertEquals("6 key max 5 M0 columns", 3, params.mNumColumns); @@ -1264,6 +1346,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[4] [5] [6] // |<1> [2] [3] + @Test public void testLayout6KeyMax5L0() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L0); assertEquals("6 key max 5 L0 columns", 3, params.mNumColumns); @@ -1282,6 +1365,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [4] [5] [6] // |___ <1> [2] [3] + @Test public void testLayout6KeyMax5L1() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L1); assertEquals("6 key max 5 L1 columns", 3, params.mNumColumns); @@ -1300,6 +1384,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [6] [4] [5] // |___ [3] <1> [2] + @Test public void testLayout6KeyMax5L2() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L2); assertEquals("6 key max 5 L2 columns", 3, params.mNumColumns); @@ -1318,6 +1403,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [6] [5] [4]| // [3] [2] <1>| + @Test public void testLayout6KeyMax5R0() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R0); assertEquals("6 key max 5 R0 columns", 3, params.mNumColumns); @@ -1336,6 +1422,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [6] [5] [4] ___| // [3] [2] <1> ___| + @Test public void testLayout6KeyMax5R1() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R1); assertEquals("6 key max 5 R1 columns", 3, params.mNumColumns); @@ -1354,6 +1441,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [6] [4] [5] ___| // [3] <1> [2] ___| + @Test public void testLayout6KeyMax5R2() { MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R2); assertEquals("6 key max 5 R2 columns", 3, params.mNumColumns); @@ -1371,6 +1459,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |<1> [2] [3] [4] [5] [6] [7] ___ ___ ___| + @Test public void testLayout7KeyMax7L0() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L0); assertEquals("7 key max 7 L0 columns", 7, params.mNumColumns); @@ -1389,6 +1478,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ <1> [2] [3] [4] [5] [6] [7] ___ ___| + @Test public void testLayout7KeyMax7L1() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L1); assertEquals("7 key max 7 L1 columns", 7, params.mNumColumns); @@ -1407,6 +1497,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ [3] <1> [2] [4] [5] [6] [7] ___ ___| + @Test public void testLayout7KeyMax7L2() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L2); assertEquals("7 key max 7 L2 columns", 7, params.mNumColumns); @@ -1425,6 +1516,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ [5] [3] <1> [2] [4] [6] [7] ___ ___| + @Test public void testLayout7KeyMax7L3() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L3); assertEquals("7 key max 7 L3 columns", 7, params.mNumColumns); @@ -1443,6 +1535,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ [7] [5] [3] <1> [2] [4] [6] ___ ___| + @Test public void testLayout7KeyMax7M0() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M0); assertEquals("7 key max 7 M0 columns", 7, params.mNumColumns); @@ -1461,6 +1554,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ ___ [7] [5] [3] <1> [2] [4] [6] ___| + @Test public void testLayout7KeyMax7M1() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M1); assertEquals("7 key max 7 M1 columns", 7, params.mNumColumns); @@ -1479,6 +1573,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ ___ [7] [6] [5] [3] <1> [2] [4] ___| + @Test public void testLayout7KeyMax7R3() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R3); assertEquals("7 key max 7 R3 columns", 7, params.mNumColumns); @@ -1497,6 +1592,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ ___ [7] [6] [5] [4] [3] <1> [2] ___| + @Test public void testLayout7KeyMax7R2() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R2); assertEquals("7 key max 7 R2 columns", 7, params.mNumColumns); @@ -1515,6 +1611,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ ___ [7] [6] [5] [4] [3] [2] <1> ___| + @Test public void testLayout7KeyMax7R1() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R1); assertEquals("7 key max 7 R1 columns", 7, params.mNumColumns); @@ -1533,6 +1630,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { } // |___ ___ [7] [6] [5] [4] [3] [2] <1>| + @Test public void testLayout7KeyMax7R0() { MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R0); assertEquals("7 key max 7 R0 columns", 7, params.mNumColumns); @@ -1552,6 +1650,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [5] [6] [7] // [3] <1> [2] [4] + @Test public void testLayout7KeyMax5M0() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_M0); assertEquals("7 key max 5 M0 columns", 4, params.mNumColumns); @@ -1571,6 +1670,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[5] [6] [7] // |<1> [2] [3] [4] + @Test public void testLayout7KeyMax5L0() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L0); assertEquals("7 key max 5 L0 columns", 4, params.mNumColumns); @@ -1590,6 +1690,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [5] [6] [7] // |___ <1> [2] [3] [4] + @Test public void testLayout7KeyMax5L1() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L1); assertEquals("7 key max 5 L1 columns", 4, params.mNumColumns); @@ -1609,6 +1710,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [5] [6] [7] // |___ [3] <1> [2] [4] + @Test public void testLayout7KeyMax5L2() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L2); assertEquals("7 key max 5 L2 columns", 4, params.mNumColumns); @@ -1628,6 +1730,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [7] [6] [5]| // [4] [3] [2] <1>| + @Test public void testLayout7KeyMax5R0() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R0); assertEquals("7 key max 5 R0 columns", 4, params.mNumColumns); @@ -1647,6 +1750,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [7] [6] [5] ___| // [4] [3] [2] <1> ___| + @Test public void testLayout7KeyMax5R1() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R1); assertEquals("7 key max 5 R1 columns", 4, params.mNumColumns); @@ -1666,6 +1770,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [7] [5] [6] ___| // [4] [3] <1> [2] ___| + @Test public void testLayout7KeyMax5R2() { MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R2); assertEquals("7 key max 5 R2 columns", 4, params.mNumColumns); @@ -1686,6 +1791,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [7] // [6] [4] [5] // [3] <1> [2] + @Test public void testLayout7KeyMax3M0() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_M0); assertEquals("7 key max 3 M0 columns", 3, params.mNumColumns); @@ -1706,6 +1812,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[7] // |[4] [5] [6] // |<1> [2] [3] + @Test public void testLayout7KeyMax3L0() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L0); assertEquals("7 key max 3 L0 columns", 3, params.mNumColumns); @@ -1726,6 +1833,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [7] // |___ [4] [5] [6] // |___ <1> [2] [3] + @Test public void testLayout7KeyMax3L1() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L1); assertEquals("7 key max 3 L1 columns", 3, params.mNumColumns); @@ -1746,6 +1854,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [7] // |___ [6] [4] [5] // |___ [3] <1> [2] + @Test public void testLayout7KeyMax3L2() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L2); assertEquals("7 key max 3 L2 columns", 3, params.mNumColumns); @@ -1766,6 +1875,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [7]| // [6] [5] [4]| // [3] [2] <1>| + @Test public void testLayout7KeyMax3R0() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R0); assertEquals("7 key max 3 R0 columns", 3, params.mNumColumns); @@ -1786,6 +1896,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [7] ___| // [6] [5] [4] ___| // [3] [2] <1> ___| + @Test public void testLayout7KeyMax3R1() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R1); assertEquals("7 key max 3 R1 columns", 3, params.mNumColumns); @@ -1806,6 +1917,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [7] ___| // [6] [4] [5] ___| // [3] <1> [2] ___| + @Test public void testLayout7KeyMax3R2() { MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R2); assertEquals("7 key max 3 R2 columns", 3, params.mNumColumns); @@ -1825,6 +1937,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [7] [5] [6] [8] // [3] <1> [2] [4] + @Test public void testLayout8KeyMax5M0() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_M0); assertEquals("8 key max 5 M0 columns", 4, params.mNumColumns); @@ -1845,6 +1958,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[5] [6] [7] [8] // |<1> [2] [3] [4] + @Test public void testLayout8KeyMax5L0() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L0); assertEquals("8 key max 5 L0 columns", 4, params.mNumColumns); @@ -1865,6 +1979,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [5] [6] [7] [8] // |___ <1> [2] [3] [4] + @Test public void testLayout8KeyMax5L1() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L1); assertEquals("8 key max 5 L1 columns", 4, params.mNumColumns); @@ -1885,6 +2000,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [7] [5] [6] [8] // |___ [3] <1> [2] [4] + @Test public void testLayout8KeyMax5L2() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L2); assertEquals("8 key max 5 L2 columns", 4, params.mNumColumns); @@ -1905,6 +2021,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [8] [7] [6] [5]| // [4] [3] [2] <1>| + @Test public void testLayout8KeyMax5R0() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R0); assertEquals("8 key max 5 R0 columns", 4, params.mNumColumns); @@ -1925,6 +2042,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [8] [7] [6] [5] ___| // [4] [3] [2] <1> ___| + @Test public void testLayout8KeyMax5R1() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R1); assertEquals("8 key max 5 R1 columns", 4, params.mNumColumns); @@ -1945,6 +2063,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [8] [7] [5] [6] ___| // [4] [3] <1> [2] ___| + @Test public void testLayout8KeyMax5R2() { MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R2); assertEquals("8 key max 5 R2 columns", 4, params.mNumColumns); @@ -1965,6 +2084,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [8] [6] [7] [9] // [5] [3] <1> [2] [4] + @Test public void testLayout9KeyMax5M0() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_M0); assertEquals("9 key max 5 M0 columns", 5, params.mNumColumns); @@ -1986,6 +2106,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[6] [7] [8] [9] // |<1> [2] [3] [4] [5] + @Test public void testLayout9KeyMax5L0() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L0); assertEquals("9 key max 5 L0 columns", 5, params.mNumColumns); @@ -2007,6 +2128,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [6] [7] [8] [9] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout9KeyMax5L1() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L1); assertEquals("9 key max 5 L1 columns", 5, params.mNumColumns); @@ -2028,6 +2150,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [6] [7] [8] [9] // |___ [3] <1> [2] [4] [5] + @Test public void testLayout9KeyMax5L2() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L2); assertEquals("9 key max 5 L2 columns", 5, params.mNumColumns); @@ -2049,6 +2172,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [9] [8] [7] [6]| // [5] [4] [3] [2] <1>| + @Test public void testLayout9KeyMax5R0() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R0); assertEquals("9 key max 5 R0 columns", 5, params.mNumColumns); @@ -2070,6 +2194,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [9] [8] [7] [6] ___| // [5] [4] [3] [2] <1> ___| + @Test public void testLayout9KeyMax5R1() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R1); assertEquals("9 key max 5 R1 columns", 5, params.mNumColumns); @@ -2091,6 +2216,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [9] [8] [6] [7] ___| // [5] [4] [3] <1> [2] ___| + @Test public void testLayout9KeyMax5R2() { MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R2); assertEquals("9 key max 5 R2 columns", 5, params.mNumColumns); @@ -2112,6 +2238,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [A] [8] [6] [7] [9] // [5] [3] <1> [2] [4] + @Test public void testLayout10KeyMax5M0() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_M0); assertEquals("10 key max 5 M0 columns", 5, params.mNumColumns); @@ -2134,6 +2261,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |[6] [7] [8] [9] [A] // |<1> [2] [3] [4] [5] + @Test public void testLayout10KeyMax5L0() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L0); assertEquals("10 key max 5 L0 columns", 5, params.mNumColumns); @@ -2156,6 +2284,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [6] [7] [8] [9] [A] // |___ <1> [2] [3] [4] [5] + @Test public void testLayout10KeyMax5L1() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L1); assertEquals("10 key max 5 L1 columns", 5, params.mNumColumns); @@ -2178,6 +2307,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // |___ [8] [6] [7] [9] [A] // |___ [3] <1> [2] [4] [5] + @Test public void testLayout10KeyMax5L2() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L2); assertEquals("10 key max 5 L2 columns", 5, params.mNumColumns); @@ -2200,6 +2330,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [A] [9] [8] [7] [6]| // [5] [4] [3] [2] <1>| + @Test public void testLayout10KeyMax5R0() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R0); assertEquals("10 key max 5 R0 columns", 5, params.mNumColumns); @@ -2222,6 +2353,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [A] [9] [8] [7] [6] ___| // [5] [4] [3] [2] <1> ___| + @Test public void testLayout10KeyMax5R1() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R1); assertEquals("10 key max 5 R1 columns", 5, params.mNumColumns); @@ -2244,6 +2376,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [A] [9] [8] [6] [7] ___| // [5] [4] [3] <1> [2] ___| + @Test public void testLayout10KeyMax5R2() { MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R2); assertEquals("10 key max 5 R2 columns", 5, params.mNumColumns); @@ -2267,6 +2400,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [9] [A] [B] // [7] [5] [6] [8] // [3] <1> [2] [4] + @Test public void testLayout11KeyMax5M0() { MoreKeysKeyboardParams params = createParams(11, 5, XPOS_M0); assertEquals("11 key max 5 M0 columns", 4, params.mNumColumns); @@ -2291,6 +2425,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [B] [9] [A] [C] // [7] [5] [6] [8] // [3] <1> [2] [4] + @Test public void testLayout12KeyMax5M0() { MoreKeysKeyboardParams params = createParams(12, 5, XPOS_M0); assertEquals("12 key max 5 M0 columns", 4, params.mNumColumns); @@ -2316,6 +2451,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [D] [B] [C] // [A] [8] [6] [7] [9] // [5] [3] <1> [2] [4] + @Test public void testLayout13KeyMax5M0() { MoreKeysKeyboardParams params = createParams(13, 5, XPOS_M0); assertEquals("13 key max 5 M0 columns", 5, params.mNumColumns); @@ -2342,6 +2478,7 @@ public class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase { // [D] [B] [C] [E] // [A] [8] [6] [7] [9] // [5] [3] <1> [2] [4] + @Test public void testLayout14KeyMax5M0() { MoreKeysKeyboardParams params = createParams(14, 5, XPOS_M0); assertEquals("13 key max 5 M0 columns", 5, params.mNumColumns); diff --git a/tests/src/com/android/inputmethod/keyboard/internal/HermiteInterpolatorTests.java b/tests/src/com/android/inputmethod/keyboard/internal/HermiteInterpolatorTests.java index 3ff5aa485f853aa4dcd714d63fbe7173ed03e6f8..a1ee199c050b6af0c6fa05b1ac35c58c1a191ef5 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/HermiteInterpolatorTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/HermiteInterpolatorTests.java @@ -16,25 +16,20 @@ package com.android.inputmethod.keyboard.internal; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; -@SmallTest -public class HermiteInterpolatorTests extends AndroidTestCase { - private final HermiteInterpolator mInterpolator = new HermiteInterpolator(); +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; - @Override - protected void setUp() throws Exception { - super.setUp(); - } +import org.junit.Test; +import org.junit.runner.RunWith; - private static final float EPSLION = 0.0000005f; +@SmallTest +@RunWith(AndroidJUnit4.class) +public class HermiteInterpolatorTests { + private final HermiteInterpolator mInterpolator = new HermiteInterpolator(); - private static void assertFloatEquals(final String message, float expected, float actual) { - if (Math.abs(expected - actual) >= EPSLION) { - fail(String.format("%s expected:<%s> but was:<%s>", message, expected, actual)); - } - } + private static final float EPSILON = 0.0000005f; // t=0 p0=(0,1) // t=1 p1=(1,0) @@ -57,6 +52,7 @@ public class HermiteInterpolatorTests extends AndroidTestCase { private static final int p2 = 2; private static final int p3 = 3; + @Test public void testP0P1() { // [(p0 p1) p2 p3] mInterpolator.reset(mXCoords, mYCoords, p0, p3 + 1); @@ -66,33 +62,34 @@ public class HermiteInterpolatorTests extends AndroidTestCase { assertEquals("p1x", mXCoords[p1], mInterpolator.mP2X); assertEquals("p1y", mYCoords[p1], mInterpolator.mP2Y); // XY-slope at p0=3.0 (-0.75/-0.25) - assertFloatEquals("slope x p0", -0.25f, mInterpolator.mSlope1X); - assertFloatEquals("slope y p0", -0.75f, mInterpolator.mSlope1Y); + assertEquals("slope x p0", -0.25f, mInterpolator.mSlope1X, EPSILON); + assertEquals("slope y p0", -0.75f, mInterpolator.mSlope1Y, EPSILON); // XY-slope at p1=1/3.0 (0.50/1.50) - assertFloatEquals("slope x p1", 1.50f, mInterpolator.mSlope2X); - assertFloatEquals("slope y p1", 0.50f, mInterpolator.mSlope2Y); + assertEquals("slope x p1", 1.50f, mInterpolator.mSlope2X, EPSILON); + assertEquals("slope y p1", 0.50f, mInterpolator.mSlope2Y, EPSILON); // t=0.0 (p0) mInterpolator.interpolate(0.0f); - assertFloatEquals("t=0.0 x", 0.0f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.0 y", 1.0f, mInterpolator.mInterpolatedY); + assertEquals("t=0.0 x", 0.0f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.0 y", 1.0f, mInterpolator.mInterpolatedY, EPSILON); // t=0.2 mInterpolator.interpolate(0.2f); - assertFloatEquals("t=0.2 x", 0.02400f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.2 y", 0.78400f, mInterpolator.mInterpolatedY); + assertEquals("t=0.2 x", 0.02400f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.2 y", 0.78400f, mInterpolator.mInterpolatedY, EPSILON); // t=0.5 mInterpolator.interpolate(0.5f); - assertFloatEquals("t=0.5 x", 0.28125f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.5 y", 0.34375f, mInterpolator.mInterpolatedY); + assertEquals("t=0.5 x", 0.28125f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.5 y", 0.34375f, mInterpolator.mInterpolatedY, EPSILON); // t=0.8 mInterpolator.interpolate(0.8f); - assertFloatEquals("t=0.8 x", 0.69600f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.8 y", 0.01600f, mInterpolator.mInterpolatedY); + assertEquals("t=0.8 x", 0.69600f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.8 y", 0.01600f, mInterpolator.mInterpolatedY, EPSILON); // t=1.0 (p1) mInterpolator.interpolate(1.0f); - assertFloatEquals("t=1.0 x", 1.0f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=1.0 y", 0.0f, mInterpolator.mInterpolatedY); + assertEquals("t=1.0 x", 1.0f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=1.0 y", 0.0f, mInterpolator.mInterpolatedY, EPSILON); } + @Test public void testP1P2() { // [p0 (p1 p2) p3] mInterpolator.reset(mXCoords, mYCoords, p0, p3 + 1); @@ -102,33 +99,34 @@ public class HermiteInterpolatorTests extends AndroidTestCase { assertEquals("p2x", mXCoords[p2], mInterpolator.mP2X); assertEquals("p2y", mYCoords[p2], mInterpolator.mP2Y); // XY-slope at p1=1/3.0 (0.50/1.50) - assertFloatEquals("slope x p1", 1.50f, mInterpolator.mSlope1X); - assertFloatEquals("slope y p1", 0.50f, mInterpolator.mSlope1Y); + assertEquals("slope x p1", 1.50f, mInterpolator.mSlope1X, EPSILON); + assertEquals("slope y p1", 0.50f, mInterpolator.mSlope1Y, EPSILON); // XY-slope at p2=3.0 (1.50/0.50) - assertFloatEquals("slope x p2", 0.50f, mInterpolator.mSlope2X); - assertFloatEquals("slope y p2", 1.50f, mInterpolator.mSlope2Y); + assertEquals("slope x p2", 0.50f, mInterpolator.mSlope2X, EPSILON); + assertEquals("slope y p2", 1.50f, mInterpolator.mSlope2Y, EPSILON); // t=0.0 (p1) mInterpolator.interpolate(0.0f); - assertFloatEquals("t=0.0 x", 1.0f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.0 y", 0.0f, mInterpolator.mInterpolatedY); + assertEquals("t=0.0 x", 1.0f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.0 y", 0.0f, mInterpolator.mInterpolatedY, EPSILON); // t=0.2 mInterpolator.interpolate(0.2f); - assertFloatEquals("t=0.2 x", 1.384f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.2 y", 0.224f, mInterpolator.mInterpolatedY); + assertEquals("t=0.2 x", 1.384f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.2 y", 0.224f, mInterpolator.mInterpolatedY, EPSILON); // t=0.5 mInterpolator.interpolate(0.5f); - assertFloatEquals("t=0.5 x", 2.125f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.5 y", 0.875f, mInterpolator.mInterpolatedY); + assertEquals("t=0.5 x", 2.125f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.5 y", 0.875f, mInterpolator.mInterpolatedY, EPSILON); // t=0.8 mInterpolator.interpolate(0.8f); - assertFloatEquals("t=0.8 x", 2.776f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.8 y", 1.616f, mInterpolator.mInterpolatedY); + assertEquals("t=0.8 x", 2.776f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.8 y", 1.616f, mInterpolator.mInterpolatedY, EPSILON); // t=1.0 (p2) mInterpolator.interpolate(1.0f); - assertFloatEquals("t=1.0 x", 3.0f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=1.0 y", 2.0f, mInterpolator.mInterpolatedY); + assertEquals("t=1.0 x", 3.0f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=1.0 y", 2.0f, mInterpolator.mInterpolatedY, EPSILON); } + @Test public void testP2P3() { // [p0 p1 (p2 p3)] mInterpolator.reset(mXCoords, mYCoords, p0, p3 + 1); @@ -138,33 +136,34 @@ public class HermiteInterpolatorTests extends AndroidTestCase { assertEquals("p3x", mXCoords[p3], mInterpolator.mP2X); assertEquals("p3y", mYCoords[p3], mInterpolator.mP2Y); // XY-slope at p2=3.0 (1.50/0.50) - assertFloatEquals("slope x p2", 0.50f, mInterpolator.mSlope1X); - assertFloatEquals("slope y p2", 1.50f, mInterpolator.mSlope1Y); + assertEquals("slope x p2", 0.50f, mInterpolator.mSlope1X, EPSILON); + assertEquals("slope y p2", 1.50f, mInterpolator.mSlope1Y, EPSILON); // XY-slope at p3=1/3.0 (-0.25/-0.75) - assertFloatEquals("slope x p3", -0.75f, mInterpolator.mSlope2X); - assertFloatEquals("slope y p3", -0.25f, mInterpolator.mSlope2Y); + assertEquals("slope x p3", -0.75f, mInterpolator.mSlope2X, EPSILON); + assertEquals("slope y p3", -0.25f, mInterpolator.mSlope2Y, EPSILON); // t=0.0 (p2) mInterpolator.interpolate(0.0f); - assertFloatEquals("t=0.0 x", 3.0f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.0 y", 2.0f, mInterpolator.mInterpolatedY); + assertEquals("t=0.0 x", 3.0f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.0 y", 2.0f, mInterpolator.mInterpolatedY, EPSILON); // t=0.2 mInterpolator.interpolate(0.2f); - assertFloatEquals("t=0.2 x", 2.98400f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.2 y", 2.30400f, mInterpolator.mInterpolatedY); + assertEquals("t=0.2 x", 2.98400f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.2 y", 2.30400f, mInterpolator.mInterpolatedY, EPSILON); // t=0.5 mInterpolator.interpolate(0.5f); - assertFloatEquals("t=0.5 x", 2.65625f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.5 y", 2.71875f, mInterpolator.mInterpolatedY); + assertEquals("t=0.5 x", 2.65625f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.5 y", 2.71875f, mInterpolator.mInterpolatedY, EPSILON); // t=0.8 mInterpolator.interpolate(0.8f); - assertFloatEquals("t=0.8 x", 2.21600f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.8 y", 2.97600f, mInterpolator.mInterpolatedY); + assertEquals("t=0.8 x", 2.21600f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.8 y", 2.97600f, mInterpolator.mInterpolatedY, EPSILON); // t=1.0 (p3) mInterpolator.interpolate(1.0f); - assertFloatEquals("t=1.0 x", 2.0f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=1.0 y", 3.0f, mInterpolator.mInterpolatedY); + assertEquals("t=1.0 x", 2.0f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=1.0 y", 3.0f, mInterpolator.mInterpolatedY, EPSILON); } + @Test public void testJustP1P2() { // [(p1 p2)] mInterpolator.reset(mXCoords, mYCoords, p1, p2 + 1); @@ -174,30 +173,30 @@ public class HermiteInterpolatorTests extends AndroidTestCase { assertEquals("p2x", mXCoords[p2], mInterpolator.mP2X); assertEquals("p2y", mYCoords[p2], mInterpolator.mP2Y); // XY-slope at p1=1.0 (2.0/2.0) - assertFloatEquals("slope x p1", 2.00f, mInterpolator.mSlope1X); - assertFloatEquals("slope y p1", 2.00f, mInterpolator.mSlope1Y); + assertEquals("slope x p1", 2.00f, mInterpolator.mSlope1X, EPSILON); + assertEquals("slope y p1", 2.00f, mInterpolator.mSlope1Y, EPSILON); // XY-slope at p2=1.0 (2.0/2.0) - assertFloatEquals("slope x p2", 2.00f, mInterpolator.mSlope2X); - assertFloatEquals("slope y p2", 2.00f, mInterpolator.mSlope2Y); + assertEquals("slope x p2", 2.00f, mInterpolator.mSlope2X, EPSILON); + assertEquals("slope y p2", 2.00f, mInterpolator.mSlope2Y, EPSILON); // t=0.0 (p1) mInterpolator.interpolate(0.0f); - assertFloatEquals("t=0.0 x", 1.0f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.0 y", 0.0f, mInterpolator.mInterpolatedY); + assertEquals("t=0.0 x", 1.0f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.0 y", 0.0f, mInterpolator.mInterpolatedY, EPSILON); // t=0.2 mInterpolator.interpolate(0.2f); - assertFloatEquals("t=0.2 x", 1.4f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.2 y", 0.4f, mInterpolator.mInterpolatedY); + assertEquals("t=0.2 x", 1.4f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.2 y", 0.4f, mInterpolator.mInterpolatedY, EPSILON); // t=0.5 mInterpolator.interpolate(0.5f); - assertFloatEquals("t=0.5 x", 2.0f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.5 y", 1.0f, mInterpolator.mInterpolatedY); + assertEquals("t=0.5 x", 2.0f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.5 y", 1.0f, mInterpolator.mInterpolatedY, EPSILON); // t=0.8 mInterpolator.interpolate(0.8f); - assertFloatEquals("t=0.8 x", 2.6f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=0.8 y", 1.6f, mInterpolator.mInterpolatedY); + assertEquals("t=0.8 x", 2.6f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=0.8 y", 1.6f, mInterpolator.mInterpolatedY, EPSILON); // t=1.0 (p2) mInterpolator.interpolate(1.0f); - assertFloatEquals("t=1.0 x", 3.0f, mInterpolator.mInterpolatedX); - assertFloatEquals("t=1.0 y", 2.0f, mInterpolator.mInterpolatedY); + assertEquals("t=1.0 x", 3.0f, mInterpolator.mInterpolatedX, EPSILON); + assertEquals("t=1.0 y", 2.0f, mInterpolator.mInterpolatedY, EPSILON); } } diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSetTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSetTests.java index 72211015f1a33d097d90f45f5ddb5f54e31fc890..f312cadae635d18b24932a2ad3b3f3a0a2cb40fc 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSetTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSetTests.java @@ -16,28 +16,41 @@ package com.android.inputmethod.keyboard.internal; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; + import android.content.Context; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Locale; @SmallTest -public final class KeyboardTextsSetTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public final class KeyboardTextsSetTests { // All input method subtypes of LatinIME. private List<InputMethodSubtype> mAllSubtypesList; - @Override - protected void setUp() throws Exception { - super.setUp(); + private Context getContext() { + return InstrumentationRegistry.getTargetContext(); + } + + @Before + public void setUp() throws Exception { RichInputMethodManager.init(getContext()); final RichInputMethodManager richImm = RichInputMethodManager.getInstance(); @@ -54,6 +67,7 @@ public final class KeyboardTextsSetTests extends AndroidTestCase { // Test that the text {@link KeyboardTextsSet#SWITCH_TO_ALPHA_KEY_LABEL} exists for all // subtypes. The text is needed to implement Emoji Keyboard, see // {@link KeyboardSwitcher#setEmojiKeyboard()}. + @Test public void testSwitchToAlphaKeyLabel() { final Context context = getContext(); final KeyboardTextsSet textsSet = new KeyboardTextsSet(); @@ -80,6 +94,7 @@ public final class KeyboardTextsSetTests extends AndroidTestCase { }; // Test that the text from resources are correctly loaded for all subtypes. + @Test public void testTextFromResources() { final Context context = getContext(); final KeyboardTextsSet textsSet = new KeyboardTextsSet(); diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MatrixUtilsTests.java b/tests/src/com/android/inputmethod/keyboard/internal/MatrixUtilsTests.java index e2a11ab9954be3de1ae54c9778519f2ead17068d..10c552f291e017f3c78014705fcb1ec6a5b40de1 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/MatrixUtilsTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/MatrixUtilsTests.java @@ -16,25 +16,25 @@ package com.android.inputmethod.keyboard.internal; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.keyboard.internal.MatrixUtils.MatrixOperationFailedException; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import org.junit.Test; +import org.junit.runner.RunWith; @SmallTest -public class MatrixUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class MatrixUtilsTests { // "run tests" -c com.android.inputmethod.keyboard.internal.MatrixUtilsTests private static final boolean DEBUG = false; private static final float EPSILON = 0.00001f; - private static void assertEqualsFloat(float f0, float f1) { - assertEqualsFloat(f0, f1, EPSILON); - } - - /* package */ static void assertEqualsFloat(float f0, float f1, float error) { - assertTrue(Math.abs(f0 - f1) < error); - } - + @Test public void testMulti() { final float[][] matrixA = {{1, 2}, {3, 4}}; final float[][] matrixB = {{5, 6}, {7, 8}}; @@ -47,12 +47,13 @@ public class MatrixUtilsTests extends AndroidTestCase { if (DEBUG) { MatrixUtils.dump("multi", retval); } - assertEqualsFloat(retval[0][0], 19); - assertEqualsFloat(retval[0][1], 22); - assertEqualsFloat(retval[1][0], 43); - assertEqualsFloat(retval[1][1], 50); + assertEquals(retval[0][0], 19, EPSILON); + assertEquals(retval[0][1], 22, EPSILON); + assertEquals(retval[1][0], 43, EPSILON); + assertEquals(retval[1][1], 50, EPSILON); } + @Test public void testInverse() { final int N = 4; final float[][] matrix = @@ -77,7 +78,7 @@ public class MatrixUtilsTests extends AndroidTestCase { } for (int i = 0; i < N; ++i) { for (int j = 0; j < N; ++j) { - assertEqualsFloat(((i == j) ? 1.0f : 0.0f), retval[i][j]); + assertEquals(((i == j) ? 1.0f : 0.0f), retval[i][j], EPSILON); } } } diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecSplitTests.java b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecSplitTests.java index 8f4648c52dfd9e00aa5e7b06b008119d5e78513e..cbedd04260e659fc7f29312f131c7493ca20c42c 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecSplitTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecSplitTests.java @@ -16,26 +16,34 @@ package com.android.inputmethod.keyboard.internal; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + import android.content.Context; import android.content.res.Resources; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.R; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Arrays; import java.util.Locale; @SmallTest -public class MoreKeySpecSplitTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class MoreKeySpecSplitTests { private static final Locale TEST_LOCALE = Locale.ENGLISH; private final KeyboardTextsSet mTextsSet = new KeyboardTextsSet(); - @Override - protected void setUp() throws Exception { - super.setUp(); - - final Context targetContext = getContext(); + @Before + public void setUp() throws Exception { + final Context targetContext = InstrumentationRegistry.getTargetContext(); final Resources targetRes = targetContext.getResources(); final String targetPackageName = targetRes.getResourcePackageName( R.string.english_ime_name); @@ -90,6 +98,7 @@ public class MoreKeySpecSplitTests extends AndroidTestCase { private static final String SURROGATE1 = PAIR1 + PAIR2; private static final String SURROGATE2 = PAIR1 + PAIR2 + PAIR3; + @Test public void testSplitZero() { assertTextArray("Empty string", ""); assertTextArray("Empty entry", ","); @@ -99,6 +108,7 @@ public class MoreKeySpecSplitTests extends AndroidTestCase { assertTextArray("Empty entries with escape", ",a,b\\,c,,d,", "a", "b\\,c", "d"); } + @Test public void testSplitSingle() { assertTextArray("Single char", "a", "a"); assertTextArray("Surrogate pair", PAIR1, PAIR1); @@ -128,6 +138,7 @@ public class MoreKeySpecSplitTests extends AndroidTestCase { assertTextArray("Incomplete resource reference 4", "!" + SURROGATE2, "!" + SURROGATE2); } + @Test public void testSplitSingleEscaped() { assertTextArray("Escaped char", "\\a", "\\a"); assertTextArray("Escaped surrogate pair", "\\" + PAIR1, "\\" + PAIR1); @@ -163,6 +174,7 @@ public class MoreKeySpecSplitTests extends AndroidTestCase { assertTextArray("Escaped !TEXT/NAME", "\\!TEXT/EMPTY_STRING", "\\!TEXT/EMPTY_STRING"); } + @Test public void testSplitMulti() { assertTextArray("Multiple chars", "a,b,c", "a", "b", "c"); assertTextArray("Multiple chars", "a,b,\\c", "a", "b", "\\c"); @@ -178,6 +190,7 @@ public class MoreKeySpecSplitTests extends AndroidTestCase { " abc ", " def ", " ghi "); } + @Test public void testSplitMultiEscaped() { assertTextArray("Multiple chars with comma", "a,\\,,c", "a", "\\,", "c"); assertTextArray("Multiple chars with comma surrounded by spaces", " a , \\, , c ", @@ -197,16 +210,19 @@ public class MoreKeySpecSplitTests extends AndroidTestCase { "\\!", "\\!TEXT/EMPTY_STRING"); } + @Test public void testSplitTextReferenceError() { assertError("Incomplete text name", "!text/", "!text/"); assertError("Non existing text", "!text/non_existing"); } + @Test public void testSplitEmptyTextReference() { // Note that morekeys_q of English locale is empty. assertTextArray("Empty string", "!text/morekeys_q"); } + @Test public void testLabelReferece() { assertTextArray("Label time am", "!text/keylabel_time_am", "AM"); @@ -217,6 +233,7 @@ public class MoreKeySpecSplitTests extends AndroidTestCase { "!icon/settings_key|!code/key_settings"); } + @Test public void testUselessUpperCaseSpecifier() { assertTextArray("EMPTY STRING", "!TEXT/EMPTY_STRING", "!TEXT/EMPTY_STRING"); diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecStringReferenceTests.java b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecStringReferenceTests.java index e06ecaedfc4365aaccd5d316f39cc963a94a2bde..3655abbd54f378bc7692922eefbb289047409490 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecStringReferenceTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecStringReferenceTests.java @@ -16,26 +16,34 @@ package com.android.inputmethod.keyboard.internal; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + import android.app.Instrumentation; import android.content.Context; import android.content.res.Resources; -import android.test.InstrumentationTestCase; -import android.test.suitebuilder.annotation.SmallTest; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.tests.R; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Locale; @SmallTest -public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { +@RunWith(AndroidJUnit4.class) +public class MoreKeySpecStringReferenceTests { private static final Locale TEST_LOCALE = Locale.ENGLISH; private final KeyboardTextsSet mTextsSet = new KeyboardTextsSet(); - @Override - protected void setUp() throws Exception { - super.setUp(); - - final Instrumentation instrumentation = getInstrumentation(); + @Before + public void setUp() throws Exception { + final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); final Context testContext = instrumentation.getContext(); final Resources testRes = testContext.getResources(); final String testPackageName = testRes.getResourcePackageName(R.string.empty_string); @@ -59,16 +67,19 @@ public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { } } + @Test public void testResolveNullText() { assertEquals("resolve null", mTextsSet.resolveTextReference(null), null); } + @Test public void testResolveEmptyText() { assertEquals("resolve empty text", mTextsSet.resolveTextReference("!string/empty_string"), null); } + @Test public void testSplitSingleEscaped() { assertTextArray("Escaped !string", "\\!string", "\\!string"); @@ -82,6 +93,7 @@ public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { "\\!STRING/EMPTY_STRING"); } + @Test public void testSplitMultiEscaped() { assertTextArray("Multiple escaped !string", "\\!,\\!string/empty_string", "\\!", "\\!string/empty_string"); @@ -89,15 +101,18 @@ public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { "\\!", "\\!STRING/EMPTY_STRING"); } + @Test public void testSplitStringReferenceError() { assertError("Incomplete resource name", "!string/", "!string/"); assertError("Non existing resource", "!string/non_existing"); } + @Test public void testSplitEmptyStringReference() { assertTextArray("Empty string", "!string/empty_string"); } + @Test public void testSplitResourceSingle() { assertTextArray("Single char", "!string/single_char", "a"); @@ -119,6 +134,7 @@ public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { "\\\\a"); } + @Test public void testSplitResourceSingleEscaped() { assertTextArray("Escaped char", "!string/escaped_char", "\\a"); @@ -146,6 +162,7 @@ public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { "!string/escaped_label_with_escape", "a\\\\c"); } + @Test public void testSplitResourceMulti() { assertTextArray("Multiple chars", "!string/multiple_chars", "a", "b", "c"); @@ -158,6 +175,7 @@ public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { "!string/multiple_labels_surrounded_by_spaces", " abc ", " def ", " ghi "); } + @Test public void testSplitResourcetMultiEscaped() { assertTextArray("Multiple chars with comma", "!string/multiple_chars_with_comma", @@ -179,6 +197,7 @@ public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { " ab\\\\ ", " d\\\\\\, ", " g\\,i "); } + @Test public void testSplitMultipleResources() { assertTextArray("Literals and resources", "1,!string/multiple_chars,z", @@ -203,6 +222,7 @@ public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { "abcabc", "def", "ghi"); } + @Test public void testSplitIndirectReference() { assertTextArray("Indirect", "!string/indirect_string", "a", "b", "c"); @@ -212,11 +232,13 @@ public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { "!string/indirect2_string", "a", "b", "c"); } + @Test public void testSplitInfiniteIndirectReference() { assertError("Infinite indirection", "1,!string/infinite_indirection,2", "1", "infinite", "<infinite>", "loop", "2"); } + @Test public void testLabelReferece() { assertTextArray("Indirect naviagte actions as more key", "!string/keyspec_indirect_navigate_actions", @@ -225,6 +247,7 @@ public class MoreKeySpecStringReferenceTests extends InstrumentationTestCase { "!hasLabels!", "ActionNext|!code/key_action_next"); } + @Test public void testUselessUpperCaseSpecifier() { assertTextArray("EMPTY STRING", "!STRING/EMPTY_STRING", "!STRING/EMPTY_STRING"); diff --git a/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java b/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java index 7908b260e1777dd8fd6a8e8b6846692225b2ca5f..6ab1549c02efc1c4a0b89cebc9d33a1e74cff700 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java @@ -16,11 +16,19 @@ package com.android.inputmethod.keyboard.internal; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; @SmallTest -public class PointerTrackerQueueTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class PointerTrackerQueueTests { public static class Element implements PointerTrackerQueue.Element { public static int sPhantomUpCount; public static final long NOT_HAPPENED = -1; @@ -65,11 +73,13 @@ public class PointerTrackerQueueTests extends AndroidTestCase { private final Element mElement4 = new Element(4); private final PointerTrackerQueue mQueue = new PointerTrackerQueue(); + @Test public void testEmpty() { assertEquals(0, mQueue.size()); assertEquals("[]", mQueue.toString()); } + @Test public void testAdd() { mQueue.add(mElement1); assertEquals(1, mQueue.size()); @@ -85,6 +95,7 @@ public class PointerTrackerQueueTests extends AndroidTestCase { assertEquals("[1 2 3 4]", mQueue.toString()); } + @Test public void testRemove() { Element.sPhantomUpCount = 0; @@ -119,6 +130,7 @@ public class PointerTrackerQueueTests extends AndroidTestCase { assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } + @Test public void testAddAndRemove() { Element.sPhantomUpCount = 0; @@ -158,6 +170,7 @@ public class PointerTrackerQueueTests extends AndroidTestCase { assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } + @Test public void testReleaseAllPointers() { mElement2.mIsModifier = true; mQueue.add(mElement1); @@ -177,6 +190,7 @@ public class PointerTrackerQueueTests extends AndroidTestCase { assertEquals(eventTime + 4, mElement4.mPhantomUpEventTime); } + @Test public void testReleaseAllPointersOlderThanFirst() { mElement2.mIsModifier = true; mQueue.add(mElement1); @@ -194,6 +208,7 @@ public class PointerTrackerQueueTests extends AndroidTestCase { assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime); } + @Test public void testReleaseAllPointersOlderThanLast() { mElement2.mIsModifier = true; mQueue.add(mElement1); @@ -213,6 +228,7 @@ public class PointerTrackerQueueTests extends AndroidTestCase { assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } + @Test public void testReleaseAllPointersOlderThanWithoutModifierMiddle() { mQueue.add(mElement1); mQueue.add(mElement2); @@ -231,6 +247,7 @@ public class PointerTrackerQueueTests extends AndroidTestCase { assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } + @Test public void testReleaseAllPointersOlderThanWithoutModifierLast() { mQueue.add(mElement1); mQueue.add(mElement2); @@ -249,6 +266,7 @@ public class PointerTrackerQueueTests extends AndroidTestCase { assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } + @Test public void testReleaseAllPointersExcept() { mElement2.mIsModifier = true; mQueue.add(mElement1); @@ -268,6 +286,7 @@ public class PointerTrackerQueueTests extends AndroidTestCase { assertEquals(eventTime + 3, mElement4.mPhantomUpEventTime); } + @Test public void testHasModifierKeyOlderThan() { Element.sPhantomUpCount = 0; assertFalse("hasModifierKeyOlderThan empty", mQueue.hasModifierKeyOlderThan(mElement1)); @@ -297,6 +316,7 @@ public class PointerTrackerQueueTests extends AndroidTestCase { assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime); } + @Test public void testIsAnyInDraggingFinger() { Element.sPhantomUpCount = 0; assertFalse(mQueue.isAnyInDraggingFinger()); diff --git a/tests/src/com/android/inputmethod/keyboard/internal/SmoothingUtilsTests.java b/tests/src/com/android/inputmethod/keyboard/internal/SmoothingUtilsTests.java index 293741af20a4849c0d04457637dc2989eada86e8..39da3ec715dc263e08116a4d50960ddc55d72a53 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/SmoothingUtilsTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/SmoothingUtilsTests.java @@ -16,16 +16,24 @@ package com.android.inputmethod.keyboard.internal; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.keyboard.internal.MatrixUtils.MatrixOperationFailedException; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import org.junit.Test; +import org.junit.runner.RunWith; @SmallTest -public class SmoothingUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class SmoothingUtilsTests { // "run tests" -c com.android.inputmethod.keyboard.internal.SmoothingUtilsTests private static final boolean DEBUG = false; + @Test public void testGet3DParamaters() { final float[] xs = new float[] {0, 1, 2, 3, 4}; final float[] ys = new float[] {1, 4, 15, 40, 85}; // y = x^3 + x^2 + x + 1 @@ -36,7 +44,7 @@ public class SmoothingUtilsTests extends AndroidTestCase { MatrixUtils.dump("3d", retval); } for (int i = 0; i < 4; ++i) { - MatrixUtilsTests.assertEqualsFloat(retval[i][0], 1.0f, 0.001f); + assertEquals(retval[i][0], 1.0f, 0.001f); } } catch (MatrixOperationFailedException e) { assertTrue(false); diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java index e96c934cb94252d91959d6f6e87b6acb305acf0e..db8b80949b0c1c79029b02209d7177237225e334 100644 --- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java +++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java @@ -16,11 +16,18 @@ package com.android.inputmethod.latin; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + import android.text.TextUtils; import android.util.Pair; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.LargeTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.NgramContext.WordInfo; import com.android.inputmethod.latin.common.CodePointUtils; import com.android.inputmethod.latin.common.FileUtils; @@ -30,6 +37,11 @@ import com.android.inputmethod.latin.makedict.WeightedString; import com.android.inputmethod.latin.makedict.WordProperty; import com.android.inputmethod.latin.utils.BinaryDictionaryUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -39,26 +51,25 @@ import java.util.Locale; import java.util.Random; @LargeTest -public class BinaryDictionaryTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class BinaryDictionaryTests { private static final String TEST_DICT_FILE_EXTENSION = ".testDict"; private static final String TEST_LOCALE = "test"; private static final String DICTIONARY_ID = "TestBinaryDictionary"; private HashSet<File> mDictFilesToBeDeleted = new HashSet<>(); - @Override - protected void setUp() throws Exception { - super.setUp(); + @Before + public void setUp() throws Exception { mDictFilesToBeDeleted.clear(); } - @Override - protected void tearDown() throws Exception { + @After + public void tearDown() throws Exception { for (final File dictFile : mDictFilesToBeDeleted) { dictFile.delete(); } mDictFilesToBeDeleted.clear(); - super.tearDown(); } private File createEmptyDictionaryAndGetFile(final int formatVersion) { @@ -82,7 +93,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { private File createEmptyVer4DictionaryAndGetFile(final int formatVersion, final HashMap<String, String> attributeMap) throws IOException { final File file = File.createTempFile(DICTIONARY_ID, TEST_DICT_FILE_EXTENSION, - getContext().getCacheDir()); + InstrumentationRegistry.getTargetContext().getCacheDir()); file.delete(); file.mkdir(); if (BinaryDictionaryUtils.createEmptyDictFile(file.getAbsolutePath(), formatVersion, @@ -106,6 +117,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); } + @Test public void testIsValidDictionary() { final File dictFile = createEmptyDictionaryAndGetFile(FormatSpec.VERSION403); BinaryDictionary binaryDictionary = getBinaryDictionary(dictFile); @@ -121,6 +133,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { binaryDictionary.close(); } + @Test public void testConstructingDictionaryOnMemory() { final File dictFile = createEmptyDictionaryAndGetFile(FormatSpec.VERSION403); FileUtils.deleteRecursively(dictFile); @@ -142,6 +155,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { binaryDictionary.close(); } + @Test public void testAddTooLongWord() { final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403); final StringBuffer stringBuilder = new StringBuffer(); @@ -209,6 +223,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { new NgramContext(new WordInfo(word1), new WordInfo(word0)), word2); } + @Test public void testAddUnigramWord() { final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403); final int probability = 100; @@ -236,6 +251,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { assertEquals(updatedProbability, binaryDictionary.getFrequency("aaa")); } + @Test public void testRandomlyAddUnigramWord() { final int wordCount = 1000; final int codePointSetSize = 50; @@ -258,6 +274,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { } } + @Test public void testAddBigramWords() { final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403); @@ -311,6 +328,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { getBigramProbability(binaryDictionary, "abcde", "fghij")); } + @Test public void testRandomlyAddBigramWords() { final int wordCount = 100; final int bigramCount = 1000; @@ -357,6 +375,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { } } + @Test public void testAddTrigramWords() { final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403); final int unigramProbability = 100; @@ -383,6 +402,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { getTrigramProbability(binaryDictionary, "bcc", "abb", "aaa")); } + @Test public void testFlushDictionary() { final File dictFile = createEmptyDictionaryAndGetFile(FormatSpec.VERSION403); BinaryDictionary binaryDictionary = getBinaryDictionary(dictFile); @@ -417,6 +437,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { binaryDictionary.close(); } + @Test public void testFlushWithGCDictionary() { final File dictFile = createEmptyDictionaryAndGetFile(FormatSpec.VERSION403); BinaryDictionary binaryDictionary = getBinaryDictionary(dictFile); @@ -447,6 +468,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { binaryDictionary.close(); } + @Test public void testAddBigramWordsAndFlashWithGC() { final int wordCount = 100; final int bigramCount = 1000; @@ -499,6 +521,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { } } + @Test public void testRandomOperationsAndFlashWithGC() { final int maxUnigramCount = 5000; final int maxBigramCount = 10000; @@ -593,6 +616,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { } } + @Test public void testAddManyUnigramsAndFlushWithGC() { final int flashWithGCIterationCount = 3; final int codePointSetSize = 50; @@ -628,6 +652,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { } } + @Test public void testUnigramAndBigramCount() { final int maxUnigramCount = 5000; final int maxBigramCount = 10000; @@ -684,6 +709,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { } } + @Test public void testGetWordProperties() { final long seed = System.currentTimeMillis(); final Random random = new Random(seed); @@ -769,6 +795,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { } } + @Test public void testIterateAllWords() { final long seed = System.currentTimeMillis(); final Random random = new Random(seed); @@ -852,6 +879,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { assertTrue(bigramSet.isEmpty()); } + @Test public void testPossiblyOffensiveAttributeMaintained() { final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403); @@ -860,6 +888,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { assertEquals(true, wordProperty.mIsPossiblyOffensive); } + @Test public void testBeginningOfSentence() { final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403); final int dummyProbability = 0; diff --git a/tests/src/com/android/inputmethod/latin/ContactsContentObserverTest.java b/tests/src/com/android/inputmethod/latin/ContactsContentObserverTest.java index f90a18bf17b1791129585823481c3c76842dcd20..029e1b5067ead05f241a4fb94ef0d4afd992620d 100644 --- a/tests/src/com/android/inputmethod/latin/ContactsContentObserverTest.java +++ b/tests/src/com/android/inputmethod/latin/ContactsContentObserverTest.java @@ -24,11 +24,14 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.provider.ContactsContract.Contacts; -import android.test.suitebuilder.annotation.SmallTest; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -38,6 +41,7 @@ import java.util.ArrayList; * Tests for {@link ContactsContentObserver}. */ @SmallTest +@RunWith(AndroidJUnit4.class) public class ContactsContentObserverTest { private static final int UPDATED_CONTACT_COUNT = 10; private static final int STALE_CONTACT_COUNT = 8; diff --git a/tests/src/com/android/inputmethod/latin/ContactsDictionaryUtilsTest.java b/tests/src/com/android/inputmethod/latin/ContactsDictionaryUtilsTest.java index 9b49f1abb0e2a26c1a0f6109bd757f865b62a5be..a00c9dfdd0b4b40b3e539ee478e0195eb3a2909a 100644 --- a/tests/src/com/android/inputmethod/latin/ContactsDictionaryUtilsTest.java +++ b/tests/src/com/android/inputmethod/latin/ContactsDictionaryUtilsTest.java @@ -20,9 +20,11 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import android.test.suitebuilder.annotation.SmallTest; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import org.junit.Test; +import org.junit.runner.RunWith; import java.util.Locale; @@ -30,6 +32,7 @@ import java.util.Locale; * Tests for {@link ContactsDictionaryUtils} */ @SmallTest +@RunWith(AndroidJUnit4.class) public class ContactsDictionaryUtilsTest { @Test diff --git a/tests/src/com/android/inputmethod/latin/ContactsManagerTest.java b/tests/src/com/android/inputmethod/latin/ContactsManagerTest.java index f987e0c05e250305d09b4dee65e070ea0902dd63..d3d746df57bc5e364a9a83b30852259fafc9cd73 100644 --- a/tests/src/com/android/inputmethod/latin/ContactsManagerTest.java +++ b/tests/src/com/android/inputmethod/latin/ContactsManagerTest.java @@ -16,6 +16,10 @@ package com.android.inputmethod.latin; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; @@ -23,17 +27,20 @@ import android.database.MatrixCursor; import android.net.Uri; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; -import android.test.AndroidTestCase; import android.test.RenamingDelegatingContext; import android.test.mock.MockContentProvider; import android.test.mock.MockContentResolver; -import android.test.suitebuilder.annotation.SmallTest; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.ContactsDictionaryConstants; import com.android.inputmethod.latin.ContactsManager; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import java.util.ArrayList; import java.util.HashMap; @@ -43,14 +50,16 @@ import java.util.concurrent.TimeUnit; * Tests for {@link ContactsManager} */ @SmallTest -public class ContactsManagerTest extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class ContactsManagerTest { private ContactsManager mManager; private FakeContactsContentProvider mFakeContactsContentProvider; private MatrixCursor mMatrixCursor; + private final static float EPSILON = 0.00001f; + @Before - @Override public void setUp() throws Exception { // Fake content provider mFakeContactsContentProvider = new FakeContactsContentProvider(); @@ -59,7 +68,8 @@ public class ContactsManagerTest extends AndroidTestCase { final MockContentResolver contentResolver = new MockContentResolver(); contentResolver.addProvider(ContactsContract.AUTHORITY, mFakeContactsContentProvider); // Add the fake content resolver to a fake context. - final ContextWithMockContentResolver context = new ContextWithMockContentResolver(mContext); + final ContextWithMockContentResolver context = + new ContextWithMockContentResolver(InstrumentationRegistry.getTargetContext()); context.setContentResolver(contentResolver); mManager = new ContactsManager(context); @@ -113,9 +123,10 @@ public class ContactsManagerTest extends AndroidTestCase { cursor.moveToFirst(); ContactsManager.RankedContact contact = new ContactsManager.RankedContact(cursor); contact.computeAffinity(1, month_ago); - assertEquals(contact.getAffinity(), 1.0f); + assertEquals(contact.getAffinity(), 1.0f, EPSILON); contact.computeAffinity(2, now); - assertEquals(contact.getAffinity(), (2.0f/3.0f + (float)Math.pow(0.5, 3) + 1.0f) / 3); + assertEquals(contact.getAffinity(), (2.0f/3.0f + (float)Math.pow(0.5, 3) + 1.0f) / 3, + EPSILON); } @Test diff --git a/tests/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCacheTests.java b/tests/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCacheTests.java index 6b0bbc27975e4b6bf70c0409e1bcfbcfd5109b86..f8130f33c6075f3a394e65c837301415e98c9665 100644 --- a/tests/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCacheTests.java +++ b/tests/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCacheTests.java @@ -16,16 +16,26 @@ package com.android.inputmethod.latin; -import java.util.Locale; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.LargeTest; +import androidx.test.runner.AndroidJUnit4; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.Locale; @LargeTest -public class DictionaryFacilitatorLruCacheTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class DictionaryFacilitatorLruCacheTests { + + @Test public void testGetFacilitator() { final DictionaryFacilitatorLruCache cache = - new DictionaryFacilitatorLruCache(getContext(), ""); + new DictionaryFacilitatorLruCache(InstrumentationRegistry.getTargetContext(), ""); final DictionaryFacilitator dictionaryFacilitatorEnUs = cache.get(Locale.US); assertNotNull(dictionaryFacilitatorEnUs); diff --git a/tests/src/com/android/inputmethod/latin/NgramContextTests.java b/tests/src/com/android/inputmethod/latin/NgramContextTests.java index 0a662db828500337774e1bba200ec60df3e21cf1..505818439b747bc547c8b05fa832a6b76e403cd1 100644 --- a/tests/src/com/android/inputmethod/latin/NgramContextTests.java +++ b/tests/src/com/android/inputmethod/latin/NgramContextTests.java @@ -16,15 +16,26 @@ package com.android.inputmethod.latin; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.NgramContext.WordInfo; import com.android.inputmethod.latin.settings.SpacingAndPunctuations; import com.android.inputmethod.latin.utils.NgramContextUtils; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import org.junit.Test; +import org.junit.runner.RunWith; @SmallTest -public class NgramContextTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class NgramContextTests { + + @Test public void testConstruct() { assertEquals(new NgramContext(new WordInfo("a")), new NgramContext(new WordInfo("a"))); assertEquals(new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO), @@ -35,6 +46,7 @@ public class NgramContextTests extends AndroidTestCase { new NgramContext(WordInfo.EMPTY_WORD_INFO)); } + @Test public void testIsBeginningOfSentenceContext() { assertFalse(new NgramContext().isBeginningOfSentenceContext()); assertTrue(new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO) @@ -52,6 +64,7 @@ public class NgramContextTests extends AndroidTestCase { .isBeginningOfSentenceContext()); } + @Test public void testGetNextNgramContext() { final NgramContext ngramContext_a = new NgramContext(new WordInfo("a")); final NgramContext ngramContext_b_a = @@ -67,6 +80,7 @@ public class NgramContextTests extends AndroidTestCase { assertEquals("c", ngramContext_c_bos.getNthPrevWord(1)); } + @Test public void testExtractPrevWordsContextTest() { final NgramContext ngramContext_bos = new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO); @@ -92,6 +106,7 @@ public class NgramContextTests extends AndroidTestCase { assertEquals("a", ngramContext_a_empty.extractPrevWordsContext()); } + @Test public void testExtractPrevWordsContextArray() { final NgramContext ngramContext_bos = new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO); @@ -123,9 +138,10 @@ public class NgramContextTests extends AndroidTestCase { assertEquals("a", ngramContext_a_empty.extractPrevWordsContextArray()[0]); } + @Test public void testGetNgramContextFromNthPreviousWord() { SpacingAndPunctuations spacingAndPunctuations = new SpacingAndPunctuations( - mContext.getResources()); + InstrumentationRegistry.getTargetContext().getResources()); assertEquals("<S>", NgramContextUtils.getNgramContextFromNthPreviousWord("", spacingAndPunctuations, 1).extractPrevWordsContext()); assertEquals("<S> b", NgramContextUtils.getNgramContextFromNthPreviousWord("a. b ", diff --git a/tests/src/com/android/inputmethod/latin/PersonalDictionaryLookupTest.java b/tests/src/com/android/inputmethod/latin/PersonalDictionaryLookupTest.java deleted file mode 100644 index c06adedfd269ed4369550520e9298e975b39604f..0000000000000000000000000000000000000000 --- a/tests/src/com/android/inputmethod/latin/PersonalDictionaryLookupTest.java +++ /dev/null @@ -1,492 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.latin; - -import static com.android.inputmethod.latin.PersonalDictionaryLookup.ANY_LOCALE; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; - -import android.annotation.SuppressLint; -import android.content.ContentResolver; -import android.database.Cursor; -import android.net.Uri; -import android.provider.UserDictionary; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; -import android.util.Log; - -import com.android.inputmethod.latin.PersonalDictionaryLookup.PersonalDictionaryListener; -import com.android.inputmethod.latin.utils.ExecutorUtils; - -import java.util.HashSet; -import java.util.Locale; -import java.util.Set; - -/** - * Unit tests for {@link PersonalDictionaryLookup}. - * - * Note, this test doesn't mock out the ContentResolver, in order to make sure - * {@link PersonalDictionaryLookup} works in a real setting. - */ -@SmallTest -public class PersonalDictionaryLookupTest extends AndroidTestCase { - private static final String TAG = PersonalDictionaryLookupTest.class.getSimpleName(); - - private ContentResolver mContentResolver; - private HashSet<Uri> mAddedBackup; - - @Override - protected void setUp() throws Exception { - super.setUp(); - mContentResolver = mContext.getContentResolver(); - mAddedBackup = new HashSet<Uri>(); - } - - @Override - protected void tearDown() throws Exception { - // Remove all entries added during this test. - for (Uri row : mAddedBackup) { - mContentResolver.delete(row, null, null); - } - mAddedBackup.clear(); - - super.tearDown(); - } - - /** - * Adds the given word to the personal dictionary. - * - * @param word the word to add - * @param locale the locale of the word to add - * @param frequency the frequency of the word to add - * @return the Uri for the given word - */ - @SuppressLint("NewApi") - private Uri addWord(final String word, final Locale locale, int frequency, String shortcut) { - // Add the given word for the given locale. - UserDictionary.Words.addWord(mContext, word, frequency, shortcut, locale); - // Obtain an Uri for the given word. - Cursor cursor = mContentResolver.query(UserDictionary.Words.CONTENT_URI, null, - UserDictionary.Words.WORD + "='" + word + "'", null, null); - assertTrue(cursor.moveToFirst()); - Uri uri = Uri.withAppendedPath(UserDictionary.Words.CONTENT_URI, - cursor.getString(cursor.getColumnIndex(UserDictionary.Words._ID))); - // Add the row to the backup for later clearing. - mAddedBackup.add(uri); - return uri; - } - - /** - * Deletes the entry for the given word from UserDictionary. - * - * @param uri the Uri for the word as returned by addWord - */ - private void deleteWord(Uri uri) { - // Remove the word from the backup so that it's not cleared again later. - mAddedBackup.remove(uri); - // Remove the word from the personal dictionary. - mContentResolver.delete(uri, null, null); - } - - private PersonalDictionaryLookup setUpWord(final Locale locale) { - // Insert "foo" in the personal dictionary for the given locale. - addWord("foo", locale, 17, null); - - // Create the PersonalDictionaryLookup and wait until it's loaded. - PersonalDictionaryLookup lookup = - new PersonalDictionaryLookup(mContext, ExecutorUtils.SPELLING); - lookup.open(); - return lookup; - } - - private PersonalDictionaryLookup setUpShortcut(final Locale locale) { - // Insert "shortcut" => "Expansion" in the personal dictionary for the given locale. - addWord("Expansion", locale, 17, "shortcut"); - - // Create the PersonalDictionaryLookup and wait until it's loaded. - PersonalDictionaryLookup lookup = - new PersonalDictionaryLookup(mContext, ExecutorUtils.SPELLING); - lookup.open(); - return lookup; - } - - private void verifyWordExists(final Set<String> set, final String word) { - assertTrue(set.contains(word)); - } - - private void verifyWordDoesNotExist(final Set<String> set, final String word) { - assertFalse(set.contains(word)); - } - - public void testShortcutKeyMatching() { - Log.d(TAG, "testShortcutKeyMatching"); - PersonalDictionaryLookup lookup = setUpShortcut(Locale.US); - - assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.US)); - assertNull(lookup.expandShortcut("Shortcut", Locale.US)); - assertNull(lookup.expandShortcut("SHORTCUT", Locale.US)); - assertNull(lookup.expandShortcut("shortcu", Locale.US)); - assertNull(lookup.expandShortcut("shortcutt", Locale.US)); - - lookup.close(); - } - - public void testShortcutMatchesInputCountry() { - Log.d(TAG, "testShortcutMatchesInputCountry"); - PersonalDictionaryLookup lookup = setUpShortcut(Locale.US); - - verifyWordExists(lookup.getShortcutsForLocale(Locale.US), "shortcut"); - assertTrue(lookup.getShortcutsForLocale(Locale.UK).isEmpty()); - assertTrue(lookup.getShortcutsForLocale(Locale.ENGLISH).isEmpty()); - assertTrue(lookup.getShortcutsForLocale(Locale.FRENCH).isEmpty()); - assertTrue(lookup.getShortcutsForLocale(ANY_LOCALE).isEmpty()); - - assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.US)); - assertNull(lookup.expandShortcut("shortcut", Locale.UK)); - assertNull(lookup.expandShortcut("shortcut", Locale.ENGLISH)); - assertNull(lookup.expandShortcut("shortcut", Locale.FRENCH)); - assertNull(lookup.expandShortcut("shortcut", ANY_LOCALE)); - - lookup.close(); - } - - public void testShortcutMatchesInputLanguage() { - Log.d(TAG, "testShortcutMatchesInputLanguage"); - PersonalDictionaryLookup lookup = setUpShortcut(Locale.ENGLISH); - - verifyWordExists(lookup.getShortcutsForLocale(Locale.US), "shortcut"); - verifyWordExists(lookup.getShortcutsForLocale(Locale.UK), "shortcut"); - verifyWordExists(lookup.getShortcutsForLocale(Locale.ENGLISH), "shortcut"); - assertTrue(lookup.getShortcutsForLocale(Locale.FRENCH).isEmpty()); - assertTrue(lookup.getShortcutsForLocale(ANY_LOCALE).isEmpty()); - - assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.US)); - assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.UK)); - assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.ENGLISH)); - assertNull(lookup.expandShortcut("shortcut", Locale.FRENCH)); - assertNull(lookup.expandShortcut("shortcut", ANY_LOCALE)); - - lookup.close(); - } - - public void testShortcutMatchesAnyLocale() { - PersonalDictionaryLookup lookup = setUpShortcut(PersonalDictionaryLookup.ANY_LOCALE); - - verifyWordExists(lookup.getShortcutsForLocale(Locale.US), "shortcut"); - verifyWordExists(lookup.getShortcutsForLocale(Locale.UK), "shortcut"); - verifyWordExists(lookup.getShortcutsForLocale(Locale.ENGLISH), "shortcut"); - verifyWordExists(lookup.getShortcutsForLocale(Locale.FRENCH), "shortcut"); - verifyWordExists(lookup.getShortcutsForLocale(ANY_LOCALE), "shortcut"); - - assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.US)); - assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.UK)); - assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.ENGLISH)); - assertEquals("Expansion", lookup.expandShortcut("shortcut", Locale.FRENCH)); - assertEquals("Expansion", lookup.expandShortcut("shortcut", ANY_LOCALE)); - - lookup.close(); - } - - public void testExactLocaleMatch() { - Log.d(TAG, "testExactLocaleMatch"); - PersonalDictionaryLookup lookup = setUpWord(Locale.US); - - verifyWordExists(lookup.getWordsForLocale(Locale.US), "foo"); - verifyWordDoesNotExist(lookup.getWordsForLocale(Locale.UK), "foo"); - verifyWordDoesNotExist(lookup.getWordsForLocale(Locale.ENGLISH), "foo"); - verifyWordDoesNotExist(lookup.getWordsForLocale(Locale.FRENCH), "foo"); - verifyWordDoesNotExist(lookup.getWordsForLocale(ANY_LOCALE), "foo"); - - // Any capitalization variation should match. - assertTrue(lookup.isValidWord("foo", Locale.US)); - assertTrue(lookup.isValidWord("Foo", Locale.US)); - assertTrue(lookup.isValidWord("FOO", Locale.US)); - // But similar looking words don't match. - assertFalse(lookup.isValidWord("fo", Locale.US)); - assertFalse(lookup.isValidWord("fop", Locale.US)); - assertFalse(lookup.isValidWord("fooo", Locale.US)); - // Other locales, including more general locales won't match. - assertFalse(lookup.isValidWord("foo", Locale.ENGLISH)); - assertFalse(lookup.isValidWord("foo", Locale.UK)); - assertFalse(lookup.isValidWord("foo", Locale.FRENCH)); - assertFalse(lookup.isValidWord("foo", ANY_LOCALE)); - - lookup.close(); - } - - public void testSubLocaleMatch() { - Log.d(TAG, "testSubLocaleMatch"); - PersonalDictionaryLookup lookup = setUpWord(Locale.ENGLISH); - - verifyWordExists(lookup.getWordsForLocale(Locale.US), "foo"); - verifyWordExists(lookup.getWordsForLocale(Locale.UK), "foo"); - verifyWordExists(lookup.getWordsForLocale(Locale.ENGLISH), "foo"); - verifyWordDoesNotExist(lookup.getWordsForLocale(Locale.FRENCH), "foo"); - verifyWordDoesNotExist(lookup.getWordsForLocale(ANY_LOCALE), "foo"); - - // Any capitalization variation should match for both en and en_US. - assertTrue(lookup.isValidWord("foo", Locale.ENGLISH)); - assertTrue(lookup.isValidWord("foo", Locale.US)); - assertTrue(lookup.isValidWord("Foo", Locale.US)); - assertTrue(lookup.isValidWord("FOO", Locale.US)); - // But similar looking words don't match. - assertFalse(lookup.isValidWord("fo", Locale.US)); - assertFalse(lookup.isValidWord("fop", Locale.US)); - assertFalse(lookup.isValidWord("fooo", Locale.US)); - - lookup.close(); - } - - public void testAllLocalesMatch() { - Log.d(TAG, "testAllLocalesMatch"); - PersonalDictionaryLookup lookup = setUpWord(null); - - verifyWordExists(lookup.getWordsForLocale(Locale.US), "foo"); - verifyWordExists(lookup.getWordsForLocale(Locale.UK), "foo"); - verifyWordExists(lookup.getWordsForLocale(Locale.ENGLISH), "foo"); - verifyWordExists(lookup.getWordsForLocale(Locale.FRENCH), "foo"); - verifyWordExists(lookup.getWordsForLocale(ANY_LOCALE), "foo"); - - // Any capitalization variation should match for fr, en and en_US. - assertTrue(lookup.isValidWord("foo", ANY_LOCALE)); - assertTrue(lookup.isValidWord("foo", Locale.FRENCH)); - assertTrue(lookup.isValidWord("foo", Locale.ENGLISH)); - assertTrue(lookup.isValidWord("foo", Locale.US)); - assertTrue(lookup.isValidWord("Foo", Locale.US)); - assertTrue(lookup.isValidWord("FOO", Locale.US)); - // But similar looking words don't match. - assertFalse(lookup.isValidWord("fo", Locale.US)); - assertFalse(lookup.isValidWord("fop", Locale.US)); - assertFalse(lookup.isValidWord("fooo", Locale.US)); - - lookup.close(); - } - - public void testMultipleLocalesMatch() { - Log.d(TAG, "testMultipleLocalesMatch"); - - // Insert "Foo" as capitalized in the personal dictionary under the en_US and en_CA and fr - // locales. - addWord("Foo", Locale.US, 17, null); - addWord("foO", Locale.CANADA, 17, null); - addWord("fOo", Locale.FRENCH, 17, null); - - // Create the PersonalDictionaryLookup and wait until it's loaded. - PersonalDictionaryLookup lookup = new PersonalDictionaryLookup(mContext, - ExecutorUtils.SPELLING); - lookup.open(); - - // Both en_CA and en_US match. - assertTrue(lookup.isValidWord("foo", Locale.CANADA)); - assertTrue(lookup.isValidWord("foo", Locale.US)); - assertTrue(lookup.isValidWord("foo", Locale.FRENCH)); - // Other locales, including more general locales won't match. - assertFalse(lookup.isValidWord("foo", Locale.ENGLISH)); - assertFalse(lookup.isValidWord("foo", Locale.UK)); - assertFalse(lookup.isValidWord("foo", ANY_LOCALE)); - - lookup.close(); - } - - - public void testCaseMatchingForWordsAndShortcuts() { - Log.d(TAG, "testCaseMatchingForWordsAndShortcuts"); - addWord("Foo", Locale.US, 17, "f"); - addWord("bokabu", Locale.US, 17, "Bu"); - - // Create the PersonalDictionaryLookup and wait until it's loaded. - PersonalDictionaryLookup lookup = new PersonalDictionaryLookup(mContext, - ExecutorUtils.SPELLING); - lookup.open(); - - // Valid, inspite of capitalization in US but not in other - // locales. - assertTrue(lookup.isValidWord("Foo", Locale.US)); - assertTrue(lookup.isValidWord("foo", Locale.US)); - assertFalse(lookup.isValidWord("Foo", Locale.UK)); - assertFalse(lookup.isValidWord("foo", Locale.UK)); - - // Valid in all forms in US. - assertTrue(lookup.isValidWord("bokabu", Locale.US)); - assertTrue(lookup.isValidWord("BOKABU", Locale.US)); - assertTrue(lookup.isValidWord("BokaBU", Locale.US)); - - // Correct capitalization; sensitive to shortcut casing & locale. - assertEquals("Foo", lookup.expandShortcut("f", Locale.US)); - assertNull(lookup.expandShortcut("f", Locale.UK)); - - // Correct capitalization; sensitive to shortcut casing & locale. - assertEquals("bokabu", lookup.expandShortcut("Bu", Locale.US)); - assertNull(lookup.expandShortcut("Bu", Locale.UK)); - assertNull(lookup.expandShortcut("bu", Locale.US)); - - // Verify that raw strings are retained for #getWordsForLocale. - verifyWordExists(lookup.getWordsForLocale(Locale.US), "Foo"); - verifyWordDoesNotExist(lookup.getWordsForLocale(Locale.US), "foo"); - } - - public void testManageListeners() { - Log.d(TAG, "testManageListeners"); - - PersonalDictionaryLookup lookup = - new PersonalDictionaryLookup(mContext, ExecutorUtils.SPELLING); - - PersonalDictionaryListener listener = mock(PersonalDictionaryListener.class); - // Add the same listener a bunch of times. It doesn't make a difference. - lookup.addListener(listener); - lookup.addListener(listener); - lookup.addListener(listener); - lookup.notifyListeners(); - - verify(listener, times(1)).onUpdate(); - - // Remove the same listener a bunch of times. It doesn't make a difference. - lookup.removeListener(listener); - lookup.removeListener(listener); - lookup.removeListener(listener); - lookup.notifyListeners(); - - verifyNoMoreInteractions(listener); - } - - public void testReload() { - Log.d(TAG, "testReload"); - - // Insert "foo". - Uri uri = addWord("foo", Locale.US, 17, null); - - // Create the PersonalDictionaryLookup and wait until it's loaded. - PersonalDictionaryLookup lookup = - new PersonalDictionaryLookup(mContext, ExecutorUtils.SPELLING); - lookup.open(); - - // "foo" should match. - assertTrue(lookup.isValidWord("foo", Locale.US)); - - // "bar" shouldn't match. - assertFalse(lookup.isValidWord("bar", Locale.US)); - - // Now delete "foo" and add "bar". - deleteWord(uri); - addWord("bar", Locale.US, 18, null); - - // Wait a little bit before expecting a change. The time we wait should be greater than - // PersonalDictionaryLookup.RELOAD_DELAY_MS. - try { - Thread.sleep(PersonalDictionaryLookup.RELOAD_DELAY_MS + 1000); - } catch (InterruptedException e) { - } - - // Perform lookups again. Reload should have occured. - // - // "foo" should not match. - assertFalse(lookup.isValidWord("foo", Locale.US)); - - // "bar" should match. - assertTrue(lookup.isValidWord("bar", Locale.US)); - - lookup.close(); - } - - public void testDictionaryStats() { - Log.d(TAG, "testDictionaryStats"); - - // Insert "foo" and "bar". Only "foo" has a shortcut. - Uri uri = addWord("foo", Locale.GERMANY, 17, "f"); - addWord("bar", Locale.GERMANY, 17, null); - - // Create the PersonalDictionaryLookup and wait until it's loaded. - PersonalDictionaryLookup lookup = - new PersonalDictionaryLookup(mContext, ExecutorUtils.SPELLING); - lookup.open(); - - // "foo" should match. - assertTrue(lookup.isValidWord("foo", Locale.GERMANY)); - - // "bar" should match. - assertTrue(lookup.isValidWord("bar", Locale.GERMANY)); - - // "foo" should have a shortcut. - assertEquals("foo", lookup.expandShortcut("f", Locale.GERMANY)); - - // Now delete "foo". - deleteWord(uri); - - // Wait a little bit before expecting a change. The time we wait should be greater than - // PersonalDictionaryLookup.RELOAD_DELAY_MS. - try { - Thread.sleep(PersonalDictionaryLookup.RELOAD_DELAY_MS + 1000); - } catch (InterruptedException e) { - } - - // Perform lookups again. Reload should have occured. - // - // "foo" should not match. - assertFalse(lookup.isValidWord("foo", Locale.GERMANY)); - - // "foo" should not have a shortcut. - assertNull(lookup.expandShortcut("f", Locale.GERMANY)); - - // "bar" should still match. - assertTrue(lookup.isValidWord("bar", Locale.GERMANY)); - - lookup.close(); - } - - public void testClose() { - Log.d(TAG, "testClose"); - - // Insert "foo". - Uri uri = addWord("foo", Locale.US, 17, null); - - // Create the PersonalDictionaryLookup and wait until it's loaded. - PersonalDictionaryLookup lookup = - new PersonalDictionaryLookup(mContext, ExecutorUtils.SPELLING); - lookup.open(); - - // "foo" should match. - assertTrue(lookup.isValidWord("foo", Locale.US)); - - // "bar" shouldn't match. - assertFalse(lookup.isValidWord("bar", Locale.US)); - - // Now close (prevents further reloads). - lookup.close(); - - // Now delete "foo" and add "bar". - deleteWord(uri); - addWord("bar", Locale.US, 18, null); - - // Wait a little bit before expecting a change. The time we wait should be greater than - // PersonalDictionaryLookup.RELOAD_DELAY_MS. - try { - Thread.sleep(PersonalDictionaryLookup.RELOAD_DELAY_MS + 1000); - } catch (InterruptedException e) { - } - - // Perform lookups again. Reload should not have occurred. - // - // "foo" should stil match. - assertTrue(lookup.isValidWord("foo", Locale.US)); - - // "bar" should still not match. - assertFalse(lookup.isValidWord("bar", Locale.US)); - } -} diff --git a/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java b/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java index 128f9f7db56e027f6054d14d0f3f2a4a94d6f759..ac38468f9c31db450020ac34a7f8115cae32b3d7 100644 --- a/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java +++ b/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java @@ -16,12 +16,13 @@ package com.android.inputmethod.latin; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + import android.content.res.Resources; import android.inputmethodservice.InputMethodService; import android.os.Parcel; -import android.test.AndroidTestCase; -import android.test.MoreAsserts; -import android.test.suitebuilder.annotation.SmallTest; import android.text.SpannableString; import android.text.TextUtils; import android.text.style.SuggestionSpan; @@ -30,6 +31,10 @@ import android.view.inputmethod.ExtractedTextRequest; import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputConnectionWrapper; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.common.Constants; import com.android.inputmethod.latin.common.StringUtils; import com.android.inputmethod.latin.settings.SpacingAndPunctuations; @@ -38,25 +43,29 @@ import com.android.inputmethod.latin.utils.RunInLocale; import com.android.inputmethod.latin.utils.ScriptUtils; import com.android.inputmethod.latin.utils.TextRange; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Locale; @SmallTest -public class RichInputConnectionAndTextRangeTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class RichInputConnectionAndTextRangeTests { // The following is meant to be a reasonable default for // the "word_separators" resource. private SpacingAndPunctuations mSpacingAndPunctuations; - @Override - protected void setUp() throws Exception { - super.setUp(); + @Before + public void setUp() throws Exception { final RunInLocale<SpacingAndPunctuations> job = new RunInLocale<SpacingAndPunctuations>() { @Override protected SpacingAndPunctuations job(final Resources res) { return new SpacingAndPunctuations(res); } }; - final Resources res = getContext().getResources(); + final Resources res = InstrumentationRegistry.getTargetContext().getResources(); mSpacingAndPunctuations = job.runInLocale(res, Locale.ENGLISH); } @@ -156,6 +165,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase { /** * Test for getting previous word (for bigram suggestions) */ + @Test public void testGetPreviousWord() { // If one of the following cases breaks, the bigram suggestions won't work. assertEquals(NgramContextUtils.getNgramContextFromNthPreviousWord( @@ -218,6 +228,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase { "abc 'def", mSpacingAndPunctuations, 2), NgramContext.EMPTY_PREV_WORDS_INFO); } + @Test public void testGetWordRangeAtCursor() { /** * Test logic in getting the word range at the cursor. @@ -282,6 +293,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase { /** * Test logic in getting the word range at the cursor. */ + @Test public void testGetSuggestionSpansAtWord() { helpTestGetSuggestionSpansAtWord(10); helpTestGetSuggestionSpansAtWord(12); @@ -309,7 +321,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase { r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN); suggestions = r.getSuggestionSpansAtWord(); assertEquals(suggestions.length, 1); - MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1); + assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1); // Test the case with 2 suggestion spans in the same place. text = new SpannableString("This is a string for test"); @@ -321,8 +333,8 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase { r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN); suggestions = r.getSuggestionSpansAtWord(); assertEquals(suggestions.length, 2); - MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1); - MoreAsserts.assertEquals(suggestions[1].getSuggestions(), SUGGESTIONS2); + assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1); + assertEquals(suggestions[1].getSuggestions(), SUGGESTIONS2); // Test a case with overlapping spans, 2nd extending past the start of the word text = new SpannableString("This is a string for test"); @@ -334,7 +346,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase { r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN); suggestions = r.getSuggestionSpansAtWord(); assertEquals(suggestions.length, 1); - MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1); + assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1); // Test a case with overlapping spans, 2nd extending past the end of the word text = new SpannableString("This is a string for test"); @@ -346,7 +358,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase { r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN); suggestions = r.getSuggestionSpansAtWord(); assertEquals(suggestions.length, 1); - MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1); + assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1); // Test a case with overlapping spans, 2nd extending past both ends of the word text = new SpannableString("This is a string for test"); @@ -358,7 +370,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase { r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN); suggestions = r.getSuggestionSpansAtWord(); assertEquals(suggestions.length, 1); - MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1); + assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1); // Test a case with overlapping spans, none right on the word text = new SpannableString("This is a string for test"); @@ -372,6 +384,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase { assertEquals(suggestions.length, 0); } + @Test public void testCursorTouchingWord() { final MockInputMethodService ims = new MockInputMethodService(); final RichInputConnection ic = new RichInputConnection(ims); diff --git a/tests/src/com/android/inputmethod/latin/RichInputMethodSubtypeTests.java b/tests/src/com/android/inputmethod/latin/RichInputMethodSubtypeTests.java index af94be66452d1a5755e274173b540aaec07c5229..578e6bea0b5783185a135f3bf0ca0d363941c549 100644 --- a/tests/src/com/android/inputmethod/latin/RichInputMethodSubtypeTests.java +++ b/tests/src/com/android/inputmethod/latin/RichInputMethodSubtypeTests.java @@ -16,13 +16,20 @@ package com.android.inputmethod.latin; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import android.content.Context; import android.content.res.Resources; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.RichInputMethodSubtype; @@ -30,11 +37,17 @@ import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils; import com.android.inputmethod.latin.utils.RunInLocale; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.ArrayList; import java.util.Locale; @SmallTest -public class RichInputMethodSubtypeTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class RichInputMethodSubtypeTests { // All input method subtypes of LatinIME. private final ArrayList<RichInputMethodSubtype> mSubtypesList = new ArrayList<>(); @@ -67,10 +80,9 @@ public class RichInputMethodSubtypeTests extends AndroidTestCase { RichInputMethodSubtype HI_LATN_DVORAK; RichInputMethodSubtype SR_LATN_QWERTY; - @Override - protected void setUp() throws Exception { - super.setUp(); - final Context context = getContext(); + @Before + public void setUp() throws Exception { + final Context context = InstrumentationRegistry.getTargetContext(); mRes = context.getResources(); RichInputMethodManager.init(context); mRichImm = RichInputMethodManager.getInstance(); @@ -152,13 +164,13 @@ public class RichInputMethodSubtypeTests extends AndroidTestCase { } } - @Override - protected void tearDown() throws Exception { + @After + public void tearDown() throws Exception { // Restore additional subtypes. mRichImm.setAdditionalInputMethodSubtypes(mSavedAddtionalSubtypes); - super.tearDown(); } + @Test public void testAllFullDisplayNameForSpacebar() { for (final RichInputMethodSubtype subtype : mSubtypesList) { final String subtypeName = SubtypeLocaleUtils @@ -174,7 +186,8 @@ public class RichInputMethodSubtypeTests extends AndroidTestCase { } } - public void testAllMiddleDisplayNameForSpacebar() { + @Test + public void testAllMiddleDisplayNameForSpacebar() { for (final RichInputMethodSubtype subtype : mSubtypesList) { final String subtypeName = SubtypeLocaleUtils .getSubtypeDisplayNameInSystemLocale(subtype.getRawSubtype()); @@ -293,22 +306,27 @@ public class RichInputMethodSubtypeTests extends AndroidTestCase { } }; + @Test public void testPredefinedSubtypesForSpacebarInEnglish() { testsPredefinedSubtypesForSpacebar.runInLocale(mRes, Locale.ENGLISH); } + @Test public void testAdditionalSubtypeForSpacebarInEnglish() { testsAdditionalSubtypesForSpacebar.runInLocale(mRes, Locale.ENGLISH); } + @Test public void testPredefinedSubtypesForSpacebarInFrench() { testsPredefinedSubtypesForSpacebar.runInLocale(mRes, Locale.FRENCH); } + @Test public void testAdditionalSubtypeForSpacebarInFrench() { testsAdditionalSubtypesForSpacebar.runInLocale(mRes, Locale.FRENCH); } + @Test public void testRichInputMethodSubtypeForNullInputMethodSubtype() { RichInputMethodSubtype subtype = RichInputMethodSubtype.getRichInputMethodSubtype(null); assertNotNull(subtype); diff --git a/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java b/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java index d465ce6742bdd023b6b61662263358fb53268d81..92bff0e2e52f6d6cd99a8e6e3e3f2773147492c6 100644 --- a/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java +++ b/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java @@ -16,16 +16,24 @@ package com.android.inputmethod.latin; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.ArrayList; import java.util.Locale; @SmallTest -public class SuggestedWordsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class SuggestedWordsTests { /** * Helper method to create a dummy {@link SuggestedWordInfo} with specifying @@ -80,30 +88,35 @@ public class SuggestedWordsTests extends AndroidTestCase { return returnedWordInfo; } + @Test public void testRemoveDupesNoDupes() { final ArrayList<SuggestedWordInfo> infos = createCorrectionWordInfos("a", "c"); assertEquals(-1, SuggestedWordInfo.removeDups("b", infos)); assertEquals(2, infos.size()); } + @Test public void testRemoveDupesTypedWordNotDupe() { final ArrayList<SuggestedWordInfo> infos = createCorrectionWordInfos("a", "a", "c"); assertEquals(-1, SuggestedWordInfo.removeDups("b", infos)); assertEquals(2, infos.size()); } + @Test public void testRemoveDupesTypedWordOnlyDupe() { final ArrayList<SuggestedWordInfo> infos = createCorrectionWordInfos("a", "b", "c"); assertEquals(1, SuggestedWordInfo.removeDups("b", infos)); assertEquals(2, infos.size()); } + @Test public void testRemoveDupesTypedWordNotOnlyDupe() { final ArrayList<SuggestedWordInfo> infos = createCorrectionWordInfos("a", "b", "b", "c"); assertEquals(1, SuggestedWordInfo.removeDups("b", infos)); assertEquals(2, infos.size()); } + @Test public void testGetTransformedSuggestedWordInfo() { SuggestedWordInfo result = transformWordInfo("word", 0); assertEquals(result.mWord, "word"); @@ -119,6 +132,7 @@ public class SuggestedWordsTests extends AndroidTestCase { assertEquals(result.mWord, "didn't''"); } + @Test public void testGetTypedWordInfoOrNull() { final String TYPED_WORD = "typed"; final SuggestedWordInfo TYPED_WORD_INFO = createTypedWordInfo(TYPED_WORD); diff --git a/tests/src/com/android/inputmethod/latin/WordComposerTests.java b/tests/src/com/android/inputmethod/latin/WordComposerTests.java index 8ae475f7e1c854880dd44db7acff2eed79c757bd..4ac094b25bcc7845235ba6fef2cbdb01d4919405 100644 --- a/tests/src/com/android/inputmethod/latin/WordComposerTests.java +++ b/tests/src/com/android/inputmethod/latin/WordComposerTests.java @@ -16,18 +16,28 @@ package com.android.inputmethod.latin; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.common.Constants; import com.android.inputmethod.latin.common.CoordinateUtils; import com.android.inputmethod.latin.common.StringUtils; +import org.junit.Test; +import org.junit.runner.RunWith; + /** * Unit tests for WordComposer. */ @SmallTest -public class WordComposerTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class WordComposerTests { + + @Test public void testMoveCursor() { final WordComposer wc = new WordComposer(); // BMP is the Basic Multilingual Plane, as defined by Unicode. This includes diff --git a/tests/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiverTests.java b/tests/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiverTests.java index 832817967343c612d06bdacdbbaff7b016590ce7..86f453b088b5992b12eb0bffea4351a57decb4ca 100644 --- a/tests/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiverTests.java +++ b/tests/src/com/android/inputmethod/latin/accounts/AccountsChangedReceiverTests.java @@ -16,40 +16,55 @@ package com.android.inputmethod.latin.accounts; +import static org.junit.Assert.assertEquals; + import android.accounts.AccountManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; -import android.test.AndroidTestCase; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.settings.LocalSettingsConstants; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + /** * Tests for {@link AccountsChangedReceiver}. */ -public class AccountsChangedReceiverTests extends AndroidTestCase { +@SmallTest +@RunWith(AndroidJUnit4.class) +public class AccountsChangedReceiverTests { private static final String ACCOUNT_1 = "account1@example.com"; private static final String ACCOUNT_2 = "account2@example.com"; private SharedPreferences mPrefs; private String mLastKnownAccount = null; - @Override - protected void setUp() throws Exception { - super.setUp(); + private Context getContext() { + return InstrumentationRegistry.getTargetContext(); + } + + @Before + public void setUp() throws Exception { mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext()); // Keep track of the current account so that we restore it when the test finishes. mLastKnownAccount = mPrefs.getString(LocalSettingsConstants.PREF_ACCOUNT_NAME, null); } - @Override - protected void tearDown() throws Exception { - super.tearDown(); + @After + public void tearDown() throws Exception { // Restore the account that was present before running the test. updateAccountName(mLastKnownAccount); } + @Test public void testUnknownIntent() { updateAccountName(ACCOUNT_1); AccountsChangedReceiver reciever = new AccountsChangedReceiver(); @@ -58,6 +73,7 @@ public class AccountsChangedReceiverTests extends AndroidTestCase { assertAccountName(ACCOUNT_1); } + @Test public void testAccountRemoved() { updateAccountName(ACCOUNT_1); AccountsChangedReceiver reciever = new AccountsChangedReceiver() { @@ -71,6 +87,7 @@ public class AccountsChangedReceiverTests extends AndroidTestCase { assertAccountName(null); } + @Test public void testAccountRemoved_noAccounts() { updateAccountName(ACCOUNT_2); AccountsChangedReceiver reciever = new AccountsChangedReceiver() { @@ -84,6 +101,7 @@ public class AccountsChangedReceiverTests extends AndroidTestCase { assertAccountName(null); } + @Test public void testAccountNotRemoved() { updateAccountName(ACCOUNT_2); AccountsChangedReceiver reciever = new AccountsChangedReceiver() { diff --git a/tests/src/com/android/inputmethod/latin/common/InputPointersTests.java b/tests/src/com/android/inputmethod/latin/common/InputPointersTests.java index 6b3490de8c2f52885bd0c56f327d0567c677f42a..29abec365dee7fbb5f8cdb86af03fb12a89c711b 100644 --- a/tests/src/com/android/inputmethod/latin/common/InputPointersTests.java +++ b/tests/src/com/android/inputmethod/latin/common/InputPointersTests.java @@ -16,15 +16,27 @@ package com.android.inputmethod.latin.common; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; import java.util.Arrays; @SmallTest -public class InputPointersTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class InputPointersTests { private static final int DEFAULT_CAPACITY = 48; + @Test public void testNewInstance() { final InputPointers src = new InputPointers(DEFAULT_CAPACITY); assertEquals("new instance size", 0, src.getPointerSize()); @@ -34,6 +46,7 @@ public class InputPointersTests extends AndroidTestCase { assertNotNull("new instance times", src.getTimes()); } + @Test public void testReset() { final InputPointers src = new InputPointers(DEFAULT_CAPACITY); final int[] xCoordinates = src.getXCoordinates(); @@ -49,6 +62,7 @@ public class InputPointersTests extends AndroidTestCase { assertNotSame("times after reset", times, src.getTimes()); } + @Test public void testAdd() { final InputPointers src = new InputPointers(DEFAULT_CAPACITY); final int limit = src.getXCoordinates().length * 2 + 10; @@ -72,6 +86,7 @@ public class InputPointersTests extends AndroidTestCase { } } + @Test public void testAddAt() { final InputPointers src = new InputPointers(DEFAULT_CAPACITY); final int limit = 1000, step = 100; @@ -95,6 +110,7 @@ public class InputPointersTests extends AndroidTestCase { } } + @Test public void testSet() { final InputPointers src = new InputPointers(DEFAULT_CAPACITY); final int limit = src.getXCoordinates().length * 2 + 10; @@ -114,6 +130,7 @@ public class InputPointersTests extends AndroidTestCase { assertSame("times after set", dst.getTimes(), src.getTimes()); } + @Test public void testCopy() { final InputPointers src = new InputPointers(DEFAULT_CAPACITY); final int limit = 100; @@ -142,6 +159,7 @@ public class InputPointersTests extends AndroidTestCase { dst.getTimes(), 0, src.getTimes(), 0, size); } + @Test public void testAppend() { final int dstLength = 50; final InputPointers dst = new InputPointers(DEFAULT_CAPACITY); @@ -211,6 +229,7 @@ public class InputPointersTests extends AndroidTestCase { srcTimes.getPrimitiveArray(), startPos, dst.getTimes(), dstLength, srcLength); } + @Test public void testAppendResizableIntArray() { final int dstLength = 50; final InputPointers dst = new InputPointers(DEFAULT_CAPACITY); @@ -296,6 +315,7 @@ public class InputPointersTests extends AndroidTestCase { } } + @Test public void testShift() { final InputPointers src = new InputPointers(DEFAULT_CAPACITY); final int limit = 100; diff --git a/tests/src/com/android/inputmethod/latin/common/ResizableIntArrayTests.java b/tests/src/com/android/inputmethod/latin/common/ResizableIntArrayTests.java index bd1629faf5659d8443dfe9dc224bb9b0798016cf..5151b6b2bcdb64cb8398a2f56ef5d09563c206fe 100644 --- a/tests/src/com/android/inputmethod/latin/common/ResizableIntArrayTests.java +++ b/tests/src/com/android/inputmethod/latin/common/ResizableIntArrayTests.java @@ -16,15 +16,27 @@ package com.android.inputmethod.latin.common; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; import java.util.Arrays; @SmallTest -public class ResizableIntArrayTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class ResizableIntArrayTests { private static final int DEFAULT_CAPACITY = 48; + @Test public void testNewInstance() { final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY); final int[] array = src.getPrimitiveArray(); @@ -33,6 +45,7 @@ public class ResizableIntArrayTests extends AndroidTestCase { assertEquals("new instance array length", DEFAULT_CAPACITY, array.length); } + @Test public void testAdd() { final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY); final int[] array = src.getPrimitiveArray(); @@ -62,6 +75,7 @@ public class ResizableIntArrayTests extends AndroidTestCase { } } + @Test public void testAddAt() { final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY); final int limit = DEFAULT_CAPACITY * 10, step = DEFAULT_CAPACITY * 2; @@ -76,6 +90,7 @@ public class ResizableIntArrayTests extends AndroidTestCase { } } + @Test public void testGet() { final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY); try { @@ -105,6 +120,7 @@ public class ResizableIntArrayTests extends AndroidTestCase { } } + @Test public void testReset() { final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY); final int[] array = src.getPrimitiveArray(); @@ -136,6 +152,7 @@ public class ResizableIntArrayTests extends AndroidTestCase { } } + @Test public void testSetLength() { final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY); final int[] array = src.getPrimitiveArray(); @@ -172,6 +189,7 @@ public class ResizableIntArrayTests extends AndroidTestCase { } } + @Test public void testSet() { final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY); final int limit = DEFAULT_CAPACITY * 2 + 10; @@ -186,6 +204,7 @@ public class ResizableIntArrayTests extends AndroidTestCase { assertSame("array after set", dst.getPrimitiveArray(), src.getPrimitiveArray()); } + @Test public void testCopy() { final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY); for (int i = 0; i < DEFAULT_CAPACITY; i++) { @@ -214,6 +233,7 @@ public class ResizableIntArrayTests extends AndroidTestCase { dst.getPrimitiveArray(), 0, src.getPrimitiveArray(), 0, dst.getLength()); } + @Test public void testAppend() { final int srcLength = DEFAULT_CAPACITY; final ResizableIntArray src = new ResizableIntArray(srcLength); @@ -264,6 +284,7 @@ public class ResizableIntArrayTests extends AndroidTestCase { srcLength); } + @Test public void testFill() { final int srcLength = DEFAULT_CAPACITY; final ResizableIntArray src = new ResizableIntArray(srcLength); @@ -359,6 +380,7 @@ public class ResizableIntArrayTests extends AndroidTestCase { } } + @Test public void testShift() { final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY); final int limit = DEFAULT_CAPACITY * 10; diff --git a/tests/src/com/android/inputmethod/latin/common/StringUtilsTests.java b/tests/src/com/android/inputmethod/latin/common/StringUtilsTests.java index ec9d4be92c9ccd89b03dd5e1138c565b70a72728..36a4b912d429966d65ea79ca9a4fe06adc35f337 100644 --- a/tests/src/com/android/inputmethod/latin/common/StringUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/common/StringUtilsTests.java @@ -16,13 +16,21 @@ package com.android.inputmethod.latin.common; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; import java.util.Locale; @SmallTest -public class StringUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class StringUtilsTests { private static final Locale US = Locale.US; private static final Locale GERMAN = Locale.GERMAN; private static final Locale TURKEY = new Locale("tr", "TR"); @@ -34,6 +42,7 @@ public class StringUtilsTests extends AndroidTestCase { StringUtils.toTitleCaseOfKeyLabel(lowerCase, locale)); } + @Test public void test_toTitleCaseOfKeyLabel() { assert_toTitleCaseOfKeyLabel(US, null, null); assert_toTitleCaseOfKeyLabel(US, "", ""); @@ -116,6 +125,7 @@ public class StringUtilsTests extends AndroidTestCase { StringUtils.toTitleCaseOfKeyCode(lowerCase, locale)); } + @Test public void test_toTitleCaseOfKeyCode() { assert_toTitleCaseOfKeyCode(US, Constants.CODE_ENTER, Constants.CODE_ENTER); assert_toTitleCaseOfKeyCode(US, Constants.CODE_SPACE, Constants.CODE_SPACE); @@ -148,6 +158,7 @@ public class StringUtilsTests extends AndroidTestCase { StringUtils.capitalizeFirstCodePoint(text, locale)); } + @Test public void test_capitalizeFirstCodePoint() { assert_capitalizeFirstCodePoint(US, "", ""); assert_capitalizeFirstCodePoint(US, "a", "A"); @@ -167,6 +178,7 @@ public class StringUtilsTests extends AndroidTestCase { StringUtils.capitalizeFirstAndDowncaseRest(text, locale)); } + @Test public void test_capitalizeFirstAndDowncaseRest() { assert_capitalizeFirstAndDowncaseRest(US, "", ""); assert_capitalizeFirstAndDowncaseRest(US, "a", "A"); @@ -185,6 +197,7 @@ public class StringUtilsTests extends AndroidTestCase { assert_capitalizeFirstAndDowncaseRest(GREECE, "ΆÎΕΣΗ", "Άνεση"); } + @Test public void testContainsInArray() { assertFalse("empty array", StringUtils.containsInArray("key", new String[0])); assertFalse("not in 1 element", StringUtils.containsInArray("key", new String[] { @@ -202,6 +215,7 @@ public class StringUtilsTests extends AndroidTestCase { })); } + @Test public void testContainsInCommaSplittableText() { assertFalse("null", StringUtils.containsInCommaSplittableText("key", null)); assertFalse("empty", StringUtils.containsInCommaSplittableText("key", "")); @@ -214,6 +228,7 @@ public class StringUtilsTests extends AndroidTestCase { assertTrue("in 2 elements", StringUtils.containsInCommaSplittableText("key", "key1,key")); } + @Test public void testRemoveFromCommaSplittableTextIfExists() { assertEquals("null", "", StringUtils.removeFromCommaSplittableTextIfExists("key", null)); assertEquals("empty", "", StringUtils.removeFromCommaSplittableTextIfExists("key", "")); @@ -239,7 +254,7 @@ public class StringUtilsTests extends AndroidTestCase { "key", "key1,key,key3,key,key5")); } - + @Test public void testCapitalizeFirstCodePoint() { assertEquals("SSaa", StringUtils.capitalizeFirstCodePoint("ßaa", Locale.GERMAN)); @@ -259,6 +274,7 @@ public class StringUtilsTests extends AndroidTestCase { StringUtils.capitalizeFirstCodePoint("A", Locale.ENGLISH)); } + @Test public void testCapitalizeFirstAndDowncaseRest() { assertEquals("SSaa", StringUtils.capitalizeFirstAndDowncaseRest("ßaa", Locale.GERMAN)); @@ -278,6 +294,7 @@ public class StringUtilsTests extends AndroidTestCase { StringUtils.capitalizeFirstAndDowncaseRest("A", Locale.ENGLISH)); } + @Test public void testGetCapitalizationType() { assertEquals(StringUtils.CAPITALIZE_NONE, StringUtils.getCapitalizationType("capitalize")); @@ -301,6 +318,7 @@ public class StringUtilsTests extends AndroidTestCase { StringUtils.getCapitalizationType("")); } + @Test public void testIsIdenticalAfterUpcaseIsIdenticalAfterDowncase() { assertFalse(StringUtils.isIdenticalAfterUpcase("capitalize")); assertTrue(StringUtils.isIdenticalAfterDowncase("capitalize")); @@ -337,6 +355,7 @@ public class StringUtilsTests extends AndroidTestCase { StringUtils.toSortedCodePointArray(" \n.!?*()&"); private static final int[] WORD_SEPARATORS = StringUtils.toSortedCodePointArray(" \n.!?*,();&"); + @Test public void testCapitalizeEachWord() { checkCapitalize("", "", SPACE, Locale.ENGLISH); checkCapitalize("test", "Test", SPACE, Locale.ENGLISH); @@ -367,6 +386,7 @@ public class StringUtilsTests extends AndroidTestCase { WORD_SEPARATORS, Locale.ENGLISH); } + @Test public void testLooksLikeURL() { assertTrue(StringUtils.lastPartLooksLikeURL("http://www.google.")); assertFalse(StringUtils.lastPartLooksLikeURL("word wo")); @@ -389,6 +409,7 @@ public class StringUtilsTests extends AndroidTestCase { assertTrue(StringUtils.lastPartLooksLikeURL(".abc/def")); } + @Test public void testHexStringUtils() { final byte[] bytes = new byte[] { (byte)0x01, (byte)0x11, (byte)0x22, (byte)0x33, (byte)0x55, (byte)0x88, (byte)0xEE }; @@ -401,6 +422,7 @@ public class StringUtilsTests extends AndroidTestCase { assertTrue(bytesStr.equals(bytesStr2)); } + @Test public void testToCodePointArray() { final String STR_WITH_SUPPLEMENTARY_CHAR = "abcde\uD861\uDED7fgh\u0000\u2002\u2003\u3000xx"; final int[] EXPECTED_RESULT = new int[] { 'a', 'b', 'c', 'd', 'e', 0x286D7, 'f', 'g', 'h', @@ -414,6 +436,7 @@ public class StringUtilsTests extends AndroidTestCase { } } + @Test public void testCopyCodePointsAndReturnCodePointCount() { final String STR_WITH_SUPPLEMENTARY_CHAR = "AbcDE\uD861\uDED7fGh\u0000\u2002\u3000ã‚x"; final int[] EXPECTED_RESULT = new int[] { 'A', 'b', 'c', 'D', 'E', 0x286D7, @@ -465,6 +488,7 @@ public class StringUtilsTests extends AndroidTestCase { exceptionHappened); } + @Test public void testGetTrailingSingleQuotesCount() { assertEquals(0, StringUtils.getTrailingSingleQuotesCount("")); assertEquals(1, StringUtils.getTrailingSingleQuotesCount("'")); diff --git a/tests/src/com/android/inputmethod/latin/common/UnicodeSurrogateTests.java b/tests/src/com/android/inputmethod/latin/common/UnicodeSurrogateTests.java index 59bb0829284a6cbc82dbc6f948c8b9b63e80eb4c..adfbbf41823b011528b6209dec1a2695ce32fc7a 100644 --- a/tests/src/com/android/inputmethod/latin/common/UnicodeSurrogateTests.java +++ b/tests/src/com/android/inputmethod/latin/common/UnicodeSurrogateTests.java @@ -16,18 +16,27 @@ package com.android.inputmethod.latin.common; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; @SmallTest -public class UnicodeSurrogateTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class UnicodeSurrogateTests { + @Test public void testIsLowSurrogate() { assertFalse(UnicodeSurrogate.isLowSurrogate('\uD7FF')); assertTrue(UnicodeSurrogate.isLowSurrogate('\uD83D')); assertFalse(UnicodeSurrogate.isLowSurrogate('\uDC00')); } + @Test public void testIsHighSurrogate() { assertFalse(UnicodeSurrogate.isHighSurrogate('\uDBFF')); assertTrue(UnicodeSurrogate.isHighSurrogate('\uDE25')); diff --git a/tests/src/com/android/inputmethod/latin/network/BlockingHttpClientTests.java b/tests/src/com/android/inputmethod/latin/network/BlockingHttpClientTests.java index 8f24cdb4459dc270c319b70572ad143dff7013aa..f6f54eb779e1ad0bff261e267fccea6ab755aa20 100644 --- a/tests/src/com/android/inputmethod/latin/network/BlockingHttpClientTests.java +++ b/tests/src/com/android/inputmethod/latin/network/BlockingHttpClientTests.java @@ -16,16 +16,22 @@ package com.android.inputmethod.latin.network; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.network.BlockingHttpClient.ResponseProcessor; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; @@ -44,15 +50,16 @@ import java.util.Random; * Tests for {@link BlockingHttpClient}. */ @SmallTest -public class BlockingHttpClientTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class BlockingHttpClientTests { @Mock HttpURLConnection mMockHttpConnection; - @Override - protected void setUp() throws Exception { - super.setUp(); + @Before + public void setUp() throws Exception { MockitoAnnotations.initMocks(this); } + @Test public void testError_badGateway() throws IOException, AuthException { when(mMockHttpConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_BAD_GATEWAY); final BlockingHttpClient client = new BlockingHttpClient(mMockHttpConnection); @@ -67,6 +74,7 @@ public class BlockingHttpClientTests extends AndroidTestCase { } } + @Test public void testError_clientTimeout() throws Exception { when(mMockHttpConnection.getResponseCode()).thenReturn( HttpURLConnection.HTTP_CLIENT_TIMEOUT); @@ -82,6 +90,7 @@ public class BlockingHttpClientTests extends AndroidTestCase { } } + @Test public void testError_forbiddenWithRequest() throws Exception { final OutputStream mockOutputStream = Mockito.mock(OutputStream.class); when(mMockHttpConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_FORBIDDEN); @@ -98,6 +107,7 @@ public class BlockingHttpClientTests extends AndroidTestCase { verify(mockOutputStream).write(any(byte[].class), eq(0), eq(100)); } + @Test public void testSuccess_emptyRequest() throws Exception { final Random rand = new Random(); byte[] response = new byte[100]; @@ -112,6 +122,7 @@ public class BlockingHttpClientTests extends AndroidTestCase { assertTrue("ResponseProcessor was not invoked", processor.mInvoked); } + @Test public void testSuccess() throws Exception { final OutputStream mockOutputStream = Mockito.mock(OutputStream.class); final Random rand = new Random(); diff --git a/tests/src/com/android/inputmethod/latin/network/HttpUrlConnectionBuilderTests.java b/tests/src/com/android/inputmethod/latin/network/HttpUrlConnectionBuilderTests.java index 5b3e78eaf3a861a2e0a60d7a629f1073787b9efb..1aa4040b8408f52a253ef7609e6d6da6e1ad7957 100644 --- a/tests/src/com/android/inputmethod/latin/network/HttpUrlConnectionBuilderTests.java +++ b/tests/src/com/android/inputmethod/latin/network/HttpUrlConnectionBuilderTests.java @@ -20,25 +20,28 @@ import static com.android.inputmethod.latin.network.HttpUrlConnectionBuilder.MOD import static com.android.inputmethod.latin.network.HttpUrlConnectionBuilder.MODE_DOWNLOAD_ONLY; import static com.android.inputmethod.latin.network.HttpUrlConnectionBuilder.MODE_UPLOAD_ONLY; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; - /** * Tests for {@link HttpUrlConnectionBuilder}. */ @SmallTest -public class HttpUrlConnectionBuilderTests extends AndroidTestCase { - - @Override - protected void setUp() throws Exception { - super.setUp(); - } - +@RunWith(AndroidJUnit4.class) +public class HttpUrlConnectionBuilderTests { + @Test public void testSetUrl_malformed() { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); try { @@ -49,6 +52,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { } } + @Test public void testSetConnectTimeout_invalid() { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); try { @@ -59,6 +63,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { } } + @Test public void testSetConnectTimeout() throws IOException { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); builder.setUrl("https://www.example.com"); @@ -67,6 +72,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { assertEquals(8765, connection.getConnectTimeout()); } + @Test public void testSetReadTimeout_invalid() { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); try { @@ -77,6 +83,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { } } + @Test public void testSetReadTimeout() throws IOException { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); builder.setUrl("https://www.example.com"); @@ -85,6 +92,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { assertEquals(8765, connection.getReadTimeout()); } + @Test public void testAddHeader() throws IOException { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); builder.setUrl("http://www.example.com"); @@ -93,6 +101,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { assertEquals("some-random-value", connection.getRequestProperty("some-random-key")); } + @Test public void testSetUseCache_notSet() throws IOException { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); builder.setUrl("http://www.example.com"); @@ -100,6 +109,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { assertFalse(connection.getUseCaches()); } + @Test public void testSetUseCache_false() throws IOException { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); builder.setUrl("http://www.example.com"); @@ -108,6 +118,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { assertFalse(connection.getUseCaches()); } + @Test public void testSetUseCache_true() throws IOException { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); builder.setUrl("http://www.example.com"); @@ -116,6 +127,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { assertTrue(connection.getUseCaches()); } + @Test public void testSetMode_uploadOnly() throws IOException { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); builder.setUrl("http://www.example.com"); @@ -125,6 +137,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { assertFalse(connection.getDoOutput()); } + @Test public void testSetMode_downloadOnly() throws IOException { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); builder.setUrl("https://www.example.com"); @@ -134,6 +147,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { assertTrue(connection.getDoOutput()); } + @Test public void testSetMode_bidirectional() throws IOException { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); builder.setUrl("https://www.example.com"); @@ -143,6 +157,7 @@ public class HttpUrlConnectionBuilderTests extends AndroidTestCase { assertTrue(connection.getDoOutput()); } + @Test public void testSetAuthToken() throws IOException { HttpUrlConnectionBuilder builder = new HttpUrlConnectionBuilder(); builder.setUrl("https://www.example.com"); diff --git a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java index 559f28642cb5dd41b78fc23d030c2772ab271c81..68f04158928d46909ef130fcf936511213b2d4db 100644 --- a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java +++ b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java @@ -16,13 +16,23 @@ package com.android.inputmethod.latin.personalization; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import static org.junit.Assert.assertTrue; + +import android.content.Context; import android.util.Log; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.LargeTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.ExpandableBinaryDictionary; import com.android.inputmethod.latin.utils.BinaryDictionaryUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.io.File; import java.util.Locale; import java.util.Random; @@ -31,13 +41,18 @@ import java.util.Random; * Unit tests for UserHistoryDictionary */ @LargeTest -public class UserHistoryDictionaryTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class UserHistoryDictionaryTests { private static final String TAG = UserHistoryDictionaryTests.class.getSimpleName(); private static final int WAIT_FOR_WRITING_FILE_IN_MILLISECONDS = 3000; private static final String TEST_ACCOUNT = "account@example.com"; private int mCurrentTime = 0; + private Context getContext() { + return InstrumentationRegistry.getTargetContext(); + } + private static void printAllFiles(final File dir) { Log.d(TAG, dir.getAbsolutePath()); for (final File file : dir.listFiles()) { @@ -62,20 +77,18 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { assertTrue("Following dictionary file doesn't exist: " + dictFile, dictFile.exists()); } - @Override - protected void setUp() throws Exception { - super.setUp(); + @Before + public void setUp() throws Exception { resetCurrentTimeForTestMode(); UserHistoryDictionaryTestsHelper.removeAllTestDictFiles( - UserHistoryDictionaryTestsHelper.TEST_LOCALE_PREFIX, mContext); + UserHistoryDictionaryTestsHelper.TEST_LOCALE_PREFIX, getContext()); } - @Override - protected void tearDown() throws Exception { + @After + public void tearDown() throws Exception { UserHistoryDictionaryTestsHelper.removeAllTestDictFiles( - UserHistoryDictionaryTestsHelper.TEST_LOCALE_PREFIX, mContext); + UserHistoryDictionaryTestsHelper.TEST_LOCALE_PREFIX, getContext()); stopTestModeInNativeCode(); - super.tearDown(); } private void resetCurrentTimeForTestMode() { @@ -111,7 +124,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { null /* dictFile */, testAccount /* account */); final File dictFile = ExpandableBinaryDictionary.getDictFile( - mContext, dictName, null /* dictFile */); + getContext(), dictName, null /* dictFile */); final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( getContext(), dummyLocale, testAccount); clearHistory(dict); @@ -123,18 +136,22 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { assertDictionaryExists(dict, dictFile); } + @Test public void testRandomWords_NullAccount() { doTestRandomWords(null /* testAccount */); } + @Test public void testRandomWords() { doTestRandomWords(TEST_ACCOUNT); } + @Test public void testStressTestForSwitchingLanguagesAndAddingWords() { doTestStressTestForSwitchingLanguagesAndAddingWords(TEST_ACCOUNT); } + @Test public void testStressTestForSwitchingLanguagesAndAddingWords_NullAccount() { doTestStressTestForSwitchingLanguagesAndAddingWords(null /* testAccount */); } @@ -158,7 +175,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, testAccount /* account */); dictFiles[i] = ExpandableBinaryDictionary.getDictFile( - mContext, dictName, null /* dictFile */); + getContext(), dictName, null /* dictFile */); dicts[i] = PersonalizationHelper.getUserHistoryDictionary(getContext(), dummyLocale, testAccount); clearHistory(dicts[i]); @@ -186,10 +203,12 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { } } + @Test public void testAddManyWords() { doTestAddManyWords(TEST_ACCOUNT); } + @Test public void testAddManyWords_NullAccount() { doTestAddManyWords(null /* testAccount */); } @@ -200,7 +219,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { final String dictName = UserHistoryDictionary.getUserHistoryDictName( UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, testAccount); final File dictFile = ExpandableBinaryDictionary.getDictFile( - mContext, dictName, null /* dictFile */); + getContext(), dictName, null /* dictFile */); final int numberOfWords = 10000; final Random random = new Random(123456); final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( diff --git a/tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java b/tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java index f2d8973f78a64063449b28788c3367a117a37080..667ffd1aee639fc57676866cab56687eedec3d07 100644 --- a/tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java +++ b/tests/src/com/android/inputmethod/latin/settings/AccountsSettingsFragmentTests.java @@ -16,6 +16,9 @@ package com.android.inputmethod.latin.settings; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Mockito.when; @@ -23,13 +26,19 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; -import android.test.ActivityInstrumentationTestCase2; -import android.test.suitebuilder.annotation.MediumTest; import android.view.View; import android.widget.ListView; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.MediumTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.utils.ManagedProfileUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -37,36 +46,41 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @MediumTest -public class AccountsSettingsFragmentTests - extends ActivityInstrumentationTestCase2<TestFragmentActivity> { +@RunWith(AndroidJUnit4.class) +public class AccountsSettingsFragmentTests { private static final String FRAG_NAME = AccountsSettingsFragment.class.getName(); private static final long TEST_TIMEOUT_MILLIS = 5000; @Mock private ManagedProfileUtils mManagedProfileUtils; - public AccountsSettingsFragmentTests() { - super(TestFragmentActivity.class); + private TestFragmentActivity mActivity; + private TestFragmentActivity getActivity() { + return mActivity; } - @Override - protected void setUp() throws Exception { - super.setUp(); - + @Before + public void setUp() throws Exception { // Initialize the mocks. MockitoAnnotations.initMocks(this); ManagedProfileUtils.setTestInstance(mManagedProfileUtils); - Intent intent = new Intent(); - intent.putExtra(TestFragmentActivity.EXTRA_SHOW_FRAGMENT, FRAG_NAME); - setActivityIntent(intent); + final Intent intent = new Intent() + .setAction(Intent.ACTION_MAIN) + .setClass(InstrumentationRegistry.getTargetContext(), TestFragmentActivity.class) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION) + .putExtra(TestFragmentActivity.EXTRA_SHOW_FRAGMENT, FRAG_NAME); + mActivity = (TestFragmentActivity) InstrumentationRegistry.getInstrumentation() + .startActivitySync(intent); } - @Override + @After public void tearDown() throws Exception { ManagedProfileUtils.setTestInstance(null); - super.tearDown(); + mActivity = null; } + @Test public void testEmptyAccounts() { final AccountsSettingsFragment fragment = (AccountsSettingsFragment) getActivity().mFragment; @@ -83,6 +97,7 @@ public class AccountsSettingsFragmentTests DialogHolder() {} } + @Test public void testMultipleAccounts_noSettingsForManagedProfile() { when(mManagedProfileUtils.hasWorkProfile(any(Context.class))).thenReturn(true); @@ -95,6 +110,7 @@ public class AccountsSettingsFragmentTests assertNull(fragment.findPreference(AccountsSettingsFragment.PREF_ACCCOUNT_SWITCHER)); } + @Test public void testMultipleAccounts_noCurrentAccount() { when(mManagedProfileUtils.hasWorkProfile(any(Context.class))).thenReturn(false); @@ -116,6 +132,7 @@ public class AccountsSettingsFragmentTests dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()); } + @Test public void testMultipleAccounts_currentAccount() { when(mManagedProfileUtils.hasWorkProfile(any(Context.class))).thenReturn(false); @@ -164,7 +181,7 @@ public class AccountsSettingsFragmentTests } catch (InterruptedException ex) { fail(); } - getInstrumentation().waitForIdleSync(); + InstrumentationRegistry.getInstrumentation().waitForIdleSync(); return dialogHolder; } } diff --git a/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java b/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java index ed632db68fda598cab89ff4dcd8cf635abe57d31..df44fba67138cd76dee647b5c836e1f5a7800ed1 100644 --- a/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java +++ b/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java @@ -16,9 +16,17 @@ package com.android.inputmethod.latin.settings; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import android.content.Context; import android.content.res.Resources; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.SuggestedWords; import com.android.inputmethod.latin.common.Constants; @@ -26,15 +34,24 @@ import com.android.inputmethod.latin.utils.RunInLocale; import junit.framework.AssertionFailedError; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Locale; @SmallTest -public class SpacingAndPunctuationsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class SpacingAndPunctuationsTests { private static final int ARMENIAN_FULL_STOP = '\u0589'; private static final int ARMENIAN_COMMA = '\u055D'; private int mScreenMetrics; + private Context getContext() { + return InstrumentationRegistry.getTargetContext(); + } + private boolean isPhone() { return Constants.isPhone(mScreenMetrics); } @@ -63,10 +80,8 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { private SpacingAndPunctuations CAMBODIA_KHMER; private SpacingAndPunctuations LAOS_LAO; - @Override - protected void setUp() throws Exception { - super.setUp(); - + @Before + public void setUp() throws Exception { mScreenMetrics = Settings.readScreenMetrics(getContext().getResources()); // Language only @@ -140,6 +155,7 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { assertFalse("Tilde", sp.isWordSeparator('~')); } + @Test public void testWordSeparator() { testingStandardWordSeparator(ENGLISH); testingStandardWordSeparator(FRENCH); @@ -192,6 +208,7 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { } + @Test public void testWordConnector() { testingStandardWordConnector(ENGLISH); testingStandardWordConnector(FRENCH); @@ -245,6 +262,7 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { assertFalse("Question", sp.isUsuallyPrecededBySpace('?')); } + @Test public void testIsUsuallyPrecededBySpace() { testingStandardPrecededBySpace(ENGLISH); testingCommonPrecededBySpace(FRENCH); @@ -298,6 +316,7 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { assertFalse("Tilde", sp.isUsuallyFollowedBySpace('~')); } + @Test public void testIsUsuallyFollowedBySpace() { testingStandardFollowedBySpace(ENGLISH); testingStandardFollowedBySpace(FRENCH); @@ -345,7 +364,8 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { assertFalse("Tilde", sp.isUsuallyFollowedBySpace('~')); } - public void isSentenceSeparator() { + @Test + public void testIsSentenceSeparator() { testingStandardSentenceSeparator(ENGLISH); try { testingStandardSentenceSeparator(ARMENIA_ARMENIAN); @@ -357,6 +377,7 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { assertFalse(ARMENIA_ARMENIAN.isSentenceSeparator(ARMENIAN_COMMA)); } + @Test public void testLanguageHasSpace() { assertTrue(ENGLISH.mCurrentLanguageHasSpaces); assertTrue(FRENCH.mCurrentLanguageHasSpaces); @@ -369,6 +390,7 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { assertTrue(LAO.mCurrentLanguageHasSpaces); } + @Test public void testUsesAmericanTypography() { assertTrue(ENGLISH.mUsesAmericanTypography); assertTrue(UNITED_STATES.mUsesAmericanTypography); @@ -379,6 +401,7 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { assertFalse(SWISS_GERMAN.mUsesAmericanTypography); } + @Test public void testUsesGermanRules() { assertFalse(ENGLISH.mUsesGermanRules); assertFalse(FRENCH.mUsesGermanRules); @@ -436,6 +459,7 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { } } + @Test public void testPhonePunctuationSuggestions() { if (!isPhone()) { return; @@ -454,6 +478,7 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase { PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_HEBREW); } + @Test public void testTabletPunctuationSuggestions() { if (!isTablet()) { return; diff --git a/tests/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelperTests.java b/tests/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelperTests.java index f3273a2d148f31b1dd1a8de08a59fc069b8fc2b5..3706574ef3f6977a0b416513095701fefcd0b58c 100644 --- a/tests/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelperTests.java +++ b/tests/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelperTests.java @@ -16,13 +16,22 @@ package com.android.inputmethod.latin.suggestions; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static junit.framework.TestCase.assertEquals; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.SuggestedWords; +import org.junit.Test; +import org.junit.runner.RunWith; + @SmallTest -public class SuggestionStripLayoutHelperTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class SuggestionStripLayoutHelperTests { private static void confirmShowTypedWord(final String message, final int inputType) { assertFalse(message, SuggestionStripLayoutHelper.shouldOmitTypedWord( inputType, @@ -42,6 +51,7 @@ public class SuggestionStripLayoutHelperTests extends AndroidTestCase { true /* shouldShowUiToAcceptTypedWord */)); } + @Test public void testShouldShowTypedWord() { confirmShowTypedWord("no input style", SuggestedWords.INPUT_STYLE_NONE); @@ -51,7 +61,8 @@ public class SuggestionStripLayoutHelperTests extends AndroidTestCase { SuggestedWords.INPUT_STYLE_RECORRECTION); } - public void testshouldOmitTypedWordWhileTyping() { + @Test + public void testShouldOmitTypedWordWhileTyping() { assertFalse("typing", SuggestionStripLayoutHelper.shouldOmitTypedWord( SuggestedWords.INPUT_STYLE_TYPING, false /* gestureFloatingPreviewTextEnabled */, @@ -70,7 +81,8 @@ public class SuggestionStripLayoutHelperTests extends AndroidTestCase { true /* shouldShowUiToAcceptTypedWord */)); } - public void testshouldOmitTypedWordWhileGesturing() { + @Test + public void testShouldOmitTypedWordWhileGesturing() { assertFalse("gesturing", SuggestionStripLayoutHelper.shouldOmitTypedWord( SuggestedWords.INPUT_STYLE_UPDATE_BATCH, false /* gestureFloatingPreviewTextEnabled */, @@ -89,7 +101,8 @@ public class SuggestionStripLayoutHelperTests extends AndroidTestCase { true /* shouldShowUiToAcceptTypedWord */)); } - public void testshouldOmitTypedWordWhenGestured() { + @Test + public void testShouldOmitTypedWordWhenGestured() { assertFalse("gestured", SuggestionStripLayoutHelper.shouldOmitTypedWord( SuggestedWords.INPUT_STYLE_TAIL_BATCH, false /* gestureFloatingPreviewTextEnabled */, @@ -115,6 +128,7 @@ public class SuggestionStripLayoutHelperTests extends AndroidTestCase { private static final int POSITION_CENTER = 1; private static final int POSITION_RIGHT = 2; + @Test public void testGetPositionInSuggestionStrip() { assertEquals("1st word without auto correction", POSITION_CENTER, SuggestionStripLayoutHelper.getPositionInSuggestionStrip( diff --git a/tests/src/com/android/inputmethod/latin/touchinputconsumer/NullGestureConsumerTests.java b/tests/src/com/android/inputmethod/latin/touchinputconsumer/NullGestureConsumerTests.java index ad6bcc3c44551fd61fd1b43b3134b1a44b899c1b..986c8e3dd3e49db6b78065bea4a6ea4340d15d6d 100644 --- a/tests/src/com/android/inputmethod/latin/touchinputconsumer/NullGestureConsumerTests.java +++ b/tests/src/com/android/inputmethod/latin/touchinputconsumer/NullGestureConsumerTests.java @@ -16,18 +16,26 @@ package com.android.inputmethod.latin.touchinputconsumer; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertSame; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; /** * Tests for GestureConsumer.NULL_GESTURE_CONSUMER. */ @SmallTest -public class NullGestureConsumerTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class NullGestureConsumerTests { /** * Tests that GestureConsumer.NULL_GESTURE_CONSUMER indicates that it won't consume gesture data * and that its methods don't raise exceptions even for invalid data. */ + @Test public void testNullGestureConsumer() { assertFalse(GestureConsumer.NULL_GESTURE_CONSUMER.willConsume()); GestureConsumer.NULL_GESTURE_CONSUMER.onInit(null, null); @@ -40,6 +48,7 @@ public class NullGestureConsumerTests extends AndroidTestCase { /** * Tests that newInstance returns NULL_GESTURE_CONSUMER for invalid input. */ + @Test public void testNewInstanceGivesNullGestureConsumerForInvalidInputs() { assertSame(GestureConsumer.NULL_GESTURE_CONSUMER, GestureConsumer.newInstance(null, null, null, null)); diff --git a/tests/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtilsTests.java index 1db839506537d8a827ce76894fab3a55922a5c89..08c404e1265fb11dd34a4c671fb6a30aabda533d 100644 --- a/tests/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtilsTests.java @@ -16,25 +16,36 @@ package com.android.inputmethod.latin.utils; -import static com.android.inputmethod.latin.common.Constants.Subtype.KEYBOARD_MODE; import static com.android.inputmethod.latin.common.Constants.Subtype.ExtraValue.ASCII_CAPABLE; import static com.android.inputmethod.latin.common.Constants.Subtype.ExtraValue.EMOJI_CAPABLE; import static com.android.inputmethod.latin.common.Constants.Subtype.ExtraValue.IS_ADDITIONAL_SUBTYPE; import static com.android.inputmethod.latin.common.Constants.Subtype.ExtraValue.KEYBOARD_LAYOUT_SET; import static com.android.inputmethod.latin.common.Constants.Subtype.ExtraValue.UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME; +import static com.android.inputmethod.latin.common.Constants.Subtype.KEYBOARD_MODE; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import android.content.Context; import android.os.Build; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; import android.view.inputmethod.InputMethodSubtype; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Locale; @SmallTest -public class AdditionalSubtypeUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class AdditionalSubtypeUtilsTests { /** * Predictable subtype ID for en_US dvorak layout. This is actually a hash code calculated as @@ -98,10 +109,9 @@ public class AdditionalSubtypeUtilsTests extends AndroidTestCase { ",EmojiCapable" + ",isAdditionalSubtype"; - @Override - protected void setUp() throws Exception { - super.setUp(); - final Context context = getContext(); + @Before + public void setUp() throws Exception { + final Context context = InstrumentationRegistry.getTargetContext(); SubtypeLocaleUtils.init(context); } @@ -149,6 +159,7 @@ public class AdditionalSubtypeUtilsTests extends AndroidTestCase { assertEquals(SUBTYPE_ID_ZZ_AZERTY, subtype.hashCode()); } + @Test public void testRestorable() { final InputMethodSubtype EN_US_DVORAK = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype( diff --git a/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java b/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java index c214b5fd09556a0d6543305cc2391cc7c2a0867e..f5378054310dff6c37934eae6c9eee2b9e0e3966 100644 --- a/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java @@ -16,12 +16,19 @@ package com.android.inputmethod.latin.utils; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.MediumTest; +import static org.junit.Assert.assertEquals; + import android.util.Log; +import androidx.test.filters.MediumTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + @MediumTest -public class AsyncResultHolderTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class AsyncResultHolderTests { static final String TAG = AsyncResultHolderTests.class.getSimpleName(); private static final int TIMEOUT_IN_MILLISECONDS = 500; @@ -44,12 +51,14 @@ public class AsyncResultHolderTests extends AndroidTestCase { }).start(); } + @Test public void testGetWithoutSet() { final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>("Test"); final int resultValue = holder.get(DEFAULT_VALUE, TIMEOUT_IN_MILLISECONDS); assertEquals(DEFAULT_VALUE, resultValue); } + @Test public void testGetBeforeSet() { final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>("Test"); setAfterGivenTime(holder, SET_VALUE, TIMEOUT_IN_MILLISECONDS + MARGIN_IN_MILLISECONDS); @@ -57,6 +66,7 @@ public class AsyncResultHolderTests extends AndroidTestCase { assertEquals(DEFAULT_VALUE, resultValue); } + @Test public void testGetAfterSet() { final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>("Test"); holder.set(SET_VALUE); @@ -64,6 +74,7 @@ public class AsyncResultHolderTests extends AndroidTestCase { assertEquals(SET_VALUE, resultValue); } + @Test public void testGetBeforeTimeout() { final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>("Test"); setAfterGivenTime(holder, SET_VALUE, TIMEOUT_IN_MILLISECONDS - MARGIN_IN_MILLISECONDS); diff --git a/tests/src/com/android/inputmethod/latin/utils/CapsModeUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/CapsModeUtilsTests.java index 9680d85b3b278c87c2380075ccace1c9325b1e45..4aac7fc41718f734c7eac32bc2aff67e83fa89d2 100644 --- a/tests/src/com/android/inputmethod/latin/utils/CapsModeUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/CapsModeUtilsTests.java @@ -16,18 +16,27 @@ package com.android.inputmethod.latin.utils; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + import android.content.res.Resources; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; import android.text.TextUtils; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.common.LocaleUtils; import com.android.inputmethod.latin.settings.SpacingAndPunctuations; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Locale; @SmallTest -public class CapsModeUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class CapsModeUtilsTests { private static void onePathForCaps(final CharSequence cs, final int expectedResult, final int mask, final SpacingAndPunctuations sp, final boolean hasSpaceBefore) { final int oneTimeResult = expectedResult & mask; @@ -49,6 +58,7 @@ public class CapsModeUtilsTests extends AndroidTestCase { onePathForCaps(cs, expectedResult, s, sp, hasSpaceBefore); } + @Test public void testGetCapsMode() { final int c = TextUtils.CAP_MODE_CHARACTERS; final int w = TextUtils.CAP_MODE_WORDS; @@ -59,7 +69,7 @@ public class CapsModeUtilsTests extends AndroidTestCase { return new SpacingAndPunctuations(res); } }; - final Resources res = getContext().getResources(); + final Resources res = InstrumentationRegistry.getTargetContext().getResources(); SpacingAndPunctuations sp = job.runInLocale(res, Locale.ENGLISH); allPathsForCaps("", c | w | s, sp, false); allPathsForCaps("Word", c, sp, false); diff --git a/tests/src/com/android/inputmethod/latin/utils/CollectionUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/CollectionUtilsTests.java index 0cbb02c4ffc789caaeb8090aef02b65ac9f7c981..da23c9cb8f71441233e4380a2fe9f83ff2013df1 100644 --- a/tests/src/com/android/inputmethod/latin/utils/CollectionUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/CollectionUtilsTests.java @@ -16,11 +16,19 @@ package com.android.inputmethod.latin.utils; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.common.CollectionUtils; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -32,11 +40,13 @@ import java.util.Map; * Tests for {@link CollectionUtils}. */ @SmallTest -public class CollectionUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class CollectionUtilsTests { /** * Tests that {@link CollectionUtils#arrayAsList(Object[],int,int)} fails as expected * with some invalid inputs. */ + @Test public void testArrayAsListFailure() { final String[] array = { "0", "1" }; // Negative start @@ -66,6 +76,7 @@ public class CollectionUtilsTests extends AndroidTestCase { * Tests that {@link CollectionUtils#arrayAsList(Object[],int,int)} gives the expected * results for a few valid inputs. */ + @Test public void testArrayAsList() { final ArrayList<String> empty = new ArrayList<>(); assertEquals(empty, CollectionUtils.arrayAsList(new String[] {}, 0, 0)); @@ -81,6 +92,7 @@ public class CollectionUtilsTests extends AndroidTestCase { * Tests that {@link CollectionUtils#isNullOrEmpty(java.util.Collection)} gives the expected * results for a few cases. */ + @Test public void testIsNullOrEmpty() { assertTrue(CollectionUtils.isNullOrEmpty((List<String>) null)); assertTrue(CollectionUtils.isNullOrEmpty((Map<String, String>) null)); diff --git a/tests/src/com/android/inputmethod/latin/utils/DictionaryInfoUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/DictionaryInfoUtilsTests.java index 812353cc43ded4d18986c7f0857866bccf0ccdbf..2112f985a565468291b7c2dc96be2fdee1a203ec 100644 --- a/tests/src/com/android/inputmethod/latin/utils/DictionaryInfoUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/DictionaryInfoUtilsTests.java @@ -16,17 +16,28 @@ package com.android.inputmethod.latin.utils; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + import android.content.res.Resources; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.common.LocaleUtils; import com.android.inputmethod.latin.settings.SpacingAndPunctuations; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Locale; @SmallTest -public class DictionaryInfoUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class DictionaryInfoUtilsTests { + @Test public void testLooksValidForDictionaryInsertion() { final RunInLocale<SpacingAndPunctuations> job = new RunInLocale<SpacingAndPunctuations>() { @Override @@ -34,7 +45,7 @@ public class DictionaryInfoUtilsTests extends AndroidTestCase { return new SpacingAndPunctuations(res); } }; - final Resources res = getContext().getResources(); + final Resources res = InstrumentationRegistry.getTargetContext().getResources(); final SpacingAndPunctuations sp = job.runInLocale(res, Locale.ENGLISH); assertTrue(DictionaryInfoUtils.looksValidForDictionaryInsertion("aochaueo", sp)); assertFalse(DictionaryInfoUtils.looksValidForDictionaryInsertion("", sp)); @@ -46,6 +57,7 @@ public class DictionaryInfoUtilsTests extends AndroidTestCase { assertFalse(DictionaryInfoUtils.looksValidForDictionaryInsertion("!!!", sp)); } + @Test public void testGetMainDictId() { assertEquals("main:en", DictionaryInfoUtils.getMainDictId(LocaleUtils.constructLocaleFromString("en"))); diff --git a/tests/src/com/android/inputmethod/latin/utils/ExecutorUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/ExecutorUtilsTests.java index 86923059b3aa4e1ef431b68d077a5b1f8902c279..7c9b3e6cac8e3e324d86f18e5eda0286559b7a44 100644 --- a/tests/src/com/android/inputmethod/latin/utils/ExecutorUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/ExecutorUtilsTests.java @@ -16,10 +16,16 @@ package com.android.inputmethod.latin.utils; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.MediumTest; +import static org.junit.Assert.assertEquals; + import android.util.Log; +import androidx.test.filters.MediumTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; @@ -28,12 +34,14 @@ import java.util.concurrent.atomic.AtomicInteger; * Unit tests for {@link ExecutorUtils}. */ @MediumTest -public class ExecutorUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class ExecutorUtilsTests { private static final String TAG = ExecutorUtilsTests.class.getSimpleName(); private static final int NUM_OF_TASKS = 10; private static final int DELAY_FOR_WAITING_TASKS_MILLISECONDS = 500; + @Test public void testExecute() { final ExecutorService executor = ExecutorUtils.getBackgroundExecutor(ExecutorUtils.KEYBOARD); diff --git a/tests/src/com/android/inputmethod/latin/utils/ImportantNoticeUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/ImportantNoticeUtilsTests.java index df018072930a2fd5df828883d125100f6e83e655..9d9a541b79a7568f3c2747d1c43428f2e67a62ca 100644 --- a/tests/src/com/android/inputmethod/latin/utils/ImportantNoticeUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/ImportantNoticeUtilsTests.java @@ -17,32 +17,41 @@ package com.android.inputmethod.latin.utils; import static com.android.inputmethod.latin.utils.ImportantNoticeUtils.KEY_TIMESTAMP_OF_CONTACTS_NOTICE; + +import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; import android.content.Context; import android.content.SharedPreferences; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.MediumTest; -import android.text.TextUtils; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.MediumTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.settings.SettingsValues; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import java.util.concurrent.TimeUnit; - @MediumTest -public class ImportantNoticeUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class ImportantNoticeUtilsTests { private ImportantNoticePreferences mImportantNoticePreferences; @Mock private SettingsValues mMockSettingsValues; + private Context getContext() { + return InstrumentationRegistry.getTargetContext(); + } + private static class ImportantNoticePreferences { private final SharedPreferences mPref; - private Integer mVersion; private Long mLastTime; public ImportantNoticePreferences(final Context context) { @@ -96,21 +105,20 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { } } - @Override - protected void setUp() throws Exception { - super.setUp(); + @Before + public void setUp() throws Exception { MockitoAnnotations.initMocks(this); mImportantNoticePreferences = new ImportantNoticePreferences(getContext()); mImportantNoticePreferences.save(); when(mMockSettingsValues.isPersonalizationEnabled()).thenReturn(true); } - @Override - protected void tearDown() throws Exception { - super.tearDown(); + @After + public void tearDown() throws Exception { mImportantNoticePreferences.restore(); } + @Test public void testPersonalizationSetting() { mImportantNoticePreferences.clear(); diff --git a/tests/src/com/android/inputmethod/latin/utils/JsonUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/JsonUtilsTests.java index 1941120702d9cd63238e5ab8ecd1d55d84a8a6aa..fd5e0a4d7b29ff741985dacc5b83905e3ee1cbd1 100644 --- a/tests/src/com/android/inputmethod/latin/utils/JsonUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/JsonUtilsTests.java @@ -16,14 +16,21 @@ package com.android.inputmethod.latin.utils; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; import java.util.Arrays; import java.util.List; @SmallTest -public class JsonUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class JsonUtilsTests { + @Test public void testJsonUtils() { final Object[] objs = new Object[] { 1, "aaa", "bbb", 3 }; final List<Object> objArray = Arrays.asList(objs); diff --git a/tests/src/com/android/inputmethod/latin/utils/LanguageOnSpacebarUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/LanguageOnSpacebarUtilsTests.java index e4b6a668cd812a88cca1e037fa0a9add16b6d90b..58e26e8d6f198097522e4903a3614361427d1703 100644 --- a/tests/src/com/android/inputmethod/latin/utils/LanguageOnSpacebarUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/LanguageOnSpacebarUtilsTests.java @@ -20,24 +20,33 @@ import static com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils.FORMAT import static com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils.FORMAT_TYPE_LANGUAGE_ONLY; import static com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils.FORMAT_TYPE_NONE; +import static org.junit.Assert.assertEquals; + import android.content.Context; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; import android.view.inputmethod.InputMethodSubtype; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.RichInputMethodSubtype; import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils; import com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.ArrayList; import java.util.Locale; import javax.annotation.Nonnull; @SmallTest -public class LanguageOnSpacebarUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class LanguageOnSpacebarUtilsTests { private RichInputMethodManager mRichImm; RichInputMethodSubtype EN_US_QWERTY; @@ -50,10 +59,9 @@ public class LanguageOnSpacebarUtilsTests extends AndroidTestCase { RichInputMethodSubtype IW_HEBREW; RichInputMethodSubtype ZZ_QWERTY; - @Override - protected void setUp() throws Exception { - super.setUp(); - final Context context = getContext(); + @Before + public void setUp() throws Exception { + final Context context = InstrumentationRegistry.getTargetContext(); RichInputMethodManager.init(context); mRichImm = RichInputMethodManager.getInstance(); @@ -99,6 +107,7 @@ public class LanguageOnSpacebarUtilsTests extends AndroidTestCase { LanguageOnSpacebarUtils.getLanguageOnSpacebarFormatType(subtype)); } + @Test public void testOneSubtypeImplicitlyEnabled() { enableSubtypes(EN_US_QWERTY); assertFormatType(EN_US_QWERTY, true, Locale.US, FORMAT_TYPE_NONE); @@ -113,6 +122,7 @@ public class LanguageOnSpacebarUtilsTests extends AndroidTestCase { assertFormatType(FR_CA_QWERTY, true, Locale.CANADA_FRENCH, FORMAT_TYPE_NONE); } + @Test public void testOneSubtypeExplicitlyEnabled() { enableSubtypes(EN_US_QWERTY); assertFormatType(EN_US_QWERTY, false, Locale.UK, FORMAT_TYPE_LANGUAGE_ONLY); @@ -131,6 +141,7 @@ public class LanguageOnSpacebarUtilsTests extends AndroidTestCase { assertFormatType(FR_CA_QWERTY, false, Locale.FRANCE, FORMAT_TYPE_LANGUAGE_ONLY); } + @Test public void testOneSubtypeImplicitlyEnabledWithNoLanguageSubtype() { final Locale Locale_IW = new Locale("iw"); enableSubtypes(IW_HEBREW, ZZ_QWERTY); @@ -140,6 +151,7 @@ public class LanguageOnSpacebarUtilsTests extends AndroidTestCase { assertFormatType(ZZ_QWERTY, true, Locale_IW, FORMAT_TYPE_FULL_LOCALE); } + @Test public void testTwoSubtypesExplicitlyEnabled() { enableSubtypes(EN_US_QWERTY, FR_AZERTY); assertFormatType(EN_US_QWERTY, false, Locale.US, FORMAT_TYPE_LANGUAGE_ONLY); @@ -157,6 +169,7 @@ public class LanguageOnSpacebarUtilsTests extends AndroidTestCase { } + @Test public void testMultiSubtypeWithSameLanuageAndSameLayout() { // Explicitly enable en_US, en_GB, fr_FR, and no language keyboards. enableSubtypes(EN_US_QWERTY, EN_GB_QWERTY, FR_CA_QWERTY, ZZ_QWERTY); @@ -172,6 +185,7 @@ public class LanguageOnSpacebarUtilsTests extends AndroidTestCase { assertFormatType(ZZ_QWERTY, false, Locale.JAPAN, FORMAT_TYPE_FULL_LOCALE); } + @Test public void testMultiSubtypesWithSameLanguageButHaveDifferentLayout() { enableSubtypes(FR_AZERTY, FR_CA_QWERTY, FR_CH_SWISS, FR_CH_QWERTZ); @@ -191,6 +205,7 @@ public class LanguageOnSpacebarUtilsTests extends AndroidTestCase { assertFormatType(FR_CH_QWERTZ, false, Locale.JAPAN, FORMAT_TYPE_LANGUAGE_ONLY); } + @Test public void testMultiSubtypesWithSameLanguageAndMayHaveSameLayout() { enableSubtypes(FR_AZERTY, FR_CA_QWERTY, FR_CH_SWISS, FR_CH_QWERTY, FR_CH_QWERTZ); diff --git a/tests/src/com/android/inputmethod/latin/utils/RecapitalizeStatusTests.java b/tests/src/com/android/inputmethod/latin/utils/RecapitalizeStatusTests.java index 9b826839fd651ade557e7fffa49a8d219c7bc187..0908f2b542229db9c84222aeb25c8b9f89d9c207 100644 --- a/tests/src/com/android/inputmethod/latin/utils/RecapitalizeStatusTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/RecapitalizeStatusTests.java @@ -16,17 +16,24 @@ package com.android.inputmethod.latin.utils; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; import com.android.inputmethod.latin.common.Constants; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Locale; @SmallTest -public class RecapitalizeStatusTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class RecapitalizeStatusTests { private static final int[] SPACE = { Constants.CODE_SPACE }; + @Test public void testTrim() { final RecapitalizeStatus status = new RecapitalizeStatus(); status.start(30, 40, "abcdefghij", Locale.ENGLISH, SPACE); @@ -54,6 +61,7 @@ public class RecapitalizeStatusTests extends AndroidTestCase { assertEquals(43, status.getNewCursorEnd()); } + @Test public void testRotate() { final RecapitalizeStatus status = new RecapitalizeStatus(); status.start(29, 40, "abcd efghij", Locale.ENGLISH, SPACE); diff --git a/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java index 8e764e40ff9a53ddbb4ea936841a7677b064fb6b..4aab96a559598289ea47336d05cbd7762106382f 100644 --- a/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java @@ -16,13 +16,21 @@ package com.android.inputmethod.latin.utils; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; import java.util.HashMap; @SmallTest -public class ResourceUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class ResourceUtilsTests { + @Test public void testFindConstantForKeyValuePairsSimple() { final HashMap<String,String> anyKeyValue = new HashMap<>(); anyKeyValue.put("anyKey", "anyValue"); @@ -69,6 +77,7 @@ public class ResourceUtilsTests extends AndroidTestCase { assertNull(ResourceUtils.findConstantForKeyValuePairs(emptyKeyValue, array)); } + @Test public void testFindConstantForKeyValuePairsCombined() { final String HARDWARE_KEY = "HARDWARE"; final String MODEL_KEY = "MODEL"; @@ -113,6 +122,7 @@ public class ResourceUtilsTests extends AndroidTestCase { assertEquals("0.2", ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray)); } + @Test public void testFindConstantForKeyValuePairsRegexp() { final String HARDWARE_KEY = "HARDWARE"; final String MODEL_KEY = "MODEL"; diff --git a/tests/src/com/android/inputmethod/latin/utils/SpannableStringUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/SpannableStringUtilsTests.java index 665d81ccdf8e349a1f134d4fb5ac7b69c4d36e14..a5987cf13451c26a567ffeff492e1613b15d2837 100644 --- a/tests/src/com/android/inputmethod/latin/utils/SpannableStringUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/SpannableStringUtilsTests.java @@ -16,17 +16,33 @@ package com.android.inputmethod.latin.utils; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; -import android.text.style.SuggestionSpan; -import android.text.style.URLSpan; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import android.content.Context; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.SpannedString; +import android.text.style.SuggestionSpan; +import android.text.style.URLSpan; + +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; @SmallTest -public class SpannableStringUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class SpannableStringUtilsTests { + + private Context getContext() { + return InstrumentationRegistry.getTargetContext(); + } + + @Test public void testConcatWithSuggestionSpansOnly() { SpannableStringBuilder s = new SpannableStringBuilder("test string\ntest string\n" + "test string\ntest string\ntest string\ntest string\ntest string\ntest string\n" @@ -87,6 +103,7 @@ public class SpannableStringUtilsTests extends AndroidTestCase { assertTrue(false); } + @Test public void testSplitCharSequenceWithSpan() { // text: " a bcd efg hij " // span1: ^^^^^^^ @@ -182,6 +199,7 @@ public class SpannableStringUtilsTests extends AndroidTestCase { assertSpanCount(0, charSequencesFromSpanned[6]); } + @Test public void testSplitCharSequencePreserveTrailingEmptySegmengs() { assertEquals(1, SpannableStringUtils.split("", " ", false /* preserveTrailingEmptySegmengs */).length); diff --git a/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java index 2297cacf8ca2ae292179fd73212c87e59ad19309..6764fd8809401ce6f97f49b54af355c14586333c 100644 --- a/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java +++ b/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java @@ -16,22 +16,35 @@ package com.android.inputmethod.latin.utils; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import android.content.Context; import android.content.res.Resources; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.RichInputMethodSubtype; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.ArrayList; import java.util.Locale; @SmallTest -public class SubtypeLocaleUtilsTests extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class SubtypeLocaleUtilsTests { // All input method subtypes of LatinIME. private final ArrayList<RichInputMethodSubtype> mSubtypesList = new ArrayList<>(); @@ -64,10 +77,9 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { InputMethodSubtype HI_LATN_DVORAK; // Hinglis Dvorak InputMethodSubtype SR_LATN_QWERTY; // Serbian Latin Qwerty - @Override - protected void setUp() throws Exception { - super.setUp(); - final Context context = getContext(); + @Before + public void setUp() throws Exception { + final Context context = InstrumentationRegistry.getTargetContext(); mRes = context.getResources(); RichInputMethodManager.init(context); mRichImm = RichInputMethodManager.getInstance(); @@ -136,13 +148,13 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { } } - @Override - protected void tearDown() throws Exception { + @After + public void tearDown() throws Exception { // Restore additional subtypes. mRichImm.setAdditionalInputMethodSubtypes(mSavedAddtionalSubtypes); - super.tearDown(); } + @Test public void testAllFullDisplayName() { for (final RichInputMethodSubtype subtype : mSubtypesList) { final String subtypeName = SubtypeLocaleUtils @@ -159,6 +171,7 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { } } + @Test public void testKeyboardLayoutSetName() { assertEquals("en_US", "qwerty", SubtypeLocaleUtils.getKeyboardLayoutSetName(EN_US)); assertEquals("en_GB", "qwerty", SubtypeLocaleUtils.getKeyboardLayoutSetName(EN_GB)); @@ -223,6 +236,7 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { // sr_ZZ qwerty T Serbian (QWERTY) exception // zz pc T Alphabet (PC) + @Test public void testPredefinedSubtypesInEnglishSystemLocale() { final RunInLocale<Void> tests = new RunInLocale<Void>() { @Override @@ -264,6 +278,7 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { tests.runInLocale(mRes, Locale.ENGLISH); } + @Test public void testAdditionalSubtypesInEnglishSystemLocale() { final RunInLocale<Void> tests = new RunInLocale<Void>() { @Override @@ -323,6 +338,7 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { // sr_ZZ qwerty T Serbe (QWERTY) exception // zz pc T Alphabet latin (PC) + @Test public void testPredefinedSubtypesInFrenchSystemLocale() { final RunInLocale<Void> tests = new RunInLocale<Void>() { @Override @@ -364,6 +380,7 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { tests.runInLocale(mRes, Locale.FRENCH); } + @Test public void testAdditionalSubtypesInFrenchSystemLocale() { final RunInLocale<Void> tests = new RunInLocale<Void>() { @Override @@ -405,6 +422,7 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { // hi_ZZ qwerty F हिंगà¥à¤²à¤¿à¤¶ // hi_ZZ dvorak T हिंगà¥à¤²à¤¿à¤¶ (Dvorak) + @Test public void testHinglishSubtypesInHindiSystemLocale() { final RunInLocale<Void> tests = new RunInLocale<Void>() { @Override @@ -432,6 +450,7 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { // sr_ZZ serbian_qwertz F СрпÑки (латиница) // sr_ZZ qwerty T СрпÑки (QWERTY) + @Test public void testSerbianLatinSubtypesInSerbianSystemLocale() { final RunInLocale<Void> tests = new RunInLocale<Void>() { @Override @@ -451,6 +470,7 @@ public class SubtypeLocaleUtilsTests extends AndroidTestCase { tests.runInLocale(mRes, new Locale("sr")); } + @Test public void testIsRtlLanguage() { // Known Right-to-Left language subtypes. final InputMethodSubtype ARABIC = mRichImm diff --git a/java-overridable/Android.bp b/tools/EditTextVariations/Android.bp similarity index 78% rename from java-overridable/Android.bp rename to tools/EditTextVariations/Android.bp index 88de2446d353e51d81b48cda0f72132941ee7de8..94b4951a7ca95e4f42bfb94be962c2b98ca3b790 100644 --- a/java-overridable/Android.bp +++ b/tools/EditTextVariations/Android.bp @@ -1,4 +1,4 @@ -// Copyright (C) 2018 The Android Open Source Project +// Copyright (C) 2013 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. @@ -12,7 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -filegroup { - name: "LatinIME_java-overridable", +android_test { + name: "EditTextVariations", + srcs: ["src/**/*.java"], + + sdk_version: "current", + min_sdk_version: "11", } diff --git a/tools/EditTextVariations/AndroidManifest.xml b/tools/EditTextVariations/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..96c244b3289267a502aa9774b92ae10c75900dfe --- /dev/null +++ b/tools/EditTextVariations/AndroidManifest.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> + +<manifest + xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.inputmethod.tools.edittextvariations" + android:versionName="0.67" + android:versionCode="67" +> + <supports-screens android:resizeable="true" /> + <uses-sdk + android:targetSdkVersion="27" + android:minSdkVersion="11" /> + <application + android:icon="@drawable/ic_launcher" + android:label="@string/app_name" + android:allowBackup="false" + > + <activity + android:name=".EditTextVariations" + android:windowSoftInputMode="stateHidden|adjustPan" + android:theme="@style/defaultActivityTheme" + android:label="@string/app_name" + > + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + <receiver + android:name=".NotificationBroadcastReceiver" + android:exported="false" /> + </application> +</manifest> diff --git a/tools/EditTextVariations/assets/Theme.css b/tools/EditTextVariations/assets/Theme.css new file mode 100644 index 0000000000000000000000000000000000000000..b7aa514bf17f553f8f7ab8b0b674a66555db45d4 --- /dev/null +++ b/tools/EditTextVariations/assets/Theme.css @@ -0,0 +1,56 @@ +<!-- +/* +** +** Copyright 2014, 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. +*/ +--> + +body { + background-color: black; +} +div.placeholder { + color: #a0a0a0; + font-size: 18px; + margin: 0px 0px -34px 0px; + padding: 4px 0px 4px 0px +} +div.input { + border: none; + margin: 4px 0px 4px -8px; +} +input { + color: black; + background-color: white; + font-size: 18px; + line-height: 200%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: none; + border-left: none; +} +textarea { + color: black; + background-color: white; + font-size: 18px; + line-height: 150%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: none; + border-left: none; +} diff --git a/tools/EditTextVariations/assets/Theme_Black.css b/tools/EditTextVariations/assets/Theme_Black.css new file mode 100644 index 0000000000000000000000000000000000000000..ce663a18064110301c92867a86d2f14e53cc3405 --- /dev/null +++ b/tools/EditTextVariations/assets/Theme_Black.css @@ -0,0 +1,56 @@ +<!-- +/* +** +** Copyright 2011, 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. +*/ +--> + +body { + background-color: black; +} +div.placeholder { + color: #a0a0a0; + font-size: 18px; + margin: 0px 0px -34px 0px; + padding: 4px 0px 4px 0px +} +div.input { + border: none; + margin: 4px 0px 4px -8px; +} +input { + color: black; + background-color: white; + font-size: 18px; + line-height: 200%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: none; + border-left: none; +} +textarea { + color: black; + background-color: white; + font-size: 18px; + line-height: 150%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: none; + border-left: none; +} diff --git a/tools/EditTextVariations/assets/Theme_Holo.css b/tools/EditTextVariations/assets/Theme_Holo.css new file mode 100644 index 0000000000000000000000000000000000000000..a3afe2e00f6978f0abbd703a26f38df4613d8187 --- /dev/null +++ b/tools/EditTextVariations/assets/Theme_Holo.css @@ -0,0 +1,56 @@ +<!-- +/* +** +** Copyright 2011, 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. +*/ +--> + +body { + background-color: #16191C; +} +div.placeholder { + color: #808080; + font-size: 18px; + margin: 0px 0px -34px 0px; + padding: 4px 0px 4px 0px +} +div.input { + border: none; + margin: 4px 0px 4px -8px; +} +input { + color: white; + background-color: rgba(0, 0, 0, 0.0); + font-size: 18px; + line-height: 180%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: 1px solid #5E6063; + border-left: none; +} +textarea { + color: white; + background-color: rgba(0, 0, 0, 0.0); + font-size: 18px; + line-height: 150%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: 1px solid #5E6063; + border-left: none; +} diff --git a/tools/EditTextVariations/assets/Theme_Holo_Light.css b/tools/EditTextVariations/assets/Theme_Holo_Light.css new file mode 100644 index 0000000000000000000000000000000000000000..fb3a83c699ea7504107a58de6e68dd33db10e6b0 --- /dev/null +++ b/tools/EditTextVariations/assets/Theme_Holo_Light.css @@ -0,0 +1,56 @@ +<!-- +/* +** +** Copyright 2011, 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. +*/ +--> + +body { + background-color: #F2F2F2; +} +div.placeholder { + color: #808080; + font-size: 18px; + margin: 0px 0px -34px 0px; + padding: 4px 0px 4px 0px +} +div.input { + border: none; + margin: 4px 0px 4px -8px; +} +input { + color: black; + background-color: rgba(0, 0, 0, 0.0); + font-size: 18px; + line-height: 150%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: 1px solid #808080; + border-left: none; +} +textarea { + color: black; + background-color: rgba(0, 0, 0, 0.0); + font-size: 18px; + line-height: 150%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: 1px solid #808080; + border-left: none; +} diff --git a/tools/EditTextVariations/assets/Theme_Light.css b/tools/EditTextVariations/assets/Theme_Light.css new file mode 100644 index 0000000000000000000000000000000000000000..4cce0a002b04e8301700653476985eac2dc207c6 --- /dev/null +++ b/tools/EditTextVariations/assets/Theme_Light.css @@ -0,0 +1,56 @@ +<!-- +/* +** +** Copyright 2011, 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. +*/ +--> + +body { + background-color: #f3f3f3; +} +div.placeholder { + color: #a0a0a0; + font-size: 18px; + margin: 0px 0px -34px 0px; + padding: 4px 0px 4px 0px +} +div.input { + border: none; + margin: 4px 0px 4px -8px; +} +input { + color: black; + background-color: rgba(0, 0, 0, 0.0); + font-size: 18px; + line-height: 200%; + vertical-align: center; + padding-left: 8px; + border-top: 1px solid #808080; + border-right: 1px solid rgba(0, 0, 0, 0.5); + border-bottom: 1px solid #808080; + border-left: 1px solid rgba(0, 0, 0, 0.5); +} +textarea { + color: black; + background-color: rgba(0, 0, 0, 0.0); + font-size: 18px; + line-height: 150%; + vertical-align: center; + padding-left: 8px; + border-top: 1px solid #808080; + border-right: 1px solid rgba(0, 0, 0, 0.5); + border-bottom: 1px solid #808080; + border-left: 1px solid rgba(0, 0, 0, 0.5); +} diff --git a/tools/EditTextVariations/assets/Theme_Material.css b/tools/EditTextVariations/assets/Theme_Material.css new file mode 100644 index 0000000000000000000000000000000000000000..3581a8824c118e1341d0879b908b4c87bdda6e64 --- /dev/null +++ b/tools/EditTextVariations/assets/Theme_Material.css @@ -0,0 +1,56 @@ +<!-- +/* +** +** Copyright 2014, 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. +*/ +--> + +body { + background-color: #212121; +} +div.placeholder { + color: #909090; + font-size: 18px; + margin: 0px 0px -34px 0px; + padding: 4px 0px 4px 0px +} +div.input { + border: none; + margin: 4px 0px 4px -8px; +} +input { + color: white; + background-color: rgba(0, 0, 0, 0.0); + font-size: 18px; + line-height: 180%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: 1px solid #757575; + border-left: none; +} +textarea { + color: white; + background-color: rgba(0, 0, 0, 0.0); + font-size: 18px; + line-height: 150%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: 1px solid #757575; + border-left: none; +} diff --git a/tools/EditTextVariations/assets/Theme_Material_Light.css b/tools/EditTextVariations/assets/Theme_Material_Light.css new file mode 100644 index 0000000000000000000000000000000000000000..1a78a2d4aeaa37ac3a52a1495ba836a245400822 --- /dev/null +++ b/tools/EditTextVariations/assets/Theme_Material_Light.css @@ -0,0 +1,56 @@ +<!-- +/* +** +** Copyright 2014, 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. +*/ +--> + +body { + background-color: #FAFAFA; +} +div.placeholder { + color: #7D7D7D; + font-size: 18px; + margin: 0px 0px -34px 0px; + padding: 4px 0px 4px 0px +} +div.input { + border: none; + margin: 4px 0px 4px -8px; +} +input { + color: white; + background-color: rgba(0, 0, 0, 0.0); + font-size: 18px; + line-height: 180%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: 1px solid #737373; + border-left: none; +} +textarea { + color: white; + background-color: rgba(0, 0, 0, 0.0); + font-size: 18px; + line-height: 150%; + vertical-align: center; + padding-left: 8px; + border-top: none; + border-right: none; + border-bottom: 1px solid #737373; + border-left: none; +} diff --git a/tools/EditTextVariations/assets/webview.html b/tools/EditTextVariations/assets/webview.html new file mode 100644 index 0000000000000000000000000000000000000000..daf0fdb731da89ad69d45fba17c0d4ada3380271 --- /dev/null +++ b/tools/EditTextVariations/assets/webview.html @@ -0,0 +1,96 @@ +<!-- +/* +** +** Copyright 2011, 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. +*/ +--> + +<html> + <head> + <script type="text/javascript"> + (function(d, name) { + var css = document.createElement('link'); + css.rel = 'stylesheet'; + css.href = name + ".css"; + d.head.appendChild(css); + })(document, theme.name()); + </script> + </head> + <body> + <div + class="input" + style="margin-top:-8px" + > + <input + type="text" + size="80%" + name="webtext" + placeholder="<input type="text"/>" /> + </div> + <div class="input"> + <input + type="email" + size="80%" + name="webemail" + placeholder="<input type="email"/>" /> + </div> + <div class="input"> + <input + type="password" + size="80%" + name="webpassword" + placeholder="<input type="password"/>" /> + </div> + <div class="input"> + <input + type="url" + size="80%" + name="weburl" + placeholder="<input type="url"/>" /> + </div> + <div class="input"> + <input + type="number" + size="80%" + name="webnumber" + placeholder="<input type="number"/>" /> + </div> + <div class="input"> + <input + type="tel" + size="80%" + name="webtel" + placeholder="<input type="tel"/>" /> + </div> + <div class="input"> + <input + type="search" + size="80%" + name="websearch" + placeholder="<input type="search"/>" /> + </div> + <div + class="input" + style="margin-bottom:-4px" + > + <textarea + rows="2" + cols="80%" + name="webtextarea" + placeholder="<textarea></textarea>" + ></textarea> + </div> + </body> +</html> diff --git a/tools/EditTextVariations/res/drawable-hdpi/ic_launcher.png b/tools/EditTextVariations/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e0923a605668a9d7c285884bb9351c07f077c741 Binary files /dev/null and b/tools/EditTextVariations/res/drawable-hdpi/ic_launcher.png differ diff --git a/tools/EditTextVariations/res/drawable-mdpi/ic_launcher.png b/tools/EditTextVariations/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc0914816a72d23fc9e46927041f3513a3027fe Binary files /dev/null and b/tools/EditTextVariations/res/drawable-mdpi/ic_launcher.png differ diff --git a/tools/EditTextVariations/res/drawable-xhdpi/ic_launcher.png b/tools/EditTextVariations/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d60ac3dc0e5b4fdb4725301dcc9d657ff77ac9a6 Binary files /dev/null and b/tools/EditTextVariations/res/drawable-xhdpi/ic_launcher.png differ diff --git a/tools/EditTextVariations/res/drawable-xxhdpi/ic_launcher.png b/tools/EditTextVariations/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f3069d74f44ecbf17b1e5b4632f85fd0f8829a1b Binary files /dev/null and b/tools/EditTextVariations/res/drawable-xxhdpi/ic_launcher.png differ diff --git a/tools/EditTextVariations/res/layout/main.xml b/tools/EditTextVariations/res/layout/main.xml new file mode 100644 index 0000000000000000000000000000000000000000..99abfb07ea0039257583ee081aa0eb3f10173ce4 --- /dev/null +++ b/tools/EditTextVariations/res/layout/main.xml @@ -0,0 +1,298 @@ +<?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. +*/ +--> + +<ScrollView + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" + android:layout_height="fill_parent" +> + <LinearLayout + android:id="@+id/edit_text_list" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent" + > + <EditText + android:id="@+id/text_multi_lines_none" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textMultiLine|textAutoCorrect" + android:imeOptions="actionUnspecified" /> + <EditText + android:id="@+id/text_multi_lines_send" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textMultiLine|textAutoCorrect" + android:imeOptions="actionSend" /> + <view + class="com.android.inputmethod.tools.edittextvariations.MultiLineShortMessageEditText" + android:id="@+id/text_short_message_send_multi_lines" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textShortMessage|textMultiLine|textAutoCorrect|textCapSentences" + android:imeOptions="actionSend" /> + <view + class="com.android.inputmethod.tools.edittextvariations.MultiLineShortMessageEditText" + android:id="@+id/text_multi_lines_search" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textMultiLine|textAutoCorrect|textCapSentences" + android:imeOptions="actionSearch" /> + <EditText + android:id="@+id/text_short_message_send" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textShortMessage|textAutoCorrect|textCapSentences" + android:imeOptions="actionSend" /> + <EditText + android:id="@+id/text_autocap_none" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textAutoCorrect|textCapSentences" + android:imeOptions="actionNone" /> + <EditText + android:id="@+id/text_autocap_send" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textAutoCorrect|textCapSentences" + android:imeOptions="actionSend" /> + <EditText + android:id="@+id/text_uri_go" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textUri" + android:imeOptions="actionGo" /> + <EditText + android:id="@+id/text_email_address_done" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textEmailAddress" + android:imeOptions="actionDone" /> + <EditText + android:id="@+id/text_auto_correct_search" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textAutoCorrect" + android:imeOptions="actionSearch" /> + <EditText + android:id="@+id/text_auto_correct_next" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textAutoCorrect" + android:imeOptions="actionNext" /> + <EditText + android:id="@+id/text_auto_correct_previous" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textAutoCorrect" /> + <EditText + android:id="@+id/text_auto_correct_custom" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textAutoCorrect" + android:imeActionLabel="@string/custom_action_label" + android:imeActionId="100" /> + <EditText + android:id="@+id/phone" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="phone" /> + <EditText + android:id="@+id/phone_no_action" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="phone" + android:imeOptions="actionNone" /> + <EditText + android:id="@+id/number_send" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="number" + android:imeOptions="actionSend" /> + <EditText + android:id="@+id/number_no_action" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="number" + android:imeOptions="actionNone" /> + <EditText + android:id="@+id/text_password_next" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textPassword" + android:imeOptions="actionNext" /> + <EditText + android:id="@+id/text_visible_password_done" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textVisiblePassword" + android:imeOptions="actionDone" /> + <EditText + android:id="@+id/number_password_send" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="numberPassword" + android:imeOptions="actionDone" /> + <EditText + android:id="@+id/text_no_suggestions" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textNoSuggestions" + android:imeOptions="actionGo" /> + <EditText + android:id="@+id/text_no_auto_correction" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textShortMessage" + android:imeOptions="actionDone" /> + <WebView + android:id="@+id/web_view" + android:layout_width="fill_parent" + android:layout_height="380sp" + android:focusable="true" /> + <EditText + android:id="@+id/text_cap_characters_with_auto_correction" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textCapCharacters|textAutoCorrect" /> + <EditText + android:id="@+id/text_cap_words_with_auto_correction" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textCapWords|textAutoCorrect" /> + <EditText + android:id="@+id/text_cap_sentences_with_auto_correction" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textCapSentences|textAutoCorrect" /> + <EditText + android:id="@+id/text_cap_characters" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textCapCharacters" /> + <EditText + android:id="@+id/text_cap_words" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textCapWords" /> + <EditText + android:id="@+id/text_cap_sentences" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textCapSentences" /> + <EditText + android:id="@+id/text_email_subject" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textEmailSubject" /> + <EditText + android:id="@+id/text_personal_name" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textPersonName" /> + <EditText + android:id="@+id/text_postal_address" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textPostalAddress" /> + <EditText + android:id="@+id/text_phonetic" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textPhonetic" /> + <EditText + android:id="@+id/number_signed" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="numberSigned" /> + <EditText + android:id="@+id/number_decimal" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="numberDecimal" /> + <EditText + android:id="@+id/number_signed_decimal" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="numberSigned|numberDecimal" /> + <EditText + android:id="@+id/date_time" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="datetime" /> + <EditText + android:id="@+id/date" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="date" /> + <EditText + android:id="@+id/time" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="time" /> + <EditText + android:id="@+id/text_no_extract_ui" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:imeOptions="flagNoExtractUi" /> + <EditText + android:id="@+id/text_no_fullscreen" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="textCapSentences" + android:imeOptions="flagNoFullscreen" /> + <EditText + android:id="@+id/text_nm" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:privateImeOptions="nm" /> + <EditText + android:id="@+id/text_force_ascii_flag" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="text" /> + <AutoCompleteTextView + android:id="@+id/text_app_completion" + android:layout_width="fill_parent" + android:layout_height="wrap_content" /> + <AutoCompleteTextView + android:id="@+id/text_app_completion_no_fullscreen" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:imeOptions="flagNoFullscreen" /> + <AutoCompleteTextView + android:id="@+id/text_app_compeletion_no_extract_ui" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:imeOptions="flagNoExtractUi" /> + <EditText + android:id="@+id/text_restarting" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="text" /> + <EditText + android:id="@+id/text_null" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="none" /> + </LinearLayout> +</ScrollView> diff --git a/tools/EditTextVariations/res/values-v11/donottranslate.xml b/tools/EditTextVariations/res/values-v11/donottranslate.xml new file mode 100644 index 0000000000000000000000000000000000000000..5b7eb23fca7e83c5171811594041edbb7f31fecf --- /dev/null +++ b/tools/EditTextVariations/res/values-v11/donottranslate.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, 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. +*/ +--> + +<resources> + <string name="default_theme">Theme_Holo_Light</string> +</resources> diff --git a/tools/EditTextVariations/res/values-v14/themes.xml b/tools/EditTextVariations/res/values-v14/themes.xml new file mode 100644 index 0000000000000000000000000000000000000000..22c6016ff46a4ef0ce684f81b222be3348fa57ff --- /dev/null +++ b/tools/EditTextVariations/res/values-v14/themes.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2017, 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. +*/ +--> + +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + <style name="defaultActivityTheme" parent="@android:style/Theme.DeviceDefault.Light" /> +</resources> diff --git a/tools/EditTextVariations/res/values-v27/themes.xml b/tools/EditTextVariations/res/values-v27/themes.xml new file mode 100644 index 0000000000000000000000000000000000000000..8fd3aae4f40f9320ccabaef6f47d04aae0a57c7e --- /dev/null +++ b/tools/EditTextVariations/res/values-v27/themes.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2017, 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. +*/ +--> + +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + <style name="defaultActivityTheme" parent="@android:style/Theme.DeviceDefault.Light"> + <item name="android:navigationBarColor">@android:color/white</item> + <item name="android:navigationBarDividerColor">#1f000000</item> + <item name="android:windowLightNavigationBar">true</item> + </style> +</resources> diff --git a/tools/EditTextVariations/res/values/countries.xml b/tools/EditTextVariations/res/values/countries.xml new file mode 100644 index 0000000000000000000000000000000000000000..6d7e5c13752b688d8968d3a0572e2948a312289b --- /dev/null +++ b/tools/EditTextVariations/res/values/countries.xml @@ -0,0 +1,263 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, 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. +*/ +--> + +<resources> + <!-- The list of country names. [CHAR LIMIT=100] --> + <string-array name="countries_array"> + <item>Afghanistan</item> + <item>Albania</item> + <item>Algeria</item> + <item>American Samoa</item> + <item>Andorra</item> + <item>Angola</item> + <item>Anguilla</item> + <item>Antarctica</item> + <item>Antigua and Barbuda</item> + <item>Argentina</item> + <item>Armenia</item> + <item>Aruba</item> + <item>Australia</item> + <item>Austria</item> + <item>Azerbaijan</item> + <item>Bahrain</item> + <item>Bangladesh</item> + <item>Barbados</item> + <item>Belarus</item> + <item>Belgium</item> + <item>Belize</item> + <item>Benin</item> + <item>Bermuda</item> + <item>Bhutan</item> + <item>Bolivia</item> + <item>Bosnia and Herzegovina</item> + <item>Botswana</item> + <item>Bouvet Island</item> + <item>Brazil</item> + <item>British Indian Ocean Territory</item> + <item>British Virgin Islands</item> + <item>Brunei</item> + <item>Bulgaria</item> + <item>Burkina Faso</item> + <item>Burundi</item> + <item>"Cote d'Ivoire"</item> + <item>Cambodia</item> + <item>Cameroon</item> + <item>Canada</item> + <item>Cape Verde</item> + <item>Cayman Islands</item> + <item>Central African Republic</item> + <item>Chad</item> + <item>Chile</item> + <item>China</item> + <item>Christmas Island</item> + <item>Cocos (Keeling) Islands</item> + <item>Colombia</item> + <item>Comoros</item> + <item>Congo</item> + <item>Cook Islands</item> + <item>Costa Rica</item> + <item>Croatia</item> + <item>Cuba</item> + <item>Cyprus</item> + <item>Czech Republic</item> + <item>Democratic Republic of the Congo</item> + <item>Denmark</item> + <item>Djibouti</item> + <item>Dominica</item> + <item>Dominican Republic</item> + <item>East Timor</item> + <item>Ecuador</item> + <item>Egypt</item> + <item>El Salvador</item> + <item>Equatorial Guinea</item> + <item>Eritrea</item> + <item>Estonia</item> + <item>Ethiopia</item> + <item>Faeroe Islands</item> + <item>Falkland Islands</item> + <item>Fiji</item> + <item>Finland</item> + <item>Republic of Macedonia</item> + <item>France</item> + <item>French Guiana</item> + <item>French Polynesia</item> + <item>French Southern Territories</item> + <item>Gabon</item> + <item>Georgia</item> + <item>Germany</item> + <item>Ghana</item> + <item>Gibraltar</item> + <item>Greece</item> + <item>Greenland</item> + <item>Grenada</item> + <item>Guadeloupe</item> + <item>Guam</item> + <item>Guatemala</item> + <item>Guinea</item> + <item>Guinea-Bissau</item> + <item>Guyana</item> + <item>Haiti</item> + <item>Heard Island and McDonald Islands</item> + <item>Honduras</item> + <item>Hong Kong</item> + <item>Hungary</item> + <item>Iceland</item> + <item>India</item> + <item>Indonesia</item> + <item>Iran</item> + <item>Iraq</item> + <item>Ireland</item> + <item>Israel</item> + <item>Italy</item> + <item>Jamaica</item> + <item>Japan</item> + <item>Jordan</item> + <item>Kazakhstan</item> + <item>Kenya</item> + <item>Kiribati</item> + <item>Kuwait</item> + <item>Kyrgyzstan</item> + <item>Laos</item> + <item>Latvia</item> + <item>Lebanon</item> + <item>Lesotho</item> + <item>Liberia</item> + <item>Libya</item> + <item>Liechtenstein</item> + <item>Lithuania</item> + <item>Luxembourg</item> + <item>Macau</item> + <item>Madagascar</item> + <item>Malawi</item> + <item>Malaysia</item> + <item>Maldives</item> + <item>Mali</item> + <item>Malta</item> + <item>Marshall Islands</item> + <item>Martinique</item> + <item>Mauritania</item> + <item>Mauritius</item> + <item>Mayotte</item> + <item>Mexico</item> + <item>Micronesia</item> + <item>Moldova</item> + <item>Monaco</item> + <item>Mongolia</item> + <item>Montserrat</item> + <item>Morocco</item> + <item>Mozambique</item> + <item>Myanmar</item> + <item>Namibia</item> + <item>Nauru</item> + <item>Nepal</item> + <item>Netherlands</item> + <item>Netherlands Antilles</item> + <item>New Caledonia</item> + <item>New Zealand</item> + <item>Nicaragua</item> + <item>Niger</item> + <item>Nigeria</item> + <item>Niue</item> + <item>Norfolk Island</item> + <item>North Korea</item> + <item>Northern Marianas</item> + <item>Norway</item> + <item>Oman</item> + <item>Pakistan</item> + <item>Palau</item> + <item>Panama</item> + <item>Papua New Guinea</item> + <item>Paraguay</item> + <item>Peru</item> + <item>Philippines</item> + <item>Pitcairn Islands</item> + <item>Poland</item> + <item>Portugal</item> + <item>Puerto Rico</item> + <item>Qatar</item> + <item>Reunion</item> + <item>Romania</item> + <item>Russia</item> + <item>Rwanda</item> + <item>Sao Tome and Principe</item> + <item>Saint Helena</item> + <item>Saint Kitts and Nevis</item> + <item>Saint Lucia</item> + <item>Saint Pierre and Miquelon</item> + <item>Saint Vincent and the Grenadines</item> + <item>Samoa</item> + <item>San Marino</item> + <item>Saudi Arabia</item> + <item>Senegal</item> + <item>Seychelles</item> + <item>Sierra Leone</item> + <item>Singapore</item> + <item>Slovakia</item> + <item>Slovenia</item> + <item>Solomon Islands</item> + <item>Somalia</item> + <item>South Africa</item> + <item>South Georgia and the South Sandwich Islands</item> + <item>South Korea</item> + <item>Spain</item> + <item>Sri Lanka</item> + <item>Sudan</item> + <item>Suriname</item> + <item>Svalbard and Jan Mayen</item> + <item>Swaziland</item> + <item>Sweden</item> + <item>Switzerland</item> + <item>Syria</item> + <item>Taiwan</item> + <item>Tajikistan</item> + <item>Tanzania</item> + <item>Thailand</item> + <item>The Bahamas</item> + <item>The Gambia</item> + <item>Togo</item> + <item>Tokelau</item> + <item>Tonga</item> + <item>Trinidad and Tobago</item> + <item>Tunisia</item> + <item>Turkey</item> + <item>Turkmenistan</item> + <item>Turks and Caicos Islands</item> + <item>Tuvalu</item> + <item>Virgin Islands</item> + <item>Uganda</item> + <item>Ukraine</item> + <item>United Arab Emirates</item> + <item>United Kingdom</item> + <item>United States</item> + <item>United States Minor Outlying Islands</item> + <item>Uruguay</item> + <item>Uzbekistan</item> + <item>Vanuatu</item> + <item>Vatican City</item> + <item>Venezuela</item> + <item>Vietnam</item> + <item>Wallis and Futuna</item> + <item>Western Sahara</item> + <item>Yemen</item> + <item>Zambia</item> + <item>Zimbabwe</item> + <item>Yemen</item> + </string-array> +</resources> diff --git a/tools/EditTextVariations/res/values/strings.xml b/tools/EditTextVariations/res/values/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..cb896e8b66ef09ba6cd4ca7590e805657a1e5c98 --- /dev/null +++ b/tools/EditTextVariations/res/values/strings.xml @@ -0,0 +1,40 @@ +<?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. +*/ +--> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- This test application name. --> + <string name="app_name" translatable="false">EditTextVariations</string> + <!-- The menu title to change color theme of this application. [CHAR LIMIT=20] --> + <string name="menu_change_theme">Change Theme</string> + <!-- The menu title to display the version name of this application. [CHAR LIMIT=20] --> + <string name="menu_version">Version <xliff:g id="VERSION_NAME" example="0.56">%s</xliff:g></string> + <!-- The menu title to turn on the text field focus navigation. [CHAR LIMIT=20] --> + <string name="menu_navigate_on" translatable="false">Navigate On</string> + <!-- The menu title to turn off the text field focus navigation. [CHAR LIMIT=20] --> + <string name="menu_navigate_off" translatable="false">Navigate Off</string> + <!-- The menu title to show software keyboard when the application is launched. [CHAR LIMIT=20] --> + <string name="menu_softinput_visible" translatable="false">Keyboard Visible</string> + <!-- The menu title to stay hidden software keyboard when the application is launched. [CHAR LIMIT=20] --> + <string name="menu_softinput_hidden" translatable="false">Keyboard Hidden</string> + <!-- The menu title to send a notification to test direct reply. [CHAR LIMIT=20] --> + <string name="menu_direct_reply">Direct Reply</string> + <!-- The example of custom action key label. Must be short to fit on key. 5 chars or less is preferable. [CHAR LIMIT=7] --> + <string name="custom_action_label">Custom</string> +</resources> diff --git a/tools/EditTextVariations/res/values/themes.xml b/tools/EditTextVariations/res/values/themes.xml new file mode 100644 index 0000000000000000000000000000000000000000..036a7111b2de560fb545d4e6ca379f4a85bb6112 --- /dev/null +++ b/tools/EditTextVariations/res/values/themes.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2017, 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. +*/ +--> + +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + <style name="defaultActivityTheme" parent="@android:style/Theme.Holo" /> +</resources> diff --git a/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/EchoingTextWatcher.java b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/EchoingTextWatcher.java new file mode 100644 index 0000000000000000000000000000000000000000..1c652c2a2da88d28c79b5533aa3dffa1b2ecc3ec --- /dev/null +++ b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/EchoingTextWatcher.java @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.tools.edittextvariations; + +import android.annotation.SuppressLint; +import android.os.Handler; +import android.os.Message; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.widget.EditText; + +import java.util.Locale; + +final class EchoingTextWatcher implements TextWatcher { + private static final int SET_TEXT_DELAY = 500; + + final EditText mEditText; + CharSequence mExpected; + + @SuppressLint("HandlerLeak") + private Handler mHandler = new Handler() { + @Override + public void handleMessage(final Message msg) { + final String toBeappended = (String) msg.obj; + final CharSequence current = mEditText.getText(); + final CharSequence newText = TextUtils.concat(current, toBeappended); + mExpected = newText; + mEditText.setText(newText); + mEditText.setSelection(newText.length()); + } + }; + + @SuppressWarnings("unused") + public static void attachTo(final EditText editText) { + final EchoingTextWatcher watcher = new EchoingTextWatcher(editText); + } + + public EchoingTextWatcher(final EditText editText) { + mEditText = editText; + editText.addTextChangedListener(this); + } + + @Override + public void afterTextChanged(final Editable ss) { + } + + @Override + public void beforeTextChanged(final CharSequence s, final int start, final int count, + final int after) { + } + + @Override + public void onTextChanged(final CharSequence s, final int start, final int before, + final int count) { + if (count == 0 || before > 0 || TextUtils.equals(s, mExpected)) { + return; + } + final int len = s.length(); + if (len > 0) { + final String last = s.subSequence(len - 1, len).toString(); + final char lastChar = last.charAt(0); + if (Character.isUpperCase(lastChar)) { + final String lowerCase = last.toLowerCase(Locale.getDefault()); + mHandler.sendMessageDelayed(mHandler.obtainMessage(0, lowerCase), SET_TEXT_DELAY); + } else if (Character.isLowerCase(lastChar)) { + final String upperCase = last.toUpperCase(Locale.getDefault()); + mHandler.sendMessageDelayed(mHandler.obtainMessage(0, upperCase), SET_TEXT_DELAY); + } + } + } +} diff --git a/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/EditTextVariations.java b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/EditTextVariations.java new file mode 100644 index 0000000000000000000000000000000000000000..6eb85a528cf62029886794f671df01a85092746f --- /dev/null +++ b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/EditTextVariations.java @@ -0,0 +1,479 @@ +/* + * 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. + */ + +package com.android.inputmethod.tools.edittextvariations; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Build; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.text.InputType; +import android.text.TextUtils; +import android.util.Log; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.view.inputmethod.EditorInfo; +import android.webkit.JavascriptInterface; +import android.webkit.WebView; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; +import android.widget.EditText; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.List; + +public final class EditTextVariations extends Activity implements TextView.OnEditorActionListener, + DialogInterface.OnClickListener { + private static final String TAG = EditTextVariations.class.getSimpleName(); + private static final boolean DEBUG_INPUT_TEXT = false; + + private static final int MENU_CHANGE_THEME = 0; + private static final int MENU_VERSION = 1; + private static final int MENU_NAVIGATE_ON = 2; + private static final int MENU_NAVIGATE_OFF = 3; + private static final int MENU_SOFTINPUT_VISIBLE = 4; + private static final int MENU_SOFTINPUT_HIDDEN = 5; + private static final int MENU_DIRECT_REPLY = 6; + private static final String PREF_THEME = "theme"; + private static final String PREF_NAVIGATE = "navigate"; + private static final String PREF_SOFTINPUT = "softinput"; + + private SharedPreferences prefs; + private View[] fields; + + private static final FinalClassField<Integer> ApplicationInfo_FLAG_SUPPORTS_RTL = + FinalClassField.newInstance(ApplicationInfo.class, "FLAG_SUPPORTS_RTL", 1 << 22); + + // This flag should be defined IceCreamSandwich and later. + // Note that Froyo and Gingerbread have hidden IME_FLAG_NO_FULLSCREEN as + // value 0x80000000. + private static final FinalClassField<Integer> EditorInfo_IME_FLAG_FORCE_ASCII = + FinalClassField.newInstance(EditorInfo.class, "IME_FLAG_FORCE_ASCII", + Build.VERSION.SDK_INT >= /* ICE_CREAM_SANDWICH */14 ? 0x80000000 : 0); + + private ArrayAdapter<String> mAutoCompleteAdapter; + + /** Called when the activity is first created. */ + @SuppressLint("SetJavaScriptEnabled") + @Override + public void onCreate(final Bundle savedInstanceState) { + getApplicationInfo().flags |= ApplicationInfo_FLAG_SUPPORTS_RTL.value; + prefs = PreferenceManager.getDefaultSharedPreferences(this); + loadTheme(); + loadSoftInputMode(); + + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + final String[] countries = getResources().getStringArray(R.array.countries_array); + mAutoCompleteAdapter = new ArrayAdapter<>( + this, android.R.layout.simple_dropdown_item_1line, countries); + + final boolean navigateMode = getNavigateMode(); + final ViewGroup vg = (ViewGroup) findViewById(R.id.edit_text_list); + final int n = vg.getChildCount(); + fields = new View[n]; + for (int i = 0; i < n; i++) { + final View v = vg.getChildAt(i); + if (v instanceof EditText) { + final int id = v.getId(); + final EditText e = (EditText) v; + int inputType = e.getInputType(); + int imeOptions = e.getImeOptions(); + if (id == R.id.text_auto_correct_previous) { + imeOptions &= ~EditorInfo.IME_MASK_ACTION; + imeOptions |= EditorInfo.IME_ACTION_PREVIOUS; + } + if (id == R.id.text_force_ascii_flag) { + imeOptions |= EditorInfo_IME_FLAG_FORCE_ASCII.value; + } + if (id == R.id.text_null) { + inputType = InputType.TYPE_NULL; + } + if (id == R.id.text_restarting) { + EchoingTextWatcher.attachTo(e); + } + if (navigateMode && i > 0) { + imeOptions |= EditorInfo.IME_FLAG_NAVIGATE_PREVIOUS; + } + if (navigateMode && i < n - 1) { + imeOptions |= EditorInfo.IME_FLAG_NAVIGATE_NEXT; + } + + e.setInputType(inputType); + e.setImeOptions(imeOptions); + setupHintText(e); + if (navigateMode) { + e.setOnEditorActionListener(this); + } + } + if (v instanceof AutoCompleteTextView) { + final AutoCompleteTextView e = (AutoCompleteTextView) v; + e.setAdapter(mAutoCompleteAdapter); + e.setThreshold(1); + } + if (v instanceof WebView) { + final WebView wv = (WebView) v; + wv.getSettings().setJavaScriptEnabled(true); + wv.addJavascriptInterface(new Object() { + @JavascriptInterface + public String name() { + return getThemeName(); + } + }, "theme"); + wv.loadUrl("file:///android_asset/webview.html"); + } + fields[i] = v; + } + } + + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + super.onCreateOptionsMenu(menu); + + menu.add(Menu.NONE, MENU_NAVIGATE_ON, 0, getString(R.string.menu_navigate_on)); + menu.add(Menu.NONE, MENU_NAVIGATE_OFF, 1, getString(R.string.menu_navigate_off)); + menu.add(Menu.NONE, MENU_SOFTINPUT_VISIBLE, 2, getString(R.string.menu_softinput_visible)); + menu.add(Menu.NONE, MENU_SOFTINPUT_HIDDEN, 3, getString(R.string.menu_softinput_hidden)); + menu.add(Menu.NONE, MENU_CHANGE_THEME, 4, R.string.menu_change_theme); + if (NotificationUtils.DIRECT_REPLY_SUPPORTED) { + menu.add(Menu.NONE, MENU_DIRECT_REPLY, 5, R.string.menu_direct_reply); + } + try { + final PackageInfo pinfo = getPackageManager().getPackageInfo(getPackageName(), 0); + menu.add(Menu.NONE, MENU_VERSION, 6, + getString(R.string.menu_version, pinfo.versionName)) + .setEnabled(false); + } catch (NameNotFoundException e) { + return false; + } + + return true; + } + + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + final int itemId = item.getItemId(); + if (itemId == MENU_CHANGE_THEME) { + final List<CharSequence> items = new ArrayList<>(); + for (final ThemeItem theme : ThemeItem.THEME_LIST) { + items.add(theme.name); + } + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.menu_change_theme); + builder.setCancelable(true); + builder.setNegativeButton(android.R.string.cancel, null); + builder.setItems(items.toArray(new CharSequence[items.size()]), this); + builder.show(); + } else if (itemId == MENU_NAVIGATE_ON || itemId == MENU_NAVIGATE_OFF) { + saveNavigateMode(itemId == MENU_NAVIGATE_ON); + restartActivity(); + } else if (itemId == MENU_SOFTINPUT_VISIBLE || itemId == MENU_SOFTINPUT_HIDDEN) { + saveSoftInputMode(itemId == MENU_SOFTINPUT_VISIBLE); + restartActivity(); + } else if (itemId == MENU_DIRECT_REPLY) { + NotificationUtils.sendDirectReplyNotification(this); + } + return true; + } + + @Override + public void onClick(final DialogInterface dialog, final int which) { + saveTheme(ThemeItem.THEME_LIST.get(which)); + restartActivity(); + } + + private void restartActivity() { + final Intent intent = getIntent(); + finish(); + startActivity(intent); + } + + private static void setupHintText(final EditText e) { + final int imeOptions = e.getImeOptions(); + String hint = (e instanceof MultiLineShortMessageEditText) ? "*" : ""; + hint += inputTypeToString(e.getInputType()); + String text; + if (e.getImeActionLabel() != null) { + text = "actionLabel<" + e.getImeActionLabel() + ":" + e.getImeActionId() + ">"; + } else { + text = actionName(imeOptions & EditorInfo.IME_MASK_ACTION); + } + text = appendFlagText(text, + (imeOptions & EditorInfo.IME_FLAG_NO_EXTRACT_UI) != 0, "flagNoExtractUi"); + text = appendFlagText(text, + (imeOptions & EditorInfo.IME_FLAG_NO_FULLSCREEN) != 0, "flagNoFullscreen"); + text = appendFlagText(text, + (imeOptions & EditorInfo_IME_FLAG_FORCE_ASCII.value) != 0, "flagForceAscii"); + text = appendFlagText(text, + (imeOptions & EditorInfo.IME_FLAG_NAVIGATE_NEXT) != 0, ">"); + text = appendFlagText(text, + (imeOptions & EditorInfo.IME_FLAG_NAVIGATE_PREVIOUS) != 0, "<"); + if (text.length() > 0) + hint += " " + text; + final String privateOptions = e.getPrivateImeOptions(); + if (!TextUtils.isEmpty(privateOptions)) { + hint += " ("; + String sep = ""; + for (final String opt : privateOptions.trim().split(",")) { + final String[] elem = opt.trim().split("\\."); + hint += sep + elem[elem.length - 1]; + sep = ","; + } + hint += ")"; + } + if (DEBUG_INPUT_TEXT) { + Log.d(TAG, String.format("class=0x%08x variation=0x%08x flags=0x%08x hint=%s", + e.getInputType() & InputType.TYPE_MASK_CLASS, + e.getInputType() & InputType.TYPE_MASK_VARIATION, + e.getInputType() & InputType.TYPE_MASK_FLAGS, hint)); + } + if (e.getId() == R.id.text_restarting) { + hint += " restarting"; + } + e.setHint(hint); + } + + private void saveBooleanPreference(final String key, final boolean value) { + final SharedPreferences.Editor editor = prefs.edit(); + editor.putBoolean(key, value); + editor.apply(); + } + + private void saveStringPreference(final String key, final String value) { + final SharedPreferences.Editor editor = prefs.edit(); + editor.putString(key, value); + editor.apply(); + } + + private void saveNavigateMode(final boolean enabled) { + saveBooleanPreference(PREF_NAVIGATE, enabled); + } + + private boolean getNavigateMode() { + return prefs.getBoolean(PREF_NAVIGATE, false); + } + + private void saveSoftInputMode(final boolean visible) { + saveBooleanPreference(PREF_SOFTINPUT, visible); + } + + private void loadSoftInputMode() { + final boolean visible = prefs.getBoolean(PREF_SOFTINPUT, false); + final Window w = getWindow(); + w.setSoftInputMode(visible + ? WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE + : WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); + } + + private void saveTheme(final ThemeItem theme) { + saveStringPreference(PREF_THEME, theme.name); + } + + String getThemeName() { + return prefs.getString(PREF_THEME, ThemeItem.getDefaultThemeName()); + } + + private void loadTheme() { + final String themeName = getThemeName(); + for (final ThemeItem theme : ThemeItem.THEME_LIST) { + if (themeName.equals(theme.name)) { + setTheme(theme.id); + return; + } + } + } + + @Override + public boolean onEditorAction(final TextView v, final int action, final KeyEvent event) { + for (int i = 0; i < fields.length; i++) { + if (v == fields[i]) { + final int direction; + if (action == EditorInfo.IME_ACTION_PREVIOUS) { + direction = -1; + } else { + direction = +1; + } + + final int target = i + direction; + if (target < 0 || target >= fields.length) + return false; + + final View targetView = fields[target]; + targetView.requestFocus(); + return true; + } + } + return false; + } + + private static String actionName(final int action) { + switch (action & EditorInfo.IME_MASK_ACTION) { + case EditorInfo.IME_ACTION_UNSPECIFIED: + return "actionUnspecified"; + case EditorInfo.IME_ACTION_NONE: + return "actionNone"; + case EditorInfo.IME_ACTION_GO: + return "actionGo"; + case EditorInfo.IME_ACTION_SEARCH: + return "actionSearch"; + case EditorInfo.IME_ACTION_SEND: + return "actionSend"; + case EditorInfo.IME_ACTION_NEXT: + return "actionNext"; + case EditorInfo.IME_ACTION_DONE: + return "actionDone"; + case EditorInfo.IME_ACTION_PREVIOUS: + return "actionPrevious"; + default: + return "actionUnknown(" + action + ")"; + } + } + + private static String inputTypeToString(final int inputType) { + if (inputType == InputType.TYPE_NULL) { + return "TYPE_NULL"; + } + final int clazz = inputType & InputType.TYPE_MASK_CLASS; + final int variation = inputType & InputType.TYPE_MASK_VARIATION; + final int flags = inputType & InputType.TYPE_MASK_FLAGS; + String base = "unknown(class=" + clazz + " variation=" + variation + " flag=0x" + + Integer.toHexString(flags); + + switch (clazz) { + case InputType.TYPE_CLASS_TEXT: + switch (variation) { + case InputType.TYPE_TEXT_VARIATION_NORMAL: + base = "text"; + break; + case InputType.TYPE_TEXT_VARIATION_URI: + base = "textUri"; + break; + case InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS: + base = "textEmailAddress"; + break; + case InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT: + base = "textEmailSubject"; + break; + case InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE: + base = "textShortMessage"; + break; + case InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE: + base = "textLongMessage"; + break; + case InputType.TYPE_TEXT_VARIATION_PERSON_NAME: + base = "textPersonName"; + break; + case InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS: + base = "textPostalAddress"; + break; + case InputType.TYPE_TEXT_VARIATION_PASSWORD: + base = "textPassword"; + break; + case InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD: + base = "textVisiblePassword"; + break; + case InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT: + base = "textWebEditText"; + break; + case InputType.TYPE_TEXT_VARIATION_FILTER: + base = "textFilter"; + break; + case InputType.TYPE_TEXT_VARIATION_PHONETIC: + base = "textPhonetic"; + break; + case InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS: + base = "textWebEmailAddress"; + break; + case InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD: + base = "textWebPassword"; + break; + } + base = appendFlagText(base, (flags & InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS) != 0, + "textCapCharacters"); + base = appendFlagText(base, (flags & InputType.TYPE_TEXT_FLAG_CAP_WORDS) != 0, + "textCapWords"); + base = appendFlagText(base, (flags & InputType.TYPE_TEXT_FLAG_CAP_SENTENCES) != 0, + "textCapSentences"); + base = appendFlagText(base, (flags & InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0, + "textAutoCorrect"); + base = appendFlagText(base, (flags & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE) != 0, + "textAutoComplete"); + base = appendFlagText(base, (flags & InputType.TYPE_TEXT_FLAG_MULTI_LINE) != 0, + "textMultiLine"); + base = appendFlagText(base, (flags & InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE) != 0, + "textImeMultiLine"); + base = appendFlagText(base, (flags & InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS) != 0, + "textNoSuggestions"); + break; + + case InputType.TYPE_CLASS_NUMBER: + if (variation == InputType.TYPE_NUMBER_VARIATION_NORMAL) { + base = "number"; + } else if (variation == InputType.TYPE_NUMBER_VARIATION_PASSWORD) { + base = "numberPassword"; + } + base = appendFlagText(base, (flags & InputType.TYPE_NUMBER_FLAG_SIGNED) != 0, + "numberSigned"); + base = appendFlagText(base, (flags & InputType.TYPE_NUMBER_FLAG_DECIMAL) != 0, + "numberDecimal"); + break; + + case InputType.TYPE_CLASS_PHONE: + base = "phone"; + break; + + case InputType.TYPE_CLASS_DATETIME: + switch (variation) { + case InputType.TYPE_DATETIME_VARIATION_NORMAL: + base = "datetime"; + break; + case InputType.TYPE_DATETIME_VARIATION_DATE: + base = "date"; + break; + case InputType.TYPE_DATETIME_VARIATION_TIME: + base = "time"; + break; + } + break; + } + + return base; + } + + private static String appendFlagText(final String text, final boolean flag, final String name) { + if (flag) { + if (text.length() == 0 || name.startsWith(text)) + return name; + return text + "|" + name; + } + return text; + } +} diff --git a/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/FinalClassField.java b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/FinalClassField.java new file mode 100644 index 0000000000000000000000000000000000000000..14c556a6779b5f2a5eca467ddb11ad85a522dff8 --- /dev/null +++ b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/FinalClassField.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.tools.edittextvariations; + +import java.lang.reflect.Field; + +public final class FinalClassField<T> { + public final boolean defined; + public final String name; + public final String className; + public final T value; + + @SuppressWarnings("unchecked") + private FinalClassField(final Field field, final String className, final String fieldName, + final T compatValue) { + this.defined = field != null; + this.name = fieldName; + this.className = className; + T v = null; + try { + final Object obj = field.get(null); + v = (T) obj; + } catch (final Exception e) { + v = compatValue; + } + this.value = v; + } + + public static <T> FinalClassField<T> newInstance(final Class<?> definedClass, final String name, + final T compatValue) { + if (definedClass == null) + throw new NullPointerException("defined class"); + String className = definedClass.getCanonicalName(); + try { + return new FinalClassField<>( + definedClass.getField(name), className, name, compatValue); + } catch (Exception e) { + return new FinalClassField<>(null, className, name, compatValue); + } + } + + public static <T> FinalClassField<T> newInstance(final String className, final String fieldName, + final T compatValue) { + try { + return newInstance(Class.forName(className), fieldName, compatValue); + } catch (ClassNotFoundException e) { + return new FinalClassField<>(null, className, fieldName, compatValue); + } + } +} diff --git a/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/InstanceMethod.java b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/InstanceMethod.java new file mode 100644 index 0000000000000000000000000000000000000000..05dc0d6dcd8f5c7c63db341fe0cb27c30b6a61b2 --- /dev/null +++ b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/InstanceMethod.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.tools.edittextvariations; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +public final class InstanceMethod { + public final boolean defined; + public final String name; + public final String className; + + private final Class<?> clazz; + private final Method method; + + private InstanceMethod(final Class<?> receiverClass, final Method instanceMethod, + final String receiverName, final String methodName) { + this.defined = instanceMethod != null; + this.clazz = receiverClass; + this.method = instanceMethod; + this.name = methodName; + this.className = receiverName; + } + + public Object invoke(final Object receiverObject, final Object... args) { + if (!defined) + throw new RuntimeException("method " + name + " not defined"); + if (receiverObject == null) + throw new NullPointerException("receiver object"); + if (clazz.isInstance(receiverObject)) { + try { + if (args.length == 0) { + return method.invoke(receiverObject); + } + return method.invoke(clazz, args); + } catch (IllegalArgumentException e) { + throw new RuntimeException("IllegalArgumentException"); + } catch (IllegalAccessException e) { + throw new RuntimeException("IllegalAccessException"); + } catch (InvocationTargetException e) { + throw new RuntimeException("InvocationTargetException"); + } + } + throw new RuntimeException("receiver type not matched: method=" + name + + " actual receiver=" + receiverObject.getClass().getCanonicalName()); + } + + public static InstanceMethod newInstance(final Class<?> receiverClass, final String methodName, + final Class<?>... parameterTypes) { + if (receiverClass == null) + throw new NullPointerException("receiver class"); + final String className = receiverClass.getCanonicalName(); + try { + return new InstanceMethod(receiverClass, + receiverClass.getMethod(methodName, parameterTypes), className, methodName); + } catch (Exception e) { + return new InstanceMethod(receiverClass, null, className, methodName); + } + } + + public static InstanceMethod newInstance(final String className, final String methodName, + final Class<?>... parameterTypes) { + try { + return newInstance(Class.forName(className), methodName, parameterTypes); + } catch (ClassNotFoundException e) { + return new InstanceMethod(null, null, className, methodName); + } + } +} diff --git a/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/MultiLineShortMessageEditText.java b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/MultiLineShortMessageEditText.java new file mode 100644 index 0000000000000000000000000000000000000000..7ab700776a691a25b92bd91c208ace1911d445bb --- /dev/null +++ b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/MultiLineShortMessageEditText.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.tools.edittextvariations; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputConnection; +import android.widget.EditText; + +public final class MultiLineShortMessageEditText extends EditText { + + public MultiLineShortMessageEditText(final Context context) { + super(context); + } + + public MultiLineShortMessageEditText(final Context context, final AttributeSet attrs) { + super(context, attrs); + } + + public MultiLineShortMessageEditText(final Context context, final AttributeSet attrs, + final int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public InputConnection onCreateInputConnection(final EditorInfo outAttrs) { + final InputConnection ic = super.onCreateInputConnection(outAttrs); + outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION; + return ic; + } +} diff --git a/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/NotificationBroadcastReceiver.java b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/NotificationBroadcastReceiver.java new file mode 100644 index 0000000000000000000000000000000000000000..97db49b15073cbb126aebfb979265c7e0f32e98f --- /dev/null +++ b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/NotificationBroadcastReceiver.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.tools.edittextvariations; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +/** + * A non-exported {@link BroadcastReceiver} to receive {@link Intent} from notifications. + */ +public final class NotificationBroadcastReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + NotificationUtils.onReceiveDirectReply(context, intent); + } +} diff --git a/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/NotificationUtils.java b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/NotificationUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..a9b7132eb2e54b67b4d2f87cd8e45be8c60d38d1 --- /dev/null +++ b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/NotificationUtils.java @@ -0,0 +1,122 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.tools.edittextvariations; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.app.RemoteInput; +import android.content.Context; +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; +import android.os.Process; +import android.os.UserHandle; + +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; + +final class NotificationUtils { + private static final String REPLY_ACTION = "REPLY_ACTION"; + private static final String KEY_REPLY = "KEY_REPLY"; + private static final String KEY_NOTIFICATION_ID = "KEY_NOTIFICATION_ID"; + private static final String CHANNEL_NAME = "Channel Name"; + private static final String CHANNEL_DESCRIPTION = "Channel Description"; + private static final String CHANNEL_ID = "Channel ID"; + private static final AtomicInteger sNextNotificationId = new AtomicInteger(1); + + private static final Object sLock = new Object(); + private static boolean sNotificationChannelInitialized = false; + + static final boolean NOTIFICATION_CHANNEL_REQUIRED = + Build.VERSION.SDK_INT >= Build.VERSION_CODES.O; + static final boolean DIRECT_REPLY_SUPPORTED = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N; + + private static Notification.Builder createNotificationBuilder(Context context) { + if (!NOTIFICATION_CHANNEL_REQUIRED) { + // NotificationChannel is not implemented. No need to set up notification channel. + return new Notification.Builder(context); + } + + // Make sure that a notification channel is created *before* we send a notification. + synchronized (sLock) { + if (!sNotificationChannelInitialized) { + final NotificationChannel channel = new NotificationChannel(CHANNEL_ID, + CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT); + channel.setDescription(CHANNEL_DESCRIPTION); + context.getSystemService(NotificationManager.class) + .createNotificationChannel(channel); + sNotificationChannelInitialized = true; + } + } + return new Notification.Builder(context, CHANNEL_ID); + } + + static void sendDirectReplyNotification(Context context) { + if (!DIRECT_REPLY_SUPPORTED) { + // DirectReply is not supported. + return; + } + + RemoteInput remoteInput = new RemoteInput.Builder(KEY_REPLY) + .setLabel("Reply Label") + .build(); + + final int notificationId = sNextNotificationId.getAndIncrement(); + final PendingIntent pendingIntent = getReplyPendingIntent(context, notificationId); + final Notification.Action action = + new Notification.Action.Builder(null, "Direct Reply Test", pendingIntent) + .addRemoteInput(remoteInput) + .build(); + final Notification notification = createNotificationBuilder(context) + .setContentText("Content Title") + .setSmallIcon(R.drawable.ic_launcher) + .setContentText("Message from " + UserHandle.getUserHandleForUid(Process.myUid())) + .setShowWhen(true) + .addAction(action) + .build(); + context.getSystemService(NotificationManager.class).notify(notificationId, notification); + } + + static void onReceiveDirectReply(Context context, Intent intent) { + final Bundle remoteInput = RemoteInput.getResultsFromIntent(intent); + if (remoteInput == null) { + return; + } + final CharSequence reply = remoteInput.getCharSequence(KEY_REPLY); + final int notificationId = intent.getIntExtra(KEY_NOTIFICATION_ID, 0); + final Notification.Builder notificationBuilder = + new Notification.Builder(context, CHANNEL_ID); + notificationBuilder.setContentText("Content Title") + .setSmallIcon(R.drawable.ic_launcher) + .setContentText(String.format("Sent \"%s\" to %s", reply, + UserHandle.getUserHandleForUid(Process.myUid()))); + context.getSystemService(NotificationManager.class) + .notify(notificationId, notificationBuilder.build()); + } + + private static PendingIntent getReplyPendingIntent(Context context, int notificationId) { + final Intent intent = new Intent(context, NotificationBroadcastReceiver.class); + intent.setAction(REPLY_ACTION); + intent.putExtra(KEY_NOTIFICATION_ID, notificationId); + // Pass notificationId as the result code to get a new PendingIntent rather than an existing + // one. + return PendingIntent.getBroadcast(context.getApplicationContext(), notificationId, intent, + PendingIntent.FLAG_ONE_SHOT); + } +} diff --git a/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/ThemeItem.java b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/ThemeItem.java new file mode 100644 index 0000000000000000000000000000000000000000..f3c6d4f545969cf6401cc9e80daeb3d66435ce0f --- /dev/null +++ b/tools/EditTextVariations/src/com/android/inputmethod/tools/edittextvariations/ThemeItem.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.tools.edittextvariations; + +import android.os.Build; + +import com.android.inputmethod.tools.edittextvariations.R; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final class ThemeItem { + public final int id; + public final String name; + + private ThemeItem(final String name, final int resId) { + this.id = resId; + this.name = name; + } + + private static final String THEME_DEFAULT = "Default"; + private static final String THEME_HOLO = "Theme_Holo"; + private static final String THEME_HOLO_LIGHT = "Theme_Holo_Light"; + private static final String THEME_DEVICE_DEFAULT = "Theme_DeviceDefault"; + private static final String THEME_DEVICE_DEFAULT_LIGHT = "Theme_DeviceDefault_Light"; + private static final String THEME_MATERIAL = "Theme_Material"; + private static final String THEME_MATERIAL_LIGHT = "Theme_Material_Light"; + + public static String getDefaultThemeName() { + return THEME_DEFAULT; + } + + public static final List<ThemeItem> THEME_LIST = createThemeList( + THEME_HOLO, THEME_HOLO_LIGHT, THEME_DEVICE_DEFAULT, THEME_DEVICE_DEFAULT_LIGHT, + THEME_MATERIAL, THEME_MATERIAL_LIGHT); + + private static List<ThemeItem> createThemeList(final String... candidateList) { + final ArrayList<ThemeItem> list = new ArrayList<>(); + + // Default theme is always available as it's defined in our resource. + list.add(new ThemeItem(THEME_DEFAULT, R.style.defaultActivityTheme)); + + for (final String name : candidateList) { + final FinalClassField<Integer> constant = + FinalClassField.newInstance(android.R.style.class, name, 0); + if (constant.defined) { + list.add(new ThemeItem(name, constant.value)); + } + } + + return Collections.unmodifiableList(list); + } +}