diff --git a/.azure/pipelines/localization.yml b/.azure/pipelines/localization.yml
new file mode 100644
index 0000000000000000000000000000000000000000..81fdb4d99aabf4c115de9f6dae769cef0181b626
--- /dev/null
+++ b/.azure/pipelines/localization.yml
@@ -0,0 +1,29 @@
+#
+# See https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema for details on this file.
+#
+
+schedules:
+# Cron timezone is UTC.
+- cron: "0 18 * * *"
+  displayName: Run tests daily at 6 PM UTC (11 AM PT)
+  branches:
+    include:
+    - main
+  always: true
+
+# Do not run in PR builds nor support other triggers.
+pr: none
+trigger: none
+
+variables:
+- name: _TeamName
+  value: AspNetCore
+
+jobs:
+# When doing this for real, use eq(variables['Build.SourceBranch'], 'refs/heads/main') instead of PR check.
+- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+  - template: /eng/common/templates/job/onelocbuild.yml
+    parameters:
+      LclPackageId: 'LCL-JUNO-PROD-ASPNETCORE'
+      LclSource: lclFilesFromPackage
+      MirrorRepo: aspnetcore