Uk:Multilingual names

From OpenStreetMap Wiki
Jump to navigation Jump to search
Logo. Обʼєкт: Uk:Multilingual names
One example for Обʼєкт: Uk:Multilingual names
Опис
Ключі та теґи, що використовуються з мовними суфіксами
Теґи

а також інші та їх варіації

Існує безліч випадків, коли ви стикаєтесь з багатомовними назвами, коли об’єкти мають назви різними мовами. Це досить помітно в назвах великих міст по всьому світу. В деяких регіонах, міста, частини населених пунктів та вулиці мають назви всіма місцевими мовами. Тож люди бажають мати мапи, які б показували назви відповідними мовами (Uk:Інтернаціоналізація мапи).

Стаття Uk:Назви#Локалізація містить основні положення щодо того, як використовувати Key:name для додавання назв різними мовами. Більшість маперів схвально ставляться до використання name:code=*, де code — код мови за ISO 639-1 alpha2 code (другий стовпчик), або ISO 639-2 code в нижньому регістрі, за відсутності коду ISO 639-1.

Повторення назви в тезі з кодом мови

Теґ name=* містить загальну, стандартну назву місцевою мовою. name:<lang_code> використовується для позначення назви певною мовою у випадках, коли назва відрізняється залежно від мови, наприклад name:uk=Київ дає назву міста українською мовою (код мови uk), а name:en=Kyiv дає назву англійською мовою (код мови en).

У випадках, коли для назви позначено кілька мов, теґ назви місцевою мовою слід дублювати з підключем, що відповідає конкретній мові. Наприклад, Київ позначено теґом name=Київ, який має те саме значення, що й name:uk=Київ. Таке позначення є важливим, оскільки воно гарантує, що споживачі даних не мусять здогадуватися про місцеву мову. Вгадати мову назви на основі місцезнаходження не завжди вдається — є місця в Україні, де name=* містить назви не українською, є місця в США, де правильно позначена назва в name=* не є англійською мовою.

З іншого боку, не позначайте імена, які не існують. Непримітне село десь у Польщі може мати тільки одну назву (вказану в name=*). Всіма іншими мовами це село називатиметься його польською назвою, оскільки воно не має іншої назви. Тільки тому, що всі інші мови використовують польську назву, не слід додавати теґи name:<lang_code> для всіх інших мов, що містять польську назву!

Для чого?

Теґування як name=Kraków, так і name:pl=Kraków є корисним, особливо у випадку показу локалізованих назв з допомідними мовами. Якщо хтось хоче

  • показувати назви польською мовою
  • у випадку, якщо польська назва недоступна, показувати англійську назву (причому «Beijing» є кращим варіантом, ніж «北京市»)
  • в іншому випадку показувати name:en=*

У такому випадку рішенням буде

  • показувати name:pl=*
  • якщо він недоступний, показати name:en=*
  • якщо обидва відсутні, показати name=*

Але зверніть увагу, що сталося б, якби значення name=* було польською мовою, теґ name:pl=* був б відсутній, а теґ name:en=* — присутній:

  • показати name:pl=* — пропускаємо, оскільки немає
  • якщо name:pl=* немає, показати name:en=* — готово!
  • якщо обидва теґи відсутні, показати name=* — ми зупинились на попердньму кроці

Альтернативним варіантом було б додавання припущень щодо мови в name=* (що є складним, для багатьох мов і територій неможливим, нестабільним і схильним до помилок).

Або явно позначити як name=*, так і name:<lang_code>.

Mapbox Directions API, що працює на базі Valhalla, є прикладом споживача даних, який покладається на цю евристику. У деяких регіонах, де є кілька офіційних мов, інструкції містять назви вулиць і пункти призначення кількома мовами, що є надто докладним і зазвичай небажаним. Але якщо name=* супроводжується відповідним теґом назви з кваліфікатором мови, то запитувана мова гарантує, що в інструкціях зʼявиться тільки найбільш релевантна мова.

Коли назва лише однією мовою

Зверніть увагу на «випадки, коли є назви кількома мовами додані в name». Коли назва позначена лише однією мовою і очікується, що так буде і надалі, переваги цього значно зменшуються, і це робиться рідко — а також може бути суперечливим. Особливо в регіонах, де у вжитку тільки одна мова.

Коли назва наразі позначена однією мовою, але відомо, що інші мови не позначено, доцільніше позначати як name=*, так і name:<lang_code>=*.

Питання

  • яке значення має бути у теґа name=* (місцева назва, якщо немає спору щодо неї) та, як зазначати мову, що використовується для запису назви в ньому.
  • як вказати, що назва є транслітерованою. Існує стандартний перелік кодів транслітерації (але він не повний). Але намагайтесь уникати транслітерації, за винятком окремих випадків.
  • чи слід звернутися до міжнародного стандарту BCP 47 для теґів мови (і до пов’язаного з ним реєстру IANA), який дозволяє додавати розширення до коду базової мови, використовуючи необов’язкові "підтеги локалі", розділені дефісами ("-"): a 3- літерний код "extlang" для діалектних варіантів (застарілий з ISO 639-3), стандартний 4-літерний код абетки ISO 15924, 2-літерний код регіону ISO 3166-1 або 3-значний код регіону UN M.49 для міжнародних регіонів. Слід уникати використання регіональних кодів, наскільки це можливо (у більшості випадків замість цього слід використовувати код для зазначення абетки). Системи транслітерації також можуть бути вказані, якщо сам код мови недостатньо конкретний і існує кілька конкуруючих схем транслітерації. Ці схеми транслітерації мають стандартизовані коди в даних Unicode CLDR, що визначає власні розширення локальних підтеґів для BCP 47. Стандарт BCP 47 також нормативно посилається і використовується (замість ISO 639, який має проблеми з точки зору стабільності) всіма W3C стандартами (HTML, CSS, SVG, XML …) та безліччю бібліотек інтернаціоналізації та мов програмування (включаючи C, C ++, Java, Javascript у їх стандартних бібліотеках або з ICU).
  • чи варто також уникати використання кодів, що їх використовує Вікіпедія (або зібраних у Вікіданих списки статей Вікіпедії) для інтервікі посилань, якщо вони не описані стандартом BCP47: їх призначення, також відрізняти редакції Вікіпедії через те, що вони відповідають вірним субдоменам (які не обмежуються тільки локалями з BCP 47, а можуть бути будь-яким "словом"), або використовуються в деяких розширеннях Вікіпедії; більшість цих несумісних кодів поступово усуваються та прибираться в проєктах Вікімедія; серед них "en-simple" (використовуйте "en" натомість), "sr-ec", але й також деякі коди, які були помилково обрані і тепер представляють не ту мову (наприклад, "nrm" — помилково використовується для нормандської у Вікіпедії). Дані ОСМ не повинні містити ці викрутаси: їх потрібно заміняти на BCP 47 сумісні коди (або додавати підтеґи розширення "для приватного використання", визначені в BCP 47, наприклад "en-x-simple" замість "en-simple", якщо вам справді потрібна відмінність від "en" для стандартної англійської мови).
    Примітка: Підтеґи локалей BCP 47 не чутливі до регістру (навіть якщо вони мають повторне екранування), і дані OSM повинні використовувати теґи з ключем "name:code", де code є відповідним теґом локалі, що відповідає стандарту BCP47, у бажаній формі (виключаючи псевдоніми, визначені у реєстрі IANA та застарілі або замінені теґи або підтеґи), але лише з використанням малих літер (у тому числі в підтеґах локалі для мови та регіонів).
    Зберігайте коди у верхньому регістрі, які використовуються лише для іменування префіксів або суфіксів, у регіональних тегах (які також не залежать від використовуваної мови): у цьому випадку бажано використовувати коди ISO 3166. Наприклад, традиційна китайська в Гонконзі позначається теґом name:zh-Hant-HK=*, а не name:zh-hant-hk=*. (Використання малих літер в основному припинилося в 2018 році. [1][2])

Для ознайомлення з інформацією щодо конкретної країни зверніться до англомовної версії цієї статті. Перегляньте також Exonyms для ознайомлення з прикладами.

Україна

Офіційною мовою країни є українська. Однак через історичні чинники в деяких регіонах можуть використовуватись інші мови, наприклад польську. Також, завдяки довготривалій окупації Росією (впродовж сторіч) російська є досить поширеною, на деяких територіях (в Криму та на сході) навіть превалює над українською. В Криму, до того ж існує мова корінного народу, кримських татар, які складають значну частину населення півострова. Беручи до уваги ці чинники, українська спільноти широко використовує Relation:associatedStreet для підтримання масштабованої схеми використання різних мов. Зазвичай використовується наступна схема:

теґ name (для вулиць) — українською, відповідно до правила Додавати на мапу те, що є насправді. Було кілька спорів стосовно "типової" мови. В межах населеного пункту рекомендується мати значення name однорідними.

теґ name зв’язків (associatedStreet) — так само.

теґи name:uk, name:<xx> та інші для зв’язків (associatedStreet) — для підтримки багатомовності. Можуть доповнюватись назвами іншими мовами name:pl (польська), name:crh (кримськотатарська), так само як і name:en для інтернаціоналізації.

Зауважте, що відрізки вулиць мають включатись до зв’язків з роллю role street, а будинки — role house для правильної обробки адрес.

Обʼєкти на кордонах

Іноді кордон є спільним обʼєктом, наприклад річкою, яка має різні назви по обидва боки кордону. Одним із прикладів є річка Рейн, що розділяє Німеччину та Францію.

Завжди додавайте name:code=* для кожної мови, що використовується, а для сумісності зі старими механізмами візуалізації також встановіть name=* для обох назв, розділених косою рискою з пробілами між ними, впорядкованих у (дещо нейтральному) алфавітному порядку Unicode.

Для річки Рейн це буде:

name=Le Rhin / Rhein
name:fr=Le Rhin
name:de=Rhein

Зверніть увагу, що в рідкісних випадках, коли обʼєкт межує з декількома мовними регіонами, як, наприклад, річка Дунай, обʼєднання всіх назв в name=* може призвести до утворення незручно довгого рядка. Хоча це ще ніде не реалізовано, можна:

  • створити звʼязок для всього обʼєкта без name=*, тільки з теґами name:code=*
  • розбити обʼєкт на кожну пару сусідніх регіонів (зазвичай країни)
  • для кожної пари регіонів створити звʼязок для частин обʼєкта, що розділяють два регіони, з name=*, що містить дві місцеві назви без теґів name:code=*

Нарешті, якщо лише частина обʼєкта використовується як межа, встановіть значення name=* для частин, що не є межею, на назву, яка використовується в регіоні, що їх містить, як у більшості інших обʼєктів.

Мовні теґи

Ключ name також може набувати суфіксів з підмножини дат (наприклад old_name:en:1921-1932).

Усі задокументовані підключі з суфіксами:

Дивіться також