diff --git a/CHANGELOG.md b/CHANGELOG.md
index ddfacfbe0..8718d1127 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file.
 
 ## Unreleased
 - Remove deprecated YouTube playlist API
+- Locale-aware sorting for folders and feeds
 
 ## 15.1.0-rc1
 
diff --git a/js/controller/NavigationController.js b/js/controller/NavigationController.js
index 7467acffa..1b183cbdf 100644
--- a/js/controller/NavigationController.js
+++ b/js/controller/NavigationController.js
@@ -406,4 +406,11 @@ app.controller('NavigationController', function ($route, FEED_TYPE, FeedResource
         setSelectedFolderForRoute();
     });
 
+    $rootScope.localeComparator = function(v1, v2) {
+        if (v1.type === 'string' && v2.type === 'string') {
+            return v1.value.localeCompare(v2.value);
+        }
+
+        return (v1.value === v2.value) ? 0 : ((v1.value < v2.value) ? -1 : 1);
+    };
 });
diff --git a/templates/part.navigation.feed.php b/templates/part.navigation.feed.php
index 3c694d3d9..7070ba2ce 100644
--- a/templates/part.navigation.feed.php
+++ b/templates/part.navigation.feed.php
@@ -7,7 +7,7 @@
         'icon-loading-small': !(feed.id || feed.error)
     }"
     ng-repeat="feed in Navigation.getFeedsOfFolder(<?php p($_['folderId']); ?>)
-        | orderBy:['-pinned', 'title.toLowerCase()'] track by feed.url"
+        | orderBy:['-pinned', 'title.toLowerCase()']:false:localeComparator track by feed.url"
     ng-show="Navigation.isFeedUnread(feed.id)
             || Navigation.isShowAll()
             || Navigation.isFeedActive(feed.id)
diff --git a/templates/part.navigation.folder.php b/templates/part.navigation.folder.php
index 67ac81e84..f58fea37c 100644
--- a/templates/part.navigation.folder.php
+++ b/templates/part.navigation.folder.php
@@ -5,7 +5,7 @@
         deleted: folder.deleted,
         editing: folder.editing
     }"
-    ng-repeat="folder in Navigation.getFolders() | orderBy:'name.toLowerCase()'"
+    ng-repeat="folder in Navigation.getFolders() | orderBy:'name.toLowerCase()':false:localeComparator"
     ng-show="Navigation.isFolderUnread(folder.id)
             || Navigation.isShowAll()
             || Navigation.isFolderActive(folder.id)