diff --git a/e2e/signedIn.e2e.js b/e2e/signedIn.e2e.js
index a544c3805..8c2ce6467 100644
--- a/e2e/signedIn.e2e.js
+++ b/e2e/signedIn.e2e.js
@@ -145,7 +145,7 @@ describe( "Signed in user", () => {
await element( by.id( `ObsDetails.${uuid}` ) ).scrollTo( "bottom" );
const comment = element( by.text( "This is a comment" ) );
await waitFor( comment ).toBeVisible().withTimeout( 10000 );
- await element( by.label( "Navigate back" ) ).tap( );
+ await element( by.label( "Go back" ) ).tap( );
await waitFor( username ).toBeVisible( ).withTimeout( 10000 );
/*
diff --git a/metro.config.js b/metro.config.js
index 2a479ab1a..a79cf4c35 100644
--- a/metro.config.js
+++ b/metro.config.js
@@ -12,6 +12,10 @@ const {
resolver: { sourceExts, assetExts }
} = getDefaultConfig();
+const localPackagePaths = [
+ // If you reference any local paths in package.json, you'll need to list them here
+];
+
/**
* Metro configuration
* https://facebook.github.io/metro/docs/configuration
@@ -27,8 +31,10 @@ const config = {
sourceExts:
process.env.MOCK_MODE === "e2e"
? ["e2e-mock", ...sourceExts, "svg"]
- : [...sourceExts, "svg"]
- }
+ : [...sourceExts, "svg"],
+ nodeModulesPaths: [...localPackagePaths]
+ },
+ watchFolders: [...localPackagePaths]
};
module.exports = mergeConfig( getDefaultConfig( __dirname ), config );
diff --git a/src/components/AddObsModal.js b/src/components/AddObsModal.js
index d20d5fff3..b95489597 100644
--- a/src/components/AddObsModal.js
+++ b/src/components/AddObsModal.js
@@ -159,7 +159,7 @@ const AddObsModal = ( { closeModal }: Props ): React.Node => {
className="h-[69px] w-[69px] bg-inatGreen rounded-full"
onPress={( ) => closeModal( )}
accessibilityLabel={t( "Close" )}
- accessibilityHint={t( "Close-add-observation-modal" )}
+ accessibilityHint={t( "Closes-new-observation-options" )}
/>
diff --git a/src/components/Camera/Buttons/GreenCheckmark.js b/src/components/Camera/Buttons/GreenCheckmark.js
index 652cb539c..014557ca5 100644
--- a/src/components/Camera/Buttons/GreenCheckmark.js
+++ b/src/components/Camera/Buttons/GreenCheckmark.js
@@ -20,8 +20,8 @@ const GreenCheckmark = ( {
return (
setShowDiscardSheet( false )}
- headerText={t( "DISCARD-PHOTOS" )}
+ headerText={t( "DISCARD-PHOTOS--question" )}
text={t( "By-exiting-your-photos-will-not-be-saved" )}
secondButtonText={t( "CANCEL" )}
handleSecondButtonPress={( ) => setShowDiscardSheet( false )}
diff --git a/src/components/Explore/Header/Header.js b/src/components/Explore/Header/Header.js
index dad2a56cb..3b8b7ad4c 100644
--- a/src/components/Explore/Header/Header.js
+++ b/src/components/Explore/Header/Header.js
@@ -68,6 +68,7 @@ const Header = ( {
{taxon
? (
setMediaToDelete( null )}
confirm={confirmDelete}
- headerText={t( "DISCARD-MEDIA" )}
+ headerText={t( "DISCARD-MEDIA--question" )}
buttonText={t( "DISCARD" )}
secondButtonText={t( "CANCEL" )}
handleSecondButtonPress={( ) => setMediaToDelete( null )}
diff --git a/src/components/ObsDetails/ActivityTab/ActivityHeader.js b/src/components/ObsDetails/ActivityTab/ActivityHeader.js
index 174d9a70c..1d7a25379 100644
--- a/src/components/ObsDetails/ActivityTab/ActivityHeader.js
+++ b/src/components/ObsDetails/ActivityTab/ActivityHeader.js
@@ -163,7 +163,7 @@ const ActivityHeader = ( {
{( currentUser && showDeleteCommentSheet ) && (
setShowDeleteCommentSheet( false )}
- headerText={t( "DELETE-COMMENT-QUESTION" )}
+ headerText={t( "DELETE-COMMENT--question" )}
confirm={deleteComment}
buttonText={t( "DELETE" )}
handleSecondButtonPress={( ) => setShowDeleteCommentSheet( false )}
diff --git a/src/components/ObsDetails/ActivityTab/FloatingButtons.js b/src/components/ObsDetails/ActivityTab/FloatingButtons.js
index 1ef2f7a59..ce3e5408f 100644
--- a/src/components/ObsDetails/ActivityTab/FloatingButtons.js
+++ b/src/components/ObsDetails/ActivityTab/FloatingButtons.js
@@ -51,7 +51,7 @@ const FloatingButtons = ( {
className="w-1/2 mx-6"
testID="ObsDetail.cvSuggestionsButton"
accessibilityRole="link"
- accessibilityHint={t( "Navigates-to-suggest-identification" )}
+ accessibilityHint={t( "Shows-identification-suggestions" )}
/>
);
diff --git a/src/components/ObsDetails/DetailsTab/CoordinatesCopiedNotification.js b/src/components/ObsDetails/DetailsTab/CoordinatesCopiedNotification.js
index 5b96462ca..010f04daf 100644
--- a/src/components/ObsDetails/DetailsTab/CoordinatesCopiedNotification.js
+++ b/src/components/ObsDetails/DetailsTab/CoordinatesCopiedNotification.js
@@ -28,7 +28,7 @@ const CoordinatesCopiedNotification = ( ): React.Node => {
style={getShadowForColor( theme.colors.primary )}
>
- {t( "Coordinates-copied-to-keyboard" )}
+ {t( "Coordinates-copied-to-clipboard" )}
removeVote( { metric, vote: true } )}
- accessibilityLabel={t( "Arrow-up-selected" )}
+ accessibilityLabel={t( "Add-agreement" )}
+ accessibilityHint={t( "Adds-your-vote-of-agreement" )}
/>
);
}
@@ -86,7 +87,8 @@ const DQAVoteButtons = ( {
icon="arrow-up-bold-circle-outline"
size={33}
onPress={() => setVote( { metric, vote: true } )}
- accessibilityLabel={t( "Arrow-up-unselected" )}
+ accessibilityLabel={t( "Remove-agreement" )}
+ accessibilityHint={t( "Removes-your-vote-of-agreement" )}
/>
);
};
@@ -104,7 +106,8 @@ const DQAVoteButtons = ( {
size={33}
color={theme.colors.error}
onPress={() => removeVote( { metric, vote: false } )}
- accessibilityLabel={t( "Arrow-down-selected" )}
+ accessibilityLabel={t( "Remove-disagreement" )}
+ accessibilityHint={t( "Removes-your-vote-of-disagreement" )}
/>
);
}
@@ -114,7 +117,8 @@ const DQAVoteButtons = ( {
icon="arrow-down-bold-circle-outline"
size={33}
onPress={() => setVote( { metric, vote: false } )}
- accessibilityLabel={t( "Arrow-down-unselected" )}
+ accessibilityLabel={t( "Add-disagreement" )}
+ accessibilityHint={t( "Adds-your-vote-of-disagreement" )}
/>
);
};
diff --git a/src/components/ObsDetails/DetailsTab/DetailsTab.js b/src/components/ObsDetails/DetailsTab/DetailsTab.js
index 27f866457..96ce3f8d4 100644
--- a/src/components/ObsDetails/DetailsTab/DetailsTab.js
+++ b/src/components/ObsDetails/DetailsTab/DetailsTab.js
@@ -198,7 +198,7 @@ const DetailsTab = ( { observation }: Props ): Node => {
{t( "DATE" )}
)}
diff --git a/src/components/ObsEdit/Sheets/DeleteObservationSheet.js b/src/components/ObsEdit/Sheets/DeleteObservationSheet.js
index 78b58a800..bedabde0f 100644
--- a/src/components/ObsEdit/Sheets/DeleteObservationSheet.js
+++ b/src/components/ObsEdit/Sheets/DeleteObservationSheet.js
@@ -58,7 +58,7 @@ const DeleteObservationSheet = ( {
return (
(
-
-
-
- {user.login}
- {user.name}
-
-
- {t( "Unblock" )}
-
-
-);
-
-export default BlockedUser;
diff --git a/src/components/Settings/MutedUser.js b/src/components/Settings/MutedUser.js
deleted file mode 100644
index 8cbfc3dcc..000000000
--- a/src/components/Settings/MutedUser.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// @flow
-
-import { t } from "i18next";
-import type { Node } from "react";
-import React from "react";
-import {
- Image,
- Pressable,
- Text,
- View
-} from "react-native";
-import { viewStyles } from "styles/settings/settings";
-
-type Props = {
- unmuteUser: Function,
- user: Object
-}
-
-const MutedUser = ( { user, unmuteUser }: Props ): Node => (
-
-
-
- {user.login}
- {user.name}
-
-
- {t( "Unmute" )}
-
-
-);
-
-export default MutedUser;
diff --git a/src/components/Settings/PlaceSearchInput.js b/src/components/Settings/PlaceSearchInput.js
deleted file mode 100644
index 6127ac5bb..000000000
--- a/src/components/Settings/PlaceSearchInput.js
+++ /dev/null
@@ -1,98 +0,0 @@
-// import { useQueryClient } from "@tanstack/react-query";
-// import fetchPlace from "api/places";
-// import fetchSearchResults from "api/search";
-// import inatPlaceTypes from "dictionaries/places";
-// import React, { useEffect } from "react";
-// import {
-// Image, Text, TextInput, View
-// } from "react-native";
-// import Pressable from "react-native/Libraries/Components/Pressable/Pressable";
-// import useAuthenticatedQuery from "sharedHooks/useAuthenticatedQuery";
-// import { textStyles, viewStyles } from "styles/settings/settings";
-// import { useDebounce } from "use-debounce";
-
-// const PlaceSearchInput = ( { placeId, onPlaceChanged } ): React.Node => {
-// const [hideResults, setHideResults] = React.useState( true );
-// const [placeSearch, setPlaceSearch] = React.useState( "" );
-// // So we'll start searching only once the user finished typing
-// const [finalPlaceSearch] = useDebounce( placeSearch, 500 );
-
-// const queryClient = useQueryClient( );
-
-// // this seems necessary for clearing the cache between searches
-// queryClient.invalidateQueries( { queryKey: ["fetchSearchResults"] } );
-
-// const {
-// data: placeResults
-// } = useAuthenticatedQuery(
-// ["fetchSearchResults", finalPlaceSearch],
-// optsWithAuth => fetchSearchResults( {
-// q: finalPlaceSearch,
-// sources: "places",
-// fields: "place,place.display_name,place.place_type"
-// }, optsWithAuth )
-// );
-
-// const {
-// data: placeDetails
-// } = useAuthenticatedQuery(
-// ["fetchPlace", placeId],
-// optsWithAuth => fetchPlace( placeId, optsWithAuth )
-// );
-
-// useEffect( () => {
-// if ( placeDetails ) {
-// setPlaceSearch( placeDetails.display_name );
-// } else {
-// setPlaceSearch( "" );
-// }
-// }, [placeDetails] );
-
-// return (
-//
-//
-// {
-// setHideResults( false );
-// setPlaceSearch( v );
-// }}
-// value={placeSearch}
-// />
-// {
-// setHideResults( true );
-// setPlaceSearch( "" );
-// onPlaceChanged( 0 );
-// }}
-// >
-//
-//
-//
-// {!hideResults && finalPlaceSearch.length > 0 && placeResults?.map( place => (
-// {
-// setHideResults( true );
-// onPlaceChanged( place.id );
-// }}
-// >
-// {place.display_name}
-// {inatPlaceTypes[place.place_type]}
-//
-// ) )}
-//
-// );
-// };
-
-// export default PlaceSearchInput;
diff --git a/src/components/Settings/Relationship.js b/src/components/Settings/Relationship.js
deleted file mode 100644
index 07ba93a0d..000000000
--- a/src/components/Settings/Relationship.js
+++ /dev/null
@@ -1,65 +0,0 @@
-// @flow
-
-import { Checkbox } from "components/SharedComponents";
-import { t } from "i18next";
-import type { Node } from "react";
-import React from "react";
-import {
- Image,
- Pressable,
- Text,
- View
-} from "react-native";
-import { viewStyles } from "styles/settings/settings";
-
-type Props = {
- relationship: Object,
- updateRelationship: Function,
- askToRemoveRelationship: Function
-}
-
-const Relationship = ( {
- askToRemoveRelationship,
- relationship,
- updateRelationship
-}: Props ): Node => (
-
-
-
-
- {relationship.friendUser.login}
- {relationship.friendUser.name}
-
-
- { updateRelationship( relationship, { following: !relationship.following } ); }
- }
- text={t( "Following" )}
- />
- { updateRelationship( relationship, { trust: !relationship.trust } ); }
- }
- text={t( "Trust-with-hidden-coordinates" )}
- />
-
-
- {t( "Added-on-date", { date: relationship.created_at } )}
- askToRemoveRelationship( relationship )}
- >
- {t( "Remove-Relationship" )}
-
-
-);
-
-export default Relationship;
diff --git a/src/components/Settings/SettingsAccount.js b/src/components/Settings/SettingsAccount.js
deleted file mode 100644
index 2063006fe..000000000
--- a/src/components/Settings/SettingsAccount.js
+++ /dev/null
@@ -1,79 +0,0 @@
-// @flow
-
-import { Picker } from "@react-native-picker/picker";
-import { Checkbox } from "components/SharedComponents";
-import inatLanguages from "dictionaries/languages";
-import inatNetworks from "dictionaries/networks";
-import { t } from "i18next";
-import type { Node } from "react";
-import React from "react";
-import { Text, View } from "react-native";
-import { textStyles, viewStyles } from "styles/settings/settings";
-import colors from "styles/tailwindColors";
-
-import PlaceSearchInput from "./PlaceSearchInput";
-import type { SettingsProps } from "./types";
-
-const SettingsAccount = ( { settings, onSettingsModified }: SettingsProps ): Node => (
- <>
- {t( "Account" )}
-
- {t( "Language-Locale" )}
- {t( "This-sets-your-language-and-date-formatting-preferences-across-iNaturalist" )}
-
- onSettingsModified( { ...settings, locale: itemValue } )
- }
- >
- {Object.keys( inatLanguages ).map( k => (
-
- ) )}
-
-
-
- {t( "Default-Search-Place" )}
- {t( "This-will-be-your-default-place-for-all-searches-in-Explore-and-Identify" )}
- onSettingsModified( { ...settings, search_place_id: p } )}
- />
-
- {t( "Privacy" )}
- onSettingsModified( { ...settings, prefers_no_tracking: v } )}
- text={t( "Do-not-collect-stability-and-usage-data-using-third-party-services" )}
- />
- {t( "iNaturalist-Network-Affiliation" )}
-
- onSettingsModified( { ...settings, site_id: itemValue } )
- }
- >
- {Object.keys( inatNetworks ).map( k => (
-
- ) )}
-
-
- {t( "The-iNaturalist-Network-is-a-collection-of-localized-websites" )}
-
- >
-);
-
-export default SettingsAccount;
diff --git a/src/components/Settings/SettingsApplications.js b/src/components/Settings/SettingsApplications.js
deleted file mode 100644
index 5ece3a9ac..000000000
--- a/src/components/Settings/SettingsApplications.js
+++ /dev/null
@@ -1,116 +0,0 @@
-// @flow
-
-import { useQueryClient } from "@tanstack/react-query";
-import {
- fetchAuthorizedApplications, revokeAuthorizedApplications
-} from "api/authorizedApplications";
-import fetchProviderAuthorizations from "api/providerAuthorizations";
-import inatProviders from "dictionaries/providers";
-import { t } from "i18next";
-import type { Node } from "react";
-import React from "react";
-import { Alert, Text, View } from "react-native";
-import Pressable from "react-native/Libraries/Components/Pressable/Pressable";
-import useAuthenticatedMutation from "sharedHooks/useAuthenticatedMutation";
-import useAuthenticatedQuery from "sharedHooks/useAuthenticatedQuery";
-import { textStyles, viewStyles } from "styles/settings/settings";
-
-const SettingsApplications = ( ): Node => {
- const {
- data: authorizedApps,
- refetch
- } = useAuthenticatedQuery(
- ["fetchAuthorizedApplications"],
- optsWithAuth => fetchAuthorizedApplications( { }, optsWithAuth )
- );
-
- const {
- data: providerAuthorizations
- } = useAuthenticatedQuery(
- ["fetchProviderAuthorizations"],
- optsWithAuth => fetchProviderAuthorizations( { }, optsWithAuth )
- );
-
- const queryClient = useQueryClient( );
-
- const revokeAppMutation = useAuthenticatedMutation(
- ( params, optsWithAuth ) => revokeAuthorizedApplications( params, optsWithAuth ),
- {
- onSuccess: ( ) => {
- queryClient.invalidateQueries( { queryKey: ["fetchAuthorizedApplications"] } );
- refetch( );
- }
- }
- );
-
- const revokeApp = async appId => {
- revokeAppMutation.mutate( { id: appId } );
- };
-
- const askToRevokeApp = app => {
- Alert.alert(
- `Revoke ${app.application.name}?`,
- "This will sign you out of your current session on this application.",
- [
- { text: "Revoke", onPress: () => revokeApp( app.application.id ) }
- ],
- {
- cancelable: true
- }
- );
- };
-
- return (
-
- {t( "iNaturalist-Applications" )}
- {authorizedApps?.filter( app => app.application.official ).map( app => (
-
-
- {app.application.name}
-
- askToRevokeApp( app )}
- >
- {t( "Revoke" )}
-
-
- ) )}
-
- {t( "Connected-Accounts" )}
- {Object.keys( inatProviders ).map( providerKey => {
- const connectedProvider = providerAuthorizations?.find(
- x => x.provider_name === providerKey
- );
- return (
-
- {inatProviders[providerKey]}
- {" "}
- {connectedProvider && `(authorized on: ${connectedProvider.created_at})`}
-
- );
- } )}
-
- {t( "External-Applications" )}
- {authorizedApps?.filter( app => !app.application.official ).map( app => (
-
-
- {t( "app-authorized-on-date", { appName: app.application.name, date: app.created_at } )}
-
- askToRevokeApp( app )}
- >
- {t( "Revoke" )}
-
-
- ) )}
-
- );
-};
-
-export default SettingsApplications;
diff --git a/src/components/Settings/SettingsContentDisplay.js b/src/components/Settings/SettingsContentDisplay.js
deleted file mode 100644
index b8a677d3a..000000000
--- a/src/components/Settings/SettingsContentDisplay.js
+++ /dev/null
@@ -1,223 +0,0 @@
-// @flow
-
-import { Picker } from "@react-native-picker/picker";
-import { Checkbox } from "components/SharedComponents";
-import inatLicenses from "dictionaries/licenses";
-import { t } from "i18next";
-import type { Node } from "react";
-import React from "react";
-import { Text, View } from "react-native";
-import { textStyles, viewStyles } from "styles/settings/settings";
-import colors from "styles/tailwindColors";
-
-import PlaceSearchInput from "./PlaceSearchInput";
-import type { SettingsProps } from "./types";
-
-const PROJECT_SETTINGS = {
- any: "Any",
- joined: "Projects you've joined",
- none: "None, only you can add your observations to projects"
-};
-
-const TAXON_DISPLAY = {
- prefers_common_names: "Common Name (Scientific Name)",
- prefers_scientific_name_first: "Scientific Name (Common Name)",
- prefers_scientific_names: "Scientific Name"
-};
-
-const ADD_OBSERVATION_FIELDS = {
- anyone: "Anyone",
- curators: "Curators",
- observer: "Only you"
-};
-
-const LicenseSelector = ( {
- value,
- onValueChanged,
- title,
- updateExistingTitle,
- onUpdateExisting,
- updateExisting
-} ): Node => (
- <>
- {title}
-
-
- {inatLicenses.map( l => (
-
- ) )}
-
-
-
- >
-);
-
-const SettingsContentDisplay = ( { settings, onSettingsModified }: SettingsProps ): Node => {
- let taxonNamePreference = "prefers_common_names";
- if ( settings.prefers_scientific_name_first ) {
- taxonNamePreference = "prefers_scientific_name_first";
- } else if ( settings.prefers_scientific_names ) {
- taxonNamePreference = "prefers_scientific_names";
- }
-
- return (
- <>
- {t( "Project-Settings" )}
-
- {t( "Which-traditional-projects-can-add-your-observations" )}
-
-
- onSettingsModified( {
- ...settings,
- preferred_project_addition_by: itemValue
- } )}
- >
- {Object.keys( PROJECT_SETTINGS ).map( k => (
-
- ) )}
-
-
-
- {t( "Taxonomy-Settings" )}
- {
- onSettingsModified( { ...settings, prefers_automatic_taxonomic_changes: v } );
- }}
- text={t( "Automatically-update-my-content-for-taxon-changes" )}
- />
- {t( "Names" )}
- {t( "Display" )}
- {t( "This-is-how-all-taxon-names-will-be-displayed-to-you-across-iNaturalist" )}
-
- {
- if ( value === "prefers_common_names" ) {
- onSettingsModified( {
- ...settings,
- prefers_common_names: true,
- prefers_scientific_name_first: false
- } );
- } else if ( value === "prefers_scientific_name_first" ) {
- onSettingsModified( {
- ...settings,
- prefers_common_names: true,
- prefers_scientific_name_first: true
- } );
- } else if ( value === "prefers_scientific_names" ) {
- onSettingsModified( {
- ...settings,
- prefers_common_names: false,
- prefers_scientific_name_first: false
- } );
- }
- }}
- >
- {Object.keys( TAXON_DISPLAY ).map( k => (
-
- ) )}
-
-
- {t( "Prioritize-common-names-used-in-this-place" )}
- onSettingsModified( { ...settings, place_id: p } )}
- />
-
-
- {t( "Community-Moderation-Settings" )}
-
- {
- onSettingsModified( { ...settings, prefers_community_taxa: v } );
- }}
- text={t( "Accept-community-identifications" )}
- />
-
- {t( "Who-can-add-observation-fields-to-my-observations" )}
-
-
- onSettingsModified( {
- ...settings,
- preferred_observation_fields_by: itemValue
- } )}
- >
- {Object.keys( ADD_OBSERVATION_FIELDS ).map( k => (
-
- ) )}
-
-
-
- {t( "Licensing" )}
- onSettingsModified( {
- ...settings,
- preferred_observation_license: v
- } )}
- updateExistingTitle="Update existing observations with new license choices"
- updateExisting={settings.make_observation_licenses_same}
- onUpdateExisting={v => onSettingsModified( {
- ...settings,
- make_observation_licenses_same: v
- } )}
- />
- onSettingsModified( { ...settings, preferred_photo_license: v } )}
- updateExistingTitle="Update existing photos with new license choices"
- updateExisting={settings.make_photo_licenses_same}
- onUpdateExisting={v => onSettingsModified( { ...settings, make_photo_licenses_same: v } )}
- />
- onSettingsModified( { ...settings, preferred_sound_license: v } )}
- updateExistingTitle="Update existing sounds with new license choices"
- updateExisting={settings.make_sound_licenses_same}
- onUpdateExisting={v => onSettingsModified( { ...settings, make_sound_licenses_same: v } )}
- />
- >
- );
-};
-
-export default SettingsContentDisplay;
diff --git a/src/components/Settings/SettingsNotifications.js b/src/components/Settings/SettingsNotifications.js
deleted file mode 100644
index 8cb904640..000000000
--- a/src/components/Settings/SettingsNotifications.js
+++ /dev/null
@@ -1,98 +0,0 @@
-// @flow
-
-import { Checkbox } from "components/SharedComponents";
-import { t } from "i18next";
-import type { Node } from "react";
-import React from "react";
-import { Text, View } from "react-native";
-import Switch from "react-native/Libraries/Components/Switch/Switch";
-import { textStyles, viewStyles } from "styles/settings/settings";
-
-import type { SettingsProps } from "./types";
-
-const EMAIL_NOTIFICATIONS = {
- Comments: "prefers_comment_email_notification",
- Identifications: "prefers_identification_email_notification",
- Mentions: "prefers_mention_email_notification",
- Messages: "prefers_message_email_notification",
- "Project journal posts": "prefers_project_journal_post_email_notification",
- // eslint-disable-next-line max-len
- "When a project adds your observations": "prefers_project_added_your_observation_email_notification",
- "Project curator changes": "prefers_project_curator_change_email_notification",
- "Taxonomy changes": "prefers_taxon_change_email_notification",
- "Observations by people I follow": "prefers_user_observation_email_notification",
- // eslint-disable-next-line max-len
- "Observations of taxa or from places that I subscribe to": "prefers_taxon_or_place_observation_email_notification"
-};
-
-const EmailNotification = ( { title, value, onValueChange } ): Node => (
-
-);
-
-const Notification = ( {
- title, description, value, onValueChange
-} ): Node => (
-
-
- {title}
- {description}
-
-
-
-
-
-);
-
-const SettingsNotifications = ( { settings, onSettingsModified }: SettingsProps ): Node => (
- <>
- {t( "iNaturalist-Activity-Notifications" )}
- onSettingsModified( { ...settings, prefers_receive_mentions: v } )}
- />
- onSettingsModified( {
- ...settings,
- prefers_redundant_identification_notifications: v
- } )}
- />
- {t( "Email-Notifications" )}
- onSettingsModified( { ...settings, prefers_no_email: !v } )}
- />
-
- {!settings.prefers_no_email
- && (
- <>
- {Object.keys( EMAIL_NOTIFICATIONS ).map( k => (
- onSettingsModified( { ...settings, [EMAIL_NOTIFICATIONS[k]]: v } )
- }
- />
- ) )}
- >
- )}
- >
-);
-
-export { EMAIL_NOTIFICATIONS, SettingsNotifications };
diff --git a/src/components/Settings/SettingsProfile.js b/src/components/Settings/SettingsProfile.js
deleted file mode 100644
index f17f26ec9..000000000
--- a/src/components/Settings/SettingsProfile.js
+++ /dev/null
@@ -1,97 +0,0 @@
-// @flow
-
-import { t } from "i18next";
-import type { Node } from "react";
-import React from "react";
-import {
- Button, Image, Text, TextInput, View
-} from "react-native";
-// $FlowIgnore
-import { launchImageLibrary } from "react-native-image-picker";
-import { viewStyles } from "styles/settings/settings";
-
-import type { SettingsProps } from "./types";
-
-const SettingsProfile = ( { settings, onSettingsModified }: SettingsProps ): Node => {
- let profileSource;
- if ( settings.newProfilePhoto && !settings.removeProfilePhoto ) {
- profileSource = { uri: settings.newProfilePhoto.uri };
- } else if (
- settings.icon && !settings.removeProfilePhoto ) {
- profileSource = { uri: settings.icon };
- } else {
- profileSource = require( "images/profile.png" );
- }
-
- const onImageSelected = response => {
- if ( response.didCancel ) { return; }
- onSettingsModified( {
- ...settings,
- newProfilePhoto: response.assets[0],
- removeProfilePhoto: false
- } );
- };
-
- return (
- <>
- {t( "Profile-Picture" )}
-
-
-
-
-
-
- {t( "Username" )}
- onSettingsModified( { ...settings, login: x } )}
- value={settings.login}
- />
-
-
- {t( "Email" )}
- onSettingsModified( { ...settings, email: x } )}
- value={settings.email}
- />
-
-
- {t( "Display-Name" )}
- onSettingsModified( { ...settings, name: x } )}
- value={settings.name}
- />
-
-
- {t( "Bio" )}
- onSettingsModified( { ...settings, description: x } )}
- value={settings.description}
- />
-
- >
- );
-};
-
-export default SettingsProfile;
diff --git a/src/components/Settings/UserSearchInput.js b/src/components/Settings/UserSearchInput.js
deleted file mode 100644
index ecf9d65bf..000000000
--- a/src/components/Settings/UserSearchInput.js
+++ /dev/null
@@ -1,87 +0,0 @@
-// import fetchSearchResults from "api/search";
-// import React, { useEffect } from "react";
-// import {
-// Image, Text, TextInput, View
-// } from "react-native";
-// import Pressable from "react-native/Libraries/Components/Pressable/Pressable";
-// import useAuthenticatedQuery from "sharedHooks/useAuthenticatedQuery";
-// import { textStyles, viewStyles } from "styles/settings/settings";
-// import { useDebounce } from "use-debounce";
-
-// const UserSearchInput = ( { onUserChanged } ): React.Node => {
-// const [hideResults, setHideResults] = React.useState( true );
-// const [userSearch, setUserSearch] = React.useState( "" );
-// // So we'll start searching only once the user finished typing
-// const [finalUserSearch] = useDebounce( userSearch, 500 );
-// const {
-// data: userResults
-// } = useAuthenticatedQuery(
-// ["fetchSearchResults", finalUserSearch],
-// optsWithAuth => fetchSearchResults( {
-// q: finalUserSearch,
-// sources: "users",
-// fields: "user.login,user.name,user.icon"
-// }, optsWithAuth )
-// );
-
-// useEffect( () => {
-// if ( finalUserSearch.length === 0 ) {
-// setHideResults( true );
-// }
-// }, [finalUserSearch] );
-
-// return (
-//
-//
-// {
-// setHideResults( false );
-// setUserSearch( v );
-// }}
-// value={userSearch}
-// />
-// {
-// setHideResults( true );
-// onUserChanged( null );
-// setUserSearch( "" );
-// }}
-// >
-//
-//
-//
-// {!hideResults && finalUserSearch.length > 0 && userResults?.map( result => (
-// {
-// setHideResults( true );
-// onUserChanged( result );
-// setUserSearch( result.login );
-// }}
-// >
-//
-// {result.login}
-// {result.name}
-//
-// ) )}
-//
-// );
-// };
-
-// export default UserSearchInput;
diff --git a/src/components/Settings/types.js b/src/components/Settings/types.js
deleted file mode 100644
index 06aab76d6..000000000
--- a/src/components/Settings/types.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// @flow
-
-export type SettingsProps = {
- settings: Object,
- onSettingsModified: Function
-}
diff --git a/src/components/SharedComponents/Checkbox.js b/src/components/SharedComponents/Checkbox.js
index 44317cb62..d2b0c4567 100644
--- a/src/components/SharedComponents/Checkbox.js
+++ b/src/components/SharedComponents/Checkbox.js
@@ -6,21 +6,21 @@ import React, { useMemo } from "react";
// eslint-disable-next-line import/no-extraneous-dependencies
import BouncyCheckbox from "react-native-bouncy-checkbox";
import { useTheme } from "react-native-paper";
-import { useTranslation } from "sharedHooks";
type Props = {
+ accessibilityLabel: string,
isChecked: boolean,
onPress: Function,
text: string
}
const Checkbox = ( {
+ accessibilityLabel,
isChecked = false,
onPress,
text
}: Props ): Node => {
const theme = useTheme( );
- const { t } = useTranslation( );
const renderCheckboxText = useMemo( ( ) => {
if ( !text ) { return null; }
@@ -57,8 +57,8 @@ const Checkbox = ( {
textComponent={renderCheckboxText}
iconStyle={iconStyle}
innerIconStyle={innerIconStyle}
+ accessibilityLabel={accessibilityLabel}
accessibilityRole="radio"
- accessibilityLabel={t( "Checkmark" )}
accessibilityState={{
checked: isChecked
}}
diff --git a/src/components/SharedComponents/DetailsMap.js b/src/components/SharedComponents/DetailsMap.js
index c886a6954..84d96c785 100644
--- a/src/components/SharedComponents/DetailsMap.js
+++ b/src/components/SharedComponents/DetailsMap.js
@@ -138,7 +138,7 @@ const DetailsMap = ( {
copyCoordinates( )}
- accessibilityLabel={t( "Copy-map-coordinates" )}
+ accessibilityLabel={t( "Copy-coordinates" )}
buttonClassName="top-0 left-0"
theme={theme}
/>
diff --git a/src/components/SharedComponents/TaxonResult.js b/src/components/SharedComponents/TaxonResult.js
index 40f89a53c..a559c4e01 100644
--- a/src/components/SharedComponents/TaxonResult.js
+++ b/src/components/SharedComponents/TaxonResult.js
@@ -18,6 +18,7 @@ import { useCurrentUser, useTaxon, useTranslation } from "sharedHooks";
import ConfidenceInterval from "./ConfidenceInterval";
type Props = {
+ accessibilityLabel: string,
activeColor?: string,
asListItem?: boolean,
clearBackground?: boolean,
@@ -36,6 +37,7 @@ type Props = {
};
const TaxonResult = ( {
+ accessibilityLabel,
activeColor,
asListItem = true,
clearBackground,
@@ -160,8 +162,7 @@ const TaxonResult = ( {
: theme.colors.secondary
}
onPress={() => handleCheckmarkPress( usableTaxon )}
- accessibilityLabel={t( "Checkmark" )}
- accessibilityHint={t( "Add-this-ID" )}
+ accessibilityLabel={accessibilityLabel}
testID={`${testID}.checkmark`}
/>
)}
diff --git a/src/components/SoundRecorder/SoundRecorder.js b/src/components/SoundRecorder/SoundRecorder.js
index 9eacc1c41..a38acf8cb 100644
--- a/src/components/SoundRecorder/SoundRecorder.js
+++ b/src/components/SoundRecorder/SoundRecorder.js
@@ -304,7 +304,7 @@ const SoundRecorder = (): Node => {
setExitWarningShown( false )}
diff --git a/src/components/Suggestions/Suggestion.js b/src/components/Suggestions/Suggestion.js
index c3371a303..69c78e70f 100644
--- a/src/components/Suggestions/Suggestion.js
+++ b/src/components/Suggestions/Suggestion.js
@@ -11,12 +11,18 @@ import {
} from "sharedHelpers/convertScores";
type Props = {
+ accessibilityLabel: string,
onTaxonChosen: Function,
suggestion: Object,
};
-const Suggestion = ( { suggestion, onTaxonChosen }: Props ): Node => (
+const Suggestion = ( {
+ accessibilityLabel,
+ suggestion,
+ onTaxonChosen
+}: Props ): Node => (
(
- ), [onTaxonChosen] );
+ ), [onTaxonChosen, t] );
const renderEmptyList = useCallback( ( ) => (
@@ -138,6 +139,7 @@ const Suggestions = ( {
{t( "TOP-ID-SUGGESTION" )}
diff --git a/src/components/Suggestions/TaxonSearch.js b/src/components/Suggestions/TaxonSearch.js
index f35d49cbe..b7008d44b 100644
--- a/src/components/Suggestions/TaxonSearch.js
+++ b/src/components/Suggestions/TaxonSearch.js
@@ -13,7 +13,7 @@ import React, {
} from "react";
import { FlatList } from "react-native";
import { useTheme } from "react-native-paper";
-import useTaxonSearch from "sharedHooks/useTaxonSearch";
+import { useTaxonSearch, useTranslation } from "sharedHooks";
import { getShadowStyle } from "styles/global";
import AddCommentPrompt from "./AddCommentPrompt";
@@ -34,6 +34,7 @@ const TaxonSearch = ( ): Node => {
const [taxonQuery, setTaxonQuery] = useState( "" );
const [selectedTaxon, setSelectedTaxon] = useState( null );
const taxonList = useTaxonSearch( taxonQuery );
+ const { t } = useTranslation( );
useNavigateWithTaxonSelected( selectedTaxon, { vision: false } );
@@ -41,13 +42,14 @@ const TaxonSearch = ( ): Node => {
const renderTaxonResult = useCallback( ( { item: taxon, index } ) => (
setSelectedTaxon( taxon )}
testID={`Search.taxa.${taxon.id}`}
first={index === 0}
fetchRemote={false}
/>
- ), [setSelectedTaxon] );
+ ), [setSelectedTaxon, t] );
return (
diff --git a/src/i18n/i18ncli.js b/src/i18n/i18ncli.js
index cc6d1489e..aa7aca8d3 100644
--- a/src/i18n/i18ncli.js
+++ b/src/i18n/i18ncli.js
@@ -209,7 +209,7 @@ async function untranslatable( ) {
console.log( "✅ No keys missing in strings.ftl" );
} else {
console.error(
- `❌ ${untranslatableKeys.length} keys found missing in strings.ftl: ${untranslatableKeys}`
+ `❌ ${untranslatableKeys.length} keys in use missing from strings.ftl: ${untranslatableKeys}`
);
process.exit( 1 );
}
diff --git a/src/i18n/initI18next.js b/src/i18n/initI18next.js
index a8ebfa4f0..5cf7f506a 100644
--- a/src/i18n/initI18next.js
+++ b/src/i18n/initI18next.js
@@ -34,6 +34,20 @@ export const I18NEXT_CONFIG = {
// Added since otherwise Android would crash - see here: https://stackoverflow.com/a/70521614 and https://www.i18next.com/misc/migration-guide
useSuspense: false,
defaultTransParent: Text
+ },
+ // For some reason this is how you pass options to i18next-fluent, per
+ // https://github.com/i18next/i18next-fluent?tab=readme-ov-file#options
+ i18nFormat: {
+ fluentBundleOptions: {
+ useIsolating: false,
+ functions: {
+ VOWORCON: ( [txt] ) => (
+ "aeiou".indexOf( txt[0].toLowerCase( ) ) >= 0
+ ? "vow"
+ : "con"
+ )
+ }
+ }
}
};
diff --git a/src/i18n/l10n/en.ftl b/src/i18n/l10n/en.ftl
index 34f0a55d2..a38a6ceb0 100644
--- a/src/i18n/l10n/en.ftl
+++ b/src/i18n/l10n/en.ftl
@@ -17,7 +17,7 @@
### result of performing an action on the accessibility element." We write
### them in third person singular ending with a period.
-# Header above user biography / user description on user profile
+# Header for a general description, e.g. of a user, or of iNaturalist itself
ABOUT = ABOUT
ABOUT-COLLECTION-PROJECTS = ABOUT COLLECTION PROJECTS
ABOUT-INATURALIST = ABOUT INATURALIST
@@ -26,17 +26,19 @@ ABOUT-THE-DQA = ABOUT THE DQA
About-the-DQA-description = The Quality Grade summarizes the accuracy, precision, completeness, relevance, and appropriateness of an iNaturalist observation as biodiversity data. Some attributes are automatically determined, while others are subject to a vote by iNat users. iNaturalist shares licensed "Research Grade" observations with a number of data partners for use in science and conservation.
ABOUT-TRADITIONAL-PROJECTS = ABOUT TRADITIONAL PROJECTS
ABOUT-UMBRELLA-PROJECTS = ABOUT UMBRELLA PROJECTS
-Accept-community-identifications = Accept community identifications
# Label for a taxon when a user prefers to see or hear the common name first
accessible-comname-sciname = { $commonName } ({ $scientificName })
# Label for a taxon when a user prefers to see or hear the scientific name first
accessible-sciname-comname = { $scientificName } ({ $commonName })
-Account = Account
ACTIVITY = ACTIVITY
+# Label for a button that adds a vote of agreement
+Add-agreement = Add agreement
ADD-AN-ID = ADD AN ID
ADD-COMMENT = ADD COMMENT
Add-comment = Add comment
Add-Date-Time = Add Date/Time
+# Label for a button that adds a vote of disagreement
+Add-disagreement = Add disagreement
ADD-EVIDENCE = ADD EVIDENCE
Add-favorite = Add favorite
Add-Location = Add Location
@@ -45,12 +47,17 @@ Add-Location = Add Location
Add-observations = Add observations
ADD-OPTIONAL-COMMENT = ADD OPTIONAL COMMENT
Add-optional-notes = Add optional notes
-Add-this-ID = Add this identification
-# Date relationship created, shown on settings relationships screen
-Added-on-date = Added on { $date }
+# Hint for a button that adds a vote of agreement
+Adds-your-vote-of-agreement = Adds your vote of agreement
+# Hint for a button that adds a vote of disagreement
+Adds-your-vote-of-disagreement = Adds your vote of disagreement
Affiliation = Affiliation: { $site }
+# Label for button that adds an identification of the same taxon as another identification
Agree = Agree
+# Label for button that adds an identification of the same taxon as another identification
AGREE = AGREE
+# Checkbox label that checks all of the consent agreements a user must make
+# before signing up
Agree-to-all-of-the-above = Agree to all of the above
AGREE-WITH-ID = AGREE WITH ID?
Agree-with-ID-description = Would you like to agree with the ID and suggest the following identification?
@@ -58,26 +65,27 @@ ALL = ALL
All = All
All-observations = All observations
All-organisms = All organisms
-# license code
+# As in intellectual property rights over a photo or other creative work
all-rights-reserved = all rights reserved
+# As in automated identification suggestions
ALL-SUGGESTIONS = ALL SUGGESTIONS
Almost-done = Almost done!
Already-have-an-account = Already have an account? Log in
An-Internet-connection-is-required = An Internet connection is required to load more observations.
+# Generic option in a menu of choices that indicates that any of the choices
+# would be acceptable
Any = Any
# Geoprivacy sheet descriptions
Anyone-using-iNaturalist-can-see = Anyone using iNaturalist can see where this species was observed, and scientists can most easily use it for research.
-app-authorized-on-date = { $appName } (authorized on: { $date })
APPLY-FILTERS = APPLY FILTERS
Apply-filters = Apply filters
+# Month of April
April = April
+# Short for Augmented Reality Camera. This is what we call the camera that
+# overlays identification suggestions in real time
AR-Camera = AR Camera
Are-you-a-teacher = Are you a teacher wanting to use iNaturalist with your students?
Are-you-sure-you-want-to-sign-out = Are you sure you want to sign out? This will delete all your observations on this device. It will not affect any observations you've uploaded to iNaturalist.
-Arrow-down-selected = Arrow down selected
-Arrow-down-unselected = Arrow down unselected
-Arrow-up-selected = Arrow up selected
-Arrow-up-unselected = Arrow up unselected
# Onboarding text on MyObservations: 0-10 observations
As-you-upload-more-observations = As you upload more observations, others in our community may be able to help you identify them!
attribution-cc-by = some rights reserved (CC BY)
@@ -86,12 +94,10 @@ attribution-cc-by-nc-nd = some rights reserved (CC BY-NC-ND)
attribution-cc-by-nc-sa = some rights reserved (CC BY-NC-SA)
attribution-cc-by-nd = some rights reserved (CC BY-ND)
attribution-cc-by-sa = some rights reserved (CC BY-SA)
+# Month of August
August = August
-Automatically-update-my-content-for-taxon-changes = Automatically update my content for taxon changes
# Returns user to login screen
BACK-TO-LOGIN = BACK TO LOGIN
-# Header for inserting user description in settings profile tab
-Bio = Bio
BLOG = BLOG
# Accessibility label for bulk import / photo import button
# These are used by screen readers to label actionable elements iOS: https://developer.apple.com/documentation/uikit/uiaccessibilityelement/1619577-accessibilitylabel
@@ -103,67 +109,92 @@ By-exiting-your-observations-not-saved = By exiting, your observations will not
By-exiting-your-photos-will-not-be-saved = By exiting, your photos will not be saved.
By-exiting-your-recorded-sound-will-not-be-saved = By exiting, your recorded sound will not be saved.
Camera = Camera
-Camera-flip = Camera-flip
CANCEL = CANCEL
Cancel = Cancel
Captive-Cultivated = Captive/Cultivated
+# "Casual" Data quality grade
Casual = Casual
+# Short label for the Creative Commons Attribution license
CC-BY = CC BY
+# Short label for the Creative Commons Attribution-NonCommercial license
CC-BY-NC = CC BY-NC
+# Short label for the Creative Commons Attribution-NonCommercial-NoDerivatives license
CC-BY-NC-ND = CC BY-NC-ND
+# Short label for the Creative Commons Attribution-NonCommercial-ShareAlike license
CC-BY-NC-SA = CC BY-NC-SA
+# Short label for the Creative Commons Attribution-NoDerivatives license
CC-BY-ND = CC BY-ND
+# Short label for the Creative Commons Attribution-ShareAlike license
CC-BY-SA = CC BY-SA
+# Short label for the Creative Commons Zero declaration
CC0 = CC0
+# Label for a button that changes a selected date
CHANGE-DATE = CHANGE DATE
+# Label for a button that changes a selected date
Change-date = Change date
+# Label for a button that changes a selected end date
CHANGE-END-DATE = CHANGE END DATE
+# Label for a button that changes a selected end date
Change-end-date = Change end date
Change-project = Change project
+# Label for a button that changes a selected start date
CHANGE-START-DATE = CHANGE START DATE
+# Label for a button that changes a selected start date
Change-start-date = Change start date
Change-taxon = Change taxon
+# Button that changes the taxon filter on Explore
+Change-taxon-filter = Change taxon filter
Change-user = Change user
# Label for a button that cycles through zoom levels for the camera
Change-zoom = Change zoom
Check-this-box-if-you-want-to-apply-a-Creative-Commons = Check this box if you want to apply a Creative Commons
-# After pressing the reset password button
+# Notification that appears after pressing the reset password button
CHECK-YOUR-EMAIL = CHECK YOUR EMAIL!
-Checkmark = Checkmark
# Text for a button prompting the user to grant access to the gallery
CHOOSE-PHOTOS = CHOOSE PHOTOS
+# Label for button that chooses a taxon
+Choose-taxon = Choose taxon
+# Label for a button that clears content, like the text entered in a text
+# field
Clear = Clear
+# Label for a button that closes a window or popup
Close = Close
-Close-add-observation-modal = Close add observation modal.
# Accessibility label for a button that closes the permission request screen
Close-permission-request-screen = Close permission request screen
+# Label for a button that closes a search interface
Close-search = Close search
+Closes-new-observation-options = Closes new observation options.
Closes-withdraw-id-sheet = Closes "Withdraw ID" sheet
+# Heading for a section that describes people and organizations that
+# collaborate with iNaturalist
COLLABORATORS = COLLABORATORS
Collection-Project = Collection Project
+# Button that combines multiple photos into a single observation
Combine-Photos = Combine Photos
+# Title for a form that let's you enter a comment
COMMENT = COMMENT
-# Accessibility label for a button that shows options for a comment
+# Label for a button that shows options for a comment
Comment-options = Comment options
+# Label for a setting that shows the common name first
Common-Name-Scientific-Name = Common Name (Scientific Name)
Community-Guidelines = Community Guidelines
-Community-Moderation-Settings = Community Moderation Settings
+# Button that confirms a choice the user has made
CONFIRM = CONFIRM
Connect-with-other-naturalists = Connect with other naturalists and engage in conversations.
-Connected-Accounts = Connected Accounts
Connection-problem-Please-try-again-later = Connection problem. Please try again later.
CONTACT-SUPPORT = CONTACT SUPPORT
CONTINUE = CONTINUE
-Coordinates-copied-to-keyboard = Coordinates copied to keyboard
+# Notification when coordinates have been copied
+Coordinates-copied-to-clipboard = Coordinates copied to clipboard
+# Button that copies coordinates to the clipboard
Copy-coordinates = Copy Coordinates
-Copy-map-coordinates = Copy map coordinates
# Right to control copies of a creative work; this string may be used as a
# heading to describe general information about rights, attribution, and
# licensing
Copyright = Copyright
Couldnt-create-comment = Couldn't create comment
Couldnt-create-identification-error = Couldn't create identification { $error }
-Couldnt-create-identification-unknown-error = Couldn't create identification, Unknown Error.
+Couldnt-create-identification-unknown-error = Couldn't create identification, unknown error.
CREATE-AN-ACCOUNT = CREATE AN ACCOUNT
Create-an-observation-evidence = Create an observation with no evidence
CREATE-YOUR-FIRST-OBSERVATION = CREATE YOUR FIRST OBSERVATION
@@ -171,12 +202,13 @@ DATA-QUALITY = DATA QUALITY
DATA-QUALITY-ASSESSMENT = DATA QUALITY ASSESSMENT
Data-quality-assessment-can-taxon-still-be-confirmed-improved-based-on-the-evidence = Based on the evidence, can the Community Taxon still be improved?
Data-quality-assessment-community-taxon-species-level-or-lower = Community taxon at species level or lower
+# Data Quality Assessment section label: whether or not the observation date is accurate
Data-quality-assessment-date-is-accurate = Date is accurate
-# checklist test for Data Quality Assessment of Observation Details
+# Data Quality Assessment section label: whether or not the observation date was specified
Data-quality-assessment-date-specified = Date specified
Data-quality-assessment-description-casual = This observation has not met the conditions for Research Grade status.
Data-quality-assessment-description-needs-id = This observation has not yet met the conditions for Research Grade status:
-# description for different quality grades in the DQA
+# Data Quality Assessment explanation when quality is Research Grade
Data-quality-assessment-description-research = It can now be used for research and featured on other websites.
Data-quality-assessment-evidence-of-organism = Evidence of organism
Data-quality-assessment-has-photos-or-sounds = Has Photos or Sounds
@@ -187,7 +219,7 @@ Data-quality-assessment-organism-is-wild = Organism is wild
Data-quality-assessment-recent-evidence-of-organism = Recent evidence of an organism
Data-quality-assessment-title-casual = This observation is Casual Grade
Data-quality-assessment-title-needs-id = This observation Needs ID
-# declares the current data quality status of the observation
+# declares the current data quality status of the observation when quality is Research Grade
Data-quality-assessment-title-research = This observation is Research Grade!
Data-quality-casual-description = This observation needs more information verified to be considered verifiable
Data-quality-needs-id-description = This observation needs more identifications to reach research grade
@@ -207,9 +239,12 @@ Date-hours = { $count }h
Date-minutes = { $count }m
DATE-OBSERVED = DATE OBSERVED
Date-observed = Date observed
+Date-observed-header-short = Observed
DATE-OBSERVED-NEWEST = DATE OBSERVED - NEWEST TO OLDEST
DATE-OBSERVED-OLDEST = DATE OBSERVED - OLDEST TO NEWEST
+# Label for controls over a range of dates
Date-Range = Date Range
+# Label for controls over a range of dates
DATE-RANGE = DATE RANGE
# Used when displaying a relative time - in this case, shows an absolute date (e.g. 12/31/22)
Date-short-format = MM/dd/yy
@@ -222,18 +257,17 @@ DATE-UPLOADED-NEWEST = DATE UPLOADED - NEWEST TO OLDEST
DATE-UPLOADED-OLDEST = DATE UPLOADED - OLDEST TO NEWEST
# Used when displaying a relative time - in this case, X weeks ago (e.g. 3w = 3 weeks ago)
Date-weeks = { $count }w
-Date_observed_header_short = Observed
# Date formatting using date-fns
# See complete list of formatting styles: https://date-fns.org/v2.29.3/docs/format
datetime-format-short = M/d/yy h:mm a
+# Month of December
December = December
-Default-Search-Place = Default Search Place
DELETE = DELETE
Delete-all-observations = Delete all observations
Delete-comment = Delete comment
-DELETE-COMMENT-QUESTION = DELETE COMMENT?
-DELETE-OBSERVATION = DELETE OBSERVATION?
+DELETE-COMMENT--question = DELETE COMMENT?
Delete-observation = Delete observation
+DELETE-OBSERVATION--question = DELETE OBSERVATION?
# Button label or accessibility label for an element that deletes a photo
Delete-photo = Delete photo
Delete-sound = Delete sound
@@ -248,28 +282,29 @@ Deleting-x-of-y-observations =
# Tab label or section title for content that describes further details, e.g.
# the details of an observation
DETAILS = DETAILS
+# Button that disables the camera's flash
Disable-flash = Disable flash
+# Button that discards changes or an item, e.g. a photo
DISCARD = DISCARD
+# Button that discards all items, e.g. imported photos
DISCARD-ALL = DISCARD ALL
+# Button that discards changes
DISCARD-CHANGES = DISCARD CHANGES
DISCARD-FILTER-CHANGES = DISCARD FILTER CHANGES
-DISCARD-MEDIA = DISCARD MEDIA?
+DISCARD-MEDIA--question = DISCARD MEDIA?
DISCARD-OBSERVATION = DISCARD OBSERVATION
-DISCARD-PHOTOS = DISCARD PHOTOS?
+DISCARD-PHOTOS--question = DISCARD PHOTOS?
# Label for a button that discards a sound recording
DISCARD-RECORDING = DISCARD RECORDING
# Header of a popup confirming that the user wants to discard a sound
# recording
-DISCARD-SOUND-header = DISCARD SOUND?
+DISCARD-SOUND--question = DISCARD SOUND?
DISCARD-X-OBSERVATIONS =
{ $count ->
[one] DISCARD OBSERVATION
*[other] DISCARD { $count } OBSERVATIONS
}
DISMISS = DISMISS
-Display = Display
-Display-Name = Display Name
-Do-not-collect-stability-and-usage-data-using-third-party-services = Do not collect stability and usage data using third-party services
DONATE = DONATE
DONATE-TO-INATURALIST = DONATE TO INATURALIST
Donate-to-iNaturalist = Donate to iNaturalist
@@ -277,6 +312,7 @@ Donate-to-iNaturalist = Donate to iNaturalist
DONE = DONE
Dont-have-an-account = Don't have an account? Sign up
During-app-start-no-model-found = During app start there was no computer vision model found. There will be no AR camera.
+# Button for editing something
Edit = Edit
EDIT-COMMENT = EDIT COMMENT
Edit-comment = Edit comment
@@ -284,12 +320,13 @@ EDIT-LOCATION = EDIT LOCATION
# Label for interactive element that takes you to a location choosing screen
Edit-location = Edit location
Edit-Observation = Edit Observation
+# Label for button that edits an observation's taxon
+Edits-this-observations-taxon = Edits this observation's taxon
EMAIL = EMAIL
-# Appears above the email text field
-Email = email
EMAIL-DEBUG-LOGS = EMAIL DEBUG LOGS
-Email-Notifications = Email Notifications
+# Button that enables the camera's flash
Enable-flash = Enable flash
+# Indicates a species only occurs in a specific place
Endemic = Endemic
# TODO this and many other uses of placeables are not currently translatable
# without knowing the vowel/consonant state of the first letter of the
@@ -316,12 +353,12 @@ EXPLORE-IDENTIFIERS = EXPLORE IDENTIFIERS
EXPLORE-OBSERVATIONS = EXPLORE OBSERVATIONS
EXPLORE-OBSERVERS = EXPLORE OBSERVERS
EXPLORE-SPECIES = EXPLORE SPECIES
-External-Applications = External Applications
Failed-to-delete-sound = Failed to delete sound
# Error message with log in fails
Failed-to-log-in = Failed to log in
# Header for featured projects
FEATURED = FEATURED
+# Month of February
February = February
Fetching-location = Fetching location...
Filter = Filter
@@ -341,8 +378,9 @@ Flag-Item-Other-Input-Hint = Specify the reason you're flagging this item
# Status when an item has been flagged
Flagged = Flagged
Flash = flash
+# Label for a button that toggles between the front and back cameras
+Flip-camera = Flip camera
FOLLOW = FOLLOW
-Following = Following
# Forgot password link
Forgot-Password = Forgot Password
GEOPRIVACY = GEOPRIVACY
@@ -391,8 +429,6 @@ IMPORT-X-OBSERVATIONS =
# Identification category
improving--identification = Improving
INATURALIST-ACCOUNT-SETTINGS = INATURALIST ACCOUNT SETTINGS
-iNaturalist-Activity-Notifications = iNaturalist Activity Notifications
-iNaturalist-Applications = iNaturalist Applications
iNaturalist-can-save-photos-you-take-in-the-app-to-your-devices-gallery = iNaturalist can save photos you take in the app to your device’s gallery.
INATURALIST-COMMUNITY = INATURALIST COMMUNITY
INATURALIST-FORUM = INATURALIST FORUM
@@ -408,7 +444,6 @@ iNaturalist-is-supported-by-community = iNaturalist is supported by our amazing
iNaturalist-mission-is-to-connect = iNaturalist's mission is to connect people to nature and advance biodiversity science and conservation.
INATURALIST-MISSION-VISION = INATURALIST'S MISSION & VISION
INATURALIST-NETWORK = INATURALIST NETWORK
-iNaturalist-Network-Affiliation = iNaturalist Network Affiliation
INATURALIST-SETTINGS = INATURALIST SETTINGS
# Label for the role a user plays on iNaturalist, e.g. "INATURALIST STAFF"
# or "INATURALIST CURATOR". Since the name "INATURALIST" should not be
@@ -429,6 +464,7 @@ Internet-Connection-Required = Internet Connection Required
Intl-number = { $val }
Introduced = Introduced
Introduced-to-place = Introduced to { $place }
+# Month of January
January = January
JOIN = JOIN
JOIN-PROJECT = JOIN PROJECT
@@ -442,9 +478,10 @@ JOURNAL-POSTS-WITHOUT-NUMBER =
[one] JOURNAL POST
*[other] JOURNAL POSTS
}
+# Month of July
July = July
+# Month of June
June = June
-Language-Locale = Language/Locale
# Shows date user last active on iNaturalist on user profile
Last-Active-date = Last Active: { $date }
# Latitude, longitude on a single line on a single line
@@ -458,7 +495,6 @@ LEAVE = LEAVE
LEAVE-PROJECT = LEAVE PROJECT
LEAVE-US-A-REVIEW = LEAVE US A REVIEW!
LICENSES = LICENSES
-Licensing = Licensing
List-view = List view
Loading-iNaturalists-AR-Camera = Loading iNaturalist's AR Camera
LOCATION = LOCATION
@@ -482,9 +518,11 @@ Lowest = Lowest
LOWEST-RANK = LOWEST RANK
MAP = MAP
Map-Area = Map Area
+# Month of March
March = March
# Identification category
maverick--identification = Maverick
+# Month of May
May = May
MEDIA = MEDIA
MEMBERS-WITHOUT-NUMBER =
@@ -502,36 +540,37 @@ MONTHS = MONTHS
More-info = More info
MOST-FAVED = MOST FAVED
Most-faved = Most faved
-Names = Names
Native = Native
Native-to-place = Native to { $place }
-Navigates-to-add-identification = Navigates to add identification.
-Navigates-to-AR-camera = Navigates to AR camera.
-Navigates-to-bulk-importer = Navigates to bulk importer.
-Navigates-to-camera = Navigates to camera.
-Navigates-to-explore = Navigates to explore.
+Navigates-to-AR-camera = Navigates to AR camera
+Navigates-to-bulk-importer = Navigates to bulk importer
+Navigates-to-camera = Navigates to camera
+Navigates-to-explore = Navigates to explore
Navigates-to-notifications = Navigates to notifications
-Navigates-to-observation-details = Navigates to observation details screen.
-Navigates-to-observation-edit-screen = Navigate to observation edit screen.
-Navigates-to-observations = Navigates to observations.
-Navigates-to-photo-importer = Navigate to photo importer.
-Navigates-to-previous-screen = Navigate to previous screen
-Navigates-to-project-details = Navigate to project details
-Navigates-to-sound-recorder = Navigates to sound recorder.
-Navigates-to-suggest-identification = Navigates to suggest identification.
-Navigates-to-suggestions = Navigates to suggestions
+Navigates-to-observation-details = Navigates to observation details screen
+Navigates-to-observation-edit-screen = Navigate to observation edit screen
+Navigates-to-photo-importer = Navigates to photo importer
+Navigates-to-previous-screen = Navigates to previous screen
+Navigates-to-project-details = Navigates to project details
+Navigates-to-sound-recorder = Navigates to sound recorder
+Navigates-to-suggest-identification = Navigates to suggest identification
Navigates-to-taxon-details = Navigates to taxon details
-Navigates-to-user-profile = Navigates to user profile.
+Navigates-to-user-profile = Navigates to user profile
+# Label for button that takes you to your observations
+Navigates-to-your-observations = Navigates to your observations
# Header for nearby projects
NEARBY = NEARBY
Nearby = Nearby
NEARBY-SUGGESTIONS = NEARBY SUGGESTIONS
Needs-ID = Needs ID
+# Heading when creating a new observation
New-Observation = New Observation
+# Sort order, refers to newest or oldest date
Newest-to-oldest = Newest to oldest
Next-observation = Next observation
No-Location = No Location
No-Media = No Media
+# As in a machine learning model that powers automated suggestions
No-model-found = No model found
No-Notifications-Found = You have no notifications! Get started by creating your own observations.
No-projects-match-that-search = No projects match that search
@@ -549,6 +588,7 @@ Notifications = Notifications
notifications-user-added-comment-to-observation-by-you = <0>{ $userName }0> added a comment to an observation by you
# notification when someone adds an identification to your observation
notifications-user-added-identification-to-observation-by-you = <0>{ $userName }0> added an identification to an observation by you
+# Month of November
November = November
Obervations-must-be-manually-added = Observations must be manually added to a traditional project, either during the upload stage or after the observation has been shared to iNaturalist. A user must also join a traditional project in order to add their observations to it.
Obscured = Obscured
@@ -566,6 +606,8 @@ Observation-with-no-evidence = Observation with no evidence
Observations = Observations
Observations-created-on-iNaturalist = Observations created on iNaturalist are used by scientists around the world.
Observations-View = Observations View
+# Might be used when the number is represented using an image or other
+# element, not text
OBSERVATIONS-WITHOUT-NUMBER =
{ $count ->
[one] OBSERVATION
@@ -573,6 +615,7 @@ OBSERVATIONS-WITHOUT-NUMBER =
}
# Onboarding text on MyObservations: Onboarding text on MyObservations: 11-50 observations
Observations-you-upload-to-iNaturalist = Observations you upload to iNaturalist can be used by scientists and researchers worldwide.
+# Button that starts a new observation
Observe = Observe
# Title of screen asking for permission to access the gallery
Observe-and-identify-organisms-from-your-gallery = Observe and identify organisms from your gallery
@@ -581,7 +624,9 @@ Observe-and-identify-organisms-in-real-time-with-your-camera = Observe and ident
# Text for a button prompting the user to grant access to the camera
OBSERVE-ORGANISMS = OBSERVE ORGANISMS
Observers = Observers
+# Section in Explore that shows people who added observations given a set of search filters
Observers-View = Observers View
+# Month of October
October = October
Offensive-Inappropriate = Offensive/Inappropriate
Offensive-Inappropriate-Examples = Misleading or illegal content, racial or ethnic slurs, etc. For more on our defintion of "appropriate," see the FAQ.
@@ -589,8 +634,10 @@ Offline-DQA-description = The DQA may not be accurate. Check your internet conne
Offline-No-Notifications = Cannot fetch notifications at this time.
# Generic confirmation, e.g. button on a warning alert
OK = OK
+# Sort order, refers to newest or oldest date
Oldest-to-newest = Oldest to newest
One-last-step = One last step!
+# Adjective, as in geoprivacy
Open = Open
Open-drawer = Open drawer
OPEN-EMAIL = OPEN EMAIL
@@ -631,15 +678,14 @@ Please-try-again-when-you-are-connected-to-the-internet = Please try again when
# Help text for beginning a sound recording
Press-record-to-start = Press record to start
Previous-observation = Previous observation
-Prioritize-common-names-used-in-this-place = Prioritize common names used in this place.
-Privacy = Privacy
Privacy-Policy = Privacy Policy
Private = Private
-Profile-Picture = Profile Picture
+# As in an iNat project, a collection of observations or observation search filters
PROJECT = PROJECT
PROJECT-REQUIREMENTS = PROJECT REQUIREMENTS
-Project-Settings = Project Settings
+# As in iNat project, collections of observations or observation search filters
PROJECTS = PROJECTS
+# As in iNat projects, collections of observations or observation search filters
Projects = Projects
QUALITY-GRADE = QUALITY GRADE
# Shortened display of an observation's quality grade (used when displayed in a badge) - in this case, Casual
@@ -689,6 +735,7 @@ Ranks-VARIETY = VARIETY
Ranks-ZOOSECTION = ZOOSECTION
Ranks-ZOOSUBSECTION = ZOOSUBSECTION
Read-more-on-Wikipedia = Read more on Wikipedia
+# Heading for the sound recorder
RECORD-NEW-SOUND = RECORD NEW SOUND
# Title of screen asking for permission to access the microphone
Record-organism-sounds-with-the-microphone = Record organism sounds with the microphone
@@ -697,12 +744,20 @@ RECORD-SOUND = RECORD SOUND
Record-sounds = Record sounds with your microphone
# Imperative verb for recording a sound
Record-verb = Record
+# Status while recording a sound
Recording-sound = Recording sound
Recording-stopped-Tap-play-the-current-recording = Recording stopped. Tap play the current recording.
REDO-SEARCH-IN-MAP-AREA = REDO SEARCH IN MAP AREA
+# Label for a button that removes a vote of agreement
+Remove-agreement = Remove agreement
+# Label for a button that removes a vote of disagreement
+Remove-disagreement = Remove disagreement
Remove-favorite = Remove favorite
Remove-Photos = Remove Photos
-Remove-Relationship = Remove Relationship
+# Hint for a button that removes a vote of agreement
+Removes-your-vote-of-agreement = Removes your vote of agreement
+# Hint for a button that removes a vote of disagreement
+Removes-your-vote-of-disagreement = Removes your vote of disagreement
# Quality grade option
Research-Grade = Research Grade
Reset = Reset
@@ -725,7 +780,6 @@ REVIEW-INATURALIST = REVIEW INATURALIST
# reviewed the observations or not
REVIEWED = REVIEWED
Reviewed-observations-only = Reviewed observations only
-Revoke = Revoke
# Label for the satellite map type
Satellite--map-type = Satellite
# Label for a button that persists something
@@ -741,7 +795,9 @@ Saved-Observation = Saved observation, in queue to upload
Scan-the-area-around-you-for-organisms = Scan the area around you for organisms.
Scientific-Name = Scientific Name
Scientific-Name-Common-Name = Scientific Name (Common Name)
+# Title for a search interface
SEARCH = SEARCH
+# Title for a search interface
Search = Search
SEARCH-FOR-A-LOCATION = SEARCH FOR A LOCATION
Search-for-a-project = Search for a project
@@ -770,6 +826,7 @@ Select-the-identification-you-want-to-add = Select the identification you want t
Select-user = Select user
Selects-iconic-taxon-X-for-identification = Selects iconic taxon { $iconicTaxon } for identification.
Separate-Photos = Separate Photos
+# Month of September
September = September
SETTINGS = SETTINGS
Settings = Settings
@@ -780,6 +837,8 @@ Share-map = Share map
SHOP-INATURALIST-MERCH = SHOP INATURALIST MERCH
Shop-iNaturalist-Merch = Shop iNaturalist Merch
Show-observation-options = Show observation options.
+# Label for button that shows identification suggestions
+Shows-identification-suggestions = Shows identification suggestions
Shows-iNaturalist-bird-logo = Shows iNaturalist bird logo.
Sign-out = Sign out
Some-data-privacy-laws = Some data privacy laws, like the European Union's General Data Protection Regulation (GDPR), require explicit consent to transfer personal information from their jurisdictions to other jurisdictions where the legal protection of this information is not considered adequate. As of 2020, the European Union no longer considers the United States to be a jurisdiction that provides adequate legal protection of personal information, specifically because of the possibility of the US government surveilling data entering the US. It is possible other jurisdictions may have the same opinion.
@@ -840,7 +899,6 @@ TAXON-NAMES-DISPLAY = TAXON NAMES DISPLAY
TAXONOMIC-RANKS = TAXONOMIC RANKS
# Header for a block of text describing a taxon's taxonomy
TAXONOMY-header = TAXONOMY
-Taxonomy-Settings = Taxonomy Settings
TEACHERS = TEACHERS
Teachers-Guide = Teachers' Guide
TEAM = TEAM
@@ -848,27 +906,21 @@ Terms-of-Use = Terms of Use
Text-Box-to-Describe-Reason-for-Flag = Text box to describe reason for flag.
The-exact-location-will-be-hidden = The exact location will be hidden publicly, and instead generalized to a larger area. (Threatened and endangered species are automatically obscured).
The-iNaturalist-Network = The iNaturalist network is a collection of localized websites that are fully connected to the global iNaturalist community. Network sites are supported by local institutions that promote local use and facilitate the use of data from iNaturalist to benefit local biodiversity.
-The-iNaturalist-Network-is-a-collection-of-localized-websites = The iNaturalist Network is a collection of localized websites that are fully connected to the global iNaturalist community. Network sites are supported by local institutions that have signed an agreement with iNaturalist to promote local use and benefit local biodiversity. They have access to true coordinates from their countries that are automatically obscured from public view in order to protect threatened species. Your username and password works on all sites that are part of the iNaturalist Network. If you choose to affiliate with a Network site, the local institutions that operate each site will also have access to your email address (only to communicate with you about site activities) and access to the true coordinates for observations that are publicly obscured or private. Note: Please do not experimentally change your affiliation if you have more than 1000 observations.
The-iNaturalist-team-has-collaborated = The iNaturalist team has collaborated with...
The-location-will-not-be-visible = The location will not be visible to others, which means it may be difficult to identify.
There-is-no-way = There is no way to have an iNaturalist account without storing personal information, so the only way to revoke this consent is to delete your account.
# Wild status sheet descriptions
This-is-a-wild-organism = This is a wild organism and wasn't placed in this location by humans.
-This-is-how-all-taxon-names-will-be-displayed-to-you-across-iNaturalist = This is how all taxon names will be displayed to you across iNaturalist
This-is-how-taxon-names-will-be-displayed = This is how all taxon names will be displayed to you across iNaturalist:
This-observer-has-opted-out-of-the-Community-Taxon = This observer has opted out of the Community Taxon
This-organism-was-placed-by-humans = This organism was placed in this location by humans. This applies to things like garden plants, pets, and zoo animals.
-This-sets-your-language-and-date-formatting-preferences-across-iNaturalist = This sets your language and date formatting preferences across iNaturalist based on your locale.
-This-will-be-your-default-place-for-all-searches-in-Explore-and-Identify = This will be your default place for all searches in Explore and Identify.
To-access-all-other-settings = To access all other account settings, click here:
To-learn-more-about-what-information = To learn more about what information we collect and how we use it, please see our Privacy Policy and our Terms of Use.
To-sync-your-observations-to-iNaturalist = To sync your observations to iNaturalist, please log in.
Toggle-map-type = Toggle map type
TOP-ID-SUGGESTION = TOP ID SUGGESTION
Traditional-Project = Traditional Project
-Trust-with-hidden-coordinates = Trust with hidden coordinates
Umbrella-Project = Umbrella Project
-Unblock = Unblock
UNFOLLOW = UNFOLLOW
UNFOLLOW-USER = UNFOLLOW USER?
# Text to show when a taxon or identification is unknown or missing
@@ -878,7 +930,6 @@ Unknown--user = Unknown
# Generic error message
Unknown-error = Unknown error
Unknown-organism = Unknown organism
-Unmute = Unmute
Unreviewed-observations-only = Unreviewed observations only
Upload-Complete = Upload Complete
Upload-in-progress = Upload in progress
@@ -911,7 +962,6 @@ Use-your-devices-microphone-to-record = Use your device’s microphone to record
USER = USER
User = User { $userHandle }
USERNAME = USERNAME
-Username = Username
# Appears above the text fields
USERNAME-OR-EMAIL = USERNAME OR EMAIL
Using-iNaturalist-requires-the-storage = Using iNaturalist requires the storage of personal information like your email address, all iNaturalist data is stored in the United States, and we cannot be sure what legal jurisdiction you are in when you are using iNaturalist, so in order to comply with privacy laws like the GDPR, you must acknowledge that you understand and accept this risk and consent to transferring your personal information to iNaturalist's servers in the US.
@@ -926,6 +976,8 @@ View-photo = View photo
View-photo-licensing-info = View photo licensing info
VIEW-PROJECT-REQUIREMENTS = VIEW PROJECT REQUIREMENTS
VIEW-PROJECTS = VIEW PROJECTS
+# Label for a button that shows identification suggestions for an observation
+# or photo
View-suggestions = View suggestions
VIEW-TEACHERS-GUIDE = VIEW TEACHERS' GUIDE
# Title for a notice informing the user that they are viewing offline
@@ -939,8 +991,6 @@ Welcome-to-iNaturalist = Welcome to iNaturalist!
Welcome-user = <0>Welcome back,0><1>{ $userHandle }1>
WHAT-IS-INATURALIST = WHAT IS INATURALIST?
Whats-more-by-recording = What's more, by recording and sharing your observations, you'll create research-quality data for scientists working to better understand and protect nature. So if you like recording your findings from the outdoors, or if you just like learning about life, join us!
-Which-traditional-projects-can-add-your-observations = Which traditional projects can add your observations?
-Who-can-add-observation-fields-to-my-observations = Who can add observation fields to my observations?
WIKIPEDIA = WIKIPEDIA
Wild = Wild
WILD-STATUS = WILD STATUS
diff --git a/src/i18n/l10n/en.ftl.json b/src/i18n/l10n/en.ftl.json
index 0f2db03f5..a5bfd8598 100644
--- a/src/i18n/l10n/en.ftl.json
+++ b/src/i18n/l10n/en.ftl.json
@@ -1,6 +1,6 @@
{
"ABOUT": {
- "comment": "Header above user biography / user description on user profile",
+ "comment": "Header for a general description, e.g. of a user, or of iNaturalist itself",
"val": "ABOUT"
},
"ABOUT-COLLECTION-PROJECTS": "ABOUT COLLECTION PROJECTS",
@@ -12,7 +12,6 @@
"About-the-DQA-description": "The Quality Grade summarizes the accuracy, precision, completeness, relevance, and appropriateness of an iNaturalist observation as biodiversity data. Some attributes are automatically determined, while others are subject to a vote by iNat users. iNaturalist shares licensed \"Research Grade\" observations with a number of data partners for use in science and conservation.",
"ABOUT-TRADITIONAL-PROJECTS": "ABOUT TRADITIONAL PROJECTS",
"ABOUT-UMBRELLA-PROJECTS": "ABOUT UMBRELLA PROJECTS",
- "Accept-community-identifications": "Accept community identifications",
"accessible-comname-sciname": {
"comment": "Label for a taxon when a user prefers to see or hear the common name first",
"val": "{ $commonName } ({ $scientificName })"
@@ -21,12 +20,19 @@
"comment": "Label for a taxon when a user prefers to see or hear the scientific name first",
"val": "{ $scientificName } ({ $commonName })"
},
- "Account": "Account",
"ACTIVITY": "ACTIVITY",
+ "Add-agreement": {
+ "comment": "Label for a button that adds a vote of agreement",
+ "val": "Add agreement"
+ },
"ADD-AN-ID": "ADD AN ID",
"ADD-COMMENT": "ADD COMMENT",
"Add-comment": "Add comment",
"Add-Date-Time": "Add Date/Time",
+ "Add-disagreement": {
+ "comment": "Label for a button that adds a vote of disagreement",
+ "val": "Add disagreement"
+ },
"ADD-EVIDENCE": "ADD EVIDENCE",
"Add-favorite": "Add favorite",
"Add-Location": "Add Location",
@@ -36,15 +42,27 @@
},
"ADD-OPTIONAL-COMMENT": "ADD OPTIONAL COMMENT",
"Add-optional-notes": "Add optional notes",
- "Add-this-ID": "Add this identification",
- "Added-on-date": {
- "comment": "Date relationship created, shown on settings relationships screen",
- "val": "Added on { $date }"
+ "Adds-your-vote-of-agreement": {
+ "comment": "Hint for a button that adds a vote of agreement",
+ "val": "Adds your vote of agreement"
+ },
+ "Adds-your-vote-of-disagreement": {
+ "comment": "Hint for a button that adds a vote of disagreement",
+ "val": "Adds your vote of disagreement"
},
"Affiliation": "Affiliation: { $site }",
- "Agree": "Agree",
- "AGREE": "AGREE",
- "Agree-to-all-of-the-above": "Agree to all of the above",
+ "Agree": {
+ "comment": "Label for button that adds an identification of the same taxon as another identification",
+ "val": "Agree"
+ },
+ "AGREE": {
+ "comment": "Label for button that adds an identification of the same taxon as another identification",
+ "val": "AGREE"
+ },
+ "Agree-to-all-of-the-above": {
+ "comment": "Checkbox label that checks all of the consent agreements a user must make\nbefore signing up",
+ "val": "Agree to all of the above"
+ },
"AGREE-WITH-ID": "AGREE WITH ID?",
"Agree-with-ID-description": "Would you like to agree with the ID and suggest the following identification?",
"ALL": "ALL",
@@ -52,29 +70,36 @@
"All-observations": "All observations",
"All-organisms": "All organisms",
"all-rights-reserved": {
- "comment": "license code",
+ "comment": "As in intellectual property rights over a photo or other creative work",
"val": "all rights reserved"
},
- "ALL-SUGGESTIONS": "ALL SUGGESTIONS",
+ "ALL-SUGGESTIONS": {
+ "comment": "As in automated identification suggestions",
+ "val": "ALL SUGGESTIONS"
+ },
"Almost-done": "Almost done!",
"Already-have-an-account": "Already have an account? Log in",
"An-Internet-connection-is-required": "An Internet connection is required to load more observations.",
- "Any": "Any",
+ "Any": {
+ "comment": "Generic option in a menu of choices that indicates that any of the choices\nwould be acceptable",
+ "val": "Any"
+ },
"Anyone-using-iNaturalist-can-see": {
"comment": " Geoprivacy sheet descriptions",
"val": "Anyone using iNaturalist can see where this species was observed, and scientists can most easily use it for research."
},
- "app-authorized-on-date": "{ $appName } (authorized on: { $date })",
"APPLY-FILTERS": "APPLY FILTERS",
"Apply-filters": "Apply filters",
- "April": "April",
- "AR-Camera": "AR Camera",
+ "April": {
+ "comment": "Month of April",
+ "val": "April"
+ },
+ "AR-Camera": {
+ "comment": "Short for Augmented Reality Camera. This is what we call the camera that\noverlays identification suggestions in real time",
+ "val": "AR Camera"
+ },
"Are-you-a-teacher": "Are you a teacher wanting to use iNaturalist with your students?",
"Are-you-sure-you-want-to-sign-out": "Are you sure you want to sign out? This will delete all your observations on this device. It will not affect any observations you've uploaded to iNaturalist.",
- "Arrow-down-selected": "Arrow down selected",
- "Arrow-down-unselected": "Arrow down unselected",
- "Arrow-up-selected": "Arrow up selected",
- "Arrow-up-unselected": "Arrow up unselected",
"As-you-upload-more-observations": {
"comment": "Onboarding text on MyObservations: 0-10 observations",
"val": "As you upload more observations, others in our community may be able to help you identify them!"
@@ -85,16 +110,14 @@
"attribution-cc-by-nc-sa": "some rights reserved (CC BY-NC-SA)",
"attribution-cc-by-nd": "some rights reserved (CC BY-ND)",
"attribution-cc-by-sa": "some rights reserved (CC BY-SA)",
- "August": "August",
- "Automatically-update-my-content-for-taxon-changes": "Automatically update my content for taxon changes",
+ "August": {
+ "comment": "Month of August",
+ "val": "August"
+ },
"BACK-TO-LOGIN": {
"comment": "Returns user to login screen",
"val": "BACK TO LOGIN"
},
- "Bio": {
- "comment": "Header for inserting user description in settings profile tab",
- "val": "Bio"
- },
"BLOG": "BLOG",
"Bulk-importer": {
"comment": "Accessibility label for bulk import / photo import button\nThese are used by screen readers to label actionable elements iOS: https://developer.apple.com/documentation/uikit/uiaccessibilityelement/1619577-accessibilitylabel\niOS Guidelines \"A string that succinctly identifies the accessibility element.\" Starts with capital letter, no ending punctuation.",
@@ -106,26 +129,71 @@
"By-exiting-your-photos-will-not-be-saved": "By exiting, your photos will not be saved.",
"By-exiting-your-recorded-sound-will-not-be-saved": "By exiting, your recorded sound will not be saved.",
"Camera": "Camera",
- "Camera-flip": "Camera-flip",
"CANCEL": "CANCEL",
"Cancel": "Cancel",
"Captive-Cultivated": "Captive/Cultivated",
- "Casual": "Casual",
- "CC-BY": "CC BY",
- "CC-BY-NC": "CC BY-NC",
- "CC-BY-NC-ND": "CC BY-NC-ND",
- "CC-BY-NC-SA": "CC BY-NC-SA",
- "CC-BY-ND": "CC BY-ND",
- "CC-BY-SA": "CC BY-SA",
- "CC0": "CC0",
- "CHANGE-DATE": "CHANGE DATE",
- "Change-date": "Change date",
- "CHANGE-END-DATE": "CHANGE END DATE",
- "Change-end-date": "Change end date",
+ "Casual": {
+ "comment": "\"Casual\" Data quality grade",
+ "val": "Casual"
+ },
+ "CC-BY": {
+ "comment": "Short label for the Creative Commons Attribution license",
+ "val": "CC BY"
+ },
+ "CC-BY-NC": {
+ "comment": "Short label for the Creative Commons Attribution-NonCommercial license",
+ "val": "CC BY-NC"
+ },
+ "CC-BY-NC-ND": {
+ "comment": "Short label for the Creative Commons Attribution-NonCommercial-NoDerivatives license",
+ "val": "CC BY-NC-ND"
+ },
+ "CC-BY-NC-SA": {
+ "comment": "Short label for the Creative Commons Attribution-NonCommercial-ShareAlike license",
+ "val": "CC BY-NC-SA"
+ },
+ "CC-BY-ND": {
+ "comment": "Short label for the Creative Commons Attribution-NoDerivatives license",
+ "val": "CC BY-ND"
+ },
+ "CC-BY-SA": {
+ "comment": "Short label for the Creative Commons Attribution-ShareAlike license",
+ "val": "CC BY-SA"
+ },
+ "CC0": {
+ "comment": "Short label for the Creative Commons Zero declaration",
+ "val": "CC0"
+ },
+ "CHANGE-DATE": {
+ "comment": "Label for a button that changes a selected date",
+ "val": "CHANGE DATE"
+ },
+ "Change-date": {
+ "comment": "Label for a button that changes a selected date",
+ "val": "Change date"
+ },
+ "CHANGE-END-DATE": {
+ "comment": "Label for a button that changes a selected end date",
+ "val": "CHANGE END DATE"
+ },
+ "Change-end-date": {
+ "comment": "Label for a button that changes a selected end date",
+ "val": "Change end date"
+ },
"Change-project": "Change project",
- "CHANGE-START-DATE": "CHANGE START DATE",
- "Change-start-date": "Change start date",
+ "CHANGE-START-DATE": {
+ "comment": "Label for a button that changes a selected start date",
+ "val": "CHANGE START DATE"
+ },
+ "Change-start-date": {
+ "comment": "Label for a button that changes a selected start date",
+ "val": "Change start date"
+ },
"Change-taxon": "Change taxon",
+ "Change-taxon-filter": {
+ "comment": "Button that changes the taxon filter on Explore",
+ "val": "Change taxon filter"
+ },
"Change-user": "Change user",
"Change-zoom": {
"comment": "Label for a button that cycles through zoom levels for the camera",
@@ -133,50 +201,80 @@
},
"Check-this-box-if-you-want-to-apply-a-Creative-Commons": "Check this box if you want to apply a Creative Commons",
"CHECK-YOUR-EMAIL": {
- "comment": "After pressing the reset password button",
+ "comment": "Notification that appears after pressing the reset password button",
"val": "CHECK YOUR EMAIL!"
},
- "Checkmark": "Checkmark",
"CHOOSE-PHOTOS": {
"comment": "Text for a button prompting the user to grant access to the gallery",
"val": "CHOOSE PHOTOS"
},
- "Clear": "Clear",
- "Close": "Close",
- "Close-add-observation-modal": "Close add observation modal.",
+ "Choose-taxon": {
+ "comment": "Label for button that chooses a taxon",
+ "val": "Choose taxon"
+ },
+ "Clear": {
+ "comment": "Label for a button that clears content, like the text entered in a text\nfield",
+ "val": "Clear"
+ },
+ "Close": {
+ "comment": "Label for a button that closes a window or popup",
+ "val": "Close"
+ },
"Close-permission-request-screen": {
"comment": "Accessibility label for a button that closes the permission request screen",
"val": "Close permission request screen"
},
- "Close-search": "Close search",
+ "Close-search": {
+ "comment": "Label for a button that closes a search interface",
+ "val": "Close search"
+ },
+ "Closes-new-observation-options": "Closes new observation options.",
"Closes-withdraw-id-sheet": "Closes \"Withdraw ID\" sheet",
- "COLLABORATORS": "COLLABORATORS",
+ "COLLABORATORS": {
+ "comment": "Heading for a section that describes people and organizations that\ncollaborate with iNaturalist",
+ "val": "COLLABORATORS"
+ },
"Collection-Project": "Collection Project",
- "Combine-Photos": "Combine Photos",
- "COMMENT": "COMMENT",
+ "Combine-Photos": {
+ "comment": "Button that combines multiple photos into a single observation",
+ "val": "Combine Photos"
+ },
+ "COMMENT": {
+ "comment": "Title for a form that let's you enter a comment",
+ "val": "COMMENT"
+ },
"Comment-options": {
- "comment": "Accessibility label for a button that shows options for a comment",
+ "comment": "Label for a button that shows options for a comment",
"val": "Comment options"
},
- "Common-Name-Scientific-Name": "Common Name (Scientific Name)",
+ "Common-Name-Scientific-Name": {
+ "comment": "Label for a setting that shows the common name first",
+ "val": "Common Name (Scientific Name)"
+ },
"Community-Guidelines": "Community Guidelines",
- "Community-Moderation-Settings": "Community Moderation Settings",
- "CONFIRM": "CONFIRM",
+ "CONFIRM": {
+ "comment": "Button that confirms a choice the user has made",
+ "val": "CONFIRM"
+ },
"Connect-with-other-naturalists": "Connect with other naturalists and engage in conversations.",
- "Connected-Accounts": "Connected Accounts",
"Connection-problem-Please-try-again-later": "Connection problem. Please try again later.",
"CONTACT-SUPPORT": "CONTACT SUPPORT",
"CONTINUE": "CONTINUE",
- "Coordinates-copied-to-keyboard": "Coordinates copied to keyboard",
- "Copy-coordinates": "Copy Coordinates",
- "Copy-map-coordinates": "Copy map coordinates",
+ "Coordinates-copied-to-clipboard": {
+ "comment": "Notification when coordinates have been copied",
+ "val": "Coordinates copied to clipboard"
+ },
+ "Copy-coordinates": {
+ "comment": "Button that copies coordinates to the clipboard",
+ "val": "Copy Coordinates"
+ },
"Copyright": {
"comment": "Right to control copies of a creative work; this string may be used as a\nheading to describe general information about rights, attribution, and\nlicensing",
"val": "Copyright"
},
"Couldnt-create-comment": "Couldn't create comment",
"Couldnt-create-identification-error": "Couldn't create identification { $error }",
- "Couldnt-create-identification-unknown-error": "Couldn't create identification, Unknown Error.",
+ "Couldnt-create-identification-unknown-error": "Couldn't create identification, unknown error.",
"CREATE-AN-ACCOUNT": "CREATE AN ACCOUNT",
"Create-an-observation-evidence": "Create an observation with no evidence",
"CREATE-YOUR-FIRST-OBSERVATION": "CREATE YOUR FIRST OBSERVATION",
@@ -184,15 +282,18 @@
"DATA-QUALITY-ASSESSMENT": "DATA QUALITY ASSESSMENT",
"Data-quality-assessment-can-taxon-still-be-confirmed-improved-based-on-the-evidence": "Based on the evidence, can the Community Taxon still be improved?",
"Data-quality-assessment-community-taxon-species-level-or-lower": "Community taxon at species level or lower",
- "Data-quality-assessment-date-is-accurate": "Date is accurate",
+ "Data-quality-assessment-date-is-accurate": {
+ "comment": "Data Quality Assessment section label: whether or not the observation date is accurate",
+ "val": "Date is accurate"
+ },
"Data-quality-assessment-date-specified": {
- "comment": "checklist test for Data Quality Assessment of Observation Details",
+ "comment": "Data Quality Assessment section label: whether or not the observation date was specified",
"val": "Date specified"
},
"Data-quality-assessment-description-casual": "This observation has not met the conditions for Research Grade status.",
"Data-quality-assessment-description-needs-id": "This observation has not yet met the conditions for Research Grade status:",
"Data-quality-assessment-description-research": {
- "comment": "description for different quality grades in the DQA",
+ "comment": "Data Quality Assessment explanation when quality is Research Grade",
"val": "It can now be used for research and featured on other websites."
},
"Data-quality-assessment-evidence-of-organism": "Evidence of organism",
@@ -205,7 +306,7 @@
"Data-quality-assessment-title-casual": "This observation is Casual Grade",
"Data-quality-assessment-title-needs-id": "This observation Needs ID",
"Data-quality-assessment-title-research": {
- "comment": "declares the current data quality status of the observation",
+ "comment": "declares the current data quality status of the observation when quality is Research Grade",
"val": "This observation is Research Grade!"
},
"Data-quality-casual-description": "This observation needs more information verified to be considered verifiable",
@@ -234,10 +335,17 @@
},
"DATE-OBSERVED": "DATE OBSERVED",
"Date-observed": "Date observed",
+ "Date-observed-header-short": "Observed",
"DATE-OBSERVED-NEWEST": "DATE OBSERVED - NEWEST TO OLDEST",
"DATE-OBSERVED-OLDEST": "DATE OBSERVED - OLDEST TO NEWEST",
- "Date-Range": "Date Range",
- "DATE-RANGE": "DATE RANGE",
+ "Date-Range": {
+ "comment": "Label for controls over a range of dates",
+ "val": "Date Range"
+ },
+ "DATE-RANGE": {
+ "comment": "Label for controls over a range of dates",
+ "val": "DATE RANGE"
+ },
"Date-short-format": {
"comment": "Used when displaying a relative time - in this case, shows an absolute date (e.g. 12/31/22)",
"val": "MM/dd/yy"
@@ -255,19 +363,20 @@
"comment": "Used when displaying a relative time - in this case, X weeks ago (e.g. 3w = 3 weeks ago)",
"val": "{ $count }w"
},
- "Date_observed_header_short": "Observed",
"datetime-format-short": {
"comment": "Date formatting using date-fns\nSee complete list of formatting styles: https://date-fns.org/v2.29.3/docs/format",
"val": "M/d/yy h:mm a"
},
- "December": "December",
- "Default-Search-Place": "Default Search Place",
+ "December": {
+ "comment": "Month of December",
+ "val": "December"
+ },
"DELETE": "DELETE",
"Delete-all-observations": "Delete all observations",
"Delete-comment": "Delete comment",
- "DELETE-COMMENT-QUESTION": "DELETE COMMENT?",
- "DELETE-OBSERVATION": "DELETE OBSERVATION?",
+ "DELETE-COMMENT--question": "DELETE COMMENT?",
"Delete-observation": "Delete observation",
+ "DELETE-OBSERVATION--question": "DELETE OBSERVATION?",
"Delete-photo": {
"comment": "Button label or accessibility label for an element that deletes a photo",
"val": "Delete photo"
@@ -285,27 +394,36 @@
"comment": "Tab label or section title for content that describes further details, e.g.\nthe details of an observation",
"val": "DETAILS"
},
- "Disable-flash": "Disable flash",
- "DISCARD": "DISCARD",
- "DISCARD-ALL": "DISCARD ALL",
- "DISCARD-CHANGES": "DISCARD CHANGES",
+ "Disable-flash": {
+ "comment": "Button that disables the camera's flash",
+ "val": "Disable flash"
+ },
+ "DISCARD": {
+ "comment": "Button that discards changes or an item, e.g. a photo",
+ "val": "DISCARD"
+ },
+ "DISCARD-ALL": {
+ "comment": "Button that discards all items, e.g. imported photos",
+ "val": "DISCARD ALL"
+ },
+ "DISCARD-CHANGES": {
+ "comment": "Button that discards changes",
+ "val": "DISCARD CHANGES"
+ },
"DISCARD-FILTER-CHANGES": "DISCARD FILTER CHANGES",
- "DISCARD-MEDIA": "DISCARD MEDIA?",
+ "DISCARD-MEDIA--question": "DISCARD MEDIA?",
"DISCARD-OBSERVATION": "DISCARD OBSERVATION",
- "DISCARD-PHOTOS": "DISCARD PHOTOS?",
+ "DISCARD-PHOTOS--question": "DISCARD PHOTOS?",
"DISCARD-RECORDING": {
"comment": "Label for a button that discards a sound recording",
"val": "DISCARD RECORDING"
},
- "DISCARD-SOUND-header": {
+ "DISCARD-SOUND--question": {
"comment": "Header of a popup confirming that the user wants to discard a sound\nrecording",
"val": "DISCARD SOUND?"
},
"DISCARD-X-OBSERVATIONS": "{ $count ->\n [one] DISCARD OBSERVATION\n *[other] DISCARD { $count } OBSERVATIONS\n}",
"DISMISS": "DISMISS",
- "Display": "Display",
- "Display-Name": "Display Name",
- "Do-not-collect-stability-and-usage-data-using-third-party-services": "Do not collect stability and usage data using third-party services",
"DONATE": "DONATE",
"DONATE-TO-INATURALIST": "DONATE TO INATURALIST",
"Donate-to-iNaturalist": "Donate to iNaturalist",
@@ -315,7 +433,10 @@
},
"Dont-have-an-account": "Don't have an account? Sign up",
"During-app-start-no-model-found": "During app start there was no computer vision model found. There will be no AR camera.",
- "Edit": "Edit",
+ "Edit": {
+ "comment": "Button for editing something",
+ "val": "Edit"
+ },
"EDIT-COMMENT": "EDIT COMMENT",
"Edit-comment": "Edit comment",
"EDIT-LOCATION": "EDIT LOCATION",
@@ -324,15 +445,20 @@
"val": "Edit location"
},
"Edit-Observation": "Edit Observation",
- "EMAIL": "EMAIL",
- "Email": {
- "comment": "Appears above the email text field",
- "val": "email"
+ "Edits-this-observations-taxon": {
+ "comment": "Label for button that edits an observation's taxon",
+ "val": "Edits this observation's taxon"
},
+ "EMAIL": "EMAIL",
"EMAIL-DEBUG-LOGS": "EMAIL DEBUG LOGS",
- "Email-Notifications": "Email Notifications",
- "Enable-flash": "Enable flash",
- "Endemic": "Endemic",
+ "Enable-flash": {
+ "comment": "Button that enables the camera's flash",
+ "val": "Enable flash"
+ },
+ "Endemic": {
+ "comment": "Indicates a species only occurs in a specific place",
+ "val": "Endemic"
+ },
"Endemic-to-place": {
"comment": "TODO this and many other uses of placeables are not currently translatable\nwithout knowing the vowel/consonant state of the first letter of the\nplaceable",
"val": "Endemic to { $place }"
@@ -362,7 +488,6 @@
"EXPLORE-OBSERVATIONS": "EXPLORE OBSERVATIONS",
"EXPLORE-OBSERVERS": "EXPLORE OBSERVERS",
"EXPLORE-SPECIES": "EXPLORE SPECIES",
- "External-Applications": "External Applications",
"Failed-to-delete-sound": "Failed to delete sound",
"Failed-to-log-in": {
"comment": "Error message with log in fails",
@@ -372,7 +497,10 @@
"comment": "Header for featured projects",
"val": "FEATURED"
},
- "February": "February",
+ "February": {
+ "comment": "Month of February",
+ "val": "February"
+ },
"Fetching-location": "Fetching location...",
"Filter": "Filter",
"FILTER-BY-A-PROJECT": "FILTER BY A PROJECT",
@@ -393,8 +521,11 @@
"val": "Flagged"
},
"Flash": "flash",
+ "Flip-camera": {
+ "comment": "Label for a button that toggles between the front and back cameras",
+ "val": "Flip camera"
+ },
"FOLLOW": "FOLLOW",
- "Following": "Following",
"Forgot-Password": {
"comment": "Forgot password link",
"val": "Forgot Password"
@@ -455,8 +586,6 @@
"val": "Improving"
},
"INATURALIST-ACCOUNT-SETTINGS": "INATURALIST ACCOUNT SETTINGS",
- "iNaturalist-Activity-Notifications": "iNaturalist Activity Notifications",
- "iNaturalist-Applications": "iNaturalist Applications",
"iNaturalist-can-save-photos-you-take-in-the-app-to-your-devices-gallery": "iNaturalist can save photos you take in the app to your device’s gallery.",
"INATURALIST-COMMUNITY": "INATURALIST COMMUNITY",
"INATURALIST-FORUM": "INATURALIST FORUM",
@@ -472,7 +601,6 @@
"iNaturalist-mission-is-to-connect": "iNaturalist's mission is to connect people to nature and advance biodiversity science and conservation.",
"INATURALIST-MISSION-VISION": "INATURALIST'S MISSION & VISION",
"INATURALIST-NETWORK": "INATURALIST NETWORK",
- "iNaturalist-Network-Affiliation": "iNaturalist Network Affiliation",
"INATURALIST-SETTINGS": "INATURALIST SETTINGS",
"INATURALIST-STAFF": {
"comment": "Label for the role a user plays on iNaturalist, e.g. \"INATURALIST STAFF\"\nor \"INATURALIST CURATOR\". Since the name \"INATURALIST\" should not be\ntranslated or locally it is inserted as a variable here, but it will always\nbe \"INATURALIST\"",
@@ -494,7 +622,10 @@
"Intl-number": "{ $val }",
"Introduced": "Introduced",
"Introduced-to-place": "Introduced to { $place }",
- "January": "January",
+ "January": {
+ "comment": "Month of January",
+ "val": "January"
+ },
"JOIN": "JOIN",
"JOIN-PROJECT": "JOIN PROJECT",
"Join-the-largest-community-of-naturalists": "Join the largest community of naturalists in the world!",
@@ -507,9 +638,14 @@
"val": "Joined: { $date }"
},
"JOURNAL-POSTS-WITHOUT-NUMBER": "{ $count ->\n [one] JOURNAL POST\n *[other] JOURNAL POSTS\n}",
- "July": "July",
- "June": "June",
- "Language-Locale": "Language/Locale",
+ "July": {
+ "comment": "Month of July",
+ "val": "July"
+ },
+ "June": {
+ "comment": "Month of June",
+ "val": "June"
+ },
"Last-Active-date": {
"comment": "Shows date user last active on iNaturalist on user profile",
"val": "Last Active: { $date }"
@@ -531,7 +667,6 @@
"LEAVE-PROJECT": "LEAVE PROJECT",
"LEAVE-US-A-REVIEW": "LEAVE US A REVIEW!",
"LICENSES": "LICENSES",
- "Licensing": "Licensing",
"List-view": "List view",
"Loading-iNaturalists-AR-Camera": "Loading iNaturalist's AR Camera",
"LOCATION": "LOCATION",
@@ -561,12 +696,18 @@
"LOWEST-RANK": "LOWEST RANK",
"MAP": "MAP",
"Map-Area": "Map Area",
- "March": "March",
+ "March": {
+ "comment": "Month of March",
+ "val": "March"
+ },
"maverick--identification": {
"comment": "Identification category",
"val": "Maverick"
},
- "May": "May",
+ "May": {
+ "comment": "Month of May",
+ "val": "May"
+ },
"MEDIA": "MEDIA",
"MEMBERS-WITHOUT-NUMBER": "{ $count ->\n [one] MEMBER\n *[other] MEMBERS\n}",
"Menu": {
@@ -581,26 +722,26 @@
"More-info": "More info",
"MOST-FAVED": "MOST FAVED",
"Most-faved": "Most faved",
- "Names": "Names",
"Native": "Native",
"Native-to-place": "Native to { $place }",
- "Navigates-to-add-identification": "Navigates to add identification.",
- "Navigates-to-AR-camera": "Navigates to AR camera.",
- "Navigates-to-bulk-importer": "Navigates to bulk importer.",
- "Navigates-to-camera": "Navigates to camera.",
- "Navigates-to-explore": "Navigates to explore.",
+ "Navigates-to-AR-camera": "Navigates to AR camera",
+ "Navigates-to-bulk-importer": "Navigates to bulk importer",
+ "Navigates-to-camera": "Navigates to camera",
+ "Navigates-to-explore": "Navigates to explore",
"Navigates-to-notifications": "Navigates to notifications",
- "Navigates-to-observation-details": "Navigates to observation details screen.",
- "Navigates-to-observation-edit-screen": "Navigate to observation edit screen.",
- "Navigates-to-observations": "Navigates to observations.",
- "Navigates-to-photo-importer": "Navigate to photo importer.",
- "Navigates-to-previous-screen": "Navigate to previous screen",
- "Navigates-to-project-details": "Navigate to project details",
- "Navigates-to-sound-recorder": "Navigates to sound recorder.",
- "Navigates-to-suggest-identification": "Navigates to suggest identification.",
- "Navigates-to-suggestions": "Navigates to suggestions",
+ "Navigates-to-observation-details": "Navigates to observation details screen",
+ "Navigates-to-observation-edit-screen": "Navigate to observation edit screen",
+ "Navigates-to-photo-importer": "Navigates to photo importer",
+ "Navigates-to-previous-screen": "Navigates to previous screen",
+ "Navigates-to-project-details": "Navigates to project details",
+ "Navigates-to-sound-recorder": "Navigates to sound recorder",
+ "Navigates-to-suggest-identification": "Navigates to suggest identification",
"Navigates-to-taxon-details": "Navigates to taxon details",
- "Navigates-to-user-profile": "Navigates to user profile.",
+ "Navigates-to-user-profile": "Navigates to user profile",
+ "Navigates-to-your-observations": {
+ "comment": "Label for button that takes you to your observations",
+ "val": "Navigates to your observations"
+ },
"NEARBY": {
"comment": "Header for nearby projects",
"val": "NEARBY"
@@ -608,12 +749,21 @@
"Nearby": "Nearby",
"NEARBY-SUGGESTIONS": "NEARBY SUGGESTIONS",
"Needs-ID": "Needs ID",
- "New-Observation": "New Observation",
- "Newest-to-oldest": "Newest to oldest",
+ "New-Observation": {
+ "comment": "Heading when creating a new observation",
+ "val": "New Observation"
+ },
+ "Newest-to-oldest": {
+ "comment": "Sort order, refers to newest or oldest date",
+ "val": "Newest to oldest"
+ },
"Next-observation": "Next observation",
"No-Location": "No Location",
"No-Media": "No Media",
- "No-model-found": "No model found",
+ "No-model-found": {
+ "comment": "As in a machine learning model that powers automated suggestions",
+ "val": "No model found"
+ },
"No-Notifications-Found": "You have no notifications! Get started by creating your own observations.",
"No-projects-match-that-search": "No projects match that search",
"No-results-found": {
@@ -640,7 +790,10 @@
"comment": "notification when someone adds an identification to your observation",
"val": "<0>{ $userName }0> added an identification to an observation by you"
},
- "November": "November",
+ "November": {
+ "comment": "Month of November",
+ "val": "November"
+ },
"Obervations-must-be-manually-added": "Observations must be manually added to a traditional project, either during the upload stage or after the observation has been shared to iNaturalist. A user must also join a traditional project in order to add their observations to it.",
"Obscured": "Obscured",
"Obscured-observation-location-map-description": {
@@ -661,12 +814,18 @@
"Observations": "Observations",
"Observations-created-on-iNaturalist": "Observations created on iNaturalist are used by scientists around the world.",
"Observations-View": "Observations View",
- "OBSERVATIONS-WITHOUT-NUMBER": "{ $count ->\n [one] OBSERVATION\n *[other] OBSERVATIONS\n}",
+ "OBSERVATIONS-WITHOUT-NUMBER": {
+ "comment": "Might be used when the number is represented using an image or other\nelement, not text",
+ "val": "{ $count ->\n [one] OBSERVATION\n *[other] OBSERVATIONS\n}"
+ },
"Observations-you-upload-to-iNaturalist": {
"comment": "Onboarding text on MyObservations: Onboarding text on MyObservations: 11-50 observations",
"val": "Observations you upload to iNaturalist can be used by scientists and researchers worldwide."
},
- "Observe": "Observe",
+ "Observe": {
+ "comment": "Button that starts a new observation",
+ "val": "Observe"
+ },
"Observe-and-identify-organisms-from-your-gallery": {
"comment": "Title of screen asking for permission to access the gallery",
"val": "Observe and identify organisms from your gallery"
@@ -680,8 +839,14 @@
"val": "OBSERVE ORGANISMS"
},
"Observers": "Observers",
- "Observers-View": "Observers View",
- "October": "October",
+ "Observers-View": {
+ "comment": "Section in Explore that shows people who added observations given a set of search filters",
+ "val": "Observers View"
+ },
+ "October": {
+ "comment": "Month of October",
+ "val": "October"
+ },
"Offensive-Inappropriate": "Offensive/Inappropriate",
"Offensive-Inappropriate-Examples": "Misleading or illegal content, racial or ethnic slurs, etc. For more on our defintion of \"appropriate,\" see the FAQ.",
"Offline-DQA-description": "The DQA may not be accurate. Check your internet connection and try again.",
@@ -690,9 +855,15 @@
"comment": "Generic confirmation, e.g. button on a warning alert",
"val": "OK"
},
- "Oldest-to-newest": "Oldest to newest",
+ "Oldest-to-newest": {
+ "comment": "Sort order, refers to newest or oldest date",
+ "val": "Oldest to newest"
+ },
"One-last-step": "One last step!",
- "Open": "Open",
+ "Open": {
+ "comment": "Adjective, as in geoprivacy",
+ "val": "Open"
+ },
"Open-drawer": "Open drawer",
"OPEN-EMAIL": "OPEN EMAIL",
"Open-menu": "Open menu.",
@@ -748,16 +919,21 @@
"val": "Press record to start"
},
"Previous-observation": "Previous observation",
- "Prioritize-common-names-used-in-this-place": "Prioritize common names used in this place.",
- "Privacy": "Privacy",
"Privacy-Policy": "Privacy Policy",
"Private": "Private",
- "Profile-Picture": "Profile Picture",
- "PROJECT": "PROJECT",
+ "PROJECT": {
+ "comment": "As in an iNat project, a collection of observations or observation search filters",
+ "val": "PROJECT"
+ },
"PROJECT-REQUIREMENTS": "PROJECT REQUIREMENTS",
- "Project-Settings": "Project Settings",
- "PROJECTS": "PROJECTS",
- "Projects": "Projects",
+ "PROJECTS": {
+ "comment": "As in iNat project, collections of observations or observation search filters",
+ "val": "PROJECTS"
+ },
+ "Projects": {
+ "comment": "As in iNat projects, collections of observations or observation search filters",
+ "val": "Projects"
+ },
"QUALITY-GRADE": "QUALITY GRADE",
"Quality-Grade-casual": {
"comment": "Shortened display of an observation's quality grade (used when displayed in a badge) - in this case, Casual",
@@ -814,7 +990,10 @@
"Ranks-ZOOSECTION": "ZOOSECTION",
"Ranks-ZOOSUBSECTION": "ZOOSUBSECTION",
"Read-more-on-Wikipedia": "Read more on Wikipedia",
- "RECORD-NEW-SOUND": "RECORD NEW SOUND",
+ "RECORD-NEW-SOUND": {
+ "comment": "Heading for the sound recorder",
+ "val": "RECORD NEW SOUND"
+ },
"Record-organism-sounds-with-the-microphone": {
"comment": "Title of screen asking for permission to access the microphone",
"val": "Record organism sounds with the microphone"
@@ -828,12 +1007,30 @@
"comment": "Imperative verb for recording a sound",
"val": "Record"
},
- "Recording-sound": "Recording sound",
+ "Recording-sound": {
+ "comment": "Status while recording a sound",
+ "val": "Recording sound"
+ },
"Recording-stopped-Tap-play-the-current-recording": "Recording stopped. Tap play the current recording.",
"REDO-SEARCH-IN-MAP-AREA": "REDO SEARCH IN MAP AREA",
+ "Remove-agreement": {
+ "comment": "Label for a button that removes a vote of agreement",
+ "val": "Remove agreement"
+ },
+ "Remove-disagreement": {
+ "comment": "Label for a button that removes a vote of disagreement",
+ "val": "Remove disagreement"
+ },
"Remove-favorite": "Remove favorite",
"Remove-Photos": "Remove Photos",
- "Remove-Relationship": "Remove Relationship",
+ "Removes-your-vote-of-agreement": {
+ "comment": "Hint for a button that removes a vote of agreement",
+ "val": "Removes your vote of agreement"
+ },
+ "Removes-your-vote-of-disagreement": {
+ "comment": "Hint for a button that removes a vote of disagreement",
+ "val": "Removes your vote of disagreement"
+ },
"Research-Grade": {
"comment": "Quality grade option",
"val": "Research Grade"
@@ -867,7 +1064,6 @@
"val": "REVIEWED"
},
"Reviewed-observations-only": "Reviewed observations only",
- "Revoke": "Revoke",
"Satellite--map-type": {
"comment": "Label for the satellite map type",
"val": "Satellite"
@@ -889,8 +1085,14 @@
"Scan-the-area-around-you-for-organisms": "Scan the area around you for organisms.",
"Scientific-Name": "Scientific Name",
"Scientific-Name-Common-Name": "Scientific Name (Common Name)",
- "SEARCH": "SEARCH",
- "Search": "Search",
+ "SEARCH": {
+ "comment": "Title for a search interface",
+ "val": "SEARCH"
+ },
+ "Search": {
+ "comment": "Title for a search interface",
+ "val": "Search"
+ },
"SEARCH-FOR-A-LOCATION": "SEARCH FOR A LOCATION",
"Search-for-a-project": "Search for a project",
"SEARCH-FOR-A-TAXON": "SEARCH FOR A TAXON",
@@ -930,7 +1132,10 @@
},
"Selects-iconic-taxon-X-for-identification": "Selects iconic taxon { $iconicTaxon } for identification.",
"Separate-Photos": "Separate Photos",
- "September": "September",
+ "September": {
+ "comment": "Month of September",
+ "val": "September"
+ },
"SETTINGS": "SETTINGS",
"Settings": "Settings",
"Share": "Share",
@@ -940,6 +1145,10 @@
"SHOP-INATURALIST-MERCH": "SHOP INATURALIST MERCH",
"Shop-iNaturalist-Merch": "Shop iNaturalist Merch",
"Show-observation-options": "Show observation options.",
+ "Shows-identification-suggestions": {
+ "comment": "Label for button that shows identification suggestions",
+ "val": "Shows identification suggestions"
+ },
"Shows-iNaturalist-bird-logo": "Shows iNaturalist bird logo.",
"Sign-out": "Sign out",
"Some-data-privacy-laws": "Some data privacy laws, like the European Union's General Data Protection Regulation (GDPR), require explicit consent to transfer personal information from their jurisdictions to other jurisdictions where the legal protection of this information is not considered adequate. As of 2020, the European Union no longer considers the United States to be a jurisdiction that provides adequate legal protection of personal information, specifically because of the possibility of the US government surveilling data entering the US. It is possible other jurisdictions may have the same opinion.",
@@ -1014,7 +1223,6 @@
"comment": "Header for a block of text describing a taxon's taxonomy",
"val": "TAXONOMY"
},
- "Taxonomy-Settings": "Taxonomy Settings",
"TEACHERS": "TEACHERS",
"Teachers-Guide": "Teachers' Guide",
"TEAM": "TEAM",
@@ -1022,7 +1230,6 @@
"Text-Box-to-Describe-Reason-for-Flag": "Text box to describe reason for flag.",
"The-exact-location-will-be-hidden": "The exact location will be hidden publicly, and instead generalized to a larger area. (Threatened and endangered species are automatically obscured).",
"The-iNaturalist-Network": "The iNaturalist network is a collection of localized websites that are fully connected to the global iNaturalist community. Network sites are supported by local institutions that promote local use and facilitate the use of data from iNaturalist to benefit local biodiversity.",
- "The-iNaturalist-Network-is-a-collection-of-localized-websites": "The iNaturalist Network is a collection of localized websites that are fully connected to the global iNaturalist community. Network sites are supported by local institutions that have signed an agreement with iNaturalist to promote local use and benefit local biodiversity. They have access to true coordinates from their countries that are automatically obscured from public view in order to protect threatened species. Your username and password works on all sites that are part of the iNaturalist Network. If you choose to affiliate with a Network site, the local institutions that operate each site will also have access to your email address (only to communicate with you about site activities) and access to the true coordinates for observations that are publicly obscured or private. Note: Please do not experimentally change your affiliation if you have more than 1000 observations.",
"The-iNaturalist-team-has-collaborated": "The iNaturalist team has collaborated with...",
"The-location-will-not-be-visible": "The location will not be visible to others, which means it may be difficult to identify.",
"There-is-no-way": "There is no way to have an iNaturalist account without storing personal information, so the only way to revoke this consent is to delete your account.",
@@ -1030,21 +1237,16 @@
"comment": " Wild status sheet descriptions",
"val": "This is a wild organism and wasn't placed in this location by humans."
},
- "This-is-how-all-taxon-names-will-be-displayed-to-you-across-iNaturalist": "This is how all taxon names will be displayed to you across iNaturalist",
"This-is-how-taxon-names-will-be-displayed": "This is how all taxon names will be displayed to you across iNaturalist:",
"This-observer-has-opted-out-of-the-Community-Taxon": "This observer has opted out of the Community Taxon",
"This-organism-was-placed-by-humans": "This organism was placed in this location by humans. This applies to things like garden plants, pets, and zoo animals.",
- "This-sets-your-language-and-date-formatting-preferences-across-iNaturalist": "This sets your language and date formatting preferences across iNaturalist based on your locale.",
- "This-will-be-your-default-place-for-all-searches-in-Explore-and-Identify": "This will be your default place for all searches in Explore and Identify.",
"To-access-all-other-settings": "To access all other account settings, click here:",
"To-learn-more-about-what-information": "To learn more about what information we collect and how we use it, please see our Privacy Policy and our Terms of Use.",
"To-sync-your-observations-to-iNaturalist": "To sync your observations to iNaturalist, please log in.",
"Toggle-map-type": "Toggle map type",
"TOP-ID-SUGGESTION": "TOP ID SUGGESTION",
"Traditional-Project": "Traditional Project",
- "Trust-with-hidden-coordinates": "Trust with hidden coordinates",
"Umbrella-Project": "Umbrella Project",
- "Unblock": "Unblock",
"UNFOLLOW": "UNFOLLOW",
"UNFOLLOW-USER": "UNFOLLOW USER?",
"Unknown--taxon": {
@@ -1060,7 +1262,6 @@
"val": "Unknown error"
},
"Unknown-organism": "Unknown organism",
- "Unmute": "Unmute",
"Unreviewed-observations-only": "Unreviewed observations only",
"Upload-Complete": "Upload Complete",
"Upload-in-progress": "Upload in progress",
@@ -1095,7 +1296,6 @@
"USER": "USER",
"User": "User { $userHandle }",
"USERNAME": "USERNAME",
- "Username": "Username",
"USERNAME-OR-EMAIL": {
"comment": "Appears above the text fields",
"val": "USERNAME OR EMAIL"
@@ -1113,7 +1313,10 @@
"View-photo-licensing-info": "View photo licensing info",
"VIEW-PROJECT-REQUIREMENTS": "VIEW PROJECT REQUIREMENTS",
"VIEW-PROJECTS": "VIEW PROJECTS",
- "View-suggestions": "View suggestions",
+ "View-suggestions": {
+ "comment": "Label for a button that shows identification suggestions for an observation\nor photo",
+ "val": "View suggestions"
+ },
"VIEW-TEACHERS-GUIDE": "VIEW TEACHERS' GUIDE",
"Viewing-Offline-Suggestions": {
"comment": "Title for a notice informing the user that they are viewing offline\nidentification suggestions",
@@ -1129,8 +1332,6 @@
},
"WHAT-IS-INATURALIST": "WHAT IS INATURALIST?",
"Whats-more-by-recording": "What's more, by recording and sharing your observations, you'll create research-quality data for scientists working to better understand and protect nature. So if you like recording your findings from the outdoors, or if you just like learning about life, join us!",
- "Which-traditional-projects-can-add-your-observations": "Which traditional projects can add your observations?",
- "Who-can-add-observation-fields-to-my-observations": "Who can add observation fields to my observations?",
"WIKIPEDIA": "WIKIPEDIA",
"Wild": "Wild",
"WILD-STATUS": "WILD STATUS",
diff --git a/src/i18n/l10n/en.ftl.json.orig b/src/i18n/l10n/en.ftl.json.orig
new file mode 100644
index 000000000..fef110a08
--- /dev/null
+++ b/src/i18n/l10n/en.ftl.json.orig
@@ -0,0 +1,1426 @@
+{
+ "ABOUT": {
+ "comment": "Header for a general description, e.g. of a user, or of iNaturalist itself",
+ "val": "ABOUT"
+ },
+ "ABOUT-COLLECTION-PROJECTS": "ABOUT COLLECTION PROJECTS",
+ "ABOUT-INATURALIST": "ABOUT INATURALIST",
+ "ABOUT-THE-DQA": {
+ "comment": "About the Data Quality Assement",
+ "val": "ABOUT THE DQA"
+ },
+ "About-the-DQA-description": "The Quality Grade summarizes the accuracy, precision, completeness, relevance, and appropriateness of an iNaturalist observation as biodiversity data. Some attributes are automatically determined, while others are subject to a vote by iNat users. iNaturalist shares licensed \"Research Grade\" observations with a number of data partners for use in science and conservation.",
+ "ABOUT-TRADITIONAL-PROJECTS": "ABOUT TRADITIONAL PROJECTS",
+ "ABOUT-UMBRELLA-PROJECTS": "ABOUT UMBRELLA PROJECTS",
+ "accessible-comname-sciname": {
+ "comment": "Label for a taxon when a user prefers to see or hear the common name first",
+ "val": "{ $commonName } ({ $scientificName })"
+ },
+ "accessible-sciname-comname": {
+ "comment": "Label for a taxon when a user prefers to see or hear the scientific name first",
+ "val": "{ $scientificName } ({ $commonName })"
+ },
+ "ACTIVITY": "ACTIVITY",
+ "Add-agreement": {
+ "comment": "Label for a button that adds a vote of agreement",
+ "val": "Add agreement"
+ },
+ "ADD-AN-ID": "ADD AN ID",
+ "ADD-COMMENT": "ADD COMMENT",
+ "Add-comment": "Add comment",
+ "Add-Date-Time": "Add Date/Time",
+ "Add-disagreement": {
+ "comment": "Label for a button that adds a vote of disagreement",
+ "val": "Add disagreement"
+ },
+ "ADD-EVIDENCE": "ADD EVIDENCE",
+ "Add-favorite": "Add favorite",
+ "Add-Location": "Add Location",
+ "Add-observations": {
+ "comment": "Accessibility label for a button that starts the process of adding an\nobservation, e.g. the button in the tab bar",
+ "val": "Add observations"
+ },
+ "ADD-OPTIONAL-COMMENT": "ADD OPTIONAL COMMENT",
+ "Add-optional-notes": "Add optional notes",
+ "Adds-your-vote-of-agreement": {
+ "comment": "Hint for a button that adds a vote of agreement",
+ "val": "Adds your vote of agreement"
+ },
+ "Adds-your-vote-of-disagreement": {
+ "comment": "Hint for a button that adds a vote of disagreement",
+ "val": "Adds your vote of disagreement"
+ },
+ "Affiliation": "Affiliation: { $site }",
+ "Agree": {
+ "comment": "Label for button that adds an identification of the same taxon as another identification",
+ "val": "Agree"
+ },
+ "AGREE": {
+ "comment": "Label for button that adds an identification of the same taxon as another identification",
+ "val": "AGREE"
+ },
+ "Agree-to-all-of-the-above": {
+ "comment": "Checkbox label that checks all of the consent agreements a user must make\nbefore signing up",
+ "val": "Agree to all of the above"
+ },
+ "AGREE-WITH-ID": "AGREE WITH ID?",
+ "Agree-with-ID-description": "Would you like to agree with the ID and suggest the following identification?",
+ "ALL": "ALL",
+ "All": "All",
+ "All-observations": "All observations",
+ "All-organisms": "All organisms",
+ "all-rights-reserved": {
+ "comment": "As in intellectual property rights over a photo or other creative work",
+ "val": "all rights reserved"
+ },
+ "ALL-SUGGESTIONS": {
+ "comment": "As in automated identification suggestions",
+ "val": "ALL SUGGESTIONS"
+ },
+ "Almost-done": "Almost done!",
+ "Already-have-an-account": "Already have an account? Log in",
+ "An-Internet-connection-is-required": "An Internet connection is required to load more observations.",
+ "Any": {
+ "comment": "Generic option in a menu of choices that indicates that any of the choices\nwould be acceptable",
+ "val": "Any"
+ },
+ "Anyone-using-iNaturalist-can-see": {
+ "comment": " Geoprivacy sheet descriptions",
+ "val": "Anyone using iNaturalist can see where this species was observed, and scientists can most easily use it for research."
+ },
+ "APPLY-FILTERS": "APPLY FILTERS",
+ "Apply-filters": "Apply filters",
+ "April": {
+ "comment": "Month of April",
+ "val": "April"
+ },
+ "AR-Camera": {
+ "comment": "Short for Augmented Reality Camera. This is what we call the camera that\noverlays identification suggestions in real time",
+ "val": "AR Camera"
+ },
+ "Are-you-a-teacher": "Are you a teacher wanting to use iNaturalist with your students?",
+ "Are-you-sure-you-want-to-sign-out": "Are you sure you want to sign out? This will delete all your observations on this device. It will not affect any observations you've uploaded to iNaturalist.",
+ "As-you-upload-more-observations": {
+ "comment": "Onboarding text on MyObservations: 0-10 observations",
+ "val": "As you upload more observations, others in our community may be able to help you identify them!"
+ },
+ "attribution-cc-by": "some rights reserved (CC BY)",
+ "attribution-cc-by-nc": "some rights reserved (CC BY-NC)",
+ "attribution-cc-by-nc-nd": "some rights reserved (CC BY-NC-ND)",
+ "attribution-cc-by-nc-sa": "some rights reserved (CC BY-NC-SA)",
+ "attribution-cc-by-nd": "some rights reserved (CC BY-ND)",
+ "attribution-cc-by-sa": "some rights reserved (CC BY-SA)",
+ "August": {
+ "comment": "Month of August",
+ "val": "August"
+ },
+ "BACK-TO-LOGIN": {
+ "comment": "Returns user to login screen",
+ "val": "BACK TO LOGIN"
+ },
+ "BLOG": "BLOG",
+ "Bulk-importer": {
+ "comment": "Accessibility label for bulk import / photo import button\nThese are used by screen readers to label actionable elements iOS: https://developer.apple.com/documentation/uikit/uiaccessibilityelement/1619577-accessibilitylabel\niOS Guidelines \"A string that succinctly identifies the accessibility element.\" Starts with capital letter, no ending punctuation.",
+ "val": "Bulk importer"
+ },
+ "By-exiting-changes-not-saved": "By exiting, changes to your observation will not be saved.",
+ "By-exiting-observation-not-saved": "By exiting, your observation will not be saved.",
+ "By-exiting-your-observations-not-saved": "By exiting, your observations will not be saved. You can save them to your device, or you can delete them.",
+ "By-exiting-your-photos-will-not-be-saved": "By exiting, your photos will not be saved.",
+ "By-exiting-your-recorded-sound-will-not-be-saved": "By exiting, your recorded sound will not be saved.",
+ "Camera": "Camera",
+ "CANCEL": "CANCEL",
+ "Cancel": "Cancel",
+ "Captive-Cultivated": "Captive/Cultivated",
+ "Casual": {
+ "comment": "\"Casual\" Data quality grade",
+ "val": "Casual"
+ },
+ "CC-BY": {
+ "comment": "Short label for the Creative Commons Attribution license",
+ "val": "CC BY"
+ },
+ "CC-BY-NC": {
+ "comment": "Short label for the Creative Commons Attribution-NonCommercial license",
+ "val": "CC BY-NC"
+ },
+ "CC-BY-NC-ND": {
+ "comment": "Short label for the Creative Commons Attribution-NonCommercial-NoDerivatives license",
+ "val": "CC BY-NC-ND"
+ },
+ "CC-BY-NC-SA": {
+ "comment": "Short label for the Creative Commons Attribution-NonCommercial-ShareAlike license",
+ "val": "CC BY-NC-SA"
+ },
+ "CC-BY-ND": {
+ "comment": "Short label for the Creative Commons Attribution-NoDerivatives license",
+ "val": "CC BY-ND"
+ },
+ "CC-BY-SA": {
+ "comment": "Short label for the Creative Commons Attribution-ShareAlike license",
+ "val": "CC BY-SA"
+ },
+ "CC0": {
+ "comment": "Short label for the Creative Commons Zero declaration",
+ "val": "CC0"
+ },
+ "CHANGE-DATE": {
+ "comment": "Label for a button that changes a selected date",
+ "val": "CHANGE DATE"
+ },
+ "Change-date": {
+ "comment": "Label for a button that changes a selected date",
+ "val": "Change date"
+ },
+ "CHANGE-END-DATE": {
+ "comment": "Label for a button that changes a selected end date",
+ "val": "CHANGE END DATE"
+ },
+ "Change-end-date": {
+ "comment": "Label for a button that changes a selected end date",
+ "val": "Change end date"
+ },
+ "Change-project": "Change project",
+ "CHANGE-START-DATE": {
+ "comment": "Label for a button that changes a selected start date",
+ "val": "CHANGE START DATE"
+ },
+ "Change-start-date": {
+ "comment": "Label for a button that changes a selected start date",
+ "val": "Change start date"
+ },
+ "Change-taxon": "Change taxon",
+ "Change-taxon-filter": {
+ "comment": "Button that changes the taxon filter on Explore",
+ "val": "Change taxon filter"
+ },
+ "Change-user": "Change user",
+ "Change-zoom": {
+ "comment": "Label for a button that cycles through zoom levels for the camera",
+ "val": "Change zoom"
+ },
+ "Check-this-box-if-you-want-to-apply-a-Creative-Commons": "Check this box if you want to apply a Creative Commons",
+ "CHECK-YOUR-EMAIL": {
+ "comment": "Notification that appears after pressing the reset password button",
+ "val": "CHECK YOUR EMAIL!"
+ },
+ "CHOOSE-PHOTOS": {
+ "comment": "Text for a button prompting the user to grant access to the gallery",
+ "val": "CHOOSE PHOTOS"
+ },
+ "Choose-taxon": {
+ "comment": "Label for button that chooses a taxon",
+ "val": "Choose taxon"
+ },
+ "Clear": {
+ "comment": "Label for a button that clears content, like the text entered in a text\nfield",
+ "val": "Clear"
+ },
+ "Close": {
+ "comment": "Label for a button that closes a window or popup",
+ "val": "Close"
+ },
+ "Close-permission-request-screen": {
+ "comment": "Accessibility label for a button that closes the permission request screen",
+ "val": "Close permission request screen"
+ },
+ "Close-search": {
+ "comment": "Label for a button that closes a search interface",
+ "val": "Close search"
+ },
+ "Closes-new-observation-options": "Closes new observation options.",
+ "Closes-withdraw-id-sheet": "Closes \"Withdraw ID\" sheet",
+ "COLLABORATORS": {
+ "comment": "Heading for a section that describes people and organizations that\ncollaborate with iNaturalist",
+ "val": "COLLABORATORS"
+ },
+ "Collection-Project": "Collection Project",
+ "Combine-Photos": {
+ "comment": "Button that combines multiple photos into a single observation",
+ "val": "Combine Photos"
+ },
+ "COMMENT": {
+ "comment": "Title for a form that let's you enter a comment",
+ "val": "COMMENT"
+ },
+ "Comment-options": {
+ "comment": "Label for a button that shows options for a comment",
+ "val": "Comment options"
+ },
+ "Common-Name-Scientific-Name": {
+ "comment": "Label for a setting that shows the common name first",
+ "val": "Common Name (Scientific Name)"
+ },
+ "Community-Guidelines": "Community Guidelines",
+ "CONFIRM": {
+ "comment": "Button that confirms a choice the user has made",
+ "val": "CONFIRM"
+ },
+ "Connect-with-other-naturalists": "Connect with other naturalists and engage in conversations.",
+ "Connection-problem-Please-try-again-later": "Connection problem. Please try again later.",
+ "CONTACT-SUPPORT": "CONTACT SUPPORT",
+<<<<<<< HEAD
+ "Coordinates-copied-to-clipboard": {
+ "comment": "Notification when coordinates have been copied",
+ "val": "Coordinates copied to clipboard"
+ },
+ "Copy-coordinates": {
+ "comment": "Button that copies coordinates to the clipboard",
+ "val": "Copy Coordinates"
+ },
+=======
+ "CONTINUE": "CONTINUE",
+ "Coordinates-copied-to-keyboard": "Coordinates copied to keyboard",
+ "Copy-coordinates": "Copy Coordinates",
+ "Copy-map-coordinates": "Copy map coordinates",
+>>>>>>> main
+ "Copyright": {
+ "comment": "Right to control copies of a creative work; this string may be used as a\nheading to describe general information about rights, attribution, and\nlicensing",
+ "val": "Copyright"
+ },
+ "Couldnt-create-comment": "Couldn't create comment",
+ "Couldnt-create-identification-error": "Couldn't create identification { $error }",
+ "Couldnt-create-identification-unknown-error": "Couldn't create identification, unknown error.",
+ "CREATE-AN-ACCOUNT": "CREATE AN ACCOUNT",
+ "Create-an-observation-evidence": "Create an observation with no evidence",
+ "CREATE-YOUR-FIRST-OBSERVATION": "CREATE YOUR FIRST OBSERVATION",
+ "DATA-QUALITY": "DATA QUALITY",
+ "DATA-QUALITY-ASSESSMENT": "DATA QUALITY ASSESSMENT",
+ "Data-quality-assessment-can-taxon-still-be-confirmed-improved-based-on-the-evidence": "Based on the evidence, can the Community Taxon still be improved?",
+ "Data-quality-assessment-community-taxon-species-level-or-lower": "Community taxon at species level or lower",
+ "Data-quality-assessment-date-is-accurate": {
+ "comment": "Data Quality Assessment section label: whether or not the observation date is accurate",
+ "val": "Date is accurate"
+ },
+ "Data-quality-assessment-date-specified": {
+ "comment": "Data Quality Assessment section label: whether or not the observation date was specified",
+ "val": "Date specified"
+ },
+ "Data-quality-assessment-description-casual": "This observation has not met the conditions for Research Grade status.",
+ "Data-quality-assessment-description-needs-id": "This observation has not yet met the conditions for Research Grade status:",
+ "Data-quality-assessment-description-research": {
+ "comment": "Data Quality Assessment explanation when quality is Research Grade",
+ "val": "It can now be used for research and featured on other websites."
+ },
+ "Data-quality-assessment-evidence-of-organism": "Evidence of organism",
+ "Data-quality-assessment-has-photos-or-sounds": "Has Photos or Sounds",
+ "Data-quality-assessment-id-supported-by-two-or-more": "Has ID supported by two or more",
+ "Data-quality-assessment-location-is-accurate": "Location is accurate",
+ "Data-quality-assessment-location-specified": "Location specified",
+ "Data-quality-assessment-organism-is-wild": "Organism is wild",
+ "Data-quality-assessment-recent-evidence-of-organism": "Recent evidence of an organism",
+ "Data-quality-assessment-title-casual": "This observation is Casual Grade",
+ "Data-quality-assessment-title-needs-id": "This observation Needs ID",
+ "Data-quality-assessment-title-research": {
+ "comment": "declares the current data quality status of the observation when quality is Research Grade",
+ "val": "This observation is Research Grade!"
+ },
+ "Data-quality-casual-description": "This observation needs more information verified to be considered verifiable",
+ "Data-quality-needs-id-description": "This observation needs more identifications to reach research grade",
+ "Data-quality-research-description": "This observation has enough identifications to be considered resarch grade",
+ "DATE": "DATE",
+ "Date-days": {
+ "comment": "Used when displaying a relative time - in this case, X days ago (e.g. 3d = 3 days ago)",
+ "val": "{ $count }d"
+ },
+ "date-format-long": {
+ "comment": "Date formatting using date-fns\nSee complete list of formatting styles: https://date-fns.org/v2.29.3/docs/format",
+ "val": "PP"
+ },
+ "date-format-short": {
+ "comment": "Date formatting using date-fns\nSee complete list of formatting styles: https://date-fns.org/v2.29.3/docs/format",
+ "val": "M/d/yy"
+ },
+ "Date-hours": {
+ "comment": "Used when displaying a relative time - in this case, X hours ago (e.g. 3h = 3 hours ago)",
+ "val": "{ $count }h"
+ },
+ "Date-minutes": {
+ "comment": "Used when displaying a relative time - in this case, X minutes ago (e.g. 3m = 3 minutes ago)",
+ "val": "{ $count }m"
+ },
+ "DATE-OBSERVED": "DATE OBSERVED",
+ "Date-observed": "Date observed",
+ "Date-observed-header-short": "Observed",
+ "DATE-OBSERVED-NEWEST": "DATE OBSERVED - NEWEST TO OLDEST",
+ "DATE-OBSERVED-OLDEST": "DATE OBSERVED - OLDEST TO NEWEST",
+ "Date-Range": {
+ "comment": "Label for controls over a range of dates",
+ "val": "Date Range"
+ },
+ "DATE-RANGE": {
+ "comment": "Label for controls over a range of dates",
+ "val": "DATE RANGE"
+ },
+ "Date-short-format": {
+ "comment": "Used when displaying a relative time - in this case, shows an absolute date (e.g. 12/31/22)",
+ "val": "MM/dd/yy"
+ },
+ "Date-this-year": {
+ "comment": "Used when displaying a relative time - in this case, shows only month+year (same year) - e.g. Jul 3",
+ "val": "MMM d"
+ },
+ "DATE-UPLOADED": "DATE UPLOADED",
+ "Date-uploaded": "Date uploaded",
+ "Date-uploaded-header-short": "Uploaded",
+ "DATE-UPLOADED-NEWEST": "DATE UPLOADED - NEWEST TO OLDEST",
+ "DATE-UPLOADED-OLDEST": "DATE UPLOADED - OLDEST TO NEWEST",
+ "Date-weeks": {
+ "comment": "Used when displaying a relative time - in this case, X weeks ago (e.g. 3w = 3 weeks ago)",
+ "val": "{ $count }w"
+ },
+ "datetime-format-short": {
+ "comment": "Date formatting using date-fns\nSee complete list of formatting styles: https://date-fns.org/v2.29.3/docs/format",
+ "val": "M/d/yy h:mm a"
+ },
+ "December": {
+ "comment": "Month of December",
+ "val": "December"
+ },
+ "DELETE": "DELETE",
+ "Delete-all-observations": "Delete all observations",
+ "Delete-comment": "Delete comment",
+ "DELETE-COMMENT--question": "DELETE COMMENT?",
+ "Delete-observation": "Delete observation",
+ "DELETE-OBSERVATION--question": "DELETE OBSERVATION?",
+ "Delete-photo": {
+ "comment": "Button label or accessibility label for an element that deletes a photo",
+ "val": "Delete photo"
+ },
+ "Delete-sound": "Delete sound",
+ "Deleting-x-of-y": {
+ "comment": "Shows the progress of deletions for X of Y",
+ "val": "Deleting { $currentDeleteCount } of { $total }"
+ },
+ "Deleting-x-of-y-observations": {
+ "comment": "Shows the number of observations a user is currently deleting out of total on my observations page",
+ "val": "Deleting { $currentDeleteCount } of { $total ->\n [one] 1 observation\n *[other] { $total } observations\n}"
+ },
+ "DETAILS": {
+ "comment": "Tab label or section title for content that describes further details, e.g.\nthe details of an observation",
+ "val": "DETAILS"
+ },
+ "Disable-flash": {
+ "comment": "Button that disables the camera's flash",
+ "val": "Disable flash"
+ },
+ "DISCARD": {
+ "comment": "Button that discards changes or an item, e.g. a photo",
+ "val": "DISCARD"
+ },
+ "DISCARD-ALL": {
+ "comment": "Button that discards all items, e.g. imported photos",
+ "val": "DISCARD ALL"
+ },
+ "DISCARD-CHANGES": {
+ "comment": "Button that discards changes",
+ "val": "DISCARD CHANGES"
+ },
+ "DISCARD-FILTER-CHANGES": "DISCARD FILTER CHANGES",
+ "DISCARD-MEDIA--question": "DISCARD MEDIA?",
+ "DISCARD-OBSERVATION": "DISCARD OBSERVATION",
+ "DISCARD-PHOTOS--question": "DISCARD PHOTOS?",
+ "DISCARD-RECORDING": {
+ "comment": "Label for a button that discards a sound recording",
+ "val": "DISCARD RECORDING"
+ },
+ "DISCARD-SOUND--question": {
+ "comment": "Header of a popup confirming that the user wants to discard a sound\nrecording",
+ "val": "DISCARD SOUND?"
+ },
+ "DISCARD-X-OBSERVATIONS": "{ $count ->\n [one] DISCARD OBSERVATION\n *[other] DISCARD { $count } OBSERVATIONS\n}",
+ "DISMISS": "DISMISS",
+ "DONATE": "DONATE",
+ "DONATE-TO-INATURALIST": "DONATE TO INATURALIST",
+ "Donate-to-iNaturalist": "Donate to iNaturalist",
+ "DONE": {
+ "comment": "Label for a button the user taps when a task is complete",
+ "val": "DONE"
+ },
+ "Dont-have-an-account": "Don't have an account? Sign up",
+ "During-app-start-no-model-found": "During app start there was no computer vision model found. There will be no AR camera.",
+ "Edit": {
+ "comment": "Button for editing something",
+ "val": "Edit"
+ },
+ "EDIT-COMMENT": "EDIT COMMENT",
+ "Edit-comment": "Edit comment",
+ "EDIT-LOCATION": "EDIT LOCATION",
+ "Edit-location": {
+ "comment": "Label for interactive element that takes you to a location choosing screen",
+ "val": "Edit location"
+ },
+ "Edit-Observation": "Edit Observation",
+ "Edits-this-observations-taxon": {
+ "comment": "Label for button that edits an observation's taxon",
+ "val": "Edits this observation's taxon"
+ },
+ "EMAIL": "EMAIL",
+ "EMAIL-DEBUG-LOGS": "EMAIL DEBUG LOGS",
+ "Enable-flash": {
+ "comment": "Button that enables the camera's flash",
+ "val": "Enable flash"
+ },
+ "Endemic": {
+ "comment": "Indicates a species only occurs in a specific place",
+ "val": "Endemic"
+ },
+ "Endemic-to-place": {
+ "comment": "TODO this and many other uses of placeables are not currently translatable\nwithout knowing the vowel/consonant state of the first letter of the\nplaceable",
+ "val": "Endemic to { $place }"
+ },
+ "Error-Could-Not-Fetch-Taxon": "Error: Could Not Fetch Taxon",
+ "ERROR-LOADING-DQA": "ERROR LOADING IN DQA",
+ "Error-title": {
+ "comment": "Title of dialog or section describing an error",
+ "val": "Error"
+ },
+ "ERROR-VOTING-IN-DQA": "ERROR VOTING IN DQA",
+ "Error-voting-in-DQA-description": "Your vote may not have been cast in the DQA. Check your internet connection and try again.",
+ "ESTABLISHMENT-MEANS": "ESTABLISHMENT MEANS",
+ "ESTABLISHMENT-MEANS-header": {
+ "comment": "Header for a section describing how a taxon arrived in a given place",
+ "val": "ESTABLISHMENT MEANS"
+ },
+ "Every-observation-needs": "Every observation needs a location, date, and time to be helpful to identifiers. You can edit geoprivacy if you’re concerned about location privacy.",
+ "Every-time-a-collection-project": "Every time a collection project's page is loaded, iNaturalist will perform a quick search and display all observations that match the project's requirements. It is an easy way to display a set of observations, such as for a class project, a park, or a bioblitz without making participants take the extra step of manually adding their observations to a project.",
+ "EVIDENCE": "EVIDENCE",
+ "Exact-Date": "Exact Date",
+ "EXACT-DATE": "EXACT DATE",
+ "Explore": "Explore",
+ "EXPLORE": "EXPLORE",
+ "Explore-Filters": "Explore Filters",
+ "EXPLORE-IDENTIFIERS": "EXPLORE IDENTIFIERS",
+ "EXPLORE-OBSERVATIONS": "EXPLORE OBSERVATIONS",
+ "EXPLORE-OBSERVERS": "EXPLORE OBSERVERS",
+ "EXPLORE-SPECIES": "EXPLORE SPECIES",
+ "Failed-to-delete-sound": "Failed to delete sound",
+ "Failed-to-log-in": {
+ "comment": "Error message with log in fails",
+ "val": "Failed to log in"
+ },
+ "FEATURED": {
+ "comment": "Header for featured projects",
+ "val": "FEATURED"
+ },
+ "February": {
+ "comment": "Month of February",
+ "val": "February"
+ },
+ "Fetching-location": "Fetching location...",
+ "Filter": "Filter",
+ "FILTER-BY-A-PROJECT": "FILTER BY A PROJECT",
+ "FILTER-BY-A-USER": "FILTER BY A USER",
+ "Filter-by-observed-between-dates": "Filter by observations observed between two specific dates",
+ "Filter-by-observed-during-months": "Filter by observations observed during specific months",
+ "Filter-by-observed-on-date": "Filter by observations observed on a specific date",
+ "Filter-by-uploaded-between-dates": "Filter by observations uploaded between two specific dates",
+ "Filter-by-uploaded-on-date": "Filter by observations uploaded on a specific date",
+ "Filters": "Filters",
+ "Flag-An-Item": "Flag An Item",
+ "Flag-Item-Description": "Flagging brings something to the attention of volunteer site curators. Please don't flag problems you can address with identifications, the Data Quality Assessment, or by talking to the person who made the content.",
+ "Flag-Item-Other": "Flagged as Other Description Box",
+ "Flag-Item-Other-Description": "Some other reason you can explain below.",
+ "Flag-Item-Other-Input-Hint": "Specify the reason you're flagging this item",
+ "Flagged": {
+ "comment": "Status when an item has been flagged",
+ "val": "Flagged"
+ },
+ "Flash": "flash",
+ "Flip-camera": {
+ "comment": "Label for a button that toggles between the front and back cameras",
+ "val": "Flip camera"
+ },
+ "FOLLOW": "FOLLOW",
+ "Forgot-Password": {
+ "comment": "Forgot password link",
+ "val": "Forgot Password"
+ },
+ "GEOPRIVACY": "GEOPRIVACY",
+ "Geoprivacy-status": "Geoprivacy: { $status }",
+ "Get-more-accurate-suggestions-create-useful-data": {
+ "comment": "Title of screen asking for permission to access location",
+ "val": "Get more accurate suggestions & create useful data for science using your location"
+ },
+ "Go-back": {
+ "comment": "Label for button that returns to the previous screen",
+ "val": "Go back"
+ },
+ "GRANT-PERMISSION": {
+ "comment": "Text for a button that asks the user to grant permission",
+ "val": "GRANT PERMISSION"
+ },
+ "Grant-Permission-title": {
+ "comment": "Title of a screen asking for permission",
+ "val": "Grant Permission"
+ },
+ "Grid-view": "Grid view",
+ "Group-Photos": "Group Photos",
+ "Group-photos-onboarding": {
+ "comment": "Onboarding for users learning to group photos in the camera roll",
+ "val": "Group photos into observations– make sure there is only one species per observation"
+ },
+ "HELP": "HELP",
+ "Highest": "Highest",
+ "HIGHEST-RANK": "HIGHEST RANK",
+ "I-agree-to-the-Terms-of-Use": "I agree to the Terms of Use and Privacy Policy, and I have reviewed the Community Guidelines (required).",
+ "I-consent-to-allow-iNaturalist-to-store": "I consent to allow iNaturalist to store and process limited kinds of personal information about me in order to manage my account (required)",
+ "I-consent-to-allow-my-personal-information": "I consent to allow my personal information to be transferred to the United States of America (required)",
+ "Iconic-taxon-name": "Iconic taxon name: { $iconicTaxon }",
+ "ID-Withdrawn": {
+ "comment": "Identification Status",
+ "val": "ID Withdrawn"
+ },
+ "IDENTIFICATION": "IDENTIFICATION",
+ "Identification-options": {
+ "comment": "Accessibility label for a button that shows options for an identification",
+ "val": "Identification options"
+ },
+ "IDENTIFICATIONS-WITHOUT-NUMBER": "{ $count ->\n [one] IDENTIFICATION\n *[other] IDENTIFICATIONS\n}",
+ "Identifiers": "Identifiers",
+ "Identifiers-View": "Identifiers View",
+ "Identify-an-organism": "Identify an organism",
+ "If-an-account-with-that-email-exists": "If an account with that email exists, we've sent password reset instructions to your email.",
+ "If-you-want-to-collate-compare-promote": "If you want to collate, compare, or promote a set of existing projects, then an Umbrella project is what you should use. For example the 2018 City Nature Challenge, which collated over 60 projects, made for a great landing page where anyone could compare and contrast each city's observations. Both Collection and Traditional projects can be used in an Umbrella project, and up to 500 projects can be collated by an Umbrella project.",
+ "Import-Photos-From": "Import Photos From",
+ "IMPORT-X-OBSERVATIONS": {
+ "comment": "Shows the number of observations a user is about to import",
+ "val": "IMPORT { $count ->\n [one] 1 OBSERVATION\n *[other] { $count } OBSERVATIONS\n}"
+ },
+ "improving--identification": {
+ "comment": "Identification category",
+ "val": "Improving"
+ },
+ "INATURALIST-ACCOUNT-SETTINGS": "INATURALIST ACCOUNT SETTINGS",
+ "iNaturalist-can-save-photos-you-take-in-the-app-to-your-devices-gallery": "iNaturalist can save photos you take in the app to your device’s gallery.",
+ "INATURALIST-COMMUNITY": "INATURALIST COMMUNITY",
+ "INATURALIST-FORUM": "INATURALIST FORUM",
+ "iNaturalist-has-no-ID-suggestions-for-this-photo": "iNaturalist has no ID suggestions for this photo.",
+ "iNaturalist-Help": "iNaturalist Help",
+ "INATURALIST-HELP-PAGE": "INATURALIST HELP PAGE",
+ "iNaturalist-helps-you-identify": "iNaturalist helps you identify the plants and animals around you while generating data for science and conservation. Get connected with a community of millions scientists and naturalists who can help you learn more about nature!",
+ "iNaturalist-identification-suggestions-are-based-on": "iNaturalist's identification suggestions are based on observations and identifications made by the iNaturalist community, including { $user1 }, { $user2 }, { $user3 }, and many others.",
+ "iNaturalist-is-a-501": "iNaturalist is a 501(c)(3) non-profit in the United States of America (Tax ID/EIN 92-1296468).",
+ "iNaturalist-is-a-community-of-naturalists": "iNaturalist is a community of naturalists that works together to create and identify wild biodiversity observations.",
+ "iNaturalist-is-supported-by": "iNaturalist is supported by an independent, 501(c)(3) nonprofit organization based in the United States of America. The iNaturalist platform includes this app, Seek by iNaturalist, the iNaturalist website, and more.",
+ "iNaturalist-is-supported-by-community": "iNaturalist is supported by our amazing community. From everyday naturalists who add observations and identifications, to curators who assist in the curation of taxonomy and moderation, to the volunteer translators at who make iNaturalist more accessible to worldwide audiences, to our community-based donors, we are extraordinarily grateful for all the people of our community who make iNaturalist the platform it is.",
+ "iNaturalist-mission-is-to-connect": "iNaturalist's mission is to connect people to nature and advance biodiversity science and conservation.",
+ "INATURALIST-MISSION-VISION": "INATURALIST'S MISSION & VISION",
+ "INATURALIST-NETWORK": "INATURALIST NETWORK",
+ "INATURALIST-SETTINGS": "INATURALIST SETTINGS",
+ "INATURALIST-STAFF": {
+ "comment": "Label for the role a user plays on iNaturalist, e.g. \"INATURALIST STAFF\"\nor \"INATURALIST CURATOR\". Since the name \"INATURALIST\" should not be\ntranslated or locally it is inserted as a variable here, but it will always\nbe \"INATURALIST\"",
+ "val": "{ $inaturalist } STAFF"
+ },
+ "INATURALIST-STORE": "INATURALIST STORE",
+ "INATURALIST-TEAM": "INATURALIST TEAM",
+ "iNaturalist-users-who-have-left-an-identification": "iNaturalist users who have left an identification on another user's observation",
+ "iNaturalist-users-who-have-observed": "iNaturalist users who have observed a particular taxon at a particular time and place",
+ "iNaturalist-uses-your-location-to-give-you": "iNaturalist uses your location to give you better identification suggestions and we can automatically add a location to your observations, which helps scientists. We also use it to help you find organisms observed near your location. You’re always in control of the location privacy of every observation you create.",
+ "iNaturalists-apps-are-designed-and-developed": "iNaturalist's apps are designed, developed, and supported by the iNaturalist team: Yaron Budowski, Amanda Bullington, Tony Iwane, Johannes Klein, Patrick Leary, Scott Loarie, Abhas Misraraj, Sylvain Morin, Carrie Seltzer, Alex Shepard, Angie Ta, Ken-ichi Ueda, Jason Walthall, & Jane Weeden.",
+ "iNaturalists-vision-is-a-world": "iNaturalist's vision is a world where everyone can understand and sustain biodiversity through the practice of observing wild organisms and sharing information about them.",
+ "Individual-encounters-with-organisms": "Individual encounters with organisms at a particular time and location, usually with evidence",
+ "INFO-TRANSFER": "INFO TRANSFER",
+ "Internet-Connection-Required": {
+ "comment": "Title for dialog telling the user that an Internet connection is required",
+ "val": "Internet Connection Required"
+ },
+ "Intl-number": "{ $val }",
+ "Introduced": "Introduced",
+ "Introduced-to-place": "Introduced to { $place }",
+ "January": {
+ "comment": "Month of January",
+ "val": "January"
+ },
+ "JOIN": "JOIN",
+ "JOIN-PROJECT": "JOIN PROJECT",
+ "Join-the-largest-community-of-naturalists": "Join the largest community of naturalists in the world!",
+ "JOINED": {
+ "comment": "Header for joined projects",
+ "val": "JOINED"
+ },
+ "Joined-date": {
+ "comment": "Shows date user joined iNaturalist on user profile",
+ "val": "Joined: { $date }"
+ },
+ "JOURNAL-POSTS-WITHOUT-NUMBER": "{ $count ->\n [one] JOURNAL POST\n *[other] JOURNAL POSTS\n}",
+ "July": {
+ "comment": "Month of July",
+ "val": "July"
+ },
+ "June": {
+ "comment": "Month of June",
+ "val": "June"
+ },
+ "Last-Active-date": {
+ "comment": "Shows date user last active on iNaturalist on user profile",
+ "val": "Last Active: { $date }"
+ },
+ "Lat-Lon": {
+ "comment": "Latitude, longitude on a single line on a single line",
+ "val": "{ NUMBER($latitude, maximumFractionDigits: \"6\") }, { NUMBER($longitude, maximumFractionDigits: \"6\") }"
+ },
+ "Lat-Lon-Acc": {
+ "comment": "Latitude, longitude, and accuracy on a single line on a single line",
+ "val": "Lat: { NUMBER($latitude, maximumFractionDigits: \"6\") }, Lon: { NUMBER($longitude, maximumFractionDigits: \"6\") }, Acc: { $accuracy }"
+ },
+ "leading--identification": {
+ "comment": "Identification category",
+ "val": "Leading"
+ },
+ "Learn-More": "Learn More",
+ "LEAVE": "LEAVE",
+ "LEAVE-PROJECT": "LEAVE PROJECT",
+ "LEAVE-US-A-REVIEW": "LEAVE US A REVIEW!",
+ "LICENSES": "LICENSES",
+ "List-view": "List view",
+ "Loading-iNaturalists-AR-Camera": "Loading iNaturalist's AR Camera",
+ "LOCATION": "LOCATION",
+ "Location": "Location",
+ "Location-accuracy-is-too-imprecise": "Location accuracy is too imprecise to help identifiers. Please zoom in.",
+ "LOCATION-TOO-IMPRECISE": "LOCATION TOO IMPRECISE",
+ "LOG-IN": "LOG IN",
+ "Log-in": {
+ "comment": "Second person imperative label to go to log in screen",
+ "val": "Log in"
+ },
+ "Log-in-to-contribute-and-sync": "Log in to contribute & sync",
+ "Log-in-to-contribute-your-observations": "Log in to contribute your observations to science!",
+ "LOG-IN-TO-INATURALIST": "LOG IN TO INATURALIST",
+ "Log-in-to-iNaturalist": "Log in to iNaturalist",
+ "LOG-OUT": "LOG OUT",
+ "Logged-in-as": "Logged in as: { $username }",
+ "Login-sub-title": {
+ "comment": "Appears in the login screen",
+ "val": "Document living things, identify organisms & contribute to science"
+ },
+ "Looks-like-youre-not-using-Apple-Mail": {
+ "comment": "Alert dialog title when attempting to send email on an iOS device but Apple Mail is not installed",
+ "val": "Looks like you're not using Apple Mail"
+ },
+ "Lowest": "Lowest",
+ "LOWEST-RANK": "LOWEST RANK",
+ "MAP": "MAP",
+ "Map-Area": "Map Area",
+ "March": {
+ "comment": "Month of March",
+ "val": "March"
+ },
+ "maverick--identification": {
+ "comment": "Identification category",
+ "val": "Maverick"
+ },
+ "May": {
+ "comment": "Month of May",
+ "val": "May"
+ },
+ "MEDIA": "MEDIA",
+ "MEMBERS-WITHOUT-NUMBER": "{ $count ->\n [one] MEMBER\n *[other] MEMBERS\n}",
+ "Menu": {
+ "comment": "Accessibility label for a button that opens a menu of options",
+ "val": "Menu"
+ },
+ "Missing-Date": "Missing Date",
+ "MISSING-EVIDENCE": "MISSING EVIDENCE",
+ "Monthly-Donor": "Monthly Donor",
+ "Months": "Months",
+ "MONTHS": "MONTHS",
+ "More-info": "More info",
+ "MOST-FAVED": "MOST FAVED",
+ "Most-faved": "Most faved",
+ "Native": "Native",
+ "Native-to-place": "Native to { $place }",
+ "Navigates-to-AR-camera": "Navigates to AR camera",
+ "Navigates-to-bulk-importer": "Navigates to bulk importer",
+ "Navigates-to-camera": "Navigates to camera",
+ "Navigates-to-explore": "Navigates to explore",
+ "Navigates-to-notifications": "Navigates to notifications",
+ "Navigates-to-observation-details": "Navigates to observation details screen",
+ "Navigates-to-observation-edit-screen": "Navigate to observation edit screen",
+ "Navigates-to-photo-importer": "Navigates to photo importer",
+ "Navigates-to-previous-screen": "Navigates to previous screen",
+ "Navigates-to-project-details": "Navigates to project details",
+ "Navigates-to-sound-recorder": "Navigates to sound recorder",
+ "Navigates-to-suggest-identification": "Navigates to suggest identification",
+ "Navigates-to-taxon-details": "Navigates to taxon details",
+ "Navigates-to-user-profile": "Navigates to user profile",
+ "Navigates-to-your-observations": {
+ "comment": "Label for button that takes you to your observations",
+ "val": "Navigates to your observations"
+ },
+ "NEARBY": {
+ "comment": "Header for nearby projects",
+ "val": "NEARBY"
+ },
+ "Nearby": "Nearby",
+ "NEARBY-SUGGESTIONS": "NEARBY SUGGESTIONS",
+ "Needs-ID": "Needs ID",
+ "New-Observation": {
+ "comment": "Heading when creating a new observation",
+ "val": "New Observation"
+ },
+ "Newest-to-oldest": {
+ "comment": "Sort order, refers to newest or oldest date",
+ "val": "Newest to oldest"
+ },
+ "Next-observation": "Next observation",
+ "No-Location": "No Location",
+ "No-Media": "No Media",
+ "No-model-found": {
+ "comment": "As in a machine learning model that powers automated suggestions",
+ "val": "No model found"
+ },
+ "No-Notifications-Found": "You have no notifications! Get started by creating your own observations.",
+ "No-projects-match-that-search": "No projects match that search",
+ "No-results-found": {
+ "comment": "Used for explore screen when search params lead to a search with no data",
+ "val": "No results found"
+ },
+ "no-rights-reserved-cc0": {
+ "comment": "license code",
+ "val": "no rights reserved (CC0)"
+ },
+ "NONE": "NONE",
+ "none": "none",
+ "NOTES": {
+ "comment": "Header for observation description on observation detail",
+ "val": "NOTES"
+ },
+ "NOTIFICATIONS": "NOTIFICATIONS",
+ "Notifications": "Notifications",
+ "notifications-user-added-comment-to-observation-by-you": {
+ "comment": "notification when someone adds a comment to your observation",
+ "val": "<0>{ $userName }0> added a comment to an observation by you"
+ },
+ "notifications-user-added-identification-to-observation-by-you": {
+ "comment": "notification when someone adds an identification to your observation",
+ "val": "<0>{ $userName }0> added an identification to an observation by you"
+ },
+ "November": {
+ "comment": "Month of November",
+ "val": "November"
+ },
+ "Obervations-must-be-manually-added": "Observations must be manually added to a traditional project, either during the upload stage or after the observation has been shared to iNaturalist. A user must also join a traditional project in order to add their observations to it.",
+ "Obscured": "Obscured",
+ "Obscured-observation-location-map-description": {
+ "comment": "Displayed when user views an obscured location on the ObsDetail map screen",
+ "val": "This observation’s location is obscured. You are seeing a randomized point within the obscuration polygon."
+ },
+ "Observation": "Observation",
+ "Observation-Attribution": "Observation: © { $userName } · { $restrictions }",
+ "Observation-has-no-photos-and-no-sounds": "This observation has no photos and no sounds.",
+ "Observation-Name": "Observation { $scientificName }",
+ "Observation-options": {
+ "comment": "Label for a menu that shows various actions you can take for an observation",
+ "val": "Observation options"
+ },
+ "Observation-photos-unavailable-without-internet": "Observation photos unavailable without internet",
+ "OBSERVATION-WAS-DELETED": "OBSERVATION WAS DELETED",
+ "Observation-with-no-evidence": "Observation with no evidence",
+ "Observations": "Observations",
+ "Observations-created-on-iNaturalist": "Observations created on iNaturalist are used by scientists around the world.",
+ "Observations-View": "Observations View",
+ "OBSERVATIONS-WITHOUT-NUMBER": {
+ "comment": "Might be used when the number is represented using an image or other\nelement, not text",
+ "val": "{ $count ->\n [one] OBSERVATION\n *[other] OBSERVATIONS\n}"
+ },
+ "Observations-you-upload-to-iNaturalist": {
+ "comment": "Onboarding text on MyObservations: Onboarding text on MyObservations: 11-50 observations",
+ "val": "Observations you upload to iNaturalist can be used by scientists and researchers worldwide."
+ },
+ "Observe": {
+ "comment": "Button that starts a new observation",
+ "val": "Observe"
+ },
+ "Observe-and-identify-organisms-from-your-gallery": {
+ "comment": "Title of screen asking for permission to access the gallery",
+ "val": "Observe and identify organisms from your gallery"
+ },
+ "Observe-and-identify-organisms-in-real-time-with-your-camera": {
+ "comment": "Title of screen asking for permission to access the camera",
+ "val": "Observe and identify organisms in real-time with your camera"
+ },
+ "OBSERVE-ORGANISMS": {
+ "comment": "Text for a button prompting the user to grant access to the camera",
+ "val": "OBSERVE ORGANISMS"
+ },
+ "Observers": "Observers",
+ "Observers-View": {
+ "comment": "Section in Explore that shows people who added observations given a set of search filters",
+ "val": "Observers View"
+ },
+ "October": {
+ "comment": "Month of October",
+ "val": "October"
+ },
+ "Offensive-Inappropriate": "Offensive/Inappropriate",
+ "Offensive-Inappropriate-Examples": "Misleading or illegal content, racial or ethnic slurs, etc. For more on our defintion of \"appropriate,\" see the FAQ.",
+ "Offline-DQA-description": "The DQA may not be accurate. Check your internet connection and try again.",
+ "Offline-No-Notifications": "Cannot fetch notifications at this time.",
+ "OK": {
+ "comment": "Generic confirmation, e.g. button on a warning alert",
+ "val": "OK"
+ },
+ "Oldest-to-newest": {
+ "comment": "Sort order, refers to newest or oldest date",
+ "val": "Oldest to newest"
+ },
+ "One-last-step": "One last step!",
+ "Open": {
+ "comment": "Adjective, as in geoprivacy",
+ "val": "Open"
+ },
+ "Open-drawer": "Open drawer",
+ "OPEN-EMAIL": "OPEN EMAIL",
+ "Open-menu": "Open menu.",
+ "OPEN-SETTINGS": {
+ "comment": "Text for a button that opens the operating system Settings app",
+ "val": "OPEN SETTINGS"
+ },
+ "Opens-add-comment-modal": "Opens add comment modal.",
+ "Opens-add-observation-modal": "Opens add observation modal.",
+ "Opens-the-side-drawer-menu": "Opens the side drawer menu.",
+ "Organism-is-captive": {
+ "comment": "Picker prompt on observation edit",
+ "val": "Organism is captive"
+ },
+ "Organism-is-wild": "Organism is wild",
+ "Organisms-that-are-identified-to-species": "Organisms that are identified to species rank or below",
+ "Other": {
+ "comment": "Generic option in a list for unanticipated cases, e.g. a choice to manually\nenter an explanation for why you are flagging something instead of choosing\none of the existing options",
+ "val": "Other"
+ },
+ "OTHER-DATA": "OTHER DATA",
+ "PASSWORD": "PASSWORD",
+ "PERSONAL-INFO": "PERSONAL INFO",
+ "Photo-importer": "Photo importer",
+ "PHOTO-LICENSING": "PHOTO LICENSING",
+ "Photos": "Photos",
+ "Photos-you-take-will-appear-here": "Photos you take will appear here",
+ "Please-allow-Camera-Access": {
+ "comment": "Title of screen asking for permission to access the camera when access was denied",
+ "val": "Please allow Camera Access"
+ },
+ "Please-Allow-Gallery-Access": {
+ "comment": "Title of screen asking for permission to access the gallery when access was denied",
+ "val": "Please Allow Gallery Access"
+ },
+ "Please-allow-Location-Access": {
+ "comment": "Title of screen asking for permission to access location when access was denied",
+ "val": "Please allow Location Access"
+ },
+ "Please-allow-Microphone-Access": {
+ "comment": "Title of screen asking for permission to access the microphone when access was denied",
+ "val": "Please allow Microphone Access"
+ },
+ "Please-click-the-link": "Please click the link in the email within 60 minutes to confirm your account",
+ "Please-Grant-Permission": {
+ "comment": "Title of a screen asking for permission when permission has been denied",
+ "val": "Please Grant Permission"
+ },
+ "PLEASE-LOG-IN": "PLEASE LOG IN",
+ "Please-try-again-when-you-are-connected-to-the-internet": "Please try again when you are connected to the Internet.",
+ "Press-record-to-start": {
+ "comment": "Help text for beginning a sound recording",
+ "val": "Press record to start"
+ },
+ "Previous-observation": "Previous observation",
+ "Privacy-Policy": "Privacy Policy",
+ "Private": "Private",
+ "PROJECT": {
+ "comment": "As in an iNat project, a collection of observations or observation search filters",
+ "val": "PROJECT"
+ },
+ "PROJECT-REQUIREMENTS": "PROJECT REQUIREMENTS",
+ "PROJECTS": {
+ "comment": "As in iNat project, collections of observations or observation search filters",
+ "val": "PROJECTS"
+ },
+ "Projects": {
+ "comment": "As in iNat projects, collections of observations or observation search filters",
+ "val": "Projects"
+ },
+ "QUALITY-GRADE": "QUALITY GRADE",
+ "Quality-Grade-casual": {
+ "comment": "Shortened display of an observation's quality grade (used when displayed in a badge) - in this case, Casual",
+ "val": "Quality Grade Casual"
+ },
+ "quality-grade-casual": "Casual",
+ "quality-grade-needs-id": "Needs Id",
+ "Quality-Grade-needs_id": {
+ "comment": "Shortened display of an observation's quality grade (used when displayed in a badge) - in this case, Needs ID",
+ "val": "Quality Grade Needs ID"
+ },
+ "Quality-Grade-research": {
+ "comment": "Shortened display of an observation's quality grade (used when displayed in a badge) - in this case, Research Grade",
+ "val": "Quality Grade Research Grade"
+ },
+ "quality-grade-research": {
+ "comment": "Quality grade options",
+ "val": "Research Grade"
+ },
+ "Ranks-CLASS": "CLASS",
+ "Ranks-COMPLEX": "COMPLEX",
+ "Ranks-EPIFAMILY": "EPIFAMILY",
+ "Ranks-FAMILY": "FAMILY",
+ "Ranks-FORM": "FORM",
+ "Ranks-GENUS": "GENUS",
+ "Ranks-GENUSHYBRID": "GENUSHYBRID",
+ "Ranks-HYBRID": "HYBRID",
+ "Ranks-INFRACLASS": "INFRACLASS",
+ "Ranks-INFRAHYBRID": "INFRAHYBRID",
+ "Ranks-INFRAORDER": "INFRAORDER",
+ "Ranks-KINGDOM": "KINGDOM",
+ "Ranks-ORDER": "ORDER",
+ "Ranks-PARVORDER": "PARVORDER",
+ "Ranks-PHYLUM": "PHYLUM",
+ "Ranks-SECTION": "SECTION",
+ "Ranks-SPECIES": "SPECIES",
+ "Ranks-STATEOFMATTER": "STATE OF MATTER",
+ "Ranks-SUBCLASS": "SUBCLASS",
+ "Ranks-SUBFAMILY": "SUBFAMILY",
+ "Ranks-SUBGENUS": "SUBGENUS",
+ "Ranks-SUBKINGDOM": "SUBKINGDOM",
+ "Ranks-SUBORDER": "SUBORDER",
+ "Ranks-SUBPHYLUM": "SUBPHYLUM",
+ "Ranks-SUBSECTION": "SUBSECTION",
+ "Ranks-SUBSPECIES": "SUBSPECIES",
+ "Ranks-SUBTERCLASS": "SUBTERCLASS",
+ "Ranks-SUBTRIBE": "SUBTRIBE",
+ "Ranks-SUPERCLASS": "SUPERCLASS",
+ "Ranks-SUPERFAMILY": "SUPERFAMILY",
+ "Ranks-SUPERORDER": "SUPERORDER",
+ "Ranks-SUPERTRIBE": "SUPERTRIBE",
+ "Ranks-TRIBE": "TRIBE",
+ "Ranks-VARIETY": "VARIETY",
+ "Ranks-ZOOSECTION": "ZOOSECTION",
+ "Ranks-ZOOSUBSECTION": "ZOOSUBSECTION",
+ "Read-more-on-Wikipedia": "Read more on Wikipedia",
+ "RECORD-NEW-SOUND": {
+ "comment": "Heading for the sound recorder",
+ "val": "RECORD NEW SOUND"
+ },
+ "Record-organism-sounds-with-the-microphone": {
+ "comment": "Title of screen asking for permission to access the microphone",
+ "val": "Record organism sounds with the microphone"
+ },
+ "RECORD-SOUND": {
+ "comment": "Text for a button prompting the user to grant access to the microphone",
+ "val": "RECORD SOUND"
+ },
+ "Record-sounds": "Record sounds with your microphone",
+ "Record-verb": {
+ "comment": "Imperative verb for recording a sound",
+ "val": "Record"
+ },
+ "Recording-sound": {
+ "comment": "Status while recording a sound",
+ "val": "Recording sound"
+ },
+ "Recording-stopped-Tap-play-the-current-recording": "Recording stopped. Tap play the current recording.",
+ "REDO-SEARCH-IN-MAP-AREA": "REDO SEARCH IN MAP AREA",
+ "Remove-agreement": {
+ "comment": "Label for a button that removes a vote of agreement",
+ "val": "Remove agreement"
+ },
+ "Remove-disagreement": {
+ "comment": "Label for a button that removes a vote of disagreement",
+ "val": "Remove disagreement"
+ },
+ "Remove-favorite": "Remove favorite",
+ "Remove-Photos": "Remove Photos",
+ "Removes-your-vote-of-agreement": {
+ "comment": "Hint for a button that removes a vote of agreement",
+ "val": "Removes your vote of agreement"
+ },
+ "Removes-your-vote-of-disagreement": {
+ "comment": "Hint for a button that removes a vote of disagreement",
+ "val": "Removes your vote of disagreement"
+ },
+ "Research-Grade": {
+ "comment": "Quality grade option",
+ "val": "Research Grade"
+ },
+ "Reset": "Reset",
+ "RESET-PASSWORD": {
+ "comment": "Reset password button",
+ "val": "RESET PASSWORD"
+ },
+ "RESET-RECORDING": {
+ "comment": "Label for a button that resets a sound recording",
+ "val": "RESET RECORDING"
+ },
+ "RESET-SEARCH": "RESET SEARCH",
+ "RESET-SOUND-header": {
+ "comment": "Header of a popup confirming that the user wants to reset a sound\nrecording",
+ "val": "RESET SOUND?"
+ },
+ "Reset-verb": {
+ "comment": "Label for a button that resets the state of an interface, e.g. a button that\nresets the sound recorder to its original state",
+ "val": "Reset"
+ },
+ "Restore": {
+ "comment": "Label for button that restores a withdrawn identification",
+ "val": "Restore"
+ },
+ "Return-to-Login": "Return to Login",
+ "REVIEW-INATURALIST": "REVIEW INATURALIST",
+ "REVIEWED": {
+ "comment": "Title for section of observation filters for controls over whether you have\nreviewed the observations or not",
+ "val": "REVIEWED"
+ },
+ "Reviewed-observations-only": "Reviewed observations only",
+ "Satellite--map-type": {
+ "comment": "Label for the satellite map type",
+ "val": "Satellite"
+ },
+ "SAVE": {
+ "comment": "Label for a button that persists something",
+ "val": "SAVE"
+ },
+ "Save": {
+ "comment": "Label for a button that persists something",
+ "val": "Save"
+ },
+ "SAVE-ALL": "SAVE ALL",
+ "SAVE-CHANGES": "SAVE CHANGES",
+ "SAVE-LOCATION": "SAVE LOCATION",
+ "SAVE-PHOTOS": "SAVE PHOTOS",
+ "Save-photos-to-your-gallery": "Save photos to your gallery",
+ "Saved-Observation": "Saved observation, in queue to upload",
+ "Scan-the-area-around-you-for-organisms": "Scan the area around you for organisms.",
+ "Scientific-Name": "Scientific Name",
+ "Scientific-Name-Common-Name": "Scientific Name (Common Name)",
+ "SEARCH": {
+ "comment": "Title for a search interface",
+ "val": "SEARCH"
+ },
+ "Search": {
+ "comment": "Title for a search interface",
+ "val": "Search"
+ },
+ "SEARCH-FOR-A-LOCATION": "SEARCH FOR A LOCATION",
+ "Search-for-a-project": "Search for a project",
+ "SEARCH-FOR-A-TAXON": "SEARCH FOR A TAXON",
+ "Search-for-a-taxon": "Search for a taxon",
+ "SEARCH-LOCATION": "SEARCH LOCATION",
+ "SEARCH-PROJECTS": "SEARCH PROJECTS",
+ "SEARCH-TAXA": "SEARCH TAXA",
+ "SEARCH-USERS": "SEARCH USERS",
+ "See-all-your-observations-in-explore": {
+ "comment": "Accessibility label for Explore button on MyObservations toolbar",
+ "val": "See all your observations in explore"
+ },
+ "See-observations-by-this-user-in-Explore": {
+ "comment": "Accessibility label for Observations button on UserProfile screen",
+ "val": "See observations by this user in Explore"
+ },
+ "See-observations-in-explore": {
+ "comment": "Accessibility label for Explore button in MyObservationsEmpty for logged out user",
+ "val": "See observations in explore"
+ },
+ "See-observations-of-this-taxon-in-explore": {
+ "comment": "Accessibility label for Explore button on TaxonDetails screen",
+ "val": "See observations of this taxon in explore"
+ },
+ "See-species-observed-by-this-user-in-Explore": {
+ "comment": "Accessibility label for Species button on UserProfile screen",
+ "val": "See species observed by this user in Explore"
+ },
+ "Select-a-date-and-time-for-observation": "Select a date and time for observation",
+ "Select-captive-or-cultivated-status": "Select captive or cultivated status",
+ "Select-geoprivacy-status": "Select geoprivacy status",
+ "Select-photo": "Select photo",
+ "Select-the-identification-you-want-to-add": "Select the identification you want to add to this observation. You can add a filter to further refine your results or search for a taxon.",
+ "Select-user": {
+ "comment": "Label for an element that let's you select a user",
+ "val": "Select user"
+ },
+ "Selects-iconic-taxon-X-for-identification": "Selects iconic taxon { $iconicTaxon } for identification.",
+ "Separate-Photos": "Separate Photos",
+ "September": {
+ "comment": "Month of September",
+ "val": "September"
+ },
+ "SETTINGS": "SETTINGS",
+ "Settings": "Settings",
+ "Share": "Share",
+ "SHARE-DEBUG-LOGS": "SHARE DEBUG LOGS",
+ "Share-location": "Share Location",
+ "Share-map": "Share map",
+ "SHOP-INATURALIST-MERCH": "SHOP INATURALIST MERCH",
+ "Shop-iNaturalist-Merch": "Shop iNaturalist Merch",
+ "Show-observation-options": "Show observation options.",
+ "Shows-identification-suggestions": {
+ "comment": "Label for button that shows identification suggestions",
+ "val": "Shows identification suggestions"
+ },
+ "Shows-iNaturalist-bird-logo": "Shows iNaturalist bird logo.",
+ "Sign-out": "Sign out",
+ "Some-data-privacy-laws": "Some data privacy laws, like the European Union's General Data Protection Regulation (GDPR), require explicit consent to transfer personal information from their jurisdictions to other jurisdictions where the legal protection of this information is not considered adequate. As of 2020, the European Union no longer considers the United States to be a jurisdiction that provides adequate legal protection of personal information, specifically because of the possibility of the US government surveilling data entering the US. It is possible other jurisdictions may have the same opinion.",
+ "Something-went-wrong": {
+ "comment": "Generic error message",
+ "val": "Something went wrong."
+ },
+ "Sorry-this-observation-was-deleted": "Sorry, this observation was deleted",
+ "SORT-BY": "SORT BY",
+ "Sort-by": "Sort by",
+ "sound-playback-separator": {
+ "comment": "Character separating current position and total duration when playing a\nsound, e.g. 00:12 / 03:00 uses \"/\" as the separator. This can be anything,\nbut it should be very short.",
+ "val": "/"
+ },
+ "Sound-recorder": "Sound recorder",
+ "sound-recorder-help-A-recording-of": "A recording of 5-15 seconds is best to help identifiers.",
+ "sound-recorder-help-Get-as-close-as-you-can": "Get as close as you safely can to record the organism.",
+ "sound-recorder-help-Get-closer": "Get closer",
+ "sound-recorder-help-Keep-it-short": "Keep it short",
+ "sound-recorder-help-Make-sure": "Make sure the sound of your own movement doesn’t cover up the sound of the organism.",
+ "sound-recorder-help-One-organism": "One organism",
+ "sound-recorder-help-Stop-moving": "Stop moving",
+ "sound-recorder-help-Try-to-isolate": "Try to isolate the sound of a single organism. If you can’t, make sure to leave a note of which organism you’re recording.",
+ "Sounds": "Sounds",
+ "Source-List": "<0>(Source List: 0><1>{ $source }1><0>)0>",
+ "Spam": "Spam",
+ "Spam-Examples": "Commercial solicitation, links to nowhere, etc.",
+ "Species": "Species",
+ "Species-View": "Species View",
+ "SPECIES-WITHOUT-NUMBER": "{ $count ->\n [one] SPECIES\n *[other] SPECIES\n}",
+ "Standard--map-type": {
+ "comment": "Label for the standard map type",
+ "val": "Standard"
+ },
+ "Start-must-be-before-end": "The start date must be before the end date.",
+ "Start-upload": "Start upload",
+ "Starts-recording-sound": {
+ "comment": "Accessibility hint for button that starts recording a sound",
+ "val": "Starts recording sound"
+ },
+ "Stay-on-this-screen": "Stay on this screen while your location loads.",
+ "Still-need-help": "Still need help? You can file a support request here.",
+ "Stop-upload": {
+ "comment": "Button or accessibility label for an interactive element that stops an upload",
+ "val": "Stop upload"
+ },
+ "Stop-verb": {
+ "comment": "Imperative verb for stopping the recording of a sound",
+ "val": "Stop"
+ },
+ "Stops-recording-sound": {
+ "comment": "Accessibility hint for a button that stops the recording of a sound",
+ "val": "Stops recording sound"
+ },
+ "SUGGEST-ID": "SUGGEST ID",
+ "supporting--identification": {
+ "comment": "Identification category",
+ "val": "Supporting"
+ },
+ "Switches-to-tab": "Switches to { $tab } tab.",
+ "Sync-observations": "Sync observations",
+ "Syncing": "Syncing...",
+ "Take-photo": "Take photo",
+ "Take-photos-with-the-camera": "Take photos of a single organism with the camera",
+ "TAXON": "TAXON",
+ "TAXON-NAMES-DISPLAY": {
+ "comment": "Settings screen",
+ "val": "TAXON NAMES DISPLAY"
+ },
+ "TAXONOMIC-RANKS": "TAXONOMIC RANKS",
+ "TAXONOMY-header": {
+ "comment": "Header for a block of text describing a taxon's taxonomy",
+ "val": "TAXONOMY"
+ },
+ "TEACHERS": "TEACHERS",
+ "Teachers-Guide": "Teachers' Guide",
+ "TEAM": "TEAM",
+ "Terms-of-Use": "Terms of Use",
+ "Text-Box-to-Describe-Reason-for-Flag": "Text box to describe reason for flag.",
+ "The-exact-location-will-be-hidden": "The exact location will be hidden publicly, and instead generalized to a larger area. (Threatened and endangered species are automatically obscured).",
+ "The-iNaturalist-Network": "The iNaturalist network is a collection of localized websites that are fully connected to the global iNaturalist community. Network sites are supported by local institutions that promote local use and facilitate the use of data from iNaturalist to benefit local biodiversity.",
+ "The-iNaturalist-team-has-collaborated": "The iNaturalist team has collaborated with...",
+ "The-location-will-not-be-visible": "The location will not be visible to others, which means it may be difficult to identify.",
+ "There-is-no-way": "There is no way to have an iNaturalist account without storing personal information, so the only way to revoke this consent is to delete your account.",
+ "This-is-a-wild-organism": {
+ "comment": " Wild status sheet descriptions",
+ "val": "This is a wild organism and wasn't placed in this location by humans."
+ },
+ "This-is-how-taxon-names-will-be-displayed": "This is how all taxon names will be displayed to you across iNaturalist:",
+ "This-observer-has-opted-out-of-the-Community-Taxon": "This observer has opted out of the Community Taxon",
+ "This-organism-was-placed-by-humans": "This organism was placed in this location by humans. This applies to things like garden plants, pets, and zoo animals.",
+ "To-access-all-other-settings": "To access all other account settings, click here:",
+ "To-learn-more-about-what-information": "To learn more about what information we collect and how we use it, please see our Privacy Policy and our Terms of Use.",
+ "To-sync-your-observations-to-iNaturalist": "To sync your observations to iNaturalist, please log in.",
+ "Toggle-map-type": "Toggle map type",
+ "TOP-ID-SUGGESTION": "TOP ID SUGGESTION",
+ "Traditional-Project": "Traditional Project",
+ "Umbrella-Project": "Umbrella Project",
+ "UNFOLLOW": "UNFOLLOW",
+ "UNFOLLOW-USER": "UNFOLLOW USER?",
+ "Unknown--taxon": {
+ "comment": "Text to show when a taxon or identification is unknown or missing",
+ "val": "Unknown"
+ },
+ "Unknown--user": {
+ "comment": "Text to show when a user (or their name) is unknown or missing",
+ "val": "Unknown"
+ },
+ "Unknown-error": {
+ "comment": "Generic error message",
+ "val": "Unknown error"
+ },
+ "Unknown-organism": "Unknown organism",
+ "Unreviewed-observations-only": "Unreviewed observations only",
+ "Upload-Complete": "Upload Complete",
+ "Upload-in-progress": "Upload in progress",
+ "UPLOAD-NOW": "UPLOAD NOW",
+ "Upload-photos-from-your-gallery": "Upload photos of multiple organisms from your gallery",
+ "Upload-photos-from-your-gallery-and-create-observations": "Upload photos from your gallery and create observations and get identifications of organisms you’ve already observed!",
+ "Upload-Progress": "Upload { $uploadProgress } percent complete",
+ "Upload-x-observations": {
+ "comment": "Shows the number of observations a user can upload to iNat from my observations page",
+ "val": "Upload { $count ->\n [one] 1 observation\n *[other] { $count } observations\n}"
+ },
+ "Uploaded-via-application": {
+ "comment": "Describes whether a user made this observation from web, iOS, or Android",
+ "val": "Uploaded via: { $application }"
+ },
+ "Uploading-x-of-y": {
+ "comment": "Shows the progress of uploads for X of Y",
+ "val": "Uploading { $currentUploadCount } of { $total }"
+ },
+ "Uploading-x-of-y-observations": {
+ "comment": "Shows the number of observations a user is currently uploading out of total on my observations page",
+ "val": "Uploading { $currentUploadCount } of { $total ->\n [one] 1 observation\n *[other] { $total } observations\n}"
+ },
+ "Use-iNaturalists-AI-Camera": "Use iNaturalist's AI Camera to identify organisms in real-time",
+ "USE-LOCATION": {
+ "comment": "Text for a button prompting the user to grant access to location",
+ "val": "USE LOCATION"
+ },
+ "Use-the-devices-other-camera": "Use the device's other camera.",
+ "Use-the-iNaturalist-camera-to-observe": "Use the iNaturalist camera to observe and identify organisms on-screen in real-time, and share them with our community to get identifications and contribute to science!",
+ "Use-your-devices-microphone-to-record": "Use your device’s microphone to record sounds made by organisms and share them with our community to get identifications and contribute to science!",
+ "USER": "USER",
+ "User": "User { $userHandle }",
+ "USERNAME": "USERNAME",
+ "USERNAME-OR-EMAIL": {
+ "comment": "Appears above the text fields",
+ "val": "USERNAME OR EMAIL"
+ },
+ "Using-iNaturalist-requires-the-storage": "Using iNaturalist requires the storage of personal information like your email address, all iNaturalist data is stored in the United States, and we cannot be sure what legal jurisdiction you are in when you are using iNaturalist, so in order to comply with privacy laws like the GDPR, you must acknowledge that you understand and accept this risk and consent to transferring your personal information to iNaturalist's servers in the US.",
+ "VIEW-CHILDREN-TAXA": "VIEW CHILDREN TAXA",
+ "VIEW-DATA-QUALITY-ASSESSEMENT": "VIEW DATA QUALITY ASSESSEMENT",
+ "View-in-browser": "View in Browser",
+ "VIEW-IN-EXPLORE": "VIEW IN EXPLORE",
+ "VIEW-INATURALIST-HELP": "VIEW INATURALIST HELP",
+ "View-photo": {
+ "comment": "Button or accessibility label for an element that lets the user view a\nphoto",
+ "val": "View photo"
+ },
+ "View-photo-licensing-info": "View photo licensing info",
+ "VIEW-PROJECT-REQUIREMENTS": "VIEW PROJECT REQUIREMENTS",
+ "VIEW-PROJECTS": "VIEW PROJECTS",
+ "View-suggestions": {
+ "comment": "Label for a button that shows identification suggestions for an observation\nor photo",
+ "val": "View suggestions"
+ },
+ "VIEW-TEACHERS-GUIDE": "VIEW TEACHERS' GUIDE",
+ "Viewing-Offline-Suggestions": {
+ "comment": "Title for a notice informing the user that they are viewing offline\nidentification suggestions",
+ "val": "Viewing Offline Suggestions"
+ },
+ "Viewing-Offline-Suggestions-results-may-differ": "Results may differ from the online suggestions and images and common names may not display.",
+ "We-sent-a-confirmation-email": "We sent a confirmation email to the email you signed up with.",
+ "We-store-personal-information": "We store personal information like usernames and email addresses in order to manage accounts on this site, and to comply with privacy laws, we need you to check this box to indicate that you consent to this use of personal information. To learn more about what information we collect and how we use it, please see our Privacy Policy and our Terms of Use.",
+ "Welcome-to-iNaturalist": "Welcome to iNaturalist!",
+ "Welcome-user": {
+ "comment": "Welcome user back to app",
+ "val": "<0>Welcome back,0><1>{ $userHandle }1>"
+ },
+ "WHAT-IS-INATURALIST": "WHAT IS INATURALIST?",
+ "Whats-more-by-recording": "What's more, by recording and sharing your observations, you'll create research-quality data for scientists working to better understand and protect nature. So if you like recording your findings from the outdoors, or if you just like learning about life, join us!",
+ "WIKIPEDIA": "WIKIPEDIA",
+ "Wild": "Wild",
+ "WILD-STATUS": "WILD STATUS",
+ "Withdraw": {
+ "comment": "Label for a button that withdraws an identification",
+ "val": "Withdraw"
+ },
+ "WITHDRAW-ID": {
+ "comment": "Button to Withdraw identification made by user",
+ "val": "WITHDRAW ID"
+ },
+ "WITHDRAW-ID-QUESTION": "WITHDRAW ID?",
+ "Withdraws-identification": "Withdraws identification",
+ "Worldwide": "Worldwide",
+ "WORLDWIDE": "WORLDWIDE",
+ "Would-you-like-to-discard-your-current-recording-and-start-over": "Would you like to discard your current recording and start over?",
+ "x-comments": "{ $count ->\n [one] { $count } comment\n *[other] { $count } comments\n}",
+ "X-Identifications": "{ $count ->\n [one] { $count } Identification\n *[other] { $count } Identifications\n}",
+ "x-identifications": "{ $count ->\n [one] { $count } identification\n *[other] { $count } identifications\n}",
+ "X-Identifiers": "{ $count ->\n [one] { $count } Identifier\n *[other] { $count } Identifiers\n}",
+ "X-Observations": {
+ "comment": "Banner above Explore Map showing total number of results",
+ "val": "{ $count ->\n [one] 1 Observation\n *[other] { $count } Observations\n}"
+ },
+ "X-observations": "{ $count ->\n [one] 1 observation\n *[other] { $count } observations\n}",
+ "X-observations-deleted": "{ $count ->\n [one] 1 observation deleted\n *[other] { $count } observations deleted\n}",
+ "X-observations-uploaded": "{ $count ->\n [one] 1 observation uploaded\n *[other] { $count } observations uploaded\n}",
+ "X-Observers": "{ $count ->\n [one] { $count } Observer\n *[other] { $count } Observers\n}",
+ "X-of-Y": "{ $count ->\n [one] 1\n *[other] { $count }\n} { $totalObservationCount ->\n [one] of { $totalObservationCount }\n *[other] of { $totalObservationCount }\n}",
+ "X-PHOTOS": {
+ "comment": "Displays number of photos attached to an observation in the Media Viewer",
+ "val": "{ $photoCount ->\n [one] 1 PHOTO\n *[other] { $photoCount } PHOTOS\n}"
+ },
+ "X-PHOTOS-X-OBSERVATIONS": {
+ "comment": "Displays number of photos and observations a user has selected from the camera roll",
+ "val": "{ $photoCount ->\n [one] 1 PHOTO\n *[other] { $photoCount } PHOTOS\n}, { $observationCount ->\n [one] 1 OBSERVATION\n *[other] { $observationCount } OBSERVATIONS\n}"
+ },
+ "X-PHOTOS-Y-SOUNDS": {
+ "comment": "Displays number of photos and sounds attached to an observation in the Media\nViewer",
+ "val": "{ $photoCount ->\n [one] 1 PHOTO\n *[other] { $photoCount } PHOTOS\n}, { $soundCount ->\n [one] 1 SOUND\n *[other] { $soundCount } SOUNDS\n}"
+ },
+ "X-SOUNDS": {
+ "comment": "Displays number of sounds attached to an observation in the Media Viewer",
+ "val": "{ $count ->\n [one] 1 SOUND\n *[other] { $count } SOUNDS\n}"
+ },
+ "X-Species": "{ $count ->\n [one] { $count } Species\n *[other] { $count } Species\n}",
+ "Yes-license-my-photos": "Yes, license my photos, sounds, and observations so scientists can use my data (recommended)",
+ "You-can-add-up-to-20-media": "You can add up to 20 photos and 20 sounds per observation.",
+ "You-can-also-check-out-merchandise": "You can also check out merchandise for iNaturalist and Seek at our store below!",
+ "You-can-also-explore-existing-observations": "You can also explore existing observations on iNaturalist to discover what's around you.",
+ "You-can-click-join-on-the-project-page": "You can click “join” on the project page.",
+ "You-can-find-answers-on-our-help-page": "You can find answers on our help page.",
+ "You-can-only-add-20-photos-per-observation": "You can only add 20 photos per observation",
+ "You-can-search-observations-of-any-plant-or-animal": {
+ "comment": "Onboarding text on MyObservations: Onboarding text on MyObservations: 51-100 observations",
+ "val": "You can search observations of any plant or animal anywhere in the world with Explore!"
+ },
+ "You-can-still-share-the-file": "You can still share the file with another app. If you can email it, please send it to { $email }",
+ "You-can-upload-this-observation-to-our-community": "You can upload this observation to our community to get an identification from a real person, and help our AI improve its identifications in the future",
+ "You-changed-filters-will-be-discarded": "You changed filters, but they were not applied to your explore search results.",
+ "You-have-opted-out-of-the-Community-Taxon": "You have opted out of the Community Taxon",
+ "You-havent-joined-any-projects-yet": "You haven’t joined any projects yet!",
+ "You-must-be-logged-in-to-view-messages": "You must be logged in to view messages",
+ "You-need-an-Internet-connection-to-do-that": {
+ "comment": "Error message when you try to do something that requires an Internet\nconnection but such a connection is, tragically, missing",
+ "val": "You need an Internet connection to do that."
+ },
+ "You-need-log-in-to-do-that": {
+ "comment": "Error message when you try to do something that requires log in",
+ "val": "You need to log in to do that."
+ },
+ "Your-donation-to-iNaturalist": "Your donation to iNaturalist supports the improvement and stability of the mobile apps and website that connects millions of people to nature and enables the protection of biodiversity worldwide!",
+ "Your-email-is-confirmed": "Your email is confirmed! Please log in to continue.",
+ "Your-identification-will-be-posted-with-the-following-comment": "Your identification will be posted with the following comment:",
+ "Your-location-uncertainty-is-over-x-km": "Your location uncertainty is over { $x } km, which is too high to be helpful to identifiers. Edit the location and zoom in until the accuracy circle turns green and is centered on where you observed the organism.",
+ "Youve-denied-permission-prompt": {
+ "comment": "Text prompting the user to open Settings to grant permission after\npermission has been denied",
+ "val": "You’ve denied permission. Please grant permission in the settings app."
+ },
+ "Youve-previously-denied-camera-permissions": "You've previously denied camera permissions, so please enable them in settings.",
+ "Youve-previously-denied-gallery-permissions": "You’ve previously denied gallery permissions, so please enable them in settings.",
+ "Youve-previously-denied-location-permissions": "You’ve previously denied location permissions, so please enable them in settings.",
+ "Youve-previously-denied-microphone-permissions": "You’ve previously denied microphone permissions, so please enable them in settings.",
+ "Zoom-in-as-much-as-possible-to-improve": "Zoom in as much as possible to improve location accuracy and get better identifications.",
+ "Zoom-to-current-location": "Zoom to current location"
+}
diff --git a/src/i18n/l10n/en.ftl.orig b/src/i18n/l10n/en.ftl.orig
new file mode 100644
index 000000000..4c556450a
--- /dev/null
+++ b/src/i18n/l10n/en.ftl.orig
@@ -0,0 +1,1136 @@
+### Source strings for iNaturalistReactNative
+###
+### Notes
+### * GroupComments (comments beginning w/ ##) are not allowed because all
+### strings in this file will be alphabetized and it's impossible to
+### determine where group comments should fit in.
+### * Keys should match their content closesly but not exceed 100 chars
+### * Try to annotate all strings with comments to provide context for
+### translators, especially for fragments and any situation where the
+### meaning is open to interpretation without context
+### * Use different strings for synonyms, e.g. stop-noun and stop-verb, as
+### these might have different translations in different languages
+### * Accessibility hints are used by screen readers to describe what happens
+### when the user interacts with an element
+### (https://developer.apple.com/documentation/uikit/uiaccessibilityelement/1619585-accessibilityhint).
+### The iOS Guidelines defines it as "A string that briefly describes the
+### result of performing an action on the accessibility element." We write
+### them in third person singular ending with a period.
+
+# Header for a general description, e.g. of a user, or of iNaturalist itself
+ABOUT = ABOUT
+ABOUT-COLLECTION-PROJECTS = ABOUT COLLECTION PROJECTS
+ABOUT-INATURALIST = ABOUT INATURALIST
+# About the Data Quality Assement
+ABOUT-THE-DQA = ABOUT THE DQA
+About-the-DQA-description = The Quality Grade summarizes the accuracy, precision, completeness, relevance, and appropriateness of an iNaturalist observation as biodiversity data. Some attributes are automatically determined, while others are subject to a vote by iNat users. iNaturalist shares licensed "Research Grade" observations with a number of data partners for use in science and conservation.
+ABOUT-TRADITIONAL-PROJECTS = ABOUT TRADITIONAL PROJECTS
+ABOUT-UMBRELLA-PROJECTS = ABOUT UMBRELLA PROJECTS
+# Label for a taxon when a user prefers to see or hear the common name first
+accessible-comname-sciname = { $commonName } ({ $scientificName })
+# Label for a taxon when a user prefers to see or hear the scientific name first
+accessible-sciname-comname = { $scientificName } ({ $commonName })
+ACTIVITY = ACTIVITY
+# Label for a button that adds a vote of agreement
+Add-agreement = Add agreement
+ADD-AN-ID = ADD AN ID
+ADD-COMMENT = ADD COMMENT
+Add-comment = Add comment
+Add-Date-Time = Add Date/Time
+# Label for a button that adds a vote of disagreement
+Add-disagreement = Add disagreement
+ADD-EVIDENCE = ADD EVIDENCE
+Add-favorite = Add favorite
+Add-Location = Add Location
+# Accessibility label for a button that starts the process of adding an
+# observation, e.g. the button in the tab bar
+Add-observations = Add observations
+ADD-OPTIONAL-COMMENT = ADD OPTIONAL COMMENT
+Add-optional-notes = Add optional notes
+# Hint for a button that adds a vote of agreement
+Adds-your-vote-of-agreement = Adds your vote of agreement
+# Hint for a button that adds a vote of disagreement
+Adds-your-vote-of-disagreement = Adds your vote of disagreement
+Affiliation = Affiliation: { $site }
+# Label for button that adds an identification of the same taxon as another identification
+Agree = Agree
+# Label for button that adds an identification of the same taxon as another identification
+AGREE = AGREE
+# Checkbox label that checks all of the consent agreements a user must make
+# before signing up
+Agree-to-all-of-the-above = Agree to all of the above
+AGREE-WITH-ID = AGREE WITH ID?
+Agree-with-ID-description = Would you like to agree with the ID and suggest the following identification?
+ALL = ALL
+All = All
+All-observations = All observations
+All-organisms = All organisms
+# As in intellectual property rights over a photo or other creative work
+all-rights-reserved = all rights reserved
+# As in automated identification suggestions
+ALL-SUGGESTIONS = ALL SUGGESTIONS
+Almost-done = Almost done!
+Already-have-an-account = Already have an account? Log in
+An-Internet-connection-is-required = An Internet connection is required to load more observations.
+# Generic option in a menu of choices that indicates that any of the choices
+# would be acceptable
+Any = Any
+# Geoprivacy sheet descriptions
+Anyone-using-iNaturalist-can-see = Anyone using iNaturalist can see where this species was observed, and scientists can most easily use it for research.
+APPLY-FILTERS = APPLY FILTERS
+Apply-filters = Apply filters
+# Month of April
+April = April
+# Short for Augmented Reality Camera. This is what we call the camera that
+# overlays identification suggestions in real time
+AR-Camera = AR Camera
+Are-you-a-teacher = Are you a teacher wanting to use iNaturalist with your students?
+Are-you-sure-you-want-to-sign-out = Are you sure you want to sign out? This will delete all your observations on this device. It will not affect any observations you've uploaded to iNaturalist.
+# Onboarding text on MyObservations: 0-10 observations
+As-you-upload-more-observations = As you upload more observations, others in our community may be able to help you identify them!
+attribution-cc-by = some rights reserved (CC BY)
+attribution-cc-by-nc = some rights reserved (CC BY-NC)
+attribution-cc-by-nc-nd = some rights reserved (CC BY-NC-ND)
+attribution-cc-by-nc-sa = some rights reserved (CC BY-NC-SA)
+attribution-cc-by-nd = some rights reserved (CC BY-ND)
+attribution-cc-by-sa = some rights reserved (CC BY-SA)
+# Month of August
+August = August
+# Returns user to login screen
+BACK-TO-LOGIN = BACK TO LOGIN
+BLOG = BLOG
+# Accessibility label for bulk import / photo import button
+# These are used by screen readers to label actionable elements iOS: https://developer.apple.com/documentation/uikit/uiaccessibilityelement/1619577-accessibilitylabel
+# iOS Guidelines "A string that succinctly identifies the accessibility element." Starts with capital letter, no ending punctuation.
+Bulk-importer = Bulk importer
+By-exiting-changes-not-saved = By exiting, changes to your observation will not be saved.
+By-exiting-observation-not-saved = By exiting, your observation will not be saved.
+By-exiting-your-observations-not-saved = By exiting, your observations will not be saved. You can save them to your device, or you can delete them.
+By-exiting-your-photos-will-not-be-saved = By exiting, your photos will not be saved.
+By-exiting-your-recorded-sound-will-not-be-saved = By exiting, your recorded sound will not be saved.
+Camera = Camera
+CANCEL = CANCEL
+Cancel = Cancel
+Captive-Cultivated = Captive/Cultivated
+# "Casual" Data quality grade
+Casual = Casual
+# Short label for the Creative Commons Attribution license
+CC-BY = CC BY
+# Short label for the Creative Commons Attribution-NonCommercial license
+CC-BY-NC = CC BY-NC
+# Short label for the Creative Commons Attribution-NonCommercial-NoDerivatives license
+CC-BY-NC-ND = CC BY-NC-ND
+# Short label for the Creative Commons Attribution-NonCommercial-ShareAlike license
+CC-BY-NC-SA = CC BY-NC-SA
+# Short label for the Creative Commons Attribution-NoDerivatives license
+CC-BY-ND = CC BY-ND
+# Short label for the Creative Commons Attribution-ShareAlike license
+CC-BY-SA = CC BY-SA
+# Short label for the Creative Commons Zero declaration
+CC0 = CC0
+# Label for a button that changes a selected date
+CHANGE-DATE = CHANGE DATE
+# Label for a button that changes a selected date
+Change-date = Change date
+# Label for a button that changes a selected end date
+CHANGE-END-DATE = CHANGE END DATE
+# Label for a button that changes a selected end date
+Change-end-date = Change end date
+Change-project = Change project
+# Label for a button that changes a selected start date
+CHANGE-START-DATE = CHANGE START DATE
+# Label for a button that changes a selected start date
+Change-start-date = Change start date
+Change-taxon = Change taxon
+# Button that changes the taxon filter on Explore
+Change-taxon-filter = Change taxon filter
+Change-user = Change user
+# Label for a button that cycles through zoom levels for the camera
+Change-zoom = Change zoom
+<<<<<<< HEAD
+# Notification that appears after pressing the reset password button
+=======
+Check-this-box-if-you-want-to-apply-a-Creative-Commons = Check this box if you want to apply a Creative Commons
+# After pressing the reset password button
+>>>>>>> main
+CHECK-YOUR-EMAIL = CHECK YOUR EMAIL!
+# Text for a button prompting the user to grant access to the gallery
+CHOOSE-PHOTOS = CHOOSE PHOTOS
+# Label for button that chooses a taxon
+Choose-taxon = Choose taxon
+# Label for a button that clears content, like the text entered in a text
+# field
+Clear = Clear
+# Label for a button that closes a window or popup
+Close = Close
+# Accessibility label for a button that closes the permission request screen
+Close-permission-request-screen = Close permission request screen
+# Label for a button that closes a search interface
+Close-search = Close search
+Closes-new-observation-options = Closes new observation options.
+Closes-withdraw-id-sheet = Closes "Withdraw ID" sheet
+# Heading for a section that describes people and organizations that
+# collaborate with iNaturalist
+COLLABORATORS = COLLABORATORS
+Collection-Project = Collection Project
+# Button that combines multiple photos into a single observation
+Combine-Photos = Combine Photos
+# Title for a form that let's you enter a comment
+COMMENT = COMMENT
+# Label for a button that shows options for a comment
+Comment-options = Comment options
+# Label for a setting that shows the common name first
+Common-Name-Scientific-Name = Common Name (Scientific Name)
+Community-Guidelines = Community Guidelines
+# Button that confirms a choice the user has made
+CONFIRM = CONFIRM
+Connect-with-other-naturalists = Connect with other naturalists and engage in conversations.
+Connection-problem-Please-try-again-later = Connection problem. Please try again later.
+CONTACT-SUPPORT = CONTACT SUPPORT
+<<<<<<< HEAD
+# Notification when coordinates have been copied
+Coordinates-copied-to-clipboard = Coordinates copied to clipboard
+# Button that copies coordinates to the clipboard
+=======
+CONTINUE = CONTINUE
+Coordinates-copied-to-keyboard = Coordinates copied to keyboard
+>>>>>>> main
+Copy-coordinates = Copy Coordinates
+# Right to control copies of a creative work; this string may be used as a
+# heading to describe general information about rights, attribution, and
+# licensing
+Copyright = Copyright
+Couldnt-create-comment = Couldn't create comment
+Couldnt-create-identification-error = Couldn't create identification { $error }
+Couldnt-create-identification-unknown-error = Couldn't create identification, unknown error.
+CREATE-AN-ACCOUNT = CREATE AN ACCOUNT
+Create-an-observation-evidence = Create an observation with no evidence
+CREATE-YOUR-FIRST-OBSERVATION = CREATE YOUR FIRST OBSERVATION
+DATA-QUALITY = DATA QUALITY
+DATA-QUALITY-ASSESSMENT = DATA QUALITY ASSESSMENT
+Data-quality-assessment-can-taxon-still-be-confirmed-improved-based-on-the-evidence = Based on the evidence, can the Community Taxon still be improved?
+Data-quality-assessment-community-taxon-species-level-or-lower = Community taxon at species level or lower
+# Data Quality Assessment section label: whether or not the observation date is accurate
+Data-quality-assessment-date-is-accurate = Date is accurate
+# Data Quality Assessment section label: whether or not the observation date was specified
+Data-quality-assessment-date-specified = Date specified
+Data-quality-assessment-description-casual = This observation has not met the conditions for Research Grade status.
+Data-quality-assessment-description-needs-id = This observation has not yet met the conditions for Research Grade status:
+# Data Quality Assessment explanation when quality is Research Grade
+Data-quality-assessment-description-research = It can now be used for research and featured on other websites.
+Data-quality-assessment-evidence-of-organism = Evidence of organism
+Data-quality-assessment-has-photos-or-sounds = Has Photos or Sounds
+Data-quality-assessment-id-supported-by-two-or-more = Has ID supported by two or more
+Data-quality-assessment-location-is-accurate = Location is accurate
+Data-quality-assessment-location-specified = Location specified
+Data-quality-assessment-organism-is-wild = Organism is wild
+Data-quality-assessment-recent-evidence-of-organism = Recent evidence of an organism
+Data-quality-assessment-title-casual = This observation is Casual Grade
+Data-quality-assessment-title-needs-id = This observation Needs ID
+# declares the current data quality status of the observation when quality is Research Grade
+Data-quality-assessment-title-research = This observation is Research Grade!
+Data-quality-casual-description = This observation needs more information verified to be considered verifiable
+Data-quality-needs-id-description = This observation needs more identifications to reach research grade
+Data-quality-research-description = This observation has enough identifications to be considered resarch grade
+DATE = DATE
+# Used when displaying a relative time - in this case, X days ago (e.g. 3d = 3 days ago)
+Date-days = { $count }d
+# Date formatting using date-fns
+# See complete list of formatting styles: https://date-fns.org/v2.29.3/docs/format
+date-format-long = PP
+# Date formatting using date-fns
+# See complete list of formatting styles: https://date-fns.org/v2.29.3/docs/format
+date-format-short = M/d/yy
+# Used when displaying a relative time - in this case, X hours ago (e.g. 3h = 3 hours ago)
+Date-hours = { $count }h
+# Used when displaying a relative time - in this case, X minutes ago (e.g. 3m = 3 minutes ago)
+Date-minutes = { $count }m
+DATE-OBSERVED = DATE OBSERVED
+Date-observed = Date observed
+Date-observed-header-short = Observed
+DATE-OBSERVED-NEWEST = DATE OBSERVED - NEWEST TO OLDEST
+DATE-OBSERVED-OLDEST = DATE OBSERVED - OLDEST TO NEWEST
+# Label for controls over a range of dates
+Date-Range = Date Range
+# Label for controls over a range of dates
+DATE-RANGE = DATE RANGE
+# Used when displaying a relative time - in this case, shows an absolute date (e.g. 12/31/22)
+Date-short-format = MM/dd/yy
+# Used when displaying a relative time - in this case, shows only month+year (same year) - e.g. Jul 3
+Date-this-year = MMM d
+DATE-UPLOADED = DATE UPLOADED
+Date-uploaded = Date uploaded
+Date-uploaded-header-short = Uploaded
+DATE-UPLOADED-NEWEST = DATE UPLOADED - NEWEST TO OLDEST
+DATE-UPLOADED-OLDEST = DATE UPLOADED - OLDEST TO NEWEST
+# Used when displaying a relative time - in this case, X weeks ago (e.g. 3w = 3 weeks ago)
+Date-weeks = { $count }w
+# Date formatting using date-fns
+# See complete list of formatting styles: https://date-fns.org/v2.29.3/docs/format
+datetime-format-short = M/d/yy h:mm a
+# Month of December
+December = December
+DELETE = DELETE
+Delete-all-observations = Delete all observations
+Delete-comment = Delete comment
+DELETE-COMMENT--question = DELETE COMMENT?
+Delete-observation = Delete observation
+DELETE-OBSERVATION--question = DELETE OBSERVATION?
+# Button label or accessibility label for an element that deletes a photo
+Delete-photo = Delete photo
+Delete-sound = Delete sound
+# Shows the progress of deletions for X of Y
+Deleting-x-of-y = Deleting { $currentDeleteCount } of { $total }
+# Shows the number of observations a user is currently deleting out of total on my observations page
+Deleting-x-of-y-observations =
+ Deleting { $currentDeleteCount } of { $total ->
+ [one] 1 observation
+ *[other] { $total } observations
+ }
+# Tab label or section title for content that describes further details, e.g.
+# the details of an observation
+DETAILS = DETAILS
+# Button that disables the camera's flash
+Disable-flash = Disable flash
+# Button that discards changes or an item, e.g. a photo
+DISCARD = DISCARD
+# Button that discards all items, e.g. imported photos
+DISCARD-ALL = DISCARD ALL
+# Button that discards changes
+DISCARD-CHANGES = DISCARD CHANGES
+DISCARD-FILTER-CHANGES = DISCARD FILTER CHANGES
+DISCARD-MEDIA--question = DISCARD MEDIA?
+DISCARD-OBSERVATION = DISCARD OBSERVATION
+DISCARD-PHOTOS--question = DISCARD PHOTOS?
+# Label for a button that discards a sound recording
+DISCARD-RECORDING = DISCARD RECORDING
+# Header of a popup confirming that the user wants to discard a sound
+# recording
+DISCARD-SOUND--question = DISCARD SOUND?
+DISCARD-X-OBSERVATIONS =
+ { $count ->
+ [one] DISCARD OBSERVATION
+ *[other] DISCARD { $count } OBSERVATIONS
+ }
+DISMISS = DISMISS
+DONATE = DONATE
+DONATE-TO-INATURALIST = DONATE TO INATURALIST
+Donate-to-iNaturalist = Donate to iNaturalist
+# Label for a button the user taps when a task is complete
+DONE = DONE
+Dont-have-an-account = Don't have an account? Sign up
+During-app-start-no-model-found = During app start there was no computer vision model found. There will be no AR camera.
+# Button for editing something
+Edit = Edit
+EDIT-COMMENT = EDIT COMMENT
+Edit-comment = Edit comment
+EDIT-LOCATION = EDIT LOCATION
+# Label for interactive element that takes you to a location choosing screen
+Edit-location = Edit location
+Edit-Observation = Edit Observation
+# Label for button that edits an observation's taxon
+Edits-this-observations-taxon = Edits this observation's taxon
+EMAIL = EMAIL
+EMAIL-DEBUG-LOGS = EMAIL DEBUG LOGS
+# Button that enables the camera's flash
+Enable-flash = Enable flash
+# Indicates a species only occurs in a specific place
+Endemic = Endemic
+# TODO this and many other uses of placeables are not currently translatable
+# without knowing the vowel/consonant state of the first letter of the
+# placeable
+Endemic-to-place = Endemic to { $place }
+Error-Could-Not-Fetch-Taxon = Error: Could Not Fetch Taxon
+ERROR-LOADING-DQA = ERROR LOADING IN DQA
+# Title of dialog or section describing an error
+Error-title = Error
+ERROR-VOTING-IN-DQA = ERROR VOTING IN DQA
+Error-voting-in-DQA-description = Your vote may not have been cast in the DQA. Check your internet connection and try again.
+ESTABLISHMENT-MEANS = ESTABLISHMENT MEANS
+# Header for a section describing how a taxon arrived in a given place
+ESTABLISHMENT-MEANS-header = ESTABLISHMENT MEANS
+Every-observation-needs = Every observation needs a location, date, and time to be helpful to identifiers. You can edit geoprivacy if you’re concerned about location privacy.
+Every-time-a-collection-project = Every time a collection project's page is loaded, iNaturalist will perform a quick search and display all observations that match the project's requirements. It is an easy way to display a set of observations, such as for a class project, a park, or a bioblitz without making participants take the extra step of manually adding their observations to a project.
+EVIDENCE = EVIDENCE
+Exact-Date = Exact Date
+EXACT-DATE = EXACT DATE
+Explore = Explore
+EXPLORE = EXPLORE
+Explore-Filters = Explore Filters
+EXPLORE-IDENTIFIERS = EXPLORE IDENTIFIERS
+EXPLORE-OBSERVATIONS = EXPLORE OBSERVATIONS
+EXPLORE-OBSERVERS = EXPLORE OBSERVERS
+EXPLORE-SPECIES = EXPLORE SPECIES
+Failed-to-delete-sound = Failed to delete sound
+# Error message with log in fails
+Failed-to-log-in = Failed to log in
+# Header for featured projects
+FEATURED = FEATURED
+# Month of February
+February = February
+Fetching-location = Fetching location...
+Filter = Filter
+FILTER-BY-A-PROJECT = FILTER BY A PROJECT
+FILTER-BY-A-USER = FILTER BY A USER
+Filter-by-observed-between-dates = Filter by observations observed between two specific dates
+Filter-by-observed-during-months = Filter by observations observed during specific months
+Filter-by-observed-on-date = Filter by observations observed on a specific date
+Filter-by-uploaded-between-dates = Filter by observations uploaded between two specific dates
+Filter-by-uploaded-on-date = Filter by observations uploaded on a specific date
+Filters = Filters
+Flag-An-Item = Flag An Item
+Flag-Item-Description = Flagging brings something to the attention of volunteer site curators. Please don't flag problems you can address with identifications, the Data Quality Assessment, or by talking to the person who made the content.
+Flag-Item-Other = Flagged as Other Description Box
+Flag-Item-Other-Description = Some other reason you can explain below.
+Flag-Item-Other-Input-Hint = Specify the reason you're flagging this item
+# Status when an item has been flagged
+Flagged = Flagged
+Flash = flash
+# Label for a button that toggles between the front and back cameras
+Flip-camera = Flip camera
+FOLLOW = FOLLOW
+# Forgot password link
+Forgot-Password = Forgot Password
+GEOPRIVACY = GEOPRIVACY
+Geoprivacy-status = Geoprivacy: { $status }
+# Title of screen asking for permission to access location
+Get-more-accurate-suggestions-create-useful-data = Get more accurate suggestions & create useful data for science using your location
+# Label for button that returns to the previous screen
+Go-back = Go back
+# Text for a button that asks the user to grant permission
+GRANT-PERMISSION = GRANT PERMISSION
+# Title of a screen asking for permission
+Grant-Permission-title = Grant Permission
+Grid-view = Grid view
+Group-Photos = Group Photos
+# Onboarding for users learning to group photos in the camera roll
+Group-photos-onboarding = Group photos into observations– make sure there is only one species per observation
+HELP = HELP
+Highest = Highest
+HIGHEST-RANK = HIGHEST RANK
+I-agree-to-the-Terms-of-Use = I agree to the Terms of Use and Privacy Policy, and I have reviewed the Community Guidelines (required).
+I-consent-to-allow-iNaturalist-to-store = I consent to allow iNaturalist to store and process limited kinds of personal information about me in order to manage my account (required)
+I-consent-to-allow-my-personal-information = I consent to allow my personal information to be transferred to the United States of America (required)
+Iconic-taxon-name = Iconic taxon name: { $iconicTaxon }
+# Identification Status
+ID-Withdrawn = ID Withdrawn
+IDENTIFICATION = IDENTIFICATION
+# Accessibility label for a button that shows options for an identification
+Identification-options = Identification options
+IDENTIFICATIONS-WITHOUT-NUMBER =
+ { $count ->
+ [one] IDENTIFICATION
+ *[other] IDENTIFICATIONS
+ }
+Identifiers = Identifiers
+Identifiers-View = Identifiers View
+Identify-an-organism = Identify an organism
+If-an-account-with-that-email-exists = If an account with that email exists, we've sent password reset instructions to your email.
+If-you-want-to-collate-compare-promote = If you want to collate, compare, or promote a set of existing projects, then an Umbrella project is what you should use. For example the 2018 City Nature Challenge, which collated over 60 projects, made for a great landing page where anyone could compare and contrast each city's observations. Both Collection and Traditional projects can be used in an Umbrella project, and up to 500 projects can be collated by an Umbrella project.
+Import-Photos-From = Import Photos From
+# Shows the number of observations a user is about to import
+IMPORT-X-OBSERVATIONS =
+ IMPORT { $count ->
+ [one] 1 OBSERVATION
+ *[other] { $count } OBSERVATIONS
+ }
+# Identification category
+improving--identification = Improving
+INATURALIST-ACCOUNT-SETTINGS = INATURALIST ACCOUNT SETTINGS
+iNaturalist-can-save-photos-you-take-in-the-app-to-your-devices-gallery = iNaturalist can save photos you take in the app to your device’s gallery.
+INATURALIST-COMMUNITY = INATURALIST COMMUNITY
+INATURALIST-FORUM = INATURALIST FORUM
+iNaturalist-has-no-ID-suggestions-for-this-photo = iNaturalist has no ID suggestions for this photo.
+iNaturalist-Help = iNaturalist Help
+INATURALIST-HELP-PAGE = INATURALIST HELP PAGE
+iNaturalist-helps-you-identify = iNaturalist helps you identify the plants and animals around you while generating data for science and conservation. Get connected with a community of millions scientists and naturalists who can help you learn more about nature!
+iNaturalist-identification-suggestions-are-based-on = iNaturalist's identification suggestions are based on observations and identifications made by the iNaturalist community, including { $user1 }, { $user2 }, { $user3 }, and many others.
+iNaturalist-is-a-501 = iNaturalist is a 501(c)(3) non-profit in the United States of America (Tax ID/EIN 92-1296468).
+iNaturalist-is-a-community-of-naturalists = iNaturalist is a community of naturalists that works together to create and identify wild biodiversity observations.
+iNaturalist-is-supported-by = iNaturalist is supported by an independent, 501(c)(3) nonprofit organization based in the United States of America. The iNaturalist platform includes this app, Seek by iNaturalist, the iNaturalist website, and more.
+iNaturalist-is-supported-by-community = iNaturalist is supported by our amazing community. From everyday naturalists who add observations and identifications, to curators who assist in the curation of taxonomy and moderation, to the volunteer translators at who make iNaturalist more accessible to worldwide audiences, to our community-based donors, we are extraordinarily grateful for all the people of our community who make iNaturalist the platform it is.
+iNaturalist-mission-is-to-connect = iNaturalist's mission is to connect people to nature and advance biodiversity science and conservation.
+INATURALIST-MISSION-VISION = INATURALIST'S MISSION & VISION
+INATURALIST-NETWORK = INATURALIST NETWORK
+INATURALIST-SETTINGS = INATURALIST SETTINGS
+# Label for the role a user plays on iNaturalist, e.g. "INATURALIST STAFF"
+# or "INATURALIST CURATOR". Since the name "INATURALIST" should not be
+# translated or locally it is inserted as a variable here, but it will always
+# be "INATURALIST"
+INATURALIST-STAFF = { $inaturalist } STAFF
+INATURALIST-STORE = INATURALIST STORE
+INATURALIST-TEAM = INATURALIST TEAM
+iNaturalist-users-who-have-left-an-identification = iNaturalist users who have left an identification on another user's observation
+iNaturalist-users-who-have-observed = iNaturalist users who have observed a particular taxon at a particular time and place
+iNaturalist-uses-your-location-to-give-you = iNaturalist uses your location to give you better identification suggestions and we can automatically add a location to your observations, which helps scientists. We also use it to help you find organisms observed near your location. You’re always in control of the location privacy of every observation you create.
+iNaturalists-apps-are-designed-and-developed = iNaturalist's apps are designed, developed, and supported by the iNaturalist team: Yaron Budowski, Amanda Bullington, Tony Iwane, Johannes Klein, Patrick Leary, Scott Loarie, Abhas Misraraj, Sylvain Morin, Carrie Seltzer, Alex Shepard, Angie Ta, Ken-ichi Ueda, Jason Walthall, & Jane Weeden.
+iNaturalists-vision-is-a-world = iNaturalist's vision is a world where everyone can understand and sustain biodiversity through the practice of observing wild organisms and sharing information about them.
+Individual-encounters-with-organisms = Individual encounters with organisms at a particular time and location, usually with evidence
+INFO-TRANSFER = INFO TRANSFER
+# Title for dialog telling the user that an Internet connection is required
+Internet-Connection-Required = Internet Connection Required
+Intl-number = { $val }
+Introduced = Introduced
+Introduced-to-place = Introduced to { $place }
+# Month of January
+January = January
+JOIN = JOIN
+JOIN-PROJECT = JOIN PROJECT
+Join-the-largest-community-of-naturalists = Join the largest community of naturalists in the world!
+# Header for joined projects
+JOINED = JOINED
+# Shows date user joined iNaturalist on user profile
+Joined-date = Joined: { $date }
+JOURNAL-POSTS-WITHOUT-NUMBER =
+ { $count ->
+ [one] JOURNAL POST
+ *[other] JOURNAL POSTS
+ }
+# Month of July
+July = July
+# Month of June
+June = June
+# Shows date user last active on iNaturalist on user profile
+Last-Active-date = Last Active: { $date }
+# Latitude, longitude on a single line on a single line
+Lat-Lon = { NUMBER($latitude, maximumFractionDigits: 6) }, { NUMBER($longitude, maximumFractionDigits: 6) }
+# Latitude, longitude, and accuracy on a single line on a single line
+Lat-Lon-Acc = Lat: { NUMBER($latitude, maximumFractionDigits: 6) }, Lon: { NUMBER($longitude, maximumFractionDigits: 6) }, Acc: { $accuracy }
+# Identification category
+leading--identification = Leading
+Learn-More = Learn More
+LEAVE = LEAVE
+LEAVE-PROJECT = LEAVE PROJECT
+LEAVE-US-A-REVIEW = LEAVE US A REVIEW!
+LICENSES = LICENSES
+List-view = List view
+Loading-iNaturalists-AR-Camera = Loading iNaturalist's AR Camera
+LOCATION = LOCATION
+Location = Location
+Location-accuracy-is-too-imprecise = Location accuracy is too imprecise to help identifiers. Please zoom in.
+LOCATION-TOO-IMPRECISE = LOCATION TOO IMPRECISE
+LOG-IN = LOG IN
+# Second person imperative label to go to log in screen
+Log-in = Log in
+Log-in-to-contribute-and-sync = Log in to contribute & sync
+Log-in-to-contribute-your-observations = Log in to contribute your observations to science!
+LOG-IN-TO-INATURALIST = LOG IN TO INATURALIST
+Log-in-to-iNaturalist = Log in to iNaturalist
+LOG-OUT = LOG OUT
+Logged-in-as = Logged in as: { $username }
+# Appears in the login screen
+Login-sub-title = Document living things, identify organisms & contribute to science
+# Alert dialog title when attempting to send email on an iOS device but Apple Mail is not installed
+Looks-like-youre-not-using-Apple-Mail = Looks like you're not using Apple Mail
+Lowest = Lowest
+LOWEST-RANK = LOWEST RANK
+MAP = MAP
+Map-Area = Map Area
+# Month of March
+March = March
+# Identification category
+maverick--identification = Maverick
+# Month of May
+May = May
+MEDIA = MEDIA
+MEMBERS-WITHOUT-NUMBER =
+ { $count ->
+ [one] MEMBER
+ *[other] MEMBERS
+ }
+# Accessibility label for a button that opens a menu of options
+Menu = Menu
+Missing-Date = Missing Date
+MISSING-EVIDENCE = MISSING EVIDENCE
+Monthly-Donor = Monthly Donor
+Months = Months
+MONTHS = MONTHS
+More-info = More info
+MOST-FAVED = MOST FAVED
+Most-faved = Most faved
+Native = Native
+Native-to-place = Native to { $place }
+Navigates-to-AR-camera = Navigates to AR camera
+Navigates-to-bulk-importer = Navigates to bulk importer
+Navigates-to-camera = Navigates to camera
+Navigates-to-explore = Navigates to explore
+Navigates-to-notifications = Navigates to notifications
+Navigates-to-observation-details = Navigates to observation details screen
+Navigates-to-observation-edit-screen = Navigate to observation edit screen
+Navigates-to-photo-importer = Navigates to photo importer
+Navigates-to-previous-screen = Navigates to previous screen
+Navigates-to-project-details = Navigates to project details
+Navigates-to-sound-recorder = Navigates to sound recorder
+Navigates-to-suggest-identification = Navigates to suggest identification
+Navigates-to-taxon-details = Navigates to taxon details
+Navigates-to-user-profile = Navigates to user profile
+# Label for button that takes you to your observations
+Navigates-to-your-observations = Navigates to your observations
+# Header for nearby projects
+NEARBY = NEARBY
+Nearby = Nearby
+NEARBY-SUGGESTIONS = NEARBY SUGGESTIONS
+Needs-ID = Needs ID
+# Heading when creating a new observation
+New-Observation = New Observation
+# Sort order, refers to newest or oldest date
+Newest-to-oldest = Newest to oldest
+Next-observation = Next observation
+No-Location = No Location
+No-Media = No Media
+# As in a machine learning model that powers automated suggestions
+No-model-found = No model found
+No-Notifications-Found = You have no notifications! Get started by creating your own observations.
+No-projects-match-that-search = No projects match that search
+# Used for explore screen when search params lead to a search with no data
+No-results-found = No results found
+# license code
+no-rights-reserved-cc0 = no rights reserved (CC0)
+NONE = NONE
+none = none
+# Header for observation description on observation detail
+NOTES = NOTES
+NOTIFICATIONS = NOTIFICATIONS
+Notifications = Notifications
+# notification when someone adds a comment to your observation
+notifications-user-added-comment-to-observation-by-you = <0>{ $userName }0> added a comment to an observation by you
+# notification when someone adds an identification to your observation
+notifications-user-added-identification-to-observation-by-you = <0>{ $userName }0> added an identification to an observation by you
+# Month of November
+November = November
+Obervations-must-be-manually-added = Observations must be manually added to a traditional project, either during the upload stage or after the observation has been shared to iNaturalist. A user must also join a traditional project in order to add their observations to it.
+Obscured = Obscured
+# Displayed when user views an obscured location on the ObsDetail map screen
+Obscured-observation-location-map-description = This observation’s location is obscured. You are seeing a randomized point within the obscuration polygon.
+Observation = Observation
+Observation-Attribution = Observation: © { $userName } · { $restrictions }
+Observation-has-no-photos-and-no-sounds = This observation has no photos and no sounds.
+Observation-Name = Observation { $scientificName }
+# Label for a menu that shows various actions you can take for an observation
+Observation-options = Observation options
+Observation-photos-unavailable-without-internet = Observation photos unavailable without internet
+OBSERVATION-WAS-DELETED = OBSERVATION WAS DELETED
+Observation-with-no-evidence = Observation with no evidence
+Observations = Observations
+Observations-created-on-iNaturalist = Observations created on iNaturalist are used by scientists around the world.
+Observations-View = Observations View
+# Might be used when the number is represented using an image or other
+# element, not text
+OBSERVATIONS-WITHOUT-NUMBER =
+ { $count ->
+ [one] OBSERVATION
+ *[other] OBSERVATIONS
+ }
+# Onboarding text on MyObservations: Onboarding text on MyObservations: 11-50 observations
+Observations-you-upload-to-iNaturalist = Observations you upload to iNaturalist can be used by scientists and researchers worldwide.
+# Button that starts a new observation
+Observe = Observe
+# Title of screen asking for permission to access the gallery
+Observe-and-identify-organisms-from-your-gallery = Observe and identify organisms from your gallery
+# Title of screen asking for permission to access the camera
+Observe-and-identify-organisms-in-real-time-with-your-camera = Observe and identify organisms in real-time with your camera
+# Text for a button prompting the user to grant access to the camera
+OBSERVE-ORGANISMS = OBSERVE ORGANISMS
+Observers = Observers
+# Section in Explore that shows people who added observations given a set of search filters
+Observers-View = Observers View
+# Month of October
+October = October
+Offensive-Inappropriate = Offensive/Inappropriate
+Offensive-Inappropriate-Examples = Misleading or illegal content, racial or ethnic slurs, etc. For more on our defintion of "appropriate," see the FAQ.
+Offline-DQA-description = The DQA may not be accurate. Check your internet connection and try again.
+Offline-No-Notifications = Cannot fetch notifications at this time.
+# Generic confirmation, e.g. button on a warning alert
+OK = OK
+# Sort order, refers to newest or oldest date
+Oldest-to-newest = Oldest to newest
+One-last-step = One last step!
+# Adjective, as in geoprivacy
+Open = Open
+Open-drawer = Open drawer
+OPEN-EMAIL = OPEN EMAIL
+Open-menu = Open menu.
+# Text for a button that opens the operating system Settings app
+OPEN-SETTINGS = OPEN SETTINGS
+Opens-add-comment-modal = Opens add comment modal.
+Opens-add-observation-modal = Opens add observation modal.
+Opens-the-side-drawer-menu = Opens the side drawer menu.
+# Picker prompt on observation edit
+Organism-is-captive = Organism is captive
+Organism-is-wild = Organism is wild
+Organisms-that-are-identified-to-species = Organisms that are identified to species rank or below
+# Generic option in a list for unanticipated cases, e.g. a choice to manually
+# enter an explanation for why you are flagging something instead of choosing
+# one of the existing options
+Other = Other
+OTHER-DATA = OTHER DATA
+PASSWORD = PASSWORD
+PERSONAL-INFO = PERSONAL INFO
+Photo-importer = Photo importer
+PHOTO-LICENSING = PHOTO LICENSING
+Photos = Photos
+Photos-you-take-will-appear-here = Photos you take will appear here
+# Title of screen asking for permission to access the camera when access was denied
+Please-allow-Camera-Access = Please allow Camera Access
+# Title of screen asking for permission to access the gallery when access was denied
+Please-Allow-Gallery-Access = Please Allow Gallery Access
+# Title of screen asking for permission to access location when access was denied
+Please-allow-Location-Access = Please allow Location Access
+# Title of screen asking for permission to access the microphone when access was denied
+Please-allow-Microphone-Access = Please allow Microphone Access
+Please-click-the-link = Please click the link in the email within 60 minutes to confirm your account
+# Title of a screen asking for permission when permission has been denied
+Please-Grant-Permission = Please Grant Permission
+PLEASE-LOG-IN = PLEASE LOG IN
+Please-try-again-when-you-are-connected-to-the-internet = Please try again when you are connected to the Internet.
+# Help text for beginning a sound recording
+Press-record-to-start = Press record to start
+Previous-observation = Previous observation
+Privacy-Policy = Privacy Policy
+Private = Private
+# As in an iNat project, a collection of observations or observation search filters
+PROJECT = PROJECT
+PROJECT-REQUIREMENTS = PROJECT REQUIREMENTS
+# As in iNat project, collections of observations or observation search filters
+PROJECTS = PROJECTS
+# As in iNat projects, collections of observations or observation search filters
+Projects = Projects
+QUALITY-GRADE = QUALITY GRADE
+# Shortened display of an observation's quality grade (used when displayed in a badge) - in this case, Casual
+Quality-Grade-casual = Quality Grade Casual
+quality-grade-casual = Casual
+quality-grade-needs-id = Needs Id
+# Shortened display of an observation's quality grade (used when displayed in a badge) - in this case, Needs ID
+Quality-Grade-needs_id = Quality Grade Needs ID
+# Shortened display of an observation's quality grade (used when displayed in a badge) - in this case, Research Grade
+Quality-Grade-research = Quality Grade Research Grade
+# Quality grade options
+quality-grade-research = Research Grade
+Ranks-CLASS = CLASS
+Ranks-COMPLEX = COMPLEX
+Ranks-EPIFAMILY = EPIFAMILY
+Ranks-FAMILY = FAMILY
+Ranks-FORM = FORM
+Ranks-GENUS = GENUS
+Ranks-GENUSHYBRID = GENUSHYBRID
+Ranks-HYBRID = HYBRID
+Ranks-INFRACLASS = INFRACLASS
+Ranks-INFRAHYBRID = INFRAHYBRID
+Ranks-INFRAORDER = INFRAORDER
+Ranks-KINGDOM = KINGDOM
+Ranks-ORDER = ORDER
+Ranks-PARVORDER = PARVORDER
+Ranks-PHYLUM = PHYLUM
+Ranks-SECTION = SECTION
+Ranks-SPECIES = SPECIES
+Ranks-STATEOFMATTER = STATE OF MATTER
+Ranks-SUBCLASS = SUBCLASS
+Ranks-SUBFAMILY = SUBFAMILY
+Ranks-SUBGENUS = SUBGENUS
+Ranks-SUBKINGDOM = SUBKINGDOM
+Ranks-SUBORDER = SUBORDER
+Ranks-SUBPHYLUM = SUBPHYLUM
+Ranks-SUBSECTION = SUBSECTION
+Ranks-SUBSPECIES = SUBSPECIES
+Ranks-SUBTERCLASS = SUBTERCLASS
+Ranks-SUBTRIBE = SUBTRIBE
+Ranks-SUPERCLASS = SUPERCLASS
+Ranks-SUPERFAMILY = SUPERFAMILY
+Ranks-SUPERORDER = SUPERORDER
+Ranks-SUPERTRIBE = SUPERTRIBE
+Ranks-TRIBE = TRIBE
+Ranks-VARIETY = VARIETY
+Ranks-ZOOSECTION = ZOOSECTION
+Ranks-ZOOSUBSECTION = ZOOSUBSECTION
+Read-more-on-Wikipedia = Read more on Wikipedia
+# Heading for the sound recorder
+RECORD-NEW-SOUND = RECORD NEW SOUND
+# Title of screen asking for permission to access the microphone
+Record-organism-sounds-with-the-microphone = Record organism sounds with the microphone
+# Text for a button prompting the user to grant access to the microphone
+RECORD-SOUND = RECORD SOUND
+Record-sounds = Record sounds with your microphone
+# Imperative verb for recording a sound
+Record-verb = Record
+# Status while recording a sound
+Recording-sound = Recording sound
+Recording-stopped-Tap-play-the-current-recording = Recording stopped. Tap play the current recording.
+REDO-SEARCH-IN-MAP-AREA = REDO SEARCH IN MAP AREA
+# Label for a button that removes a vote of agreement
+Remove-agreement = Remove agreement
+# Label for a button that removes a vote of disagreement
+Remove-disagreement = Remove disagreement
+Remove-favorite = Remove favorite
+Remove-Photos = Remove Photos
+# Hint for a button that removes a vote of agreement
+Removes-your-vote-of-agreement = Removes your vote of agreement
+# Hint for a button that removes a vote of disagreement
+Removes-your-vote-of-disagreement = Removes your vote of disagreement
+# Quality grade option
+Research-Grade = Research Grade
+Reset = Reset
+# Reset password button
+RESET-PASSWORD = RESET PASSWORD
+# Label for a button that resets a sound recording
+RESET-RECORDING = RESET RECORDING
+RESET-SEARCH = RESET SEARCH
+# Header of a popup confirming that the user wants to reset a sound
+# recording
+RESET-SOUND-header = RESET SOUND?
+# Label for a button that resets the state of an interface, e.g. a button that
+# resets the sound recorder to its original state
+Reset-verb = Reset
+# Label for button that restores a withdrawn identification
+Restore = Restore
+Return-to-Login = Return to Login
+REVIEW-INATURALIST = REVIEW INATURALIST
+# Title for section of observation filters for controls over whether you have
+# reviewed the observations or not
+REVIEWED = REVIEWED
+Reviewed-observations-only = Reviewed observations only
+# Label for the satellite map type
+Satellite--map-type = Satellite
+# Label for a button that persists something
+SAVE = SAVE
+# Label for a button that persists something
+Save = Save
+SAVE-ALL = SAVE ALL
+SAVE-CHANGES = SAVE CHANGES
+SAVE-LOCATION = SAVE LOCATION
+SAVE-PHOTOS = SAVE PHOTOS
+Save-photos-to-your-gallery = Save photos to your gallery
+Saved-Observation = Saved observation, in queue to upload
+Scan-the-area-around-you-for-organisms = Scan the area around you for organisms.
+Scientific-Name = Scientific Name
+Scientific-Name-Common-Name = Scientific Name (Common Name)
+# Title for a search interface
+SEARCH = SEARCH
+# Title for a search interface
+Search = Search
+SEARCH-FOR-A-LOCATION = SEARCH FOR A LOCATION
+Search-for-a-project = Search for a project
+SEARCH-FOR-A-TAXON = SEARCH FOR A TAXON
+Search-for-a-taxon = Search for a taxon
+SEARCH-LOCATION = SEARCH LOCATION
+SEARCH-PROJECTS = SEARCH PROJECTS
+SEARCH-TAXA = SEARCH TAXA
+SEARCH-USERS = SEARCH USERS
+# Accessibility label for Explore button on MyObservations toolbar
+See-all-your-observations-in-explore = See all your observations in explore
+# Accessibility label for Observations button on UserProfile screen
+See-observations-by-this-user-in-Explore = See observations by this user in Explore
+# Accessibility label for Explore button in MyObservationsEmpty for logged out user
+See-observations-in-explore = See observations in explore
+# Accessibility label for Explore button on TaxonDetails screen
+See-observations-of-this-taxon-in-explore = See observations of this taxon in explore
+# Accessibility label for Species button on UserProfile screen
+See-species-observed-by-this-user-in-Explore = See species observed by this user in Explore
+Select-a-date-and-time-for-observation = Select a date and time for observation
+Select-captive-or-cultivated-status = Select captive or cultivated status
+Select-geoprivacy-status = Select geoprivacy status
+Select-photo = Select photo
+Select-the-identification-you-want-to-add = Select the identification you want to add to this observation. You can add a filter to further refine your results or search for a taxon.
+# Label for an element that let's you select a user
+Select-user = Select user
+Selects-iconic-taxon-X-for-identification = Selects iconic taxon { $iconicTaxon } for identification.
+Separate-Photos = Separate Photos
+# Month of September
+September = September
+SETTINGS = SETTINGS
+Settings = Settings
+Share = Share
+SHARE-DEBUG-LOGS = SHARE DEBUG LOGS
+Share-location = Share Location
+Share-map = Share map
+SHOP-INATURALIST-MERCH = SHOP INATURALIST MERCH
+Shop-iNaturalist-Merch = Shop iNaturalist Merch
+Show-observation-options = Show observation options.
+# Label for button that shows identification suggestions
+Shows-identification-suggestions = Shows identification suggestions
+Shows-iNaturalist-bird-logo = Shows iNaturalist bird logo.
+Sign-out = Sign out
+Some-data-privacy-laws = Some data privacy laws, like the European Union's General Data Protection Regulation (GDPR), require explicit consent to transfer personal information from their jurisdictions to other jurisdictions where the legal protection of this information is not considered adequate. As of 2020, the European Union no longer considers the United States to be a jurisdiction that provides adequate legal protection of personal information, specifically because of the possibility of the US government surveilling data entering the US. It is possible other jurisdictions may have the same opinion.
+# Generic error message
+Something-went-wrong = Something went wrong.
+Sorry-this-observation-was-deleted = Sorry, this observation was deleted
+SORT-BY = SORT BY
+Sort-by = Sort by
+# Character separating current position and total duration when playing a
+# sound, e.g. 00:12 / 03:00 uses "/" as the separator. This can be anything,
+# but it should be very short.
+sound-playback-separator = /
+Sound-recorder = Sound recorder
+sound-recorder-help-A-recording-of = A recording of 5-15 seconds is best to help identifiers.
+sound-recorder-help-Get-as-close-as-you-can = Get as close as you safely can to record the organism.
+sound-recorder-help-Get-closer = Get closer
+sound-recorder-help-Keep-it-short = Keep it short
+sound-recorder-help-Make-sure = Make sure the sound of your own movement doesn’t cover up the sound of the organism.
+sound-recorder-help-One-organism = One organism
+sound-recorder-help-Stop-moving = Stop moving
+sound-recorder-help-Try-to-isolate = Try to isolate the sound of a single organism. If you can’t, make sure to leave a note of which organism you’re recording.
+Sounds = Sounds
+Source-List = <0>(Source List: 0><1>{ $source }1><0>)0>
+Spam = Spam
+Spam-Examples = Commercial solicitation, links to nowhere, etc.
+Species = Species
+Species-View = Species View
+SPECIES-WITHOUT-NUMBER =
+ { $count ->
+ [one] SPECIES
+ *[other] SPECIES
+ }
+# Label for the standard map type
+Standard--map-type = Standard
+Start-must-be-before-end = The start date must be before the end date.
+Start-upload = Start upload
+# Accessibility hint for button that starts recording a sound
+Starts-recording-sound = Starts recording sound
+Stay-on-this-screen = Stay on this screen while your location loads.
+Still-need-help = Still need help? You can file a support request here.
+# Button or accessibility label for an interactive element that stops an upload
+Stop-upload = Stop upload
+# Imperative verb for stopping the recording of a sound
+Stop-verb = Stop
+# Accessibility hint for a button that stops the recording of a sound
+Stops-recording-sound = Stops recording sound
+SUGGEST-ID = SUGGEST ID
+# Identification category
+supporting--identification = Supporting
+Switches-to-tab = Switches to { $tab } tab.
+Sync-observations = Sync observations
+Syncing = Syncing...
+Take-photo = Take photo
+Take-photos-with-the-camera = Take photos of a single organism with the camera
+TAXON = TAXON
+# Settings screen
+TAXON-NAMES-DISPLAY = TAXON NAMES DISPLAY
+TAXONOMIC-RANKS = TAXONOMIC RANKS
+# Header for a block of text describing a taxon's taxonomy
+TAXONOMY-header = TAXONOMY
+TEACHERS = TEACHERS
+Teachers-Guide = Teachers' Guide
+TEAM = TEAM
+Terms-of-Use = Terms of Use
+Text-Box-to-Describe-Reason-for-Flag = Text box to describe reason for flag.
+The-exact-location-will-be-hidden = The exact location will be hidden publicly, and instead generalized to a larger area. (Threatened and endangered species are automatically obscured).
+The-iNaturalist-Network = The iNaturalist network is a collection of localized websites that are fully connected to the global iNaturalist community. Network sites are supported by local institutions that promote local use and facilitate the use of data from iNaturalist to benefit local biodiversity.
+The-iNaturalist-team-has-collaborated = The iNaturalist team has collaborated with...
+The-location-will-not-be-visible = The location will not be visible to others, which means it may be difficult to identify.
+There-is-no-way = There is no way to have an iNaturalist account without storing personal information, so the only way to revoke this consent is to delete your account.
+# Wild status sheet descriptions
+This-is-a-wild-organism = This is a wild organism and wasn't placed in this location by humans.
+This-is-how-taxon-names-will-be-displayed = This is how all taxon names will be displayed to you across iNaturalist:
+This-observer-has-opted-out-of-the-Community-Taxon = This observer has opted out of the Community Taxon
+This-organism-was-placed-by-humans = This organism was placed in this location by humans. This applies to things like garden plants, pets, and zoo animals.
+To-access-all-other-settings = To access all other account settings, click here:
+To-learn-more-about-what-information = To learn more about what information we collect and how we use it, please see our Privacy Policy and our Terms of Use.
+To-sync-your-observations-to-iNaturalist = To sync your observations to iNaturalist, please log in.
+Toggle-map-type = Toggle map type
+TOP-ID-SUGGESTION = TOP ID SUGGESTION
+Traditional-Project = Traditional Project
+Umbrella-Project = Umbrella Project
+UNFOLLOW = UNFOLLOW
+UNFOLLOW-USER = UNFOLLOW USER?
+# Text to show when a taxon or identification is unknown or missing
+Unknown--taxon = Unknown
+# Text to show when a user (or their name) is unknown or missing
+Unknown--user = Unknown
+# Generic error message
+Unknown-error = Unknown error
+Unknown-organism = Unknown organism
+Unreviewed-observations-only = Unreviewed observations only
+Upload-Complete = Upload Complete
+Upload-in-progress = Upload in progress
+UPLOAD-NOW = UPLOAD NOW
+Upload-photos-from-your-gallery = Upload photos of multiple organisms from your gallery
+Upload-photos-from-your-gallery-and-create-observations = Upload photos from your gallery and create observations and get identifications of organisms you’ve already observed!
+Upload-Progress = Upload { $uploadProgress } percent complete
+# Shows the number of observations a user can upload to iNat from my observations page
+Upload-x-observations =
+ Upload { $count ->
+ [one] 1 observation
+ *[other] { $count } observations
+ }
+# Describes whether a user made this observation from web, iOS, or Android
+Uploaded-via-application = Uploaded via: { $application }
+# Shows the progress of uploads for X of Y
+Uploading-x-of-y = Uploading { $currentUploadCount } of { $total }
+# Shows the number of observations a user is currently uploading out of total on my observations page
+Uploading-x-of-y-observations =
+ Uploading { $currentUploadCount } of { $total ->
+ [one] 1 observation
+ *[other] { $total } observations
+ }
+Use-iNaturalists-AI-Camera = Use iNaturalist's AI Camera to identify organisms in real-time
+# Text for a button prompting the user to grant access to location
+USE-LOCATION = USE LOCATION
+Use-the-devices-other-camera = Use the device's other camera.
+Use-the-iNaturalist-camera-to-observe = Use the iNaturalist camera to observe and identify organisms on-screen in real-time, and share them with our community to get identifications and contribute to science!
+Use-your-devices-microphone-to-record = Use your device’s microphone to record sounds made by organisms and share them with our community to get identifications and contribute to science!
+USER = USER
+User = User { $userHandle }
+USERNAME = USERNAME
+# Appears above the text fields
+USERNAME-OR-EMAIL = USERNAME OR EMAIL
+Using-iNaturalist-requires-the-storage = Using iNaturalist requires the storage of personal information like your email address, all iNaturalist data is stored in the United States, and we cannot be sure what legal jurisdiction you are in when you are using iNaturalist, so in order to comply with privacy laws like the GDPR, you must acknowledge that you understand and accept this risk and consent to transferring your personal information to iNaturalist's servers in the US.
+VIEW-CHILDREN-TAXA = VIEW CHILDREN TAXA
+VIEW-DATA-QUALITY-ASSESSEMENT = VIEW DATA QUALITY ASSESSEMENT
+View-in-browser = View in Browser
+VIEW-IN-EXPLORE = VIEW IN EXPLORE
+VIEW-INATURALIST-HELP = VIEW INATURALIST HELP
+# Button or accessibility label for an element that lets the user view a
+# photo
+View-photo = View photo
+View-photo-licensing-info = View photo licensing info
+VIEW-PROJECT-REQUIREMENTS = VIEW PROJECT REQUIREMENTS
+VIEW-PROJECTS = VIEW PROJECTS
+# Label for a button that shows identification suggestions for an observation
+# or photo
+View-suggestions = View suggestions
+VIEW-TEACHERS-GUIDE = VIEW TEACHERS' GUIDE
+# Title for a notice informing the user that they are viewing offline
+# identification suggestions
+Viewing-Offline-Suggestions = Viewing Offline Suggestions
+Viewing-Offline-Suggestions-results-may-differ = Results may differ from the online suggestions and images and common names may not display.
+We-sent-a-confirmation-email = We sent a confirmation email to the email you signed up with.
+We-store-personal-information = We store personal information like usernames and email addresses in order to manage accounts on this site, and to comply with privacy laws, we need you to check this box to indicate that you consent to this use of personal information. To learn more about what information we collect and how we use it, please see our Privacy Policy and our Terms of Use.
+Welcome-to-iNaturalist = Welcome to iNaturalist!
+# Welcome user back to app
+Welcome-user = <0>Welcome back,0><1>{ $userHandle }1>
+WHAT-IS-INATURALIST = WHAT IS INATURALIST?
+Whats-more-by-recording = What's more, by recording and sharing your observations, you'll create research-quality data for scientists working to better understand and protect nature. So if you like recording your findings from the outdoors, or if you just like learning about life, join us!
+WIKIPEDIA = WIKIPEDIA
+Wild = Wild
+WILD-STATUS = WILD STATUS
+# Label for a button that withdraws an identification
+Withdraw = Withdraw
+# Button to Withdraw identification made by user
+WITHDRAW-ID = WITHDRAW ID
+WITHDRAW-ID-QUESTION = WITHDRAW ID?
+Withdraws-identification = Withdraws identification
+Worldwide = Worldwide
+WORLDWIDE = WORLDWIDE
+Would-you-like-to-discard-your-current-recording-and-start-over = Would you like to discard your current recording and start over?
+x-comments =
+ { $count ->
+ [one] { $count } comment
+ *[other] { $count } comments
+ }
+X-Identifications =
+ { $count ->
+ [one] { $count } Identification
+ *[other] { $count } Identifications
+ }
+x-identifications =
+ { $count ->
+ [one] { $count } identification
+ *[other] { $count } identifications
+ }
+X-Identifiers =
+ { $count ->
+ [one] { $count } Identifier
+ *[other] { $count } Identifiers
+ }
+# Banner above Explore Map showing total number of results
+X-Observations =
+ { $count ->
+ [one] 1 Observation
+ *[other] { $count } Observations
+ }
+X-observations =
+ { $count ->
+ [one] 1 observation
+ *[other] { $count } observations
+ }
+X-observations-deleted =
+ { $count ->
+ [one] 1 observation deleted
+ *[other] { $count } observations deleted
+ }
+X-observations-uploaded =
+ { $count ->
+ [one] 1 observation uploaded
+ *[other] { $count } observations uploaded
+ }
+X-Observers =
+ { $count ->
+ [one] { $count } Observer
+ *[other] { $count } Observers
+ }
+X-of-Y =
+ { $count ->
+ [one] 1
+ *[other] { $count }
+ } { $totalObservationCount ->
+ [one] of { $totalObservationCount }
+ *[other] of { $totalObservationCount }
+ }
+# Displays number of photos attached to an observation in the Media Viewer
+X-PHOTOS =
+ { $photoCount ->
+ [one] 1 PHOTO
+ *[other] { $photoCount } PHOTOS
+ }
+# Displays number of photos and observations a user has selected from the camera roll
+X-PHOTOS-X-OBSERVATIONS =
+ { $photoCount ->
+ [one] 1 PHOTO
+ *[other] { $photoCount } PHOTOS
+ }, { $observationCount ->
+ [one] 1 OBSERVATION
+ *[other] { $observationCount } OBSERVATIONS
+ }
+# Displays number of photos and sounds attached to an observation in the Media
+# Viewer
+X-PHOTOS-Y-SOUNDS =
+ { $photoCount ->
+ [one] 1 PHOTO
+ *[other] { $photoCount } PHOTOS
+ }, { $soundCount ->
+ [one] 1 SOUND
+ *[other] { $soundCount } SOUNDS
+ }
+# Displays number of sounds attached to an observation in the Media Viewer
+X-SOUNDS =
+ { $count ->
+ [one] 1 SOUND
+ *[other] { $count } SOUNDS
+ }
+X-Species =
+ { $count ->
+ [one] { $count } Species
+ *[other] { $count } Species
+ }
+Yes-license-my-photos = Yes, license my photos, sounds, and observations so scientists can use my data (recommended)
+You-can-add-up-to-20-media = You can add up to 20 photos and 20 sounds per observation.
+You-can-also-check-out-merchandise = You can also check out merchandise for iNaturalist and Seek at our store below!
+You-can-also-explore-existing-observations = You can also explore existing observations on iNaturalist to discover what's around you.
+You-can-click-join-on-the-project-page = You can click “join” on the project page.
+You-can-find-answers-on-our-help-page = You can find answers on our help page.
+You-can-only-add-20-photos-per-observation = You can only add 20 photos per observation
+# Onboarding text on MyObservations: Onboarding text on MyObservations: 51-100 observations
+You-can-search-observations-of-any-plant-or-animal = You can search observations of any plant or animal anywhere in the world with Explore!
+You-can-still-share-the-file = You can still share the file with another app. If you can email it, please send it to { $email }
+You-can-upload-this-observation-to-our-community = You can upload this observation to our community to get an identification from a real person, and help our AI improve its identifications in the future
+You-changed-filters-will-be-discarded = You changed filters, but they were not applied to your explore search results.
+You-have-opted-out-of-the-Community-Taxon = You have opted out of the Community Taxon
+You-havent-joined-any-projects-yet = You haven’t joined any projects yet!
+You-must-be-logged-in-to-view-messages = You must be logged in to view messages
+# Error message when you try to do something that requires an Internet
+# connection but such a connection is, tragically, missing
+You-need-an-Internet-connection-to-do-that = You need an Internet connection to do that.
+# Error message when you try to do something that requires log in
+You-need-log-in-to-do-that = You need to log in to do that.
+Your-donation-to-iNaturalist = Your donation to iNaturalist supports the improvement and stability of the mobile apps and website that connects millions of people to nature and enables the protection of biodiversity worldwide!
+Your-email-is-confirmed = Your email is confirmed! Please log in to continue.
+Your-identification-will-be-posted-with-the-following-comment = Your identification will be posted with the following comment:
+Your-location-uncertainty-is-over-x-km = Your location uncertainty is over { $x } km, which is too high to be helpful to identifiers. Edit the location and zoom in until the accuracy circle turns green and is centered on where you observed the organism.
+# Text prompting the user to open Settings to grant permission after
+# permission has been denied
+Youve-denied-permission-prompt = You’ve denied permission. Please grant permission in the settings app.
+Youve-previously-denied-camera-permissions = You've previously denied camera permissions, so please enable them in settings.
+Youve-previously-denied-gallery-permissions = You’ve previously denied gallery permissions, so please enable them in settings.
+Youve-previously-denied-location-permissions = You’ve previously denied location permissions, so please enable them in settings.
+Youve-previously-denied-microphone-permissions = You’ve previously denied microphone permissions, so please enable them in settings.
+Zoom-in-as-much-as-possible-to-improve = Zoom in as much as possible to improve location accuracy and get better identifications.
+Zoom-to-current-location = Zoom to current location
diff --git a/src/i18n/l10n/fr.ftl b/src/i18n/l10n/fr.ftl
new file mode 100644
index 000000000..c0f058320
--- /dev/null
+++ b/src/i18n/l10n/fr.ftl
@@ -0,0 +1,4 @@
+Native-to-place = Originaire { VOWORCON($place) ->
+ [vow] d'{ $place }
+ *[con] de { $place }
+}
diff --git a/src/i18n/l10n/fr.ftl.json b/src/i18n/l10n/fr.ftl.json
new file mode 100644
index 000000000..b0fe1c054
--- /dev/null
+++ b/src/i18n/l10n/fr.ftl.json
@@ -0,0 +1,3 @@
+{
+ "Native-to-place": "Originaire { VOWORCON($place) ->\n [vow] d'{ $place }\n *[con] de { $place }\n}"
+}
diff --git a/src/i18n/loadTranslations.js b/src/i18n/loadTranslations.js
index 0572732c2..2440ef8fe 100644
--- a/src/i18n/loadTranslations.js
+++ b/src/i18n/loadTranslations.js
@@ -1,6 +1,7 @@
// AUTO-GENERATED. See i18ncli.js
export default locale => {
if ( locale === "ru" ) { return require( "./l10n/ru.ftl.json" ); }
+ if ( locale === "fr" ) { return require( "./l10n/fr.ftl.json" ); }
if ( locale === "es" ) { return require( "./l10n/es.ftl.json" ); }
if ( locale === "es-MX" ) { return require( "./l10n/es-MX.ftl.json" ); }
if ( locale === "en" ) { return require( "./l10n/en.ftl.json" ); }
diff --git a/src/i18n/strings.ftl b/src/i18n/strings.ftl
index 34f0a55d2..a38a6ceb0 100644
--- a/src/i18n/strings.ftl
+++ b/src/i18n/strings.ftl
@@ -17,7 +17,7 @@
### result of performing an action on the accessibility element." We write
### them in third person singular ending with a period.
-# Header above user biography / user description on user profile
+# Header for a general description, e.g. of a user, or of iNaturalist itself
ABOUT = ABOUT
ABOUT-COLLECTION-PROJECTS = ABOUT COLLECTION PROJECTS
ABOUT-INATURALIST = ABOUT INATURALIST
@@ -26,17 +26,19 @@ ABOUT-THE-DQA = ABOUT THE DQA
About-the-DQA-description = The Quality Grade summarizes the accuracy, precision, completeness, relevance, and appropriateness of an iNaturalist observation as biodiversity data. Some attributes are automatically determined, while others are subject to a vote by iNat users. iNaturalist shares licensed "Research Grade" observations with a number of data partners for use in science and conservation.
ABOUT-TRADITIONAL-PROJECTS = ABOUT TRADITIONAL PROJECTS
ABOUT-UMBRELLA-PROJECTS = ABOUT UMBRELLA PROJECTS
-Accept-community-identifications = Accept community identifications
# Label for a taxon when a user prefers to see or hear the common name first
accessible-comname-sciname = { $commonName } ({ $scientificName })
# Label for a taxon when a user prefers to see or hear the scientific name first
accessible-sciname-comname = { $scientificName } ({ $commonName })
-Account = Account
ACTIVITY = ACTIVITY
+# Label for a button that adds a vote of agreement
+Add-agreement = Add agreement
ADD-AN-ID = ADD AN ID
ADD-COMMENT = ADD COMMENT
Add-comment = Add comment
Add-Date-Time = Add Date/Time
+# Label for a button that adds a vote of disagreement
+Add-disagreement = Add disagreement
ADD-EVIDENCE = ADD EVIDENCE
Add-favorite = Add favorite
Add-Location = Add Location
@@ -45,12 +47,17 @@ Add-Location = Add Location
Add-observations = Add observations
ADD-OPTIONAL-COMMENT = ADD OPTIONAL COMMENT
Add-optional-notes = Add optional notes
-Add-this-ID = Add this identification
-# Date relationship created, shown on settings relationships screen
-Added-on-date = Added on { $date }
+# Hint for a button that adds a vote of agreement
+Adds-your-vote-of-agreement = Adds your vote of agreement
+# Hint for a button that adds a vote of disagreement
+Adds-your-vote-of-disagreement = Adds your vote of disagreement
Affiliation = Affiliation: { $site }
+# Label for button that adds an identification of the same taxon as another identification
Agree = Agree
+# Label for button that adds an identification of the same taxon as another identification
AGREE = AGREE
+# Checkbox label that checks all of the consent agreements a user must make
+# before signing up
Agree-to-all-of-the-above = Agree to all of the above
AGREE-WITH-ID = AGREE WITH ID?
Agree-with-ID-description = Would you like to agree with the ID and suggest the following identification?
@@ -58,26 +65,27 @@ ALL = ALL
All = All
All-observations = All observations
All-organisms = All organisms
-# license code
+# As in intellectual property rights over a photo or other creative work
all-rights-reserved = all rights reserved
+# As in automated identification suggestions
ALL-SUGGESTIONS = ALL SUGGESTIONS
Almost-done = Almost done!
Already-have-an-account = Already have an account? Log in
An-Internet-connection-is-required = An Internet connection is required to load more observations.
+# Generic option in a menu of choices that indicates that any of the choices
+# would be acceptable
Any = Any
# Geoprivacy sheet descriptions
Anyone-using-iNaturalist-can-see = Anyone using iNaturalist can see where this species was observed, and scientists can most easily use it for research.
-app-authorized-on-date = { $appName } (authorized on: { $date })
APPLY-FILTERS = APPLY FILTERS
Apply-filters = Apply filters
+# Month of April
April = April
+# Short for Augmented Reality Camera. This is what we call the camera that
+# overlays identification suggestions in real time
AR-Camera = AR Camera
Are-you-a-teacher = Are you a teacher wanting to use iNaturalist with your students?
Are-you-sure-you-want-to-sign-out = Are you sure you want to sign out? This will delete all your observations on this device. It will not affect any observations you've uploaded to iNaturalist.
-Arrow-down-selected = Arrow down selected
-Arrow-down-unselected = Arrow down unselected
-Arrow-up-selected = Arrow up selected
-Arrow-up-unselected = Arrow up unselected
# Onboarding text on MyObservations: 0-10 observations
As-you-upload-more-observations = As you upload more observations, others in our community may be able to help you identify them!
attribution-cc-by = some rights reserved (CC BY)
@@ -86,12 +94,10 @@ attribution-cc-by-nc-nd = some rights reserved (CC BY-NC-ND)
attribution-cc-by-nc-sa = some rights reserved (CC BY-NC-SA)
attribution-cc-by-nd = some rights reserved (CC BY-ND)
attribution-cc-by-sa = some rights reserved (CC BY-SA)
+# Month of August
August = August
-Automatically-update-my-content-for-taxon-changes = Automatically update my content for taxon changes
# Returns user to login screen
BACK-TO-LOGIN = BACK TO LOGIN
-# Header for inserting user description in settings profile tab
-Bio = Bio
BLOG = BLOG
# Accessibility label for bulk import / photo import button
# These are used by screen readers to label actionable elements iOS: https://developer.apple.com/documentation/uikit/uiaccessibilityelement/1619577-accessibilitylabel
@@ -103,67 +109,92 @@ By-exiting-your-observations-not-saved = By exiting, your observations will not
By-exiting-your-photos-will-not-be-saved = By exiting, your photos will not be saved.
By-exiting-your-recorded-sound-will-not-be-saved = By exiting, your recorded sound will not be saved.
Camera = Camera
-Camera-flip = Camera-flip
CANCEL = CANCEL
Cancel = Cancel
Captive-Cultivated = Captive/Cultivated
+# "Casual" Data quality grade
Casual = Casual
+# Short label for the Creative Commons Attribution license
CC-BY = CC BY
+# Short label for the Creative Commons Attribution-NonCommercial license
CC-BY-NC = CC BY-NC
+# Short label for the Creative Commons Attribution-NonCommercial-NoDerivatives license
CC-BY-NC-ND = CC BY-NC-ND
+# Short label for the Creative Commons Attribution-NonCommercial-ShareAlike license
CC-BY-NC-SA = CC BY-NC-SA
+# Short label for the Creative Commons Attribution-NoDerivatives license
CC-BY-ND = CC BY-ND
+# Short label for the Creative Commons Attribution-ShareAlike license
CC-BY-SA = CC BY-SA
+# Short label for the Creative Commons Zero declaration
CC0 = CC0
+# Label for a button that changes a selected date
CHANGE-DATE = CHANGE DATE
+# Label for a button that changes a selected date
Change-date = Change date
+# Label for a button that changes a selected end date
CHANGE-END-DATE = CHANGE END DATE
+# Label for a button that changes a selected end date
Change-end-date = Change end date
Change-project = Change project
+# Label for a button that changes a selected start date
CHANGE-START-DATE = CHANGE START DATE
+# Label for a button that changes a selected start date
Change-start-date = Change start date
Change-taxon = Change taxon
+# Button that changes the taxon filter on Explore
+Change-taxon-filter = Change taxon filter
Change-user = Change user
# Label for a button that cycles through zoom levels for the camera
Change-zoom = Change zoom
Check-this-box-if-you-want-to-apply-a-Creative-Commons = Check this box if you want to apply a Creative Commons
-# After pressing the reset password button
+# Notification that appears after pressing the reset password button
CHECK-YOUR-EMAIL = CHECK YOUR EMAIL!
-Checkmark = Checkmark
# Text for a button prompting the user to grant access to the gallery
CHOOSE-PHOTOS = CHOOSE PHOTOS
+# Label for button that chooses a taxon
+Choose-taxon = Choose taxon
+# Label for a button that clears content, like the text entered in a text
+# field
Clear = Clear
+# Label for a button that closes a window or popup
Close = Close
-Close-add-observation-modal = Close add observation modal.
# Accessibility label for a button that closes the permission request screen
Close-permission-request-screen = Close permission request screen
+# Label for a button that closes a search interface
Close-search = Close search
+Closes-new-observation-options = Closes new observation options.
Closes-withdraw-id-sheet = Closes "Withdraw ID" sheet
+# Heading for a section that describes people and organizations that
+# collaborate with iNaturalist
COLLABORATORS = COLLABORATORS
Collection-Project = Collection Project
+# Button that combines multiple photos into a single observation
Combine-Photos = Combine Photos
+# Title for a form that let's you enter a comment
COMMENT = COMMENT
-# Accessibility label for a button that shows options for a comment
+# Label for a button that shows options for a comment
Comment-options = Comment options
+# Label for a setting that shows the common name first
Common-Name-Scientific-Name = Common Name (Scientific Name)
Community-Guidelines = Community Guidelines
-Community-Moderation-Settings = Community Moderation Settings
+# Button that confirms a choice the user has made
CONFIRM = CONFIRM
Connect-with-other-naturalists = Connect with other naturalists and engage in conversations.
-Connected-Accounts = Connected Accounts
Connection-problem-Please-try-again-later = Connection problem. Please try again later.
CONTACT-SUPPORT = CONTACT SUPPORT
CONTINUE = CONTINUE
-Coordinates-copied-to-keyboard = Coordinates copied to keyboard
+# Notification when coordinates have been copied
+Coordinates-copied-to-clipboard = Coordinates copied to clipboard
+# Button that copies coordinates to the clipboard
Copy-coordinates = Copy Coordinates
-Copy-map-coordinates = Copy map coordinates
# Right to control copies of a creative work; this string may be used as a
# heading to describe general information about rights, attribution, and
# licensing
Copyright = Copyright
Couldnt-create-comment = Couldn't create comment
Couldnt-create-identification-error = Couldn't create identification { $error }
-Couldnt-create-identification-unknown-error = Couldn't create identification, Unknown Error.
+Couldnt-create-identification-unknown-error = Couldn't create identification, unknown error.
CREATE-AN-ACCOUNT = CREATE AN ACCOUNT
Create-an-observation-evidence = Create an observation with no evidence
CREATE-YOUR-FIRST-OBSERVATION = CREATE YOUR FIRST OBSERVATION
@@ -171,12 +202,13 @@ DATA-QUALITY = DATA QUALITY
DATA-QUALITY-ASSESSMENT = DATA QUALITY ASSESSMENT
Data-quality-assessment-can-taxon-still-be-confirmed-improved-based-on-the-evidence = Based on the evidence, can the Community Taxon still be improved?
Data-quality-assessment-community-taxon-species-level-or-lower = Community taxon at species level or lower
+# Data Quality Assessment section label: whether or not the observation date is accurate
Data-quality-assessment-date-is-accurate = Date is accurate
-# checklist test for Data Quality Assessment of Observation Details
+# Data Quality Assessment section label: whether or not the observation date was specified
Data-quality-assessment-date-specified = Date specified
Data-quality-assessment-description-casual = This observation has not met the conditions for Research Grade status.
Data-quality-assessment-description-needs-id = This observation has not yet met the conditions for Research Grade status:
-# description for different quality grades in the DQA
+# Data Quality Assessment explanation when quality is Research Grade
Data-quality-assessment-description-research = It can now be used for research and featured on other websites.
Data-quality-assessment-evidence-of-organism = Evidence of organism
Data-quality-assessment-has-photos-or-sounds = Has Photos or Sounds
@@ -187,7 +219,7 @@ Data-quality-assessment-organism-is-wild = Organism is wild
Data-quality-assessment-recent-evidence-of-organism = Recent evidence of an organism
Data-quality-assessment-title-casual = This observation is Casual Grade
Data-quality-assessment-title-needs-id = This observation Needs ID
-# declares the current data quality status of the observation
+# declares the current data quality status of the observation when quality is Research Grade
Data-quality-assessment-title-research = This observation is Research Grade!
Data-quality-casual-description = This observation needs more information verified to be considered verifiable
Data-quality-needs-id-description = This observation needs more identifications to reach research grade
@@ -207,9 +239,12 @@ Date-hours = { $count }h
Date-minutes = { $count }m
DATE-OBSERVED = DATE OBSERVED
Date-observed = Date observed
+Date-observed-header-short = Observed
DATE-OBSERVED-NEWEST = DATE OBSERVED - NEWEST TO OLDEST
DATE-OBSERVED-OLDEST = DATE OBSERVED - OLDEST TO NEWEST
+# Label for controls over a range of dates
Date-Range = Date Range
+# Label for controls over a range of dates
DATE-RANGE = DATE RANGE
# Used when displaying a relative time - in this case, shows an absolute date (e.g. 12/31/22)
Date-short-format = MM/dd/yy
@@ -222,18 +257,17 @@ DATE-UPLOADED-NEWEST = DATE UPLOADED - NEWEST TO OLDEST
DATE-UPLOADED-OLDEST = DATE UPLOADED - OLDEST TO NEWEST
# Used when displaying a relative time - in this case, X weeks ago (e.g. 3w = 3 weeks ago)
Date-weeks = { $count }w
-Date_observed_header_short = Observed
# Date formatting using date-fns
# See complete list of formatting styles: https://date-fns.org/v2.29.3/docs/format
datetime-format-short = M/d/yy h:mm a
+# Month of December
December = December
-Default-Search-Place = Default Search Place
DELETE = DELETE
Delete-all-observations = Delete all observations
Delete-comment = Delete comment
-DELETE-COMMENT-QUESTION = DELETE COMMENT?
-DELETE-OBSERVATION = DELETE OBSERVATION?
+DELETE-COMMENT--question = DELETE COMMENT?
Delete-observation = Delete observation
+DELETE-OBSERVATION--question = DELETE OBSERVATION?
# Button label or accessibility label for an element that deletes a photo
Delete-photo = Delete photo
Delete-sound = Delete sound
@@ -248,28 +282,29 @@ Deleting-x-of-y-observations =
# Tab label or section title for content that describes further details, e.g.
# the details of an observation
DETAILS = DETAILS
+# Button that disables the camera's flash
Disable-flash = Disable flash
+# Button that discards changes or an item, e.g. a photo
DISCARD = DISCARD
+# Button that discards all items, e.g. imported photos
DISCARD-ALL = DISCARD ALL
+# Button that discards changes
DISCARD-CHANGES = DISCARD CHANGES
DISCARD-FILTER-CHANGES = DISCARD FILTER CHANGES
-DISCARD-MEDIA = DISCARD MEDIA?
+DISCARD-MEDIA--question = DISCARD MEDIA?
DISCARD-OBSERVATION = DISCARD OBSERVATION
-DISCARD-PHOTOS = DISCARD PHOTOS?
+DISCARD-PHOTOS--question = DISCARD PHOTOS?
# Label for a button that discards a sound recording
DISCARD-RECORDING = DISCARD RECORDING
# Header of a popup confirming that the user wants to discard a sound
# recording
-DISCARD-SOUND-header = DISCARD SOUND?
+DISCARD-SOUND--question = DISCARD SOUND?
DISCARD-X-OBSERVATIONS =
{ $count ->
[one] DISCARD OBSERVATION
*[other] DISCARD { $count } OBSERVATIONS
}
DISMISS = DISMISS
-Display = Display
-Display-Name = Display Name
-Do-not-collect-stability-and-usage-data-using-third-party-services = Do not collect stability and usage data using third-party services
DONATE = DONATE
DONATE-TO-INATURALIST = DONATE TO INATURALIST
Donate-to-iNaturalist = Donate to iNaturalist
@@ -277,6 +312,7 @@ Donate-to-iNaturalist = Donate to iNaturalist
DONE = DONE
Dont-have-an-account = Don't have an account? Sign up
During-app-start-no-model-found = During app start there was no computer vision model found. There will be no AR camera.
+# Button for editing something
Edit = Edit
EDIT-COMMENT = EDIT COMMENT
Edit-comment = Edit comment
@@ -284,12 +320,13 @@ EDIT-LOCATION = EDIT LOCATION
# Label for interactive element that takes you to a location choosing screen
Edit-location = Edit location
Edit-Observation = Edit Observation
+# Label for button that edits an observation's taxon
+Edits-this-observations-taxon = Edits this observation's taxon
EMAIL = EMAIL
-# Appears above the email text field
-Email = email
EMAIL-DEBUG-LOGS = EMAIL DEBUG LOGS
-Email-Notifications = Email Notifications
+# Button that enables the camera's flash
Enable-flash = Enable flash
+# Indicates a species only occurs in a specific place
Endemic = Endemic
# TODO this and many other uses of placeables are not currently translatable
# without knowing the vowel/consonant state of the first letter of the
@@ -316,12 +353,12 @@ EXPLORE-IDENTIFIERS = EXPLORE IDENTIFIERS
EXPLORE-OBSERVATIONS = EXPLORE OBSERVATIONS
EXPLORE-OBSERVERS = EXPLORE OBSERVERS
EXPLORE-SPECIES = EXPLORE SPECIES
-External-Applications = External Applications
Failed-to-delete-sound = Failed to delete sound
# Error message with log in fails
Failed-to-log-in = Failed to log in
# Header for featured projects
FEATURED = FEATURED
+# Month of February
February = February
Fetching-location = Fetching location...
Filter = Filter
@@ -341,8 +378,9 @@ Flag-Item-Other-Input-Hint = Specify the reason you're flagging this item
# Status when an item has been flagged
Flagged = Flagged
Flash = flash
+# Label for a button that toggles between the front and back cameras
+Flip-camera = Flip camera
FOLLOW = FOLLOW
-Following = Following
# Forgot password link
Forgot-Password = Forgot Password
GEOPRIVACY = GEOPRIVACY
@@ -391,8 +429,6 @@ IMPORT-X-OBSERVATIONS =
# Identification category
improving--identification = Improving
INATURALIST-ACCOUNT-SETTINGS = INATURALIST ACCOUNT SETTINGS
-iNaturalist-Activity-Notifications = iNaturalist Activity Notifications
-iNaturalist-Applications = iNaturalist Applications
iNaturalist-can-save-photos-you-take-in-the-app-to-your-devices-gallery = iNaturalist can save photos you take in the app to your device’s gallery.
INATURALIST-COMMUNITY = INATURALIST COMMUNITY
INATURALIST-FORUM = INATURALIST FORUM
@@ -408,7 +444,6 @@ iNaturalist-is-supported-by-community = iNaturalist is supported by our amazing
iNaturalist-mission-is-to-connect = iNaturalist's mission is to connect people to nature and advance biodiversity science and conservation.
INATURALIST-MISSION-VISION = INATURALIST'S MISSION & VISION
INATURALIST-NETWORK = INATURALIST NETWORK
-iNaturalist-Network-Affiliation = iNaturalist Network Affiliation
INATURALIST-SETTINGS = INATURALIST SETTINGS
# Label for the role a user plays on iNaturalist, e.g. "INATURALIST STAFF"
# or "INATURALIST CURATOR". Since the name "INATURALIST" should not be
@@ -429,6 +464,7 @@ Internet-Connection-Required = Internet Connection Required
Intl-number = { $val }
Introduced = Introduced
Introduced-to-place = Introduced to { $place }
+# Month of January
January = January
JOIN = JOIN
JOIN-PROJECT = JOIN PROJECT
@@ -442,9 +478,10 @@ JOURNAL-POSTS-WITHOUT-NUMBER =
[one] JOURNAL POST
*[other] JOURNAL POSTS
}
+# Month of July
July = July
+# Month of June
June = June
-Language-Locale = Language/Locale
# Shows date user last active on iNaturalist on user profile
Last-Active-date = Last Active: { $date }
# Latitude, longitude on a single line on a single line
@@ -458,7 +495,6 @@ LEAVE = LEAVE
LEAVE-PROJECT = LEAVE PROJECT
LEAVE-US-A-REVIEW = LEAVE US A REVIEW!
LICENSES = LICENSES
-Licensing = Licensing
List-view = List view
Loading-iNaturalists-AR-Camera = Loading iNaturalist's AR Camera
LOCATION = LOCATION
@@ -482,9 +518,11 @@ Lowest = Lowest
LOWEST-RANK = LOWEST RANK
MAP = MAP
Map-Area = Map Area
+# Month of March
March = March
# Identification category
maverick--identification = Maverick
+# Month of May
May = May
MEDIA = MEDIA
MEMBERS-WITHOUT-NUMBER =
@@ -502,36 +540,37 @@ MONTHS = MONTHS
More-info = More info
MOST-FAVED = MOST FAVED
Most-faved = Most faved
-Names = Names
Native = Native
Native-to-place = Native to { $place }
-Navigates-to-add-identification = Navigates to add identification.
-Navigates-to-AR-camera = Navigates to AR camera.
-Navigates-to-bulk-importer = Navigates to bulk importer.
-Navigates-to-camera = Navigates to camera.
-Navigates-to-explore = Navigates to explore.
+Navigates-to-AR-camera = Navigates to AR camera
+Navigates-to-bulk-importer = Navigates to bulk importer
+Navigates-to-camera = Navigates to camera
+Navigates-to-explore = Navigates to explore
Navigates-to-notifications = Navigates to notifications
-Navigates-to-observation-details = Navigates to observation details screen.
-Navigates-to-observation-edit-screen = Navigate to observation edit screen.
-Navigates-to-observations = Navigates to observations.
-Navigates-to-photo-importer = Navigate to photo importer.
-Navigates-to-previous-screen = Navigate to previous screen
-Navigates-to-project-details = Navigate to project details
-Navigates-to-sound-recorder = Navigates to sound recorder.
-Navigates-to-suggest-identification = Navigates to suggest identification.
-Navigates-to-suggestions = Navigates to suggestions
+Navigates-to-observation-details = Navigates to observation details screen
+Navigates-to-observation-edit-screen = Navigate to observation edit screen
+Navigates-to-photo-importer = Navigates to photo importer
+Navigates-to-previous-screen = Navigates to previous screen
+Navigates-to-project-details = Navigates to project details
+Navigates-to-sound-recorder = Navigates to sound recorder
+Navigates-to-suggest-identification = Navigates to suggest identification
Navigates-to-taxon-details = Navigates to taxon details
-Navigates-to-user-profile = Navigates to user profile.
+Navigates-to-user-profile = Navigates to user profile
+# Label for button that takes you to your observations
+Navigates-to-your-observations = Navigates to your observations
# Header for nearby projects
NEARBY = NEARBY
Nearby = Nearby
NEARBY-SUGGESTIONS = NEARBY SUGGESTIONS
Needs-ID = Needs ID
+# Heading when creating a new observation
New-Observation = New Observation
+# Sort order, refers to newest or oldest date
Newest-to-oldest = Newest to oldest
Next-observation = Next observation
No-Location = No Location
No-Media = No Media
+# As in a machine learning model that powers automated suggestions
No-model-found = No model found
No-Notifications-Found = You have no notifications! Get started by creating your own observations.
No-projects-match-that-search = No projects match that search
@@ -549,6 +588,7 @@ Notifications = Notifications
notifications-user-added-comment-to-observation-by-you = <0>{ $userName }0> added a comment to an observation by you
# notification when someone adds an identification to your observation
notifications-user-added-identification-to-observation-by-you = <0>{ $userName }0> added an identification to an observation by you
+# Month of November
November = November
Obervations-must-be-manually-added = Observations must be manually added to a traditional project, either during the upload stage or after the observation has been shared to iNaturalist. A user must also join a traditional project in order to add their observations to it.
Obscured = Obscured
@@ -566,6 +606,8 @@ Observation-with-no-evidence = Observation with no evidence
Observations = Observations
Observations-created-on-iNaturalist = Observations created on iNaturalist are used by scientists around the world.
Observations-View = Observations View
+# Might be used when the number is represented using an image or other
+# element, not text
OBSERVATIONS-WITHOUT-NUMBER =
{ $count ->
[one] OBSERVATION
@@ -573,6 +615,7 @@ OBSERVATIONS-WITHOUT-NUMBER =
}
# Onboarding text on MyObservations: Onboarding text on MyObservations: 11-50 observations
Observations-you-upload-to-iNaturalist = Observations you upload to iNaturalist can be used by scientists and researchers worldwide.
+# Button that starts a new observation
Observe = Observe
# Title of screen asking for permission to access the gallery
Observe-and-identify-organisms-from-your-gallery = Observe and identify organisms from your gallery
@@ -581,7 +624,9 @@ Observe-and-identify-organisms-in-real-time-with-your-camera = Observe and ident
# Text for a button prompting the user to grant access to the camera
OBSERVE-ORGANISMS = OBSERVE ORGANISMS
Observers = Observers
+# Section in Explore that shows people who added observations given a set of search filters
Observers-View = Observers View
+# Month of October
October = October
Offensive-Inappropriate = Offensive/Inappropriate
Offensive-Inappropriate-Examples = Misleading or illegal content, racial or ethnic slurs, etc. For more on our defintion of "appropriate," see the FAQ.
@@ -589,8 +634,10 @@ Offline-DQA-description = The DQA may not be accurate. Check your internet conne
Offline-No-Notifications = Cannot fetch notifications at this time.
# Generic confirmation, e.g. button on a warning alert
OK = OK
+# Sort order, refers to newest or oldest date
Oldest-to-newest = Oldest to newest
One-last-step = One last step!
+# Adjective, as in geoprivacy
Open = Open
Open-drawer = Open drawer
OPEN-EMAIL = OPEN EMAIL
@@ -631,15 +678,14 @@ Please-try-again-when-you-are-connected-to-the-internet = Please try again when
# Help text for beginning a sound recording
Press-record-to-start = Press record to start
Previous-observation = Previous observation
-Prioritize-common-names-used-in-this-place = Prioritize common names used in this place.
-Privacy = Privacy
Privacy-Policy = Privacy Policy
Private = Private
-Profile-Picture = Profile Picture
+# As in an iNat project, a collection of observations or observation search filters
PROJECT = PROJECT
PROJECT-REQUIREMENTS = PROJECT REQUIREMENTS
-Project-Settings = Project Settings
+# As in iNat project, collections of observations or observation search filters
PROJECTS = PROJECTS
+# As in iNat projects, collections of observations or observation search filters
Projects = Projects
QUALITY-GRADE = QUALITY GRADE
# Shortened display of an observation's quality grade (used when displayed in a badge) - in this case, Casual
@@ -689,6 +735,7 @@ Ranks-VARIETY = VARIETY
Ranks-ZOOSECTION = ZOOSECTION
Ranks-ZOOSUBSECTION = ZOOSUBSECTION
Read-more-on-Wikipedia = Read more on Wikipedia
+# Heading for the sound recorder
RECORD-NEW-SOUND = RECORD NEW SOUND
# Title of screen asking for permission to access the microphone
Record-organism-sounds-with-the-microphone = Record organism sounds with the microphone
@@ -697,12 +744,20 @@ RECORD-SOUND = RECORD SOUND
Record-sounds = Record sounds with your microphone
# Imperative verb for recording a sound
Record-verb = Record
+# Status while recording a sound
Recording-sound = Recording sound
Recording-stopped-Tap-play-the-current-recording = Recording stopped. Tap play the current recording.
REDO-SEARCH-IN-MAP-AREA = REDO SEARCH IN MAP AREA
+# Label for a button that removes a vote of agreement
+Remove-agreement = Remove agreement
+# Label for a button that removes a vote of disagreement
+Remove-disagreement = Remove disagreement
Remove-favorite = Remove favorite
Remove-Photos = Remove Photos
-Remove-Relationship = Remove Relationship
+# Hint for a button that removes a vote of agreement
+Removes-your-vote-of-agreement = Removes your vote of agreement
+# Hint for a button that removes a vote of disagreement
+Removes-your-vote-of-disagreement = Removes your vote of disagreement
# Quality grade option
Research-Grade = Research Grade
Reset = Reset
@@ -725,7 +780,6 @@ REVIEW-INATURALIST = REVIEW INATURALIST
# reviewed the observations or not
REVIEWED = REVIEWED
Reviewed-observations-only = Reviewed observations only
-Revoke = Revoke
# Label for the satellite map type
Satellite--map-type = Satellite
# Label for a button that persists something
@@ -741,7 +795,9 @@ Saved-Observation = Saved observation, in queue to upload
Scan-the-area-around-you-for-organisms = Scan the area around you for organisms.
Scientific-Name = Scientific Name
Scientific-Name-Common-Name = Scientific Name (Common Name)
+# Title for a search interface
SEARCH = SEARCH
+# Title for a search interface
Search = Search
SEARCH-FOR-A-LOCATION = SEARCH FOR A LOCATION
Search-for-a-project = Search for a project
@@ -770,6 +826,7 @@ Select-the-identification-you-want-to-add = Select the identification you want t
Select-user = Select user
Selects-iconic-taxon-X-for-identification = Selects iconic taxon { $iconicTaxon } for identification.
Separate-Photos = Separate Photos
+# Month of September
September = September
SETTINGS = SETTINGS
Settings = Settings
@@ -780,6 +837,8 @@ Share-map = Share map
SHOP-INATURALIST-MERCH = SHOP INATURALIST MERCH
Shop-iNaturalist-Merch = Shop iNaturalist Merch
Show-observation-options = Show observation options.
+# Label for button that shows identification suggestions
+Shows-identification-suggestions = Shows identification suggestions
Shows-iNaturalist-bird-logo = Shows iNaturalist bird logo.
Sign-out = Sign out
Some-data-privacy-laws = Some data privacy laws, like the European Union's General Data Protection Regulation (GDPR), require explicit consent to transfer personal information from their jurisdictions to other jurisdictions where the legal protection of this information is not considered adequate. As of 2020, the European Union no longer considers the United States to be a jurisdiction that provides adequate legal protection of personal information, specifically because of the possibility of the US government surveilling data entering the US. It is possible other jurisdictions may have the same opinion.
@@ -840,7 +899,6 @@ TAXON-NAMES-DISPLAY = TAXON NAMES DISPLAY
TAXONOMIC-RANKS = TAXONOMIC RANKS
# Header for a block of text describing a taxon's taxonomy
TAXONOMY-header = TAXONOMY
-Taxonomy-Settings = Taxonomy Settings
TEACHERS = TEACHERS
Teachers-Guide = Teachers' Guide
TEAM = TEAM
@@ -848,27 +906,21 @@ Terms-of-Use = Terms of Use
Text-Box-to-Describe-Reason-for-Flag = Text box to describe reason for flag.
The-exact-location-will-be-hidden = The exact location will be hidden publicly, and instead generalized to a larger area. (Threatened and endangered species are automatically obscured).
The-iNaturalist-Network = The iNaturalist network is a collection of localized websites that are fully connected to the global iNaturalist community. Network sites are supported by local institutions that promote local use and facilitate the use of data from iNaturalist to benefit local biodiversity.
-The-iNaturalist-Network-is-a-collection-of-localized-websites = The iNaturalist Network is a collection of localized websites that are fully connected to the global iNaturalist community. Network sites are supported by local institutions that have signed an agreement with iNaturalist to promote local use and benefit local biodiversity. They have access to true coordinates from their countries that are automatically obscured from public view in order to protect threatened species. Your username and password works on all sites that are part of the iNaturalist Network. If you choose to affiliate with a Network site, the local institutions that operate each site will also have access to your email address (only to communicate with you about site activities) and access to the true coordinates for observations that are publicly obscured or private. Note: Please do not experimentally change your affiliation if you have more than 1000 observations.
The-iNaturalist-team-has-collaborated = The iNaturalist team has collaborated with...
The-location-will-not-be-visible = The location will not be visible to others, which means it may be difficult to identify.
There-is-no-way = There is no way to have an iNaturalist account without storing personal information, so the only way to revoke this consent is to delete your account.
# Wild status sheet descriptions
This-is-a-wild-organism = This is a wild organism and wasn't placed in this location by humans.
-This-is-how-all-taxon-names-will-be-displayed-to-you-across-iNaturalist = This is how all taxon names will be displayed to you across iNaturalist
This-is-how-taxon-names-will-be-displayed = This is how all taxon names will be displayed to you across iNaturalist:
This-observer-has-opted-out-of-the-Community-Taxon = This observer has opted out of the Community Taxon
This-organism-was-placed-by-humans = This organism was placed in this location by humans. This applies to things like garden plants, pets, and zoo animals.
-This-sets-your-language-and-date-formatting-preferences-across-iNaturalist = This sets your language and date formatting preferences across iNaturalist based on your locale.
-This-will-be-your-default-place-for-all-searches-in-Explore-and-Identify = This will be your default place for all searches in Explore and Identify.
To-access-all-other-settings = To access all other account settings, click here:
To-learn-more-about-what-information = To learn more about what information we collect and how we use it, please see our Privacy Policy and our Terms of Use.
To-sync-your-observations-to-iNaturalist = To sync your observations to iNaturalist, please log in.
Toggle-map-type = Toggle map type
TOP-ID-SUGGESTION = TOP ID SUGGESTION
Traditional-Project = Traditional Project
-Trust-with-hidden-coordinates = Trust with hidden coordinates
Umbrella-Project = Umbrella Project
-Unblock = Unblock
UNFOLLOW = UNFOLLOW
UNFOLLOW-USER = UNFOLLOW USER?
# Text to show when a taxon or identification is unknown or missing
@@ -878,7 +930,6 @@ Unknown--user = Unknown
# Generic error message
Unknown-error = Unknown error
Unknown-organism = Unknown organism
-Unmute = Unmute
Unreviewed-observations-only = Unreviewed observations only
Upload-Complete = Upload Complete
Upload-in-progress = Upload in progress
@@ -911,7 +962,6 @@ Use-your-devices-microphone-to-record = Use your device’s microphone to record
USER = USER
User = User { $userHandle }
USERNAME = USERNAME
-Username = Username
# Appears above the text fields
USERNAME-OR-EMAIL = USERNAME OR EMAIL
Using-iNaturalist-requires-the-storage = Using iNaturalist requires the storage of personal information like your email address, all iNaturalist data is stored in the United States, and we cannot be sure what legal jurisdiction you are in when you are using iNaturalist, so in order to comply with privacy laws like the GDPR, you must acknowledge that you understand and accept this risk and consent to transferring your personal information to iNaturalist's servers in the US.
@@ -926,6 +976,8 @@ View-photo = View photo
View-photo-licensing-info = View photo licensing info
VIEW-PROJECT-REQUIREMENTS = VIEW PROJECT REQUIREMENTS
VIEW-PROJECTS = VIEW PROJECTS
+# Label for a button that shows identification suggestions for an observation
+# or photo
View-suggestions = View suggestions
VIEW-TEACHERS-GUIDE = VIEW TEACHERS' GUIDE
# Title for a notice informing the user that they are viewing offline
@@ -939,8 +991,6 @@ Welcome-to-iNaturalist = Welcome to iNaturalist!
Welcome-user = <0>Welcome back,0><1>{ $userHandle }1>
WHAT-IS-INATURALIST = WHAT IS INATURALIST?
Whats-more-by-recording = What's more, by recording and sharing your observations, you'll create research-quality data for scientists working to better understand and protect nature. So if you like recording your findings from the outdoors, or if you just like learning about life, join us!
-Which-traditional-projects-can-add-your-observations = Which traditional projects can add your observations?
-Who-can-add-observation-fields-to-my-observations = Who can add observation fields to my observations?
WIKIPEDIA = WIKIPEDIA
Wild = Wild
WILD-STATUS = WILD STATUS
diff --git a/src/navigation/BottomTabNavigator/CustomTabBarContainer.js b/src/navigation/BottomTabNavigator/CustomTabBarContainer.js
index ef3f610ec..ce679e2ab 100644
--- a/src/navigation/BottomTabNavigator/CustomTabBarContainer.js
+++ b/src/navigation/BottomTabNavigator/CustomTabBarContainer.js
@@ -52,7 +52,7 @@ const CustomTabBarContainer = ( { navigation }: Props ): Node => {
userIconUri: User.uri( currentUser ),
testID: "NavButton.personIcon",
accessibilityLabel: t( "Observations" ),
- accessibilityHint: t( "Navigates-to-observations" ),
+ accessibilityHint: t( "Navigates-to-your-observations" ),
size: 40,
onPress: ( ) => {
navigation.navigate( "ObservationsStackNavigator", {
diff --git a/src/sharedHooks/index.js b/src/sharedHooks/index.js
index 4f25712d6..2e954e489 100644
--- a/src/sharedHooks/index.js
+++ b/src/sharedHooks/index.js
@@ -19,6 +19,7 @@ export { default as useRemoteObservation } from "./useRemoteObservation";
export { default as useShare } from "./useShare";
export { default as useStoredLayout } from "./useStoredLayout";
export { default as useTaxon } from "./useTaxon";
+export { default as useTaxonSearch } from "./useTaxonSearch";
export { default as useTranslation } from "./useTranslation";
export { default as useUserLocation } from "./useUserLocation";
export { default as useUserMe } from "./useUserMe";
diff --git a/tests/integration/navigation/StandardCamera.test.js b/tests/integration/navigation/StandardCamera.test.js
index 91876050a..35d297fbb 100644
--- a/tests/integration/navigation/StandardCamera.test.js
+++ b/tests/integration/navigation/StandardCamera.test.js
@@ -72,7 +72,7 @@ describe( "StandardCamera navigation", ( ) => {
await actor.press( cameraButton );
const takePhotoButton = await screen.findByLabelText( /Take photo/ );
await actor.press( takePhotoButton );
- const checkmarkButton = await screen.findByLabelText( "Checkmark" );
+ const checkmarkButton = await screen.findByLabelText( "View suggestions" );
await actor.press( checkmarkButton );
expect( await screen.findByText( /ADD AN ID/ ) ).toBeVisible( );
} );
diff --git a/tests/unit/components/BottomTabNavigator/__snapshots__/CustomTabBar.test.js.snap b/tests/unit/components/BottomTabNavigator/__snapshots__/CustomTabBar.test.js.snap
index 6dc7c85c5..616863bf3 100644
--- a/tests/unit/components/BottomTabNavigator/__snapshots__/CustomTabBar.test.js.snap
+++ b/tests/unit/components/BottomTabNavigator/__snapshots__/CustomTabBar.test.js.snap
@@ -154,7 +154,7 @@ exports[`CustomTabBar should render correctly 1`] = `
{
expect( await screen.findByTestId( "KebabMenu.Button" ) ).toBeTruthy( );
fireEvent.press( await screen.findByTestId( "KebabMenu.Button" ) );
fireEvent.press( await screen.findByText( t( "Delete-comment" ) ) );
- expect( await screen.findByText( t( "DELETE-COMMENT-QUESTION" ) ) ).toBeTruthy( );
+ expect( await screen.findByText( t( "DELETE-COMMENT--question" ) ) ).toBeTruthy( );
} );
} );
diff --git a/tests/unit/components/SharedComponents/Checkbox.test.js b/tests/unit/components/SharedComponents/Checkbox.test.js
index a689c78ee..0382ba912 100644
--- a/tests/unit/components/SharedComponents/Checkbox.test.js
+++ b/tests/unit/components/SharedComponents/Checkbox.test.js
@@ -7,6 +7,7 @@ import { renderComponent } from "tests/helpers/render";
const rerenderCheckmarkComponent = checked => {
renderComponent(
@@ -33,13 +34,19 @@ describe( "Checkbox", () => {
} );
it( "has no accessibility errors", () => {
- const checkbox = ;
+ const checkbox = ;
expect( checkbox ).toBeAccessible();
} );
it( "renders an empty checkbox when isChecked is false", () => {
- renderComponent( );
+ renderComponent(
+
+ );
const checkmark = screen.getByLabelText( /Checkmark/ );
@@ -52,7 +59,7 @@ describe( "Checkbox", () => {
} );
it( "renders a green filled checkbox when isChecked is true", () => {
- renderComponent( );
+ renderComponent( );
const checkmark = screen.getByLabelText( /Checkmark/ );
expect( checkmark ).toHaveProp( "innerIconStyle", {
@@ -66,6 +73,7 @@ describe( "Checkbox", () => {
let checked = false;
renderComponent(
{
let checked = true;
renderComponent(
( checked = !checked )}
+ onPress={( ) => { checked = !checked; }}
/>
);
const checkmark = screen.getByLabelText( /Checkmark/ );
@@ -103,8 +111,7 @@ describe( "Checkbox", () => {
( checked = !checked )}
+ onPress={( ) => { checked = !checked; }}
/>
);
diff --git a/tests/unit/components/SharedComponents/InlineUser/__snapshots__/InlineUser.test.js.snap b/tests/unit/components/SharedComponents/InlineUser/__snapshots__/InlineUser.test.js.snap
index 661552fdd..f1eb878c0 100644
--- a/tests/unit/components/SharedComponents/InlineUser/__snapshots__/InlineUser.test.js.snap
+++ b/tests/unit/components/SharedComponents/InlineUser/__snapshots__/InlineUser.test.js.snap
@@ -2,7 +2,7 @@
exports[`InlineUser renders reliably 1`] = `
{
it( "should render correctly", () => {
render(
);
diff --git a/tests/unit/components/SharedComponents/__snapshots__/Checkbox.test.js.snap b/tests/unit/components/SharedComponents/__snapshots__/Checkbox.test.js.snap
index 4ab14184e..7e38bcdba 100644
--- a/tests/unit/components/SharedComponents/__snapshots__/Checkbox.test.js.snap
+++ b/tests/unit/components/SharedComponents/__snapshots__/Checkbox.test.js.snap
@@ -2,7 +2,6 @@
exports[`Checkbox renders reliably 1`] = `