feat(places): the picture of a place is chosen in the editor, and the view opens its photos

- The editor's 'Pick a picture' is the one place a place's picture is set, on
  the desktop dialog and the phone sheet alike: upload one from the device,
  keep the current one (now shown as chosen), take an image attached to the
  place, or one of the sources' photos, or remove it. Nothing is sent before
  the save: the upload and the attached file are put in place once the place
  is saved, so Cancel leaves the picture as it was and a new place can get
  one too. Without the details column the same picker sits in the form.
- The view (inspector and phone sheet) shows the picture plainly; a click opens
  the gallery of its own picture and its sources' photos.
- The gallery drops an answer that arrives after the place changed, and its
  credits link to their source pages. The lightbox is a labelled modal dialog
  that takes and gives back focus, names its arrows and follows the reading
  direction.
- The picker leaves the details column (PlaceImagePicker), the column reads
  the shared enrichment cache, and PlaceAvatarUpload and usePlaceImagePick,
  which only the view used, are gone.
This commit is contained in:
Maurice
2026-10-23 19:07:53 +02:00
parent 357bcb72e3
commit 35566690e9
80 changed files with 1090 additions and 973 deletions
+2
View File
@@ -77,6 +77,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'تكبير',
'journey.lightbox.zoomOut': 'تصغير',
'journey.lightbox.zoomReset': 'العودة إلى الصورة كاملة',
'journey.lightbox.previous': 'الصورة السابقة',
'journey.lightbox.next': 'الصورة التالية',
'journey.create': 'Create', // en-fallback
'journey.titlePlaceholder': 'Where are you going?', // en-fallback
'journey.empty': 'No journeys yet', // en-fallback
+5 -4
View File
@@ -200,10 +200,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'رفع صورة',
'places.changeImage': 'تغيير الصورة',
'places.removeImage': 'إزالة الصورة',
'places.chooseImage': 'اختر صورة',
'places.uploadFromDevice': 'رفع من الجهاز',
'places.fromAttachedFiles': 'من الملفات المرفقة',
'places.image.current': 'الصورة الحالية',
'places.image.own': 'صورتك',
'places.image.none': 'بلا صورة',
'places.image.needsConnection': 'تحتاج الصورة الجديدة إلى اتصال. احفظ مجددًا عند الاتصال بالإنترنت.',
'places.openPhotos': 'عرض الصور',
'places.imageUploadError': 'تعذّر رفع الصورة',
'places.imageRemoveError': 'تعذّر إزالة الصورة',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Yaxınlaşdır',
'journey.lightbox.zoomOut': 'Uzaqlaşdır',
'journey.lightbox.zoomReset': 'Tam fotoya qayıt',
'journey.lightbox.previous': 'Əvvəlki foto',
'journey.lightbox.next': 'Növbəti foto',
'journey.create': 'Yarat',
'journey.titlePlaceholder': 'Haraya gedirsiniz?',
'journey.empty': 'Hələ səyahət gündəliyi yoxdur',
+5 -4
View File
@@ -182,11 +182,12 @@ const places: TranslationStrings = {
'places.uploadImage': 'Şəkil yüklə',
'places.changeImage': 'Şəkli dəyiş',
'places.removeImage': 'Şəkli sil',
'places.chooseImage': 'Şəkil seç',
'places.uploadFromDevice': 'Cihazdan yüklə',
'places.fromAttachedFiles': 'Əlavə edilmiş fayllardan',
'places.image.current': 'Cari şəkil',
'places.image.own': 'Sənin şəklin',
'places.image.none': 'Şəkil yoxdur',
'places.image.needsConnection': 'Yeni şəkil üçün bağlantı lazımdır. Onlayn olanda yenidən yadda saxla.',
'places.openPhotos': 'Fotolara bax',
'places.imageUploadError': 'Şəkli yükləmək mümkün olmadı',
'places.imageRemoveError': 'Şəkli silmək mümkün olmadı',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Aproximar',
'journey.lightbox.zoomOut': 'Afastar',
'journey.lightbox.zoomReset': 'Voltar à foto inteira',
'journey.lightbox.previous': 'Foto anterior',
'journey.lightbox.next': 'Próxima foto',
'journey.create': 'Criar',
'journey.titlePlaceholder': 'Para onde você vai?',
'journey.empty': 'Nenhuma jornada ainda',
+5 -4
View File
@@ -168,10 +168,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Enviar imagem',
'places.changeImage': 'Alterar imagem',
'places.removeImage': 'Remover imagem',
'places.chooseImage': 'Escolher uma imagem',
'places.uploadFromDevice': 'Enviar do dispositivo',
'places.fromAttachedFiles': 'Dos arquivos anexados',
'places.image.current': 'Imagem atual',
'places.image.own': 'Sua imagem',
'places.image.none': 'Sem imagem',
'places.image.needsConnection': 'Uma nova imagem precisa de conexão. Salve de novo quando estiver online.',
'places.openPhotos': 'Ver fotos',
'places.imageUploadError': 'Não foi possível enviar a imagem',
'places.imageRemoveError': 'Não foi possível remover a imagem',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Apropa',
'journey.lightbox.zoomOut': 'Allunya',
'journey.lightbox.zoomReset': 'Torna a la foto sencera',
'journey.lightbox.previous': 'Foto anterior',
'journey.lightbox.next': 'Foto següent',
'journey.create': 'Crea',
'journey.titlePlaceholder': 'A on vas?',
'journey.empty': 'Encara no hi ha travesies',
+5 -4
View File
@@ -170,10 +170,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Puja una imatge',
'places.changeImage': 'Canvia la imatge',
'places.removeImage': 'Elimina la imatge',
'places.chooseImage': 'Tria una imatge',
'places.uploadFromDevice': 'Puja des del dispositiu',
'places.fromAttachedFiles': 'Dels fitxers adjunts',
'places.image.current': 'Imatge actual',
'places.image.own': 'La teva imatge',
'places.image.none': 'Sense imatge',
'places.image.needsConnection': 'Una imatge nova necessita connexió. Torna a desar quan estiguis en línia.',
'places.openPhotos': 'Mostra les fotos',
'places.imageUploadError': "No s'ha pogut pujar la imatge",
'places.imageRemoveError': "No s'ha pogut eliminar la imatge",
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Přiblížit',
'journey.lightbox.zoomOut': 'Oddálit',
'journey.lightbox.zoomReset': 'Zpět na celou fotku',
'journey.lightbox.previous': 'Předchozí fotka',
'journey.lightbox.next': 'Další fotka',
'journey.create': 'Vytvořit',
'journey.titlePlaceholder': 'Kam jedete?',
'journey.empty': 'Zatím žádné cestovní deníky',
+5 -4
View File
@@ -176,10 +176,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Nahrát obrázek',
'places.changeImage': 'Změnit obrázek',
'places.removeImage': 'Odebrat obrázek',
'places.chooseImage': 'Vybrat obrázek',
'places.uploadFromDevice': 'Nahrát ze zařízení',
'places.fromAttachedFiles': 'Z přiložených souborů',
'places.image.current': 'Aktuální obrázek',
'places.image.own': 'Tvůj obrázek',
'places.image.none': 'Bez obrázku',
'places.image.needsConnection': 'Nový obrázek potřebuje připojení. Ulož znovu, až budeš online.',
'places.openPhotos': 'Zobrazit fotky',
'places.imageUploadError': 'Obrázek se nepodařilo nahrát',
'places.imageRemoveError': 'Obrázek se nepodařilo odebrat',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Vergrößern',
'journey.lightbox.zoomOut': 'Verkleinern',
'journey.lightbox.zoomReset': 'Zurück zum ganzen Foto',
'journey.lightbox.previous': 'Vorheriges Foto',
'journey.lightbox.next': 'Nächstes Foto',
'journey.create': 'Erstellen',
'journey.titlePlaceholder': 'Wohin geht die Reise?',
'journey.empty': 'Noch keine Journeys',
+5 -4
View File
@@ -162,11 +162,12 @@ const places: TranslationStrings = {
'places.uploadImage': 'Bild hochladen',
'places.changeImage': 'Bild ändern',
'places.removeImage': 'Bild entfernen',
'places.chooseImage': 'Bild auswählen',
'places.uploadFromDevice': 'Vom Gerät hochladen',
'places.fromAttachedFiles': 'Aus angehängten Dateien',
'places.image.current': 'Aktuelles Bild',
'places.image.own': 'Dein Bild',
'places.image.none': 'Kein Bild',
'places.image.needsConnection': 'Ein neues Bild braucht eine Verbindung. Speichere erneut, sobald du online bist.',
'places.openPhotos': 'Fotos ansehen',
'places.imageUploadError': 'Bild konnte nicht hochgeladen werden',
'places.imageRemoveError': 'Bild konnte nicht entfernt werden',
'places.addAnyway': 'Trotzdem hinzufügen',
'places.enrichOnImport': 'Orte über Google anreichern',
'places.enrichOnImportHint':
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Zoom in',
'journey.lightbox.zoomOut': 'Zoom out',
'journey.lightbox.zoomReset': 'Back to full photo',
'journey.lightbox.previous': 'Previous photo',
'journey.lightbox.next': 'Next photo',
'journey.create': 'Create',
'journey.titlePlaceholder': 'Where are you going?',
'journey.empty': 'No journeys yet',
+5 -4
View File
@@ -175,10 +175,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Upload image',
'places.changeImage': 'Change image',
'places.removeImage': 'Remove image',
'places.chooseImage': 'Choose a picture',
'places.uploadFromDevice': 'Upload from device',
'places.fromAttachedFiles': 'From attached files',
'places.image.current': 'Current picture',
'places.image.own': 'Your picture',
'places.image.none': 'No picture',
'places.image.needsConnection': 'A new picture needs a connection. Save again once you are online.',
'places.openPhotos': 'Show photos',
'places.imageUploadError': 'Could not upload image',
'places.imageRemoveError': 'Could not remove image',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Acercar',
'journey.lightbox.zoomOut': 'Alejar',
'journey.lightbox.zoomReset': 'Volver a la foto completa',
'journey.lightbox.previous': 'Foto anterior',
'journey.lightbox.next': 'Foto siguiente',
'journey.create': 'Crear',
'journey.titlePlaceholder': '¿A dónde vas?',
'journey.empty': 'Aún no hay travesías',
+5 -4
View File
@@ -169,10 +169,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Subir imagen',
'places.changeImage': 'Cambiar imagen',
'places.removeImage': 'Eliminar imagen',
'places.chooseImage': 'Elegir una imagen',
'places.uploadFromDevice': 'Subir desde el dispositivo',
'places.fromAttachedFiles': 'Desde los archivos adjuntos',
'places.image.current': 'Imagen actual',
'places.image.own': 'Tu imagen',
'places.image.none': 'Sin imagen',
'places.image.needsConnection': 'Una imagen nueva necesita conexión. Guarda de nuevo cuando estés en línea.',
'places.openPhotos': 'Ver fotos',
'places.imageUploadError': 'No se pudo subir la imagen',
'places.imageRemoveError': 'No se pudo eliminar la imagen',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Suurenda',
'journey.lightbox.zoomOut': 'Vähenda',
'journey.lightbox.zoomReset': 'Tagasi terve fotoni',
'journey.lightbox.previous': 'Eelmine foto',
'journey.lightbox.next': 'Järgmine foto',
'journey.create': 'Loo',
'journey.titlePlaceholder': 'Kuhu lähed?',
'journey.empty': 'Reisilugusid veel pole',
+5 -4
View File
@@ -169,10 +169,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Laadi pilt üles',
'places.changeImage': 'Muuda pilti',
'places.removeImage': 'Eemalda pilt',
'places.chooseImage': 'Vali pilt',
'places.uploadFromDevice': 'Laadi üles seadmest',
'places.fromAttachedFiles': 'Manustatud failidest',
'places.image.current': 'Praegune pilt',
'places.image.own': 'Sinu pilt',
'places.image.none': 'Pilti pole',
'places.image.needsConnection': 'Uus pilt vajab ühendust. Salvesta uuesti, kui oled võrgus.',
'places.openPhotos': 'Näita fotosid',
'places.imageUploadError': 'Pildi üleslaadimine ebaõnnestus',
'places.imageRemoveError': 'Pildi eemaldamine ebaõnnestus',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Zoom avant',
'journey.lightbox.zoomOut': 'Zoom arrière',
'journey.lightbox.zoomReset': 'Revenir à la photo entière',
'journey.lightbox.previous': 'Photo précédente',
'journey.lightbox.next': 'Photo suivante',
'journey.create': 'Créer',
'journey.titlePlaceholder': 'Où allez-vous ?',
'journey.empty': 'Aucun journal pour le moment',
+5 -4
View File
@@ -169,10 +169,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Importer une image',
'places.changeImage': "Changer l'image",
'places.removeImage': "Supprimer l'image",
'places.chooseImage': 'Choisir une image',
'places.uploadFromDevice': 'Importer depuis l’appareil',
'places.fromAttachedFiles': 'Depuis les fichiers joints',
'places.image.current': 'Image actuelle',
'places.image.own': 'Ton image',
'places.image.none': 'Pas d’image',
'places.image.needsConnection': 'Une nouvelle image a besoin d’une connexion. Enregistre à nouveau une fois en ligne.',
'places.openPhotos': 'Voir les photos',
'places.imageUploadError': "Impossible d'importer l'image",
'places.imageRemoveError': "Impossible de supprimer l'image",
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Μεγέθυνση',
'journey.lightbox.zoomOut': 'Σμίκρυνση',
'journey.lightbox.zoomReset': 'Επιστροφή σε ολόκληρη τη φωτογραφία',
'journey.lightbox.previous': 'Προηγούμενη φωτογραφία',
'journey.lightbox.next': 'Επόμενη φωτογραφία',
'journey.create': 'Δημιουργία',
'journey.titlePlaceholder': 'Πού πηγαίνετε;',
'journey.empty': 'Δεν υπάρχουν ταξίδια ακόμα',
+5 -4
View File
@@ -169,10 +169,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Μεταφόρτωση εικόνας',
'places.changeImage': 'Αλλαγή εικόνας',
'places.removeImage': 'Αφαίρεση εικόνας',
'places.chooseImage': 'Επιλογή εικόνας',
'places.uploadFromDevice': 'Μεταφόρτωση από τη συσκευή',
'places.fromAttachedFiles': 'Από συνημμένα αρχεία',
'places.image.current': 'Τρέχουσα εικόνα',
'places.image.own': 'Η εικόνα σου',
'places.image.none': 'Χωρίς εικόνα',
'places.image.needsConnection': 'Μια νέα εικόνα χρειάζεται σύνδεση. Αποθήκευσε ξανά όταν είσαι online.',
'places.openPhotos': 'Προβολή φωτογραφιών',
'places.imageUploadError': 'Δεν ήταν δυνατή η μεταφόρτωση της εικόνας',
'places.imageRemoveError': 'Δεν ήταν δυνατή η αφαίρεση της εικόνας',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Nagyítás',
'journey.lightbox.zoomOut': 'Kicsinyítés',
'journey.lightbox.zoomReset': 'Vissza a teljes fotóhoz',
'journey.lightbox.previous': 'Előző fotó',
'journey.lightbox.next': 'Következő fotó',
'journey.create': 'Létrehozás',
'journey.titlePlaceholder': 'Hová utazol?',
'journey.empty': 'Még nincsenek útinaplók',
+5 -4
View File
@@ -168,10 +168,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Kép feltöltése',
'places.changeImage': 'Kép módosítása',
'places.removeImage': 'Kép eltávolítása',
'places.chooseImage': 'Kép kiválasztása',
'places.uploadFromDevice': 'Feltöltés eszközről',
'places.fromAttachedFiles': 'Csatolt fájlokból',
'places.image.current': 'Jelenlegi kép',
'places.image.own': 'A te képed',
'places.image.none': 'Nincs kép',
'places.image.needsConnection': 'Új képhez kapcsolat kell. Mentsd újra, ha online vagy.',
'places.openPhotos': 'Fotók megtekintése',
'places.imageUploadError': 'Nem sikerült feltölteni a képet',
'places.imageRemoveError': 'Nem sikerült eltávolítani a képet',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Perbesar',
'journey.lightbox.zoomOut': 'Perkecil',
'journey.lightbox.zoomReset': 'Kembali ke foto utuh',
'journey.lightbox.previous': 'Foto sebelumnya',
'journey.lightbox.next': 'Foto berikutnya',
'journey.create': 'Buat',
'journey.titlePlaceholder': 'Ke mana kamu pergi?',
'journey.empty': 'Belum ada journey',
+5 -4
View File
@@ -159,10 +159,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Unggah gambar',
'places.changeImage': 'Ganti gambar',
'places.removeImage': 'Hapus gambar',
'places.chooseImage': 'Pilih gambar',
'places.uploadFromDevice': 'Unggah dari perangkat',
'places.fromAttachedFiles': 'Dari berkas terlampir',
'places.image.current': 'Gambar saat ini',
'places.image.own': 'Gambarmu',
'places.image.none': 'Tanpa gambar',
'places.image.needsConnection': 'Gambar baru butuh koneksi. Simpan lagi saat sudah online.',
'places.openPhotos': 'Lihat foto',
'places.imageUploadError': 'Tidak dapat mengunggah gambar',
'places.imageRemoveError': 'Tidak dapat menghapus gambar',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Ingrandisci',
'journey.lightbox.zoomOut': 'Riduci',
'journey.lightbox.zoomReset': 'Torna alla foto intera',
'journey.lightbox.previous': 'Foto precedente',
'journey.lightbox.next': 'Foto successiva',
'journey.create': 'Crea',
'journey.titlePlaceholder': 'Dove stai andando?',
'journey.empty': 'Nessun diario ancora',
+5 -4
View File
@@ -168,10 +168,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Carica immagine',
'places.changeImage': 'Cambia immagine',
'places.removeImage': 'Rimuovi immagine',
'places.chooseImage': 'Scegli un’immagine',
'places.uploadFromDevice': 'Carica dal dispositivo',
'places.fromAttachedFiles': 'Dai file allegati',
'places.image.current': 'Immagine attuale',
'places.image.own': 'La tua immagine',
'places.image.none': 'Nessuna immagine',
'places.image.needsConnection': 'Una nuova immagine richiede una connessione. Salva di nuovo quando sei online.',
'places.openPhotos': 'Mostra foto',
'places.imageUploadError': "Impossibile caricare l'immagine",
'places.imageRemoveError': "Impossibile rimuovere l'immagine",
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': '拡大',
'journey.lightbox.zoomOut': '縮小',
'journey.lightbox.zoomReset': '写真全体に戻す',
'journey.lightbox.previous': '前の写真',
'journey.lightbox.next': '次の写真',
'journey.create': '作成',
'journey.titlePlaceholder': 'どこへ行きますか?',
'journey.empty': '日記はまだありません',
+5 -4
View File
@@ -160,10 +160,11 @@ const places: TranslationStrings = {
'places.uploadImage': '画像をアップロード',
'places.changeImage': '画像を変更',
'places.removeImage': '画像を削除',
'places.chooseImage': '画像を選択',
'places.uploadFromDevice': 'デバイスからアップロード',
'places.fromAttachedFiles': '添付ファイルから',
'places.image.current': '現在の画像',
'places.image.own': 'あなたの画像',
'places.image.none': '画像なし',
'places.image.needsConnection': '新しい画像には接続が必要です。オンラインになってからもう一度保存してください。',
'places.openPhotos': '写真を見る',
'places.imageUploadError': '画像をアップロードできませんでした',
'places.imageRemoveError': '画像を削除できませんでした',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': '확대',
'journey.lightbox.zoomOut': '축소',
'journey.lightbox.zoomReset': '전체 사진으로 돌아가기',
'journey.lightbox.previous': '이전 사진',
'journey.lightbox.next': '다음 사진',
'journey.create': '만들기',
'journey.titlePlaceholder': '어디로 가시나요?',
'journey.empty': '아직 Journey가 없습니다',
+5 -4
View File
@@ -158,10 +158,11 @@ const places: TranslationStrings = {
'places.uploadImage': '이미지 업로드',
'places.changeImage': '이미지 변경',
'places.removeImage': '이미지 제거',
'places.chooseImage': '이미지 선택',
'places.uploadFromDevice': '기기에서 업로드',
'places.fromAttachedFiles': '첨부 파일에서',
'places.image.current': '현재 이미지',
'places.image.own': '내 이미지',
'places.image.none': '이미지 없음',
'places.image.needsConnection': '새 이미지는 연결이 필요합니다. 온라인일 때 다시 저장하세요.',
'places.openPhotos': '사진 보기',
'places.imageUploadError': '이미지를 업로드할 수 없습니다',
'places.imageRemoveError': '이미지를 제거할 수 없습니다',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Inzoomen',
'journey.lightbox.zoomOut': 'Uitzoomen',
'journey.lightbox.zoomReset': 'Terug naar de hele foto',
'journey.lightbox.previous': 'Vorige foto',
'journey.lightbox.next': 'Volgende foto',
'journey.create': 'Aanmaken',
'journey.titlePlaceholder': 'Waar ga je naartoe?',
'journey.empty': 'Nog geen reisverslagen',
+5 -4
View File
@@ -168,10 +168,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Afbeelding uploaden',
'places.changeImage': 'Afbeelding wijzigen',
'places.removeImage': 'Afbeelding verwijderen',
'places.chooseImage': 'Een afbeelding kiezen',
'places.uploadFromDevice': 'Uploaden vanaf apparaat',
'places.fromAttachedFiles': 'Uit bijgevoegde bestanden',
'places.image.current': 'Huidige afbeelding',
'places.image.own': 'Jouw afbeelding',
'places.image.none': 'Geen afbeelding',
'places.image.needsConnection': 'Een nieuwe afbeelding heeft een verbinding nodig. Sla opnieuw op zodra je online bent.',
'places.openPhotos': 'Foto’s bekijken',
'places.imageUploadError': 'Afbeelding uploaden mislukt',
'places.imageRemoveError': 'Afbeelding verwijderen mislukt',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Powiększ',
'journey.lightbox.zoomOut': 'Pomniejsz',
'journey.lightbox.zoomReset': 'Wróć do całego zdjęcia',
'journey.lightbox.previous': 'Poprzednie zdjęcie',
'journey.lightbox.next': 'Następne zdjęcie',
'journey.create': 'Utwórz',
'journey.titlePlaceholder': 'Dokąd jedziesz?',
'journey.empty': 'Brak dzienników podróży',
+5 -4
View File
@@ -184,10 +184,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Prześlij zdjęcie',
'places.changeImage': 'Zmień zdjęcie',
'places.removeImage': 'Usuń zdjęcie',
'places.chooseImage': 'Wybierz obraz',
'places.uploadFromDevice': 'Prześlij z urządzenia',
'places.fromAttachedFiles': 'Z załączonych plików',
'places.image.current': 'Bieżący obraz',
'places.image.own': 'Twój obraz',
'places.image.none': 'Bez obrazu',
'places.image.needsConnection': 'Nowy obraz wymaga połączenia. Zapisz ponownie, gdy będziesz online.',
'places.openPhotos': 'Pokaż zdjęcia',
'places.imageUploadError': 'Nie udało się przesłać zdjęcia',
'places.imageRemoveError': 'Nie udało się usunąć zdjęcia',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Увеличить',
'journey.lightbox.zoomOut': 'Уменьшить',
'journey.lightbox.zoomReset': 'Вернуться к полному фото',
'journey.lightbox.previous': 'Предыдущее фото',
'journey.lightbox.next': 'Следующее фото',
'journey.create': 'Создать',
'journey.titlePlaceholder': 'Куда вы едете?',
'journey.empty': 'Пока нет путешествий',
+5 -4
View File
@@ -184,10 +184,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Загрузить изображение',
'places.changeImage': 'Изменить изображение',
'places.removeImage': 'Удалить изображение',
'places.chooseImage': 'Выбрать изображение',
'places.uploadFromDevice': 'Загрузить с устройства',
'places.fromAttachedFiles': 'Из прикреплённых файлов',
'places.image.current': 'Текущее изображение',
'places.image.own': 'Твоё изображение',
'places.image.none': 'Без изображения',
'places.image.needsConnection': 'Для нового изображения нужно подключение. Сохрани ещё раз, когда будешь онлайн.',
'places.openPhotos': 'Показать фото',
'places.imageUploadError': 'Не удалось загрузить изображение',
'places.imageRemoveError': 'Не удалось удалить изображение',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Priblížiť',
'journey.lightbox.zoomOut': 'Oddialiť',
'journey.lightbox.zoomReset': 'Späť na celú fotku',
'journey.lightbox.previous': 'Predchádzajúca fotka',
'journey.lightbox.next': 'Ďalšia fotka',
'journey.create': 'Vytvoriť',
'journey.titlePlaceholder': 'Kam sa chystáte?',
'journey.empty': 'Zatiaľ žiadne cestovné denníky',
+5 -4
View File
@@ -177,10 +177,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Nahrať obrázok',
'places.changeImage': 'Zmeniť obrázok',
'places.removeImage': 'Odobrať obrázok',
'places.chooseImage': 'Vybrať obrázok',
'places.uploadFromDevice': 'Nahrať zo zariadenia',
'places.fromAttachedFiles': 'Z priložených súborov',
'places.image.current': 'Aktuálny obrázok',
'places.image.own': 'Tvoj obrázok',
'places.image.none': 'Bez obrázka',
'places.image.needsConnection': 'Nový obrázok potrebuje pripojenie. Ulož znova, keď budeš online.',
'places.openPhotos': 'Zobraziť fotky',
'places.imageUploadError': 'Obrázok sa nepodarilo nahrať',
'places.imageRemoveError': 'Obrázok sa nepodarilo odobrať',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Zooma in',
'journey.lightbox.zoomOut': 'Zooma ut',
'journey.lightbox.zoomReset': 'Tillbaka till hela fotot',
'journey.lightbox.previous': 'Föregående foto',
'journey.lightbox.next': 'Nästa foto',
'journey.create': 'Skapa',
'journey.titlePlaceholder': 'Vart ska du?',
'journey.empty': 'Inga journeys än',
+5 -4
View File
@@ -168,10 +168,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Ladda upp bild',
'places.changeImage': 'Byt bild',
'places.removeImage': 'Ta bort bild',
'places.chooseImage': 'Välj en bild',
'places.uploadFromDevice': 'Ladda upp från enheten',
'places.fromAttachedFiles': 'Från bifogade filer',
'places.image.current': 'Nuvarande bild',
'places.image.own': 'Din bild',
'places.image.none': 'Ingen bild',
'places.image.needsConnection': 'En ny bild behöver en anslutning. Spara igen när du är online.',
'places.openPhotos': 'Visa foton',
'places.imageUploadError': 'Det gick inte att ladda upp bilden',
'places.imageRemoveError': 'Det gick inte att ta bort bilden',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'ซูมเข้า',
'journey.lightbox.zoomOut': 'ซูมออก',
'journey.lightbox.zoomReset': 'กลับไปดูรูปเต็ม',
'journey.lightbox.previous': 'รูปก่อนหน้า',
'journey.lightbox.next': 'รูปถัดไป',
'journey.create': 'สร้าง',
'journey.titlePlaceholder': 'คุณจะไปไหน?',
'journey.empty': 'ยังไม่มีการเดินทาง',
+5 -4
View File
@@ -153,11 +153,12 @@ const places: TranslationStrings = {
'places.uploadImage': 'อัปโหลดรูปภาพ',
'places.changeImage': 'เปลี่ยนภาพ',
'places.removeImage': 'ลบรูปภาพ',
'places.chooseImage': 'เลือกรูปภาพ',
'places.uploadFromDevice': 'อัปโหลดจากอุปกรณ์',
'places.fromAttachedFiles': 'จากไฟล์แนบ',
'places.image.current': 'รูปปัจจุบัน',
'places.image.own': 'รูปของคุณ',
'places.image.none': 'ไม่มีรูป',
'places.image.needsConnection': 'รูปใหม่ต้องใช้การเชื่อมต่อ บันทึกอีกครั้งเมื่อออนไลน์',
'places.openPhotos': 'ดูรูปภาพ',
'places.imageUploadError': 'ไม่สามารถอัปโหลดภาพได้',
'places.imageRemoveError': 'ไม่สามารถลบรูปภาพได้',
'places.addToSelectedDay': 'เพิ่มในวันที่เปิดอยู่',
'places.addPlaceShort': 'สถานที่ใหม่',
'places.addToDayShort': 'เพิ่มในวัน',
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Yakınlaştır',
'journey.lightbox.zoomOut': 'Uzaklaştır',
'journey.lightbox.zoomReset': 'Fotoğrafın tamamına dön',
'journey.lightbox.previous': 'Önceki fotoğraf',
'journey.lightbox.next': 'Sonraki fotoğraf',
'journey.create': 'Oluştur',
'journey.titlePlaceholder': 'Nereye gidiyorsunuz?',
'journey.empty': 'Henüz journey yok',
+5 -4
View File
@@ -170,10 +170,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Görsel yükle',
'places.changeImage': 'Görseli değiştir',
'places.removeImage': 'Görseli kaldır',
'places.chooseImage': 'Bir görsel seç',
'places.uploadFromDevice': 'Cihazdan yükle',
'places.fromAttachedFiles': 'Ekli dosyalardan',
'places.image.current': 'Mevcut görsel',
'places.image.own': 'Senin görselin',
'places.image.none': 'Görsel yok',
'places.image.needsConnection': 'Yeni bir görsel bağlantı gerektirir. Çevrimiçi olunca yeniden kaydet.',
'places.openPhotos': 'Fotoğrafları göster',
'places.imageUploadError': 'Görsel yüklenemedi',
'places.imageRemoveError': 'Görsel kaldırılamadı',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Збільшити',
'journey.lightbox.zoomOut': 'Зменшити',
'journey.lightbox.zoomReset': 'Повернутися до всього фото',
'journey.lightbox.previous': 'Попереднє фото',
'journey.lightbox.next': 'Наступне фото',
'journey.create': 'Створити',
'journey.titlePlaceholder': 'Куди ви їдете?',
'journey.empty': 'Поки що немає подорожей',
+5 -4
View File
@@ -184,10 +184,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Завантажити зображення',
'places.changeImage': 'Змінити зображення',
'places.removeImage': 'Видалити зображення',
'places.chooseImage': 'Вибрати зображення',
'places.uploadFromDevice': 'Завантажити з пристрою',
'places.fromAttachedFiles': 'З прикріплених файлів',
'places.image.current': 'Поточне зображення',
'places.image.own': 'Твоє зображення',
'places.image.none': 'Без зображення',
'places.image.needsConnection': 'Для нового зображення потрібне з’єднання. Збережи ще раз, коли будеш онлайн.',
'places.openPhotos': 'Показати фото',
'places.imageUploadError': 'Не вдалося завантажити зображення',
'places.imageRemoveError': 'Не вдалося видалити зображення',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': 'Phóng to',
'journey.lightbox.zoomOut': 'Thu nhỏ',
'journey.lightbox.zoomReset': 'Quay lại ảnh đầy đủ',
'journey.lightbox.previous': 'Ảnh trước',
'journey.lightbox.next': 'Ảnh tiếp theo',
'journey.create': 'Tạo nên',
'journey.titlePlaceholder': 'Bạn đang đi đâu?',
'journey.empty': 'Chưa có chuyến đi nào',
+5 -4
View File
@@ -160,10 +160,11 @@ const places: TranslationStrings = {
'places.uploadImage': 'Tải ảnh lên',
'places.changeImage': 'Đổi ảnh',
'places.removeImage': 'Xóa ảnh',
'places.chooseImage': 'Chọn ảnh',
'places.uploadFromDevice': 'Tải lên từ thiết bị',
'places.fromAttachedFiles': 'Từ tệp đính kèm',
'places.image.current': 'Ảnh hiện tại',
'places.image.own': 'Ảnh của bạn',
'places.image.none': 'Không có ảnh',
'places.image.needsConnection': 'Ảnh mới cần kết nối. Hãy lưu lại khi bạn trực tuyến.',
'places.openPhotos': 'Xem ảnh',
'places.imageUploadError': 'Không thể tải ảnh lên',
'places.imageRemoveError': 'Không thể xóa ảnh',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': '放大',
'journey.lightbox.zoomOut': '縮小',
'journey.lightbox.zoomReset': '回到完整照片',
'journey.lightbox.previous': '上一張照片',
'journey.lightbox.next': '下一張照片',
'journey.create': '建立',
'journey.titlePlaceholder': '你要去哪裡?',
'journey.empty': '還沒有旅程',
+5 -4
View File
@@ -156,10 +156,11 @@ const places: TranslationStrings = {
'places.uploadImage': '上傳圖片',
'places.changeImage': '變更圖片',
'places.removeImage': '移除圖片',
'places.chooseImage': '選擇圖片',
'places.uploadFromDevice': '從裝置上傳',
'places.fromAttachedFiles': '從附加檔案選擇',
'places.image.current': '目前圖片',
'places.image.own': '你的圖片',
'places.image.none': '沒有圖片',
'places.image.needsConnection': '新圖片需要連線。連線後請再儲存一次。',
'places.openPhotos': '查看照片',
'places.imageUploadError': '無法上傳圖片',
'places.imageRemoveError': '無法刪除圖片',
};
export default places;
+2
View File
@@ -9,6 +9,8 @@ const journey: TranslationStrings = {
'journey.lightbox.zoomIn': '放大',
'journey.lightbox.zoomOut': '缩小',
'journey.lightbox.zoomReset': '恢复完整照片',
'journey.lightbox.previous': '上一张照片',
'journey.lightbox.next': '下一张照片',
'journey.create': '创建',
'journey.titlePlaceholder': '你要去哪里?',
'journey.empty': '还没有旅程',
+5 -4
View File
@@ -156,10 +156,11 @@ const places: TranslationStrings = {
'places.uploadImage': '上传图片',
'places.changeImage': '更换图片',
'places.removeImage': '移除图片',
'places.chooseImage': '选择图片',
'places.uploadFromDevice': '从设备上传',
'places.fromAttachedFiles': '从附件中选择',
'places.image.current': '当前图片',
'places.image.own': '你的图片',
'places.image.none': '无图片',
'places.image.needsConnection': '新图片需要联网。联网后请再次保存。',
'places.openPhotos': '查看照片',
'places.imageUploadError': '无法上传图片',
'places.imageRemoveError': '无法删除图片',
};
export default places;