میڈیاویکی:Gadget-Peshkar-addInfobox.js
یاددہانی: محفوظ کرنے کے بعد تازہ ترین تبدیلیوں کو دیکھنے کے لیے آپ کو اپنے براؤزر کا کیش صاف کرنا ہوگا۔
- فائرفاکس/ سفاری: جب Reload پر کلک کریں تو Shift دبا کر رکھیں، یا Ctrl-F5 یا Ctrl-R دبائیں (Mac پر R- )
- گوگل کروم: Ctrl-Shift-R دبائیں (Mac پر Shift-R-⌘)
- انٹرنیٹ ایکسپلورر: جب Refresh پر کلک کریں تو Ctrl یا Ctrl-F5 دبائیں
- اوپیرا: Tools → Preferences میں جائیں اور کیش صاف کریں
اس اسکرپٹ کی دستاویزی تفصیلات میڈیاویکی:Gadget-Peshkar-addInfobox پر درج کی جا سکتی ہیں۔ |
//<nowiki>
var peshkarAddInfobox = (function() {
// خانۂ معلومات کے سانچوں کے کلیدی الفاظ
var infoboxIdentifiers = ['Infobox', 'Geobox', 'Taxobox', 'Japanese city', 'India Districts', 'Drugbox', 'Chembox', 'خانہ معلومات', 'خانۂ معلومات'];
// خانۂ معلومات کے چند تراجم
var infoboxTranslations = [
['Active', 'فعال'],
['No', 'نہیں'],
['فہرست خودمختار ممالک', 'فہرست خودمختار ممالک|ملک'],
['ہسپانوی بلدیات', 'ہسپانوی بلدیات|بلدیہ'],
['کمیون (فرانسیسی ملکی تقسیمات)', 'کمیون (فرانسیسی ملکی تقسیمات)|کمیون'],
['آذربائجان کی انتظامی تقسیمات', 'آذربائجان کی انتظامی تقسیمات|بخش'],
['پاکستان کی انتظامی تقسیمات', 'پاکستان کی انتظامی تقسیمات|صوبہ'],
['مرکزی یورپی وقت', 'مرکزی یورپی وقت|وقت'],
['صوبجات قزاقستان', 'صوبجات قزاقستان|صوبہ'],
['برما کی انتظامی تقسیمات', 'برما کی انتظامی تقسیمات|صوبہ'],
['خودمختار ہسپانوی صوبجات', 'خودمختار ہسپانوی صوبجات|خودمختار صوبہ'],
['صوبجات برازیل', 'صوبجات برازیل|صوبہ'],
['البانوی صوبجات', 'البانوی صوبجات|صوبہ'],
['جورجیا کی انتظامی تقسیمات', 'جورجیا کی انتظامی تقسیمات|صوبہ'],
['صوبجات سری لنکا', 'صوبجات سری لنکا|صوبہ'],
['ہسپانوی صوبجات', 'ہسپانوی صوبجات|صوبہ'],
['فہرست بلدیات پالنیشیا', 'فہرست بلدیات پالنیشیا|بلدیہ'],
['صوبجات افغانستان', 'صوبجات افغانستان|صوبہ'],
['افغانستان کے اضلاع', 'افغانستان کے اضلاع|ضلع'],
['بھارت کی ریاستیں اور عملداریاں', 'بھارت کی ریاستیں اور عملداریاں|ریاست'],
['صوبجات ترکی', 'صوبجات ترکی|صوبہ'],
['محافظات مصر', 'محافظات مصر|محافظہ'],
['اطالیہ کی علاقائی تقسیم', 'اطالیہ کی علاقائی تقسیم|تقسیم'],
['اطالیہ کے صوبہ جات', 'اطالیہ کے صوبہ جات|صوبہ'],
['ہالینڈ کے صوبہ جات', 'ہالینڈ کے صوبہ جات|صوبہ'],
['صوبجات آئرلینڈ', 'صوبجات آئرلینڈ|صوبہ'],
['صوبجات سویڈن', 'صوبجات سویڈن|سویڈن'],
['سویڈن کی کاؤنٹیاں', 'سویڈن کی کاؤنٹیاں|کاؤنٹی'],
['چین کے صوبے', 'چین کے صوبے|صوبہ'],
['بلدیات جرمنی', 'بلدیات جرمنی|بلدیہ'],
['بھارت کے اضلاع', 'بھارت کے اضلاع|ضلع'],
['کاؤنٹی (ریاستہائے متحدہ)', 'کاؤنٹی (ریاستہائے متحدہ)|کاؤنٹی'],
['ریاستہائے متحدہ امریکا کی سیاسی تقسیم', 'ریاستہائے متحدہ امریکا کی سیاسی تقسیم|ریاست'],
['ارمینیا کے شہروں کی فہرست', 'ارمینیا کے شہروں کی فہرست|شہر'],
['Country', 'ملک'],
['country', 'ملک'],
['Region', 'علاقہ'],
['Districts', 'ضلع'],
['Mayor', 'میئر'],
['Vice Mayor', 'نائب میئر'],
['Vice mayor', 'نائب میئر'],
['Settled', 'آبادی'],
['Tourism region', 'سیاحتی علاقہ'],
['First mentioned', 'ذکر اولین'],
['Phone prefix', 'فون سابقہ'],
['Independent', 'خودمختار'],
['mayor', 'میئر'],
['City Mayor', 'میئر'],
['Governing body', 'حاکم عملہ'],
['Town', 'قصبہ'],
['City', 'شہر'],
['Established', 'قیام'],
['Number of city council members', 'تعداد اراکین شہر کونسل'],
['Island', 'جزیرہ'],
['island', 'جزیرہ'],
['Post Code', 'رمز ڈاک'],
['Post code', 'رمز ڈاک'],
['post code', 'رمز ڈاک'],
['Postal code', 'رمز ڈاک'],
['Autonomous Region', 'خودمختار علاقہ'],
['Province', 'صوبہ'],
['Founded', 'قیام'],
['Incorporated', 'ثبت شدہ'],
['Granted city rights', 'مشہور بنام شہر'],
['ZIP code', 'زپ کوڈ'],
['Religions', 'مذاہب'],
['Mesoregion', 'نیم علاقہ'],
['Languages', 'زبانیں'],
['Official', 'دفتری'],
['State', 'صوبہ'],
['Telephone code', 'رمز ٹیلیفون'],
['Municipality', 'بلدیہ'],
['Seat', 'نشست'],
['Racial makeup', 'نژاد'],
['Body', 'اراکین'],
['Nearest city', 'نزدیک ترین شہر'],
['Civic agency', 'نمائندہ شہر'],
['District', 'ضلع'],
['constituency', 'حلقہ نیابت'],
['County', 'کاؤنٹی'],
['Administrator', 'منتظم'],
['Governing body', 'حاکم عملہ'],
['Waterways', 'آبی گذرگاہیں'],
['Environs', 'محیط'],
['Vice-chairman', 'معاون'],
['Chairman', 'چیئرمین'],
['Roadmaster', 'ناظم راہ'],
['Capital', 'پایہ تخت'],
['Councillor', 'رکن شوری'],
['Administrative body', 'انتظامی عملہ'],
['Quadrant', 'سمت'],
['Ward', 'متناسقات'],
['Sector', 'خطہ'],
['Postcode', 'رمز ڈاک'],
['Village President', 'سرپنچ'],
['Sub-Region', 'ذیلی علاقہ'],
['3-digit postal code prefix', 'سہ عددی رمز ڈاک سابقہ'],
['Post office Founded', 'قیام ڈاک گھر'],
['Incorporated (Village)', 'تبدیل از گاؤں'],
['Incorporated (Town)', 'تبدیل از شہر'],
['Census Ranking', 'درجات مردم شماری'],
['Historic Sites', 'تاریخی مقامات'],
['Zone', 'خطہ'],
['Municipality/City', 'بلدیہ/شہر'],
['Department', 'بخش'],
['Location in the state of', 'ریاست میں محل وقوع'],
['(population and area)', '(آبادی و رقبہ)'],
['Congressional district', 'کانگریسی ضلع'],
['Airport', 'ہوائی اڈا'],
['Public transit', 'عوامی نقل و حمل'],
['City from', 'شہر بننے کی تاریخ'],
['Oblast', 'اوبلاست'],
['Raion', 'رایون'],
['City status', 'شہر کا درجہ'],
['Phone code', 'فون کوڈ'],
['Leader', 'رہنما'],
['City rights', 'شہر بنا'],
['Urban areas', 'شہری علاقہ'],
['Location in Russia', 'روس میں محل وقوع'],
['Location in Ukraine', 'یوکرین میں محل وقوع'],
['Territory', 'علاقہ'],
['Abolished', 'منسوخ'],
['abolished', 'منسوخ']
];
// انگریزی صفحہ سے خانۂ معلومات اخذ کرنے کے لیے
async function getInfobox(text) {
let startIndex = -1;
let endIndex = -1;
let count = 0;
let infoboxContent = '';
for (const identifier of infoboxIdentifiers) {
const pattern = new RegExp('{{\\s*' + identifier + '\\s*', 'i');
startIndex = text.search(pattern);
if (startIndex !== -1) {
break;
}
}
if (startIndex === -1) return '';
for (let i = startIndex; i < text.length; i++) {
if (text[i] === '{' && text[i + 1] === '{') {
count++;
i++;
} else if (text[i] === '}' && text[i + 1] === '}') {
count--;
if (count === 0) {
endIndex = i + 2;
break;
}
i++;
}
}
while (endIndex < text.length && /\s/.test(text[endIndex])) {
endIndex++;
}
infoboxContent = count === 0 ? text.substring(startIndex, endIndex) : '';
infoboxContent += '\n';
const wikilinkRegex = /\[\[([^\]]+)\]\]/g;
let matches = [...infoboxContent.matchAll(wikilinkRegex)];
for (const match of matches) {
const pageTitle = match[1].replace(/ /g, '_');
const params = new URLSearchParams({
action: 'query',
titles: pageTitle,
prop: 'langlinks',
lllang: 'ur',
format: 'json',
origin: '*'
});
const apiUrl = `https://en.wikipedia.org/w/api.php?${params}`;
try {
const response = await fetch(apiUrl);
const data = await response.json();
if (data.query && data.query.pages) {
const page = data.query.pages;
const pageId = Object.keys(page)[0];
if (pageId !== "-1" && page[pageId].langlinks) {
const urduTitle = page[pageId].langlinks[0]['*'];
infoboxContent = infoboxContent.replace(match[0], `[[${urduTitle}]]`);
}
}
} catch (error) {
console.error('Error fetching data:', error);
}
}
return infoboxContent;
}
// اردو صفحہ میں خانۂ معلومات شامل کرنے کے لیے
async function addInfobox(pageContent) {
if (infoboxIdentifiers.some(identifier => pageContent.includes(identifier))) {
return pageContent;
}
const currentPage = mw.config.get('wgPageName');
try {
const data = await new mw.Api().get({
action: 'query',
prop: 'langlinks',
titles: currentPage,
lllang: 'en',
formatversion: 2
});
if (data.query.pages.length > 0 && data.query.pages[0].langlinks && data.query.pages[0].langlinks.length > 0) {
const englishTitle = data.query.pages[0].langlinks[0].title;
const endpoint = 'https://en.wikipedia.org/w/api.php';
const params = new URLSearchParams({
action: 'query',
prop: 'revisions',
titles: englishTitle,
rvprop: 'content',
rvslots: 'main',
formatversion: 2,
format: 'json'
});
const response = await fetch(`${endpoint}?origin=*&${params.toString()}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
});
const responseData = await response.json();
if (responseData.query.pages.length > 0 && responseData.query.pages[0].revisions && responseData.query.pages[0].revisions.length > 0) {
let content = responseData.query.pages[0].revisions[0].slots.main.content;
content = content.replace(/\r/g, '');
content = content.replace(/\|\s*name\s*=\s*\w+/gi, '| name = {{subst:PAGENAME}}');
content = content.replace(/\|\s*title\s*=\s*\w+/gi, '| title = {{subst:PAGENAME}}');
content = content.replace(/]]s /g, ']] ').replace(/]] and \[\[/g, ']] اور [[').replace(/\]\], \[\[/g, ']]، [[');
content = content.replace(/–present\n/g, '-تا حال\n').replace(/– present\n/g, '- تاحال\n').replace(/–present /g, '-تا حال\n');
content = content.replace(/– present /g, '- تاحال ');
let infoboxContent = await getInfobox(content);
if (infoboxContent) {
for (const [english, urdu] of infoboxTranslations) {
const regex = new RegExp(`(\\|\\s*[^|=]+\\s*=\\s*)(${english})([^|}]*)`, 'gi');
infoboxContent = infoboxContent.replace(regex, `$1${urdu}$3`);
}
const maintenanceTemplatesEndRegex = /(?:\r?\n|\r)(?=\{\{[^{]*\}\}(?:\r?\n|\r)*[\u0600-\u06FF])/;
let match = maintenanceTemplatesEndRegex.exec(pageContent);
let lastIndex = 0;
while (match) {
lastIndex = match.index + match[0].length;
match = maintenanceTemplatesEndRegex.exec(pageContent.substring(lastIndex));
}
if (lastIndex > 0) {
pageContent = pageContent.slice(0, lastIndex) + infoboxContent + pageContent.slice(lastIndex);
} else {
pageContent = infoboxContent + pageContent;
}
}
} else {
console.error('No content found for the English page');
}
} else {}
return pageContent;
} catch (error) {
console.error('Error:', error);
throw error;
}
}
return {
addInfobox: addInfobox
};
}());
if (typeof window !== "undefined") {
window.peshkarAddInfobox = peshkarAddInfobox;
}
//</nowiki>