Модуль:Не перекладено Документація модуля[перегляд] [редагувати] [історія] [очистити кеш]
Модуль шаблону {{Не перекладено}}
Шаблон використовується в ситуації, коли є сторінка в іншому проєкті Вікімедіа і вважається за необхідне створення відповідної сторінки в українській Вікіпедії[1] Якщо переклад ще ніхто не зробив, шаблон ставить поряд з червоним посиланням посилання на іншомовну сторінку, що пропонується для перекладу. Як тільки переклад буде зроблено, цей текст автоматично повинен стати посиланням на сторінку в українському розділі. Якщо в іншомовному розділі сторінки ще немає, а є лише червоне посилання, за яким вона, можливо, з'явиться, то замість цього шаблону слід використовувати звичайне червоне посилання, або шаблон {{нпні}}. Код для вставки та опис параметрів
або просто
Опис параметрів:
Приклади та результати використання шаблонуЛише один параметр обов'язковий, тому інші можна опускати у випадку, коли сторінка в українській Вікіпедії має називатися так само, як сторінка в англійській Вікіпедії. Наприклад:
Частіше можна зустріти використання двох параметрів:
або трьох параметрів:
чи
Якщо сторінка існує та дії після перекладу
Або
Коли в українській Вікіпедії з'являється переклад іншомовної сторінки, шаблон автоматично підміняє посилання і надалі його можна прибрати. Для того, щоб прибрати шаблон, треба на його місці поставити звичайне внутрішнє посилання на сторінку вигляду [[посилання|якийсь текст]]. Ви можете також почекати і бот зробить цю заміну за Вас, якщо на сторінці не буде виявлено проблем). Ви можете спостерігати за сторінками з неактуальним шаблоном у Категорія:Вікіпедія:Статті з неактуальним шаблоном Не перекладено (1295). Щоби вони туди не потрапляли, використовуйте додатковий параметр nocat (не рекомендується): Якщо сторінки не існує
Якщо українського перекладу іншомовної сторінки не існує, завдяки шаблону посилання на статтю буде червоним, що дозволяє, перейшовши за цим посиланням, почати роботу над статтею, якої бракує. Бот автоматично генерує детальні списки найбільш необхідних неперекладених сторінок та сторінок з невірно використаним шаблоном «Не перекладено». Список усіх підтримуваних мов
Якщо бот робить зауваженняБот який прибирає цей шаблон зі сторінок, може зробити коментар, якщо з шаблона не зовсім очевидно чи його потрібно забрати чи залишити. Список таких питань до розгляду редакторами також збирається на сторінці Користувач:SashkoR0B0T/Сторінки з неправильно використаним шаблоном "Не перекладено" і пов'язаних. Щодо способів виправлення див. Обговорення користувача:PavloChemBot/Сторінки з невірно використаним шаблоном "Не перекладено", але варто б написати загальнішу інструкцію за категоріями помилок і типових виправлень. Не знайдено сторінки XПричин може бути кілька:
Сторінка X перекладена як А, хоча хотіли Б
Сторінки C та Ц пов'язані з різними елементами вікіданих
Див. також
Шаблон для додання посилань на сторінки в інших розділах Вікіпедії (поруч із червоними посиланнями в українській).
Примітки
-- Модуль покликаний замінити, а згодом розширити новим функціоналом вікікод
-- однойменного шаблону.
-- TODO Докоментувати код
-- TODO Створити документацію до модуля
-- TODO Імплементувати фічі роботи з ВД запропоновані Атою на СО шаблону
local p = {}
-- Щоб порожні використання параметрів вважались нілевими. Нілеві значення, на
-- відміну від порожніх рядків, дають булеву хибу для умовних операторів.
-- Кращий спосіб робити цю валідацію вітається.
local function init(vari)
if vari == "" then
return nil
else
return vari;
end
end
-- має замінити [[Шаблон:Не перекладено/lang]]
local function conjugatedLanguagePhrase(language, nocat, currentTitleText)
-- TODO відсортувати за абеткою (будь-якою)
-- TODO замінити на якусь дуже розумну функцію з витягуванням назв мов з
-- рушія, або ж на використання функції з іншого модуля
local phrase = "";
local cat = "";
-- TODO зробити кращий вивід категорій-індикаторів помилок
local languagePairs = {
["d"] = "Вікіданих",
["simple"] = "англійською",
["en"] = "англійською",
["et"] = "естонською",
["ru"] = "російською",
["de"] = "німецькою",
["fr"] = "французькою",
["la"] = "латиною",
["es"] = "іспанською",
["uk"] = "українською",
["it"] = "італійською",
["pt"] = "португальською",
["pl"] = "польською",
["ba"] = "башкирською",
["el"] = "грецькою",
["bg"] = "болгарською",
["ja"] = "японською",
["nl"] = "нідерландською",
["he"] = "на івриті",
["be"] = "білоруською",
["be-tarask"] = "білоруською",
["be-x-old"] = "білоруською",
["sv"] = "шведською",
["fi"] = "фінською",
["am"] = "вірменською",
["lv"] = "латиською",
["ar"] = "арабською",
["zh"] = "китайською",
["az"] = "азербайджанською",
["tr"] = "турецькою",
["lt"] = "литовською",
["hu"] = "угорською",
["no"] = "норвезькою (букмол)",
["nn"] = "норвезькою (нюношк)",
["sr"] = "сербською",
["cs"] = "чеською",
["cz"] = "чеською",
["ga"] = "ірландською",
["ro"] = "румунською",
["crh"] = "кримськотатарською",
["da"] = "данською",
["ca"] = "каталонською",
["hr"] = "хорватською",
["fa"] = "на фарсі",
["sa"] = "санскриті",
["sk"] = "словацькою",
["id"] = "індонезійською",
["ko"] = "корейською",
["os"] = "осетинською",
["is"] = "ісландською",
["mn"] = "монгольською",
["hi"] = "на хінді",
["tt"] = "татарською",
["eu"] = "баскською",
["cy"] = "валлійською",
["mk"] = "македонською",
["uz"] = "узбецькою",
["sl"] = "словенською",
["kk"] = "казахською",
["sq"] = "албанською",
["gd"] = "гаельською",
["eo"] = "есперанто",
["fy"] = "західнофризькою",
["hy"] = "вірменською",
["ka"] = "грузинською",
["mdf"] = "мокшанською",
["nb"] = "норвезькою (букмол)",
["rue"] = "русинською",
["sah"] = "якутською",
["sh"] = "сербохорватською",
["tl"] = "тагальською",
["vi"] = "в'єтнамською",
["yi"] = "на їдиші",
["ms"] = "малайською",
["tg"] = "таджицькою",
["bs"] = "боснійською",
["si"] = "сингальською",
["ur"] = "мовою урду",
["ps"] = "мовою пушту",
["km"] = "кхмерською",
["th"] = "тайською",
["to"] = "тонганською",
["lo"] = "лаоською",
["dv"] = "мальдівською",
["br"] = "бретонською",
["aa"] = "афарською",
["ab"] = "абхазькою",
["af"] = "мовою африкаанс",
["ak"] = "мовою акан",
["am"] = "амхарською",
["an"] = "арагонською",
["as"] = "ассамською",
["av"] = "аварською",
["ay"] = "мовою аймара",
["pap"] = "мовою пап’яменто",
["lb"] = "люксембурзькою",
["ku"] = "курдською",
["so"] = "сомалійською",
["mt"] = "мальтійською",
["na"] = "науруанською",
["ne"] = "непальською",
["gl"] = "галісійською",
["sc"] = "сардинською",
["scn"] = "сицилійською",
["ky"] = "киргизькою",
["wa"] = "валлонською",
["kl"] = "ґренландською",
["fo"] = "фарерською",
["ast"] = "астурійською",
["kv"] = "мовою комі",
["tyv"] = "тувинською",
["ce"] = "чеченською",
["cv"] = "чуваською",
["rw"] = "руандійською",
["haw"] = "гавайською",
["ch"] = "мовою чаморро",
["co"] = "корсиканською",
["als"] = "алеманським діалектом німецької мови",
["ceb"] = "себуанською",
["frp"] = "франко-провансальською",
["bn"] = "бенгальською",
["myv"] = "ерзянською",
["sw"] = "мовою суахілі",
["oc"] = "окситанською",
["arz"] = "єгипетською арабською",
["avk"] = "мовою котава",
["kw"] = "корнською",
["vec"] = "венеційською",
["ta"] = "тамільською",
["szl"] = "сілезькою",
["sco"] = "шотландською рівниною",
["rup"] = "арумунською",
["mr"] = "мовою маратхі",
["ht"] = "гаїтянською креольською",
["hsb"] = "верхньолужицькою"
}
conjugatedLanguageName = languagePairs[language];
if conjugatedLanguageName then
phrase = phrase .. conjugatedLanguageName;
else
phrase = phrase .. "(помилка: непідтримувана мова)";
if not nocat then
cat = cat .. "[[Категорія:Вікіпедія:Статті з непідтримуваною мовою в шаблоні Не перекладено|" .. language .. "]]";
end
end
local unconjugatable = {
["d"] = true,
["eo"] = true,
["he"] = true,
["sa"] = true,
["hi"] = true,
["fa"] = true,
["la"] = true,
["yi"] = true,
["ur"] = true,
["ps"] = true,
["af"] = true,
["ak"] = true,
["ay"] = true,
["pap"] = true,
["kv"] = true,
["ch"] = true,
["als"] = true,
["sw"] = true,
["avk"] = true,
["mr"] = true
}
if not unconjugatable[language] then
phrase = phrase .. " мовою";
end
return {phrase, cat};
end
-- Головна функція
function p.main(frame)
-- Витягуємо параметри батьківського шаблону
local parent = frame:getParent();
local args = parent.args;
-- Перетягування батьківських параметрів у змінні
local needed = init(args["треба"]) or init(args[1]);
local text = init(args["текст"]) or init(args[2]);
local language = init(args["мова"]) or init(args[3]) or "en";
local exist = init(args["є"]) or init(args[4]) or init(args[1]);
-- відрізати прогалини
language = string.gsub(language, "(%s+)", "");
-- Створюємо таблицю поточної сторінки щоб перевірити її пн, щоб разом з
-- параметром nocat вирішити чи треба її категоризувати
local currentTitle = mw.title.getCurrentTitle();
-- Назва поточної сторінки. Використовуватиметься для ключів сортування
local currentTitleText = currentTitle.text;
-- Витягуємо параметр nocat
local nocat = init(args["nocat"]);
-- та перевіряємо простір назв поточної сторінки
-- не порожнє значення nocat та нульовий простір назв означають що сторінку
-- можна категоризувати.
-- інші простори ще й як треба категоризувати, особливо категорією "неактуальний шаблон".
-- інакше обхід категорії Вікіпедія:Статті з неактуальним шаблоном Не перекладено
-- не виправляє наприклад включення в шаблонах, а це потрібно, бо інакше статті з цим шаблоном
-- в цю категорію потрапляють, але шаблону не містять, його треба прибрати з якогось включення
local ns = currentTitle.namespace;
if ns == 1 or ns == 2 or ns == 3 then nocat = 1; end
-- Головна змінна побудови рядка виводу
local wrt = "";
-- Таблиця назви яка "треба"
if needed == nil then
error("Параметр з назвою сторінки яку треба створити обов'язковий (перший параметр, або параметр треба)")
end
local neededTitle = mw.title.new(needed, "");
-- Булева змінна, яка показує чи існує стаття, яка "треба"
local neededExists = neededTitle.exists;
-- Створюмо внутрішнє посилання на статтю, що "треба"
local linkToNeeded = "";
linkToNeeded = linkToNeeded .. "[[";
linkToNeeded = linkToNeeded .. needed;
if text then
linkToNeeded = linkToNeeded .. "|" .. text;
end
linkToNeeded = linkToNeeded .. "]]";
-- Не залежно від того чи стаття, що "треба" існує ми робимо на неї
-- посилання. Що змінюється — лише колір — і це за нас обробляє рушій
wrt = wrt .. linkToNeeded;
if neededExists then
-- Дії, що здійснюється якщо стаття, яка "треба" існує
local alert = mw.html.create("span");
alert:addClass("noprint user-show");
alert:attr("title","Шаблон «не перекладено» не замінено");
alert:css({["color"]="red"});
alert:wikitext("●");
wrt = wrt .. tostring(alert);
if not nocat then
-- Дії, які здійснюються якщо цю сторінку можна категоризувати
wrt = wrt .. "[[Категорія:Вікіпедія:Статті з неактуальним шаблоном Не перекладено|" .. currentTitleText .. "]]"
end
else
-- Дії, які здійснюються якщо стаття, яка "треба" не існує
-- Створюємо HTML-елемент тексту у верхньому індексі
local sup = mw.html.create("sup");
-- Додаємо до нього клас "noprint"
sup:addClass("noprint");
local linkToExist = "";
linkToExist = linkToExist .. "[[";
linkToExist = linkToExist .. ":" .. language .. ":" .. exist;
if language == "d" then
linkToExist = linkToExist .. "#sitelinks-wikipedia";
end
linkToExist = linkToExist .. "|";
local span = mw.html.create("span");
local spanCSS = {
["font-size"] = "normal",
["font-style"] = "normal",
["font-weight"] = "normal"
}
span:css(spanCSS);
spanTitle = "";
-- містить текст, що буде додано до тегів <span></span>
-- цей текст спливає при наведені курсура на значок «[en]»
-- я (Base) не маю жодного уявлення що б це мало бути, але це порівняння
-- з "d" походить з оригінального коду. Потребує дослідження, оскільки
-- фічу не документовано.
-- Це ж значною мірою стосується й решти умовних операторів, що
-- стосуються атрибуту title
-- "d" - робить посилання на Вікідані
-- Я (Repakr) трохи доповним документацію
--Перевіряємо чи вказано посилання на вікіданих чи ні
--Для цього перевіряється чи змінна language містить значення d
--Якщо так, то в змінну spanTitle додаємо текст "Сторінка статті (назва_потрібної_статті) на"
if language == "d" then
spanTitle = spanTitle .. "Сторінка статті ".. needed .. " на";
else
--Якщо ні, то тоді перевіряється чи містить змінна exist значення
--Якщо так, в змінну spanTitle додаємо текст "(наявна_назва_статті_іншою_мовою) — в"
if exist then
spanTitle = spanTitle .. exist .. " — в";
else
--Якщо ні, в змінну spanTitle додаємо текст «В»
spanTitle = spanTitle .. "В";
end
--Тепер об'єднуємо значення змінної spanTitle з текстом "ерсія статті «(назва_потрібної_статті)»"
spanTitle = spanTitle .. "ерсія статті «".. needed .."»";
end
conjugatedLanguagePhraseAndCat = conjugatedLanguagePhrase(language, nocat, currentTitleText);
spanTitle = spanTitle .. " " .. conjugatedLanguagePhraseAndCat[1];
span:attr("title", spanTitle);
span:wikitext("[" .. language .. "]");
linkToExist = linkToExist .. tostring(span);
linkToExist = linkToExist .. "]]";
linkToExist = linkToExist .. conjugatedLanguagePhraseAndCat[2];
sup:wikitext(linkToExist);
wrt = wrt .. tostring(sup);
end
return wrt;
end
return p;
|