RU:Multilingual names

From OpenStreetMap Wiki
Jump to navigation Jump to search
Около Вики Директива (en) Организации Перевод Очистка Справка

Бывают разные ситуации, когда нам нужно работать с многоязычными названиями, когда у объекта разные названия на разных языках. Это очень распространено для названий крупных городов мира. В некоторых регионах у мест и улиц есть названия на всех местных языках. Люди также хотят видеть карты на определённом языке (интернационализация карт).

Names#Localization — это основная документация, описывающая, как использовать Key:name с кодом языка. Обычно люди соглашаются использовать name:code=*, где code — это код языка в нижнем регистре ISO 639-1 alpha2 (второй столбец), код в нижнем регистре ISO 639-2, если код ISO 639-1 не существует, или ISO 639-3, если не существует ни того, ни другого. Кроме того, в некоторых случаях к тегу необходимо добавить название шрифта в соответствии с ISO 15924 name:code-Script=*. Многие языки, в том числе широко распространённые разговорные и письменные, определены в существующих кодах ISO неточно или не закодированы, поэтому при необходимости тегирование может отклоняться от них.

Повторение имени с указанием языкового тега

name=* содержит общепринятое название на местном языке по умолчанию. name:<lang_code> используется для обозначения названия на указанном языке в тех случаях, когда название зависит от языка. Например, name:ru=Москва обозначает название города на русском языке (код языка ru), а name:en=Moscow — на английском (код языка en).

В случаях, когда для имени указано несколько языков, тег имени на локальном языке должен дублироваться с указанием субключа для конкретного языка. Например, Москва помечается как name=Москва с тем же значением, что и name:ru=Москва. Такая маркировка важна, поскольку она позволяет потребителям данных не определять локальный язык самостоятельно. Предположение о языке имени на основе местоположения не всегда верно: в России есть места, где 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=* будет помечено тегом:
display name:pl=* — пропущено, так как отсутствует
  • : если он недоступен, отобразите name:en=* — готово!
  • : если ни то, ни другое не отображается, выведите name=* — не найдено
  • : Альтернативой могло бы стать добавление догадок о языке name=* (что сложно, а для многих языков и областей невозможно, ненадёжно и чревато ошибками).

Или явно укажите теги name=* и name:<lang_code>.

Mapbox Directions API, работающий на базе Valhalla, является примером потребителя данных, который полагается на эту эвристику. В некоторых регионах, где используется несколько официальных языков, в инструкциях по навигации будут указаны названия улиц и пунктов назначения на нескольких языках, что является избыточным и обычно нежелательным. Но если name=* сопровождается соответствующим тегом с указанием языка, то в инструкциях по навигации будет указан только наиболее подходящий язык.

Когда имя написано только на одном языке

Обратите внимание на фразу «в случаях, когда имя помечено тегами на нескольких языках». Если имя помечено тегами только на одном языке и предполагается, что так будет и дальше, польза от этого будет гораздо меньше, и такое делается редко, а иногда и вовсе вызывает споры. Особенно в одноязычных регионах.

Если имя в данный момент помечено тегом на одном языке, но известно, что на других языках теги отсутствуют, имеет смысл использовать теги name=* и для конкретного языка.

Проблемы

Каким должно быть простое name=* (локальное имя, по крайней мере, если оно не оспаривается) и как указать язык, на котором написан тег name. как указывать транслитерацию. Существует стандартный список кодов транслитерации. Но избегайте транслитерации, за исключением особых случаев.

Вместо этого следует обратиться к международному стандарту BCP 47 для тегов locale (и к связанному с ним реестру IANA), который позволяет добавлять расширения к коду базового языка, используя необязательные "подтеги locale", разделенные дефисами ("-"): 3-буквенный код extlang для диалектных вариантов (устарел со времен ISO 639-3), стандартный 4-буквенный код сценария ISO 15924, 2-буквенный код региона ISO 3166-1 или 3-значный код региона ООН M.49 для международных регионов. Следует по возможности избегать использования региональных кодов (в большинстве случаев вместо них следует использовать код письменности). Также можно указать систему транслитерации, если кода письменности недостаточно для определения языка и существует несколько конкурирующих схем транслитерации.

Эти схемы транслитерации имеют стандартизированные коды в данных Unicode CLDR, которые определяют собственные расширения субтегов локали для BCP 47. Стандарт BCP 47 также является нормативным и используется (вместо ISO 639, у которого есть проблемы со стабильностью) во всех веб-стандартах W3C (HTML, CSS, SVG, XML...) и во многих библиотеках интернационализации и языках программирования (в том числе в C, C++, Java, Javascript в их стандартных библиотеках или с помощью ICU).

Также избегайте использования кодов, используемых Википедией (или собранных в Викиданных в списке статей Википедии) для ее ссылок в интервики, если они не являются стандартными тегами локали BCP 47: их значение заключается только в различении редакций Википедии, поскольку они фактически сопоставлены с допустимыми именами поддоменов (которые не ограничены использованием только тегов локали BCP 47, но могут быть любым "словом"), или используются в некоторых расширениях Википедии; большинство этих несоответствующих кодов постепенно отменяются и заменяются в проектах Викимедиа; это включает "en-simple" (используйте только "en"), "sr -ec" (используйте "sr-cyrl"), но также некоторые коды, которые были присвоены неправильно и которые фактически представляют другие языки (например, "nrm", неправильно используемое для обозначения нормандского в Википедии).

Данные OSM не должны содержать эти импортированные «грязные» особенности: замените их кодами, соответствующими стандарту 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])

На этой странице представлена информация о некоторых странах, в частности о языке, используемом в основном теге «название». Примеры см. в Экзонимах.

Туркменистан

Основная статья: Туркменистан#Общие_правила_наименования

Смотри также: Изменения в географических названиях Туркменистана и Справочник по названиям улиц Ашхабада

В Туркменистане один официальный язык — туркменский, и к 2000 году страна официально перешла с туркменского кириллического алфавита на туркменский латинский алфавит. Таким образом, name=* должно быть написано на туркменском языке латинскими буквами. Многие старые вывески остались на русском языке, а на многих общественных зданиях теперь есть двуязычные вывески на туркменском и английском языках. Следовательно, теги name:ru=* и name:en=* часто бывают уместны.

Многие названия улиц и муниципалитетов были изменены с советских, прославляющих коммунистов, коммунистические идеалы, героев большевистской революции и деятелей русской культуры, на названия, прославляющие туркменских, персидских и арабских деятелей.

Неправильно помечать прежние названия на русском языке как name:ru=*. Их следует помечать как old_name:ru=*, чтобы указать, что название изменилось.

Узбекистан

В Узбекистане один официальный язык — узбекский. Кроме того, в Каракалпакской автономной республике признан каракалпакский язык.

Исторически сложилось так, что из-за Советского Союза большинство мест в стране носили русские названия. В Узбекистане проживали или до сих пор проживают многочисленные меньшинства русского, татарского, киргизского, туркменского и даже немецкого происхождения.

Поэтому почти все места в стране носили русские названия, которые только в последние годы были заменены на узбекские, написанные латинскими буквами, или на традиционные названия на других языках. Русский язык по-прежнему широко используется, особенно в крупных городах. На своих веб-сайтах и в социальных сетях многие компании в Узбекистане указывают свой адрес на русском языке.

Таким образом, в настоящее время в Узбекистане принято использовать узбекские имена (на латинице) в качестве имён по умолчанию, а русские имена добавляются в name:ru=*. В Каракалпакстане имя по умолчанию должно быть на каракалпакском языке.

name=Toshkent официальное узбекское имя на латинице
name:kaa=Tashkent Каракалпакское имя
name:ru=Ташкент для русского имени
name:en=Tashkent для основного английского названия
name:de=Taschkent из - за немецкого названия
alt_name:uz=Тoшкент альтернативное узбекское имя на кириллице или в других латинских вариантах написания
alt_name:en=Toshkent для альтернативных английских названий

Общие граничные объекты

Иногда границей служит общая черта, например река, которая по обе стороны границы называется по-разному. Один из примеров — река Рейн, разделяющая Германию и Францию.

Всегда добавляйте name:code=* для каждого используемого языка, а для совместимости со старыми механизмами рендеринга также добавляйте name=* к обоим именам, разделяя их косой чертой и пробелами и сортируя в (относительно нейтральном) алфавитном порядке Unicode.

Для реки Рейн это будет выглядеть так:

название=Рейн
название: Le Rhin
название: de=Рейн
Обратите внимание, что в том редком случае, когда объект находится на границе нескольких языковых регионов, как, например, река Дунай, объединение всех названий в name=* может привести к образованию неудобно длинной строки. Хотя это пока нигде не реализовано, можно было бы:

Создайте связь для всего объекта без name=*, только с тегами name:code=*

Разбейте задачу на части для каждой пары соседних регионов (обычно стран)

для каждой пары регионов создайте связь между частями объекта, разделяющими два региона, с помощью name=*, содержащих два локальных имени и без name:code=* тегов Наконец, если в качестве границы используется только часть объекта, присвойте name=* не являющимся границами частям имя, используемое во включающей области, как и в большинстве других объектов.

Казахстан

Ключ: имя: kk

Чтоб были видны все языки в раскладке в Name надо писать латиницей, или на английском , на других языках названия не будет видно.

На русском языке будет видно на картах Гуманитарная и Shortbread .

Толкование

В общем случае, тег имени не заполняется, если тег(и) обозначения объекта и то, что предполагается поместить в name=*, полностью взаимозаменяемы. Например, shop=bakery и "Хлеб .

Аналогичные вопросы часто вызывает наличие в каких-то официальных списках графы "Наименование", в которую попадают не только имена собственные, но и слова-категории или техническая информация. Следует понимать, что в OSM понятие названия более строгое, чем в разного рода документации, где нет необходимости различать части названия. Кроме того, чаще всего существуют документы, где один и тот же объект упоминается по-разному.

Аргументация отдельных пользователей, состоящая в том, что стиль Standard по умолчанию отображает какие-либо объекты "непонятно" или что без заполнения имени чем-либо объекты невозможно найти в навигаторе, является неприемлемой. Данное правило проекта служит вполне определённым практическим целям и не должно нарушаться по чьей-либо прихоти. Внесение таких псевдоназваний квалифицируется как обозначение под рендер.

Не старайтесь заполнить теги названий на других языках просто для количества – этот тег предназначен для существующих иностранных названий, а не для транслитерации всего подряд. При необходимости транслитерация может быть реализована автоматически.

Причины, почему транслитерация не должна помещаться в значение ключа иностранного имени:

Транслитерация – однозначная операция, выполняемая по типовым правилам, потому данная операция может быть выполнена конвертером данных, если это потребуется. Способов транслитерации несколько для каждой пары языков (например, есть не менее десятка разных способов передачи слов русского языка латинскими буквами для англоязычного читателя), и для разных случаев разные способы могут быть подходящими – это должен решать тот, кто использует данные. Существует мнение, что заполнение этого тега транслитом как-то помогает иностранцам, но сценарий использования данных таким образом может быть различным, потому что в одном случае пользователю будет нужна фонетическая запись, в другом – какая-то ещё (притом для носителей разных языков – разная). Потому решать этот вопрос стоит позволить конечному пользователю данных, а не добавлять в базу вторичные избыточные данные. Нет никакого способа различить name:language_code, заполненный настоящим иностранным названием, и результатом транслитерации/транскрипции, потому тег получает неопределённое значение. Транслитерированные (автоматически или вручную) названия не соответствуют принципу верифицируемости и ground truth, так как не могут быть подтверждены независимо с использованием источника на местности. Аргумент о наличии на местности дополнительных табличек с написанием русскоязычных названий латиницей – несостоятелен, так как, во-первых, таблички периодически меняют, выполняя их по разным правилам, во-вторых, идентифицировать принадлежность транслитерированного названия к какому-либо конкретному языку часто невозможно, поскольку статусная часть обычно тоже транслитерирована. Допустимо заполнять этот тег официальным самоназванием компаний или организаций на иностранном языке, если есть возможность определить принадлежность этого названия к какому-либо языку. Такое самоназвание должно являться официальным (по крайней мере, для данного языка), потому вопрос о возможности его использования не возникает.

Смотрите также