diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 1e6a872..66796e7 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -358,12 +358,18 @@ python package_do_split_locales() {
 
 	localedir = os.path.join(dvar + datadir, 'locale')
 
-	if not os.path.isdir(localedir):
+	locales = set()
+	if os.path.isdir(localedir):
+		locales |= os.listdir(localedir)
+
+	extralocales = d.getVar("PACKAGELOCALES", True)
+	if extralocales:
+		locales |= extralocales
+
+	if not locales:
 		bb.debug(1, "No locale files in this package")
 		return
 
-	locales = os.listdir(localedir)
-
 	# This is *really* broken
 	mainpkg = packages[0]
 	# At least try and patch it up I guess...
@@ -378,7 +384,11 @@ python package_do_split_locales() {
 		ln = legitimize_package_name(l)
 		pkg = pn + '-locale-' + ln
 		packages.append(pkg)
-		bb.data.setVar('FILES_' + pkg, os.path.join(datadir, 'locale', l), d)
+		files = os.path.join(datadir, 'locale', l)
+		extrafiles = d.getVar('FILES_' + pkg, True)
+		if extrafiles:
+			files = extrafiles + " " + files
+		bb.data.setVar('FILES_' + pkg, files, d)
 		bb.data.setVar('RDEPENDS_' + pkg, '%s virtual-locale-%s' % (mainpkg, ln), d)
 		bb.data.setVar('RPROVIDES_' + pkg, '%s-locale %s-translation' % (pn, ln), d)
 		bb.data.setVar('SUMMARY_' + pkg, '%s - %s translations' % (summary, l), d)
