diff --git a/app/build.gradle b/app/build.gradle
index 9aaa11c..8fc2217 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -98,6 +98,7 @@ dependencies {
implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps:4.9.3'
implementation 'com.squareup.okhttp3:okhttp-brotli:4.9.3'
implementation 'com.github.topjohnwu.libsu:io:5.0.1'
+ implementation project(":rosetta")
// Markdown
implementation "io.noties.markwon:core:4.6.2"
diff --git a/rosetta/.gitignore b/rosetta/.gitignore
new file mode 100644
index 0000000..38cc34a
--- /dev/null
+++ b/rosetta/.gitignore
@@ -0,0 +1,33 @@
+
+# files for the dex VM
+*.dex
+
+# Java class files
+*.class
+
+# generated files
+bin/
+gen/
+
+# Local configuration file (sdk path, etc)
+local.properties
+
+# Windows thumbnail db
+Thumbs.db
+
+# OSX files
+.DS_Store
+
+# Eclipse project files
+.classpath
+.project
+
+# Android Studio
+*.iml
+.idea
+#.idea/workspace.xml - remove # and delete .idea if it better suit your needs.
+.gradle
+build/
+
+#NDK
+obj/
diff --git a/rosetta/build.gradle b/rosetta/build.gradle
new file mode 100644
index 0000000..2b6362d
--- /dev/null
+++ b/rosetta/build.gradle
@@ -0,0 +1,85 @@
+apply plugin: 'com.android.library'
+
+ext {
+ // Legal uses
+ groupIdBase = "com.ahmedjazzar.rosetta"
+
+ POM_INCEPTION_YEAR = "2016"
+ POM_PACKAGING = "aar"
+
+ POM_URL = "https://github.com/iamjazzar/rosetta"
+ POM_SCM_URL = "https://github.com/iamjazzar/rosetta"
+ POM_SCM_CONNECTION = "scm:git@github.com:iamjazzar/rosetta.git"
+ POM_SCM_DEV_CONNECTION = "scm:git@github.com:iamjazzar/rosetta.git"
+
+ POM_LICENCE_NAME = "MIT License"
+ POM_LICENCE_URL = "https://github.com/iamjazzar/rosetta/blob/master/LICENSE"
+ POM_LICENCE_DIST = "repo"
+
+ POM_DEVELOPER_ID = "ahmedaljazzar"
+ POM_DEVELOPER_NAME = "Ahmed Jazzar"
+ POM_DEVELOPER_URL = "https://github.com/iamjazzar"
+
+ bintrayRepo = 'maven'
+ bintrayName = 'Rosetta'
+
+ publishedGroupId = 'com.ahmedjazzar.rosetta'
+ libraryName = 'Rosetta'
+ artifact = 'rosetta'
+
+ libraryDescription = 'Android library that lets your app supporting multiple languages ' +
+ 'without any concern from you as a developer.'
+
+ siteUrl = 'https://github.com/ahmedaljazzar/rosetta'
+ gitUrl = 'https://github.com/ahmedaljazzar/rosetta.git'
+
+ libraryVersion = '1.0.1'
+
+ developerId = 'ahmedaljazzar'
+ developerName = 'Ahmed Jazzar'
+ developerEmail = 'me@ahmedjazzar.com'
+
+ licenseName = 'MIT'
+ licenseUrl = 'https://opensource.org/licenses/MIT'
+ allLicenses = ["MIT"]
+}
+
+buildscript {
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:7.2.0'
+ classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
+ }
+}
+
+android {
+ compileSdkVersion 32
+ buildToolsVersion "23.0.3"
+
+ defaultConfig {
+ minSdkVersion 21
+ targetSdkVersion 32
+ versionCode 3
+ versionName "1.0.1"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ testImplementation 'junit:junit:4.13.2'
+ testImplementation 'org.mockito:mockito-core:1.10.19'
+ implementation 'com.google.android.material:material:1.6.0'
+ implementation 'androidx.appcompat:appcompat:1.4.1'
+}
diff --git a/rosetta/build/generated/source/buildConfig/debug/com/ahmedjazzar/rosetta/BuildConfig.java b/rosetta/build/generated/source/buildConfig/debug/com/ahmedjazzar/rosetta/BuildConfig.java
new file mode 100644
index 0000000..cbf889e
--- /dev/null
+++ b/rosetta/build/generated/source/buildConfig/debug/com/ahmedjazzar/rosetta/BuildConfig.java
@@ -0,0 +1,10 @@
+/**
+ * Automatically generated file. DO NOT MODIFY
+ */
+package com.ahmedjazzar.rosetta;
+
+public final class BuildConfig {
+ public static final boolean DEBUG = Boolean.parseBoolean("true");
+ public static final String LIBRARY_PACKAGE_NAME = "com.ahmedjazzar.rosetta";
+ public static final String BUILD_TYPE = "debug";
+}
diff --git a/rosetta/proguard-rules.pro b/rosetta/proguard-rules.pro
new file mode 100644
index 0000000..47b5a13
--- /dev/null
+++ b/rosetta/proguard-rules.pro
@@ -0,0 +1,17 @@
+# TODO: Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /Users/ahmedjazzar/Library/Android/sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/rosetta/src/main/AndroidManifest.xml b/rosetta/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..f1b2707
--- /dev/null
+++ b/rosetta/src/main/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/app/src/main/java/com/ahmedjazzar/rosetta/LanguageSwitcher.java b/rosetta/src/main/java/com/ahmedjazzar/rosetta/LanguageSwitcher.java
similarity index 100%
rename from app/src/main/java/com/ahmedjazzar/rosetta/LanguageSwitcher.java
rename to rosetta/src/main/java/com/ahmedjazzar/rosetta/LanguageSwitcher.java
diff --git a/app/src/main/java/com/ahmedjazzar/rosetta/LanguagesListDialogFragment.java b/rosetta/src/main/java/com/ahmedjazzar/rosetta/LanguagesListDialogFragment.java
similarity index 99%
rename from app/src/main/java/com/ahmedjazzar/rosetta/LanguagesListDialogFragment.java
rename to rosetta/src/main/java/com/ahmedjazzar/rosetta/LanguagesListDialogFragment.java
index fdfe3a4..97991c3 100644
--- a/app/src/main/java/com/ahmedjazzar/rosetta/LanguagesListDialogFragment.java
+++ b/rosetta/src/main/java/com/ahmedjazzar/rosetta/LanguagesListDialogFragment.java
@@ -11,12 +11,10 @@ import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentActivity;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import java.util.ArrayList;
import java.util.Locale;
-import java.util.Objects;
-
-import com.fox2code.mmm.R;
-import com.google.android.material.dialog.MaterialAlertDialogBuilder;
/**
* This fragment is responsible for displaying the supported locales and performing any necessary
diff --git a/app/src/main/java/com/ahmedjazzar/rosetta/LocalesDetector.java b/rosetta/src/main/java/com/ahmedjazzar/rosetta/LocalesDetector.java
similarity index 100%
rename from app/src/main/java/com/ahmedjazzar/rosetta/LocalesDetector.java
rename to rosetta/src/main/java/com/ahmedjazzar/rosetta/LocalesDetector.java
diff --git a/app/src/main/java/com/ahmedjazzar/rosetta/LocalesPreferenceManager.java b/rosetta/src/main/java/com/ahmedjazzar/rosetta/LocalesPreferenceManager.java
similarity index 100%
rename from app/src/main/java/com/ahmedjazzar/rosetta/LocalesPreferenceManager.java
rename to rosetta/src/main/java/com/ahmedjazzar/rosetta/LocalesPreferenceManager.java
diff --git a/app/src/main/java/com/ahmedjazzar/rosetta/LocalesUtils.java b/rosetta/src/main/java/com/ahmedjazzar/rosetta/LocalesUtils.java
similarity index 100%
rename from app/src/main/java/com/ahmedjazzar/rosetta/LocalesUtils.java
rename to rosetta/src/main/java/com/ahmedjazzar/rosetta/LocalesUtils.java
diff --git a/app/src/main/java/com/ahmedjazzar/rosetta/Logger.java b/rosetta/src/main/java/com/ahmedjazzar/rosetta/Logger.java
similarity index 100%
rename from app/src/main/java/com/ahmedjazzar/rosetta/Logger.java
rename to rosetta/src/main/java/com/ahmedjazzar/rosetta/Logger.java
diff --git a/rosetta/src/main/res/values/strings.xml b/rosetta/src/main/res/values/strings.xml
new file mode 100644
index 0000000..e13140f
--- /dev/null
+++ b/rosetta/src/main/res/values/strings.xml
@@ -0,0 +1,6 @@
+
+
+ Language
+ Ok
+ Cancel
+
diff --git a/settings.gradle b/settings.gradle
index 5c996dc..4fd643d 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -10,3 +10,4 @@ dependencyResolutionManagement {
}
rootProject.name = "MagiskModuleManager"
include ':app'
+include ':rosetta'