Skip to content

Commit 9880840

Browse files
committed
feat: 🚧 first attempt at providing localization
1 parent 76624f8 commit 9880840

28 files changed

+1127
-517
lines changed

package-lock.json

+35-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@
146146
"file-saver": "^2.0.5",
147147
"gl-matrix": "^3.4.3",
148148
"gremlins.js": "^2.2.0",
149+
"i18next": "^23.14.0",
150+
"i18next-browser-languagedetector": "^8.0.0",
149151
"jquery": "^3.7.1",
150152
"jquery-ui-bundle": "^1.12.1-migrate",
151153
"material-icons": "^1.13.12",

public/css/style.css

+27-19
Original file line numberDiff line numberDiff line change
@@ -1048,24 +1048,36 @@ input:focus {
10481048
/* backdrop-filter: blur(3px); */
10491049
}
10501050

1051-
#bottom-icons div {
1052-
cursor: pointer;
1053-
}
1054-
10551051
.bmenu-item {
1056-
height: var(--bottom-icon-height);
10571052
padding: 5px;
10581053
text-align: center;
10591054
cursor: pointer;
1055+
display: flex;
1056+
flex-direction: column;
1057+
flex-wrap: nowrap;
1058+
height: 90px;
10601059
}
10611060

1062-
.bmenu-title {
1061+
.bmenu-item-inner {
1062+
display: flex;
1063+
flex-direction: row;
1064+
flex-wrap: nowrap;
1065+
justify-content: center;
1066+
align-items: center;
1067+
margin-bottom: 5px;
1068+
padding-right: 15px;
1069+
}
1070+
1071+
.bmenu-item .status-icon {
1072+
width: 15px;
1073+
height: 15px;
1074+
top: -20px;
1075+
background-size: cover;
10631076
position: relative;
1064-
display: inline-block;
1065-
font-size: 11px;
1066-
line-height: 20px;
1067-
vertical-align: top;
1068-
text-align: center;
1077+
z-index: 5;
1078+
left: 15px;
1079+
display: block;
1080+
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kTtIw1AUhv+mFUUqDmYQcchQnSyILxylikWwUNoKrTqY3PQFTRqSFBdHwbXg4GOx6uDirKuDqyAIPkBcXZwUXaTEc5NCixgvHO7Hf+//c+65gNCoMM0KjQOabpupeEzK5lal7leEIVJNIyQzy0ikFzPwXV/3CPD9Lsqz/O/9ufrUvMWAgEQ8xwzTJt4gntm0Dc77xCIrySrxOfGYSQ0SP3Jd8fiNc9FlgWeKZiY1TywSS8UOVjqYlUyNeIo4omo65QtZj1XOW5y1So21+uQvDOf1lTTXqYYRxxISSEKCghrKqMBGlHadFAspOo/5+Idcf5JcCrnKYORYQBUaZNcP/ge/Z2sVJie8pHAM6HpxnI8RoHsXaNYd5/vYcZonQPAZuNLb/moDmP0kvd7WIkdA/zZwcd3WlD3gcgcYfDJkU3alIJVQKADvZ/RNOWDgFuhd8+bWOsfpA5ChWS3fAAeHwGiRstd93t3TObd/77Tm9wOOiHKymlTPuAAAAAZiS0dEAM4AowCKeTVkwgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+cMFAw5A0OJiTcAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAB20lEQVRYw+2WvU4bURCFv7m2NpUlaiSngcLF2hLOG0BHYb9ACoqkg44+ovcjWIKCF7ALOvIGBuKlSBGaIFEjucoK30kRW4p8Z9e7xJKR4ml35tzZM2d+YGP/u0kZ5zjRuqR0BQ5RdlTYBhDlCeFB4UojBvdNeVxpAns3uj31nCl8Kgjarzi+3Lbl6Z8TaN1oRz2XQK0kuxNxfBy3ZZjn5PI+Nkd6rJ7BKx4HqKln0Bzp8asYmP35YCVCc3SzmJCsmr94vmf8+cRBTyoMtyJ+ADyn7OqUjofTrJiqo2FpomolMPWcWUAifPURR99Cld8Bd3Gi5y7lQpX9xXLMMD8vZSBOtC6/+Gk9Pv4gB0Uob4302kgCfcf7xRYNRCgpXYtCH3FUtOYz30kRbGdQcmg49coMl/umPDroFcRe5ImdILDCsLTyrRgDO0hgPl7/trnay5gVY2G7dS+jUANK0KvPKbtlga0YC9sZo+khoG5Kp2wCZoyBHWoAroK2gtM40XqZtT2bikuxwwQic/7XXMpF4br+8a0VwXZWDwv0g2BlvzXS6zwm4kTrWVNQoG/NkrUvo7Wv48w5MG7LEOFkBVfnSd5V9LZPsjkTVUfDEmbeUVp1NJY9/ibO8o1t7Ddz5991OpoAtwAAAABJRU5ErkJggg==');
10691081
}
10701082

10711083
.bmenu-item img {
@@ -1075,16 +1087,12 @@ input:focus {
10751087
display: block;
10761088
}
10771089

1078-
.bmenu-item .status-icon {
1079-
width: 15px;
1080-
height: 15px;
1081-
background-size: cover;
1090+
.bmenu-title {
10821091
position: relative;
1083-
top: -62px;
1084-
z-index: 5;
1085-
left: 15px;
10861092
display: block;
1087-
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kTtIw1AUhv+mFUUqDmYQcchQnSyILxylikWwUNoKrTqY3PQFTRqSFBdHwbXg4GOx6uDirKuDqyAIPkBcXZwUXaTEc5NCixgvHO7Hf+//c+65gNCoMM0KjQOabpupeEzK5lal7leEIVJNIyQzy0ikFzPwXV/3CPD9Lsqz/O/9ufrUvMWAgEQ8xwzTJt4gntm0Dc77xCIrySrxOfGYSQ0SP3Jd8fiNc9FlgWeKZiY1TywSS8UOVjqYlUyNeIo4omo65QtZj1XOW5y1So21+uQvDOf1lTTXqYYRxxISSEKCghrKqMBGlHadFAspOo/5+Idcf5JcCrnKYORYQBUaZNcP/ge/Z2sVJie8pHAM6HpxnI8RoHsXaNYd5/vYcZonQPAZuNLb/moDmP0kvd7WIkdA/zZwcd3WlD3gcgcYfDJkU3alIJVQKADvZ/RNOWDgFuhd8+bWOsfpA5ChWS3fAAeHwGiRstd93t3TObd/77Tm9wOOiHKymlTPuAAAAAZiS0dEAM4AowCKeTVkwgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+cMFAw5A0OJiTcAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAB20lEQVRYw+2WvU4bURCFv7m2NpUlaiSngcLF2hLOG0BHYb9ACoqkg44+ovcjWIKCF7ALOvIGBuKlSBGaIFEjucoK30kRW4p8Z9e7xJKR4ml35tzZM2d+YGP/u0kZ5zjRuqR0BQ5RdlTYBhDlCeFB4UojBvdNeVxpAns3uj31nCl8Kgjarzi+3Lbl6Z8TaN1oRz2XQK0kuxNxfBy3ZZjn5PI+Nkd6rJ7BKx4HqKln0Bzp8asYmP35YCVCc3SzmJCsmr94vmf8+cRBTyoMtyJ+ADyn7OqUjofTrJiqo2FpomolMPWcWUAifPURR99Cld8Bd3Gi5y7lQpX9xXLMMD8vZSBOtC6/+Gk9Pv4gB0Uob4302kgCfcf7xRYNRCgpXYtCH3FUtOYz30kRbGdQcmg49coMl/umPDroFcRe5ImdILDCsLTyrRgDO0hgPl7/trnay5gVY2G7dS+jUANK0KvPKbtlga0YC9sZo+khoG5Kp2wCZoyBHWoAroK2gtM40XqZtT2bikuxwwQic/7XXMpF4br+8a0VwXZWDwv0g2BlvzXS6zwm4kTrWVNQoG/NkrUvo7Wv48w5MG7LEOFkBVfnSd5V9LZPsjkTVUfDEmbeUVp1NJY9/ibO8o1t7Ddz5991OpoAtwAAAABJRU5ErkJggg==');
1093+
font-size: 11px;
1094+
height: 100%;
1095+
text-align: center;
10881096
}
10891097

10901098
.bmenu-item:not(.bmenu-item-disabled, .bmenu-item-selected, .bmenu-item-help):hover * {

src/catalogs/sensor-groups.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { errorManagerInstance } from '@app/singletons/errorManager';
2+
import i18next from 'i18next';
23

34
export interface SensorGroup {
45
name: string;
@@ -14,7 +15,7 @@ export const fetchSensorGroups = async (): Promise<SensorGroup[]> => {
1415
let sensorGroupsApi = await fetch('https://api.keeptrack.space/v1/sensor-groups').then((response) => response.json());
1516

1617
if (sensorGroupsApi.length === 0) {
17-
errorManagerInstance.warn('No sensor groups found in the API, reverting to the included sensor groups database.');
18+
errorManagerInstance.warn(i18next.t('errors.sensorGroupsApiEmpty'));
1819
sensorGroupsApi = sensorGroups;
1920
}
2021

0 commit comments

Comments
 (0)