mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
locales init, first step
This commit is contained in:
parent
bd5bbb3d55
commit
0384bdd0ee
@ -12,7 +12,8 @@
|
|||||||
"dev": "yarn run serve",
|
"dev": "yarn run serve",
|
||||||
"build": "vue-cli-service build",
|
"build": "vue-cli-service build",
|
||||||
"lint": "eslint --ext .js,.vue .",
|
"lint": "eslint --ext .js,.vue .",
|
||||||
"test": "jest --coverage"
|
"test": "jest --coverage",
|
||||||
|
"locales": "scripts/missing-keys.sh && scripts/sort.sh"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "^7.15.8",
|
"@babel/core": "^7.15.8",
|
||||||
|
|||||||
17
admin/scripts/missing-keys.sh
Executable file
17
admin/scripts/missing-keys.sh
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ROOT_DIR=$(dirname "$0")/..
|
||||||
|
|
||||||
|
sorting="jq -f $ROOT_DIR/scripts/sort_filter.jq"
|
||||||
|
english="$sorting $ROOT_DIR/src/locales/en.json"
|
||||||
|
german="$sorting $ROOT_DIR/src/locales/de.json"
|
||||||
|
listPaths="jq -c 'path(..)|[.[]|tostring]|join(\".\")'"
|
||||||
|
diffString="<( $english | $listPaths ) <( $german | $listPaths )"
|
||||||
|
if eval "diff -q $diffString";
|
||||||
|
then
|
||||||
|
: # all good
|
||||||
|
else
|
||||||
|
eval "diff -y $diffString | grep '[|<>]'";
|
||||||
|
printf "\nEnglish and German translation keys do not match, see diff above.\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
25
admin/scripts/sort.sh
Executable file
25
admin/scripts/sort.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ROOT_DIR=$(dirname "$0")/..
|
||||||
|
|
||||||
|
tmp=$(mktemp)
|
||||||
|
exit_code=0
|
||||||
|
|
||||||
|
for locale_file in $ROOT_DIR/src/locales/*.json
|
||||||
|
do
|
||||||
|
jq -f $(dirname "$0")/sort_filter.jq $locale_file > "$tmp"
|
||||||
|
if [ "$*" == "--fix" ]
|
||||||
|
then
|
||||||
|
mv "$tmp" $locale_file
|
||||||
|
else
|
||||||
|
if diff -q "$tmp" $locale_file > /dev/null ;
|
||||||
|
then
|
||||||
|
: # all good
|
||||||
|
else
|
||||||
|
exit_code=$?
|
||||||
|
echo "$(basename -- $locale_file) is not sorted by keys"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $exit_code
|
||||||
13
admin/scripts/sort_filter.jq
Normal file
13
admin/scripts/sort_filter.jq
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
def walk(f):
|
||||||
|
. as $in
|
||||||
|
| if type == "object" then
|
||||||
|
reduce keys_unsorted[] as $key
|
||||||
|
( {}; . + { ($key): ($in[$key] | walk(f)) } ) | f
|
||||||
|
elif type == "array" then map( walk(f) ) | f
|
||||||
|
else f
|
||||||
|
end;
|
||||||
|
|
||||||
|
def keys_sort_by(f):
|
||||||
|
to_entries | sort_by(.key|f ) | from_entries;
|
||||||
|
|
||||||
|
walk(if type == "object" then keys_sort_by(ascii_upcase) else . end)
|
||||||
@ -5,8 +5,10 @@ Vue.use(VueI18n)
|
|||||||
|
|
||||||
const loadLocaleMessages = () => {
|
const loadLocaleMessages = () => {
|
||||||
const locales = require.context('./locales', true, /[A-Za-z0-9-_,\s]+\.json$/i)
|
const locales = require.context('./locales', true, /[A-Za-z0-9-_,\s]+\.json$/i)
|
||||||
|
console.log(locales)
|
||||||
const messages = {}
|
const messages = {}
|
||||||
locales.keys().forEach((key) => {
|
locales.keys().forEach((key) => {
|
||||||
|
console.log(key)
|
||||||
const matched = key.match(/([A-Za-z0-9-_]+)\./i)
|
const matched = key.match(/([A-Za-z0-9-_]+)\./i)
|
||||||
if (matched && matched.length > 1) {
|
if (matched && matched.length > 1) {
|
||||||
const locale = matched[1]
|
const locale = matched[1]
|
||||||
|
|||||||
@ -1 +1,4 @@
|
|||||||
{}
|
{
|
||||||
|
"open_creations":"offene Schöpfungen",
|
||||||
|
"not_open_creations":"keine offene Schöpfungen"
|
||||||
|
}
|
||||||
|
|||||||
@ -1 +1,4 @@
|
|||||||
{}
|
{
|
||||||
|
"open_creations":"open creations",
|
||||||
|
"not_open_creations":"not open creations"
|
||||||
|
}
|
||||||
16
admin/src/locales/index.js
Normal file
16
admin/src/locales/index.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
const locales = [
|
||||||
|
{
|
||||||
|
name: 'English',
|
||||||
|
code: 'en',
|
||||||
|
iso: 'en-US',
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Deutsch',
|
||||||
|
code: 'de',
|
||||||
|
iso: 'de-DE',
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
export default locales
|
||||||
@ -3,7 +3,7 @@
|
|||||||
<b-card
|
<b-card
|
||||||
v-show="$store.state.openCreations > 0"
|
v-show="$store.state.openCreations > 0"
|
||||||
border-variant="primary"
|
border-variant="primary"
|
||||||
header="offene Schöpfungen"
|
:header="$t('open_creations')"
|
||||||
header-bg-variant="danger"
|
header-bg-variant="danger"
|
||||||
header-text-variant="white"
|
header-text-variant="white"
|
||||||
align="center"
|
align="center"
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<b-card
|
<b-card
|
||||||
v-show="$store.state.openCreations < 1"
|
v-show="$store.state.openCreations < 1"
|
||||||
border-variant="success"
|
border-variant="success"
|
||||||
header="keine offene Schöpfungen"
|
:header="$t('not_open_creations')"
|
||||||
header-bg-variant="success"
|
header-bg-variant="success"
|
||||||
header-text-variant="white"
|
header-text-variant="white"
|
||||||
align="center"
|
align="center"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user