Merge "October 28th Docs Update" into androidx-master-dev
diff --git a/activity/activity/src/androidTest/java/androidx/activity/result/ActivityResultRegistryTest.kt b/activity/activity/src/androidTest/java/androidx/activity/result/ActivityResultRegistryTest.kt
index 15fa859..0b2f103 100644
--- a/activity/activity/src/androidTest/java/androidx/activity/result/ActivityResultRegistryTest.kt
+++ b/activity/activity/src/androidTest/java/androidx/activity/result/ActivityResultRegistryTest.kt
@@ -222,6 +222,50 @@
     }
 
     @Test
+    fun testLifecycleOwnerCallbackWithNullDispatchResult() {
+        val lifecycleOwner = TestLifecycleOwner(Lifecycle.State.INITIALIZED)
+
+        val dispatchResultRegistry = object : ActivityResultRegistry() {
+            override fun <I : Any?, O : Any?> onLaunch(
+                requestCode: Int,
+                contract: ActivityResultContract<I, O>,
+                input: I,
+                options: ActivityOptionsCompat?
+            ) {
+                dispatchResult(requestCode, null)
+            }
+        }
+
+        var resultReturned = false
+        val activityResult = dispatchResultRegistry.register(
+            "test", lifecycleOwner, TakePicturePreview(),
+            ActivityResultCallback {
+                resultReturned = true
+            }
+        )
+
+        // launch the result
+        activityResult.launch(null)
+
+        // move to CREATED and make sure the callback is not fired
+        lifecycleOwner.currentState = Lifecycle.State.CREATED
+        assertThat(resultReturned).isFalse()
+
+        // move to STARTED and make sure the callback fires
+        lifecycleOwner.currentState = Lifecycle.State.STARTED
+        assertThat(resultReturned).isTrue()
+
+        // Reset back to CREATED
+        lifecycleOwner.currentState = Lifecycle.State.CREATED
+        resultReturned = false
+
+        // Move back to STARTED and make sure the previously returned result
+        // isn't sent a second time
+        lifecycleOwner.currentState = Lifecycle.State.STARTED
+        assertThat(resultReturned).isFalse()
+    }
+
+    @Test
     fun testLifecycleOwnerCallbackUnregistered() {
         val lifecycleOwner = TestLifecycleOwner(Lifecycle.State.INITIALIZED)
 
diff --git a/activity/activity/src/main/java/androidx/activity/result/ActivityResultRegistry.java b/activity/activity/src/main/java/androidx/activity/result/ActivityResultRegistry.java
index d2fde33..d491bf6 100644
--- a/activity/activity/src/main/java/androidx/activity/result/ActivityResultRegistry.java
+++ b/activity/activity/src/main/java/androidx/activity/result/ActivityResultRegistry.java
@@ -133,9 +133,9 @@
                     @NonNull Lifecycle.Event event) {
                 if (Lifecycle.Event.ON_START.equals(event)) {
                     mKeyToCallback.put(key, new CallbackAndContract<>(callback, contract));
-                    @SuppressWarnings("unchecked")
-                    final O parsedPendingResult = (O) mParsedPendingResults.get(key);
-                    if (parsedPendingResult != null) {
+                    if (mParsedPendingResults.containsKey(key)) {
+                        @SuppressWarnings("unchecked")
+                        final O parsedPendingResult = (O) mParsedPendingResults.get(key);
                         mParsedPendingResults.remove(key);
                         callback.onActivityResult(parsedPendingResult);
                     }
@@ -199,9 +199,9 @@
         final int requestCode = registerKey(key);
         mKeyToCallback.put(key, new CallbackAndContract<>(callback, contract));
 
-        @SuppressWarnings("unchecked")
-        final O parsedPendingResult = (O) mParsedPendingResults.get(key);
-        if (parsedPendingResult != null) {
+        if (mParsedPendingResults.containsKey(key)) {
+            @SuppressWarnings("unchecked")
+            final O parsedPendingResult = (O) mParsedPendingResults.get(key);
             mParsedPendingResults.remove(key);
             callback.onActivityResult(parsedPendingResult);
         }
diff --git a/appcompat/appcompat/src/main/res/values-mk/strings.xml b/appcompat/appcompat/src/main/res/values-mk/strings.xml
index 07145d8..9171436 100644
--- a/appcompat/appcompat/src/main/res/values-mk/strings.xml
+++ b/appcompat/appcompat/src/main/res/values-mk/strings.xml
@@ -25,7 +25,7 @@
     <string name="abc_search_hint" msgid="7208076849092622260">"Пребарување…"</string>
     <string name="abc_searchview_description_query" msgid="693312494995508443">"Пребарај барање"</string>
     <string name="abc_searchview_description_clear" msgid="3741173234950517107">"Исчисти барање"</string>
-    <string name="abc_searchview_description_submit" msgid="1486535517437947103">"Поднеси барање"</string>
+    <string name="abc_searchview_description_submit" msgid="1486535517437947103">"Испрати барање"</string>
     <string name="abc_searchview_description_voice" msgid="2293578557972875415">"Гласовно пребарување"</string>
     <string name="abc_activitychooserview_choose_application" msgid="2165779757652331008">"Избери апликација"</string>
     <string name="abc_activity_chooser_view_see_all" msgid="1189761859438369441">"Прикажи ги сите"</string>
diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryGroups.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryGroups.kt
index f89b40a..ddd2351 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LibraryGroups.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LibraryGroups.kt
@@ -35,6 +35,7 @@
     val BENCHMARK = LibraryGroup("androidx.benchmark", LibraryVersions.BENCHMARK)
     val CAMERA = LibraryGroup("androidx.camera", LibraryVersions.CAMERA)
     val CARDVIEW = LibraryGroup("androidx.cardview", LibraryVersions.CARDVIEW)
+    val CAR_APP = LibraryGroup("androidx.car.app", LibraryVersions.CAR_APP)
     val COLLECTION = LibraryGroup("androidx.collection", LibraryVersions.COLLECTION)
     val CONCURRENT = LibraryGroup("androidx.concurrent", LibraryVersions.FUTURES)
     val CONTENTACCESS = LibraryGroup("androidx.contentaccess", LibraryVersions.CONTENTACCESS)
diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
index 0aeb966..e757f9a 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
@@ -41,6 +41,7 @@
     val CAMERA_VIDEO = Version("1.0.0-alpha01")
     val CAMERA_VIEW = Version("1.0.0-alpha19")
     val CARDVIEW = Version("1.1.0-alpha01")
+    val CAR_APP = Version("1.0.0-alpha01")
     val COLLECTION = Version("1.2.0-alpha01")
     val CONTENTPAGER = Version("1.1.0-alpha01")
     val COMPOSE = Version("1.0.0-alpha07")
diff --git a/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt b/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
index 8b965e7..6564739 100644
--- a/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
@@ -81,8 +81,10 @@
     prebuilts(LibraryGroups.CORE, "core-role", "1.1.0-alpha02")
     prebuilts(LibraryGroups.CURSORADAPTER, "1.0.0")
     prebuilts(LibraryGroups.CUSTOMVIEW, "1.1.0")
-    // Ignore datastore artifact until the 1.0.0-alpha03 prebuilt is imported
+    // Ignore datastore and datastore-preferences-core artifact until the 1.0.0-alpha03 prebuilt is
+    // imported
     ignore(LibraryGroups.DATASTORE.group, "datastore")
+    ignore(LibraryGroups.DATASTORE.group, "datastore-preferences-core")
     ignore(LibraryGroups.DATASTORE.group, "datastore-preferences-proto")
     ignore(LibraryGroups.DATASTORE.group, "datastore-proto")
     prebuilts(LibraryGroups.DATASTORE, "1.0.0-alpha02")
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/AeMode.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/AeMode.kt
new file mode 100644
index 0000000..0497072
--- /dev/null
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/AeMode.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020 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 androidx.camera.camera2.pipe
+
+import android.hardware.camera2.CameraMetadata
+
+/**
+ * An enum to match the CameraMetadata.CONTROL_AE_MODE_* constants.
+ */
+enum class AeMode(val value: Int) {
+    OFF(CameraMetadata.CONTROL_AE_MODE_OFF),
+    ON(CameraMetadata.CONTROL_AE_MODE_ON),
+    ON_AUTO_FLASH(CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH),
+    ON_ALWAYS_FLASH(CameraMetadata.CONTROL_AE_MODE_ON_ALWAYS_FLASH),
+    ON_AUTO_FLASH_REDEYE(CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE);
+
+    companion object {
+        @JvmStatic
+        fun fromIntOrNull(value: Int) = values().firstOrNull { it.value == value }
+    }
+}
\ No newline at end of file
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/AfMode.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/AfMode.kt
new file mode 100644
index 0000000..a5a2da6
--- /dev/null
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/AfMode.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2020 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 androidx.camera.camera2.pipe
+
+import android.hardware.camera2.CameraMetadata
+
+/**
+ * An enum to match the CameraMetadata.CONTROL_AF_MODE_* constants.
+ */
+enum class AfMode(val value: Int) {
+    OFF(CameraMetadata.CONTROL_AF_MODE_OFF),
+    AUTO(CameraMetadata.CONTROL_AF_MODE_AUTO),
+    MACRO(CameraMetadata.CONTROL_AF_MODE_MACRO),
+    CONTINUOUS_VIDEO(CameraMetadata.CONTROL_AF_MODE_CONTINUOUS_VIDEO),
+    CONTINUOUS_PICTURE(CameraMetadata.CONTROL_AF_MODE_CONTINUOUS_PICTURE),
+    EDOF(CameraMetadata.CONTROL_AF_MODE_EDOF);
+
+    companion object {
+        @JvmStatic
+        fun fromIntOrNull(value: Int) = values().firstOrNull { it.value == value }
+    }
+}
\ No newline at end of file
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/AwbMode.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/AwbMode.kt
new file mode 100644
index 0000000..34f639c
--- /dev/null
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/AwbMode.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020 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 androidx.camera.camera2.pipe
+
+import android.hardware.camera2.CameraMetadata
+
+/**
+ * An enum to match the CameraMetadata.CONTROL_AWB_MODE_* constants.
+ */
+enum class AwbMode(val value: Int) {
+    AUTO(CameraMetadata.CONTROL_AWB_MODE_AUTO),
+    CLOUDY_DAYLIGHT(CameraMetadata.CONTROL_AWB_MODE_CLOUDY_DAYLIGHT),
+    DAYLIGHT(CameraMetadata.CONTROL_AWB_MODE_DAYLIGHT),
+    INCANDESCENT(CameraMetadata.CONTROL_AWB_MODE_INCANDESCENT),
+    FLUORESCENT(CameraMetadata.CONTROL_AWB_MODE_FLUORESCENT);
+
+    companion object {
+        @JvmStatic
+        fun fromIntOrNull(value: Int) = values().firstOrNull { it.value == value }
+    }
+}
\ No newline at end of file
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraGraph.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraGraph.kt
index 0afee09..67799f2 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraGraph.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraGraph.kt
@@ -16,8 +16,10 @@
 
 package androidx.camera.camera2.pipe
 
+import android.hardware.camera2.params.MeteringRectangle
 import android.view.Surface
 import androidx.camera.camera2.pipe.wrapper.InputConfigData
+import kotlinx.coroutines.Deferred
 import java.io.Closeable
 
 /**
@@ -90,6 +92,21 @@
         HIGH_SPEED,
     }
 
+    companion object Constants3A {
+        // Constants related to controlling the time or frame budget a 3A operation should get.
+        const val DEFAULT_FRAME_LIMIT = 60
+        const val DEFAULT_TIME_LIMIT_MS = 3000
+
+        // Constants related to metering regions.
+        /** No metering region is specified. */
+        val METERING_REGIONS_EMPTY = emptyArray<MeteringRectangle>()
+        /**
+         * No-op metering regions, this will tell camera device to pick the right metering region
+         * for us.
+         */
+        val METERING_REGIONS_DEFAULT = arrayOf(MeteringRectangle(0, 0, 0, 0, 0))
+    }
+
     /**
      * A lock on CameraGraph. It facilitates an exclusive access to the managed camera device. Once
      * this is acquired, a well ordered set of requests can be sent to the camera device without the
@@ -105,5 +122,135 @@
          * CameraCaptureSession as well as any requests that are currently enqueued.
          */
         fun abort()
+
+        /**
+         * Applies the given 3A parameters to the camera device.
+         *
+         * @return earliest FrameNumber at which the parameters were successfully applied.
+         */
+        fun update3A(
+            aeMode: AeMode? = null,
+            afMode: AfMode? = null,
+            awbMode: AwbMode? = null,
+            aeRegions: List<MeteringRectangle>? = null,
+            afRegions: List<MeteringRectangle>? = null,
+            awbRegions: List<MeteringRectangle>? = null
+        ): Deferred<FrameNumber>
+
+        /**
+         * Applies the given 3A parameters to the camera device but for only one frame.
+         *
+         * @return the FrameNumber for which these parameters were applied.
+         */
+        fun submit3A(
+            aeMode: AeMode? = null,
+            afMode: AfMode? = null,
+            awbMode: AwbMode? = null,
+            aeRegions: List<MeteringRectangle>? = null,
+            afRegions: List<MeteringRectangle>? = null,
+            awbRegions: List<MeteringRectangle>? = null
+        ): Deferred<FrameNumber>
+
+        /**
+         * Turns the torch to ON or OFF.
+         *
+         * @return the FrameNumber at which the turn was fully turned on if switch was ON, or the
+         * FrameNumber at which it was completely turned off when the switch was OFF.
+         */
+        fun setTorch(torchState: TorchState): Deferred<FrameNumber>
+
+        /**
+         * Locks the auto-exposure, auto-focus and auto-whitebalance as per the given desired
+         * behaviors.
+         *
+         * @param frameLimit the maximum number of frames to wait before we give up waiting for
+         * this operation to complete.
+         * @param timeLimitMs the maximum time limit in ms we wait before we give up waiting for
+         * this operation to complete.
+         *
+         * @return [Result3A], which will contain the latest frame number at which the locks were
+         * applied or the frame number at which the method returned early because either frame limit
+         * or time limit was reached.
+         */
+        fun lock3A(
+            aeLockBehavior: Lock3ABehavior? = null,
+            afLockBehavior: Lock3ABehavior? = null,
+            awbLockBehavior: Lock3ABehavior? = null,
+            frameLimit: Int = DEFAULT_FRAME_LIMIT,
+            timeLimitMs: Int = DEFAULT_TIME_LIMIT_MS
+        ): Deferred<Result3A>
+
+        /**
+         * Locks the auto-exposure, auto-focus and auto-whitebalance as per the given desired
+         * behaviors. This method is similar to the earlier [lock3A] method with additional
+         * capability of applying the given 3A parameters before the lock is obtained.
+         *
+         * @param frameLimit the maximum number of frames to wait before we give up waiting for
+         * this operation to complete.
+         * @param timeLimitMs the maximum time limit in ms we wait before we give up waiting for
+         * this operation to complete.
+         *
+         * @return [Result3A], which will contain the latest frame number at which the locks were
+         * applied or the frame number at which the method returned early because either frame limit
+         * or time limit was reached.
+         */
+        fun lock3A(
+            aeMode: AeMode? = null,
+            afMode: AfMode? = null,
+            awbMode: AwbMode? = null,
+            aeRegions: List<MeteringRectangle>? = null,
+            afRegions: List<MeteringRectangle>? = null,
+            awbRegions: List<MeteringRectangle>? = null,
+            aeLockBehavior: Lock3ABehavior? = null,
+            afLockBehavior: Lock3ABehavior? = null,
+            awbLockBehavior: Lock3ABehavior? = null,
+            frameLimit: Int = DEFAULT_FRAME_LIMIT,
+            timeLimitMs: Int = DEFAULT_TIME_LIMIT_MS
+        ): Deferred<Result3A>
+
+        /**
+         * Unlocks auto-exposure, auto-focus, auto-whitebalance. Once they are unlocked they get
+         * back to their initial state or resume their auto scan depending on the current mode
+         * they are operating in.
+         *
+         * Providing 'true' for a parameter in this method will unlock that component and if 'false'
+         * is provided or the parameter is not specified then it will have no effect on the lock of
+         * that component, i.e if it was locked earlier it will stay locked and if it was already
+         * unlocked, it will stay unlocked.
+         */
+        fun unlock3A(ae: Boolean? = null, af: Boolean? = null, awb: Boolean? = null):
+            Deferred<FrameNumber>
+
+        /**
+         * This methods does pre-capture metering sequence and locks auto-focus. Once the
+         * operation completes, we can proceed to take high-quality pictures.
+         *
+         * Note: Flash will be used during pre-capture metering and during image capture if the
+         * AE mode was set to [AeMode.ON_AUTO_FLASH] or [AeMode.ON_ALWAYS_FLASH], thus firing it
+         * for low light captures or for every capture, respectively.
+         *
+         * @param frameLimit the maximum number of frames to wait before we give up waiting for
+         * this operation to complete.
+         * @param timeLimitMs the maximum time limit in ms we wait before we give up waiting for
+         * this operation to complete.
+         *
+         * @return [Result3A], which will contain the latest frame number at which the locks were
+         * applied or the frame number at which the method returned early because either frame limit
+         * or time limit was reached.
+         */
+        fun lock3AForCapture(
+            frameLimit: Int = DEFAULT_FRAME_LIMIT,
+            timeLimitMs: Int = DEFAULT_TIME_LIMIT_MS
+        ): Deferred<Result3A>
+
+        /**
+         * After submitting pre-capture metering sequence needed by [lock3AForCapture] method, the
+         * camera system can internally lock the auto-exposure routine for subsequent still image
+         * capture, and if not image capture request is submitted the auto-exposure may not resume
+         * it's normal scan.
+         * This method brings focus and exposure back to normal after high quality image captures
+         * using [lock3AForCapture] method.
+         */
+        fun unlock3APostCapture(): Deferred<FrameNumber>
     }
 }
\ No newline at end of file
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Lock3ABehavior.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Lock3ABehavior.kt
new file mode 100644
index 0000000..27406f7
--- /dev/null
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Lock3ABehavior.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2020 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 androidx.camera.camera2.pipe
+
+/**
+ * Requirement to consider prior to locking auto-exposure, auto-focus and auto-whitebalance.
+ */
+enum class Lock3ABehavior {
+    /**
+     * This requirement means that we want to lock the values for 3A immediately.
+     *
+     * For AE/AWB this is achieved by asking the camera device to lock them immediately by
+     * setting [android.hardware.camera2.CaptureRequest.CONTROL_AE_LOCK],
+     * [android.hardware.camera2.CaptureRequest.CONTROL_AWB_LOCK] to true right away.
+     *
+     * For AF we immediately ask the camera device to trigger AF by setting the
+     * [android.hardware.camera2.CaptureRequest.CONTROL_AF_TRIGGER] to
+     * [android.hardware.camera2.CaptureRequest.CONTROL_AF_TRIGGER_START].
+     */
+    IMMEDIATE,
+    /**
+     * Lock 3A values after their current scan is finished. If there is no active ongoing scan then
+     * the values will be locked to the current values.
+     */
+    AFTER_CURRENT_SCAN,
+    /**
+     * Initiate a new scan, and then lock the values once the scan is done.
+     */
+    AFTER_NEW_SCAN,
+}
\ No newline at end of file
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Result3A.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Result3A.kt
new file mode 100644
index 0000000..586a465
--- /dev/null
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Result3A.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2020 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 androidx.camera.camera2.pipe
+
+/**
+ * Enum to know the status of 3A operation in case the method returns before the desired
+ * operation is complete. The reason could be that the operation was talking a lot longer and an
+ * enforced frame or time limit was reached.
+ */
+enum class Status3A {
+    OK,
+    FRAME_LIMIT_REACHED,
+    TIME_LIMIT_REACHED
+}
+
+/**
+ * Return type for a 3A method.
+ *
+ * @param frameNumber the latest [FrameNumber] at which the method succeeded or was aborted.
+ * @param status [Status3A] of the 3A operation at the time of return.
+ */
+data class Result3A(val frameNumber: FrameNumber, val status: Status3A)
\ No newline at end of file
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/TorchState.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/TorchState.kt
new file mode 100644
index 0000000..25a7d10
--- /dev/null
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/TorchState.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2020 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 androidx.camera.camera2.pipe
+
+/**
+ * Enum to turn the torch on/off.
+ *
+ * <https://developer.android.com/reference/android/hardware/camera2/CameraMetadata
+ * #CONTROL_AE_MODE_OFF
+ * https://developer.android.com/reference/android/hardware/camera2/CameraMetadata
+ * #CONTROL_AE_MODE_ON
+ */
+enum class TorchState {
+    ON,
+    OFF
+}
\ No newline at end of file
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/impl/CameraGraphSessionImpl.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/impl/CameraGraphSessionImpl.kt
index 42da9a9..b4e91b7 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/impl/CameraGraphSessionImpl.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/impl/CameraGraphSessionImpl.kt
@@ -16,9 +16,18 @@
 
 package androidx.camera.camera2.pipe.impl
 
+import android.hardware.camera2.params.MeteringRectangle
+import androidx.camera.camera2.pipe.AeMode
+import androidx.camera.camera2.pipe.AfMode
+import androidx.camera.camera2.pipe.AwbMode
 import androidx.camera.camera2.pipe.CameraGraph
+import androidx.camera.camera2.pipe.FrameNumber
+import androidx.camera.camera2.pipe.Lock3ABehavior
 import androidx.camera.camera2.pipe.Request
+import androidx.camera.camera2.pipe.Result3A
+import androidx.camera.camera2.pipe.TorchState
 import kotlinx.atomicfu.atomic
+import kotlinx.coroutines.Deferred
 
 internal val cameraGraphSessionIds = atomic(0)
 class CameraGraphSessionImpl(
@@ -48,5 +57,72 @@
         token.release()
     }
 
+    override fun update3A(
+        aeMode: AeMode?,
+        afMode: AfMode?,
+        awbMode: AwbMode?,
+        aeRegions: List<MeteringRectangle>?,
+        afRegions: List<MeteringRectangle>?,
+        awbRegions: List<MeteringRectangle>?
+    ): Deferred<FrameNumber> {
+        TODO("Implement update3A")
+    }
+
+    override fun submit3A(
+        aeMode: AeMode?,
+        afMode: AfMode?,
+        awbMode: AwbMode?,
+        aeRegions: List<MeteringRectangle>?,
+        afRegions: List<MeteringRectangle>?,
+        awbRegions: List<MeteringRectangle>?
+    ): Deferred<FrameNumber> {
+        TODO("Implement submit3A")
+    }
+
+    override fun setTorch(torchState: TorchState): Deferred<FrameNumber> {
+        TODO("Implement setTorch")
+    }
+
+    override fun lock3A(
+        aeLockBehavior: Lock3ABehavior?,
+        afLockBehavior: Lock3ABehavior?,
+        awbLockBehavior: Lock3ABehavior?,
+        frameLimit: Int,
+        timeLimitMs: Int
+    ): Deferred<Result3A> {
+        TODO("Implement lock3A")
+    }
+
+    override fun lock3A(
+        aeMode: AeMode?,
+        afMode: AfMode?,
+        awbMode: AwbMode?,
+        aeRegions: List<MeteringRectangle>?,
+        afRegions: List<MeteringRectangle>?,
+        awbRegions: List<MeteringRectangle>?,
+        aeLockBehavior: Lock3ABehavior?,
+        afLockBehavior: Lock3ABehavior?,
+        awbLockBehavior: Lock3ABehavior?,
+        frameLimit: Int,
+        timeLimitMs: Int
+    ): Deferred<Result3A> {
+        TODO("Implement lock3A")
+    }
+
+    override fun unlock3A(ae: Boolean?, af: Boolean?, awb: Boolean?): Deferred<FrameNumber> {
+        throw UnsupportedOperationException()
+    }
+
+    override fun lock3AForCapture(
+        frameLimit: Int,
+        timeLimitMs: Int
+    ): Deferred<Result3A> {
+        TODO("Implement lock3AForCapture")
+    }
+
+    override fun unlock3APostCapture(): Deferred<FrameNumber> {
+        TODO("Implement unlock3APostCapture")
+    }
+
     override fun toString(): String = "CameraGraph.Session-$debugId"
 }
\ No newline at end of file
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/ModeEnum3ATest.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/ModeEnum3ATest.kt
new file mode 100644
index 0000000..560a32d
--- /dev/null
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/ModeEnum3ATest.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2020 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 androidx.camera.camera2.pipe
+
+import android.os.Build
+import androidx.camera.camera2.pipe.testing.CameraPipeRobolectricTestRunner
+import androidx.test.filters.SmallTest
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.annotation.Config
+
+@SmallTest
+@RunWith(CameraPipeRobolectricTestRunner::class)
+@Config(minSdk = Build.VERSION_CODES.LOLLIPOP)
+class ModeEnum3ATest {
+
+    @Test
+    fun iterateAfModes() {
+        assertThat(AfMode.values().all { afMode -> afMode.value >= 0 }).isTrue()
+    }
+
+    @Test
+    fun iterateAeModes() {
+        assertThat(AeMode.values().all { aeMode -> aeMode.value >= 0 }).isTrue()
+    }
+
+    @Test
+    fun iterateAwbModes() {
+        assertThat(AwbMode.values().all { awbMode -> awbMode.value >= 0 }).isTrue()
+    }
+}
\ No newline at end of file
diff --git a/car/app/OWNERS b/car/app/OWNERS
new file mode 100644
index 0000000..8952328
--- /dev/null
+++ b/car/app/OWNERS
@@ -0,0 +1,4 @@
+jorgeper@google.com
+robertoalexis@google.com
+shiufai@google.com
+rampara@google.com
diff --git a/car/app/app/api/current.txt b/car/app/app/api/current.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/car/app/app/api/current.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/car/app/app/api/public_plus_experimental_current.txt b/car/app/app/api/public_plus_experimental_current.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/car/app/app/api/public_plus_experimental_current.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/car/app/app/api/res-current.txt b/car/app/app/api/res-current.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/car/app/app/api/res-current.txt
diff --git a/car/app/app/api/restricted_current.txt b/car/app/app/api/restricted_current.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/car/app/app/api/restricted_current.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/car/app/app/build.gradle b/car/app/app/build.gradle
new file mode 100644
index 0000000..5c12f92
--- /dev/null
+++ b/car/app/app/build.gradle
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+import androidx.build.LibraryGroups
+import androidx.build.LibraryType
+import androidx.build.LibraryVersions
+import androidx.build.Publish
+
+plugins {
+    id("AndroidXPlugin")
+    id("com.android.library")
+}
+
+dependencies {
+    // Add dependencies here
+}
+
+androidx {
+    name = "androidx.car.app:app"
+    type = LibraryType.PUBLISHED_LIBRARY
+    mavenGroup = LibraryGroups.CAR_APP
+    inceptionYear = "2020"
+    description = "androidx.car.app:app"
+}
diff --git a/car/app/app/src/androidTest/AndroidManifest.xml b/car/app/app/src/androidTest/AndroidManifest.xml
new file mode 100644
index 0000000..ce015a5
--- /dev/null
+++ b/car/app/app/src/androidTest/AndroidManifest.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2020 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="androidx.car.app.test">
+
+</manifest>
diff --git a/car/app/app/src/main/AndroidManifest.xml b/car/app/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a9ecfe8
--- /dev/null
+++ b/car/app/app/src/main/AndroidManifest.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2020 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="androidx.car.app">
+
+</manifest>
\ No newline at end of file
diff --git a/compose/foundation/foundation-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/compose/foundation/text/demos/KeyboardOptionsDemo.kt b/compose/foundation/foundation-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/compose/foundation/text/demos/KeyboardOptionsDemo.kt
index 042160d..8aa70cf 100644
--- a/compose/foundation/foundation-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/compose/foundation/text/demos/KeyboardOptionsDemo.kt
+++ b/compose/foundation/foundation-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/compose/foundation/text/demos/KeyboardOptionsDemo.kt
@@ -85,6 +85,16 @@
         keyboardOptions = KeyboardOptions(capitalization = KeyboardCapitalization.Sentences),
         keyboardType = KeyboardType.Text,
         name = "Capitalize Sentences"
+    ),
+    KeyboardOptionsData(
+        keyboardOptions = KeyboardOptions(autoCorrect = true),
+        keyboardType = KeyboardType.Text,
+        name = "AutoCorrect On"
+    ),
+    KeyboardOptionsData(
+        keyboardOptions = KeyboardOptions(autoCorrect = false),
+        keyboardType = KeyboardType.Text,
+        name = "AutoCorrect Off"
     )
 )
 
diff --git a/compose/foundation/foundation-text/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextFieldInputServiceIntegrationTest.kt b/compose/foundation/foundation-text/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextFieldInputServiceIntegrationTest.kt
index d3ba174..bfea067 100644
--- a/compose/foundation/foundation-text/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextFieldInputServiceIntegrationTest.kt
+++ b/compose/foundation/foundation-text/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextFieldInputServiceIntegrationTest.kt
@@ -68,7 +68,8 @@
         val value = TextFieldValue("abc")
         val keyboardOptions = KeyboardOptions(
             singleLine = true,
-            capitalization = KeyboardCapitalization.Words
+            capitalization = KeyboardCapitalization.Words,
+            autoCorrect = false
         )
         val keyboardType = KeyboardType.Phone
         val imeAction = ImeAction.Search
diff --git a/compose/foundation/foundation/api/current.txt b/compose/foundation/foundation/api/current.txt
index 63092b7..105a487 100644
--- a/compose/foundation/foundation/api/current.txt
+++ b/compose/foundation/foundation/api/current.txt
@@ -289,10 +289,8 @@
   public final class LazyForKt {
     method @androidx.compose.runtime.Composable public static <T> void LazyColumnFor(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
     method @androidx.compose.runtime.Composable public static <T> void LazyColumnForIndexed(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, kotlin.jvm.functions.Function3<? super androidx.compose.foundation.lazy.LazyItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
-    method @Deprecated @androidx.compose.runtime.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Horizontal horizontalGravity, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
     method @androidx.compose.runtime.Composable public static <T> void LazyRowFor(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
     method @androidx.compose.runtime.Composable public static <T> void LazyRowForIndexed(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, kotlin.jvm.functions.Function3<? super androidx.compose.foundation.lazy.LazyItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
-    method @Deprecated @androidx.compose.runtime.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Vertical verticalGravity, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
   }
 
   public final class LazyGridKt {
diff --git a/compose/foundation/foundation/api/public_plus_experimental_current.txt b/compose/foundation/foundation/api/public_plus_experimental_current.txt
index 63092b7..105a487 100644
--- a/compose/foundation/foundation/api/public_plus_experimental_current.txt
+++ b/compose/foundation/foundation/api/public_plus_experimental_current.txt
@@ -289,10 +289,8 @@
   public final class LazyForKt {
     method @androidx.compose.runtime.Composable public static <T> void LazyColumnFor(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
     method @androidx.compose.runtime.Composable public static <T> void LazyColumnForIndexed(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, kotlin.jvm.functions.Function3<? super androidx.compose.foundation.lazy.LazyItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
-    method @Deprecated @androidx.compose.runtime.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Horizontal horizontalGravity, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
     method @androidx.compose.runtime.Composable public static <T> void LazyRowFor(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
     method @androidx.compose.runtime.Composable public static <T> void LazyRowForIndexed(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, kotlin.jvm.functions.Function3<? super androidx.compose.foundation.lazy.LazyItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
-    method @Deprecated @androidx.compose.runtime.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Vertical verticalGravity, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
   }
 
   public final class LazyGridKt {
diff --git a/compose/foundation/foundation/api/restricted_current.txt b/compose/foundation/foundation/api/restricted_current.txt
index 63092b7..105a487 100644
--- a/compose/foundation/foundation/api/restricted_current.txt
+++ b/compose/foundation/foundation/api/restricted_current.txt
@@ -289,10 +289,8 @@
   public final class LazyForKt {
     method @androidx.compose.runtime.Composable public static <T> void LazyColumnFor(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
     method @androidx.compose.runtime.Composable public static <T> void LazyColumnForIndexed(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, kotlin.jvm.functions.Function3<? super androidx.compose.foundation.lazy.LazyItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
-    method @Deprecated @androidx.compose.runtime.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Horizontal horizontalGravity, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
     method @androidx.compose.runtime.Composable public static <T> void LazyRowFor(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.lazy.LazyItemScope,? super T,kotlin.Unit> itemContent);
     method @androidx.compose.runtime.Composable public static <T> void LazyRowForIndexed(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.lazy.LazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Vertical verticalAlignment, kotlin.jvm.functions.Function3<? super androidx.compose.foundation.lazy.LazyItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
-    method @Deprecated @androidx.compose.runtime.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.Alignment.Vertical verticalGravity, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
   }
 
   public final class LazyGridKt {
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyFor.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyFor.kt
index 363eabb..9615617 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyFor.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyFor.kt
@@ -130,29 +130,6 @@
     }
 }
 
-@Deprecated(
-    "LazyColumnItems was renamed to LazyColumnFor",
-    ReplaceWith("LazyColumnFor(items, modifier, contentPadding, horizontalGravity, itemContent)")
-)
-@Composable
-fun <T> LazyColumnItems(
-    items: List<T>,
-    modifier: Modifier = Modifier,
-    contentPadding: PaddingValues = PaddingValues(0.dp),
-    horizontalGravity: Alignment.Horizontal = Alignment.Start,
-    itemContent: @Composable (T) -> Unit
-) {
-    LazyColumnFor(
-        items = items,
-        modifier = modifier,
-        state = rememberLazyListState(),
-        contentPadding = contentPadding,
-        horizontalAlignment = horizontalGravity
-    ) {
-        itemContent(it)
-    }
-}
-
 /**
  * A horizontally scrolling list that only composes and lays out the currently visible items.
  *
@@ -249,29 +226,6 @@
     }
 }
 
-@Deprecated(
-    "LazyRowItems was renamed to LazyRowFor",
-    ReplaceWith("LazyRowFor(items, modifier, contentPadding, horizontalGravity, itemContent)")
-)
-@Composable
-fun <T> LazyRowItems(
-    items: List<T>,
-    modifier: Modifier = Modifier,
-    contentPadding: PaddingValues = PaddingValues(0.dp),
-    verticalGravity: Alignment.Vertical = Alignment.Top,
-    itemContent: @Composable (T) -> Unit
-) {
-    LazyRowFor(
-        items = items,
-        modifier = modifier,
-        state = rememberLazyListState(),
-        contentPadding = contentPadding,
-        verticalAlignment = verticalGravity
-    ) {
-        itemContent(it)
-    }
-}
-
 @Suppress("NOTHING_TO_INLINE")
 @Composable
 @OptIn(ExperimentalSubcomposeLayoutApi::class)
diff --git a/compose/runtime/runtime-rxjava2/api/current.txt b/compose/runtime/runtime-rxjava2/api/current.txt
index a889212..fb30f38 100644
--- a/compose/runtime/runtime-rxjava2/api/current.txt
+++ b/compose/runtime/runtime-rxjava2/api/current.txt
@@ -2,13 +2,9 @@
 package androidx.compose.runtime.rxjava2 {
 
   public final class RxJava2AdapterKt {
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Observable<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Observable<T>, R? initial);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Flowable<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Flowable<T>, R? initial);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Single<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Single<T>, R? initial);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Maybe<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Maybe<T>, R? initial);
     method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Boolean> subscribeAsState(io.reactivex.Completable);
   }
diff --git a/compose/runtime/runtime-rxjava2/api/public_plus_experimental_current.txt b/compose/runtime/runtime-rxjava2/api/public_plus_experimental_current.txt
index a889212..fb30f38 100644
--- a/compose/runtime/runtime-rxjava2/api/public_plus_experimental_current.txt
+++ b/compose/runtime/runtime-rxjava2/api/public_plus_experimental_current.txt
@@ -2,13 +2,9 @@
 package androidx.compose.runtime.rxjava2 {
 
   public final class RxJava2AdapterKt {
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Observable<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Observable<T>, R? initial);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Flowable<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Flowable<T>, R? initial);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Single<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Single<T>, R? initial);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Maybe<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Maybe<T>, R? initial);
     method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Boolean> subscribeAsState(io.reactivex.Completable);
   }
diff --git a/compose/runtime/runtime-rxjava2/api/restricted_current.txt b/compose/runtime/runtime-rxjava2/api/restricted_current.txt
index a889212..fb30f38 100644
--- a/compose/runtime/runtime-rxjava2/api/restricted_current.txt
+++ b/compose/runtime/runtime-rxjava2/api/restricted_current.txt
@@ -2,13 +2,9 @@
 package androidx.compose.runtime.rxjava2 {
 
   public final class RxJava2AdapterKt {
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Observable<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Observable<T>, R? initial);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Flowable<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Flowable<T>, R? initial);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Single<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Single<T>, R? initial);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline <T> androidx.compose.runtime.State<T> subscribeAsState(io.reactivex.Maybe<T>);
     method @androidx.compose.runtime.Composable public static <R, T extends R> androidx.compose.runtime.State<R> subscribeAsState(io.reactivex.Maybe<T>, R? initial);
     method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.lang.Boolean> subscribeAsState(io.reactivex.Completable);
   }
diff --git a/compose/runtime/runtime-rxjava2/src/main/java/androidx/compose/runtime/rxjava2/RxJava2Adapter.kt b/compose/runtime/runtime-rxjava2/src/main/java/androidx/compose/runtime/rxjava2/RxJava2Adapter.kt
index ec9863a..e9487a3 100644
--- a/compose/runtime/runtime-rxjava2/src/main/java/androidx/compose/runtime/rxjava2/RxJava2Adapter.kt
+++ b/compose/runtime/runtime-rxjava2/src/main/java/androidx/compose/runtime/rxjava2/RxJava2Adapter.kt
@@ -39,26 +39,6 @@
  * Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
  * used. To handle the error in a more meaningful way you can use operators like
  * [Observable.onErrorReturn] or [Observable.onErrorResumeNext].
- */
-@Deprecated(
-    "Use subscribeAsState with an explicit initial value instead. Using null is not always the " +
-        "best default, for example when you have a List it is better to start with emptyList()",
-    ReplaceWith("subscribeAsState(null)")
-)
-@Suppress("NOTHING_TO_INLINE")
-@Composable
-inline fun <T : Any> Observable<T>.subscribeAsState(): State<T?> = subscribeAsState(null)
-
-/**
- * Subscribes to this [Observable] and represents its values via [State]. Every time there would
- * be new value posted into the [Observable] the returned [State] will be updated causing
- * recomposition of every [State.value] usage.
- *
- * The internal observer will be automatically disposed when this composable disposes.
- *
- * Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
- * used. To handle the error in a more meaningful way you can use operators like
- * [Observable.onErrorReturn] or [Observable.onErrorResumeNext].
  *
  * @sample androidx.compose.runtime.rxjava2.samples.ObservableSample
  *
@@ -79,26 +59,6 @@
  * Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
  * used. To handle the error in a more meaningful way you can use operators like
  * [Flowable.onErrorReturn] or [Flowable.onErrorResumeNext].
- */
-@Deprecated(
-    "Use subscribeAsState with an explicit initial value instead. Using null is not always the " +
-        "best default, for example when you have a List it is better to start with emptyList()",
-    ReplaceWith("subscribeAsState(null)")
-)
-@Suppress("NOTHING_TO_INLINE")
-@Composable
-inline fun <T : Any> Flowable<T>.subscribeAsState(): State<T?> = subscribeAsState(null)
-
-/**
- * Subscribes to this [Flowable] and represents its values via [State]. Every time there would
- * be new value posted into the [Flowable] the returned [State] will be updated causing
- * recomposition of every [State.value] usage.
- *
- * The internal observer will be automatically disposed when this composable disposes.
- *
- * Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
- * used. To handle the error in a more meaningful way you can use operators like
- * [Flowable.onErrorReturn] or [Flowable.onErrorResumeNext].
  *
  * @sample androidx.compose.runtime.rxjava2.samples.FlowableSample
  *
@@ -119,26 +79,6 @@
  * Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
  * used. To handle the error in a more meaningful way you can use operators like
  * [Single.onErrorReturn] or [Single.onErrorResumeNext].
- */
-@Deprecated(
-    "Use subscribeAsState with an explicit initial value instead. Using null is not always the " +
-        "best default, for example when you have a List it is better to start with emptyList()",
-    ReplaceWith("subscribeAsState(null)")
-)
-@Suppress("NOTHING_TO_INLINE")
-@Composable
-inline fun <T : Any> Single<T>.subscribeAsState(): State<T?> = subscribeAsState(null)
-
-/**
- * Subscribes to this [Single] and represents its value via [State]. Once the value would be
- * posted into the [Single] the returned [State] will be updated causing recomposition of
- * every [State.value] usage.
- *
- * The internal observer will be automatically disposed when this composable disposes.
- *
- * Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
- * used. To handle the error in a more meaningful way you can use operators like
- * [Single.onErrorReturn] or [Single.onErrorResumeNext].
  *
  * @sample androidx.compose.runtime.rxjava2.samples.SingleSample
  *
@@ -159,26 +99,6 @@
  * Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
  * used. To handle the error in a more meaningful way you can use operators like
  * [Maybe.onErrorComplete], [Maybe.onErrorReturn] or [Maybe.onErrorResumeNext].
- */
-@Deprecated(
-    "Use subscribeAsState with an explicit initial value instead. Using null is not always the " +
-        "best default, for example when you have a List it is better to start with emptyList()",
-    ReplaceWith("subscribeAsState(null)")
-)
-@Suppress("NOTHING_TO_INLINE")
-@Composable
-inline fun <T : Any> Maybe<T>.subscribeAsState(): State<T?> = subscribeAsState(null)
-
-/**
- * Subscribes to this [Maybe] and represents its value via [State]. Once the value would be
- * posted into the [Maybe] the returned [State] will be updated causing recomposition of
- * every [State.value] usage.
- *
- * The internal observer will be automatically disposed when this composable disposes.
- *
- * Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
- * used. To handle the error in a more meaningful way you can use operators like
- * [Maybe.onErrorComplete], [Maybe.onErrorReturn] or [Maybe.onErrorResumeNext].
  *
  * @sample androidx.compose.runtime.rxjava2.samples.MaybeSample
  *
diff --git a/compose/runtime/runtime/api/current.txt b/compose/runtime/runtime/api/current.txt
index 9aa8523..2e8f695 100644
--- a/compose/runtime/runtime/api/current.txt
+++ b/compose/runtime/runtime/api/current.txt
@@ -41,12 +41,6 @@
     property public final boolean valid;
   }
 
-  public final class AndroidEmbeddingContext implements androidx.compose.runtime.EmbeddingContext {
-    ctor public AndroidEmbeddingContext();
-    method public boolean isMainThread();
-    method public kotlin.coroutines.CoroutineContext mainThreadCompositionContext();
-  }
-
   @androidx.compose.runtime.ExperimentalComposeApi public interface Applier<N> {
     method public void clear();
     method public void down(N? node);
@@ -61,22 +55,6 @@
   public final class BitwiseOperatorsKt {
   }
 
-  public final class BuildableMap<K, V> implements kotlin.jvm.internal.markers.KMappedMarker java.util.Map<K,V> {
-    ctor public BuildableMap(kotlinx.collections.immutable.PersistentMap<K,? extends V> map);
-    method public kotlinx.collections.immutable.PersistentMap<K,V> component1();
-    method public boolean containsKey(Object! key);
-    method public boolean containsValue(Object! value);
-    method public androidx.compose.runtime.BuildableMap<K,V> copy(kotlinx.collections.immutable.PersistentMap<K,? extends V> map);
-    method public V? get(Object! key);
-    method public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
-    method public java.util.Set<K> getKeys();
-    method public kotlinx.collections.immutable.PersistentMap<K,V> getMap();
-    method public int getSize();
-    method public java.util.Collection<V> getValues();
-    method public boolean isEmpty();
-    property public final kotlinx.collections.immutable.PersistentMap<K,V> map;
-  }
-
   public interface CommitScope {
     method public void onDispose(kotlin.jvm.functions.Function0<kotlin.Unit> callback);
   }
@@ -104,7 +82,7 @@
   }
 
   public final class Composer<N> {
-    ctor public Composer(androidx.compose.runtime.SlotTable slotTable, @androidx.compose.runtime.ComposeCompilerApi androidx.compose.runtime.Applier<N> applier, internal androidx.compose.runtime.CompositionReference parentReference);
+    ctor public Composer(androidx.compose.runtime.SlotTable slotTable, @androidx.compose.runtime.ComposeCompilerApi androidx.compose.runtime.Applier<N> applier, androidx.compose.runtime.CompositionReference parentReference);
     method @androidx.compose.runtime.InternalComposeApi public void applyChanges();
     method @androidx.compose.runtime.ComposeCompilerApi public inline <T> T! cache(boolean invalid, kotlin.jvm.functions.Function0<? extends T> block);
     method @androidx.compose.runtime.ComposeCompilerApi public boolean changed(Object? value);
@@ -350,22 +328,14 @@
   }
 
   public final class Recomposer extends androidx.compose.runtime.CompositionReference {
-    ctor public Recomposer(androidx.compose.runtime.EmbeddingContext embeddingContext);
-    ctor public Recomposer();
+    ctor public Recomposer(kotlin.coroutines.CoroutineContext effectCoroutineContext, androidx.compose.runtime.EmbeddingContext embeddingContext);
     method public suspend Object? awaitIdle(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
-    method public void composeInitial$metalava_module(androidx.compose.runtime.Composer<?> composer, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
-    method public kotlin.coroutines.CoroutineContext? getApplyingCoroutineContext$metalava_module();
-    method public boolean getCollectingKeySources$metalava_module();
-    method public int getCompoundHashKey$metalava_module();
     method public androidx.compose.runtime.EmbeddingContext getEmbeddingContext();
     method public boolean hasInvalidations();
-    method public void invalidate$metalava_module(androidx.compose.runtime.Composer<?> composer);
+    method public suspend Object? join(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
     method public suspend Object? recomposeAndApplyChanges(long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
-    method public void recordInspectionTable$metalava_module(java.util.Set<androidx.compose.runtime.SlotTable> table);
     method public suspend Object? runRecomposeAndApplyChanges(kotlin.coroutines.Continuation<?> p);
-    property public kotlin.coroutines.CoroutineContext? applyingCoroutineContext;
-    property public boolean collectingKeySources;
-    property public int compoundHashKey;
+    method public void shutDown();
     property public final androidx.compose.runtime.EmbeddingContext embeddingContext;
     field public static final androidx.compose.runtime.Recomposer.Companion Companion;
   }
@@ -375,7 +345,7 @@
   }
 
   public final class RecomposerKt {
-    method public static suspend Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.runtime.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+    method public static suspend <R> Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.runtime.Recomposer,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R> p);
   }
 
   public final class RememberKt {
diff --git a/compose/runtime/runtime/api/public_plus_experimental_current.txt b/compose/runtime/runtime/api/public_plus_experimental_current.txt
index 9aa8523..2e8f695 100644
--- a/compose/runtime/runtime/api/public_plus_experimental_current.txt
+++ b/compose/runtime/runtime/api/public_plus_experimental_current.txt
@@ -41,12 +41,6 @@
     property public final boolean valid;
   }
 
-  public final class AndroidEmbeddingContext implements androidx.compose.runtime.EmbeddingContext {
-    ctor public AndroidEmbeddingContext();
-    method public boolean isMainThread();
-    method public kotlin.coroutines.CoroutineContext mainThreadCompositionContext();
-  }
-
   @androidx.compose.runtime.ExperimentalComposeApi public interface Applier<N> {
     method public void clear();
     method public void down(N? node);
@@ -61,22 +55,6 @@
   public final class BitwiseOperatorsKt {
   }
 
-  public final class BuildableMap<K, V> implements kotlin.jvm.internal.markers.KMappedMarker java.util.Map<K,V> {
-    ctor public BuildableMap(kotlinx.collections.immutable.PersistentMap<K,? extends V> map);
-    method public kotlinx.collections.immutable.PersistentMap<K,V> component1();
-    method public boolean containsKey(Object! key);
-    method public boolean containsValue(Object! value);
-    method public androidx.compose.runtime.BuildableMap<K,V> copy(kotlinx.collections.immutable.PersistentMap<K,? extends V> map);
-    method public V? get(Object! key);
-    method public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
-    method public java.util.Set<K> getKeys();
-    method public kotlinx.collections.immutable.PersistentMap<K,V> getMap();
-    method public int getSize();
-    method public java.util.Collection<V> getValues();
-    method public boolean isEmpty();
-    property public final kotlinx.collections.immutable.PersistentMap<K,V> map;
-  }
-
   public interface CommitScope {
     method public void onDispose(kotlin.jvm.functions.Function0<kotlin.Unit> callback);
   }
@@ -104,7 +82,7 @@
   }
 
   public final class Composer<N> {
-    ctor public Composer(androidx.compose.runtime.SlotTable slotTable, @androidx.compose.runtime.ComposeCompilerApi androidx.compose.runtime.Applier<N> applier, internal androidx.compose.runtime.CompositionReference parentReference);
+    ctor public Composer(androidx.compose.runtime.SlotTable slotTable, @androidx.compose.runtime.ComposeCompilerApi androidx.compose.runtime.Applier<N> applier, androidx.compose.runtime.CompositionReference parentReference);
     method @androidx.compose.runtime.InternalComposeApi public void applyChanges();
     method @androidx.compose.runtime.ComposeCompilerApi public inline <T> T! cache(boolean invalid, kotlin.jvm.functions.Function0<? extends T> block);
     method @androidx.compose.runtime.ComposeCompilerApi public boolean changed(Object? value);
@@ -350,22 +328,14 @@
   }
 
   public final class Recomposer extends androidx.compose.runtime.CompositionReference {
-    ctor public Recomposer(androidx.compose.runtime.EmbeddingContext embeddingContext);
-    ctor public Recomposer();
+    ctor public Recomposer(kotlin.coroutines.CoroutineContext effectCoroutineContext, androidx.compose.runtime.EmbeddingContext embeddingContext);
     method public suspend Object? awaitIdle(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
-    method public void composeInitial$metalava_module(androidx.compose.runtime.Composer<?> composer, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
-    method public kotlin.coroutines.CoroutineContext? getApplyingCoroutineContext$metalava_module();
-    method public boolean getCollectingKeySources$metalava_module();
-    method public int getCompoundHashKey$metalava_module();
     method public androidx.compose.runtime.EmbeddingContext getEmbeddingContext();
     method public boolean hasInvalidations();
-    method public void invalidate$metalava_module(androidx.compose.runtime.Composer<?> composer);
+    method public suspend Object? join(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
     method public suspend Object? recomposeAndApplyChanges(long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
-    method public void recordInspectionTable$metalava_module(java.util.Set<androidx.compose.runtime.SlotTable> table);
     method public suspend Object? runRecomposeAndApplyChanges(kotlin.coroutines.Continuation<?> p);
-    property public kotlin.coroutines.CoroutineContext? applyingCoroutineContext;
-    property public boolean collectingKeySources;
-    property public int compoundHashKey;
+    method public void shutDown();
     property public final androidx.compose.runtime.EmbeddingContext embeddingContext;
     field public static final androidx.compose.runtime.Recomposer.Companion Companion;
   }
@@ -375,7 +345,7 @@
   }
 
   public final class RecomposerKt {
-    method public static suspend Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.runtime.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+    method public static suspend <R> Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.runtime.Recomposer,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R> p);
   }
 
   public final class RememberKt {
diff --git a/compose/runtime/runtime/api/restricted_current.txt b/compose/runtime/runtime/api/restricted_current.txt
index 4d1aac1..4588666 100644
--- a/compose/runtime/runtime/api/restricted_current.txt
+++ b/compose/runtime/runtime/api/restricted_current.txt
@@ -41,12 +41,6 @@
     property public final boolean valid;
   }
 
-  public final class AndroidEmbeddingContext implements androidx.compose.runtime.EmbeddingContext {
-    ctor public AndroidEmbeddingContext();
-    method public boolean isMainThread();
-    method public kotlin.coroutines.CoroutineContext mainThreadCompositionContext();
-  }
-
   @androidx.compose.runtime.ExperimentalComposeApi public interface Applier<N> {
     method public void clear();
     method public void down(N? node);
@@ -61,22 +55,6 @@
   public final class BitwiseOperatorsKt {
   }
 
-  public final class BuildableMap<K, V> implements kotlin.jvm.internal.markers.KMappedMarker java.util.Map<K,V> {
-    ctor public BuildableMap(kotlinx.collections.immutable.PersistentMap<K,? extends V> map);
-    method public kotlinx.collections.immutable.PersistentMap<K,V> component1();
-    method public boolean containsKey(Object! key);
-    method public boolean containsValue(Object! value);
-    method public androidx.compose.runtime.BuildableMap<K,V> copy(kotlinx.collections.immutable.PersistentMap<K,? extends V> map);
-    method public V? get(Object! key);
-    method public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
-    method public java.util.Set<K> getKeys();
-    method public kotlinx.collections.immutable.PersistentMap<K,V> getMap();
-    method public int getSize();
-    method public java.util.Collection<V> getValues();
-    method public boolean isEmpty();
-    property public final kotlinx.collections.immutable.PersistentMap<K,V> map;
-  }
-
   public interface CommitScope {
     method public void onDispose(kotlin.jvm.functions.Function0<kotlin.Unit> callback);
   }
@@ -104,7 +82,7 @@
   }
 
   public final class Composer<N> {
-    ctor public Composer(androidx.compose.runtime.SlotTable slotTable, @androidx.compose.runtime.ComposeCompilerApi androidx.compose.runtime.Applier<N> applier, internal androidx.compose.runtime.CompositionReference parentReference);
+    ctor public Composer(androidx.compose.runtime.SlotTable slotTable, @androidx.compose.runtime.ComposeCompilerApi androidx.compose.runtime.Applier<N> applier, androidx.compose.runtime.CompositionReference parentReference);
     method @androidx.compose.runtime.InternalComposeApi public void applyChanges();
     method @androidx.compose.runtime.ComposeCompilerApi public inline <T> T! cache(boolean invalid, kotlin.jvm.functions.Function0<? extends T> block);
     method @androidx.compose.runtime.ComposeCompilerApi public boolean changed(Object? value);
@@ -376,22 +354,14 @@
   }
 
   public final class Recomposer extends androidx.compose.runtime.CompositionReference {
-    ctor public Recomposer(androidx.compose.runtime.EmbeddingContext embeddingContext);
-    ctor public Recomposer();
+    ctor public Recomposer(kotlin.coroutines.CoroutineContext effectCoroutineContext, androidx.compose.runtime.EmbeddingContext embeddingContext);
     method public suspend Object? awaitIdle(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
-    method public void composeInitial$metalava_module(androidx.compose.runtime.Composer<?> composer, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
-    method public kotlin.coroutines.CoroutineContext? getApplyingCoroutineContext$metalava_module();
-    method public boolean getCollectingKeySources$metalava_module();
-    method public int getCompoundHashKey$metalava_module();
     method public androidx.compose.runtime.EmbeddingContext getEmbeddingContext();
     method public boolean hasInvalidations();
-    method public void invalidate$metalava_module(androidx.compose.runtime.Composer<?> composer);
+    method public suspend Object? join(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
     method public suspend Object? recomposeAndApplyChanges(long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
-    method public void recordInspectionTable$metalava_module(java.util.Set<androidx.compose.runtime.SlotTable> table);
     method public suspend Object? runRecomposeAndApplyChanges(kotlin.coroutines.Continuation<?> p);
-    property public kotlin.coroutines.CoroutineContext? applyingCoroutineContext;
-    property public boolean collectingKeySources;
-    property public int compoundHashKey;
+    method public void shutDown();
     property public final androidx.compose.runtime.EmbeddingContext embeddingContext;
     field public static final androidx.compose.runtime.Recomposer.Companion Companion;
   }
@@ -401,7 +371,7 @@
   }
 
   public final class RecomposerKt {
-    method public static suspend Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.runtime.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+    method public static suspend <R> Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.runtime.Recomposer,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R> p);
   }
 
   public final class RememberKt {
diff --git a/compose/runtime/runtime/build.gradle b/compose/runtime/runtime/build.gradle
index d70e3f2..20dc20c 100644
--- a/compose/runtime/runtime/build.gradle
+++ b/compose/runtime/runtime/build.gradle
@@ -78,11 +78,11 @@
                 implementation(KOTLIN_STDLIB_COMMON)
                 implementation(KOTLIN_COROUTINES_CORE)
                 api project(':compose:runtime:runtime-dispatch')
+                implementation "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3"
             }
             jvmMain.dependencies {
                 implementation(KOTLIN_STDLIB)
                 api(KOTLIN_COROUTINES_CORE)
-                implementation "org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3"
             }
             androidMain {
                 dependencies {
diff --git a/compose/runtime/runtime/src/androidAndroidTest/kotlin/androidx/compose/runtime/SuspendingEffectsTests.kt b/compose/runtime/runtime/src/androidAndroidTest/kotlin/androidx/compose/runtime/SuspendingEffectsTests.kt
index 0d2eafc..238b6c7 100644
--- a/compose/runtime/runtime/src/androidAndroidTest/kotlin/androidx/compose/runtime/SuspendingEffectsTests.kt
+++ b/compose/runtime/runtime/src/androidAndroidTest/kotlin/androidx/compose/runtime/SuspendingEffectsTests.kt
@@ -170,8 +170,7 @@
         var rememberCoroutineScopeFrameClock: MonotonicFrameClock? = null
 
         compose {
-            recomposerClock = currentComposer.parentReference
-                .applyingCoroutineContext?.get(MonotonicFrameClock)
+            recomposerClock = currentComposer.applyCoroutineContext[MonotonicFrameClock]
             LaunchedTask {
                 launchedTaskClock = coroutineContext[MonotonicFrameClock]
             }
diff --git a/compose/runtime/runtime/src/androidMain/kotlin/androidx/compose/runtime/ActualAndroid.kt b/compose/runtime/runtime/src/androidMain/kotlin/androidx/compose/runtime/ActualAndroid.kt
index 98d0970..86e3745 100644
--- a/compose/runtime/runtime/src/androidMain/kotlin/androidx/compose/runtime/ActualAndroid.kt
+++ b/compose/runtime/runtime/src/androidMain/kotlin/androidx/compose/runtime/ActualAndroid.kt
@@ -21,7 +21,7 @@
 import kotlinx.coroutines.Dispatchers
 import kotlin.coroutines.CoroutineContext
 
-class AndroidEmbeddingContext : EmbeddingContext {
+private object AndroidEmbeddingContext : EmbeddingContext {
 
     override fun isMainThread(): Boolean {
         return Looper.myLooper() == Looper.getMainLooper()
@@ -32,7 +32,7 @@
     }
 }
 
-actual fun EmbeddingContext(): EmbeddingContext = AndroidEmbeddingContext()
+actual fun EmbeddingContext(): EmbeddingContext = AndroidEmbeddingContext
 
 // TODO: Our host-side tests still grab the Android actuals based on SDK stubs that return null.
 // Satisfy their dependencies.
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Composer.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Composer.kt
index 8aa10e9..bd97ce8 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Composer.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Composer.kt
@@ -23,6 +23,8 @@
 
 import androidx.compose.runtime.tooling.InspectionTables
 import kotlin.coroutines.CoroutineContext
+import kotlinx.collections.immutable.PersistentMap
+import kotlinx.collections.immutable.persistentHashMapOf
 
 internal typealias Change<N> = (
     applier: Applier<N>,
@@ -299,7 +301,11 @@
  * value. It is used both to represent the values provided by a [Providers] call and the combined
  * scope of all provided ambients.
  */
-internal typealias AmbientMap = BuildableMap<Ambient<Any?>, State<Any?>>
+internal typealias AmbientMap = PersistentMap<Ambient<Any?>, State<Any?>>
+
+internal inline fun AmbientMap.mutate(
+    mutator: (MutableMap<Ambient<Any?>, State<Any?>>) -> Unit
+): AmbientMap = builder().apply(mutator).build()
 
 @Suppress("UNCHECKED_CAST")
 internal fun <T> AmbientMap.contains(key: Ambient<T>) = this.containsKey(key as Ambient<Any?>)
@@ -309,7 +315,7 @@
 
 @Composable
 private fun ambientMapOf(values: Array<out ProvidedValue<*>>): AmbientMap {
-    val result: AmbientMap = buildableMapOf()
+    val result: AmbientMap = persistentHashMapOf()
     return result.mutate {
         for (provided in values) {
             @Suppress("UNCHECKED_CAST")
@@ -336,7 +342,7 @@
     /**
      * Parent of this composition; a [Recomposer] for root-level compositions.
      */
-    internal val parentReference: CompositionReference
+    private val parentReference: CompositionReference
 ) {
     init {
         FrameManager.ensureStarted()
@@ -362,7 +368,7 @@
     private val invalidations: MutableList<Invalidation> = mutableListOf()
     internal var pendingInvalidScopes = false
     private val entersStack = IntStack()
-    private var parentProvider: AmbientMap = buildableMapOf()
+    private var parentProvider: AmbientMap = persistentHashMapOf()
     private val providerUpdates = HashMap<Int, AmbientMap>()
     private var providersInvalid = false
     private val providersInvalidStack = IntStack()
@@ -386,6 +392,9 @@
     private var insertAnchor: Anchor = insertTable.read { it.anchor(0) }
     private val insertFixups = mutableListOf<Change<N>>()
 
+    internal val applyCoroutineContext: CoroutineContext
+        get() = parentReference.effectCoroutineContext
+
     /**
      * Inserts a "Replaceable Group" starting marker in the slot table at the current execution
      * position. A Replaceable Group is a group which cannot be moved between its siblings, but
@@ -2450,8 +2459,8 @@
             composers.remove(composer)
         }
 
-        override val applyingCoroutineContext: CoroutineContext?
-            get() = parentReference.applyingCoroutineContext
+        override val effectCoroutineContext: CoroutineContext
+            get() = parentReference.effectCoroutineContext
 
         override fun composeInitial(composer: Composer<*>, composable: @Composable () -> Unit) {
             parentReference.composeInitial(composer, composable)
@@ -2949,4 +2958,4 @@
 internal const val referenceKey = 206
 
 @PublishedApi
-internal val reference = OpaqueKey("reference")
\ No newline at end of file
+internal val reference = OpaqueKey("reference")
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/CompositionReference.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/CompositionReference.kt
index 26718bd..d6e57ca 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/CompositionReference.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/CompositionReference.kt
@@ -17,8 +17,9 @@
 package androidx.compose.runtime
 
 import kotlin.coroutines.CoroutineContext
+import kotlinx.collections.immutable.persistentHashMapOf
 
-private val EmptyAmbientMap: AmbientMap = buildableMapOf()
+private val EmptyAmbientMap: AmbientMap = persistentHashMapOf()
 
 /**
  * A [CompositionReference] is an opaque type that is used to logically "link" two compositions
@@ -35,15 +36,15 @@
 abstract class CompositionReference internal constructor() {
     internal abstract val compoundHashKey: Int
     internal abstract val collectingKeySources: Boolean
-    internal abstract val applyingCoroutineContext: CoroutineContext?
-    internal abstract fun recordInspectionTable(table: MutableSet<SlotTable>)
+    internal abstract val effectCoroutineContext: CoroutineContext
     internal abstract fun composeInitial(composer: Composer<*>, composable: @Composable () -> Unit)
     internal abstract fun invalidate(composer: Composer<*>)
 
+    internal open fun recordInspectionTable(table: MutableSet<SlotTable>) {}
     internal open fun <T> getAmbient(key: Ambient<T>): T = key.defaultValueHolder.value
     internal open fun getAmbientScope(): AmbientMap = EmptyAmbientMap
     internal open fun registerComposer(composer: Composer<*>) {}
     internal open fun unregisterComposer(composer: Composer<*>) {}
     internal open fun startComposing() {}
     internal open fun doneComposing() {}
-}
\ No newline at end of file
+}
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Expect.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Expect.kt
index 46fccba3..bfc4e99 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Expect.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Expect.kt
@@ -52,42 +52,6 @@
     fun compareAndSet(expect: V, newValue: V): Boolean
 }
 
-internal expect class BuildableMapBuilder<K, V> : MutableMap<K, V> {
-    fun build(): BuildableMap<K, V>
-}
-
-expect class BuildableMap<K, V> : Map<K, V> {
-    internal fun builder(): BuildableMapBuilder<K, V>
-}
-
-@Suppress("UNCHECKED_CAST")
-internal inline fun <K, V> BuildableMap<K, V>.mutate(
-    mutator: (MutableMap<K, V>) -> Unit
-): BuildableMap<K, V> = builder().apply(mutator).build()
-
-internal expect fun <K, V> buildableMapOf(): BuildableMap<K, V>
-
-internal expect class BuildableListBuilder<T> : MutableList<T> {
-    fun build(): BuildableList<T>
-}
-
-internal expect class BuildableList<T> : List<T> {
-    internal fun builder(): BuildableListBuilder<T>
-    internal fun add(element: T): BuildableList<T>
-    internal fun add(index: Int, element: T): BuildableList<T>
-    internal fun addAll(elements: Collection<T>): BuildableList<T>
-    internal fun remove(element: T): BuildableList<T>
-    internal fun removeAll(elements: Collection<T>): BuildableList<T>
-    internal fun removeAt(index: Int): BuildableList<T>
-    internal fun set(index: Int, element: T): BuildableList<T>
-}
-
-internal expect fun <T> buildableListOf(): BuildableList<T>
-
-internal inline fun <T> BuildableList<T>.mutate(
-    mutator: (MutableList<T>) -> Unit
-): BuildableList<T> = builder().apply(mutator).build()
-
 @MustBeDocumented
 @Retention(AnnotationRetention.BINARY)
 @Target(
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Recomposer.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Recomposer.kt
index daa5de5..ad6a6d8 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Recomposer.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Recomposer.kt
@@ -30,9 +30,9 @@
 import androidx.compose.runtime.snapshots.SnapshotReadObserver
 import androidx.compose.runtime.snapshots.SnapshotWriteObserver
 import androidx.compose.runtime.snapshots.takeMutableSnapshot
+import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.CoroutineStart
-import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.Job
 import kotlinx.coroutines.NonCancellable
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.launch
@@ -49,20 +49,29 @@
 /**
  * Runs [block] with a new, active [Recomposer] applying changes in the calling [CoroutineContext].
  */
-suspend fun withRunningRecomposer(
-    block: suspend CoroutineScope.(recomposer: Recomposer) -> Unit
-): Unit = coroutineScope {
-    val recomposer = Recomposer()
-    val recompositionJob = launch { recomposer.runRecomposeAndApplyChanges() }
-    block(recomposer)
-    recompositionJob.cancel()
+suspend fun <R> withRunningRecomposer(
+    block: suspend CoroutineScope.(recomposer: Recomposer) -> R
+): R = coroutineScope {
+    val recomposerJob = Job(coroutineContext[Job])
+    val recomposer = Recomposer(coroutineContext + recomposerJob)
+    // Will be cancelled when recomposerJob cancels
+    launch { recomposer.runRecomposeAndApplyChanges() }
+    try {
+        block(recomposer)
+    } finally {
+        recomposerJob.cancel()
+    }
 }
 
 /**
  * The scheduler for performing recomposition and applying updates to one or more [Composition]s.
  */
+// RedundantVisibilityModifier suppressed because metalava picks up internal function overrides
+// if 'internal' is not explicitly specified - b/171342041
+@Suppress("RedundantVisibilityModifier")
 class Recomposer(
-    val embeddingContext: EmbeddingContext = EmbeddingContext()
+    effectCoroutineContext: CoroutineContext,
+    val embeddingContext: EmbeddingContext = EmbeddingContext(),
 ) : CompositionReference() {
 
     /**
@@ -82,14 +91,6 @@
      */
     private val idlingLatch = Latch()
 
-    /**
-     * Enforces that only one caller of [runRecomposeAndApplyChanges] is active at a time
-     * while carrying its calling scope. Used to offer [applyingCoroutineContext] to
-     * [CompositionReference] consumers.
-     */
-    // TODO(adamp) convert to atomicfu once ready
-    private val applyingScope = AtomicReference<CoroutineScope?>(null)
-
     private val broadcastFrameClock = BroadcastFrameClock {
         synchronized(invalidComposers) {
             invalidComposersAwaiter?.let {
@@ -100,6 +101,30 @@
         }
     }
 
+    private val runningRecomposeJobOrException = AtomicReference<Any?>(null)
+
+    /**
+     * A [Job] used as a parent of any effects created by this [Recomposer]'s compositions.
+     *
+     */
+    private val effectJob = Job(effectCoroutineContext[Job]).apply {
+        invokeOnCompletion { throwable ->
+            // Since the running recompose job is operating in a disjoint job if present,
+            // kick it out and make sure no new ones start.
+            val cancellation = throwable ?: CancellationException("Recomposer completed")
+            val old = runningRecomposeJobOrException.getAndSet(cancellation)
+            if (old is Job) {
+                old.cancel(CancellationException("Recomposer cancelled", cancellation))
+            }
+        }
+    }
+
+    /**
+     * The [effectCoroutineContext] is derived from [effectCoroutineContext]
+     */
+    internal override val effectCoroutineContext: CoroutineContext =
+        effectCoroutineContext + broadcastFrameClock + effectJob
+
     /**
      * Await the invalidation of any associated [Composer]s, recompose them, and apply their
      * changes to their associated [Composition]s if recomposition is successful.
@@ -110,35 +135,37 @@
      * This method never returns. Cancel the calling [CoroutineScope] to stop.
      */
     suspend fun runRecomposeAndApplyChanges(): Nothing {
-        coroutineScope {
-            recomposeAndApplyChanges(Long.MAX_VALUE)
-        }
+        recomposeAndApplyChanges(Long.MAX_VALUE)
         error("this function never returns")
     }
 
     /**
      * Await the invalidation of any associated [Composer]s, recompose them, and apply their
-     * changes to their associated [Composition]s if recomposition is successful. Any launched
-     * effects of composition will be launched into the receiver [CoroutineScope].
+     * changes to their associated [Composition]s if recomposition is successful.
      *
      * While [runRecomposeAndApplyChanges] is running, [awaitIdle] will suspend until there are no
      * more invalid composers awaiting recomposition.
      *
-     * This method returns after recomposing [frameCount] times.
+     * This method returns after recomposing [frameCount] times, or throws [CancellationException]
+     * if the [Recomposer] is [shutDown] or if the [effectCoroutineContext] used to construct the
+     * [Recomposer] is cancelled.
      */
     suspend fun recomposeAndApplyChanges(frameCount: Long) {
-        var framesRemaining = frameCount
-        val toRecompose = mutableListOf<Composer<*>>()
-
-        // Cache this so we don't go looking for it each time through the loop.
-        val frameClock = coroutineContext[MonotonicFrameClock] ?: DefaultMonotonicFrameClock
-
-        // Install the broadcastFrameClock so that all composition-launched coroutines use it
+        val parentFrameClock = coroutineContext[MonotonicFrameClock] ?: DefaultMonotonicFrameClock
         withContext(broadcastFrameClock) {
-            if (!applyingScope.compareAndSet(null, this)) {
-                error("already recomposing and applying changes")
+            // Enforce mutual exclusion of callers
+            val myJob = coroutineContext[Job]
+            while (true) {
+                when (val old = runningRecomposeJobOrException.get()) {
+                    is Exception -> throw CancellationException("Recomposer cancelled", old)
+                    is Job -> error("Recomposition is already running")
+                    null -> if (runningRecomposeJobOrException.compareAndSet(null, myJob)) break
+                }
             }
 
+            var framesRemaining = frameCount
+            val toRecompose = mutableListOf<Composer<*>>()
+
             try {
                 idlingLatch.closeLatch()
                 while (frameCount == Long.MAX_VALUE || framesRemaining-- > 0L) {
@@ -176,7 +203,7 @@
                     // We use the cached frame clock from above not just so that we don't locate it
                     // each time, but because we've installed the broadcastFrameClock as the scope
                     // clock above for user code to locate.
-                    frameClock.withFrameNanos { frameTime ->
+                    parentFrameClock.withFrameNanos { frameTime ->
                         trace("recomposeFrame") {
                             // Propagate the frame time to anyone who is awaiting from the
                             // recomposer clock.
@@ -206,17 +233,35 @@
                     }
                 }
             } finally {
-                applyingScope.set(null)
+                // Only replace the value if it currently matches; a new caller may have already
+                // set its own job as a replacement before we resume to cancel.
+                runningRecomposeJobOrException.compareAndSet(myJob, null)
                 // If we're not still running frames, we're effectively idle.
                 idlingLatch.openLatch()
             }
         }
     }
 
-    override val applyingCoroutineContext: CoroutineContext?
-        get() = applyingScope.get()?.coroutineContext
+    /**
+     * Permanently shut down this [Recomposer] for future use. All ongoing recompositions will stop,
+     * new composer invalidations with this [Recomposer] at the root will no longer occur,
+     * and any [LaunchedTask]s currently running in compositions managed by this [Recomposer]
+     * will be cancelled. Any [rememberCoroutineScope] scopes from compositions managed by this
+     * [Recomposer] will also be cancelled. See [join] to await the completion of all of these
+     * outstanding tasks.
+     */
+    fun shutDown() {
+        effectJob.cancel()
+    }
 
-    override fun composeInitial(
+    /**
+     * Await the completion of a [shutDown] operation.
+     */
+    suspend fun join() {
+        effectJob.join()
+    }
+
+    internal override fun composeInitial(
         composer: Composer<*>,
         composable: @Composable () -> Unit
     ) {
@@ -312,19 +357,14 @@
     suspend fun awaitIdle(): Unit = idlingLatch.await()
 
     // Recomposer always starts with a constant compound hash
-    override val compoundHashKey: Int
+    internal override val compoundHashKey: Int
         get() = RecomposerCompoundHashKey
 
     // Collecting key sources happens at the level of a composer; starts as false
-    override val collectingKeySources: Boolean
+    internal override val collectingKeySources: Boolean
         get() = false
 
-    override fun recordInspectionTable(table: MutableSet<SlotTable>) {
-        // TODO: The root recomposer might be a better place to set up inspection
-        // than the current configuration with an ambient
-    }
-
-    override fun invalidate(composer: Composer<*>) {
+    internal override fun invalidate(composer: Composer<*>) {
         synchronized(invalidComposers) {
             invalidComposers.add(composer)
             invalidComposersAwaiter?.let {
@@ -336,28 +376,23 @@
     }
 
     companion object {
-        private val embeddingContext by lazy { EmbeddingContext() }
-        /**
-         * Retrieves [Recomposer] for the current thread. Needs to be the main thread.
-         */
-        @TestOnly
-        fun current(): Recomposer {
-            return mainRecomposer ?: run {
-                val mainScope = CoroutineScope(
-                    NonCancellable +
-                        embeddingContext.mainThreadCompositionContext()
-                )
+        private val mainRecomposer: Recomposer by lazy {
+            val embeddingContext = EmbeddingContext()
+            val mainScope = CoroutineScope(
+                NonCancellable + embeddingContext.mainThreadCompositionContext()
+            )
 
-                Recomposer(embeddingContext).also {
-                    mainRecomposer = it
-                    @OptIn(ExperimentalCoroutinesApi::class)
-                    mainScope.launch(start = CoroutineStart.UNDISPATCHED) {
-                        it.runRecomposeAndApplyChanges()
-                    }
+            Recomposer(mainScope.coroutineContext, embeddingContext).also {
+                mainScope.launch {
+                    it.runRecomposeAndApplyChanges()
                 }
             }
         }
 
-        private var mainRecomposer: Recomposer? = null
+        /**
+         * Retrieves [Recomposer] for the current thread. Needs to be the main thread.
+         */
+        @TestOnly
+        fun current(): Recomposer = mainRecomposer
     }
 }
\ No newline at end of file
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SuspendingEffects.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SuspendingEffects.kt
index 7023821..e0333a1 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SuspendingEffects.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SuspendingEffects.kt
@@ -51,19 +51,8 @@
         }
     )
 } else {
-    val applyContext = composer.parentReference.applyingCoroutineContext
-    if (applyContext == null) {
-        CoroutineScope(
-            Job().apply {
-                completeExceptionally(
-                    IllegalStateException(
-                        "cannot create a new composition " +
-                            "coroutine scope - Composition is not active"
-                    )
-                )
-            }
-        )
-    } else CoroutineScope(applyContext + Job(applyContext[Job]) + coroutineContext)
+    val applyContext = composer.applyCoroutineContext
+    CoroutineScope(applyContext + Job(applyContext[Job]) + coroutineContext)
 }
 
 /**
@@ -103,18 +92,15 @@
 }
 
 private class LaunchedTaskImpl(
-    private val parentRef: CompositionReference,
+    parentCoroutineContext: CoroutineContext,
     private val task: suspend CoroutineScope.() -> Unit
 ) : CompositionLifecycleObserver {
 
+    private val scope = CoroutineScope(parentCoroutineContext)
     private var job: Job? = null
 
     override fun onEnter() {
         job?.cancel("Old job was still running!")
-        val scope = CoroutineScope(
-            parentRef.applyingCoroutineContext
-                ?: error("cannot launch LaunchedTask - Recomposer is not running")
-        )
         job = scope.launch(block = task)
     }
 
@@ -136,8 +122,8 @@
 fun LaunchedTask(
     block: suspend CoroutineScope.() -> Unit
 ) {
-    val parentRef = currentComposer.parentReference
-    remember { LaunchedTaskImpl(parentRef, block) }
+    val applyContext = currentComposer.applyCoroutineContext
+    remember { LaunchedTaskImpl(applyContext, block) }
 }
 
 /**
@@ -156,8 +142,8 @@
     key: Any?,
     block: suspend CoroutineScope.() -> Unit
 ) {
-    val parentRef = currentComposer.parentReference
-    remember(key) { LaunchedTaskImpl(parentRef, block) }
+    val applyContext = currentComposer.applyCoroutineContext
+    remember(key) { LaunchedTaskImpl(applyContext, block) }
 }
 
 /**
@@ -177,8 +163,8 @@
     key2: Any?,
     block: suspend CoroutineScope.() -> Unit
 ) {
-    val parentRef = currentComposer.parentReference
-    remember(key1, key2) { LaunchedTaskImpl(parentRef, block) }
+    val applyContext = currentComposer.applyCoroutineContext
+    remember(key1, key2) { LaunchedTaskImpl(applyContext, block) }
 }
 
 /**
@@ -199,8 +185,8 @@
     key3: Any?,
     block: suspend CoroutineScope.() -> Unit
 ) {
-    val parentRef = currentComposer.parentReference
-    remember(key1, key2, key3) { LaunchedTaskImpl(parentRef, block) }
+    val applyContext = currentComposer.applyCoroutineContext
+    remember(key1, key2, key3) { LaunchedTaskImpl(applyContext, block) }
 }
 
 /**
@@ -219,6 +205,6 @@
     vararg keys: Any?,
     block: suspend CoroutineScope.() -> Unit
 ) {
-    val parentRef = currentComposer.parentReference
-    remember(*keys) { LaunchedTaskImpl(parentRef, block) }
+    val applyContext = currentComposer.applyCoroutineContext
+    remember(*keys) { LaunchedTaskImpl(applyContext, block) }
 }
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/SnapshotStateList.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/SnapshotStateList.kt
index dc3a570..aa29075 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/SnapshotStateList.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/SnapshotStateList.kt
@@ -18,10 +18,10 @@
 
 package androidx.compose.runtime.snapshots
 
-import androidx.compose.runtime.BuildableList
 import androidx.compose.runtime.ExperimentalComposeApi
 import androidx.compose.runtime.Stable
-import androidx.compose.runtime.buildableListOf
+import kotlinx.collections.immutable.PersistentList
+import kotlinx.collections.immutable.persistentListOf
 
 /**
  * An implementation of [MutableList] that can be observed and snapshot. This is the result type
@@ -34,7 +34,7 @@
 @Stable
 class SnapshotStateList<T> : MutableList<T>, StateObject {
     override var firstStateRecord: StateListStateRecord<T> =
-        StateListStateRecord<T>(buildableListOf())
+        StateListStateRecord<T>(persistentListOf())
         private set
 
     override fun prependStateRecord(value: StateRecord) {
@@ -53,7 +53,7 @@
      * This is an internal implementation class of [SnapshotStateList]. Do not use.
      */
     class StateListStateRecord<T> internal constructor(
-        internal var list: BuildableList<T>
+        internal var list: PersistentList<T>
     ) : StateRecord() {
         internal var modification = 0
         override fun assign(value: StateRecord) {
@@ -85,7 +85,7 @@
         it.addAll(index, elements)
     }
     override fun addAll(elements: Collection<T>) = conditionalUpdate { it.addAll(elements) }
-    override fun clear() = writable { list = buildableListOf() }
+    override fun clear() = writable { list = persistentListOf() }
     override fun remove(element: T) = conditionalUpdate { it.remove(element) }
     override fun removeAll(elements: Collection<T>) = conditionalUpdate { it.removeAll(elements) }
     override fun removeAt(index: Int) = get(index).also { update { it.removeAt(index) } }
@@ -118,7 +118,7 @@
             result
         }
 
-    private inline fun update(block: (BuildableList<T>) -> BuildableList<T>) = withCurrent {
+    private inline fun update(block: (PersistentList<T>) -> PersistentList<T>) = withCurrent {
         val newList = block(list)
         if (newList !== list) writable {
             list = newList
@@ -126,7 +126,7 @@
         }
     }
 
-    private inline fun conditionalUpdate(block: (BuildableList<T>) -> BuildableList<T>): Boolean =
+    private inline fun conditionalUpdate(block: (PersistentList<T>) -> PersistentList<T>): Boolean =
         withCurrent {
             val newList = block(list)
             if (newList !== list) writable {
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMap.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMap.kt
index df96705..9bc955b 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMap.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMap.kt
@@ -18,10 +18,10 @@
 
 package androidx.compose.runtime.snapshots
 
-import androidx.compose.runtime.BuildableMap
 import androidx.compose.runtime.ExperimentalComposeApi
 import androidx.compose.runtime.Stable
-import androidx.compose.runtime.buildableMapOf
+import kotlinx.collections.immutable.PersistentMap
+import kotlinx.collections.immutable.persistentHashMapOf
 
 /**
  * An implementation of [MutableMap] that can be observed and snapshot. This is the result type
@@ -34,7 +34,7 @@
 @Stable
 class SnapshotStateMap<K, V> : MutableMap<K, V>, StateObject {
     override var firstStateRecord: StateMapStateRecord<K, V> =
-        StateMapStateRecord<K, V>(buildableMapOf())
+        StateMapStateRecord<K, V>(persistentHashMapOf())
         private set
 
     override fun prependStateRecord(value: StateRecord) {
@@ -51,7 +51,7 @@
     override val keys: MutableSet<K> = SnapshotMapKeySet(this)
     override val values: MutableCollection<V> = SnapshotMapValueSet(this)
 
-    override fun clear() = update { buildableMapOf() }
+    override fun clear() = update { persistentHashMapOf() }
     override fun put(key: K, value: V): V? = mutate { it.put(key, value) }
     override fun putAll(from: Map<out K, V>) = mutate { it.putAll(from) }
     override fun remove(key: K): V? = mutate { it.remove(key) }
@@ -113,7 +113,7 @@
             result
         }
 
-    private inline fun update(block: (BuildableMap<K, V>) -> BuildableMap<K, V>) = withCurrent {
+    private inline fun update(block: (PersistentMap<K, V>) -> PersistentMap<K, V>) = withCurrent {
         val newMap = block(map)
         if (newMap !== map) writable {
             map = newMap
@@ -125,7 +125,7 @@
      * Implementation class of [SnapshotStateMap]. Do not use.
      */
     class StateMapStateRecord<K, V> internal constructor(
-        internal var map: BuildableMap<K, V>
+        internal var map: PersistentMap<K, V>
     ) : StateRecord() {
         internal var modification = 0
         override fun assign(value: StateRecord) {
diff --git a/compose/runtime/runtime/src/jvmMain/kotlin/androidx/compose/runtime/ActualJvm.kt b/compose/runtime/runtime/src/jvmMain/kotlin/androidx/compose/runtime/ActualJvm.kt
index c753f02..927fa46 100644
--- a/compose/runtime/runtime/src/jvmMain/kotlin/androidx/compose/runtime/ActualJvm.kt
+++ b/compose/runtime/runtime/src/jvmMain/kotlin/androidx/compose/runtime/ActualJvm.kt
@@ -16,11 +16,6 @@
 
 package androidx.compose.runtime
 
-import kotlinx.collections.immutable.PersistentList
-import kotlinx.collections.immutable.PersistentMap
-import kotlinx.collections.immutable.persistentHashMapOf
-import kotlinx.collections.immutable.persistentListOf
-
 actual typealias AtomicReference<V> = java.util.concurrent.atomic.AtomicReference<V>
 
 internal actual open class ThreadLocal<T> actual constructor(
@@ -57,51 +52,3 @@
 internal actual typealias WeakReference<T> = java.lang.ref.WeakReference<T>
 
 internal actual typealias TestOnly = org.jetbrains.annotations.TestOnly
-
-internal actual class BuildableMapBuilder<K, V>(
-    val builder: PersistentMap.Builder<K, V>
-) : MutableMap<K, V> by builder {
-    actual fun build(): BuildableMap<K, V> {
-        return BuildableMap(builder.build())
-    }
-}
-
-actual data class BuildableMap<K, V>(val map: PersistentMap<K, V>) : Map<K, V> by map {
-    internal actual fun builder(): BuildableMapBuilder<K, V> {
-        return BuildableMapBuilder(map.builder())
-    }
-}
-
-private val emptyPersistentMap = persistentHashMapOf<Any, Any>()
-
-@Suppress("UNCHECKED_CAST")
-internal actual fun <K, V> buildableMapOf(): BuildableMap<K, V> =
-    BuildableMap(emptyPersistentMap as PersistentMap<K, V>)
-
-internal actual class BuildableListBuilder<T>(
-    val builder: PersistentList.Builder<T>
-) : MutableList<T> by builder {
-    actual fun build(): BuildableList<T> {
-        return BuildableList(builder.build())
-    }
-}
-
-internal actual data class BuildableList<T>(val list: PersistentList<T>) : List<T> by list {
-    internal actual fun add(element: T) = BuildableList(list.add(element))
-    internal actual fun add(index: Int, element: T) = BuildableList(list.add(index, element))
-    internal actual fun addAll(elements: Collection<T>) = BuildableList(list.addAll(elements))
-    internal actual fun remove(element: T) = BuildableList(list.remove(element))
-    internal actual fun removeAll(elements: Collection<T>) = BuildableList(list.removeAll(elements))
-    internal actual fun removeAt(index: Int) = BuildableList(list.removeAt(index))
-    internal actual fun set(index: Int, element: T) = BuildableList(list.set(index, element))
-
-    internal actual fun builder(): BuildableListBuilder<T> {
-        return BuildableListBuilder(list.builder())
-    }
-}
-
-private val emptyPersistentList = persistentListOf<Any>()
-private val emptyBuildableList = BuildableList<Any>(emptyPersistentList)
-
-@Suppress("UNCHECKED_CAST")
-internal actual fun <T> buildableListOf(): BuildableList<T> = emptyBuildableList as BuildableList<T>
diff --git a/compose/runtime/runtime/src/test/kotlin/androidx/compose/runtime/CompositionTests.kt b/compose/runtime/runtime/src/test/kotlin/androidx/compose/runtime/CompositionTests.kt
index cbd3972..c280520 100644
--- a/compose/runtime/runtime/src/test/kotlin/androidx/compose/runtime/CompositionTests.kt
+++ b/compose/runtime/runtime/src/test/kotlin/androidx/compose/runtime/CompositionTests.kt
@@ -2475,7 +2475,7 @@
                 return onFrame(0)
             }
         }
-        val recomposer = Recomposer().apply {
+        val recomposer = Recomposer(scope.coroutineContext).apply {
             scope.launch(clock) { runRecomposeAndApplyChanges() }
         }
         Composer(
diff --git a/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunner.kt b/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunner.kt
index f3b9249..6e43b9b9c 100644
--- a/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunner.kt
+++ b/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunner.kt
@@ -32,6 +32,7 @@
 import androidx.compose.runtime.Composition
 import androidx.compose.runtime.ExperimentalComposeApi
 import androidx.compose.runtime.Recomposer
+import androidx.compose.runtime.dispatch.AndroidUiDispatcher
 import androidx.compose.runtime.dispatch.MonotonicFrameClock
 import androidx.compose.runtime.snapshots.Snapshot
 import androidx.compose.ui.platform.AndroidOwner
@@ -76,12 +77,10 @@
 
     private val screenWithSpec: Int
     private val screenHeightSpec: Int
-    private val capture = if (supportsRenderNode) {
-        RenderNodeCapture()
-    } else if (supportsMRenderNode) {
-        MRenderNodeCapture()
-    } else {
-        PictureCapture()
+    private val capture = when {
+        supportsRenderNode -> RenderNodeCapture()
+        supportsMRenderNode -> MRenderNodeCapture()
+        else -> PictureCapture()
     }
 
     private var canvas: Canvas? = null
@@ -96,7 +95,10 @@
     }
 
     private val frameClock = AutoFrameClock()
-    private val recomposer: Recomposer = Recomposer()
+    private val recomposerApplyScope = CoroutineScope(
+        AndroidUiDispatcher.Main + frameClock + Job()
+    )
+    private val recomposer: Recomposer = Recomposer(recomposerApplyScope.coroutineContext)
 
     private var simulationState: SimulationState = SimulationState.Initialized
 
diff --git a/compose/ui/ui-text/api/current.txt b/compose/ui/ui-text/api/current.txt
index c987e73..6b140dc 100644
--- a/compose/ui/ui-text/api/current.txt
+++ b/compose/ui/ui-text/api/current.txt
@@ -791,13 +791,16 @@
   }
 
   @androidx.compose.runtime.Immutable @androidx.compose.ui.text.ExperimentalTextApi public final class KeyboardOptions {
-    ctor public KeyboardOptions(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization);
+    ctor public KeyboardOptions(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization, boolean autoCorrect);
     ctor public KeyboardOptions();
     method public boolean component1();
     method public androidx.compose.ui.text.input.KeyboardCapitalization component2();
-    method @androidx.compose.runtime.Immutable @androidx.compose.ui.text.ExperimentalTextApi public androidx.compose.ui.text.input.KeyboardOptions copy(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization);
+    method public boolean component3();
+    method @androidx.compose.runtime.Immutable @androidx.compose.ui.text.ExperimentalTextApi public androidx.compose.ui.text.input.KeyboardOptions copy(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization, boolean autoCorrect);
+    method public boolean getAutoCorrect();
     method public androidx.compose.ui.text.input.KeyboardCapitalization getCapitalization();
     method public boolean getSingleLine();
+    property public final boolean autoCorrect;
     property public final androidx.compose.ui.text.input.KeyboardCapitalization capitalization;
     property public final boolean singleLine;
     field public static final androidx.compose.ui.text.input.KeyboardOptions.Companion Companion;
diff --git a/compose/ui/ui-text/api/public_plus_experimental_current.txt b/compose/ui/ui-text/api/public_plus_experimental_current.txt
index c987e73..6b140dc 100644
--- a/compose/ui/ui-text/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui-text/api/public_plus_experimental_current.txt
@@ -791,13 +791,16 @@
   }
 
   @androidx.compose.runtime.Immutable @androidx.compose.ui.text.ExperimentalTextApi public final class KeyboardOptions {
-    ctor public KeyboardOptions(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization);
+    ctor public KeyboardOptions(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization, boolean autoCorrect);
     ctor public KeyboardOptions();
     method public boolean component1();
     method public androidx.compose.ui.text.input.KeyboardCapitalization component2();
-    method @androidx.compose.runtime.Immutable @androidx.compose.ui.text.ExperimentalTextApi public androidx.compose.ui.text.input.KeyboardOptions copy(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization);
+    method public boolean component3();
+    method @androidx.compose.runtime.Immutable @androidx.compose.ui.text.ExperimentalTextApi public androidx.compose.ui.text.input.KeyboardOptions copy(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization, boolean autoCorrect);
+    method public boolean getAutoCorrect();
     method public androidx.compose.ui.text.input.KeyboardCapitalization getCapitalization();
     method public boolean getSingleLine();
+    property public final boolean autoCorrect;
     property public final androidx.compose.ui.text.input.KeyboardCapitalization capitalization;
     property public final boolean singleLine;
     field public static final androidx.compose.ui.text.input.KeyboardOptions.Companion Companion;
diff --git a/compose/ui/ui-text/api/restricted_current.txt b/compose/ui/ui-text/api/restricted_current.txt
index c987e73..6b140dc 100644
--- a/compose/ui/ui-text/api/restricted_current.txt
+++ b/compose/ui/ui-text/api/restricted_current.txt
@@ -791,13 +791,16 @@
   }
 
   @androidx.compose.runtime.Immutable @androidx.compose.ui.text.ExperimentalTextApi public final class KeyboardOptions {
-    ctor public KeyboardOptions(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization);
+    ctor public KeyboardOptions(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization, boolean autoCorrect);
     ctor public KeyboardOptions();
     method public boolean component1();
     method public androidx.compose.ui.text.input.KeyboardCapitalization component2();
-    method @androidx.compose.runtime.Immutable @androidx.compose.ui.text.ExperimentalTextApi public androidx.compose.ui.text.input.KeyboardOptions copy(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization);
+    method public boolean component3();
+    method @androidx.compose.runtime.Immutable @androidx.compose.ui.text.ExperimentalTextApi public androidx.compose.ui.text.input.KeyboardOptions copy(boolean singleLine, androidx.compose.ui.text.input.KeyboardCapitalization capitalization, boolean autoCorrect);
+    method public boolean getAutoCorrect();
     method public androidx.compose.ui.text.input.KeyboardCapitalization getCapitalization();
     method public boolean getSingleLine();
+    property public final boolean autoCorrect;
     property public final androidx.compose.ui.text.input.KeyboardCapitalization capitalization;
     property public final boolean singleLine;
     field public static final androidx.compose.ui.text.input.KeyboardOptions.Companion Companion;
diff --git a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/KeyboardCapitalization.kt b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/KeyboardCapitalization.kt
index 634a19c..b539453 100644
--- a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/KeyboardCapitalization.kt
+++ b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/KeyboardCapitalization.kt
@@ -17,7 +17,8 @@
 package androidx.compose.ui.text.input
 
 /**
- * Options to request software keyboard to capitalize the text.
+ * Options to request software keyboard to capitalize the text. Applies to languages which
+ * has upper-case and lower-case letters.
  */
 enum class KeyboardCapitalization {
     /**
@@ -26,17 +27,17 @@
     None,
 
     /**
-     * Auto-capitalize characters.
+     * Capitalize all characters.
      */
     Characters,
 
     /**
-     * Auto-capitalize words.
+     * Capitalize the first character of every word.
      */
     Words,
 
     /**
-     * Auto-capitalize sentences.
+     * Capitalize the first character of each sentence.
      */
     Sentences
 }
\ No newline at end of file
diff --git a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/KeyboardOptions.kt b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/KeyboardOptions.kt
index fcbb757..4ff2536 100644
--- a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/KeyboardOptions.kt
+++ b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/KeyboardOptions.kt
@@ -23,16 +23,23 @@
  * The keyboard configuration options for text field. It is not guaranteed if a software keyboard
  * will comply with the options provided here.
  *
- * @param singleLine signals the keyboard that the text field is single line and keyboard should
+ * @param singleLine informs the keyboard that the text field is single line and keyboard should
  * not show enter action.
- * @param capitalization signals the keyboard whether to automatically capitalize characters,
- * words or sentences.
+ * @param capitalization informs the keyboard whether to automatically capitalize characters,
+ * words or sentences. Applicable to  only text based [KeyboardType]s such as [KeyboardType
+ * .Text], [KeyboardType.Ascii]. It will not be applied to [KeyboardType]s such as [KeyboardType
+ * .Number].
+ * @param autoCorrect informs the keyboard whether to enable auto correct. Applicable to only
+ * text based [KeyboardType]s such as [KeyboardType.Email], [KeyboardType.Uri]. It will not be
+ * applied to [KeyboardType]s such as [KeyboardType.Number]. Most of software keyboard
+ * implementations ignore this value for [KeyboardType]s such as [KeyboardType.Text].
  */
 @ExperimentalTextApi
 @Immutable
 data class KeyboardOptions(
     val singleLine: Boolean = false,
-    val capitalization: KeyboardCapitalization = KeyboardCapitalization.None
+    val capitalization: KeyboardCapitalization = KeyboardCapitalization.None,
+    val autoCorrect: Boolean = true
 ) {
     companion object {
         val Default = KeyboardOptions()
diff --git a/compose/ui/ui/api/current.txt b/compose/ui/ui/api/current.txt
index 0df1e30..ece9a56 100644
--- a/compose/ui/ui/api/current.txt
+++ b/compose/ui/ui/api/current.txt
@@ -361,11 +361,6 @@
     property public abstract float minWidth;
   }
 
-  public interface ZIndexModifier extends androidx.compose.ui.Modifier.Element {
-    method public float getZIndex();
-    property public abstract float zIndex;
-  }
-
   public final class ZIndexModifierKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier zIndex(androidx.compose.ui.Modifier, float zIndex);
   }
diff --git a/compose/ui/ui/api/public_plus_experimental_current.txt b/compose/ui/ui/api/public_plus_experimental_current.txt
index 0df1e30..ece9a56 100644
--- a/compose/ui/ui/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui/api/public_plus_experimental_current.txt
@@ -361,11 +361,6 @@
     property public abstract float minWidth;
   }
 
-  public interface ZIndexModifier extends androidx.compose.ui.Modifier.Element {
-    method public float getZIndex();
-    property public abstract float zIndex;
-  }
-
   public final class ZIndexModifierKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier zIndex(androidx.compose.ui.Modifier, float zIndex);
   }
diff --git a/compose/ui/ui/api/restricted_current.txt b/compose/ui/ui/api/restricted_current.txt
index 6f742ec..3d3b30a 100644
--- a/compose/ui/ui/api/restricted_current.txt
+++ b/compose/ui/ui/api/restricted_current.txt
@@ -408,11 +408,6 @@
     property public abstract float minWidth;
   }
 
-  public interface ZIndexModifier extends androidx.compose.ui.Modifier.Element {
-    method public float getZIndex();
-    property public abstract float zIndex;
-  }
-
   public final class ZIndexModifierKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier zIndex(androidx.compose.ui.Modifier, float zIndex);
   }
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/DrawReorderingTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/DrawReorderingTest.kt
index 09c67f0..1aedce0 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/DrawReorderingTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/DrawReorderingTest.kt
@@ -682,7 +682,7 @@
 
     @Test
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
-    fun testFirstElevationIsUsed() {
+    fun sumOfAllZIndexesIsUsed() {
         rule.runOnUiThread {
             activity.setContent {
                 FixedSize(
@@ -691,13 +691,14 @@
                     FixedSize(
                         10,
                         PaddingModifier(10)
-                            .zIndex(3f)
-                            .zIndex(1f)
+                            .zIndex(2f)
+                            .zIndex(2f)
                             .background(Color.White)
                     )
                     FixedSize(
                         30,
-                        Modifier.zIndex(2f)
+                        Modifier.zIndex(4f)
+                            .zIndex(-1f)
                             .background(Color.Red)
                             .drawLatchModifier()
                     )
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/RecordingInputConnectionTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/RecordingInputConnectionTest.kt
index 855d688..3f7eb39 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/RecordingInputConnectionTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/RecordingInputConnectionTest.kt
@@ -17,6 +17,7 @@
 package androidx.compose.ui.input
 
 import android.view.KeyEvent
+import android.view.inputmethod.CorrectionInfo
 import androidx.compose.ui.text.TextRange
 import androidx.compose.ui.text.input.BackspaceKeyEditOp
 import androidx.compose.ui.text.input.CommitTextEditOp
@@ -39,6 +40,7 @@
 import com.nhaarman.mockitokotlin2.times
 import com.nhaarman.mockitokotlin2.verify
 import org.junit.Assert.assertEquals
+import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Test
@@ -56,11 +58,9 @@
     fun setup() {
         listener = mock()
         ic = RecordingInputConnection(
-            TextFieldValue(
-                "",
-                TextRange.Zero
-            ),
-            listener
+            initState = TextFieldValue("", TextRange.Zero),
+            eventListener = listener,
+            autoCorrect = true
         )
     }
 
@@ -543,6 +543,30 @@
     }
 
     @Test
+    fun commitCorrection_returns_true_when_autoCorrect_is_on() {
+        val inputConnection = RecordingInputConnection(
+            initState = TextFieldValue(),
+            eventListener = listener,
+            autoCorrect = true
+        )
+        val anyCorrectionInfo = CorrectionInfo(0, "", "")
+
+        assertTrue(inputConnection.commitCorrection(anyCorrectionInfo))
+    }
+
+    @Test
+    fun commitCorrection_returns_false_when_autoCorrect_is_off() {
+        val inputConnection = RecordingInputConnection(
+            initState = TextFieldValue(),
+            eventListener = listener,
+            autoCorrect = false
+        )
+        val anyCorrectionInfo = CorrectionInfo(0, "", "")
+
+        assertFalse(inputConnection.commitCorrection(anyCorrectionInfo))
+    }
+
+    @Test
     fun do_not_callback_if_only_readonly_ops() {
         ic.beginBatchEdit()
         ic.getSelectedText(1)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/AndroidViewTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/AndroidViewTest.kt
index 0e66799..229b646 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/AndroidViewTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/AndroidViewTest.kt
@@ -288,7 +288,7 @@
         rule.setContent {
             Box {
                 AndroidView(::FrameLayout) {
-                    it.setContent(Recomposer()) {
+                    it.setContent(Recomposer.current()) {
                         Box(Modifier)
                     }
                 }
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/RecordingInputConnection.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/RecordingInputConnection.kt
index d0760d4..ac8b6b9 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/RecordingInputConnection.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/RecordingInputConnection.kt
@@ -35,16 +35,17 @@
 private val DEBUG = false
 private val TAG = "RecordingIC"
 
+/**
+ * [InputConnection] implementation that binds Android IME to Compose.
+ *
+ * @param initState The initial input state.
+ * @param eventListener An input event listener.
+ * @param autoCorrect Whether autoCorrect is enabled.
+ */
 internal class RecordingInputConnection(
-    /**
-     * The initial input state
-     */
     initState: TextFieldValue,
-
-    /**
-     * An input event listener.
-     */
-    val eventListener: InputEventListener
+    val eventListener: InputEventListener,
+    val autoCorrect: Boolean
 ) : InputConnection {
 
     // The depth of the batch session. 0 means no session.
@@ -290,13 +291,10 @@
     }
 
     override fun commitCorrection(correctionInfo: CorrectionInfo?): Boolean {
-        if (DEBUG) { Log.d(TAG, "commitCorrection($correctionInfo)") }
-        // We don't support this callback.
-        // The API documents says this should return if the input connection is no longer valid, but
-        // The Chromium implementation already returning false, so assuming it is safe to return
-        // false if not supported.
-        // see https://cs.chromium.org/chromium/src/content/public/android/java/src/org/chromium/content/browser/input/ThreadedInputConnection.java
-        return false
+        if (DEBUG) { Log.d(TAG, "commitCorrection($correctionInfo) autoCorrect:$autoCorrect") }
+        // Should add an event here so that we can implement the autocorrect highlight
+        // Bug: 170647219
+        return autoCorrect
     }
 
     override fun getHandler(): Handler? {
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.kt
index 919cefa..5097dbf 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.kt
@@ -84,6 +84,7 @@
 
         return RecordingInputConnection(
             initState = state,
+            autoCorrect = keyboardOptions.autoCorrect,
             eventListener = object : InputEventListener {
                 override fun onEditOperations(editOps: List<EditOperation>) {
                     onEditCommand(editOps)
@@ -243,6 +244,10 @@
                     outInfo.inputType = outInfo.inputType or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
                 }
             }
+
+            if (keyboardOptions.autoCorrect) {
+                outInfo.inputType = outInfo.inputType or InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
+            }
         }
 
         outInfo.imeOptions = outInfo.imeOptions or EditorInfo.IME_FLAG_NO_FULLSCREEN
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/ZIndexModifier.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/ZIndexModifier.kt
index 363c056..92fe7b5 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/ZIndexModifier.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/ZIndexModifier.kt
@@ -23,27 +23,32 @@
 
 /**
  * A [Modifier.Element] that controls the drawing order for the children of the same layout
- * parent. A child with larger [zIndex] will be drawn after all the children with smaller [zIndex].
- * When children have the same [zIndex] the original order in which the items were added into the
- * parent layout is applied.
+ * parent. A child with larger [zIndex] will be drawn on top of all the children with smaller
+ * [zIndex]. When children have the same [zIndex] the original order in which the items were
+ * added into the parent layout is applied.
+ *
  * Note that if there would be multiple [ZIndexModifier] modifiers applied for the same layout
- * only the first one in the modifiers chain will be used. If no [ZIndexModifier]s applied for the
+ * the sum of their values will be used as the final zIndex. If no [ZIndexModifier]s applied for the
  * layout then zIndex for this Layout is 0.
  *
  * @see [Modifier.zIndex]
  */
-interface ZIndexModifier : Modifier.Element {
+// TODO("Made it internal to be able to later migrate Modifier.zIndex() implementation without
+//  the breaking change to work as LayoutModifier where we provide zIndex right as a param for
+//  placeable.place() call. Tracked in b/171493718")
+internal interface ZIndexModifier : Modifier.Element {
     val zIndex: Float
 }
 
 /**
- * Creates a [ZIndexModifier] that controls the drawing order for the children of the same layout
- * parent. A child with larger [zIndex] will be drawn after all the children with smaller [zIndex].
+ * Creates a modifier that controls the drawing order for the children of the same layout parent.
+ * A child with larger [zIndex] will be drawn on top of all the children with smaller [zIndex].
  * When children have the same [zIndex] the original order in which the items were added into the
  * parent layout is applied.
- * Note that if there would be multiple [ZIndexModifier] modifiers applied for the same layout
- * only the first one in the modifiers chain will be used. If no [ZIndexModifier]s applied for the
- * layout then zIndex for this Layout is 0.
+ *
+ * Note that if there would be multiple [zIndex] modifiers applied for the same layout
+ * the sum of their values will be used as the final zIndex. If no [zIndex] were applied for the
+ * layout then the default zIndex is 0.
  *
  * @sample androidx.compose.ui.samples.ZIndexModifierSample
  */
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutNode.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutNode.kt
index ca8748f..d3c09bb 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutNode.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutNode.kt
@@ -616,18 +616,21 @@
     /**
      * zIndex defines the drawing order of the LayoutNode. Children with larger zIndex are drawn
      * after others (the original order is used for the nodes with the same zIndex).
-     * Default zIndex is 0. Current implementation is using the first(front) DrawLayerModifier's
-     * elevation as a zIndex. We will have a separate zIndex modifier later instead to decouple
-     * this features.
+     * Default zIndex is 0. We use sum of the values of all [ZIndexModifier] as a zIndex.
      */
-    internal val zIndex: Float
-        get() = outerZIndexModifier?.zIndex ?: 0f
+    private val zIndex: Float
+        get() = if (zIndexModifiers.isEmpty()) {
+            0f
+        } else {
+            zIndexModifiers.fold(0f) { acc, item ->
+                acc + item.zIndex
+            }
+        }
 
     /**
-     * The outermost ZIndexModifier in the modifier chain or `null` if there are no
-     * ZIndexModifier in the modifier chain.
+     * All [ZIndexModifier]s added to the node.
      */
-    private var outerZIndexModifier: ZIndexModifier? = null
+    private val zIndexModifiers = mutableVectorOf<ZIndexModifier>()
 
     /**
      * The inner-most layer wrapper. Used for performance for LayoutNodeWrapper.findLayer().
@@ -661,7 +664,7 @@
             field = value
 
             val invalidateParentLayer = shouldInvalidateParentLayer()
-            val startZIndex = outerZIndexModifier
+            val startZIndex = zIndex
 
             copyWrappersToCache()
 
@@ -673,7 +676,7 @@
             val addedCallback = hasNewPositioningCallback()
             onPositionedCallbacks.clear()
             onRemeasuredCallbacks.clear()
-            outerZIndexModifier = null
+            zIndexModifiers.clear()
             innerLayerWrapper = null
 
             // Create a new chain of LayoutNodeWrappers, reusing existing ones from wrappers
@@ -687,7 +690,7 @@
                     onRemeasuredCallbacks += mod
                 }
                 if (mod is ZIndexModifier) {
-                    outerZIndexModifier = mod
+                    zIndexModifiers += mod
                 }
                 if (mod is RemeasurementModifier) {
                     mod.onRemeasurementAvailable(this)
@@ -777,7 +780,7 @@
             if (oldParentData != parentData) {
                 parent?.requestRemeasure()
             }
-            if (invalidateParentLayer || startZIndex != outerZIndexModifier ||
+            if (invalidateParentLayer || startZIndex != zIndex ||
                 shouldInvalidateParentLayer()
             ) {
                 parent?.invalidateLayer()
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/RecordingInputConnectionUpdateTextFieldValueTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/RecordingInputConnectionUpdateTextFieldValueTest.kt
index 90f8cbc..0c2b2a4 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/RecordingInputConnectionUpdateTextFieldValueTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/RecordingInputConnectionUpdateTextFieldValueTest.kt
@@ -49,11 +49,9 @@
     fun setup() {
         listener = mock()
         ic = RecordingInputConnection(
-            TextFieldValue(
-                "",
-                TextRange.Zero
-            ),
-            listener
+            initState = TextFieldValue("", TextRange.Zero),
+            eventListener = listener,
+            autoCorrect = true
         )
     }
 
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/TextInputServiceAndroidTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/TextInputServiceAndroidTest.kt
index 4c0318e..fdafc98 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/TextInputServiceAndroidTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/TextInputServiceAndroidTest.kt
@@ -550,4 +550,55 @@
             assertTrue((InputType.TYPE_TEXT_FLAG_CAP_SENTENCES and info.inputType) == 0)
         }
     }
+
+    @Test
+    fun test_fill_editor_info_auto_correct_on() {
+        textInputService.startInput(
+            TextFieldValue(""),
+            KeyboardType.Ascii,
+            ImeAction.Done,
+            KeyboardOptions(autoCorrect = true),
+            onEditCommand = {},
+            onImeActionPerformed = {}
+        )
+
+        EditorInfo().let { info ->
+            textInputService.createInputConnection(info)
+            assertFalse((InputType.TYPE_TEXT_FLAG_AUTO_CORRECT and info.inputType) == 0)
+        }
+    }
+
+    @Test
+    fun test_fill_editor_info_auto_correct_off() {
+        textInputService.startInput(
+            TextFieldValue(""),
+            KeyboardType.Ascii,
+            ImeAction.Done,
+            KeyboardOptions(autoCorrect = false),
+            onEditCommand = {},
+            onImeActionPerformed = {}
+        )
+
+        EditorInfo().let { info ->
+            textInputService.createInputConnection(info)
+            assertTrue((InputType.TYPE_TEXT_FLAG_AUTO_CORRECT and info.inputType) == 0)
+        }
+    }
+
+    @Test
+    fun autocorrect_not_added_when_input_type_is_not_text() {
+        textInputService.startInput(
+            TextFieldValue(""),
+            KeyboardType.Number,
+            ImeAction.Done,
+            KeyboardOptions(autoCorrect = true),
+            onEditCommand = {},
+            onImeActionPerformed = {}
+        )
+
+        EditorInfo().let { info ->
+            textInputService.createInputConnection(info)
+            assertTrue((InputType.TYPE_TEXT_FLAG_AUTO_CORRECT and info.inputType) == 0)
+        }
+    }
 }
\ No newline at end of file
diff --git a/datastore/datastore-core/api/current.txt b/datastore/datastore-core/api/current.txt
index f7d5f1d..936d8fb 100644
--- a/datastore/datastore-core/api/current.txt
+++ b/datastore/datastore-core/api/current.txt
@@ -30,8 +30,10 @@
   }
 
   public interface Serializer<T> {
+    method public T! getDefaultValue();
     method public T! readFrom(java.io.InputStream input);
     method public void writeTo(T? t, java.io.OutputStream output);
+    property public abstract T! defaultValue;
   }
 
 }
diff --git a/datastore/datastore-core/api/public_plus_experimental_current.txt b/datastore/datastore-core/api/public_plus_experimental_current.txt
index f7d5f1d..936d8fb 100644
--- a/datastore/datastore-core/api/public_plus_experimental_current.txt
+++ b/datastore/datastore-core/api/public_plus_experimental_current.txt
@@ -30,8 +30,10 @@
   }
 
   public interface Serializer<T> {
+    method public T! getDefaultValue();
     method public T! readFrom(java.io.InputStream input);
     method public void writeTo(T? t, java.io.OutputStream output);
+    property public abstract T! defaultValue;
   }
 
 }
diff --git a/datastore/datastore-core/api/restricted_current.txt b/datastore/datastore-core/api/restricted_current.txt
index f7d5f1d..936d8fb 100644
--- a/datastore/datastore-core/api/restricted_current.txt
+++ b/datastore/datastore-core/api/restricted_current.txt
@@ -30,8 +30,10 @@
   }
 
   public interface Serializer<T> {
+    method public T! getDefaultValue();
     method public T! readFrom(java.io.InputStream input);
     method public void writeTo(T? t, java.io.OutputStream output);
+    property public abstract T! defaultValue;
   }
 
 }
diff --git a/datastore/datastore-core/src/main/java/androidx/datastore/core/Serializer.kt b/datastore/datastore-core/src/main/java/androidx/datastore/core/Serializer.kt
index 5883e52a..4f29b17 100644
--- a/datastore/datastore-core/src/main/java/androidx/datastore/core/Serializer.kt
+++ b/datastore/datastore-core/src/main/java/androidx/datastore/core/Serializer.kt
@@ -30,12 +30,24 @@
 public interface Serializer<T> {
 
     /**
-     * Unmarshal object from stream. This must be able to handle an empty input stream - which is
-     * passed in as a default value.
+     * Value to return if there is no data on disk.
+     */
+    public val defaultValue: T
+
+    /**
+     * Unmarshal object from stream.
+     *
+     * @param input the InputStream with the data to deserialize
      */
     public fun readFrom(input: InputStream): T
 
-    /** Marshal object to a stream. */
+    /**
+     *  Marshal object to a stream. writeTo should not close [output], doing so will result in an
+     *  exception.
+     *
+     *  @param t the data to write to output
+     *  @output the OutputStream to serialize data to
+     */
     public fun writeTo(t: T, output: OutputStream)
 }
 
diff --git a/datastore/datastore-core/src/main/java/androidx/datastore/core/SingleProcessDataStore.kt b/datastore/datastore-core/src/main/java/androidx/datastore/core/SingleProcessDataStore.kt
index 7e53b03..65ccedc 100644
--- a/datastore/datastore-core/src/main/java/androidx/datastore/core/SingleProcessDataStore.kt
+++ b/datastore/datastore-core/src/main/java/androidx/datastore/core/SingleProcessDataStore.kt
@@ -37,12 +37,12 @@
 import kotlinx.coroutines.sync.Mutex
 import kotlinx.coroutines.sync.withLock
 import kotlinx.coroutines.withContext
-import java.io.ByteArrayInputStream
 import java.io.File
 import java.io.FileInputStream
 import java.io.FileNotFoundException
 import java.io.FileOutputStream
 import java.io.IOException
+import java.io.OutputStream
 import java.lang.IllegalStateException
 import java.util.concurrent.atomic.AtomicReference
 
@@ -252,9 +252,7 @@
             if (file.exists()) {
                 throw ex
             }
-            ByteArrayInputStream(byteArrayOf()).use {
-                return serializer.readFrom(it)
-            }
+            return serializer.defaultValue
         }
     }
 
@@ -295,11 +293,12 @@
         val scratchFile = File(file.absolutePath + SCRATCH_SUFFIX)
         try {
             FileOutputStream(scratchFile).use { stream ->
-                serializer.writeTo(newData, stream)
+                serializer.writeTo(newData, UncloseableOutputStream(stream))
                 stream.fd.sync()
                 // TODO(b/151635324): fsync the directory, otherwise a badly timed crash could
                 //  result in reverting to a previous state.
             }
+
             if (!scratchFile.renameTo(file)) {
                 throw IOException("$scratchFile could not be renamed to $file")
             }
@@ -322,6 +321,31 @@
         }
     }
 
+    // Wrapper on FileOutputStream to prevent users from closing it in their serializer.
+    private class UncloseableOutputStream(internal val fileOutputStream: FileOutputStream) :
+        OutputStream() {
+
+        override fun write(b: Int) {
+            fileOutputStream.write(b)
+        }
+
+        override fun write(b: ByteArray) {
+            fileOutputStream.write(b)
+        }
+
+        override fun write(bytes: ByteArray, off: Int, len: Int) {
+            fileOutputStream.write(bytes, off, len)
+        }
+
+        override fun close() {
+            throw IllegalStateException("Do not close the OutputStream provided by DataStore")
+        }
+
+        override fun flush() {
+            fileOutputStream.flush()
+        }
+    }
+
     // Convenience function:
     @Suppress("NOTHING_TO_INLINE")
     private inline fun downstreamChannel(): ConflatedBroadcastChannel<DataAndHash<T>> {
diff --git a/datastore/datastore-core/src/test/java/androidx/datastore/core/SingleProcessDataStoreTest.kt b/datastore/datastore-core/src/test/java/androidx/datastore/core/SingleProcessDataStoreTest.kt
index b0da154..e8de7e6 100644
--- a/datastore/datastore-core/src/test/java/androidx/datastore/core/SingleProcessDataStoreTest.kt
+++ b/datastore/datastore-core/src/test/java/androidx/datastore/core/SingleProcessDataStoreTest.kt
@@ -57,19 +57,19 @@
     val tempFolder = TemporaryFolder()
 
     private lateinit var store: DataStore<Byte>
-    private lateinit var serializer: TestingSerializer
+    private lateinit var testingSerializer: TestingSerializer
     private lateinit var testFile: File
     private lateinit var dataStoreScope: TestCoroutineScope
 
     @Before
     fun setUp() {
-        serializer = TestingSerializer()
+        testingSerializer = TestingSerializer()
         testFile = tempFolder.newFile()
         dataStoreScope = TestCoroutineScope(TestCoroutineDispatcher() + Job())
         store =
             SingleProcessDataStore<Byte>(
                 { testFile },
-                serializer,
+                testingSerializer,
                 scope = dataStoreScope
             )
     }
@@ -169,7 +169,7 @@
     @Test
     fun testReadAfterTransientBadWrite() = runBlockingTest {
         store.updateData { 1 }
-        serializer.failingWrite = true
+        testingSerializer.failingWrite = true
 
         assertThrows<IOException> { store.updateData { 2 } }
 
@@ -222,7 +222,7 @@
 
         val newStore = SingleProcessDataStore(
             fileProducer,
-            serializer = serializer,
+            serializer = testingSerializer,
             scope = dataStoreScope,
             initTasksList = listOf()
         )
@@ -255,11 +255,11 @@
 
     @Test
     fun testWriteAfterTransientBadRead() = runBlockingTest {
-        serializer.failingRead = true
+        testingSerializer.failingRead = true
 
         assertThrows<IOException> { store.data.first() }
 
-        serializer.failingRead = false
+        testingSerializer.failingRead = false
 
         store.updateData { 1 }
         assertThat(store.data.first()).isEqualTo(1)
@@ -267,7 +267,7 @@
 
     @Test
     fun testWriteWithBadReadFails() = runBlockingTest {
-        serializer.failingRead = true
+        testingSerializer.failingRead = true
 
         assertThrows<IOException> { store.updateData { 1 } }
     }
@@ -306,10 +306,10 @@
     fun testInitTaskFailsFirstTimeDueToReadFail() = runBlockingTest {
         store = newDataStore(initTasksList = listOf { api -> api.updateData { 1 } })
 
-        serializer.failingRead = true
+        testingSerializer.failingRead = true
         assertThrows<IOException> { store.updateData { 2 } }
 
-        serializer.failingRead = false
+        testingSerializer.failingRead = false
         store.updateData { it.inc().inc() }
 
         assertThat(store.data.first()).isEqualTo(3)
@@ -447,10 +447,10 @@
 
         val store = newDataStore(initTasksList = listOf(initializer))
 
-        serializer.failingWrite = true
+        testingSerializer.failingWrite = true
         assertThrows<IOException> { store.data.first() }
 
-        serializer.failingWrite = false
+        testingSerializer.failingWrite = false
         assertThat(store.data.first()).isEqualTo(123)
     }
 
@@ -583,7 +583,7 @@
         store.updateData { 1 } // Pre-seed the data so the file exists.
 
         val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler()
-        serializer.failingRead = true
+        testingSerializer.failingRead = true
         store = newDataStore(corruptionHandler = testingHandler, file = testFile)
 
         assertThrows<IOException> { store.updateData { 2 } }
@@ -597,7 +597,7 @@
         store.updateData { 1 } // Pre-seed the data so the file exists.
 
         val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler()
-        serializer.failReadWithCorruptionException = true
+        testingSerializer.failReadWithCorruptionException = true
         store = newDataStore(corruptionHandler = testingHandler, file = testFile)
 
         assertThrows<IOException> { store.data.first() }.hasMessageThat().contains(
@@ -612,7 +612,7 @@
         store.updateData { 1 } // Pre-seed the data so the file exists.
 
         val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler()
-        serializer.failReadWithCorruptionException = true
+        testingSerializer.failReadWithCorruptionException = true
         store = newDataStore(corruptionHandler = testingHandler, file = testFile)
 
         assertThrows<IOException> { store.updateData { 1 } }.hasMessageThat().contains(
@@ -627,7 +627,7 @@
         store.updateData { 1 } // Pre-seed the data so the file exists.
 
         val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler(replaceWith = 10)
-        serializer.failReadWithCorruptionException = true
+        testingSerializer.failReadWithCorruptionException = true
         store = newDataStore(corruptionHandler = testingHandler, file = testFile)
 
         assertThat(store.data.first()).isEqualTo(10)
@@ -651,10 +651,44 @@
         }
     }
 
+    @Test
+    fun testDefaultValueUsedWhenNoDataOnDisk() = runBlockingTest {
+        val dataStore = DataStoreFactory.create(
+            produceFile = { testFile },
+            scope = dataStoreScope,
+            serializer = TestingSerializer(defaultValue = 99)
+        )
+
+        assertThat(testFile.delete()).isTrue()
+
+        assertThat(dataStore.data.first()).isEqualTo(99)
+    }
+
+    @Test
+    fun testCantCloseWhenWritingToSerializer() = runBlockingTest {
+        val delegate = TestingSerializer()
+        val serializer = object : Serializer<Byte> by delegate {
+            override fun writeTo(t: Byte, output: OutputStream) {
+                delegate.writeTo(t, output)
+                output.close() // This should throw IllegalStateException
+            }
+        }
+
+        val dataStore = newDataStore(serializer = serializer)
+
+        // Shouldn't throw:
+        dataStore.data.first()
+
+        assertThrows<IllegalStateException> { dataStore.updateData { it.inc() } }
+    }
+
     // Mutable wrapper around a byte
     data class ByteWrapper(var byte: Byte) {
-        internal class ByteWrapperSerializer : Serializer<ByteWrapper> {
-            val delegate = TestingSerializer()
+        internal class ByteWrapperSerializer() : Serializer<ByteWrapper> {
+            private val delegate = TestingSerializer()
+
+            override val defaultValue = ByteWrapper(delegate.defaultValue)
+
             override fun readFrom(input: InputStream): ByteWrapper {
                 return ByteWrapper(delegate.readFrom(input))
             }
@@ -685,6 +719,7 @@
 
     private fun newDataStore(
         file: File = testFile,
+        serializer: Serializer<Byte> = testingSerializer,
         scope: CoroutineScope = dataStoreScope,
         initTasksList: List<suspend (api: InitializerApi<Byte>) -> Unit> = listOf(),
         corruptionHandler: CorruptionHandler<Byte> = NoOpCorruptionHandler<Byte>()
diff --git a/datastore/datastore-core/src/test/java/androidx/datastore/core/TestingSerializer.kt b/datastore/datastore-core/src/test/java/androidx/datastore/core/TestingSerializer.kt
index d001f1d..9ccfe72 100644
--- a/datastore/datastore-core/src/test/java/androidx/datastore/core/TestingSerializer.kt
+++ b/datastore/datastore-core/src/test/java/androidx/datastore/core/TestingSerializer.kt
@@ -23,7 +23,8 @@
 internal class TestingSerializer(
     @Volatile var failReadWithCorruptionException: Boolean = false,
     @Volatile var failingRead: Boolean = false,
-    @Volatile var failingWrite: Boolean = false
+    @Volatile var failingWrite: Boolean = false,
+    override val defaultValue: Byte = 0
 ) : Serializer<Byte> {
     override fun readFrom(input: InputStream): Byte {
         if (failReadWithCorruptionException) {
diff --git a/datastore/datastore-preferences-core/api/1.0.0-alpha01.txt b/datastore/datastore-preferences-core/api/1.0.0-alpha01.txt
new file mode 100644
index 0000000..25ade7f
--- /dev/null
+++ b/datastore/datastore-preferences-core/api/1.0.0-alpha01.txt
@@ -0,0 +1,48 @@
+// Signature format: 3.0
+package androidx.datastore.preferences {
+
+  public final class PreferenceDataStoreFactory {
+    ctor public PreferenceDataStoreFactory();
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, androidx.datastore.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler = null, java.util.List<? extends kotlin.jvm.functions.Function0<? extends androidx.datastore.DataMigration<androidx.datastore.preferences.core.Preferences>>> migrationProducers = listOf(), kotlinx.coroutines.CoroutineScope scope = CoroutineScope(Dispatchers.IO + SupervisorJob()));
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, androidx.datastore.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler = null, java.util.List<? extends kotlin.jvm.functions.Function0<? extends androidx.datastore.DataMigration<androidx.datastore.preferences.core.Preferences>>> migrationProducers = listOf());
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, androidx.datastore.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler = null);
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile);
+  }
+
+  public final class Preferences {
+    method public operator boolean contains(String key);
+    method public static androidx.datastore.preferences.core.Preferences empty();
+    method public java.util.Map<java.lang.String,java.lang.Object> getAll();
+    method public boolean getBoolean(String key, boolean defaultValue);
+    method public float getFloat(String key, float defaultValue);
+    method public int getInt(String key, int defaultValue);
+    method public long getLong(String key, long defaultValue);
+    method public String getString(String key, String defaultValue);
+    method public java.util.Set<java.lang.String> getStringSet(String key, java.util.Set<java.lang.String> defaultValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder toBuilder();
+    field public static final androidx.datastore.preferences.core.Preferences.Companion Companion;
+  }
+
+  public static final class Preferences.Builder {
+    ctor public Preferences.Builder();
+    method public androidx.datastore.preferences.core.Preferences build();
+    method public androidx.datastore.preferences.core.Preferences.Builder clear();
+    method public androidx.datastore.preferences.core.Preferences.Builder remove(String key);
+    method public androidx.datastore.preferences.core.Preferences.Builder setBoolean(String key, boolean newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setFloat(String key, float newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setInt(String key, int newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setLong(String key, long newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setString(String key, String newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setStringSet(String key, java.util.Set<java.lang.String> newValue);
+  }
+
+  public static final class Preferences.Companion {
+    method public androidx.datastore.preferences.core.Preferences empty();
+  }
+
+  public final class SharedPreferencesToPreferencesKt {
+    method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.core.Preferences>> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = SharedPreferencesToPreferences.MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+  }
+
+}
+
diff --git a/datastore/datastore-preferences-core/api/api_lint.ignore b/datastore/datastore-preferences-core/api/api_lint.ignore
new file mode 100644
index 0000000..c359d4e
--- /dev/null
+++ b/datastore/datastore-preferences-core/api/api_lint.ignore
@@ -0,0 +1,9 @@
+// Baseline format: 1.0
+MissingJvmstatic: androidx.datastore.preferences.core.PreferenceDataStoreFactory#create(kotlin.jvm.functions.Function0<? extends java.io.File>, androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>, java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>>, kotlinx.coroutines.CoroutineScope):
+    A Kotlin method with default parameter values should be annotated with @JvmOverloads for better Java interoperability; see https://android.github.io/kotlin-guides/interop.html#function-overloads-for-defaults
+
+
+MissingNullability: androidx.datastore.preferences.core.PreferencesKt#preferencesKey(String):
+    Missing nullability on method `preferencesKey` return
+MissingNullability: androidx.datastore.preferences.core.PreferencesKt#preferencesSetKey(String):
+    Missing nullability on method `preferencesSetKey` return
diff --git a/datastore/datastore-preferences-core/api/current.txt b/datastore/datastore-preferences-core/api/current.txt
new file mode 100644
index 0000000..3908fa5
--- /dev/null
+++ b/datastore/datastore-preferences-core/api/current.txt
@@ -0,0 +1,49 @@
+// Signature format: 4.0
+package androidx.datastore.preferences.core {
+
+  public final class MutablePreferences extends androidx.datastore.preferences.core.Preferences {
+    method public java.util.Map<androidx.datastore.preferences.core.Preferences.Key<?>,java.lang.Object> asMap();
+    method public operator <T> boolean contains(androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public operator <T> T? get(androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public operator <T> void set(androidx.datastore.preferences.core.Preferences.Key<T> key, T? value);
+  }
+
+  public final class PreferenceDataStoreFactory {
+    method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
+    field public static final androidx.datastore.preferences.core.PreferenceDataStoreFactory INSTANCE;
+  }
+
+  public abstract class Preferences {
+    method public abstract java.util.Map<androidx.datastore.preferences.core.Preferences.Key<?>,java.lang.Object> asMap();
+    method public abstract operator <T> boolean contains(androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public abstract operator <T> T? get(androidx.datastore.preferences.core.Preferences.Key<T> key);
+  }
+
+  public static final class Preferences.Key<T> {
+    method public String getName();
+    property public final String name;
+  }
+
+  public static final class Preferences.Pair<T> {
+  }
+
+  public final class PreferencesKt {
+    method public static void clear(androidx.datastore.preferences.core.MutablePreferences);
+    method public static suspend Object? edit(androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences>, kotlin.jvm.functions.Function2<? super androidx.datastore.preferences.core.MutablePreferences,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> transform, kotlin.coroutines.Continuation<? super androidx.datastore.preferences.core.Preferences> p);
+    method public static androidx.datastore.preferences.core.Preferences emptyPreferences();
+    method public static operator void minusAssign(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Key<?> key);
+    method public static androidx.datastore.preferences.core.MutablePreferences mutablePreferencesOf(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static operator void plusAssign(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences prefs);
+    method public static operator void plusAssign(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Pair<?> pair);
+    method public static inline <reified T> androidx.datastore.preferences.core.Preferences.Key<T>! preferencesKey(String name);
+    method public static androidx.datastore.preferences.core.Preferences preferencesOf(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static inline <reified T> androidx.datastore.preferences.core.Preferences.Key<java.util.Set<? extends T>>! preferencesSetKey(String name);
+    method public static void putAll(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static <T> T! remove(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public static infix <T> androidx.datastore.preferences.core.Preferences.Pair<T> to(androidx.datastore.preferences.core.Preferences.Key<T>, T? value);
+    method public static androidx.datastore.preferences.core.MutablePreferences toMutablePreferences(androidx.datastore.preferences.core.Preferences);
+    method public static androidx.datastore.preferences.core.Preferences toPreferences(androidx.datastore.preferences.core.Preferences);
+  }
+
+}
+
diff --git a/datastore/datastore-preferences-core/api/public_plus_experimental_1.0.0-alpha01.txt b/datastore/datastore-preferences-core/api/public_plus_experimental_1.0.0-alpha01.txt
new file mode 100644
index 0000000..25ade7f
--- /dev/null
+++ b/datastore/datastore-preferences-core/api/public_plus_experimental_1.0.0-alpha01.txt
@@ -0,0 +1,48 @@
+// Signature format: 3.0
+package androidx.datastore.preferences {
+
+  public final class PreferenceDataStoreFactory {
+    ctor public PreferenceDataStoreFactory();
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, androidx.datastore.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler = null, java.util.List<? extends kotlin.jvm.functions.Function0<? extends androidx.datastore.DataMigration<androidx.datastore.preferences.core.Preferences>>> migrationProducers = listOf(), kotlinx.coroutines.CoroutineScope scope = CoroutineScope(Dispatchers.IO + SupervisorJob()));
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, androidx.datastore.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler = null, java.util.List<? extends kotlin.jvm.functions.Function0<? extends androidx.datastore.DataMigration<androidx.datastore.preferences.core.Preferences>>> migrationProducers = listOf());
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, androidx.datastore.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler = null);
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile);
+  }
+
+  public final class Preferences {
+    method public operator boolean contains(String key);
+    method public static androidx.datastore.preferences.core.Preferences empty();
+    method public java.util.Map<java.lang.String,java.lang.Object> getAll();
+    method public boolean getBoolean(String key, boolean defaultValue);
+    method public float getFloat(String key, float defaultValue);
+    method public int getInt(String key, int defaultValue);
+    method public long getLong(String key, long defaultValue);
+    method public String getString(String key, String defaultValue);
+    method public java.util.Set<java.lang.String> getStringSet(String key, java.util.Set<java.lang.String> defaultValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder toBuilder();
+    field public static final androidx.datastore.preferences.core.Preferences.Companion Companion;
+  }
+
+  public static final class Preferences.Builder {
+    ctor public Preferences.Builder();
+    method public androidx.datastore.preferences.core.Preferences build();
+    method public androidx.datastore.preferences.core.Preferences.Builder clear();
+    method public androidx.datastore.preferences.core.Preferences.Builder remove(String key);
+    method public androidx.datastore.preferences.core.Preferences.Builder setBoolean(String key, boolean newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setFloat(String key, float newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setInt(String key, int newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setLong(String key, long newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setString(String key, String newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setStringSet(String key, java.util.Set<java.lang.String> newValue);
+  }
+
+  public static final class Preferences.Companion {
+    method public androidx.datastore.preferences.core.Preferences empty();
+  }
+
+  public final class SharedPreferencesToPreferencesKt {
+    method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.core.Preferences>> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = SharedPreferencesToPreferences.MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+  }
+
+}
+
diff --git a/datastore/datastore-preferences-core/api/public_plus_experimental_current.txt b/datastore/datastore-preferences-core/api/public_plus_experimental_current.txt
new file mode 100644
index 0000000..3908fa5
--- /dev/null
+++ b/datastore/datastore-preferences-core/api/public_plus_experimental_current.txt
@@ -0,0 +1,49 @@
+// Signature format: 4.0
+package androidx.datastore.preferences.core {
+
+  public final class MutablePreferences extends androidx.datastore.preferences.core.Preferences {
+    method public java.util.Map<androidx.datastore.preferences.core.Preferences.Key<?>,java.lang.Object> asMap();
+    method public operator <T> boolean contains(androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public operator <T> T? get(androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public operator <T> void set(androidx.datastore.preferences.core.Preferences.Key<T> key, T? value);
+  }
+
+  public final class PreferenceDataStoreFactory {
+    method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
+    field public static final androidx.datastore.preferences.core.PreferenceDataStoreFactory INSTANCE;
+  }
+
+  public abstract class Preferences {
+    method public abstract java.util.Map<androidx.datastore.preferences.core.Preferences.Key<?>,java.lang.Object> asMap();
+    method public abstract operator <T> boolean contains(androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public abstract operator <T> T? get(androidx.datastore.preferences.core.Preferences.Key<T> key);
+  }
+
+  public static final class Preferences.Key<T> {
+    method public String getName();
+    property public final String name;
+  }
+
+  public static final class Preferences.Pair<T> {
+  }
+
+  public final class PreferencesKt {
+    method public static void clear(androidx.datastore.preferences.core.MutablePreferences);
+    method public static suspend Object? edit(androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences>, kotlin.jvm.functions.Function2<? super androidx.datastore.preferences.core.MutablePreferences,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> transform, kotlin.coroutines.Continuation<? super androidx.datastore.preferences.core.Preferences> p);
+    method public static androidx.datastore.preferences.core.Preferences emptyPreferences();
+    method public static operator void minusAssign(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Key<?> key);
+    method public static androidx.datastore.preferences.core.MutablePreferences mutablePreferencesOf(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static operator void plusAssign(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences prefs);
+    method public static operator void plusAssign(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Pair<?> pair);
+    method public static inline <reified T> androidx.datastore.preferences.core.Preferences.Key<T>! preferencesKey(String name);
+    method public static androidx.datastore.preferences.core.Preferences preferencesOf(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static inline <reified T> androidx.datastore.preferences.core.Preferences.Key<java.util.Set<? extends T>>! preferencesSetKey(String name);
+    method public static void putAll(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static <T> T! remove(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public static infix <T> androidx.datastore.preferences.core.Preferences.Pair<T> to(androidx.datastore.preferences.core.Preferences.Key<T>, T? value);
+    method public static androidx.datastore.preferences.core.MutablePreferences toMutablePreferences(androidx.datastore.preferences.core.Preferences);
+    method public static androidx.datastore.preferences.core.Preferences toPreferences(androidx.datastore.preferences.core.Preferences);
+  }
+
+}
+
diff --git a/datastore/datastore-preferences-core/api/res-1.0.0-alpha01.txt b/datastore/datastore-preferences-core/api/res-1.0.0-alpha01.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/datastore/datastore-preferences-core/api/res-1.0.0-alpha01.txt
diff --git a/datastore/datastore-preferences-core/api/res-current.txt b/datastore/datastore-preferences-core/api/res-current.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/datastore/datastore-preferences-core/api/res-current.txt
diff --git a/datastore/datastore-preferences-core/api/restricted_1.0.0-alpha01.txt b/datastore/datastore-preferences-core/api/restricted_1.0.0-alpha01.txt
new file mode 100644
index 0000000..25ade7f
--- /dev/null
+++ b/datastore/datastore-preferences-core/api/restricted_1.0.0-alpha01.txt
@@ -0,0 +1,48 @@
+// Signature format: 3.0
+package androidx.datastore.preferences {
+
+  public final class PreferenceDataStoreFactory {
+    ctor public PreferenceDataStoreFactory();
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, androidx.datastore.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler = null, java.util.List<? extends kotlin.jvm.functions.Function0<? extends androidx.datastore.DataMigration<androidx.datastore.preferences.core.Preferences>>> migrationProducers = listOf(), kotlinx.coroutines.CoroutineScope scope = CoroutineScope(Dispatchers.IO + SupervisorJob()));
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, androidx.datastore.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler = null, java.util.List<? extends kotlin.jvm.functions.Function0<? extends androidx.datastore.DataMigration<androidx.datastore.preferences.core.Preferences>>> migrationProducers = listOf());
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, androidx.datastore.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler = null);
+    method public androidx.datastore.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile);
+  }
+
+  public final class Preferences {
+    method public operator boolean contains(String key);
+    method public static androidx.datastore.preferences.core.Preferences empty();
+    method public java.util.Map<java.lang.String,java.lang.Object> getAll();
+    method public boolean getBoolean(String key, boolean defaultValue);
+    method public float getFloat(String key, float defaultValue);
+    method public int getInt(String key, int defaultValue);
+    method public long getLong(String key, long defaultValue);
+    method public String getString(String key, String defaultValue);
+    method public java.util.Set<java.lang.String> getStringSet(String key, java.util.Set<java.lang.String> defaultValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder toBuilder();
+    field public static final androidx.datastore.preferences.core.Preferences.Companion Companion;
+  }
+
+  public static final class Preferences.Builder {
+    ctor public Preferences.Builder();
+    method public androidx.datastore.preferences.core.Preferences build();
+    method public androidx.datastore.preferences.core.Preferences.Builder clear();
+    method public androidx.datastore.preferences.core.Preferences.Builder remove(String key);
+    method public androidx.datastore.preferences.core.Preferences.Builder setBoolean(String key, boolean newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setFloat(String key, float newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setInt(String key, int newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setLong(String key, long newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setString(String key, String newValue);
+    method public androidx.datastore.preferences.core.Preferences.Builder setStringSet(String key, java.util.Set<java.lang.String> newValue);
+  }
+
+  public static final class Preferences.Companion {
+    method public androidx.datastore.preferences.core.Preferences empty();
+  }
+
+  public final class SharedPreferencesToPreferencesKt {
+    method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.core.Preferences>> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = SharedPreferencesToPreferences.MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+  }
+
+}
+
diff --git a/datastore/datastore-preferences-core/api/restricted_current.txt b/datastore/datastore-preferences-core/api/restricted_current.txt
new file mode 100644
index 0000000..5b9c1a9
--- /dev/null
+++ b/datastore/datastore-preferences-core/api/restricted_current.txt
@@ -0,0 +1,50 @@
+// Signature format: 4.0
+package androidx.datastore.preferences.core {
+
+  public final class MutablePreferences extends androidx.datastore.preferences.core.Preferences {
+    method public java.util.Map<androidx.datastore.preferences.core.Preferences.Key<?>,java.lang.Object> asMap();
+    method public operator <T> boolean contains(androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public operator <T> T? get(androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public operator <T> void set(androidx.datastore.preferences.core.Preferences.Key<T> key, T? value);
+  }
+
+  public final class PreferenceDataStoreFactory {
+    method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
+    field public static final androidx.datastore.preferences.core.PreferenceDataStoreFactory INSTANCE;
+  }
+
+  public abstract class Preferences {
+    method public abstract java.util.Map<androidx.datastore.preferences.core.Preferences.Key<?>,java.lang.Object> asMap();
+    method public abstract operator <T> boolean contains(androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public abstract operator <T> T? get(androidx.datastore.preferences.core.Preferences.Key<T> key);
+  }
+
+  public static final class Preferences.Key<T> {
+    ctor @kotlin.PublishedApi internal Preferences.Key(String name);
+    method public String getName();
+    property public final String name;
+  }
+
+  public static final class Preferences.Pair<T> {
+  }
+
+  public final class PreferencesKt {
+    method public static void clear(androidx.datastore.preferences.core.MutablePreferences);
+    method public static suspend Object? edit(androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences>, kotlin.jvm.functions.Function2<? super androidx.datastore.preferences.core.MutablePreferences,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> transform, kotlin.coroutines.Continuation<? super androidx.datastore.preferences.core.Preferences> p);
+    method public static androidx.datastore.preferences.core.Preferences emptyPreferences();
+    method public static operator void minusAssign(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Key<?> key);
+    method public static androidx.datastore.preferences.core.MutablePreferences mutablePreferencesOf(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static operator void plusAssign(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences prefs);
+    method public static operator void plusAssign(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Pair<?> pair);
+    method public static inline <reified T> androidx.datastore.preferences.core.Preferences.Key<T>! preferencesKey(String name);
+    method public static androidx.datastore.preferences.core.Preferences preferencesOf(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static inline <reified T> androidx.datastore.preferences.core.Preferences.Key<java.util.Set<? extends T>>! preferencesSetKey(String name);
+    method public static void putAll(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static <T> T! remove(androidx.datastore.preferences.core.MutablePreferences, androidx.datastore.preferences.core.Preferences.Key<T> key);
+    method public static infix <T> androidx.datastore.preferences.core.Preferences.Pair<T> to(androidx.datastore.preferences.core.Preferences.Key<T>, T? value);
+    method public static androidx.datastore.preferences.core.MutablePreferences toMutablePreferences(androidx.datastore.preferences.core.Preferences);
+    method public static androidx.datastore.preferences.core.Preferences toPreferences(androidx.datastore.preferences.core.Preferences);
+  }
+
+}
+
diff --git a/datastore/datastore-preferences-core/build.gradle b/datastore/datastore-preferences-core/build.gradle
new file mode 100644
index 0000000..98231bf
--- /dev/null
+++ b/datastore/datastore-preferences-core/build.gradle
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+import static androidx.build.dependencies.DependenciesKt.*
+import androidx.build.LibraryGroups
+import androidx.build.Publish
+
+buildscript {
+    dependencies {
+        classpath JARJAR
+    }
+}
+
+plugins {
+    id("AndroidXPlugin")
+    id("kotlin")
+    id("org.anarres.jarjar")
+}
+
+// Include :datastore-preferences-proto
+def jarjarConfigName = "jarjarpreferences"
+def jarjarConf = configurations.register(jarjarConfigName)
+dependencies.add(jarjarConfigName, project.dependencies.project(
+        path: ":datastore:datastore-preferences-core:datastore-preferences-proto",
+        configuration: jarjarConfigName))
+
+
+dependencies {
+    api(KOTLIN_STDLIB)
+    api(project(":datastore:datastore-core"))
+
+    implementation(files(jarjarConf))
+
+    testImplementation(JUNIT)
+    testImplementation(KOTLIN_COROUTINES_TEST)
+    testImplementation(KOTLIN_TEST)
+}
+
+androidx {
+    name = "Android Preferences DataStore Core"
+    publish = Publish.SNAPSHOT_AND_RELEASE
+    mavenGroup = LibraryGroups.DATASTORE
+    inceptionYear = "2020"
+    description = "Android Preferences DataStore without the Android Dependencies"
+    legacyDisableKotlinStrictApiMode = true
+}
diff --git a/datastore/datastore-preferences-core/datastore-preferences-proto/build.gradle b/datastore/datastore-preferences-core/datastore-preferences-proto/build.gradle
new file mode 100644
index 0000000..7c066e2
--- /dev/null
+++ b/datastore/datastore-preferences-core/datastore-preferences-proto/build.gradle
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2020 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.
+ */
+
+
+import org.anarres.gradle.plugin.jarjar.JarjarTask
+
+import static androidx.build.dependencies.DependenciesKt.*
+import androidx.build.LibraryGroups
+import androidx.build.Publish
+
+
+buildscript {
+    dependencies {
+        classpath 'org.anarres.jarjar:jarjar-gradle:1.0.1'
+    }
+}
+
+
+plugins {
+    id("AndroidXPlugin")
+    id("kotlin")
+    id("com.google.protobuf")
+}
+
+apply plugin: 'org.anarres.jarjar'
+
+
+dependencies {
+    implementation(PROTOBUF_LITE)
+    api(project(":datastore:datastore-core"))
+}
+
+protobuf {
+    protoc {
+        artifact = PROTOBUF_COMPILER
+    }
+
+    // Generates the java proto-lite code for the protos in this project. See
+    // https://github.com/google/protobuf-gradle-plugin#customizing-protobuf-compilation
+    // for more information.
+    generateProtoTasks {
+        all().each { task ->
+            task.builtins {
+                java {
+                    option 'lite'
+                }
+            }
+        }
+    }
+}
+
+// The proto-lite dependency includes .proto files, which are not used by datastore. When apps
+// depend on datastore as well as proto-lite directly, these files conflict since jarjar only
+// renames the java classes. Remove them here since they are unused.
+tasks.register("protoLiteWithoutProtoFiles", Copy) {
+    from(zipTree(configurations.detachedConfiguration(dependencies.create
+            (PROTOBUF_LITE)).getSingleFile())) {
+                exclude("**/*.proto")
+    }
+
+    destinationDir new File(project.buildDir, "protoLiteWithoutProtoFiles")
+}
+
+def preferencesProtoJarJarTask = tasks.register("jarjar", JarjarTask){
+    dependsOn(protobuf.generateProtoTasks.all())
+    from(files(protobuf.generatedFilesBaseDir))
+    dependsOn(compileKotlin)
+    from(files(compileKotlin.outputs.files))
+
+    dependsOn(compileJava)
+    from(files(compileJava.destinationDirectory))
+
+    dependsOn(protoLiteWithoutProtoFiles)
+    from(files(protoLiteWithoutProtoFiles.destinationDir))
+    classRename 'com.google.protobuf.**', 'androidx.datastore.preferences.protobuf.@1'
+}
+
+def jarjarConf = configurations.register("jarjarpreferences")
+
+artifacts.add("${jarjarConf.name}", preferencesProtoJarJarTask.get().destinationPath) {
+    name "datastore-preferences-proto-jarjar"
+    type 'jar'
+    builtBy preferencesProtoJarJarTask
+}
+
+androidx {
+    name = "Android Preferences DataStore Proto"
+    publish = Publish.NONE
+    mavenGroup = LibraryGroups.DATASTORE
+    inceptionYear = "2020"
+    description = "Jarjar the generated proto and proto-lite dependency for use by " +
+            "datastore-preferences."
+}
diff --git a/datastore/datastore-preferences/datastore-preferences-proto/src/main/AndroidManifest.xml b/datastore/datastore-preferences-core/datastore-preferences-proto/src/main/AndroidManifest.xml
similarity index 100%
rename from datastore/datastore-preferences/datastore-preferences-proto/src/main/AndroidManifest.xml
rename to datastore/datastore-preferences-core/datastore-preferences-proto/src/main/AndroidManifest.xml
diff --git a/datastore/datastore-preferences/datastore-preferences-proto/src/main/java/androidx/datastore/preferences/PreferencesMapCompat.kt b/datastore/datastore-preferences-core/datastore-preferences-proto/src/main/java/androidx/datastore/preferences/PreferencesMapCompat.kt
similarity index 100%
rename from datastore/datastore-preferences/datastore-preferences-proto/src/main/java/androidx/datastore/preferences/PreferencesMapCompat.kt
rename to datastore/datastore-preferences-core/datastore-preferences-proto/src/main/java/androidx/datastore/preferences/PreferencesMapCompat.kt
diff --git a/datastore/datastore-preferences/datastore-preferences-proto/src/main/proto/preferences.proto b/datastore/datastore-preferences-core/datastore-preferences-proto/src/main/proto/preferences.proto
similarity index 95%
rename from datastore/datastore-preferences/datastore-preferences-proto/src/main/proto/preferences.proto
rename to datastore/datastore-preferences-core/datastore-preferences-proto/src/main/proto/preferences.proto
index 068eb7c..22150ef 100644
--- a/datastore/datastore-preferences/datastore-preferences-proto/src/main/proto/preferences.proto
+++ b/datastore/datastore-preferences-core/datastore-preferences-proto/src/main/proto/preferences.proto
@@ -18,6 +18,7 @@
     int64 long = 4;
     string string = 5;
     StringSet string_set = 6;
+    double double = 7;
   }
 }
 
diff --git a/datastore/datastore-preferences-core/src/main/java/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt b/datastore/datastore-preferences-core/src/main/java/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt
new file mode 100644
index 0000000..5b52785
--- /dev/null
+++ b/datastore/datastore-preferences-core/src/main/java/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2020 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 androidx.datastore.preferences.core
+
+import androidx.datastore.core.CorruptionException
+import androidx.datastore.core.DataMigration
+import androidx.datastore.core.DataStore
+import androidx.datastore.core.DataStoreFactory
+import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
+import java.io.File
+
+/**
+ * Public factory for creating PreferenceDataStore instances.
+ */
+public object PreferenceDataStoreFactory {
+    /**
+     * Create an instance of SingleProcessDataStore. The user is responsible for ensuring that
+     * there is never more than one instance of SingleProcessDataStore acting on a file at a time.
+     *
+     * @param produceFile Function which returns the file that the new DataStore will act on.
+     * The function must return the same path every time. No two instances of PreferenceDataStore
+     * should act on the same file at the same time. The file must have the extension
+     * preferences_pb.
+     * @param corruptionHandler The corruptionHandler is invoked if DataStore encounters a
+     * [CorruptionException] when attempting to read data. CorruptionExceptions are thrown by
+     * serializers when data cannot be de-serialized.
+     * @param migrations are run before any access to data can occur. Each producer and migration
+     * may be run more than once whether or not it already succeeded (potentially because another
+     * migration failed or a write to disk failed.)
+     * @param scope The scope in which IO operations and transform functions will execute.
+     */
+    public fun create(
+        produceFile: () -> File,
+        corruptionHandler: ReplaceFileCorruptionHandler<Preferences>? = null,
+        migrations: List<DataMigration<Preferences>> = listOf(),
+        scope: CoroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob())
+    ): DataStore<Preferences> {
+        val delegate = DataStoreFactory.create(
+            produceFile = {
+                val file = produceFile()
+                check(file.extension == PreferencesSerializer.fileExtension) {
+                    "File extension for file: $file does not match required extension for" +
+                        " Preferences file: ${PreferencesSerializer.fileExtension}"
+                }
+                file
+            },
+            serializer = PreferencesSerializer,
+            corruptionHandler = corruptionHandler,
+            migrations = migrations,
+            scope = scope
+        )
+        return PreferenceDataStore(delegate)
+    }
+}
+
+internal class PreferenceDataStore(private val delegate: DataStore<Preferences>) :
+    DataStore<Preferences> by delegate {
+    override suspend fun updateData(transform: suspend (t: Preferences) -> Preferences):
+        Preferences {
+            return delegate.updateData {
+                val transformed = transform(it)
+                // Freeze the preferences since any future mutations will break DataStore. If a user
+                // tunnels the value out of DataStore and mutates it, this could be problematic.
+                // This is a safe cast, since MutablePreferences is the only implementation of
+                // Preferences.
+                (transformed as MutablePreferences).freeze()
+                transformed
+            }
+        }
+}
diff --git a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/Preferences.kt b/datastore/datastore-preferences-core/src/main/java/androidx/datastore/preferences/core/Preferences.kt
similarity index 98%
rename from datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/Preferences.kt
rename to datastore/datastore-preferences-core/src/main/java/androidx/datastore/preferences/core/Preferences.kt
index bfebbec..957088c 100644
--- a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/Preferences.kt
+++ b/datastore/datastore-preferences-core/src/main/java/androidx/datastore/preferences/core/Preferences.kt
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package androidx.datastore.preferences
+package androidx.datastore.preferences.core
 
 import androidx.datastore.core.DataStore
 import java.lang.IllegalArgumentException
@@ -21,7 +21,7 @@
 import java.util.concurrent.atomic.AtomicBoolean
 
 /**
- * Get a preference Key of type T. Type T must be one of: Int, Long, Boolean, Float, String.
+ * Get a preference Key of type T. Type T must be one of: Int, Long, Boolean, Float, Double, String.
  * Use the [preferencesSetKey] function to create a preference key for Set<String>. No
  * other types are supported.
  *
@@ -48,6 +48,9 @@
         Long::class -> {
             Preferences.Key<T>(name)
         }
+        Double::class -> {
+            Preferences.Key<T>(name)
+        }
         Set::class -> {
             throw IllegalArgumentException("Use `preferencesSetKey` to create keys for Sets.")
         }
@@ -205,7 +208,7 @@
         return preferencesMap.containsKey(key)
     }
 
-    override operator fun <T> get(key: Preferences.Key<T>): T? {
+    override operator fun <T> get(key: Key<T>): T? {
         @Suppress("UNCHECKED_CAST")
         return preferencesMap[key] as T?
     }
diff --git a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferencesSerializer.kt b/datastore/datastore-preferences-core/src/main/java/androidx/datastore/preferences/core/PreferencesSerializer.kt
similarity index 90%
rename from datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferencesSerializer.kt
rename to datastore/datastore-preferences-core/src/main/java/androidx/datastore/preferences/core/PreferencesSerializer.kt
index f7b3bd4..2500055 100644
--- a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferencesSerializer.kt
+++ b/datastore/datastore-preferences-core/src/main/java/androidx/datastore/preferences/core/PreferencesSerializer.kt
@@ -14,16 +14,18 @@
  * limitations under the License.
  */
 
-package androidx.datastore.preferences
+package androidx.datastore.preferences.core
 
 import androidx.datastore.core.CorruptionException
 import androidx.datastore.preferences.PreferencesProto.PreferenceMap
 import androidx.datastore.preferences.PreferencesProto.Value
 import androidx.datastore.preferences.PreferencesProto.StringSet
 import androidx.datastore.core.Serializer
+import androidx.datastore.preferences.PreferencesMapCompat
 import java.io.IOException
 import java.io.InputStream
 import java.io.OutputStream
+import kotlin.jvm.Throws
 
 /**
  * Proto based serializer for Preferences.
@@ -34,6 +36,11 @@
 internal object PreferencesSerializer : Serializer<Preferences> {
     val fileExtension = "preferences_pb"
 
+    override val defaultValue: Preferences
+        get() {
+            return emptyPreferences()
+        }
+
     @Throws(IOException::class, CorruptionException::class)
     override fun readFrom(input: InputStream): Preferences {
         val preferencesProto = PreferencesMapCompat.readFrom(input)
@@ -63,6 +70,7 @@
         return when (value) {
             is Boolean -> Value.newBuilder().setBoolean(value).build()
             is Float -> Value.newBuilder().setFloat(value).build()
+            is Double -> Value.newBuilder().setDouble(value).build()
             is Int -> Value.newBuilder().setInteger(value).build()
             is Long -> Value.newBuilder().setLong(value).build()
             is String -> Value.newBuilder().setString(value).build()
@@ -85,6 +93,7 @@
         return when (value.valueCase) {
             Value.ValueCase.BOOLEAN -> mutablePreferences[preferencesKey(name)] = value.boolean
             Value.ValueCase.FLOAT -> mutablePreferences[preferencesKey(name)] = value.float
+            Value.ValueCase.DOUBLE -> mutablePreferences[preferencesKey(name)] = value.double
             Value.ValueCase.INTEGER -> mutablePreferences[preferencesKey(name)] = value.integer
             Value.ValueCase.LONG -> mutablePreferences[preferencesKey(name)] = value.long
             Value.ValueCase.STRING -> mutablePreferences[preferencesKey(name)] = value.string
diff --git a/datastore/datastore-preferences-core/src/test/java/androidx/datastore/preferences/core/PreferenceDataStoreFactoryTest.kt b/datastore/datastore-preferences-core/src/test/java/androidx/datastore/preferences/core/PreferenceDataStoreFactoryTest.kt
new file mode 100644
index 0000000..52b7447
--- /dev/null
+++ b/datastore/datastore-preferences-core/src/test/java/androidx/datastore/preferences/core/PreferenceDataStoreFactoryTest.kt
@@ -0,0 +1,172 @@
+/*
+ * Copyright 2020 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 androidx.datastore.preferences.core
+
+import androidx.datastore.core.DataMigration
+import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
+import kotlinx.coroutines.FlowPreview
+import kotlinx.coroutines.ObsoleteCoroutinesApi
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.test.TestCoroutineScope
+import kotlinx.coroutines.test.runBlockingTest
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.TemporaryFolder
+import java.io.File
+import java.lang.IllegalStateException
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+
+@ObsoleteCoroutinesApi
+@kotlinx.coroutines.ExperimentalCoroutinesApi
+@FlowPreview
+class PreferenceDataStoreFactoryTest {
+    @get:Rule
+    val tmp = TemporaryFolder()
+
+    private lateinit var testFile: File
+    private lateinit var dataStoreScope: TestCoroutineScope
+
+    val stringKey = preferencesKey<String>("key")
+    val booleanKey = preferencesKey<Boolean>("key")
+
+    @Before
+    fun setUp() {
+        testFile = tmp.newFile("test_file." + PreferencesSerializer.fileExtension)
+        dataStoreScope = TestCoroutineScope()
+    }
+
+    @Test
+    fun testNewInstance() = runBlockingTest {
+        val store = PreferenceDataStoreFactory.create(
+            produceFile = { testFile },
+            scope = dataStoreScope
+        )
+
+        val expectedPreferences =
+            preferencesOf(stringKey to "value")
+
+        assertEquals(
+            store.edit { prefs ->
+                prefs[stringKey] = "value"
+            },
+            expectedPreferences
+        )
+        assertEquals(expectedPreferences, store.data.first())
+    }
+
+    @Test
+    fun testCorruptionHandlerInstalled() = runBlockingTest {
+        testFile.writeBytes(byteArrayOf(0x00, 0x00, 0x00, 0x03)) // Protos can not start with 0x00.
+
+        val valueToReplace = preferencesOf(booleanKey to true)
+
+        val store = PreferenceDataStoreFactory.create(
+            produceFile = { testFile },
+            corruptionHandler = ReplaceFileCorruptionHandler<Preferences> {
+                valueToReplace
+            },
+            scope = dataStoreScope
+        )
+        assertEquals(valueToReplace, store.data.first())
+    }
+
+    @Test
+    fun testMigrationsInstalled() = runBlockingTest {
+
+        val expectedPreferences = preferencesOf(
+            stringKey to "value",
+            booleanKey to true
+        )
+
+        val migrateTo5 = object : DataMigration<Preferences> {
+            override suspend fun shouldMigrate(currentData: Preferences) = true
+
+            override suspend fun migrate(currentData: Preferences) =
+                currentData.toMutablePreferences().apply { set(stringKey, "value") }.toPreferences()
+
+            override suspend fun cleanUp() {}
+        }
+
+        val migratePlus1 = object : DataMigration<Preferences> {
+            override suspend fun shouldMigrate(currentData: Preferences) = true
+
+            override suspend fun migrate(currentData: Preferences) =
+                currentData.toMutablePreferences().apply { set(booleanKey, true) }.toPreferences()
+
+            override suspend fun cleanUp() {}
+        }
+
+        val store = PreferenceDataStoreFactory.create(
+            produceFile = { testFile },
+            migrations = listOf(migrateTo5, migratePlus1),
+            scope = dataStoreScope
+        )
+
+        assertEquals(expectedPreferences, store.data.first())
+    }
+
+    @Test
+    fun testCantMutateInternalState() = runBlockingTest {
+        val store =
+            PreferenceDataStoreFactory.create(produceFile = { testFile }, scope = dataStoreScope)
+
+        var mutableReference: MutablePreferences? = null
+        store.edit {
+            mutableReference = it
+            it[stringKey] = "ABCDEF"
+        }
+
+        assertEquals(
+            store.data.first(),
+            preferencesOf(stringKey to "ABCDEF")
+        )
+
+        assertFailsWith<IllegalStateException> {
+            mutableReference!!.clear()
+        }
+
+        assertFailsWith<IllegalStateException> {
+            mutableReference!! += preferencesOf(stringKey to "abc")
+        }
+
+        assertFailsWith<IllegalStateException> {
+            mutableReference!! += stringKey to "abc"
+        }
+
+        assertFailsWith<IllegalStateException> {
+            mutableReference!! -= stringKey
+        }
+
+        assertFailsWith<IllegalStateException> {
+            mutableReference!!.remove(stringKey)
+        }
+
+        assertFailsWith<IllegalStateException> {
+            mutableReference!!.putAll(stringKey to "abc")
+        }
+
+        assertFailsWith<IllegalStateException> {
+            mutableReference!![stringKey] = "asdjkfajksdhljkasdhf"
+        }
+        assertEquals(
+            store.data.first(),
+            preferencesOf(stringKey to "ABCDEF")
+        )
+    }
+}
\ No newline at end of file
diff --git a/datastore/datastore-preferences/src/test/java/androidx/datastore/preferences/PreferencesSerializerTest.kt b/datastore/datastore-preferences-core/src/test/java/androidx/datastore/preferences/core/PreferencesSerializerTest.kt
similarity index 76%
rename from datastore/datastore-preferences/src/test/java/androidx/datastore/preferences/PreferencesSerializerTest.kt
rename to datastore/datastore-preferences-core/src/test/java/androidx/datastore/preferences/core/PreferencesSerializerTest.kt
index b9ab270..60c10a3 100644
--- a/datastore/datastore-preferences/src/test/java/androidx/datastore/preferences/PreferencesSerializerTest.kt
+++ b/datastore/datastore-preferences-core/src/test/java/androidx/datastore/preferences/core/PreferencesSerializerTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.datastore.preferences
+package androidx.datastore.preferences.core
 
 import androidx.datastore.core.CorruptionException
 import org.junit.Before
@@ -62,7 +62,8 @@
 
     @Test
     fun testWriteAndReadStringSet() {
-        val stringSetKey = preferencesSetKey<String>("string_set_key")
+        val stringSetKey =
+            preferencesSetKey<String>("string_set_key")
 
         val prefs = preferencesOf(
             stringSetKey to setOf("string1", "string2", "string3")
@@ -137,6 +138,46 @@
     }
 
     @Test
+    fun testWriteAndReadFloat() {
+        val floatKey = preferencesKey<Float>("float_key")
+
+        val prefs = preferencesOf(
+            floatKey to 3.0f
+        )
+
+        testFile.outputStream().use {
+            preferencesSerializer.writeTo(prefs, it)
+        }
+
+        val readPrefs = testFile.inputStream().use {
+            preferencesSerializer.readFrom(it)
+        }
+
+        assertEquals(prefs, readPrefs)
+    }
+
+    @Test
+    fun testWriteAndReadDouble() {
+        val maxDouble = preferencesKey<Double>("max_double_key")
+        val minDouble = preferencesKey<Double>("min_double_key")
+
+        val prefs = preferencesOf(
+            maxDouble to Double.MAX_VALUE,
+            minDouble to Double.MIN_VALUE
+        )
+
+        testFile.outputStream().use {
+            preferencesSerializer.writeTo(prefs, it)
+        }
+
+        val readPrefs = testFile.inputStream().use {
+            preferencesSerializer.readFrom(it)
+        }
+
+        assertEquals(prefs, readPrefs)
+    }
+
+    @Test
     fun testThrowsCorruptionException() {
         // Not a valid proto - protos cannot start with a 0 byte.
         testFile.writeBytes(byteArrayOf(0, 1, 2, 3, 4))
diff --git a/datastore/datastore-preferences/src/test/java/androidx/datastore/preferences/PreferencesTest.kt b/datastore/datastore-preferences-core/src/test/java/androidx/datastore/preferences/core/PreferencesTest.kt
similarity index 77%
rename from datastore/datastore-preferences/src/test/java/androidx/datastore/preferences/PreferencesTest.kt
rename to datastore/datastore-preferences-core/src/test/java/androidx/datastore/preferences/core/PreferencesTest.kt
index 266f10d..7171372 100644
--- a/datastore/datastore-preferences/src/test/java/androidx/datastore/preferences/PreferencesTest.kt
+++ b/datastore/datastore-preferences-core/src/test/java/androidx/datastore/preferences/core/PreferencesTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.datastore.preferences
+package androidx.datastore.preferences.core
 
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -64,6 +64,22 @@
     }
 
     @Test
+    fun testDouble() {
+        val doubleKey = preferencesKey<Double>("double_key")
+
+        val prefs = preferencesOf(doubleKey to Double.MAX_VALUE)
+
+        assertTrue { doubleKey in prefs }
+        assertEquals(Double.MAX_VALUE, prefs[doubleKey])
+    }
+
+    @Test
+    fun testDoubleNotSet() {
+        val doubleKey = preferencesKey<Double>("double_key")
+        assertNull(emptyPreferences()[doubleKey])
+    }
+
+    @Test
     fun testInt() {
         val intKey = preferencesKey<Int>("int_key")
 
@@ -117,9 +133,16 @@
 
     @Test
     fun testStringSet() {
-        val stringSetKey = preferencesSetKey<String>("string_set_key")
+        val stringSetKey =
+            preferencesSetKey<String>("string_set_key")
 
-        val prefs = preferencesOf(stringSetKey to setOf("string1", "string2", "string3"))
+        val prefs = preferencesOf(
+            stringSetKey to setOf(
+                "string1",
+                "string2",
+                "string3"
+            )
+        )
 
         assertTrue { prefs.contains(stringSetKey) }
         assertEquals(
@@ -129,14 +152,16 @@
 
     @Test
     fun testStringSetNotSet() {
-        val stringSetKey = preferencesSetKey<String>("string_set_key")
+        val stringSetKey =
+            preferencesSetKey<String>("string_set_key")
 
         assertNull(emptyPreferences()[stringSetKey])
     }
 
     @Test
     fun testModifyingStringSetDoesntModifyInternalState() {
-        val stringSetKey = preferencesSetKey<String>("string_set_key")
+        val stringSetKey =
+            preferencesSetKey<String>("string_set_key")
 
         val stringSet = mutableSetOf("1", "2", "3")
 
@@ -162,7 +187,8 @@
     @Suppress("UNUSED_VARIABLE")
     fun testWrongTypeThrowsClassCastException() {
         val stringKey = preferencesKey<String>("string_key")
-        val intKey = preferencesKey<Int>("string_key") // long key of the same name as stringKey!
+        val intKey =
+            preferencesKey<Int>("string_key") // long key of the same name as stringKey!
         val longKey = preferencesKey<Long>("string_key")
 
         val prefs = preferencesOf(intKey to 123456)
@@ -186,9 +212,13 @@
     @Test
     fun testGetAll() {
         val intKey = preferencesKey<Int>("int_key")
-        val stringSetKey = preferencesSetKey<String>("string_set_key")
+        val stringSetKey =
+            preferencesSetKey<String>("string_set_key")
 
-        val prefs = preferencesOf(intKey to 123, stringSetKey to setOf("1", "2", "3"))
+        val prefs = preferencesOf(
+            intKey to 123,
+            stringSetKey to setOf("1", "2", "3")
+        )
 
         val allPreferences: Map<Preferences.Key<*>, Any> = prefs.asMap()
         assertEquals(2, allPreferences.size)
@@ -201,9 +231,13 @@
     @Suppress("UNCHECKED_CAST")
     fun testGetAllCantMutateInternalState() {
         val intKey = preferencesKey<Int>("int_key")
-        val stringSetKey = preferencesSetKey<String>("string_set_key")
+        val stringSetKey =
+            preferencesSetKey<String>("string_set_key")
 
-        val prefs = preferencesOf(intKey to 123, stringSetKey to setOf("1", "2", "3"))
+        val prefs = preferencesOf(
+            intKey to 123,
+            stringSetKey to setOf("1", "2", "3")
+        )
 
         val mutableAllPreferences = prefs.asMap() as MutableMap
         assertFailsWith<UnsupportedOperationException> {
@@ -285,7 +319,8 @@
 
     @Test
     fun testNotEqualsDifferentStringSets() {
-        val stringSetKey = preferencesSetKey<String>("string_set")
+        val stringSetKey =
+            preferencesSetKey<String>("string_set")
 
         val prefs1 = preferencesOf(stringSetKey to setOf("1"))
         val prefs2 = preferencesOf(stringSetKey to setOf())
@@ -295,18 +330,50 @@
 
     @Test
     fun testCreateUnsupportedKeyType_failsWithIllegalStateException() {
-        assertFailsWith<IllegalArgumentException> { preferencesKey<Set<String>>("test") }
-        assertFailsWith<IllegalArgumentException> { preferencesKey<Set<*>>("test") }
-        assertFailsWith<IllegalArgumentException> { preferencesKey<Double>("test") }
-        assertFailsWith<IllegalArgumentException> { preferencesKey<Any>("test") }
+        assertFailsWith<IllegalArgumentException> {
+            preferencesKey<Set<String>>(
+                "test"
+            )
+        }
+        assertFailsWith<IllegalArgumentException> {
+            preferencesKey<Set<*>>(
+                "test"
+            )
+        }
+        assertFailsWith<IllegalArgumentException> {
+            preferencesKey<Preferences>(
+                "test"
+            )
+        }
+        assertFailsWith<IllegalArgumentException> {
+            preferencesKey<Any>(
+                "test"
+            )
+        }
     }
 
     @Test
     fun testCreateUnsupportedSetKeyType_failsWithIllegalStateException() {
-        assertFailsWith<IllegalArgumentException> { preferencesSetKey<Set<String>>("test") }
-        assertFailsWith<IllegalArgumentException> { preferencesSetKey<Set<*>>("test") }
-        assertFailsWith<IllegalArgumentException> { preferencesSetKey<Double>("test") }
-        assertFailsWith<IllegalArgumentException> { preferencesSetKey<Any>("test") }
+        assertFailsWith<IllegalArgumentException> {
+            preferencesSetKey<Set<String>>(
+                "test"
+            )
+        }
+        assertFailsWith<IllegalArgumentException> {
+            preferencesSetKey<Set<*>>(
+                "test"
+            )
+        }
+        assertFailsWith<IllegalArgumentException> {
+            preferencesSetKey<Double>(
+                "test"
+            )
+        }
+        assertFailsWith<IllegalArgumentException> {
+            preferencesSetKey<Any>(
+                "test"
+            )
+        }
     }
 
     @Test
@@ -319,7 +386,8 @@
         assertEquals(1, prefs[intKey1])
         assertEquals(2, prefs[intKey2])
 
-        val mutablePreferences = preferencesOf(intKey1 to 1, intKey2 to 2)
+        val mutablePreferences =
+            preferencesOf(intKey1 to 1, intKey2 to 2)
         val mutableToPrefs = mutablePreferences.toPreferences()
         assertEquals(2, mutableToPrefs.asMap().size)
         assertEquals(1, prefs[intKey1])
@@ -336,7 +404,8 @@
         assertEquals(1, prefs[intKey1])
         assertEquals(2, prefs[intKey2])
 
-        val mutablePreferences = preferencesOf(intKey1 to 1, intKey2 to 2)
+        val mutablePreferences =
+            preferencesOf(intKey1 to 1, intKey2 to 2)
         val mutableToPrefs = mutablePreferences.toMutablePreferences()
         assertEquals(2, mutableToPrefs.asMap().size)
         assertEquals(1, prefs[intKey1])
@@ -347,12 +416,14 @@
     fun testToMutablePreferences_doesntMutateOriginal() {
         val intKey1 = preferencesKey<Int>("int_key1")
         val intKey2 = preferencesKey<Int>("int_key2")
-        val prefs = mutablePreferencesOf(intKey1 to 1, intKey2 to 2)
+        val prefs =
+            mutablePreferencesOf(intKey1 to 1, intKey2 to 2)
         val toPrefs = prefs.toMutablePreferences()
         toPrefs[intKey1] = 12903819
         assertEquals(1, prefs[intKey1])
 
-        val mutablePreferences = preferencesOf(intKey1 to 1, intKey2 to 2)
+        val mutablePreferences =
+            preferencesOf(intKey1 to 1, intKey2 to 2)
         val mutableToPrefs = mutablePreferences.toMutablePreferences()
         mutableToPrefs[intKey1] = 12903819
         assertEquals(1, prefs[intKey1])
@@ -364,7 +435,8 @@
         val booleanKey = preferencesKey<Boolean>("boolean_key")
         val floatKey = preferencesKey<Float>("float_key")
         val stringKey = preferencesKey<String>("string_key")
-        val stringSetKey = preferencesSetKey<String>("string_set_key")
+        val stringSetKey =
+            preferencesSetKey<String>("string_set_key")
         val longKey = preferencesKey<Long>("long_key")
 
         val prefs = preferencesOf(
diff --git a/datastore/datastore-preferences/api/api_lint.ignore b/datastore/datastore-preferences/api/api_lint.ignore
deleted file mode 100644
index 3e56e10..0000000
--- a/datastore/datastore-preferences/api/api_lint.ignore
+++ /dev/null
@@ -1,9 +0,0 @@
-// Baseline format: 1.0
-MissingJvmstatic: androidx.datastore.preferences.PreferenceDataStoreFactory#create(kotlin.jvm.functions.Function0<? extends java.io.File>, androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.Preferences>, java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.Preferences>>, kotlinx.coroutines.CoroutineScope):
-    A Kotlin method with default parameter values should be annotated with @JvmOverloads for better Java interoperability; see https://android.github.io/kotlin-guides/interop.html#function-overloads-for-defaults
-
-
-MissingNullability: androidx.datastore.preferences.PreferencesKt#preferencesKey(String):
-    Missing nullability on method `preferencesKey` return
-MissingNullability: androidx.datastore.preferences.PreferencesKt#preferencesSetKey(String):
-    Missing nullability on method `preferencesSetKey` return
diff --git a/datastore/datastore-preferences/api/current.txt b/datastore/datastore-preferences/api/current.txt
index 922dae4..ae427b5 100644
--- a/datastore/datastore-preferences/api/current.txt
+++ b/datastore/datastore-preferences/api/current.txt
@@ -1,58 +1,14 @@
 // Signature format: 4.0
 package androidx.datastore.preferences {
 
-  public final class MutablePreferences extends androidx.datastore.preferences.Preferences {
-    method public java.util.Map<androidx.datastore.preferences.Preferences.Key<?>,java.lang.Object> asMap();
-    method public operator <T> boolean contains(androidx.datastore.preferences.Preferences.Key<T> key);
-    method public operator <T> T? get(androidx.datastore.preferences.Preferences.Key<T> key);
-    method public operator <T> void set(androidx.datastore.preferences.Preferences.Key<T> key, T? value);
-  }
-
-  public final class PreferenceDataStoreFactory {
-    method public androidx.datastore.core.DataStore<androidx.datastore.preferences.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
-    field public static final androidx.datastore.preferences.PreferenceDataStoreFactory INSTANCE;
-  }
-
   public final class PreferenceDataStoreFactoryKt {
-    method public static androidx.datastore.core.DataStore<androidx.datastore.preferences.Preferences> createDataStore(android.content.Context, String name, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
-  }
-
-  public abstract class Preferences {
-    method public abstract java.util.Map<androidx.datastore.preferences.Preferences.Key<?>,java.lang.Object> asMap();
-    method public abstract operator <T> boolean contains(androidx.datastore.preferences.Preferences.Key<T> key);
-    method public abstract operator <T> T? get(androidx.datastore.preferences.Preferences.Key<T> key);
-  }
-
-  public static final class Preferences.Key<T> {
-    method public String getName();
-    property public final String name;
-  }
-
-  public static final class Preferences.Pair<T> {
-  }
-
-  public final class PreferencesKt {
-    method public static void clear(androidx.datastore.preferences.MutablePreferences);
-    method public static suspend Object? edit(androidx.datastore.core.DataStore<androidx.datastore.preferences.Preferences>, kotlin.jvm.functions.Function2<? super androidx.datastore.preferences.MutablePreferences,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> transform, kotlin.coroutines.Continuation<? super androidx.datastore.preferences.Preferences> p);
-    method public static androidx.datastore.preferences.Preferences emptyPreferences();
-    method public static operator void minusAssign(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Key<?> key);
-    method public static androidx.datastore.preferences.MutablePreferences mutablePreferencesOf(androidx.datastore.preferences.Preferences.Pair<?>... pairs);
-    method public static operator void plusAssign(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences prefs);
-    method public static operator void plusAssign(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Pair<?> pair);
-    method public static inline <reified T> androidx.datastore.preferences.Preferences.Key<T>! preferencesKey(String name);
-    method public static androidx.datastore.preferences.Preferences preferencesOf(androidx.datastore.preferences.Preferences.Pair<?>... pairs);
-    method public static inline <reified T> androidx.datastore.preferences.Preferences.Key<java.util.Set<? extends T>>! preferencesSetKey(String name);
-    method public static void putAll(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Pair<?>... pairs);
-    method public static <T> T! remove(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Key<T> key);
-    method public static infix <T> androidx.datastore.preferences.Preferences.Pair<T> to(androidx.datastore.preferences.Preferences.Key<T>, T? value);
-    method public static androidx.datastore.preferences.MutablePreferences toMutablePreferences(androidx.datastore.preferences.Preferences);
-    method public static androidx.datastore.preferences.Preferences toPreferences(androidx.datastore.preferences.Preferences);
+    method public static androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> createDataStore(android.content.Context, String name, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
   }
 
   public final class SharedPreferencesMigrationKt {
-    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate, optional boolean deleteEmptyPreferences);
-    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate);
-    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName);
+    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.core.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate, optional boolean deleteEmptyPreferences);
+    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.core.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate);
+    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.core.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName);
   }
 
 }
diff --git a/datastore/datastore-preferences/api/public_plus_experimental_current.txt b/datastore/datastore-preferences/api/public_plus_experimental_current.txt
index 922dae4..ae427b5 100644
--- a/datastore/datastore-preferences/api/public_plus_experimental_current.txt
+++ b/datastore/datastore-preferences/api/public_plus_experimental_current.txt
@@ -1,58 +1,14 @@
 // Signature format: 4.0
 package androidx.datastore.preferences {
 
-  public final class MutablePreferences extends androidx.datastore.preferences.Preferences {
-    method public java.util.Map<androidx.datastore.preferences.Preferences.Key<?>,java.lang.Object> asMap();
-    method public operator <T> boolean contains(androidx.datastore.preferences.Preferences.Key<T> key);
-    method public operator <T> T? get(androidx.datastore.preferences.Preferences.Key<T> key);
-    method public operator <T> void set(androidx.datastore.preferences.Preferences.Key<T> key, T? value);
-  }
-
-  public final class PreferenceDataStoreFactory {
-    method public androidx.datastore.core.DataStore<androidx.datastore.preferences.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
-    field public static final androidx.datastore.preferences.PreferenceDataStoreFactory INSTANCE;
-  }
-
   public final class PreferenceDataStoreFactoryKt {
-    method public static androidx.datastore.core.DataStore<androidx.datastore.preferences.Preferences> createDataStore(android.content.Context, String name, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
-  }
-
-  public abstract class Preferences {
-    method public abstract java.util.Map<androidx.datastore.preferences.Preferences.Key<?>,java.lang.Object> asMap();
-    method public abstract operator <T> boolean contains(androidx.datastore.preferences.Preferences.Key<T> key);
-    method public abstract operator <T> T? get(androidx.datastore.preferences.Preferences.Key<T> key);
-  }
-
-  public static final class Preferences.Key<T> {
-    method public String getName();
-    property public final String name;
-  }
-
-  public static final class Preferences.Pair<T> {
-  }
-
-  public final class PreferencesKt {
-    method public static void clear(androidx.datastore.preferences.MutablePreferences);
-    method public static suspend Object? edit(androidx.datastore.core.DataStore<androidx.datastore.preferences.Preferences>, kotlin.jvm.functions.Function2<? super androidx.datastore.preferences.MutablePreferences,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> transform, kotlin.coroutines.Continuation<? super androidx.datastore.preferences.Preferences> p);
-    method public static androidx.datastore.preferences.Preferences emptyPreferences();
-    method public static operator void minusAssign(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Key<?> key);
-    method public static androidx.datastore.preferences.MutablePreferences mutablePreferencesOf(androidx.datastore.preferences.Preferences.Pair<?>... pairs);
-    method public static operator void plusAssign(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences prefs);
-    method public static operator void plusAssign(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Pair<?> pair);
-    method public static inline <reified T> androidx.datastore.preferences.Preferences.Key<T>! preferencesKey(String name);
-    method public static androidx.datastore.preferences.Preferences preferencesOf(androidx.datastore.preferences.Preferences.Pair<?>... pairs);
-    method public static inline <reified T> androidx.datastore.preferences.Preferences.Key<java.util.Set<? extends T>>! preferencesSetKey(String name);
-    method public static void putAll(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Pair<?>... pairs);
-    method public static <T> T! remove(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Key<T> key);
-    method public static infix <T> androidx.datastore.preferences.Preferences.Pair<T> to(androidx.datastore.preferences.Preferences.Key<T>, T? value);
-    method public static androidx.datastore.preferences.MutablePreferences toMutablePreferences(androidx.datastore.preferences.Preferences);
-    method public static androidx.datastore.preferences.Preferences toPreferences(androidx.datastore.preferences.Preferences);
+    method public static androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> createDataStore(android.content.Context, String name, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
   }
 
   public final class SharedPreferencesMigrationKt {
-    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate, optional boolean deleteEmptyPreferences);
-    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate);
-    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName);
+    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.core.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate, optional boolean deleteEmptyPreferences);
+    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.core.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate);
+    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.core.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName);
   }
 
 }
diff --git a/datastore/datastore-preferences/api/restricted_current.txt b/datastore/datastore-preferences/api/restricted_current.txt
index 9f1fb34..ae427b5 100644
--- a/datastore/datastore-preferences/api/restricted_current.txt
+++ b/datastore/datastore-preferences/api/restricted_current.txt
@@ -1,59 +1,14 @@
 // Signature format: 4.0
 package androidx.datastore.preferences {
 
-  public final class MutablePreferences extends androidx.datastore.preferences.Preferences {
-    method public java.util.Map<androidx.datastore.preferences.Preferences.Key<?>,java.lang.Object> asMap();
-    method public operator <T> boolean contains(androidx.datastore.preferences.Preferences.Key<T> key);
-    method public operator <T> T? get(androidx.datastore.preferences.Preferences.Key<T> key);
-    method public operator <T> void set(androidx.datastore.preferences.Preferences.Key<T> key, T? value);
-  }
-
-  public final class PreferenceDataStoreFactory {
-    method public androidx.datastore.core.DataStore<androidx.datastore.preferences.Preferences> create(kotlin.jvm.functions.Function0<? extends java.io.File> produceFile, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
-    field public static final androidx.datastore.preferences.PreferenceDataStoreFactory INSTANCE;
-  }
-
   public final class PreferenceDataStoreFactoryKt {
-    method public static androidx.datastore.core.DataStore<androidx.datastore.preferences.Preferences> createDataStore(android.content.Context, String name, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
-  }
-
-  public abstract class Preferences {
-    method public abstract java.util.Map<androidx.datastore.preferences.Preferences.Key<?>,java.lang.Object> asMap();
-    method public abstract operator <T> boolean contains(androidx.datastore.preferences.Preferences.Key<T> key);
-    method public abstract operator <T> T? get(androidx.datastore.preferences.Preferences.Key<T> key);
-  }
-
-  public static final class Preferences.Key<T> {
-    ctor @kotlin.PublishedApi internal Preferences.Key(String name);
-    method public String getName();
-    property public final String name;
-  }
-
-  public static final class Preferences.Pair<T> {
-  }
-
-  public final class PreferencesKt {
-    method public static void clear(androidx.datastore.preferences.MutablePreferences);
-    method public static suspend Object? edit(androidx.datastore.core.DataStore<androidx.datastore.preferences.Preferences>, kotlin.jvm.functions.Function2<? super androidx.datastore.preferences.MutablePreferences,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> transform, kotlin.coroutines.Continuation<? super androidx.datastore.preferences.Preferences> p);
-    method public static androidx.datastore.preferences.Preferences emptyPreferences();
-    method public static operator void minusAssign(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Key<?> key);
-    method public static androidx.datastore.preferences.MutablePreferences mutablePreferencesOf(androidx.datastore.preferences.Preferences.Pair<?>... pairs);
-    method public static operator void plusAssign(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences prefs);
-    method public static operator void plusAssign(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Pair<?> pair);
-    method public static inline <reified T> androidx.datastore.preferences.Preferences.Key<T>! preferencesKey(String name);
-    method public static androidx.datastore.preferences.Preferences preferencesOf(androidx.datastore.preferences.Preferences.Pair<?>... pairs);
-    method public static inline <reified T> androidx.datastore.preferences.Preferences.Key<java.util.Set<? extends T>>! preferencesSetKey(String name);
-    method public static void putAll(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Pair<?>... pairs);
-    method public static <T> T! remove(androidx.datastore.preferences.MutablePreferences, androidx.datastore.preferences.Preferences.Key<T> key);
-    method public static infix <T> androidx.datastore.preferences.Preferences.Pair<T> to(androidx.datastore.preferences.Preferences.Key<T>, T? value);
-    method public static androidx.datastore.preferences.MutablePreferences toMutablePreferences(androidx.datastore.preferences.Preferences);
-    method public static androidx.datastore.preferences.Preferences toPreferences(androidx.datastore.preferences.Preferences);
+    method public static androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> createDataStore(android.content.Context, String name, optional androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences>? corruptionHandler, optional java.util.List<? extends androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences>> migrations, optional kotlinx.coroutines.CoroutineScope scope);
   }
 
   public final class SharedPreferencesMigrationKt {
-    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate, optional boolean deleteEmptyPreferences);
-    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate);
-    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName);
+    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.core.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate, optional boolean deleteEmptyPreferences);
+    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.core.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName, optional java.util.Set<java.lang.String>? keysToMigrate);
+    method public static androidx.datastore.migrations.SharedPreferencesMigration<androidx.datastore.preferences.core.Preferences> SharedPreferencesMigration(android.content.Context context, String sharedPreferencesName);
   }
 
 }
diff --git a/datastore/datastore-preferences/build.gradle b/datastore/datastore-preferences/build.gradle
index d86769f..7785c9a 100644
--- a/datastore/datastore-preferences/build.gradle
+++ b/datastore/datastore-preferences/build.gradle
@@ -37,22 +37,10 @@
     }
 }
 
-// Include :datastore-preferences-proto
-android.libraryVariants.all { variant ->
-    def variantName = variant.name
-    def suffix = variantName.capitalize()
-    def jarjarConfigName = "jarjar${suffix}"
-    def jarjarConf = configurations.register(jarjarConfigName)
-    // Treat datastore-preferences-proto as a local jar and package it inside the aar
-    dependencies.add(jarjarConfigName, project.dependencies.project(
-            path: ":datastore:datastore-preferences:datastore-preferences-proto",
-            configuration: jarjarConfigName))
-    dependencies.add("${variantName}Implementation", files(jarjarConf))
-}
-
 dependencies {
     api(KOTLIN_STDLIB)
     api(project(":datastore:datastore"))
+    api(project(":datastore:datastore-preferences-core"))
 
     testImplementation(JUNIT)
     testImplementation(KOTLIN_COROUTINES_TEST)
diff --git a/datastore/datastore-preferences/datastore-preferences-proto/build.gradle b/datastore/datastore-preferences/datastore-preferences-proto/build.gradle
deleted file mode 100644
index d6e367d..0000000
--- a/datastore/datastore-preferences/datastore-preferences-proto/build.gradle
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-import org.anarres.gradle.plugin.jarjar.JarjarTask
-
-import static androidx.build.dependencies.DependenciesKt.*
-import androidx.build.LibraryGroups
-import androidx.build.Publish
-
-
-buildscript {
-    dependencies {
-        classpath 'org.anarres.jarjar:jarjar-gradle:1.0.1'
-    }
-}
-
-
-plugins {
-    id("AndroidXPlugin")
-    id("com.android.library")
-    id("kotlin-android")
-    id("com.google.protobuf")
-}
-
-apply plugin: 'org.anarres.jarjar'
-
-
-dependencies {
-    implementation(PROTOBUF_LITE)
-    api(project(":datastore:datastore-core"))
-}
-
-protobuf {
-    protoc {
-        artifact = PROTOBUF_COMPILER
-    }
-
-    // Generates the java proto-lite code for the protos in this project. See
-    // https://github.com/google/protobuf-gradle-plugin#customizing-protobuf-compilation
-    // for more information.
-    generateProtoTasks {
-        all().each { task ->
-            task.builtins {
-                java {
-                    option 'lite'
-                }
-            }
-        }
-    }
-}
-
-android.libraryVariants.all { variant ->
-    def variantName = variant.name
-    def suffix = variantName.capitalize()
-    def jarjarTask = tasks.register("jarjar${suffix}", JarjarTask) {
-        destinationName "datastore-preferences-proto-${variantName}-jarjar.jar"
-        dependsOn protoLiteJarWithoutProtoFiles
-        from(files(protoLiteJarWithoutProtoFiles.archiveFile.get().getAsFile()))
-
-        from files(variant.javaCompileProvider.get().destinationDir)
-        dependsOn variant.javaCompileProvider.get()
-
-        if (suffix == "Debug") {
-            from(files(compileDebugKotlin.outputs.files))
-        } else if (suffix == "Release") {
-            from(files(compileReleaseKotlin.outputs.files))
-        } else {
-            throw IllegalStateException("Expected either debug or release variant.")
-        }
-        classRename 'com.google.protobuf.**', 'androidx.datastore.preferences.protobuf.@1'
-    }
-
-    def jarjarConf = configurations.register("jarjar${suffix}")
-    artifacts.add("${jarjarConf.name}", jarjarTask.get().destinationPath) {
-        name "datastore-preferences-proto-${variantName}-jarjar"
-        type 'jar'
-        builtBy jarjarTask
-    }
-}
-
-// The proto-lite dependency includes .proto files, which are not used by icing. When apps depend on
-// appsearch as well as proto-lite directly, these files conflict since jarjar only renames the java
-// classes. Remove them here since they are unused.
-tasks.register("protoLiteJarWithoutProtoFiles", Jar) {
-    // Get proto lite jar as a file.
-    def jarFile = configurations.detachedConfiguration(dependencies.create
-            (PROTOBUF_LITE)).getSingleFile()
-
-    // Expand the jar and remove any .proto files.
-    from(zipTree(jarFile)) {
-        exclude("**/*.proto")
-    }
-
-
-    into 'datastore-preferences-proto-lite-dep'
-}
-
-androidx {
-    name = "Android Preferences DataStore Proto"
-    publish = Publish.NONE
-    mavenGroup = LibraryGroups.DATASTORE
-    inceptionYear = "2020"
-    description = "Jarjar the generated proto and proto-lite dependency for use by " +
-            "datastore-preferences."
-}
diff --git a/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreFactoryTest.kt b/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreFactoryTest.kt
index cac2b64..a37be42 100644
--- a/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreFactoryTest.kt
+++ b/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreFactoryTest.kt
@@ -19,6 +19,20 @@
 import android.content.Context
 import androidx.datastore.core.DataMigration
 import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
+import androidx.datastore.preferences.core.MutablePreferences
+import androidx.datastore.preferences.core.PreferenceDataStoreFactory
+import androidx.datastore.preferences.core.Preferences
+import androidx.datastore.preferences.core.clear
+import androidx.datastore.preferences.core.edit
+import androidx.datastore.preferences.core.minusAssign
+import androidx.datastore.preferences.core.plusAssign
+import androidx.datastore.preferences.core.preferencesKey
+import androidx.datastore.preferences.core.preferencesOf
+import androidx.datastore.preferences.core.putAll
+import androidx.datastore.preferences.core.remove
+import androidx.datastore.preferences.core.to
+import androidx.datastore.preferences.core.toMutablePreferences
+import androidx.datastore.preferences.core.toPreferences
 import androidx.test.core.app.ApplicationProvider
 import kotlinx.coroutines.FlowPreview
 import kotlinx.coroutines.ObsoleteCoroutinesApi
@@ -50,7 +64,8 @@
 
     @Before
     fun setUp() {
-        testFile = tmp.newFile("test_file." + PreferencesSerializer.fileExtension)
+        testFile =
+            tmp.newFile("test_file." + /*PreferencesSerializer.fileExtension=*/"preferences_pb")
         dataStoreScope = TestCoroutineScope()
         context = ApplicationProvider.getApplicationContext()
     }
@@ -62,7 +77,8 @@
             scope = dataStoreScope
         )
 
-        val expectedPreferences = preferencesOf(stringKey to "value")
+        val expectedPreferences =
+            preferencesOf(stringKey to "value")
 
         assertEquals(
             store.edit { prefs ->
@@ -92,7 +108,10 @@
     @Test
     fun testMigrationsInstalled() = runBlockingTest {
 
-        val expectedPreferences = preferencesOf(stringKey to "value", booleanKey to true)
+        val expectedPreferences = preferencesOf(
+            stringKey to "value",
+            booleanKey to true
+        )
 
         val migrateTo5 = object : DataMigration<Preferences> {
             override suspend fun shouldMigrate(currentData: Preferences) = true
@@ -156,7 +175,10 @@
             it[stringKey] = "ABCDEF"
         }
 
-        assertEquals(store.data.first(), preferencesOf(stringKey to "ABCDEF"))
+        assertEquals(
+            store.data.first(),
+            preferencesOf(stringKey to "ABCDEF")
+        )
 
         assertFailsWith<IllegalStateException> {
             mutableReference!!.clear()
@@ -185,6 +207,9 @@
         assertFailsWith<IllegalStateException> {
             mutableReference!![stringKey] = "asdjkfajksdhljkasdhf"
         }
-        assertEquals(store.data.first(), preferencesOf(stringKey to "ABCDEF"))
+        assertEquals(
+            store.data.first(),
+            preferencesOf(stringKey to "ABCDEF")
+        )
     }
 }
\ No newline at end of file
diff --git a/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt b/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt
index 69aab07..217a129 100644
--- a/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt
+++ b/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt
@@ -20,6 +20,9 @@
 import android.content.SharedPreferences
 import androidx.datastore.core.DataMigration
 import androidx.datastore.core.DataStore
+import androidx.datastore.preferences.core.PreferenceDataStoreFactory
+import androidx.datastore.preferences.core.Preferences
+import androidx.datastore.preferences.core.preferencesKey
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.MediumTest
 import kotlinx.coroutines.flow.first
@@ -190,7 +193,8 @@
 
     @Test
     fun supportsStringSetKey() = runBlockingTest {
-        val stringSetKey = preferencesSetKey<String>("stringSet_key")
+        val stringSetKey =
+            androidx.datastore.preferences.core.preferencesSetKey<String>("stringSet_key")
         val stringSetValue = setOf("a", "b", "c")
 
         assertTrue { sharedPrefs.edit().putStringSet(stringSetKey.name, stringSetValue).commit() }
@@ -208,7 +212,8 @@
 
     @Test
     fun migratedStringSetNotMutable() = runBlockingTest {
-        val stringSetKey = preferencesSetKey<String>("stringSet_key")
+        val stringSetKey =
+            androidx.datastore.preferences.core.preferencesSetKey<String>("stringSet_key")
         val stringSetValue = setOf("a", "b", "c")
 
         assertTrue { sharedPrefs.edit().putStringSet(stringSetKey.name, stringSetValue).commit() }
diff --git a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferenceDataStoreFactory.kt b/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferenceDataStoreFactory.kt
index 2c79770..74c23e6 100644
--- a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferenceDataStoreFactory.kt
+++ b/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferenceDataStoreFactory.kt
@@ -1,4 +1,6 @@
 /*
+
+
  * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,58 +22,15 @@
 import androidx.datastore.core.CorruptionException
 import androidx.datastore.core.DataMigration
 import androidx.datastore.core.DataStore
-import androidx.datastore.core.DataStoreFactory
 import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
+import androidx.datastore.preferences.core.PreferenceDataStoreFactory
+import androidx.datastore.preferences.core.Preferences
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.SupervisorJob
 import java.io.File
 
 /**
- * Public factory for creating PreferenceDataStore instances.
- */
-public object PreferenceDataStoreFactory {
-    /**
-     * Create an instance of SingleProcessDataStore. The user is responsible for ensuring that
-     * there is never more than one instance of SingleProcessDataStore acting on a file at a time.
-     *
-     * @param produceFile Function which returns the file that the new DataStore will act on.
-     * The function must return the same path every time. No two instances of PreferenceDataStore
-     * should act on the same file at the same time. The file must have the extension
-     * preferences_pb.
-     * @param corruptionHandler The corruptionHandler is invoked if DataStore encounters a
-     * [CorruptionException] when attempting to read data. CorruptionExceptions are thrown by
-     * serializers when data cannot be de-serialized.
-     * @param migrations are run before any access to data can occur. Each producer and migration
-     * may be run more than once whether or not it already succeeded (potentially because another
-     * migration failed or a write to disk failed.)
-     * @param scope The scope in which IO operations and transform functions will execute.
-     */
-    public fun create(
-        produceFile: () -> File,
-        corruptionHandler: ReplaceFileCorruptionHandler<Preferences>? = null,
-        migrations: List<DataMigration<Preferences>> = listOf(),
-        scope: CoroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob())
-    ): DataStore<Preferences> {
-        val delegate = DataStoreFactory.create(
-            produceFile = {
-                val file = produceFile()
-                check(file.extension == PreferencesSerializer.fileExtension) {
-                    "File extension for file: $file does not match required extension for" +
-                        " Preferences file: ${PreferencesSerializer.fileExtension}"
-                }
-                file
-            },
-            serializer = PreferencesSerializer,
-            corruptionHandler = corruptionHandler,
-            migrations = migrations,
-            scope = scope
-        )
-        return PreferenceDataStore(delegate)
-    }
-}
-
-/**
  * Create an instance of SingleProcessDataStore. The user is responsible for ensuring that
  * there is never more than one instance of SingleProcessDataStore acting on a file at a time.
  *
@@ -99,19 +58,3 @@
         migrations = migrations,
         scope = scope
     )
-
-internal class PreferenceDataStore(private val delegate: DataStore<Preferences>) :
-    DataStore<Preferences> by delegate {
-    override suspend fun updateData(transform: suspend (t: Preferences) -> Preferences):
-        Preferences {
-            return delegate.updateData {
-                val transformed = transform(it)
-                // Freeze the preferences since any future mutations will break DataStore. If a user
-                // tunnels the value out of DataStore and mutates it, this could be problematic.
-                // This is a safe cast, since MutablePreferences is the only implementation of
-                // Preferences.
-                (transformed as MutablePreferences).freeze()
-                transformed
-            }
-        }
-}
diff --git a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/SharedPreferencesMigration.kt b/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/SharedPreferencesMigration.kt
index 970a77b..ac471ae 100644
--- a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/SharedPreferencesMigration.kt
+++ b/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/SharedPreferencesMigration.kt
@@ -19,6 +19,9 @@
 import android.content.Context
 import androidx.datastore.migrations.SharedPreferencesView
 import androidx.datastore.migrations.SharedPreferencesMigration
+import androidx.datastore.preferences.core.Preferences
+import androidx.datastore.preferences.core.toMutablePreferences
+import androidx.datastore.preferences.core.toPreferences
 
 /**
  * Creates a SharedPreferencesMigration for DataStore<Preferences>.
@@ -68,14 +71,38 @@
             val mutablePreferences = currentData.toMutablePreferences()
             for ((key, value) in filteredSharedPreferences) {
                 when (value) {
-                    is Boolean -> mutablePreferences[preferencesKey(key)] = value
-                    is Float -> mutablePreferences[preferencesKey(key)] = value
-                    is Int -> mutablePreferences[preferencesKey(key)] = value
-                    is Long -> mutablePreferences[preferencesKey(key)] = value
-                    is String -> mutablePreferences[preferencesKey(key)] = value
+                    is Boolean -> mutablePreferences[
+                        androidx.datastore.preferences.core.preferencesKey(
+                            key
+                        )
+                    ] = value
+                    is Float -> mutablePreferences[
+                        androidx.datastore.preferences.core.preferencesKey(
+                            key
+                        )
+                    ] = value
+                    is Int -> mutablePreferences[
+                        androidx.datastore.preferences.core.preferencesKey(
+                            key
+                        )
+                    ] = value
+                    is Long -> mutablePreferences[
+                        androidx.datastore.preferences.core.preferencesKey(
+                            key
+                        )
+                    ] = value
+                    is String -> mutablePreferences[
+                        androidx.datastore.preferences.core.preferencesKey(
+                            key
+                        )
+                    ] = value
                     is Set<*> -> {
                         @Suppress("UNCHECKED_CAST")
-                        mutablePreferences[preferencesSetKey<String>(key)] = value as Set<String>
+                        mutablePreferences[
+                            androidx.datastore.preferences.core.preferencesSetKey<String>(
+                                key
+                            )
+                        ] = value as Set<String>
                     }
                 }
             }
diff --git a/datastore/datastore-proto/src/main/java/androidx/datastore/protos/ProtoSerializer.kt b/datastore/datastore-proto/src/main/java/androidx/datastore/protos/ProtoSerializer.kt
index abb2cfd66..d164822 100644
--- a/datastore/datastore-proto/src/main/java/androidx/datastore/protos/ProtoSerializer.kt
+++ b/datastore/datastore-proto/src/main/java/androidx/datastore/protos/ProtoSerializer.kt
@@ -27,7 +27,7 @@
 /** Serializer for using DataStore with protos. */
 internal class ProtoSerializer<T : MessageLite>(
     /** The default proto of this type, obtained via {@code T.getDefaultInstance()} */
-    private val defaultValue: T,
+    override val defaultValue: T,
     /**
      *  Set the extensionRegistryLite to use when deserializing T. If no extension registry is
      *  necessary, use {@code ExtensionRegistryLite.getEmptyRegistry()}.
diff --git a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt
index 10d5c57..6d64419 100644
--- a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt
+++ b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt
@@ -24,11 +24,11 @@
 import androidx.annotation.Sampled
 import androidx.appcompat.app.AppCompatActivity
 import androidx.datastore.core.DataStore
-import androidx.datastore.preferences.Preferences
+import androidx.datastore.preferences.core.Preferences
 import androidx.datastore.preferences.createDataStore
-import androidx.datastore.preferences.edit
-import androidx.datastore.preferences.emptyPreferences
-import androidx.datastore.preferences.preferencesKey
+import androidx.datastore.preferences.core.edit
+import androidx.datastore.preferences.core.emptyPreferences
+import androidx.datastore.preferences.core.preferencesKey
 import androidx.lifecycle.lifecycleScope
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.collect
diff --git a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt
index a592393..3dde82f 100644
--- a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt
+++ b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt
@@ -107,6 +107,9 @@
     }
 
     private object SettingsSerializer : Serializer<Settings> {
+
+        override val defaultValue: Settings = Settings.getDefaultInstance()
+
         override fun readFrom(input: InputStream): Settings {
             try {
                 return Settings.parseFrom(input)
diff --git a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/SettingsFragment.kt b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/SettingsFragment.kt
index 78f1794..3076e39 100644
--- a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/SettingsFragment.kt
+++ b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/SettingsFragment.kt
@@ -148,6 +148,8 @@
     }
 
 private object SettingsSerializer : Serializer<Settings> {
+    override val defaultValue: Settings = Settings.getDefaultInstance()
+
     override fun readFrom(input: InputStream): Settings {
         try {
             return Settings.parseFrom(input)
diff --git a/datastore/datastore/src/androidTest/java/androidx/datastore/TestingSerializer.kt b/datastore/datastore/src/androidTest/java/androidx/datastore/TestingSerializer.kt
index a873c95..2448889 100644
--- a/datastore/datastore/src/androidTest/java/androidx/datastore/TestingSerializer.kt
+++ b/datastore/datastore/src/androidTest/java/androidx/datastore/TestingSerializer.kt
@@ -27,6 +27,8 @@
     @Volatile var failingRead: Boolean = false,
     @Volatile var failingWrite: Boolean = false
 ) : Serializer<Byte> {
+    override val defaultValue: Byte = 0
+
     override fun readFrom(input: InputStream): Byte {
         if (failReadWithCorruptionException) {
             throw CorruptionException(
diff --git a/settings.gradle b/settings.gradle
index 83833f2..f162ac2 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -178,6 +178,7 @@
 includeProject(":camera:integration-tests:camera-testapp-uiwidgets", "camera/integration-tests/uiwidgetstestapp", [BuildType.MAIN])
 includeProject(":camera:integration-tests:camera-testapp-view", "camera/integration-tests/viewtestapp", [BuildType.MAIN])
 includeProject(":camera:integration-tests:camera-testlib-extensions", "camera/integration-tests/extensionstestlib", [BuildType.MAIN])
+includeProject(":car:app:app", "car/app/app", [BuildType.MAIN])
 includeProject(":cardview:cardview", "cardview/cardview", [BuildType.MAIN])
 includeProject(":collection:collection", "collection/collection", [BuildType.MAIN])
 includeProject(":collection:collection-benchmark", "collection/collection-benchmark", [BuildType.MAIN])
@@ -254,7 +255,7 @@
 includeProject(":compose:ui:ui-viewbinding", "compose/ui/ui-viewbinding", [BuildType.COMPOSE])
 includeProject(":compose:ui:ui-viewbinding:ui-viewbinding-samples", "compose/ui/ui-viewbinding/samples", [BuildType.COMPOSE])
 includeProject(":compose:ui:ui:integration-tests:ui-demos", "compose/ui/ui/integration-tests/ui-demos", [BuildType.COMPOSE])
-    includeProject(":compose:ui:ui:ui-samples", "compose/ui/ui/samples", [BuildType.COMPOSE])
+includeProject(":compose:ui:ui:ui-samples", "compose/ui/ui/samples", [BuildType.COMPOSE])
 includeProject(":concurrent:concurrent-futures", "concurrent/futures", [BuildType.MAIN])
 includeProject(":concurrent:concurrent-futures-ktx", "concurrent/futures-ktx", [BuildType.MAIN])
 includeProject(":contentaccess:contentaccess-annotations", "contentaccess/contentaccess-annotations", [BuildType.MAIN])
@@ -276,7 +277,10 @@
 includeProject(":datastore:datastore", "datastore/datastore", [BuildType.MAIN])
 includeProject(":datastore:datastore-core", "datastore/datastore-core", [BuildType.MAIN])
 includeProject(":datastore:datastore-preferences", "datastore/datastore-preferences", [BuildType.MAIN])
-includeProject(":datastore:datastore-preferences:datastore-preferences-proto", "datastore/datastore-preferences/datastore-preferences-proto", [BuildType.MAIN])
+includeProject(":datastore:datastore-preferences-core", "datastore/datastore-preferences-core",
+        [BuildType.MAIN])
+includeProject(":datastore:datastore-preferences-core:datastore-preferences-proto",
+        "datastore/datastore-preferences-core/datastore-preferences-proto", [BuildType.MAIN])
 includeProject(":datastore:datastore-proto", "datastore/datastore-proto", [BuildType.MAIN])
 includeProject(":datastore:datastore-sampleapp", "datastore/datastore-sampleapp", [BuildType.MAIN])
 includeProject(":documentfile:documentfile", "documentfile/documentfile", [BuildType.MAIN])
diff --git a/slices/core/src/main/res/values-fa/strings.xml b/slices/core/src/main/res/values-fa/strings.xml
index 7ee7fab..7c3fbf9 100644
--- a/slices/core/src/main/res/values-fa/strings.xml
+++ b/slices/core/src/main/res/values-fa/strings.xml
@@ -23,5 +23,5 @@
     <string name="abc_slice_permission_text_2" msgid="7323565634860251794">"- می‌تواند در <xliff:g id="APP">%1$s</xliff:g> اقدام انجام دهد"</string>
     <string name="abc_slice_permission_checkbox" msgid="5696872682700058611">"به <xliff:g id="APP">%1$s</xliff:g> اجازه داده شود تکه‌هایی از برنامه‌ها نشان دهد"</string>
     <string name="abc_slice_permission_allow" msgid="5024599872061409708">"مجاز"</string>
-    <string name="abc_slice_permission_deny" msgid="3819478292430407705">"رد کردن"</string>
+    <string name="abc_slice_permission_deny" msgid="3819478292430407705">"مجاز نبودن"</string>
 </resources>
diff --git a/textclassifier/textclassifier/src/main/res/values-cs/strings.xml b/textclassifier/textclassifier/src/main/res/values-cs/strings.xml
index 5a999f5..a309aa1 100644
--- a/textclassifier/textclassifier/src/main/res/values-cs/strings.xml
+++ b/textclassifier/textclassifier/src/main/res/values-cs/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="email" msgid="6099716515489216517">"Poslat e-mail"</string>
+    <string name="email" msgid="6099716515489216517">"E-mail"</string>
     <string name="email_desc" msgid="2189760120923982860">"Napsat na vybranou e‑mailovou adresu"</string>
     <string name="dial" msgid="2101464860090311277">"Zavolat"</string>
     <string name="dial_desc" msgid="1195407206406821463">"Zavolat na vybrané telefonní číslo"</string>
diff --git a/wear/wear-complications-data/src/main/res/values-af/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-af/complication_strings.xml
new file mode 100644
index 0000000..14d0077
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-af/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> d.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> u.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> u.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> m.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dae</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> dag</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> uur</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> uur</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min.</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Nou"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-am/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-am/complication_strings.xml
new file mode 100644
index 0000000..82d3e06
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-am/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>ቀ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>ቀ</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ሰ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ሰ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>ደ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>ደ</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g><xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g><xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ቀን</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ቀኖች</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ሰዓት</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ሰዓቶች</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ደቂቃ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ደቂቃዎች</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"አሁን"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ar/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ar/complication_strings.xml
new file mode 100644
index 0000000..bdad807
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ar/complication_strings.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> يوم</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> يوم</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> يوم</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> يوم</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> يوم</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> يوم</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> س</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> س</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> س</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> س</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> س</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> س</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> د</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> د</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> د</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> د</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> د</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> د</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> يوم</item>
+      <item quantity="two">يومان (<xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>)</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> أيام</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> يومًا</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> يوم</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> يوم</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ساعة</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ساعة</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ساعات</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ساعة</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ساعة</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ساعة</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> دقيقة</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> دقيقة</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> دقائق</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> دقيقة</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> دقيقة</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> دقيقة</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"الآن"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-as/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-as/complication_strings.xml
new file mode 100644
index 0000000..fb3e032
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-as/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> দিন</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> দিন</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ঘণ্টা</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ঘণ্টা</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>মিনিট</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>মিনিট</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> দিন</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> দিন</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ঘণ্টা</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ঘণ্টা</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> মিনিট</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> মিনিট</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"এতিয়া"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-az/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-az/complication_strings.xml
new file mode 100644
index 0000000..b0a50ea
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-az/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> g</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> g</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> s</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> s</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> d</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g><xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g><xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> gün</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> gün</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> saat</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> saat</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> dəq</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> dəq</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"İndi"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-b+sr+Latn/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-b+sr+Latn/complication_strings.xml
new file mode 100644
index 0000000..69cc1f7
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-b+sr+Latn/complication_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> s</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> s</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> s</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dan</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dana</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dana</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> sat</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> sata</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> sati</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> minut</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> minuta</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> minuta</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Sada"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-be/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-be/complication_strings.xml
new file mode 100644
index 0000000..3926ced
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-be/complication_strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> сут</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> сут</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> сут</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> сут</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> гадз</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> гадз</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> гадз</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> гадз</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дзень</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дні</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дзён</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дня</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> гадзіна</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> гадзіны</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> гадзін</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> гадзіны</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Цяпер"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-bg/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-bg/complication_strings.xml
new file mode 100644
index 0000000..b3625acb
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-bg/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дни</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ден</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ч</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ч</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> мин</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дни</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ден</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> часа</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> час</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> мин</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Сега"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-bn/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-bn/complication_strings.xml
new file mode 100644
index 0000000..9426e35
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-bn/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>দিন</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>দিন</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ঘঃ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ঘঃ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>মিঃ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>মিঃ</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> দিন</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> দিন</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ঘণ্টা</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ঘণ্টা</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> মিনিট</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> মিনিট</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"এখন"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-bs/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-bs/complication_strings.xml
new file mode 100644
index 0000000..e135055
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-bs/complication_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dan</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dana</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dana</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> sat</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> sata</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> sati</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Sada"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ca/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ca/complication_strings.xml
new file mode 100644
index 0000000..44208c7
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ca/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dies</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> dia</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hores</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hora</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Ara"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-cs/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-cs/complication_strings.xml
new file mode 100644
index 0000000..85aab8a
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-cs/complication_strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dny</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dne</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dní</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> den</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hodiny</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hodiny</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hodin</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hodina</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Teď"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-da/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-da/complication_strings.xml
new file mode 100644
index 0000000..9d9e9c1
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-da/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> t.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> t.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dag</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dage</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> time</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> timer</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> minut</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> minutter</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Nu"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-de/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-de/complication_strings.xml
new file mode 100644
index 0000000..28c064d
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-de/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> T</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> T</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> Tage</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> Tag</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> Stunden</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> Stunde</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Jetzt"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-el/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-el/complication_strings.xml
new file mode 100644
index 0000000..a39ba9d
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-el/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> η.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> η.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ώ.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ώ.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> λ.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> λ.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ημέρες</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ημέρα</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ώρες</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ώρα</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> λ.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> λ.</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Τώρα"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-en-rAU/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-en-rAU/complication_strings.xml
new file mode 100644
index 0000000..1068d97
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-en-rAU/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> days</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> day</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hours</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hour</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> mins</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Now"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-en-rCA/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-en-rCA/complication_strings.xml
new file mode 100644
index 0000000..1068d97
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-en-rCA/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> days</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> day</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hours</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hour</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> mins</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Now"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-en-rGB/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-en-rGB/complication_strings.xml
new file mode 100644
index 0000000..1068d97
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-en-rGB/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> days</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> day</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hours</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hour</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> mins</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Now"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-en-rIN/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-en-rIN/complication_strings.xml
new file mode 100644
index 0000000..1068d97
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-en-rIN/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> days</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> day</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hours</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hour</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> mins</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Now"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-en-rXC/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-en-rXC/complication_strings.xml
new file mode 100644
index 0000000..6cc1e17
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-en-rXC/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‏‎‎‏‏‏‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>‎‏‎‎‏‏‏‎d‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‏‎‎‏‏‏‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>‎‏‎‎‏‏‏‎d‎‏‎‎‏‎</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‎‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>‎‏‎‎‏‏‏‎h‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‎‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>‎‏‎‎‏‏‏‎h‎‏‎‎‏‎</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‏‎‏‎‎‏‎‎‎‎‎‎‎‎‏‎‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‎‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>‎‏‎‎‏‏‏‎m‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‏‎‏‎‎‏‎‎‎‎‎‎‎‎‏‎‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‎‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>‎‏‎‎‏‏‏‎m‎‏‎‎‏‎</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‏‎‏‏‎‎‎‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‏‎‏‎‏‏‏‎‏‏‏‎‎‏‎‏‏‏‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="SHORT_DAYS">%1$s</xliff:g>‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎<xliff:g id="SHORT_HOURS">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‏‎‎‏‎‏‎‎‏‎‏‎‏‎‎‎‎‎‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‏‎‏‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="SHORT_HOURS">%1$s</xliff:g>‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎<xliff:g id="SHORT_MINUTES">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>‎‏‎‎‏‏‏‎ day‎‏‎‎‏‎</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎‏‏‎‎‎‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>‎‏‎‎‏‏‏‎ hours‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎‏‏‎‎‎‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>‎‏‎‎‏‏‏‎ hour‎‏‎‎‏‎</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‏‎‏‏‏‎‎‏‎‎‎‏‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‎‏‎‎‎‏‎‏‏‎‏‎‎‎‏‎‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>‎‏‎‎‏‏‏‎ mins‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‏‎‏‏‏‎‎‏‎‎‎‏‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‎‏‎‎‎‏‎‏‏‎‏‎‎‎‏‎‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>‎‏‎‎‏‏‏‎ min‎‏‎‎‏‎</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‎‏‏‎‎‎‎‎‎‎‎‎‏‎‏‎‎‏‎‏‎‏‎‏‎‏‎‎‎‏‎‏‏‏‏‏‎‎‎‎‏‎‎‎Now‎‏‎‎‏‎"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-es-rUS/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-es-rUS/complication_strings.xml
new file mode 100644
index 0000000..ea3098b
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-es-rUS/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> días</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> día</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> horas</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hora</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Ahora"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-es/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-es/complication_strings.xml
new file mode 100644
index 0000000..d17e73e
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-es/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> días</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> día</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> horas</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hora</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Ahora"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-et/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-et/complication_strings.xml
new file mode 100644
index 0000000..6673fdb
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-et/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> p</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> p</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> päeva</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> päev</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> tundi</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> tund</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Praegu"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-eu/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-eu/complication_strings.xml
new file mode 100644
index 0000000..105bc95
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-eu/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> egun</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> egun</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> egun</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> egun</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ordu</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ordu</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Orain"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-fa/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-fa/complication_strings.xml
new file mode 100644
index 0000000..7a1d1b3
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-fa/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>روز</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>روز</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ساعت</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ساعت</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>دقیقه</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>دقیقه</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> روز</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> روز</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ساعت</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ساعت</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> دقیقه</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> دقیقه</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"اکنون"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-fi/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-fi/complication_strings.xml
new file mode 100644
index 0000000..e0f6a78
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-fi/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> p</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> p</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> t</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> t</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> päivää</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> päivä</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> tuntia</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> tunti</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Nyt"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-fr-rCA/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-fr-rCA/complication_strings.xml
new file mode 100644
index 0000000..7b514b3
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-fr-rCA/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> j</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> j</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> jour</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> jours</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> heure</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> heures</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Maint."</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-fr/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-fr/complication_strings.xml
new file mode 100644
index 0000000..391c42e
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-fr/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> j</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> j</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> jour</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> jours</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> heure</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> heures</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Maint."</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-gl/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-gl/complication_strings.xml
new file mode 100644
index 0000000..c0d5dd7
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-gl/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_HOURS">%2$s</xliff:g> <xliff:g id="SHORT_DAYS">%1$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_MINUTES">%2$s</xliff:g> <xliff:g id="SHORT_HOURS">%1$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> días</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> día</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> horas</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hora</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Agora"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-gu/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-gu/complication_strings.xml
new file mode 100644
index 0000000..5c59f6f
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-gu/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> દિવસ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> દિવસ</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> કલાક</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> કલાક</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> મિનિટ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> મિનિટ</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> દિવસ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> દિવસ</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> કલાક</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> કલાક</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> મિનિટ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> મિનિટ</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"હમણાં"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-hi/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-hi/complication_strings.xml
new file mode 100644
index 0000000..3fe9a25
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-hi/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>दिन</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>दिन</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>घंटा</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>घंटे</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>मिनट</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>मिनट</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> दिन</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> दिन</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> घंटा</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> घंटे</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> मिनट</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> मिनट</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"अभी"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-hr/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-hr/complication_strings.xml
new file mode 100644
index 0000000..60d8fc0
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-hr/complication_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dan</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dana</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dana</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> sat</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> sata</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> sati</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Sad"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-hu/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-hu/complication_strings.xml
new file mode 100644
index 0000000..f8d3c9f
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-hu/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> n</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> n</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ó</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ó</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> p</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> p</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> nap</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> nap</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> óra</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> óra</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> perc</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> perc</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Most"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-hy/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-hy/complication_strings.xml
new file mode 100644
index 0000000..0c8869f
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-hy/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> օր</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> օր</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ժ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ժ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ր</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ր</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> օր</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> օր</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ժամ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ժամ</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> րոպե</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> րոպե</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Հիմա"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-in/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-in/complication_strings.xml
new file mode 100644
index 0000000..feec1fa
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-in/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> j</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> j</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> hari</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> hari</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> jam</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> jam</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> menit</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> menit</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Kini"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-is/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-is/complication_strings.xml
new file mode 100644
index 0000000..0f70ba3
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-is/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>k</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>k</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dagur</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dagar</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> klst.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> klst.</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> mín.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> mín.</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Núna"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-it/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-it/complication_strings.xml
new file mode 100644
index 0000000..90f4859
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-it/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> g</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> g</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> giorni</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> giorno</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ore</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ora</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Ora"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-iw/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-iw/complication_strings.xml
new file mode 100644
index 0000000..06416d9
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-iw/complication_strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="two"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ימים</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ימים</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ימים</item>
+      <item quantity="one">יום <xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="two"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> שע‘</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> שע‘</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> שע‘</item>
+      <item quantity="one">שעה <xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="two"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> דק׳</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> דק׳</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> דק׳</item>
+      <item quantity="one">דקה <xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g></item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="two"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ימים</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ימים</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ימים</item>
+      <item quantity="one">יום אחד (<xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>)</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="two"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> שעות</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> שעות</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> שעות</item>
+      <item quantity="one">שעה <xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="two"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> דק‘</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> דק‘</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> דק‘</item>
+      <item quantity="one">דקה <xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g></item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"עכשיו"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ja/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ja/complication_strings.xml
new file mode 100644
index 0000000..ac84c58
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ja/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>日</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>日</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>時間</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>時間</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>分</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>分</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g><xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g><xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>日</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>日</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>時間</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>時間</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>分</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>分</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"今"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ka/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ka/complication_strings.xml
new file mode 100644
index 0000000..6a2a4dd
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ka/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>დღ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>დღ</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>სთ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>სთ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>წთ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>წთ</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> დღე</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> დღე</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> სთ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> სთ</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> წთ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> წთ</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"ახლა"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-kk/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-kk/complication_strings.xml
new file mode 100644
index 0000000..4602b7c
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-kk/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>к</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>к</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> сағ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> сағ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> мин</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> күн</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> күн</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> сағат</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> сағат</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> мин</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Қазір"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-km/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-km/complication_strings.xml
new file mode 100644
index 0000000..7f17d88
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-km/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>ថ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>ថ</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ម៉</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>ម៉</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>ន</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>ន</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ថ្ងៃ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ថ្ងៃ</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ម៉ោង</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ម៉ោង</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ន</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> ន</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"ឥឡូវនេះ"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-kn/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-kn/complication_strings.xml
new file mode 100644
index 0000000..589c198
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-kn/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>ದಿ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>ದಿ</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ಗಂ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ಗಂ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>ನಿ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>ನಿ</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ದಿನಗಳು</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ದಿನಗಳು</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ಗಂಟೆಗಳು</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ಗಂಟೆಗಳು</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ನಿಮಿಷಗಳು</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ನಿಮಿಷಗಳು</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"ಈಗ"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ko/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ko/complication_strings.xml
new file mode 100644
index 0000000..a954b950
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ko/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>일</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>일</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>시간</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>시간</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>분</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>분</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>일</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>일</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>시간</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>시간</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>분</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>분</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"지금"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ky/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ky/complication_strings.xml
new file mode 100644
index 0000000..e5d023e
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ky/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> к.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> к.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> с.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> с.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мүн.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> мүн.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> күн</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> күн</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> саат</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> саат</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мүн.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> мүн.</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Азыр"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-lo/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-lo/complication_strings.xml
new file mode 100644
index 0000000..ca7739e
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-lo/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>ມ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>ມ</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ຊມ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>ຊມ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>ນທ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>ນທ</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ມື້</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ມື້</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ຊົ່ວໂມງ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ຊົ່ວໂມງ</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ນທ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> ນທ</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"ຕອນນີ້"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-lt/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-lt/complication_strings.xml
new file mode 100644
index 0000000..003f5a8
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-lt/complication_strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> val.</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> val.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> val.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> val.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> val.</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> val.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> val.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> val.</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Dabar"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-lv/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-lv/complication_strings.xml
new file mode 100644
index 0000000..9a7aba4
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-lv/complication_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dienu</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> diena</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dienas</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> stundu</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> stunda</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> stundas</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="zero"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Tagad"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-mk/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-mk/complication_strings.xml
new file mode 100644
index 0000000..f22bf4f8
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-mk/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> д.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> д.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ч.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ч.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> м.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> м.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ден</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дена</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> час</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> часа</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин.</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Сега"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ml/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ml/complication_strings.xml
new file mode 100644
index 0000000..303b98c
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ml/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>ദിവസം</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>ദിവസം</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>മ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>മ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>മി</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>മി</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ദിവസം</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ദിവസം</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> മ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> മ</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> മിനിറ്റ്</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> മിനിറ്റ്</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"ഇപ്പോൾ"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-mn/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-mn/complication_strings.xml
new file mode 100644
index 0000000..106c8d0d
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-mn/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>ө</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>ө</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>цаг</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>цаг</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>мин</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>мин</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> өдөр</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> өдөр</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> цаг</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> цаг</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> мин</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Одоо"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-mr/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-mr/complication_strings.xml
new file mode 100644
index 0000000..8369e8f
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-mr/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>दि.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>दि.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ता.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>ता.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>मि.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>मि.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> दिवस</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> दिवस</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> तास</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> तास</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> मिनिटे</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> मिनिट</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"आता"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ms/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ms/complication_strings.xml
new file mode 100644
index 0000000..cfba148
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ms/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>h</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>j</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>j</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> hari</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> hari</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> jam</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> jam</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Sekarang"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-my/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-my/complication_strings.xml
new file mode 100644
index 0000000..5441b3f
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-my/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>ရက်</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>ရက်</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>နာရီ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>နာရီ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>မိနစ်</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>မိနစ်</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ရက်</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ရက်</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> နာရီ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> နာရီ</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> မိနစ်</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> မိနစ်</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"ယခု"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-nb/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-nb/complication_strings.xml
new file mode 100644
index 0000000..2e1b3a5
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-nb/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> t</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> t</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dager</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> dag</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> timer</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> time</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Nå"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ne/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ne/complication_strings.xml
new file mode 100644
index 0000000..e9ff269
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ne/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> दिन</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> दिन</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> घन्टा</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> घन्टा</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> मिनेट</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> मिनेट</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> दिन</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> दिन</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> घन्टा</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> घन्टा</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> मिनेट</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> मिनेट</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"अहिले"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-nl/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-nl/complication_strings.xml
new file mode 100644
index 0000000..b471073
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-nl/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>u</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>u</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dagen</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> dag</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> uur</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> uur</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Nu"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-or/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-or/complication_strings.xml
new file mode 100644
index 0000000..7952e48
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-or/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>ଦି</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>ଦି</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ଘ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>ଘ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>ମି</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>ମି</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ଦିନ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ଦିନ</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ଘଣ୍ଟା</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ଘଣ୍ଟା</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ମିନିଟ୍</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> ମିନିଟ୍</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"ଏବେ"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-pa/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-pa/complication_strings.xml
new file mode 100644
index 0000000..216abc6
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-pa/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ਦਿਨ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ਦਿਨ</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ਘੰਟਾ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ਘੰਟੇ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ਮਿੰਟ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ਮਿੰਟ</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ਦਿਨ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ਦਿਨ</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ਘੰਟਾ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ਘੰਟੇ</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ਮਿੰਟ</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> ਮਿੰਟ</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"ਹੁਣ"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-pl/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-pl/complication_strings.xml
new file mode 100644
index 0000000..4a69ebc
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-pl/complication_strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>g.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>g.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>g.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>g.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>min</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dni</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dni</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dnia</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> dzień</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> godziny</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> godzin</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> godziny</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> godzina</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Teraz"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-pt-rBR/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-pt-rBR/complication_strings.xml
new file mode 100644
index 0000000..65f4e09
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-pt-rBR/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g><xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dia</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dias</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hora</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> horas</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Agora"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-pt-rPT/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-pt-rPT/complication_strings.xml
new file mode 100644
index 0000000..03102f4
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-pt-rPT/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dias</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> dia</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> horas</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hora</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Agora"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-pt/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-pt/complication_strings.xml
new file mode 100644
index 0000000..65f4e09
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-pt/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>min</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g><xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dia</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dias</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hora</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> horas</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Agora"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ro/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ro/complication_strings.xml
new file mode 100644
index 0000000..177e860
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ro/complication_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> zile</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> de zile</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> zile</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ore</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> de ore</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> oră</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> de min.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> zile</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> de zile</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> zi</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ore</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> de ore</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> oră</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> minute</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> de minute</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> minut</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Acum"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ru/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ru/complication_strings.xml
new file mode 100644
index 0000000..8c904f3
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ru/complication_strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дн.</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дн.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дн.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дн.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ч.</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ч.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ч.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ч.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин.</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> мин.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> день</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дня</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дней</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дня</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> час</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> часа</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> часов</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> часа</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> минута</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> минуты</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> минут</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> минуты</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Сейчас"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-si/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-si/complication_strings.xml
new file mode 100644
index 0000000..6851c83
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-si/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one">දින <xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g></item>
+      <item quantity="other">දින <xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one">පැය <xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g></item>
+      <item quantity="other">පැය <xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one">මිනි <xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g></item>
+      <item quantity="other">මිනි <xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g></item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one">දින <xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g></item>
+      <item quantity="other">දින <xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one">පැය <xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g></item>
+      <item quantity="other">පැය <xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one">මිනි <xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g></item>
+      <item quantity="other">මිනි <xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g></item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"දැන්"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-sk/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-sk/complication_strings.xml
new file mode 100644
index 0000000..1d2ff73
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-sk/complication_strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dni</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dňa</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dní</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> deň</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hodiny</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hodiny</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> hodín</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> hodina</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Teraz"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-sl/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-sl/complication_strings.xml
new file mode 100644
index 0000000..4a80e57
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-sl/complication_strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dan</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dneva</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dni</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dni</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ura</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> uri</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ure</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ur</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="two"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Zdaj"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-sq/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-sq/complication_strings.xml
new file mode 100644
index 0000000..24a4e49
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-sq/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> d.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> d.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> orë</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> orë</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ditë</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ditë</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> orë</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> orë</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min.</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Tani"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-sr/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-sr/complication_strings.xml
new file mode 100644
index 0000000..33df6bf
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-sr/complication_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> д</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> д</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> д</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> с</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> с</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> с</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> м</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> м</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> м</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дан</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дана</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дана</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> сат</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> сата</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> сати</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> минут</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> минута</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> минута</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Садa"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-sv/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-sv/complication_strings.xml
new file mode 100644
index 0000000..38cb8da
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-sv/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>t</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>t</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> dagar</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> dag</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> timmar</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> timme</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Nu"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-sw/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-sw/complication_strings.xml
new file mode 100644
index 0000000..96d953e
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-sw/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other">Siku <xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g></item>
+      <item quantity="one">Siku <xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other">Saa <xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g></item>
+      <item quantity="one">Saa <xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other">Dak <xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g></item>
+      <item quantity="one">Dak <xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g></item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other">Siku <xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g></item>
+      <item quantity="one">Siku <xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other">Saa <xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g></item>
+      <item quantity="one">Saa <xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other">Dak <xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g></item>
+      <item quantity="one">Dak <xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g></item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Sasa"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ta/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ta/complication_strings.xml
new file mode 100644
index 0000000..bf2a79e
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ta/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>நா</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>நா</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>ம</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>ம</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>நி</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>நி</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> நாட்கள்</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> நாள்</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ம.நே</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ம.நே</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> நிமி</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> நிமி</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"இப்போது"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-te/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-te/complication_strings.xml
new file mode 100644
index 0000000..7699b0a
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-te/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>రో</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>రో</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>గం</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>గం</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>ని</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>ని</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> రోజులు</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> రోజు</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> గంటలు</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> గంట</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> నిమిషాలు</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> నిమిషం</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"నవ్"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-th/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-th/complication_strings.xml
new file mode 100644
index 0000000..cf12c57
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-th/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> วัน</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> วัน</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ชม.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ชม.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> นาที</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> นาที</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> วัน</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> วัน</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> ชม.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> ชม.</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> นาที</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> นาที</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"ตอนนี้"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-tl/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-tl/complication_strings.xml
new file mode 100644
index 0000000..49c79b5
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-tl/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>d</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>h</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>m</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> araw</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> na araw</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> oras</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> na oras</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> min</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> na min</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Ngayon"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-tr/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-tr/complication_strings.xml
new file mode 100644
index 0000000..8c49350b
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-tr/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> gün</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> gün</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> sa.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> sa.</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> dk.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> dk.</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> gün</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> gün</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> saat</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> saat</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> dk.</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> dk.</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Şimdi"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-uk/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-uk/complication_strings.xml
new file mode 100644
index 0000000..3aa4c2c0
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-uk/complication_strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дн.</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дн.</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дн.</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дн.</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> год</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> год</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> год</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> год</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хв</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> день</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дні</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> днів</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> дня</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> година</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> години</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> годин</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> години</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хвилина</item>
+      <item quantity="few"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хвилини</item>
+      <item quantity="many"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хвилин</item>
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> хвилини</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Зараз"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-ur/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-ur/complication_strings.xml
new file mode 100644
index 0000000..81a3cca
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-ur/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> دن</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> دن</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> گھنٹے</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> گھنٹہ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>منٹ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>منٹ</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> دن</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> دن</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> گھنٹے</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> گھنٹہ</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> منٹ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> منٹ</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"ابھی"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-uz/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-uz/complication_strings.xml
new file mode 100644
index 0000000..4acf84f
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-uz/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> kun</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> kun</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> st</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> st</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> d</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> d</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g>, <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g>, <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> kun</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> kun</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> soat</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> soat</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> daq</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> daq</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Hozir"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-vi/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-vi/complication_strings.xml
new file mode 100644
index 0000000..d07ef24
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-vi/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ngày</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ngày</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> giờ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> giờ</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> phút</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> phút</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> ngày</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> ngày</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> giờ</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> giờ</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> phút</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> phút</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Bây giờ"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-zh-rCN/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-zh-rCN/complication_strings.xml
new file mode 100644
index 0000000..c500fe4
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-zh-rCN/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g>天</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g>天</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g>小时</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g>小时</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g>分钟</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g>分钟</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g><xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g><xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> 天</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> 天</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> 小时</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> 小时</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> 分钟</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> 分钟</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"现在"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-zh-rHK/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-zh-rHK/complication_strings.xml
new file mode 100644
index 0000000..b9b42f8
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-zh-rHK/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> 天</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> 天</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> 小時</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> 小時</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> 分鐘</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> 分鐘</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> 天</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> 天</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> 小時</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> 小時</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> 分鐘</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> 分鐘</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"現在"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-zh-rTW/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-zh-rTW/complication_strings.xml
new file mode 100644
index 0000000..b9b42f8
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-zh-rTW/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> 天</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> 天</item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> 小時</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> 小時</item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> 分鐘</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> 分鐘</item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="other"><xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g> 天</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_DAYS_0">%d</xliff:g> 天</item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="other"><xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g> 小時</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_HOURS_0">%d</xliff:g> 小時</item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="other"><xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g> 分鐘</item>
+      <item quantity="one"><xliff:g id="NUMBER_OF_MINUTES_0">%d</xliff:g> 分鐘</item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"現在"</string>
+</resources>
diff --git a/wear/wear-complications-data/src/main/res/values-zu/complication_strings.xml b/wear/wear-complications-data/src/main/res/values-zu/complication_strings.xml
new file mode 100644
index 0000000..7a7db9d
--- /dev/null
+++ b/wear/wear-complications-data/src/main/res/values-zu/complication_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="time_difference_short_days" formatted="false" msgid="8500262093840795448">
+      <item quantity="one">izinsuku <xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g></item>
+      <item quantity="other">izinsuku <xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_short_hours" formatted="false" msgid="3258361256003469346">
+      <item quantity="one">amahora <xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g></item>
+      <item quantity="other">amahora <xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_short_minutes" formatted="false" msgid="3812930575997556650">
+      <item quantity="one">imizuzu <xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g></item>
+      <item quantity="other">imizuzu <xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g></item>
+    </plurals>
+    <string name="time_difference_short_days_and_hours" msgid="1756744715731328189">"<xliff:g id="SHORT_DAYS">%1$s</xliff:g> <xliff:g id="SHORT_HOURS">%2$s</xliff:g>"</string>
+    <string name="time_difference_short_hours_and_minutes" msgid="7429995187969936129">"<xliff:g id="SHORT_HOURS">%1$s</xliff:g> <xliff:g id="SHORT_MINUTES">%2$s</xliff:g>"</string>
+    <plurals name="time_difference_words_days" formatted="false" msgid="345557497041553025">
+      <item quantity="one">izinsuku <xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g></item>
+      <item quantity="other">izinsuku <xliff:g id="NUMBER_OF_DAYS_1">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_words_hours" formatted="false" msgid="2990178439049007198">
+      <item quantity="one">amahora <xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g></item>
+      <item quantity="other">amahora <xliff:g id="NUMBER_OF_HOURS_1">%d</xliff:g></item>
+    </plurals>
+    <plurals name="time_difference_words_minutes" formatted="false" msgid="9081188175463984403">
+      <item quantity="one">imizuzu <xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g></item>
+      <item quantity="other">imizuzu <xliff:g id="NUMBER_OF_MINUTES_1">%d</xliff:g></item>
+    </plurals>
+    <string name="time_difference_now" msgid="1141173224250945412">"Manje"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-af/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-af/accessibility_strings.xml
new file mode 100644
index 0000000..ae9f064
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-af/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Geen toestemming tot datatoegang nie"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Geen data nie"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> van <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-am/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-am/accessibility_strings.xml
new file mode 100644
index 0000000..5e99387
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-am/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ውሂብን ለመድረስ ፈቃድ የለም"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"ውሂብ የለም"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> ከ<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ar/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ar/accessibility_strings.xml
new file mode 100644
index 0000000..8431f70
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ar/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"لا يتوفّر إذن للوصول إلى البيانات."</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"بلا بيانات"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> من <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-as/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-as/accessibility_strings.xml
new file mode 100644
index 0000000..cde435be
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-as/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ডেটা এক্সেছ কৰিবলৈ অনুমতি নাই"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"কোনো ডেটা নাই"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g>ৰ <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-az/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-az/accessibility_strings.xml
new file mode 100644
index 0000000..c96ae24
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-az/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Dataya giriş icazəsi yoxdur"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Data yoxdur"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-b+sr+Latn/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-b+sr+Latn/accessibility_strings.xml
new file mode 100644
index 0000000..470cd1e
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-b+sr+Latn/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nema dozvolu za pristup podacima"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Nema podataka"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> od <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-be/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-be/accessibility_strings.xml
new file mode 100644
index 0000000..c34216f
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-be/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Няма дазволу на доступ да даных"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Няма даных"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> з <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-bg/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-bg/accessibility_strings.xml
new file mode 100644
index 0000000..cfb1a39
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-bg/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Няма разрешение за достъп до данни"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Няма данни"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> от <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-bn/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-bn/accessibility_strings.xml
new file mode 100644
index 0000000..55ba40b
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-bn/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ডেটা অ্যাক্সেস করার অনুমতি নেই"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"কোনও ডেটা নেই"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g>-এর মধ্যে <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-bs/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-bs/accessibility_strings.xml
new file mode 100644
index 0000000..a958b5c
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-bs/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nema odobrenja za pristup podacima"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Nema podataka"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> od <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ca/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ca/accessibility_strings.xml
new file mode 100644
index 0000000..f7591b0
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ca/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Sense permís d\'accés a les dades"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"No hi ha dades"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> de <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-cs/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-cs/accessibility_strings.xml
new file mode 100644
index 0000000..a44ca2e
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-cs/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nemá oprávnění k přístupu k datům"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Žádné údaje"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> z <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-da/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-da/accessibility_strings.xml
new file mode 100644
index 0000000..2f25055
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-da/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Der er ikke givet adgang til data"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Ingen data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> af <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-de/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-de/accessibility_strings.xml
new file mode 100644
index 0000000..ddcd329
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-de/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Keine Datenzugriffsberechtigung"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Keine Daten"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> von <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-el/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-el/accessibility_strings.xml
new file mode 100644
index 0000000..8e38750
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-el/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Χωρίς άδεια πρόσβασης σε δεδομένα"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Χωρίς δεδομένα"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> από <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-en-rAU/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-en-rAU/accessibility_strings.xml
new file mode 100644
index 0000000..f7c8fff
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-en-rAU/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"No permission to access data"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"No data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> of <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-en-rCA/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-en-rCA/accessibility_strings.xml
new file mode 100644
index 0000000..f7c8fff
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-en-rCA/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"No permission to access data"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"No data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> of <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-en-rGB/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-en-rGB/accessibility_strings.xml
new file mode 100644
index 0000000..f7c8fff
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-en-rGB/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"No permission to access data"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"No data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> of <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-en-rIN/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-en-rIN/accessibility_strings.xml
new file mode 100644
index 0000000..f7c8fff
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-en-rIN/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"No permission to access data"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"No data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> of <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-en-rXC/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-en-rXC/accessibility_strings.xml
new file mode 100644
index 0000000..cf76c15
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-en-rXC/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‏‎‎‎‏‎‎‎‎‏‏‎‎‎‎‎‎‏‏‎‏‎‎‎‏‏‏‎‎‎‎‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‎‏‎‎‎No permission to access data‎‏‎‎‏‎"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‏‎‎‎‏‏‏‏‏‎‎‏‎‎‏‎‏‎‏‎No data‎‏‎‎‏‎"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‏‏‎‏‎‏‎‎‎‎‎‎‏‎‎‏‏‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="VALUE">%1$f</xliff:g>‎‏‎‎‏‏‏‎ of ‎‏‎‎‏‏‎<xliff:g id="MAX">%2$f</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-es-rUS/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-es-rUS/accessibility_strings.xml
new file mode 100644
index 0000000..f14f1b5
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-es-rUS/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Sin permiso para acceder a datos"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Sin datos"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> de <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-es/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-es/accessibility_strings.xml
new file mode 100644
index 0000000..f14f1b5
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-es/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Sin permiso para acceder a datos"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Sin datos"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> de <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-et/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-et/accessibility_strings.xml
new file mode 100644
index 0000000..03433f73
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-et/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Pole luba andmetele juurde pääseda"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Andmed puuduvad"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-eu/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-eu/accessibility_strings.xml
new file mode 100644
index 0000000..1c823ea
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-eu/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Ez duzu datuak atzitzeko baimenik"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Ez dago daturik"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-fa/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-fa/accessibility_strings.xml
new file mode 100644
index 0000000..c26a8ce
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-fa/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"اجازه دسترسی به داده‌ها وجود ندارد"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"داده‌ای وجود ندارد"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> از <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-fi/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-fi/accessibility_strings.xml
new file mode 100644
index 0000000..a5ba076
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-fi/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Ei pääsyä dataan"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Ei dataa"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-fr-rCA/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-fr-rCA/accessibility_strings.xml
new file mode 100644
index 0000000..3bf9890
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-fr-rCA/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Aucune autoris. d\'accès aux données"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Aucune donnée"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> sur <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-fr/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-fr/accessibility_strings.xml
new file mode 100644
index 0000000..e197273
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-fr/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Non autorisée à accéder aux données"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Aucune donnée"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> sur <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-gl/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-gl/accessibility_strings.xml
new file mode 100644
index 0000000..f24b2c5
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-gl/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Sen permiso para acceder aos datos"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Sen datos"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> de <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-gu/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-gu/accessibility_strings.xml
new file mode 100644
index 0000000..8c30886
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-gu/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ડેટા ઍક્સેસ કરવાની કોઈ પરવાનગી નથી"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"કોઈ ડેટા નથી"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g>માંથી <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-hi/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-hi/accessibility_strings.xml
new file mode 100644
index 0000000..b07e1ae
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-hi/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"डेटा ऐक्सेस करने की अनुमति नहीं है"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"कोई डेटा नहीं है"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g> में से <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-hr/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-hr/accessibility_strings.xml
new file mode 100644
index 0000000..6a78557
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-hr/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nema dopuštenja za pristup podacima"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Nema podataka"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> od <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-hu/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-hu/accessibility_strings.xml
new file mode 100644
index 0000000..7283349
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-hu/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nincs engedély az adatok elérésére"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Nincs adat"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g>/<xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-hy/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-hy/accessibility_strings.xml
new file mode 100644
index 0000000..3f48f5e
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-hy/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Տվյալները հասանելի չեն"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Տվյալներ չկան"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>՝ <xliff:g id="MAX">%2$f</xliff:g>-ից"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-in/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-in/accessibility_strings.xml
new file mode 100644
index 0000000..29e399a
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-in/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Tidak ada izin untuk mengakses data"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Tidak ada data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> dari <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-is/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-is/accessibility_strings.xml
new file mode 100644
index 0000000..d6a32f8
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-is/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Engin heimild til að ná í gögn"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Engin gögn"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> af <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-it/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-it/accessibility_strings.xml
new file mode 100644
index 0000000..97f2a09
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-it/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nessuna autorizzazione accesso dati"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Nessun dato"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> di <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-iw/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-iw/accessibility_strings.xml
new file mode 100644
index 0000000..f7044f7
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-iw/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"אין הרשאת גישה לנתונים"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"אין נתונים"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> מתוך <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ja/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ja/accessibility_strings.xml
new file mode 100644
index 0000000..11432e0
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ja/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"データへのアクセス権限がありません"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"データがありません"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ka/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ka/accessibility_strings.xml
new file mode 100644
index 0000000..5748948
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ka/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"მონაცემ. წვდომის ნებართვა არ არის"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"მონაცემები არ არის"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> / <xliff:g id="MAX">%2$f</xliff:g>-დან"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-kk/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-kk/accessibility_strings.xml
new file mode 100644
index 0000000..46a4d64
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-kk/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Деректерді пайдалануға рұқсат жоқ."</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Деректер жоқ."</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-km/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-km/accessibility_strings.xml
new file mode 100644
index 0000000..5ed5ee6
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-km/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"មិនមានការអនុញ្ញាតក្នុងការចូលប្រើទិន្នន័យទេ"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"មិនមាន​ទិន្នន័យទេ"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> នៃ <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-kn/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-kn/accessibility_strings.xml
new file mode 100644
index 0000000..bed7a1b
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-kn/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ಡೇಟಾ ಪ್ರವೇಶಿಸಲು ಯಾವುದೇ ಅನುಮತಿ ಇಲ್ಲ"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"ಡೇಟಾ ಇಲ್ಲ"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g> ರಲ್ಲಿ <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ko/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ko/accessibility_strings.xml
new file mode 100644
index 0000000..01a5e4c
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ko/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"데이터 액세스 권한 없음"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"데이터 없음"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g>걸음 중 <xliff:g id="VALUE">%1$f</xliff:g>걸음"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ky/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ky/accessibility_strings.xml
new file mode 100644
index 0000000..d1f58e9
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ky/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Маалыматты колдонууга уруксат жок"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Маалымат жок"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g> ичинен <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-lo/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-lo/accessibility_strings.xml
new file mode 100644
index 0000000..e436f35
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-lo/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ບໍ່ມີສິດອະນຸຍາດເຂົ້າເຖິງຂໍ້ມູນ"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"ບໍ່ມີຂໍ້ມູນ"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> ຈາກ <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-lt/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-lt/accessibility_strings.xml
new file mode 100644
index 0000000..9f8933f
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-lt/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nėra leidimo duomenims pasiekti"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Nėra jokių duomenų"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> iš <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-lv/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-lv/accessibility_strings.xml
new file mode 100644
index 0000000..092ebcc
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-lv/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nav atļaujas piekļūt datiem"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Nav datu"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> no <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-mk/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-mk/accessibility_strings.xml
new file mode 100644
index 0000000..edc351e
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-mk/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Нема дозвола за пристап до податоци"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Нема податоци"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> од <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ml/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ml/accessibility_strings.xml
new file mode 100644
index 0000000..e862c8b
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ml/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ഡാറ്റ ആക്സസ് ചെയ്യാൻ അനുമതിയില്ല"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"ഡാറ്റയൊന്നുമില്ല"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> / <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-mn/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-mn/accessibility_strings.xml
new file mode 100644
index 0000000..fdf1fbc
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-mn/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Өгөгдөлд хандах зөвшөөрөл байхгүй"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Өгөгдөл байхгүй"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g>-с <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-mr/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-mr/accessibility_strings.xml
new file mode 100644
index 0000000..8ed1106
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-mr/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"डेटा अ‍ॅक्सेस करण्याची परवानगी नाही"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"कोणताही डेटा नाही"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g> पैकी <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ms/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ms/accessibility_strings.xml
new file mode 100644
index 0000000..a0def57
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ms/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Tiada kebenaran untuk mengakses data"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Tiada data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> daripada <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-my/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-my/accessibility_strings.xml
new file mode 100644
index 0000000..cebc57d
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-my/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ဒေတာသုံးရန် ခွင့်ပြုချက်မရှိပါ"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"ဒေတာမရှိပါ"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g> အနက် <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-nb/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-nb/accessibility_strings.xml
new file mode 100644
index 0000000..74fbe1d
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-nb/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Ingen tilgang til dataene"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Ingen data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> av <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ne/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ne/accessibility_strings.xml
new file mode 100644
index 0000000..f0d48e2
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ne/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"डेटा प्रयोग गर्ने अनुमति दिइएको छैन"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"डेटा छैन"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g> मध्ये <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-nl/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-nl/accessibility_strings.xml
new file mode 100644
index 0000000..cf89d59
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-nl/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Geen toegang tot gegevens"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Geen gegevens"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> van <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-or/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-or/accessibility_strings.xml
new file mode 100644
index 0000000..7a8f33e
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-or/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ଡାଟା ଆକ୍ସେସ୍ କରିବାକୁ ଅନୁମତି ନାହିଁ"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"କୌଣସି ଡାଟା ନାହିଁ"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g>ର <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-pa/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-pa/accessibility_strings.xml
new file mode 100644
index 0000000..cc4a439
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-pa/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਇਜਾਜ਼ਤ ਨਹੀਂ"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"ਕੋਈ ਡਾਟਾ ਨਹੀਂ"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g> ਵਿੱਚੋਂ <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-pl/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-pl/accessibility_strings.xml
new file mode 100644
index 0000000..9571ccd
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-pl/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Brak dostępu do danych"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Brak danych"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-pt-rBR/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-pt-rBR/accessibility_strings.xml
new file mode 100644
index 0000000..c4f83ae
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-pt-rBR/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Sem permissão para acessar os dados"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Não há dados"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> de <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-pt-rPT/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-pt-rPT/accessibility_strings.xml
new file mode 100644
index 0000000..b6b63ae
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-pt-rPT/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Sem autorização de acesso aos dados"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Sem dados"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> de <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-pt/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-pt/accessibility_strings.xml
new file mode 100644
index 0000000..c4f83ae
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-pt/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Sem permissão para acessar os dados"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Não há dados"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> de <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ro/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ro/accessibility_strings.xml
new file mode 100644
index 0000000..99245d7
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ro/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nicio permisiune pentru accesarea datelor"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Nu există date"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> din <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ru/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ru/accessibility_strings.xml
new file mode 100644
index 0000000..1041a2a
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ru/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Нет разрешения на доступ к данным"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Нет данных"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> из <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-si/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-si/accessibility_strings.xml
new file mode 100644
index 0000000..5659c88
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-si/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"දත්තවලට ප්‍රවේශ වීමට අවසර නැත"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"දත්ත නැත"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g>කින් <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-sk/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-sk/accessibility_strings.xml
new file mode 100644
index 0000000..a59e8f1
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-sk/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nemá povolený prístup k údajom"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Žiadne údaje"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> z <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-sl/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-sl/accessibility_strings.xml
new file mode 100644
index 0000000..0bbdeca
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-sl/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Ni dovoljenja za dostop do podatkov"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Ni podatkov"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> od <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-sq/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-sq/accessibility_strings.xml
new file mode 100644
index 0000000..8304a75
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-sq/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Nuk ka leje për qasje te të dhënat"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Nuk ka të dhëna"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> nga <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-sr/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-sr/accessibility_strings.xml
new file mode 100644
index 0000000..a896dd4
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-sr/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Нема дозволу за приступ подацима"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Нема података"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> од <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-sv/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-sv/accessibility_strings.xml
new file mode 100644
index 0000000..4072d54
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-sv/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Ingen åtkomst till data"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Ingen data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> av <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-sw/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-sw/accessibility_strings.xml
new file mode 100644
index 0000000..30544a9
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-sw/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Hakuna ruhusa ya kufikia data"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Hakuna data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> kati ya <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ta/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ta/accessibility_strings.xml
new file mode 100644
index 0000000..9c55867
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ta/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"தரவை அணுக அனுமதி இல்லை"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"தரவு இல்லை"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-te/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-te/accessibility_strings.xml
new file mode 100644
index 0000000..e6e5fd5
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-te/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"డేటా యాక్సెస్ చేయడానికి అనుమతి లేదు"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"డేటా లేదు"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="MAX">%2$f</xliff:g>లో <xliff:g id="VALUE">%1$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-th/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-th/accessibility_strings.xml
new file mode 100644
index 0000000..8031ad3
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-th/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ไม่มีสิทธิ์เข้าถึงข้อมูล"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"ไม่มีข้อมูล"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> จาก <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-tl/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-tl/accessibility_strings.xml
new file mode 100644
index 0000000..a5fb5c1
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-tl/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Walang pahintulot na kunin ang data"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Walang data"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> sa <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-tr/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-tr/accessibility_strings.xml
new file mode 100644
index 0000000..38fef9a
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-tr/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Verilere erişim izni yok"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Veri yok"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-uk/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-uk/accessibility_strings.xml
new file mode 100644
index 0000000..f80a178
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-uk/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Немає дозволу на доступ до даних"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Немає даних"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> з <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-ur/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-ur/accessibility_strings.xml
new file mode 100644
index 0000000..05474c9
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-ur/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"ڈیٹا تک رسائی کیلئے کوئی اجازت نہیں"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"کوئی ڈیٹا نہیں ہے"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> از <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-uz/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-uz/accessibility_strings.xml
new file mode 100644
index 0000000..e846d90
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-uz/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Axborotni ochishga ruxsat yoʻq"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Hech narsa topilmadi"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> / <xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-vi/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-vi/accessibility_strings.xml
new file mode 100644
index 0000000..12c2927
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-vi/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Không có quyền truy cập dữ liệu"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Không có dữ liệu"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-zh-rCN/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-zh-rCN/accessibility_strings.xml
new file mode 100644
index 0000000..4727c01
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-zh-rCN/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"无权访问数据"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"无数据"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-zh-rHK/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-zh-rHK/accessibility_strings.xml
new file mode 100644
index 0000000..9bc8513
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-zh-rHK/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"冇權存取資料"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"冇資料"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-zh-rTW/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-zh-rTW/accessibility_strings.xml
new file mode 100644
index 0000000..410015f
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-zh-rTW/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"無權存取資料"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"沒有任何資料"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g>/<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface-data/src/main/res/values-zu/accessibility_strings.xml b/wear/wear-watchface-data/src/main/res/values-zu/accessibility_strings.xml
new file mode 100644
index 0000000..47f72f4
--- /dev/null
+++ b/wear/wear-watchface-data/src/main/res/values-zu/accessibility_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2020 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="a11y_no_permission" msgid="6173908979849605412">"Ayikho imvume yokufinyelela idatha"</string>
+    <string name="a11y_no_data" msgid="2401847004061006997">"Ayikho idatha"</string>
+    <string name="a11y_template_range" msgid="2205069205653242011">"<xliff:g id="VALUE">%1$f</xliff:g> ku-<xliff:g id="MAX">%2$f</xliff:g>"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-af/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-af/watchface_strings.xml
new file mode 100644
index 0000000..799d162
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-af/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Stel horlosieskermverwikkelinge op"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Stel horlosieskerminstellings op"</string>
+    <string name="style_config" msgid="2987895585951859981">"Stel horlosieskermstyle op"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Geen"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Agtergrondprent"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Style"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-am/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-am/watchface_strings.xml
new file mode 100644
index 0000000..595404e
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-am/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"የሰዓት መልክ ተጨማሪ ባህሪዎችን ያዋቅሩ"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"የሰዓት መልክ ቅንብሮችን ያዋቅሩ"</string>
+    <string name="style_config" msgid="2987895585951859981">"የሰዓት መልክ ቅጦችን ያዋቅሩ"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"ምንም"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ውሂብ"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"የዳራ ምስል"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"ቅጦች"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ar/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ar/watchface_strings.xml
new file mode 100644
index 0000000..81c97bc
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ar/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"إعداد إضافات خلفية شاشة الساعة"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"ضبط إعدادات خلفية شاشة الساعة"</string>
+    <string name="style_config" msgid="2987895585951859981">"إعداد أنماط شاشة الساعة"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"بلا خلفية"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"البيانات"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"صورة الخلفية"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"الأنماط"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-as/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-as/watchface_strings.xml
new file mode 100644
index 0000000..d6fe073
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-as/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"watchfaceৰ বিস্তাৰিত সুবিধাসমূহ কনফিগাৰ কৰক"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"watchfaceৰ ছেটিং কনফিগাৰ কৰক"</string>
+    <string name="style_config" msgid="2987895585951859981">"watchfaceৰ শৈলীসমূহ কনফিগাৰ কৰক"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"নাই"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ডেটা"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"নেপথ্যৰ প্ৰতিচ্ছবি"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"শৈলীসমূহ"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-az/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-az/watchface_strings.xml
new file mode 100644
index 0000000..1167043
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-az/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Siferblat Komplikasiyalarını konfiqurasiya edin"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Siferblat Ayarlarını konfiqurasiya edin"</string>
+    <string name="style_config" msgid="2987895585951859981">"Siferblat Üslublarını konfiqurasiya edin"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Yoxdur"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Arxa fon şəkli"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Üslublar"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-b+sr+Latn/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-b+sr+Latn/watchface_strings.xml
new file mode 100644
index 0000000..78276f6
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-b+sr+Latn/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfigurišite pokazatelje na brojčaniku"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfigurišite podešavanja brojčanika"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfigurišite stilove brojčanika"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Nema"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Podaci"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Slika u pozadini"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stilovi"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-be/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-be/watchface_strings.xml
new file mode 100644
index 0000000..89d64d1
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-be/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Наладзіць ускладненне цыферблата"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Наладзіць параметры цыферблата"</string>
+    <string name="style_config" msgid="2987895585951859981">"Наладзіць стылі цыферблата"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Няма"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Даныя"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Фонавы відарыс"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Стылі"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-bg/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-bg/watchface_strings.xml
new file mode 100644
index 0000000..fff6399
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-bg/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Конфигуриране на допълненията на циферблата"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Конфигуриране на настройките на циферблата"</string>
+    <string name="style_config" msgid="2987895585951859981">"Конфигуриране на стиловете на циферблата"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Няма"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Данни"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Фоново изображение"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Стилове"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-bn/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-bn/watchface_strings.xml
new file mode 100644
index 0000000..649b897
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-bn/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"\'ওয়াচফেস কমপ্লিকেশন\' কনফিগার করুন"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"\'ওয়াচফেস সেটিংস\' কনফিগার করুন"</string>
+    <string name="style_config" msgid="2987895585951859981">"\'ওয়াচফেস স্টাইল\' কনফিগার করুন"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"কোনওটিই নয়"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ডেটা"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"ব্যাকগ্রাউন্ডের ছবি"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"স্টাইল"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-bs/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-bs/watchface_strings.xml
new file mode 100644
index 0000000..97e113f
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-bs/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfiguracija spletova watch facea"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfiguracija postavki watch facea"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfiguracija stilova watch facea"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Ništa"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Podaci"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Slika pozadine"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stilovi"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ca/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ca/watchface_strings.xml
new file mode 100644
index 0000000..43cafaa
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ca/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configura les funcions especials de l\'esfera del rellotge"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Ajusta la configuració de l\'esfera del rellotge"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configura els estils de l\'esfera del rellotge"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Cap"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Dades"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Imatge de fons"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Estils"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-cs/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-cs/watchface_strings.xml
new file mode 100644
index 0000000..36ae905
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-cs/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfigurace komplikací na ciferníku"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfigurace nastavení ciferníku"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfigurace stylů ciferníku"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Ne"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Obrázek na pozadí"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Styly"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-da/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-da/watchface_strings.xml
new file mode 100644
index 0000000..4beecb4
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-da/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfigurer widgets på urskiven"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfigurer indstillinger for urskiven"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfigurer urskivens udseende"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Ingen"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Baggrundsbillede"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Udseende"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-de/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-de/watchface_strings.xml
new file mode 100644
index 0000000..724f0c2
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-de/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Zifferblatt-Zusatzfunktionen konfigurieren"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Zifferblatt-Einstellungen konfigurieren"</string>
+    <string name="style_config" msgid="2987895585951859981">"Zifferblatt-Stile konfigurieren"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Keine"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Daten"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Hintergrundbild"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stile"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-el/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-el/watchface_strings.xml
new file mode 100644
index 0000000..4ad59f4
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-el/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Διαμόρφωση ενδείξεων πρόσοψης ρολογιού"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Διαμόρφωση ρυθμίσεων πρόσοψης ρολογιού"</string>
+    <string name="style_config" msgid="2987895585951859981">"Διαμόρφωση στιλ πρόσοψης ρολογιού"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Καμία"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Δεδομένα"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Εικόνα φόντου"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Στιλ"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-en-rAU/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-en-rAU/watchface_strings.xml
new file mode 100644
index 0000000..0f72e2d
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-en-rAU/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configure watch face complications"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configure watch face settings"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configure watch face styles"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"None"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Background image"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Styles"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-en-rCA/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-en-rCA/watchface_strings.xml
new file mode 100644
index 0000000..0f72e2d
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-en-rCA/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configure watch face complications"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configure watch face settings"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configure watch face styles"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"None"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Background image"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Styles"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-en-rGB/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-en-rGB/watchface_strings.xml
new file mode 100644
index 0000000..0f72e2d
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-en-rGB/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configure watch face complications"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configure watch face settings"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configure watch face styles"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"None"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Background image"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Styles"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-en-rIN/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-en-rIN/watchface_strings.xml
new file mode 100644
index 0000000..0f72e2d
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-en-rIN/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configure watch face complications"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configure watch face settings"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configure watch face styles"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"None"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Background image"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Styles"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-en-rXC/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-en-rXC/watchface_strings.xml
new file mode 100644
index 0000000..f671fd5
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-en-rXC/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‎‏‏‏‎‎‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎Configure Watchface Complications‎‏‎‎‏‎"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‏‎‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‏‎‏‏‎Configure Watchface Settings‎‏‎‎‏‎"</string>
+    <string name="style_config" msgid="2987895585951859981">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‎‏‏‎‏‎‎‎‏‏‏‎‎‏‎‏‎‎‏‏‏‏‎‎‏‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎Configure Watchface Styles‎‏‎‎‏‎"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‏‎‏‎‏‎‎‎‎‎‎‏‎‏‏‏‎‏‏‎‎‎‏‎‎‎‏‏‏‏‏‎‎‎‎‎‏‏‎‎None‎‏‎‎‏‎"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‏‏‏‎‏‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‎‎‎‏‎‎‎‏‎‎‏‏‏‏‎‏‏‎‏‏‎‏‎‏‎‎Data‎‏‎‎‏‎"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‎‎‏‎‏‎‏‏‏‏‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‎‏‎‏‏‏‎‏‎‏‎‎‏‏‏‏‏‎‎‎‎‎‏‏‏‏‎Background image‎‏‎‎‏‎"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‎‏‏‏‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‎‏‎‏‎‏‏‏‎‎‎‏‏‏‏‎Styles‎‏‎‎‏‎"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-es-rUS/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-es-rUS/watchface_strings.xml
new file mode 100644
index 0000000..fcabc61
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-es-rUS/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configurar complicaciones de cara de reloj"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configurar cara de reloj"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configurar estilos de caras de reloj"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Ninguno"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Datos"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Imagen de fondo"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Estilos"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-es/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-es/watchface_strings.xml
new file mode 100644
index 0000000..53fdb59
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-es/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configurar complicaciones de esfera de reloj"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configurar ajustes de esfera de reloj"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configurar estilos de esfera de reloj"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Ninguna"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Datos"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Imagen de fondo"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Estilos"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-et/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-et/watchface_strings.xml
new file mode 100644
index 0000000..ba7e6ba
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-et/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Kelladisaini funktsioonide seadistamine"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Kelladisaini seadete seadistamine"</string>
+    <string name="style_config" msgid="2987895585951859981">"Kelladisaini stiilide seadistamine"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Puudub"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Andmed"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Taustapilt"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stiilid"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-eu/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-eu/watchface_strings.xml
new file mode 100644
index 0000000..df20b30
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-eu/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfiguratu erloju-esferaren ezaugarri bereziak"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfiguratu erloju-esferaren ezarpenak"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfiguratu erloju-esferaren estiloak"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Bat ere ez"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Datuak"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Atzeko planoko irudia"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Estiloak"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-fa/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-fa/watchface_strings.xml
new file mode 100644
index 0000000..4e31daf
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-fa/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"پیکربندی چیدمان‌های صفحه ساعت"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"پیکربندی تنظیمات صفحه ساعت"</string>
+    <string name="style_config" msgid="2987895585951859981">"پیکربندی سبک‌های صفحه ساعت"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"هیچ‌کدام"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"داده‌ها"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"تصویر پس‌زمینه"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"سبک‌ها"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-fi/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-fi/watchface_strings.xml
new file mode 100644
index 0000000..2ed83e1
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-fi/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Määritä kellotaulun lisäominaisuudet"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Määritä kellotaulun asetukset"</string>
+    <string name="style_config" msgid="2987895585951859981">"Määritä kellotaulun tyylit"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Ei mitään"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Taustakuva"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Tyylit"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-fr-rCA/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-fr-rCA/watchface_strings.xml
new file mode 100644
index 0000000..afbb5dd
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-fr-rCA/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configurer les complications du cadran"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configurer les paramètres du cadran"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configurer les styles du cadran"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Aucune"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Données"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Image d\'arrière-plan"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Styles"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-fr/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-fr/watchface_strings.xml
new file mode 100644
index 0000000..e2d1524
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-fr/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configurer les complications du cadran"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configurer les paramètres du cadran"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configurer les styles du cadran"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Aucun"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Données"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Image de fond"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Styles"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-gl/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-gl/watchface_strings.xml
new file mode 100644
index 0000000..e3c101a
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-gl/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configurar complicacións de esfera de reloxo"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configurar axustes de esfera de reloxo"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configurar estilos de esfera de reloxo"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Ningunha"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Datos"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Imaxe de fondo"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Estilos"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-gu/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-gu/watchface_strings.xml
new file mode 100644
index 0000000..999c6db
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-gu/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"ઘડિયાળના કૉમ્પ્લિકેશન ગોઠવો"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"ઘડિયાળના સેટિંગ ગોઠવો"</string>
+    <string name="style_config" msgid="2987895585951859981">"ઘડિયાળની શૈલીઓ ગોઠવો"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"એકપણ નહીં"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ડેટા"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"બૅકગ્રાઉન્ડની છબી"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"શૈલીઓ"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-hi/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-hi/watchface_strings.xml
new file mode 100644
index 0000000..85cb49b
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-hi/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"स्मार्ट वॉच के फ़ेस को, Android घड़ी के संकेत की सुविधा के साथ कॉन्फ़िगर करें"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"स्मार्ट वॉच के फ़ेस की सेटिंग को कॉन्फ़िगर करें"</string>
+    <string name="style_config" msgid="2987895585951859981">"स्मार्ट वॉच के फ़ेस स्टाइल को कॉन्फ़िगर करें"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"कोई नहीं"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"डेटा"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"बैकग्राउंड की इमेज"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"स्टाइल"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-hr/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-hr/watchface_strings.xml
new file mode 100644
index 0000000..9e77b5a
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-hr/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfiguriranje komplikacija brojčanika"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfiguriranje postavki brojčanika"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfiguriranje stilova brojčanika"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Nema"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Podaci"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Pozadinska slika"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stilovi"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-hu/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-hu/watchface_strings.xml
new file mode 100644
index 0000000..33a25f2
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-hu/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Óralap-komplikációk konfigurálása"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Óralap-beállítások konfigurálása"</string>
+    <string name="style_config" msgid="2987895585951859981">"Óralapstílusok konfigurálása"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Nincs"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Adatok"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Háttérkép"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stílusok"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-hy/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-hy/watchface_strings.xml
new file mode 100644
index 0000000..b3c0156
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-hy/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Թվատախտակի լրացումների կարգավորում"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Թվատախտակի պարամետրերի կարգավորում"</string>
+    <string name="style_config" msgid="2987895585951859981">"Թվատախտակի ոճերի կարգավորում"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Չկա"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Տվյալներ"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Ֆոնային պատկեր"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Ոճեր"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-in/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-in/watchface_strings.xml
new file mode 100644
index 0000000..b6cb535
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-in/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfigurasi Detail Tampilan Jam"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfigurasi Setelan Tampilan Jam"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfigurasi Gaya Tampilan Jam"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Tidak ada"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Gambar latar"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Gaya"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-is/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-is/watchface_strings.xml
new file mode 100644
index 0000000..89c0ec3
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-is/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Stilla úrskífugræjur"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Velja úrskífustillingar"</string>
+    <string name="style_config" msgid="2987895585951859981">"Stilla úrskífustíla"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Engin"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Gögn"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Bakgrunnsmynd"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stílar"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-it/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-it/watchface_strings.xml
new file mode 100644
index 0000000..13e678a
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-it/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configura le complicazioni del quadrante"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configura le impostazioni del quadrante"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configura gli stili del quadrante"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Nessuno"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Dati"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Immagine di sfondo"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stili"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-iw/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-iw/watchface_strings.xml
new file mode 100644
index 0000000..f4a668c
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-iw/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"הגדרת תכונות נוספות בתצוגת השעון"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"קביעת הגדרות בתצוגת השעון"</string>
+    <string name="style_config" msgid="2987895585951859981">"הגדרת סגנונות בתצוגת השעון"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"ללא"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"נתונים"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"תמונת רקע"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"סגנונות"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ja/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ja/watchface_strings.xml
new file mode 100644
index 0000000..34b0a79
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ja/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"ウォッチフェイスの追加機能の設定"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"ウォッチフェイスの設定の指定"</string>
+    <string name="style_config" msgid="2987895585951859981">"ウォッチフェイスのスタイルの設定"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"なし"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"データ"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"背景画像"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"スタイル"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ka/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ka/watchface_strings.xml
new file mode 100644
index 0000000..76d425a
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ka/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"ციფერბლატის გართულებების კონფიგურაცია"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"ციფერბლატის პარამეტრების კონფიგურაცია"</string>
+    <string name="style_config" msgid="2987895585951859981">"ციფერბლატის სტილების კონფიგურაცია"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"არცერთი"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"მონაცემები"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"ფონური სურათი"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"სტილები"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-kk/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-kk/watchface_strings.xml
new file mode 100644
index 0000000..8d8287f
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-kk/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Циферблат қосымша деректерін конфигурациялау"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Циферблат параметрлерін конфигурациялау"</string>
+    <string name="style_config" msgid="2987895585951859981">"Циферблат стильдерін конфигурациялау"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Ешқайсысы"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Деректер"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Фондық кескін"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Стильдер"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-km/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-km/watchface_strings.xml
new file mode 100644
index 0000000..d07af49
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-km/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"កំណត់រចនាសម្ព័ន្ធ​ភាពស្មុគស្មាញ​មុខនាឡិកា"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"កំណត់រចនាសម្ព័ន្ធ​ការកំណត់​មុខនាឡិកា"</string>
+    <string name="style_config" msgid="2987895585951859981">"កំណត់រចនាសម្ព័ន្ធ​រចនាប័ទ្ម​មុខនាឡិកា"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"គ្មាន"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ទិន្នន័យ"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"រូបភាព​ផ្ទៃ​ខាង​ក្រោយ"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"រចនាប័ទ្ម"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-kn/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-kn/watchface_strings.xml
new file mode 100644
index 0000000..04ee90d
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-kn/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"ವಾಚ್‌ಫೇಸ್ ತೊಡಕುಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"ವಾಚ್‌ಫೇಸ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ"</string>
+    <string name="style_config" msgid="2987895585951859981">"ವಾಚ್‌ಫೇಸ್ ಶೈಲಿಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"ಯಾವುದೂ ಅಲ್ಲ"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ಡೇಟಾ"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"ಹಿನ್ನೆಲೆ ಚಿತ್ರ"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"ಶೈಲಿಗಳು"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ko/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ko/watchface_strings.xml
new file mode 100644
index 0000000..a21e835
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ko/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"시계 모드 정보 표시 구성"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"시계 모드 설정 구성"</string>
+    <string name="style_config" msgid="2987895585951859981">"시계 모드 스타일 구성"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"없음"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"데이터"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"배경 이미지"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"스타일"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ky/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ky/watchface_strings.xml
new file mode 100644
index 0000000..80cf03a
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ky/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Циферблаттын кошумчаларын конфигурациялоо"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Циферблаттын жөндөөлөрүн конфигурациялоо"</string>
+    <string name="style_config" msgid="2987895585951859981">"Циферблаттын стилдерин конфигурациялоо"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Жок"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Маалымат"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Фондогу сүрөт"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Стилдер"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-lo/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-lo/watchface_strings.xml
new file mode 100644
index 0000000..eb51002
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-lo/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"ຕັ້ງຄ່າ Watchface Complications"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"ຕັ້ງຄ່າໜ້າປັດໂມງ"</string>
+    <string name="style_config" msgid="2987895585951859981">"ຕັ້ງຄ່າຮູບແບບໜ້າປັດໂມງ"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"ບໍ່ມີ"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ຂໍ້ມູນ"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"ພາບພື້ນຫຼັງ"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"ຮູບແບບ"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-lt/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-lt/watchface_strings.xml
new file mode 100644
index 0000000..eae26cb
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-lt/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Ciferblato funkcijų konfigūravimas"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Ciferblato nustatymų konfigūravimas"</string>
+    <string name="style_config" msgid="2987895585951859981">"Ciferblato stilių konfigūravimas"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Nėra"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Duomenys"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Fono vaizdas"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stiliai"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-lv/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-lv/watchface_strings.xml
new file mode 100644
index 0000000..4ce5615
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-lv/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Pulksteņa ekrāna papildinājumu konfigurēšana"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Pulksteņa ekrāna iestatījumu konfigurēšana"</string>
+    <string name="style_config" msgid="2987895585951859981">"Pulksteņa ekrāna stilu konfigurēšana"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Nav"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Dati"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Fona attēls"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stili"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-mk/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-mk/watchface_strings.xml
new file mode 100644
index 0000000..3f53bda
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-mk/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Конфигурирајте ги компликациите на маската за часовникот"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Конфигурирајте ги поставките на маската за часовникот"</string>
+    <string name="style_config" msgid="2987895585951859981">"Конфигурирајте ги стиловите на маската за часовникот"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Нема"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Податоци"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Слика во заднина"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Стилови"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ml/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ml/watchface_strings.xml
new file mode 100644
index 0000000..3e59d19
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ml/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"വാച്ച് ഫെയ്സ് സങ്കീർണ്ണത കോൺഫിഗർ ചെയ്യുക"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"വാച്ച് ഫെയ്സ് ക്രമീകരണം കോൺഫിഗർ ചെയ്യുക"</string>
+    <string name="style_config" msgid="2987895585951859981">"വാച്ച് ഫെയ്സ് സ്റ്റൈലുകൾ കോൺഫിഗർ ചെയ്യുക"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"ഒന്നുമില്ല"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ഡാറ്റ"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"പശ്ചാത്തല ചിത്രം"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"സ്റ്റൈലുകൾ"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-mn/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-mn/watchface_strings.xml
new file mode 100644
index 0000000..9e98b22
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-mn/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Цагийн нүүрний хүндрэлийг тохируулах"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Цагийн нүүрний тохиргоог тохируулах"</string>
+    <string name="style_config" msgid="2987895585951859981">"Цагийн нүүрний хэв маягийг тохируулах"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Байхгүй"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Өгөгдөл"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Дэвсгэр зураг"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Хэв маяг"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-mr/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-mr/watchface_strings.xml
new file mode 100644
index 0000000..6c70c4a
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-mr/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"वॉचफेसवरील अडथळे कॉंफिगर करणे"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"वॉचफेस सेटिंग्ज कॉंफिगर करणे"</string>
+    <string name="style_config" msgid="2987895585951859981">"वॉचफेसच्या शैली कॉंफिगर करणे"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"कोणतीही नाही"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"डेटा"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"बॅकग्राउंड इमेज"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"शैली"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ms/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ms/watchface_strings.xml
new file mode 100644
index 0000000..c25ada9
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ms/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfigurasikan Kerumitan Muka Jam"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfigurasikan Tetapan Muka Jam"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfigurasikan Gaya Muka Jam"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Tiada"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Imej latar belakang"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Gaya"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-my/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-my/watchface_strings.xml
new file mode 100644
index 0000000..39b5bbd
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-my/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"နာရီဒိုင်ခွက် ဝန်ဆောင်မှုများကို စီစဉ်သတ်မှတ်ပါ"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"\'နာရီဒိုင်ခွက် ဆက်တင်များ\' ကို စီစဉ်သတ်မှတ်ပါ"</string>
+    <string name="style_config" msgid="2987895585951859981">"\'နာရီဒိုင်ခွက် ပုံစံများ\' ကို စီစဉ်သတ်မှတ်ပါ"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"မရှိ"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ဒေတာ"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"နောက်ခံပုံရိပ်"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"ပုံစံများ"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-nb/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-nb/watchface_strings.xml
new file mode 100644
index 0000000..6ef030c
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-nb/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfigurer tilleggsfunksjoner i klokkebakgrunnen"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfigurer innstillinger for klokkebakgrunnen"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfigurer stiler for klokkebakgrunnen"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Ingen"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Bakgrunnsbilde"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stiler"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ne/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ne/watchface_strings.xml
new file mode 100644
index 0000000..1df803a
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ne/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"वाचफेसमा देखिने जानकारी कन्फिगर गर्नुहोस्"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"वाचफेसका सेटिङ कन्फिगर गर्नुहोस्"</string>
+    <string name="style_config" msgid="2987895585951859981">"वाचफेसका शैलीहरू कन्फिगर गर्नुहोस्"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"कुनै पनि होइन"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"डेटा"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"ब्याकग्राउन्ड फोटो"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"शैलीहरू"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-nl/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-nl/watchface_strings.xml
new file mode 100644
index 0000000..88c6c85
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-nl/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Wijzerplaatcomplicaties instellen"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Wijzerplaatinstellingen configureren"</string>
+    <string name="style_config" msgid="2987895585951859981">"Wijzerplaatstijlen instellen"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Geen"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Gegevens"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Achtergrondafbeelding"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stijlen"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-or/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-or/watchface_strings.xml
new file mode 100644
index 0000000..cc60bd0
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-or/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"ୱାଚଫେସ୍ କମ୍ପ୍ଲିକେସନ୍ସ କନଫିଗର୍ କରନ୍ତୁ"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"ୱାଚଫେସ୍ ସେଟିଂସ୍ କନଫିଗର୍ କରନ୍ତୁ"</string>
+    <string name="style_config" msgid="2987895585951859981">"ୱାଚଫେସ୍ ଷ୍ଟାଇଲଗୁଡ଼ିକ କନଫିଗର୍ କରନ୍ତୁ"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"କିଛି ନାହିଁ"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ଡାଟା"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"ପୃଷ୍ଠପଟ ଛବି"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"ଷ୍ଟାଇଲଗୁଡ଼ିକ"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-pa/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-pa/watchface_strings.xml
new file mode 100644
index 0000000..128d0f2
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-pa/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"ਵਾਚ ਫੇਸ ਪੇਚੀਦਗੀਆਂ ਦਾ ਸੰਰੂਪਣ ਕਰੋ"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"ਵਾਚ ਫੇਸ ਸੈਟਿੰਗਾਂ ਦਾ ਸੰਰੂਪਣ ਕਰੋ"</string>
+    <string name="style_config" msgid="2987895585951859981">"ਵਾਚ ਫੇਸ ਸਟਾਈਲਾਂ ਦਾ ਸੰਰੂਪਣ ਕਰੋ"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"ਕੋਈ ਨਹੀਂ"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ਡਾਟਾ"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"ਬੈਕਗ੍ਰਾਊਂਡ ਚਿੱਤਰ"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"ਸਟਾਈਲ"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-pl/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-pl/watchface_strings.xml
new file mode 100644
index 0000000..4280b65
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-pl/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Skonfiguruj widżety na tarczę zegarka"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Skonfiguruj ustawienia tarczy zegarka"</string>
+    <string name="style_config" msgid="2987895585951859981">"Skonfiguruj style tarczy zegarka"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Brak"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Dane"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Obraz tła"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Style"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-pt-rBR/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-pt-rBR/watchface_strings.xml
new file mode 100644
index 0000000..d1cd758
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-pt-rBR/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configurar complicações do mostrador do relógio"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Definir configurações do mostrador do relógio"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configurar estilos do mostrador do relógio"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Nenhuma"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Dados"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Imagem de plano de fundo"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Estilos"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-pt-rPT/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-pt-rPT/watchface_strings.xml
new file mode 100644
index 0000000..6dbe858
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-pt-rPT/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configure complicações do mostrador"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configure definições do mostrador"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configure estilos do mostrador"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Nenhum"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Dados"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Imagem de fundo"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Estilos"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-pt/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-pt/watchface_strings.xml
new file mode 100644
index 0000000..d1cd758
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-pt/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configurar complicações do mostrador do relógio"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Definir configurações do mostrador do relógio"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configurar estilos do mostrador do relógio"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Nenhuma"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Dados"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Imagem de plano de fundo"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Estilos"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ro/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ro/watchface_strings.xml
new file mode 100644
index 0000000..c13dfe6
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ro/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Configurați funcțiile suplimentare ale ecranului principal al ceasului"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Configurați setările ecranului principal al ceasului"</string>
+    <string name="style_config" msgid="2987895585951859981">"Configurați stilurile ecranului principal al ceasului"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Fără"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Date"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Imagine de fundal"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stiluri"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ru/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ru/watchface_strings.xml
new file mode 100644
index 0000000..5663ccf
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ru/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Настройка дополнений для циферблата"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Настройка параметров циферблата"</string>
+    <string name="style_config" msgid="2987895585951859981">"Настройка стилей циферблата"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Нет"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Данные"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Фоновое изображение"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Стили"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-si/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-si/watchface_strings.xml
new file mode 100644
index 0000000..a0461fa
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-si/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"ඔරලෝසු මුහුණත් සංකූලතා වින්‍යාස කරන්න"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"ඔරලෝසු මුහුණත් සැකසීම් වින්‍යාස කරන්න"</string>
+    <string name="style_config" msgid="2987895585951859981">"ඔරලෝසු මුහුණත් විලාස වින්‍යාස කරන්න"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"කිසිවක් නැත"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"දත්ත"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"පසුබිම් රූපය"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"විලාස"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-sk/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-sk/watchface_strings.xml
new file mode 100644
index 0000000..98325e0
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-sk/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfigurácia súčiastok vzhľadu"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfigurácia nastavení vzhľadu"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfigurácia štýlov vzhľadu"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Žiadne"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Údaje"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Obrázok na pozadí"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Štýly"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-sl/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-sl/watchface_strings.xml
new file mode 100644
index 0000000..40e7cd8
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-sl/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfiguriranje obogatitev številčnice"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfiguriranje nastavitev številčnice"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfiguriranje slogov številčnice"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Brez"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Podatki"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Slika ozadja"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Slogi"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-sq/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-sq/watchface_strings.xml
new file mode 100644
index 0000000..35384cc
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-sq/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfiguro ndërlikimet e fushave të orës"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfiguro cilësimet e fushave të orës"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfiguro stilet e fushave të orës"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Asnjë"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Të dhënat"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Imazh në sfond"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stilet"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-sr/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-sr/watchface_strings.xml
new file mode 100644
index 0000000..aa3a72d
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-sr/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Конфигуришите показатеље на бројчанику"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Конфигуришите подешавања бројчаника"</string>
+    <string name="style_config" msgid="2987895585951859981">"Конфигуришите стилове бројчаника"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Нема"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Подаци"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Слика у позадини"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Стилови"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-sv/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-sv/watchface_strings.xml
new file mode 100644
index 0000000..de8c594
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-sv/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Konfigurera komplikationer för urtavlan"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Konfigurera inställningar för urtavlan"</string>
+    <string name="style_config" msgid="2987895585951859981">"Konfigurera modeller för urtavlan"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Ingen"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Bakgrundsbild"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Modeller"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-sw/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-sw/watchface_strings.xml
new file mode 100644
index 0000000..b234fa2
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-sw/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Weka Mipangilio ya Madoido ya Sura ya Saa"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Weka Mipangilio ya Sura ya Saa"</string>
+    <string name="style_config" msgid="2987895585951859981">"Weka Mipangilio ya Miundo ya Sura ya Saa"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Hamna"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Picha ya mandharinyuma"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Miundo"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ta/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ta/watchface_strings.xml
new file mode 100644
index 0000000..8edf9bd
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ta/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"வாட்ச் முகப்புக் காட்சிப்பகுதிகளை உள்ளமைத்தல்"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"வாட்ச் முகப்பு அமைப்புகளை உள்ளமைத்தல்"</string>
+    <string name="style_config" msgid="2987895585951859981">"வாட்ச் முகப்பு ஸ்டைல்களை உள்ளமைத்தல்"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"எதுவுமில்லை"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"தரவு"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"பின்புலப் படம்"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"ஸ்டைல்கள்"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-te/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-te/watchface_strings.xml
new file mode 100644
index 0000000..17033b0
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-te/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"వాచ్ లుక్ సంక్లిష్టతలను కాన్ఫిగర్ చేయండి"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"వాచ్ లుక్ సెట్టింగ్‌లను కాన్ఫిగర్ చేయండి"</string>
+    <string name="style_config" msgid="2987895585951859981">"వాచ్ లుక్ స్టయిల్‌లను కాన్ఫిగర్ చేయండి"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"ఏదీ లేదు"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"డేటా"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"బ్యాక్‌గ్రౌండ్ ఇమేజ్"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"స్టయిల్‌లు"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-th/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-th/watchface_strings.xml
new file mode 100644
index 0000000..78683f0
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-th/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"กำหนดค่าข้อมูลแทรกบนหน้าปัด"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"กำหนดค่าหน้าปัด"</string>
+    <string name="style_config" msgid="2987895585951859981">"กำหนดค่าสไตล์หน้าปัด"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"ไม่มี"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ข้อมูล"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"ภาพพื้นหลัง"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"สไตล์"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-tl/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-tl/watchface_strings.xml
new file mode 100644
index 0000000..ec317b6
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-tl/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"I-configure ang Mga Complication sa Watchface"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"I-configure ang Mga Setting ng Watchface"</string>
+    <string name="style_config" msgid="2987895585951859981">"I-configure ang Mga Istilo ng Watchface"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Wala"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Data"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Larawan sa background"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Mga Istilo"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-tr/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-tr/watchface_strings.xml
new file mode 100644
index 0000000..ba4c45d
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-tr/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Kadran Özelliklerini Yapılandırma"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Kadran Ayarlarını Yapılandırma"</string>
+    <string name="style_config" msgid="2987895585951859981">"Kadran Stillerini Yapılandırma"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Yok"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Veriler"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Arka plan resmi"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Stiller"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-uk/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-uk/watchface_strings.xml
new file mode 100644
index 0000000..b7882e5
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-uk/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Налаштувати додаткові функції циферблата"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Налаштувати параметри циферблата"</string>
+    <string name="style_config" msgid="2987895585951859981">"Налаштувати стилі циферблата"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Немає"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Дані"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Фонове зображення"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Стилі"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-ur/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-ur/watchface_strings.xml
new file mode 100644
index 0000000..56c1fd88
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-ur/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"واچ فیس کمپلیکیشنز ترتیب دیں"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"واچ فیس ترتیبات کو ترتیب کریں"</string>
+    <string name="style_config" msgid="2987895585951859981">"واچ فیس طرزوں کو ترتیب دیں"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"کوئی نہیں"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"ڈیٹا"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"پس منظر کی تصویر"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"طرزیں"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-uz/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-uz/watchface_strings.xml
new file mode 100644
index 0000000..c0036de
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-uz/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Watchface Complications parametrlarini sozlash"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Watchface sozlamalarini tahrirlash"</string>
+    <string name="style_config" msgid="2987895585951859981">"Watchface dizaynini sozlash"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Hech qanday"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Axborot"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Fon rasmi"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Uslublar"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-vi/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-vi/watchface_strings.xml
new file mode 100644
index 0000000..a29c94b
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-vi/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Định cấu hình tiện ích hiển thị nhiều nội dung trên mặt đồng hồ"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Định cấu hình tùy chọn cài đặt mặt đồng hồ"</string>
+    <string name="style_config" msgid="2987895585951859981">"Định cấu hình kiểu mặt đồng hồ"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Không"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Dữ liệu"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Hình nền"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Kiểu"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-zh-rCN/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-zh-rCN/watchface_strings.xml
new file mode 100644
index 0000000..f02f9be
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-zh-rCN/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"配置表盘主题复杂功能"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"配置表盘主题设置"</string>
+    <string name="style_config" msgid="2987895585951859981">"配置表盘主题样式"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"无"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"数据"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"背景图片"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"样式"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-zh-rHK/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-zh-rHK/watchface_strings.xml
new file mode 100644
index 0000000..ceaf022
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-zh-rHK/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"設定錶面進階功能"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"調整錶面設定"</string>
+    <string name="style_config" msgid="2987895585951859981">"設定錶面樣式"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"無"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"資料"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"背景圖片"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"樣式"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-zh-rTW/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-zh-rTW/watchface_strings.xml
new file mode 100644
index 0000000..e3627b79d
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-zh-rTW/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"設定錶面資料顯示區"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"調整錶面設定"</string>
+    <string name="style_config" msgid="2987895585951859981">"設定錶面樣式"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"無"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"資料"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"背景圖片"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"樣式"</string>
+</resources>
diff --git a/wear/wear-watchface/src/main/res/values-zu/watchface_strings.xml b/wear/wear-watchface/src/main/res/values-zu/watchface_strings.xml
new file mode 100644
index 0000000..f626cb0
--- /dev/null
+++ b/wear/wear-watchface/src/main/res/values-zu/watchface_strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="complication_config" msgid="292306201243482945">"Lungiselela Izinkinga Zobuso Bewashi"</string>
+    <string name="watchface_settings" msgid="4785773105440577595">"Lungiselela Amasethingi Wobuso Bewashi"</string>
+    <string name="style_config" msgid="2987895585951859981">"Lungiselela Izitayela Zobuso Bewashi"</string>
+    <string name="none_background_image_provider" msgid="2326408635673026310">"Lutho"</string>
+    <string name="settings_complications" msgid="7688669266180209514">"Idatha"</string>
+    <string name="settings_background_image" msgid="4866968289579187727">"Umfanekiso ongemuva"</string>
+    <string name="settings_styles" msgid="5609438460443634575">"Izitayela"</string>
+</resources>