Merge branch 'develop' of github.com:photoprism/photoprism into develop
This commit is contained in:
commit
bba1e81308
|
@ -20,7 +20,7 @@ The following non-exhaustive list provides specific guidelines and examples:
|
|||
|
||||
(a) Be respectful, be responsible, be kind, avoid asking for [deadlines](https://docs.photoprism.app/developer-guide/code-quality/#go-slow-before-you-go-fast).
|
||||
|
||||
(b) Do not feel entitled to free software, support, or advice if you are **not** a [contributor](https://docs.photoprism.app/developer-guide/), [sponsor](https://docs.photoprism.app/funding/), or paying customer.
|
||||
(b) Do not feel entitled to free software, support, or advice if you are **not** a [contributor](https://docs.photoprism.app/developer-guide/), [sponsor](https://photoprism.app/membership), or paying customer.
|
||||
|
||||
(c) [Read the docs](https://docs.photoprism.app) and [determine the cause of your problem](https://docs.photoprism.app/getting-started/troubleshooting/) before opening invalid bug reports, starting a public "shitstorm" or insulting other community members in our chat rooms. Aside from being annoying for everyone, it also keeps our team from working on features and improvements that users like you are waiting for.
|
||||
|
||||
|
|
31
README.md
31
README.md
|
@ -19,7 +19,7 @@ To get a first impression, you are welcome to play with our [public demo](https:
|
|||
|
||||
## Feature Overview ##
|
||||
|
||||
**Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible.** PhotoPrism was designed from the ground up to run wherever you need it, with no compromise on freedom, privacy, or functionality:
|
||||
**Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible.** PhotoPrism was designed from the ground up to run wherever you need it, without compromising freedom, privacy, or functionality:
|
||||
|
||||
* Browse [all your photos](https://docs.photoprism.app/user-guide/organize/browse/) and [videos](https://try.photoprism.app/videos) without worrying about [RAW conversion, duplicates or video formats](https://docs.photoprism.app/user-guide/settings/library/)
|
||||
* Easily find specific pictures using [powerful search filters](https://try.photoprism.app/browse?view=cards&q=flower%20color%3Ared)
|
||||
|
@ -54,22 +54,23 @@ after going through a short list of [requirements](https://docs.photoprism.app/g
|
|||
Existing users are advised to update their `docker-compose.yml` config based on our examples
|
||||
available at [dl.photoprism.app/docker](https://dl.photoprism.app/docker/).
|
||||
|
||||
## Support Our Mission ##
|
||||
## Support Our Mission 💎 ##
|
||||
|
||||
Back us on [Patreon](https://link.photoprism.app/patreon) or [GitHub Sponsors](https://link.photoprism.app/sponsor), help us fulfill our mission and enjoy our [member benefits](https://photoprism.app/membership)! 💎
|
||||
**We encourage all of our users to [become a sponsor](https://photoprism.app/membership), as this allows us to make more features available to the public and remain independent.**
|
||||
|
||||
- Your continued support helps us provide regular updates and remain independent, so we can fulfill our mission and protect your privacy
|
||||
- Sustained funding is also key to releasing new features requested by you and other community members
|
||||
- Being **100% self-funded and independent**, we can personally promise you that we will never sell your data and that we will always be transparent about our software and services
|
||||
|
||||
We currently have the following sponsorship options:
|
||||
Sponsors enjoy additional features, including access to [interactive world maps](https://demo.photoprism.app/places), and can join our private chat room to connect with [our team](https://photoprism.app/team) and other sponsors. We currently have the following sponsorship options:
|
||||
|
||||
- [GitHub Sponsors](https://link.photoprism.app/sponsor) is priced in USD and also offers [one-time donations](https://link.photoprism.app/donate)
|
||||
- [Patreon](https://link.photoprism.app/patreon) is priced in Euro and also offers yearly payments
|
||||
- Stripe will be available in 2022, so you can sign up directly in the app without having a Patreon or GitHub account
|
||||
- You are welcome to [contact us](https://photoprism.app/contact) for [crypto donations](https://photoprism.app/crypto-donations), bank account details, and business partnerships
|
||||
- Stripe will be available in 2022, so you can sign up directly in the app
|
||||
|
||||
Also, please [leave a star](https://github.com/photoprism/photoprism/stargazers) on GitHub if you like this project.
|
||||
You are welcome to [contact us](https://photoprism.app/contact) for [crypto donations](https://photoprism.app/crypto-donations), bank account details, and business partnerships. Why your support matters:
|
||||
|
||||
- Your continued support helps us provide regular updates and remain independent, so we can fulfill our mission and protect your privacy
|
||||
- Sustained funding is key to releasing new features requested by you and other community members in a timely manner
|
||||
- Being **100% self-funded and independent**, we can personally promise you that we will never sell your data and that we will always be transparent about our software and services
|
||||
|
||||
Visit [photoprism.app/membership](https://photoprism.app/membership) to learn more. Also, please [leave a star](https://github.com/photoprism/photoprism/stargazers) on GitHub if you like this project.
|
||||
It provides additional motivation to keep going.
|
||||
|
||||
## Getting Support ##
|
||||
|
@ -80,13 +81,11 @@ Common problems can be quickly diagnosed and solved using the [Troubleshooting C
|
|||
|
||||
## Upcoming Features and Improvements ##
|
||||
|
||||
Our [Project Roadmap](https://link.photoprism.app/roadmap) shows what tasks are in progress, what needs testing, and which features are going to be implemented next. Please give ideas you like a thumbs-up 👍 , so that we know what is most popular.
|
||||
Our [Project Roadmap](https://link.photoprism.app/roadmap) shows what tasks are in progress and what features will be implemented next. You are invited to give ideas you like a thumbs-up, so we know what's most popular.
|
||||
|
||||
We have a zero-bug policy and do our best to help users when they need support or have other questions. This comes at a price as we can't give exact deadlines for new features.
|
||||
Be aware that we have a zero-bug policy and do our best to help users when they need support or have other questions. This comes at a price though, as we can't give exact release dates for new features. Our team receives many more requests than can be implemented, so we want to emphasize that we are in no way obligated to implement the features, improvements, or other changes you request. We do, however, appreciate your feedback and carefully consider all requests.
|
||||
|
||||
Since our team receives many more requests than can be implemented, and for the avoidance of doubt, we also want to emphasize that we are in no way obligated to implement the features, improvements, or other changes you request. We do, however, appreciate your feedback and carefully consider all requests.
|
||||
|
||||
**Because sustained funding is key to releasing new features, we encourage all users to [sign up as a sponsor](https://link.photoprism.app/sponsor). Ultimately, that's what's best for the product and the community.**
|
||||
**Because sustained funding is key to releasing new features in a timely manner, we encourage you to support our mission by [signing up as a sponsor](https://link.photoprism.app/sponsor) or purchasing a commercial license. Ultimately, that's what's best for the product and the community.**
|
||||
|
||||
## GitHub Issues ⚠️ ##
|
||||
|
||||
|
|
15
SPONSORS.md
15
SPONSORS.md
|
@ -1,17 +1,14 @@
|
|||
# A Big Thank You to All Our Sponsors! 💎 #
|
||||
|
||||
PhotoPrism is 100% self-funded and independent. Your continued support helps us provide [regular updates](https://docs.photoprism.app/release-notes/)
|
||||
and services like [world maps](https://try.photoprism.app/places).
|
||||
We currently have the following sponsorship options:
|
||||
**PhotoPrism is 100% self-funded and independent.** Your [continued support](https://photoprism.app/membership) helps us provide [regular updates](https://docs.photoprism.app/release-notes/) and remain independent.
|
||||
|
||||
- [GitHub Sponsors](https://link.photoprism.app/sponsor) is priced in USD and also
|
||||
offers [one-time donations](https://link.photoprism.app/donate)
|
||||
Sponsors enjoy additional features, including access to [interactive world maps](https://try.photoprism.app/places), and can join our private chat room to connect with [our team](https://photoprism.app/team) and other sponsors. We currently have the following sponsorship options:
|
||||
|
||||
- [GitHub Sponsors](https://link.photoprism.app/sponsor) is priced in USD and also offers [one-time donations](https://link.photoprism.app/donate)
|
||||
- [Patreon](https://link.photoprism.app/patreon) is priced in Euro and also offers yearly payments
|
||||
- Stripe will be available in early 2022, so you can sign up directly in the app without having a Patreon or GitHub
|
||||
account
|
||||
- You are welcome to [contact us](https://photoprism.app/contact) for [crypto donations](https://photoprism.app/crypto-donations), bank account details, and business partnerships
|
||||
- Stripe will be available in 2022, so you can sign up directly in the app
|
||||
|
||||
Visit [docs.photoprism.app/funding](https://docs.photoprism.app/funding/) to learn more.
|
||||
You are welcome to [contact us](https://photoprism.app/contact) for [crypto donations](https://photoprism.app/crypto-donations), bank account details, and business partnerships. Visit [photoprism.app/membership](https://photoprism.app/membership) to learn more.
|
||||
|
||||
## Platinum Sponsors ##
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div id="photoprism" class="container{{if .config.SiteCaption}} theme-{{ .config.Settings.UI.Theme }}{{end}}">
|
||||
<div id="photoprism" class="splash-screen container{{if .config.SiteCaption}} theme-{{ .config.Settings.UI.Theme }}{{end}}">
|
||||
<noscript>
|
||||
<div id="noscript-info" class="splash-info">
|
||||
<a href="https://enable-javascript.com/" target="_blank">Need help enabling JavaScript?</a>
|
||||
<a href="https://enable-javascript.com/" target="_blank">Please enable JavaScript in your browser.</a>
|
||||
</div>
|
||||
</noscript>
|
||||
<div id="splash-info" class="has-js splash-info">
|
||||
|
@ -9,13 +9,13 @@
|
|||
{{if .config.ImprintUrl}}<a href="{{ .config.ImprintUrl }}" target="_blank" class="imprint">{{ .config.Imprint }}</a>
|
||||
{{else}}<span class="imprint">{{ .config.Imprint }}</span>{{end}}
|
||||
{{else}}
|
||||
<span class="quote-0">One picture is worth a thousand words...</span>
|
||||
<span class="quote-1">It's not the camera, but who's behind the camera...</span>
|
||||
<span class="quote-2">The pictures you want tomorrow, you have to take today...</span>
|
||||
<span class="quote-3">A camera captures light, our mind captures images...</span>
|
||||
<span class="quote-4">If you can shoot on the street you can shoot anything. – Mary Ellen Mark</span>
|
||||
<span class="quote-5">When asked what equipment you use, say it's your eyes...</span>
|
||||
<span class="quote-6">Photography is the only language that can be understood anywhere in the world. – Bruno Barbey</span>
|
||||
<span class="quote-0">One picture is worth a thousand words.</span>
|
||||
<span class="quote-1">It's not the camera, but who's behind the camera.</span>
|
||||
<span class="quote-2">The pictures you want tomorrow, you have to take today.</span>
|
||||
<span class="quote-3">A camera captures light, our mind captures images.</span>
|
||||
<span class="quote-4">If you can shoot on the street you can shoot anything.</span>
|
||||
<span class="quote-5">When asked what equipment you use, say it's your eyes.</span>
|
||||
<span class="quote-6">Photography is the only language that can be understood anywhere in the world.</span>
|
||||
{{end}}
|
||||
</div>
|
||||
<script>
|
||||
|
@ -23,7 +23,10 @@
|
|||
el.classList.add("day-" + new Date().getDay());
|
||||
el.style.setProperty("display", "block");
|
||||
</script>
|
||||
<div class="loading-logo elevation-3">
|
||||
<div class="loading-animation">
|
||||
<div class="loading-circle"></div>
|
||||
</div>
|
||||
<div class="loading-logo">
|
||||
{{if eq .config.AppIcon "crisp"}}
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 264 264"><defs><linearGradient id="a" x1="45.04" y1="231.72" x2="231.72" y2="45.04" gradientUnits="userSpaceOnUse" gradientTransform="translate(-6.38 -6.38)"><stop offset="0" stop-color="#fff"/><stop offset="0" stop-color="#9afbfe"/><stop offset="1" stop-color="#ffb3e0"/></linearGradient></defs><circle cx="132" cy="132" r="132" style="fill:url(#a)"/><path d="m223.19 175.51-4 24.19M40.91 176.5l14.81 14m95.76-137.65L55.62 190.31a.09.09 0 0 0 .07.15l163.41 9.37a.09.09 0 0 0 .09-.13L151.62 52.87a.1.1 0 0 0-.14-.02zm-19.74-13.29L40.8 176.31a.13.13 0 0 0 .11.19l182.18-.8a.12.12 0 0 0 .1-.19L131.95 39.56a.12.12 0 0 0-.21 0zm.11-.16 19.77 13.32" style="fill:none;stroke:#1d1d1b;stroke-width:5px;stroke-miterlimit:10"/></svg>
|
||||
{{else if eq .config.AppIcon "mint"}}
|
||||
|
@ -34,9 +37,6 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 264 264"><defs><linearGradient id="a" x1="45.04" y1="231.72" x2="231.72" y2="45.04" gradientUnits="userSpaceOnUse" gradientTransform="translate(-6.38 -6.38)"><stop offset="0" stop-color="#fff"/><stop offset="0" stop-color="#b8edff"/><stop offset="1" stop-color="#d4b8ff"/></linearGradient></defs><circle cx="132" cy="132" r="132" style="fill:url(#a)"/><path data-name="Logo Pfad" d="m223.19 175.51-4 24.19M40.91 176.5l14.81 14m95.76-137.65L55.62 190.31a.09.09 0 0 0 .07.15l163.41 9.37a.09.09 0 0 0 .09-.13L151.62 52.87a.1.1 0 0 0-.14-.02zm-19.74-13.29L40.8 176.31a.13.13 0 0 0 .11.19l182.18-.8a.12.12 0 0 0 .1-.19L131.95 39.56a.12.12 0 0 0-.21 0zm.11-.16 19.77 13.32" style="fill:none;stroke:#1d1d1b;stroke-miterlimit:10;stroke-width:6px;shape-rendering:geometricPrecision"/></svg>
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="loading-dots">
|
||||
<span class="dots-animation dot one">.</span><span class="dots-animation dot two">.</span><span class="dots-animation dot three">.</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="busy-overlay"></div>
|
||||
|
|
|
@ -60,4 +60,4 @@ applications like PhotoPrism. It also effectively helps avoid "works for me" mom
|
|||
An [unofficial port](https://docs.photoprism.app/getting-started/freebsd/) is available for FreeBSD / FreeNAS users.
|
||||
You are invited to contribute by [building and testing standalone packages](https://docs.photoprism.app/developer-guide/) for Linux distributions and other operating systems.
|
||||
|
||||
Updates are [released several times a month](https://docs.photoprism.app/release-notes/), so maintaining the long list of dependencies for additional environments would currently consume too many of [our resources](https://docs.photoprism.app/funding/).
|
||||
Updates are [released several times a month](https://docs.photoprism.app/release-notes/), so maintaining the long list of dependencies for additional environments would currently consume too many of [our resources](https://photoprism.app/membership).
|
||||
|
|
618
frontend/package-lock.json
generated
618
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -23,7 +23,7 @@
|
|||
</v-btn>
|
||||
</template>
|
||||
|
||||
<v-list class="nav-menu navigation dark elevation-2">
|
||||
<v-list dark class="nav-menu navigation elevation-2">
|
||||
<v-list-tile to="/browse" class="clickable nav-menu-browse">
|
||||
<v-list-tile-content>
|
||||
<v-list-tile-title>
|
||||
|
@ -100,8 +100,8 @@
|
|||
<img :src="appIcon" :alt="appName" :class="{'animate-hue': indexing}">
|
||||
</v-list-tile-avatar>
|
||||
<v-list-tile-content>
|
||||
<v-list-tile-title class="title tm">
|
||||
<strong>Photo</strong>Prism<span v-if="appName === 'PhotoPrism+'" class="plus">+</span><span v-else-if="appNameSuffix !== ''"> {{ appNameSuffix }}</span>
|
||||
<v-list-tile-title class="title">
|
||||
{{ appName }}
|
||||
</v-list-tile-title>
|
||||
</v-list-tile-content>
|
||||
<v-list-tile-action class="hidden-sm-and-down" :title="$gettext('Minimize')">
|
||||
|
@ -656,7 +656,7 @@ export default {
|
|||
return user.PrimaryEmail ? user.PrimaryEmail : this.$gettext("Account");
|
||||
},
|
||||
showNavMenu() {
|
||||
return (this.isDemo || this.session.auth || this.isTest);
|
||||
return (this.session.auth || this.isDemo || this.isTest);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
|
|
|
@ -119,33 +119,6 @@ footer {
|
|||
line-height: 1.8em;
|
||||
}
|
||||
|
||||
#photoprism .tm {
|
||||
letter-spacing: normal;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#photoprism .tm strong {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#photoprism .tm sup,
|
||||
#photoprism .tm span {
|
||||
letter-spacing: normal;
|
||||
}
|
||||
|
||||
#photoprism .tm sup {
|
||||
font-size: 9px;
|
||||
font-weight: 600;
|
||||
top: -9px;
|
||||
}
|
||||
|
||||
#photoprism .tm sup.plus {
|
||||
font-size: 17px;
|
||||
font-weight: 500;
|
||||
left: -1px;
|
||||
top: -8px;
|
||||
}
|
||||
|
||||
main {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
|
|
@ -8,7 +8,7 @@ nav .v-list__tile__title.title {
|
|||
|
||||
#p-navigation .nav-title {
|
||||
text-align: left;
|
||||
font-weight: bold;
|
||||
/* font-weight: bold; */
|
||||
font-size: 18px;
|
||||
-webkit-box-flex: 1!important;
|
||||
-ms-flex-positive: 1!important;
|
||||
|
@ -150,8 +150,21 @@ nav .v-list__tile__title.title {
|
|||
}
|
||||
|
||||
#photoprism .nav-menu {
|
||||
padding: 0;
|
||||
padding: 8px 0;
|
||||
background-color: #181818;
|
||||
border: 1px solid hsla(0,0%,9%,.8);
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
#photoprism .nav-menu a {
|
||||
color: white;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
#photoprism .nav-menu .v-list__tile .v-icon {
|
||||
font-size: 22px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
#p-navigation .nav-menu-trigger {
|
||||
|
@ -163,8 +176,8 @@ nav .v-list__tile__title.title {
|
|||
}
|
||||
|
||||
#photoprism .nav-menu .v-list__tile {
|
||||
padding: 0 24px 0 24px;
|
||||
height: 54px;
|
||||
padding: 0 16px 0 16px;
|
||||
height: 42px;
|
||||
}
|
||||
|
||||
#photoprism .nav-menu .v-list__tile .v-list__tile__title {
|
||||
|
@ -177,7 +190,7 @@ nav .v-list__tile__title.title {
|
|||
}
|
||||
|
||||
#photoprism .nav-menu .v-list__tile__content {
|
||||
min-width: 146px;
|
||||
min-width: 104px;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -195,4 +208,4 @@ nav .v-list__tile__title.title {
|
|||
#photoprism .sidenav-visible .nav-small .v-toolbar__content {
|
||||
opacity: 0.48;
|
||||
}
|
||||
*/
|
||||
*/
|
||||
|
|
|
@ -9,7 +9,10 @@
|
|||
right: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-image: linear-gradient(160deg, #ffffff 0%, #e2daf1 100%);
|
||||
}
|
||||
|
||||
#photoprism.container.splash-screen {
|
||||
background: #131313;
|
||||
}
|
||||
|
||||
#photoprism div.logo-large {
|
||||
|
@ -40,12 +43,19 @@
|
|||
display: block;
|
||||
}
|
||||
|
||||
#photoprism div.loading-animation,
|
||||
#photoprism div.loading-logo,
|
||||
#photoprism div.loading-logo svg {
|
||||
width: 35vh;
|
||||
height: 35vh;
|
||||
max-width: 65vw;
|
||||
max-height: 65vw;
|
||||
width: 33vh;
|
||||
height: 33vh;
|
||||
max-width: 60vw;
|
||||
max-height: 60vw;
|
||||
}
|
||||
|
||||
#photoprism div.loading-logo svg {
|
||||
-webkit-animation: hue 4s infinite linear;
|
||||
-moz-animation: hue 4s infinite linear;
|
||||
animation: hue 4s infinite linear;
|
||||
}
|
||||
|
||||
#photoprism .loading-dots {
|
||||
|
@ -77,8 +87,6 @@
|
|||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 264px;
|
||||
height: 264px;
|
||||
z-index: 2;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
@ -98,15 +106,15 @@
|
|||
right: 0;
|
||||
z-index: 0;
|
||||
overflow: hidden;
|
||||
border-top: 6px #d48af4 solid;
|
||||
border-right: 6px #a990ec solid;
|
||||
border-bottom: 6px #86c8ed solid;
|
||||
border-left: 6px #a3ddf4 solid;
|
||||
border-top: 5px #7e29ff solid;
|
||||
border-right: 5px #6d02ff solid;
|
||||
border-bottom: 5px #5812fa solid;
|
||||
border-left: 5px #7C4DFF solid;
|
||||
border-radius: 50%;
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center;
|
||||
-webkit-animation: circle-animation 1s infinite linear;
|
||||
animation: circle-animation 1s infinite linear;
|
||||
-webkit-animation: circle-animation 1.5s infinite linear;
|
||||
animation: circle-animation 1.5s infinite linear;
|
||||
}
|
||||
|
||||
#photoprism div.loading-animation .loading-overlay {
|
||||
|
@ -149,24 +157,16 @@
|
|||
#loading-info,
|
||||
#photoprism .splash-info {
|
||||
position: fixed;
|
||||
padding: 10px 10px;
|
||||
border-radius: 10px;
|
||||
min-width: 280px;
|
||||
width: auto;
|
||||
padding: 24px;
|
||||
height: auto;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
background-color: rgba(239, 239, 235, 0.56);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#photoprism .splash-info {
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
right: auto;
|
||||
width: auto;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#splash-info > span {
|
||||
|
@ -189,12 +189,7 @@
|
|||
|
||||
#splash-info {
|
||||
display: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#noscript-info {
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
#loading-info {
|
||||
|
@ -204,13 +199,31 @@
|
|||
|
||||
#loading-info span,
|
||||
#loading-info a,
|
||||
#photoprism .splash-info span,
|
||||
#photoprism .splash-info a {
|
||||
text-align: center;
|
||||
.splash-info span,
|
||||
.splash-info a {
|
||||
text-decoration: none;
|
||||
font-size: 15px;
|
||||
color: #101010;
|
||||
width: auto;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#splash-info {
|
||||
text-align: center;
|
||||
color: #7c7c78;
|
||||
}
|
||||
|
||||
#noscript-info {
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#noscript-info a {
|
||||
color: #bbbbb5;
|
||||
}
|
||||
|
||||
#noscript-info.splash-info,
|
||||
#noscript-info.splash-info a {
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
|
|
@ -70,7 +70,7 @@ export default {
|
|||
this.$emit('close');
|
||||
},
|
||||
signUp() {
|
||||
window.open("https://link.photoprism.app/patreon", "_blank");
|
||||
window.open("https://photoprism.app/membership", "_blank");
|
||||
this.$emit('close');
|
||||
},
|
||||
},
|
||||
|
|
|
@ -1719,7 +1719,7 @@ msgid "Other"
|
|||
msgstr ""
|
||||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid "Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgid "Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:286
|
||||
|
|
|
@ -1774,7 +1774,7 @@ msgid "Other"
|
|||
msgstr ""
|
||||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid "Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgid "Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:298
|
||||
|
|
|
@ -1597,7 +1597,7 @@ msgstr "هی تر"
|
|||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid ""
|
||||
"Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
"Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
"دنیا بینیمان ئەوەیە کە زۆرترین چارەسەری بەکارهێنەر بۆ گەڕان و ڕێکخستن و "
|
||||
"هاوبەشکردنی کۆکراوەی فۆتۆ دابین بکەین."
|
||||
|
|
|
@ -1735,7 +1735,7 @@ msgid "Other"
|
|||
msgstr ""
|
||||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid "Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgid "Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:286
|
||||
|
|
|
@ -1785,7 +1785,7 @@ msgid "Other"
|
|||
msgstr ""
|
||||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid "Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgid "Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:307
|
||||
|
|
|
@ -1763,7 +1763,7 @@ msgid "Other"
|
|||
msgstr "Altele"
|
||||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid "Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgid "Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
"Viziunea noastră este să oferim cea mai prietenoasă soluție pentru "
|
||||
"utilizator și confidențialitate pentru a vă păstra fotografiile organizate "
|
||||
|
|
|
@ -1587,7 +1587,7 @@ msgstr "Ostatné"
|
|||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid ""
|
||||
"Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
"Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
"Našou víziou je poskytnúť používateľsky najprívetivejšie riešenie na "
|
||||
"prehliadanie, organizovanie a zdieľanie vašej zbierky fotografií."
|
||||
|
|
|
@ -1748,7 +1748,7 @@ msgid "Other"
|
|||
msgstr ""
|
||||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid "Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgid "Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:286
|
||||
|
|
|
@ -1,14 +1,9 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: ci@photoprism.app\n"
|
||||
"PO-Revision-Date: 2022-05-27 12:17+0000\n"
|
||||
"Last-Translator: ppnplus <djbestppntube@icloud.com>\n"
|
||||
"Language: th\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.12.2\n"
|
||||
"Generated-By: easygettext\n"
|
||||
|
||||
#: src/dialog/photo/labels.vue:164
|
||||
|
@ -18,25 +13,25 @@ msgstr ""
|
|||
#: src/pages/albums.vue:386
|
||||
#: src/share/albums.vue:305
|
||||
msgid "%{n} albums found"
|
||||
msgstr "พบ %{n} อัลบั้ม"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/share/upload.vue:76
|
||||
msgid "%{n} files uploaded"
|
||||
msgstr "อัปโหลดแล้ว %{n} ไฟล์"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/files.vue:303
|
||||
msgid "%{n} folders found"
|
||||
msgstr "พบ %{n} โฟลเดอร์"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/labels.vue:381
|
||||
msgid "%{n} labels found"
|
||||
msgstr "พบ %{n} ป้ายกำกับ"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/people/faces.vue:286
|
||||
#: src/pages/people/faces.vue:372
|
||||
#: src/pages/people/subjects.vue:470
|
||||
msgid "%{n} people found"
|
||||
msgstr "พบ %{n} บุคคล"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/album/photos.vue:194
|
||||
#: src/pages/album/photos.vue:346
|
||||
|
@ -45,23 +40,23 @@ msgstr "พบ %{n} บุคคล"
|
|||
#: src/share/photos.vue:209
|
||||
#: src/share/photos.vue:354
|
||||
msgid "%{n} pictures found"
|
||||
msgstr "พบ %{n} รูปภาพ"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:392
|
||||
msgid "1 hour"
|
||||
msgstr "1 ชั่วโมง"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:394
|
||||
msgid "12 hours"
|
||||
msgstr "12 ชั่วโมง"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:393
|
||||
msgid "4 hours"
|
||||
msgstr "4 ชั่วโมง"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/share.vue:73
|
||||
msgid "A click will copy it to your clipboard."
|
||||
msgstr "การคลิกครั้งเดียวจะเป็นการคัดลอกไปยังคลิปบอร์ด"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:457
|
||||
#: src/component/navigation.vue:27
|
||||
|
@ -69,7 +64,7 @@ msgstr "การคลิกครั้งเดียวจะเป็นก
|
|||
#: src/pages/about/about.vue:179
|
||||
#: src/pages/help.vue:45
|
||||
msgid "About"
|
||||
msgstr "เกี่ยวกับ"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:225
|
||||
msgid "Abyss"
|
||||
|
@ -80,25 +75,25 @@ msgstr ""
|
|||
#: src/model/account.js:98
|
||||
#: src/pages/settings.vue:74
|
||||
msgid "Account"
|
||||
msgstr "บัญชี"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/info.vue:159
|
||||
msgid "Accuracy"
|
||||
msgstr "ความแม่นยำ"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/labels.vue:23
|
||||
msgid "Action"
|
||||
msgstr "การกระทำ"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/files.vue:28
|
||||
#: src/dialog/photo/files.vue:25
|
||||
msgid "Actions"
|
||||
msgstr "การกระทำ"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/albums.vue:122
|
||||
#: src/pages/albums.vue:178
|
||||
msgid "Add Album"
|
||||
msgstr "เพิ่มอัลบั้ม"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/settings/general.vue:141
|
||||
msgid "Add files to your library via Web Upload."
|
||||
|
@ -106,7 +101,7 @@ msgstr ""
|
|||
|
||||
#: src/dialog/share.vue:91
|
||||
msgid "Add Link"
|
||||
msgstr "เพิ่มลิงก์"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/albums.vue:96
|
||||
msgid "Add pictures from search results by selecting them."
|
||||
|
@ -115,7 +110,7 @@ msgstr ""
|
|||
#: src/dialog/account/add.vue:6
|
||||
#: src/pages/settings/sync.vue:47
|
||||
msgid "Add Server"
|
||||
msgstr "เพิ่มเซิร์ฟเวอร์"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/album/clipboard.vue:136
|
||||
#: src/component/file/clipboard.vue:89
|
||||
|
@ -124,36 +119,36 @@ msgstr "เพิ่มเซิร์ฟเวอร์"
|
|||
#: src/component/subject/clipboard.vue:89
|
||||
#: src/dialog/photo/album.vue:20
|
||||
msgid "Add to album"
|
||||
msgstr "เพิ่มไปยังอัลบั้ม"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/files.vue:189
|
||||
#: src/dialog/photo/files.vue:186
|
||||
msgid "Added"
|
||||
msgstr "เพิ่มแล้ว"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/settings.vue:52
|
||||
msgid "Advanced"
|
||||
msgstr "ขั้นสูง"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:402
|
||||
msgid "After 1 day"
|
||||
msgstr "หลังจาก 1 วัน"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:403
|
||||
msgid "After 3 days"
|
||||
msgstr "หลังจาก 3 วัน"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:404
|
||||
msgid "After 7 days"
|
||||
msgstr "หลังจาก 7 วัน"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:406
|
||||
msgid "After one month"
|
||||
msgstr "หลังจากหนึ่งเดือน"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:408
|
||||
msgid "After one year"
|
||||
msgstr "หลังจากหนึ่งปี"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/albums.vue:40
|
||||
#: src/pages/albums.vue:1
|
||||
|
@ -162,20 +157,20 @@ msgstr ""
|
|||
|
||||
#: src/options/options.js:407
|
||||
msgid "After two months"
|
||||
msgstr "หลังจากสองเดือน"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:405
|
||||
msgid "After two weeks"
|
||||
msgstr "หลังจากสองสัปดาห์"
|
||||
msgstr ""
|
||||
|
||||
#: src/model/album.js:229
|
||||
msgid "Album"
|
||||
msgstr "อัลบั้ม"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/album.vue:71
|
||||
#: src/dialog/photo/album.vue:79
|
||||
msgid "Album Name"
|
||||
msgstr "ชื่ออัลบั้ม"
|
||||
msgstr ""
|
||||
|
||||
#: src/app/routes.js:128
|
||||
#: src/app/routes.js:135
|
||||
|
@ -185,11 +180,11 @@ msgstr "ชื่ออัลบั้ม"
|
|||
#: src/component/navigation.vue:812
|
||||
#: src/share/albums.vue:4
|
||||
msgid "Albums"
|
||||
msgstr "อัลบั้ม"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/album/clipboard.vue:77
|
||||
msgid "Albums deleted"
|
||||
msgstr "ลบอัลบั้มแล้ว"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/albums.vue:263
|
||||
#: src/share/albums.vue:220
|
||||
|
@ -207,7 +202,7 @@ msgstr ""
|
|||
#: src/component/album/toolbar.vue:36
|
||||
#: src/component/photo/toolbar.vue:36
|
||||
msgid "All Cameras"
|
||||
msgstr "กล้องทั้งหมด"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:39
|
||||
#: src/pages/albums.vue:29
|
||||
|
@ -215,40 +210,40 @@ msgstr "กล้องทั้งหมด"
|
|||
#: src/share/albums.vue:27
|
||||
#: src/share/albums.vue:410
|
||||
msgid "All Categories"
|
||||
msgstr "หมวดหมู่ทั้งหมด"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:38
|
||||
msgid "All Colors"
|
||||
msgstr "สีทั้งหมด"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/album/toolbar.vue:40
|
||||
#: src/component/photo/toolbar.vue:35
|
||||
msgid "All Countries"
|
||||
msgstr "ประเทศทั้งหมด"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/about/feedback.vue:31
|
||||
msgid "All fields are required"
|
||||
msgstr "ต้องกรอกให้ครบทุกช่อง"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/import.vue:12
|
||||
msgid "All files from import folder"
|
||||
msgstr "ทุกไฟล์จากโฟลเดอร์นำเข้า"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:37
|
||||
msgid "All Lenses"
|
||||
msgstr "เลนส์ทั้งหมด"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:40
|
||||
msgid "All Months"
|
||||
msgstr "เดือนทั้งหมด"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/index.vue:12
|
||||
msgid "All originals"
|
||||
msgstr "ต้นฉบับทั้งหมด"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:41
|
||||
msgid "All Years"
|
||||
msgstr "ปีทั้งหมด"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/about/about.vue:34
|
||||
msgid "Also, please leave a star on GitHub if you like this project. It provides additional motivation to keep going."
|
||||
|
@ -268,7 +263,7 @@ msgstr ""
|
|||
|
||||
#: src/common/api.js:100
|
||||
msgid "An error occurred - are you offline?"
|
||||
msgstr "เกิดข้อผิดพลาด คุณออฟไลน์อยู่หรือเปล่า?"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:149
|
||||
#: src/component/photo/cards.vue:228
|
||||
|
@ -282,29 +277,29 @@ msgstr "เกิดข้อผิดพลาด คุณออฟไลน
|
|||
#: src/share/photo/list.vue:176
|
||||
#: src/share/photo/mosaic.vue:182
|
||||
msgid "Animated"
|
||||
msgstr "เคลื่อนไหว"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/settings/general.vue:533
|
||||
msgid "Animation"
|
||||
msgstr "แอนิเมชัน"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/share.vue:74
|
||||
msgid "Any private photos and videos remain private and won't be shared."
|
||||
msgstr "รูปภาพและวิดีโอส่วนตัวทั้งหมดจะยังคงเป็นส่วนตัว และจะไม่แชร์กับผู้อื่น"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/account/edit.vue:477
|
||||
msgid "API Key"
|
||||
msgstr "กุญแจ API"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:117
|
||||
msgid "Apply"
|
||||
msgstr "ปรับใช้"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/cards.vue:458
|
||||
#: src/component/photo/clipboard.vue:100
|
||||
#: src/dialog/photo/details.vue:116
|
||||
msgid "Approve"
|
||||
msgstr "อนุมัติ"
|
||||
msgstr ""
|
||||
|
||||
#: src/app/routes.js:209
|
||||
#: src/component/navigation.vue:182
|
||||
|
@ -344,32 +339,30 @@ msgstr ""
|
|||
|
||||
#: src/dialog/confirm.vue:10
|
||||
msgid "Are you sure?"
|
||||
msgstr "คุณแน่ใจหรือไม่?"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/details.vue:497
|
||||
msgid "Artist"
|
||||
msgstr "ศิลปิน"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/files.vue:149
|
||||
#: src/dialog/photo/files.vue:146
|
||||
msgid "Aspect Ratio"
|
||||
msgstr "อัตราส่วน"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/settings/library.vue:114
|
||||
msgid "Automatically create JPEGs for other file types so that they can be displayed in a browser."
|
||||
msgstr ""
|
||||
"สร้างไฟล์ JPEG สำหรับไฟล์ประเภทอื่น ๆ "
|
||||
"โดยอัตโนมัติเพื่อให้สามารถแสดงผลในเบราว์เซอร์"
|
||||
|
||||
#: src/pages/settings/general.vue:361
|
||||
msgid "Automatically creates albums of special moments, trips, and places."
|
||||
msgstr "สร้างอัลบั้มของช่วงเวลาพิเศษ การเดินทาง และสถานที่ต่าง ๆ โดยอัตโนมัติ"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/sponsor.vue:7
|
||||
#: src/pages/about/about.vue:23
|
||||
#: src/pages/auth/login.vue:44
|
||||
msgid "Become a sponsor"
|
||||
msgstr "มาเป็นผู้สนับสนุน"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/about/about.vue:42
|
||||
msgid "Before submitting a support request, please use our Troubleshooting Checklists to determine the cause of your problem."
|
||||
|
@ -377,11 +370,11 @@ msgstr ""
|
|||
|
||||
#: src/pages/people/subjects.vue:433
|
||||
msgid "Bio"
|
||||
msgstr "ไปโอ"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:427
|
||||
msgid "Black"
|
||||
msgstr "สีดำ"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:440
|
||||
msgid "Blackman: Lanczos Modification, Less Ringing Artifacts"
|
||||
|
@ -389,11 +382,11 @@ msgstr ""
|
|||
|
||||
#: src/options/options.js:423
|
||||
msgid "Blue"
|
||||
msgstr "สีฟ้า"
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:424
|
||||
msgid "Brown"
|
||||
msgstr "สีน้ำตาล"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/settings/general.vue:383
|
||||
msgid "Browse and edit image classification labels."
|
||||
|
@ -416,7 +409,7 @@ msgstr ""
|
|||
#: src/component/navigation.vue:301
|
||||
#: src/component/navigation.vue:1174
|
||||
msgid "Calendar"
|
||||
msgstr "ปฏิทิน"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/cards.vue:557
|
||||
#: src/component/photo/list.vue:57
|
||||
|
@ -425,7 +418,7 @@ msgstr "ปฏิทิน"
|
|||
#: src/share/photo/cards.vue:388
|
||||
#: src/share/photo/list.vue:53
|
||||
msgid "Camera"
|
||||
msgstr "กล้อง"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/info.vue:79
|
||||
msgid "Camera Serial"
|
||||
|
@ -470,23 +463,23 @@ msgstr ""
|
|||
#: src/pages/library/import.vue:34
|
||||
#: src/pages/library/index.vue:27
|
||||
msgid "Cancel"
|
||||
msgstr "ยกเลิก"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/album/toolbar.vue:51
|
||||
#: src/component/photo/toolbar.vue:46
|
||||
msgid "Cards"
|
||||
msgstr "การ์ด"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:343
|
||||
#: src/dialog/album/edit.vue:162
|
||||
#: src/pages/about/feedback.vue:108
|
||||
#: src/pages/albums.vue:129
|
||||
msgid "Category"
|
||||
msgstr "หมวดหมู่"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/settings/account.vue:26
|
||||
msgid "Change"
|
||||
msgstr "เปลี่ยน"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/settings/general.vue:185
|
||||
msgid "Change photo titles, locations, and other metadata."
|
||||
|
@ -510,7 +503,7 @@ msgstr ""
|
|||
#: src/dialog/share.vue:87
|
||||
#: src/pages/library/errors.vue:60
|
||||
msgid "Close"
|
||||
msgstr "ปิด"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/files.vue:95
|
||||
#: src/dialog/photo/files.vue:92
|
||||
|
@ -519,16 +512,16 @@ msgstr ""
|
|||
|
||||
#: src/component/photo/toolbar.vue:320
|
||||
msgid "Color"
|
||||
msgstr "สี"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/files.vue:163
|
||||
#: src/dialog/photo/files.vue:160
|
||||
msgid "Color Profile"
|
||||
msgstr "โปรไฟล์สี"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/discover.vue:4
|
||||
msgid "Colors"
|
||||
msgstr "สี"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/index.vue:123
|
||||
msgid "Complete Rescan"
|
||||
|
@ -536,20 +529,20 @@ msgstr ""
|
|||
|
||||
#: src/dialog/photo/labels.vue:22
|
||||
msgid "Confidence"
|
||||
msgstr "ค่าความมั่นใจ"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/account/add.vue:18
|
||||
msgid "Connect"
|
||||
msgstr "เชื่อมต่อ"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/webdav.vue:4
|
||||
#: src/pages/settings/sync.vue:43
|
||||
msgid "Connect via WebDAV"
|
||||
msgstr "เชื่อมต่อผ่าน WebDAV"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/about/feedback.vue:7
|
||||
msgid "Contact Us"
|
||||
msgstr "ติดต่อเรา"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/albums.vue:93
|
||||
#: src/pages/labels.vue:74
|
||||
|
@ -565,11 +558,11 @@ msgstr ""
|
|||
|
||||
#: src/pages/settings/library.vue:113
|
||||
msgid "Convert to JPEG"
|
||||
msgstr "แปลงเป็น JPEG"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/index.vue:163
|
||||
msgid "Converting"
|
||||
msgstr "กำลังแปลง"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/share.vue:58
|
||||
#: src/dialog/webdav.vue:36
|
||||
|
@ -578,25 +571,25 @@ msgstr ""
|
|||
|
||||
#: src/dialog/photo/details.vue:520
|
||||
msgid "Copyright"
|
||||
msgstr "ลิขสิทธิ์"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/list.vue:38
|
||||
#: src/share/photo/list.vue:38
|
||||
msgid "Couldn't find anything."
|
||||
msgstr "ไม่พบอะไรเลย"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:184
|
||||
#: src/dialog/photo/details.vue:240
|
||||
msgid "Country"
|
||||
msgstr "ประเทศ"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/album.vue:21
|
||||
msgid "Create album"
|
||||
msgstr "สร้างอัลบั้ม"
|
||||
msgstr ""
|
||||
|
||||
#: src/dialog/photo/info.vue:167
|
||||
msgid "Created"
|
||||
msgstr "สร้างเมื่อ"
|
||||
msgstr ""
|
||||
|
||||
#: src/pages/library/index.vue:169
|
||||
msgid "Creating thumbnails for"
|
||||
|
@ -1783,7 +1776,7 @@ msgid "Other"
|
|||
msgstr ""
|
||||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid "Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgid "Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:315
|
||||
|
|
|
@ -1754,7 +1754,7 @@ msgid "Other"
|
|||
msgstr ""
|
||||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid "Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgid "Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:286
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -176,7 +176,7 @@ msgstr ""
|
|||
#: src/component/navigation.vue:195
|
||||
#: src/component/navigation.vue:205
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:812
|
||||
#: src/component/navigation.vue:802
|
||||
#: src/share/albums.vue:4
|
||||
msgid "Albums"
|
||||
msgstr ""
|
||||
|
@ -406,7 +406,7 @@ msgstr ""
|
|||
#: src/app/routes.js:141
|
||||
#: src/app/routes.js:148
|
||||
#: src/component/navigation.vue:301
|
||||
#: src/component/navigation.vue:1174
|
||||
#: src/component/navigation.vue:1164
|
||||
msgid "Calendar"
|
||||
msgstr ""
|
||||
|
||||
|
@ -469,7 +469,7 @@ msgstr ""
|
|||
msgid "Cards"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:343
|
||||
#: src/component/photo/toolbar.vue:344
|
||||
#: src/dialog/album/edit.vue:162
|
||||
#: src/pages/about/feedback.vue:108
|
||||
#: src/pages/albums.vue:129
|
||||
|
@ -509,7 +509,7 @@ msgstr ""
|
|||
msgid "Codec"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/photo/toolbar.vue:320
|
||||
#: src/component/photo/toolbar.vue:321
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
|
@ -645,7 +645,7 @@ msgstr ""
|
|||
#: src/dialog/photo/delete.vue:18
|
||||
#: src/dialog/photo/files.vue:41
|
||||
#: src/dialog/photo/files.vue:38
|
||||
#: src/dialog/share.vue:234
|
||||
#: src/dialog/share.vue:235
|
||||
#: src/pages/library/errors.vue:94
|
||||
#: src/pages/settings/general.vue:206
|
||||
msgid "Delete"
|
||||
|
@ -903,7 +903,7 @@ msgstr ""
|
|||
msgid "Exclude hidden"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:491
|
||||
#: src/component/navigation.vue:481
|
||||
msgid "Expand"
|
||||
msgstr ""
|
||||
|
||||
|
@ -963,7 +963,7 @@ msgstr ""
|
|||
|
||||
#: src/app/routes.js:174
|
||||
#: src/component/navigation.vue:275
|
||||
#: src/component/navigation.vue:1086
|
||||
#: src/component/navigation.vue:1076
|
||||
msgid "Favorites"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1027,7 +1027,7 @@ msgstr ""
|
|||
#: src/app/routes.js:154
|
||||
#: src/app/routes.js:161
|
||||
#: src/component/navigation.vue:361
|
||||
#: src/component/navigation.vue:1382
|
||||
#: src/component/navigation.vue:1372
|
||||
msgid "Folders"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1261,7 +1261,7 @@ msgstr ""
|
|||
|
||||
#: src/app/routes.js:260
|
||||
#: src/component/navigation.vue:348
|
||||
#: src/component/navigation.vue:1337
|
||||
#: src/component/navigation.vue:1327
|
||||
#: src/dialog/photo/edit.vue:39
|
||||
#: src/dialog/photo/edit.vue:6
|
||||
#: src/dialog/photo/edit.vue:215
|
||||
|
@ -1304,7 +1304,7 @@ msgstr ""
|
|||
#: src/component/navigation.vue:387
|
||||
#: src/component/navigation.vue:397
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:1474
|
||||
#: src/component/navigation.vue:1464
|
||||
#: src/pages/settings.vue:41
|
||||
#: src/pages/settings/general.vue:404
|
||||
msgid "Library"
|
||||
|
@ -1377,15 +1377,15 @@ msgid "Log messages appear here whenever PhotoPrism comes across broken files, o
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:487
|
||||
#: src/component/navigation.vue:1810
|
||||
#: src/component/navigation.vue:1800
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:55
|
||||
#: src/component/navigation.vue:534
|
||||
#: src/component/navigation.vue:53
|
||||
#: src/component/navigation.vue:1920
|
||||
#: src/component/navigation.vue:1951
|
||||
#: src/component/navigation.vue:1910
|
||||
#: src/component/navigation.vue:1941
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1436,7 +1436,7 @@ msgstr ""
|
|||
msgid "Message sent"
|
||||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:444
|
||||
#: src/component/navigation.vue:434
|
||||
msgid "Minimize"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1448,7 +1448,7 @@ msgstr ""
|
|||
#: src/app/routes.js:115
|
||||
#: src/app/routes.js:122
|
||||
#: src/component/navigation.vue:288
|
||||
#: src/component/navigation.vue:1129
|
||||
#: src/component/navigation.vue:1119
|
||||
#: src/pages/settings/general.vue:360
|
||||
msgid "Moments"
|
||||
msgstr ""
|
||||
|
@ -1679,7 +1679,7 @@ msgid "Nothing to see here yet. Be patient."
|
|||
msgstr ""
|
||||
|
||||
#: src/component/navigation.vue:503
|
||||
#: src/component/navigation.vue:1855
|
||||
#: src/component/navigation.vue:1845
|
||||
#: src/options/options.js:296
|
||||
msgid "Offline"
|
||||
msgstr ""
|
||||
|
@ -1775,7 +1775,7 @@ msgid "Other"
|
|||
msgstr ""
|
||||
|
||||
#: src/pages/about/about.vue:15
|
||||
msgid "Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgid "Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible."
|
||||
msgstr ""
|
||||
|
||||
#: src/options/options.js:315
|
||||
|
@ -1805,7 +1805,7 @@ msgstr ""
|
|||
#: src/app/routes.js:266
|
||||
#: src/app/routes.js:286
|
||||
#: src/component/navigation.vue:262
|
||||
#: src/component/navigation.vue:1041
|
||||
#: src/component/navigation.vue:1031
|
||||
#: src/dialog/photo/edit.vue:52
|
||||
#: src/dialog/photo/edit.vue:6
|
||||
#: src/dialog/photo/edit.vue:266
|
||||
|
@ -1856,7 +1856,7 @@ msgstr ""
|
|||
#: src/component/navigation.vue:314
|
||||
#: src/component/navigation.vue:324
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:1219
|
||||
#: src/component/navigation.vue:1209
|
||||
#: src/pages/settings/general.vue:108
|
||||
#: src/pages/settings/general.vue:450
|
||||
msgid "Places"
|
||||
|
@ -1918,7 +1918,7 @@ msgstr ""
|
|||
|
||||
#: src/app/routes.js:202
|
||||
#: src/component/navigation.vue:374
|
||||
#: src/component/navigation.vue:1427
|
||||
#: src/component/navigation.vue:1417
|
||||
#: src/dialog/photo/info.vue:102
|
||||
#: src/pages/settings/general.vue:272
|
||||
msgid "Private"
|
||||
|
@ -2094,8 +2094,8 @@ msgstr ""
|
|||
#: src/component/navigation.vue:123
|
||||
#: src/component/navigation.vue:19
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:207
|
||||
#: src/component/navigation.vue:523
|
||||
#: src/component/navigation.vue:203
|
||||
#: src/component/navigation.vue:513
|
||||
#: src/component/photo/toolbar.vue:50
|
||||
#: src/pages/albums.vue:114
|
||||
#: src/pages/labels.vue:81
|
||||
|
@ -2171,8 +2171,8 @@ msgstr ""
|
|||
#: src/component/navigation.vue:8
|
||||
#: src/component/navigation.vue:18
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:287
|
||||
#: src/component/navigation.vue:1648
|
||||
#: src/component/navigation.vue:283
|
||||
#: src/component/navigation.vue:1638
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2643,7 +2643,7 @@ msgstr ""
|
|||
#: src/component/navigation.vue:228
|
||||
#: src/component/navigation.vue:238
|
||||
#: src/component/navigation.vue:4
|
||||
#: src/component/navigation.vue:925
|
||||
#: src/component/navigation.vue:915
|
||||
msgid "Videos"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
</v-toolbar>
|
||||
<v-container fluid class="px-4 pt-4 pb-1">
|
||||
<p class="body-2 lh-17">
|
||||
<translate>Our vision is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible.</translate>
|
||||
<translate>Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible.</translate>
|
||||
<a href="https://link.photoprism.app/roadmap" target="_blank">
|
||||
<translate>The roadmap shows what tasks are in progress, what needs testing, and which feature requests are going to be implemented next.</translate>
|
||||
</a>
|
||||
|
@ -21,7 +21,7 @@
|
|||
|
||||
<p v-if="!sponsor" class="text-xs-center my-4">
|
||||
<v-btn
|
||||
href="https://link.photoprism.app/patreon"
|
||||
href="https://photoprism.app/membership"
|
||||
target="_blank"
|
||||
color="primary-button"
|
||||
class="white--text px-3 py-2 action-sponsor"
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
</v-flex>
|
||||
<v-flex xs12 sm6 class="pa-0 body-2 text-xs-center text-sm-right white--text">
|
||||
<v-btn
|
||||
href="https://link.photoprism.app/patreon"
|
||||
href="https://photoprism.app/membership"
|
||||
target="_blank"
|
||||
color="transparent"
|
||||
class="white--text px-3 py-2 ma-0 action-sponsor"
|
||||
|
|
|
@ -11,7 +11,7 @@ test.meta("testID", "about-001")("About page is displayed with all links", async
|
|||
await t
|
||||
.expect(Selector('a[href="https://photoprism.app/"]').visible)
|
||||
.ok()
|
||||
.expect(Selector('a[href="https://link.photoprism.app/patreon"]').visible)
|
||||
.expect(Selector('a[href="https://photoprism.app/membership"]').visible)
|
||||
.ok();
|
||||
});
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ const StaticUri = "/static"
|
|||
// MsgSponsor and MsgSignUp provide sponsorship info messages;
|
||||
// SignUpURL a signup link.
|
||||
const MsgSponsor = "PhotoPrism® needs your support!"
|
||||
const SignUpURL = "https://docs.photoprism.app/funding/"
|
||||
const SignUpURL = "https://photoprism.app/membership"
|
||||
const MsgSignUp = "Visit " + SignUpURL + " to learn more."
|
||||
const MsgSponsorCommand = "Since running this command puts additional load on our infrastructure," +
|
||||
" we unfortunately can only offer it to sponsors."
|
||||
|
|
|
@ -15,7 +15,7 @@ const (
|
|||
// Data represents image metadata.
|
||||
type Data struct {
|
||||
FileName string `meta:"FileName"`
|
||||
DocumentID string `meta:"BurstUUID,MediaGroupUUID,ImageUniqueID,OriginalDocumentID,DocumentID"`
|
||||
DocumentID string `meta:"BurstUUID,MediaGroupUUID,ImageUniqueID,OriginalDocumentID,DocumentID,DigitalImageGUID"`
|
||||
InstanceID string `meta:"InstanceID,DocumentID"`
|
||||
TakenAt time.Time `meta:"SubSecDateTimeOriginal,SubSecCreateDate,DateTimeOriginal,CreationDate,CreateDate,MediaCreateDate,ContentCreateDate,DateTimeDigitized,DateTime" xmp:"DateCreated"`
|
||||
TakenAtLocal time.Time `meta:"SubSecDateTimeOriginal,SubSecCreateDate,DateTimeOriginal,CreationDate,CreateDate,MediaCreateDate,ContentCreateDate,DateTimeDigitized,DateTime"`
|
||||
|
@ -26,13 +26,13 @@ type Data struct {
|
|||
FPS float64 `meta:"VideoFrameRate,VideoAvgFrameRate"`
|
||||
Frames int `meta:"FrameCount"`
|
||||
Codec string `meta:"CompressorID,FileType"`
|
||||
Title string `meta:"Title" xmp:"dc:title" dc:"title,title.Alt"`
|
||||
Title string `meta:"Headline,Title" xmp:"dc:title" dc:"title,title.Alt"`
|
||||
Subject string `meta:"Subject,PersonInImage,ObjectName,HierarchicalSubject,CatalogSets" xmp:"Subject"`
|
||||
Keywords Keywords `meta:"Keywords"`
|
||||
Notes string `meta:"Comment"`
|
||||
Artist string `meta:"Artist,Creator,OwnerName,Owner" xmp:"Creator"`
|
||||
Description string `meta:"Description" xmp:"Description,Description.Alt"`
|
||||
Copyright string `meta:"Rights,Copyright,WebStatement" xmp:"Rights,Rights.Alt"`
|
||||
Artist string `meta:"Artist,Creator,By-line,OwnerName,Owner" xmp:"Creator"`
|
||||
Description string `meta:"Description,Caption-Abstract" xmp:"Description,Description.Alt"`
|
||||
Copyright string `meta:"Rights,Copyright,CopyrightNotice,WebStatement" xmp:"Rights,Rights.Alt"`
|
||||
License string `meta:"UsageTerms,License"`
|
||||
Projection string `meta:"ProjectionType"`
|
||||
ColorProfile string `meta:"ICCProfileName,ProfileDescription"`
|
||||
|
|
|
@ -1049,4 +1049,20 @@ func TestJSON(t *testing.T) {
|
|||
assert.Equal(t, "", data.Projection)
|
||||
assert.Equal(t, "", data.ColorProfile)
|
||||
})
|
||||
|
||||
t.Run("iptc-fields-500", func(t *testing.T) {
|
||||
data, err := JSON("testdata/iptc-fields-500.json", "")
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
//t.Logf("all: %+v", data.exif)
|
||||
|
||||
assert.Equal(t, "creator A, creator B", data.Artist)
|
||||
assert.Equal(t, "my image headline", data.Title)
|
||||
assert.Equal(t, "my iptc description", data.Description)
|
||||
assert.Equal(t, "my iptc copyright", data.Copyright)
|
||||
//TODO
|
||||
//assert.Equal(t, "zqdtcxt1q9wrxnur", data.DocumentID)
|
||||
})
|
||||
}
|
||||
|
|
BIN
internal/meta/testdata/iptc-fields-500.jpg
vendored
Normal file
BIN
internal/meta/testdata/iptc-fields-500.jpg
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 72 KiB |
30
internal/meta/testdata/iptc-fields-500.json
vendored
Normal file
30
internal/meta/testdata/iptc-fields-500.json
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
[{
|
||||
"SourceFile": "iptc-fields-500.jpg",
|
||||
"ExifToolVersion": 12.41,
|
||||
"FileName": "iptc-fields-500.jpg",
|
||||
"Directory": ".",
|
||||
"FileSize": "72 KiB",
|
||||
"FileModifyDate": "2022:05:25 13:39:29+00:00",
|
||||
"FileAccessDate": "2022:05:25 13:58:00+00:00",
|
||||
"FileInodeChangeDate": "2022:05:25 13:58:00+00:00",
|
||||
"FilePermissions": "-rw-rw-r--",
|
||||
"FileType": "JPEG",
|
||||
"FileTypeExtension": "jpg",
|
||||
"MIMEType": "image/jpeg",
|
||||
"CurrentIPTCDigest": "faf6f79bac264b4c90595a44051b1318",
|
||||
"Headline": "my image headline",
|
||||
"ApplicationRecordVersion": 4,
|
||||
"CopyrightNotice": "my iptc copyright",
|
||||
"Caption-Abstract": "my iptc description",
|
||||
"By-line": ["creator A","creator B"],
|
||||
"XMPToolkit": "Image::ExifTool 12.16",
|
||||
"DigitalImageGUID": "zqdtcxt1q9wrxnur",
|
||||
"ImageWidth": 500,
|
||||
"ImageHeight": 375,
|
||||
"EncodingProcess": "Baseline DCT, Huffman coding",
|
||||
"BitsPerSample": 8,
|
||||
"ColorComponents": 3,
|
||||
"YCbCrSubSampling": "YCbCr4:2:0 (2 2)",
|
||||
"ImageSize": "500x375",
|
||||
"Megapixels": 0.188
|
||||
}]
|
Loading…
Reference in a new issue