Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ea3b353127 | |||
| 53e62cee80 | |||
|
|
4c28b4879c | ||
|
|
9753e6d6b4 | ||
|
|
3488f05960 | ||
|
|
c6674c4a2d | ||
|
|
55cd556cd6 |
10
README.md
10
README.md
@@ -48,3 +48,13 @@ Requirements:
|
|||||||
1. [Setup `direnv`](https://zero-to-flakes.com/direnv)
|
1. [Setup `direnv`](https://zero-to-flakes.com/direnv)
|
||||||
|
|
||||||
`cd` into the root folder of the project to enter `nix develop` shell. Run `direnv allow` (only once). Then run `pnpm` or `bun` (experimental) commands as described above.
|
`cd` into the root folder of the project to enter `nix develop` shell. Run `direnv allow` (only once). Then run `pnpm` or `bun` (experimental) commands as described above.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Copyright (C) 2023-2024 Ren Amamiya & other Lume contributors (see AUTHORS.md)
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.
|
||||||
|
|||||||
66
package.json
66
package.json
@@ -1,35 +1,35 @@
|
|||||||
{
|
{
|
||||||
"name": "lume",
|
"name": "lume",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "3.0.1",
|
"version": "3.0.2",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "turbo build",
|
"build": "turbo build",
|
||||||
"dev": "turbo dev",
|
"dev": "turbo dev",
|
||||||
"tauri": "tauri"
|
"tauri": "tauri"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^1.5.3",
|
"@biomejs/biome": "^1.5.3",
|
||||||
"@tauri-apps/cli": "2.0.0-alpha.21",
|
"@tauri-apps/cli": "2.0.0-alpha.21",
|
||||||
"turbo": "^1.11.3"
|
"turbo": "^1.11.3"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@8.9.0",
|
"packageManager": "pnpm@8.9.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/api": "2.0.0-alpha.14",
|
"@tauri-apps/api": "2.0.0-alpha.14",
|
||||||
"@tauri-apps/plugin-autostart": "2.0.0-alpha.5",
|
"@tauri-apps/plugin-autostart": "2.0.0-alpha.5",
|
||||||
"@tauri-apps/plugin-clipboard-manager": "2.0.0-alpha.5",
|
"@tauri-apps/plugin-clipboard-manager": "2.0.0-alpha.5",
|
||||||
"@tauri-apps/plugin-dialog": "2.0.0-alpha.5",
|
"@tauri-apps/plugin-dialog": "2.0.0-alpha.5",
|
||||||
"@tauri-apps/plugin-fs": "2.0.0-alpha.6",
|
"@tauri-apps/plugin-fs": "2.0.0-alpha.6",
|
||||||
"@tauri-apps/plugin-http": "2.0.0-alpha.6",
|
"@tauri-apps/plugin-http": "2.0.0-alpha.6",
|
||||||
"@tauri-apps/plugin-notification": "2.0.0-alpha.5",
|
"@tauri-apps/plugin-notification": "2.0.0-alpha.5",
|
||||||
"@tauri-apps/plugin-os": "2.0.0-alpha.6",
|
"@tauri-apps/plugin-os": "2.0.0-alpha.6",
|
||||||
"@tauri-apps/plugin-process": "2.0.0-alpha.5",
|
"@tauri-apps/plugin-process": "2.0.0-alpha.5",
|
||||||
"@tauri-apps/plugin-shell": "2.0.0-alpha.5",
|
"@tauri-apps/plugin-shell": "2.0.0-alpha.5",
|
||||||
"@tauri-apps/plugin-sql": "2.0.0-alpha.5",
|
"@tauri-apps/plugin-sql": "2.0.0-alpha.5",
|
||||||
"@tauri-apps/plugin-updater": "2.0.0-alpha.5",
|
"@tauri-apps/plugin-updater": "2.0.0-alpha.5",
|
||||||
"@tauri-apps/plugin-upload": "2.0.0-alpha.5",
|
"@tauri-apps/plugin-upload": "2.0.0-alpha.5",
|
||||||
"million": "^2.6.4"
|
"million": "^2.6.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,39 +4,42 @@ import * as Tooltip from "@radix-ui/react-tooltip";
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { useColumnContext } from "../../column/provider";
|
import { useColumnContext } from "../../column/provider";
|
||||||
import { useNoteContext } from "../provider";
|
import { useNoteContext } from "../provider";
|
||||||
|
import { toast } from "sonner";
|
||||||
|
|
||||||
export function NotePin() {
|
export function NotePin() {
|
||||||
const event = useNoteContext();
|
const { t } = useTranslation();
|
||||||
|
const { addColumn } = useColumnContext();
|
||||||
|
const event = useNoteContext();
|
||||||
|
|
||||||
const { t } = useTranslation();
|
const pin = async () => {
|
||||||
const { addColumn } = useColumnContext();
|
if (!event) toast.error("Something is wrong!");
|
||||||
|
await addColumn({
|
||||||
|
kind: COL_TYPES.thread,
|
||||||
|
title: "Thread",
|
||||||
|
content: event?.id,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Tooltip.Provider>
|
<Tooltip.Provider>
|
||||||
<Tooltip.Root delayDuration={150}>
|
<Tooltip.Root delayDuration={150}>
|
||||||
<Tooltip.Trigger asChild>
|
<Tooltip.Trigger asChild>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={async () =>
|
onClick={() => pin()}
|
||||||
await addColumn({
|
className="inline-flex items-center justify-center gap-2 pl-2 pr-3 text-sm font-medium rounded-full h-7 w-max bg-neutral-100 hover:bg-neutral-200 dark:hover:bg-neutral-800 dark:bg-neutral-900"
|
||||||
kind: COL_TYPES.thread,
|
>
|
||||||
title: "Thread",
|
<PinIcon className="size-4" />
|
||||||
content: event.id,
|
{t("note.buttons.pin")}
|
||||||
})
|
</button>
|
||||||
}
|
</Tooltip.Trigger>
|
||||||
className="inline-flex items-center justify-center gap-2 pl-2 pr-3 text-sm font-medium rounded-full h-7 w-max bg-neutral-100 hover:bg-neutral-200 dark:hover:bg-neutral-800 dark:bg-neutral-900"
|
<Tooltip.Portal>
|
||||||
>
|
<Tooltip.Content className="inline-flex h-7 select-none text-neutral-50 dark:text-neutral-950 items-center justify-center rounded-md bg-neutral-950 dark:bg-neutral-50 px-3.5 text-sm will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade">
|
||||||
<PinIcon className="size-4" />
|
{t("note.buttons.pinTooltip")}
|
||||||
{t("note.buttons.pin")}
|
<Tooltip.Arrow className="fill-neutral-950 dark:fill-neutral-50" />
|
||||||
</button>
|
</Tooltip.Content>
|
||||||
</Tooltip.Trigger>
|
</Tooltip.Portal>
|
||||||
<Tooltip.Portal>
|
</Tooltip.Root>
|
||||||
<Tooltip.Content className="inline-flex h-7 select-none text-neutral-50 dark:text-neutral-950 items-center justify-center rounded-md bg-neutral-950 dark:bg-neutral-50 px-3.5 text-sm will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade">
|
</Tooltip.Provider>
|
||||||
{t("note.buttons.pinTooltip")}
|
);
|
||||||
<Tooltip.Arrow className="fill-neutral-950 dark:fill-neutral-50" />
|
|
||||||
</Tooltip.Content>
|
|
||||||
</Tooltip.Portal>
|
|
||||||
</Tooltip.Root>
|
|
||||||
</Tooltip.Provider>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,59 +3,60 @@ import { downloadDir } from "@tauri-apps/api/path";
|
|||||||
import { Window } from "@tauri-apps/api/window";
|
import { Window } from "@tauri-apps/api/window";
|
||||||
import { download } from "@tauri-apps/plugin-upload";
|
import { download } from "@tauri-apps/plugin-upload";
|
||||||
import { SyntheticEvent, useState } from "react";
|
import { SyntheticEvent, useState } from "react";
|
||||||
|
import { useNoteContext } from "../provider";
|
||||||
|
|
||||||
export function ImagePreview({ url }: { url: string }) {
|
export function ImagePreview({ url }: { url: string }) {
|
||||||
const [downloaded, setDownloaded] = useState(false);
|
const event = useNoteContext();
|
||||||
|
const [downloaded, setDownloaded] = useState(false);
|
||||||
|
|
||||||
const downloadImage = async (e: { stopPropagation: () => void }) => {
|
const downloadImage = async (e: { stopPropagation: () => void }) => {
|
||||||
try {
|
try {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
||||||
const downloadDirPath = await downloadDir();
|
const downloadDirPath = await downloadDir();
|
||||||
const filename = url.substring(url.lastIndexOf("/") + 1);
|
const filename = url.substring(url.lastIndexOf("/") + 1);
|
||||||
await download(url, `${downloadDirPath}/${filename}`);
|
await download(url, `${downloadDirPath}/${filename}`);
|
||||||
|
|
||||||
setDownloaded(true);
|
setDownloaded(true);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const open = async () => {
|
const open = async () => {
|
||||||
const name = new URL(url).pathname.split("/").pop();
|
return new Window(`image-viewer-${event.id}`, {
|
||||||
return new Window("image-viewer", {
|
url,
|
||||||
url,
|
title: "Image Viewer",
|
||||||
title: name,
|
});
|
||||||
});
|
};
|
||||||
};
|
|
||||||
|
|
||||||
const fallback = (event: SyntheticEvent<HTMLImageElement, Event>) => {
|
const fallback = (event: SyntheticEvent<HTMLImageElement, Event>) => {
|
||||||
event.currentTarget.src = "/fallback-image.jpg";
|
event.currentTarget.src = "/fallback-image.jpg";
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
// biome-ignore lint/a11y/useKeyWithClickEvents: <explanation>
|
// biome-ignore lint/a11y/useKeyWithClickEvents: <explanation>
|
||||||
<div onClick={open} className="relative mt-1 mb-2.5 group">
|
<div onClick={open} className="relative mt-1 mb-2.5 group">
|
||||||
<img
|
<img
|
||||||
src={url}
|
src={url}
|
||||||
alt={url}
|
alt={url}
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
decoding="async"
|
decoding="async"
|
||||||
style={{ contentVisibility: "auto" }}
|
style={{ contentVisibility: "auto" }}
|
||||||
onError={fallback}
|
onError={fallback}
|
||||||
className="object-cover w-full h-auto border rounded-xl border-neutral-200/50 dark:border-neutral-800/50"
|
className="object-cover w-full h-auto border rounded-xl border-neutral-200/50 dark:border-neutral-800/50"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={(e) => downloadImage(e)}
|
onClick={(e) => downloadImage(e)}
|
||||||
className="absolute z-10 items-center justify-center hidden size-10 bg-white/10 text-black/70 backdrop-blur-xl rounded-lg right-2 top-2 group-hover:inline-flex hover:bg-blue-500 hover:text-white"
|
className="absolute z-10 items-center justify-center hidden size-10 bg-white/10 text-black/70 backdrop-blur-xl rounded-lg right-2 top-2 group-hover:inline-flex hover:bg-blue-500 hover:text-white"
|
||||||
>
|
>
|
||||||
{downloaded ? (
|
{downloaded ? (
|
||||||
<CheckCircleIcon className="size-5" />
|
<CheckCircleIcon className="size-5" />
|
||||||
) : (
|
) : (
|
||||||
<DownloadIcon className="size-5" />
|
<DownloadIcon className="size-5" />
|
||||||
)}
|
)}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,41 +3,45 @@ import { useEvent } from "../../../hooks/useEvent";
|
|||||||
import { User } from "../../user";
|
import { User } from "../../user";
|
||||||
|
|
||||||
export function ThreadNote({ eventId }: { eventId: string }) {
|
export function ThreadNote({ eventId }: { eventId: string }) {
|
||||||
const { isLoading, data } = useEvent(eventId);
|
const { isLoading, isError, data } = useEvent(eventId);
|
||||||
|
|
||||||
if (isLoading) {
|
if (isLoading || !data) {
|
||||||
return <div>Loading...</div>;
|
return <div>Loading...</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
if (isError) {
|
||||||
<Note.Provider event={data}>
|
return <div>Error</div>;
|
||||||
<Note.Root className="flex flex-col rounded-xl bg-neutral-50 dark:bg-neutral-950">
|
}
|
||||||
<div className="flex items-center justify-between px-3 h-16">
|
|
||||||
<User.Provider pubkey={data.pubkey}>
|
return (
|
||||||
<User.Root className="flex h-16 items-center gap-3 flex-1">
|
<Note.Provider event={data}>
|
||||||
<User.Avatar className="size-10 shrink-0 rounded-lg object-cover ring-1 ring-neutral-200/50 dark:ring-neutral-800/50" />
|
<Note.Root className="flex flex-col rounded-xl bg-neutral-50 dark:bg-neutral-950">
|
||||||
<div className="flex flex-1 flex-col">
|
<div className="flex items-center justify-between px-3 h-16">
|
||||||
<User.Name className="font-semibold text-neutral-900 dark:text-neutral-100" />
|
<User.Provider pubkey={data.pubkey}>
|
||||||
<div className="inline-flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400">
|
<User.Root className="flex h-16 items-center gap-3 flex-1">
|
||||||
<User.Time time={data.created_at} />
|
<User.Avatar className="size-10 shrink-0 rounded-lg object-cover ring-1 ring-neutral-200/50 dark:ring-neutral-800/50" />
|
||||||
<span>·</span>
|
<div className="flex flex-1 flex-col">
|
||||||
<User.NIP05 pubkey={data.pubkey} />
|
<User.Name className="font-semibold text-neutral-900 dark:text-neutral-100" />
|
||||||
</div>
|
<div className="inline-flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400">
|
||||||
</div>
|
<User.Time time={data.created_at} />
|
||||||
</User.Root>
|
<span>·</span>
|
||||||
</User.Provider>
|
<User.NIP05 pubkey={data.pubkey} />
|
||||||
<Note.Menu />
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Note.Thread className="mb-2" />
|
</User.Root>
|
||||||
<Note.Content className="min-w-0 px-3" />
|
</User.Provider>
|
||||||
<div className="flex items-center justify-between px-3 h-14">
|
<Note.Menu />
|
||||||
<Note.Pin />
|
</div>
|
||||||
<div className="inline-flex items-center gap-4">
|
<Note.Thread className="mb-2" />
|
||||||
<Note.Repost />
|
<Note.Content className="min-w-0 px-3" />
|
||||||
<Note.Zap />
|
<div className="flex items-center justify-between px-3 h-14">
|
||||||
</div>
|
<Note.Pin />
|
||||||
</div>
|
<div className="inline-flex items-center gap-4">
|
||||||
</Note.Root>
|
<Note.Repost />
|
||||||
</Note.Provider>
|
<Note.Zap />
|
||||||
);
|
</div>
|
||||||
|
</div>
|
||||||
|
</Note.Root>
|
||||||
|
</Note.Provider>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ export const FETCH_LIMIT = 20;
|
|||||||
export const LANGUAGES = [
|
export const LANGUAGES = [
|
||||||
{ label: "English", code: "en" },
|
{ label: "English", code: "en" },
|
||||||
{ label: "Japanese", code: "ja" },
|
{ label: "Japanese", code: "ja" },
|
||||||
|
{ label: "Français", code: "fr" },
|
||||||
];
|
];
|
||||||
|
|
||||||
export const NOSTR_MENTIONS = [
|
export const NOSTR_MENTIONS = [
|
||||||
|
|||||||
295
src-tauri/locales/fr.json
Normal file
295
src-tauri/locales/fr.json
Normal file
@@ -0,0 +1,295 @@
|
|||||||
|
{
|
||||||
|
"global": {
|
||||||
|
"relay": "Relais",
|
||||||
|
"back": "Retour",
|
||||||
|
"continue": "Continuer",
|
||||||
|
"loading": "Chargement",
|
||||||
|
"error": "Erreur",
|
||||||
|
"moveLeft": "Déplacer à Gauche",
|
||||||
|
"moveRight": "Déplacer à Droite",
|
||||||
|
"newColumn": "Nouvelle Colonne",
|
||||||
|
"inspect": "Inspecter",
|
||||||
|
"loadMore": "Charger plus",
|
||||||
|
"delete": "Supprimer",
|
||||||
|
"refresh": "Rafraîchir",
|
||||||
|
"cancel": "Annuler",
|
||||||
|
"save": "Enregistrer",
|
||||||
|
"post": "Poster",
|
||||||
|
"update": "Mettre à jour",
|
||||||
|
"noResult": "Aucun résultat correspondant.",
|
||||||
|
"emptyFeedTitle": "Ce flux est vide",
|
||||||
|
"emptyFeedSubtitle": "Vous pouvez suivre plus d'utilisateurs pour construire votre flux de messages",
|
||||||
|
"apiKey": "Clé d'API",
|
||||||
|
"skip": "Passer",
|
||||||
|
"close": "Fermer"
|
||||||
|
},
|
||||||
|
"nip89": {
|
||||||
|
"unsupported": "Lume ne supporte pas encore cet événement",
|
||||||
|
"openWith": "Ouvrir avec"
|
||||||
|
},
|
||||||
|
"note": {
|
||||||
|
"showThread": "Voir le fil",
|
||||||
|
"showMore": "Voir plus",
|
||||||
|
"error": "Echec de la récupération de l'événement.",
|
||||||
|
"posted": "posté",
|
||||||
|
"replied": "répondu",
|
||||||
|
"reposted": "reposté",
|
||||||
|
"menu": {
|
||||||
|
"viewThread": "Voir le fil",
|
||||||
|
"copyLink": "Copier le lien à partager",
|
||||||
|
"copyNoteId": "Copier l'ID de la note",
|
||||||
|
"copyAuthorId": "Copier l'ID de l'auteur",
|
||||||
|
"viewAuthor": "Voir l'auteur",
|
||||||
|
"pinAuthor": "Epingler l'auteur",
|
||||||
|
"copyRaw": "Copier le contenu brut de l'événement",
|
||||||
|
"mute": "Mettre en silencieux"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"pin": "Epingler",
|
||||||
|
"pinTooltip": "Epingler la Note",
|
||||||
|
"repost": "Reposter",
|
||||||
|
"quote": "Citer",
|
||||||
|
"viewProfile": "Voir le profil"
|
||||||
|
},
|
||||||
|
"zap": {
|
||||||
|
"zap": "Zap",
|
||||||
|
"tooltip": "Envoyer zap",
|
||||||
|
"modalTitle": "Envoyer zap à",
|
||||||
|
"messagePlaceholder": "Entrer un message (optionnel)",
|
||||||
|
"buttonFinish": "Zappé",
|
||||||
|
"buttonLoading": "En cours...",
|
||||||
|
"invoiceButton": "Scanner pour zapper",
|
||||||
|
"invoiceFooter": "Vous devez utiliser un portefeuille Bitcoin qui prend en charge Lightning\ncomme par exemple : Blue Wallet, Bitkit, Phoenix, ..."
|
||||||
|
},
|
||||||
|
"reply": {
|
||||||
|
"single": "réponse",
|
||||||
|
"plural": "réponses",
|
||||||
|
"empty": "Soyez le premier à répondre !"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"avatar": "Avatar",
|
||||||
|
"displayName": "Nom Affiché",
|
||||||
|
"name": "Nom",
|
||||||
|
"bio": "Bio",
|
||||||
|
"lna": "Adresse Lightning",
|
||||||
|
"website": "Site Internet",
|
||||||
|
"verified": "Vérifié",
|
||||||
|
"unverified": "Non vérifié",
|
||||||
|
"follow": "Suivre",
|
||||||
|
"unfollow": "Ne plus suivre",
|
||||||
|
"latestPosts": "Derniers posts",
|
||||||
|
"avatarButton": "Changer d'avatar",
|
||||||
|
"coverButton": "Changer de bannière",
|
||||||
|
"editProfile": "Modifier profil",
|
||||||
|
"settings": "Paramètres",
|
||||||
|
"logout": "Déconnexion",
|
||||||
|
"logoutConfirmTitle": "Etes-vous sûr ?",
|
||||||
|
"logoutConfirmSubtitle": "Vous pouvez toujours vous reconnecter à tout moment. Si vous souhaitez simplement changer de compte, vous pouvez le faire en ajoutant un compte existant."
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"title": "Nouveau Post",
|
||||||
|
"placeholder": "Que faites-vous ?",
|
||||||
|
"successMessage": "Votre note a été publiée avec succès.",
|
||||||
|
"replyPlaceholder": "Poster votre réponse"
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"placeholder": "Saisissez quelque chose à rechercher...",
|
||||||
|
"empty": "Essayez de rechercher des personnes, des notes ou des mots-clés"
|
||||||
|
},
|
||||||
|
"welcome": {
|
||||||
|
"title": "Lume est un magnifique client Nostr qui permet de se rencontrer, d'explorer\net de partager librement ses pensées avec tout le monde.",
|
||||||
|
"signup": "Rejoindre Nostr",
|
||||||
|
"login": "Se connecter",
|
||||||
|
"footer": "Avant de rejoindre Nostr, vous pouvez prendre le temps d'en savoir plus sur Nostr"
|
||||||
|
},
|
||||||
|
"login": {
|
||||||
|
"title": "Re-Bienvenue, anon !",
|
||||||
|
"footer": "Lume placera votre clé privée dans un espace de stockage sécurisé en fonction de la plateforme de votre système d'exploitation. Elle sera sécurisée par un mot de passe ou un identifiant biométrique.",
|
||||||
|
"loginWithAddress": "Se connecter avec une Adresse Nostr",
|
||||||
|
"loginWithBunker": "Se connecter avec nsecBunker",
|
||||||
|
"or": "Ou continuer avec",
|
||||||
|
"loginWithPrivkey": "Se connecter avec une Clé Privée"
|
||||||
|
},
|
||||||
|
"loginWithAddress": {
|
||||||
|
"title": "Saisissez votre Adresse Nostr"
|
||||||
|
},
|
||||||
|
"loginWithBunker": {
|
||||||
|
"title": "Saisissez votre jeton nsecbunker"
|
||||||
|
},
|
||||||
|
"loginWithPrivkey": {
|
||||||
|
"title": "Saisissez votre Clé Privée",
|
||||||
|
"subtitle": "Lume placera votre clé privée dans <1>{{service}}</1>.\nElle sera sécurisée par votre système d'exploitation."
|
||||||
|
},
|
||||||
|
"signup": {
|
||||||
|
"title": "Commençons",
|
||||||
|
"subtitle": "Choisissez l'une des méthodes ci-dessous pour créer votre compte",
|
||||||
|
"selfManageMethod": "Autogéré",
|
||||||
|
"selfManageMethodDescription": "Vous créez vos clés et vous les conservez en toute sécurité.",
|
||||||
|
"providerMethod": "Géré par le Prestataire",
|
||||||
|
"providerMethodDescription": "Un fournisseur tiers s'occupera de vos clés de connexion pour vous."
|
||||||
|
},
|
||||||
|
"signupWithSelfManage": {
|
||||||
|
"title": "Il s'agit de votre nouvelle Clé de Compte",
|
||||||
|
"subtitle": "Conservez votre clé en lieu sûr. Si vous perdez cette clé, vous perdrez l'accès à votre compte.",
|
||||||
|
"confirm1": "Je comprends le risque de perte de la clé privée.",
|
||||||
|
"confirm2": "Je veillerai à ce qu'elle soit conservée en toute sécurité et à ce qu'elle ne soit partagée avec personne.",
|
||||||
|
"confirm3": "Je comprends que je ne peux pas récupérer la clé privée.",
|
||||||
|
"button": "Enregistrer la clé et Continuer"
|
||||||
|
},
|
||||||
|
"signupWithProvider": {
|
||||||
|
"title": "Commençons la préparation de votre compte Nostr",
|
||||||
|
"username": "Nom d'utilisateur *",
|
||||||
|
"chooseProvider": "Choisissez un Fournisseur",
|
||||||
|
"usernameFooter": "A utiliser pour vous connecter à Lume et aux autres applications Nostr. Vous pouvez choisir un fournisseur de confiance pour gérer votre compte.",
|
||||||
|
"email": "Email de sauvegarde (optionnel)",
|
||||||
|
"emailFooter": "A utiliser pour récupérer votre compte si vous perdez votre mot de passe"
|
||||||
|
},
|
||||||
|
"onboardingSettings": {
|
||||||
|
"title": "Vous êtes presque prêt à utiliser Lume.",
|
||||||
|
"subtitle": "Commençons par personnaliser votre expérience.",
|
||||||
|
"notification": {
|
||||||
|
"title": "Notifications Push",
|
||||||
|
"subtitle": "L'activation des notifications push vous permettra de recevoir des notifications de Lume."
|
||||||
|
},
|
||||||
|
"lowPower": {
|
||||||
|
"title": "Mode Basse Consommation",
|
||||||
|
"subtitle": "Connexion relais limitée et dissimulation de tous les médias, compatible avec les environnements avec peu de réseau."
|
||||||
|
},
|
||||||
|
"translation": {
|
||||||
|
"title": "Traductions (nostr.wine)",
|
||||||
|
"subtitle": "Traduisez votre texte dans la langue de votre choix, grâce à Nostr Wine."
|
||||||
|
},
|
||||||
|
"footer": "Vous pouvez configurer de nombreux autres paramètres à partir de l'écran 'Paramètres'. Ne manquez pas de les consulter ultérieurement."
|
||||||
|
},
|
||||||
|
"relays": {
|
||||||
|
"global": "Général",
|
||||||
|
"follows": "Suivis",
|
||||||
|
"sidebar": {
|
||||||
|
"title": "Relais connectés",
|
||||||
|
"empty": "Vide."
|
||||||
|
},
|
||||||
|
"relayView": {
|
||||||
|
"empty": "Impossible de charger les informations du relais 😬",
|
||||||
|
"owner": "Propriétaire",
|
||||||
|
"contact": "Contact",
|
||||||
|
"software": "Logiciel",
|
||||||
|
"nips": "NIPs supportés",
|
||||||
|
"limit": "Limitation",
|
||||||
|
"payment": "Ouvrir le site de paiement",
|
||||||
|
"paymentNote": "Vous devez effectuer un paiement pour vous connecter à ce relais."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"suggestion": {
|
||||||
|
"title": "Suivis Suggérés",
|
||||||
|
"error": "Erreur. Impossible d'obtenir les utilisateurs en tendance",
|
||||||
|
"button": "Enregistrer & Retour"
|
||||||
|
},
|
||||||
|
"interests": {
|
||||||
|
"title": "Intérêts",
|
||||||
|
"subtitle": "Choisissez les éléments que vous aimeriez voir apparaître dans votre flux d'accueil.",
|
||||||
|
"edit": "Modifier vos Intérêts",
|
||||||
|
"followAll": "Suivre tout le monde",
|
||||||
|
"unfollowAll": "Ne plus suivre personne"
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"general": {
|
||||||
|
"title": "Général",
|
||||||
|
"update": {
|
||||||
|
"title": "Mises à jour",
|
||||||
|
"subtitle": "Téléchargement automatique des nouvelles mises à jour"
|
||||||
|
},
|
||||||
|
"lowPower": {
|
||||||
|
"title": "Faible Consommation",
|
||||||
|
"subtitle": "Recommandé pour un environnement avec peu de réseau"
|
||||||
|
},
|
||||||
|
"startup": {
|
||||||
|
"title": "Démarrage",
|
||||||
|
"subtitle": "Lancer Lume au Démarrage"
|
||||||
|
},
|
||||||
|
"media": {
|
||||||
|
"title": "Média",
|
||||||
|
"subtitle": "Chargement automatique des médias"
|
||||||
|
},
|
||||||
|
"hashtag": {
|
||||||
|
"title": "Hashtag",
|
||||||
|
"subtitle": "Afficher tous les hashtags dans les contenus"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"title": "Notification",
|
||||||
|
"subtitle": "Envoi automatique des notifications"
|
||||||
|
},
|
||||||
|
"translation": {
|
||||||
|
"title": "Traduction",
|
||||||
|
"subtitle": "Traduire les textes dans votre langue"
|
||||||
|
},
|
||||||
|
"appearance": {
|
||||||
|
"title": "Apparence",
|
||||||
|
"light": "Clair",
|
||||||
|
"dark": "Sombre",
|
||||||
|
"system": "Système"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"title": "Utilisateur"
|
||||||
|
},
|
||||||
|
"zap": {
|
||||||
|
"title": "Zap",
|
||||||
|
"nwc": "Chaîne de connexion NWC"
|
||||||
|
},
|
||||||
|
"backup": {
|
||||||
|
"title": "Sauvegarde",
|
||||||
|
"privkey": {
|
||||||
|
"title": "Clé Privée",
|
||||||
|
"button": "Supprimer la clé privée"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"advanced": {
|
||||||
|
"title": "Avancé",
|
||||||
|
"cache": {
|
||||||
|
"title": "Cache",
|
||||||
|
"subtitle": "A utiliser pour accélérer la connexion nostr",
|
||||||
|
"button": "Vider"
|
||||||
|
},
|
||||||
|
"instant": {
|
||||||
|
"title": "Zap instantané",
|
||||||
|
"subtitle": "Zap avec montant par défaut, sans confirmation"
|
||||||
|
},
|
||||||
|
"defaultAmount": "Montant par défaut"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"title": "A propos",
|
||||||
|
"version": "Version",
|
||||||
|
"checkUpdate": "Rechercher des mises à jour",
|
||||||
|
"installUpdate": "Installer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"onboarding": {
|
||||||
|
"home": {
|
||||||
|
"title": "Votre compte a été créé avec succès !",
|
||||||
|
"subtitle": "Pour commencer, configurons votre profil.",
|
||||||
|
"profileSettings": "Paramètres du Profil"
|
||||||
|
},
|
||||||
|
"profile": {
|
||||||
|
"title": "A propos de vous",
|
||||||
|
"subtitle": "Parlez de vous à Lume pour commencer à construire votre flux d'accueil."
|
||||||
|
},
|
||||||
|
"finish": {
|
||||||
|
"title": "Configuration du profil terminée !",
|
||||||
|
"subtitle": "Vous pouvez quitter la configuration ici et commencer à utiliser Lume.",
|
||||||
|
"report": "Signaler un problème"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"activity": {
|
||||||
|
"title": "Activité",
|
||||||
|
"empty": "Hey ! Rien de nouveau pour l'instant.",
|
||||||
|
"mention": "vous a mentionné",
|
||||||
|
"repost": "reposté",
|
||||||
|
"zap": "zappé",
|
||||||
|
"newReply": "Nouvelle réponse",
|
||||||
|
"boost": "Booster",
|
||||||
|
"boostSubtitle": "@ Quelqu'un a reposté votre note",
|
||||||
|
"conversation": "Conversation",
|
||||||
|
"conversationSubtitle": "@ Quelqu'un a répondu à votre note"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,295 +1,295 @@
|
|||||||
{
|
{
|
||||||
"global": {
|
"global": {
|
||||||
"relay": "Relay",
|
"relay": "リレー",
|
||||||
"back": "Back",
|
"back": "戻る",
|
||||||
"continue": "Continue",
|
"continue": "続行",
|
||||||
"loading": "Loading",
|
"loading": "ロード中",
|
||||||
"error": "Error",
|
"error": "エラー",
|
||||||
"moveLeft": "Move Left",
|
"moveLeft": "左に移動",
|
||||||
"moveRight": "Move Right",
|
"moveRight": "右に移動",
|
||||||
"newColumn": "New Column",
|
"newColumn": "新規カラム",
|
||||||
"inspect": "Inspect",
|
"inspect": "のぞき見",
|
||||||
"loadMore": "Load more",
|
"loadMore": "詳細",
|
||||||
"delete": "Delete",
|
"delete": "削除",
|
||||||
"refresh": "Refresh",
|
"refresh": "更新",
|
||||||
"cancel": "Cancel",
|
"cancel": "キャンセル",
|
||||||
"save": "Save",
|
"save": "保存",
|
||||||
"post": "Post",
|
"post": "投稿",
|
||||||
"update": "Update",
|
"update": "更新",
|
||||||
"noResult": "No results found.",
|
"noResult": "結果が見つかりません",
|
||||||
"emptyFeedTitle": "This feed is empty",
|
"emptyFeedTitle": "このフィードは空です",
|
||||||
"emptyFeedSubtitle": "You can follow more users to build up your timeline",
|
"emptyFeedSubtitle": "ユーザーをフォローしてタイムラインを構築しましょう",
|
||||||
"apiKey": "API Key",
|
"apiKey": "API キー",
|
||||||
"skip": "Skip",
|
"skip": "スキップ",
|
||||||
"close": "Close"
|
"close": "閉じる"
|
||||||
},
|
},
|
||||||
"nip89": {
|
"nip89": {
|
||||||
"unsupported": "Lume isn't support this event",
|
"unsupported": "このイベントは非対応です",
|
||||||
"openWith": "Open with"
|
"openWith": "で開く"
|
||||||
},
|
},
|
||||||
"note": {
|
"note": {
|
||||||
"showThread": "Show thread",
|
"showThread": "スレッドの表示",
|
||||||
"showMore": "Show more",
|
"showMore": "さらに表示",
|
||||||
"error": "Failed to fetch event.",
|
"error": "イベントの取得に失敗しました",
|
||||||
"posted": "posted",
|
"posted": "が投稿しました",
|
||||||
"replied": "replied",
|
"replied": "が返信しました",
|
||||||
"reposted": "reposted",
|
"reposted": "がリポストしました",
|
||||||
"menu": {
|
"menu": {
|
||||||
"viewThread": "View thread",
|
"viewThread": "スレッドを見る",
|
||||||
"copyLink": "Copy shareable link",
|
"copyLink": "シェアリンクをコピー",
|
||||||
"copyNoteId": "Copy note ID",
|
"copyNoteId": "投稿 ID をコピー",
|
||||||
"copyAuthorId": "Copy author ID",
|
"copyAuthorId": "投稿者 ID をコピー",
|
||||||
"viewAuthor": "View author",
|
"viewAuthor": "投稿者を表示",
|
||||||
"pinAuthor": "Pin author",
|
"pinAuthor": "投稿者をピン留め",
|
||||||
"copyRaw": "Copy raw event",
|
"copyRaw": "生イベントをコピー",
|
||||||
"mute": "Mute"
|
"mute": "ミュート"
|
||||||
},
|
},
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"pin": "Pin",
|
"pin": "ピン留め",
|
||||||
"pinTooltip": "Pin Note",
|
"pinTooltip": "投稿をピン留めする",
|
||||||
"repost": "Repost",
|
"repost": "リポスト",
|
||||||
"quote": "Quote",
|
"quote": "引用",
|
||||||
"viewProfile": "View profile"
|
"viewProfile": "プロフィールの表示"
|
||||||
},
|
},
|
||||||
"zap": {
|
"zap": {
|
||||||
"zap": "Zap",
|
"zap": "Zap",
|
||||||
"tooltip": "Send zap",
|
"tooltip": "zap する",
|
||||||
"modalTitle": "Send zap to",
|
"modalTitle": "に zap する",
|
||||||
"messagePlaceholder": "Enter message (optional)",
|
"messagePlaceholder": "メッセージを入力 (任意)",
|
||||||
"buttonFinish": "Zapped",
|
"buttonFinish": "Zap しました",
|
||||||
"buttonLoading": "Processing...",
|
"buttonLoading": "処理中...",
|
||||||
"invoiceButton": "Scan to zap",
|
"invoiceButton": "スキャンして zap",
|
||||||
"invoiceFooter": "You must use Bitcoin wallet which support Lightning\nsuch as: Blue Wallet, Bitkit, Phoenix,..."
|
"invoiceFooter": "Blue Wallet、Bitkit、Phoenix などの\nBitcoin Lightningに対応したウォレットが必要です。"
|
||||||
},
|
},
|
||||||
"reply": {
|
"reply": {
|
||||||
"single": "reply",
|
"single": "リプライ",
|
||||||
"plural": "replies",
|
"plural": "複数リプライ",
|
||||||
"empty": "Be the first to Reply!"
|
"empty": "リプライしてみましょう!"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"user": {
|
"user": {
|
||||||
"avatar": "Avatar",
|
"avatar": "アバター",
|
||||||
"displayName": "Display Name",
|
"displayName": "表示名",
|
||||||
"name": "Name",
|
"name": "名前",
|
||||||
"bio": "Bio",
|
"bio": "経歴",
|
||||||
"lna": "Lightning address",
|
"lna": "ライトニングアドレス",
|
||||||
"website": "Website",
|
"website": "Web サイト",
|
||||||
"verified": "Verified",
|
"verified": "認証済",
|
||||||
"unverified": "Unverified",
|
"unverified": "未認証",
|
||||||
"follow": "Follow",
|
"follow": "フォロー",
|
||||||
"unfollow": "Unfollow",
|
"unfollow": "アンフォロー",
|
||||||
"latestPosts": "Latest posts",
|
"latestPosts": "最新投稿",
|
||||||
"avatarButton": "Change avatar",
|
"avatarButton": "アバターの変更",
|
||||||
"coverButton": "Change cover",
|
"coverButton": "カバーの変更",
|
||||||
"editProfile": "Edit profile",
|
"editProfile": "プロフィールの編集",
|
||||||
"settings": "Settings",
|
"settings": "設定",
|
||||||
"logout": "Log out",
|
"logout": "ログアウト",
|
||||||
"logoutConfirmTitle": "Are you sure!",
|
"logoutConfirmTitle": "本当にログアウトしてもよろしいですか?",
|
||||||
"logoutConfirmSubtitle": "You can always log back in at any time. If you just want to switch accounts, you can do that by adding an existing account."
|
"logoutConfirmSubtitle": "いつでも再ログインすることができます。アカウントを切り替えたいだけの場合は、既存のアカウントを追加することで切り替えられます。"
|
||||||
},
|
},
|
||||||
"editor": {
|
"editor": {
|
||||||
"title": "New Post",
|
"title": "新規投稿",
|
||||||
"placeholder": "What are you up to?",
|
"placeholder": "今何してる?",
|
||||||
"successMessage": "Your note has been published successfully.",
|
"successMessage": "投稿が正常に公開されました",
|
||||||
"replyPlaceholder": "Post your reply"
|
"replyPlaceholder": "リプライを投稿する"
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
"placeholder": "Type something to search...",
|
"placeholder": "入力して検索...",
|
||||||
"empty": "Try searching for people, notes, or keywords"
|
"empty": "人、投稿、キーワードなどを入力して検索しましょう"
|
||||||
},
|
},
|
||||||
"welcome": {
|
"welcome": {
|
||||||
"title": "Lume is a magnificent client for Nostr to meet, explore\nand freely share your thoughts with everyone.",
|
"title": "Lume は、Nostr を通じて人々と出会い、探索し、\n自由に思いを共有するために作られた全く新しいクライアントです。",
|
||||||
"signup": "Join Nostr",
|
"signup": "Nostr を始める",
|
||||||
"login": "Login",
|
"login": "ログイン",
|
||||||
"footer": "Before joining Nostr, you can take time to learn more about Nostr"
|
"footer": "Nostr を始める前に、Nostrについて学ぶ"
|
||||||
},
|
},
|
||||||
"login": {
|
"login": {
|
||||||
"title": "Welcome back, anon!",
|
"title": "おかえりなさい、名無しさん!",
|
||||||
"footer": "Lume will put your Private Key in Secure Storage depended on your OS Platform. It will be secured by Password or Biometric ID",
|
"footer": "Lume は、秘密鍵をそれぞれの OS に対応したセキュア・ストレージ内に保管します。また、入力された秘密鍵は、パスワードや生体認証 ID によって保護されます。",
|
||||||
"loginWithAddress": "Login with Nostr Address",
|
"loginWithAddress": "Nostr アドレスでログイン",
|
||||||
"loginWithBunker": "Login with nsecBunker",
|
"loginWithBunker": "nsecBunker でログイン",
|
||||||
"or": "Or continue with",
|
"or": "または、",
|
||||||
"loginWithPrivkey": "Login with Private Key"
|
"loginWithPrivkey": "秘密鍵でログイン"
|
||||||
},
|
},
|
||||||
"loginWithAddress": {
|
"loginWithAddress": {
|
||||||
"title": "Enter your Nostr Address"
|
"title": "Nostr アドレスを入力"
|
||||||
},
|
},
|
||||||
"loginWithBunker": {
|
"loginWithBunker": {
|
||||||
"title": "Enter your nsecbunker token"
|
"title": "nsecBunker のトークンを入力"
|
||||||
},
|
},
|
||||||
"loginWithPrivkey": {
|
"loginWithPrivkey": {
|
||||||
"title": "Enter your Private Key",
|
"title": "秘密鍵を入力",
|
||||||
"subtitle": "Lume will put your private key to <1>{{service}}</1>.\nIt will be secured by your OS."
|
"subtitle": "秘密鍵は <1>{{service}}</1> 内に保管されます。\nまた、OSによって秘密鍵は保護されます。"
|
||||||
},
|
},
|
||||||
"signup": {
|
"signup": {
|
||||||
"title": "Let's Get Started",
|
"title": "さぁ、はじめましょう",
|
||||||
"subtitle": "Choose one of methods below to create your account",
|
"subtitle": "以下からアカウント作成の方法を 1 つ選択してください",
|
||||||
"selfManageMethod": "Self-Managed",
|
"selfManageMethod": "自己管理",
|
||||||
"selfManageMethodDescription": "You create your keys and keep them safe.",
|
"selfManageMethodDescription": "自分で秘密鍵を作成し安全に保管する",
|
||||||
"providerMethod": "Managed by Provider",
|
"providerMethod": "プロバイダー管理",
|
||||||
"providerMethodDescription": "A 3rd party provider will handle your sign in keys for you."
|
"providerMethodDescription": "サードパーティプロバイダーに鍵管理を委任する"
|
||||||
},
|
},
|
||||||
"signupWithSelfManage": {
|
"signupWithSelfManage": {
|
||||||
"title": "This is your new Account Key",
|
"title": "これが新しいアカウント用の鍵です",
|
||||||
"subtitle": "Keep your key in safe place. If you lose this key, you will lose access to your account.",
|
"subtitle": "秘密鍵は安全な場所に保管してください。紛失してしまった場合は、永遠にアカウントにアクセスできなくなります。",
|
||||||
"confirm1": "I understand the risk of lost private key.",
|
"confirm1": "秘密鍵を紛失した場合のリスクを理解しました。",
|
||||||
"confirm2": "I will make sure keep it safe and not sharing with anyone.",
|
"confirm2": "秘密鍵を安全な場所に保管し、誰にも共有しないことを承諾しました。",
|
||||||
"confirm3": "I understand I cannot recover private key.",
|
"confirm3": "秘密鍵の復元ができないことを理解しました。",
|
||||||
"button": "Save key & Continue"
|
"button": "鍵を保存して続行"
|
||||||
},
|
},
|
||||||
"signupWithProvider": {
|
"signupWithProvider": {
|
||||||
"title": "Let's set up your account on Nostr",
|
"title": "さぁ、Nostr のアカウントを設定しましょう",
|
||||||
"username": "Username *",
|
"username": "ユーザー名 *",
|
||||||
"chooseProvider": "Choose a Provider",
|
"chooseProvider": "プロバイダーを選択",
|
||||||
"usernameFooter": "Use to login to Lume and other Nostr apps. You can choose provider you trust to manage your account",
|
"usernameFooter": "Lume や、他の Nostr アプリにログインする場合に使用されます。アカウントを管理するプロバイダーは慎重に選択してください",
|
||||||
"email": "Backup Email (optional)",
|
"email": "E メールでバックアップ (任意)",
|
||||||
"emailFooter": "Use for recover your account if you lose your password"
|
"emailFooter": "パスワードを紛失した場合に使用されます"
|
||||||
},
|
},
|
||||||
"onboardingSettings": {
|
"onboardingSettings": {
|
||||||
"title": "You're almost ready to use Lume.",
|
"title": "あともう少しです",
|
||||||
"subtitle": "Let's start personalizing your experience.",
|
"subtitle": "Lume の体験を最適化しましょう",
|
||||||
"notification": {
|
"notification": {
|
||||||
"title": "Push notification",
|
"title": "プッシュ通知",
|
||||||
"subtitle": "Enabling push notifications will allow you to receive notifications from Lume."
|
"subtitle": "プッシュ通知を有効化すると Lume から通知を受け取ることができるようになります。"
|
||||||
},
|
},
|
||||||
"lowPower": {
|
"lowPower": {
|
||||||
"title": "Low Power Mode",
|
"title": "低電力モード",
|
||||||
"subtitle": "Limited relay connection and hide all media, sustainable for low network environment."
|
"subtitle": "リレーの接続を制限し、すべてのメディアを非表示にします。ネットワーク環境が悪い場合などにも有効です。"
|
||||||
},
|
},
|
||||||
"translation": {
|
"translation": {
|
||||||
"title": "Translation (nostr.wine)",
|
"title": "翻訳 (nostr.wine)",
|
||||||
"subtitle": "Translate text to your preferred language, powered by Nostr Wine."
|
"subtitle": "Nostr Wine を使用し、希望の言語に自動翻訳することができます。"
|
||||||
},
|
},
|
||||||
"footer": "There are many more settings you can configure from the 'Settings' Screen. Be sure to visit it later."
|
"footer": "「設定」画面からさらに細かくカスタマイズすることができます。 後で確認するのを忘れずに。"
|
||||||
},
|
},
|
||||||
"relays": {
|
"relays": {
|
||||||
"global": "Global",
|
"global": "グローバル",
|
||||||
"follows": "Follows",
|
"follows": "フォロー",
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
"title": "Connected relays",
|
"title": "接続済リレー",
|
||||||
"empty": "Empty."
|
"empty": "空"
|
||||||
},
|
},
|
||||||
"relayView": {
|
"relayView": {
|
||||||
"empty": "Could not load relay information 😬",
|
"empty": "リレー情報がロードできませんでした 😬",
|
||||||
"owner": "Owner",
|
"owner": "オーナー",
|
||||||
"contact": "Contact",
|
"contact": "連絡先",
|
||||||
"software": "Software",
|
"software": "ソフトウェア",
|
||||||
"nips": "Supported NIPs",
|
"nips": "対応 NIPs",
|
||||||
"limit": "Limitation",
|
"limit": "制限",
|
||||||
"payment": "Open payment website",
|
"payment": "決済用 Web サイトを開く",
|
||||||
"paymentNote": "You need to make a payment to connect this relay"
|
"paymentNote": "このリレーへの接続には支払いが必要です"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"suggestion": {
|
"suggestion": {
|
||||||
"title": "Suggested Follows",
|
"title": "フォロー推奨 Nostrich",
|
||||||
"error": "Error. Cannot get trending users",
|
"error": "エラーが発生しています。人気の Nostrich 情報が取得ができませんでした",
|
||||||
"button": "Save & Go back"
|
"button": "保存して戻る"
|
||||||
},
|
},
|
||||||
"interests": {
|
"interests": {
|
||||||
"title": "Interests",
|
"title": "興味",
|
||||||
"subtitle": "Pick things you'd like to see in your home feed.",
|
"subtitle": "ホーム・フィードに表示したい内容を選択",
|
||||||
"edit": "Edit Interest",
|
"edit": "興味を編集",
|
||||||
"followAll": "Follow All",
|
"followAll": "全てフォローする",
|
||||||
"unfollowAll": "Unfollow All"
|
"unfollowAll": "全てアンフォローする"
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"general": {
|
"general": {
|
||||||
"title": "General",
|
"title": "一般",
|
||||||
"update": {
|
"update": {
|
||||||
"title": "Update",
|
"title": "アップデート",
|
||||||
"subtitle": "Automatically download new update"
|
"subtitle": "自動で新規アップデートをダウンロードする"
|
||||||
},
|
},
|
||||||
"lowPower": {
|
"lowPower": {
|
||||||
"title": "Low Power",
|
"title": "低電力モード",
|
||||||
"subtitle": "Sustainable for low network environment"
|
"subtitle": "ネットワーク環境が悪い場合などにオススメ"
|
||||||
},
|
},
|
||||||
"startup": {
|
"startup": {
|
||||||
"title": "Startup",
|
"title": "起動時",
|
||||||
"subtitle": "Launch Lume at Login"
|
"subtitle": "ログイン時に Lume を起動する"
|
||||||
},
|
},
|
||||||
"media": {
|
"media": {
|
||||||
"title": "Media",
|
"title": "メディア",
|
||||||
"subtitle": "Automatically load media"
|
"subtitle": "自動的にメディアをロードする"
|
||||||
},
|
},
|
||||||
"hashtag": {
|
"hashtag": {
|
||||||
"title": "Hashtag",
|
"title": "ハッシュタグ",
|
||||||
"subtitle": "Show all hashtags in content"
|
"subtitle": "コンテンツ内のハッシュタグを全て表示する"
|
||||||
},
|
},
|
||||||
"notification": {
|
"notification": {
|
||||||
"title": "Notification",
|
"title": "通知",
|
||||||
"subtitle": "Automatically send notification"
|
"subtitle": "プッシュ通知の自動化"
|
||||||
},
|
},
|
||||||
"translation": {
|
"translation": {
|
||||||
"title": "Translation",
|
"title": "翻訳",
|
||||||
"subtitle": "Translate text to your language"
|
"subtitle": "好みの言語に自動翻訳"
|
||||||
},
|
},
|
||||||
"appearance": {
|
"appearance": {
|
||||||
"title": "Appearance",
|
"title": "外観",
|
||||||
"light": "Light",
|
"light": "ライト",
|
||||||
"dark": "Dark",
|
"dark": "ダーク",
|
||||||
"system": "System"
|
"system": "システム"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"user": {
|
"user": {
|
||||||
"title": "User"
|
"title": "ユーザー"
|
||||||
},
|
},
|
||||||
"zap": {
|
"zap": {
|
||||||
"title": "Zap",
|
"title": "Zap",
|
||||||
"nwc": "Connection String"
|
"nwc": "接続文字列"
|
||||||
},
|
},
|
||||||
"backup": {
|
"backup": {
|
||||||
"title": "Backup",
|
"title": "バックアップ",
|
||||||
"privkey": {
|
"privkey": {
|
||||||
"title": "Private key",
|
"title": "秘密鍵",
|
||||||
"button": "Remove private key"
|
"button": "秘密鍵の削除"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"advanced": {
|
"advanced": {
|
||||||
"title": "Advanced",
|
"title": "高度な設定",
|
||||||
"cache": {
|
"cache": {
|
||||||
"title": "Cache",
|
"title": "キャッシュ",
|
||||||
"subtitle": "Use for boost up nostr connection",
|
"subtitle": "接続を高速化する際に使用",
|
||||||
"button": "Clear"
|
"button": "クリア"
|
||||||
},
|
},
|
||||||
"instant": {
|
"instant": {
|
||||||
"title": "Instant Zap",
|
"title": "即 Zap",
|
||||||
"subtitle": "Zap with default amount, no confirmation"
|
"subtitle": "確認なしで設定されたデフォルト枚数を zap する"
|
||||||
},
|
},
|
||||||
"defaultAmount": "Default amount"
|
"defaultAmount": "デフォルト枚数"
|
||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"title": "About",
|
"title": "概要",
|
||||||
"version": "Version",
|
"version": "バージョン",
|
||||||
"checkUpdate": "Check for update",
|
"checkUpdate": "アップデートの確認",
|
||||||
"installUpdate": "Install"
|
"installUpdate": "インストール"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"onboarding": {
|
"onboarding": {
|
||||||
"home": {
|
"home": {
|
||||||
"title": "Your account was successfully created!",
|
"title": "アカウントが正常に作成されました!",
|
||||||
"subtitle": "For starters, let's set up your profile.",
|
"subtitle": "初めての方はプロフィールの設定をしましょう。",
|
||||||
"profileSettings": "Profile Settings"
|
"profileSettings": "プロフィール設定"
|
||||||
},
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"title": "About you",
|
"title": "あなたについて",
|
||||||
"subtitle": "Tell Lume about yourself to start building your home feed."
|
"subtitle": "ホーム・フィードを作成するためにあなたについてもう少し教えてください。"
|
||||||
},
|
},
|
||||||
"finish": {
|
"finish": {
|
||||||
"title": "Profile setup complete!",
|
"title": "プロフィールの設定が完了しました!",
|
||||||
"subtitle": "You can exit the setup here and start using Lume.",
|
"subtitle": "お疲れ様でした!設定はここで終了です。 Lume を開始できます",
|
||||||
"report": "Report a issue"
|
"report": "問題を報告する"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"activity": {
|
"activity": {
|
||||||
"title": "Activity",
|
"title": "アクティビティ",
|
||||||
"empty": "Yo! Nothing new yet.",
|
"empty": "オッ! まだ何もないようですネ!",
|
||||||
"mention": "mention you",
|
"mention": "にメンションされました",
|
||||||
"repost": "reposted",
|
"repost": "にリポストされました",
|
||||||
"zap": "zapped",
|
"zap": "に Zapされました",
|
||||||
"newReply": "New reply",
|
"newReply": "新規リプライ",
|
||||||
"boost": "Boost",
|
"boost": "ブースト",
|
||||||
"boostSubtitle": "@ Someone has reposted to your note",
|
"boostSubtitle": "@ 誰かがあなたの投稿をリポストしました",
|
||||||
"conversation": "Conversation",
|
"conversation": "会話",
|
||||||
"conversationSubtitle": "@ Someone has replied to your note"
|
"conversationSubtitle": "@ 誰かがあなたの投稿にリプライしました"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,125 +1,125 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
|
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeBuildCommand": "pnpm run build",
|
"beforeBuildCommand": "pnpm run build",
|
||||||
"beforeDevCommand": "pnpm run dev",
|
"beforeDevCommand": "pnpm run dev",
|
||||||
"devPath": "http://localhost:3000",
|
"devPath": "http://localhost:3000",
|
||||||
"distDir": "../dist",
|
"distDir": "../dist",
|
||||||
"withGlobalTauri": true
|
"withGlobalTauri": true
|
||||||
},
|
},
|
||||||
"package": {
|
"package": {
|
||||||
"productName": "Lume",
|
"productName": "Lume",
|
||||||
"version": "3.0.1"
|
"version": "3.0.2"
|
||||||
},
|
},
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"fs": {
|
"fs": {
|
||||||
"scope": [
|
"scope": [
|
||||||
"$APPDATA/*",
|
"$APPDATA/*",
|
||||||
"$DATA/*",
|
"$DATA/*",
|
||||||
"$LOCALDATA/*",
|
"$LOCALDATA/*",
|
||||||
"$DESKTOP/*",
|
"$DESKTOP/*",
|
||||||
"$DOCUMENT/*",
|
"$DOCUMENT/*",
|
||||||
"$DOWNLOAD/*",
|
"$DOWNLOAD/*",
|
||||||
"$HOME/*",
|
"$HOME/*",
|
||||||
"$PICTURE/*",
|
"$PICTURE/*",
|
||||||
"$PUBLIC/*",
|
"$PUBLIC/*",
|
||||||
"$VIDEO/*",
|
"$VIDEO/*",
|
||||||
"$RESOURCE",
|
"$RESOURCE",
|
||||||
"$RESOURCE/*",
|
"$RESOURCE/*",
|
||||||
"$RESOURCE/**",
|
"$RESOURCE/**",
|
||||||
"$RESOURCE/locales/*"
|
"$RESOURCE/locales/*"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"http": {
|
"http": {
|
||||||
"scope": ["http://**/", "https://**/"]
|
"scope": ["http://**/", "https://**/"]
|
||||||
},
|
},
|
||||||
"shell": {
|
"shell": {
|
||||||
"open": true,
|
"open": true,
|
||||||
"scope": []
|
"scope": []
|
||||||
},
|
},
|
||||||
"updater": {
|
"updater": {
|
||||||
"endpoints": [
|
"endpoints": [
|
||||||
"https://lus.reya3772.workers.dev/v1/{{target}}/{{arch}}/{{current_version}}",
|
"https://lus.reya3772.workers.dev/v1/{{target}}/{{arch}}/{{current_version}}",
|
||||||
"https://lus.reya3772.workers.dev/{{target}}/{{current_version}}"
|
"https://lus.reya3772.workers.dev/{{target}}/{{current_version}}"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tauri": {
|
"tauri": {
|
||||||
"bundle": {
|
"bundle": {
|
||||||
"active": true,
|
"active": true,
|
||||||
"category": "SocialNetworking",
|
"category": "SocialNetworking",
|
||||||
"deb": {
|
"deb": {
|
||||||
"depends": []
|
"depends": []
|
||||||
},
|
},
|
||||||
"externalBin": [],
|
"externalBin": [],
|
||||||
"resources": ["resources/*", "./locales/*"],
|
"resources": ["resources/*", "./locales/*"],
|
||||||
"icon": [
|
"icon": [
|
||||||
"icons/32x32.png",
|
"icons/32x32.png",
|
||||||
"icons/128x128.png",
|
"icons/128x128.png",
|
||||||
"icons/128x128@2x.png",
|
"icons/128x128@2x.png",
|
||||||
"icons/icon.icns",
|
"icons/icon.icns",
|
||||||
"icons/icon.ico"
|
"icons/icon.ico"
|
||||||
],
|
],
|
||||||
"copyright": "",
|
"copyright": "",
|
||||||
"identifier": "nu.lume.Lume",
|
"identifier": "nu.lume.Lume",
|
||||||
"longDescription": "nostr client for desktop",
|
"longDescription": "nostr client for desktop",
|
||||||
"shortDescription": "nostr client",
|
"shortDescription": "nostr client",
|
||||||
"targets": "all",
|
"targets": "all",
|
||||||
"updater": {
|
"updater": {
|
||||||
"active": true,
|
"active": true,
|
||||||
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEU3OTdCMkM3RjU5QzE2NzkKUldSNUZwejF4N0tYNTVHYjMrU0JkL090SlEyNUVLYU5TM2hTU3RXSWtEWngrZWJ4a0pydUhXZHEK",
|
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEU3OTdCMkM3RjU5QzE2NzkKUldSNUZwejF4N0tYNTVHYjMrU0JkL090SlEyNUVLYU5TM2hTU3RXSWtEWngrZWJ4a0pydUhXZHEK",
|
||||||
"windows": {
|
"windows": {
|
||||||
"installMode": "quiet"
|
"installMode": "quiet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"appimage": {
|
"appimage": {
|
||||||
"bundleMediaFramework": true
|
"bundleMediaFramework": true
|
||||||
},
|
},
|
||||||
"rpm": {
|
"rpm": {
|
||||||
"epoch": 0,
|
"epoch": 0,
|
||||||
"files": {},
|
"files": {},
|
||||||
"release": "1"
|
"release": "1"
|
||||||
},
|
},
|
||||||
"macOS": {
|
"macOS": {
|
||||||
"entitlements": null,
|
"entitlements": null,
|
||||||
"exceptionDomain": "",
|
"exceptionDomain": "",
|
||||||
"frameworks": [],
|
"frameworks": [],
|
||||||
"license": "../LICENSE",
|
"license": "../LICENSE",
|
||||||
"minimumSystemVersion": "10.15.0",
|
"minimumSystemVersion": "10.15.0",
|
||||||
"providerShortName": null,
|
"providerShortName": null,
|
||||||
"signingIdentity": null
|
"signingIdentity": null
|
||||||
},
|
},
|
||||||
"windows": {
|
"windows": {
|
||||||
"certificateThumbprint": null,
|
"certificateThumbprint": null,
|
||||||
"digestAlgorithm": "sha256",
|
"digestAlgorithm": "sha256",
|
||||||
"timestampUrl": ""
|
"timestampUrl": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"security": {
|
"security": {
|
||||||
"assetProtocol": {
|
"assetProtocol": {
|
||||||
"enable": true,
|
"enable": true,
|
||||||
"scope": [
|
"scope": [
|
||||||
"$APPDATA/*",
|
"$APPDATA/*",
|
||||||
"$DATA/*",
|
"$DATA/*",
|
||||||
"$LOCALDATA/*",
|
"$LOCALDATA/*",
|
||||||
"$DESKTOP/*",
|
"$DESKTOP/*",
|
||||||
"$DOCUMENT/*",
|
"$DOCUMENT/*",
|
||||||
"$DOWNLOAD/*",
|
"$DOWNLOAD/*",
|
||||||
"$HOME/*",
|
"$HOME/*",
|
||||||
"$PICTURE/*",
|
"$PICTURE/*",
|
||||||
"$PUBLIC/*",
|
"$PUBLIC/*",
|
||||||
"$VIDEO/*",
|
"$VIDEO/*",
|
||||||
"$APPCONFIG/*",
|
"$APPCONFIG/*",
|
||||||
"$RESOURCE/*"
|
"$RESOURCE/*"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"dangerousDisableAssetCspModification": false,
|
"dangerousDisableAssetCspModification": false,
|
||||||
"dangerousRemoteDomainIpcAccess": [],
|
"dangerousRemoteDomainIpcAccess": [],
|
||||||
"freezePrototype": false
|
"freezePrototype": false
|
||||||
},
|
},
|
||||||
"trayIcon": {
|
"trayIcon": {
|
||||||
"iconPath": "icons/tray.png"
|
"iconPath": "icons/tray.png"
|
||||||
},
|
},
|
||||||
"macOSPrivateApi": true
|
"macOSPrivateApi": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user