//META{"name":"PersonalPins"}*//
class PersonalPins {
initConstructor () {
this.labels = {};
this.patchModules = {
"HeaderBar":["componentDidMount","componentDidUpdate"],
"Message":"componentDidMount",
"MessageOptionPopout":"componentDidMount"
};
this.notesButton =
``;
this.notesPopoutMarkup =
`
`;
this.sortPopoutMarkup =
``;
this.messagePinContextEntryMarkup =
``;
this.messageUnpinContextEntryMarkup =
``;
this.popoutPinEntryMarkup =
``;
this.popoutUnpinEntryMarkup =
``;
this.messageDividerMarkup =
`
`;
this.messageMarkup =
``;
}
getName () {return "PersonalPins";}
getDescription () {return "Similar to normal pins. Lets you save messages as notes for yourself.";}
getVersion () {return "1.7.0";}
getAuthor () {return "DevilBro";}
getSettingsPanel () {
if (!this.started || typeof BDFDB !== "object") return;
let settingshtml = `${this.getName()}
`;
settingshtml += `
`;
settingshtml += `
`;
let settingspanel = $(settingshtml)[0];
BDFDB.initElements(settingspanel);
$(settingspanel)
.on("click", ".reset-button", () => {if (confirm("Are you sure you want to delete all pinned notes?")) BDFDB.removeAllData(this, "pins");});
return settingspanel;
}
//legacy
load () {}
start () {
let libraryScript = null;
if (typeof BDFDB !== "object" || typeof BDFDB.isLibraryOutdated !== "function" || BDFDB.isLibraryOutdated()) {
libraryScript = document.querySelector('head script[src="https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.js"]');
if (libraryScript) libraryScript.remove();
libraryScript = document.createElement("script");
libraryScript.setAttribute("type", "text/javascript");
libraryScript.setAttribute("src", "https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.js");
document.head.appendChild(libraryScript);
}
this.startTimeout = setTimeout(() => {this.initialize();}, 30000);
if (typeof BDFDB === "object" && typeof BDFDB.isLibraryOutdated === "function") this.initialize();
else libraryScript.addEventListener("load", () => {this.initialize();});
}
initialize () {
if (typeof BDFDB === "object") {
BDFDB.loadMessage(this);
this.SelectChannelUtils = BDFDB.WebModules.findByProperties("selectGuild","selectChannel");
this.GuildUtils = BDFDB.WebModules.findByProperties("getGuilds","getGuild");
this.ChannelUtils = BDFDB.WebModules.findByProperties("getChannels","getChannel");
this.UserUtils = BDFDB.WebModules.findByProperties("getUsers","getUser");
this.MemberUtils = BDFDB.WebModules.findByProperties("getMembers","getMember");
this.LastGuildStore = BDFDB.WebModules.findByProperties("getLastSelectedGuildId");
this.LastChannelStore = BDFDB.WebModules.findByProperties("getLastSelectedChannelId");
this.HistoryUtils = BDFDB.WebModules.findByProperties("transitionTo", "replaceWith", "getHistory");
this.MainDiscord = BDFDB.WebModules.findByProperties("ActionTypes");
BDFDB.WebModules.forceAllUpdates(this);
}
else {
console.error(this.getName() + ": Fatal Error: Could not load BD functions!");
}
}
stop () {
if (typeof BDFDB === "object") {
BDFDB.removeEles(".popout-personalpins-notes", ".personalpins-sort-popout", ".notesButton");
BDFDB.unloadMessage(this);
}
}
// begin of own functions
changeLanguageStrings () {
this.messagePinContextEntryMarkup = this.messagePinContextEntryMarkup.replace("REPLACE_context_pinoption_text", this.labels.context_pinoption_text);
this.messageUnpinContextEntryMarkup = this.messageUnpinContextEntryMarkup.replace("REPLACE_context_unpinoption_text", this.labels.context_unpinoption_text);
this.notesPopoutMarkup = this.notesPopoutMarkup.replace("REPLACE_popout_note_text", this.labels.popout_note_text);
this.notesPopoutMarkup = this.notesPopoutMarkup.replace("REPLACE_popout_channel_text", this.labels.popout_channel_text);
this.notesPopoutMarkup = this.notesPopoutMarkup.replace("REPLACE_popout_server_text", this.labels.popout_server_text);
this.notesPopoutMarkup = this.notesPopoutMarkup.replace("REPLACE_popout_allservers_text", this.labels.popout_allservers_text);
this.notesPopoutMarkup = this.notesPopoutMarkup.replace("REPLACE_popout_sort_text", this.labels.popout_sort_text);
this.notesPopoutMarkup = this.notesPopoutMarkup.replace("REPLACE_popout_messagesort_text", this.labels.popout_messagesort_text);
this.messageMarkup = this.messageMarkup.replace("REPLACE_popout_jump_text", this.labels.popout_jump_text);
this.messageMarkup = this.messageMarkup.replace("REPLACE_popout_copy_text", this.labels.popout_copy_text);
this.sortPopoutMarkup = this.sortPopoutMarkup.replace("REPLACE_popout_messagesort_text", this.labels.popout_messagesort_text);
this.sortPopoutMarkup = this.sortPopoutMarkup.replace("REPLACE_popout_datesort_text", this.labels.popout_datesort_text);
this.popoutPinEntryMarkup = this.popoutPinEntryMarkup.replace("REPLACE_popout_pinoption_text", this.labels.popout_pinoption_text);
this.popoutUnpinEntryMarkup = this.popoutUnpinEntryMarkup.replace("REPLACE_popout_unpinoption_text", this.labels.context_unpinoption_text);
}
onMessageContextMenu (instance, menu) {
if (instance.props && instance.props.message && instance.props.channel && instance.props.target && !menu.querySelector(".personalpins-item")) {
let pininstance = BDFDB.getOwnerInstance({node:menu,name:"MessagePinItem"});
if (pininstance && pininstance._reactInternalFiber && pininstance._reactInternalFiber.return && pininstance._reactInternalFiber.return.stateNode) {
let {messagediv, pos} = this.getMessageAndPos(instance.props.target);
if (!messagediv || pos == -1) return;
if (this.getNoteData(instance.props.message, instance.props.channel, pos)) {
$(this.messageUnpinContextEntryMarkup).insertAfter(pininstance._reactInternalFiber.return.stateNode)
.on("click", ".personalpins-unpin-item", () => {
instance._reactInternalFiber.return.memoizedProps.closeContextMenu();
this.removeNoteData(instance.props.message, instance.props.channel, pos);
});
}
else {
$(this.messagePinContextEntryMarkup).insertAfter(pininstance._reactInternalFiber.return.stateNode)
.on("click", ".personalpins-pin-item", () => {
instance._reactInternalFiber.return.memoizedProps.closeContextMenu();
this.addMessageToNotes(instance.props.message, instance.props.target, instance.props.channel);
});
}
if (BDFDB.isPluginEnabled("MessageUtilities")) {
BDFDB.setContextHint(menu.querySelector(".personalpins-item"), bdplugins.MessageUtilities.plugin.getActiveShortcutString("__Note_Message"));
}
}
}
}
processHeaderBar (instance, wrapper) {
BDFDB.removeEles(".notesButton");
$(this.notesButton)
.insertBefore(wrapper.querySelector(BDFDB.dotCN.channelheadersearch))
.on("click." + this.getName(), BDFDB.dotCN.channelheadericon, (e) => {
this.openNotesPopout(e);
})
.on("mouseenter." + this.getName(), BDFDB.dotCN.channelheadericon, (e) => {
BDFDB.createTooltip(this.labels.popout_note_text, e.currentTarget, {type:"bottom",selector:"note-button-tooltip"});
});
}
processMessage (instance, wrapper) {
if (instance.props && typeof instance.props.renderButtons == "function" && !wrapper.querySelector(BDFDB.dotCN.optionpopoutbutton)) {
let buttonwrap = wrapper.querySelector(BDFDB.dotCN.messagebuttoncontainer);
if (buttonwrap) {
let button = $(``)[0];
$(button).on("click", () => {BDFDB.createMessageOptionPopout(button);}).appendTo(buttonwrap);
}
}
}
processMessageOptionPopout (instance, wrapper) {
if (instance.props.message && instance.props.channel && instance._reactInternalFiber.memoizedProps.target && !wrapper.querySelector(".personalpins-itembtn")) {
let {messagediv, pos} = this.getMessageAndPos(instance._reactInternalFiber.memoizedProps.target);
if (!messagediv || pos == -1) return;
if (this.getNoteData(instance.props.message, instance.props.channel, pos)) {
$(this.popoutUnpinEntryMarkup)
.on("click." + this.getName(), () => {
this.removeNoteData(instance.props.message, instance.props.channel, pos);
instance.props.onClose();
})
.appendTo(wrapper);
}
else {
$(this.popoutPinEntryMarkup)
.on("click." + this.getName(), () => {
this.addMessageToNotes(instance.props.message, instance._reactInternalFiber.memoizedProps.target, instance.props.channel);
instance.props.onClose();
})
.appendTo(wrapper);
}
}
}
openNotesPopout (e) {
let wrapper = e.currentTarget;
if (wrapper.classList.contains("popout-open")) return;
wrapper.classList.add("popout-open");
let popout = $(this.notesPopoutMarkup);
BDFDB.initElements(popout);
let wrappersize = wrapper.getBoundingClientRect();
popout
.appendTo(BDFDB.dotCN.popouts)
.css("left", wrappersize.width/2 + wrappersize.left + "px")
.css("top", wrappersize.height + wrappersize.top + "px")
.on("click", ".tab:not(.selected)", () => {
this.addNotes(popout[0]);
})
.on("keyup." + this.getName(), BDFDB.dotCN.searchbarinput, () => {
clearTimeout(popout.searchTimeout);
popout.searchTimeout = setTimeout(() => {this.addNotes(popout[0]);},1000);
})
.on("click." + this.getName(), BDFDB.dotCN.searchbarclear + BDFDB.dotCN.searchbarvisible, () => {
clearTimeout(popout.searchTimeout);
popout.searchTimeout = setTimeout(() => {this.addNotes(popout[0]);},1000);
})
.on("click", BDFDB.dotCN.quickselectclick, (e2) => {
this.openSortPopout(e2, popout[0]);
});
$(document).on("mousedown.notepopout" + this.getName(), (e2) => {
if (popout.has(e2.target).length == 0 && $(".personalpins-sort-popout").has(e2.target).length == 0) {
$(document).off("mousedown.notepopout" + this.getName());
popout.remove();
setTimeout(() => {wrapper.classList.remove("popout-open");},300);
}
});
this.addNotes(popout[0]);
}
openSortPopout (e, notespopout) {
let wrapper = e.currentTarget;
if (wrapper.classList.contains("popout-open")) return;
wrapper.classList.add("popout-open");
let value = $(wrapper).find(BDFDB.dotCN.quickselectvalue);
let popout = $(this.sortPopoutMarkup);
$(BDFDB.dotCN.popouts).append(popout)
.off("click", BDFDB.dotCN.contextmenuitem)
.on("click", BDFDB.dotCN.contextmenuitem, (e2) => {
value.text($(e2.currentTarget).text());
value.attr("option", $(e2.currentTarget).attr("option"));
$(document).off("mousedown.sortpopout" + this.getName());
popout.remove();
setTimeout(() => {wrapper.classList.remove("popout-open");},300);
this.addNotes(notespopout);
});
popout
.css("left", $(e.currentTarget).offset().left + $(e.currentTarget).outerWidth() + "px")
.css("top", $(e.currentTarget).offset().top + value.outerHeight() + "px")
.find(BDFDB.dotCN.contextmenu).addClass(BDFDB.getDiscordTheme());
$(document).on("mousedown.sortpopout" + this.getName(), (e2) => {
if (popout.has(e2.target).length == 0) {
$(document).off("mousedown.sortpopout" + this.getName());
popout.remove();
setTimeout(() => {wrapper.classList.remove("popout-open");},300);
}
});
}
getMessageAndPos (target) {
let messagediv = BDFDB.getParentEle(BDFDB.dotCN.message, target);
let pos = Array.from(messagediv.parentElement.querySelectorAll(BDFDB.dotCN.message)).indexOf(messagediv);
return {messagediv, pos};
}
addMessageToNotes (message, target, channel) {
if (!message || !target) return;
let {messagediv, pos} = this.getMessageAndPos(target);
if (!messagediv || pos == -1) return;
channel = channel ? channel : this.ChannelUtils.getChannel(message.channel_id);
let guild = this.GuildUtils.getGuild(channel.guild_id) || {};
let channelID = channel.id;
let serverID = guild.id ? guild.id : "@me";
let pins = BDFDB.loadAllData(this, "pins");
pins[serverID] = pins[serverID] ? pins[serverID] : {}
pins[serverID][channelID] = pins[serverID][channelID] ? pins[serverID][channelID] : {}
let messageID = message.id;
let channelname = channel.name;
if (!channelname && channel.recipients.length > 0) {
for (let dmmemberID of channel.recipients) {
channelname = channelname ? channelname + ", @" : channelname;
channelname = channelname + this.UserUtils.getUser(dmmemberID).username;
}
}
let markup = messagediv.querySelector(BDFDB.dotCN.messagemarkup).cloneNode(true);
markup.querySelectorAll(BDFDB.dotCN.messageheadercompact).forEach(h2 => {h2.remove();});
pins[serverID][channelID][messageID + "_" + pos] = {
"serverID": serverID,
"serverName": guild.name ? guild.name : "Direct Messages",
"channelID": channelID,
"channelName": channelname,
"dmUserID": channel.type == 1 ? channel.recipients[0] : null,
"id": messageID,
"pos": pos,
"timestamp": message.timestamp._i.getTime(),
"addedat": new Date().getTime(),
"color": message.colorString,
"authorID": message.author.id,
"authorName": message.author.username,
"avatar": BDFDB.getUserAvatar(message.author.id),
"content": message.content,
"markup": markup.innerHTML,
"accessory": messagediv.querySelector(BDFDB.dotCN.messageaccessory).innerHTML
};
BDFDB.saveAllData(pins, this, "pins");
BDFDB.showToast(this.labels.toast_noteadd_text, {type:"success"});
}
addNotes (notespopout) {
BDFDB.removeEles(".popout-personalpins-notes " + BDFDB.dotCN.messagegroupwrapper, ".popout-personalpins-notes " + BDFDB.dotCN.messagespopoutchannelseparator);
let channelObj = BDFDB.getSelectedChannel();
if (channelObj) {
let serverID = channelObj.guild_id ? channelObj.guild_id : "@me";
let channelID = channelObj.id;
let pins = BDFDB.loadAllData(this, "pins");
if (!BDFDB.isObjectEmpty(pins)) {
let container = notespopout.querySelector(BDFDB.dotCN.messagespopout);
let placeholder = notespopout.querySelector(BDFDB.dotCN.messagespopoutemptyplaceholder);
placeholder.querySelector(BDFDB.dotCN.messagespopoutimage).style.setProperty("background-image", `url(${BDFDB.getDiscordTheme() == BDFDB.disCN.themelight ? "/assets/03c7541028afafafd1a9f6a81cb7f149.svg" : "/assets/6793e022dc1b065b21f12d6df02f91bd.svg"})`);
let messages = {};
switch (notespopout.querySelector(".tab.selected").getAttribute("tab")) {
case "channel":
messages = pins[serverID] && pins[serverID][channelID] ? pins[serverID][channelID] : {};
break;
case "server":
if (pins[serverID]) for (let channel in pins[serverID]) messages = Object.assign(messages, pins[serverID][channel]);
break;
case "allservers":
for (let server in pins) if (pins[server]) for (let channel in pins[server]) messages = Object.assign(messages, pins[server][channel]);
break;
}
let messageArray = [];
for (let id in messages) {
messageArray.push(messages[id]);
}
BDFDB.sortArrayByKey(messageArray, notespopout.querySelector(BDFDB.dotCN.quickselectvalue).getAttribute("option"));
for (let messageData of messageArray) {
let server = this.GuildUtils.getGuild(messageData.serverID) || {};
let channel = this.ChannelUtils.getChannel(messageData.channelID) || {};
let user = this.UserUtils.getUser(messageData.authorID) || {};
let member = this.MemberUtils.getMember(messageData.serverID, messageData.authorID) || {};
let date = new Date(messageData.timestamp);
let message = $(this.messageMarkup)[0];
let messagedivider = $(this.messageDividerMarkup)[0];
container.insertBefore(message, container.firstChild);
container.insertBefore(messagedivider, container.firstChild);
let channelname = messagedivider.querySelector(BDFDB.dotCN.messagespopoutchannelname);
channelname.innerText = (messageData.serverID == "@me" ? " @" : " #") + (channel.name || messageData.channelName);
if (messageData.serverID != "@me" && BDFDB.isPluginEnabled("EditChannels")) {
bdplugins.EditChannels.plugin.changeChannel2({id:messageData.channelID,name:messageData.channelName}, channelname);
}
else if (messageData.serverID == "@me" && BDFDB.isPluginEnabled("EditUsers")) {
let dmUserID = channel && channel.type == 1 ? channel.recipients[0] : messageData.dmUserID;
if (dmUserID) {
bdplugins.EditUsers.plugin.changeName2({id:dmUserID,username:messageData.channelName}, channelname);
channelname.innerText = "@" + channelname.innerText;
}
}
let guildname = messagedivider.querySelector(BDFDB.dotCN.messagespopoutguildname);
guildname.innerText = server.name || messageData.serverName;
let avatar = message.querySelector(BDFDB.dotCN.avatarimage);
avatar.style.setProperty("background-image", `url(${user.id ? BDFDB.getUserAvatar(user.id) : messageData.avatar})`);
let username = message.querySelector(BDFDB.dotCN.messageusername);
username.innerText = user.username || messageData.authorName;
username.style.setProperty("color", member.colorString || messageData.color);
if (BDFDB.isPluginEnabled("EditUsers")) {
bdplugins.EditUsers.plugin.changeName({id:messageData.authorID,username:messageData.authorName}, username, messageData.serverID);
if (user.id) bdplugins.EditUsers.plugin.changeAvatar({id:messageData.authorID,username:messageData.authorName}, avatar);
bdplugins.EditUsers.plugin.addTag({id:messageData.authorID,username:messageData.authorName}, username.parentElement, " " + BDFDB.disCN.bottagnametag);
}
let timestamp = message.querySelector(BDFDB.dotCN.messagetimestampcozy);
timestamp.innerText = date.toLocaleString(BDFDB.getDiscordLanguage().id);
timestamp.setAttribute("datetime", date);
if (BDFDB.isPluginEnabled("CompleteTimestamps")) bdplugins.CompleteTimestamps.plugin.changeTimestamp(timestamp);
message.querySelector(BDFDB.dotCN.messagemarkup).innerHTML = messageData.markup.replace(``,``);
message.querySelector(BDFDB.dotCN.messageaccessory).innerHTML = messageData.accessory;
if (messageData.accessory) {
let ytvideo = message.querySelector(BDFDB.dotCN.embed + " iframe[src*='https://www.youtube.com']");
if (ytvideo) {
let ytlink = ytvideo.parentElement.parentElement.querySelector(BDFDB.dotCN.embedtitle).href;
let wrapper = ytvideo.parentElement;
ytvideo.remove();
require("request")(ytlink, (error, response, result) => {
if (result) {
wrapper.innerHTML = `
`;
$(wrapper).on("click." + this.getName(), BDFDB.dotCN.iconplay, (e) => {
while (wrapper.firstChild) wrapper.firstChild.remove();
let width = 400;
let height = Math.round(width*(result.split('`).appendTo(wrapper);
});
}
});
}
}
$(messagedivider)
.on("click." + this.getName(), BDFDB.dotCN.messagespopoutchannelname, (e) => {
if (!BDFDB.isObjectEmpty(channel)) {
notespopout.remove();
this.SelectChannelUtils.selectChannel(server.id, channel.id);
}
else BDFDB.shake();
});
$(message)
.on("click." + this.getName(), BDFDB.dotCN.messagespopoutclosebutton, (e) => {
messagedivider.remove();
message.remove();
this.removeNoteData(messageData, channel, messageData.pos);
if (!container.querySelector(BDFDB.dotCN.messagegroup)) $(placeholder).show();
})
.on("click." + this.getName(), BDFDB.dotCN.messagespopoutjumpbutton + ".jump", (e) => {
this.HistoryUtils.transitionTo(this.MainDiscord.Routes.MESSAGE(messageData.serverID, messageData.channelID, messageData.id));
})
.on("click." + this.getName(), BDFDB.dotCN.messagespopoutjumpbutton + ".copy", (e) => {
let clipboard = require("electron").clipboard;
if (messageData.content) clipboard.write({text: messageData.content});
else {
let image = message.querySelector(BDFDB.dotCNS.imagewrapper + "img");
if (image) {
// stolen from Image2Clipboard
require("request")({url: image.src, encoding: null}, (error, response, buffer) => {
if (buffer) {
let platform = require("process").platform;
if (platform === "win32" || platform === "darwin") {
clipboard.write({image: require("electron").nativeImage.createFromBuffer(buffer)});
}
else {
let file = require("path").join(require("process").env["HOME"], "personalpinstemp.png");
require("fs").writeFileSync(file, buffer, {encoding: null});
clipboard.write({image: file});
require("fs").unlinkSync(file);
}
}
});
}
}
});
}
let searchstring = notespopout.querySelector(BDFDB.dotCN.searchbarinput).value.replace(/[<|>]/g, "");
if (searchstring) for (let note of notespopout.querySelectorAll(BDFDB.dotCN.messagegroup)) {
note.innerHTML = BDFDB.highlightText(note.innerHTML, searchstring);
if (!note.querySelector(BDFDB.dotCN.highlight)) note.remove();
}
$(placeholder).toggle(notespopout.querySelectorAll(BDFDB.dotCN.messagegroup).length == 0);
}
}
}
getNoteData (message, channel, pos) {
let pins = BDFDB.loadAllData(this, "pins");
let guildid = channel.guild_id ? channel.guild_id : "@me";
return pins[guildid] && pins[guildid][channel.id] && pins[guildid][channel.id][message.id + "_" + pos] ? pins[guildid][channel.id][message.id + "_" + pos] : null;
}
removeNoteData (message, channel, pos) {
if (!message || !channel) return;
let pins = BDFDB.loadAllData(this, "pins");
let guildid = channel.guild_id ? channel.guild_id : "@me";
delete pins[guildid][channel.id][message.id + "_" + pos];
if (BDFDB.isObjectEmpty(pins[guildid][channel.id])) {
delete pins[guildid][channel.id];
if (BDFDB.isObjectEmpty(pins[guildid])) delete pins[guildid];
}
BDFDB.saveAllData(pins, this, "pins");
BDFDB.showToast(this.labels.toast_noteremove_text, {type:"danger"});
}
setLabelsByLanguage () {
switch (BDFDB.getDiscordLanguage().id) {
case "hr": //croatian
return {
popout_note_text: "Bilješke",
popout_channel_text: "Kanal",
popout_server_text: "Poslužavnik",
popout_allservers_text: "Svi poslužitelji",
popout_sort_text: "Poredaj po",
popout_messagesort_text: "Vijesti-Datum",
popout_datesort_text: "Bilješka-Datum",
popout_jump_text: "Skok",
popout_copy_text: "Kopija",
context_pinoption_text: "Napominjemo poruku",
context_unpinoption_text: "Uklonite bilješku",
popout_pinoption_text: "Bilješka",
toast_noteadd_text: "Poruka dodana u bilježnicu.",
toast_noteremove_text: "Poruka uklonjena iz bilježnice."
};
case "da": //danish
return {
popout_note_text: "Noter",
popout_channel_text: "Kanal",
popout_server_text: "Server",
popout_allservers_text: "Alle servere",
popout_sort_text: "Sorter efter",
popout_messagesort_text: "Meddelelse-Dato",
popout_datesort_text: "Note-Dato",
popout_jump_text: "Hop",
popout_copy_text: "Kopi",
context_pinoption_text: "Noter besked",
context_unpinoption_text: "Fjern notatet",
popout_pinoption_text: "Noter",
toast_noteadd_text: "Meddelelse tilføjet til notesbog.",
toast_noteremove_text: "Meddelelse fjernet fra notesbog."
};
case "de": //german
return {
popout_note_text: "Notizen",
popout_channel_text: "Kanal",
popout_server_text: "Server",
popout_allservers_text: "Alle Server",
popout_sort_text: "Sortieren nach",
popout_messagesort_text: "Nachrichten-Datum",
popout_datesort_text: "Notiz-Datum",
popout_jump_text: "Springen",
popout_copy_text: "Kopieren",
context_pinoption_text: "Nachricht notieren",
context_unpinoption_text: "Notiz entfernen",
popout_pinoption_text: "Notieren",
toast_noteadd_text: "Nachricht zum Notizbuch hinzugefügt.",
toast_noteremove_text: "Nachricht aus dem Notizbuch entfernt."
};
case "es": //spanish
return {
popout_note_text: "Notas",
popout_channel_text: "Canal",
popout_server_text: "Servidor",
popout_allservers_text: "Todos los servidores",
popout_sort_text: "Ordenar por",
popout_messagesort_text: "Mensaje-Fecha",
popout_datesort_text: "Nota-Fecha",
popout_jump_text: "Ir a",
popout_copy_text: "Copiar",
context_pinoption_text: "Anotar mensaje",
context_unpinoption_text: "Quitar la nota",
popout_pinoption_text: "Anotar",
toast_noteadd_text: "Mensaje agregado al cuaderno.",
toast_noteremove_text: "Mensaje eliminado del cuaderno."
};
case "fr": //french
return {
popout_note_text: "Notes",
popout_channel_text: "Canal",
popout_server_text: "Serveur",
popout_allservers_text: "Tous les serveurs",
popout_sort_text: "Trier par",
popout_messagesort_text: "Message-Date",
popout_datesort_text: "Note-Date",
popout_jump_text: "Accéder",
popout_copy_text: "Copier",
context_pinoption_text: "Noter le message",
context_unpinoption_text: "Enlevez la note",
popout_pinoption_text: "Noter",
toast_noteadd_text: "Message ajouté au bloc-notes.",
toast_noteremove_text: "Message supprimé du bloc-notes."
};
case "it": //italian
return {
popout_note_text: "Note",
popout_channel_text: "Canale",
popout_server_text: "Server",
popout_allservers_text: "Tutti i server",
popout_sort_text: "Ordina per",
popout_messagesort_text: "Messaggio-Data",
popout_datesort_text: "Nota-Data",
popout_jump_text: "Vai",
popout_copy_text: "Copiare",
context_pinoption_text: "Annotare il messaggio",
context_unpinoption_text: "Rimuovi la nota",
popout_pinoption_text: "Annotare",
toast_noteadd_text: "Messaggio aggiunto al blocco note.",
toast_noteremove_text: "Messaggio rimosso dal blocco note."
};
case "nl": //dutch
return {
popout_note_text: "Notities",
popout_channel_text: "Kanaal",
popout_server_text: "Server",
popout_allservers_text: "Alle servers",
popout_sort_text: "Sorteer op",
popout_messagesort_text: "Bericht-Datum",
popout_datesort_text: "Notitie-Datum",
popout_jump_text: "Openen",
popout_copy_text: "Kopiëren",
context_pinoption_text: "Noteer bericht",
context_unpinoption_text: "Verwijder de notitie",
popout_pinoption_text: "Noteer",
toast_noteadd_text: "Bericht toegevoegd aan notitieblok.",
toast_noteremove_text: "Bericht verwijderd van notitieblok."
};
case "no": //norwegian
return {
popout_note_text: "Notatene",
popout_channel_text: "Kanal",
popout_server_text: "Server",
popout_allservers_text: "Alle servere",
popout_sort_text: "Sorter etter",
popout_messagesort_text: "Melding-Dato",
popout_datesort_text: "Merknad-Dato",
popout_jump_text: "Hoppe",
popout_copy_text: "Kopiere",
context_pinoption_text: "Notat ned meldingen",
context_unpinoption_text: "Fjern notatet",
popout_pinoption_text: "Notere",
toast_noteadd_text: "Melding lagt til i notisboken.",
toast_noteremove_text: "Melding fjernet fra notatboken."
};
case "pl": //polish
return {
popout_note_text: "Notatki",
popout_channel_text: "Kanał",
popout_server_text: "Serwer",
popout_allservers_text: "Wszystkie serwery",
popout_sort_text: "Sortuj według",
popout_messagesort_text: "Wiadomość-Data",
popout_datesort_text: "Notatka-Data",
popout_jump_text: "Skocz",
popout_copy_text: "Kopiować",
context_pinoption_text: "Notuj wiadomość",
context_unpinoption_text: "Usuń notatkę",
popout_pinoption_text: "Notuj",
toast_noteadd_text: "Wiadomość została dodana do notatnika.",
toast_noteremove_text: "Wiadomość została usunięta z notatnika."
};
case "pt-BR": //portuguese (brazil)
return {
popout_note_text: "Notas",
popout_channel_text: "Canal",
popout_server_text: "Servidor",
popout_allservers_text: "Todos os servidores",
popout_sort_text: "Ordenar por",
popout_messagesort_text: "Mensagem-Data",
popout_datesort_text: "Nota-Data",
popout_jump_text: "Pular",
popout_copy_text: "Copiar",
context_pinoption_text: "Anote a mensagem",
context_unpinoption_text: "Remova a nota",
popout_pinoption_text: "Anotar",
toast_noteadd_text: "Mensagem adicionada ao caderno.",
toast_noteremove_text: "Mensagem removida do caderno."
};
case "fi": //finnish
return {
popout_note_text: "Muistiinpanot",
popout_channel_text: "Kanava",
popout_server_text: "Palvelin",
popout_allservers_text: "Kaikki palvelimet",
popout_sort_text: "Järjestä",
popout_messagesort_text: "Viesti-Päivämäärä",
popout_datesort_text: "Huomaa-Päivämäärä",
popout_jump_text: "Siirry",
popout_copy_text: "Kopioida",
context_pinoption_text: "Huomaa viesti",
context_unpinoption_text: "Poista muistiinpano",
popout_pinoption_text: "Huomaa",
toast_noteadd_text: "Viesti lisätty muistikirjaan.",
toast_noteremove_text: "Viesti poistettiin muistikirjaan."
};
case "sv": //swedish
return {
popout_note_text: "Anteckningarna",
popout_channel_text: "Kanal",
popout_server_text: "Server",
popout_allservers_text: "Alla servrar",
popout_sort_text: "Sortera efter",
popout_messagesort_text: "Meddelande-Datum",
popout_datesort_text: "Anteckningen-Datum",
popout_jump_text: "Hoppa",
popout_copy_text: "Kopiera",
context_pinoption_text: "Anteckna meddelande",
context_unpinoption_text: "Ta bort noten",
popout_pinoption_text: "Anteckna",
toast_noteadd_text: "Meddelandet läggs till i anteckningsboken.",
toast_noteremove_text: "Meddelande borttaget från anteckningsboken."
};
case "tr": //turkish
return {
popout_note_text: "Notlar",
popout_channel_text: "Kanal",
popout_server_text: "Sunucu",
popout_allservers_text: "Tüm Sunucular",
popout_sort_text: "Göre sırala",
popout_messagesort_text: "Mesaj-Tarih",
popout_datesort_text: "Not-Tarih",
popout_jump_text: "Git",
popout_copy_text: "Kopyalamak",
context_pinoption_text: "Mesajı not alın",
context_unpinoption_text: "Notu kaldırmak",
popout_pinoption_text: "Not almak",
toast_noteadd_text: "Mesaj not defteri'ya eklendi.",
toast_noteremove_text: "Mesaj not defteri'dan kaldırıldı."
};
case "cs": //czech
return {
popout_note_text: "Poznámky",
popout_channel_text: "Kanál",
popout_server_text: "Server",
popout_allservers_text: "Všechny servery",
popout_sort_text: "Seřazeno podle",
popout_messagesort_text: "Zpráva-datum",
popout_datesort_text: "Poznámka-datum",
popout_jump_text: "Skok",
popout_copy_text: "Kopírovat",
context_pinoption_text: "Poznámka dolů zprávu",
context_unpinoption_text: "Odstraňte poznámku",
popout_pinoption_text: "Poznámka dolů",
toast_noteadd_text: "Zpráva byla přidána do notebooku.",
toast_noteremove_text: "Zpráva byla odebrána z notebooku."
};
case "bg": //bulgarian
return {
popout_note_text: "бележките",
popout_channel_text: "Канал",
popout_server_text: "Сървър",
popout_allservers_text: "Всички сървъри",
popout_sort_text: "Сортиране по",
popout_messagesort_text: "Съобщение-Дата",
popout_datesort_text: "Забележка-Дата",
popout_jump_text: "Направо",
popout_copy_text: "Копирам",
context_pinoption_text: "Oтбележете съобщението",
context_unpinoption_text: "Премахнете бележката",
popout_pinoption_text: "Oтбележете",
toast_noteadd_text: "Съобщението бе добавено към бележника.",
toast_noteremove_text: "Съобщението е премахнато от преносимия компютър."
};
case "ru": //russian
return {
popout_note_text: "Заметки",
popout_channel_text: "Канал",
popout_server_text: "Cервер",
popout_allservers_text: "Все серверы",
popout_sort_text: "Сортировать по",
popout_messagesort_text: "Сообщение-дата",
popout_datesort_text: "Заметки-Дата",
popout_jump_text: "Перейти",
popout_copy_text: "Копировать",
context_pinoption_text: "Записывать вниз",
context_unpinoption_text: "Удалить заметку",
popout_pinoption_text: "Записывать",
toast_noteadd_text: "Сообщение добавлено в блокнот.",
toast_noteremove_text: "Сообщение удалено из записной книжки."
};
case "uk": //ukrainian
return {
popout_note_text: "Замітки",
popout_channel_text: "Канал",
popout_server_text: "Сервер",
popout_allservers_text: "Всі сервери",
popout_sort_text: "Сортувати за",
popout_messagesort_text: "Повідомлення-дата",
popout_datesort_text: "Примітка-дата",
popout_jump_text: "Плиг",
popout_copy_text: "Копіювати",
context_pinoption_text: "Зверніть увагу на повідомлення",
context_unpinoption_text: "Видаліть нотатку",
popout_pinoption_text: "Занотуйте",
toast_noteadd_text: "Повідомлення додається до ноутбука.",
toast_noteremove_text: "Повідомлення видалено з ноутбука."
};
case "ja": //japanese
return {
popout_note_text: "ノート",
popout_channel_text: "チャネル",
popout_server_text: "サーバ",
popout_allservers_text: "すべてのサーバー",
popout_sort_text: "並び替え",
popout_messagesort_text: "メッセージ-日付",
popout_datesort_text: "注-日付",
popout_jump_text: "ジャンプ",
popout_copy_text: "写す",
context_pinoption_text: "ノートダウンメッセージ",
context_unpinoption_text: "メモを削除",
popout_pinoption_text: "書き留める",
toast_noteadd_text: "ノートブックにメッセージが追加されました.",
toast_noteremove_text: "ノートブックからメッセージが削除されました."
};
case "zh-TW": //chinese (traditional)
return {
popout_note_text: "筆記",
popout_channel_text: "渠道",
popout_server_text: "服務器",
popout_allservers_text: "所有服務器",
popout_sort_text: "排序方式",
popout_messagesort_text: "消息-日期",
popout_datesort_text: "注-日期",
popout_jump_text: "跳到",
popout_copy_text: "複製",
context_pinoption_text: "記下下來的消息",
context_unpinoption_text: "刪除備註",
popout_pinoption_text: "記下",
toast_noteadd_text: "消息添加到筆記本.",
toast_noteremove_text: "消息從筆記本中刪除."
};
case "ko": //korean
return {
popout_note_text: "노트",
popout_channel_text: "채널",
popout_server_text: "섬기는 사람",
popout_allservers_text: "모든 서버",
popout_sort_text: "정렬 기준",
popout_messagesort_text: "메시지-날짜",
popout_datesort_text: "주-날짜",
popout_jump_text: "이동",
popout_copy_text: "베끼다",
context_pinoption_text: "메모 다운 메시지",
context_unpinoption_text: "메모 삭제",
popout_pinoption_text: "메모하다",
toast_noteadd_text: "노트북에 메시지 추가됨.",
toast_noteremove_text: "노트에서 메시지 삭제됨."
};
default: //default: english
return {
popout_note_text: "Notes",
popout_channel_text: "Channel",
popout_server_text: "Server",
popout_allservers_text: "All Servers",
popout_sort_text: "Sort by",
popout_messagesort_text: "Message-Date",
popout_datesort_text: "Note-Date",
popout_jump_text: "Jump",
popout_copy_text: "Copy",
context_pinoption_text: "Note Message",
context_unpinoption_text: "Remove Note",
popout_pinoption_text: "Note",
toast_noteadd_text: "Message added to notebook.",
toast_noteremove_text: "Message removed from notebook."
};
}
}
}