transliterate special chars better
This commit is contained in:
1 parent
5b128f9d50
commit
de8ea49ee7
1 file changed
+48
-2
+48
-2
@@ -1373,6 +1373,52 @@
|
||||
}, CONFIG.launchTimeout);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
* ROOM NAME
|
||||
* ============================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
* Sonderzeichen in das nächstliegende ASCII-Zeichen
|
||||
* umwandeln.
|
||||
*
|
||||
* Beispiel:
|
||||
*
|
||||
* "Grundstück" ergibt "Grundstueck"
|
||||
* "François" ergibt "Francois"
|
||||
*/
|
||||
function transliterate(text) {
|
||||
const extras = {
|
||||
"ß": "ss",
|
||||
"ẞ": "ss",
|
||||
"æ": "ae",
|
||||
"Æ": "ae",
|
||||
"œ": "oe",
|
||||
"Œ": "oe",
|
||||
"ø": "o",
|
||||
"Ø": "o"
|
||||
};
|
||||
|
||||
return text
|
||||
.normalize("NFD")
|
||||
.replace(/[\u0300-\u036f]/g, "")
|
||||
.replace(/[ßẞæÆœŒøØ]/g, (char) => extras[char]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Aus dem Meeting-Namen einen gültigen Room-Namen ableiten.
|
||||
*
|
||||
* Beispiel:
|
||||
*
|
||||
* "Grund Stück Planung" ergibt "grund-stuck-planung"
|
||||
*/
|
||||
function createRoomName(meetingName) {
|
||||
return transliterate(meetingName)
|
||||
.toLowerCase()
|
||||
.replace(/\s+/g, "-")
|
||||
.replace(/[^a-z0-9-]/g, "");
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
* ICS FILE GENERATION
|
||||
* ============================================================
|
||||
@@ -1380,7 +1426,7 @@
|
||||
|
||||
function generateICS(meetingName, description, startTime, endTime, organizer) {
|
||||
/* Generate a unique room name from the meeting name */
|
||||
const roomName = meetingName.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
|
||||
const roomName = createRoomName(meetingName);
|
||||
const meetingUrl = `https://${CONFIG.jitsiLauncher}/launch.html?room=${encodeURIComponent(roomName)}`;
|
||||
|
||||
/* Format dates for ICS */
|
||||
@@ -1525,7 +1571,7 @@ END:VCALENDAR`;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ROOM_PATTERN.test(meetingName)) {
|
||||
if (!ROOM_PATTERN.test(createRoomName(meetingName))) {
|
||||
alert(getTranslation('creator.meetingNameInvalid') || 'Meeting name may only contain letters, numbers and hyphens');
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user