diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1d01351
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/libpwquality-1.4.4.tar.bz2
diff --git a/.libpwquality.metadata b/.libpwquality.metadata
new file mode 100644
index 0000000..79b3e4d
--- /dev/null
+++ b/.libpwquality.metadata
@@ -0,0 +1 @@
+94e3f2eb67ccff1823e727d6770c3f39acbd954d SOURCES/libpwquality-1.4.4.tar.bz2
diff --git a/SOURCES/libpwquality-1.4.4-rhel9-i18n.patch b/SOURCES/libpwquality-1.4.4-rhel9-i18n.patch
new file mode 100644
index 0000000..64506b2
--- /dev/null
+++ b/SOURCES/libpwquality-1.4.4-rhel9-i18n.patch
@@ -0,0 +1,583 @@
+diff -up libpwquality-1.4.4/po/de.po.rhel9-i18n libpwquality-1.4.4/po/de.po
+--- libpwquality-1.4.4/po/de.po.rhel9-i18n	2020-10-13 08:32:16.000000000 +0200
++++ libpwquality-1.4.4/po/de.po	2021-08-04 16:36:06.991294123 +0200
+@@ -3,23 +3,25 @@
+ # This file is distributed under the same license as the PACKAGE package.
+ #
+ # Translators:
+-#   <hpeters@redhat.com>, 2012.
++# <hpeters@redhat.com>, 2012.
+ # Roman Spirgi <bigant@fedoraproject.org>, 2012.
+ # Tomáš Mráz <tmraz@fedoraproject.org>, 2017. #zanata
++# Christian Horn <chorn@fluxcoil.net>, 2021.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n"
+ "POT-Creation-Date: 2020-10-13 08:32+0200\n"
+-"PO-Revision-Date: 2017-05-26 08:59+0000\n"
+-"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
+-"Language-Team: LANGUAGE <LL@li.org>\n"
++"PO-Revision-Date: 2021-05-21 22:56+0000\n"
++"Last-Translator: Christian Horn <chorn@fluxcoil.net>\n"
++"Language-Team: German <https://translate.fedoraproject.org/projects/"
++"libpwquality/app/de/>\n"
+ "Language: de\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+-"X-Generator: Zanata 4.6.2\n"
++"Plural-Forms: nplurals=2; plural=n != 1;\n"
++"X-Generator: Weblate 4.6.2\n"
+ 
+ #: src/pam_pwquality.c:236
+ #, c-format
+@@ -211,7 +213,7 @@ msgstr ""
+ 
+ #: src/error.c:114 src/error.c:117
+ msgid "The password fails the dictionary check"
+-msgstr "Passwort scheitert beim Wörterbuchtest"
++msgstr "Passwort besteht den Wörterbuchtest nicht."
+ 
+ #: src/error.c:120 src/error.c:124
+ msgid "Unknown setting"
+diff -up libpwquality-1.4.4/po/fr.po.rhel9-i18n libpwquality-1.4.4/po/fr.po
+--- libpwquality-1.4.4/po/fr.po.rhel9-i18n	2020-10-13 08:32:16.000000000 +0200
++++ libpwquality-1.4.4/po/fr.po	2021-08-04 16:36:06.992294131 +0200
+@@ -16,16 +16,16 @@ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n"
+ "POT-Creation-Date: 2020-10-13 08:32+0200\n"
+-"PO-Revision-Date: 2020-02-08 07:16+0000\n"
++"PO-Revision-Date: 2020-10-17 07:15+0000\n"
+ "Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
+-"Language-Team: French <https://translate.stg.fedoraproject.org/projects/"
++"Language-Team: French <https://translate.fedoraproject.org/projects/"
+ "libpwquality/app/fr/>\n"
+ "Language: fr\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=2; plural=n > 1;\n"
+-"X-Generator: Weblate 3.10.3\n"
++"X-Generator: Weblate 4.3\n"
+ 
+ #: src/pam_pwquality.c:236
+ #, c-format
+@@ -73,6 +73,8 @@ msgstr "Usage : %s <entropy-bits>\n"
+ msgid ""
+ "Warning: Value %ld is outside of the allowed entropy range, adjusting it.\n"
+ msgstr ""
++"Avertissement : La valeur %ld est en dehors de la plage d’entropie "
++"autorisée, il faut l’ajuster.\n"
+ 
+ #: src/error.c:31
+ msgid "Memory allocation error when setting"
+diff -up libpwquality-1.4.4/po/ja.po.rhel9-i18n libpwquality-1.4.4/po/ja.po
+--- libpwquality-1.4.4/po/ja.po.rhel9-i18n	2020-10-13 08:32:16.000000000 +0200
++++ libpwquality-1.4.4/po/ja.po	2021-08-04 16:36:06.992294131 +0200
+@@ -9,13 +9,14 @@
+ # Tomoyuki KATO <tomo@dream.daynight.jp>, 2012.
+ # Tomáš Mráz <tmraz@fedoraproject.org>, 2017. #zanata
+ # yoshifumi kinoshita <yoshifumi1975@gmail.com>, 2020.
++# Ludek Janda <ljanda@redhat.com>, 2021.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n"
+ "POT-Creation-Date: 2020-10-13 08:32+0200\n"
+-"PO-Revision-Date: 2020-07-05 10:53+0000\n"
+-"Last-Translator: yoshifumi kinoshita <yoshifumi1975@gmail.com>\n"
++"PO-Revision-Date: 2021-05-26 14:02+0000\n"
++"Last-Translator: Ludek Janda <ljanda@redhat.com>\n"
+ "Language-Team: Japanese <https://translate.fedoraproject.org/projects/"
+ "libpwquality/app/ja/>\n"
+ "Language: ja\n"
+@@ -23,23 +24,23 @@ msgstr ""
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=1; plural=0;\n"
+-"X-Generator: Weblate 4.1.1\n"
++"X-Generator: Weblate 4.6.2\n"
+ 
+ #: src/pam_pwquality.c:236
+ #, c-format
+ msgid "BAD PASSWORD: %s"
+-msgstr "よくないパスワード: %s"
++msgstr "正しくないパスワード: %s"
+ 
+ #: src/pwscore.c:22
+ #, c-format
+ msgid "Usage: %s [user]\n"
+-msgstr "使い方: %s [user]\n"
++msgstr "例: %s [user]\n"
+ 
+ #: src/pwscore.c:23
+ #, c-format
+ msgid ""
+ "       The command reads the password to be scored from the standard input.\n"
+-msgstr "       このコマンドは採点するパスワードを標準入力から読み込みます。\n"
++msgstr "       このコマンドは、評価するパスワードを標準入力から読み込みます。\n"
+ 
+ #: src/pwscore.c:53 src/pwscore.c:61 src/pwscore.c:67
+ #, c-format
+@@ -48,7 +49,7 @@ msgstr "エラー: %s\n"
+ 
+ #: src/pwscore.c:53
+ msgid "Could not obtain the password to be scored"
+-msgstr "採点するパスワードを取得できませんでした。"
++msgstr "評価するパスワードを取得できませんでした"
+ 
+ #: src/pwscore.c:75
+ #, c-format
+@@ -56,23 +57,23 @@ msgid ""
+ "Password quality check failed:\n"
+ " %s\n"
+ msgstr ""
+-"パスワードの品質チェックに失敗しました。\n"
++"パスワードの評価チェックに失敗しました:\n"
+ " %s\n"
+ 
+ #: src/pwmake.c:23
+ #, c-format
+ msgid "Usage: %s <entropy-bits>\n"
+-msgstr "使い方: %s <エントロピーのビット数>\n"
++msgstr "例: %s <entropy-bits>\n"
+ 
+ #: src/pwmake.c:58
+ #, c-format
+ msgid ""
+ "Warning: Value %ld is outside of the allowed entropy range, adjusting it.\n"
+-msgstr ""
++msgstr "警告: 値 %ld は許可されるエントロピー範囲を超えていまで調整します。\n"
+ 
+ #: src/error.c:31
+ msgid "Memory allocation error when setting"
+-msgstr "設定中にメモリー割り当てエラーが発生しました。"
++msgstr "設定中にメモリー割り当てエラーが発生しました"
+ 
+ #: src/error.c:35
+ msgid "Memory allocation error"
+@@ -80,139 +81,135 @@ msgstr "メモリー割り当てエラ�
+ 
+ #: src/error.c:37
+ msgid "The password is the same as the old one"
+-msgstr "このパスワードは過去に設定されたものと同じです。"
++msgstr "このパスワードは過去に設定されたものと同じです"
+ 
+ #: src/error.c:39
+ msgid "The password is a palindrome"
+-msgstr "このパスワードは回文です。"
++msgstr "このパスワードは回文です"
+ 
+ #: src/error.c:41
+ msgid "The password differs with case changes only"
+-msgstr "このパスワードは大文字と小文字を変更しただけです。"
++msgstr "このパスワードは大文字と小文字を変更しただけです"
+ 
+ #: src/error.c:43
+ msgid "The password is too similar to the old one"
+-msgstr "このパスワードは古いパスワードと似すぎています。"
++msgstr "このパスワードは古いパスワードと類似しています"
+ 
+ #: src/error.c:45
+ msgid "The password contains the user name in some form"
+-msgstr "このパスワードには一部に何らかの形でユーザー名が含まれています。"
++msgstr "このパスワードには、一部に何らかの形でユーザー名が含まれています"
+ 
+ #: src/error.c:47
+ msgid "The password contains words from the real name of the user in some form"
+-msgstr ""
+-"このパスワードには何らかの形でユーザーの本名から基づく単語が含まれています。"
++msgstr "このパスワードには、何らかの形でユーザーの本名に基づく単語が含まれています"
+ 
+ #: src/error.c:49
+ msgid "The password contains forbidden words in some form"
+-msgstr "このパスワードには何らかの形で禁止された単語が含まれています。"
++msgstr "このパスワードには、何らかの形で禁止されている単語が含まれています"
+ 
+ #: src/error.c:52
+ #, c-format
+ msgid "The password contains less than %ld digits"
+-msgstr "このパスワードには %ld 個未満の数字が含まれています。"
++msgstr "このパスワードには %ld 個未満の数字が含まれています"
+ 
+ #: src/error.c:55
+ msgid "The password contains too few digits"
+-msgstr "このパスワードは数字の個数が足りません。"
++msgstr "このパスワードには、数字の個数が足りません"
+ 
+ #: src/error.c:58
+ #, c-format
+ msgid "The password contains less than %ld uppercase letters"
+-msgstr ""
+-"このパスワードには %ld 個未満の大文字のアルファベットが含まれています。"
++msgstr "このパスワードには %ld 個未満の大文字のアルファベットが含まれています"
+ 
+ #: src/error.c:61
+ msgid "The password contains too few uppercase letters"
+-msgstr "このパスワードは大文字のアルファベットの個数が足りません。"
++msgstr "このパスワードは、大文字のアルファベットの個数が足りません"
+ 
+ #: src/error.c:64
+ #, c-format
+ msgid "The password contains less than %ld lowercase letters"
+-msgstr ""
+-"このパスワードには %ld 個未満の小文字のアルファベットが含まれています。"
++msgstr "このパスワードに含まれる小文字のアルファベットは、%ld 個未満です"
+ 
+ #: src/error.c:67
+ msgid "The password contains too few lowercase letters"
+-msgstr "このパスワードは小文字のアルファベットの個数が足りません。"
++msgstr "このパスワードの小文字のアルファベット数が足りません"
+ 
+ #: src/error.c:70
+ #, c-format
+ msgid "The password contains less than %ld non-alphanumeric characters"
+-msgstr "このパスワードには %ld 個未満の記号が含まれています。"
++msgstr "このパスワードのに含まれるアルファベット以外の文字数は %ld 個未満です"
+ 
+ #: src/error.c:73
+ msgid "The password contains too few non-alphanumeric characters"
+-msgstr "このパスワードは記号の個数が足りません。"
++msgstr "このパスワードは、アルファベット以外の文字数が足りません"
+ 
+ #: src/error.c:76
+ #, c-format
+ msgid "The password is shorter than %ld characters"
+-msgstr "このパスワードは %ld 文字未満の文字列です。"
++msgstr "このパスワードは %ld 文字未満の文字列です"
+ 
+ #: src/error.c:79
+ msgid "The password is too short"
+-msgstr "このパスワードは短かすぎます。"
++msgstr "このパスワードは短かすぎます"
+ 
+ #: src/error.c:81
+ msgid "The password is just rotated old one"
+-msgstr "このパスワードは単に古いものを回転させただけです。"
++msgstr "このパスワードは、単に古いものを再利用しています"
+ 
+ #: src/error.c:84
+ #, c-format
+ msgid "The password contains less than %ld character classes"
+-msgstr "このパスワードは %ld 種類未満の文字の種類が含まれています。"
++msgstr "このパスワードの文字クラスは、%ld 種類未満です"
+ 
+ #: src/error.c:87
+ msgid "The password does not contain enough character classes"
+-msgstr "このパスワードに含まれる文字の種類数が足りません。"
++msgstr "このパスワードに含まれる文字クラス数が足りません"
+ 
+ #: src/error.c:90
+ #, c-format
+ msgid "The password contains more than %ld same characters consecutively"
+-msgstr "このパスワードは %ld 個を越える連続する同じ文字が含まれています。"
++msgstr "このパスワードはには、%ld 個を越える連続する同じ文字が含まれています"
+ 
+ #: src/error.c:93
+ msgid "The password contains too many same characters consecutively"
+-msgstr "このパスワードには連続して同じ文字が含まれています。"
++msgstr "このパスワードの連続した同じ文字の数が多すぎます"
+ 
+ #: src/error.c:96
+ #, c-format
+ msgid ""
+ "The password contains more than %ld characters of the same class "
+ "consecutively"
+-msgstr ""
+-"このパスワードは %ld 個を越える連続する同じ種類の文字が含まれています。"
++msgstr "このパスワードには %ld 個を越える連続する同じ文字クラスの文字が含まれています"
+ 
+ #: src/error.c:99
+ msgid ""
+ "The password contains too many characters of the same class consecutively"
+-msgstr "このパスワードには連続して同じ種類の文字が含まれています。"
++msgstr "このパスワードは、同じ文字クラス文字の連続が多すぎます"
+ 
+ #: src/error.c:102
+ #, c-format
+ msgid "The password contains monotonic sequence longer than %ld characters"
+-msgstr "このパスワードには %ld 文字より長い単調な文字列が含まれています。"
++msgstr "このパスワードには %ld 文字より長い単調な文字列が含まれています"
+ 
+ #: src/error.c:105
+ msgid "The password contains too long of a monotonic character sequence"
+-msgstr "このパスワードには長すぎる単調な文字列が含まれています。"
++msgstr "このパスワードには、長すぎる単調な文字列が含まれています"
+ 
+ #: src/error.c:107
+ msgid "No password supplied"
+-msgstr "パスワードが与えられていません。"
++msgstr "パスワードが与えられていません"
+ 
+ #: src/error.c:109
+ msgid "Cannot obtain random numbers from the RNG device"
+-msgstr "RNG(乱数発生)デバイスから乱数を取得することができません。"
++msgstr "RNG (乱数発生) デバイスから乱数を取得することができません"
+ 
+ #: src/error.c:111
+ msgid "Password generation failed - required entropy too low for settings"
+-msgstr "パスワードの生成に失敗 - 設定に必要なエントロピーが小さすぎます。"
++msgstr "パスワードの生成に失敗: 設定に必要なエントロピーが小さすぎます"
+ 
+ #: src/error.c:114 src/error.c:117
+ msgid "The password fails the dictionary check"
+-msgstr "このパスワードは辞書チェックに失敗しました。"
++msgstr "このパスワードは辞書チェックに失敗しました"
+ 
+ #: src/error.c:120 src/error.c:124
+ msgid "Unknown setting"
+@@ -220,41 +217,41 @@ msgstr "未知の設定"
+ 
+ #: src/error.c:127
+ msgid "Bad integer value of setting"
+-msgstr "設定の良くない整数型の値です。"
++msgstr "設定の正しくない整数型の値です"
+ 
+ #: src/error.c:131
+ msgid "Bad integer value"
+-msgstr "良くない整数型の値です。"
++msgstr "正しくない整数型の値です"
+ 
+ #: src/error.c:134
+ #, c-format
+ msgid "Setting %s is not of integer type"
+-msgstr "設定 %s は整数型ではありません。"
++msgstr "設定 %s は整数型ではありません"
+ 
+ #: src/error.c:138
+ msgid "Setting is not of integer type"
+-msgstr "設定は整数型ではありません。"
++msgstr "設定は整数型ではありません"
+ 
+ #: src/error.c:141
+ #, c-format
+ msgid "Setting %s is not of string type"
+-msgstr "設定 %s は文字列型ではありません。"
++msgstr "設定 %s は文字列型ではありません"
+ 
+ #: src/error.c:145
+ msgid "Setting is not of string type"
+-msgstr "設定は文字列型ではありません。"
++msgstr "設定は文字列型ではありません"
+ 
+ #: src/error.c:147
+ msgid "Opening the configuration file failed"
+-msgstr "設定ファイルを開けません。"
++msgstr "設定ファイルを開けませんでした"
+ 
+ #: src/error.c:149
+ msgid "The configuration file is malformed"
+-msgstr "設定ファイルの形式が正しくありません。"
++msgstr "設定ファイルの形式が正しくありません"
+ 
+ #: src/error.c:151
+ msgid "Fatal failure"
+-msgstr "致命的な障害が発生しました。"
++msgstr "致命的な障害が発生しました"
+ 
+ #: src/error.c:153
+ msgid "Unknown error"
+diff -up libpwquality-1.4.4/po/ko.po.rhel9-i18n libpwquality-1.4.4/po/ko.po
+--- libpwquality-1.4.4/po/ko.po.rhel9-i18n	2020-10-13 08:32:16.000000000 +0200
++++ libpwquality-1.4.4/po/ko.po	2021-08-04 16:36:06.992294131 +0200
+@@ -5,21 +5,23 @@
+ # Translators:
+ # eukim <eukim@redhat.com>, 2007,2009
+ # Tomáš Mráz <tmraz@fedoraproject.org>, 2017. #zanata
++# simmon <simmon@nplob.com>, 2021.
++# Seong-ho Cho <darkcircle.0426@gmail.com>, 2021.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PWQuality library\n"
+ "Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n"
+ "POT-Creation-Date: 2020-10-13 08:32+0200\n"
+-"PO-Revision-Date: 2017-05-26 09:01+0000\n"
+-"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
+-"Language-Team: Korean (http://www.transifex.com/projects/p/libpwquality/"
+-"language/ko/)\n"
++"PO-Revision-Date: 2021-07-22 07:04+0000\n"
++"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
++"Language-Team: Korean <https://translate.fedoraproject.org/projects/"
++"libpwquality/app/ko/>\n"
+ "Language: ko\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=1; plural=0;\n"
+-"X-Generator: Zanata 4.6.2\n"
++"X-Generator: Weblate 4.7.2\n"
+ 
+ #: src/pam_pwquality.c:236
+ #, c-format
+@@ -64,7 +66,7 @@ msgstr "사용법: %s <entropy-bits>\n"
+ #, c-format
+ msgid ""
+ "Warning: Value %ld is outside of the allowed entropy range, adjusting it.\n"
+-msgstr ""
++msgstr "경고: 값 %ld는 엔트로피 허용 범위를 초과하였습니다, 다시 조정해 주세요.\n"
+ 
+ #: src/error.c:31
+ msgid "Memory allocation error when setting"
+@@ -92,7 +94,7 @@ msgstr "암호가 이전 암호와 너�
+ 
+ #: src/error.c:45
+ msgid "The password contains the user name in some form"
+-msgstr "암호에 어떤 형식으로 사용자 이름이 포함되어 있습니다 "
++msgstr "암호에 사용자 이름이 들어 있습니다"
+ 
+ #: src/error.c:47
+ msgid "The password contains words from the real name of the user in some form"
+@@ -155,11 +157,11 @@ msgstr "암호가 이전 암호를 회�
+ #: src/error.c:84
+ #, c-format
+ msgid "The password contains less than %ld character classes"
+-msgstr "암호에는 %ld 미만의 문자 클래스가 포함되어 있습니다"
++msgstr "암호에 %ld 미만의 문자 계열이 들어있습니다"
+ 
+ #: src/error.c:87
+ msgid "The password does not contain enough character classes"
+-msgstr "암호에는 충분한 문자 클래스가 포함되어 있지 않습니다"
++msgstr "암호에 다양한 문자 계열을 반영하지 않았습니다"
+ 
+ #: src/error.c:90
+ #, c-format
+@@ -175,22 +177,21 @@ msgstr "암호에는 너무 많은 동�
+ msgid ""
+ "The password contains more than %ld characters of the same class "
+ "consecutively"
+-msgstr ""
+-"암호에는 %ld개 이상의 동일한 클래스 문자가 연속적으로 포함되어 있습니다"
++msgstr "암호에 %ld개 이상의 동일한 계열 문자가 연속으로 들어있습니다"
+ 
+ #: src/error.c:99
+ msgid ""
+ "The password contains too many characters of the same class consecutively"
+-msgstr "암호에는 너무 많은 동일한 클래스 문자가 연속적으로 포함되어 있습니다"
++msgstr "암호에 동일한 계열 문자가 너무 많이 있습니다"
+ 
+ #: src/error.c:102
+ #, c-format
+ msgid "The password contains monotonic sequence longer than %ld characters"
+-msgstr "암호에 %ld자를 초과하는 단조로운 문자열이 포함되어 있습니다."
++msgstr "암호에 %ld자를 초과하는 단조로운 문자열이 포함되어 있습니다"
+ 
+ #: src/error.c:105
+ msgid "The password contains too long of a monotonic character sequence"
+-msgstr "암호에 너무 단조로운 문자열이 포함되어 있습니다."
++msgstr "암호에 너무 단조로운 문자열이 있습니다"
+ 
+ #: src/error.c:107
+ msgid "No password supplied"
+@@ -202,49 +203,49 @@ msgstr "RNG 장치에서 임의의 숫�
+ 
+ #: src/error.c:111
+ msgid "Password generation failed - required entropy too low for settings"
+-msgstr "암호 생성에 실패했습니다 - 설정에 필요한 엔트로피가 너무 작습니다 "
++msgstr "암호 생성 실패 - 필요한 엔트로피 값이 너무 작습니다"
+ 
+ #: src/error.c:114 src/error.c:117
+ msgid "The password fails the dictionary check"
+-msgstr "암호는 사전 검사에 실패했습니다 "
++msgstr "암호 사전 검사에 실패했습니다"
+ 
+ #: src/error.c:120 src/error.c:124
+ msgid "Unknown setting"
+-msgstr "알 수 없는 설정 "
++msgstr "알 수 없는 설정"
+ 
+ #: src/error.c:127
+ msgid "Bad integer value of setting"
+-msgstr "설정에 대해 잘못된 정수 값 "
++msgstr "설정에 대해 잘못된 정수 값"
+ 
+ #: src/error.c:131
+ msgid "Bad integer value"
+-msgstr "잘못된 정수값 "
++msgstr "잘못된 정수값"
+ 
+ #: src/error.c:134
+ #, c-format
+ msgid "Setting %s is not of integer type"
+-msgstr "설정 %s은 정수 유형이 아닙니다 "
++msgstr "설정 %s은 정수 유형이 아닙니다"
+ 
+ #: src/error.c:138
+ msgid "Setting is not of integer type"
+-msgstr "설정이 정수 유형이 아닙니다 "
++msgstr "설정이 정수 유형이 아닙니다"
+ 
+ #: src/error.c:141
+ #, c-format
+ msgid "Setting %s is not of string type"
+-msgstr "설정 %s은 문자열 유형이 아닙니다 "
++msgstr "설정 %s은 문자열 유형이 아닙니다"
+ 
+ #: src/error.c:145
+ msgid "Setting is not of string type"
+-msgstr "설정은 문자열 유형이 아닙니다 "
++msgstr "설정은 문자열 유형이 아닙니다"
+ 
+ #: src/error.c:147
+ msgid "Opening the configuration file failed"
+-msgstr "설정 파일 열기에 실패했습니다 "
++msgstr "설정 파일 열기에 실패했습니다"
+ 
+ #: src/error.c:149
+ msgid "The configuration file is malformed"
+-msgstr "설정 파일이 잘못되었습니다 "
++msgstr "설정 파일이 잘못되었습니다"
+ 
+ #: src/error.c:151
+ msgid "Fatal failure"
+diff -up libpwquality-1.4.4/po/Makefile.in.in.rhel9-i18n libpwquality-1.4.4/po/Makefile.in.in
+--- libpwquality-1.4.4/po/Makefile.in.in.rhel9-i18n	2021-08-04 16:36:32.050503801 +0200
++++ libpwquality-1.4.4/po/Makefile.in.in	2021-08-04 16:37:17.722885954 +0200
+@@ -97,6 +97,7 @@ CATALOGS = @CATALOGS@
+ 
+ 
+ all: all-@USE_NLS@
++	$(MAKE) *.gmo
+ 
+ all-yes: stamp-po
+ all-no:
+diff -up libpwquality-1.4.4/po/zh_CN.po.rhel9-i18n libpwquality-1.4.4/po/zh_CN.po
+--- libpwquality-1.4.4/po/zh_CN.po.rhel9-i18n	2020-10-13 08:32:16.000000000 +0200
++++ libpwquality-1.4.4/po/zh_CN.po	2021-08-04 16:36:06.992294131 +0200
+@@ -11,13 +11,14 @@
+ # Xi HUANG <xhuang@redhat.com>, 2007.
+ # Tomáš Mráz <tmraz@fedoraproject.org>, 2017. #zanata
+ # Charles Lee <lchopn@gmail.com>, 2020.
++# Ludek Janda <ljanda@redhat.com>, 2021.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n"
+ "POT-Creation-Date: 2020-10-13 08:32+0200\n"
+-"PO-Revision-Date: 2020-07-29 16:29+0000\n"
+-"Last-Translator: Charles Lee <lchopn@gmail.com>\n"
++"PO-Revision-Date: 2021-05-26 14:02+0000\n"
++"Last-Translator: Ludek Janda <ljanda@redhat.com>\n"
+ "Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/"
+ "projects/libpwquality/app/zh_CN/>\n"
+ "Language: zh_CN\n"
+@@ -25,7 +26,7 @@ msgstr ""
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=1; plural=0;\n"
+-"X-Generator: Weblate 4.1.1\n"
++"X-Generator: Weblate 4.6.2\n"
+ 
+ #: src/pam_pwquality.c:236
+ #, c-format
+@@ -70,7 +71,7 @@ msgstr "用法: %s <entropy-bits>\n"
+ #, c-format
+ msgid ""
+ "Warning: Value %ld is outside of the allowed entropy range, adjusting it.\n"
+-msgstr ""
++msgstr "警告: %ld 的值在允许的熵范围之外,需要调整它。\n"
+ 
+ #: src/error.c:31
+ msgid "Memory allocation error when setting"
diff --git a/SPECS/libpwquality.spec b/SPECS/libpwquality.spec
new file mode 100644
index 0000000..6124b35
--- /dev/null
+++ b/SPECS/libpwquality.spec
@@ -0,0 +1,311 @@
+%if 0%{?fedora} || 0%{?rhel} > 7
+# Enable python3 build by default
+%bcond_without python3
+%else
+%bcond_with python3
+%endif
+
+%if 0%{?rhel} > 7 || 0%{?fedora} > 30
+# Disable python2 build by default
+%bcond_with python2
+%else
+%bcond_without python2
+%endif
+
+Summary: A library for password generation and password quality checking
+Name: libpwquality
+Version: 1.4.4
+Release: 8%{?dist}
+# The package is BSD licensed with option to relicense as GPLv2+
+# - this option is redundant as the BSD license allows that anyway.
+License: BSD or GPLv2+
+Source0: https://github.com/libpwquality/libpwquality/releases/download/libpwquality-%{version}/libpwquality-%{version}.tar.bz2
+
+Patch100: libpwquality-1.4.4-rhel9-i18n.patch
+
+%global _pwqlibdir %{_libdir}
+%global _moduledir %{_libdir}/security
+%global _secconfdir %{_sysconfdir}/security
+
+Requires: cracklib-dicts >= 2.8
+Requires: pam%{?_isa}
+Requires: cracklib
+BuildRequires: make
+BuildRequires: gcc
+BuildRequires: cracklib-devel
+BuildRequires: gettext
+BuildRequires: pam-devel
+%if %{with python2}
+BuildRequires: python2-devel
+%endif
+%if %{with python3}
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+%endif
+
+URL: https://github.com/libpwquality/libpwquality/
+
+# we don't want to provide private python extension libs
+%define __provides_exclude_from ^(%{python_sitearch}|%{python3_sitearch})/.*\.so$.
+
+%description
+This is a library for password quality checks and generation
+of random passwords that pass the checks.
+This library uses the cracklib and cracklib dictionaries
+to perform some of the checks.
+
+%package devel
+Summary: Support for development of applications using the libpwquality library
+Requires: libpwquality%{?_isa} = %{version}-%{release}
+Requires: pkgconfig
+
+%description devel
+Files needed for development of applications using the libpwquality
+library.
+See the pwquality.h header file for the API.
+
+%if %{with python2}
+%package -n python2-pwquality
+%{?python_provide:%python_provide python2-pwquality}
+Summary: Python bindings for the libpwquality library
+Requires: libpwquality%{?_isa} = %{version}-%{release}
+
+%description -n python2-pwquality
+This is pwquality Python module that provides Python bindings
+for the libpwquality library. These bindings can be used
+for easy password quality checking and generation of random
+pronounceable passwords from Python applications.
+%endif
+
+%if %{with python3}
+%package -n python3-pwquality
+Summary: Python bindings for the libpwquality library
+Requires: libpwquality%{?_isa} = %{version}-%{release}
+
+%description -n python3-pwquality
+This is pwquality Python module that provides Python bindings
+for the libpwquality library. These bindings can be used
+for easy password quality checking and generation of random
+pronounceable passwords from Python applications.
+%endif
+
+%prep
+%setup -q
+
+%if %{with python3} && %{with python2}
+rm -rf %{py3dir}
+cp -a . %{py3dir}
+%endif
+%patch100 -p1 -b .rhel9-i18n
+
+%build
+%if %{with python2}
+%configure \
+	--with-securedir=%{_moduledir} \
+	--with-pythonsitedir=%{python2_sitearch} \
+	--with-python-binary=%{__python2} \
+	--disable-static
+
+%make_build
+%endif
+%if %{with python3} && %{with python2}
+pushd %{py3dir}
+%endif
+%if %{with python3}
+%configure \
+	--with-securedir=%{_moduledir} \
+	--with-pythonsitedir=%{python3_sitearch} \
+	--with-python-binary=%{__python3} \
+	--disable-static
+
+%make_build
+%endif
+%if %{with python3} && %{with python2}
+popd
+%endif
+
+%install
+%make_install
+
+%if %{with python3} && %{with python2}
+pushd %{py3dir}
+%make_install -C python
+popd
+%endif
+
+%if "%{_pwqlibdir}" != "%{_libdir}"
+pushd $RPM_BUILD_ROOT%{_libdir}
+mv libpwquality.so.* $RPM_BUILD_ROOT%{_pwqlibdir}
+ln -sf %{_pwqlibdir}/libpwquality.so.*.* libpwquality.so
+popd
+%endif
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+rm -f $RPM_BUILD_ROOT%{_moduledir}/*.la
+
+mkdir $RPM_BUILD_ROOT%{_secconfdir}/pwquality.conf.d
+
+%find_lang libpwquality
+
+%check
+# Nothing yet
+
+%ldconfig_scriptlets
+
+%files -f libpwquality.lang
+%license COPYING
+%doc README NEWS AUTHORS
+%{_bindir}/pwmake
+%{_bindir}/pwscore
+%{_moduledir}/pam_pwquality.so
+%{_pwqlibdir}/libpwquality.so.*
+%config(noreplace) %{_secconfdir}/pwquality.conf
+%{_secconfdir}/pwquality.conf.d
+%{_mandir}/man1/*
+%{_mandir}/man5/*
+%{_mandir}/man8/*
+
+%files devel
+%{_includedir}/pwquality.h
+%{_libdir}/libpwquality.so
+%{_libdir}/pkgconfig/*.pc
+%{_mandir}/man3/*
+
+%if %{with python2}
+%files -n python2-pwquality
+%{python2_sitearch}/pwquality.so
+%{python2_sitearch}/*.egg-info
+%endif
+
+%if %{with python3}
+%files -n python3-pwquality
+%{python3_sitearch}/*.so
+%{python3_sitearch}/*.egg-info
+%endif
+
+%changelog
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.4.4-8
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Wed Aug 04 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1.4.4-7
+- Explicitly rebuild the localization
+- Resolves: rhbz#1938621
+
+* Mon Jul 26 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1.4.4-6
+- rebuilt
+
+* Mon Jul 26 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1.4.4-5
+- added i18n updates for de, fr, ja, ko, zh_CN
+- Resolves: rhbz#1963858
+- Resolves: rhbz#1938621
+
+* Thu Apr 29 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1.4.4-4
+- cracklib-dicts is a hard requirement, not a recomendation.
+- Resolves rhbz#1947882
+
+* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.4.4-3
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Tue Jan 26 10:55:14 EST 2021 Paul Wouters <pwouters@redhat.com> - 1.4.4-2
+- Resolves rhbz#1919026 libpwquaily rpm requires cracklib-dict to function but RPM missing requirement
+
+* Tue Oct 13 2020 Tomáš Mráz <tmraz@redhat.com> 1.4.4-1
+- Translation updates
+- Fix regression with enabling the cracklib check during build
+
+* Mon Oct 12 2020 Tomáš Mráz <tmraz@redhat.com> 1.4.3-1
+- Multiple translation updates
+- Add usersubstr check for substrings of N characters from the username
+  patch by Danny Sauer
+
+* Mon Jul 13 2020 Tom Stellard <tstellar@redhat.com> - 1.4.2-4
+- Use make macros
+- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
+
+* Thu Oct 31 2019 Tomáš Mráz <tmraz@redhat.com> 1.4.2-1
+- Fix previous release regression in handling retry, enforce_for_root,
+  and local_users_only options
+
+* Tue Sep 17 2019 Tomáš Mráz <tmraz@redhat.com> 1.4.1-1
+- Disable python2 bindings in Fedora 31 and above
+- Add conditionals for Python2 and Python3
+- pam_pwquality: Abort the retry loop if user requests it
+- Allow setting retry, enforce_for_root, and local_users_only options
+  in the pwquality.conf config file
+
+* Sat Feb 03 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.4.0-5
+- Switch to %%ldconfig_scriptlets
+
+* Sun Dec 17 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.4.0-4
+- Python 2 binary package renamed to python2-pwquality
+  See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
+
+* Fri May 26 2017 Tomáš Mráz <tmraz@redhat.com> 1.4.0-1
+- Do not try to check presence of too short username in password
+- Make the user name check optional (via usercheck option)
+- Add an 'enforcing' option to make the checks to be warning-only
+  in PAM
+- The difok = 0 setting will disable all old password similarity
+  checks except new and old passwords being identical
+- Updated translations from Zanata
+
+* Mon Aug 24 2015 Tomáš Mráz <tmraz@redhat.com> 1.3.0-2
+- Fix possible stack overflow in the generate function (#1255935)
+
+* Thu Jul 23 2015 Tomáš Mráz <tmraz@redhat.com> 1.3.0-1
+- Change the defaults for credits, difok, and minlen
+- Make the cracklib check optional but on by default
+- Add implicit support for parsing  <cfgfile>.d/*.conf files
+- Add libpwquality API manual page
+
+* Wed Aug  6 2014 Tomáš Mráz <tmraz@redhat.com> 1.2.4-1
+- fix license handling (by Tom Callaway)
+- add Python3 module subpackage
+
+* Thu Sep 12 2013 Tomáš Mráz <tmraz@redhat.com> 1.2.3-1
+- fix problem with parsing the pam_pwquality options
+  patch by Vladimir Sorokin.
+- updated translations from Transifex
+- treat empty user or password as NULL
+- move the library to /usr
+
+* Wed Jun 19 2013 Tomas Mraz <tmraz@redhat.com> 1.2.2-1
+- manual page fixes
+- make it possible to set the maxsequence configuration value
+- updated translations from Transifex
+
+* Thu Dec 20 2012 Tomas Mraz <tmraz@redhat.com> 1.2.1-1
+- properly free pwquality settings
+- add extern "C" to public header
+- updated translations from Transifex
+
+* Thu Aug 16 2012 Tomas Mraz <tmraz@redhat.com> 1.2.0-1
+- add maxsequence check for too long monotonic character sequence.
+- clarified alternative licensing to GPLv2+.
+- add local_users_only option to skip the pwquality checks for
+  non-locals. (thanks to Stef Walter)
+
+* Wed Jun 13 2012 Tomas Mraz <tmraz@redhat.com> 1.1.1-1
+- use rpm built-in filtering of provides (rhbz#830153)
+- remove strain debug fprintf() (rhbz#831567)
+
+* Thu May 24 2012 Tomas Mraz <tmraz@redhat.com> 1.1.0-1
+- fix leak when throwing PWQError exception
+- added pkgconfig file
+- call the simplicity checks before the cracklib check
+- add enforce_for_root option to the PAM module
+- updated translations from Transifex
+
+* Thu Dec  8 2011 Tomas Mraz <tmraz@redhat.com> 1.0.0-1
+- added a few additional password quality checks
+- bugfix in configuration file parsing
+
+* Fri Nov 11 2011 Tomas Mraz <tmraz@redhat.com> 0.9.9-1
+- added python bindings and documentation
+
+* Mon Oct 10 2011 Tomas Mraz <tmraz@redhat.com> 0.9-2
+- fixes for problems found in review (missing BR on pam-devel,
+  License field, Source URL, Require pam, other cleanups)
+
+* Mon Oct  3 2011 Tomas Mraz <tmraz@redhat.com> 0.9-1
+- first spec file for libpwquality