// ==UserScript==
// @name X to Twitter
// @name:ja X to Twitter
// @description Get our Twitter back from Elon.
// @namespace https://xtotwitter.yakisova.com
// @version 3.0.1
// @author yakisova41
// @match https://twitter.com/*
// @match https://x.com/home
// @match https://x.com/explore
// @match https://x.com/notifications
// @match https://x.com/messages
// @match https://x.com/search
// @match https://x.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=twitter.com
// @grant unsafeWindow
// @run-at document-start
// @license MIT
// @description:ja イーロンから私達のTwitterを取り戻します
// ==/UserScript==
const DEBUG = false;
let isEnableAlert = false;
/**
* Output log if debug mode is true.
* @param logText
*/
function log(logText, isalert = true) {
if (DEBUG) {
console.log(logText);
if (isEnableAlert && isalert) {
alert(logText);
}
}
}
/**
* Alert when log.
*/
function enableAlert() {
isEnableAlert = true;
}
/**
* Prevent observing dually for same element.
*/
class ObserverHooksControler {
constructor() {
// Record<selector, Replacer[]>
Object.defineProperty(this, "hookHandlers", {
enumerable: true,
configurable: true,
writable: true,
value: {}
});
}
addHookHandler(hookHandler) {
if (this.hookHandlers[hookHandler.selector] === undefined) {
this.hookHandlers[hookHandler.selector] = [];
}
this.hookHandlers[hookHandler.selector].push(hookHandler);
}
startObserve(selector, options) {
const elem = document.querySelector(selector);
if (elem !== null) {
const observer = new MutationObserver(() => {
if (this.hookHandlers[selector] !== undefined) {
this.hookHandlers[selector].forEach((hookHandler, i) => {
hookHandler.callback(elem, () => {
this.hookHandlers[selector] = this.hookHandlers[selector].splice(i, 1);
});
});
}
});
observer.observe(elem, options);
}
}
}
/**
* Favicon change
* @param head
*/
const faviconReplacer = {
selector: "head",
callback: (head) => {
const faviconHref = "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJkSURBVHgB7VZBbtpQEH3zIW0WVYuXVaH4Bs0NSk4AOUFhEarskhMknIDsqkKlcIT0BNAT1D1B3ZJK3dmVuirwp/MhVmzAxiagKBJv9+ePZ97M/JkxsMMODwzChlD84FWQp3MxeCDHAhiumB+MJrr1+8Ryw3p/9+H4DctfIPCq49Xlw8Kv99YlMuB19885gy/i7llziwGfFFWJyR02XzSCuwiBUse7BlFVaz5LS8KQVkRXaXRJsqImfDjKSZBNyzEyFWFKVJ4KFbWLElUao6KbSk8i9TXgTPaorxTskPwOxa7/9baGt4zg8oQbNyfWYJlRU0/KUx9ZwNwYNq1ecFRzl18QpW0bB0Ks//KjV1uwlbuLJA3GxEdh5wb5yGEPl3qMd2xecYQHKnlFlVLX95kxYCFKGg5IlU2a0uLpCM68LEJA+sJ/Dm6Jy3aMjQIRakRUm+UuvfOp/X34iQSejeFo0Hdx4optG5uFH/R+GHNvANcm3VtwLs+Lvy2TRwhIOnrYHhysIuDKcCDwGbYAjglOzQt+HssElF6dvoNNOZeuCSbfSgIGMjILMo4/ExZf7TqghNLmlwm1gpSC2tmaLAZMvWGz0Iu7XpqBm2NrQNN5cD+Y5ZOTdZyok3RZMusZOJUN+QZrQFb0oQkG6xIIYHe8A03Unx/Ryd6jS2ctAsbxmFRVynGKlM5na5ePVkUe0p+h9MmraS2zXqYgmSWjOPtElHbLTVB3Q79gqQlMScxqXpeav0UWiGMmXKSNOpZAAPvKs/U/1MRoxRxl+5WD+psUy2D5IdmRVoWjnqDnLlkyO+zwaPAf1zXwZL751PUAAAAASUVORK5CYII=";
const shortcutIcon = head.querySelector('[rel="shortcut icon"]');
if (shortcutIcon !== null) {
if (shortcutIcon.getAttribute("href") !== faviconHref) {
log("favicon replace");
shortcutIcon.href = faviconHref;
}
}
},
};
const paths = {
xLogoPath: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z",
loadingXLogoPath: "M14.258 10.152L23.176 0h-2.113l-7.747 8.813L7.133 0H0l9.352 13.328L0 23.973h2.113l8.176-9.309 6.531 9.309h7.133zm-2.895 3.293l-.949-1.328L2.875 1.56h3.246l6.086 8.523.945 1.328 7.91 11.078h-3.246zm0 0",
birdPath: "M23.643 4.937c-.835.37-1.732.62-2.675.733.962-.576 1.7-1.49 2.048-2.578-.9.534-1.897.922-2.958 1.13-.85-.904-2.06-1.47-3.4-1.47-2.572 0-4.658 2.086-4.658 4.66 0 .364.042.718.12 1.06-3.873-.195-7.304-2.05-9.602-4.868-.4.69-.63 1.49-.63 2.342 0 1.616.823 3.043 2.072 3.878-.764-.025-1.482-.234-2.11-.583v.06c0 2.257 1.605 4.14 3.737 4.568-.392.106-.803.162-1.227.162-.3 0-.593-.028-.877-.082.593 1.85 2.313 3.198 4.352 3.234-1.595 1.25-3.604 1.995-5.786 1.995-.376 0-.747-.022-1.112-.065 2.062 1.323 4.51 2.093 7.14 2.093 8.57 0 13.255-7.098 13.255-13.254 0-.2-.005-.402-.014-.602.91-.658 1.7-1.477 2.323-2.41z",
verifiedPath: "M8.52 3.59c.8-1.1 2.04-1.84 3.48-1.84s2.68.74 3.49 1.84c1.34-.21 2.74.14 3.76 1.16s1.37 2.42 1.16 3.77c1.1.8 1.84 2.04 1.84 3.48s-.74 2.68-1.84 3.48c.21 1.34-.14 2.75-1.16 3.77s-2.42 1.37-3.76 1.16c-.8 1.1-2.05 1.84-3.49 1.84s-2.68-.74-3.48-1.84c-1.34.21-2.75-.14-3.77-1.16-1.01-1.02-1.37-2.42-1.16-3.77-1.09-.8-1.84-2.04-1.84-3.48s.75-2.68 1.84-3.48c-.21-1.35.14-2.75 1.16-3.77s2.43-1.37 3.77-1.16zm3.48.16c-.85 0-1.66.53-2.12 1.43l-.38.77-.82-.27c-.96-.32-1.91-.12-2.51.49-.6.6-.8 1.54-.49 2.51l.27.81-.77.39c-.9.46-1.43 1.27-1.43 2.12s.53 1.66 1.43 2.12l.77.39-.27.81c-.31.97-.11 1.91.49 2.51.6.61 1.55.81 2.51.49l.82-.27.38.77c.46.9 1.27 1.43 2.12 1.43s1.66-.53 2.12-1.43l.39-.77.82.27c.96.32 1.9.12 2.51-.49.6-.6.8-1.55.48-2.51l-.26-.81.76-.39c.91-.46 1.43-1.27 1.43-2.12s-.52-1.66-1.43-2.12l-.77-.39.27-.81c.32-.97.12-1.91-.48-2.51-.61-.61-1.55-.81-2.51-.49l-.82.27-.39-.77c-.46-.9-1.27-1.43-2.12-1.43zm4.74 5.68l-6.2 6.77-3.74-3.74 1.41-1.42 2.26 2.26 4.8-5.23 1.47 1.36z",
homePath: "M21.591 7.146L12.52 1.157c-.316-.21-.724-.21-1.04 0l-9.071 5.99c-.26.173-.409.456-.409.757v13.183c0 .502.418.913.929.913h6.638c.511 0 .929-.41.929-.913v-7.075h3.008v7.075c0 .502.418.913.929.913h6.639c.51 0 .928-.41.928-.913V7.904c0-.301-.158-.584-.408-.758zM20 20l-4.5.01.011-7.097c0-.502-.418-.913-.928-.913H9.44c-.511 0-.929.41-.929.913L8.5 20H4V8.773l8.011-5.342L20 8.764z",
homeActivePath: "M21.591 7.146L12.52 1.157c-.316-.21-.724-.21-1.04 0l-9.071 5.99c-.26.173-.409.456-.409.757v13.183c0 .502.418.913.929.913H9.14c.51 0 .929-.41.929-.913v-7.075h3.909v7.075c0 .502.417.913.928.913h6.165c.511 0 .929-.41.929-.913V7.904c0-.301-.158-.584-.408-.758z",
oldHomePath: "M12 9c-2.209 0-4 1.791-4 4s1.791 4 4 4 4-1.791 4-4-1.791-4-4-4zm0 6c-1.105 0-2-.895-2-2s.895-2 2-2 2 .895 2 2-.895 2-2 2zm0-13.304L.622 8.807l1.06 1.696L3 9.679V19.5C3 20.881 4.119 22 5.5 22h13c1.381 0 2.5-1.119 2.5-2.5V9.679l1.318.824 1.06-1.696L12 1.696zM19 19.5c0 .276-.224.5-.5.5h-13c-.276 0-.5-.224-.5-.5V8.429l7-4.375 7 4.375V19.5z",
oldHomeActivePath: "M12 1.696L.622 8.807l1.06 1.696L3 9.679V19.5C3 20.881 4.119 22 5.5 22h13c1.381 0 2.5-1.119 2.5-2.5V9.679l1.318.824 1.06-1.696L12 1.696zM12 16.5c-1.933 0-3.5-1.567-3.5-3.5s1.567-3.5 3.5-3.5 3.5 1.567 3.5 3.5-1.567 3.5-3.5 3.5z",
oshogatsuXlogoPath: "M18.436 1.92h3.403l-7.433 8.495 8.745 11.563h-6.849l-5.363-7.012-6.136 7.012H1.4l7.951-9.088L.96 1.92h7.02l4.848 6.41 5.608-6.41zm-1.194 18.021h1.886L6.958 3.851H4.933l12.308 16.09z",
};
const colors = {
twitterColor: "rgb(29, 155, 240)",
loadingBirdColor: "rgba(29,161,242,1.00)",
};
/**
* Add style to head
*/
function styleInject(head, env) {
const style = document.createElement("style");
const verifiedSelector = `a[href="/i/verified-choose"] > div > div > svg > g > path`;
const verifiedSelectorMobile = `a[href="/i/verified-choose"] > div > svg > g > path`;
const xLogoSelector = [
`path[d="${paths.oshogatsuXlogoPath}"]:not(${verifiedSelector}):not(${verifiedSelectorMobile})`,
`path[d="${paths.xLogoPath}"]:not(${verifiedSelector}):not(${verifiedSelectorMobile})`,
].join(",");
const xLogoDarkmodeSelector = `div[style="text-overflow: unset; color: rgb(239, 243, 244);"] > svg > g > path:not(${verifiedSelector}):not(${verifiedSelectorMobile})`;
const homeSelector = 'a[data-testid="AppTabBar_Home_Link"] > div > div > svg > g > path';
style.innerHTML = `
.x-to-twitter {
fill: inherit;
color: ${colors.twitterColor};
}
${xLogoSelector}, path[d="${paths.loadingXLogoPath}"] {
d:path("${paths.birdPath}");
fill: inherit;
color: ${colors.twitterColor};
}
${xLogoDarkmodeSelector} {
color: rgb(239, 243, 244);
}
div[aria-label="Loading…"] > svg > g > path {
d:path("${paths.birdPath}");
fill: inherit;
color: ${colors.loadingBirdColor};
}
${verifiedSelector}, ${verifiedSelectorMobile} {
d:path("${paths.verifiedPath}");
}
${homeSelector}:not(path[d="${paths.homePath}"]) {
d:path("${paths.oldHomeActivePath}");
}
${homeSelector}:not(path[d="${paths.homeActivePath}"]) {
d:path("${paths.oldHomePath}");
}
${env === "extension" || env === "userscript_windows"
? `
a[data-testid="SideNav_NewTweet_Button"], button[data-testid="tweetButtonInline"], button[data-testid="tweetButtonInline"], button[data-testid="tweetButton"] {
background-color: var(--x-to-twitter-theme)!important;
}
a[data-testid="SideNav_NewTweet_Button"] div[dir="ltr"], a[data-testid="SideNav_NewTweet_Button"] > div[dir="ltr"] > svg, button[data-testid="tweetButtonInline"] div[dir="ltr"], button[data-testid="tweetButtonInline"] div[dir="ltr"], button[data-testid="tweetButton"] div[dir="ltr"] {
color: rgb(255, 255, 255)!important;
}
`
: ""}
`;
head.appendChild(style);
}
const titleReplacer = {
selector: "head",
callback: (head) => {
const titleElem = head.querySelector("title");
if (titleElem !== null) {
if (titleElem.innerHTML === "X") {
log("Title repalce", false);
titleElem.innerHTML = "Twitter";
}
else {
log("Title repalce", false);
const split = titleElem.innerHTML.split("/");
if (split[1] === " X") {
split[1] = " Twitter";
titleElem.innerHTML = split.join("/");
}
}
}
},
};
/**
* Get theme rgb from react state.
* @returns {Promise<string>} theme RGB
*/
function getThemeColor() {
function foundLtr(ltr) {
const propsKey = Object.keys(ltr).filter((key) => key.match(/^__reactProps/))[0];
const props = ltr[propsKey];
const store = props.children.props.children.props.children[1].props.children.props
.children.props.children.props.value.store;
const state = store.getState();
switch (state.settings.local.themeColor) {
case "purple500":
return "rgb(120, 86, 255)";
case "orange500":
return "rgb(255, 122, 0)";
case "magenta500":
return "rgb(249, 24, 128)";
case "green500":
return "rgb(0, 186, 124)";
case "yellow500":
return "rgb(255, 212, 0)";
case "blue500":
return "rgb(29, 155, 240)";
default:
return "rgb(29, 155, 240)";
}
}
return new Promise((resolve) => {
const reactRoot = document.querySelector("#react-root");
const ltrO = new MutationObserver(() => {
const ltr = document.querySelector('#react-root > div > div > div[dir="ltr"]');
if (ltr !== null) {
const themeColorRGB = foundLtr(ltr);
resolve(themeColorRGB);
ltrO.disconnect();
}
else {
throw new Error("Ltr is null");
}
});
if (reactRoot !== null) {
ltrO.observe(reactRoot, {
subtree: true,
childList: true,
});
}
});
}
/**
* Set theme rgb to css variable.
* @param {*} themeColor
* @param {*} head
*/
function setThemeColor(themeColor, head) {
const style = document.createElement("style");
style.innerHTML = `
:root {
--x-to-twitter-theme : ${themeColor};
}
`;
head.appendChild(style);
}
/**
* Replace PWA's manifest.
* !! It's worked on extension environment only
*/
function replaceManifest(head) {
const oldManifestEl = document.querySelector('link[rel="manifest"]');
if (oldManifestEl !== null) {
oldManifestEl.remove();
}
const manifestEl = document.createElement("link");
manifestEl.setAttribute("rel", "manifest");
manifestEl.setAttribute("crossorigin", "use-credentials");
manifestEl.setAttribute("href", chrome.runtime.getURL("/twitterManifest.json"));
head.prepend(manifestEl);
}
const forSafari = {
selector: "body",
callback: (body) => {
const pathElems = body.querySelectorAll([
`path[d="${paths.xLogoPath}"]:not(.x-to-twitter):not(a[href="/i/verified-choose"] > div > div > svg > g > path, a[href="/i/verified-choose"] > div > svg > g > path)`,
`path[d="${paths.oshogatsuXlogoPath}"]:not(.x-to-twitter):not(a[href="/i/verified-choose"] > div > div > svg > g > path, a[href="/i/verified-choose"] > div > svg > g > path)`,
`path[d="${paths.loadingXLogoPath}"]:not(.x-to-twitter)`,
].join(","));
if (pathElems.length !== 0) {
pathElems.forEach((path) => {
log("For safari");
path.setAttribute("d", paths.birdPath);
path.classList.add("x-to-twitter");
});
}
const verifiedElems = document.querySelectorAll(`a[href="/i/verified-choose"] > div > div > svg > g > path:not(.x-to-twitter-noncolor), a[href="/i/verified-choose"] > div > svg > g > path:not(.x-to-twitter-noncolor)`);
if (verifiedElems.length !== 0) {
verifiedElems.forEach((path) => {
path.setAttribute("d", paths.verifiedPath);
path.classList.add("x-to-twitter-noncolor");
});
}
const homeicon = document.querySelector(`a[data-testid="AppTabBar_Home_Link"] > div > div > svg > g > path:not(.x-to-twitter-birdhome)`);
if (homeicon !== null) {
const d = homeicon.getAttribute("d");
if (d === paths.homeActivePath) {
homeicon.setAttribute("d", paths.oldHomeActivePath);
}
if (d === paths.homePath) {
homeicon.setAttribute("d", paths.oldHomePath);
}
homeicon.classList.add("x-to-twitter-birdhome");
}
const loading = document.querySelector('div[aria-label="Loading…"] > svg > g > path');
if (loading !== null) {
loading.setAttribute("d", paths.birdPath);
}
},
};
const i18n = {
"ar-x-fm": {
f70a36d0: "تغريد الكل",
d25289b4: "مُعاد تغريدها بواسطة",
bab1f8b0: "التغريدات",
h99e9c95: 'return["قام "," بإعادة تغريدها"]',
d2c7a41c: "غرّدي ردَكِ",
e2414184: 'return"تغريد"+n(e.count,"ات","ة","ة","ة","تا","ة")+" اقتباس"',
hb7b0cea: 'return e.retweetCount+" إعاد"+n(e.retweetCount,"ات","ة","ة","ة","تا","ة")+" تغريد"',
bd7c039f: "تغريدات اقتباس",
bea869b3: "غرّدي",
hdf72269: "ردّ",
e349147b: "ماذا يحدث؟",
f3bbbb87: "التراجع عن التغريدة",
c9d7235d: "اقتباس التغريدة",
d6c85149: "إعادة التغريد",
d91695cb: 'return e.fullName+" (@"+e.screenName+") غرّد:\\n"+e.tweet',
d6917e0c: 'return"عرض "+e.count+" تغريد"+n(e.count,"ات","ة","ة","ة","تين","ة")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
bg: {
f70a36d0: "Туитване на всички",
d25289b4: "Ретуитнат от",
bab1f8b0: "Туитове",
h99e9c95: 'return[""," ретуитна"]',
d2c7a41c: "Отговори с туит",
e2414184: 'return""+n(e.count,"Цитиране на туита","Туитове с цитат")',
hb7b0cea: 'return e.retweetCount+" ретуит"+n(e.retweetCount,"","а")',
bd7c039f: "Туитове с цитат",
bea869b3: "Туит",
hdf72269: "Отговор",
e349147b: "Какво се случва?",
f3bbbb87: "Отмяна на ретуитването",
c9d7235d: "Цитиране на туита",
d6c85149: "Ретуитване",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0c: 'return"Показване на "+e.count+" туит"+n(e.count,"","а")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
bn: {
f70a36d0: "সব টুইট করুন",
d25289b4: "পুনঃ টুইট করেছেন",
bab1f8b0: "টুইটগুলি",
h99e9c95: 'return[""," পুনঃ টুইট করেছেন"]',
d2c7a41c: "আপনার উত্তর টুইট করুন",
e2414184: 'return"টুইট উদ্ধৃত"+a(e.count," করুন","িগুলো")',
hb7b0cea: 'return e.retweetCount+" পুনঃ"+a(e.retweetCount," টুইট করুন","টুইটগুলো")',
bd7c039f: "টুইট উদ্ধৃতিগুলো",
hdf72269: "উত্তর",
e349147b: "কী ঘটছে?",
f3bbbb87: "পুনঃ টুইট পুর্বাবস্থায় ফেরান",
c9d7235d: "টুইট উদ্ধৃত করুন",
d6c85149: "পুনঃটুইট",
d91695cb: 'return e.fullName+" (@"+e.screenName+") টুইট করেছেন: "+e.tweet',
d6917e0c: 'return e.count+" টুইট"+a(e.count,"","গুলো")+" দেখান"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
bea869b3: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
ca: {
f70a36d0: "Tuita-ho tot",
d25289b4: "Retuitat per",
bab1f8b0: "Tuits",
h99e9c95: 'return[""," ha retuitat"]',
d2c7a41c: "Tuita una resposta",
e2414184: 'return""+r(e.count,"Cita el tuit","Tuits amb cita")',
hb7b0cea: 'return e.retweetCount+" Retuit"+r(e.retweetCount,"","s")',
bd7c039f: "Tuits amb cita",
bea869b3: "Tuita",
hdf72269: "Respon",
e349147b: "Què passa?",
f3bbbb87: "Desfés el retuit",
c9d7235d: "Cita el tuit",
d6c85149: "Retuit",
d91695cb: 'return e.fullName+" (@"+e.screenName+") ha tuitat: "+e.tweet',
d6917e0c: 'return"Mostra "+e.count+" Tuit"+r(e.count,"","s")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
cs: {
f70a36d0: "Tweetnout vše",
d25289b4: "Retweetnuto uživateli",
bab1f8b0: "Tweety",
h99e9c95: 'return["Uživatel "," retweetnul"]',
d2c7a41c: "Tweetnout odpověď",
e2414184: 'return""+n(e.count,"Tweety s citací","Tweety s citací","Citovat Tweet","Tweety s citací")',
hb7b0cea: 'return e.retweetCount+" Retweet"+n(e.retweetCount,"y","y","","ů")',
bd7c039f: "Tweety s citací",
bea869b3: "Tweet",
hdf72269: "Odpovědět",
e349147b: "Co se právě děje?",
f3bbbb87: "Zrušit Retweet",
c9d7235d: "Citovat Tweet",
d6c85149: "Retweetnout",
d91695cb: 'return"Uživatel "+e.fullName+" (@"+e.screenName+") tweetnul: "+e.tweet',
d6917e0c: 'return"Ukázat "+e.count+" "+n(e.count,"tweety","tweety","Tweet","tweetů")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
da: {
f70a36d0: "Tweet alt",
d25289b4: "Retweetet af",
bab1f8b0: "Tweets",
h99e9c95: 'return[""," retweetede"]',
d2c7a41c: "Tweet dit svar",
e2414184: 'return"Cit"+i(e.count,"ér Tweet","at-Tweets")',
hb7b0cea: 'return e.retweetCount+" Retweet"+i(e.retweetCount,"","s")',
bd7c039f: "Citat-Tweets",
bea869b3: "Tweet",
hdf72269: "Svar",
e349147b: "Hvad sker der?",
f3bbbb87: "Fortryd Retweet",
c9d7235d: "Citér Tweet",
d6c85149: "Retweet",
d91695cb: 'return e.fullName+" (@"+e.screenName+") tweetede: "+e.tweet',
d6917e0c: 'return"Vis "+e.count+" Tweet"+i(e.count,"","s")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
de: {
f70a36d0: "Alle twittern",
d25289b4: "Retweetet von",
bab1f8b0: "Tweets",
h99e9c95: 'return[""," hat retweetet"]',
d2c7a41c: "Twittere deine Antwort",
e2414184: 'return""+r(e.count,"Tweet zitieren","Zitierte Tweets")',
hb7b0cea: 'return e.retweetCount+" Retweet"+r(e.retweetCount,"","s")',
bd7c039f: "Zitierte Tweets",
bea869b3: "Twittern",
hdf72269: "Antworten",
e349147b: "Was gibt's Neues?",
f3bbbb87: "Retweet rückgängig machen",
c9d7235d: "Tweet zitieren",
d6c85149: "Retweeten",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0c: 'return e.count+" Tweet"+r(e.count,"","s")+" anzeigen"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
el: {
f70a36d0: "Δημοσίευση όλων ως Tweet",
d25289b4: "Έγινε Retweet από",
bab1f8b0: "Tweet",
h99e9c95: 'return["Ο χρήστης "," έκανε Retweet"]',
d2c7a41c: "Κάντε Tweet με την απάντησή σας",
e2414184: 'return""+n(e.count,"Παράθεση Tweet","Tweet με παράθεση")',
hb7b0cea: 'return e.retweetCount+" Retweet"',
bd7c039f: "Tweet με παράθεση",
bea869b3: "Tweet",
hdf72269: "Απάντηση",
e349147b: "Τι συμβαίνει;",
f3bbbb87: "Αναίρεση Retweet",
c9d7235d: "Παράθεση Tweet",
d6c85149: "Retweet",
d91695cb: 'return"Ο χρήστης "+e.fullName+" (@"+e.screenName+") έγραψε το Tweet: "+e.tweet',
d6917e0c: 'return"Εμφάνιση "+e.count+" Tweet"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
"en-GB": {
f70a36d0: "Tweet all",
d25289b4: "Retweeted by",
bab1f8b0: "Tweets",
h99e9c95: 'return[""," Retweeted"]',
d2c7a41c: "Tweet your reply",
e2414184: 'return"Quote Tweet"+n(e.count,"","s")',
hb7b0cea: 'return e.retweetCount+" Retweet"+n(e.retweetCount,"","s")',
bd7c039f: "Quote Tweets",
bea869b3: "Tweet",
hdf72269: "Reply",
e349147b: "What’s happening?",
f3bbbb87: "Undo Retweet",
c9d7235d: "Quote Tweet",
d6c85149: "Retweet",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted: "+e.tweet',
d6917e0c: 'return"Show "+e.count+" Tweet"+n(e.count,"","s")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
en: {
f70a36d0: "Tweet all",
d25289b4: "Retweeted by",
bab1f8b0: "Tweets",
h99e9c95: 'return[""," Retweeted"]',
d2c7a41c: "Tweet your reply",
e2414185: 'return"Quote Tweet"+n(e.count,"","s")',
hb7b0ceb: 'return e.retweetCount+" Retweet"+n(e.retweetCount,"","s")',
bd7c0390: "Quote Tweets",
bea869b4: "Tweet",
d17df548: "Reply",
e349147c: "What’s happening?",
fa9ce7f4: "Undo Retweet",
c9d7235e: "Quote Tweet",
d6c8514a: "Retweet",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0d: 'return"Show "+e.count+" Tweet"+n(e.count,"","s")',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
es: {
f70a36d0: "Twittear todo",
d25289b4: "Retwitteado por",
bab1f8b0: "Tweets",
h99e9c95: 'return[""," lo retwitteó"]',
d2c7a41c: "Twittea tu respuesta",
e2414184: 'return""+r(e.count,"Citar Tweet","Tweets citados")',
hb7b0cea: 'return e.retweetCount+" Retweet"+r(e.retweetCount,"","s")',
bd7c039f: "Tweets citados",
bea869b3: "Twittear",
hdf72269: "Responder",
e349147b: "¿Qué está pasando?",
f3bbbb87: "Deshacer Retweet",
c9d7235d: "Citar Tweet",
d6c85149: "Retwittear",
d91695cb: 'return e.fullName+" (@"+e.screenName+") twitteó: "+e.tweet',
d6917e0c: 'return"Mostrar "+e.count+" Tweet"+r(e.count,"","s")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
fa: {
f70a36d0: "توییت به همه",
d25289b4: "بازتوییت شد توسط",
bab1f8b0: "توييتها",
h99e9c95: 'return[""," بازتوییت کرد"]',
d2c7a41c: "پاسختان را توییت کنید",
e2414184: 'return"نقلتوییت"',
hb7b0cea: 'return e.retweetCount+" بازتوییت"',
bd7c039f: "نقلتوییتها",
bea869b3: "توییت",
hdf72269: "پاسخ",
e349147b: "چه خبر است؟",
f3bbbb87: "لغو بازتوییت",
c9d7235d: "نقلتوییت",
d6c85149: "بازتوییت",
d91695cb: 'return e.fullName+" (@"+e.screenName+") توییت کرد: "+e.tweet',
d6917e0c: 'return"نمایش "+e.count+" تو"+f(e.count,"یی","يي")+"ت"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
eu: {
f70a36d0: "Txiotu guztiak",
d25289b4: "Bertxiotua:",
bab1f8b0: "Txioak",
h99e9c95: 'return[""," erabiltzaileak bertxiotu du"]',
d2c7a41c: "Txiokatu erantzuna",
e2414184: 'return"Quote Tweet"+n(e.count,"","s")',
hb7b0cea: 'return e.retweetCount+" bertxio"',
bd7c039f: "Aipatu txioak",
bea869b3: "Txio",
hdf72269: "Erantzun",
e349147b: "Zer ari da gertatzen?",
f3bbbb87: "Desegin birtxiokatzea",
c9d7235d: "Txioa apaitu",
d6c85149: "Bertxiotu",
d91695cb: 'return e.fullName+"(e)k (@"+e.screenName+") Txiokatu du: "+e.tweet',
d6917e0c: 'return"Show "+e.count+" Tweet"+n(e.count,"","s")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
fi: {
f70a36d0: "Twiittaa kaikki",
d25289b4: "Uudelleentwiitannut",
bab1f8b0: "Twiitit",
h99e9c95: 'return[""," uudelleentwiittasi"]',
d2c7a41c: "Twiittaa vastauksesi",
bd7c039f: "Twiitin lainaukset",
bea869b3: "Twiittaa",
hdf72269: "Vastaa",
e349147b: "Mitä tapahtuu?",
f3bbbb87: "Kumoa uudelleentwiittaus",
c9d7235d: "Twiitin lainaus",
d6c85149: "Uudelleentwiittaa",
e2414184: null,
e2414185: null,
hb7b0ceb: null,
hb7b0cea: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d91695cb: null,
d6917e0c: null,
d6917e0d: null,
},
fr: {
f70a36d0: "Tout tweeter",
d25289b4: "Retweeté par",
bab1f8b0: "Tweets",
h99e9c95: 'return[""," a retweeté"]',
d2c7a41c: "Tweetez votre réponse.",
e2414185: 'return""+s(e.count,"Citer le Tweet","Tweets cités")',
hb7b0ceb: 'return e.retweetCount+" Retweet"+s(e.retweetCount,"","s")',
bd7c0390: "Tweets cités",
bea869b4: "Tweeter",
d17df548: "Répondre",
e349147c: "Quoi de neuf ?",
fa9ce7f4: "Annuler le Retweet",
c9d7235e: "Citer le Tweet",
d6c8514a: "Retweeter",
d91695cb: 'return e.fullName+" (@"+e.screenName+") a tweeté : "+e.tweet',
d6917e0d: 'return"Voir "+e.count+" Tweet"+s(e.count,"","s")',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
ga: {
f70a36d0: "Tweetáil gach rud",
d25289b4: "Atweetáilte ag",
bab1f8b0: "Tweetanna",
h99e9c95: 'return["Rinne "," Atweetáil"]',
d2c7a41c: "Tweetáil do Fhreagra",
bd7c0390: "Luaigh Tvuíteanna",
bea869b4: "Tweet",
d17df548: "Freagair",
e349147c: "Cad atá ag tarlú?",
fa9ce7f4: "Cuir an Atweet ar ceal",
c9d7235e: "Cuir Ráiteas Leis",
d6c8514a: "Atweetáil",
e2414184: null,
e2414185: null,
hb7b0ceb: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d91695cb: null,
d6917e0c: null,
d6917e0d: null,
},
gl: {
f70a36d0: "Chiar todo",
d25289b4: "Rechouchiado por",
bab1f8b0: "Chíos",
h99e9c95: 'return[""," rechouchiou"]',
d2c7a41c: "Chía a túa resposta",
e2414184: 'return"Quote Tweet"+r(e.count,"","s")',
hb7b0cea: 'return e.retweetCount+" rechouchío"+t(e.retweetCount,"","s")',
bd7c039f: "Chíos citados",
bea869b3: "Chío",
hdf72269: "Responder",
e349147b: "Que está a pasar?",
f3bbbb87: "Desfacer rechouchío",
c9d7235d: "Citar chío",
d6c85149: "Rechouchiar",
d91695cb: 'return e.fullName+" (@"+e.screenName+") chiou:\\n"+e.tweet',
d6917e0c: 'return"Show "+e.count+" Tweet"+r(e.count,"","s")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
gu: {
f70a36d0: "બધાને ટ્વીટ કરો",
d25289b4: "આમની દ્વારા પુનટ્વીટ કરવામાં આવી",
bab1f8b0: "ટ્વીટ્સ",
h99e9c95: 'return["","એ પુનટ્વીટ કરી"]',
d2c7a41c: "તમારા પ્રત્યુતરને ટ્વીટ કરો",
e2414184: 'return"અવતરણની સાથે ટ્વીટ"+n(e.count," કરો","્સ")',
hb7b0cea: 'return e.retweetCount+" પુનટ્વીટ"+n(e.retweetCount,"","્સ")',
bd7c039f: "અવતરણની સાથે ટ્વીટ્સ",
bea869b3: "ટ્વીટ",
hdf72269: "પ્રત્યુતર",
e349147b: "શું ચાલી રહ્યું છે?",
f3bbbb87: "પુનટ્વીટને પૂર્વવત કરો",
c9d7235d: "અવતરણની સાથે ટ્વીટ કરો",
d6c85149: "પુનટ્વીટ",
d91695cb: 'return e.fullName+" (@"+e.screenName+") એ ટ્વીટ કરી: "+e.tweet',
d6917e0c: 'return"બતાવો "+e.count+" ટ્વીટ"+n(e.count,"","્સ")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
he: {
f70a36d0: "צייץ הכל",
d25289b4: "צויץ מחדש על־ידי",
bab1f8b0: "ציוצים",
h99e9c95: 'return[""," צייץ מחדש"]',
d2c7a41c: "צייץ את התשובה שלך",
e2414184: 'return"צי"+c(e.count,"וץ ציטוט","טוט ציוץ","וץ ציטוט","וץ ציטוט")',
hb7b0cea: 'return e.retweetCount+" ציו"+c(e.retweetCount,"צים","ץ","צים","צים")+" מחדש"',
bd7c039f: "ציוצי ציטוט",
bea869b3: "צייץ",
hdf72269: "השב",
e349147b: "מה קורה?",
f3bbbb87: "ביטול ציוץ מחדש",
c9d7235d: "ציטוט ציוץ",
d6c85149: "צייץ מחדש",
d91695cb: 'return e.fullName+" (@"+e.screenName+") צייץ: "+e.tweet',
d6917e0c: 'return"הצג "+e.count+" ציו"+c(e.count,"צים","ץ","צים","צים")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
hi: {
f70a36d0: "सभी ट्वीट करें",
d25289b4: "इनके द्वारा रीट्वीट किया गया",
bab1f8b0: "ट्वीट",
h99e9c95: 'return[""," ने रीट्वीट किया"]',
d2c7a41c: "अपना जवाब ट्वीट करें",
e2414185: 'return"कोट ट्वीट"+n(e.count,"","्स")',
hb7b0ceb: 'return e.retweetCount+" रीट्वीट"+n(e.retweetCount,"","्स")',
bd7c0390: "कोट ट्वीट्स",
bea869b4: "ट्वीट करें",
d17df548: "जवाब दें",
e349147c: "क्या हो रहा है?",
fa9ce7f4: "रीट्वीट को पूर्ववत करें",
c9d7235e: "ट्वीट क्वोट करें",
d6c8514a: "रीट्वीट करें",
d91695cb: 'return e.fullName+" (@"+e.screenName+") ने ट्वीट किया: "+e.tweet',
d6917e0d: 'return e.count+" ट्वीट"+n(e.count,"","्स")+" दिखाएं"',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
hr: {
f70a36d0: "Tweetaj sve",
d25289b4: "Korisnici koji su proslijedili Tweet",
bab1f8b0: "Tweetovi",
h99e9c95: 'return[""," proslijedio/la je Tweet"]',
d2c7a41c: "Pošalji Tweet s odgovorom",
e2414185: 'return""+t(e.count,"citirana tweeta","Citiraj Tweet","citiranih tweetova")',
hb7b0ceb: 'return e.retweetCount+" proslijeđen"+t(e.retweetCount,"a tweeta","i Tweet","ih tweetova")',
bd7c0390: "Citirani tweetovi",
bea869b4: "Tweet",
d17df548: "Odgovori",
e349147c: "Što se događa?",
fa9ce7f4: "Poništi prosljeđivanje tweeta",
c9d7235e: "Citiraj Tweet",
d6c8514a: "Proslijedi tweet",
d91695cb: 'return e.fullName+" (@"+e.screenName+") objavio/la je Tweet: "+e.tweet',
d6917e0d: 'return"Prikaži "+e.count+" "+t(e.count,"tweeta","Tweet","tweetova")',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
hu: {
f70a36d0: "Tweet küldése mindenkinek",
d25289b4: "Retweetelte",
bab1f8b0: "Tweetek",
h99e9c95: 'return[""," Retweetelte"]',
d2c7a41c: "Tweeteld válaszodat",
e2414185: 'return"Tweet"+n(e.count," idézése","-idézés")',
hb7b0ceb: 'return e.retweetCount+" Retweet"',
bd7c0390: "Tweet-idézések",
bea869b4: "Tweetelj",
d17df548: "Válasz",
e349147c: "Mi történik éppen most?",
fa9ce7f4: "Retweet visszavonása",
c9d7235e: "Tweet idézése",
d6c8514a: "Retweet",
d91695cb: 'return e.fullName+" (@"+e.screenName+") tweetelte: "+e.tweet',
d6917e0d: 'return e.count+" Tweet megjelenítése"',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
id: {
f70a36d0: "Tweet semua",
d25289b4: "Di-retweet oleh",
bab1f8b0: "Tweet",
h99e9c95: 'return[""," me-retweet"]',
d2c7a41c: "Tweet balasan Anda",
bd7c039f: "Tweet Kutipan",
bea869b3: "Tweet",
hdf72269: "Balas",
e349147b: "Apa yang sedang terjadi?",
f3bbbb87: "Batalkan Retweet",
c9d7235d: "Kutip Tweet",
d6c85149: "Retweet",
e2414184: null,
e2414185: null,
hb7b0ceb: null,
hb7b0cea: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d91695cb: null,
d6917e0c: null,
d6917e0d: null,
},
it: {
f70a36d0: "Twitta tutto",
d25289b4: "Ritwittato da",
bab1f8b0: "Tweet",
h99e9c95: 'return[""," ha ritwittato"]',
d2c7a41c: "Twitta la tua risposta",
e2414184: 'return"Tweet di citazione"',
hb7b0cea: 'return e.retweetCount+" Retweet"',
bd7c039f: "Tweet di citazione",
bea869b3: "Twitta",
hdf72269: "Rispondi",
e349147b: "Che c'è di nuovo?",
f3bbbb87: "Annulla Retweet",
c9d7235d: "Cita Tweet",
d6c85149: "Ritwitta",
d91695cb: 'return e.fullName+" (@"+e.screenName+") ha twittato: "+e.tweet',
d6917e0c: 'return"Mostra "+e.count+" Tweet"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
ja: {
f70a36d0: "すべてツイート",
d25289b4: "リツイートしたユーザー",
bab1f8b0: "ツイート",
h99e9c95: 'return["","さんがリツイート"]',
d2c7a41c: "返信をツイート",
e2414184: 'return"件の引用ツイート"',
hb7b0cea: 'return e.retweetCount+" 件のリツイート"',
bd7c039f: "引用ツイート",
bea869b3: "ツイートする",
hdf72269: "返信",
e349147b: "いまどうしてる?",
f3bbbb87: "リツイートを取り消す",
c9d7235d: "引用ツイート",
d6c85149: "リツイート",
d91695cb: 'return e.fullName+"(@"+e.screenName+")さんがツイートしました: "+e.tweet',
d6917e0c: 'return e.count+" 件のツイートを表示"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
kn: {
f70a36d0: "ಎಲ್ಲಾ ಟ್ವೀಟ್ ಮಾಡಿ",
d25289b4: "ಮರುಟ್ವೀಟಿಸಿದವರು",
bab1f8b0: "ಟ್ವೀಟ್ಗಳು",
h99e9c95: 'return[""," ಅವರು ಮರುಟ್ವೀಟಿಸಿದ್ದಾರೆ"]',
d2c7a41c: "ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಟ್ವೀಟ್ ಮಾಡಿ",
e2414185: 'return""+n(e.count,"ಟ್ವೀಟ್ ಕೋಟ್ ಮಾಡಿ","ಕೋಟ್ ಟ್ವೀಟ್ಗಳು")',
hb7b0ceb: 'return e.retweetCount+" ಮರುಟ್ವೀಟ"+n(e.retweetCount,"ಿಸಿ","್ಗಳು")',
bd7c0390: "ಕೋಟ್ ಟ್ವೀಟ್ಗಳು",
bea869b4: "ಟ್ವೀಟ್",
d17df548: "ಪ್ರತಿಕ್ರಿಯಿಸಿ",
e349147c: "ಏನಾಗುತ್ತಿದೆ?",
fa9ce7f4: "ಮರುಟ್ವೀಟಿಸುವುದನ್ನು ರದ್ದುಮಾಡಿ",
c9d7235e: "ಟ್ವೀಟ್ ಕೋಟ್ ಮಾಡಿ",
d6c8514a: "ಮರುಟ್ವೀಟಿಸಿ",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0d: 'return"ತೋರಿಸಿ "+e.count+" ಟ್ವೀಟ್"+n(e.count,"","ಗಳು")',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
ko: {
f70a36d0: "모두 트윗하기",
d25289b4: "리트윗함",
bab1f8b0: "트윗",
h99e9c95: 'return[""," 님이 리트윗함"]',
d2c7a41c: "내 답글을 트윗합니다.",
e2414184: 'return"인용한 트윗"',
hb7b0cea: 'return e.retweetCount+" 리트윗"',
bd7c039f: "트윗 인용하기",
bea869b3: "트윗",
hdf72269: "답글",
e349147b: "무슨 일이 일어나고 있나요?",
f3bbbb87: "리트윗 취소",
c9d7235d: "트윗 인용하기",
d6c85149: "리트윗",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0c: 'return"보기 "+e.count+" 트윗"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
mr: {
f70a36d0: "सर्व ट्विट करा",
d25289b4: "यांनी पुन्हा ट्विट केले",
bab1f8b0: "ट्विट्स",
h99e9c95: 'return[""," यांनी पुन्हा ट्विट केले"]',
d2c7a41c: "आपल्या प्रत्युत्तरावर ट्विट करा",
e2414184: 'return""+r(e.count,"ट्विट वर भाष्य करा","भाष्य ट्विट्स")',
hb7b0cea: 'return e.retweetCount+" पुन"+r(e.retweetCount,"्हा ट्विट करा","र्ट्विट्स")',
bd7c039f: "भाष्य ट्विट्स",
bea869b3: "ट्विट",
hdf72269: "प्रत्युत्तर",
e349147b: "काय घडत आहे?",
f3bbbb87: "पुनर्ट्विट पूर्ववत करा",
c9d7235d: "ट्विट वर भाष्य करा",
d6c85149: "पुन्हा ट्विट",
d91695cb: 'return e.fullName+" (@"+e.screenName+") यांनी ट्विट केले: "+e.tweet',
d6917e0c: 'return e.count+" ट्विट"+r(e.count,"","्स")+" दाखवा"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
ms: {
f70a36d0: "Tweet semua",
d25289b4: "Ditweet semula oleh",
bab1f8b0: "Tweet",
h99e9c95: 'return[""," telah Tweet semula"]',
d2c7a41c: "Tweet balasan anda",
bd7c039f: "Tweet Petikan",
bea869b3: "Tweet",
hdf72269: "Balas",
e349147b: "Apakah yang sedang berlaku?",
f3bbbb87: "Buat asal Tweet semula",
c9d7235d: "Petik Tweet",
d6c85149: "Tweet semula",
e2414184: null,
e2414185: null,
hb7b0ceb: null,
hb7b0cea: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d91695cb: null,
d6917e0c: null,
d6917e0d: null,
},
nb: {
f70a36d0: "Tweet alle",
d25289b4: "Retweetet av",
bab1f8b0: "Tweets",
h99e9c95: 'return[""," retweetet"]',
d2c7a41c: "Tweet svaret ditt",
e2414185: 'return"sitat-Tweet"+i(e.count,"","s")',
hb7b0ceb: 'return e.retweetCount+" Retweet"+i(e.retweetCount,"","s")',
bd7c0390: "Sitat-Tweets",
bea869b4: "Tweet",
d17df548: "Svar",
e349147c: "Hva skjer?",
fa9ce7f4: "Angre Retweet",
c9d7235e: "Sitat-Tweet",
d6c8514a: "Retweet",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweetet: "+e.tweet',
d6917e0d: 'return"Vis "+e.count+" Tweet"+i(e.count,"","s")',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
nl: {
f70a36d0: "Alles tweeten",
d25289b4: "Geretweet door",
bab1f8b0: "Tweets",
h99e9c95: 'return[""," heeft geretweet"]',
d2c7a41c: "Je antwoord tweeten",
e2414185: 'return""+r(e.count,"Citeer Tweet","Geciteerde Tweets")',
hb7b0ceb: 'return e.retweetCount+" Retweet"+r(e.retweetCount,"","s")',
bd7c0390: "Geciteerde Tweets",
bea869b4: "Tweeten",
d17df548: "Beantwoorden",
e349147c: "Wat houdt je bezig?",
fa9ce7f4: "Retweet ongedaan maken",
c9d7235e: "Citeer Tweet",
d6c8514a: "Retweeten",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0d: 'return e.count+" Tweet"+r(e.count,"","s")+" weergeven"',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
pl: {
f70a36d0: "Tweetnij wszystko",
d25289b4: "Podane dalej przez",
bab1f8b0: "Tweety",
h99e9c95: 'return[""," podał/a dalej Tweeta"]',
d2c7a41c: "Wyślij Tweeta z odpowiedzią",
e2414184: 'return"Cyt"+n(e.count,"aty z","atów z","uj","atów z")+" Tweeta"',
hb7b0cea: 'return e.retweetCount+" Tweet"+n(e.retweetCount,"y podane","ów podanych"," podany","ów podanych")+" dalej"',
bd7c039f: "Cytatów z Tweeta",
bea869b3: "Tweet",
hdf72269: "Odpowiedz",
e349147b: "Co się dzieje?",
f3bbbb87: "Cofnij podanie dalej",
c9d7235d: "Cytuj Tweeta",
d6c85149: "Podaj dalej",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Napisał/a: "+e.tweet',
d6917e0c: 'return"Pokaż "+e.count+" Tweet"+n(e.count,"y","ów","a","ów")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
pt: {
f70a36d0: "Tweetar tudo",
d25289b4: "Retweetado por",
bab1f8b0: "Tweets",
h99e9c95: 'return[""," retweetou"]',
d2c7a41c: "Tweete sua resposta",
e2414184: 'return"Tweet"+r(e.count,"","s")+" de comentário"',
hb7b0cea: 'return e.retweetCount+" Retweet"+r(e.retweetCount,"","s")',
bd7c039f: "Tweets com comentário",
bea869b3: "Tweetar",
hdf72269: "Responder",
e349147b: "O que está acontecendo?",
f3bbbb87: "Desfazer Retweet",
c9d7235d: "Citar Tweet",
d6c85149: "Retweetar",
d91695cb: 'return e.fullName+" (@"+e.screenName+") tweetou: "+e.tweet',
d6917e0c: 'return"Mostrar "+e.count+" Tweet"+r(e.count,"","s")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
ro: {
f70a36d0: "Dă Tweeturi cu tot",
d25289b4: "Redistribuit de către",
bab1f8b0: "Tweeturi",
h99e9c95: 'return[""," a redistribuit"]',
d2c7a41c: "Dă un Tweet cu răspunsul",
e2414184: 'return""+r(e.count,"Tweeturi cu citat","Tweet cu citat","de Tweeturi cu citate")',
hb7b0cea: 'return e.retweetCount+" "+r(e.retweetCount,"Retweeturi","Retweet","de Retweeturi")',
bd7c039f: "Tweeturi cu citat",
bea869b3: "Tweet",
hdf72269: "Răspunde",
e349147b: "Ce se întâmplă?",
f3bbbb87: "Anulează Retweetul",
c9d7235d: "Citează Tweetul",
d6c85149: "Redistribuie",
d91695cb: 'return e.fullName+" (@"+e.screenName+") a dat Tweetul: "+e.tweet',
d6917e0c: 'return"Afișează "+e.count+" "+r(e.count,"Tweeturi","Dă Tweet","Tweeturi")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
ru: {
f70a36d0: "Твитнуть все",
d25289b4: "Ретвитнул(а)",
bab1f8b0: "Твиты",
h99e9c95: 'return[""," ретвитнул(а)"]',
d2c7a41c: "Твитнуть в ответ",
e2414184: 'return""+n(e.count,"твита с цитатами","твитов с цитатами","Цитировать твит","Твиты с цитатами")',
hb7b0cea: 'return e.retweetCount+" ретвит"+n(e.retweetCount,"а","ов","","а")',
bd7c039f: "Твиты с цитатами",
bea869b3: "Твитнуть",
hdf72269: "Ответить",
e349147b: "Что происходит?",
f3bbbb87: "Отменить ретвит",
c9d7235d: "Цитировать",
d6c85149: "Ретвитнуть",
d91695cb: 'return e.fullName+" (@"+e.screenName+") твитнул(а): "+e.tweet',
d6917e0c: 'return"Показать "+e.count+" твит"+n(e.count,"а","ов","","а")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
sr: {
f70a36d0: "Твитуј све",
d25289b4: "Ретвитовано од стране",
bab1f8b0: "Твитови",
h99e9c95: 'return[""," ретвитује"]',
d2c7a41c: "Твитуј свој одговор",
e2414185: 'return"твит"+n(e.count,"а","","(ов)а")+" са цитатом"',
hb7b0ceb: 'return e.retweetCount+" ретвит"+n(e.retweetCount,"а","","ова")',
bd7c0390: "твит(ов)а са цитатом",
bea869b4: "Твитуј",
d17df548: "Одговори",
e349147c: "Шта се дешава?",
fa9ce7f4: "Опозови ретвит",
c9d7235e: "твит са цитатом",
d6c8514a: "Ретвитуј",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0d: 'return"Прикажи "+e.count+" твит"+n(e.count,"а","","ова")',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
sk: {
f70a36d0: "Tweetnuť všetko",
d25289b4: "Retweetnuté používateľom",
bab1f8b0: "Tweety",
h99e9c95: 'return["Používateľ "," retweetol"]',
d2c7a41c: "Tweetnuť odpoveď",
e2414184: 'return"Tweet"+n(e.count,"y","u","","y")+" s citátom"',
hb7b0cea: 'return e.retweetCount+" retweet"+n(e.retweetCount,"y","u","","ov")',
bd7c039f: "Tweety s citátom",
bea869b3: "Tweetnuť",
hdf72269: "Odpovedať",
e349147b: "Čo sa deje?",
f3bbbb87: "Zrušiť retweet",
c9d7235d: "Tweet s citátom",
d6c85149: "Retweetnuť",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0c: 'return"Zobraziť "+e.count+" Tweet"+n(e.count,"y","u","","ov")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
sv: {
f70a36d0: "Tweeta allt",
d25289b4: "Retweetad av",
bab1f8b0: "Tweets",
h99e9c95: 'return[""," Retweetade"]',
d2c7a41c: "Tweeta ditt svar",
e2414184: 'return"citat-tweet"+r(e.count,"","s")',
hb7b0cea: 'return e.retweetCount+" Retweet"+r(e.retweetCount,"","s")',
bd7c039f: "Citat-tweets",
bea869b3: "Tweeta",
hdf72269: "Svara",
e349147b: "Vad händer?",
f3bbbb87: "Ångra retweeten",
c9d7235d: "Citera Tweet",
d6c85149: "Retweeta",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweetade: "+e.tweet',
d6917e0c: 'return"Visa "+e.count+" Tweet"+r(e.count,"","s")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
ta: {
f70a36d0: "அனைத்தையும் ட்விட் செய்",
d25289b4: "இவரால் மறுட்விட் செய்யப்பட்டது",
bab1f8b0: "கீச்சுகள்",
h99e9c95: 'return[""," மறுட்வீட் செய்துள்ளார்"]',
d2c7a41c: "உங்கள் பதிலை ட்விட் செய்யவும்",
e2414185: 'return""+n(e.count,"ட்விட்டை மேற்கோள் காட்டு","மேற்கோள் கீச்சுகள்")',
hb7b0ceb: 'return e.retweetCount+" மறுகீச்சு"+n(e.retweetCount,"","கள்")',
bd7c0390: "மேற்கோள் கீச்சுகள்",
bea869b4: "ட்விட் செய்",
d17df548: "பதிலளி",
e349147c: "என்ன நிகழ்கிறது?",
fa9ce7f4: "மறுகீச்சை செயல்தவிர்",
c9d7235e: "ட்விட்டை மேற்கோள் காட்டு",
d6c8514a: "மறுட்விட் செய்",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0d: 'return e.count+" கீச்சு"+n(e.count,"","கள்")+"-ஐக் காண்பி"',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
th: {
f70a36d0: "ทวีตทั้งหมด",
d25289b4: "ถูกรีทวีตโดย",
bab1f8b0: "ทวีต",
h99e9c95: 'return[""," รีทวีต"]',
d2c7a41c: "ทวีตการตอบกลับของคุณ",
e2414185: 'return"ทวีตและคำพูด"',
hb7b0ceb: 'return e.retweetCount+" รีทวีต"',
bd7c0390: "ทวีตและคำพูด",
bea869b4: "ทวีต",
d17df548: "ตอบกลับ",
e349147c: "มีอะไรเกิดขึ้นบ้าง",
fa9ce7f4: "ยกเลิกการรีทวีต",
c9d7235e: "อ้างอิงทวีต",
d6c8514a: "รีทวีต",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0d: 'return"แสดง "+e.count+" ทวีต"',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
tr: {
f70a36d0: "Hepsini Tweetle",
d25289b4: "Retweetleyen(ler):",
bab1f8b0: "Tweetler",
h99e9c95: 'return[""," Retweetledi"]',
d2c7a41c: "Yanıtını Tweetle",
e2414184: 'return"Alıntı Tweet"+r(e.count,"","ler")',
hb7b0cea: 'return e.retweetCount+" Retweet"',
bd7c039f: "Alıntı Tweetler",
bea869b3: "Tweetle",
hdf72269: "Yanıtla",
e349147b: "Neler oluyor?",
f3bbbb87: "Retweeti Geri Al",
c9d7235d: "Tweeti Alıntıla",
d6c85149: "Retweet",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweetledi: "+e.tweet',
d6917e0c: 'return"Göster "+e.count+" Tweet"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
uk: {
f70a36d0: "Твітнути все",
d25289b4: "Ретвіти",
bab1f8b0: "Твіти",
h99e9c95: 'return[""," ретвітнув(ла)"]',
d2c7a41c: "Твітніть відповідь",
e2414185: 'return"цитован"+n(e.count,"і твіти","их твітів","ий твіт","ого твіта")',
hb7b0ceb: 'return e.retweetCount+" ретвіт"+n(e.retweetCount,"и","ів","","а")',
bd7c0390: "Цитовані твіти",
bea869b4: "Твіт",
d17df548: "Відповісти",
e349147c: "Що відбувається?",
fa9ce7f4: "Скасувати ретвіт",
c9d7235e: "Цитувати твіт",
d6c8514a: "Ретвітнути",
d91695cb: 'return e.fullName+" (@"+e.screenName+") Tweeted:\\n"+e.tweet',
d6917e0d: 'return"Показати "+e.count+" твіт"+n(e.count,"и","ів","","а")',
e2414184: null,
hb7b0cea: null,
bd7c039f: null,
bea869b3: null,
hdf72269: null,
e349147b: null,
f3bbbb87: null,
c9d7235d: null,
d6c85149: null,
d6917e0c: null,
},
ur: {
f70a36d0: "سب کو ٹویٹ کریں",
d25289b4: "ریٹویٹ منجانب",
bab1f8b0: "ٹویٹس",
h99e9c95: 'return[""," نے ریٹویٹ کیا"]',
d2c7a41c: "اپنا جواب ٹویٹ کریں",
e2414184: 'return"Quote Tweet"+o(e.count,"","s")',
hb7b0cea: 'return e.retweetCount+" ریٹویٹ"',
bd7c039f: "ٹویٹ کو نقل کرو",
bea869b3: "ٹویٹ کریں",
hdf72269: "جواب دیں",
e349147b: "کیا ہو رہا ہے؟",
f3bbbb87: "ریٹویٹ کالعدم کریں",
c9d7235d: "ٹویٹ اقتباس کریں",
d6c85149: "ریٹویٹ",
d91695cb: 'return e.fullName+" (@"+e.screenName+") نے ٹویٹ کی: "+e.tweet',
d6917e0c: 'return"Show "+e.count+" Tweet"+o(e.count,"","s")',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
vi: {
f70a36d0: "Đăng Tweet tất cả",
d25289b4: "Được Tweet lại bởi",
bab1f8b0: "Tweet",
h99e9c95: 'return[""," đã Tweet lại"]',
d2c7a41c: "Tweet trả lời của bạn",
bd7c039f: "Tweet trích dẫn",
hdf72269: "Trả lời",
e349147b: "Chuyện gì đang xảy ra?",
f3bbbb87: "Hoàn tác Tweet lại",
c9d7235d: "Trích dẫn Tweet",
d6c85149: "Tweet lại",
e2414184: null,
e2414185: null,
hb7b0ceb: null,
hb7b0cea: null,
bd7c0390: null,
bea869b4: null,
bea869b3: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d91695cb: null,
d6917e0c: null,
d6917e0d: null,
},
"zh-Hant": {
f70a36d0: "推全部內容",
d25289b4: "已被轉推",
bab1f8b0: "推文",
h99e9c95: 'return[""," 已轉推"]',
d2c7a41c: "推你的回覆",
e2414184: 'return"引用的推文"',
hb7b0cea: 'return e.retweetCount+" 則轉推"',
bd7c039f: "引用的推文",
bea869b3: "推文",
hdf72269: "回覆",
e349147b: "有什麼新鮮事?",
f3bbbb87: "取消轉推",
c9d7235d: "引用推文",
d6c85149: "轉推",
d91695cb: 'return e.fullName+" (@"+e.screenName+") 已推文:"+e.tweet',
d6917e0c: 'return"顯示 "+e.count+" 則推文"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
zh: {
f70a36d0: "全部发推",
d25289b4: "转推者",
bab1f8b0: "推文",
h99e9c95: 'return[""," 转推了"]',
d2c7a41c: "发布你的回复",
e2414184: 'return"引用推文"',
hb7b0cea: 'return e.retweetCount+" 转推"',
bd7c039f: "引用推文",
bea869b3: "推文",
hdf72269: "回复",
e349147b: "有什么新鲜事?",
f3bbbb87: "撤销转推",
c9d7235d: "引用推文",
d6c85149: "转推",
d91695cb: 'return e.fullName+" (@"+e.screenName+") 发推说:"+e.tweet',
d6917e0c: 'return"显示 "+e.count+" 推文"',
e2414185: null,
hb7b0ceb: null,
bd7c0390: null,
bea869b4: null,
d17df548: null,
e349147c: null,
fa9ce7f4: null,
c9d7235e: null,
d6c8514a: null,
d6917e0d: null,
},
};
function header(messages) {
const header = document.querySelector(`h2[dir="ltr"]:not(#modal-header) > span`);
const toTweet = messages.bea869b3 !== null ? messages.bea869b3 : messages.bea869b4;
const quoteTweet = messages.c9d7235d !== null ? messages.c9d7235d : messages.bd7c0390;
const splitPath = location.pathname.split("/");
if (header !== null) {
if (splitPath[2] === "status" && splitPath[4] !== "photo") {
if (splitPath[4] === "retweets" && splitPath[5] === "with_comments") {
if (header.textContent !== quoteTweet) {
header.textContent = quoteTweet;
}
}
else {
if (header.textContent !== toTweet) {
header.textContent = toTweet;
}
}
}
}
}
/**
* プロフィールのタブのツイート
*/
function profileTweets(messages) {
const tweets = messages.bab1f8b0;
const profileTabPost = document.querySelector('div[role="tablist"] > div[role="presentation"]:nth-child(1) > a > div > div > span');
const isProfilePage = document.querySelector('div[data-testid="UserProfileHeader_Items"]') !==
null;
if (profileTabPost !== null &&
profileTabPost.textContent !== tweets &&
isProfilePage) {
setTimeout(() => {
if (document.querySelector(`script[data-testid="UserProfileSchema-test"]`) !== null) {
profileTabPost.textContent = tweets;
}
});
}
}
function quoteCounter(messages) {
const counterLinks = document.querySelectorAll("article > div > div > div:nth-child(3) > div:nth-child(5) > div > a");
let splitRetweets = null;
if (messages.e2414184 !== null) {
splitRetweets = messages.e2414184.split('"');
}
else if (messages.e2414185 !== null) {
splitRetweets = messages.e2414185.split('"');
}
if (splitRetweets === null) {
throw log(new Error("Can't get retweet's language messages!"));
}
const quote = splitRetweets[1].trim() +
(splitRetweets[5] !== undefined ? splitRetweets[5] : "");
counterLinks.forEach((counterLink) => {
const hrefSplit = counterLink.href.split("/");
if (hrefSplit[4] === "retweets" && hrefSplit[5] === "with_comments") {
const counter = counterLink.querySelector("a > span > span");
if (counter !== null) {
if (counter.textContent !== quote) {
counter.textContent = quote;
}
}
}
});
}
/**
* 返信をツイート
*/
function replyDraftEditorPlaceholder(messages) {
const whatsHappen = messages.e349147c !== null ? messages.e349147c : messages.e349147b;
const placeholder = document.querySelector(`.public-DraftEditorPlaceholder-inner`);
// mobile
const placeholderTextArea = document.querySelector(`textarea[data-testid="tweetTextarea_0"]`);
if (placeholder !== null) {
if (location.pathname !== "/home" &&
location.pathname !== "/compose/tweet") {
if (placeholder.textContent !== messages.d2c7a41c) {
placeholder.textContent = messages.d2c7a41c;
}
}
else {
if (placeholder.textContent !== whatsHappen) {
placeholder.textContent = whatsHappen;
}
}
}
if (placeholderTextArea !== null) {
if (location.pathname !== "/home" &&
location.pathname !== "/compose/tweet") {
if (placeholderTextArea.getAttribute("placeholder") !== messages.d2c7a41c) {
placeholderTextArea.placeholder =
whatsHappen === null ? "" : whatsHappen;
}
}
}
}
/**
* Retweet button, Quote button.
*/
function retweetBtn(messages) {
const retweetBtns = document.querySelectorAll('div[data-testid="retweetConfirm"] > div:nth-child(2) > div > span:not(.x-to-twitter-retweet)');
const quoteBtns = document.querySelectorAll('a[href="/compose/tweet"] > div:nth-child(2) > div > span:not(.x-to-twitter-retweet)');
const unRetweetBtns = document.querySelectorAll('div[data-testid="unretweetConfirm"] > div:nth-child(2) > div > span:not(.x-to-twitter-retweet)');
const toRetweet = messages.d6c8514a !== null ? messages.d6c8514a : messages.d6c85149;
const toQuote = messages.c9d7235d !== null ? messages.c9d7235d : messages.c9d7235e;
const undoRetweet = messages.f3bbbb87 !== null ? messages.f3bbbb87 : messages.fa9ce7f4;
retweetBtns.forEach((retweetBtn) => {
retweetBtn.classList.add("x-to-twitter-retweet");
retweetBtn.textContent = toRetweet;
});
quoteBtns.forEach((quoteBtn) => {
quoteBtn.classList.add("x-to-twitter-retweet");
quoteBtn.textContent = toQuote;
});
unRetweetBtns.forEach((unRetweetBtn) => {
unRetweetBtn.classList.add("x-to-twitter-retweet");
unRetweetBtn.textContent = undoRetweet;
});
}
/**
* Retweet counter
*/
function retweetCounter(messages) {
const counterLinks = document.querySelectorAll("article > div > div > div:nth-child(3) > div:nth-child(5) > div > a");
let splitRetweets = null;
if (messages.hb7b0cea !== null) {
splitRetweets = messages.hb7b0cea.split('"');
}
else if (messages.hb7b0ceb !== null) {
splitRetweets = messages.hb7b0ceb.split('"');
}
if (splitRetweets === null) {
throw log(new Error("Can't get retweet's language messages!"));
}
const retweet = splitRetweets[1].trim() +
(splitRetweets[5] !== undefined ? splitRetweets[5] : "");
counterLinks.forEach((counterLink) => {
const hrefSplit = counterLink.href.split("/");
if (hrefSplit[4] === "retweets" && hrefSplit[5] === undefined) {
const counter = counterLink.querySelector("a > span > span");
if (counter !== null) {
if (counter.textContent !== retweet) {
counter.textContent = retweet;
}
}
}
});
}
/**
* リポストしました
*/
function retweeted(messages) {
const retweetedMessage = messages.h99e9c95;
if (retweetedMessage === null) {
throw log(new Error("Can't get Retweeted's i18n!"));
}
const retweeted = retweetedMessage.split('"')[3];
const retweetedSpans = document.querySelectorAll(`article span[data-testid="socialContext"]:not(.x-to-twitter-retweeted)`);
retweetedSpans.forEach((retweetedSpan) => {
retweetedSpan.classList.add("x-to-twitter-retweeted");
if (retweetedSpan.childNodes[2] !== undefined) {
retweetedSpan.childNodes[2].textContent = retweeted;
}
});
}
function retweetedByPopup(messages) {
const header = document.querySelector(`h2[dir="ltr"]#modal-header > span`);
const splitPath = location.pathname.split("/");
const retweetedBy = messages.d25289b4;
if (header !== null &&
splitPath[4] === "retweets" &&
header.textContent !== retweetedBy) {
header.textContent = retweetedBy;
}
}
/**
* Tweet button in sidemenu.
*/
function sideNavNewTweetButton(messages) {
const tweetButton = document.querySelector('a[data-testid="SideNav_NewTweet_Button"] > div > span > div > div > span > span');
const toTweet = messages.bea869b3 !== null ? messages.bea869b3 : messages.bea869b4;
if (tweetButton !== null) {
if (tweetButton.textContent !== null) {
if (tweetButton.textContent !== toTweet) {
tweetButton.textContent = toTweet;
}
}
else {
tweetButton.textContent = toTweet;
}
}
}
/**
* 上の「件のツイートを表示」
*/
function topCountTweets(messages) {
const showEPostsElem = document.querySelector(`div[data-testid="cellInnerDiv"] > div > button[role="button"] > div > div > span`);
const showEPostsMessages = messages.d6917e0c !== null ? messages.d6917e0c : messages.d6917e0d;
if (showEPostsMessages === null) {
throw log(new Error("showEPostsMessages not found"));
}
const splitShowEPosts = showEPostsMessages.split('"');
if (showEPostsElem !== null) {
const parent = showEPostsElem.parentElement.parentElement.parentElement
.parentElement.parentElement;
if (parent === undefined || parent === null) {
throw log(new Error("parent not found"));
}
const key = Object.keys(parent).filter((key) => {
return key.match(/^__reactProps\$/);
})[0];
const count = parent[key].children._owner.memoizedProps.item.data.content.count;
const showEPosts = count +
" " +
splitShowEPosts[1].trim() +
(splitShowEPosts[5] !== undefined ? splitShowEPosts[5] : "");
if (showEPostsElem.textContent !== showEPosts) {
showEPostsElem.textContent = showEPosts;
}
}
}
/**
* Tweet button
* @param messages
*/
function tweetButton(messages) {
const tweetButton = document.querySelector('button[data-testid="tweetButton"] > div > span > span');
const tweetAll = messages.f70a36d0;
const toTweet = messages.bea869b3 !== null ? messages.bea869b3 : messages.bea869b4;
const reply = messages.hdf72269 !== null ? messages.hdf72269 : messages.d17df548;
if (tweetButton !== null) {
const pathSplited = location.pathname.split("/");
if (pathSplited[2] === "status" && pathSplited[4] === "photo") {
/**
* If in photo page, tweetbutton will be replay button.
*/
if (tweetButton.textContent !== reply) {
tweetButton.textContent = reply;
}
}
else {
const isTweetAll = document.querySelector('label[data-testid="tweetTextarea_1_label"]') !==
null;
if (isTweetAll) {
if (tweetButton.textContent !== tweetAll) {
tweetButton.textContent = tweetAll;
}
}
else {
if (tweetButton.textContent !== toTweet) {
tweetButton.textContent = toTweet;
}
}
}
}
}
/**
* Small button to tweet.
*/
function tweetButtonInline(messages) {
const tweetButton = document.querySelector('button[data-testid="tweetButtonInline"] > div > span > span');
const toTweet = messages.bea869b3 !== null ? messages.bea869b3 : messages.bea869b4;
const reply = messages.hdf72269 !== null ? messages.hdf72269 : messages.d17df548;
if (tweetButton !== null) {
if (location.pathname === "/home") {
if (tweetButton.textContent !== toTweet) {
tweetButton.textContent = toTweet;
}
}
else {
if (tweetButton.textContent !== reply) {
tweetButton.textContent = reply;
}
}
}
}
/**
* 上から出てくるやつ
* "さんがツイートしました"
*/
function tweetedPill(messages) {
const tweetedMessage = messages.d91695cb;
if (tweetedMessage === null) {
throw log(new Error("Can't get tweeted's message"));
}
const tweeted = tweetedMessage
.replaceAll(")", ")")
.split(")")[1]
.split(":")[0];
const pill = document.querySelector(`div[data-testid="pillLabel"] > span > span > span`);
if (pill !== null && pill.textContent !== tweeted) {
pill.textContent = tweeted;
}
}
const postToTweet = {
selector: "body",
callback: (_body) => {
const language = getLang();
const messages = i18n[language];
sideNavNewTweetButton(messages);
tweetButtonInline(messages);
tweetButton(messages);
replyDraftEditorPlaceholder(messages);
retweetBtn(messages);
retweetCounter(messages);
header(messages);
retweeted(messages);
retweetedByPopup(messages);
tweetedPill(messages);
profileTweets(messages);
quoteCounter(messages);
topCountTweets(messages);
},
};
/**
* Get current language from cookie.
* @returns
*/
function getLang() {
const cookie = document.cookie;
const cookieLang = cookie
.split(";")
.map((s) => s.split("="))
.filter(([key, _value]) => {
return key === " lang";
})[0][1];
if (Object.keys(i18n).includes(cookieLang)) {
return cookieLang;
}
else if (cookieLang === "zh-cn") {
return "zh";
}
else if (cookieLang === "zh-tw") {
return "zh-Hant";
}
else if (cookieLang === "en-gb") {
return "en-GB";
}
else {
return "en";
}
}
/**
* Get running environment.
* @returns
*/
function envChecker() {
if (typeof GM_info !== "undefined") {
log(GM_info);
log(JSON.stringify(GM_info));
if (GM_info.scriptHandler === "Userscripts") {
return "userscript_ios";
}
if (typeof GM_info.userAgentData !== "undefined") {
if (GM_info.userAgentData.platform === "Windows") {
return "userscript_windows";
}
}
return "userscript_not_windows";
}
else {
return "extension";
}
}
/**
* Run a callback in no time when a head element is found.
* @param {*} callback
*/
function headFinder(callback) {
const observer = new MutationObserver((_mutations, obs) => {
const head = document.querySelector("head");
if (head) {
callback(head);
obs.disconnect();
}
});
observer.observe(document.documentElement, {
childList: true,
subtree: true,
});
}
/**
* headが見つかったときの処理
*/
function headFound(head, observerHooksControler, env) {
log("Head found");
observerHooksControler.startObserve("head", {
childList: true,
});
observerHooksControler.startObserve("title", {
childList: true,
});
observerHooksControler.startObserve("body", {
subtree: true,
childList: true,
});
// wait rendering
setTimeout(() => {
log("Post To Tweet");
if (env !== "extension") {
getThemeColor().then((colorRGB) => {
setThemeColor(colorRGB, head);
});
}
if (document.body !== null) {
observerHooksControler.startObserve("body", {
subtree: true,
childList: true,
});
}
}, 100);
styleInject(head, env);
}
function main() {
log("X to Twitter");
const env = envChecker();
log(`Env: ${env}`);
const observerHooksControler = new ObserverHooksControler();
observerHooksControler.addHookHandler(faviconReplacer);
observerHooksControler.addHookHandler(titleReplacer);
observerHooksControler.addHookHandler(forSafari);
observerHooksControler.addHookHandler(postToTweet);
if (env === "extension") {
headFinder((head) => {
log(head);
headFound(head, observerHooksControler, env);
replaceManifest(head);
});
}
else if (env === "userscript_ios" || env === "userscript_not_windows") {
enableAlert();
log(document.head);
headFound(document.head, observerHooksControler, env);
}
else if (env === "userscript_windows") {
headFinder((head) => {
log(head);
headFound(head, observerHooksControler, env);
});
}
}
main();