浏览代码

Use current locale when sorting library "alphabetically" (closes #5281)

This _should_ handle things like Chinese that aren't actually alphabetical.
arkon 3 年之前
父节点
当前提交
568c4d8c8e

+ 9 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt

@@ -29,8 +29,10 @@ import rx.android.schedulers.AndroidSchedulers
 import rx.schedulers.Schedulers
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
+import java.text.Collator
 import java.util.Collections
 import java.util.Comparator
+import java.util.Locale
 
 /**
  * Class containing library information.
@@ -256,11 +258,17 @@ class LibraryPresenter(
             (category.id ?: 0) to SortDirectionSetting.get(preferences, category)
         }
 
+        val locale = Locale.getDefault()
+        val collator = Collator.getInstance(locale).apply {
+            strength = Collator.PRIMARY
+        }
         val sortFn: (LibraryItem, LibraryItem) -> Int = { i1, i2 ->
             val sortingMode = sortingModes[i1.manga.category]!!
             val sortAscending = sortAscending[i1.manga.category]!! == SortDirectionSetting.ASCENDING
             when (sortingMode) {
-                SortModeSetting.ALPHABETICAL -> i1.manga.title.compareTo(i2.manga.title, true)
+                SortModeSetting.ALPHABETICAL -> {
+                    collator.compare(i1.manga.title.lowercase(locale), i2.manga.title.lowercase(locale))
+                }
                 SortModeSetting.LAST_READ -> {
                     // Get index of manga, set equal to list if size unknown.
                     val manga1LastRead = lastReadManga[i1.manga.id!!] ?: lastReadManga.size

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/util/system/LocaleHelper.kt

@@ -125,7 +125,7 @@ object LocaleHelper {
         val resources = app.resources
         resources.updateConfiguration(newConfig, resources.displayMetrics)
 
-        Locale.setDefault(currentLocale)
+        Locale.setDefault(currentLocale!!)
     }
 
     /**