Дизайн, пълен с lorem ipsum, изглежда завършен, докато не дойде първият истински български клиент. Тогава името не се побира в картата, името на фирмата се чупи на три реда, датата е написана по английски, а в цената има точка там, където трябва да е запетая. Обратната грешка е по-лоша: да копирате истински клиенти в дизайна или в тестовата база, защото е бързо. Тук обясняваме как да направите примерно съдържание, което се държи като истински български данни, за да се тестват подредбите както трябва, и в същото време е явно измислено, за да не попадат ничии лични данни в макет или екранна снимка.
#Защо lorem ipsum не стига
Lorem ipsum е текст, който прилича на латински, с кратки и равни думи. Българският изглежда различно на страницата по начини, които имат значение за подредбата:
- Имената са дълги. „Цветелина Щерева“ или фирма с име „Агенция за недвижими имоти Слънчев бряг“ е много по-широко от „John Smith“ или „Acme“. Карта, в която английското име се побира, може да отреже българското.
- Широки букви. Ж, Щ, Ш, Ю и Ф са сред най-широките букви в повечето шрифтове, а главните букви в бутоните и заглавията увеличават разликата.
- Шрифтове. Шрифт, който изглежда отлично на английски, може да няма кирилица или кирилицата му да е рисувана от друг човек в друг стил. Текстът на български е единственият начин да разберете това преди пускането.
- Формати. Дати, числа, цени, телефони и адреси се пишат различно, а дизайн, който ги показва по английски, ще бъде и изработен така.
#Никога истински хора
Истинските имена, имейли, телефони, адреси и банкови данни са лични данни. Да ги сложите във файл с дизайн, в прототип, споделен с клиент, в тестова база или в снимка в презентация означава да ги обработвате за цел, за която собствениците им никога не са се съгласили, а файловете с дизайни пътуват: експортират се, споделят се с връзка и се пазят с години. Безопасното правило е просто: нищо в дизайн или тестови данни не бива да принадлежи на истински човек или фирма. Това не значи, че трябва да изглежда фалшиво. Трябва да изглежда истинско и да е измислено.
#Един човек на карта
Примерното съдържание убеждава, когато частите на един запис си съвпадат. Ако картата показва име, имейл, инициали в аватар и длъжност, всички те трябва да са на един и същ измислен човек:
- имейлът е направен от името, с латински букви;
- инициалите в аватара са инициалите на това име;
- българската фамилия съвпада с пола на човека: Иванов за мъж, Иванова за жена;
- домейнът на фирмения имейл съвпада с името на фирмата.
Случайни стойности за всяко поле дават карта, в която „Мария Петрова“ има имейла на „Georgi Dimitrov“; клиентът го забелязва веднага, а и така се крият проблеми с подредбата, които се появяват едва когато частите си принадлежат.
#Имена с латински букви
Българските имена се пишат с латински букви по Закона за транслитерацията, системата, която се ползва в паспортите и на пътните табели: Ж е zh, Ц е ts, Ч е ch, Ш е sh, Щ е sht, Ъ е a, Ю е yu, Я е ya, а -ия в края на име е -ia, така че Мария става Maria, а София става Sofia. С тази система примерните имейли изглеждат като имейлите, които хората наистина имат.
#Номера, които минават проверката и не са на никого
Формулярите често проверяват фирмен номер или IBAN, така че примерни стойности, които не минават проверката, спират теста. Номерът е да направите стойности с верни контролни цифри, които обаче не могат да бъдат объркани с истински. Този скрипт прави човек със съвпадащ имейл, ЕИК и ДДС номер на фирма и IBAN, всички от фиксирано начално число, за да се връщат едни и същи „случайни“ данни при всяко пускане:
import random
LATIN = dict(zip("абвгдежзийклмнопрстуфхцчшщъьюя",
"a b v g d e zh z i y k l m n o p r s t u f h ts ch sh sht a y yu ya".split()))
def transliterate(word: str) -> str:
"""Bulgarian to Latin as the Transliteration Act does it: -ия at the end of a word is -ia."""
w = word.lower()
if w.endswith("ия"):
return "".join(LATIN.get(ch, ch) for ch in w[:-2]) + "ia"
return "".join(LATIN.get(ch, ch) for ch in w)
def eik_check_digit(first8: str) -> int:
digits = [int(d) for d in first8]
c = sum(d * w for d, w in zip(digits, range(1, 9))) % 11
if c == 10:
c = sum(d * w for d, w in zip(digits, range(3, 11))) % 11
c = 0 if c == 10 else c
return c
def iban_check_digits(country: str, bban: str) -> str:
moved = bban + country + "00"
number = int("".join(str(int(ch, 36)) for ch in moved))
return f"{98 - number % 97:02d}"
rnd = random.Random(7) # the same "random" data on every run
first, last = "Цветелина", "Щерева"
email = f"{transliterate(first)}.{transliterate(last)}@example.com"
first8 = "9999" + f"{rnd.randrange(10_000):04d}" # 9999 makes it easy to spot as made up
eik = first8 + str(eik_check_digit(first8))
bban = "PRIM" + f"{rnd.randrange(10_000):04d}" + "10" + f"{rnd.randrange(10**8):08d}" # PRIM is no bank
iban = "BG" + iban_check_digits("BG", bban) + bban
print(first, last, email)
print("ЕИК", eik, "ДДС", "BG" + eik)
print("IBAN", " ".join(iban[i:i + 4] for i in range(0, len(iban), 4)))
print(transliterate("София"), transliterate("Мария"), transliterate("Юлия"), transliterate("Щастливец"))
Той отпечатва:
Цветелина Щерева tsvetelina.shtereva@example.com
ЕИК 999953058 ДДС BG999953058
IBAN BG20 PRIM 2471 1052 9923 12
sofia maria yulia shtastlivets
ЕИК започва с 9999, така че всеки, който го види, знае, че е измислен, а деветата му цифра е истинската контролна цифра, така че формуляр, който проверява номера, го приема. IBAN ползва PRIM за код на банката, а това не е кодът на нито една българска банка, и има верни контролни цифри. Измислен номер с вярна контролна цифра все пак може по случайност да съвпадне с нещо съществуващо, затова очевидното начало е важно и затова такива стойности никога не бива да се изпращат към истинска система като банка или НАП. Как работят двете проверки, обясняваме в статията за проверка на ЕГН, ЕИК, ДДС номер и IBAN. Изобщо не генерирайте ЕГН за примерно съдържание; оставете полето видимо празно или ползвайте стойност, която нарочно не минава проверката.
#Телефони, имейли и сайтове
За имейли и сайтове има безопасен отговор: домейните example.com, example.org и example.net и домейнът от първо ниво .example са запазени за документация и примери, така че зад тях не може да има истинска пощенска кутия или сайт. С телефоните е по-трудно. Във Великобритания Ofcom пази мобилните номера от 07700 900000 до 07700 900999 за филми и сериали, така че те никога не звънят на никого. В България няма такъв обхват, затова най-доброто е номер, който на пръв поглед изглежда измислен, например от повтарящи се деветки, и никога номер, който може да е на истински абонат.
Градовете са по-малък, но истински въпрос: примерен адрес на истинска улица в истински град може да е нечий дом. Измислени градове с очевидно име избягват това и пак приличат на адрес.
#Формати, които трябва да са верни
- Дати: „9 декември 2026 г.“ в текст, 09.12.2026 в таблици. Месеците се пишат с малка буква.
- Числа: запетая за десетичните и интервал между хилядите, така че хиляда двеста тридесет и четири и половина се пише 1 234,5.
- Пари: от 1 януари 2026 г. цените в България са в евро. На български сумата е първа, с десетична запетая, после интервал и знакът на еврото; на английски знакът е първи, а десетичните са след точка.
- Телефони: мобилните номера започват с 08 или 09 и обикновено се групират по четири, три и три цифри.
- Адреси: град, после квартал, улица и номер: „гр. Примерово, ул. Бреза 12“.
#Приставка за Figma, която прави това
Направихме Pulnezh, приставка за Figma, която попълва дизайните с измислено, но правдоподобно съдържание на български и английски. Назовавате текстовите слоеве според това какво показват („Име“, „Имейл“, „Цена“ и още около 130 думи на двата езика), избирате картите и натискате „Попълни“: всяка рамка става един човек, една фирма или един адрес, с имейл, направен от името, съвпадащи инициали, фамилии според пола, ЕИК от 9999 и IBAN с код PRIM, и двата с верни контролни цифри, измислени градове, примерни домейни и местни формати за дати и суми. Нищо не излиза извън Figma. Тествана е с автоматични тестове срещу строг заместител на API-то за приставки на Figma и в Chrome без прозорец, но по време на разработката не е пускана в самата Figma. Обявена е като „Очаквайте скоро“.
#Често задавани въпроси
Мога ли да ползвам истински данни на клиенти в дизайн или тестова база?
Не. Имената, имейлите, телефоните, адресите и банковите данни са лични данни, а файловете с дизайни и тестовите бази се споделят и пазят далеч отвъд целта, за която са събрани. Ползвайте измислени данни, които изглеждат истински.
Как да направя тестов ЕИК или IBAN, който минава проверката?
Изберете първите цифри така, че номерът да е явно измислен (например 9999 за ЕИК, несъществуващ код на банка за IBAN), и изчислете истинските контролни цифри. Скриптът по-горе прави и двете.
Има ли български обхват от телефонни номера, запазен за измислени истории?
Доколкото знаем, няма. Ползвайте номер, който изглежда измислен, например от повтарящи се деветки, и никога номер, който може да е на абонат; за английски дизайни британският обхват 07700 900xxx е запазен за филми и сериали.
Как се пишат българските имена с латински букви?
По Закона за транслитерацията: Щ е sht, Ж е zh, Ц е ts, Ъ е a, а -ия в края на име е -ia, така че Мария е Maria.
Коментари
Коментари
Напишете първия коментар.
Оставете коментар