1
Fork 0

Further work on people section + refactor translations

This commit is contained in:
viktorstrate 2021-10-21 13:04:47 +02:00
parent 06fd166483
commit e27f653c2e
No known key found for this signature in database
GPG Key ID: 3F855605109C1E8A
30 changed files with 549 additions and 121 deletions

View File

@ -1,7 +1,20 @@
module.exports = { module.exports = {
skipDefaultValues: locale => locale != 'en', skipDefaultValues: locale => locale != 'en',
sort: true, sort: true,
locales: ['da', 'de', 'en', 'es', 'fr', 'it', 'pl', 'ru', 'sv'], locales: [
'da',
'de',
'en',
'es',
'fr',
'it',
'pl',
'pt',
'ru',
'sv',
'zh-CN',
'zh-HK',
],
input: 'src/**/*.{js,ts,jsx,tsx}', input: 'src/**/*.{js,ts,jsx,tsx}',
output: 'src/extractedTranslations/$LOCALE/$NAMESPACE.json', output: 'src/extractedTranslations/$LOCALE/$NAMESPACE.json',
} }

14
ui/package-lock.json generated
View File

@ -12,7 +12,7 @@
"@apollo/client": "^3.3.21", "@apollo/client": "^3.3.21",
"@babel/preset-typescript": "^7.14.5", "@babel/preset-typescript": "^7.14.5",
"@craco/craco": "^6.2.0", "@craco/craco": "^6.2.0",
"@headlessui/react": "^1.3.0", "@headlessui/react": "^1.4.1",
"@react-aria/focus": "^3.4.0", "@react-aria/focus": "^3.4.0",
"@rollup/plugin-babel": "^5.3.0", "@rollup/plugin-babel": "^5.3.0",
"@types/geojson": "^7946.0.8", "@types/geojson": "^7946.0.8",
@ -2103,9 +2103,9 @@
} }
}, },
"node_modules/@headlessui/react": { "node_modules/@headlessui/react": {
"version": "1.3.0", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.3.0.tgz", "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.4.1.tgz",
"integrity": "sha512-2gqTO6BQ3Jr8vDX1B67n1gl6MGKTt6DBmR+H0qxwj0gTMnR2+Qpktj8alRWxsZBODyOiBb77QSQpE/6gG3MX4Q==", "integrity": "sha512-gL6Ns5xQM57cZBzX6IVv6L7nsam8rDEpRhs5fg28SN64ikfmuuMgunc+Rw5C1cMScnvFM+cz32ueVrlSFEVlSg==",
"engines": { "engines": {
"node": ">=10" "node": ">=10"
}, },
@ -28802,9 +28802,9 @@
} }
}, },
"@headlessui/react": { "@headlessui/react": {
"version": "1.3.0", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.3.0.tgz", "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.4.1.tgz",
"integrity": "sha512-2gqTO6BQ3Jr8vDX1B67n1gl6MGKTt6DBmR+H0qxwj0gTMnR2+Qpktj8alRWxsZBODyOiBb77QSQpE/6gG3MX4Q==", "integrity": "sha512-gL6Ns5xQM57cZBzX6IVv6L7nsam8rDEpRhs5fg28SN64ikfmuuMgunc+Rw5C1cMScnvFM+cz32ueVrlSFEVlSg==",
"requires": {} "requires": {}
}, },
"@humanwhocodes/config-array": { "@humanwhocodes/config-array": {

View File

@ -12,7 +12,7 @@
"@apollo/client": "^3.3.21", "@apollo/client": "^3.3.21",
"@babel/preset-typescript": "^7.14.5", "@babel/preset-typescript": "^7.14.5",
"@craco/craco": "^6.2.0", "@craco/craco": "^6.2.0",
"@headlessui/react": "^1.3.0", "@headlessui/react": "^1.4.1",
"@react-aria/focus": "^3.4.0", "@react-aria/focus": "^3.4.0",
"@rollup/plugin-babel": "^5.3.0", "@rollup/plugin-babel": "^5.3.0",
"@types/geojson": "^7946.0.8", "@types/geojson": "^7946.0.8",

View File

@ -133,16 +133,24 @@ const FaceGroupTitle = ({ faceGroup }: FaceGroupTitleProps) => {
<div className="mb-2">{title}</div> <div className="mb-2">{title}</div>
<ul className="flex gap-2 flex-wrap mb-6"> <ul className="flex gap-2 flex-wrap mb-6">
<li> <li>
<Button onClick={() => setEditLabel(true)}>{t('people_page.action_label.change_label', 'Change label')}</Button> <Button onClick={() => setEditLabel(true)}>
{t('people_page.action_label.change_label', 'Change label')}
</Button>
</li> </li>
<li> <li>
<Button onClick={() => setMergeModalOpen(true)}>{t('people_page.action_label.merge_face', 'Merge face')}</Button> <Button onClick={() => setMergeModalOpen(true)}>
{t('people_page.action_label.merge_people', 'Merge people')}
</Button>
</li> </li>
<li> <li>
<Button onClick={() => setDetachModalOpen(true)}>{t('people_page.action_label.detach_face', 'Detach face')}</Button> <Button onClick={() => setDetachModalOpen(true)}>
{t('people_page.action_label.detach_images', 'Detach images')}
</Button>
</li> </li>
<li> <li>
<Button onClick={() => setMoveModalOpen(true)}>{t('people_page.action_label.move_faces', 'Moves faces')}</Button> <Button onClick={() => setMoveModalOpen(true)}>
{t('people_page.action_label.move_faces', 'Move faces')}
</Button>
</li> </li>
</ul> </ul>
</div> </div>

View File

@ -2,12 +2,76 @@ import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { Link } from 'react-router-dom' import { Link } from 'react-router-dom'
import FaceCircleImage from '../../../Pages/PeoplePage/FaceCircleImage' import FaceCircleImage from '../../../Pages/PeoplePage/FaceCircleImage'
import { Button } from '../../../primitives/form/Input'
import { SidebarSection, SidebarSectionTitle } from '../SidebarComponents' import { SidebarSection, SidebarSectionTitle } from '../SidebarComponents'
import { MediaSidebarMedia } from './MediaSidebar' import { MediaSidebarMedia } from './MediaSidebar'
import { sidebarMediaQuery_media_faces } from './__generated__/sidebarMediaQuery' import { sidebarMediaQuery_media_faces } from './__generated__/sidebarMediaQuery'
import { ReactComponent as PeopleDotsIcon } from './icons/peopleDotsIcon.svg' import { ReactComponent as PeopleDotsIcon } from './icons/peopleDotsIcon.svg'
import { Menu } from '@headlessui/react'
import { Button } from '../../../primitives/form/Input'
import { ArrowPopoverPanel } from '../Sharing'
import { tailwindClassNames } from '../../../helpers/utils'
type PersonMoreMenuItemProps = {
label: string
className?: string
}
const PersonMoreMenuItem = ({ label, className }: PersonMoreMenuItemProps) => {
return (
<Menu.Item>
{({ active }) => (
<a
className={tailwindClassNames(
`block py-1 cursor-pointer ${active && 'bg-gray-50 text-black'}`,
className
)}
>
{label}
</a>
)}
</Menu.Item>
)
}
type PersonMoreMenuProps = {
face: sidebarMediaQuery_media_faces
}
const PersonMoreMenu = ({ face }: PersonMoreMenuProps) => {
const { t } = useTranslation()
face
return (
<Menu as="div" className="relative inline-block">
<Menu.Button as={Button} className="px-1.5 py-1.5 align-middle ml-1">
<PeopleDotsIcon className="text-gray-500" />
</Menu.Button>
<Menu.Items className="">
<ArrowPopoverPanel width={120}>
<PersonMoreMenuItem
className="border-b"
label={t('people_page.action_label.change_label', 'Change label')}
/>
<PersonMoreMenuItem
className="border-b"
label={t('sidebar.people.action_label.merge_face', 'Merge face')}
/>
<PersonMoreMenuItem
className="border-b"
label={t(
'sidebar.people.action_label.detach_image',
'Detach image'
)}
/>
<PersonMoreMenuItem
label={t('sidebar.people.action_label.move_face', 'Move face')}
/>
</ArrowPopoverPanel>
</Menu.Items>
</Menu>
)
}
type MediaSidebarFaceProps = { type MediaSidebarFaceProps = {
face: sidebarMediaQuery_media_faces face: sidebarMediaQuery_media_faces
@ -19,18 +83,16 @@ const MediaSidebarPerson = ({ face }: MediaSidebarFaceProps) => {
return ( return (
<li className="inline-block"> <li className="inline-block">
<Link to={`/people/${face.faceGroup.id}`}> <Link to={`/people/${face.faceGroup.id}`}>
<FaceCircleImage imageFace={face} selectable={true} size="100px" /> <FaceCircleImage imageFace={face} selectable={true} size="92px" />
</Link> </Link>
<div <div
className={`text-center ${ className={`text-center text-sm mt-1 ${
face.faceGroup.label ? 'text-black' : 'text-gray-600' face.faceGroup.label ? 'text-black' : 'text-gray-600'
}`} }`}
> >
{face.faceGroup.label ?? {face.faceGroup.label ??
t('people_page.face_group.unlabeled', 'Unlabeled')} t('people_page.face_group.unlabeled', 'Unlabeled')}
<Button className="px-2 py-1.5 align-middle ml-1"> <PersonMoreMenu face={face} />
<PeopleDotsIcon className="text-gray-500" />
</Button>
</div> </div>
</li> </li>
) )
@ -54,8 +116,12 @@ const MediaSidebarPeople = ({ media }: MediaSidebarFacesProps) => {
<SidebarSectionTitle> <SidebarSectionTitle>
{t('sidebar.people.title', 'People')} {t('sidebar.people.title', 'People')}
</SidebarSectionTitle> </SidebarSectionTitle>
<div className="overflow-x-auto"> <div
className="overflow-x-auto mb-[-200px]"
style={{ scrollbarWidth: 'none' }}
>
<ul className="flex gap-4 mx-4">{faceElms}</ul> <ul className="flex gap-4 mx-4">{faceElms}</ul>
<div className="h-[200px]"></div>
</div> </div>
</SidebarSection> </SidebarSection>
) )

View File

@ -106,10 +106,12 @@ const DELETE_SHARE_MUTATION = gql`
} }
` `
const ArrowPopoverPanel = styled.div.attrs({ export const ArrowPopoverPanel = styled.div.attrs({
className: className:
'absolute right-6 -top-3 bg-white rounded shadow-md border border-gray-200 w-[260px]', 'absolute right-6 -top-3 bg-white rounded shadow-md border border-gray-200',
})` })<{ width: number }>`
width: ${({ width }) => width}px;
&::after { &::after {
content: ''; content: '';
position: absolute; position: absolute;
@ -247,7 +249,7 @@ const MorePopover = ({ id, share, query }: MorePopoverProps) => {
</Popover.Button> </Popover.Button>
<Popover.Panel> <Popover.Panel>
<ArrowPopoverPanel> <ArrowPopoverPanel width={260}>
<MorePopoverSectionPassword id={id} share={share} query={query} /> <MorePopoverSectionPassword id={id} share={share} query={query} />
<div className="px-4 py-2 border-t border-gray-200 mt-2 mb-2"> <div className="px-4 py-2 border-t border-gray-200 mt-2 mb-2">
<Checkbox label="Expiration date" /> <Checkbox label="Expiration date" />

View File

@ -63,8 +63,8 @@
"people_page": { "people_page": {
"action_label": { "action_label": {
"change_label": "Ændre navn", "change_label": "Ændre navn",
"detach_face": "Løsriv billeder", "detach_images": "Løsriv billeder",
"merge_face": "Sammenflet personer", "merge_people": "Sammenflet personer",
"move_faces": "Flyt ansigter" "move_faces": "Flyt ansigter"
}, },
"face_group": { "face_group": {
@ -263,7 +263,7 @@
"title": "Lokation" "title": "Lokation"
}, },
"media": { "media": {
"album": "Album", "album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "Actionprogram", "action_program": "Actionprogram",
@ -305,6 +305,11 @@
} }
}, },
"people": { "people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": "Personer" "title": "Personer"
}, },
"sharing": { "sharing": {

View File

@ -42,6 +42,15 @@
"merge_face": null, "merge_face": null,
"detach_face": null, "detach_face": null,
"move_faces": null "move_faces": null
},
"modal": {
"merge_people_groups": {
"description": "Alle billeder fra denne gruppe vil blive flettet sammen med den valgte gruppe",
"destination_table": {
"title": "Vælg destinationsgruppe"
},
"title": "Vælg gruppe at flette med"
}
} }
}, },
"settings": { "settings": {
@ -71,6 +80,9 @@
"mega_byte_plural": null, "mega_byte_plural": null,
"tera_byte_plural": null "tera_byte_plural": null
} }
},
"media": {
"album": "Album"
} }
}, },
"timeline_filter": { "timeline_filter": {

View File

@ -63,8 +63,8 @@
"people_page": { "people_page": {
"action_label": { "action_label": {
"change_label": "", "change_label": "",
"detach_face": "", "detach_images": "",
"merge_face": "", "merge_people": "",
"move_faces": "" "move_faces": ""
}, },
"face_group": { "face_group": {
@ -263,7 +263,7 @@
"title": "" "title": ""
}, },
"media": { "media": {
"album": "", "album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "Action (kurze Verschlusszeit)", "action_program": "Action (kurze Verschlusszeit)",
@ -305,6 +305,11 @@
} }
}, },
"people": { "people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": "" "title": ""
}, },
"sharing": { "sharing": {

View File

@ -61,6 +61,13 @@
"title": null "title": null
}, },
"title": null "title": null
},
"merge_people_groups": {
"description": "",
"destination_table": {
"title": ""
},
"title": ""
} }
}, },
"table": { "table": {
@ -115,6 +122,9 @@
"mega_byte_plural": null, "mega_byte_plural": null,
"tera_byte_plural": null "tera_byte_plural": null
} }
},
"media": {
"album": ""
} }
}, },
"album_filter": { "album_filter": {

View File

@ -63,8 +63,8 @@
"people_page": { "people_page": {
"action_label": { "action_label": {
"change_label": "Change label", "change_label": "Change label",
"detach_face": "Detach face", "detach_images": "Detach face",
"merge_face": "Merge face", "merge_people": "Merge face",
"move_faces": "Move faces" "move_faces": "Move faces"
}, },
"face_group": { "face_group": {
@ -263,7 +263,7 @@
"title": "Location" "title": "Location"
}, },
"media": { "media": {
"album": "Album", "album_path": "Album path",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "Action program", "action_program": "Action program",
@ -305,6 +305,11 @@
} }
}, },
"people": { "people": {
"action_label": {
"detach_image": "Detach image",
"merge_face": "Merge face",
"move_face": "Move face"
},
"title": "People" "title": "People"
}, },
"sharing": { "sharing": {

View File

@ -36,6 +36,15 @@
"select_image_faces": { "select_image_faces": {
"search_images_placeholder": "Search images..." "search_images_placeholder": "Search images..."
} }
},
"modal": {
"merge_people_groups": {
"description": "All images within this face group will be merged into the selected face group.",
"destination_table": {
"title": "Select the destination face"
},
"title": "Merge Face Groups"
}
} }
}, },
"settings": { "settings": {
@ -54,6 +63,9 @@
}, },
"sharing": { "sharing": {
"table_header": "Public shares" "table_header": "Public shares"
},
"media": {
"album": "Album"
} }
} }
} }

View File

@ -63,8 +63,8 @@
"people_page": { "people_page": {
"action_label": { "action_label": {
"change_label": "", "change_label": "",
"detach_face": "", "detach_images": "",
"merge_face": "", "merge_people": "",
"move_faces": "" "move_faces": ""
}, },
"face_group": { "face_group": {
@ -263,7 +263,7 @@
"title": "" "title": ""
}, },
"media": { "media": {
"album": "", "album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "Programa de acción", "action_program": "Programa de acción",
@ -305,6 +305,11 @@
} }
}, },
"people": { "people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": "" "title": ""
}, },
"sharing": { "sharing": {

View File

@ -61,6 +61,13 @@
"title": null "title": null
}, },
"title": null "title": null
},
"merge_people_groups": {
"description": "",
"destination_table": {
"title": ""
},
"title": ""
} }
}, },
"table": { "table": {
@ -120,6 +127,9 @@
"mega_byte_plural": null, "mega_byte_plural": null,
"tera_byte_plural": null "tera_byte_plural": null
} }
},
"media": {
"album": ""
} }
}, },
"title": { "title": {

View File

@ -63,8 +63,8 @@
"people_page": { "people_page": {
"action_label": { "action_label": {
"change_label": "Changer le label", "change_label": "Changer le label",
"detach_face": "Détacher le visage", "detach_images": "Détacher le visage",
"merge_face": "Fusionner le visage", "merge_people": "Fusionner le visage",
"move_faces": "Déplacer les visages" "move_faces": "Déplacer les visages"
}, },
"face_group": { "face_group": {
@ -263,7 +263,7 @@
"title": "" "title": ""
}, },
"media": { "media": {
"album": "", "album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "Programme d'action", "action_program": "Programme d'action",
@ -305,6 +305,11 @@
} }
}, },
"people": { "people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": "" "title": ""
}, },
"sharing": { "sharing": {

View File

@ -60,6 +60,13 @@
"title": null "title": null
}, },
"title": null "title": null
},
"merge_people_groups": {
"description": "Toutes les images de ce groupe de visages seront fusionnées dans le groupe de visages sélectionné.",
"destination_table": {
"title": "Sélectionner le visage de destination"
},
"title": "Fusionner des groupes de visages"
} }
}, },
"table": { "table": {
@ -95,6 +102,9 @@
}, },
"sharing": { "sharing": {
"table_header": "Partages publics" "table_header": "Partages publics"
},
"media": {
"album": ""
} }
}, },
"title": { "title": {

View File

@ -63,8 +63,8 @@
"people_page": { "people_page": {
"action_label": { "action_label": {
"change_label": "", "change_label": "",
"detach_face": "", "detach_images": "",
"merge_face": "", "merge_people": "",
"move_faces": "" "move_faces": ""
}, },
"face_group": { "face_group": {
@ -263,7 +263,7 @@
"title": "" "title": ""
}, },
"media": { "media": {
"album": "", "album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "Programma sport", "action_program": "Programma sport",
@ -305,6 +305,11 @@
} }
}, },
"people": { "people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": "" "title": ""
}, },
"sharing": { "sharing": {

View File

@ -49,6 +49,15 @@
}, },
"tableselect_image_faces": { "tableselect_image_faces": {
"search_images_placeholder": null "search_images_placeholder": null
},
"modal": {
"merge_people_groups": {
"description": "Tutte le immagini di questo volto saranno unite alle immagini del volto selezionato",
"destination_table": {
"title": "Seleziona il volto di destinazione"
},
"title": "Unisci immagini volto"
}
} }
}, },
"settings": { "settings": {
@ -82,6 +91,9 @@
"mega_byte_plural": null, "mega_byte_plural": null,
"tera_byte_plural": null "tera_byte_plural": null
} }
},
"media": {
"album": ""
} }
}, },
"album_filter": { "album_filter": {

View File

@ -63,8 +63,8 @@
"people_page": { "people_page": {
"action_label": { "action_label": {
"change_label": "", "change_label": "",
"detach_face": "", "detach_images": "",
"merge_face": "", "merge_people": "",
"move_faces": "" "move_faces": ""
}, },
"face_group": { "face_group": {
@ -268,7 +268,7 @@
"title": "" "title": ""
}, },
"media": { "media": {
"album": "", "album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "Program działania", "action_program": "Program działania",
@ -310,6 +310,11 @@
} }
}, },
"people": { "people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": "" "title": ""
}, },
"sharing": { "sharing": {

View File

@ -61,6 +61,13 @@
"title": null "title": null
}, },
"title": null "title": null
},
"merge_people_groups": {
"description": "",
"destination_table": {
"title": ""
},
"title": ""
} }
}, },
"table": { "table": {
@ -137,6 +144,9 @@
"table_header": "Publiczne udostępnienia", "table_header": "Publiczne udostępnienia",
"delete": null, "delete": null,
"more": null "more": null
},
"media": {
"album": ""
} }
}, },
"title": { "title": {

View File

@ -61,17 +61,17 @@
"description": "Galeria de fotos simples e fácil de usar para servidores pessoais" "description": "Galeria de fotos simples e fácil de usar para servidores pessoais"
}, },
"people_page": { "people_page": {
"action_label": {
"change_label": "",
"detach_images": "",
"merge_people": "",
"move_faces": ""
},
"face_group": { "face_group": {
"label_placeholder": "Etiqueta", "label_placeholder": "Etiqueta",
"unlabeled": "Sem etiqueta", "unlabeled": "Sem etiqueta",
"unlabeled_person": "Pessoa sem etiqueta" "unlabeled_person": "Pessoa sem etiqueta"
}, },
"action_label": {
"change_label": null,
"merge_face": null,
"detach_face": null,
"move_faces": null
},
"modal": { "modal": {
"action": { "action": {
"merge": "Juntar" "merge": "Juntar"
@ -215,6 +215,27 @@
}, },
"sidebar": { "sidebar": {
"album": { "album": {
"album_cover": "",
"download": {
"high-resolutions": {
"description": "",
"title": ""
},
"originals": {
"description": "",
"title": ""
},
"thumbnails": {
"description": "",
"title": ""
},
"web-videos": {
"description": "",
"title": ""
}
},
"reset_cover": "",
"set_cover": "",
"title_placeholder": "Título do Álbum" "title_placeholder": "Título do Álbum"
}, },
"download": { "download": {
@ -238,7 +259,11 @@
}, },
"title": "Descarregar" "title": "Descarregar"
}, },
"location": {
"title": ""
},
"media": { "media": {
"album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "Programa de ação", "action_program": "Programa de ação",
@ -267,6 +292,7 @@
"name": { "name": {
"aperture": "Abertura", "aperture": "Abertura",
"camera": "Câmera", "camera": "Câmera",
"coordinates": "",
"date_shot": "Data da foto", "date_shot": "Data da foto",
"exposure": "Exposição", "exposure": "Exposição",
"exposure_program": "Programa", "exposure_program": "Programa",
@ -278,6 +304,14 @@
} }
} }
}, },
"people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": ""
},
"sharing": { "sharing": {
"add_share": "Adicionar partilha", "add_share": "Adicionar partilha",
"copy_link": "Copiar link", "copy_link": "Copiar link",
@ -295,6 +329,13 @@
"places": "Locais", "places": "Locais",
"settings": "Configurações" "settings": "Configurações"
}, },
"timeline_filter": {
"date": {
"dropdown_all": "",
"dropdown_year": "",
"label": ""
}
},
"title": { "title": {
"loading_album": "Carregar Álbum", "loading_album": "Carregar Álbum",
"login": "Login", "login": "Login",

View File

@ -0,0 +1,19 @@
{
"people_page": {
"action_label": {
"change_label": null,
"merge_people": null,
"detach_images": null,
"move_faces": null
},
"modal": {
"merge_people_groups": {
"description": "Todas as imagens neste grupo de caras serão juntas no grupo selecionado.",
"destination_table": {
"title": "Selecione a cara de destino"
},
"title": "Juntar grupos de cara"
}
}
}
}

View File

@ -63,8 +63,8 @@
"people_page": { "people_page": {
"action_label": { "action_label": {
"change_label": "", "change_label": "",
"detach_face": "", "detach_images": "",
"merge_face": "", "merge_people": "",
"move_faces": "" "move_faces": ""
}, },
"face_group": { "face_group": {
@ -268,7 +268,7 @@
"title": "" "title": ""
}, },
"media": { "media": {
"album": "", "album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "Действие программа", "action_program": "Действие программа",
@ -310,6 +310,11 @@
} }
}, },
"people": { "people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": "" "title": ""
}, },
"sharing": { "sharing": {

View File

@ -49,6 +49,15 @@
}, },
"tableselect_image_faces": { "tableselect_image_faces": {
"search_images_placeholder": null "search_images_placeholder": null
},
"modal": {
"merge_people_groups": {
"description": "Все фотографии в этой группе лиц будут обьеденены с выбранной группой.",
"destination_table": {
"title": "Выберете конечное лицо"
},
"title": "Обьединить группы лиц"
}
} }
}, },
"settings": { "settings": {
@ -99,6 +108,9 @@
"table_header": "Общий доступ", "table_header": "Общий доступ",
"delete": null, "delete": null,
"more": null "more": null
},
"media": {
"album": ""
} }
}, },
"album_filter": { "album_filter": {

View File

@ -63,8 +63,8 @@
"people_page": { "people_page": {
"action_label": { "action_label": {
"change_label": "", "change_label": "",
"detach_face": "", "detach_images": "",
"merge_face": "", "merge_people": "",
"move_faces": "" "move_faces": ""
}, },
"face_group": { "face_group": {
@ -263,7 +263,7 @@
"title": "" "title": ""
}, },
"media": { "media": {
"album": "", "album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "Actionprogram", "action_program": "Actionprogram",
@ -305,6 +305,11 @@
} }
}, },
"people": { "people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": "" "title": ""
}, },
"sharing": { "sharing": {

View File

@ -61,6 +61,13 @@
"title": null "title": null
}, },
"title": null "title": null
},
"merge_people_groups": {
"description": "",
"destination_table": {
"title": ""
},
"title": ""
} }
}, },
"table": { "table": {
@ -123,6 +130,9 @@
"mega_byte_plural": null, "mega_byte_plural": null,
"tera_byte_plural": null "tera_byte_plural": null
} }
},
"media": {
"album": ""
} }
}, },
"title": { "title": {

View File

@ -61,17 +61,17 @@
"description": "简单及易用的照片库给个人服务器" "description": "简单及易用的照片库给个人服务器"
}, },
"people_page": { "people_page": {
"action_label": {
"change_label": "",
"detach_images": "",
"merge_people": "",
"move_faces": ""
},
"face_group": { "face_group": {
"label_placeholder": "名称", "label_placeholder": "名称",
"unlabeled": "未命名", "unlabeled": "未命名",
"unlabeled_person": "未命名人物" "unlabeled_person": "未命名人物"
}, },
"action_label": {
"change_label": null,
"merge_face": null,
"detach_face": null,
"move_faces": null
},
"modal": { "modal": {
"action": { "action": {
"merge": "合并" "merge": "合并"
@ -215,30 +215,36 @@
}, },
"sidebar": { "sidebar": {
"album": { "album": {
"album_cover": "",
"download": {
"high-resolutions": {
"description": "",
"title": ""
},
"originals": {
"description": "",
"title": ""
},
"thumbnails": {
"description": "",
"title": ""
},
"web-videos": {
"description": "",
"title": ""
}
},
"reset_cover": "",
"set_cover": "",
"title_placeholder": "相册名称" "title_placeholder": "相册名称"
}, },
"download": { "download": {
"filesize": { "filesize": {
"byte": null, "byte": "",
"giga_byte": null, "giga_byte": "",
"kilo_byte": null, "kilo_byte": "",
"mega_byte": null, "mega_byte": "",
"tera_byte": null, "tera_byte": ""
"byte_0": null,
"byte_1": null,
"byte_2": null,
"giga_byte_0": null,
"giga_byte_1": null,
"giga_byte_2": null,
"kilo_byte_0": null,
"kilo_byte_1": null,
"kilo_byte_2": null,
"mega_byte_0": null,
"mega_byte_1": null,
"mega_byte_2": null,
"tera_byte_0": null,
"tera_byte_1": null,
"tera_byte_2": null
}, },
"table_columns": { "table_columns": {
"dimensions": "尺寸", "dimensions": "尺寸",
@ -248,7 +254,11 @@
}, },
"title": "下载" "title": "下载"
}, },
"location": {
"title": ""
},
"media": { "media": {
"album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "动态模式", "action_program": "动态模式",
@ -264,19 +274,20 @@
}, },
"flash": { "flash": {
"auto": "自动", "auto": "自动",
"did_not_fire": null, "did_not_fire": "",
"fired": null, "fired": "",
"no_flash": null, "no_flash": "",
"no_flash_function": null, "no_flash_function": "",
"off": "关闭", "off": "关闭",
"on": "使用", "on": "使用",
"red_eye_reduction": "减轻红眼", "red_eye_reduction": "减轻红眼",
"return_detected": null, "return_detected": "",
"return_not_detected": null "return_not_detected": ""
}, },
"name": { "name": {
"aperture": "光圈", "aperture": "光圈",
"camera": "相机", "camera": "相机",
"coordinates": "",
"date_shot": "拍摄日期", "date_shot": "拍摄日期",
"exposure": "曝光", "exposure": "曝光",
"exposure_program": "模式", "exposure_program": "模式",
@ -288,6 +299,14 @@
} }
} }
}, },
"people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": ""
},
"sharing": { "sharing": {
"add_share": "新增分享", "add_share": "新增分享",
"copy_link": "复制链接", "copy_link": "复制链接",
@ -305,6 +324,13 @@
"places": "地点", "places": "地点",
"settings": "设置" "settings": "设置"
}, },
"timeline_filter": {
"date": {
"dropdown_all": "",
"dropdown_year": "",
"label": ""
}
},
"title": { "title": {
"loading_album": "载入相册", "loading_album": "载入相册",
"login": "登入", "login": "登入",

View File

@ -0,0 +1,42 @@
{
"people_page": {
"action_label": {
"change_label": null,
"merge_people": null,
"detach_images": null,
"move_faces": null
},
"modal": {
"merge_people_groups": {
"description": "所有在此的脸孔群组将会合并到已选择的脸孔群组",
"destination_table": {
"title": "选择目标脸孔群组"
},
"title": "合并脸孔群组"
}
}
},
"sidebar": {
"download": {
"filesize": {
"byte": null,
"giga_byte": null,
"kilo_byte": null,
"mega_byte": null,
"tera_byte": null
}
},
"media": {
"exif": {
"flash": {
"did_not_fire": null,
"fired": null,
"no_flash": null,
"no_flash_function": null,
"return_detected": null,
"return_not_detected": null
}
}
}
}
}

View File

@ -61,17 +61,17 @@
"description": "簡單及易用的照片庫給個人伺服器" "description": "簡單及易用的照片庫給個人伺服器"
}, },
"people_page": { "people_page": {
"action_label": {
"change_label": "",
"detach_images": "",
"merge_people": "",
"move_faces": ""
},
"face_group": { "face_group": {
"label_placeholder": "名稱", "label_placeholder": "名稱",
"unlabeled": "未命名", "unlabeled": "未命名",
"unlabeled_person": "未命名人物" "unlabeled_person": "未命名人物"
}, },
"action_label": {
"change_label": null,
"merge_face": null,
"detach_face": null,
"move_faces": null
},
"modal": { "modal": {
"action": { "action": {
"merge": "合併" "merge": "合併"
@ -215,30 +215,36 @@
}, },
"sidebar": { "sidebar": {
"album": { "album": {
"album_cover": "",
"download": {
"high-resolutions": {
"description": "",
"title": ""
},
"originals": {
"description": "",
"title": ""
},
"thumbnails": {
"description": "",
"title": ""
},
"web-videos": {
"description": "",
"title": ""
}
},
"reset_cover": "",
"set_cover": "",
"title_placeholder": "相簿名稱" "title_placeholder": "相簿名稱"
}, },
"download": { "download": {
"filesize": { "filesize": {
"byte": null, "byte": "",
"giga_byte": null, "giga_byte": "",
"kilo_byte": null, "kilo_byte": "",
"mega_byte": null, "mega_byte": "",
"tera_byte": null, "tera_byte": ""
"byte_0": null,
"byte_1": null,
"byte_2": null,
"giga_byte_0": null,
"giga_byte_1": null,
"giga_byte_2": null,
"kilo_byte_0": null,
"kilo_byte_1": null,
"kilo_byte_2": null,
"mega_byte_0": null,
"mega_byte_1": null,
"mega_byte_2": null,
"tera_byte_0": null,
"tera_byte_1": null,
"tera_byte_2": null
}, },
"table_columns": { "table_columns": {
"dimensions": "尺寸", "dimensions": "尺寸",
@ -248,7 +254,11 @@
}, },
"title": "下載" "title": "下載"
}, },
"location": {
"title": ""
},
"media": { "media": {
"album_path": "",
"exif": { "exif": {
"exposure_program": { "exposure_program": {
"action_program": "動態模式", "action_program": "動態模式",
@ -264,19 +274,20 @@
}, },
"flash": { "flash": {
"auto": "自動", "auto": "自動",
"did_not_fire": null, "did_not_fire": "",
"fired": null, "fired": "",
"no_flash": null, "no_flash": "",
"no_flash_function": null, "no_flash_function": "",
"off": "關閉", "off": "關閉",
"on": "使用", "on": "使用",
"red_eye_reduction": "減輕紅眼", "red_eye_reduction": "減輕紅眼",
"return_detected": null, "return_detected": "",
"return_not_detected": null "return_not_detected": ""
}, },
"name": { "name": {
"aperture": "光圈", "aperture": "光圈",
"camera": "相機", "camera": "相機",
"coordinates": "",
"date_shot": "拍攝日期", "date_shot": "拍攝日期",
"exposure": "曝光", "exposure": "曝光",
"exposure_program": "模式", "exposure_program": "模式",
@ -288,6 +299,14 @@
} }
} }
}, },
"people": {
"action_label": {
"detach_image": "",
"merge_face": "",
"move_face": ""
},
"title": ""
},
"sharing": { "sharing": {
"add_share": "新增分享", "add_share": "新增分享",
"copy_link": "複製連結", "copy_link": "複製連結",
@ -305,6 +324,13 @@
"places": "地點", "places": "地點",
"settings": "設定" "settings": "設定"
}, },
"timeline_filter": {
"date": {
"dropdown_all": "",
"dropdown_year": "",
"label": ""
}
},
"title": { "title": {
"loading_album": "載入相簿", "loading_album": "載入相簿",
"login": "登入", "login": "登入",

View File

@ -0,0 +1,42 @@
{
"people_page": {
"action_label": {
"change_label": null,
"merge_people": null,
"detach_images": null,
"move_faces": null
},
"modal": {
"merge_people_groups": {
"description": "所有在此的臉孔群組將會合併到已選擇的臉孔群組",
"destination_table": {
"title": "選擇目標臉孔群組"
},
"title": "合併臉孔群組"
}
}
},
"sidebar": {
"download": {
"filesize": {
"byte": null,
"giga_byte": null,
"kilo_byte": null,
"mega_byte": null,
"tera_byte": null
}
},
"media": {
"exif": {
"flash": {
"did_not_fire": null,
"fired": null,
"no_flash": null,
"no_flash_function": null,
"return_detected": null,
"return_not_detected": null
}
}
}
}
}