diff --git a/.gitignore b/.gitignore
index 6136f5d86b..f551ba225b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ build/
.DS_Store
keystore.properties
*.jks
+__pycache__
diff --git a/lawnchair/res/values-af/strings.xml b/lawnchair/res/values-af/strings.xml
new file mode 100644
index 0000000000..0ee33b3ad7
--- /dev/null
+++ b/lawnchair/res/values-af/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Bladsy %1$d van %2$d
+
diff --git a/lawnchair/res/values-am/strings.xml b/lawnchair/res/values-am/strings.xml
new file mode 100644
index 0000000000..4ffa96d62f
--- /dev/null
+++ b/lawnchair/res/values-am/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s፣ %2$s
+ ገጽ %1$d ከ%2$d
+
diff --git a/lawnchair/res/values-ar-rXB/strings.xml b/lawnchair/res/values-ar-rXB/strings.xml
new file mode 100644
index 0000000000..3fcc528f98
--- /dev/null
+++ b/lawnchair/res/values-ar-rXB/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Page %1$d of %2$d
+
diff --git a/lawnchair/res/values-ar/strings.xml b/lawnchair/res/values-ar/strings.xml
new file mode 100644
index 0000000000..a2f36c07b0
--- /dev/null
+++ b/lawnchair/res/values-ar/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s، %2$s
+ الصفحة %1$d من %2$d
+
diff --git a/lawnchair/res/values-as/strings.xml b/lawnchair/res/values-as/strings.xml
new file mode 100644
index 0000000000..61d232ebf6
--- /dev/null
+++ b/lawnchair/res/values-as/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$d খন পৃষ্ঠাৰ %1$d নম্বৰখন
+
diff --git a/lawnchair/res/values-az/strings.xml b/lawnchair/res/values-az/strings.xml
new file mode 100644
index 0000000000..93ff938cda
--- /dev/null
+++ b/lawnchair/res/values-az/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Səhifə %1$d/%2$d
+
diff --git a/lawnchair/res/values-b+sr+Latn/strings.xml b/lawnchair/res/values-b+sr+Latn/strings.xml
index 99a998bb74..887e375082 100644
--- a/lawnchair/res/values-b+sr+Latn/strings.xml
+++ b/lawnchair/res/values-b+sr+Latn/strings.xml
@@ -189,4 +189,6 @@
May cause Lawnchair to freeze.
Font Customization
Some text remains unchanged.
+ %1$s, %2$s
+ %1$d. stranica od %2$d
diff --git a/lawnchair/res/values-be/strings.xml b/lawnchair/res/values-be/strings.xml
new file mode 100644
index 0000000000..e4c9f05246
--- /dev/null
+++ b/lawnchair/res/values-be/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Старонка %1$d з %2$d
+
diff --git a/lawnchair/res/values-bg/strings.xml b/lawnchair/res/values-bg/strings.xml
new file mode 100644
index 0000000000..4f39c3bf18
--- /dev/null
+++ b/lawnchair/res/values-bg/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Страница %1$d от %2$d
+
diff --git a/lawnchair/res/values-bn/strings.xml b/lawnchair/res/values-bn/strings.xml
new file mode 100644
index 0000000000..50aa491833
--- /dev/null
+++ b/lawnchair/res/values-bn/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$dটির মধ্যে %1$d নম্বর পৃষ্ঠা
+
diff --git a/lawnchair/res/values-bs/strings.xml b/lawnchair/res/values-bs/strings.xml
new file mode 100644
index 0000000000..ea95d1f890
--- /dev/null
+++ b/lawnchair/res/values-bs/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %1$d. stranica od %2$d
+
diff --git a/lawnchair/res/values-ca/strings.xml b/lawnchair/res/values-ca/strings.xml
new file mode 100644
index 0000000000..4fcebd4eaa
--- /dev/null
+++ b/lawnchair/res/values-ca/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Pàgina %1$d de %2$d
+
diff --git a/lawnchair/res/values-cs/strings.xml b/lawnchair/res/values-cs/strings.xml
new file mode 100644
index 0000000000..ee7bb52d00
--- /dev/null
+++ b/lawnchair/res/values-cs/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Strana %1$d z %2$d
+
diff --git a/lawnchair/res/values-da/strings.xml b/lawnchair/res/values-da/strings.xml
new file mode 100644
index 0000000000..9cd75470a9
--- /dev/null
+++ b/lawnchair/res/values-da/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Side %1$d af %2$d
+
diff --git a/lawnchair/res/values-de/strings.xml b/lawnchair/res/values-de/strings.xml
new file mode 100644
index 0000000000..95430a26ea
--- /dev/null
+++ b/lawnchair/res/values-de/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Seite %1$d von %2$d
+
diff --git a/lawnchair/res/values-el/strings.xml b/lawnchair/res/values-el/strings.xml
new file mode 100644
index 0000000000..7624aefe43
--- /dev/null
+++ b/lawnchair/res/values-el/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Σελίδα %1$d από %2$d
+
diff --git a/lawnchair/res/values-en-rAU/strings.xml b/lawnchair/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000000..7621eef779
--- /dev/null
+++ b/lawnchair/res/values-en-rAU/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s %2$s
+ Page %1$d of %2$d
+
diff --git a/lawnchair/res/values-en-rCA/strings.xml b/lawnchair/res/values-en-rCA/strings.xml
new file mode 100644
index 0000000000..7621eef779
--- /dev/null
+++ b/lawnchair/res/values-en-rCA/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s %2$s
+ Page %1$d of %2$d
+
diff --git a/lawnchair/res/values-en-rGB/strings.xml b/lawnchair/res/values-en-rGB/strings.xml
index 7380a169a1..937c71db12 100644
--- a/lawnchair/res/values-en-rGB/strings.xml
+++ b/lawnchair/res/values-en-rGB/strings.xml
@@ -73,4 +73,6 @@
Design & Development
Translate
Product
+ %1$s %2$s
+ Page %1$d of %2$d
diff --git a/lawnchair/res/values-en-rIN/strings.xml b/lawnchair/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000000..7621eef779
--- /dev/null
+++ b/lawnchair/res/values-en-rIN/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s %2$s
+ Page %1$d of %2$d
+
diff --git a/lawnchair/res/values-en-rXA/strings.xml b/lawnchair/res/values-en-rXA/strings.xml
new file mode 100644
index 0000000000..81921a7b7f
--- /dev/null
+++ b/lawnchair/res/values-en-rXA/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ [%1$s, %2$s one]
+ [Þåĝé %1$d öƒ %2$d one two]
+
diff --git a/lawnchair/res/values-es-rUS/strings.xml b/lawnchair/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000000..c25ff77ea1
--- /dev/null
+++ b/lawnchair/res/values-es-rUS/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Página %1$d de %2$d
+
diff --git a/lawnchair/res/values-es/strings.xml b/lawnchair/res/values-es/strings.xml
new file mode 100644
index 0000000000..c25ff77ea1
--- /dev/null
+++ b/lawnchair/res/values-es/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Página %1$d de %2$d
+
diff --git a/lawnchair/res/values-et/strings.xml b/lawnchair/res/values-et/strings.xml
new file mode 100644
index 0000000000..a0b66a9ce7
--- /dev/null
+++ b/lawnchair/res/values-et/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Leht %1$d/%2$d
+
diff --git a/lawnchair/res/values-eu/strings.xml b/lawnchair/res/values-eu/strings.xml
new file mode 100644
index 0000000000..7b0ceb5121
--- /dev/null
+++ b/lawnchair/res/values-eu/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s: %2$s
+ %2$d orritik %1$dgarrena
+
diff --git a/lawnchair/res/values-fa/strings.xml b/lawnchair/res/values-fa/strings.xml
new file mode 100644
index 0000000000..179619e842
--- /dev/null
+++ b/lawnchair/res/values-fa/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s،%2$s
+ صفحه %1$d از %2$d
+
diff --git a/lawnchair/res/values-fi/strings.xml b/lawnchair/res/values-fi/strings.xml
new file mode 100644
index 0000000000..32bdfb3f50
--- /dev/null
+++ b/lawnchair/res/values-fi/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Sivu %1$d/%2$d
+
diff --git a/lawnchair/res/values-fr-rCA/strings.xml b/lawnchair/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000000..5875922ab2
--- /dev/null
+++ b/lawnchair/res/values-fr-rCA/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Page %1$d sur %2$d
+
diff --git a/lawnchair/res/values-fr/strings.xml b/lawnchair/res/values-fr/strings.xml
new file mode 100644
index 0000000000..ae13a0e6c3
--- /dev/null
+++ b/lawnchair/res/values-fr/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Page %1$d sur %2$d
+
diff --git a/lawnchair/res/values-gl/strings.xml b/lawnchair/res/values-gl/strings.xml
new file mode 100644
index 0000000000..cdc9f5c9b3
--- /dev/null
+++ b/lawnchair/res/values-gl/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Páxina %1$d de %2$d
+
diff --git a/lawnchair/res/values-gu/strings.xml b/lawnchair/res/values-gu/strings.xml
new file mode 100644
index 0000000000..09b0de7e86
--- /dev/null
+++ b/lawnchair/res/values-gu/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$dમાંથી %1$d પેજ
+
diff --git a/lawnchair/res/values-hi/strings.xml b/lawnchair/res/values-hi/strings.xml
new file mode 100644
index 0000000000..bc85efc899
--- /dev/null
+++ b/lawnchair/res/values-hi/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$d में से %1$d पेज
+
diff --git a/lawnchair/res/values-hr/strings.xml b/lawnchair/res/values-hr/strings.xml
new file mode 100644
index 0000000000..3dd63695c3
--- /dev/null
+++ b/lawnchair/res/values-hr/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Stranica %1$d od %2$d
+
diff --git a/lawnchair/res/values-hu/strings.xml b/lawnchair/res/values-hu/strings.xml
new file mode 100644
index 0000000000..5fe6f68364
--- /dev/null
+++ b/lawnchair/res/values-hu/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %1$d. oldal, összesen: %2$d oldal
+
diff --git a/lawnchair/res/values-hy/strings.xml b/lawnchair/res/values-hy/strings.xml
new file mode 100644
index 0000000000..a85db86744
--- /dev/null
+++ b/lawnchair/res/values-hy/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Էջ %1$d/%2$d
+
diff --git a/lawnchair/res/values-in/strings.xml b/lawnchair/res/values-in/strings.xml
new file mode 100644
index 0000000000..9a93d00bb0
--- /dev/null
+++ b/lawnchair/res/values-in/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Halaman %1$d dari %2$d
+
diff --git a/lawnchair/res/values-is/strings.xml b/lawnchair/res/values-is/strings.xml
new file mode 100644
index 0000000000..c3d110aeec
--- /dev/null
+++ b/lawnchair/res/values-is/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Síða %1$d af %2$d
+
diff --git a/lawnchair/res/values-it/strings.xml b/lawnchair/res/values-it/strings.xml
new file mode 100644
index 0000000000..d5d1f5bced
--- /dev/null
+++ b/lawnchair/res/values-it/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Pagina %1$d di %2$d
+
diff --git a/lawnchair/res/values-iw/strings.xml b/lawnchair/res/values-iw/strings.xml
new file mode 100644
index 0000000000..72eb15e120
--- /dev/null
+++ b/lawnchair/res/values-iw/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ דף %1$d מתוך %2$d
+
diff --git a/lawnchair/res/values-ja/strings.xml b/lawnchair/res/values-ja/strings.xml
new file mode 100644
index 0000000000..a7f256d029
--- /dev/null
+++ b/lawnchair/res/values-ja/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s、%2$s
+ %1$d/%2$d ページ
+
diff --git a/lawnchair/res/values-ka/strings.xml b/lawnchair/res/values-ka/strings.xml
new file mode 100644
index 0000000000..51dfb3c24d
--- /dev/null
+++ b/lawnchair/res/values-ka/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ გვერდი %1$d / %2$d-დან
+
diff --git a/lawnchair/res/values-kk/strings.xml b/lawnchair/res/values-kk/strings.xml
new file mode 100644
index 0000000000..de706718cb
--- /dev/null
+++ b/lawnchair/res/values-kk/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Бет: %1$d/%2$d
+
diff --git a/lawnchair/res/values-km/strings.xml b/lawnchair/res/values-km/strings.xml
new file mode 100644
index 0000000000..b604052485
--- /dev/null
+++ b/lawnchair/res/values-km/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ ទំព័រទី %1$d នៃ %2$d
+
diff --git a/lawnchair/res/values-kn/strings.xml b/lawnchair/res/values-kn/strings.xml
new file mode 100644
index 0000000000..40bdc4d7db
--- /dev/null
+++ b/lawnchair/res/values-kn/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ ಪುಟ %2$d ರಲ್ಲಿ %1$d
+
diff --git a/lawnchair/res/values-ko/strings.xml b/lawnchair/res/values-ko/strings.xml
new file mode 100644
index 0000000000..9340841c97
--- /dev/null
+++ b/lawnchair/res/values-ko/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$d페이지 중 %1$d페이지
+
diff --git a/lawnchair/res/values-ky/strings.xml b/lawnchair/res/values-ky/strings.xml
new file mode 100644
index 0000000000..1307f97453
--- /dev/null
+++ b/lawnchair/res/values-ky/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$d беттин %1$d-бети
+
diff --git a/lawnchair/res/values-lo/strings.xml b/lawnchair/res/values-lo/strings.xml
new file mode 100644
index 0000000000..c642c06df5
--- /dev/null
+++ b/lawnchair/res/values-lo/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ ໜ້າທີ %1$d ຈາກທັງໝົດ %2$d
+
diff --git a/lawnchair/res/values-lt/strings.xml b/lawnchair/res/values-lt/strings.xml
new file mode 100644
index 0000000000..2d0f7f8ef1
--- /dev/null
+++ b/lawnchair/res/values-lt/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %1$d psl. iš %2$d
+
diff --git a/lawnchair/res/values-lv/strings.xml b/lawnchair/res/values-lv/strings.xml
new file mode 100644
index 0000000000..901472a131
--- /dev/null
+++ b/lawnchair/res/values-lv/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %1$d. lapa no %2$d
+
diff --git a/lawnchair/res/values-mk/strings.xml b/lawnchair/res/values-mk/strings.xml
new file mode 100644
index 0000000000..978a4ea4fa
--- /dev/null
+++ b/lawnchair/res/values-mk/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Страница %1$d од %2$d
+
diff --git a/lawnchair/res/values-ml/strings.xml b/lawnchair/res/values-ml/strings.xml
new file mode 100644
index 0000000000..7bfeb108c7
--- /dev/null
+++ b/lawnchair/res/values-ml/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %1$d പേജുകളിൽ %2$d-ാമത്തേത്
+
diff --git a/lawnchair/res/values-mn/strings.xml b/lawnchair/res/values-mn/strings.xml
new file mode 100644
index 0000000000..19798374e0
--- /dev/null
+++ b/lawnchair/res/values-mn/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$d-н %1$d-р хуудас
+
diff --git a/lawnchair/res/values-mr/strings.xml b/lawnchair/res/values-mr/strings.xml
new file mode 100644
index 0000000000..a5bb180fee
--- /dev/null
+++ b/lawnchair/res/values-mr/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$d पैकी %1$d पेज
+
diff --git a/lawnchair/res/values-ms/strings.xml b/lawnchair/res/values-ms/strings.xml
new file mode 100644
index 0000000000..278942674f
--- /dev/null
+++ b/lawnchair/res/values-ms/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Halaman %1$d daripada %2$d
+
diff --git a/lawnchair/res/values-my/strings.xml b/lawnchair/res/values-my/strings.xml
new file mode 100644
index 0000000000..4fcf9d7fdd
--- /dev/null
+++ b/lawnchair/res/values-my/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s၊ %2$s
+ စာမျက်နှာ %2$d အနက် %1$d
+
diff --git a/lawnchair/res/values-nb/strings.xml b/lawnchair/res/values-nb/strings.xml
new file mode 100644
index 0000000000..a59daf6ada
--- /dev/null
+++ b/lawnchair/res/values-nb/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Side %1$d av %2$d
+
diff --git a/lawnchair/res/values-ne/strings.xml b/lawnchair/res/values-ne/strings.xml
new file mode 100644
index 0000000000..1cca504d80
--- /dev/null
+++ b/lawnchair/res/values-ne/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$d मध्ये %1$d औँ पेज
+
diff --git a/lawnchair/res/values-nl/strings.xml b/lawnchair/res/values-nl/strings.xml
new file mode 100644
index 0000000000..5de5d6cbef
--- /dev/null
+++ b/lawnchair/res/values-nl/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Pagina %1$d van %2$d
+
diff --git a/lawnchair/res/values-or/strings.xml b/lawnchair/res/values-or/strings.xml
new file mode 100644
index 0000000000..4a441f3fab
--- /dev/null
+++ b/lawnchair/res/values-or/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$d ମଧ୍ୟରୁ %1$d ପୃଷ୍ଠା
+
diff --git a/lawnchair/res/values-pa/strings.xml b/lawnchair/res/values-pa/strings.xml
new file mode 100644
index 0000000000..8df18dd4e9
--- /dev/null
+++ b/lawnchair/res/values-pa/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$d ਵਿੱਚੋਂ %1$d ਪੰਨਾ
+
diff --git a/lawnchair/res/values-pl/strings.xml b/lawnchair/res/values-pl/strings.xml
new file mode 100644
index 0000000000..ffc2677245
--- /dev/null
+++ b/lawnchair/res/values-pl/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Strona %1$d z %2$d
+
diff --git a/lawnchair/res/values-pt-rBR/strings.xml b/lawnchair/res/values-pt-rBR/strings.xml
index e6dd615b8b..f05f5efc91 100644
--- a/lawnchair/res/values-pt-rBR/strings.xml
+++ b/lawnchair/res/values-pt-rBR/strings.xml
@@ -188,4 +188,6 @@
May cause Lawnchair to freeze.
Font Customization
Some text remains unchanged.
+ %1$s, %2$s
+ Página %1$d de %2$d
diff --git a/lawnchair/res/values-pt-rPT/strings.xml b/lawnchair/res/values-pt-rPT/strings.xml
index 765b9b6668..e563192bb6 100644
--- a/lawnchair/res/values-pt-rPT/strings.xml
+++ b/lawnchair/res/values-pt-rPT/strings.xml
@@ -188,4 +188,6 @@
May cause Lawnchair to freeze.
Font Customization
Some text remains unchanged.
+ %1$s, %2$s
+ Página %1$d de %2$d
diff --git a/lawnchair/res/values-pt/strings.xml b/lawnchair/res/values-pt/strings.xml
new file mode 100644
index 0000000000..c25ff77ea1
--- /dev/null
+++ b/lawnchair/res/values-pt/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Página %1$d de %2$d
+
diff --git a/lawnchair/res/values-ro/strings.xml b/lawnchair/res/values-ro/strings.xml
new file mode 100644
index 0000000000..fc255a5b91
--- /dev/null
+++ b/lawnchair/res/values-ro/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s %2$s
+ Pagina %1$d din %2$d
+
diff --git a/lawnchair/res/values-ru/strings.xml b/lawnchair/res/values-ru/strings.xml
new file mode 100644
index 0000000000..e62834969b
--- /dev/null
+++ b/lawnchair/res/values-ru/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Страница %1$d из %2$d
+
diff --git a/lawnchair/res/values-si/strings.xml b/lawnchair/res/values-si/strings.xml
new file mode 100644
index 0000000000..fd0015a00e
--- /dev/null
+++ b/lawnchair/res/values-si/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ පිටු %2$dහි %1$d
+
diff --git a/lawnchair/res/values-sk/strings.xml b/lawnchair/res/values-sk/strings.xml
new file mode 100644
index 0000000000..db3536a1a1
--- /dev/null
+++ b/lawnchair/res/values-sk/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %1$d. stránka z %2$d
+
diff --git a/lawnchair/res/values-sl/strings.xml b/lawnchair/res/values-sl/strings.xml
new file mode 100644
index 0000000000..cf6acae2b8
--- /dev/null
+++ b/lawnchair/res/values-sl/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Stran %1$d od %2$d
+
diff --git a/lawnchair/res/values-sq/strings.xml b/lawnchair/res/values-sq/strings.xml
new file mode 100644
index 0000000000..f7f167e3dd
--- /dev/null
+++ b/lawnchair/res/values-sq/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Faqja %1$d nga %2$d
+
diff --git a/lawnchair/res/values-sr/strings.xml b/lawnchair/res/values-sr/strings.xml
index 37e92bd473..7a34a7fa9b 100644
--- a/lawnchair/res/values-sr/strings.xml
+++ b/lawnchair/res/values-sr/strings.xml
@@ -189,4 +189,6 @@
May cause Lawnchair to freeze.
Font Customization
Some text remains unchanged.
+ %1$s, %2$s
+ %1$d. страница од %2$d
diff --git a/lawnchair/res/values-sv/strings.xml b/lawnchair/res/values-sv/strings.xml
new file mode 100644
index 0000000000..cc86f09c5f
--- /dev/null
+++ b/lawnchair/res/values-sv/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Sida %1$d av %2$d
+
diff --git a/lawnchair/res/values-sw/strings.xml b/lawnchair/res/values-sw/strings.xml
new file mode 100644
index 0000000000..dfcf44c432
--- /dev/null
+++ b/lawnchair/res/values-sw/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Ukurasa wa %1$d kati ya %2$d
+
diff --git a/lawnchair/res/values-ta/strings.xml b/lawnchair/res/values-ta/strings.xml
new file mode 100644
index 0000000000..2e12ed35c2
--- /dev/null
+++ b/lawnchair/res/values-ta/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ பக்கம்: %1$d/%2$d
+
diff --git a/lawnchair/res/values-te/strings.xml b/lawnchair/res/values-te/strings.xml
new file mode 100644
index 0000000000..2e731eb44e
--- /dev/null
+++ b/lawnchair/res/values-te/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ %2$dలో %1$dవ పేజీ
+
diff --git a/lawnchair/res/values-th/strings.xml b/lawnchair/res/values-th/strings.xml
new file mode 100644
index 0000000000..73f23b0b67
--- /dev/null
+++ b/lawnchair/res/values-th/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s %2$s
+ หน้า %1$d จาก %2$d
+
diff --git a/lawnchair/res/values-tl/strings.xml b/lawnchair/res/values-tl/strings.xml
new file mode 100644
index 0000000000..4d555f6a5b
--- /dev/null
+++ b/lawnchair/res/values-tl/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Page %1$d ng %2$d
+
diff --git a/lawnchair/res/values-tr/strings.xml b/lawnchair/res/values-tr/strings.xml
new file mode 100644
index 0000000000..b6d9533a7d
--- /dev/null
+++ b/lawnchair/res/values-tr/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Sayfa %1$d/%2$d
+
diff --git a/lawnchair/res/values-uk/strings.xml b/lawnchair/res/values-uk/strings.xml
new file mode 100644
index 0000000000..3e070e0638
--- /dev/null
+++ b/lawnchair/res/values-uk/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Сторінка %1$d із %2$d
+
diff --git a/lawnchair/res/values-ur/strings.xml b/lawnchair/res/values-ur/strings.xml
new file mode 100644
index 0000000000..da1cecf42f
--- /dev/null
+++ b/lawnchair/res/values-ur/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s، %2$s
+ صفحہ %1$d از %2$d
+
diff --git a/lawnchair/res/values-uz/strings.xml b/lawnchair/res/values-uz/strings.xml
new file mode 100644
index 0000000000..74f32fd17a
--- /dev/null
+++ b/lawnchair/res/values-uz/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Sahifa: %1$d / %2$d
+
diff --git a/lawnchair/res/values-vi/strings.xml b/lawnchair/res/values-vi/strings.xml
new file mode 100644
index 0000000000..030d81b956
--- /dev/null
+++ b/lawnchair/res/values-vi/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Trang %1$d/%2$d
+
diff --git a/lawnchair/res/values-zh-rCN/strings.xml b/lawnchair/res/values-zh-rCN/strings.xml
index a9e072ce00..62aaabbf27 100644
--- a/lawnchair/res/values-zh-rCN/strings.xml
+++ b/lawnchair/res/values-zh-rCN/strings.xml
@@ -187,4 +187,6 @@
可能会导致Lawnchair冻结。
字体自定义
部分文本保持不变。
+ %1$s,%2$s
+ 第 %1$d 页,共 %2$d 页
diff --git a/lawnchair/res/values-zh-rHK/strings.xml b/lawnchair/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000000..cff08d9b9e
--- /dev/null
+++ b/lawnchair/res/values-zh-rHK/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s,%2$s
+ 第 %1$d 頁,總共有 %2$d 頁
+
diff --git a/lawnchair/res/values-zh-rTW/strings.xml b/lawnchair/res/values-zh-rTW/strings.xml
index 747133b9e9..6ded03fbaf 100644
--- a/lawnchair/res/values-zh-rTW/strings.xml
+++ b/lawnchair/res/values-zh-rTW/strings.xml
@@ -187,4 +187,6 @@
可能導致 Lawnchair 畫面凍結
自訂字型
部分文字可能無法套用。
+ %1$s,%2$s
+ 第 %1$d 頁,共 %2$d 頁
diff --git a/lawnchair/res/values-zu/strings.xml b/lawnchair/res/values-zu/strings.xml
new file mode 100644
index 0000000000..a8d9cbd7ed
--- /dev/null
+++ b/lawnchair/res/values-zu/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+ %1$s, %2$s
+ Ikhasi %1$d kwangu-%2$d
+
diff --git a/tools/translations_importer/apkutils.py b/tools/translations_importer/apkutils.py
new file mode 100644
index 0000000000..9c19ea511a
--- /dev/null
+++ b/tools/translations_importer/apkutils.py
@@ -0,0 +1,59 @@
+from bs4 import BeautifulSoup
+import os
+import subprocess
+import re
+
+string_def_pattern = '^ resource 0x[0123456789abcdef]{8} string\/(.+)$'
+locale_def_pattern = '^ \\(((?:[a-z]|[A-Z]|-|\\+)*)\\)'
+
+def find_aapt2():
+ android_home = os.environ['ANDROID_HOME']
+ build_tools = f'{android_home}/build-tools'
+ latest = sorted(os.listdir(build_tools))[-1]
+ if latest is None:
+ return
+ aapt2 = f'{build_tools}/{latest}/aapt2'
+ return aapt2
+
+aapt2_path = find_aapt2()
+
+def execute_aapt2(args):
+ output = subprocess.run([aapt2_path] + args, stdout=subprocess.PIPE, text=True)
+ return output.stdout.split('\n')
+
+def extract_strings(apk_path):
+ lines = execute_aapt2(['dump', 'resources', apk_path])
+
+ all_map = {}
+
+ current_string = None
+ current_map = {}
+ for line in lines:
+ if not line.startswith(' ('):
+ if current_string is not None:
+ if len(current_map) > 0:
+ all_map[current_string] = current_map
+ current_string = None
+ current_map = {}
+ if line.startswith(' resource'):
+ matches = re.findall(string_def_pattern, line)
+ if len(matches) == 0:
+ continue
+ string_name = matches[0]
+ current_string = string_name
+ current_map = {}
+ continue
+ if current_string is not None:
+ locale = re.findall(locale_def_pattern, line)[0]
+ line = line[len(locale)+9:]
+ if not line.startswith('"'):
+ continue
+ string = line[1:-1]
+ current_map[locale] = string
+
+ if current_string is not None:
+ all_map[current_string] = current_map
+ current_string = None
+ current_map = {}
+
+ return all_map
diff --git a/tools/translations_importer/main.py b/tools/translations_importer/main.py
new file mode 100644
index 0000000000..10e038d2c5
--- /dev/null
+++ b/tools/translations_importer/main.py
@@ -0,0 +1,49 @@
+from apkutils import extract_strings
+from bs4 import BeautifulSoup, NavigableString
+from pathlib import Path
+import shutil
+import os
+import argparse
+
+my_parser = argparse.ArgumentParser(description='List the content of a folder')
+my_parser.add_argument('path', type=str, help='Path of the APK to import from')
+my_parser.add_argument('string_name', type=str, help='Name of the string to import')
+
+args = my_parser.parse_args()
+
+apk_path = args.path
+string_name = args.string_name
+strings = extract_strings(apk_path)
+
+p = Path(__file__)
+project_root = p.parent.parent.parent
+res_root = project_root / 'lawnchair' / 'res'
+
+def add_to_xml(locale, string_name, string):
+ folder_name = 'values' if locale == '' else f'values-{locale}'
+ print(f'{folder_name}: {string}')
+ file_path = res_root / folder_name / 'strings.xml'
+ if not file_path.exists():
+ os.makedirs(file_path.parent, exist_ok=True)
+ shutil.copy(p.parent / 'template.xml', file_path)
+ with open(file_path, 'r') as f:
+ data = f.read()
+ bs = BeautifulSoup(data, "xml")
+ existing = bs.find('string', {'name': string_name})
+ if existing is not None:
+ return
+ new_tag = bs.new_tag('string')
+ new_tag['name'] = string_name
+ new_tag.insert(0, NavigableString(string))
+ tag_string = str(new_tag)
+
+ lines = data.split('\n')
+ insert_at = lines.index('')
+ lines.insert(insert_at, f' {tag_string}')
+ result = '\n'.join(lines)
+ with open(file_path, 'w') as f:
+ f.write(result)
+
+locales = strings[string_name]
+for locale, string in locales.items():
+ add_to_xml(locale, string_name, string)
diff --git a/tools/translations_importer/template.xml b/tools/translations_importer/template.xml
new file mode 100644
index 0000000000..8959f16863
--- /dev/null
+++ b/tools/translations_importer/template.xml
@@ -0,0 +1,18 @@
+
+
+
+