mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-24 07:53:09 +00:00
d803efd39d
The import dialog always made a new list. It now asks where the places go: a new list, as before and still the default, or a list that is already there. The picker offers the lists the person may edit, which is their own plus a shared one where they are an editor or an admin, and starts on the list they have open. Adding to a list only ever adds. A place the list already holds is left exactly as it is, with its status, notes, rating and labels, and counted as already there in what the import reports; it is recognised the way a single save recognises one, by provider id, then name, then position. The list keeps its own name, colour, icon and description whatever the file says, a label the file brings is created only when the list has none of that name, and new places are appended after the ones already there so a manual order survives. The route is POST /api/addons/collections/:id/import, 200 because it adds to a list rather than making one, and both imports now write their places through the same helper.
232 lines
16 KiB
TypeScript
232 lines
16 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const collection: TranslationStrings = {
|
|
'collections.saveNToList': 'Сохранить {count} в список',
|
|
'collections.addedNToList': 'Сохранено {count} в {name}',
|
|
'collections.noOwnLists': 'У вас пока нет списков',
|
|
'collections.saveToListHint': 'Дубликаты пропускаются автоматически',
|
|
'collections.role.label': 'Роль',
|
|
'collections.role.viewer': 'Наблюдатель',
|
|
'collections.role.editor': 'Редактор',
|
|
'collections.role.admin': 'Админ',
|
|
'collections.picker.allLists': 'Все списки',
|
|
'collections.select': 'Выбрать',
|
|
'collections.selectAll': 'Выбрать все',
|
|
'collections.deselectAll': 'Снять выделение',
|
|
'collections.moveToList': 'Переместить в список',
|
|
'collections.duplicateToList': 'Дублировать в список',
|
|
'collections.moveToListTitle': 'Переместить {count} в другой список',
|
|
'collections.duplicateToListTitle': 'Дублировать {count} в другой список',
|
|
'collections.noOtherLists': 'Других списков пока нет',
|
|
'collections.movedCount': 'Перемещено мест: {count}',
|
|
'collections.duplicatedCount': 'Продублировано мест: {count}',
|
|
'collections.placeCount': '{count} мест',
|
|
'collections.category': 'Категория',
|
|
'collections.noCategory': 'Без категории',
|
|
'collections.editListTitle': 'Изменить список',
|
|
'collections.coverImage': 'Обложка',
|
|
'collections.addCover': 'Добавить обложку',
|
|
'collections.changeCover': 'Изменить обложку',
|
|
'collections.description': 'Описание',
|
|
'collections.descriptionPlaceholder': 'Добавьте описание…',
|
|
'collections.links': 'Ссылки',
|
|
'collections.linkLabel': 'Название',
|
|
'collections.addLink': 'Добавить ссылку',
|
|
'collections.addDetails': 'Добавить детали',
|
|
'collections.addPlace': 'Добавить место',
|
|
'collections.addPlaceSearch': 'Поиск места…',
|
|
'collections.addPlaceHint': 'Найдите, чтобы добавить место в этот список',
|
|
'collections.importFromTrip': 'Импорт из поездки',
|
|
'collections.importTitle': 'Импорт из поездки',
|
|
'collections.importDoneTitle': 'Импорт завершён',
|
|
'collections.importPickTripHint': 'Выберите поездку и перенесите её места в список {name}.',
|
|
'collections.importNoTrips': 'Поездок пока нет',
|
|
'collections.importPlacesCount': '{count} мест',
|
|
'collections.importSearchPlaces': 'Поиск мест…',
|
|
'collections.importOnlyNew': 'Только новые',
|
|
'collections.importSelectAll': 'Выбрать все',
|
|
'collections.importClearSelection': 'Снять выделение',
|
|
'collections.importAlreadySaved': 'Уже сохранено',
|
|
'collections.importUnscheduled': 'Без дня',
|
|
'collections.importOnDay': 'День {count}',
|
|
'collections.importSelectedCount': 'Выбрано: {count}',
|
|
'collections.importAction': 'Импортировать {count}',
|
|
'collections.importEmptyTrip': 'В этой поездке пока нет мест',
|
|
'collections.importNothingNew': 'Всё из этой поездки уже есть в списке',
|
|
'collections.importDone': 'Добавлено мест: {count}',
|
|
'collections.importDoneSkipped': '{count} уже были в списке и остались без изменений',
|
|
'collections.importDoneClean': 'Теперь все они в списке {name}',
|
|
'collections.sort.default': 'По умолчанию',
|
|
'collections.sort.nameAsc': 'Название (А–Я)',
|
|
'collections.coordinates': 'Координаты',
|
|
'collections.showList': 'Показать список',
|
|
'collections.expandMap': 'Развернуть карту',
|
|
'collections.hero.mine': 'Моя коллекция',
|
|
'collections.hero.shared': 'Доступно вам',
|
|
'collections.hero.all': 'Ваша библиотека',
|
|
'collections.title': 'Коллекции',
|
|
'collections.subtitle': 'Ваши сохранённые места, организованные в списки',
|
|
|
|
'collections.newList': 'Новый список',
|
|
'collections.create': 'Создать',
|
|
'collections.editList': 'Переименовать',
|
|
'collections.listMenu': 'Параметры списка',
|
|
'collections.deleteList': 'Удалить список',
|
|
'collections.deleteListConfirm': 'Это навсегда удалит список и все сохранённые в нём места. Это нельзя отменить.',
|
|
'collections.listName': 'Название списка',
|
|
'collections.listNamePlaceholder': 'например, Токио 2025',
|
|
'collections.listColor': 'Цвет',
|
|
'collections.allSaved': 'Все сохранённые',
|
|
'collections.shared': 'Общий',
|
|
|
|
'collections.empty.title': 'Пока нет мест',
|
|
'collections.empty.text': 'Сохраняйте места из любой поездки, чтобы наполнить этот список.',
|
|
'collections.empty.noMatchTitle': 'Совпадений нет',
|
|
'collections.empty.noMatchText': 'Нет сохранённых мест, подходящих под ваш фильтр или поиск.',
|
|
'collections.empty.firstTitle': 'Создайте свою первую коллекцию',
|
|
'collections.empty.firstText': 'Создайте список, чтобы сохранять места, которые хотите запомнить между поездками.',
|
|
|
|
'collections.view.grid': 'Сетка',
|
|
'collections.view.list': 'Список',
|
|
'collections.view.map': 'Карта',
|
|
|
|
'collections.status.idea': 'Идея',
|
|
'collections.status.want': 'Хочу посетить',
|
|
'collections.status.visited': 'Посещено',
|
|
'collections.status.filterAll': 'Все',
|
|
'collections.status.cycleHint': 'нажмите, чтобы изменить',
|
|
|
|
'collections.markVisited': 'Отметить как посещённое',
|
|
'collections.markVisitedAll': 'Посещено везде',
|
|
'collections.markVisitedSelection': 'Отметить посещённым в списках',
|
|
'collections.markVisitedNone': 'Ни одно из этих мест не сохранено в списке',
|
|
'collections.markedVisited': 'Отмечено как посещённое',
|
|
'collections.markedVisitedTrip': 'Отмечено мест как посещённые: {count}',
|
|
|
|
'collections.copyToTrip': 'Скопировать в поездку',
|
|
'collections.copyToTripTitle': 'Скопировать в поездку',
|
|
'collections.copyN': 'Скопировать {count} в поездку',
|
|
'collections.copyToTripSearch': 'Поиск поездок',
|
|
'collections.searchLists': 'Поиск списков',
|
|
'collections.copyToTripConfirm': 'Скопировать',
|
|
'collections.noTrips': 'Пока нет поездок',
|
|
'collections.alreadyInTrip': 'Уже в этой поездке',
|
|
'collections.copied': 'Скопировано в поездку',
|
|
'collections.copiedCount': 'Скопировано мест: {count}',
|
|
'collections.skippedDuplicates': 'Пропущено дубликатов: {count}',
|
|
'collections.copyNothing': 'Нечего копировать',
|
|
'collections.removeFromList': 'Удалить из списка',
|
|
'collections.removeFromListConfirm': 'Удалить это место из списка?',
|
|
'collections.removeFromCollection': 'Удалить из коллекции',
|
|
|
|
'collections.saved': 'Сохранено в {name}',
|
|
'collections.savedUndo': 'Отменить',
|
|
'collections.viewInCollection': 'Открыть',
|
|
'collections.duplicateWarning': 'Это место уже есть в списке',
|
|
|
|
'collections.search': 'Поиск мест',
|
|
'collections.selectMode': 'Выбрать',
|
|
'collections.selectedCount': 'Выбрано: {count}',
|
|
|
|
'collections.pickList': 'Сохранить в список',
|
|
'collections.pickListPlaceholder': 'Выберите список',
|
|
'collections.addedToList': 'Добавлено в {name}',
|
|
'collections.removedFromList': 'Удалено из {name}',
|
|
'collections.inLists': 'В ваших списках',
|
|
'collections.otherLists': 'Добавить в список',
|
|
'collections.noListsYet': 'Сначала создайте список, чтобы сохранять места.',
|
|
'collections.removedFromAll': 'Удалено из коллекции',
|
|
'collections.picker.title': 'Сохранённые места',
|
|
'collections.picker.showMore': 'Показать ещё {count}',
|
|
'collections.picker.search': 'Поиск по сохранённым местам',
|
|
'collections.picker.empty': 'Нет сохранённых мест для добавления',
|
|
'collections.picker.hint': 'Выберите место из своих коллекций',
|
|
'collections.picker.use': 'Использовать',
|
|
|
|
// Export / import a list as a file (#2198)
|
|
'collections.file.export': 'Экспорт',
|
|
'collections.file.exportTitle': 'Скачать этот список файлом',
|
|
'collections.file.importButton': 'Импортировать список из файла',
|
|
'collections.file.importTitle': 'Импорт списка',
|
|
'collections.file.choose': 'Выберите файл списка',
|
|
'collections.file.confirm': 'Импортировать',
|
|
'collections.file.targetNew': 'Новый список',
|
|
'collections.file.targetNewHint': 'Файл как отдельный список',
|
|
'collections.file.targetExisting': 'Добавить в список',
|
|
'collections.file.targetExistingHint': 'В список, который уже есть',
|
|
'collections.file.searchLists': 'Поиск списков',
|
|
'collections.file.intoHint': 'Места, которые уже есть в списке, остаются без изменений, как и его название и цвет. Метки из файла добавляются.',
|
|
'collections.file.confirmInto': 'Добавить в список',
|
|
'collections.file.doneInto': '{count} мест добавлено в {name}',
|
|
'collections.file.doneIntoDuplicates': '{count} добавлено в {name}, {duplicates} уже были там',
|
|
'collections.file.doneIntoNothing': 'Все места из файла уже есть в {name}',
|
|
'collections.file.change': 'Изменить',
|
|
'collections.file.labelCount': 'Меток: {count}',
|
|
'collections.file.hint':
|
|
'Места появятся в новом собственном списке. Оценки, участники и загруженные фотографии остаются на прежнем месте.',
|
|
'collections.file.done': 'Импортировано мест: {count}',
|
|
'collections.file.doneSkipped': 'Импортировано мест: {count}, пропущено: {skipped}',
|
|
'collections.file.errorTooLarge': 'Этот файл слишком велик для списка.',
|
|
'collections.file.errorUnreadable': 'Не удалось прочитать этот файл.',
|
|
'collections.file.errorNotACollection': 'Это не файл списка TREK.',
|
|
'collections.file.formatTrek': 'Список TREK',
|
|
'collections.file.formatTrekHint': 'Для другого TREK, с метками и статусом',
|
|
'collections.file.formatGpxHint':
|
|
'Путевые точки для OsmAnd, Organic Maps, Garmin и других картографических приложений',
|
|
'collections.file.gpxOmitted': 'Мест без координат, не попавших в файл GPX: {count}',
|
|
'collections.file.gpxNothing': 'Ни у одного из этих мест нет координат, поэтому в файл GPX нечего записать.',
|
|
'collections.file.reading': 'Чтение файла…',
|
|
'collections.file.gpxSkipped': 'Путевые точки без пригодных координат будут пропущены: {count}.',
|
|
'collections.file.gpxTrack': 'В файле также есть точки трека: {count}. Треки не импортируются, только путевые точки.',
|
|
'collections.file.gpxEmpty': 'В этом файле GPX нет путевых точек, поэтому импортировать нечего.',
|
|
'collections.file.errorNotGpx': 'Это не файл GPX.',
|
|
'collections.file.errorTooManyPlaces':
|
|
'В этом файле больше {count} мест. Разделите его и импортируйте части по очереди.',
|
|
|
|
'collections.share.title': 'Поделиться списком',
|
|
'collections.share.titleNamed': 'Поделиться «{name}»',
|
|
'collections.share.button': 'Поделиться',
|
|
'collections.share.members': 'Участники',
|
|
'collections.share.owner': 'Владелец',
|
|
'collections.share.you': 'вы',
|
|
'collections.share.pending': 'ожидает приглашения',
|
|
'collections.share.accepted': 'принято',
|
|
'collections.share.invite': 'Пригласить',
|
|
'collections.share.inviteUser': 'Выберите пользователя',
|
|
'collections.share.sendInvite': 'Отправить приглашение',
|
|
'collections.share.inviteHint': 'Приглашённые могут просматривать и редактировать этот список.',
|
|
'collections.share.noUsers': 'Нет пользователей для приглашения.',
|
|
'collections.share.memberHint': 'Только владелец списка может приглашать или удалять участников.',
|
|
'collections.share.cancel': 'Отмена',
|
|
'collections.share.leave': 'Покинуть список',
|
|
'collections.share.leaveConfirm': 'Покинуть этот общий список? Вы потеряете доступ, пока вас не пригласят снова.',
|
|
'collections.share.left': 'Вы покинули список',
|
|
'collections.share.remove': 'Удалить',
|
|
|
|
'collections.invites.title': 'Приглашения',
|
|
'collections.invites.from': 'от',
|
|
'collections.invites.accept': 'Принять',
|
|
'collections.invites.decline': 'Отклонить',
|
|
'collections.invites.received': 'У вас новое приглашение в список',
|
|
'collections.invite.sent': 'Приглашение отправлено',
|
|
'collections.invite.error': 'Не удалось отправить приглашение',
|
|
'collections.invite.accepted': 'Приглашение принято',
|
|
'collections.invite.declined': 'Приглашение отклонено',
|
|
|
|
'collections.widget.title': 'Коллекции',
|
|
'collections.widget.empty': 'Пока нет сохранённых мест',
|
|
'collections.widget.savedCount': 'Сохранено: {count}',
|
|
'collections.labels.title': 'Метки',
|
|
'collections.labels.manage': 'Управление метками',
|
|
'collections.labels.add': 'Добавить метку',
|
|
'collections.labels.name': 'Название метки',
|
|
'collections.labels.namePlaceholder': 'например, Berlin',
|
|
'collections.labels.assign': 'Назначить метку',
|
|
'collections.labels.assignN': 'Добавить метки к {count} местам',
|
|
'collections.labels.assignedCount': 'Отмечено мест: {count}',
|
|
'collections.labels.empty': 'Пока нет меток',
|
|
'collections.labels.emptyHint': 'Сначала создайте метку, чтобы группировать места в этом списке.',
|
|
};
|
|
|
|
export default collection;
|