mirror of
https://github.com/dedicatedcode/reitti.git
synced 2026-01-09 01:17:57 -05:00
1449 lines
72 KiB
Properties
1449 lines
72 KiB
Properties
# Page titles
|
|
page.title=Reitti - Your Location Timeline
|
|
statistics.page.title=Statistics - Reitti
|
|
edit-place.page.title=Edit Place - Reitti
|
|
# Navigation
|
|
nav.timeline=Timeline
|
|
nav.statistics=Statistics
|
|
nav.memories=Memories
|
|
nav.settings=Settings
|
|
nav.logout=Logout
|
|
nav.settings.tooltip=Open settings\u2026
|
|
nav.logout.tooltip=Logout
|
|
|
|
#Sorting
|
|
sort.option.startDate.newest=Start Date (Newest First)
|
|
sort.option.startDate.oldest=Start Date (Oldest First)
|
|
sort.option.title.asc=Title (A-Z)
|
|
sort.option.title.desc=Title (Z-A)
|
|
sort.option.created.newest=Created (Newest First)
|
|
sort.option.created.oldest=Created (Oldest First)
|
|
|
|
# Timeline
|
|
timeline.loading=Loading\u2026
|
|
timeline.no.data=No timeline data available for this date.
|
|
timeline.duration=Duration
|
|
timeline.distance=Distance
|
|
timeline.trip=Trip
|
|
timeline.visit=Visit
|
|
timeline.trip.transport.select=Select a transport mode
|
|
timeline.state.hide.title=Hide Timeline
|
|
timeline.state.show.title=Show Timeline
|
|
transportation.mode.WALKING.name=Walking
|
|
transportation.mode.CYCLING.name=Cycling
|
|
transportation.mode.DRIVING.name=Driving
|
|
transportation.mode.TRANSIT.name=Transit
|
|
transportation.mode.MOTORCYCLE.name=Motorcycle
|
|
transportation.mode.TRAIN.name=Train
|
|
transportation.mode.SCOOTER.name=E-Scooter
|
|
transportation.mode.AIRPLANE.name=Airplane
|
|
timeline.transport.WALKING.label=by foot
|
|
timeline.transport.CYCLING.label=by bike
|
|
timeline.transport.DRIVING.label=by car
|
|
timeline.transport.TRANSIT.label=by transit
|
|
timeline.transport.MOTORCYCLE.label=by motorcycle
|
|
timeline.transport.TRAIN.label=by train
|
|
timeline.transport.SCOOTER.label=by scooter
|
|
timeline.transport.AIRPLANE.label=by plane
|
|
timeline.transport.UNKNOWN.label=unknown
|
|
|
|
# Date picker
|
|
|
|
datepicker.state.hide.title=Hide Date Picker
|
|
datepicker.state.show.title=Show Timeline
|
|
datepicker.today=Today
|
|
datepicker.today.title=Go to today
|
|
datepicker.days.sun=Sun
|
|
datepicker.days.mon=Mon
|
|
datepicker.days.tue=Tue
|
|
datepicker.days.wed=Wed
|
|
datepicker.days.thu=Thu
|
|
datepicker.days.fri=Fri
|
|
datepicker.days.sat=Sat
|
|
datepicker.months.jan=Jan
|
|
datepicker.months.feb=Feb
|
|
datepicker.months.mar=Mar
|
|
datepicker.months.apr=Apr
|
|
datepicker.months.may=May
|
|
datepicker.months.jun=Jun
|
|
datepicker.months.jul=Jul
|
|
datepicker.months.aug=Aug
|
|
datepicker.months.sep=Sep
|
|
datepicker.months.oct=Oct
|
|
datepicker.months.nov=Nov
|
|
datepicker.months.dec=Dec
|
|
datepicker.click-to-unlock-date=Click to unlock date
|
|
datepicker.click-to-lock-date=Click to lock date
|
|
datepicker.click-to-clear-selection=Click to clear selection
|
|
datepicker.click-to-create-range=Click to create range
|
|
datepicker.click-to-expand-range-backward=Click to expand range backward
|
|
datepicker.click-to-expand-range-forward=Click to expand range forward
|
|
datepicker.click-to-adjust-range-start=Click to adjust range start
|
|
datepicker.click-to-unlock-month=Click to unlock month
|
|
datepicker.click-to-lock-month=Click to lock month
|
|
datepicker.click-to-unlock-year=Click to unlock year
|
|
datepicker.click-to-lock-year=Click to lock year
|
|
datepicker.select=Select
|
|
datepicker.to=to
|
|
|
|
# Settings sections
|
|
settings.title=Settings
|
|
settings.api.tokens=API Tokens
|
|
settings.user.management=User Management
|
|
settings.places=Places
|
|
settings.transportation-modes=Transportation Modes
|
|
settings.geocoding=Geocoding
|
|
settings.integrations=Integrations
|
|
settings.logging=Logging
|
|
settings.manage.data=Manage Data
|
|
settings.job.status=Job Status
|
|
settings.import.data=Import Data
|
|
settings.share.access=Share Access
|
|
|
|
# Countries
|
|
|
|
country.af.label=Afghanistan
|
|
country.ax.label=\u00C5land Islands
|
|
country.al.label=Albania
|
|
country.dz.label=Algeria
|
|
country.as.label=American Samoa
|
|
country.ad.label=Andorra
|
|
country.ao.label=Angola
|
|
country.ai.label=Anguilla
|
|
country.aq.label=Antarctica
|
|
country.ag.label=Antigua and Barbuda
|
|
country.ar.label=Argentina
|
|
country.am.label=Armenia
|
|
country.aw.label=Aruba
|
|
country.au.label=Australia
|
|
country.at.label=Austria
|
|
country.az.label=Azerbaijan
|
|
country.bs.label=Bahamas
|
|
country.bh.label=Bahrain
|
|
country.bd.label=Bangladesh
|
|
country.bb.label=Barbados
|
|
country.by.label=Belarus
|
|
country.be.label=Belgium
|
|
country.bz.label=Belize
|
|
country.bj.label=Benin
|
|
country.bm.label=Bermuda
|
|
country.bt.label=Bhutan
|
|
country.bo.label=Bolivia
|
|
country.bq.label=Bonaire, Sint Eustatius and Saba
|
|
country.ba.label=Bosnia and Herzegovina
|
|
country.bw.label=Botswana
|
|
country.br.label=Brazil
|
|
country.io.label=British Indian Ocean Territory
|
|
country.bn.label=Brunei Darussalam
|
|
country.bg.label=Bulgaria
|
|
country.bf.label=Burkina Faso
|
|
country.bi.label=Burundi
|
|
country.cv.label=Cabo Verde
|
|
country.kh.label=Cambodia
|
|
country.cm.label=Cameroon
|
|
country.ca.label=Canada
|
|
country.ky.label=Cayman Islands
|
|
country.cf.label=Central African Republic
|
|
country.td.label=Chad
|
|
country.cl.label=Chile
|
|
country.cn.label=China
|
|
country.cx.label=Christmas Island
|
|
country.cc.label=Cocos (Keeling) Islands
|
|
country.co.label=Colombia
|
|
country.km.label=Comoros
|
|
country.cg.label=Congo
|
|
country.cd.label=Congo (Democratic Republic of the)
|
|
country.ck.label=Cook Islands
|
|
country.cr.label=Costa Rica
|
|
country.ci.label=C\u00F4te d'Ivoire
|
|
country.hr.label=Croatia
|
|
country.cu.label=Cuba
|
|
country.cw.label=Cura\u00E7ao
|
|
country.cy.label=Cyprus
|
|
country.cz.label=Czechia
|
|
country.dk.label=Denmark
|
|
country.dj.label=Djibouti
|
|
country.dm.label=Dominica
|
|
country.do.label=Dominican Republic
|
|
country.ec.label=Ecuador
|
|
country.eg.label=Egypt
|
|
country.sv.label=El Salvador
|
|
country.gq.label=Equatorial Guinea
|
|
country.er.label=Eritrea
|
|
country.ee.label=Estonia
|
|
country.sz.label=Eswatini
|
|
country.et.label=Ethiopia
|
|
country.fk.label=Falkland Islands (Malvinas)
|
|
country.fo.label=Faroe Islands
|
|
country.fj.label=Fiji
|
|
country.fi.label=Finland
|
|
country.fr.label=France
|
|
country.gf.label=French Guiana
|
|
country.pf.label=French Polynesia
|
|
country.tf.label=French Southern Territories
|
|
country.ga.label=Gabon
|
|
country.gm.label=Gambia
|
|
country.ge.label=Georgia
|
|
country.de.label=Germany
|
|
country.gh.label=Ghana
|
|
country.gi.label=Gibraltar
|
|
country.gr.label=Greece
|
|
country.gl.label=Greenland
|
|
country.gd.label=Grenada
|
|
country.gp.label=Guadeloupe
|
|
country.gu.label=Guam
|
|
country.gt.label=Guatemala
|
|
country.gg.label=Guernsey
|
|
country.gn.label=Guinea
|
|
country.gw.label=Guinea-Bissau
|
|
country.gy.label=Guyana
|
|
country.ht.label=Haiti
|
|
country.va.label=Holy See
|
|
country.hn.label=Honduras
|
|
country.hk.label=Hong Kong
|
|
country.hu.label=Hungary
|
|
country.is.label=Iceland
|
|
country.in.label=India
|
|
country.id.label=Indonesia
|
|
country.ir.label=Iran
|
|
country.iq.label=Iraq
|
|
country.ie.label=Ireland
|
|
country.im.label=Isle of Man
|
|
country.il.label=Israel
|
|
country.it.label=Italy
|
|
country.jm.label=Jamaica
|
|
country.jp.label=Japan
|
|
country.je.label=Jersey
|
|
country.jo.label=Jordan
|
|
country.kz.label=Kazakhstan
|
|
country.ke.label=Kenya
|
|
country.ki.label=Kiribati
|
|
country.kp.label=Korea (North)
|
|
country.kr.label=Korea (South)
|
|
country.kw.label=Kuwait
|
|
country.kg.label=Kyrgyzstan
|
|
country.la.label=Laos
|
|
country.lv.label=Latvia
|
|
country.lb.label=Lebanon
|
|
country.ls.label=Lesotho
|
|
country.lr.label=Liberia
|
|
country.ly.label=Libya
|
|
country.li.label=Liechtenstein
|
|
country.lt.label=Lithuania
|
|
country.lu.label=Luxembourg
|
|
country.mo.label=Macao
|
|
country.mg.label=Madagascar
|
|
country.mw.label=Malawi
|
|
country.my.label=Malaysia
|
|
country.mv.label=Maldives
|
|
country.ml.label=Mali
|
|
country.mt.label=Malta
|
|
country.mh.label=Marshall Islands
|
|
country.mq.label=Martinique
|
|
country.mr.label=Mauritania
|
|
country.mu.label=Mauritius
|
|
country.yt.label=Mayotte
|
|
country.mx.label=Mexico
|
|
country.fm.label=Micronesia
|
|
country.md.label=Moldova
|
|
country.mc.label=Monaco
|
|
country.mn.label=Mongolia
|
|
country.me.label=Montenegro
|
|
country.ms.label=Montserrat
|
|
country.ma.label=Morocco
|
|
country.mz.label=Mozambique
|
|
country.mm.label=Myanmar
|
|
country.na.label=Namibia
|
|
country.nr.label=Nauru
|
|
country.np.label=Nepal
|
|
country.nl.label=Netherlands
|
|
country.nc.label=New Caledonia
|
|
country.nz.label=New Zealand
|
|
country.ni.label=Nicaragua
|
|
country.ne.label=Niger
|
|
country.ng.label=Nigeria
|
|
country.nu.label=Niue
|
|
country.nf.label=Norfolk Island
|
|
country.mp.label=Northern Mariana Islands
|
|
country.mk.label=North Macedonia
|
|
country.no.label=Norway
|
|
country.om.label=Oman
|
|
country.pk.label=Pakistan
|
|
country.pw.label=Palau
|
|
country.ps.label=Palestine, State of
|
|
country.pa.label=Panama
|
|
country.pg.label=Papua New Guinea
|
|
country.py.label=Paraguay
|
|
country.pe.label=Peru
|
|
country.ph.label=Philippines
|
|
country.pn.label=Pitcairn
|
|
country.pl.label=Poland
|
|
country.pt.label=Portugal
|
|
country.pr.label=Puerto Rico
|
|
country.qa.label=Qatar
|
|
country.re.label=R\u00E9union
|
|
country.ro.label=Romania
|
|
country.ru.label=Russian Federation
|
|
country.rw.label=Rwanda
|
|
country.bl.label=Saint Barth\u00E9lemy
|
|
country.sh.label=Saint Helena, Ascension and Tristan da Cunha
|
|
country.kn.label=Saint Kitts and Nevis
|
|
country.lc.label=Saint Lucia
|
|
country.mf.label=Saint Martin (French part)
|
|
country.pm.label=Saint Pierre and Miquelon
|
|
country.vc.label=Saint Vincent and the Grenadines
|
|
country.ws.label=Samoa
|
|
country.sm.label=San Marino
|
|
country.st.label=Sao Tome and Principe
|
|
country.sa.label=Saudi Arabia
|
|
country.sn.label=Senegal
|
|
country.rs.label=Serbia
|
|
country.sc.label=Seychelles
|
|
country.sl.label=Sierra Leone
|
|
country.sg.label=Singapore
|
|
country.sx.label=Sint Maarten (Dutch part)
|
|
country.sk.label=Slovakia
|
|
country.si.label=Slovenia
|
|
country.sb.label=Solomon Islands
|
|
country.so.label=Somalia
|
|
country.za.label=South Africa
|
|
country.gs.label=South Georgia and the South Sandwich Islands
|
|
country.ss.label=South Sudan
|
|
country.es.label=Spain
|
|
country.lk.label=Sri Lanka
|
|
country.sd.label=Sudan
|
|
country.sr.label=Suriname
|
|
country.sj.label=Svalbard and Jan Mayen
|
|
country.se.label=Sweden
|
|
country.ch.label=Switzerland
|
|
country.sy.label=Syrian Arab Republic
|
|
country.tw.label=Taiwan
|
|
country.tj.label=Tajikistan
|
|
country.tz.label=Tanzania
|
|
country.th.label=Thailand
|
|
country.tl.label=Timor-Leste
|
|
country.tg.label=Togo
|
|
country.tk.label=Tokelau
|
|
country.to.label=Tonga
|
|
country.tt.label=Trinidad and Tobago
|
|
country.tn.label=Tunisia
|
|
country.tr.label=Turkey
|
|
country.tm.label=Turkmenistan
|
|
country.tc.label=Turks and Caicos Islands
|
|
country.tv.label=Tuvalu
|
|
country.ug.label=Uganda
|
|
country.ua.label=Ukraine
|
|
country.ae.label=United Arab Emirates
|
|
country.gb.label=United Kingdom
|
|
country.us.label=United States
|
|
country.um.label=United States Minor Outlying Islands
|
|
country.uy.label=Uruguay
|
|
country.uz.label=Uzbekistan
|
|
country.vu.label=Vanuatu
|
|
country.ve.label=Venezuela
|
|
country.vn.label=Viet Nam
|
|
country.vg.label=Virgin Islands (British)
|
|
country.vi.label=Virgin Islands (U.S.)
|
|
country.wf.label=Wallis and Futuna
|
|
country.eh.label=Western Sahara
|
|
country.ye.label=Yemen
|
|
country.zm.label=Zambia
|
|
country.zw.label=Zimbabwe
|
|
country.unknown.label=Unknown
|
|
|
|
#Formats
|
|
format.hours_minutes={0,choice,0#|1#{0} hour|1<{0} hours} {1,choice,0#|1#and {1} minute|1<and {1} minutes}
|
|
format.minutes_only={0,choice,1#{0} minute|1<{0} minutes}
|
|
|
|
# Navigation
|
|
nav.back.to.timeline=Back to Timeline
|
|
|
|
# API Tokens
|
|
tokens.title=API Tokens
|
|
tokens.create.title=Create New Token
|
|
tokens.name.label=Token Name
|
|
tokens.name.placeholder=Enter a name for this token
|
|
tokens.table.name=Name
|
|
tokens.table.token=Token
|
|
tokens.table.created=Created
|
|
tokens.table.last.used=Last Used
|
|
tokens.table.actions=Actions
|
|
tokens.no.tokens=No API tokens found. Create one to get started.
|
|
tokens.delete.confirm=Are you sure you want to delete this token?
|
|
tokens.recent.usages.title=Recent Token Usages
|
|
tokens.recent.usages.description=Showing the last {0} token usages
|
|
tokens.usage.table.token=Token Name
|
|
tokens.usage.table.timestamp=Timestamp
|
|
tokens.usage.table.endpoint=Endpoint
|
|
tokens.usage.table.ip=IP Address
|
|
|
|
# User Management
|
|
users.title=User Management
|
|
users.existing=Existing Users
|
|
users.no.users=No users found.
|
|
users.table.username=Username
|
|
users.table.display.name=Display Name
|
|
users.table.actions=Actions
|
|
users.table.role=Role
|
|
users.current.user=(Current User)
|
|
users.add.title=Add New User
|
|
users.update.title=Update User
|
|
users.username.label=Username
|
|
users.username.placeholder=Enter username
|
|
users.display.name.label=Display Name
|
|
users.display.name.placeholder=Enter display name
|
|
users.password.label=Password
|
|
users.password.placeholder=Enter password
|
|
users.password.keep.current=Leave empty to keep the current password
|
|
users.role.label=Role
|
|
users.role.admin=Admin
|
|
users.role.user=User
|
|
users.delete.confirm=Are you sure you want to delete this user? This will delete all their data.
|
|
users.oidc.managed.message=This user is managed by an external OIDC provider. Setting Username and Display Name is disabled
|
|
users.oidc.view.profile=View external profile
|
|
users.avatar.oidc.managed=Avatar is managed by your OIDC provider and will be updated automatically.
|
|
users.color.theme.label=Color Theme
|
|
users.color.theme.description=Choose your preferred accent color for the map.
|
|
users.color.theme.reset=Reset to Default
|
|
users.color.theme.custom=Custom Color
|
|
users.color.theme.custom.input=Custom Color:
|
|
time.title=Time
|
|
time.display.mode.label=Time Display Mode
|
|
time.display.mode.default=Default
|
|
time.display.mode.geo.local=Geo Local
|
|
time.display.mode.description=Choose how times are displayed throughout the application.
|
|
time.display.mode.default.description=Default: All times are displayed in your timezone (from browser or timezone override below)
|
|
time.display.mode.geo.local.description=Geo Local: All times are displayed in the timezone where the location is
|
|
time.timezone.override.label=Timezone Override
|
|
time.timezone.override.none=Use browser timezone
|
|
time.timezone.override.description=Override your timezone instead of using the browser's detected timezone. This affects how times are displayed when using Default mode.
|
|
timeline.time.your=Your time
|
|
timeline.time.local=Local time
|
|
form.remove=Remove
|
|
users.home.location.label=Home Location
|
|
users.home.location.description=Set your home location. This location will be displayed when no data is available for the selected date.
|
|
users.home.latitude.label=Latitude
|
|
users.home.longitude.label=Longitude
|
|
users.home.latitude.placeholder=Enter latitude (-90 to 90)
|
|
users.home.longitude.placeholder=Enter longitude (-180 to 180)
|
|
users.home.location.clear=Clear
|
|
|
|
# Avatar
|
|
users.avatar.label=Profile Picture
|
|
users.avatar.upload=Choose Image
|
|
users.avatar.requirements=Max 2MB. JPEG, PNG, GIF, or WebP format.
|
|
users.avatar.delete=Remove Avatar
|
|
users.avatar.default.title=Choose a default avatar
|
|
users.avatar.custom.title=Upload a custom image
|
|
users.avatar.or=OR
|
|
users.avatar.error.to-large=Image too large. The maximum size is 2MB.
|
|
users.avatar.error.invalid-file-type=Invalid file type. Only JPEG, PNG, GIF, and WebP images are allowed.
|
|
users.avatar.error.generic=Error processing avatar file: {0}
|
|
|
|
# Custom CSS messages
|
|
users.custom.css.label=Custom CSS
|
|
users.custom.css.description=Upload a custom CSS file to personalize your interface. This will override default styles.
|
|
users.custom.css.current=Custom CSS file uploaded
|
|
users.custom.css.delete=Remove CSS
|
|
users.custom.css.requirements=Max 1MB. CSS files only (.css extension required).
|
|
users.custom.css.remove.confirm=Are you sure you want to remove the current custom CSS file?
|
|
users.custom.css.error.to-large=CSS file too large. The maximum size is 1MB.
|
|
users.custom.css.error.invalid-file-type=Invalid file type. Only CSS files are allowed.
|
|
users.custom.css.error.generic=Error processing CSS file: {0}
|
|
map.colored.preference=Show map in color
|
|
map.colored.preference.description=When enabled, the map will be displayed in full color. When disabled, the map will be shown in grayscale.
|
|
# Units
|
|
units.title=Unit System
|
|
units.metric=Metric
|
|
units.metric.description=(km, m)
|
|
units.imperial=Imperial
|
|
units.imperial.description=(mi, ft)
|
|
|
|
# Places
|
|
places.title=Significant Places
|
|
places.no.places=No significant places were found.
|
|
places.page.info=Page {0} of {1}
|
|
places.name.label=Name
|
|
places.address.label=Address
|
|
places.city.label=City
|
|
places.country.label=Country
|
|
places.category.label=Category
|
|
places.coordinates.label=Coordinates
|
|
places.address.not.available=Not available
|
|
places.category.not.categorized=Not categorized
|
|
places.geocode.button=Geocode
|
|
places.geocode.confirm=Are you sure you want to re-geocode this place? This will clear the current address and request a new one.
|
|
places.geocode.success=Place scheduled for geocoding
|
|
places.geocode.error=Error scheduling place for geocoding: {0}
|
|
places.address.placeholder=Enter address
|
|
places.geocoding.response.button=View Geocoding Response
|
|
places.geocoding.response.title=Geocoding Response for {0}
|
|
places.geocoding.response.no.data=No geocoding response is available for this place
|
|
places.geocoding.response.back=Back to Places
|
|
places.geocoding.response.provider=Provider
|
|
places.geocoding.response.status=Status
|
|
places.geocoding.response.fetched.at=Fetched At
|
|
places.geocoding.response.raw.data=Raw Data
|
|
places.geocoding.response.error.details=Error Details
|
|
places.search.placeholder=Search places...
|
|
places.edit.button=Edit
|
|
places.edit.title=Edit {0}
|
|
places.edit.details.title=Place Details
|
|
places.edit.visit.stats.title=Visit Statistics
|
|
places.edit.visit.summary=You visited {0} {1} times.
|
|
places.edit.visit.complete=You visited {0} {1} times. Your first visit was on {2} and your most recent visit was on {3}.
|
|
places.edit.no.visits=No visits recorded for this place yet.
|
|
places.polygon.remove=Remove Polygon
|
|
places.polygon.editor.subtitle=Edit Place boundaries
|
|
places.polygon.editor.instructions=Click and drag to draw a polygon around the place. Click an existing point to remove it.
|
|
places.warning.polygon.removal=The polygon boundary will be removed from this place, this may affect visit detection.
|
|
places.warning.polygon.addition=The polygon boundary will be added to this place, this may affect visit detection.
|
|
places.warning.polygon.significant_change=The polygon boundary will be significantly changed, which may affect visit detection.
|
|
places.warning.overlapping.visits=The new boundary will overlap with {0,choice,1#1 existing place|1<{0,number,integer} existing places}, which may cause visits to be reassigned between places and affect trip calculations
|
|
places.warning.overlapping.recalculation_hint=The new boundary will trigger recalulation of {0,choice,1#1 day|1<{0,number,integer} days} of data, which may take a few minutes to complete.
|
|
places.warning.general_error=An error occurred while checking the update: {0}
|
|
places.update.confirmation.message=The following changes will be made:\n\n{0}\n\nDo you want to continue?
|
|
place.type.train_station=Train Station
|
|
place.type.gas_station=Gas Station
|
|
place.type.restaurant=Restaurant
|
|
place.type.park=Park
|
|
place.type.shop=Shop
|
|
place.type.home=Home
|
|
place.type.work=Work
|
|
place.type.hospital=Hospital
|
|
place.type.school=School
|
|
place.type.airport=Airport
|
|
place.type.hotel=Hotel
|
|
place.type.bank=Bank
|
|
place.type.pharmacy=Pharmacy
|
|
place.type.gym=Gym
|
|
place.type.library=Library
|
|
place.type.church=Church
|
|
place.type.cinema=Cinema
|
|
place.type.cafe=Cafe
|
|
place.type.museum=Museum
|
|
place.type.landmark=Landmark
|
|
place.type.tourist_attraction=Tourist Attraction
|
|
place.type.historic_site=Historic Site
|
|
place.type.monument=Monument
|
|
place.type.shopping_mall=Shopping Mall
|
|
place.type.market=Market
|
|
place.type.gallery=Gallery
|
|
place.type.theater=Theater
|
|
place.type.grocery_store=Grocery Store
|
|
place.type.atm=ATM
|
|
place.type.other=Other
|
|
place.unknown.label=Unknown Place
|
|
# Forms
|
|
form.create=Create
|
|
form.update=Update
|
|
form.delete=Delete
|
|
form.select.placeholder=Select...
|
|
form.cancel=Cancel
|
|
form.save.changes=Save Changes
|
|
form.save=Save
|
|
form.previous=Previous
|
|
form.next=Next
|
|
form.refresh=Refresh
|
|
|
|
# Messages
|
|
message.success.token.created=Token created successfully
|
|
message.success.token.deleted=Token deleted successfully
|
|
message.success.user.created=User created successfully
|
|
message.success.user.updated=User updated successfully
|
|
message.success.user.deleted=User deleted successfully
|
|
message.success.place.updated=Place updated successfully
|
|
message.error.token.creation=Error creating token: {0}
|
|
message.error.token.deletion=Error deleting token: {0}
|
|
message.error.user.creation=Error creating user: {0}
|
|
message.error.user.update=Error updating user: {0}
|
|
message.error.user.deletion=Error deleting user: {0}
|
|
message.error.user.self.delete=You cannot delete your own account
|
|
message.error.place.update=Error updating place: {0}
|
|
message.relogin.required=Your username has changed to {0}. You will need to log out and log in again with your new username.
|
|
message.error.access.denied=Access denied. You don't have permission to perform this action.
|
|
|
|
# File Upload
|
|
upload.title=Import Location Data
|
|
upload.gpx.title=GPX Files
|
|
upload.gpx.description=Upload GPX files from your GPS devices or tracking apps. GPX files contain waypoints, tracks, and routes with timestamps that can be processed into your location history.
|
|
upload.google.title=Google Takeout
|
|
upload.google.description=Upload location history from Google. We support two formats:
|
|
upload.google.new.format.title=Google Timeline New Format (timeline.json)
|
|
upload.google.new.format.instructions=From your Android phone: Settings \u2192 Location \u2192 Location Services \u2192 Timeline \u2192 Export Timeline
|
|
upload.google.new.format.description=This exports a timeline.json file with your recent location data.
|
|
upload.google.new.format.ios.instructions=From iOS Google Maps: Open Google Maps \u2192 Click on your Profile \u2192 Settings \u2192 Personal content \u2192 Export Timeline Data
|
|
upload.google.android.format.title=Android Timeline (timeline.json)
|
|
upload.google.android.format.description=This exports a timeline.json file with your recent location data from Android devices.
|
|
upload.google.ios.format.title=iOS Timeline (timeline.json)
|
|
upload.google.ios.format.description=This exports a timeline.json file with your recent location data from iOS devices.
|
|
upload.google.old.format.title=Google Timeline Old Format (Records.json)
|
|
upload.google.old.format.instructions=Export your data from takeout.google.com and upload the Records.json file from the Location History folder.
|
|
upload.google.old.format.description=This contains your complete historical location data.
|
|
upload.geojson.title=GeoJSON Files
|
|
upload.geojson.description=Upload GeoJSON files containing Point features with location data. GeoJSON files should contain Point geometries with coordinates and optional timestamp properties. Supports both single Feature and FeatureCollection formats.
|
|
upload.button.gpx=Upload GPX File
|
|
upload.button.google=Upload Google Takeout
|
|
upload.button.google.timeline=Upload Timeline Data
|
|
upload.button.google.timeline.android=Upload Android Timeline Data
|
|
upload.button.google.timeline.ios=Upload iOS Timeline Data
|
|
upload.button.google.records=Upload Records Data
|
|
upload.button.geojson=Upload GeoJSON File
|
|
upload.no.files=No files selected
|
|
upload.file.empty=File is empty
|
|
upload.invalid.format=Invalid file format
|
|
upload.success=Successfully processed {0} file(s) with {1} location points
|
|
upload.error=No files were processed successfully
|
|
|
|
# Integrations
|
|
integrations.title=Integrations
|
|
integrations.no.token.warning=You need to create an API token first in the "API Tokens" tab before setting up app integrations.
|
|
integrations.token.select.label=Select API Token:
|
|
integrations.token.select.help=Choose the API token to use in the setup URLs below. The selected token will be automatically inserted into the example URLs.
|
|
integrations.data.ingestion.title=Mobile App Ingestion
|
|
integrations.data.ingestion.description=Configure mobile apps to automatically send location data to Reitti
|
|
integrations.data-stores.title=External Data Stores
|
|
integrations.data-stores.description=Configure Reitti to connect to external data storage like OwnTracks Recorder.
|
|
integrations.gpslogger.title=GPSLogger Setup
|
|
integrations.gpslogger.description=GPSLogger is a free Android app that can automatically log your location and send it to Reitti.
|
|
integrations.owntracks.title=OwnTracks Setup
|
|
integrations.owntracks.description=OwnTracks is a privacy-focused location tracking app available for iOS and Android.
|
|
integrations.setup.instructions=Setup Instructions:
|
|
integrations.photos.title=Photos
|
|
integrations.photos.description=Configure photo management integration with Immich
|
|
integrations.immich.title=Immich Integration
|
|
integrations.immich.description=Immich is a self-hosted photo and video backup solution. Connect your Immich instance to show photos taken at specific locations and dates on your timeline map.
|
|
integrations.immich.server.url=Server URL
|
|
integrations.immich.server.url.placeholder=https://your-immich-server.com
|
|
integrations.immich.api.token=API Token
|
|
integrations.immich.api.token.placeholder=Enter your Immich API token
|
|
integrations.immich.enabled=Enable Integration
|
|
integrations.immich.save=Save Configuration
|
|
integrations.immich.test.connection=Test Connection
|
|
integrations.immich.connection.success=Connection successful
|
|
integrations.immich.connection.failed=Connection failed: {0}
|
|
integrations.immich.config.saved=Immich configuration saved successfully
|
|
integrations.immich.config.error=Error saving configuration: {0}
|
|
integrations.mobile.help.title=Need Help?
|
|
integrations.mobile.help.description=For detailed setup instructions and tips, visit our comprehensive guide:
|
|
integrations.mobile.help.link.text=Mobile Integration Documentation
|
|
integrations.overland.title=Overland Setup
|
|
integrations.overland.description=Overland is a GPS logger for iOS devices that sends location data in GeoJSON format.
|
|
integrations.gpslogger.configure=Autoconfigure GPSLogger
|
|
integrations.gpslogger.configure.description=This will create a new profile 'reitti' with the configured settings and configure GPSLogger to use it.
|
|
integrations.overland.configure=Autoconfigure Overland
|
|
integrations.overland.configure.description=This will configure Overland to report location data to Reitti.
|
|
integrations.owntracks.configure=Autoconfigure Owntracks
|
|
integrations.owntracks.configure.description=This will configure Owntracks to report location data to Reitti.
|
|
|
|
# OwnTracks Recorder Integration
|
|
integrations.owntracks.recorder.title=OwnTracks Recorder Integration
|
|
integrations.owntracks.recorder.description=Connect to an OwnTracks Recorder instance to fetch location data from specific users and devices.
|
|
integrations.owntracks.recorder.base.url=Base URL
|
|
integrations.owntracks.recorder.base.url.placeholder=https://your-owntracks-recorder.com
|
|
integrations.owntracks.recorder.username=Username
|
|
integrations.owntracks.recorder.username.placeholder=Enter the username to fetch data for
|
|
integrations.owntracks.recorder.device.id=Device ID
|
|
integrations.owntracks.recorder.device.id.placeholder=Enter the device ID to fetch data for
|
|
integrations.owntracks.recorder.auth.username=Authentication Username
|
|
integrations.owntracks.recorder.auth.username.placeholder=Enter username for basic auth (optional)
|
|
integrations.owntracks.recorder.auth.password=Authentication Password
|
|
integrations.owntracks.recorder.auth.password.placeholder=Enter password for basic auth (optional)
|
|
integrations.owntracks.recorder.auth.optional=Leave empty if no authentication is needed
|
|
integrations.owntracks.recorder.enabled=Enable Integration
|
|
integrations.owntracks.recorder.save=Save Configuration
|
|
integrations.owntracks.recorder.test.connection=Test Connection
|
|
integrations.owntracks.recorder.connection.success=The connection was successful.
|
|
integrations.owntracks.recorder.connection.failed=Connection failed: {0}
|
|
integrations.owntracks.recorder.config.saved=OwnTracks Recorder configuration saved successfully
|
|
integrations.owntracks.recorder.config.error=Error saving configuration: {0}
|
|
integrations.owntracks.recorder.load.historical=Load Historical Data
|
|
integrations.owntracks.recorder.load.historical.confirm=This will fetch all available historical data from the OwnTracks Recorder. This may take some time. Continue?
|
|
integrations.owntracks.recorder.load.historical.success=Historical data loading started successfully
|
|
integrations.owntracks.recorder.load.historical.error=Failed to load historical data: {0}
|
|
integrations.owntracks.recorder.config.deleted=OwnTracks Recorder configuration deleted successfully
|
|
integrations.owntracks.recorder.config.delete.error=Error deleting configuration: {0}
|
|
integrations.tracking.frequency.title=\uD83D\uDCCD GPS Tracking Frequency
|
|
integrations.tracking.frequency.description=For optimal results, Reitti works best with a continuous stream of GPS locations. Make sure your tracking app records a point at least every 30 seconds to ensure accurate visit and trip detection.
|
|
|
|
# Reitti Shared Instances Integration
|
|
integrations.shared.instances.title=Shared Instances
|
|
integrations.shared.instances.description=Connect to other Reitti instances to share location data with friends, family, or colleagues. This allows you to view their location data alongside yours on the timeline map.
|
|
integrations.reitti.title=Reitti Instance Integration
|
|
integrations.reitti.description=Connect to a local or remote Reitti instance to access another user's location data.
|
|
integrations.reitti.url=Instance URL
|
|
integrations.reitti.url.placeholder=https://reitti.example.com
|
|
integrations.reitti.token=API Token
|
|
integrations.reitti.token.placeholder=Enter the API token for the remote instance
|
|
integrations.reitti.color=Color
|
|
integrations.reitti.color.description=Choose a color to identify this integration on the map
|
|
integrations.reitti.enabled=Enable Integration
|
|
integrations.reitti.save=Save Configuration
|
|
integrations.reitti.test.connection=Test Connection
|
|
integrations.reitti.connection.success=Connection successful - Connected to Reitti instance
|
|
integrations.reitti.connection.failed=Connection failed: {0}
|
|
integrations.reitti.config.saved=Reitti integration saved successfully
|
|
integrations.reitti.config.error=Error saving configuration: {0}
|
|
integrations.reitti.config.deleted=Reitti integration deleted successfully
|
|
integrations.reitti.config.delete.error=Error deleting configuration: {0}
|
|
integrations.reitti.no.integrations=No Reitti integrations configured.
|
|
integrations.reitti.table.url=Instance URL
|
|
integrations.reitti.table.enabled=Enabled
|
|
integrations.reitti.table.status=Status
|
|
integrations.reitti.table.last.used=Last Used
|
|
integrations.reitti.table.color=Color
|
|
integrations.reitti.table.actions=Actions
|
|
integrations.reitti.status.enabled=Enabled
|
|
integrations.reitti.status.disabled=Disabled
|
|
integrations.reitti.status.ACTIVE.name=Active
|
|
integrations.reitti.status.RECOVERABLE.name=Failed (Recoverable)
|
|
integrations.reitti.status.DISABLED.name=Disabled
|
|
integrations.reitti.status.FAILED.name=Failed
|
|
integrations.reitti.never.used=Never
|
|
integrations.reitti.enable=Enable
|
|
integrations.reitti.disable=Disable
|
|
integrations.reitti.delete.confirm=Are you sure you want to delete this Reitti integration?
|
|
integrations.reitti.add.title=Add New Reitti Integration
|
|
integrations.reitti.edit.title=Edit Reitti Integration
|
|
integrations.reitti.info=Info
|
|
integrations.reitti.info.title=Remote Instance Information
|
|
integrations.reitti.update=Update Configuration
|
|
integrations.reitti.test.missing.fields=Please fill in both Instance URL and API Token
|
|
integrations.reitti.test.loading=Testing connection...
|
|
integrations.reitti.test.failed=Connection test failed
|
|
integrations.reitti.info.server.title=Server Information
|
|
integrations.reitti.info.server.name=Name:
|
|
integrations.reitti.info.server.version=Version:
|
|
integrations.reitti.info.server.time=System Time:
|
|
integrations.reitti.info.user.title=User Information
|
|
integrations.reitti.info.user.username=Username:
|
|
integrations.reitti.info.user.displayname=Display Name:
|
|
integrations.reitti.info.user.id=User ID:
|
|
integrations.reitti.info.user.version=Version:
|
|
integrations.reitti.info.connection.success=Connection successful!
|
|
integrations.reitti.info.connection.access=You can access this user's location data.
|
|
|
|
|
|
# No API Token
|
|
integrations.no.token.title=\u26A0\uFE0F No API Token Available
|
|
|
|
# Common labels
|
|
integrations.download=Download:
|
|
integrations.homepage=Homepage:
|
|
|
|
# GPSLogger setup steps
|
|
integrations.gpslogger.step1=Download GPSLogger from the Google Play Store
|
|
integrations.gpslogger.step2=Open GPSLogger and go to <strong>Logging details \u2192 Log to custom URL</strong>
|
|
integrations.gpslogger.step3=Enable "Log to custom URL"
|
|
integrations.gpslogger.step4.with.token=Set the URL to: <code>{0}</code>
|
|
integrations.gpslogger.step4.without.token=Set the URL to: <code>{0}</code>
|
|
integrations.gpslogger.step5=Set HTTP Method to <strong>POST</strong>
|
|
integrations.gpslogger.step6=Set HTTP Body to:
|
|
integrations.gpslogger.step7=Set HTTP header to: <code>Content-Type: application/json</code>
|
|
integrations.gpslogger.step8=Start logging!
|
|
|
|
# OwnTracks setup steps
|
|
integrations.owntracks.step1=Download OwnTracks from the App Store or Google Play Store
|
|
integrations.owntracks.step2=Open OwnTracks and go to <strong>Settings \u2192 Connection</strong>
|
|
integrations.owntracks.step3=Set Mode to <strong>HTTP</strong>
|
|
integrations.owntracks.step4.with.token=Set the Endpoint to: <code>{0}</code>
|
|
integrations.owntracks.step4.without.token=Set the Endpoint to: <code>{0}</code>
|
|
integrations.owntracks.step5=Disable <strong>Authentication</strong> (we use the token in the URL instead)
|
|
integrations.owntracks.step6=Configure tracking settings as desired. Make sure that Owntracks records a point at least every 30 seconds.
|
|
integrations.owntracks.step7=On the map view, set tracking mode to "Movement"
|
|
integrations.owntracks.step8=The app will automatically start sending location updates
|
|
|
|
# Overland setup steps
|
|
integrations.overland.step1=Install Overland
|
|
integrations.overland.step2=Open Overland and go to the <strong>Settings</strong> tab
|
|
integrations.overland.step3=<strong>Important:</strong> Tap the <strong>Request Permission</strong> button to grant location access - Overland will not track anything without this permission
|
|
integrations.overland.step4=Tap on <strong>Receiver Endpoint</strong>
|
|
integrations.overland.step5.with.token=Set the Endpoint URL to: <code>{0}</code>
|
|
integrations.overland.step5.without.token=Set the Endpoint URL to: <code>{0}</code>
|
|
integrations.overland.step6=Leave the <strong>Device ID</strong> field empty or set a custom identifier
|
|
integrations.overland.step7=Leave the <strong>Access Token</strong> field empty (we use the token in the URL)
|
|
integrations.overland.step8=Configure tracking settings:<ul><li><strong>Desired Accuracy:</strong> Best (for high accuracy) or 100m (for battery saving)</li><li><strong>Points per Batch:</strong> 50-200 (lower for unreliable connections)</li><li><strong>Significant Location:</strong> Disabled for continuous tracking</li></ul>
|
|
integrations.overland.step9=Go to the <strong>Tracker</strong> tab and turn tracking <strong>On</strong>
|
|
integrations.overland.step10=Adjust the sending interval slider (1 second to 30 minutes)
|
|
integrations.overland.step11=The app will start sending location data automatically
|
|
|
|
# OwnTracks Recorder test messages
|
|
integrations.owntracks.recorder.test.missing.fields=Please fill in Base URL, Username, and Device ID
|
|
integrations.owntracks.recorder.test.loading=Testing connection...
|
|
integrations.owntracks.recorder.test.failed=Connection test failed
|
|
integrations.owntracks.recorder.loading.historical=Loading Historical Data...
|
|
form.edit=Edit
|
|
form.close=Close
|
|
|
|
# Job Status
|
|
jobs.title=Job Status
|
|
jobs.refresh=Refresh Status
|
|
jobs.estimated.time=Est. processing time: {0}
|
|
|
|
# Queue Descriptions
|
|
queue.location.data.name=Location Data Processing
|
|
queue.location.data.description=Processing raw location points from mobile apps and external sources
|
|
queue.stay.detection.name=Visit Detection
|
|
queue.stay.detection.description=Analyzing location data to detect visits and stays at significant places
|
|
queue.merge.visit.name=Visit Merging
|
|
queue.merge.visit.description=Merging related visits and optimizing visit boundaries
|
|
queue.significant.place.name=Place Processing
|
|
queue.significant.place.description=Creating and updating significant places from detected visits
|
|
queue.detect.trip.name=Trip Detection
|
|
queue.detect.trip.description=Analyzing movement patterns to detect trips between locations
|
|
queue.user.event.name=User Events
|
|
queue.user.event.description=Processing user-triggered events and notifications
|
|
|
|
# Data Management
|
|
data.title=Manage Data
|
|
data.about.title=About Data Processing
|
|
data.about.description=This section allows you to manually trigger data processing operations. These operations normally run automatically on a schedule, but you can trigger them manually here if needed.
|
|
data.about.warning=Manual processing may take some time depending on the amount of data to process.
|
|
data.process.visits.title=Process Visits and Trips
|
|
data.process.visits.description=Manually trigger the processing of raw location data into visits and trips. This will analyze unprocessed location points and create meaningful visits and trips from them.
|
|
data.process.visits.button=Start Processing
|
|
data.process.visits.confirm=Are you sure you want to start processing? This may take some time.
|
|
data.process.success=Processing started successfully. Check the Job Status tab to monitor progress.
|
|
data.process.error=Error starting processing: {0}
|
|
data.clear.reprocess.title=Clear and Reprocess All Data
|
|
data.clear.reprocess.description=Clear all processed data (visits, trips, processed visits) while preserving significant places and raw location points. Raw location points will be marked as unprocessed and the processing pipeline will be triggered automatically.
|
|
data.clear.reprocess.warning=This action will permanently delete all visits, trips, and processed visits. This cannot be undone.
|
|
data.clear.reprocess.button=Clear and Reprocess
|
|
data.clear.reprocess.confirm=Are you sure you want to clear all processed data and reprocess? This will permanently delete all visits, trips, and processed visits. This cannot be undone.
|
|
data.clear.reprocess.success=Data cleared successfully and reprocessing started. Check the Job Status tab to monitor progress.
|
|
data.clear.reprocess.error=Error clearing and reprocessing data: {0}
|
|
data.remove.all.title=Remove All Data
|
|
data.remove.all.description=Remove all data except significant places. This will permanently delete all raw location points, visits, trips, and processed visits while preserving your significant places.
|
|
data.remove.all.warning=This action will permanently delete ALL location data except significant places. This cannot be undone.
|
|
data.remove.all.button=Remove All Data
|
|
data.remove.all.confirm=Are you sure you want to remove ALL data except significant places? This action cannot be undone.
|
|
data.remove.all.success=All data except significant places has been removed successfully
|
|
data.remove.all.error=Error removing data: {0}
|
|
|
|
# Geocoding
|
|
geocoding.title=Geocoding Services
|
|
geocoding.about.title=About Geocoding Services
|
|
geocoding.about.description=Geocoding services convert coordinates to addresses for your significant places. You can add multiple services and the system will use them randomly to distribute the load.
|
|
geocoding.about.format=Make sure that the geocoding service answers with GeoJson. This is the only supported response.
|
|
geocoding.url.placeholders=URL Template placeholders:
|
|
geocoding.placeholder.lat={lat} - Will be replaced with latitude
|
|
geocoding.placeholder.lng={lng} - Will be replaced with longitude
|
|
geocoding.example=Example:
|
|
geocoding.add.title=Add New Geocoding Service
|
|
geocoding.service.name=Service Name
|
|
geocoding.service.name.placeholder=Enter a name for the service
|
|
geocoding.service.url=URL Template
|
|
geocoding.available.services=Available Services
|
|
geocoding.no.services=No geocoding services configured.
|
|
geocoding.table.name=Name
|
|
geocoding.table.url=URL Template
|
|
geocoding.table.status=Status
|
|
geocoding.table.errors=Errors
|
|
geocoding.table.last.used=Last Used
|
|
geocoding.table.actions=Actions
|
|
geocoding.status.enabled=Enabled
|
|
geocoding.status.disabled=Disabled
|
|
geocoding.auto.disabled=(Auto-disabled)
|
|
geocoding.never.used=Never
|
|
geocoding.enable=Enable
|
|
geocoding.disable=Disable
|
|
geocoding.reset.errors=Reset Errors
|
|
geocoding.delete.confirm=Are you sure you want to delete this geocoding service?
|
|
|
|
# Geocoding Execution
|
|
geocoding.execution.title=Geocoding Execution
|
|
geocoding.execution.description=Manually trigger geocoding operations for your significant places
|
|
geocoding.run.title=Run Geocoding
|
|
geocoding.run.description=Process all significant places that haven't been geocoded yet
|
|
geocoding.run.button=Schedule Geocoding
|
|
geocoding.run.confirm=Are you sure you want to start geocoding for unprocessed places?
|
|
geocoding.clear.title=Clear and Re-geocode All
|
|
geocoding.clear.description=Clear all existing geocoding data and re-process all significant places
|
|
geocoding.clear.warning=This will clear all existing address information and re-geocode all places
|
|
geocoding.clear.button=Clear and Re-geocode
|
|
geocoding.clear.confirm=Are you sure you want to clear all geocoding data and re-process all places? This will remove all existing address information.
|
|
geocoding.run.success=Geocoding started successfully for {0} places
|
|
geocoding.clear.success=Cleared geocoding data and started re-processing for {0} places
|
|
geocoding.run.error=Error starting geocoding: {0}
|
|
geocoding.clear.error=Error clearing and starting geocoding: {0}
|
|
geocoding.no.places=No places found to geocode
|
|
|
|
# Language selection
|
|
language.select=Select Language
|
|
language.title=Language Settings
|
|
language.description=Choose your preferred language for the application interface. You may need to reload the page for all changes to take effect.
|
|
language.english=English
|
|
language.finnish=Finnish
|
|
language.german=German
|
|
language.french=French
|
|
language.russian=Russian
|
|
language.brazilian_portuguese=Portuguese (Brazil)
|
|
language.polish=Polish
|
|
language.chinese=Chinese
|
|
|
|
# Login page
|
|
login.invalid.credentials=Invalid username or password
|
|
login.username=Username
|
|
login.password=Password
|
|
login.remember.me=Remember me
|
|
login.button=Login
|
|
login.oauth.button=Log in with OAuth
|
|
|
|
# Additional messages
|
|
message.success.geocode.created=Geocode service created successfully
|
|
message.error.geocode.creation=Error creating geocode service: {0}
|
|
message.success.language.changed=Language changed successfully
|
|
message.error.language.change=Error changing language: {0}
|
|
|
|
# About Section
|
|
settings.about=About
|
|
about.title=Version Information
|
|
about.app.version=Application Version:
|
|
about.git.branch=Git Branch:
|
|
about.git.commit.details=Commit Details:
|
|
about.build.time=Build Time:
|
|
about.not.available=N/A
|
|
|
|
# Statistics
|
|
statistics.title=Statistics
|
|
statistics.overall=Overall
|
|
statistics.title.overall=Overall Statistics
|
|
statistics.title.year=Statistics for {0}
|
|
statistics.title.month-year=Statistics for {0} {1}
|
|
statistics.top.places=Top Places by Stay Time
|
|
statistics.place=Place
|
|
statistics.total.hours=Total Hours
|
|
statistics.visits=Visits
|
|
statistics.transport.distance=Distance by Transport Mode
|
|
statistics.transport.mode=Transport Mode
|
|
statistics.distance.km=Distance (km)
|
|
statistics.trips=Trips
|
|
statistics.monthly.breakdown=Monthly Breakdown
|
|
statistics.daily.breakdown=Daily Breakdown
|
|
statistics.transport.distribution=Transport Distribution
|
|
statistics.no.data=No data available
|
|
|
|
# Month names for statistics
|
|
month.1=January
|
|
month.2=February
|
|
month.3=March
|
|
month.4=April
|
|
month.5=May
|
|
month.6=June
|
|
month.7=July
|
|
month.8=August
|
|
month.9=September
|
|
month.10=October
|
|
month.11=November
|
|
month.12=December
|
|
|
|
|
|
# SSE Events
|
|
sse.error.connection-lost=Connection to server lost! Try reconnecting \u2026
|
|
# Map
|
|
map.auto-update.latest-location=Latest location
|
|
map.auto-update.enable.title=Enter Auto-Update Mode
|
|
map.auto-update.disable.title=Leave Auto-Update Mode
|
|
map.fullscreen.toggle.title=Toggle Fullscreen
|
|
|
|
# Export Data
|
|
export.title=Export Data
|
|
export.date.range=Date Range
|
|
export.start.date=Start Date
|
|
export.end.date=End Date
|
|
export.gpx.button=Export as GPX
|
|
export.gpx.relevant=Export only data relevant processing?
|
|
export.raw.data.title=Raw Location Data
|
|
export.raw.data.table.timestamp=Timestamp
|
|
export.raw.data.table.latitude=Latitude
|
|
export.raw.data.table.longitude=Longitude
|
|
export.raw.data.table.accuracy=Accuracy (m)
|
|
export.raw.data.table.processed=Processed
|
|
export.raw.data.no.data=No location data found for the selected date range
|
|
export.raw.data.loading=Loading location data...
|
|
export.raw.data.showing=Showing {0} - {1} of {2}
|
|
export.raw.data.show=Show:
|
|
export.raw.data.previous=Previous
|
|
export.raw.data.next=Next
|
|
export.raw.data.page.info=Page {0} of {1}
|
|
export.gpx.success=GPX file exported successfully
|
|
export.gpx.error=Error exporting GPX file: {0}
|
|
|
|
|
|
# Generic Labels
|
|
label.warning=Warning:
|
|
label.info=Info:
|
|
# Error Pages
|
|
error.page.title=Error - Reitti
|
|
error.title=Oops! Something went wrong
|
|
error.generic.message=An unexpected error occurred. Please try again later.
|
|
error.technical.details=Technical Details
|
|
error.action.home=Go Home
|
|
error.action.back=Go Back
|
|
error.action.retry=Try Again
|
|
|
|
# Memory validation
|
|
memory.creation.error=Error creating your memory: {0}
|
|
memory.validation.start.date.required=Start date is required
|
|
memory.validation.end.date.required=End date is required
|
|
memory.validation.end.date.before.start=End date cannot be before start date
|
|
memory.validation.title.required=Title is required
|
|
memory.validation.date.future=Dates cannot be in the future
|
|
|
|
|
|
share-access.title=Share Access
|
|
magic.links.title=Magic Links
|
|
magic.links.no.tokens=No magic links found. Create one to get started.
|
|
magic.links.new.token.title=New Magic Link Created
|
|
magic.links.new.token.description=Your magic link has been created successfully. Copy the link below and save it securely, it will not be shown again!
|
|
magic.links.new.token.name=Link Name:
|
|
magic.links.new.token.url=Magic Link URL:
|
|
magic.links.new.token.value=Token Only:
|
|
magic.links.new.token.warning=\u26A0\uFE0F Save this link now, you won't be able to see it again!
|
|
magic.links.table.name=Name
|
|
magic.links.table.access.level=Access Level
|
|
magic.links.table.created=Created
|
|
magic.links.table.expiry=Expires
|
|
magic.links.table.last.used=Last Used
|
|
magic.links.table.actions=Actions
|
|
magic.links.name.label=Link Name
|
|
magic.links.name.placeholder=e.g., Share with John
|
|
magic.links.access.level.label=Access Level
|
|
magic.links.access.level.full_access=Full Access
|
|
magic.links.access.level.only_live=Live Data Only
|
|
magic.links.access.level.only_live_with_photos=Live Data Only + Photos
|
|
magic.links.access.level.only_last_location=Latest Location only
|
|
magic.links.access.level.memory_view_only=View Memory
|
|
magic.links.access.level.memory_edit_access=View and Edit Memory
|
|
magic.links.expiry.days.label=Expiry (Days)
|
|
magic.links.expiry.days.placeholder=e.g., 30
|
|
magic.links.expiry.days.help=Leave empty for no expiration
|
|
magic.links.never.expires=Never
|
|
magic.links.never.used=Never
|
|
magic.links.delete.confirm=Are you sure you want to delete this magic link? This action cannot be undone.
|
|
magic.links.created.success=Magic link created successfully. Save the link below, it won't be shown again!
|
|
magic.links.create.error=Failed to create magic link: {0}
|
|
magic.links.deleted.success=Magic link deleted successfully
|
|
magic.links.delete.error=Failed to delete magic link: {0}
|
|
magic.links.expiry.date.label=Expiry Date
|
|
magic.links.expiry.date.help=Leave empty for permanent access (link never expires)
|
|
magic.links.invalid.date=Invalid date format
|
|
share-with.title=Share with other Users
|
|
share-with.no.users=No other users found to share with.
|
|
share-with.users.title=Share with Users
|
|
share-with.users.description=Select users you want to share your location data with. They will be able to view your timeline and location history.
|
|
share-with.enable=Share
|
|
share-with.updated.success=User sharing updated successfully
|
|
share-with.update.error=Error updating user sharing: {0}
|
|
share-with.info.title=About User Sharing
|
|
share-with.info.description=When you share your data with other users, they will be able to view your location timeline and history alongside their own data. This is useful for families or teams who want to coordinate and share location information.
|
|
share-with.info.permissions.title=What They Can See
|
|
share-with.info.permissions.timeline=Your complete location timeline and history
|
|
share-with.info.permissions.places=Your significant places and visits
|
|
share-with.info.permissions.trips=Your trips and movement patterns
|
|
share-with.info.privacy.title=Privacy Notes
|
|
share-with.info.privacy.mutual=Sharing is not mutual, they need to separately share their data with you
|
|
share-with.info.privacy.revoke=You can revoke access at any time by unchecking the user
|
|
share-with.info.privacy.immediate=Changes take effect immediately
|
|
share-with.button.selected=Sharing enabled
|
|
share-with.button.unselected=Click to share
|
|
shared-with-me.title=Users Sharing with Me
|
|
shared-with-me.description=These users have shared their location data with you. You can customize the color used to display their data on your timeline.
|
|
shared-with-me.table.user=User
|
|
shared-with-me.table.color=Color
|
|
shared-with-me.table.shared.since=Shared Since
|
|
shared-with-me.table.actions=Actions
|
|
shared-with-me.dismiss=Dismiss
|
|
shared-with-me.dismiss.confirm=Are you sure you want to dismiss this shared access? The user will need to share their data with you again if you want to see it.
|
|
shared-with-me.dismissed.success=Shared access dismissed successfully
|
|
shared-with-me.dismiss.error=Error dismissing shared access: {0}
|
|
|
|
# Visit Sensitivity Recalculation Messages
|
|
visit.sensitivity.recalculation.title=Recalculation Advised
|
|
visit.sensitivity.recalculation.message=Configuration has changed. Recalculation is highly advised for these changes to take effect on existing data, otherwise they will only affect new incoming data.
|
|
visit.sensitivity.recalculation.warning=Warning: This action will remove all existing places and recreate them according to the new settings.
|
|
visit.sensitivity.recalculation.dismiss=Dismiss
|
|
visit.sensitivity.recalculation.start=Start Recalculation
|
|
visit.sensitivity.recalculation.starting=Starting Recalculation\u2026
|
|
visit.sensitivity.recalculation.confirm=Are you sure you want to start recalculation? This may take some time depending on the amount of data to process.
|
|
visit.sensitivity.recalculation.started=Recalculation started successfully. Check the Job Status tab to monitor progress.
|
|
visit.sensitivity.recalculation.dismissed=Recalculation advice dismissed.
|
|
visit.sensitivity.recalculation.error=Error starting recalculation: {0}
|
|
visit.sensitivity.level.very-low=Very Low
|
|
visit.sensitivity.level.low=Low
|
|
visit.sensitivity.level.medium=Medium
|
|
visit.sensitivity.level.high=High
|
|
visit.sensitivity.level.very-high=Very High
|
|
# Visit Sensitivity Validation Messages
|
|
visit.sensitivity.validation.date.duplicate=A configuration already exists for this date. Please choose a different date.
|
|
visit.sensitivity.validation.save.error=Error saving configuration: {0}
|
|
magic.links.info.title=About Magic Links
|
|
magic.links.info.description=Magic links allow you to share your location data with others without requiring them to create an account. Anyone with the link can access your data according to the permissions you set.
|
|
magic.links.info.security.title=Security Considerations
|
|
magic.links.info.security.point1=Anyone with the link can access your data, treat it like a password
|
|
magic.links.info.security.point2=Links cannot be recovered if lost, you'll need to create a new one
|
|
magic.links.info.security.point3=Set expiry dates for temporary sharing to limit access duration
|
|
magic.links.info.security.point4=Delete links immediately when no longer needed
|
|
magic.links.info.security.point5=Monitor the 'Last Used' column to track access
|
|
magic.links.info.access.levels.title=Access Levels
|
|
magic.links.info.access.full.description=Complete access to all your location data and history.
|
|
magic.links.info.access.live.description=Access only to current/recent location data.
|
|
magic.links.info.access.live_with_photos.description=Access only to current/recent location data and your photos if they are shown on the map.
|
|
magic.links.info.access.only_last_location.description=Access only to the latest location on the Map.
|
|
form.clear=Clear
|
|
magic.link.error.title=Magic Link Error
|
|
magic.link.error.generic=The magic link is invalid or has expired.
|
|
magic.link.error.description=Please request a new magic link or login with your account.
|
|
magic.link.error.home=Go to Home
|
|
magic.link.error.login=Login with Account
|
|
|
|
# Data Quality
|
|
integrations.data.quality.title=Data Quality Verification
|
|
integrations.data.quality.description=Check the quality and frequency of your incoming location data to ensure optimal tracking performance.
|
|
integrations.data.quality.button=Verify Data Quality
|
|
integrations.data.quality.refresh=Refresh Data
|
|
integrations.data.quality.report.title=Data Quality Report
|
|
integrations.data.quality.overall.title=\uD83D\uDCC8 Overall Data Quality
|
|
integrations.data.quality.total.points=Total Location Points
|
|
integrations.data.quality.last.24h=Last 24 Hours
|
|
integrations.data.quality.last.7d=Last 7 Days
|
|
integrations.data.quality.avg.per.day=Average per Day
|
|
integrations.data.quality.freshness.title=\uD83D\uDD52 Data Freshness
|
|
integrations.data.quality.latest.point=Latest Point Received
|
|
integrations.data.quality.time.since=Time Since Last Point
|
|
integrations.data.quality.no.data=No data available
|
|
integrations.data.quality.tracking.title=\uD83D\uDCCD Tracking Quality
|
|
integrations.data.quality.avg.accuracy=Average Accuracy
|
|
integrations.data.quality.good.accuracy=Points with Good Accuracy (<50m)
|
|
integrations.data.quality.avg.interval=Average Interval
|
|
integrations.data.quality.recommendations.title=\uD83D\uDCA1 Recommendations
|
|
integrations.data.quality.status.actively.tracking=\u2705 Actively Tracking
|
|
integrations.data.quality.status.actively.tracking.desc=Location data is being received regularly
|
|
integrations.data.quality.status.not.tracking=\u274C Not Actively Tracking
|
|
integrations.data.quality.status.not.tracking.desc=No recent location data received
|
|
integrations.data.quality.status.good.frequency=\u2705 Good Frequency
|
|
integrations.data.quality.status.good.frequency.desc=Location points are frequent enough for accurate tracking
|
|
integrations.data.quality.status.low.frequency=\u26A0\uFE0F Low Frequency
|
|
integrations.data.quality.status.low.frequency.desc=Consider increasing tracking frequency for better accuracy
|
|
integrations.data.quality.recommendation.no.data=No location data received in the last 24 hours. Check your mobile app configuration.
|
|
integrations.data.quality.recommendation.low.frequency=Low tracking frequency detected. Consider reducing the tracking interval in your mobile app.
|
|
integrations.data.quality.recommendation.poor.accuracy=Many location points have poor accuracy. Ensure GPS is enabled and avoid tracking indoors.
|
|
integrations.data.quality.recommendation.very.poor.accuracy=Average accuracy is quite poor. Check if your device has a clear view of the sky for better GPS reception.
|
|
integrations.data.quality.recommendation.fluctuating.frequency=Tracking frequency is inconsistent. Check your mobile app settings for stable tracking intervals.
|
|
integrations.data.quality.status.fluctuating.frequency=\u26A0\uFE0F Fluctuating Frequency
|
|
integrations.data.quality.status.fluctuating.frequency.desc=Tracking intervals vary significantly, which may affect accuracy
|
|
integrations.data.quality.status.good.consistency=\u2705 Good Consistency
|
|
integrations.data.quality.status.good.consistency.desc=Tracking intervals are consistent and stable
|
|
integrations.data.quality.error=Error loading data quality information: {0}
|
|
|
|
# Visit Sensitivity Settings
|
|
visit.sensitivity.title=Visit Sensitivity
|
|
visit.sensitivity.title.description=Configure how sensitive the system is when detecting visits from your location data
|
|
visit.sensitivity.configurations=Current Configurations
|
|
visit.sensitivity.valid.since=Valid Since
|
|
visit.sensitivity.description=Description
|
|
visit.sensitivity.actions=Actions
|
|
visit.sensitivity.default.config=Default Configuration
|
|
visit.sensitivity.default.description=Applied to all data before any specific configuration
|
|
visit.sensitivity.specific.description=Applied from this date forward
|
|
visit.sensitivity.edit=Edit
|
|
visit.sensitivity.delete=Delete
|
|
visit.sensitivity.delete.confirm=Are you sure you want to delete this configuration?
|
|
visit.sensitivity.cannot.delete=Cannot delete default
|
|
visit.sensitivity.add.new=Add New Configuration
|
|
visit.sensitivity.level=Sensitivity Level
|
|
visit.sensitivity.low=Low
|
|
visit.sensitivity.high=High
|
|
visit.sensitivity.current.level=Current: Level {0}
|
|
visit.sensitivity.level.help=Low sensitivity detects fewer, longer visits. High sensitivity detects more, shorter visits. Adjust based on your tracking needs: use low for general location tracking, high for detailed movement analysis. This highly depends on how often your integration is sending data into Reitti. The smaller the interval of incoming data is,the higher should be the sensitivity level.
|
|
visit.sensitivity.valid.since.help=This configuration will apply to all location data from this date and time forward. Any data before this date will continue to use the previous configuration settings.
|
|
visit.sensitivity.default.config.note=This is the default configuration that applies to all historical data and any periods not covered by specific date configurations. Changes to this configuration will affect the processing of all your location data when reprocessing occurs.
|
|
visit.sensitivity.preview=Preview
|
|
visit.sensitivity.save=Save
|
|
visit.sensitivity.cancel=Cancel
|
|
visit.sensitivity.mode.simple=Simple
|
|
visit.sensitivity.mode.advanced=Advanced
|
|
visit.sensitivity.mode.simple.description=Use predefined sensitivity levels for easy configuration
|
|
visit.sensitivity.mode.advanced.description=Configure all parameters manually for fine-tuned control
|
|
visit.sensitivity.mode.switch.to.simple=Switch to Simple Mode
|
|
visit.sensitivity.mode.switch.to.advanced=Switch to Advanced Mode
|
|
visit.sensitivity.form.title.new=New Configuration
|
|
visit.sensitivity.form.title.edit=Edit Configuration
|
|
visit.sensitivity.form.title.default=Default Configuration
|
|
|
|
# Visit Detection Settings
|
|
visit.detection.title=Visit Detection
|
|
visit.detection.search.distance=Search Distance (meters)
|
|
visit.detection.search.distance.help=Maximum distance between location points to be considered part of the same visit. Smaller values (50-100m) detect precise locations, larger values (200-500m) group nearby locations together. Typical values: 100m for urban areas, 200m for suburban areas.
|
|
visit.detection.minimum.points=Minimum Adjacent Points
|
|
visit.detection.minimum.points.help=Minimum number of consecutive location points required to detect a visit. Higher values reduce false positives but may miss short visits. Recommended: 3-5 points for most use cases.
|
|
visit.detection.minimum.stay=Minimum Stay Time (seconds)
|
|
visit.detection.minimum.stay.help=Minimum duration to consider a location as a visit rather than just passing through. Lower values (60-300s) detect brief stops, higher values (600-1800s) only detect significant stays. Typical values: 300s (5 min) for detailed tracking, 900s (15 min) for major locations only.
|
|
visit.detection.max.merge.time=Max Merge Time Between Same Stay Points (seconds)
|
|
visit.detection.max.merge.time.help=Maximum time gap between visits to the same location before they are considered separate visits. If you leave and return to the same place within this time, it will be treated as one continuous visit. Typical values: 1800s (30 min) for brief errands, 3600s (1 hour) for longer breaks.
|
|
|
|
# Visit Merging Settings
|
|
visit.merging.title=Visit Merging
|
|
visit.merging.search.duration=Search Duration (hours)
|
|
visit.merging.search.duration.help=Time window to look for nearby visits that should be merged together. Larger values may merge visits that should remain separate, smaller values may miss related visits. Recommended: 24-72 hours for most scenarios.
|
|
visit.merging.max.merge.time=Max Merge Time Between Same Visits (seconds)
|
|
visit.merging.max.merge.time.help=Maximum time between visits to the same location before they are considered separate events. This helps merge visits that were incorrectly split due to GPS inaccuracies or brief departures. Typical values: 3600s (1 hour) for strict separation, 7200s (2 hours) for more lenient merging.
|
|
visit.merging.min.distance=Min Distance Between Visits (meters)
|
|
visit.merging.min.distance.help=Minimum distance required between visits to keep them as separate locations. Visits closer than this distance may be merged if they occur within the time window. Recommended: 50-100m for precise location separation, 200-300m for broader area grouping.
|
|
|
|
# Visit Sensitivity Preview
|
|
visit.sensitivity.preview.title=Configuration Preview
|
|
visit.sensitivity.preview.current=Current Data
|
|
visit.sensitivity.preview.new=Preview Data
|
|
visit.sensitivity.preview.date=Preview Date:
|
|
visit.sensitivity.preview.calculating=Calculating\u2026
|
|
visit.sensitivity.preview.ready=Ready
|
|
visit.sensitivity.preview.error=Ready
|
|
visit.sensitivity.preview.config.details=Configuration Details
|
|
visit.sensitivity.visit.detection=Visit Detection
|
|
visit.sensitivity.search.distance=Search Distance
|
|
visit.sensitivity.min.points=Minimum Adjacent Points
|
|
visit.sensitivity.min.stay.time=Minimum Stay Time
|
|
visit.sensitivity.visit.merging=Visit Merging
|
|
visit.sensitivity.search.duration=Search Duration
|
|
visit.sensitivity.max.merge.time=Max Merge Time
|
|
visit.sensitivity.min.distance=Min Distance
|
|
|
|
# Settings Navigation Descriptions
|
|
settings.job.status.description=Monitor the status of background processing jobs
|
|
settings.import.data.description=Upload location data from various sources like GPX files and Google Takeout
|
|
export.title.description=Export your location data in various formats
|
|
settings.api.tokens.description=Create and manage API tokens for external applications
|
|
settings.share.access.description=Create magic links to share your location data with others
|
|
settings.user.management.description=Manage user accounts and permissions (admin only)
|
|
settings.places.description=View and manage your significant places and their details
|
|
settings.transportation-modes.description=View and manage your settings for transportation mode detection
|
|
settings.geocoding.description=Configure geocoding services to convert coordinates to addresses
|
|
settings.manage.data.description=Manually trigger data processing and manage your location data
|
|
settings.integrations.description=Connect external services and mobile apps to automatically import location data
|
|
settings.about.description=View application version and build information
|
|
settings.logging.description=Configure logging levels and view logs
|
|
memory.new.page.title=New Memory - Reitti
|
|
memory.new.title=New Memory
|
|
memory.new.back.to.memories=Back to Memories
|
|
memory.form.title.label=Title *
|
|
memory.form.title.placeholder=Give your memory a title
|
|
memory.form.description.label=Description
|
|
memory.form.description.placeholder=Add a description (optional)
|
|
memory.form.start.date.label=Start Date *
|
|
memory.form.end.date.label=End Date *
|
|
memory.form.cancel=Cancel
|
|
memory.form.create=Create Memory
|
|
memory.form.update=Save Changes
|
|
memory.view.button=View Memory
|
|
memory.view.edit=Edit
|
|
memory.view.back=Back
|
|
memory.view.recalculate=Recalculate
|
|
memory.view.share=Share
|
|
memory.view.delete=Delete
|
|
memory.view.add.block=Add Block after
|
|
memory.view.add.first.block=Add your first Block
|
|
memory.view.no.blocks=No blocks yet. Add your first block to start building your memory.
|
|
memory.view.block.text.title=Text Block
|
|
memory.view.block.text.content=Content will be loaded here
|
|
memory.view.block.visit.content=Visit block
|
|
memory.view.block.trip.content=Trip block
|
|
memory.view.block.gallery.content=Image gallery
|
|
memory.view.block.cluster.duration=Took {0} hours {1} minutes. {2} hours and {3} moving.
|
|
memory.view.block.cluster_visit.duration=Spent {0} hours {1} minutes.
|
|
memory.generator.day.text=Day {0}: {1}
|
|
memory.generator.headline.text=Our Journey
|
|
memory.generator.journey_to.headline.text=Journey to {0}
|
|
memory.generator.introductory.text=What an unforgettable adventure we had! Our journey began on {0} as we set out from {1}, and for the next {2} days, we made {3}, {4} our wonderful home base. From there, we explored the heart of the region, filling our days with {5} memorable visits across {6} beautiful locations. This is the story of our time together, the places we saw, and the memories we created before returning home on {7}.
|
|
memory.generator.travel_to_accommodation.text=We set off from {0} at {1} and arrived in {2} at {3}. The total time for this part of our trip was {4}, with {5} of that spent actively traveling. Now it's time for us to relax, unpack, and prepare for what's next.
|
|
memory.generator.travel_from_accommodation.text=We set off from {0} at {1} and arrived back home in {2} at {3}. The total time for this final part of our trip was {4}, with {5} of that spent actively traveling. Our journey has concluded, and now we can look back on all the memories we've made.
|
|
memory.generator.intro_accommodation.headline=Welcome to {0}
|
|
memory.generator.intro_accommodation.text=We are officially checked in! We took a moment to appreciate the atmosphere before dealing with our luggage. It feels good to be here, and we're looking forward to exploring the immediate surroundings. This place is going to be a great home base for our trip.
|
|
memory.list.all=All
|
|
memory.block.select.type=Select Block Type
|
|
memory.block.type.text=Text
|
|
memory.block.type.text.description=Add text content with headlines and paragraphs
|
|
memory.block.type.visit=Visit
|
|
memory.block.type.visit.description=Add a location you visited during this memory
|
|
memory.block.type.trip=Trip
|
|
memory.block.type.trip.description=Add a journey or route from this memory
|
|
memory.block.type.gallery=Image Gallery
|
|
memory.block.type.gallery.description=Add a collection of photos from this memory
|
|
memory.block.cancel=Cancel
|
|
memory.block.text.new=New Text Block
|
|
memory.block.text.headline=Headline
|
|
memory.block.text.headline.placeholder=Enter headline
|
|
memory.block.text.content=Content
|
|
memory.block.text.content.placeholder=Enter your text content
|
|
memory.block.create=Create Block
|
|
memory.block.visit.new=New Visit Block
|
|
memory.block.visit.select=Select Visit
|
|
memory.block.visit.select.placeholder=Choose a visit...
|
|
memory.block.trip.new=New Trip Block
|
|
memory.block.trip.empty=There are no trips selected for this memory block.
|
|
memory.block.visit.empty=There are no visits selected for this memory block.
|
|
memory.block.trip.select=Select Trip
|
|
memory.block.trip.select.placeholder=Choose a trip...
|
|
memory.block.gallery.new=New Image Gallery Block
|
|
memory.block.gallery.edit=Edit Image Gallery Block
|
|
memory.block.gallery.immich.title=Select from Immich
|
|
memory.block.gallery.loading=Loading photos...
|
|
memory.block.gallery.selected.title=Selected Photos
|
|
memory.block.gallery.upload.title=Upload Images
|
|
memory.block.gallery.upload.choose=Choose a file or drag here
|
|
memory.block.gallery.immich.no.photos=No photos found for this date range
|
|
memory.block.gallery.pagination.previous=Previous
|
|
memory.block.gallery.pagination.next=Next
|
|
memory.block.gallery.error.no.images=Please select or upload at least one image
|
|
memory.block.gallery.error.create=Failed to create a gallery block
|
|
memory.block.gallery.remove=Remove image
|
|
memory.edit.block.title=Title
|
|
memory.edit.block.title.placeholder=Enter title
|
|
memory.edit.block.cluster.trip.title=Edit Trips Block
|
|
memory.edit.block.cluster.trip.select.trips=Select Trips
|
|
memory.edit.block.cluster.trip.selected=Selected
|
|
memory.edit.block.cluster.trip.trip=Trip
|
|
memory.edit.block.cluster.visit.title=Edit Visit Block
|
|
memory.edit.block.cluster.visit.select.visits=Select Visits
|
|
memory.edit.block.cluster.visit.selected=Selected
|
|
memory.edit.block.cluster.visit.visit=Visit
|
|
memory.form.date.error.end.before.start=The end date must be equal or after the start date.
|
|
|
|
|
|
|
|
# Memory sharing functionality
|
|
memory.share.title=Share Memory
|
|
memory.share.what.title=What will be shared?
|
|
memory.share.what.content=The complete memory with all its content blocks
|
|
memory.share.what.location=Location data and maps for the memory period
|
|
memory.share.what.photos=Photos and text content within the memory
|
|
memory.share.what.trips=Trip and visit information during this time period
|
|
memory.share.permissions.title=Choose sharing permissions:
|
|
memory.share.view.title=View Only
|
|
memory.share.view.description=Recipients can view the memory but cannot make any changes
|
|
memory.share.edit.title=Edit Access
|
|
memory.share.edit.description=Recipients can view and edit the memory, add blocks, and modify content
|
|
|
|
# Share configuration
|
|
memory.share.configure.title=Configure Share Link
|
|
memory.share.configure.sharing=Sharing
|
|
memory.share.access.view=View Only Access
|
|
memory.share.access.edit=Edit Access
|
|
memory.share.expires.label=Link expires after:
|
|
memory.share.expires.7days=7 days
|
|
memory.share.expires.30days=30 days
|
|
memory.share.expires.90days=90 days
|
|
memory.share.expires.never=Never expires
|
|
memory.share.expires.help=Choose how long the share link should remain valid
|
|
memory.share.create.button=Create Share Link
|
|
memory.share.back.button=Back
|
|
|
|
# Share result
|
|
memory.share.result.title=Share Link Created
|
|
memory.share.result.success=Share Link Created Successfully!
|
|
memory.share.result.memory=Memory:
|
|
memory.share.result.access=Access Level:
|
|
memory.share.result.link.label=Share this link:
|
|
memory.share.result.copy=Copy
|
|
memory.share.result.copied=Copied!
|
|
memory.share.result.instructions.title=How to share:
|
|
memory.share.result.instructions.copy=Copy the link above and send it to anyone you want to share with
|
|
memory.share.result.instructions.account=Recipients don't need an account to access the memory
|
|
memory.share.result.instructions.permissions=The link will work according to the permissions you've set
|
|
memory.share.result.instructions.view=Recipients can view but not edit the memory
|
|
memory.share.result.instructions.edit=Recipients can view and edit the memory
|
|
memory.share.result.done=Done
|
|
memory.share.result.another=Create Another Link
|
|
memory.processing.title=Processing Memory
|
|
memory.processing.title.creating=Creating Memory
|
|
memory.processing.step.clustering=Clustering trips and visits...
|
|
memory.processing.step.visits=Creating visit records...
|
|
memory.processing.step.accommodation=Determining accommodation...
|
|
memory.processing.step.texts=Generating texts...
|
|
memory.processing.step.images=Copying images...
|
|
memory.processing.step.counter=Step {0} of {1}
|
|
|
|
# Transportation Modes Page
|
|
transportation.modes.title=Transportation Modes
|
|
transportation.modes.all.configured=All available transportation modes have been configured.
|
|
|
|
# Table Headers
|
|
transportation.modes.table.mode=Mode
|
|
transportation.modes.table.max.kmh=Max Speed (km/h)
|
|
transportation.modes.table.actions=Actions
|
|
|
|
# Add Form
|
|
transportation.modes.add.title=Add Transportation Mode
|
|
transportation.modes.mode.label=Transportation Mode
|
|
transportation.modes.mode.select=Select a mode...
|
|
transportation.modes.max.kmh.label=Max Speed (km/h)
|
|
transportation.modes.max.placeholder=No limit
|
|
transportation.modes.max.kmh.help=Leave empty for no speed limit
|
|
transportation.modes.add.button=Add Mode
|
|
|
|
# Imperial unit labels
|
|
transportation.modes.table.max.mph=Max Speed (mph)
|
|
transportation.modes.max.mph.label=Max Speed (mph)
|
|
transportation.modes.max.mph.placeholder=No limit
|
|
transportation.modes.max.mph.help=Leave empty for no speed limit
|
|
# Metric unit labels
|
|
transportation.modes.max.kmh.placeholder=No limit
|
|
|
|
# Success Messages
|
|
transportation.modes.success.added=Transportation mode added successfully
|
|
transportation.modes.success.updated=Transportation mode updated successfully
|
|
transportation.modes.success.deleted=Transportation mode deleted successfully
|
|
|
|
# Error Messages
|
|
transportation.modes.error.already.exists=This transportation mode is already configured
|
|
transportation.modes.error.add=Failed to add transportation mode
|
|
transportation.modes.error.update=Failed to update transportation mode
|
|
transportation.modes.error.delete=Failed to delete transportation mode
|
|
transportation.modes.error.duplicate.max.kmh=A transportation mode with this max speed already exists
|
|
|
|
# Delete Confirmation
|
|
transportation.modes.delete.confirm=Are you sure you want to delete this transportation mode?
|
|
# Reclassification
|
|
transportation.modes.reclassify.title=Reclassify Trips
|
|
transportation.modes.reclassify.description=After changing your transportation mode settings, you can reclassify all existing trips to apply the new configurations.
|
|
transportation.modes.reclassify.button=Reclassify All Trips
|
|
transportation.modes.reclassify.processing=Processing...
|
|
transportation.modes.reclassify.started=Reclassification started successfully. This process will run in the background.
|
|
transportation.modes.reclassify.error=Failed to start reclassification. Please try again.
|
|
about.acknowledgments.title=Acknowledgments
|
|
about.acknowledgments.subtitle=Reitti wouldn't be possible without the amazing contributions from our community and the incredible open-source projects we build upon.
|
|
about.contributors.title=Contributors
|
|
about.translators.title=Translators
|
|
about.projects.title=Open Source Projects
|
|
about.projects.visit=Visit Project
|
|
about.thankyou.title=Thank You!
|
|
about.thankyou.message=Every contribution, no matter how small, helps make Reitti better for everyone. We're grateful for your support and dedication to the open-source community.
|
|
|
|
|
|
# Logging page translations
|
|
logging.title=Log Viewer
|
|
logging.logger.class=Logger Class
|
|
logging.logger.placeholder=Enter the logger class name or leave it empty to configure the root logger
|
|
logging.logger.help=Leave empty to configure the root (global) logger
|
|
logging.log.name=Logger Name
|
|
logging.log.level=Log Level
|
|
logging.actions=Actions
|
|
logging.level.trace=TRACE
|
|
logging.level.debug=DEBUG
|
|
logging.level.info=INFO
|
|
logging.level.warn=WARN
|
|
logging.level.error=ERROR
|
|
logging.buffer.size=Buffer Size
|
|
logging.buffer.max.size=Max buffer size: {0}
|
|
logging.update=Update
|
|
logging.configured.loggers=Configured Loggers
|
|
logging.remove=Remove
|
|
logging.confirm.remove=Are you sure you want to remove this logger configuration?
|
|
logging.autoscroll=Auto-scroll to new messages
|
|
logging.connecting=Connecting to the log stream...
|
|
logging.settings.updated=Settings updated successfully
|
|
logging.error=Error
|
|
logging.connected=Connected to the log stream
|
|
logging.connection.lost=Error: Connection to log stream lost
|
|
logging.reconnecting=Attempting to reconnect in
|
|
logging.reconnect.failed=Failed to reconnect after |