diff --git a/.gitignore b/.gitignore index 8da06a0aa4..04361feb52 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,7 @@ web.config .htaccess # Locales /locale/ +/resources/locale/ # Temporary files to generate locales for Twig /twig-templates/ # Backups diff --git a/app/vendor_config.php b/app/vendor_config.php index 9eb2600be0..d1889ba39e 100644 --- a/app/vendor_config.php +++ b/app/vendor_config.php @@ -63,7 +63,7 @@ return [ /** * Path to files with compiled locales (*.mo) */ - 'localePath' => ROOT_PATH . 'locale' . DIRECTORY_SEPARATOR, + 'localePath' => ROOT_PATH . 'resources' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR, /** * Define the cache directory for routing cache and other cache files diff --git a/bin/generate-mo b/bin/generate-mo index 77c4ada00f..1a1a046e67 100755 --- a/bin/generate-mo +++ b/bin/generate-mo @@ -13,22 +13,22 @@ else fi compile() { - lang=$(echo "$1" | sed 's@po/\(.*\)\.po@\1@') + lang=$(echo "$1" | sed 's@resources/po/\(.*\)\.po@\1@') if [ -n "$stats" ] ; then printf "%s: " "$lang" fi - mkdir -p locale/"$lang"/LC_MESSAGES - msgfmt $stats --check -o locale/"$lang"/LC_MESSAGES/phpmyadmin.mo "$1" + mkdir -p resources/locale/"$lang"/LC_MESSAGES + msgfmt $stats --check -o resources/locale/"$lang"/LC_MESSAGES/phpmyadmin.mo "$1" return $? } if [ -n "$1" ] ; then - compile po/"$1".po + compile resources/po/"$1".po exit $? fi result=0 -for x in po/*.po ; do +for x in resources/po/*.po ; do compile "$x" ret=$? if [ $ret != 0 ] ; then diff --git a/bin/internal/check-release-excludes.sh b/bin/internal/check-release-excludes.sh index bd18b1b89b..4f25161a09 100755 --- a/bin/internal/check-release-excludes.sh +++ b/bin/internal/check-release-excludes.sh @@ -72,7 +72,7 @@ validateExtension() { foundFileExt fi ;; - locale/*) + resources/locale/*) if [ "${extension}" != "mo" ]; then foundFileExt fi diff --git a/bin/internal/create-release.sh b/bin/internal/create-release.sh index c3a5d5086d..6e40d20b01 100755 --- a/bin/internal/create-release.sh +++ b/bin/internal/create-release.sh @@ -465,7 +465,7 @@ LC_ALL=C make -C doc html find doc -name '*.pyc' -print0 | xargs -0 -r rm -f # Check for gettext support -if [ -d po ] ; then +if [ -d resources/po ] ; then echo "* Generating mo files" ./bin/generate-mo if [ -f ./bin/remove-incomplete-mo ] ; then @@ -612,7 +612,7 @@ for kit in $KITS ; do rm phpunit.xml.* rm .editorconfig .browserslistrc .eslintignore .jshintrc .eslintrc.json .stylelintrc.json psalm.xml psalm-baseline.xml phpstan.neon.dist phpstan-baseline.neon phpcs.xml.dist jest.config.cjs infection.json5.dist # Gettext po files (if they were not removed by ./bin/internal/lang-cleanup.sh) - rm -rf po + rm -rf resources/po # Documentation source code mv doc/html htmldoc rm -r doc diff --git a/bin/internal/lang-cleanup.sh b/bin/internal/lang-cleanup.sh index d165b14153..c85ecf768b 100755 --- a/bin/internal/lang-cleanup.sh +++ b/bin/internal/lang-cleanup.sh @@ -30,23 +30,23 @@ for type in "$@" ; do exit 0 ;; english) - rm -rf po - rm -rf locale + rm -rf resources/po + rm -rf resources/locale rm -rf vendor/phpmyadmin/sql-parser/locale exit 0 ;; *) - match="$match -and -not -name $type.po -and -not -path locale/$type/LC_MESSAGES/phpmyadmin.mo -and -not -path vendor/phpmyadmin/sql-parser/locale/$type/LC_MESSAGES/sqlparser.mo" + match="$match -and -not -name $type.po -and -not -path resources/locale/$type/LC_MESSAGES/phpmyadmin.mo -and -not -path vendor/phpmyadmin/sql-parser/locale/$type/LC_MESSAGES/sqlparser.mo" ;; esac done # Delete unwanted languages # shellcheck disable=SC2086 -find po locale vendor/phpmyadmin/sql-parser/locale -type f $match -print0 | xargs -0r rm +find resources/po resources/locale vendor/phpmyadmin/sql-parser/locale -type f $match -print0 | xargs -0r rm # Delete empty directories -rmdir --ignore-fail-on-non-empty locale/*/* -rmdir --ignore-fail-on-non-empty locale/* +rmdir --ignore-fail-on-non-empty resources/locale/*/* +rmdir --ignore-fail-on-non-empty resources/locale/* rmdir --ignore-fail-on-non-empty vendor/phpmyadmin/sql-parser/locale/*/* rmdir --ignore-fail-on-non-empty vendor/phpmyadmin/sql-parser/locale/* diff --git a/bin/internal/locales-contributors b/bin/internal/locales-contributors index 4236073a13..87e4fd5656 100755 --- a/bin/internal/locales-contributors +++ b/bin/internal/locales-contributors @@ -5,7 +5,7 @@ if [ -n "$GATEWAY_INTERFACE" ] ; then exit 1 fi -for x in po/*.po ; do +for x in resources/po/*.po ; do grep 'Team' "$x" | sed 's/.*: \(.*\)<.*/\1/' git shortlog -sne --no-merges -- "$x" | grep '^ [ 0-9][0-9]\{3\}' done diff --git a/bin/remove-incomplete-mo b/bin/remove-incomplete-mo index 30f20b6e63..26aa59f36b 100755 --- a/bin/remove-incomplete-mo +++ b/bin/remove-incomplete-mo @@ -38,7 +38,7 @@ fi check() { TMPOUTPUTFILE=$2 - lang=$(echo "$1" | sed 's@po/\(.*\)\.po@\1@') + lang=$(echo "$1" | sed 's@resources/po/\(.*\)\.po@\1@') STATS=$(LC_ALL=C msgfmt --statistics -o /dev/null "$1" 2>&1) if echo "$STATS" | grep -q ' translated ' ; then TRANSLATED=$(echo "$STATS" | sed 's/\(^\|.* \)\([0-9]*\) translated.*/\2/') @@ -60,13 +60,13 @@ check() { if [ "$PERCENT" -lt "$THRESHOLD" ] ; then echo "Removing $lang, only $PERCENT%" - rm -f locale/"$lang"/LC_MESSAGES/phpmyadmin.mo - rmdir locale/"$lang"/LC_MESSAGES - rmdir locale/"$lang" + rm -f resources/locale/"$lang"/LC_MESSAGES/phpmyadmin.mo + rmdir resources/locale/"$lang"/LC_MESSAGES + rmdir resources/locale/"$lang" fi } -for x in po/*.po ; do +for x in resources/po/*.po ; do check "$x" "$TMPOUTPUTFILE" done diff --git a/bin/update-po b/bin/update-po index 378badb619..1a40fa2535 100755 --- a/bin/update-po +++ b/bin/update-po @@ -16,9 +16,9 @@ rm -rf twig-templates/ php bin/console cache:warmup --twig-po --env development # Update pot (template), ensure that advisor is at the end -LOCS=$(find po -name '*.po' | sed 's@.*/\(.*\)\.po@\1@') +LOCS=$(find resources/po -name '*.po' | sed 's@.*/\(.*\)\.po@\1@') -find . -name '*.php' -not -path './tests/*' -not -path './po/*' -not -path './tmp/*' -not -path './release/*' -not -path './node_modules/*' -not -path './vendor/*' > twig-templates/filesList +find . -name '*.php' -not -path './tests/*' -not -path './resources/po/*' -not -path './tmp/*' -not -path './release/*' -not -path './node_modules/*' -not -path './vendor/*' > twig-templates/filesList php ./bin/match-twig-cache sort --dictionary-order --ignore-case --output ./twig-templates/filesListTemp < ./twig-templates/filesList @@ -30,7 +30,7 @@ php ./bin/match-twig-cache --reverse xgettext \ -d phpmyadmin \ --msgid-bugs-address=translators@phpmyadmin.net \ - -o po/phpmyadmin.pot \ + -o resources/po/phpmyadmin.pot \ --language=PHP \ --add-comments=l10n \ --add-location \ @@ -58,7 +58,7 @@ sed -i.~ ' s/PACKAGE/phpMyAdmin/; s/(C) YEAR/(C) 2003 - '"$(date +%Y)"'/; s/VERSION/'"$ver"'/; - ' po/phpmyadmin.pot + ' resources/po/phpmyadmin.pot # Update po files (translations) for loc in $LOCS ; do @@ -68,12 +68,12 @@ for loc in $LOCS ; do s/(C) YEAR/(C) 2003 - '"$(date +%Y)"'/; s/VERSION/'"$ver"'/; s/Project-Id-Version: phpMyAdmin .*/Project-Id-Version: phpMyAdmin '"$ver"'\\n"/; - ' po/"$loc".po - msgmerge --previous -U po/"$loc".po po/phpmyadmin.pot + ' resources/po/"$loc".po + msgmerge --previous -U resources/po/"$loc".po resources/po/phpmyadmin.pot done # Commit changes -git add po/*.po po/phpmyadmin.pot +git add resources/po/*.po resources/po/phpmyadmin.pot git commit -s -m 'Update po files [ci skip]' diff --git a/config.sample.inc.php b/config.sample.inc.php index 2fca0b5bc4..492372870c 100644 --- a/config.sample.inc.php +++ b/config.sample.inc.php @@ -108,7 +108,7 @@ $cfg['SaveDir'] = ''; /** * Default language to use, if not browser-defined or user-defined - * (you find all languages in the locale folder) + * (you find all languages in the 'resources/locale' folder) * uncomment the desired line: * default = 'en' */ diff --git a/doc/config.rst b/doc/config.rst index 599e5851f8..e4fc503634 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -2961,7 +2961,7 @@ Languages Defines the default language to use, if not browser-defined or user- defined. The corresponding language file needs to be in - locale/*code*/LC\_MESSAGES/phpmyadmin.mo. + resources/locale/*code*/LC\_MESSAGES/phpmyadmin.mo. .. config:option:: $cfg['DefaultConnectionCollation'] @@ -2979,7 +2979,7 @@ Languages :default: not set Force language to use. The corresponding language file needs to be in - locale/*code*/LC\_MESSAGES/phpmyadmin.mo. + resources/locale/*code*/LC\_MESSAGES/phpmyadmin.mo. .. config:option:: $cfg['FilterLanguages'] diff --git a/doc/faq.rst b/doc/faq.rst index 1b3879cfa0..45a6400bbd 100644 --- a/doc/faq.rst +++ b/doc/faq.rst @@ -687,7 +687,7 @@ Some users have requested to be able to reduce the size of the phpMyAdmin instal This is not recommended and could lead to confusion over missing features, but can be done. A list of files and corresponding functionality which degrade gracefully when removed include: -* :file:`./locale/` folder, or unused subfolders (interface translations) +* :file:`./resources/locale/` folder, or unused subfolders (interface translations) * Any unused themes in :file:`./public/themes/` except the default theme `pmahomme`. * :file:`./app/language_stats.inc.php` (translation statistics) * :file:`./doc/` (documentation) diff --git a/po/af.po b/resources/po/af.po similarity index 100% rename from po/af.po rename to resources/po/af.po diff --git a/po/am.po b/resources/po/am.po similarity index 100% rename from po/am.po rename to resources/po/am.po diff --git a/po/ar.po b/resources/po/ar.po similarity index 100% rename from po/ar.po rename to resources/po/ar.po diff --git a/po/ar_LY.po b/resources/po/ar_LY.po similarity index 100% rename from po/ar_LY.po rename to resources/po/ar_LY.po diff --git a/po/az.po b/resources/po/az.po similarity index 100% rename from po/az.po rename to resources/po/az.po diff --git a/po/be.po b/resources/po/be.po similarity index 100% rename from po/be.po rename to resources/po/be.po diff --git a/po/be@latin.po b/resources/po/be@latin.po similarity index 100% rename from po/be@latin.po rename to resources/po/be@latin.po diff --git a/po/ber.po b/resources/po/ber.po similarity index 100% rename from po/ber.po rename to resources/po/ber.po diff --git a/po/bg.po b/resources/po/bg.po similarity index 100% rename from po/bg.po rename to resources/po/bg.po diff --git a/po/bn.po b/resources/po/bn.po similarity index 100% rename from po/bn.po rename to resources/po/bn.po diff --git a/po/br.po b/resources/po/br.po similarity index 100% rename from po/br.po rename to resources/po/br.po diff --git a/po/brx.po b/resources/po/brx.po similarity index 100% rename from po/brx.po rename to resources/po/brx.po diff --git a/po/bs.po b/resources/po/bs.po similarity index 100% rename from po/bs.po rename to resources/po/bs.po diff --git a/po/ca.po b/resources/po/ca.po similarity index 100% rename from po/ca.po rename to resources/po/ca.po diff --git a/po/ckb.po b/resources/po/ckb.po similarity index 100% rename from po/ckb.po rename to resources/po/ckb.po diff --git a/po/cs.po b/resources/po/cs.po similarity index 100% rename from po/cs.po rename to resources/po/cs.po diff --git a/po/cy.po b/resources/po/cy.po similarity index 100% rename from po/cy.po rename to resources/po/cy.po diff --git a/po/da.po b/resources/po/da.po similarity index 100% rename from po/da.po rename to resources/po/da.po diff --git a/po/de.po b/resources/po/de.po similarity index 100% rename from po/de.po rename to resources/po/de.po diff --git a/po/el.po b/resources/po/el.po similarity index 100% rename from po/el.po rename to resources/po/el.po diff --git a/po/en_GB.po b/resources/po/en_GB.po similarity index 100% rename from po/en_GB.po rename to resources/po/en_GB.po diff --git a/po/enm.po b/resources/po/enm.po similarity index 100% rename from po/enm.po rename to resources/po/enm.po diff --git a/po/eo.po b/resources/po/eo.po similarity index 100% rename from po/eo.po rename to resources/po/eo.po diff --git a/po/es.po b/resources/po/es.po similarity index 100% rename from po/es.po rename to resources/po/es.po diff --git a/po/et.po b/resources/po/et.po similarity index 100% rename from po/et.po rename to resources/po/et.po diff --git a/po/eu.po b/resources/po/eu.po similarity index 100% rename from po/eu.po rename to resources/po/eu.po diff --git a/po/fa.po b/resources/po/fa.po similarity index 100% rename from po/fa.po rename to resources/po/fa.po diff --git a/po/fi.po b/resources/po/fi.po similarity index 100% rename from po/fi.po rename to resources/po/fi.po diff --git a/po/fil.po b/resources/po/fil.po similarity index 100% rename from po/fil.po rename to resources/po/fil.po diff --git a/po/fr.po b/resources/po/fr.po similarity index 100% rename from po/fr.po rename to resources/po/fr.po diff --git a/po/fy.po b/resources/po/fy.po similarity index 100% rename from po/fy.po rename to resources/po/fy.po diff --git a/po/gl.po b/resources/po/gl.po similarity index 100% rename from po/gl.po rename to resources/po/gl.po diff --git a/po/gu.po b/resources/po/gu.po similarity index 100% rename from po/gu.po rename to resources/po/gu.po diff --git a/po/he.po b/resources/po/he.po similarity index 100% rename from po/he.po rename to resources/po/he.po diff --git a/po/hi.po b/resources/po/hi.po similarity index 100% rename from po/hi.po rename to resources/po/hi.po diff --git a/po/hr.po b/resources/po/hr.po similarity index 100% rename from po/hr.po rename to resources/po/hr.po diff --git a/po/hu.po b/resources/po/hu.po similarity index 100% rename from po/hu.po rename to resources/po/hu.po diff --git a/po/hy.po b/resources/po/hy.po similarity index 100% rename from po/hy.po rename to resources/po/hy.po diff --git a/po/ia.po b/resources/po/ia.po similarity index 100% rename from po/ia.po rename to resources/po/ia.po diff --git a/po/id.po b/resources/po/id.po similarity index 100% rename from po/id.po rename to resources/po/id.po diff --git a/po/ig.po b/resources/po/ig.po similarity index 100% rename from po/ig.po rename to resources/po/ig.po diff --git a/po/it.po b/resources/po/it.po similarity index 100% rename from po/it.po rename to resources/po/it.po diff --git a/po/ja.po b/resources/po/ja.po similarity index 100% rename from po/ja.po rename to resources/po/ja.po diff --git a/po/ka.po b/resources/po/ka.po similarity index 100% rename from po/ka.po rename to resources/po/ka.po diff --git a/po/kab.po b/resources/po/kab.po similarity index 100% rename from po/kab.po rename to resources/po/kab.po diff --git a/po/kk.po b/resources/po/kk.po similarity index 100% rename from po/kk.po rename to resources/po/kk.po diff --git a/po/km.po b/resources/po/km.po similarity index 100% rename from po/km.po rename to resources/po/km.po diff --git a/po/kn.po b/resources/po/kn.po similarity index 100% rename from po/kn.po rename to resources/po/kn.po diff --git a/po/ko.po b/resources/po/ko.po similarity index 100% rename from po/ko.po rename to resources/po/ko.po diff --git a/po/ksh.po b/resources/po/ksh.po similarity index 100% rename from po/ksh.po rename to resources/po/ksh.po diff --git a/po/ku.po b/resources/po/ku.po similarity index 100% rename from po/ku.po rename to resources/po/ku.po diff --git a/po/ky.po b/resources/po/ky.po similarity index 100% rename from po/ky.po rename to resources/po/ky.po diff --git a/po/li.po b/resources/po/li.po similarity index 100% rename from po/li.po rename to resources/po/li.po diff --git a/po/lt.po b/resources/po/lt.po similarity index 100% rename from po/lt.po rename to resources/po/lt.po diff --git a/po/lv.po b/resources/po/lv.po similarity index 100% rename from po/lv.po rename to resources/po/lv.po diff --git a/po/mk.po b/resources/po/mk.po similarity index 100% rename from po/mk.po rename to resources/po/mk.po diff --git a/po/ml.po b/resources/po/ml.po similarity index 100% rename from po/ml.po rename to resources/po/ml.po diff --git a/po/mn.po b/resources/po/mn.po similarity index 100% rename from po/mn.po rename to resources/po/mn.po diff --git a/po/ms.po b/resources/po/ms.po similarity index 100% rename from po/ms.po rename to resources/po/ms.po diff --git a/po/my.po b/resources/po/my.po similarity index 100% rename from po/my.po rename to resources/po/my.po diff --git a/po/nb.po b/resources/po/nb.po similarity index 100% rename from po/nb.po rename to resources/po/nb.po diff --git a/po/ne.po b/resources/po/ne.po similarity index 100% rename from po/ne.po rename to resources/po/ne.po diff --git a/po/nl.po b/resources/po/nl.po similarity index 100% rename from po/nl.po rename to resources/po/nl.po diff --git a/po/nn.po b/resources/po/nn.po similarity index 100% rename from po/nn.po rename to resources/po/nn.po diff --git a/po/pa.po b/resources/po/pa.po similarity index 100% rename from po/pa.po rename to resources/po/pa.po diff --git a/po/phpmyadmin.pot b/resources/po/phpmyadmin.pot similarity index 100% rename from po/phpmyadmin.pot rename to resources/po/phpmyadmin.pot diff --git a/po/pl.po b/resources/po/pl.po similarity index 100% rename from po/pl.po rename to resources/po/pl.po diff --git a/po/pt.po b/resources/po/pt.po similarity index 100% rename from po/pt.po rename to resources/po/pt.po diff --git a/po/pt_BR.po b/resources/po/pt_BR.po similarity index 100% rename from po/pt_BR.po rename to resources/po/pt_BR.po diff --git a/po/rcf.po b/resources/po/rcf.po similarity index 100% rename from po/rcf.po rename to resources/po/rcf.po diff --git a/po/ro.po b/resources/po/ro.po similarity index 100% rename from po/ro.po rename to resources/po/ro.po diff --git a/po/ru.po b/resources/po/ru.po similarity index 100% rename from po/ru.po rename to resources/po/ru.po diff --git a/po/si.po b/resources/po/si.po similarity index 100% rename from po/si.po rename to resources/po/si.po diff --git a/po/sk.po b/resources/po/sk.po similarity index 100% rename from po/sk.po rename to resources/po/sk.po diff --git a/po/sl.po b/resources/po/sl.po similarity index 100% rename from po/sl.po rename to resources/po/sl.po diff --git a/po/sq.po b/resources/po/sq.po similarity index 100% rename from po/sq.po rename to resources/po/sq.po diff --git a/po/sr.po b/resources/po/sr.po similarity index 100% rename from po/sr.po rename to resources/po/sr.po diff --git a/po/sr@latin.po b/resources/po/sr@latin.po similarity index 100% rename from po/sr@latin.po rename to resources/po/sr@latin.po diff --git a/po/sv.po b/resources/po/sv.po similarity index 100% rename from po/sv.po rename to resources/po/sv.po diff --git a/po/ta.po b/resources/po/ta.po similarity index 100% rename from po/ta.po rename to resources/po/ta.po diff --git a/po/te.po b/resources/po/te.po similarity index 100% rename from po/te.po rename to resources/po/te.po diff --git a/po/th.po b/resources/po/th.po similarity index 100% rename from po/th.po rename to resources/po/th.po diff --git a/po/tk.po b/resources/po/tk.po similarity index 100% rename from po/tk.po rename to resources/po/tk.po diff --git a/po/tr.po b/resources/po/tr.po similarity index 100% rename from po/tr.po rename to resources/po/tr.po diff --git a/po/tt.po b/resources/po/tt.po similarity index 100% rename from po/tt.po rename to resources/po/tt.po diff --git a/po/tzm.po b/resources/po/tzm.po similarity index 100% rename from po/tzm.po rename to resources/po/tzm.po diff --git a/po/ug.po b/resources/po/ug.po similarity index 100% rename from po/ug.po rename to resources/po/ug.po diff --git a/po/uk.po b/resources/po/uk.po similarity index 100% rename from po/uk.po rename to resources/po/uk.po diff --git a/po/ur.po b/resources/po/ur.po similarity index 100% rename from po/ur.po rename to resources/po/ur.po diff --git a/po/uz.po b/resources/po/uz.po similarity index 100% rename from po/uz.po rename to resources/po/uz.po diff --git a/po/uz@latin.po b/resources/po/uz@latin.po similarity index 100% rename from po/uz@latin.po rename to resources/po/uz@latin.po diff --git a/po/vi.po b/resources/po/vi.po similarity index 100% rename from po/vi.po rename to resources/po/vi.po diff --git a/po/vls.po b/resources/po/vls.po similarity index 100% rename from po/vls.po rename to resources/po/vls.po diff --git a/po/zh_CN.po b/resources/po/zh_CN.po similarity index 100% rename from po/zh_CN.po rename to resources/po/zh_CN.po diff --git a/po/zh_TW.po b/resources/po/zh_TW.po similarity index 100% rename from po/zh_TW.po rename to resources/po/zh_TW.po diff --git a/src/Command/FixPoTwigCommand.php b/src/Command/FixPoTwigCommand.php index 92a3060b6c..9de2425595 100644 --- a/src/Command/FixPoTwigCommand.php +++ b/src/Command/FixPoTwigCommand.php @@ -21,7 +21,7 @@ use const ROOT_PATH; #[AsCommand(name: 'fix-po-twig', description: 'Fixes POT file for Twig templates.')] final class FixPoTwigCommand extends Command { - private const POT_FILE = ROOT_PATH . 'po/phpmyadmin.pot'; + private const POT_FILE = ROOT_PATH . 'resources/po/phpmyadmin.pot'; private const REPLACE_FILE = ROOT_PATH . 'twig-templates/replace.json'; protected function configure(): void