diff -Nru libkylin-chkname-1.0.10kylin3uk1/debian/changelog libkylin-chkname-1.0.10kylin3uk1/debian/changelog --- libkylin-chkname-1.0.10kylin3uk1/debian/changelog 2022-11-16 09:53:32.000000000 +0800 +++ libkylin-chkname-1.0.10kylin3uk1/debian/changelog 2025-03-18 15:16:51.000000000 +0800 @@ -1,3 +1,10 @@ +libkylin-chkname (1.0.10kylin3uk1-0k2) nile; urgency=medium + + * i18n: 维吾尔,哈萨克,柯尔克,藏文,蒙古文,繁体中文 + #I9KEKB, #IAP65C + + -- mengyuan <mengyuan@kylinos.cn> Tue, 18 Mar 2025 15:16:51 +0800 + libkylin-chkname (1.0.10kylin3uk1-0k1) jammy; urgency=medium * 修复本地化相关问题 diff -Nru libkylin-chkname-1.0.10kylin3uk1/debian/libkylin-chkname1.install libkylin-chkname-1.0.10kylin3uk1/debian/libkylin-chkname1.install --- libkylin-chkname-1.0.10kylin3uk1/debian/libkylin-chkname1.install 2022-11-16 09:53:32.000000000 +0800 +++ libkylin-chkname-1.0.10kylin3uk1/debian/libkylin-chkname1.install 2025-03-18 15:16:51.000000000 +0800 @@ -1,3 +1,3 @@ -po/kylin-chkname.mo usr/share/locale/zh_CN/LC_MESSAGES/ +usr/share/locale reserved-names usr/share/kylin-chkname/ usr/lib/*/lib*.so.* diff -Nru libkylin-chkname-1.0.10kylin3uk1/debian/patches/0001-fix-compile-errors.patch libkylin-chkname-1.0.10kylin3uk1/debian/patches/0001-fix-compile-errors.patch --- libkylin-chkname-1.0.10kylin3uk1/debian/patches/0001-fix-compile-errors.patch 1970-01-01 08:00:00.000000000 +0800 +++ libkylin-chkname-1.0.10kylin3uk1/debian/patches/0001-fix-compile-errors.patch 2025-03-18 15:16:51.000000000 +0800 @@ -0,0 +1,2270 @@ +From: mengyuan <mengyuan@kylinos.cn> +Date: Tue, 18 Mar 2025 15:54:01 +0800 +Subject: fix compile errors + +Signed-off-by: mengyuan <mengyuan@kylinos.cn> +--- + ABOUT-NLS | 1 + + ChangeLog | 7 + + Makefile.am | 6 + + Makefile.in | 2 +- + config.rpath | 684 +++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 3 +- + po/ChangeLog | 12 + + po/LINGUAS | 7 + + po/Makefile.in.in | 510 ++++++++++++++++++++++++++++++++++++ + po/Makevars | 81 ++++++ + po/POTFILES.in | 2 + + po/Rules-quot | 62 +++++ + po/bo_CN.gmo | Bin 0 -> 2729 bytes + po/bo_CN.po | 62 +++++ + po/boldquot.sed | 10 + + po/en@boldquot.header | 25 ++ + po/en@quot.header | 22 ++ + po/insert-header.sin | 28 ++ + po/kk.gmo | Bin 0 -> 1771 bytes + po/kk.po | 58 +++++ + po/ky.gmo | Bin 0 -> 1754 bytes + po/ky.po | 59 +++++ + po/mn.gmo | Bin 0 -> 2834 bytes + po/mn.po | 64 +++++ + po/quot.sed | 6 + + po/remove-potcdate.sin | 25 ++ + po/ug.gmo | Bin 0 -> 1754 bytes + po/ug.po | 59 +++++ + po/zh_CN.gmo | Bin 0 -> 1286 bytes + po/zh_CN.po | 58 +++++ + po/zh_HK.gmo | Bin 0 -> 1290 bytes + po/zh_HK.po | 51 ++++ + 32 files changed, 1902 insertions(+), 2 deletions(-) + create mode 100644 ABOUT-NLS + create mode 100755 config.rpath + create mode 100644 po/ChangeLog + create mode 100644 po/LINGUAS + create mode 100644 po/Makefile.in.in + create mode 100644 po/Makevars + create mode 100644 po/POTFILES.in + create mode 100644 po/Rules-quot + create mode 100644 po/bo_CN.gmo + create mode 100644 po/bo_CN.po + create mode 100644 po/boldquot.sed + create mode 100644 po/en@boldquot.header + create mode 100644 po/en@quot.header + create mode 100644 po/insert-header.sin + create mode 100644 po/kk.gmo + create mode 100644 po/kk.po + create mode 100644 po/ky.gmo + create mode 100644 po/ky.po + create mode 100644 po/mn.gmo + create mode 100644 po/mn.po + create mode 100644 po/quot.sed + create mode 100644 po/remove-potcdate.sin + create mode 100644 po/ug.gmo + create mode 100644 po/ug.po + create mode 100644 po/zh_CN.gmo + create mode 100644 po/zh_CN.po + create mode 100644 po/zh_HK.gmo + create mode 100644 po/zh_HK.po + +diff --git a/ABOUT-NLS b/ABOUT-NLS +new file mode 100644 +index 0000000..0a9d56d +--- /dev/null ++++ b/ABOUT-NLS +@@ -0,0 +1 @@ ++<https://www.gnu.org/software/gettext/manual/html_node/Users.html> +diff --git a/ChangeLog b/ChangeLog +index e69de29..2298948 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -0,0 +1,7 @@ ++2025-03-18 gettextize <bug-gnu-gettext@gnu.org> ++ ++ * Makefile.am (SUBDIRS): New variable. ++ (ACLOCAL_AMFLAGS): New variable. ++ (EXTRA_DIST): New variable. ++ * configure.ac (AC_OUTPUT): Add po/Makefile.in. ++ +diff --git a/Makefile.am b/Makefile.am +index d5f4d6b..01e29bc 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -2,3 +2,9 @@ lib_LTLIBRARIES=libkylin_chkname.la + libkylin_chkname_la_SOURCES=kylin-chkname.c + + include_HEADERS=kylin-chkname.h ++ ++SUBDIRS = po ++ ++ACLOCAL_AMFLAGS = -I m4 ++ ++EXTRA_DIST = m4/ChangeLog +diff --git a/Makefile.in b/Makefile.in +index f6d9c0e..6b24cce 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -378,7 +378,7 @@ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENC + $(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) + $(ACLOCAL_M4): $(am__aclocal_m4_deps) +- $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) ++ $(am__cd) $(srcdir) && $(ACLOCAL) -I m4 $(ACLOCAL_AMFLAGS) + $(am__aclocal_m4_deps): + + config.h: stamp-h1 +diff --git a/config.rpath b/config.rpath +new file mode 100755 +index 0000000..24be79c +--- /dev/null ++++ b/config.rpath +@@ -0,0 +1,684 @@ ++#! /bin/sh ++# Output a system dependent set of variables, describing how to set the ++# run time search path of shared libraries in an executable. ++# ++# Copyright 1996-2020 Free Software Foundation, Inc. ++# Taken from GNU libtool, 2001 ++# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 ++# ++# This file is free software; the Free Software Foundation gives ++# unlimited permission to copy and/or distribute it, with or without ++# modifications, as long as this notice is preserved. ++# ++# The first argument passed to this file is the canonical host specification, ++# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM ++# or ++# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM ++# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld ++# should be set by the caller. ++# ++# The set of defined variables is at the end of this script. ++ ++# Known limitations: ++# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer ++# than 256 bytes, otherwise the compiler driver will dump core. The only ++# known workaround is to choose shorter directory names for the build ++# directory and/or the installation directory. ++ ++# All known linkers require a '.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++shrext=.so ++ ++host="$1" ++host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` ++host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` ++host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ ++# Code taken from libtool.m4's _LT_CC_BASENAME. ++ ++for cc_temp in $CC""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` ++ ++# Code taken from libtool.m4's _LT_COMPILER_PIC. ++ ++wl= ++if test "$GCC" = yes; then ++ wl='-Wl,' ++else ++ case "$host_os" in ++ aix*) ++ wl='-Wl,' ++ ;; ++ mingw* | cygwin* | pw32* | os2* | cegcc*) ++ ;; ++ hpux9* | hpux10* | hpux11*) ++ wl='-Wl,' ++ ;; ++ irix5* | irix6* | nonstopux*) ++ wl='-Wl,' ++ ;; ++ linux* | k*bsd*-gnu | kopensolaris*-gnu) ++ case $cc_basename in ++ ecc*) ++ wl='-Wl,' ++ ;; ++ icc* | ifort*) ++ wl='-Wl,' ++ ;; ++ lf95*) ++ wl='-Wl,' ++ ;; ++ nagfor*) ++ wl='-Wl,-Wl,,' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) ++ wl='-Wl,' ++ ;; ++ ccc*) ++ wl='-Wl,' ++ ;; ++ xl* | bgxl* | bgf* | mpixl*) ++ wl='-Wl,' ++ ;; ++ como) ++ wl='-lopt=' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ F* | *Sun*Fortran*) ++ wl= ++ ;; ++ *Sun\ C*) ++ wl='-Wl,' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ newsos6) ++ ;; ++ *nto* | *qnx*) ++ ;; ++ osf3* | osf4* | osf5*) ++ wl='-Wl,' ++ ;; ++ rdos*) ++ ;; ++ solaris*) ++ case $cc_basename in ++ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) ++ wl='-Qoption ld ' ++ ;; ++ *) ++ wl='-Wl,' ++ ;; ++ esac ++ ;; ++ sunos4*) ++ wl='-Qoption ld ' ++ ;; ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ wl='-Wl,' ++ ;; ++ sysv4*MP*) ++ ;; ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ wl='-Wl,' ++ ;; ++ unicos*) ++ wl='-Wl,' ++ ;; ++ uts4*) ++ ;; ++ esac ++fi ++ ++# Code taken from libtool.m4's _LT_LINKER_SHLIBS. ++ ++hardcode_libdir_flag_spec= ++hardcode_libdir_separator= ++hardcode_direct=no ++hardcode_minus_L=no ++ ++case "$host_os" in ++ cygwin* | mingw* | pw32* | cegcc*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++esac ++ ++ld_shlibs=yes ++if test "$with_gnu_ld" = yes; then ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ # Unlike libtool, we use -rpath here, not --rpath, since the documented ++ # option of GNU ld is called -rpath, not --rpath. ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ case "$host_os" in ++ aix[3-9]*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs=no ++ fi ++ ;; ++ amigaos*) ++ case "$host_cpu" in ++ powerpc) ++ ;; ++ m68k) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ : ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ cygwin* | mingw* | pw32* | cegcc*) ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec='-L$libdir' ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ : ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ haiku*) ++ ;; ++ interix[3-9]*) ++ hardcode_direct=no ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ ;; ++ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ : ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ netbsd*) ++ ;; ++ solaris*) ++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ++ ld_shlibs=no ++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ : ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs=no ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ;; ++ sunos4*) ++ hardcode_direct=yes ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ : ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ if test "$ld_shlibs" = no; then ++ hardcode_libdir_flag_spec= ++ fi ++else ++ case "$host_os" in ++ aix3*) ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L=yes ++ if test "$GCC" = yes; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct=unsupported ++ fi ++ ;; ++ aix[4-9]*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ else ++ aix_use_runtimelinking=no ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ fi ++ hardcode_direct=yes ++ hardcode_libdir_separator=':' ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct=unsupported ++ hardcode_minus_L=yes ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_libdir_separator= ++ fi ++ ;; ++ esac ++ fi ++ # Begin _LT_AC_SYS_LIBPATH_AIX. ++ echo 'int main () { return 0; }' > conftest.c ++ ${CC} ${LDFLAGS} conftest.c -o conftest ++ aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } ++}'` ++ if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } ++}'` ++ fi ++ if test -z "$aix_libpath"; then ++ aix_libpath="/usr/lib:/lib" ++ fi ++ rm -f conftest.c conftest ++ # End _LT_AC_SYS_LIBPATH_AIX. ++ if test "$aix_use_runtimelinking" = yes; then ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ++ else ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ fi ++ fi ++ ;; ++ amigaos*) ++ case "$host_cpu" in ++ powerpc) ++ ;; ++ m68k) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; ++ bsdi[45]*) ++ ;; ++ cygwin* | mingw* | pw32* | cegcc*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec=' ' ++ libext=lib ++ ;; ++ darwin* | rhapsody*) ++ hardcode_direct=no ++ if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then ++ : ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ dgux*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ ;; ++ freebsd2.[01]*) ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ ;; ++ freebsd* | dragonfly*) ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ ;; ++ hpux9*) ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ ;; ++ hpux10*) ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ fi ++ ;; ++ hpux11*) ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_direct=no ++ ;; ++ *) ++ hardcode_direct=yes ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ ;; ++ esac ++ fi ++ ;; ++ irix5* | irix6* | nonstopux*) ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ netbsd*) ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ ;; ++ newsos6) ++ hardcode_direct=yes ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ *nto* | *qnx*) ++ ;; ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct=yes ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ else ++ case "$host_os" in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ hardcode_libdir_flag_spec='-R$libdir' ++ ;; ++ *) ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ os2*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ osf3*) ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ osf4* | osf5*) ++ if test "$GCC" = yes; then ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ else ++ # Both cc and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec='-rpath $libdir' ++ fi ++ hardcode_libdir_separator=: ++ ;; ++ solaris*) ++ hardcode_libdir_flag_spec='-R$libdir' ++ ;; ++ sunos4*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ ;; ++ sysv4) ++ case $host_vendor in ++ sni) ++ hardcode_direct=yes # is this really true??? ++ ;; ++ siemens) ++ hardcode_direct=no ++ ;; ++ motorola) ++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ ;; ++ sysv4.3*) ++ ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ ld_shlibs=yes ++ fi ++ ;; ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ ;; ++ sysv5* | sco3.2v5* | sco5v6*) ++ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator=':' ++ ;; ++ uts4*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ ;; ++ *) ++ ld_shlibs=no ++ ;; ++ esac ++fi ++ ++# Check dynamic linker characteristics ++# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. ++# Unlike libtool.m4, here we don't care about _all_ names of the library, but ++# only about the one the linker finds when passed -lNAME. This is the last ++# element of library_names_spec in libtool.m4, or possibly two of them if the ++# linker has special search rules. ++library_names_spec= # the last element of library_names_spec in libtool.m4 ++libname_spec='lib$name' ++case "$host_os" in ++ aix3*) ++ library_names_spec='$libname.a' ++ ;; ++ aix[4-9]*) ++ library_names_spec='$libname$shrext' ++ ;; ++ amigaos*) ++ case "$host_cpu" in ++ powerpc*) ++ library_names_spec='$libname$shrext' ;; ++ m68k) ++ library_names_spec='$libname.a' ;; ++ esac ++ ;; ++ beos*) ++ library_names_spec='$libname$shrext' ++ ;; ++ bsdi[45]*) ++ library_names_spec='$libname$shrext' ++ ;; ++ cygwin* | mingw* | pw32* | cegcc*) ++ shrext=.dll ++ library_names_spec='$libname.dll.a $libname.lib' ++ ;; ++ darwin* | rhapsody*) ++ shrext=.dylib ++ library_names_spec='$libname$shrext' ++ ;; ++ dgux*) ++ library_names_spec='$libname$shrext' ++ ;; ++ freebsd[23].*) ++ library_names_spec='$libname$shrext$versuffix' ++ ;; ++ freebsd* | dragonfly*) ++ library_names_spec='$libname$shrext' ++ ;; ++ gnu*) ++ library_names_spec='$libname$shrext' ++ ;; ++ haiku*) ++ library_names_spec='$libname$shrext' ++ ;; ++ hpux9* | hpux10* | hpux11*) ++ case $host_cpu in ++ ia64*) ++ shrext=.so ++ ;; ++ hppa*64*) ++ shrext=.sl ++ ;; ++ *) ++ shrext=.sl ++ ;; ++ esac ++ library_names_spec='$libname$shrext' ++ ;; ++ interix[3-9]*) ++ library_names_spec='$libname$shrext' ++ ;; ++ irix5* | irix6* | nonstopux*) ++ library_names_spec='$libname$shrext' ++ case "$host_os" in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; ++ *) libsuff= shlibsuff= ;; ++ esac ++ ;; ++ esac ++ ;; ++ linux*oldld* | linux*aout* | linux*coff*) ++ ;; ++ linux* | k*bsd*-gnu | kopensolaris*-gnu) ++ library_names_spec='$libname$shrext' ++ ;; ++ knetbsd*-gnu) ++ library_names_spec='$libname$shrext' ++ ;; ++ netbsd*) ++ library_names_spec='$libname$shrext' ++ ;; ++ newsos6) ++ library_names_spec='$libname$shrext' ++ ;; ++ *nto* | *qnx*) ++ library_names_spec='$libname$shrext' ++ ;; ++ openbsd*) ++ library_names_spec='$libname$shrext$versuffix' ++ ;; ++ os2*) ++ libname_spec='$name' ++ shrext=.dll ++ library_names_spec='$libname.a' ++ ;; ++ osf3* | osf4* | osf5*) ++ library_names_spec='$libname$shrext' ++ ;; ++ rdos*) ++ ;; ++ solaris*) ++ library_names_spec='$libname$shrext' ++ ;; ++ sunos4*) ++ library_names_spec='$libname$shrext$versuffix' ++ ;; ++ sysv4 | sysv4.3*) ++ library_names_spec='$libname$shrext' ++ ;; ++ sysv4*MP*) ++ library_names_spec='$libname$shrext' ++ ;; ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ library_names_spec='$libname$shrext' ++ ;; ++ tpf*) ++ library_names_spec='$libname$shrext' ++ ;; ++ uts4*) ++ library_names_spec='$libname$shrext' ++ ;; ++esac ++ ++sed_quote_subst='s/\(["`$\\]\)/\\\1/g' ++escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` ++shlibext=`echo "$shrext" | sed -e 's,^\.,,'` ++escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` ++escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` ++escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` ++ ++LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF ++ ++# How to pass a linker flag through the compiler. ++wl="$escaped_wl" ++ ++# Static library suffix (normally "a"). ++libext="$libext" ++ ++# Shared library suffix (normally "so"). ++shlibext="$shlibext" ++ ++# Format of library name prefix. ++libname_spec="$escaped_libname_spec" ++ ++# Library names that the linker finds when passed -lNAME. ++library_names_spec="$escaped_library_names_spec" ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec" ++ ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator="$hardcode_libdir_separator" ++ ++# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct="$hardcode_direct" ++ ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L="$hardcode_minus_L" ++ ++EOF +diff --git a/configure.ac b/configure.ac +index 47dedc1..735cbd4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -11,6 +11,7 @@ AC_PROG_CC + AC_PROG_LIBTOOL + + # Checks for libraries. ++AM_GNU_GETTEXT([external]) + + # Checks for header files. + AC_CHECK_HEADERS([libintl.h string.h syslog.h]) +@@ -20,4 +21,4 @@ AC_CHECK_HEADERS([libintl.h string.h syslog.h]) + # Checks for library functions. + AC_CHECK_FUNCS([strerror]) + +-AC_OUTPUT([Makefile]) ++AC_OUTPUT([Makefile po/Makefile.in]) +diff --git a/po/ChangeLog b/po/ChangeLog +new file mode 100644 +index 0000000..56e0924 +--- /dev/null ++++ b/po/ChangeLog +@@ -0,0 +1,12 @@ ++2025-03-18 gettextize <bug-gnu-gettext@gnu.org> ++ ++ * Makefile.in.in: New file, from gettext-0.21. ++ * Rules-quot: New file, from gettext-0.21. ++ * boldquot.sed: New file, from gettext-0.21. ++ * en@boldquot.header: New file, from gettext-0.21. ++ * en@quot.header: New file, from gettext-0.21. ++ * insert-header.sin: New file, from gettext-0.21. ++ * quot.sed: New file, from gettext-0.21. ++ * remove-potcdate.sin: New file, from gettext-0.21. ++ * POTFILES.in: New file. ++ +diff --git a/po/LINGUAS b/po/LINGUAS +new file mode 100644 +index 0000000..2f27eb4 +--- /dev/null ++++ b/po/LINGUAS +@@ -0,0 +1,7 @@ ++bo_CN ++kk ++ky ++mn ++ug ++zh_CN ++zh_HK +diff --git a/po/Makefile.in.in b/po/Makefile.in.in +new file mode 100644 +index 0000000..6b25f0d +--- /dev/null ++++ b/po/Makefile.in.in +@@ -0,0 +1,510 @@ ++# Makefile for PO directory in any package using GNU gettext. ++# Copyright (C) 1995-2000 Ulrich Drepper <drepper@gnu.ai.mit.edu> ++# Copyright (C) 2000-2020 Free Software Foundation, Inc. ++# ++# Copying and distribution of this file, with or without modification, ++# are permitted in any medium without royalty provided the copyright ++# notice and this notice are preserved. This file is offered as-is, ++# without any warranty. ++# ++# Origin: gettext-0.21 ++GETTEXT_MACRO_VERSION = 0.20 ++ ++PACKAGE = @PACKAGE@ ++VERSION = @VERSION@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++ ++SED = @SED@ ++SHELL = /bin/sh ++@SET_MAKE@ ++ ++srcdir = @srcdir@ ++top_srcdir = @top_srcdir@ ++VPATH = @srcdir@ ++ ++prefix = @prefix@ ++exec_prefix = @exec_prefix@ ++datarootdir = @datarootdir@ ++datadir = @datadir@ ++localedir = @localedir@ ++gettextsrcdir = $(datadir)/gettext/po ++ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++ ++# We use $(mkdir_p). ++# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as ++# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, ++# @install_sh@ does not start with $(SHELL), so we add it. ++# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined ++# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake ++# versions, $(mkinstalldirs) and $(install_sh) are unused. ++mkinstalldirs = $(SHELL) @install_sh@ -d ++install_sh = $(SHELL) @install_sh@ ++MKDIR_P = @MKDIR_P@ ++mkdir_p = @mkdir_p@ ++ ++# When building gettext-tools, we prefer to use the built programs ++# rather than installed programs. However, we can't do that when we ++# are cross compiling. ++CROSS_COMPILING = @CROSS_COMPILING@ ++ ++GMSGFMT_ = @GMSGFMT@ ++GMSGFMT_no = @GMSGFMT@ ++GMSGFMT_yes = @GMSGFMT_015@ ++GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) ++XGETTEXT_ = @XGETTEXT@ ++XGETTEXT_no = @XGETTEXT@ ++XGETTEXT_yes = @XGETTEXT_015@ ++XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) ++MSGMERGE = @MSGMERGE@ ++MSGMERGE_UPDATE = @MSGMERGE@ --update ++MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ ++MSGINIT = msginit ++MSGCONV = msgconv ++MSGFILTER = msgfilter ++ ++POFILES = @POFILES@ ++GMOFILES = @GMOFILES@ ++UPDATEPOFILES = @UPDATEPOFILES@ ++DUMMYPOFILES = @DUMMYPOFILES@ ++DISTFILES.common = Makefile.in.in remove-potcdate.sin \ ++$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) ++DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ ++$(POFILES) $(GMOFILES) \ ++$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) ++ ++POTFILES = \ ++ ++CATALOGS = @CATALOGS@ ++ ++POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot ++POFILESDEPS_yes = $(POFILESDEPS_) ++POFILESDEPS_no = ++POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) ++ ++DISTFILESDEPS_ = update-po ++DISTFILESDEPS_yes = $(DISTFILESDEPS_) ++DISTFILESDEPS_no = ++DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) ++ ++# Makevars gets inserted here. (Don't remove this line!) ++ ++all: all-@USE_NLS@ ++ ++ ++.SUFFIXES: ++.SUFFIXES: .po .gmo .sed .sin .nop .po-create .po-update ++ ++# The .pot file, stamp-po, .po files, and .gmo files appear in release tarballs. ++# The GNU Coding Standards say in ++# <https://www.gnu.org/prep/standards/html_node/Makefile-Basics.html>: ++# "GNU distributions usually contain some files which are not source files ++# ... . Since these files normally appear in the source directory, they ++# should always appear in the source directory, not in the build directory. ++# So Makefile rules to update them should put the updated files in the ++# source directory." ++# Therefore we put these files in the source directory, not the build directory. ++ ++# During .po -> .gmo conversion, take into account the most recent changes to ++# the .pot file. This eliminates the need to update the .po files when the ++# .pot file has changed, which would be troublesome if the .po files are put ++# under version control. ++$(GMOFILES): $(srcdir)/$(DOMAIN).pot ++.po.gmo: ++ @lang=`echo $* | sed -e 's,.*/,,'`; \ ++ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ ++ echo "$${cdcmd}rm -f $${lang}.gmo && $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.1po && rm -f $${lang}.1po"; \ ++ cd $(srcdir) && \ ++ rm -f $${lang}.gmo && \ ++ $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && \ ++ $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.1po && \ ++ mv t-$${lang}.gmo $${lang}.gmo && \ ++ rm -f $${lang}.1po ++ ++.sin.sed: ++ sed -e '/^#/d' $< > t-$@ ++ mv t-$@ $@ ++ ++ ++all-yes: $(srcdir)/stamp-po ++all-no: ++ ++# Ensure that the gettext macros and this Makefile.in.in are in sync. ++CHECK_MACRO_VERSION = \ ++ test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ ++ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ ++ exit 1; \ ++ } ++ ++# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no ++# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because ++# we don't want to bother translators with empty POT files). We assume that ++# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. ++# In this case, $(srcdir)/stamp-po is a nop (i.e. a phony target). ++ ++# $(srcdir)/stamp-po is a timestamp denoting the last time at which the CATALOGS ++# have been loosely updated. Its purpose is that when a developer or translator ++# checks out the package from a version control system, and the $(DOMAIN).pot ++# file is not under version control, "make" will update the $(DOMAIN).pot and ++# the $(CATALOGS), but subsequent invocations of "make" will do nothing. This ++# timestamp would not be necessary if updating the $(CATALOGS) would always ++# touch them; however, the rule for $(POFILES) has been designed to not touch ++# files that don't need to be changed. ++$(srcdir)/stamp-po: $(srcdir)/$(DOMAIN).pot ++ @$(CHECK_MACRO_VERSION) ++ test ! -f $(srcdir)/$(DOMAIN).pot || \ ++ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) ++ @test ! -f $(srcdir)/$(DOMAIN).pot || { \ ++ echo "touch $(srcdir)/stamp-po" && \ ++ echo timestamp > $(srcdir)/stamp-poT && \ ++ mv $(srcdir)/stamp-poT $(srcdir)/stamp-po; \ ++ } ++ ++# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', ++# otherwise packages like GCC can not be built if only parts of the source ++# have been downloaded. ++ ++# This target rebuilds $(DOMAIN).pot; it is an expensive operation. ++# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. ++# The determination of whether the package xyz is a GNU one is based on the ++# heuristic whether some file in the top level directory mentions "GNU xyz". ++# If GNU 'find' is available, we avoid grepping through monster files. ++$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed ++ package_gnu="$(PACKAGE_GNU)"; \ ++ test -n "$$package_gnu" || { \ ++ if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ ++ LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep -i 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \ ++ else \ ++ LC_ALL=C grep -i 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ ++ fi; \ ++ } | grep -v 'libtool:' >/dev/null; then \ ++ package_gnu=yes; \ ++ else \ ++ package_gnu=no; \ ++ fi; \ ++ }; \ ++ if test "$$package_gnu" = "yes"; then \ ++ package_prefix='GNU '; \ ++ else \ ++ package_prefix=''; \ ++ fi; \ ++ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ ++ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ ++ else \ ++ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ ++ fi; \ ++ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ ++ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ ++ --add-comments=TRANSLATORS: \ ++ --files-from=$(srcdir)/POTFILES.in \ ++ --copyright-holder='$(COPYRIGHT_HOLDER)' \ ++ --msgid-bugs-address="$$msgid_bugs_address" \ ++ $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ ++ ;; \ ++ *) \ ++ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ ++ --add-comments=TRANSLATORS: \ ++ --files-from=$(srcdir)/POTFILES.in \ ++ --copyright-holder='$(COPYRIGHT_HOLDER)' \ ++ --package-name="$${package_prefix}@PACKAGE@" \ ++ --package-version='@VERSION@' \ ++ --msgid-bugs-address="$$msgid_bugs_address" \ ++ $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ ++ ;; \ ++ esac ++ test ! -f $(DOMAIN).po || { \ ++ if test -f $(srcdir)/$(DOMAIN).pot-header; then \ ++ sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ ++ cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po && \ ++ rm -f $(DOMAIN).1po \ ++ || exit 1; \ ++ fi; \ ++ if test -f $(srcdir)/$(DOMAIN).pot; then \ ++ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ ++ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ ++ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ ++ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ ++ else \ ++ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ ++ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ ++ fi; \ ++ else \ ++ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ ++ fi; \ ++ } ++ ++# This rule has no dependencies: we don't need to update $(DOMAIN).pot at ++# every "make" invocation, only create it when it is missing. ++# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. ++$(srcdir)/$(DOMAIN).pot: ++ $(MAKE) $(DOMAIN).pot-update ++ ++# This target rebuilds a PO file if $(DOMAIN).pot has changed. ++# Note that a PO file is not touched if it doesn't need to be changed. ++$(POFILES): $(POFILESDEPS) ++ @test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot ++ @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ ++ if test -f "$(srcdir)/$${lang}.po"; then \ ++ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ ++ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot"; \ ++ cd $(srcdir) \ ++ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \ ++ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ ++ 0.1[6-7] | 0.1[6-7].*) \ ++ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --previous $${lang}.po $(DOMAIN).pot;; \ ++ *) \ ++ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot;; \ ++ esac; \ ++ }; \ ++ else \ ++ $(MAKE) $${lang}.po-create; \ ++ fi ++ ++ ++install: install-exec install-data ++install-exec: ++install-data: install-data-@USE_NLS@ ++ if test "$(PACKAGE)" = "gettext-tools"; then \ ++ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ ++ for file in $(DISTFILES.common) Makevars.template; do \ ++ $(INSTALL_DATA) $(srcdir)/$$file \ ++ $(DESTDIR)$(gettextsrcdir)/$$file; \ ++ done; \ ++ for file in Makevars; do \ ++ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ ++ done; \ ++ else \ ++ : ; \ ++ fi ++install-data-no: all ++install-data-yes: all ++ @catalogs='$(CATALOGS)'; \ ++ for cat in $$catalogs; do \ ++ cat=`basename $$cat`; \ ++ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ ++ dir=$(localedir)/$$lang/LC_MESSAGES; \ ++ $(mkdir_p) $(DESTDIR)$$dir; \ ++ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ ++ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ ++ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ ++ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ ++ if test -n "$$lc"; then \ ++ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ ++ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ ++ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ ++ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ ++ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ ++ for file in *; do \ ++ if test -f $$file; then \ ++ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ ++ fi; \ ++ done); \ ++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ ++ else \ ++ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ ++ :; \ ++ else \ ++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ ++ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ ++ fi; \ ++ fi; \ ++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ++ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ++ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ++ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ++ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ ++ fi; \ ++ done; \ ++ done ++ ++install-strip: install ++ ++installdirs: installdirs-exec installdirs-data ++installdirs-exec: ++installdirs-data: installdirs-data-@USE_NLS@ ++ if test "$(PACKAGE)" = "gettext-tools"; then \ ++ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ ++ else \ ++ : ; \ ++ fi ++installdirs-data-no: ++installdirs-data-yes: ++ @catalogs='$(CATALOGS)'; \ ++ for cat in $$catalogs; do \ ++ cat=`basename $$cat`; \ ++ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ ++ dir=$(localedir)/$$lang/LC_MESSAGES; \ ++ $(mkdir_p) $(DESTDIR)$$dir; \ ++ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ ++ if test -n "$$lc"; then \ ++ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ ++ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ ++ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ ++ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ ++ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ ++ for file in *; do \ ++ if test -f $$file; then \ ++ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ ++ fi; \ ++ done); \ ++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ ++ else \ ++ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ ++ :; \ ++ else \ ++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ ++ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ ++ fi; \ ++ fi; \ ++ fi; \ ++ done; \ ++ done ++ ++# Define this as empty until I found a useful application. ++installcheck: ++ ++uninstall: uninstall-exec uninstall-data ++uninstall-exec: ++uninstall-data: uninstall-data-@USE_NLS@ ++ if test "$(PACKAGE)" = "gettext-tools"; then \ ++ for file in $(DISTFILES.common) Makevars.template; do \ ++ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ ++ done; \ ++ else \ ++ : ; \ ++ fi ++uninstall-data-no: ++uninstall-data-yes: ++ catalogs='$(CATALOGS)'; \ ++ for cat in $$catalogs; do \ ++ cat=`basename $$cat`; \ ++ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ ++ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ ++ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ++ done; \ ++ done ++ ++check: all ++ ++info dvi ps pdf html tags TAGS ctags CTAGS ID: ++ ++install-dvi install-ps install-pdf install-html: ++ ++mostlyclean: ++ rm -f remove-potcdate.sed ++ rm -f $(srcdir)/stamp-poT ++ rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po ++ rm -fr *.o ++ ++clean: mostlyclean ++ ++distclean: clean ++ rm -f Makefile Makefile.in POTFILES ++ ++maintainer-clean: distclean ++ @echo "This command is intended for maintainers to use;" ++ @echo "it deletes files that may require special tools to rebuild." ++ rm -f $(srcdir)/$(DOMAIN).pot $(srcdir)/stamp-po $(GMOFILES) ++ ++distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ++dist distdir: ++ test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) ++ @$(MAKE) dist2 ++# This is a separate target because 'update-po' must be executed before. ++dist2: $(srcdir)/stamp-po $(DISTFILES) ++ @dists="$(DISTFILES)"; \ ++ if test "$(PACKAGE)" = "gettext-tools"; then \ ++ dists="$$dists Makevars.template"; \ ++ fi; \ ++ if test -f $(srcdir)/$(DOMAIN).pot; then \ ++ dists="$$dists $(DOMAIN).pot stamp-po"; \ ++ else \ ++ case $(XGETTEXT) in \ ++ :) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because a suitable 'xgettext' program was not found in PATH." 1>&2;; \ ++ *) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because 'xgettext' found no strings to extract. Check the contents of the POTFILES.in file and the XGETTEXT_OPTIONS in the Makevars file." 1>&2;; \ ++ esac; \ ++ fi; \ ++ if test -f $(srcdir)/ChangeLog; then \ ++ dists="$$dists ChangeLog"; \ ++ fi; \ ++ for i in 0 1 2 3 4 5 6 7 8 9; do \ ++ if test -f $(srcdir)/ChangeLog.$$i; then \ ++ dists="$$dists ChangeLog.$$i"; \ ++ fi; \ ++ done; \ ++ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ ++ for file in $$dists; do \ ++ if test -f $$file; then \ ++ cp -p $$file $(distdir) || exit 1; \ ++ else \ ++ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ ++ fi; \ ++ done ++ ++update-po: Makefile ++ $(MAKE) $(DOMAIN).pot-update ++ test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) ++ $(MAKE) update-gmo ++ ++# General rule for creating PO files. ++ ++.nop.po-create: ++ @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ ++ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ ++ exit 1 ++ ++# General rule for updating PO files. ++ ++.nop.po-update: ++ @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ ++ if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \ ++ tmpdir=`pwd`; \ ++ echo "$$lang:"; \ ++ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ ++ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ ++ cd $(srcdir); \ ++ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \ ++ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ ++ 0.1[6-7] | 0.1[6-7].*) \ ++ $(MSGMERGE) $(MSGMERGE_OPTIONS) --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ ++ *) \ ++ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ ++ esac; \ ++ }; then \ ++ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ ++ rm -f $$tmpdir/$$lang.new.po; \ ++ else \ ++ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ ++ :; \ ++ else \ ++ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ ++ exit 1; \ ++ fi; \ ++ fi; \ ++ else \ ++ echo "msgmerge for $$lang.po failed!" 1>&2; \ ++ rm -f $$tmpdir/$$lang.new.po; \ ++ fi ++ ++$(DUMMYPOFILES): ++ ++update-gmo: Makefile $(GMOFILES) ++ @: ++ ++# Recreate Makefile by invoking config.status. Explicitly invoke the shell, ++# because execution permission bits may not work on the current file system. ++# Use @SHELL@, which is the shell determined by autoconf for the use by its ++# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. ++Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ ++ cd $(top_builddir) \ ++ && @SHELL@ ./config.status $(subdir)/$@.in po-directories ++ ++force: ++ ++# Tell versions [3.59,3.63) of GNU make not to export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff --git a/po/Makevars b/po/Makevars +new file mode 100644 +index 0000000..9358730 +--- /dev/null ++++ b/po/Makevars +@@ -0,0 +1,81 @@ ++# Makefile variables for PO directory in any package using GNU gettext. ++# ++# Copyright (C) 2003-2019 Free Software Foundation, Inc. ++# This file is free software; the Free Software Foundation gives ++# unlimited permission to use, copy, distribute, and modify it. ++ ++# Usually the message domain is the same as the package name. ++DOMAIN = kylin-chkname ++ ++# These two variables depend on the location of this directory. ++top_builddir = .. ++ ++# These options get passed to xgettext. ++XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ ++ ++# This is the copyright holder that gets inserted into the header of the ++# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding ++# package. (Note that the msgstr strings, extracted from the package's ++# sources, belong to the copyright holder of the package.) Translators are ++# expected to transfer the copyright for their translations to this person ++# or entity, or to disclaim their copyright. The empty string stands for ++# the public domain; in this case the translators are expected to disclaim ++# their copyright. ++COPYRIGHT_HOLDER = KylinSoft Co., Ltd. [2025].All rights reserved. ++ ++# This tells whether or not to prepend "GNU " prefix to the package ++# name that gets inserted into the header of the $(DOMAIN).pot file. ++# Possible values are "yes", "no", or empty. If it is empty, try to ++# detect it automatically by scanning the files in $(top_srcdir) for ++# "GNU packagename" string. ++PACKAGE_GNU = ++ ++# This is the email address or URL to which the translators shall report ++# bugs in the untranslated strings: ++# - Strings which are not entire sentences, see the maintainer guidelines ++# in the GNU gettext documentation, section 'Preparing Strings'. ++# - Strings which use unclear terms or require additional context to be ++# understood. ++# - Strings which make invalid assumptions about notation of date, time or ++# money. ++# - Pluralisation problems. ++# - Incorrect English spelling. ++# - Incorrect formatting. ++# It can be your email address, or a mailing list address where translators ++# can write to without being subscribed, or the URL of a web page through ++# which the translators can contact you. ++MSGID_BUGS_ADDRESS = ++ ++# This is the list of locale categories, beyond LC_MESSAGES, for which the ++# message catalogs shall be used. It is usually empty. ++EXTRA_LOCALE_CATEGORIES = ++ ++# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' ++# context. Possible values are "yes" and "no". Set this to yes if the ++# package uses functions taking also a message context, like pgettext(), or ++# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. ++USE_MSGCTXT = no ++ ++# These options get passed to msgmerge. ++# Useful options are in particular: ++# --previous to keep previous msgids of translated messages, ++# --quiet to reduce the verbosity. ++MSGMERGE_OPTIONS = ++ ++# These options get passed to msginit. ++# If you want to disable line wrapping when writing PO files, add ++# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and ++# MSGINIT_OPTIONS. ++MSGINIT_OPTIONS = ++ ++# This tells whether or not to regenerate a PO file when $(DOMAIN).pot ++# has changed. Possible values are "yes" and "no". Set this to no if ++# the POT file is checked in the repository and the version control ++# program ignores timestamps. ++PO_DEPENDS_ON_POT = yes ++ ++# This tells whether or not to forcibly update $(DOMAIN).pot and ++# regenerate PO files on "make dist". Possible values are "yes" and ++# "no". Set this to no if the POT file and PO files are maintained ++# externally. ++DIST_DEPENDS_ON_UPDATE_PO = yes +diff --git a/po/POTFILES.in b/po/POTFILES.in +new file mode 100644 +index 0000000..9c2527c +--- /dev/null ++++ b/po/POTFILES.in +@@ -0,0 +1,2 @@ ++# List of source files which contain translatable strings. ++kylin-chkname.c +diff --git a/po/Rules-quot b/po/Rules-quot +new file mode 100644 +index 0000000..18c024b +--- /dev/null ++++ b/po/Rules-quot +@@ -0,0 +1,62 @@ ++# Special Makefile rules for English message catalogs with quotation marks. ++# ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# This file, Rules-quot, and its auxiliary files (listed under ++# DISTFILES.common.extra1) are free software; the Free Software Foundation ++# gives unlimited permission to use, copy, distribute, and modify them. ++ ++DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot ++ ++.SUFFIXES: .insert-header .po-update-en ++ ++en@quot.po-create: ++ $(MAKE) en@quot.po-update ++en@boldquot.po-create: ++ $(MAKE) en@boldquot.po-update ++ ++en@quot.po-update: en@quot.po-update-en ++en@boldquot.po-update: en@boldquot.po-update-en ++ ++.insert-header.po-update-en: ++ @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ ++ if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ ++ tmpdir=`pwd`; \ ++ echo "$$lang:"; \ ++ ll=`echo $$lang | sed -e 's/@.*//'`; \ ++ LC_ALL=C; export LC_ALL; \ ++ cd $(srcdir); \ ++ if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \ ++ | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \ ++ { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \ ++ $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \ ++ ;; \ ++ *) \ ++ $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \ ++ ;; \ ++ esac } 2>/dev/null > $$tmpdir/$$lang.new.po \ ++ ; then \ ++ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ ++ rm -f $$tmpdir/$$lang.new.po; \ ++ else \ ++ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ ++ :; \ ++ else \ ++ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ ++ exit 1; \ ++ fi; \ ++ fi; \ ++ else \ ++ echo "creation of $$lang.po failed!" 1>&2; \ ++ rm -f $$tmpdir/$$lang.new.po; \ ++ fi ++ ++en@quot.insert-header: insert-header.sin ++ sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header ++ ++en@boldquot.insert-header: insert-header.sin ++ sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header ++ ++mostlyclean: mostlyclean-quot ++mostlyclean-quot: ++ rm -f *.insert-header +diff --git a/po/bo_CN.gmo b/po/bo_CN.gmo +new file mode 100644 +index 0000000..f974205 +--- /dev/null ++++ b/po/bo_CN.gmo +@@ -0,0 +1,14 @@ ++������ ���������������������0�����1�����I�����`�������������������� ������'������ �����������=���(��5���f��������{���=���������~���\��{������`���W��6������B����������2�������������f������� ������� ++����� ��� ���������������������������������� ++����������������Invaild username length�Invalid username regex�Open reserved-names file failed�Parameter name is null�Reserved username�Success�Unknown error�Username cannot be a hexadecimal number�Username cannot be fully numeric�Username cannot be octal number�Username must start with a letter, number, dot, or underscore�Username's length must be between 1 and 32 characters�Project-Id-Version: kylin-chkname ++Report-Msgid-Bugs-To: ++PO-Revision-Date: 2022-07-08 06:12+0000 ++Last-Translator: kylinmy <mengyuan@kylinos.cn> ++Language-Team: Tibetan (China) <http://weblate.openkylin.top/projects/libchkuid/libchkuid/bo_CN/> ++Language: bo_CN ++MIME-Version: 1.0 ++Content-Type: text/plain; charset=UTF-8 ++Content-Transfer-Encoding: 8bit ++Plural-Forms: nplurals=1; plural=0; ++X-Generator: Weblate 4.12.1-dev ++�གོ་མི་ཐུབ་པའི་སྤྱོད་མཁན་གྱི་མིང་རིང་ཐུང་།�གོ་མི་ཆོད་པའི་སྤྱོད་མཁན་གྱི་མིང་བསྐྱར་དུ་ཞིབ་འཇུག་བྱས།�ཁ་ཕྱེ་ནས་སོར་ཉར་བྱས་པའི་མིང་ཡིག་ཆ་ལ་ཕམ་ཉེས�གྲངས་ཀ་འདིའི་མིང་ནི་གོ་མི་སྲིད་པ་ཞིག་རེད།�སོར་ཉར་བྱས་པའི་སྤྱོད་མཁན་གྱི་མིང�ལེགས་འགྲུབ་བྱུང་བ།�ཤེས་མེད་པའི་ནོར་འཁྲུལ།�སྤྱོད་མཁན་གྱི་མིང་ནི་ཁེ་བཟང་ཟ་བའི་ཨང་གྲངས་ཡིན་མི་སྲིད།�སྤྱོད་མཁན་གྱི་མིང་ལ་གྲངས་ཀ་ཆ་ཚང་ཞིག་ཡོད་མི་སྲིད།�སྤྱོད་མཁན་གྱི་མིང་ནི་ཨང་ཀི་བརྒྱད་པའི་ཨང་གྲངས་ཡིན་མི�སྤྱོད་མཁན་གྱི་མིང་ནི་ངེས་པར་དུ་འཕྲིན་ཡིག་དང་། ཨང་གྲངས། ཚེག་རྡར། ཡང་ན་ནན་བཤད་བཅས་ནས་འགོ་�སྤྱོད་མཁན་གྱི་རིང་ཚད་ནི་ངེས་པར་དུ་ཡི་གེ་1ནས་32བར་ཡིན་དགོས།� +\ No newline at end of file +diff --git a/po/bo_CN.po b/po/bo_CN.po +new file mode 100644 +index 0000000..ef19637 +--- /dev/null ++++ b/po/bo_CN.po +@@ -0,0 +1,62 @@ ++# Copyright (C) 2022 KylinSoft@Copyright ++# ++msgid "" ++msgstr "" ++"Project-Id-Version: kylin-chkname\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2021-08-30 14:30+0800\n" ++"PO-Revision-Date: 2022-07-08 06:12+0000\n" ++"Last-Translator: kylinmy <mengyuan@kylinos.cn>\n" ++"Language-Team: Tibetan (China) <http://weblate.openkylin.top/projects/" ++"libchkuid/libchkuid/bo_CN/>\n" ++"Language: bo_CN\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: Weblate 4.12.1-dev\n" ++ ++#: ../chkname.c:77 ++msgid "Success" ++msgstr "ལེགས་འགྲུབ་བྱུང་བ།" ++ ++#: ../chkname.c:79 ++msgid "Invaild username length" ++msgstr "གོ་མི་ཐུབ་པའི་སྤྱོད་མཁན་གྱི་མིང་རིང་ཐུང་།" ++ ++#: ../chkname.c:81 ++msgid "Invalid username regex" ++msgstr "གོ་མི་ཆོད་པའི་སྤྱོད་མཁན་གྱི་མིང་བསྐྱར་དུ་ཞིབ་འཇུག་བྱས།" ++ ++#: ../chkname.c:83 ++msgid "Reserved username" ++msgstr "སོར་ཉར་བྱས་པའི་སྤྱོད་མཁན་གྱི་མིང" ++ ++#: ../chkname.c:85 ++msgid "Unknown error" ++msgstr "ཤེས་མེད་པའི་ནོར་འཁྲུལ།" ++ ++#: ../chkname.c:94 ++msgid "Parameter name is null" ++msgstr "གྲངས་ཀ་འདིའི་མིང་ནི་གོ་མི་སྲིད་པ་ཞིག་རེད།" ++ ++#: ../chkname.c:96 ++msgid "Open reserved-names file failed" ++msgstr "ཁ་ཕྱེ་ནས་སོར་ཉར་བྱས་པའི་མིང་ཡིག་ཆ་ལ་ཕམ་ཉེས" ++ ++msgid "Username's length must be between 1 and 32 characters" ++msgstr "སྤྱོད་མཁན་གྱི་རིང་ཚད་ནི་ངེས་པར་དུ་ཡི་གེ་1ནས་32བར་ཡིན་དགོས།" ++ ++msgid "Username must start with a letter, number, dot, or underscore" ++msgstr "" ++"སྤྱོད་མཁན་གྱི་མིང་ནི་ངེས་པར་དུ་འཕྲིན་ཡིག་དང་། ཨང་གྲངས། ཚེག་རྡར། " ++"ཡང་ན་ནན་བཤད་བཅས་ནས་འགོ་" ++ ++msgid "Username cannot be a hexadecimal number" ++msgstr "སྤྱོད་མཁན་གྱི་མིང་ནི་ཁེ་བཟང་ཟ་བའི་ཨང་གྲངས་ཡིན་མི་སྲིད།" ++ ++msgid "Username cannot be octal number" ++msgstr "སྤྱོད་མཁན་གྱི་མིང་ནི་ཨང་ཀི་བརྒྱད་པའི་ཨང་གྲངས་ཡིན་མི" ++ ++msgid "Username cannot be fully numeric" ++msgstr "སྤྱོད་མཁན་གྱི་མིང་ལ་གྲངས་ཀ་ཆ་ཚང་ཞིག་ཡོད་མི་སྲིད།" +diff --git a/po/boldquot.sed b/po/boldquot.sed +new file mode 100644 +index 0000000..4b937aa +--- /dev/null ++++ b/po/boldquot.sed +@@ -0,0 +1,10 @@ ++s/"\([^"]*\)"/“\1”/g ++s/`\([^`']*\)'/‘\1’/g ++s/ '\([^`']*\)' / ‘\1’ /g ++s/ '\([^`']*\)'$/ ‘\1’/g ++s/^'\([^`']*\)' /‘\1’ /g ++s/“”/""/g ++s/“/“[1m/g ++s/”/[0m”/g ++s/‘/‘[1m/g ++s/’/[0m’/g +diff --git a/po/en@boldquot.header b/po/en@boldquot.header +new file mode 100644 +index 0000000..506ca9e +--- /dev/null ++++ b/po/en@boldquot.header +@@ -0,0 +1,25 @@ ++# All this catalog "translates" are quotation characters. ++# The msgids must be ASCII and therefore cannot contain real quotation ++# characters, only substitutes like grave accent (0x60), apostrophe (0x27) ++# and double quote (0x22). These substitutes look strange; see ++# https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html ++# ++# This catalog translates grave accent (0x60) and apostrophe (0x27) to ++# left single quotation mark (U+2018) and right single quotation mark (U+2019). ++# It also translates pairs of apostrophe (0x27) to ++# left single quotation mark (U+2018) and right single quotation mark (U+2019) ++# and pairs of quotation mark (0x22) to ++# left double quotation mark (U+201C) and right double quotation mark (U+201D). ++# ++# When output to an UTF-8 terminal, the quotation characters appear perfectly. ++# When output to an ISO-8859-1 terminal, the single quotation marks are ++# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to ++# grave/acute accent (by libiconv), and the double quotation marks are ++# transliterated to 0x22. ++# When output to an ASCII terminal, the single quotation marks are ++# transliterated to apostrophes, and the double quotation marks are ++# transliterated to 0x22. ++# ++# This catalog furthermore displays the text between the quotation marks in ++# bold face, assuming the VT100/XTerm escape sequences. ++# +diff --git a/po/en@quot.header b/po/en@quot.header +new file mode 100644 +index 0000000..6522f0c +--- /dev/null ++++ b/po/en@quot.header +@@ -0,0 +1,22 @@ ++# All this catalog "translates" are quotation characters. ++# The msgids must be ASCII and therefore cannot contain real quotation ++# characters, only substitutes like grave accent (0x60), apostrophe (0x27) ++# and double quote (0x22). These substitutes look strange; see ++# https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html ++# ++# This catalog translates grave accent (0x60) and apostrophe (0x27) to ++# left single quotation mark (U+2018) and right single quotation mark (U+2019). ++# It also translates pairs of apostrophe (0x27) to ++# left single quotation mark (U+2018) and right single quotation mark (U+2019) ++# and pairs of quotation mark (0x22) to ++# left double quotation mark (U+201C) and right double quotation mark (U+201D). ++# ++# When output to an UTF-8 terminal, the quotation characters appear perfectly. ++# When output to an ISO-8859-1 terminal, the single quotation marks are ++# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to ++# grave/acute accent (by libiconv), and the double quotation marks are ++# transliterated to 0x22. ++# When output to an ASCII terminal, the single quotation marks are ++# transliterated to apostrophes, and the double quotation marks are ++# transliterated to 0x22. ++# +diff --git a/po/insert-header.sin b/po/insert-header.sin +new file mode 100644 +index 0000000..ceeebb9 +--- /dev/null ++++ b/po/insert-header.sin +@@ -0,0 +1,28 @@ ++# Sed script that inserts the file called HEADER before the header entry. ++# ++# Copyright (C) 2001 Free Software Foundation, Inc. ++# Written by Bruno Haible <bruno@clisp.org>, 2001. ++# This file is free software; the Free Software Foundation gives ++# unlimited permission to use, copy, distribute, and modify it. ++# ++# At each occurrence of a line starting with "msgid ", we execute the following ++# commands. At the first occurrence, insert the file. At the following ++# occurrences, do nothing. The distinction between the first and the following ++# occurrences is achieved by looking at the hold space. ++/^msgid /{ ++x ++# Test if the hold space is empty. ++s/m/m/ ++ta ++# Yes it was empty. First occurrence. Read the file. ++r HEADER ++# Output the file's contents by reading the next line. But don't lose the ++# current line while doing this. ++g ++N ++bb ++:a ++# The hold space was nonempty. Following occurrences. Do nothing. ++x ++:b ++} +diff --git a/po/kk.gmo b/po/kk.gmo +new file mode 100644 +index 0000000..655cb36 +--- /dev/null ++++ b/po/kk.gmo +@@ -0,0 +1,11 @@ ++������ ���������������������0�����1�����I�����`�������������������� ������'������ �����������=���(��5���f�������D������=������F���<��$������0������������������Y�����G���^��M�������������n���|����� ��� ���������������������������������� ++����������������Invaild username length�Invalid username regex�Open reserved-names file failed�Parameter name is null�Reserved username�Success�Unknown error�Username cannot be a hexadecimal number�Username cannot be fully numeric�Username cannot be octal number�Username must start with a letter, number, dot, or underscore�Username's length must be between 1 and 32 characters�Project-Id-Version: kylin-chkname ++Report-Msgid-Bugs-To: ++PO-Revision-Date: 2025-03-18 14:30+0800 ++Last-Translator: mengyuan <mengyuan@kylinos.cn> ++Language-Team: LANGUAGE <LL@li.org> ++Language: kk ++MIME-Version: 1.0 ++Content-Type: text/plain; charset=UTF-8 ++Content-Transfer-Encoding: 8bit ++�Қолы жоқ пайдаланушы атының ұзындығы�Жарамсыз пайдаланушы аты регексі�Сақталған атаулар файлын ашу жаңылысы�Параметр атауы - нөл�Сақталған пайдаланушы аты�Сәттілік�Беймәлім қате�Пайдаланушы аты гексадецималды сан бола алмайды�Пайдаланушы аты толық сан бола алмайды�Пайдаланушы аты сегіздік сан бола алмайды�Пайдаланушы аты әріптен, саннан, нүктеден немесе астын сызып бастау керек�Пайдаланушы атының ұзындығы 1-ден 32 таңбаға дейін болуы тиіс� +\ No newline at end of file +diff --git a/po/kk.po b/po/kk.po +new file mode 100644 +index 0000000..b4f6ad1 +--- /dev/null ++++ b/po/kk.po +@@ -0,0 +1,58 @@ ++# Copyright (C) 2025 KylinSoft@Copyright ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: kylin-chkname\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2025-03-18 14:30+0800\n" ++"PO-Revision-Date: 2025-03-18 14:30+0800\n" ++"Last-Translator: mengyuan <mengyuan@kylinos.cn>\n" ++"Language-Team: LANGUAGE <LL@li.org>\n" ++"Language: kk\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++ ++#: ../chkname.c:77 ++msgid "Success" ++msgstr "Сәттілік" ++ ++#: ../chkname.c:79 ++msgid "Invaild username length" ++msgstr "Қолы жоқ пайдаланушы атының ұзындығы" ++ ++#: ../chkname.c:81 ++msgid "Invalid username regex" ++msgstr "Жарамсыз пайдаланушы аты регексі" ++ ++#: ../chkname.c:83 ++msgid "Reserved username" ++msgstr "Сақталған пайдаланушы аты" ++ ++#: ../chkname.c:85 ++msgid "Unknown error" ++msgstr "Беймәлім қате" ++ ++#: ../chkname.c:94 ++msgid "Parameter name is null" ++msgstr "Параметр атауы - нөл" ++ ++#: ../chkname.c:96 ++msgid "Open reserved-names file failed" ++msgstr "Сақталған атаулар файлын ашу жаңылысы" ++ ++msgid "Username's length must be between 1 and 32 characters" ++msgstr "Пайдаланушы атының ұзындығы 1-ден 32 таңбаға дейін болуы тиіс" ++ ++msgid "Username must start with a letter, number, dot, or underscore" ++msgstr "Пайдаланушы аты әріптен, саннан, нүктеден немесе астын сызып бастау керек" ++ ++msgid "Username cannot be a hexadecimal number" ++msgstr "Пайдаланушы аты гексадецималды сан бола алмайды" ++ ++msgid "Username cannot be octal number" ++msgstr "Пайдаланушы аты сегіздік сан бола алмайды" ++ ++msgid "Username cannot be fully numeric" ++msgstr "Пайдаланушы аты толық сан бола алмайды" +diff --git a/po/ky.gmo b/po/ky.gmo +new file mode 100644 +index 0000000..29d3000 +--- /dev/null ++++ b/po/ky.gmo +@@ -0,0 +1,11 @@ ++������������|�������������� �����!�����8�����X�����o�������� ������'������ ������������=������5���>����t��W������X������5���B��0���x��������������Y������V���,��P������|����������Q������������������������������������������� ������ ++����������Invalid username regex�Open reserved-names file failed�Parameter name is null�Reserved username�Success�Unknown error�Username cannot be a hexadecimal number�Username cannot be fully numeric�Username cannot be octal number�Username must start with a letter, number, dot, or underscore�Username's length must be between 1 and 32 characters�Project-Id-Version: kylin-chkname ++Report-Msgid-Bugs-To: ++PO-Revision-Date: 2025-03-17 16:36+0800 ++Last-Translator: mengyuan <mengyuan@kylinos.cn> ++Language-Team: LANGUAGE <LL@li.org> ++Language: ky ++MIME-Version: 1.0 ++Content-Type: text/plain; charset=UTF-8 ++Content-Transfer-Encoding: 8bit ++�Колдонуучу аты туура эмес регулярдуу выражение�Резервделген аттар файлын ачуу ишке ашпай калды�Колдонуучу аты параметри бош�Резервдеги колдонуучу аты�Ийгилик�Белгисиз ката�Колдонуучу аты он алтылык сан болушу мүмкүн эмес�Колдонуучу аты толук сандык болушу мүмкүн эмес�Колдонуучу аты сегиз сан болушу мүмкүн эмес�Колдонуучу аты тамга, сан, чекит же асты сызык менен башталышы керек�Колдонуучу атыңыздын узундугу 1 жана 32 тамгалардын ортосунда болушу керек� +\ No newline at end of file +diff --git a/po/ky.po b/po/ky.po +new file mode 100644 +index 0000000..b987059 +--- /dev/null ++++ b/po/ky.po +@@ -0,0 +1,59 @@ ++# Copyright (C) KylinSoft@Copyright ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: kylin-chkname\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2025-03-17 16:36+0800\n" ++"PO-Revision-Date: 2025-03-17 16:36+0800\n" ++"Last-Translator: mengyuan <mengyuan@kylinos.cn>\n" ++"Language-Team: LANGUAGE <LL@li.org>\n" ++"Language: ky\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++ ++#: ../kylin-chkname.c:137 ++msgid "Success" ++msgstr "Ийгилик" ++ ++#: ../kylin-chkname.c:139 ++msgid "Username's length must be between 1 and 32 characters" ++msgstr "Колдонуучу атыңыздын узундугу 1 жана 32 тамгалардын ортосунда болушу керек" ++ ++#: ../kylin-chkname.c:141 ++msgid "Invalid username regex" ++msgstr "Колдонуучу аты туура эмес регулярдуу выражение" ++ ++#: ../kylin-chkname.c:143 ++msgid "Reserved username" ++msgstr "Резервдеги колдонуучу аты" ++ ++#: ../kylin-chkname.c:145 ++msgid "Parameter name is null" ++msgstr "Колдонуучу аты параметри бош" ++ ++#: ../kylin-chkname.c:147 ++msgid "Open reserved-names file failed" ++msgstr "Резервделген аттар файлын ачуу ишке ашпай калды" ++ ++#: ../kylin-chkname.c:149 ++msgid "Username must start with a letter, number, dot, or underscore" ++msgstr "Колдонуучу аты тамга, сан, чекит же асты сызык менен башталышы керек" ++ ++#: ../kylin-chkname.c:151 ++msgid "Username cannot be a hexadecimal number" ++msgstr "Колдонуучу аты он алтылык сан болушу мүмкүн эмес" ++ ++#: ../kylin-chkname.c:153 ++msgid "Username cannot be octal number" ++msgstr "Колдонуучу аты сегиз сан болушу мүмкүн эмес" ++ ++#: ../kylin-chkname.c:155 ++msgid "Username cannot be fully numeric" ++msgstr "Колдонуучу аты толук сандык болушу мүмкүн эмес" ++ ++#: ../kylin-chkname.c:157 ++msgid "Unknown error" ++msgstr "Белгисиз ката" +diff --git a/po/mn.gmo b/po/mn.gmo +new file mode 100644 +index 0000000..f9f032e +--- /dev/null ++++ b/po/mn.gmo +@@ -0,0 +1,14 @@ ++������ ���������������������0�����1�����I�����`�������������������� ������'������ �����������=���(��5���f��������o���=��u����������#��y����������$��������2���������� �������������V���� ������& ++����� ��� ���������������������������������� ++����������������Invaild username length�Invalid username regex�Open reserved-names file failed�Parameter name is null�Reserved username�Success�Unknown error�Username cannot be a hexadecimal number�Username cannot be fully numeric�Username cannot be octal number�Username must start with a letter, number, dot, or underscore�Username's length must be between 1 and 32 characters�Project-Id-Version: kylin-chkname ++Report-Msgid-Bugs-To: ++PO-Revision-Date: 2023-08-03 03:08+0000 ++Last-Translator: kylinmy <mengyuan@kylinos.cn> ++Language-Team: Mongolian <http://weblate.openkylin.top/projects/libchkuid-master/libchkuid/mn/> ++Language: mn ++MIME-Version: 1.0 ++Content-Type: text/plain; charset=UTF-8 ++Content-Transfer-Encoding: 8bit ++Plural-Forms: nplurals=2; plural=n != 1; ++X-Generator: Weblate 4.12.1-dev ++�ᠬᠠᠤᠯᠢ ᠪᠤᠰᠤ ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠵᠢᠨ ᠤᠷᠳᠤ�ᠬᠠᠤᠯᠢ ᠪᠤᠰᠤ ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠵᠢᠨ ᠵᠠᠭᠪᠤᠷ�ᠨᠡᠬᠡᠬᠡᠭᠰᠡᠨ ᠦᠯᠡᠳᠡᠭᠡᠵᠤ ᠬᠠᠳᠠᠭᠠᠯᠠᠭᠰᠠᠨ ᠹᠠᠢᠯ ᠢ᠋ ᠪᠤᠷᠤᠭᠤ�ᠪᠤᠯᠵᠣᠯᠲᠤ ᠲᠣᠭᠠ ᠨᠢ ᠬᠣᠭᠣᠰᠣᠨ ᠪᠠᠶᠢᠵᠤ ᠪᠣᠯᠬᠤ ᠦᠭᠡᠢ ᠃�ᠰᠢᠰᠲ᠋ᠧᠮ ᠤ᠋ᠨ ᠬᠠᠳᠠᠭᠠᠯᠠᠵᠤ ᠦᠯᠡᠳᠡᠭᠡᠭᠰᠡᠨ ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ�ᠦᠩᠬᠡᠷᠡᠪᠡ�ᠦᠯᠦ ᠮᠡᠳᠡᠬᠦ ᠠᠯᠳᠠᠭᠠ�ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠨᠢ16 ᠪᠡᠷ ᠳᠠᠪᠰᠢᠬᠤ ᠳᠦᠷᠢᠮ ᠤ᠋ᠨ ᠲᠤᠭᠠ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ�ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠨᠢ ᠴᠤᠯᠤ ᠲᠤᠭᠠ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ�ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠨᠢ 8 ᠪᠡᠷ ᠳᠠᠪᠰᠢᠬᠤ ᠳᠦᠷᠢᠮ ᠤ᠋ᠨ ᠲᠤᠭᠠ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ�ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠨᠢ ᠡᠷᠬᠡᠪᠰᠢ ᠠᠪᠢᠶᠠ᠂ ᠲᠤᠭᠠ᠂ ᠴᠡᠭ ᠪᠤᠶᠤ ᠳᠤᠤᠷᠠ ᠵᠢᠷᠤᠭᠠᠰᠤ ᠪᠡᠷ ᠡᠬᠢᠯᠡᠭᠰᠡᠨ ᠪᠠᠢᠬᠤ ᠬᠡᠷᠡᠭᠳᠡᠢ�ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠵᠢᠨ ᠤᠷᠳᠤ ᠨᠢ ᠡᠷᠬᠡᠪᠰᠢ1 ᠡᠴᠡ32 ᠦᠰᠦᠭ ᠳᠡᠮᠳᠡᠭ ᠤ᠋ᠨ ᠬᠤᠭᠤᠷᠤᠨᠳᠤ ᠪᠠᠢᠬᠤ ᠬᠡᠷᠡᠭᠳᠡᠢ� +\ No newline at end of file +diff --git a/po/mn.po b/po/mn.po +new file mode 100644 +index 0000000..cd45fff +--- /dev/null ++++ b/po/mn.po +@@ -0,0 +1,64 @@ ++# Copyright (C) 2022 KylinSoft@Copyright ++# ++msgid "" ++msgstr "" ++"Project-Id-Version: kylin-chkname\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2021-08-30 14:30+0800\n" ++"PO-Revision-Date: 2023-08-03 03:08+0000\n" ++"Last-Translator: kylinmy <mengyuan@kylinos.cn>\n" ++"Language-Team: Mongolian <http://weblate.openkylin.top/projects/" ++"libchkuid-master/libchkuid/mn/>\n" ++"Language: mn\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 4.12.1-dev\n" ++ ++#: ../chkname.c:77 ++msgid "Success" ++msgstr "ᠦᠩᠬᠡᠷᠡᠪᠡ" ++ ++#: ../chkname.c:79 ++msgid "Invaild username length" ++msgstr "ᠬᠠᠤᠯᠢ ᠪᠤᠰᠤ ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠵᠢᠨ ᠤᠷᠳᠤ" ++ ++#: ../chkname.c:81 ++msgid "Invalid username regex" ++msgstr "ᠬᠠᠤᠯᠢ ᠪᠤᠰᠤ ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠵᠢᠨ ᠵᠠᠭᠪᠤᠷ" ++ ++#: ../chkname.c:83 ++msgid "Reserved username" ++msgstr "ᠰᠢᠰᠲ᠋ᠧᠮ ᠤ᠋ᠨ ᠬᠠᠳᠠᠭᠠᠯᠠᠵᠤ ᠦᠯᠡᠳᠡᠭᠡᠭᠰᠡᠨ ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ" ++ ++#: ../chkname.c:85 ++msgid "Unknown error" ++msgstr "ᠦᠯᠦ ᠮᠡᠳᠡᠬᠦ ᠠᠯᠳᠠᠭᠠ" ++ ++#: ../chkname.c:94 ++msgid "Parameter name is null" ++msgstr "ᠪᠤᠯᠵᠣᠯᠲᠤ ᠲᠣᠭᠠ ᠨᠢ ᠬᠣᠭᠣᠰᠣᠨ ᠪᠠᠶᠢᠵᠤ ᠪᠣᠯᠬᠤ ᠦᠭᠡᠢ ᠃" ++ ++#: ../chkname.c:96 ++msgid "Open reserved-names file failed" ++msgstr "ᠨᠡᠬᠡᠬᠡᠭᠰᠡᠨ ᠦᠯᠡᠳᠡᠭᠡᠵᠤ ᠬᠠᠳᠠᠭᠠᠯᠠᠭᠰᠠᠨ ᠹᠠᠢᠯ ᠢ᠋ ᠪᠤᠷᠤᠭᠤ" ++ ++msgid "Username's length must be between 1 and 32 characters" ++msgstr "" ++"ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠵᠢᠨ ᠤᠷᠳᠤ ᠨᠢ ᠡᠷᠬᠡᠪᠰᠢ1 ᠡᠴᠡ32 ᠦᠰᠦᠭ ᠳᠡᠮᠳᠡᠭ ᠤ᠋ᠨ ᠬᠤᠭᠤᠷᠤᠨᠳᠤ " ++"ᠪᠠᠢᠬᠤ ᠬᠡᠷᠡᠭᠳᠡᠢ" ++ ++msgid "Username must start with a letter, number, dot, or underscore" ++msgstr "" ++"ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠨᠢ ᠡᠷᠬᠡᠪᠰᠢ ᠠᠪᠢᠶᠠ᠂ ᠲᠤᠭᠠ᠂ ᠴᠡᠭ ᠪᠤᠶᠤ ᠳᠤᠤᠷᠠ ᠵᠢᠷᠤᠭᠠᠰᠤ ᠪᠡᠷ " ++"ᠡᠬᠢᠯᠡᠭᠰᠡᠨ ᠪᠠᠢᠬᠤ ᠬᠡᠷᠡᠭᠳᠡᠢ" ++ ++msgid "Username cannot be a hexadecimal number" ++msgstr "ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠨᠢ16 ᠪᠡᠷ ᠳᠠᠪᠰᠢᠬᠤ ᠳᠦᠷᠢᠮ ᠤ᠋ᠨ ᠲᠤᠭᠠ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ" ++ ++msgid "Username cannot be octal number" ++msgstr "ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠨᠢ 8 ᠪᠡᠷ ᠳᠠᠪᠰᠢᠬᠤ ᠳᠦᠷᠢᠮ ᠤ᠋ᠨ ᠲᠤᠭᠠ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ" ++ ++msgid "Username cannot be fully numeric" ++msgstr "ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷᠡ ᠨᠢ ᠴᠤᠯᠤ ᠲᠤᠭᠠ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ" +\ No newline at end of file +diff --git a/po/quot.sed b/po/quot.sed +new file mode 100644 +index 0000000..0122c46 +--- /dev/null ++++ b/po/quot.sed +@@ -0,0 +1,6 @@ ++s/"\([^"]*\)"/“\1”/g ++s/`\([^`']*\)'/‘\1’/g ++s/ '\([^`']*\)' / ‘\1’ /g ++s/ '\([^`']*\)'$/ ‘\1’/g ++s/^'\([^`']*\)' /‘\1’ /g ++s/“”/""/g +diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin +new file mode 100644 +index 0000000..8c70dfb +--- /dev/null ++++ b/po/remove-potcdate.sin +@@ -0,0 +1,25 @@ ++# Sed script that removes the POT-Creation-Date line in the header entry ++# from a POT file. ++# ++# Copyright (C) 2002 Free Software Foundation, Inc. ++# Copying and distribution of this file, with or without modification, ++# are permitted in any medium without royalty provided the copyright ++# notice and this notice are preserved. This file is offered as-is, ++# without any warranty. ++# ++# The distinction between the first and the following occurrences of the ++# pattern is achieved by looking at the hold space. ++/^"POT-Creation-Date: .*"$/{ ++x ++# Test if the hold space is empty. ++s/P/P/ ++ta ++# Yes it was empty. First occurrence. Remove the line. ++g ++d ++bb ++:a ++# The hold space was nonempty. Following occurrences. Do nothing. ++x ++:b ++} +diff --git a/po/ug.gmo b/po/ug.gmo +new file mode 100644 +index 0000000..b7b02a0 +--- /dev/null ++++ b/po/ug.gmo +@@ -0,0 +1,11 @@ ++������������|�������������� �����!�����8�����X�����o�������� ������'������ ������������=������5���>����t��8������]������5���(��4���^��������������Q������c�����W�������������x���a������������������������������������������� ������ ++����������Invalid username regex�Open reserved-names file failed�Parameter name is null�Reserved username�Success�Unknown error�Username cannot be a hexadecimal number�Username cannot be fully numeric�Username cannot be octal number�Username must start with a letter, number, dot, or underscore�Username's length must be between 1 and 32 characters�Project-Id-Version: kylin-chkname ++Report-Msgid-Bugs-To: ++PO-Revision-Date: 2025-03-17 16:36+0800 ++Last-Translator: mengyuan <mengyuan@kylinos.cn> ++Language-Team: LANGUAGE <LL@li.org> ++Language: ug ++MIME-Version: 1.0 ++Content-Type: text/plain; charset=UTF-8 ++Content-Transfer-Encoding: 8bit ++�ئىشلەتكۈچى نامى regex ئىناۋەتسىز�قالدۇرۇلغان ئىسىملار ھۆججىتىنى ئېچىش مەغلۇپ بولدى�ئابونت نامى پارامېتىرى قۇرۇق�قالدۇرۇلغان ئىشلەتكۈچى نامى�باشارغۇچىلىق�نامەلۇم خاتالىق�ئىشلەتكۈچى نامى ئالتە ئونلۇق سان بولالمايدۇ�ئىشلەتكۈچى نامى پۈتۈنلەي رەقەملىك بولالايدىغان ئەمەس�ئىشلەتكۈچى نامى سەككىز نومۇرلۇق سان بولالمايدۇ�ئىشلەتكۈچى نامى ھەرپ، رەقەم، چېكىت ياكى ئاستى بەلگە بىلەن باشلىنىشى كېرەك�ئىشلەتكۈچى نامىنىڭ ئۇزۇنلۇقى 1 دىن 32 ھەرپ ئارىلىقىدا بولۇشى كېرەك� +\ No newline at end of file +diff --git a/po/ug.po b/po/ug.po +new file mode 100644 +index 0000000..8174ebb +--- /dev/null ++++ b/po/ug.po +@@ -0,0 +1,59 @@ ++# Copyright (C) 2025 KylinSoft@Copyright ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: kylin-chkname\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2025-03-17 16:36+0800\n" ++"PO-Revision-Date: 2025-03-17 16:36+0800\n" ++"Last-Translator: mengyuan <mengyuan@kylinos.cn>\n" ++"Language-Team: LANGUAGE <LL@li.org>\n" ++"Language: ug\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++ ++#: ../kylin-chkname.c:137 ++msgid "Success" ++msgstr "باشارغۇچىلىق" ++ ++#: ../kylin-chkname.c:139 ++msgid "Username's length must be between 1 and 32 characters" ++msgstr "ئىشلەتكۈچى نامىنىڭ ئۇزۇنلۇقى 1 دىن 32 ھەرپ ئارىلىقىدا بولۇشى كېرەك" ++ ++#: ../kylin-chkname.c:141 ++msgid "Invalid username regex" ++msgstr "ئىشلەتكۈچى نامى regex ئىناۋەتسىز" ++ ++#: ../kylin-chkname.c:143 ++msgid "Reserved username" ++msgstr "قالدۇرۇلغان ئىشلەتكۈچى نامى" ++ ++#: ../kylin-chkname.c:145 ++msgid "Parameter name is null" ++msgstr "ئابونت نامى پارامېتىرى قۇرۇق" ++ ++#: ../kylin-chkname.c:147 ++msgid "Open reserved-names file failed" ++msgstr "قالدۇرۇلغان ئىسىملار ھۆججىتىنى ئېچىش مەغلۇپ بولدى" ++ ++#: ../kylin-chkname.c:149 ++msgid "Username must start with a letter, number, dot, or underscore" ++msgstr "ئىشلەتكۈچى نامى ھەرپ، رەقەم، چېكىت ياكى ئاستى بەلگە بىلەن باشلىنىشى كېرەك" ++ ++#: ../kylin-chkname.c:151 ++msgid "Username cannot be a hexadecimal number" ++msgstr "ئىشلەتكۈچى نامى ئالتە ئونلۇق سان بولالمايدۇ" ++ ++#: ../kylin-chkname.c:153 ++msgid "Username cannot be octal number" ++msgstr "ئىشلەتكۈچى نامى سەككىز نومۇرلۇق سان بولالمايدۇ" ++ ++#: ../kylin-chkname.c:155 ++msgid "Username cannot be fully numeric" ++msgstr "ئىشلەتكۈچى نامى پۈتۈنلەي رەقەملىك بولالايدىغان ئەمەس" ++ ++#: ../kylin-chkname.c:157 ++msgid "Unknown error" ++msgstr "نامەلۇم خاتالىق" +diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo +new file mode 100644 +index 0000000..159cc29 +--- /dev/null ++++ b/po/zh_CN.gmo +@@ -0,0 +1,11 @@ ++������ ���������������������0�����1�����I�����`�������������������� ������'������ �����������=���(��5���f��������������������������������������-�����4�����D�����b�����~��9������0��������� ��� ���������������������������������� ++����������������Invaild username length�Invalid username regex�Open reserved-names file failed�Parameter name is null�Reserved username�Success�Unknown error�Username cannot be a hexadecimal number�Username cannot be fully numeric�Username cannot be octal number�Username must start with a letter, number, dot, or underscore�Username's length must be between 1 and 32 characters�Project-Id-Version: kylin-chkname ++Report-Msgid-Bugs-To: ++PO-Revision-Date: 2021-08-30 14:30+0800 ++Last-Translator: mengyuan <mengyuan@kylinos.cn> ++Language-Team: LANGUAGE <LL@li.org> ++Language: ++MIME-Version: 1.0 ++Content-Type: text/plain; charset=UTF-8 ++Content-Transfer-Encoding: 8bit ++�非法的用户名长度�非法的用户名格式�打开保留名文件错误�参数name为null�系统保留用户名�通过�未知的错误�用户名不能为16进制数�用户名不能为纯数字�用户名不能为8进制数�用户名必须以字母、数字、点或下划线开头�用户名长度必须介于1到32个字符之间� +\ No newline at end of file +diff --git a/po/zh_CN.po b/po/zh_CN.po +new file mode 100644 +index 0000000..a20ab7b +--- /dev/null ++++ b/po/zh_CN.po +@@ -0,0 +1,58 @@ ++# Copyright (C) 2022 KylinSoft@Copyright ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: kylin-chkname\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2021-08-30 14:30+0800\n" ++"PO-Revision-Date: 2021-08-30 14:30+0800\n" ++"Last-Translator: mengyuan <mengyuan@kylinos.cn>\n" ++"Language-Team: LANGUAGE <LL@li.org>\n" ++"Language: \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++ ++#: ../chkname.c:77 ++msgid "Success" ++msgstr "通过" ++ ++#: ../chkname.c:79 ++msgid "Invaild username length" ++msgstr "非法的用户名长度" ++ ++#: ../chkname.c:81 ++msgid "Invalid username regex" ++msgstr "非法的用户名格式" ++ ++#: ../chkname.c:83 ++msgid "Reserved username" ++msgstr "系统保留用户名" ++ ++#: ../chkname.c:85 ++msgid "Unknown error" ++msgstr "未知的错误" ++ ++#: ../chkname.c:94 ++msgid "Parameter name is null" ++msgstr "参数name为null" ++ ++#: ../chkname.c:96 ++msgid "Open reserved-names file failed" ++msgstr "打开保留名文件错误" ++ ++msgid "Username's length must be between 1 and 32 characters" ++msgstr "用户名长度必须介于1到32个字符之间" ++ ++msgid "Username must start with a letter, number, dot, or underscore" ++msgstr "用户名必须以字母、数字、点或下划线开头" ++ ++msgid "Username cannot be a hexadecimal number" ++msgstr "用户名不能为16进制数" ++ ++msgid "Username cannot be octal number" ++msgstr "用户名不能为8进制数" ++ ++msgid "Username cannot be fully numeric" ++msgstr "用户名不能为纯数字" +diff --git a/po/zh_HK.gmo b/po/zh_HK.gmo +new file mode 100644 +index 0000000..312752b +--- /dev/null ++++ b/po/zh_HK.gmo +@@ -0,0 +1,11 @@ ++������ ���������������������0�����1�����I�����`�������������������� ������'������ �����������=���(��5���f��������������������������������������.�����5��!���B�����d��������9������0��������� ��� ���������������������������������� ++����������������Invaild username length�Invalid username regex�Open reserved-names file failed�Parameter name is null�Reserved username�Success�Unknown error�Username cannot be a hexadecimal number�Username cannot be fully numeric�Username cannot be octal number�Username must start with a letter, number, dot, or underscore�Username's length must be between 1 and 32 characters�Project-Id-Version: kylin-chkname ++Report-Msgid-Bugs-To: ++PO-Revision-Date: 2021-08-30 14:30+0800 ++Last-Translator: mengyuan <mengyuan@kylinos.cn> ++Language-Team: LANGUAGE <LL@li.org> ++Language: ++MIME-Version: 1.0 ++Content-Type: text/plain; charset=UTF-8 ++Content-Transfer-Encoding: 8bit ++�非法的用戶名長度�非法的用戶名格式�打開保留名稱檔失敗�參數名稱為空�系統保留用戶名�成功�未知錯誤�用戶名不能是十六進位數�用戶名不能為純數字�用戶名不能是八進位數�用戶名必須以字母、數位、點或下劃線開頭�用戶名長度必須介於1到32個字符之間� +\ No newline at end of file +diff --git a/po/zh_HK.po b/po/zh_HK.po +new file mode 100644 +index 0000000..49a23ca +--- /dev/null ++++ b/po/zh_HK.po +@@ -0,0 +1,51 @@ ++# Copyright (C) 2022 KylinSoft@Copyright ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: kylin-chkname\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2021-08-30 14:30+0800\n" ++"PO-Revision-Date: 2021-08-30 14:30+0800\n" ++"Last-Translator: mengyuan <mengyuan@kylinos.cn>\n" ++"Language-Team: LANGUAGE <LL@li.org>\n" ++"Language: \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++ ++msgid "Invaild username length" ++msgstr "非法的用戶名長度" ++ ++msgid "Invalid username regex" ++msgstr "非法的用戶名格式" ++ ++msgid "Open reserved-names file failed" ++msgstr "打開保留名稱檔失敗" ++ ++msgid "Parameter name is null" ++msgstr "參數名稱為空" ++ ++msgid "Reserved username" ++msgstr "系統保留用戶名" ++ ++msgid "Success" ++msgstr "成功" ++ ++msgid "Unknown error" ++msgstr "未知錯誤" ++ ++msgid "Username cannot be a hexadecimal number" ++msgstr "用戶名不能是十六進位數" ++ ++msgid "Username cannot be fully numeric" ++msgstr "用戶名不能為純數字" ++ ++msgid "Username cannot be octal number" ++msgstr "用戶名不能是八進位數" ++ ++msgid "Username must start with a letter, number, dot, or underscore" ++msgstr "用戶名必須以字母、數位、點或下劃線開頭" ++ ++msgid "Username's length must be between 1 and 32 characters" ++msgstr "用戶名長度必須介於1到32個字符之間" diff -Nru libkylin-chkname-1.0.10kylin3uk1/debian/patches/series libkylin-chkname-1.0.10kylin3uk1/debian/patches/series --- libkylin-chkname-1.0.10kylin3uk1/debian/patches/series 1970-01-01 08:00:00.000000000 +0800 +++ libkylin-chkname-1.0.10kylin3uk1/debian/patches/series 2025-03-18 15:16:51.000000000 +0800 @@ -0,0 +1 @@ +0001-fix-compile-errors.patch