ML-236 Exposure offset for equipment profiles (#238)

* Set `targetSdkVersion ` to 35

* unified zoom icons

* expose exposure and zoom ranges

* added list tile to set exposure offset for equipment profile

* added translations

* Update metering_screen.png

* use latest m3 packages

* fixed iap stub

* added missing field
This commit is contained in:
Vadim 2025-07-09 19:27:46 +02:00 committed by GitHub
parent 02184529ed
commit dfe10493b8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 892 additions and 824 deletions

View file

@ -20,6 +20,7 @@ class EquipmentProfilesStorageService {
List<ApertureValue>? apertureValues,
List<ShutterSpeedValue>? shutterSpeedValues,
double? lensZoom,
double? exposureOffset,
bool? isUsed,
}) async {}

View file

@ -12,7 +12,7 @@ dependencies:
m3_lightmeter_resources:
git:
url: "https://github.com/vodemn/m3_lightmeter_resources"
ref: v2.1.0
ref: v2.2.0
shared_preferences:
dev_dependencies:

View file

@ -1,167 +1,169 @@
{
"@@locale": "de",
"fastestExposurePair": "Schnellstes",
"slowestExposurePair": "Langsamstes",
"ev": "EV",
"evValue": "{value} EV",
"@evValue": {
"placeholders": {
"value": {
"type": "String"
}
}
},
"iso": "ISO",
"filmSpeed": "Film Empfindlichkeit",
"nd": "ND",
"ndFilterFactor": "Neutraldichtefilter-Faktor",
"noExposurePairs": "Es gibt keine Belichtungspaare für die ausgewählten Einstellungen.",
"noCamerasDetected": "Scheinbar sind keine Kameras an das Gerät angeschlossen.",
"noCameraPermission": "Kamera-Erlaubnis nicht erteilt.",
"otherCameraError": "Beim Verbinden der Kamera ist ein Fehler aufgetreten.",
"none": "Keiner",
"cancel": "Abbrechen",
"select": "Auswählen",
"save": "Speichern",
"settings": "Einstellungen",
"metering": "Messung",
"fractionalStops": "Zwischenstufen",
"showFractionalStops": "Zwischenstufen anzeigen",
"halfStops": "1/2",
"thirdStops": "1/3",
"calibration": "Kalibration",
"calibrationMessage": "Die Genauigkeit der Messungen sind vollständig von der Hardware des Geräts abhängig. Deshalb ist es empfehlenswert diese App zu testen und EV-Kalibrationswerte einzustellen, die korrekte Messungen produzieren.",
"calibrationMessageCameraOnly": "Die Genauigkeit der Messungen sind vollständig von der Kamera des Geräts abhängig. Deshalb ist es empfehlenswert diese App zu testen und EV-Kalibrationswerte einzustellen, die korrekte Messungen produzieren.",
"camera": "Kamera",
"lightSensor": "Lichtsensor",
"showEv100": "EV\u2081\u2080\u2080 anzeigen",
"meteringScreenLayout": "Messansicht Layout",
"meteringScreenLayoutHint": "Verstecke Elemente von der Messansicht, damit sie nicht den Platz für Belichtungspaare verschwenden.",
"meteringScreenLayoutHintEquipmentProfiles": "Ausrüstungsprofil Auswahl",
"meteringScreenFeatureExtremeExposurePairs": "Schnellste & langsamste Belichtungspaare",
"meteringScreenFeatureFilmPicker": "Film Auswahl",
"cameraFeatures": "Kamerafunktionen",
"cameraFeatureSpotMetering": "Punkt-Messung",
"cameraFeatureSpotMeteringHint": "Halte die Kameraansicht gedrückt um den Messpunkt zu entfernen",
"cameraFeatureHistogram": "Histogramm",
"cameraFeatureHistogramHint": "Verwendung des Histogramms kann den Batterieverbrauch erhöhen",
"cameraFeaturesShowFocalLength": "Brennweite anzeigen",
"cameraFeaturesShowFocalLengthHint": "Zeigt die 35mm-äquivalente Brennweite statt des Zoomfaktors an",
"film": "Film",
"filmPush": "Film (push)",
"filmPull": "Film (pull)",
"filmReciprocityHint": "Korrigiert Belichtungszeiten länger als 1 Sekunde",
"equipmentProfileName": "Ausrüstungsprofilname",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "Alle",
"apertureValues": "Blend-Werte",
"apertureValuesFilterDescription": "Wähle die anzuzeigenden Blend-Werte aus. Die Werte sind normalerweise von dem verwendeten Objektiv bestimmt.",
"ndFilters": "ND Filter",
"ndFiltersFilterDescription": "Wähle die anzuzeigenden ND Filter aus. (Beispielsweise die Meistverwendeten)",
"shutterSpeedValues": "Belichtungszeiten",
"shutterSpeedValuesFilterDescription": "Wähle die anzuzeigenden Belichtungszeiten aus. Die Werte sind normalerweise von der Kamera bestimmt.",
"shutterSpeedManualShort": "B",
"shutterSpeedManual": "Manuell",
"isoValues": "ISO Werte",
"isoValuesFilterDescription": "Wähle die anzuzeigenden ISO Werte aus. (Beispielsweise die Meistverwendeten)",
"lensZoom": "Objektiv-Zoom",
"lensZoomDescription": "Wähle den Zoom, relativ zur Handykamera, dass mit dem Sucher der Kamera übereinstimmt.",
"equipmentProfile": "Ausrüstungsprofil",
"equipmentProfiles": "Ausrüstungsprofile",
"tapToAdd": "Tippe zum Hinzufügen",
"general": "Allgemein",
"keepScreenOn": "Bildschirm anbehalten",
"haptics": "Haptik",
"autostartTimer": "Timer auto-starten",
"volumeKeysAction": "Auslösen durch Lautstärketasten",
"language": "Sprache",
"chooseLanguage": "Sprache auswählen",
"theme": "Theme",
"chooseTheme": "Theme auswählen",
"themeLight": "Hell",
"themeDark": "Dunkel",
"themeSystemDefault": "Systemeinstellung",
"dynamicColor": "Dynamische Farbe",
"primaryColor": "Akzentfarbe",
"choosePrimaryColor": "Akzentfarbe auswählen",
"about": "Info",
"restorePurchases": "Käufe wiederherstellen",
"sourceCode": "Source code",
"reportIssue": "Problem melden",
"writeEmail": "Email schreiben",
"youDontHaveMailApp": "Es ist keine Email App installiert.",
"copyEmail": "Email kopieren",
"version": "Version",
"versionNumber": "{version} ({buildNumber})",
"@versionNumber": {
"placeholders": {
"version": {
"type": "String"
},
"buildNumber": {
"type": "String"
}
}
},
"proFeaturesTitle": "Lightmeter Pro",
"getPro": "Pro kaufen",
"featuresFree": "Gratis",
"featuresPro": "Pro",
"proFeaturesPromoText": "Lightmeter Pro liefert alles, was Sie brauchen, um die besten Aufnahmen zu machen!",
"proFeaturesWhatsIncluded": "Was ist enthalten?",
"featureReflectedLightMetering": "Messung von reflektiertem Licht",
"featureIncidentLightMetering": "Messung von einfallendem Licht",
"featureIsoAndNdValues": "Große Auswahl von ISO und ND Filtern",
"featureTheme": "Theme Anpassung",
"featureSpotMeteringAndHistorgram": "Spotmessung und Histogramm",
"featureFocalLength35mm": "35mm-äquivalente Brennweite statt Zoom",
"featureListOfFilms": "Liste von 20+ Filmen mit Reziprozitätsformeln",
"featureCustomFilms": "Eigene Filme erstellen",
"featureEquipmentProfiles": "Ausrüstungsprofile",
"featureTimer": "Eingebauter Timer für Langzeitbelichtungen",
"featureMeteringScreenLayout": "Anpassbare Messansicht",
"proFeaturesSupportText": "Durch den Kauf von Lightmeter Pro unterstützen Sie den Entwickler und ermöglichen das Hinzufügen weiterer Funktionen.",
"getNowFor": "Jetzt für {price} kaufen",
"@getNowFor": {
"price": {
"version": {
"type": "String"
}
}
},
"tooltipAdd": "Hinzufügen",
"tooltipClose": "Schließen",
"tooltipExpand": "Erweitern",
"tooltipCollapse": "Schrumpfen",
"tooltipCopy": "Kopieren",
"tooltipDelete": "Löschen",
"tooltipSelectAll": "Alle auswählen",
"tooltipDesecelectAll": "Keine auswählen",
"tooltipResetToZero": "Auf null zurücksetzen",
"tooltipUseLightSensor": "Lichtsensor verwenden",
"tooltipUseCamera": "Kamera verwenden",
"tooltipOpenSettings": "Einstellungen öffnen",
"exposurePair": "Belichtungspaar",
"whatsnew": "Was ist neu?",
"changesInVersion": "Änderungen in Version {version}:",
"@changesInVersion": {
"placeholders": {
"version": {
"type": "String"
}
}
},
"close": "Schließen",
"films": "Filme",
"filmsInUse": "Verwendete Filme",
"filmsCustom": "Eigene Filme",
"addFilmTitle": "Film hinzufügen",
"editFilmTitle": "Film bearbeiten",
"filmFormula": "Formel",
"filmFormulaExponential": "T=t^Rf",
"filmFormulaExponentialRf": "Rf",
"filmFormulaExponentialRfPlaceholder": "1.3",
"name": "Name",
"addEquipmentProfileTitle": "Ausrüstung hinzufügen",
"editEquipmentProfileTitle": "Ausrüstung bearbeiten"
}
"@@locale": "de",
"fastestExposurePair": "Schnellstes",
"slowestExposurePair": "Langsamstes",
"ev": "EV",
"evValue": "{value} EV",
"@evValue": {
"placeholders": {
"value": {
"type": "String"
}
}
},
"iso": "ISO",
"filmSpeed": "Film Empfindlichkeit",
"nd": "ND",
"ndFilterFactor": "Neutraldichtefilter-Faktor",
"noExposurePairs": "Es gibt keine Belichtungspaare für die ausgewählten Einstellungen.",
"noCamerasDetected": "Scheinbar sind keine Kameras an das Gerät angeschlossen.",
"noCameraPermission": "Kamera-Erlaubnis nicht erteilt.",
"otherCameraError": "Beim Verbinden der Kamera ist ein Fehler aufgetreten.",
"none": "Keiner",
"cancel": "Abbrechen",
"select": "Auswählen",
"save": "Speichern",
"settings": "Einstellungen",
"metering": "Messung",
"fractionalStops": "Zwischenstufen",
"showFractionalStops": "Zwischenstufen anzeigen",
"halfStops": "1/2",
"thirdStops": "1/3",
"calibration": "Kalibration",
"calibrationMessage": "Die Genauigkeit der Messungen sind vollständig von der Hardware des Geräts abhängig. Deshalb ist es empfehlenswert diese App zu testen und EV-Kalibrationswerte einzustellen, die korrekte Messungen produzieren.",
"calibrationMessageCameraOnly": "Die Genauigkeit der Messungen sind vollständig von der Kamera des Geräts abhängig. Deshalb ist es empfehlenswert diese App zu testen und EV-Kalibrationswerte einzustellen, die korrekte Messungen produzieren.",
"camera": "Kamera",
"lightSensor": "Lichtsensor",
"showEv100": "EV₁₀₀ anzeigen",
"meteringScreenLayout": "Messansicht Layout",
"meteringScreenLayoutHint": "Verstecke Elemente von der Messansicht, damit sie nicht den Platz für Belichtungspaare verschwenden.",
"meteringScreenLayoutHintEquipmentProfiles": "Ausrüstungsprofil Auswahl",
"meteringScreenFeatureExtremeExposurePairs": "Schnellste & langsamste Belichtungspaare",
"meteringScreenFeatureFilmPicker": "Film Auswahl",
"cameraFeatures": "Kamerafunktionen",
"cameraFeatureSpotMetering": "Punkt-Messung",
"cameraFeatureSpotMeteringHint": "Halte die Kameraansicht gedrückt um den Messpunkt zu entfernen",
"cameraFeatureHistogram": "Histogramm",
"cameraFeatureHistogramHint": "Verwendung des Histogramms kann den Batterieverbrauch erhöhen",
"cameraFeaturesShowFocalLength": "Brennweite anzeigen",
"cameraFeaturesShowFocalLengthHint": "Zeigt die 35mm-äquivalente Brennweite statt des Zoomfaktors an",
"film": "Film",
"filmPush": "Film (push)",
"filmPull": "Film (pull)",
"filmReciprocityHint": "Korrigiert Belichtungszeiten länger als 1 Sekunde",
"equipmentProfileName": "Ausrüstungsprofilname",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "Alle",
"apertureValues": "Blend-Werte",
"apertureValuesFilterDescription": "Wähle die anzuzeigenden Blend-Werte aus. Die Werte sind normalerweise von dem verwendeten Objektiv bestimmt.",
"ndFilters": "ND Filter",
"ndFiltersFilterDescription": "Wähle die anzuzeigenden ND Filter aus. (Beispielsweise die Meistverwendeten)",
"shutterSpeedValues": "Belichtungszeiten",
"shutterSpeedValuesFilterDescription": "Wähle die anzuzeigenden Belichtungszeiten aus. Die Werte sind normalerweise von der Kamera bestimmt.",
"shutterSpeedManualShort": "B",
"shutterSpeedManual": "Manuell",
"isoValues": "ISO Werte",
"isoValuesFilterDescription": "Wähle die anzuzeigenden ISO Werte aus. (Beispielsweise die Meistverwendeten)",
"lensZoom": "Objektiv-Zoom",
"lensZoomDescription": "Wähle den Zoom, relativ zur Handykamera, dass mit dem Sucher der Kamera übereinstimmt.",
"exposureOffset": "Belichtungskorrektur",
"exposureOffsetDescription": "Stellen Sie die Belichtungskorrektur ein, um die genauesten Ergebnisse für die jeweilige Kamera zu erzielen.",
"equipmentProfile": "Ausrüstungsprofil",
"equipmentProfiles": "Ausrüstungsprofile",
"tapToAdd": "Tippe zum Hinzufügen",
"general": "Allgemein",
"keepScreenOn": "Bildschirm anbehalten",
"haptics": "Haptik",
"autostartTimer": "Timer auto-starten",
"volumeKeysAction": "Auslösen durch Lautstärketasten",
"language": "Sprache",
"chooseLanguage": "Sprache auswählen",
"theme": "Theme",
"chooseTheme": "Theme auswählen",
"themeLight": "Hell",
"themeDark": "Dunkel",
"themeSystemDefault": "Systemeinstellung",
"dynamicColor": "Dynamische Farbe",
"primaryColor": "Akzentfarbe",
"choosePrimaryColor": "Akzentfarbe auswählen",
"about": "Info",
"restorePurchases": "Käufe wiederherstellen",
"sourceCode": "Source code",
"reportIssue": "Problem melden",
"writeEmail": "Email schreiben",
"youDontHaveMailApp": "Es ist keine Email App installiert.",
"copyEmail": "Email kopieren",
"version": "Version",
"versionNumber": "{version} ({buildNumber})",
"@versionNumber": {
"placeholders": {
"version": {
"type": "String"
},
"buildNumber": {
"type": "String"
}
}
},
"proFeaturesTitle": "Lightmeter Pro",
"getPro": "Pro kaufen",
"featuresFree": "Gratis",
"featuresPro": "Pro",
"proFeaturesPromoText": "Lightmeter Pro liefert alles, was Sie brauchen, um die besten Aufnahmen zu machen!",
"proFeaturesWhatsIncluded": "Was ist enthalten?",
"featureReflectedLightMetering": "Messung von reflektiertem Licht",
"featureIncidentLightMetering": "Messung von einfallendem Licht",
"featureIsoAndNdValues": "Große Auswahl von ISO und ND Filtern",
"featureTheme": "Theme Anpassung",
"featureSpotMeteringAndHistorgram": "Spotmessung und Histogramm",
"featureFocalLength35mm": "35mm-äquivalente Brennweite statt Zoom",
"featureListOfFilms": "Liste von 20+ Filmen mit Reziprozitätsformeln",
"featureCustomFilms": "Eigene Filme erstellen",
"featureEquipmentProfiles": "Ausrüstungsprofile",
"featureTimer": "Eingebauter Timer für Langzeitbelichtungen",
"featureMeteringScreenLayout": "Anpassbare Messansicht",
"proFeaturesSupportText": "Durch den Kauf von Lightmeter Pro unterstützen Sie den Entwickler und ermöglichen das Hinzufügen weiterer Funktionen.",
"getNowFor": "Jetzt für {price} kaufen",
"@getNowFor": {
"price": {
"version": {
"type": "String"
}
}
},
"tooltipAdd": "Hinzufügen",
"tooltipClose": "Schließen",
"tooltipExpand": "Erweitern",
"tooltipCollapse": "Schrumpfen",
"tooltipCopy": "Kopieren",
"tooltipDelete": "Löschen",
"tooltipSelectAll": "Alle auswählen",
"tooltipDesecelectAll": "Keine auswählen",
"tooltipResetToZero": "Auf null zurücksetzen",
"tooltipUseLightSensor": "Lichtsensor verwenden",
"tooltipUseCamera": "Kamera verwenden",
"tooltipOpenSettings": "Einstellungen öffnen",
"exposurePair": "Belichtungspaar",
"whatsnew": "Was ist neu?",
"changesInVersion": "Änderungen in Version {version}:",
"@changesInVersion": {
"placeholders": {
"version": {
"type": "String"
}
}
},
"close": "Schließen",
"films": "Filme",
"filmsInUse": "Verwendete Filme",
"filmsCustom": "Eigene Filme",
"addFilmTitle": "Film hinzufügen",
"editFilmTitle": "Film bearbeiten",
"filmFormula": "Formel",
"filmFormulaExponential": "T=t^Rf",
"filmFormulaExponentialRf": "Rf",
"filmFormulaExponentialRfPlaceholder": "1.3",
"name": "Name",
"addEquipmentProfileTitle": "Ausrüstung hinzufügen",
"editEquipmentProfileTitle": "Ausrüstung bearbeiten"
}

View file

@ -1,167 +1,169 @@
{
"@@locale": "en",
"fastestExposurePair": "Fastest",
"slowestExposurePair": "Slowest",
"ev": "EV",
"evValue": "{value} EV",
"@evValue": {
"placeholders": {
"value": {
"type": "String"
}
}
},
"iso": "ISO",
"filmSpeed": "Film sensitivity",
"nd": "ND",
"ndFilterFactor": "Neutral density filter factor",
"noExposurePairs": "There are no exposure pairs for the selected settings.",
"noCamerasDetected": "Seems like your device doesn't have any cameras connected.",
"noCameraPermission": "Camera permission is not granted.",
"otherCameraError": "An error occurred when connecting to the camera.",
"none": "None",
"cancel": "Cancel",
"select": "Select",
"save": "Save",
"settings": "Settings",
"metering": "Metering",
"fractionalStops": "Fractional stops",
"showFractionalStops": "Show fractional stops",
"halfStops": "1/2",
"thirdStops": "1/3",
"calibration": "Calibration",
"calibrationMessage": "The accuracy of the readings measured by this application depends entirely on the hardware of the device. Therefore, consider testing this application and setting up EV calibration values that will give you the desired measurement results.",
"calibrationMessageCameraOnly": "The accuracy of the readings measured by this application depends entirely on the rear camera of the device. Therefore, consider testing this application and setting up an EV calibration value that will give you the desired measurement results.",
"camera": "Camera",
"lightSensor": "Light sensor",
"showEv100": "Show EV\u2081\u2080\u2080",
"meteringScreenLayout": "Metering screen layout",
"meteringScreenLayoutHint": "Hide elements on the metering screen that you don't need so that they don't waste exposure pairs list space.",
"meteringScreenLayoutHintEquipmentProfiles": "Equipment profile picker",
"meteringScreenFeatureExtremeExposurePairs": "Fastest & shortest exposure pairs",
"meteringScreenFeatureFilmPicker": "Film picker",
"cameraFeatures": "Camera features",
"cameraFeatureSpotMetering": "Spot metering",
"cameraFeatureSpotMeteringHint": "Long press the camera view to remove metering spot",
"cameraFeatureHistogram": "Histogram",
"cameraFeatureHistogramHint": "Enabling histogram can encrease battery drain",
"cameraFeaturesShowFocalLength": "Show Focal Length",
"cameraFeaturesShowFocalLengthHint": "Displays 35mm equivalent focal length instead of zoom factor",
"film": "Film",
"filmPush": "Film (push)",
"filmPull": "Film (pull)",
"filmReciprocityHint": "Applies correction for shutter speeds greater than 1 second",
"equipmentProfileName": "Equipment profile name",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "All",
"apertureValues": "Aperture values",
"apertureValuesFilterDescription": "Select the range of aperture values to display. This is usually determined by the lens you are using.",
"ndFilters": "ND filters",
"ndFiltersFilterDescription": "Select the ND filters to display. These may be your most commonly used ND filters or the ones that fit your lens.",
"shutterSpeedValues": "Shutter speed values",
"shutterSpeedValuesFilterDescription": "Select the range of shutter speed values to display. This is usually determined by the camera body you are using.",
"shutterSpeedManualShort": "B",
"shutterSpeedManual": "Manual",
"isoValues": "ISO values",
"isoValuesFilterDescription": "Select the ISO values to display. These may be your most commonly used values or those supported by your camera.",
"lensZoom": "Lens zoom",
"lensZoomDescription": "Set the zoom level relative to the phone's camera to match your camera's viewfinder.",
"equipmentProfile": "Equipment profile",
"equipmentProfiles": "Equipment profiles",
"tapToAdd": "Tap to add",
"general": "General",
"keepScreenOn": "Keep screen on",
"haptics": "Haptics",
"autostartTimer": "Autostart timer",
"volumeKeysAction": "Shutter by volume keys",
"language": "Language",
"chooseLanguage": "Choose language",
"theme": "Theme",
"chooseTheme": "Choose theme",
"themeLight": "Light",
"themeDark": "Dark",
"themeSystemDefault": "System default",
"dynamicColor": "Dynamic color",
"primaryColor": "Primary color",
"choosePrimaryColor": "Choose primary color",
"about": "About",
"restorePurchases": "Restore purchases",
"sourceCode": "Source code",
"reportIssue": "Report an issue",
"writeEmail": "Write an email",
"youDontHaveMailApp": "You don't have any mail app installed.",
"copyEmail": "Copy email",
"version": "Version",
"versionNumber": "{version} ({buildNumber})",
"@versionNumber": {
"placeholders": {
"version": {
"type": "String"
},
"buildNumber": {
"type": "String"
}
}
},
"proFeaturesTitle": "Lightmeter Pro",
"getPro": "Get Pro",
"featuresFree": "Free",
"featuresPro": "Pro",
"proFeaturesPromoText": "Lightmeter Pro delivers everything you need to get the best shots!",
"proFeaturesWhatsIncluded": "What's included?",
"featureReflectedLightMetering": "Reflected light metering",
"featureIncidentLightMetering": "Incident light metering",
"featureIsoAndNdValues": "Wide range of ISO and ND filters values",
"featureTheme": "Theme customization",
"featureSpotMeteringAndHistorgram": "Spot metering and histogram",
"featureFocalLength35mm": "35mm equivalent focal length instead of zoom",
"featureListOfFilms": "List of 20+ films with reciprocity formulas",
"featureCustomFilms": "Ability to create custom films",
"featureEquipmentProfiles": "Equipment profiles",
"featureTimer": "Built-in timer for long exposure",
"featureMeteringScreenLayout": "Customizable main screen",
"proFeaturesSupportText": "By purchasing Lightmeter Pro you support the development and make it possible to add new features to the app.",
"getNowFor": "Get now for {price}",
"@getNowFor": {
"price": {
"version": {
"type": "String"
}
}
},
"tooltipAdd": "Add",
"tooltipClose": "Close",
"tooltipExpand": "Expand",
"tooltipCollapse": "Collapse",
"tooltipCopy": "Copy",
"tooltipDelete": "Delete",
"tooltipSelectAll": "Select all",
"tooltipDesecelectAll": "Deselect all",
"tooltipResetToZero": "Reset to zero",
"tooltipUseLightSensor": "Use lightsensor",
"tooltipUseCamera": "Use camera",
"tooltipOpenSettings": "Open settings",
"exposurePair": "Exposure pair",
"whatsnew": "What's new?",
"changesInVersion": "Changes in version {version}:",
"@changesInVersion": {
"placeholders": {
"version": {
"type": "String"
}
}
},
"close": "Close",
"films": "Films",
"filmsInUse": "Films in use",
"filmsCustom": "Custom films",
"addFilmTitle": "Add film",
"editFilmTitle": "Edit film",
"filmFormula": "Formula",
"filmFormulaExponential": "T=t^Rf",
"filmFormulaExponentialRf": "Rf",
"filmFormulaExponentialRfPlaceholder": "1.3",
"name": "Name",
"addEquipmentProfileTitle": "Add equipment",
"editEquipmentProfileTitle": "Edit equipment"
}
"@@locale": "en",
"fastestExposurePair": "Fastest",
"slowestExposurePair": "Slowest",
"ev": "EV",
"evValue": "{value} EV",
"@evValue": {
"placeholders": {
"value": {
"type": "String"
}
}
},
"iso": "ISO",
"filmSpeed": "Film sensitivity",
"nd": "ND",
"ndFilterFactor": "Neutral density filter factor",
"noExposurePairs": "There are no exposure pairs for the selected settings.",
"noCamerasDetected": "Seems like your device doesn't have any cameras connected.",
"noCameraPermission": "Camera permission is not granted.",
"otherCameraError": "An error occurred when connecting to the camera.",
"none": "None",
"cancel": "Cancel",
"select": "Select",
"save": "Save",
"settings": "Settings",
"metering": "Metering",
"fractionalStops": "Fractional stops",
"showFractionalStops": "Show fractional stops",
"halfStops": "1/2",
"thirdStops": "1/3",
"calibration": "Calibration",
"calibrationMessage": "The accuracy of the readings measured by this application depends entirely on the hardware of the device. Therefore, consider testing this application and setting up EV calibration values that will give you the desired measurement results.",
"calibrationMessageCameraOnly": "The accuracy of the readings measured by this application depends entirely on the rear camera of the device. Therefore, consider testing this application and setting up an EV calibration value that will give you the desired measurement results.",
"camera": "Camera",
"lightSensor": "Light sensor",
"showEv100": "Show EV₁₀₀",
"meteringScreenLayout": "Metering screen layout",
"meteringScreenLayoutHint": "Hide elements on the metering screen that you don't need so that they don't waste exposure pairs list space.",
"meteringScreenLayoutHintEquipmentProfiles": "Equipment profile picker",
"meteringScreenFeatureExtremeExposurePairs": "Fastest & shortest exposure pairs",
"meteringScreenFeatureFilmPicker": "Film picker",
"cameraFeatures": "Camera features",
"cameraFeatureSpotMetering": "Spot metering",
"cameraFeatureSpotMeteringHint": "Long press the camera view to remove metering spot",
"cameraFeatureHistogram": "Histogram",
"cameraFeatureHistogramHint": "Enabling histogram can encrease battery drain",
"cameraFeaturesShowFocalLength": "Show Focal Length",
"cameraFeaturesShowFocalLengthHint": "Displays 35mm equivalent focal length instead of zoom factor",
"film": "Film",
"filmPush": "Film (push)",
"filmPull": "Film (pull)",
"filmReciprocityHint": "Applies correction for shutter speeds greater than 1 second",
"equipmentProfileName": "Equipment profile name",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "All",
"apertureValues": "Aperture values",
"apertureValuesFilterDescription": "Select the range of aperture values to display. This is usually determined by the lens you are using.",
"ndFilters": "ND filters",
"ndFiltersFilterDescription": "Select the ND filters to display. These may be your most commonly used ND filters or the ones that fit your lens.",
"shutterSpeedValues": "Shutter speed values",
"shutterSpeedValuesFilterDescription": "Select the range of shutter speed values to display. This is usually determined by the camera body you are using.",
"shutterSpeedManualShort": "B",
"shutterSpeedManual": "Manual",
"isoValues": "ISO values",
"isoValuesFilterDescription": "Select the ISO values to display. These may be your most commonly used values or those supported by your camera.",
"lensZoom": "Lens zoom",
"lensZoomDescription": "Set the zoom level relative to the phone's camera to match your camera's viewfinder.",
"exposureOffset": "Exposure offset",
"exposureOffsetDescription": "Set the exposure offset to get the most accurate results for the given camera.",
"equipmentProfile": "Equipment profile",
"equipmentProfiles": "Equipment profiles",
"tapToAdd": "Tap to add",
"general": "General",
"keepScreenOn": "Keep screen on",
"haptics": "Haptics",
"autostartTimer": "Autostart timer",
"volumeKeysAction": "Shutter by volume keys",
"language": "Language",
"chooseLanguage": "Choose language",
"theme": "Theme",
"chooseTheme": "Choose theme",
"themeLight": "Light",
"themeDark": "Dark",
"themeSystemDefault": "System default",
"dynamicColor": "Dynamic color",
"primaryColor": "Primary color",
"choosePrimaryColor": "Choose primary color",
"about": "About",
"restorePurchases": "Restore purchases",
"sourceCode": "Source code",
"reportIssue": "Report an issue",
"writeEmail": "Write an email",
"youDontHaveMailApp": "You don't have any mail app installed.",
"copyEmail": "Copy email",
"version": "Version",
"versionNumber": "{version} ({buildNumber})",
"@versionNumber": {
"placeholders": {
"version": {
"type": "String"
},
"buildNumber": {
"type": "String"
}
}
},
"proFeaturesTitle": "Lightmeter Pro",
"getPro": "Get Pro",
"featuresFree": "Free",
"featuresPro": "Pro",
"proFeaturesPromoText": "Lightmeter Pro delivers everything you need to get the best shots!",
"proFeaturesWhatsIncluded": "What's included?",
"featureReflectedLightMetering": "Reflected light metering",
"featureIncidentLightMetering": "Incident light metering",
"featureIsoAndNdValues": "Wide range of ISO and ND filters values",
"featureTheme": "Theme customization",
"featureSpotMeteringAndHistorgram": "Spot metering and histogram",
"featureFocalLength35mm": "35mm equivalent focal length instead of zoom",
"featureListOfFilms": "List of 20+ films with reciprocity formulas",
"featureCustomFilms": "Ability to create custom films",
"featureEquipmentProfiles": "Equipment profiles",
"featureTimer": "Built-in timer for long exposure",
"featureMeteringScreenLayout": "Customizable main screen",
"proFeaturesSupportText": "By purchasing Lightmeter Pro you support the development and make it possible to add new features to the app.",
"getNowFor": "Get now for {price}",
"@getNowFor": {
"price": {
"version": {
"type": "String"
}
}
},
"tooltipAdd": "Add",
"tooltipClose": "Close",
"tooltipExpand": "Expand",
"tooltipCollapse": "Collapse",
"tooltipCopy": "Copy",
"tooltipDelete": "Delete",
"tooltipSelectAll": "Select all",
"tooltipDesecelectAll": "Deselect all",
"tooltipResetToZero": "Reset to zero",
"tooltipUseLightSensor": "Use lightsensor",
"tooltipUseCamera": "Use camera",
"tooltipOpenSettings": "Open settings",
"exposurePair": "Exposure pair",
"whatsnew": "What's new?",
"changesInVersion": "Changes in version {version}:",
"@changesInVersion": {
"placeholders": {
"version": {
"type": "String"
}
}
},
"close": "Close",
"films": "Films",
"filmsInUse": "Films in use",
"filmsCustom": "Custom films",
"addFilmTitle": "Add film",
"editFilmTitle": "Edit film",
"filmFormula": "Formula",
"filmFormulaExponential": "T=t^Rf",
"filmFormulaExponentialRf": "Rf",
"filmFormulaExponentialRfPlaceholder": "1.3",
"name": "Name",
"addEquipmentProfileTitle": "Add equipment",
"editEquipmentProfileTitle": "Edit equipment"
}

View file

@ -1,158 +1,160 @@
{
"@@locale": "fr",
"fastestExposurePair": "Le plus rapide",
"slowestExposurePair": "Le plus lent",
"ev": "EV",
"evValue": "{value} EV",
"@evValue": {
"placeholders": {
"value": {
"type": "String"
}
}
},
"iso": "ISO",
"filmSpeed": "Sensibilité du film",
"nd": "ND",
"ndFilterFactor": "Facteur de filtre de densité neutre",
"noExposurePairs": "Il n'y a pas de paires d'exposition pour les réglages sélectionnés.",
"noCamerasDetected": "Il semble que votre appareil n'a pas de caméras connectées.",
"noCameraPermission": "L'accès à la caméra n'est pas accordé.",
"otherCameraError": "Une erreur s'est produite lors de la connexion à la caméra.",
"none": "Aucun",
"cancel": "Annuler",
"select": "Sélectionner",
"save": "Enregistrer",
"settings": "Paramètres",
"metering": "Mesure",
"fractionalStops": "Arrêts fractionnaires",
"showFractionalStops": "Afficher les arrêts fractionnaires",
"halfStops": "1/2",
"thirdStops": "1/3",
"calibration": "Calibration",
"calibrationMessage": "La précision des lectures mesurées par cette application dépend entièrement du matériel de l'appareil. Par conséquent, envisagez de tester cette application et de configurer les valeurs d'étalonnage des EV qui vous donneront les résultats de mesure souhaités.",
"calibrationMessageCameraOnly": "La précision des lectures mesurées par cette application dépend entièrement de la caméra arrière de l'appareil. Par conséquent, envisagez de tester cette application et de configurer une valeur d'étalonnage EV qui vous donnera les résultats de mesure souhaités.",
"camera": "Caméra",
"lightSensor": "Capteur de lumière",
"showEv100": "Montrer EV\u2081\u2080\u2080",
"meteringScreenLayout": "Disposition de l'écran de mesure",
"meteringScreenLayoutHint": "Masquer les éléments sur l'écran de mesure dont vous n'avez pas besoin pour qu'ils ne gaspillent pas de l'espace dans les paires d'exposition.",
"meteringScreenLayoutHintEquipmentProfiles": "Sélecteur de profil de l'équipement",
"meteringScreenFeatureExtremeExposurePairs": "Paires d'exposition les plus rapides et les plus courtes",
"meteringScreenFeatureFilmPicker": "Sélecteur de film",
"cameraFeatures": "Fonctionnalités de la caméra",
"cameraFeatureSpotMetering": "Mesure spot",
"cameraFeatureSpotMeteringHint": "Appuyez longuement sur la vue de l'appareil photo pour supprimer le spot de mesure",
"cameraFeatureHistogram": "Histogramme",
"cameraFeatureHistogramHint": "L'activation de l'histogramme peut augmenter la consommation de la batterie",
"cameraFeaturesShowFocalLength": "Afficher la focale",
"cameraFeaturesShowFocalLengthHint": "Affiche la focale équivalente 35 mm au lieu du facteur de zoom",
"film": "Pellicule",
"filmPush": "Pellicule (push)",
"filmPull": "Pellicule (pull)",
"filmReciprocityHint": "La correction s'applique aux vitesses d'obturation supérieures à 1 seconde",
"equipmentProfileName": "Nom du profil de l'équipement",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "Tout",
"apertureValues": "Valeurs Aperture",
"apertureValuesFilterDescription": "Sélectionnez la plage de valeurs d'ouverture à afficher. Cela est généralement déterminé par l'objectif que vous utilisez.",
"ndFilters": "Filtres ND",
"ndFiltersFilterDescription": "Sélectionnez les filtres ND à afficher. Ce sont peut-être vos filtres ND les plus couramment utilisés ou ceux qui correspondent à votre lentille.",
"shutterSpeedValues": "Valeurs de la vitesse d'obturation",
"shutterSpeedValuesFilterDescription": "Sélectionnez la plage de valeurs de vitesse d'obturation à afficher. Cela est généralement déterminé par le corps de l'appareil que vous utilisez.",
"shutterSpeedManualShort": "B",
"shutterSpeedManual": "Manuelle",
"isoValues": "Valeurs ISO",
"isoValuesFilterDescription": "Sélectionnez les valeurs ISO à afficher. Ce sont peut-être vos valeurs les plus couramment utilisées ou celles prises en charge par votre caméra.",
"lensZoom": "Zoom sur l'objectif",
"lensZoomDescription": "Réglez le niveau de zoom par rapport à l'appareil photo du téléphone pour qu'il corresponde au viseur de votre appareil photo.",
"equipmentProfile": "Profil de l'équipement",
"equipmentProfiles": "Profils de l'équipement",
"tapToAdd": "Appuie pour ajouter",
"general": "Général",
"keepScreenOn": "Garder l'écran allumé",
"haptics": "Haptiques",
"autostartTimer": "Minuterie de démarrage automatique",
"volumeKeysAction": "Obturateur par boutons de volume",
"language": "Langue",
"chooseLanguage": "Choisissez la langue",
"theme": "Thème",
"chooseTheme": "Choisissez le thème",
"themeLight": "Lumière",
"themeDark": "Sombre",
"themeSystemDefault": "Thème système",
"dynamicColor": "Couleur dynamique",
"primaryColor": "Couleur primaire",
"choosePrimaryColor": "Choisir la couleur primaire",
"about": "À propos de l'application",
"restorePurchases": "Restaurer les achats",
"sourceCode": "Code source",
"reportIssue": "Rapporter un problème",
"writeEmail": "Écrire un email",
"youDontHaveMailApp": "Vous n'avez installé aucune application de messagerie.",
"copyEmail": "Copier un e-mail",
"version": "Version",
"versionNumber": "{version} ({buildNumber})",
"@versionNumber": {
"placeholders": {
"version": {
"type": "String"
},
"buildNumber": {
"type": "String"
}
}
},
"proFeaturesTitle": "Lightmeter Pro",
"getPro": "Acheter Pro",
"unlock": "Déverrouiller",
"featuresFree": "Gratuit",
"featuresPro": "Pro",
"proFeaturesPromoText": "Lightmeter Pro offre tout ce dont vous avez besoin pour obtenir les meilleurs clichés!",
"proFeaturesWhatsIncluded": "Qu'est-ce qui est inclus?",
"featureReflectedLightMetering": "Mesure de la lumière réfléchie",
"featureIncidentLightMetering": "Mesure de la lumière incidente",
"featureIsoAndNdValues": "Large gamme de valeurs ISO et de filtres ND",
"featureTheme": "Personnalisation du thème",
"featureSpotMeteringAndHistorgram": "Mesure spot et histogramme",
"featureFocalLength35mm": "Focale équivalente 35 mm au lieu du zoom",
"featureListOfFilms": "Liste de plus de 20 films avec des formules de correction",
"featureCustomFilms": "Possibilité de créer des films personnalisés",
"featureEquipmentProfiles": "Profils de l'équipement",
"featureTimer": "Minuteur intégré pour longues expositions",
"featureMeteringScreenLayout": "Écran principal personnalisable",
"proFeaturesSupportText": "En achetant Lightmeter Pro, vous soutenez le développement et permettez l'ajout de nouvelles fonctionnalités à l'application.",
"getNowFor": "Acheter maintenant {price}",
"@getNowFor": {
"price": {
"version": {
"type": "String"
}
}
},
"tooltipAdd": "Ajouter",
"tooltipClose": "Fermer",
"tooltipExpand": "Élargir",
"tooltipCollapse": "Effondrement",
"tooltipCopy": "Copie",
"tooltipDelete": "Supprimer",
"tooltipSelectAll": "Tout sélectionner",
"tooltipDesecelectAll": "Désélectionner tout",
"tooltipResetToZero": "Remise à zéro",
"tooltipUseLightSensor": "Utiliser un capteur de lumière",
"tooltipUseCamera": "Utiliser la caméra",
"tooltipOpenSettings": "Ouvrir les paramètres",
"exposurePair": "Paire d'exposition",
"films": "Films",
"filmsInUse": "Films en usage",
"filmsCustom": "Films personnalisés",
"addFilmTitle": "Ajouter un film",
"editFilmTitle": "Editer le film",
"filmFormula": "Formule",
"filmFormulaExponential": "T=t^Rf",
"filmFormulaExponentialRf": "Rf",
"filmFormulaExponentialRfPlaceholder": "1.3",
"name": "Titre",
"addEquipmentProfileTitle": "Ajouter un profil",
"editEquipmentProfileTitle": "Editer le profil"
}
"@@locale": "fr",
"fastestExposurePair": "Le plus rapide",
"slowestExposurePair": "Le plus lent",
"ev": "EV",
"evValue": "{value} EV",
"@evValue": {
"placeholders": {
"value": {
"type": "String"
}
}
},
"iso": "ISO",
"filmSpeed": "Sensibilité du film",
"nd": "ND",
"ndFilterFactor": "Facteur de filtre de densité neutre",
"noExposurePairs": "Il n'y a pas de paires d'exposition pour les réglages sélectionnés.",
"noCamerasDetected": "Il semble que votre appareil n'a pas de caméras connectées.",
"noCameraPermission": "L'accès à la caméra n'est pas accordé.",
"otherCameraError": "Une erreur s'est produite lors de la connexion à la caméra.",
"none": "Aucun",
"cancel": "Annuler",
"select": "Sélectionner",
"save": "Enregistrer",
"settings": "Paramètres",
"metering": "Mesure",
"fractionalStops": "Arrêts fractionnaires",
"showFractionalStops": "Afficher les arrêts fractionnaires",
"halfStops": "1/2",
"thirdStops": "1/3",
"calibration": "Calibration",
"calibrationMessage": "La précision des lectures mesurées par cette application dépend entièrement du matériel de l'appareil. Par conséquent, envisagez de tester cette application et de configurer les valeurs d'étalonnage des EV qui vous donneront les résultats de mesure souhaités.",
"calibrationMessageCameraOnly": "La précision des lectures mesurées par cette application dépend entièrement de la caméra arrière de l'appareil. Par conséquent, envisagez de tester cette application et de configurer une valeur d'étalonnage EV qui vous donnera les résultats de mesure souhaités.",
"camera": "Caméra",
"lightSensor": "Capteur de lumière",
"showEv100": "Montrer EV₁₀₀",
"meteringScreenLayout": "Disposition de l'écran de mesure",
"meteringScreenLayoutHint": "Masquer les éléments sur l'écran de mesure dont vous n'avez pas besoin pour qu'ils ne gaspillent pas de l'espace dans les paires d'exposition.",
"meteringScreenLayoutHintEquipmentProfiles": "Sélecteur de profil de l'équipement",
"meteringScreenFeatureExtremeExposurePairs": "Paires d'exposition les plus rapides et les plus courtes",
"meteringScreenFeatureFilmPicker": "Sélecteur de film",
"cameraFeatures": "Fonctionnalités de la caméra",
"cameraFeatureSpotMetering": "Mesure spot",
"cameraFeatureSpotMeteringHint": "Appuyez longuement sur la vue de l'appareil photo pour supprimer le spot de mesure",
"cameraFeatureHistogram": "Histogramme",
"cameraFeatureHistogramHint": "L'activation de l'histogramme peut augmenter la consommation de la batterie",
"cameraFeaturesShowFocalLength": "Afficher la focale",
"cameraFeaturesShowFocalLengthHint": "Affiche la focale équivalente 35 mm au lieu du facteur de zoom",
"film": "Pellicule",
"filmPush": "Pellicule (push)",
"filmPull": "Pellicule (pull)",
"filmReciprocityHint": "La correction s'applique aux vitesses d'obturation supérieures à 1 seconde",
"equipmentProfileName": "Nom du profil de l'équipement",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "Tout",
"apertureValues": "Valeurs Aperture",
"apertureValuesFilterDescription": "Sélectionnez la plage de valeurs d'ouverture à afficher. Cela est généralement déterminé par l'objectif que vous utilisez.",
"ndFilters": "Filtres ND",
"ndFiltersFilterDescription": "Sélectionnez les filtres ND à afficher. Ce sont peut-être vos filtres ND les plus couramment utilisés ou ceux qui correspondent à votre lentille.",
"shutterSpeedValues": "Valeurs de la vitesse d'obturation",
"shutterSpeedValuesFilterDescription": "Sélectionnez la plage de valeurs de vitesse d'obturation à afficher. Cela est généralement déterminé par le corps de l'appareil que vous utilisez.",
"shutterSpeedManualShort": "B",
"shutterSpeedManual": "Manuelle",
"isoValues": "Valeurs ISO",
"isoValuesFilterDescription": "Sélectionnez les valeurs ISO à afficher. Ce sont peut-être vos valeurs les plus couramment utilisées ou celles prises en charge par votre caméra.",
"lensZoom": "Zoom sur l'objectif",
"lensZoomDescription": "Réglez le niveau de zoom par rapport à l'appareil photo du téléphone pour qu'il corresponde au viseur de votre appareil photo.",
"exposureOffset": "Décalage dexposition",
"exposureOffsetDescription": "Définissez le décalage dexposition pour obtenir les résultats les plus précis selon lappareil photo.",
"equipmentProfile": "Profil de l'équipement",
"equipmentProfiles": "Profils de l'équipement",
"tapToAdd": "Appuie pour ajouter",
"general": "Général",
"keepScreenOn": "Garder l'écran allumé",
"haptics": "Haptiques",
"autostartTimer": "Minuterie de démarrage automatique",
"volumeKeysAction": "Obturateur par boutons de volume",
"language": "Langue",
"chooseLanguage": "Choisissez la langue",
"theme": "Thème",
"chooseTheme": "Choisissez le thème",
"themeLight": "Lumière",
"themeDark": "Sombre",
"themeSystemDefault": "Thème système",
"dynamicColor": "Couleur dynamique",
"primaryColor": "Couleur primaire",
"choosePrimaryColor": "Choisir la couleur primaire",
"about": "À propos de l'application",
"restorePurchases": "Restaurer les achats",
"sourceCode": "Code source",
"reportIssue": "Rapporter un problème",
"writeEmail": "Écrire un email",
"youDontHaveMailApp": "Vous n'avez installé aucune application de messagerie.",
"copyEmail": "Copier un e-mail",
"version": "Version",
"versionNumber": "{version} ({buildNumber})",
"@versionNumber": {
"placeholders": {
"version": {
"type": "String"
},
"buildNumber": {
"type": "String"
}
}
},
"proFeaturesTitle": "Lightmeter Pro",
"getPro": "Acheter Pro",
"unlock": "Déverrouiller",
"featuresFree": "Gratuit",
"featuresPro": "Pro",
"proFeaturesPromoText": "Lightmeter Pro offre tout ce dont vous avez besoin pour obtenir les meilleurs clichés!",
"proFeaturesWhatsIncluded": "Qu'est-ce qui est inclus?",
"featureReflectedLightMetering": "Mesure de la lumière réfléchie",
"featureIncidentLightMetering": "Mesure de la lumière incidente",
"featureIsoAndNdValues": "Large gamme de valeurs ISO et de filtres ND",
"featureTheme": "Personnalisation du thème",
"featureSpotMeteringAndHistorgram": "Mesure spot et histogramme",
"featureFocalLength35mm": "Focale équivalente 35 mm au lieu du zoom",
"featureListOfFilms": "Liste de plus de 20 films avec des formules de correction",
"featureCustomFilms": "Possibilité de créer des films personnalisés",
"featureEquipmentProfiles": "Profils de l'équipement",
"featureTimer": "Minuteur intégré pour longues expositions",
"featureMeteringScreenLayout": "Écran principal personnalisable",
"proFeaturesSupportText": "En achetant Lightmeter Pro, vous soutenez le développement et permettez l'ajout de nouvelles fonctionnalités à l'application.",
"getNowFor": "Acheter maintenant {price}",
"@getNowFor": {
"price": {
"version": {
"type": "String"
}
}
},
"tooltipAdd": "Ajouter",
"tooltipClose": "Fermer",
"tooltipExpand": "Élargir",
"tooltipCollapse": "Effondrement",
"tooltipCopy": "Copie",
"tooltipDelete": "Supprimer",
"tooltipSelectAll": "Tout sélectionner",
"tooltipDesecelectAll": "Désélectionner tout",
"tooltipResetToZero": "Remise à zéro",
"tooltipUseLightSensor": "Utiliser un capteur de lumière",
"tooltipUseCamera": "Utiliser la caméra",
"tooltipOpenSettings": "Ouvrir les paramètres",
"exposurePair": "Paire d'exposition",
"films": "Films",
"filmsInUse": "Films en usage",
"filmsCustom": "Films personnalisés",
"addFilmTitle": "Ajouter un film",
"editFilmTitle": "Editer le film",
"filmFormula": "Formule",
"filmFormulaExponential": "T=t^Rf",
"filmFormulaExponentialRf": "Rf",
"filmFormulaExponentialRfPlaceholder": "1.3",
"name": "Titre",
"addEquipmentProfileTitle": "Ajouter un profil",
"editEquipmentProfileTitle": "Editer le profil"
}

View file

@ -1,157 +1,159 @@
{
"@@locale": "ru",
"fastestExposurePair": "Короткая выдержка",
"slowestExposurePair": "Длинная выдержка",
"ev": "EV",
"evValue": "{value} EV",
"@evValue": {
"placeholders": {
"value": {
"type": "String"
}
}
},
"iso": "ISO",
"filmSpeed": "Чувствительность плёнки",
"nd": "ND",
"ndFilterFactor": "Степень затемнения нейтрального фильтра",
"noExposurePairs": "Для выбранных настроек нет пар экспозиции.",
"noCamerasDetected": "Похоже, ваше устройство не имеет камеры.",
"noCameraPermission": "Нет разрешения на доступ к камере.",
"otherCameraError": "Произошла ошибка при подключении к камере.",
"none": "Нет",
"cancel": "Отменить",
"select": "Выбрать",
"save": "Сохранить",
"settings": "Настройки",
"metering": "Измерения",
"fractionalStops": "Дробные значения",
"showFractionalStops": "Показывать дробные значения",
"halfStops": "1/2",
"thirdStops": "1/3",
"calibration": "Калибровка",
"calibrationMessage": "Точность измерений данного приложения полностью зависит от точности камеры и датчика освещенности вашего устройства. Поэтому рекомендуется самостоятельно подобрать калибровочные значения, которые дадут желаемый результат измерений.",
"calibrationMessageCameraOnly": "Точность измерений данного приложения полностью зависит от точности камеры вашего устройства. Поэтому рекомендуется самостоятельно подобрать калибровочное значение, которое даст желаемый результат измерений.",
"camera": "Камера",
"lightSensor": "Датчик освещённости",
"showEv100": "Показывать EV\u2081\u2080\u2080",
"meteringScreenLayout": "Элементы главного экрана",
"meteringScreenLayoutHint": "Здесь вы можете скрыть некоторые ненужные или неиспользуемые элементы с главного экрана.",
"meteringScreenLayoutHintEquipmentProfiles": "Выбор профиля оборудования",
"meteringScreenFeatureExtremeExposurePairs": "Длинная и короткая выдержки",
"meteringScreenFeatureFilmPicker": "Выбор пленки",
"cameraFeatures": "Возможности камеры",
"cameraFeatureSpotMetering": "Точечный замер",
"cameraFeatureSpotMeteringHint": "Используйте долгое нажатие, чтобы удалить точку замера",
"cameraFeatureHistogram": "Гистограмма",
"cameraFeatureHistogramHint": "Использование гистограммы может увеличить расход аккумулятора",
"cameraFeaturesShowFocalLength": "Показать фокусное расстояние",
"cameraFeaturesShowFocalLengthHint": "Показывает эквивалент фокусного расстояния (35 мм) вместо коэффициента зума",
"film": "Пленка",
"filmPush": "Пленка (push)",
"filmPull": "Пленка (pull)",
"filmReciprocityHint": "Применяет коррекцию для выдержек длиннее 1 секунды",
"equipmentProfileName": "Название профиля",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "Все",
"apertureValues": "Значения диафрагмы",
"apertureValuesFilterDescription": "Выберите диапазон значений диафрагмы для отображения. Обычно определяется объективом, который вы используете.",
"ndFilters": "ND фильтры",
"ndFiltersFilterDescription": "Выберите ND фильтры для отображения. Это могут быть наиболее часто используемые ND фильтры или фильтры, подходящие под ваш объектив.",
"shutterSpeedValues": "Значения выдержки",
"shutterSpeedValuesFilterDescription": "Выберите диапазон значений выдержки. Обычно ограничивается возможностями вашей камеры.",
"shutterSpeedManualShort": "B",
"shutterSpeedManual": "Ручная",
"isoValues": "Значения ISO",
"isoValuesFilterDescription": "Выберите значения ISO для отображения. Это может быть наиболее часто используемые значения или значения, поддерживаемые вашей камерой.",
"lensZoom": "Зум объектива",
"lensZoomDescription": "Установите уровень зума относительно камеры телефона, чтобы он соответствовал видоискателю вашей камеры.",
"equipmentProfile": "Оборудование",
"equipmentProfiles": "Профили оборудования",
"tapToAdd": "Нажмите, чтобы добавить",
"general": "Общие",
"keepScreenOn": "Запрет блокировки",
"haptics": "Вибрация",
"autostartTimer": "Автозапуск таймера",
"volumeKeysAction": "Затвор по кнопкам громкости",
"language": "Язык",
"chooseLanguage": "Выберите язык",
"theme": "Тема",
"chooseTheme": "Выберите тему",
"themeLight": "Светлая",
"themeDark": "Тёмная",
"themeSystemDefault": "Системная",
"dynamicColor": "Динамический цвет",
"primaryColor": "Основной цвет",
"choosePrimaryColor": "Выберите основной цвет",
"about": "О приложении",
"restorePurchases": "Восстановить покупки",
"sourceCode": "Исходный код",
"reportIssue": "Сообщить о проблеме",
"writeEmail": "Написать на почту",
"youDontHaveMailApp": "У вас не установлено почтовое приложение.",
"copyEmail": "Скопировать адрес",
"version": "Версия",
"versionNumber": "{version} ({buildNumber})",
"@versionNumber": {
"placeholders": {
"version": {
"type": "String"
},
"buildNumber": {
"type": "String"
}
}
},
"proFeaturesTitle": "Lightmeter Pro",
"getPro": "Купить Pro",
"featuresFree": "Бесплатно",
"featuresPro": "Pro",
"proFeaturesPromoText": "Lightmeter Pro предоставляет все необходимое для получения лучших снимков!",
"proFeaturesWhatsIncluded": "Что включено?",
"featureReflectedLightMetering": "Замер отраженного света",
"featureIncidentLightMetering": "Замер падающего света",
"featureIsoAndNdValues": "Широкий диапазон значений ISO и фильтров ND",
"featureTheme": "Настройка темы",
"featureSpotMeteringAndHistorgram": "Точечный замер и гистограмма",
"featureFocalLength35mm": "Эквивалентное фокусное расстояние 35 мм вместо зума",
"featureListOfFilms": "Список из 20+ плёнок с формулами коррекции",
"featureCustomFilms": "Возможность создания собственных плёнок",
"featureEquipmentProfiles": "Профили оборудования",
"featureTimer": "Встроенный таймер для длинных выдержек",
"featureMeteringScreenLayout": "Настраиваемый главный экран",
"proFeaturesSupportText": "Покупая Lightmeter Pro, вы поддерживаете разработку и делаете возможным добавление новых функций в приложение.",
"getNowFor": "Купить за {price}",
"@getNowFor": {
"price": {
"version": {
"type": "String"
}
}
},
"tooltipAdd": "Добавить",
"tooltipClose": "Закрыть",
"tooltipExpand": "Развернуть",
"tooltipCollapse": "Свернуть",
"tooltipCopy": "Скопировать",
"tooltipDelete": "Удалить",
"tooltipSelectAll": "Выбрать все",
"tooltipDesecelectAll": "Отменить все",
"tooltipResetToZero": "Сбросить до 0",
"tooltipUseLightSensor": "Использовать датчик освещенности",
"tooltipUseCamera": "Использовать камеру",
"tooltipOpenSettings": "Открыть настройки",
"exposurePair": "Пара экспозиции",
"films": "Плёнки",
"filmsInUse": "Используемые плёнки",
"filmsCustom": "Пользовательские плёнки",
"addFilmTitle": "Добавить плёнку",
"editFilmTitle": "Редактировать плёнку",
"filmFormula": "Формула",
"filmFormulaExponential": "T=t^Rf",
"filmFormulaExponentialRf": "Rf",
"filmFormulaExponentialRfPlaceholder": "1.3",
"name": "Название",
"addEquipmentProfileTitle": "Добавить профиль",
"editEquipmentProfileTitle": "Редактировать профиль"
}
"@@locale": "ru",
"fastestExposurePair": "Короткая выдержка",
"slowestExposurePair": "Длинная выдержка",
"ev": "EV",
"evValue": "{value} EV",
"@evValue": {
"placeholders": {
"value": {
"type": "String"
}
}
},
"iso": "ISO",
"filmSpeed": "Чувствительность плёнки",
"nd": "ND",
"ndFilterFactor": "Степень затемнения нейтрального фильтра",
"noExposurePairs": "Для выбранных настроек нет пар экспозиции.",
"noCamerasDetected": "Похоже, ваше устройство не имеет камеры.",
"noCameraPermission": "Нет разрешения на доступ к камере.",
"otherCameraError": "Произошла ошибка при подключении к камере.",
"none": "Нет",
"cancel": "Отменить",
"select": "Выбрать",
"save": "Сохранить",
"settings": "Настройки",
"metering": "Измерения",
"fractionalStops": "Дробные значения",
"showFractionalStops": "Показывать дробные значения",
"halfStops": "1/2",
"thirdStops": "1/3",
"calibration": "Калибровка",
"calibrationMessage": "Точность измерений данного приложения полностью зависит от точности камеры и датчика освещенности вашего устройства. Поэтому рекомендуется самостоятельно подобрать калибровочные значения, которые дадут желаемый результат измерений.",
"calibrationMessageCameraOnly": "Точность измерений данного приложения полностью зависит от точности камеры вашего устройства. Поэтому рекомендуется самостоятельно подобрать калибровочное значение, которое даст желаемый результат измерений.",
"camera": "Камера",
"lightSensor": "Датчик освещённости",
"showEv100": "Показывать EV₁₀₀",
"meteringScreenLayout": "Элементы главного экрана",
"meteringScreenLayoutHint": "Здесь вы можете скрыть некоторые ненужные или неиспользуемые элементы с главного экрана.",
"meteringScreenLayoutHintEquipmentProfiles": "Выбор профиля оборудования",
"meteringScreenFeatureExtremeExposurePairs": "Длинная и короткая выдержки",
"meteringScreenFeatureFilmPicker": "Выбор пленки",
"cameraFeatures": "Возможности камеры",
"cameraFeatureSpotMetering": "Точечный замер",
"cameraFeatureSpotMeteringHint": "Используйте долгое нажатие, чтобы удалить точку замера",
"cameraFeatureHistogram": "Гистограмма",
"cameraFeatureHistogramHint": "Использование гистограммы может увеличить расход аккумулятора",
"cameraFeaturesShowFocalLength": "Показать фокусное расстояние",
"cameraFeaturesShowFocalLengthHint": "Показывает эквивалент фокусного расстояния (35 мм) вместо коэффициента зума",
"film": "Пленка",
"filmPush": "Пленка (push)",
"filmPull": "Пленка (pull)",
"filmReciprocityHint": "Применяет коррекцию для выдержек длиннее 1 секунды",
"equipmentProfileName": "Название профиля",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "Все",
"apertureValues": "Значения диафрагмы",
"apertureValuesFilterDescription": "Выберите диапазон значений диафрагмы для отображения. Обычно определяется объективом, который вы используете.",
"ndFilters": "ND фильтры",
"ndFiltersFilterDescription": "Выберите ND фильтры для отображения. Это могут быть наиболее часто используемые ND фильтры или фильтры, подходящие под ваш объектив.",
"shutterSpeedValues": "Значения выдержки",
"shutterSpeedValuesFilterDescription": "Выберите диапазон значений выдержки. Обычно ограничивается возможностями вашей камеры.",
"shutterSpeedManualShort": "B",
"shutterSpeedManual": "Ручная",
"isoValues": "Значения ISO",
"isoValuesFilterDescription": "Выберите значения ISO для отображения. Это может быть наиболее часто используемые значения или значения, поддерживаемые вашей камерой.",
"lensZoom": "Зум объектива",
"lensZoomDescription": "Установите уровень зума относительно камеры телефона, чтобы он соответствовал видоискателю вашей камеры.",
"exposureOffset": "Смещение экспозиции",
"exposureOffsetDescription": "Установите смещение экспозиции для получения наиболее точных результатов с данной камерой.",
"equipmentProfile": "Оборудование",
"equipmentProfiles": "Профили оборудования",
"tapToAdd": "Нажмите, чтобы добавить",
"general": "Общие",
"keepScreenOn": "Запрет блокировки",
"haptics": "Вибрация",
"autostartTimer": "Автозапуск таймера",
"volumeKeysAction": "Затвор по кнопкам громкости",
"language": "Язык",
"chooseLanguage": "Выберите язык",
"theme": "Тема",
"chooseTheme": "Выберите тему",
"themeLight": "Светлая",
"themeDark": "Тёмная",
"themeSystemDefault": "Системная",
"dynamicColor": "Динамический цвет",
"primaryColor": "Основной цвет",
"choosePrimaryColor": "Выберите основной цвет",
"about": "О приложении",
"restorePurchases": "Восстановить покупки",
"sourceCode": "Исходный код",
"reportIssue": "Сообщить о проблеме",
"writeEmail": "Написать на почту",
"youDontHaveMailApp": "У вас не установлено почтовое приложение.",
"copyEmail": "Скопировать адрес",
"version": "Версия",
"versionNumber": "{version} ({buildNumber})",
"@versionNumber": {
"placeholders": {
"version": {
"type": "String"
},
"buildNumber": {
"type": "String"
}
}
},
"proFeaturesTitle": "Lightmeter Pro",
"getPro": "Купить Pro",
"featuresFree": "Бесплатно",
"featuresPro": "Pro",
"proFeaturesPromoText": "Lightmeter Pro предоставляет все необходимое для получения лучших снимков!",
"proFeaturesWhatsIncluded": "Что включено?",
"featureReflectedLightMetering": "Замер отраженного света",
"featureIncidentLightMetering": "Замер падающего света",
"featureIsoAndNdValues": "Широкий диапазон значений ISO и фильтров ND",
"featureTheme": "Настройка темы",
"featureSpotMeteringAndHistorgram": "Точечный замер и гистограмма",
"featureFocalLength35mm": "Эквивалентное фокусное расстояние 35 мм вместо зума",
"featureListOfFilms": "Список из 20+ плёнок с формулами коррекции",
"featureCustomFilms": "Возможность создания собственных плёнок",
"featureEquipmentProfiles": "Профили оборудования",
"featureTimer": "Встроенный таймер для длинных выдержек",
"featureMeteringScreenLayout": "Настраиваемый главный экран",
"proFeaturesSupportText": "Покупая Lightmeter Pro, вы поддерживаете разработку и делаете возможным добавление новых функций в приложение.",
"getNowFor": "Купить за {price}",
"@getNowFor": {
"price": {
"version": {
"type": "String"
}
}
},
"tooltipAdd": "Добавить",
"tooltipClose": "Закрыть",
"tooltipExpand": "Развернуть",
"tooltipCollapse": "Свернуть",
"tooltipCopy": "Скопировать",
"tooltipDelete": "Удалить",
"tooltipSelectAll": "Выбрать все",
"tooltipDesecelectAll": "Отменить все",
"tooltipResetToZero": "Сбросить до 0",
"tooltipUseLightSensor": "Использовать датчик освещенности",
"tooltipUseCamera": "Использовать камеру",
"tooltipOpenSettings": "Открыть настройки",
"exposurePair": "Пара экспозиции",
"films": "Плёнки",
"filmsInUse": "Используемые плёнки",
"filmsCustom": "Пользовательские плёнки",
"addFilmTitle": "Добавить плёнку",
"editFilmTitle": "Редактировать плёнку",
"filmFormula": "Формула",
"filmFormulaExponential": "T=t^Rf",
"filmFormulaExponentialRf": "Rf",
"filmFormulaExponentialRfPlaceholder": "1.3",
"name": "Название",
"addEquipmentProfileTitle": "Добавить профиль",
"editEquipmentProfileTitle": "Редактировать профиль"
}

View file

@ -1,155 +1,157 @@
{
"@@locale": "zh",
"fastestExposurePair": "最快曝光组合",
"slowestExposurePair": "最慢曝光组合",
"ev": "EV",
"evValue": "{value} EV",
"@evValue": {
"placeholders": {
"value": {
"type": "String"
}
}
},
"iso": "ISO",
"filmSpeed": "胶片感光度",
"nd": "ND",
"ndFilterFactor": "ND 滤镜系数",
"noExposurePairs": "所选设置没有曝光配对",
"noCamerasDetected": "您的设备似乎没有连接到任何摄像头",
"noCameraPermission": "未获得摄像头权限",
"otherCameraError": "连接摄像头时发生错误",
"none": "无",
"cancel": "取消",
"select": "选择",
"save": "保存",
"settings": "设置",
"metering": "测量",
"fractionalStops": "EV 步进值",
"showFractionalStops": "显示 EV 步进值",
"halfStops": "1/2",
"thirdStops": "1/3",
"calibration": "校准",
"calibrationMessage": "此应用测量读数的准确性取决于设备的后置摄像头。如需更精确的测量结果或测量结果存在偏差,请手动校准 EV 。",
"calibrationMessageCameraOnly": "此应用测量读数的准确性取决于设备的后置摄像头。如需更精确的测量结果或测量结果存在偏差,请手动校准 EV 。",
"camera": "摄像头",
"lightSensor": "光线传感器",
"showEv100": "显示 EV\u2081\u2080\u2080",
"meteringScreenLayout": "布局",
"meteringScreenLayoutHint": "隐藏不需要的元素,让主界面更加整洁",
"meteringScreenLayoutHintEquipmentProfiles": "选择设备配置",
"meteringScreenFeatureExtremeExposurePairs": "最快 & 最慢曝光组合",
"meteringScreenFeatureFilmPicker": "胶片选择",
"cameraFeatures": "相机功能",
"cameraFeatureSpotMetering": "点测光",
"cameraFeatureSpotMeteringHint": "长按相机视图可移除测光点",
"cameraFeatureHistogram": "直方图",
"cameraFeatureHistogramHint": "启用直方图会增加电池消耗",
"cameraFeaturesShowFocalLength": "显示焦距",
"cameraFeaturesShowFocalLengthHint": "显示 35mm 等效焦距而非变焦倍数",
"film": "胶片",
"filmPush": "胶片 (push)",
"filmPull": "胶片 (pull)",
"filmReciprocityHint": "倒易律失效补偿(对快门速度超过 1 秒的情况进行修正)",
"equipmentProfileName": "设备配置名称",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "全部",
"apertureValues": "光圈值",
"apertureValuesFilterDescription": "选择要显示的光圈值范围。取决于使用的镜头。",
"ndFilters": "ND 滤镜",
"ndFiltersFilterDescription": "选择要显示的 ND 滤镜系数。取决于使用的 ND 滤镜",
"shutterSpeedValues": "快门速度",
"shutterSpeedValuesFilterDescription": "选择要显示的快门速度范围。取决于相机机身。",
"shutterSpeedManualShort": "B门",
"shutterSpeedManual": "手动",
"isoValues": "ISO",
"isoValuesFilterDescription": "选择要显示的 ISO 范围。",
"lensZoom": "镜头变焦",
"lensZoomDescription": "设置相对于手机摄像头的变焦焦距,使其与相机取景相匹配。",
"equipmentProfile": "设备配置",
"equipmentProfiles": "设备配置",
"tapToAdd": "点击添加",
"general": "通用",
"keepScreenOn": "保持屏幕常亮",
"haptics": "震动",
"autostartTimer": "自动启动定时器",
"volumeKeysAction": "音量键快门",
"language": "语言",
"chooseLanguage": "选择语言",
"theme": "主题",
"chooseTheme": "选择主题",
"themeLight": "亮色",
"themeDark": "暗色",
"themeSystemDefault": "跟随系统",
"dynamicColor": "动态颜色",
"primaryColor": "主题颜色",
"choosePrimaryColor": "选择主题颜色",
"about": "关于",
"restorePurchases": "恢复购买",
"sourceCode": "源代码",
"reportIssue": "报告问题",
"writeEmail": "Email",
"youDontHaveMailApp": "您没有安装任何邮件App。",
"copyEmail": "复制电子邮件",
"version": "Version",
"versionNumber": "{version} ({buildNumber})",
"@versionNumber": {
"placeholders": {
"version": {
"type": "String"
},
"buildNumber": {
"type": "String"
}
}
},
"getPro": "购买专业版",
"featuresFree": "免费",
"featuresPro": "专业版",
"proFeaturesPromoText": "Lightmeter Pro 提供您需要的一切,助您拍出最佳照片!",
"proFeaturesWhatsIncluded": "Lightmeter Pro 包含哪些内容?",
"featureReflectedLightMetering": "反射光测光",
"featureIncidentLightMetering": "入射光测光",
"featureIsoAndNdValues": "更广的 ISO 和 ND 滤镜系数范围",
"featureTheme": "主题自定义",
"featureSpotMeteringAndHistorgram": "点测光与直方图",
"featureFocalLength35mm": "35mm 等效焦距替代变焦",
"featureListOfFilms": "20多种胶片的补偿公式",
"featureCustomFilms": "创建自定义胶片",
"featureEquipmentProfiles": "设备配置文件",
"featureTimer": "内置长曝光计时器",
"featureMeteringScreenLayout": "可自定义的主界面",
"proFeaturesSupportText": "通过购买Lightmeter Pro支持软件的开发让软件持续添加新功能",
"getNowFor": "立即获取 {price}",
"@getNowFor": {
"price": {
"version": {
"type": "String"
}
}
},
"tooltipAdd": "添加",
"tooltipClose": "关闭",
"tooltipExpand": "展开",
"tooltipCollapse": "崩溃",
"tooltipCopy": "复制",
"tooltipDelete": "删除",
"tooltipSelectAll": "全选",
"tooltipDesecelectAll": "取消全选",
"resetToZero": "重置为零",
"tooltipUseLightSensor": "使用光线传感器",
"tooltipUseCamera": "使用摄像头",
"tooltipOpenSettings": "打开设置",
"exposurePair": "曝光对",
"films": "Films",
"filmsInUse": "使用的胶片",
"filmsCustom": "自定义胶片",
"addFilmTitle": "添加胶片",
"editFilmTitle": "编辑胶片",
"filmFormula": "计算公式",
"filmFormulaExponential": "T=t^Rf",
"filmFormulaExponentialRf": "Rf",
"filmFormulaExponentialRfPlaceholder": "1.3",
"addEquipmentProfileTitle": "添加设备",
"editEquipmentProfileTitle": "编辑设备"
}
"@@locale": "zh",
"fastestExposurePair": "最快曝光组合",
"slowestExposurePair": "最慢曝光组合",
"ev": "EV",
"evValue": "{value} EV",
"@evValue": {
"placeholders": {
"value": {
"type": "String"
}
}
},
"iso": "ISO",
"filmSpeed": "胶片感光度",
"nd": "ND",
"ndFilterFactor": "ND 滤镜系数",
"noExposurePairs": "所选设置没有曝光配对",
"noCamerasDetected": "您的设备似乎没有连接到任何摄像头",
"noCameraPermission": "未获得摄像头权限",
"otherCameraError": "连接摄像头时发生错误",
"none": "无",
"cancel": "取消",
"select": "选择",
"save": "保存",
"settings": "设置",
"metering": "测量",
"fractionalStops": "EV 步进值",
"showFractionalStops": "显示 EV 步进值",
"halfStops": "1/2",
"thirdStops": "1/3",
"calibration": "校准",
"calibrationMessage": "此应用测量读数的准确性取决于设备的后置摄像头。如需更精确的测量结果或测量结果存在偏差,请手动校准 EV 。",
"calibrationMessageCameraOnly": "此应用测量读数的准确性取决于设备的后置摄像头。如需更精确的测量结果或测量结果存在偏差,请手动校准 EV 。",
"camera": "摄像头",
"lightSensor": "光线传感器",
"showEv100": "显示 EV₁₀₀",
"meteringScreenLayout": "布局",
"meteringScreenLayoutHint": "隐藏不需要的元素,让主界面更加整洁",
"meteringScreenLayoutHintEquipmentProfiles": "选择设备配置",
"meteringScreenFeatureExtremeExposurePairs": "最快 & 最慢曝光组合",
"meteringScreenFeatureFilmPicker": "胶片选择",
"cameraFeatures": "相机功能",
"cameraFeatureSpotMetering": "点测光",
"cameraFeatureSpotMeteringHint": "长按相机视图可移除测光点",
"cameraFeatureHistogram": "直方图",
"cameraFeatureHistogramHint": "启用直方图会增加电池消耗",
"cameraFeaturesShowFocalLength": "显示焦距",
"cameraFeaturesShowFocalLengthHint": "显示 35mm 等效焦距而非变焦倍数",
"film": "胶片",
"filmPush": "胶片 (push)",
"filmPull": "胶片 (pull)",
"filmReciprocityHint": "倒易律失效补偿(对快门速度超过 1 秒的情况进行修正)",
"equipmentProfileName": "设备配置名称",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "全部",
"apertureValues": "光圈值",
"apertureValuesFilterDescription": "选择要显示的光圈值范围。取决于使用的镜头。",
"ndFilters": "ND 滤镜",
"ndFiltersFilterDescription": "选择要显示的 ND 滤镜系数。取决于使用的 ND 滤镜",
"shutterSpeedValues": "快门速度",
"shutterSpeedValuesFilterDescription": "选择要显示的快门速度范围。取决于相机机身。",
"shutterSpeedManualShort": "B门",
"shutterSpeedManual": "手动",
"isoValues": "ISO",
"isoValuesFilterDescription": "选择要显示的 ISO 范围。",
"lensZoom": "镜头变焦",
"lensZoomDescription": "设置相对于手机摄像头的变焦焦距,使其与相机取景相匹配。",
"exposureOffset": "曝光补偿",
"exposureOffsetDescription": "设置曝光补偿,以获得针对所用相机的最准确结果。",
"equipmentProfile": "设备配置",
"equipmentProfiles": "设备配置",
"tapToAdd": "点击添加",
"general": "通用",
"keepScreenOn": "保持屏幕常亮",
"haptics": "震动",
"autostartTimer": "自动启动定时器",
"volumeKeysAction": "音量键快门",
"language": "语言",
"chooseLanguage": "选择语言",
"theme": "主题",
"chooseTheme": "选择主题",
"themeLight": "亮色",
"themeDark": "暗色",
"themeSystemDefault": "跟随系统",
"dynamicColor": "动态颜色",
"primaryColor": "主题颜色",
"choosePrimaryColor": "选择主题颜色",
"about": "关于",
"restorePurchases": "恢复购买",
"sourceCode": "源代码",
"reportIssue": "报告问题",
"writeEmail": "Email",
"youDontHaveMailApp": "您没有安装任何邮件App。",
"copyEmail": "复制电子邮件",
"version": "Version",
"versionNumber": "{version} ({buildNumber})",
"@versionNumber": {
"placeholders": {
"version": {
"type": "String"
},
"buildNumber": {
"type": "String"
}
}
},
"getPro": "购买专业版",
"featuresFree": "免费",
"featuresPro": "专业版",
"proFeaturesPromoText": "Lightmeter Pro 提供您需要的一切,助您拍出最佳照片!",
"proFeaturesWhatsIncluded": "Lightmeter Pro 包含哪些内容?",
"featureReflectedLightMetering": "反射光测光",
"featureIncidentLightMetering": "入射光测光",
"featureIsoAndNdValues": "更广的 ISO 和 ND 滤镜系数范围",
"featureTheme": "主题自定义",
"featureSpotMeteringAndHistorgram": "点测光与直方图",
"featureFocalLength35mm": "35mm 等效焦距替代变焦",
"featureListOfFilms": "20多种胶片的补偿公式",
"featureCustomFilms": "创建自定义胶片",
"featureEquipmentProfiles": "设备配置文件",
"featureTimer": "内置长曝光计时器",
"featureMeteringScreenLayout": "可自定义的主界面",
"proFeaturesSupportText": "通过购买Lightmeter Pro支持软件的开发让软件持续添加新功能",
"getNowFor": "立即获取 {price}",
"@getNowFor": {
"price": {
"version": {
"type": "String"
}
}
},
"tooltipAdd": "添加",
"tooltipClose": "关闭",
"tooltipExpand": "展开",
"tooltipCollapse": "崩溃",
"tooltipCopy": "复制",
"tooltipDelete": "删除",
"tooltipSelectAll": "全选",
"tooltipDesecelectAll": "取消全选",
"resetToZero": "重置为零",
"tooltipUseLightSensor": "使用光线传感器",
"tooltipUseCamera": "使用摄像头",
"tooltipOpenSettings": "打开设置",
"exposurePair": "曝光对",
"films": "Films",
"filmsInUse": "使用的胶片",
"filmsCustom": "自定义胶片",
"addFilmTitle": "添加胶片",
"editFilmTitle": "编辑胶片",
"filmFormula": "计算公式",
"filmFormulaExponential": "T=t^Rf",
"filmFormulaExponentialRf": "Rf",
"filmFormulaExponentialRfPlaceholder": "1.3",
"addEquipmentProfileTitle": "添加设备",
"editEquipmentProfileTitle": "编辑设备"
}

View file

@ -73,13 +73,13 @@ class EquipmentProfilesProviderState extends State<EquipmentProfilesProvider> {
final oldProfile = _customProfiles[profile.id]!.value;
await widget.storageService.updateProfile(
id: profile.id,
name: oldProfile.name != profile.name ? profile.name : null,
apertureValues: oldProfile.apertureValues != profile.apertureValues ? profile.apertureValues : null,
shutterSpeedValues:
oldProfile.shutterSpeedValues != profile.shutterSpeedValues ? profile.shutterSpeedValues : null,
isoValues: oldProfile.isoValues != profile.isoValues ? profile.isoValues : null,
ndValues: oldProfile.ndValues != profile.ndValues ? profile.ndValues : null,
lensZoom: oldProfile.lensZoom != profile.lensZoom ? profile.lensZoom : null,
name: oldProfile.name.changedOrNull(profile.name),
apertureValues: oldProfile.apertureValues.changedOrNull(profile.apertureValues),
shutterSpeedValues: oldProfile.shutterSpeedValues.changedOrNull(profile.shutterSpeedValues),
isoValues: oldProfile.isoValues.changedOrNull(profile.isoValues),
ndValues: oldProfile.ndValues.changedOrNull(profile.ndValues),
lensZoom: oldProfile.lensZoom.changedOrNull(profile.lensZoom),
exposureOffset: oldProfile.exposureOffset.changedOrNull(profile.exposureOffset),
);
_customProfiles[profile.id] = (value: profile, isUsed: _customProfiles[profile.id]!.isUsed);
setState(() {});
@ -183,3 +183,9 @@ class EquipmentProfiles extends InheritedModel<_EquipmentProfilesModelAspect> {
const DeepCollectionEquality().equals(oldWidget.profiles, profiles));
}
}
extension on Object {
T? changedOrNull<T>(T newValue) {
return this != newValue ? newValue : null;
}
}

View file

@ -42,6 +42,7 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
isoValues: profile.isoValues,
ndValues: profile.ndValues,
lensZoom: profile.lensZoom,
exposureOffset: profile.exposureOffset,
canSave: false,
),
) {
@ -60,6 +61,8 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
await _onNdValuesChanged(e, emit);
case final EquipmentProfileLensZoomChangedEvent e:
await _onLensZoomChanged(e, emit);
case final EquipmentProfileExposureOffsetChangedEvent e:
await _onExposureOffsetChanged(e, emit);
case EquipmentProfileSaveEvent():
await _onSave(event, emit);
case EquipmentProfileCopyEvent():
@ -131,6 +134,16 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
);
}
Future<void> _onExposureOffsetChanged(EquipmentProfileExposureOffsetChangedEvent event, Emitter emit) async {
_newEquipmentProfile = _newEquipmentProfile.copyWith(exposureOffset: event.exposureOffset);
emit(
state.copyWith(
exposureOffset: event.exposureOffset,
canSave: _canSave(state.name, event.exposureOffset),
),
);
}
Future<void> _onSave(EquipmentProfileSaveEvent _, Emitter emit) async {
emit(state.copyWith(isLoading: true));
if (_isEdit) {
@ -143,6 +156,7 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
shutterSpeedValues: state.shutterSpeedValues,
isoValues: state.isoValues,
lensZoom: state.lensZoom,
exposureOffset: state.exposureOffset,
),
);
} else {
@ -155,6 +169,7 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
shutterSpeedValues: state.shutterSpeedValues,
isoValues: state.isoValues,
lensZoom: state.lensZoom,
exposureOffset: state.exposureOffset,
),
);
}
@ -173,6 +188,6 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
}
bool _canSave(String name, double? lensZoom) {
return name.isNotEmpty && lensZoom != null && _newEquipmentProfile != _originalEquipmentProfile;
return name.isNotEmpty && _newEquipmentProfile != _originalEquipmentProfile;
}
}

View file

@ -40,6 +40,12 @@ class EquipmentProfileLensZoomChangedEvent extends EquipmentProfileEditEvent {
const EquipmentProfileLensZoomChangedEvent(this.lensZoom);
}
class EquipmentProfileExposureOffsetChangedEvent extends EquipmentProfileEditEvent {
final double exposureOffset;
const EquipmentProfileExposureOffsetChangedEvent(this.exposureOffset);
}
class EquipmentProfileSaveEvent extends EquipmentProfileEditEvent {
const EquipmentProfileSaveEvent();
}

View file

@ -10,9 +10,11 @@ import 'package:lightmeter/screens/equipment_profile_edit/components/slider_pick
import 'package:lightmeter/screens/equipment_profile_edit/event_equipment_profile_edit.dart';
import 'package:lightmeter/screens/equipment_profile_edit/flow_equipment_profile_edit.dart';
import 'package:lightmeter/screens/equipment_profile_edit/state_equipment_profile_edit.dart';
import 'package:lightmeter/screens/metering/components/camera_container/bloc_container_camera.dart';
import 'package:lightmeter/screens/shared/sliver_screen/screen_sliver.dart';
import 'package:lightmeter/screens/shared/text_field/widget_text_field.dart';
import 'package:lightmeter/utils/double_to_zoom.dart';
import 'package:lightmeter/utils/to_string_signed.dart';
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
class EquipmentProfileEditScreen extends StatefulWidget {
@ -108,6 +110,7 @@ class _EquipmentProfileEditScreenState extends State<EquipmentProfileEditScreen>
_ApertureValuesListTileBuilder(),
_ShutterSpeedValuesListTileBuilder(),
_LensZoomListTileBuilder(),
_ExposureOffsetListTileBuilder(),
],
),
),
@ -246,7 +249,7 @@ class _LensZoomListTileBuilder extends StatelessWidget {
title: S.of(context).lensZoom,
description: S.of(context).lensZoomDescription,
value: state.lensZoom,
range: const RangeValues(1, 7),
range: CameraContainerBloc.zoomMaxRange,
valueAdapter: (context, value) => value.toZoom(context),
onChanged: (value) {
context.read<EquipmentProfileEditBloc>().add(EquipmentProfileLensZoomChangedEvent(value));
@ -255,3 +258,24 @@ class _LensZoomListTileBuilder extends StatelessWidget {
);
}
}
class _ExposureOffsetListTileBuilder extends StatelessWidget {
const _ExposureOffsetListTileBuilder();
@override
Widget build(BuildContext context) {
return BlocBuilder<EquipmentProfileEditBloc, EquipmentProfileEditState>(
builder: (context, state) => SliderPickerListTile(
icon: Icons.light_mode_outlined,
title: S.of(context).exposureOffset,
description: S.of(context).exposureOffsetDescription,
value: state.exposureOffset,
range: CameraContainerBloc.exposureMaxRange,
valueAdapter: (context, value) => S.of(context).evValue(value.toStringSignedAsFixed(1)),
onChanged: (value) {
context.read<EquipmentProfileEditBloc>().add(EquipmentProfileExposureOffsetChangedEvent(value));
},
),
);
}
}

View file

@ -7,6 +7,7 @@ class EquipmentProfileEditState {
final List<ShutterSpeedValue> shutterSpeedValues;
final List<IsoValue> isoValues;
final double lensZoom;
final double exposureOffset;
final bool canSave;
final bool isLoading;
final EquipmentProfile? profileToCopy;
@ -18,6 +19,7 @@ class EquipmentProfileEditState {
required this.shutterSpeedValues,
required this.isoValues,
required this.lensZoom,
required this.exposureOffset,
required this.canSave,
this.isLoading = false,
this.profileToCopy,
@ -30,6 +32,7 @@ class EquipmentProfileEditState {
List<ShutterSpeedValue>? shutterSpeedValues,
List<IsoValue>? isoValues,
double? lensZoom,
double? exposureOffset,
bool? canSave,
bool? isLoading,
EquipmentProfile? profileToCopy,
@ -41,6 +44,7 @@ class EquipmentProfileEditState {
shutterSpeedValues: shutterSpeedValues ?? this.shutterSpeedValues,
isoValues: isoValues ?? this.isoValues,
lensZoom: lensZoom ?? this.lensZoom,
exposureOffset: exposureOffset ?? this.exposureOffset,
canSave: canSave ?? this.canSave,
isLoading: isLoading ?? this.isLoading,
profileToCopy: profileToCopy ?? this.profileToCopy,

View file

@ -30,11 +30,11 @@ class CameraContainerBloc extends EvSourceBlocBase<CameraContainerEvent, CameraC
CameraDescription? _camera;
CameraController? _cameraController;
static const _maxZoom = 7.0;
static const zoomMaxRange = RangeValues(1, 7);
RangeValues? _zoomRange;
double _currentZoom = 1.0;
static const _exposureMaxRange = RangeValues(-4, 4);
static const exposureMaxRange = RangeValues(-4, 4);
RangeValues? _exposureOffsetRange;
double _exposureStep = 0.1;
double _currentExposureOffset = 0.0;
@ -90,8 +90,10 @@ class CameraContainerBloc extends EvSourceBlocBase<CameraContainerEvent, CameraC
case final communication_states.EquipmentProfileChangedState communicationState:
if (state is CameraActiveState) {
add(ZoomChangedEvent(communicationState.profile.lensZoom));
add(ExposureOffsetChangedEvent(communicationState.profile.exposureOffset));
} else {
_currentZoom = communicationState.profile.lensZoom;
_currentExposureOffset = communicationState.profile.exposureOffset;
}
case communication_states.SettingsOpenedState():
_settingsOpened = true;
@ -153,8 +155,8 @@ class CameraContainerBloc extends EvSourceBlocBase<CameraContainerEvent, CameraC
cameraController.getExposureOffsetStepSize(),
]).then((value) {
_exposureOffsetRange = RangeValues(
math.max(_exposureMaxRange.start, value[0]),
math.min(_exposureMaxRange.end, value[1]),
math.max(exposureMaxRange.start, value[0]),
math.min(exposureMaxRange.end, value[1]),
);
_currentExposureOffset = 0.0;
_exposureStep = value[2] == 0 ? 0.1 : value[2];
@ -168,7 +170,7 @@ class CameraContainerBloc extends EvSourceBlocBase<CameraContainerEvent, CameraC
]).then((value) {
_zoomRange = RangeValues(
math.max(1.0, value[0]),
math.min(_maxZoom, value[1]),
math.min(zoomMaxRange.end, value[1]),
);
if (_currentZoom < _zoomRange!.start || _currentZoom > _zoomRange!.end) {
_currentZoom = _zoomRange!.start;

View file

@ -21,7 +21,7 @@ class ZoomSlider extends StatelessWidget {
range: range,
value: value,
onChanged: onChanged,
icon: Icons.search_outlined,
icon: Icons.zoom_in_outlined,
defaultValue: EquipmentProfiles.selectedOf(context).lensZoom,
rulerValueAdapter: (value) => value.toStringAsFixed(0),
valueAdapter: (value) => value.toZoom(context),

View file

@ -829,20 +829,20 @@ packages:
dependency: "direct main"
description:
path: "."
ref: "v2.1.3"
resolved-ref: "4575586ff6114b780ca651b7ac7c272a4a4801eb"
ref: "v2.2.0"
resolved-ref: f8a0ab311a696b53d7172412922ce5c69b68fd4e
url: "https://github.com/vodemn/m3_lightmeter_iap"
source: git
version: "2.1.3+30"
version: "2.2.0+31"
m3_lightmeter_resources:
dependency: "direct main"
description:
path: "."
ref: "v2.1.0"
resolved-ref: "0e6eefe534adce851df639dcd28463a9089e5b92"
ref: "v2.2.0"
resolved-ref: a337627f92989d20ba9173f747255fa25262ca4e
url: "https://github.com/vodemn/m3_lightmeter_resources"
source: git
version: "2.1.0+9"
version: "2.2.0+10"
macros:
dependency: transitive
description:

View file

@ -32,11 +32,11 @@ dependencies:
m3_lightmeter_iap:
git:
url: "https://github.com/vodemn/m3_lightmeter_iap"
ref: v2.1.3
ref: v2.2.0
m3_lightmeter_resources:
git:
url: "https://github.com/vodemn/m3_lightmeter_resources"
ref: v2.1.0
ref: v2.2.0
material_color_utilities: 0.12.0
package_info_plus: 8.1.3
permission_handler: 11.3.1

View file

@ -1,6 +1,6 @@
defaults -currentHost write -g AppleFontSmoothing -int 0
goldens=$(find ./test -name "*_golden_test.dart" -print)
for f in $goldens; do
flutter test "$f" --dart-define cameraStubImage=assets/camera_stub_image.jpg --update-goldens
fvm flutter test "$f" --dart-define cameraStubImage=assets/camera_stub_image.jpg --update-goldens
done
defaults -currentHost write -g AppleFontSmoothing -int 3

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB