Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • clients/wotwizard-ui
  • manutopik/wotwizard-ui
  • wellno1/wotwizard-ui
3 results
Show changes
Showing
with 1136 additions and 383 deletions
<template>
<aside class="menu shadow position-fixed">
<div class="nav_header pb-3 mb-4">
<nuxt-link :to="localePath('/')" class="d-flex">
<img src="@/assets/img/logo.png" alt="Accueil" class="logo" />
<aside class="menu position-fixed d-flex flex-column border-end">
<div class="mb-4">
<nuxt-link
@click.native="
if (screenwidth < 1200) {
toggleMenu()
}
"
:to="localePath('/')"
class="logo d-flex px-3 pt-3">
<img :src="$icon(512)" alt="Accueil" />
<div>
<h1 class="h2">Wotwizard</h1>
<h1 class="h3">Wotwizard</h1>
<small class="text-muted">{{ $t("slogan") }}</small>
</div>
</nuxt-link>
<div
class="d-flex text-info justify-content-between align-items-baseline mt-3 mx-2">
<div class="">v0.05</div>
<div class="p-3 border-bottom border-2 text-muted">
<ApolloList />
<div class="small mt-2">API graphQL v{{ version }}</div>
<div class="small" v-if="countMax">
{{ $t("bloc.title") }}<span class="font-weight-bold">{{
countMax.number
}}</span>
({{ $d(new Date(countMax.utc0 * 1000), "short") }} {{ $t("time.a") }}
{{ $d(new Date(countMax.utc0 * 1000), "time") }})
({{ $d(new Date(countMax.utc0 * 1000)) }} {{ $t("time.a") }}
{{ new Date(countMax.utc0 * 1000).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) }})
</div>
</div>
<button
type="button"
class="close position-absolute d-xl-none"
aria-label="Close"
@click="toggleMenu">
<span aria-hidden="true">&times;</span>
</button>
class="btn-close position-absolute d-xl-none"
:aria-label="$t('aria.close')"
@click="toggleMenu"></button>
</div>
<nav class="pt-4 rounded">
<nav class="py-2 rounded flex-grow-1">
<NavigationMenuGroup
v-for="menu in menus"
:key="menu.title"
:menu="menu"
@toggleMenu="toggleMenu" />
</nav>
<div class="py-3 text-center">
<button
class="btn btn-secondary btn-sm"
@click="
if (screenwidth < 1200) {
toggleMenu()
}
$router.push(localePath('a-propos'))
">
<solid-terminal-icon
style="width: 0.9rem"
aria-hidden="true" />&nbsp;v{{ version_ww }} |
{{ $t("apropos.title") }}
</button>
</div>
</aside>
</template>
<script>
import pkg from "~/package.json"
import { LAST_BLOCK } from "@/graphql/queries.js"
import { VERSION } from "@/graphql/queries.js"
export default {
data() {
return {
screenwidth: 0,
version_ww: pkg.version
}
},
props: {
menus: Array
},
methods: {
toggleMenu() {
this.$emit("toggleMenu")
},
onResize() {
this.$favourites.fixColumns()
this.screenwidth = window.innerWidth
}
},
apollo: {
$client() {
return this.getApolloClient
},
countMax: {
query: LAST_BLOCK,
error(err) {
this.error = err.message
}
query: LAST_BLOCK
},
version: {
query: VERSION
}
},
mounted() {
this.screenwidth = window.innerWidth
this.$nextTick(function () {
this.onResize()
})
window.addEventListener("resize", this.onResize)
}
}
</script>
<style lang="scss" scoped>
aside {
background: var(--bg-menu-color);
}
nav {
background: var(--background-color-secondary);
overflow-x: hidden;
overflow-y: auto;
scrollbar-width: thin;
}
</style>
<template>
<div class="container pt-5">
<div class="row suivis">
<div class="col">
<div v-if="members && members.length != 0">
<BtnSearch
@erase="search = ''"
v-model="search"
class="col-sm-7 col-md-6 col-lg-5 col-xl-4 mx-auto mb-4" />
<MemberFilter
:selectedStatus.sync="filterStatus"
:selectedCertifStatus.sync="filterCerts"
:type="type" />
<MemberList
defaultSort="date_membership"
:members="filteredMembers"
:id="type" />
<input
type="checkbox"
class="btn-check"
:id="'seeAll' + _uid"
:checked="displayAll"
@click="displayAll = !displayAll" />
<label class="btn mb-3 btn-outline-secondary" :for="'seeAll' + _uid">
<span v-if="!displayAll">{{ $t("suivis.display.all") }}</span>
<span v-else>{{ $t("suivis.display.out") }}</span>
</label>
<button
class="btn btn-danger d-block m-auto mb-3"
v-if="type == 'favoris'"
@click="deleteAllFavorites">
<solid-trash-icon class="icon" aria-hidden="true" />
{{ $t("suivis.supprimer_tous") }}
</button>
</div>
<div class="alert alert-info" v-if="members && members.length == 0">
{{ $t("suivis.none") }}
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
search: "",
filterStatus: [],
filterCerts: "",
displayAll: false,
nbItems: 0
}
},
props: {
type: {
type: String,
default: ""
},
members: {
type: Array,
required: true
}
},
computed: {
filteredMembers() {
return this.members.filter(
(el) =>
(this.displayAll ||
!(
el.status == "MEMBER" &&
this.$options.filters.dateStatus(el.certsLimit) == "success"
)) &&
el.uid.toLowerCase().includes(this.search.toLowerCase()) &&
this.filterStatus.includes(el.status) &&
el.expired == (this.filterCerts == "outdated")
)
}
},
methods: {
deleteAllFavorites() {
if (window.confirm(this.$t("suivis.confirm"))) {
this.$favourites.list = []
localStorage.removeItem("favourites")
}
}
},
mounted() {
this.$emit("update:nbItems", this.filteredMembers.length)
},
watch: {
filteredMembers(n, o) {
this.$emit("update:nbItems", n.length)
},
filterCerts(n, o) {
this.displayAll = n == "outdated"
}
}
}
</script>
<style lang="scss">
.suivis .table-responsive tbody {
max-height: 43.5vh;
}
</style>
{
"AxiomTeam": "https://gql.wotwizard.axiom-team.fr/",
"trentesaux": "https://gql.wotwizard.trentesaux.fr/",
"Pini": "https://wotwizard.pini.fr/"
}
......@@ -25,6 +25,12 @@ export const cache = new InMemoryCache({
return `${object.member.hash}:${object.date}:${object.after}:${object.proba}`
case "GroupId":
return `${object.id.hash}`
case "CertHist":
return `${object.id.uid}:${object.hist[0].block.number}`
case "CertEvent":
return `${object.in}:${object.block.number}`
case "Block":
return `${object.number}`
default:
return defaultDataIdFromObject(object) // fall back to default handling
}
......
import { HttpLink } from 'apollo-link-http'
import { setContext } from 'apollo-link-context'
import { from } from 'apollo-link'
import { ENDPOINT1 } from './endpoints'
import { cache } from '../cache'
export default ctx => {
const ssrMiddleware = setContext((_, { headers }) => {
if (process.client) return headers
return {
headers
}
})
const httpLink = new HttpLink({
uri: ENDPOINT1
})
const link = from([ssrMiddleware, httpLink])
return {
link,
cache,
// https://github.com/nuxt-community/apollo-module/issues/306#issuecomment-607225431
defaultHttpLink: false
}
}
\ No newline at end of file
module.exports = {
ENDPOINT1: 'https://wwgql.coinduf.eu',
ENDPOINT2: 'https://myserver.com'
}
\ No newline at end of file
import { HttpLink } from 'apollo-link-http'
import { setContext } from 'apollo-link-context'
import { from } from 'apollo-link'
import { ENDPOINT2 } from './endpoints'
import { cache } from '../cache'
export default ctx => {
const ssrMiddleware = setContext((_, { headers }) => {
if (process.client) return headers
return {
headers
}
})
const httpLink = new HttpLink({
uri: ENDPOINT2
})
const link = from([ssrMiddleware, httpLink])
return {
link,
cache,
// https://github.com/nuxt-community/apollo-module/issues/306#issuecomment-607225431
defaultHttpLink: false
}
}
\ No newline at end of file
# WotWizard GraphQL TypeSystem
# https://git.duniter.org/gerard94/WotWizard/-/blob/master/Help/TypeSystem.txt
type Query {
......@@ -29,14 +30,14 @@ type Query {
"'wwResult' displays the content of the WotWizard window"
wwResult: WWResult!
"'memEnds' displays the list of members, among the reference list 'group', who are about to loose their memberships, in the increasing order of event dates (bct); 'startFromNow' gives the period (in seconds) before the beginning of the list (0 if absent or null) , and 'period' gives the period covered by the list (infinite if absent or null). If 'group' is null or empty, the reference list is the whole Web Of Trust; if any string in 'group' is empty or doesn't refer to a known identity, it's not taken into account for the calculation, and, furthermore, if it is not empty and unknown, an error is raised"
"'memEnds' displays the list of members, among the reference list 'group', who are about to loose their memberships, in the increasing order of event dates (bct); 'startFromNow' gives the period (in seconds) before the beginning of the list (0 if absent or null) , and 'period' gives the period covered by the list (infinite if absent or null). If 'group' is null or empty, the reference list is the whole Web Of Trust; if any string in 'group' is empty or doesn't refer to an identity known by the blockchain, it's not taken into account for the calculation, and, furthermore, if it is not empty and unknown to the blockchain, an error is raised"
memEnds (group: [String!], startFromNow: Int64, period: Int64): [Identity!]!
"'missEnds' displays the list of identities, among the reference list 'group', who are MISSING and about to be revoked, in the increasing order of event dates (bct); 'startFromNow' gives the period (in seconds) before the beginning of the list (0 if absent or null) , and 'period' gives the period covered by the list (infinite if absent or null). If 'group' is null or empty, the reference list is the whole Web Of Trust; if any string in 'group' is empty or doesn't refer to a known identity, it's not taken into account for the calculation, and, furthermore, if it is not empty and unknown, an error is raised"
"'missEnds' displays the list of identities, among the reference list 'group', who are MISSING and about to be revoked, in the increasing order of event dates (bct); 'startFromNow' gives the period (in seconds) before the beginning of the list (0 if absent or null) , and 'period' gives the period covered by the list (infinite if absent or null). If 'group' is null or empty, the reference list is the whole Web Of Trust; if any string in 'group' is empty or doesn't refer to an identity known by the blockchain, it's not taken into account for the calculation, and, furthermore, if it is not empty and unknown to the blockchain, an error is raised"
missEnds (group: [String!], startFromNow: Int64, period: Int64): [Identity!]!
"'certEnds' displays the list of identities , among the reference list 'group', who are MEMBER or (possibly) MISSING and about to loose their 'ParameterName.sigQty'th oldest certification, in the increasing order of event dates (bct); 'startFromNow' gives the period (in seconds) before the beginning of the list (0 if absent or null) , and 'period' gives the period covered by the list (infinite if absent or null). If 'group' is null or empty, the reference list is the whole Web Of Trust; if any string in 'group' is empty or doesn't refer to a known identity, it's not taken into account for the calculation, and, furthermore, if it is not empty and unknown, an error is raised"
certEnds (group: [String!], startFromNow: Int64, period: Int64, missingIncluded: Boolean! = true): [DatedIdentity!]!
"'certEnds' displays the list of identities , among the reference list 'group', who are MEMBER or (possibly) MISSING and about to loose their 'ParameterName.sigQty'th oldest certification, in the increasing order of event dates (bct); 'startFromNow' gives the period (in seconds) before the beginning of the list (0 if absent or null) , and 'period' gives the period covered by the list (infinite if absent or null). If 'group' is null or empty, the reference list is the whole Web Of Trust; if any string in 'group' is empty or doesn't refer to an identity known by the blockchain, it's not taken into account for the calculation, and, furthermore, if it is not empty and unknown to the blockchain, an error is raised"
certEnds (group: [String!], startFromNow: Int64, period: Int64, missingIncluded: Boolean! = true): [Identity!]!
"'countMin' gives the first block of the blockchain"
countMin: Block!
......@@ -80,16 +81,16 @@ type Query {
"'version' returns a string describing the version of the graphQL server"
version: String!
"'calcDist' returns the distance of the identity whose pseudo is 'uid' when the members 'certifiers' are added to her own certifiers. 'uid' may be any string, even null or empty; if 'uid' is null or empty or doesn't refer to a known identity, it's not taken into account for the calculation, and, furthermore, if it is not null, not empty and unknown, an error is raised; the same for any string in 'certifiers'"
"'calcDist' returns the distance of the identity whose pseudo is 'uid' when the members 'certifiers' are added to her own certifiers. 'uid' may be any string, even null or empty; if 'uid' is null or empty or doesn't refer to a known identity, it's not taken into account for the calculation, and, furthermore, if it is not null, not empty and unknown, an error is raised; the same for any string in 'certifiers', which must also correspond to a member"
calcDist (uid: String, certifiers: [String!]): Distance!
"'calcQual' returns the quality of the identity whose pseudo is 'uid' when the members 'certifiers' are added to her own certifiers. 'uid' may be any string, even null or empty; if 'uid' is null or empty or doesn't refer to a known identity, it's not taken into account for the calculation, and, furthermore, if it is not null, not empty and unknown, an error is raised; the same for any string in 'certifiers'"
"'calcQual' returns the quality of the identity whose pseudo is 'uid' when the members 'certifiers' are added to her own certifiers. 'uid' may be any string, even null or empty; if 'uid' is null or empty or doesn't refer to a known identity, it's not taken into account for the calculation, and, furthermore, if it is not null, not empty and unknown, an error is raised; the same for any string in 'certifiers', which must also correspond to a member"
calcQual (uid: String, certifiers: [String!]): Fraction!
"'bestDist' returns a list of members, among the reference list 'group', who could certify the identity whose pseudo is 'uid', together with the distance such a certification would give to the identity. 'certifiers' is a list of members supposed having already certified the identity in addition to her own certifiers. If 'group' is null or empty, the reference list is the whole Web Of Trust. 'uid' may be any string, even null or empty; if 'uid' is null or empty or doesn't refer to a known identity, it's not taken into account for the calculation, and, furthermore, if it is not null, not empty and unknown, an error is raised; the same for any string in 'group' or 'certifiers', and, furthermore, if the latter is not empty, it should refer to a member. 'answerNb' is the greatest number of answers in the result. If 'answerNb' is null, zero or negative, all answers are returned. Answers are sorted in the decreasing order of 'IdDist.dist.value.ratio'"
"'bestDist' returns a list of members, among the reference list 'group', who could certify the identity whose pseudo is 'uid', together with the distance such a certification would give to the identity. 'certifiers' is a list of members supposed having already certified the identity in addition to her own certifiers. If 'group' is null or empty, the reference list is the whole Web Of Trust. 'uid' may be any string, even null or empty; if 'uid' is null or empty or doesn't refer to an identity known by the blockchain, it's not taken into account for the calculation, and, furthermore, if it is not null, not empty and unknown to the blockchain, an error is raised; the same for any string in 'group' or 'certifiers', and, furthermore, if the latter is not empty, it should refer to a member. 'answerNb' is the greatest number of answers in the result. If 'answerNb' is null, zero or negative, all answers are returned. Answers are sorted in the decreasing order of 'IdDist.dist.value.ratio'"
bestDist (group: [String!], uid: String, certifiers: [String!], answerNb: Int): [IdDist!]!
"'bestQual' returns a list of members, among the reference list 'group', who could certify the identity whose pseudo is 'uid', together with the quality such a certification would give to the identity. 'certifiers' is a list of members supposed having already certified the identity in addition to her own certifiers. If 'group' is null or empty, the reference list is the whole Web Of Trust. 'uid' may be any string, even null or empty; if 'uid' is null or empty or doesn't refer to a known identity, it's not taken into account for the calculation, and, furthermore, if it is not null, not empty and unknown, an error is raised; the same for any string in 'group' or 'certifiers', and, furthermore, if the latter is not empty, it should refer to a member. 'answerNb' is the greatest number of answers in the result. If 'answerNb' is null, zero or negative, all answers are returned. Answers are sorted in the decreasing order of 'IdQual.qual.ratio'"
"'bestQual' returns a list of members, among the reference list 'group', who could certify the identity whose pseudo is 'uid', together with the quality such a certification would give to the identity. 'certifiers' is a list of members supposed having already certified the identity in addition to her own certifiers. If 'group' is null or empty, the reference list is the whole Web Of Trust. 'uid' may be any string, even null or empty; if 'uid' is null or empty or doesn't refer to an identity known by the blockchain, it's not taken into account for the calculation, and, furthermore, if it is not null, not empty and unknown to the blockchain, an error is raised; the same for any string in 'group' or 'certifiers', and, furthermore, if the latter is not empty, it should refer to a member. 'answerNb' is the greatest number of answers in the result. If 'answerNb' is null, zero or negative, all answers are returned. Answers are sorted in the decreasing order of 'IdQual.qual.ratio'"
bestQual (group: [String!], uid: String, certifiers: [String!], answerNb: Int): [IdQual!]!
} #Query
......@@ -123,28 +124,42 @@ type Subscription {
} #Subscription
"Output of Query.filterGroup, used with a list of statuses; 'selected' owns the uid(s) of identities whose statuses are in the list, 'others' owns those who are not in the list, and 'unknown' corresponds to unknown identities."
"Output of Query.filterGroup, used with a list of statuses; 'selected' owns the uid(s) of identities whose statuses are in the list, 'others' owns those who are not in the list, and 'unknown' corresponds to unknown identities; 'duplicate' displays all uid(s) with multiple occurrences in the original list."
type GroupFilter {
selected: [String!]!
others: [Error!]!
unknown: [Error!]!
duplicate: [Error!]!
"List of identities in the group whose statuses have been selected"
selected: [GroupId!]!
"List of identities in the group whose statuses have not been selected"
others: [GroupId!]!
"List of uid(s) in the group who were not found"
unknown: [GroupString!]!
"List of uid(s) with multiple occurrences in the original group"
duplicate: [GroupString!]!
} #Group_Filter
type Error {
mes: String!
path: [FieldOrRank!]!
} #Error
type GroupId {
"Found Identity"
id: Identity!
"Index in the original list, starting from 0"
index: Int!
union FieldOrRank = Field | Rank
} #GroupId
type Field {
name: String!
} #Field
type GroupString {
type Rank {
"Uid whose identity has or has not been found"
uid: String!
"Index in the original list, starting from 0"
index: Int!
} #Rank
} #GroupString
"WoT identity"
type Identity {
......@@ -179,6 +194,9 @@ type Identity {
"Limit date of the membership application; null for REVOKED; limit date before revocation for MISSING"
limitDate: Int64
"Limit date of the 'ParameterName.sigQty'th oldest received certification; or null if less than 'ParameterName.sigQty' certifications received; null for REVOKED and NEWCOMER"
certsLimit: Int64
"Member is leaving? null for REVOKED or NEWCOMER"
isLeaving: Boolean
......@@ -186,7 +204,7 @@ type Identity {
sentry: Boolean
"Active received certifications, sorted by increasing pubkeys"
received_certifications: Received_Certifications!
received_certifications: [Certification!]!
"Active sent certifications, sorted by increasing pubkeys"
sent_certifications: [Certification!]!
......@@ -229,17 +247,6 @@ type Identity {
} #Identity
"The association of 'Identity' and date"
type DatedIdentity {
"Identity"
id: Identity!
"Associated date"
date: Int64!
}
"Status of an identity in WoT"
enum Identity_Status {
......@@ -299,17 +306,6 @@ type IdSearchOutput {
} #IdSearchOutput
"Certifications received by an identity"
type Received_Certifications {
"List of all valid received certifications"
certifications: [Certification!]!
"Limit date of the 'ParameterName.sigQty'th oldest received certification; or null if less than 'ParameterName.sigQty' certifications received"
limit: Int64
} #received_Certifications
"Certification sent by 'from' and received by 'to'"
type Certification {
......@@ -595,7 +591,7 @@ type Forecast {
"Entry or exit of an identity"
type EventId {
member: Identity!
id: Identity!
"Entry or exit; true if entry"
inOut: Boolean!
......@@ -734,16 +730,16 @@ type Fraction {
} #fraction
"64 bits signed integer"
scalar Int64
scalar Int64 @specifiedBy(url: "https://go.dev/ref/spec#Numeric_types")
"Avatar of String"
scalar Hash
scalar Hash @specifiedBy(url: "https://git.duniter.org/nodes/common/doc/blob/master/rfc/0009_Duniter_Blockchain_Protocol_V11.md")
"Avatar of String"
scalar Pubkey
scalar Pubkey @specifiedBy(url: "https://git.duniter.org/nodes/common/doc/blob/master/rfc/0009_Duniter_Blockchain_Protocol_V11.md#public-key")
"Empty result"
scalar Void
"Int, Int64 or Float"
scalar Number
\ No newline at end of file
scalar Number @specifiedBy(url: "https://ieeexplore.ieee.org/document/4610935")
const { HttpLink } = require("apollo-link-http");
const { setContext } = require("apollo-link-context");
const { from } = require("apollo-link");
const { cache } = require("../cache");
const ssrMiddleware = setContext((_, { headers }) => {
if (process.client) return headers;
return { headers };
});
const httpLink = new HttpLink({ uri: "https://gql.wotwizard.axiom-team.fr/" });
const link = from([ssrMiddleware, httpLink]);
module.exports = () => ({
link,
cache,
defaultHttpLink: false
});
const { HttpLink } = require("apollo-link-http");
const { setContext } = require("apollo-link-context");
const { from } = require("apollo-link");
const { cache } = require("../cache");
const ssrMiddleware = setContext((_, { headers }) => {
if (process.client) return headers;
return { headers };
});
const httpLink = new HttpLink({ uri: "https://wotwizard.pini.fr/" });
const link = from([ssrMiddleware, httpLink]);
module.exports = () => ({
link,
cache,
defaultHttpLink: false
});
const { HttpLink } = require("apollo-link-http");
const { setContext } = require("apollo-link-context");
const { from } = require("apollo-link");
const { cache } = require("../cache");
const ssrMiddleware = setContext((_, { headers }) => {
if (process.client) return headers;
return { headers };
});
const httpLink = new HttpLink({ uri: "https://gql.wotwizard.trentesaux.fr/" });
const link = from([ssrMiddleware, httpLink]);
module.exports = () => ({
link,
cache,
defaultHttpLink: false
});
{
"__schema": {
"types": [
{
"kind": "UNION",
"name": "CertifOrDossier",
"possibleTypes": [
{ "name": "MarkedDatedCertification" },
{ "name": "MarkedDossier" }
]
},
{
"kind": "INTERFACE",
"name": "File",
"possibleTypes": [{ "name": "FileS" }]
},
{
"kind": "INTERFACE",
"name": "WWResult",
"possibleTypes": [{ "name": "WWResultS" }]
}
]
}
}
{"__schema":{"types":[{"kind":"UNION","name":"CertifOrDossier","possibleTypes":[{"name":"MarkedDatedCertification"},{"name":"MarkedDossier"}]},{"kind":"INTERFACE","name":"File","possibleTypes":[{"name":"FileS"}]},{"kind":"INTERFACE","name":"WWResult","possibleTypes":[{"name":"WWResultS"}]}]}}
\ No newline at end of file
const fs = require('fs');
const path = require('path');
const endpoints = require('../endpoints.json');
const endpointDir = path.join(__dirname, 'endpoints');
const recreateDirectory = (directory) => {
if (fs.existsSync(directory)) {
fs.rmSync(directory, { recursive: true, force: true });
}
fs.mkdirSync(directory, { recursive: true });
};
recreateDirectory(endpointDir);
const configTemplate = (uri) => `
const { HttpLink } = require("apollo-link-http");
const { setContext } = require("apollo-link-context");
const { from } = require("apollo-link");
const { cache } = require("../cache");
const ssrMiddleware = setContext((_, { headers }) => {
if (process.client) return headers;
return { headers };
});
const httpLink = new HttpLink({ uri: "${uri}" });
const link = from([ssrMiddleware, httpLink]);
module.exports = () => ({
link,
cache,
defaultHttpLink: false
});
`;
Object.keys(endpoints).forEach(key => {
const filePath = path.join(endpointDir, `${key}.js`);
const fileContent = configTemplate(endpoints[key]);
fs.writeFileSync(filePath, fileContent);
});
import gql from "graphql-tag"
export const VERSION = gql`
query Version {
version
}
`
// Pour la sidebar
export const LAST_BLOCK = gql`
query LastBlock {
......@@ -23,7 +29,14 @@ export const LAST_EVENTS = gql`
uid
status
hash
minDatePassed
minDate
certsLimit
limitDate
quality {
__typename
ratio
}
history {
__typename
in
......@@ -32,9 +45,9 @@ export const LAST_EVENTS = gql`
number
}
}
received_certifications {
sent_certifications {
__typename
limit
pending
}
}
inOut
......@@ -43,6 +56,7 @@ export const LAST_EVENTS = gql`
__typename
number
}
number
}
}
`
......@@ -63,11 +77,8 @@ export const NEWCOMERS = gql`
uid
status
hash
certsLimit
limitDate
received_certifications {
__typename
limit
}
}
date
after
......@@ -77,7 +88,7 @@ export const NEWCOMERS = gql`
}
`
// Pour la page membres/index
// Pour la page membre
export const SEARCH_MEMBERS = gql`
query SearchMember($hint: String) {
idSearch(with: { hint: $hint }) {
......@@ -87,18 +98,25 @@ export const SEARCH_MEMBERS = gql`
pubkey
uid
status
minDate
minDatePassed
hash
certsLimit
limitDate
received_certifications {
quality {
__typename
limit
ratio
}
sent_certifications {
__typename
pending
}
}
}
}
`
// Pour la page membres/_hash
// Pour la page membre
export const SEARCH_MEMBER = gql`
query SearchMemberWithHash($hash: Hash!) {
idFromHash(hash: $hash) {
......@@ -107,6 +125,12 @@ export const SEARCH_MEMBER = gql`
isLeaving
sentry
membership_pending
all_certifiersIO {
...IO
}
all_certifiedIO {
...IO
}
distanceE {
__typename
value {
......@@ -125,14 +149,11 @@ export const SEARCH_MEMBER = gql`
}
received_certifications {
__typename
certifications {
__typename
from {
...attr
}
expires_on
pending
from {
...attr
}
expires_on
pending
}
sent_certifications {
__typename
......@@ -148,7 +169,9 @@ export const SEARCH_MEMBER = gql`
__typename
uid
hash
pubkey
status
certsLimit
limitDate
minDate
minDatePassed
......@@ -156,9 +179,24 @@ export const SEARCH_MEMBER = gql`
__typename
ratio
}
received_certifications {
sent_certifications {
__typename
pending
}
}
fragment IO on CertHist {
__typename
id {
...attr
}
hist {
__typename
limit
in
block {
__typename
number
utc0
}
}
}
`
......@@ -174,9 +212,9 @@ export const PARAMS = gql`
}
}
`
// Pour la page favoris
export const FAVORIS = gql`
query getFavoris($group: [String!]!) {
// Pour la page des suivis
export const MEMBERS = gql`
query getMembers($group: [String!]!) {
filterGroup(group: $group) {
__typename
selected {
......@@ -199,27 +237,75 @@ export const FAVORIS = gql`
uid
status
hash
certsLimit
limitDate
received_certifications {
minDatePassed
minDate
quality {
__typename
ratio
}
sent_certifications {
__typename
limit
pending
}
}
`
// Pour la page index
// Pour la page previsions/futures_sorties
export const NEXT_EXITS = gql`
query NextExits($group: [String!], $start: Int64, $period: Int64) {
memEnds (group: $group, startFromNow: $start, period: $period) {
memEnds(group: $group, startFromNow: $start, period: $period) {
__typename
pubkey
uid
status
hash
minDatePassed
minDate
certsLimit
limitDate
received_certifications {
quality {
__typename
limit
ratio
}
sent_certifications {
__typename
pending
}
}
}
`
// Pour la page previsions/futures_sorties
export const NEXT_LOOSE_CERTS = gql`
query NextLoseCerts(
$group: [String!]
$start: Int64
$period: Int64
$missingIncluded: Boolean
) {
certEnds(
group: $group
startFromNow: $start
period: $period
missingIncluded: $missingIncluded
) {
__typename
pubkey
uid
status
hash
minDatePassed
minDate
certsLimit
limitDate
quality {
__typename
ratio
}
sent_certifications {
__typename
pending
}
}
}
......
const { ENDPOINT1 } = require('./clients/endpoints');
const fetch = require('node-fetch');
const fs = require('fs');
const fetch = (...args) => import('node-fetch').then(({ default: fetch }) => fetch(...args));
const fs = require("fs")
fetch(ENDPOINT1, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
variables: {},
query: `
fetch("https://gql.wotwizard.trentesaux.fr/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
variables: {},
query: `
{
__schema {
types {
......@@ -19,21 +18,28 @@ fetch(ENDPOINT1, {
}
}
}
`,
}),
`
})
})
.then(result => result.json())
.then(result => {
const filteredData = result.data.__schema.types.filter(
type => type.possibleTypes !== null
)
result.data.__schema.types = filteredData;
.then((result) => result.json())
.then((result) => {
const filteredData = result.data.__schema.types.filter(
(type) => type.possibleTypes !== null
)
result.data.__schema.types = filteredData
fs.writeFile('./graphql/fragmentTypes.json', JSON.stringify(result.data), err => {
if (err) {
console.error('Error writing fragmentTypes file', err);
} else {
console.log('Fragment types successfully extracted!');
}
});
});
\ No newline at end of file
fs.writeFile(
"./graphql/fragmentTypes.json",
JSON.stringify(result.data),
(err) => {
if (err) {
console.error("Error writing fragmentTypes file", err)
} else {
console.log("Fragment types successfully extracted!")
}
}
)
})
.catch(function (error) {
console.log(error.message)
})
import en from './locales/en.json'
import fr from './locales/fr.json'
import es from './locales/es.json'
import { dateTimeFormats } from './locales/dateTimeFormats'
import { dateTimeFormats } from "./locales/dateTimeFormats"
export default {
fallbackLocale: 'en',
dateTimeFormats,
messages: { en, fr, es }
}
\ No newline at end of file
dateTimeFormats
}
const objTime = {
short: {
day: "2-digit",
month: "2-digit",
year: "2-digit"
},
long: {
day: "numeric",
month: "long",
year: "numeric"
},
hour: {
hour: "numeric"
},
min: {
minute: "2-digit"
},
time: {
hour: "numeric",
minute: "2-digit",
hour12: false
}
}
export const dateTimeFormats = {
'fr': {
short: {
day: 'numeric',
month: 'short',
year: '2-digit'
},
long: {
day: 'numeric',
month: 'long',
year: 'numeric',
},
hour: {
hour: 'numeric'
},
min: {
minute: '2-digit'
},
time: {
hour: 'numeric',
minute: '2-digit',
hour12: false,
}
},
'en': {
short: {
day: 'numeric',
month: 'short',
year: '2-digit'
},
long: {
month: 'long',
day: 'numeric',
year: 'numeric',
},
hour: {
hour: 'numeric'
},
min: {
minute: '2-digit'
},
time: {
hour: 'numeric',
minute: '2-digit',
hour12: true,
}
},
'es': {
short: {
day: 'numeric',
month: 'short',
year: '2-digit'
},
long: {
day: 'numeric',
month: 'long',
year: 'numeric',
},
hour: {
hour: 'numeric'
},
min: {
minute: '2-digit'
},
time: {
hour: 'numeric',
minute: '2-digit',
hour12: false,
}
}
}
\ No newline at end of file
de: objTime,
en: objTime,
es: objTime,
fr: objTime,
it: objTime
}
{
"accueil": "Home",
"actuellement": {
"debut": "Derzeit gibt es",
"fin": "Mitglieder im Vertrauensnetz"
},
"adhesion": {
"desc": "Aufnahme im Vertrauensnetz. Die Mitgliedschaft ist ein Jahr lang gültig und muss erneuert werden, wenn man weiterhin seine Universaldividende mitproduzieren möchte.",
"title": "Mitgliedschaft"
},
"alert": {
"attenteCertifiers": "Warten auf Zertifizierer",
"attention": "Warnung",
"certStockLim": "Dieses Konto hat nur <b>{n} Zertifizierung</b> auf Lager. | Dieses Konto hat nur <b>{n} Zertifizierungen</b> auf Lager.",
"certifManquantes": "Diesem Konto fehlen <b>{n} Zertifizierung</b>, um Mitglied zu werden. | Diesem Konto fehlen <b>{n} Zertifizierungen</b>, um Mitglied zu werden.",
"certifManquantesBientot": "Dieses Konto hat bald <b>keine Zertifizierungen mehr</b>.",
"distKO": "Dieses Konto verstößt gegen die <b>Abstandsregel</b>.",
"dossierKOtitle": "Unvollständige Datei",
"dossierOK": "Die Datei für dieses Konto ist <b>vollständig</b> und wird <b>bald Mitglied</b>.",
"dossierOKtitle": "Komplette Datei",
"information": "Information",
"missing": "Dieses Konto hat seine Mitgliedschaft verloren. Er hat <b>{n} Tag</b> Zeit, um die Mitgliedschaft erneut zu beantragen, bevor er automatisch widerrufen wird. | Dieses Konto hat seine Mitgliedschaft verloren. Er hat <b>{n} Tage</b> Zeit, um die Mitgliedschaft erneut zu beantragen, bevor er automatisch widerrufen wird.",
"noMoreCert": "Dieses Konto hat <b>keine weiteren Zertifizierungen</b> auf Lager.",
"notAllCertifiersDispo": "Mindestens ein Zertifizierer ist <b>nicht verfügbar</b>.",
"notAvailable": "Dieses Mitglied ist zur Zertifizierung <b>nicht verfügbar</b>.",
"renew": "Dieses Konto muss seine Mitgliedschaft <b>erneuern</b>.",
"revoked": "Dieses Konto wurde <b>aufgehoben</b> und kann nicht länger Mitglied werden."
},
"apropos": {
"alert": "Die von der Anwendung angezeigten Daten stammen von einem <a href='https://git.duniter.org/gerard94/WotWizard' target='_blank' class='alert-link'>Wotwizard-Server mit graphQL-Technologie</a> und hängen vom abgefragten Duniter-Knoten ab. Aus diesem Grund können Daten, die noch nicht in die Blockchain geschrieben wurden, von Anwendung zu Anwendung unterschiedlich sein.",
"bienvenue": "Willkommen im Wotwizard!",
"contribuer": "Der Quellcode von Wotwizard befindet sich auf <a href=\"https://git.duniter.org/clients/wotwizard-ui\" target=\"_blank\">unserem Gitlab-Server</a>. Zögern Sie nicht, dort Fehler oder Verbesserungsvorschläge auf der <a href=\"https://git.duniter.org/clients/wotwizard-ui/-/issues\" target=\"_blank\"><b>Issues</b>-Seite</a> zu melden.",
"deploiement": "Deployment:",
"desc": "Dieses Tool ermöglicht es Ihnen, die Bei- und Austritte des Vertrauensnetzes der freien Währung Ğ1 zu verfolgen und ist das Ergebnis einer Zusammenarbeit zwischen verschiedenen Entwicklende und Nutzende der Währung. Zögern Sie nicht, sich bei ihnen mit einer Spende auf den folgenden öffentlichen Schlüssel zu bedanken:",
"developpeurs": "Entwicklung:",
"graphql": "API grahQL",
"participants": "Mitwirkende des Projekts:",
"testeurs": "Testung:",
"title": "Apropos",
"traducteurs": "Übersetzung:"
},
"aria": {
"ariane": "Brotkrümel",
"clipboard": "In die Zwischenablage kopieren",
"close": "Nah dran",
"closemenu": "Menü schließen",
"openmenu": "Menü öffnen",
"scrolltotop": "Zurück nach oben",
"themedark": "Wechseln Sie zum dunklen Thema",
"themelight": "Wechseln Sie zum Lichtdesign"
},
"aurevoir": "Auf Wiedersehen",
"bienvenue": "Willkommen",
"bloc": {
"desc": "Datei, die unveränderbare Transaktionen (Geldschöpfung, Überweisungen und Zertifizierungen im Fall von Duniter) enthält und Teil der Blockchain ist",
"title": "Block"
},
"blockchain": {
"desc": "Gesamtheit der Blöcke, die von den Knoten des Duniter-Netzwerks berechnet werden",
"title": "Blockchain (dt. Blockkette)"
},
"centralite": {
"desc": "Die Zentralität ermöglicht es, die Bedeutung und den Einfluss eines Mitglieds im Vertrauensnetz zu erkennen. Sie wird berechnet, indem man zählt wie häufig ein Mitglied auf dem kürzesten Weg zwischen zwei beliebigen anderen Mitgliedern des Vertrauensnetzes ist. Als Pfad nimmt man die Verkettung von Zertifizierungen zwischen den Mitgliedern.",
"title": "Zentralität"
},
"certification": {
"afficher": "Zertifizierungen Anzeigen",
"desc": "In der Blockchain gespeicherte Bestätigung einer Person, dass sie einer anderen vertraut. Eine Zertifizierung ist zwei Jahre lang gültig.",
"enattente": "Warten auf Behandlung",
"encours": "Aktuell gültig",
"envoyees": "Ausgestellte Zertifizierungen",
"masquer": "Zertifizierungen Verstecken",
"perimees": "Erneuern",
"recues": "Erhaltene Zertifizierungen",
"title": "Zertifizierung"
},
"chargement": "Laden",
"cle": {
"privee": {
"desc": "Geheimer Schlüssel, mit dem Dokumente signiert werden können (eine Transaktion durchführen, eine Zertifizierung ausstellen usw.). Er ist mathematisch mit dem öffentlichen Schlüssel verknüpft.",
"title": "Privater Schlüssel"
},
"publique": {
"desc": "Ähnlich wie eine Kontonummer. Er ist derjenige, den Sie angeben, um zertifiziert zu werden oder eine Zahlung zu erhalten. Er ist mathematisch mit dem privaten Schlüssel verknüpft.",
"title": "Öffentlicher Schlüssel"
}
},
"compte": {
"membre": {
"desc": "Zertifiziertes Konto, das an einem Mitglied gebunden ist. Nur ein Mitgliedskonto kann die Währung über die Universaldividende mitproduzieren und über die Duniter-Software in die Blockchain schreiben.",
"title": "Mitgliedskonto"
},
"portefeuille": {
"desc": "Konto, das mit einem öffentlichen Schlüssel verbunden ist, der nicht Mitglied ist. Das heißt, es ist nicht Teil des Vertrauensnetzes und produziert die Universaldividende nicht mit. Dies kann einen Neuankömmling betreffen, der sein Konto später in ein Mitgliedskonto umwandeln möchte, oder um den Bedürfnissen der persönlichen Verwaltung, von Vereinen, für Unternehmen usw. gerecht zu werden.",
"title": "Wallet Konto"
}
},
"copie": "Kopiert",
"date": "Datum",
"description": "Beschreibung",
"dev": "In Entwicklung",
"dividende": {
"desc": "Anteil der von allen Mitgliedern des Vertrauensnetzes produzierten Währung, die zur Bewahrung der räumlichen und zeitlichen Symmetrie berechnet wurde. Seine vereinfachte theoretische jährliche Formel lautet: DU = c × M/N, wobei c die Wachstumsrate pro Jahr (10%), M die Geldmenge und N die Anzahl der Mitglieder ist.",
"title": "Universaldividende (UD)"
},
"dossier": {
"attente": "Kein Antrag in der Warteschleife | 1 Antrag in der Warteschleife | {n} Anträge in der Warteschleife",
"desc": "Ein Mitgliedschaftsantrag, der in Bearbeitung ist. Der Antrag ist eine Sammlung von Dokumenten, anhand derer Duniter feststellen kann, ob ein neues Mitglied alle Regeln des Vertrauensnetzes einhält.",
"title": "Antrag"
},
"duniter": {
"desc": "Eine Blockchain-verwendende Kryptowährungssoftware, die der Relativtheorie der Währung (RTW) entspricht und das Vertrauensnetz zur Identifizierung der mitproduzierenden Mitglieder nutzt.",
"title": "Duniter"
},
"expire": "Ablaufdatum",
"filter": {
"certif": "Nach Zertifizierungsstatus filtern",
"statut": "Nach Mitgliedsstatus filtern"
},
"infos": "Informationen",
"inout": "Bei- und Austritte des Vertrauensnetz in den 2 letzten Tagen",
"inpreparation": "In Vorbereitung",
"jours": "1 Tag | {n} Tagen",
"jours_avant": "< 24h | vor {n} Tagen",
"lang": "Wähle deine Sprache",
"lexique": "Lexikon",
"membre": {
"calculant": {
"desc": "Mitglied, das seinen privaten Schlüssel zum Schürfen von Blöcken mithilfe von Duniter verwendet.",
"title": "Berechnendes Mitglied"
},
"datelimadhesion": {
"desc": "Datum, vor dem das Konto seinen Mitgliedsstatus verliert, wenn keine Verlängerungsanfrage gestellt wurde",
"title": "Beitrittsfrist"
},
"datelimpertestatut": "Verlust der Mitgliedschaft",
"datelimrevoc": {
"desc": "Datum, vor dem das Konto automatisch gesperrt wird, wenn keine Verlängerungsanfrage gestellt wurde",
"title": "Frist vor dem Widerruf"
},
"datemanquecertifs": {
"desc": "Datum, an dem das Konto keine Zertifizierungen mehr hat",
"title": "Fehlende Zertifizierungen"
},
"desc": "Einzelperson, die in das Vertrauensnetz beigetreten ist, die die fünf erforderlichen Zertifizierungen erhalten hat und die Distanzregel einhält. Ein Mitglied schöpft die Währung über seine Universaldividende mit",
"dispo": "Kann zertifizieren",
"dispocertif": {
"desc": "Ein Mitglied kann eine Bescheinigung erst 5 Tage nach Bearbeitung der letzten ausstellen. Senden Sie jeweils nur eine Bescheinigung, um den Beitritt neuer Mitglieder zu erleichtern",
"title": "Verfügbarkeit"
},
"disponibilite": "Verfügbarkeit",
"distance": {
"desc": "Anteil der referierenden Mitglieder, die in höchstens 5 Sprüngen im Vertrauensnetz erreichbar sind. Um Mitglied zu werden, diese Rate muss größer oder gleich 80 % sein",
"title": "Distanz"
},
"nb_certifs": {
"desc": "Jedes Mitglied hat einen Bestand von 100 gültigen Zertifizierungen",
"title": "Anzahl verfügbare Zertifizierungen"
},
"nodispo": "Kann nicht zertifizieren",
"qualite": {
"desc": "Anteil der referierenden Mitglieder, die in 4 oder weniger Sprüngen im Vertrauensnetz erreichbar sind. Ein Mitglied, dessen Qualität über 80% liegt, kann sicherstellen, dass seine Zertifizierten die Distanzregel einhalten",
"title": "Qualität"
},
"referent": {
"desc": "Mitglied, das <code>CEIL(N<sup>(1/stepMax)</sup>)</code> Zertifizierungen ausgestellt UND erhalten hat, die von der Gesamtzahl der Mitglieder abhängt. Dieser Status bietet keine Vorteile, ermöglicht aber die Sicherung des Vertrauensnetzes, insbesondere durch die Distanzregel",
"title": "Referierendes Mitglied"
},
"title": "Mitglied",
"voirinfos": "Mitgliedsinformationen anzeigen"
},
"membres": "Mitglieder",
"meta": {
"description": "Überprüfen Sie die Ein- und Ausgänge des Vertrauensnetzes der freien Währung Ğ1"
},
"mot": "Wort oder Ausdruck",
"noeud": {
"desc": "Computer, der die Duniter-Software verwendet, um an der Blockchain teilzunehmen. Ein Mitgliedsknoten kann neue Blöcke erstellen und wird von einem rechnenden Mitglied zur Verfügung gestellt, während ein Nicht-Mitgliedsknoten keine neuen Blöcke erstellen kann und an der Ausfallsicherheit des Netzwerks teilnimmt",
"title": "Knoten"
},
"nom": "Name",
"non": "Nein",
"oui": "Ja",
"params": {
"breadcrumb": "Parameter",
"name": {
"avgGenTime": "Erhofft durchschnittliche Zeit zum Schreiben eines Blocks",
"c": "Relatives Wachstum der UD für jeden Zeitraum <code>dtReeval</code>",
"dt": "Zeitraum zwischen 2 UD",
"dtDiffEval": "Anzahl Blöcke, die vor einer erneuten Bewertung der Mindestschwierigkeit des Proof of Work erforderlich sind",
"dtReeval": "Zeitraum zwischen zwei Neubewertungen der UD",
"idtyWindow": "Maximale Zeitraum, der eine Identität im Pool warten kann, bevor sie wegen Nichtschreibens in einem Block zurückgewiesen wird",
"medianTimeBlocks": "Anzahl Blöcke, die für die Berechnung der Durchschnittszeit verwendet werden",
"msPeriod": "Mindestzeitraum zwischen 2 Beitrittsanträgen für dieselbe Person",
"msValidity": "Maximale Dauer einer Mitgliedschaft",
"msWindow": "Maximale Zeitraum, der eine Identität im Pool warten kann, bevor sie wegen Nichtschreibens in einem Block zurückgewiesen wird",
"percentRot": "Anteil der berechnenden Mitglieder, die nicht vom Proof of Work ausgeschlossen sind",
"sigPeriod": "Mindestzeitraum zwischen zwei Zertifizierungen desselben Ausstellers",
"sigQty": "Mindestanzahl an erhaltenen Zertifizierungen, um Teil des Vertrauensnetzes zu sein",
"sigReplay": "Mindestzeitraum vor einer möglichen Erneuerung einer Zertifizierung",
"sigStock": "Maximale Anzahl aktiver Zertifizierungen, die pro Mitglied ausgestellt werden können",
"sigValidity": "Lebensdauer einer aktiven Zertifizierung",
"sigWindow": "Maximale Zeitraum, der eine Identität im Pool warten kann, bevor sie wegen Nichtschreibens in einem Block zurückgewiesen wird",
"stepMax": "Maximale Distanz zwischen einem Mitglied und <code>xpercent</code> der referierenden Mitglieder",
"txWindow": "Maximale Zeitraum, der eine Transaktion im Pool warten kann, bevor sie wegen Nichtschreibens in einem Block zurückgewiesen wird",
"ud0": "Betrag der ursprünglichen Universaldividende",
"udReevalTime0": "Datum der ersten Neubewertung der UD",
"udTime0": "Datum der ersten DU",
"xpercent": "Mindestprozentsatz an referierenden Mitgliedern, der erreicht werden muss, um die Abstandsregel einzuhalten"
},
"title": "Blockchain-Parameter"
},
"piscine": {
"desc": "Datensatz, der von den Knoten gespeichert wird und auf seiner Validierung wartet, bevor er in einen Block geschrieben wird. Wenn die Daten unvollständig bleiben oder ungültig sind, werden sie schließlich vergessen.",
"title": "Pool"
},
"pow": {
"desc": "Lösung eines komplexen mathematischen Problems durch einen Computer, die es ihm ermöglicht, die Authentizität der Daten zu gewährleisten, die er einer Blockkette anbietet.",
"title": "Proof of Work (dt. Arbeitsnachweis)"
},
"previsions": {
"futureentries": " Zukünftige Beitritte",
"futureexits": "Zukünfitge Austritte",
"pardate": "Prognosen nach Datum",
"parmembre": "Prognosen nach Mitglieder",
"period": {
"desc": "Wählen Sie die gewünschte Anzahl an Tagen",
"title": "Suchzeitraum"
},
"title": "Prognosen"
},
"pubkey": "Öffentlicher Schlüssel",
"recherche": {
"desc": {
"lexicon": "Suche im Lexikon",
"member": "Geben Sie den Anfang eines Pseudonyms oder eines öffentlichen Schlüssels ein"
},
"effacer": "Löschen Sie Ihre Suche",
"title": "Ihre Suche"
},
"revocation": {
"desc": "Freiwillige oder unfreiwillige Aufgabe eines Mitgliedskontos. Der Widerruf kann freiwillig durch die Widerrufsdatei erfolgen oder unfreiwillig aufgrund fehlender Zertifizierungen oder der Nichtverlängerung der Mitgliedschaft. Der Widerruf zerstört nicht die Gelder, die sich auf dem Mitgliedskonto befinden, deaktiviert aber die Ko-Produktion der Universaldividende.",
"title": "Widerruf"
},
"revoila": "Hier sind sie wieder",
"slogan": "Der Zauberer des Vertrauensnetzes",
"statut": {
"allcertif": "5 Zertifizierungen erhalten",
"bientotmanquecertif": "Bald wenig Zertifizierungen",
"manquecertif": "Zu wenig Zertifizierungen",
"member": "Mitglied",
"missing": "Verlorene Mitgliedschaft",
"newcomer": "Zukünftiges Mitglied",
"renew": "Zu verlängernde Mitgliedschaft",
"revoked": "Widerrufenes Mitglied",
"title": "Status"
},
"suivis": {
"ajouter": "Zu den Favoriten hinzufügen",
"alert": {
"btn": "Finden Sie Ihre Identität",
"desc": "Bitte geben Sie ein Mitglied als Ihre Identität an, indem Sie auf die Schaltfläche « Ich bin dieses Mitglied » klicken.",
"title": "Sie sind noch nicht registriert"
},
"confirm": "Sind Sie sicher ?",
"display": {
"all": "Alles sehen",
"out": "Nur zu überwachende Profile anzeigen"
},
"enregistre": "In den Favoriten gespeichert!",
"enregistre_uid": "Schützen",
"iam": "Ich bin dieses Mitglied",
"iamnot": "Ich bin nicht dieses Mitglied",
"none": "Die Liste ist leer",
"supprime": "Aus den Favoriten entfernt!",
"supprimer": "Aus den Favoriten entfernen",
"supprimer_tous": "Alle Favoriten löschen",
"tabs": {
"certificateurs": "Meine Zertifizierer",
"certifies": "Meine Zertifizierten",
"favoris": "Meine Favoriten"
},
"title": "Meine Betreuung",
"use": "Nur meine Favoriten",
"voir_profil": "Siehe mein Profil"
},
"time": {
"a": "um"
},
"traitement": "In Bearbeitung",
"tri": {
"action": "Sortieren",
"pardate": "Nach Datum sortieren",
"parmembres": "Alphabetisch sortieren"
},
"trm": {
"desc": "Theorie, die zeigt, dass eine freie Währung mit einer Invarianzeigenschaft möglich ist und dass es nur eine Lösung für dieses Problem gibt: Eine Währung ist dann und nur dann frei, wenn sie räumlich und zeitlich gleichberechtigt von allen ihren Mitgliedern mitproduziert wird.",
"title": "Relativtheorie der Währung (RTW)"
},
"type": "Typ",
"uid": "Eindeutiger Bezeichner",
"valeur": "Wert",
"wot": {
"desc": "Gesamtheit der Mitglieder und der Zertifizierungen, die sie miteinander verbinden",
"title": "Vertrauensnetz"
},
"wotwizard": {
"nodeselect": "Wählen Sie einen Server"
}
}
{
"accueil": "Home",
"actuellement": {
"debut": "There are actually",
"fin": "members in the web of trust"
},
"adhesion": {
"desc": "Registration in the web of trust. Membership is valid for one year and must be renewed if you wish to continue to co-produce your Universal Dividend",
"title": "Membership"
},
"alert": {
"attenteCertifiers": "Waiting for certifiers",
"attention": "Warning",
"certStockLim": "This account has only <b>{n} certification</b> in stock. | This account has only <b>{n} certifications</b> in stock.",
"certifManquantes": "This account lacks <b>{n} certification</b> to become a member. | This account lacks <b>{n} certifications</b> to become a member.",
"certifManquantesBientot": "This account will soon <b>run out of certifications</b>.",
"distKO": "This account violates <b>the distance rule</b>.",
"dossierKOtitle": "Incomplete file",
"dossierOK": "The file for this account is <b>complete</b> and will <b>soon be a member</b>.",
"dossierOKtitle": "Complete file",
"information": "Information",
"missing": "This account has lost its membership. He has <b>{n} day</b> to reapply for membership before automatic revocation. | This account has lost its membership. He has <b>{n} days</b> to reapply for membership before automatic revocation.",
"noMoreCert": "This account has <b>no more certifications</b> in stock.",
"notAllCertifiersDispo": "One or more certifiers are <b>not available</b>.",
"notAvailable": "This member is <b>unavailable</b> to certify.",
"renew": "This account needs to <b>renew its membership</b>.",
"revoked": "This account is <b>revoked</b> and can no longer become a member."
},
"apropos": {
"alert": "The data displayed by the application comes from a <a href='https://git.duniter.org/gerard94/WotWizard' target='_blank' class='alert-link'>Wotwizard server using graphQL technology</a> and depends on the Duniter node queried. This is why data that is not yet written to the blockchain may differ from one application to another.",
"bienvenue": "Welcome to Wotwizard !",
"contribuer": "The source code of the application is on <a href=\"https://git.duniter.org/clients/wotwizard-ui\" target=\"_blank\">our Gitlab server</a>. Don't hesitate to report bugs or suggestions for improvement in <a href=\"https://git.duniter.org/clients/wotwizard-ui/-/issues\" target=\"_blank\">the <b>Tickets</b> section</a>.",
"deploiement": "Deployment :",
"desc": "This tool allows you to track entries and exits from the Ğ1 free currency web of trust and is the result of a collaboration between various developers and users of the currency. Do not hesitate to thank them by making a donation on the following public key:",
"developpeurs": "Developers :",
"graphql": "GrahQL API",
"participants": "List of project participants :",
"testeurs": "Testers :",
"title": "About",
"traducteurs": "Translators :"
},
"aria": {
"ariane": "Breadcrumb",
"clipboard": "Copy to clipboard",
"close": "Close",
"closemenu": "Close menu",
"openmenu": "Open menu",
"scrolltotop": "Back to top",
"themedark": "Toggle dark theme",
"themelight": "Toggle light theme"
},
"aurevoir": "Goodbye to",
"bienvenue": "Welcome to",
"bloc": {
......@@ -19,8 +64,13 @@
"title": "Centrality"
},
"certification": {
"afficher": "Display certificates",
"desc": "Recognition link between an individual and another recorded in the blockchain. A certification is valid for 2 years",
"enattente": "Waiting for treatment",
"encours": "Currently valid",
"envoyees": "Certificates sent",
"masquer": "Hide certificates",
"perimees": "To renew",
"recues": "Certificates received ",
"title": "Certification"
},
......@@ -46,6 +96,7 @@
}
},
"copie": "Copied",
"date": "Date",
"description": "Description",
"dev": "In development",
"dividende": {
......@@ -61,49 +112,67 @@
"desc": "Cryptocurrency software using a blockchain, compliant with the Relative Theory of Money (RTM) and using the web of trust for the identification of the co-producing members of the currency",
"title": "Duniter"
},
"expire": "Expires",
"favoris": {
"enregistre": "Saved to favorites&nbsp;!",
"none": "You don't have any favorites yet",
"supprime": "Deleted from favourites&nbsp;!",
"title": "My favourites"
"expire": "Expiry",
"filter": {
"certif": "Filter by certification status",
"statut": "Filter by member status"
},
"futuremembers": "Future members",
"futureexits": "Future exits",
"infos": "Informations",
"inout": "Entries and exits of the web of trust for the last 2 days",
"inpreparation": "In preparation",
"jours": "0 days | 1 day | {n} days",
"jours": "1 day | {n} days",
"jours_avant": "< 24h | {n} days ago",
"lang": "Choose your language",
"lexique": "Lexicon",
"membre": {
"calculant": {
"desc": "Member using his private key to forge blocks thanks to Duniter installed on a node accessible on the Internet network",
"title": "Calculating member"
},
"datelimadhesion": "Membership deadline",
"datelimadhesion": {
"desc": "Date before which the account will lose its membership status if no renewal request has been made",
"title": "Membership deadline"
},
"datelimpertestatut": "Loss of Membership",
"datelimrevoc": "Deadline before revocation ",
"datemanquecertifs": "Date before running out of certs",
"datelimrevoc": {
"desc": "Date before which the account will be automatically revoked if there has been no renewal request",
"title": "Deadline before revocation"
},
"datemanquecertifs": {
"desc": "Date the account will run out of certifications",
"title": "Lack of certifications"
},
"desc": "Individual whose membership is in progress and who has received the 5 necessary certifications allowing him to respect the distance rule. Which allows him to be co-creator of the currency via his Universal Dividend",
"dispo": "Available",
"dispocertif": "Available to certify",
"dispocertif": {
"desc": "A member can only issue a certification 5 days after the last one has been processed. Send only one certification at a time to facilitate the entry of new members",
"title": "Available to certify"
},
"disponibilite": "Availablity",
"distance": {
"desc": "% of referring members reachable in 5 hops or less in the web of trust. To become a member, you must collect at least 5 certifications allowing you to reach 80% of the referring members in 5 jumps max.",
"desc": "% of referring members reachable in 5 hops or less in the web of trust. To become a member, this rate must be greater than or equal to 80%",
"title": "Distance"
},
"nb_certifs": "Nb of available certs",
"nb_certifs": {
"desc": "Each member has a stock of 100 valid certifications",
"title": "Nb of available certs"
},
"nodispo": "Unavailable",
"qualite": {
"desc": "% of referring members reachable in 4 hops or less in the web of trust. A member whose quality is greater than 80% will be able to ensure that his certified members will respect the distance rule",
"title": "Quality"
},
"referent": {
"desc": "Member having issued AND received a certain number of certifications, variable according to the number of total members. This status does not offer any advantages but allows the security of the web of trust in particular thanks to the distance rule",
"desc": "Member having issued AND received <code>CEIL(N<sup>(1/stepMax)</sup>)</code> certifications, N being the total number of members. This status does not offer any advantages but allows the security of the web of trust in particular thanks to the distance rule",
"title": "Referring member"
},
"title": "Member"
"title": "Member",
"voirinfos": "See member informations"
},
"membres": "Members",
"meta": {
"description": "Check the entrances and exits of the web of trust of the free currency Ğ1"
},
"mot": "Word or expression",
"noeud": {
"desc": "Computer using Duniter software to participate in the blockchain. A member node can create new blocks and is made available by a calculating member while a non-member node cannot create new blocks and participates in the resilience of the network",
......@@ -150,17 +219,23 @@
"title": "Proof of Work"
},
"previsions": {
"futureentries": "Future entries",
"futureexits": "Futures exits",
"pardate": "Forecasts by dates",
"parmembre": "Forecasts by members",
"period": {
"title": "Search period",
"desc": "Select the desired number of days"
"desc": "Select the desired number of days",
"title": "Search period"
},
"title": "Forecasts"
},
"pubkey": "Public key",
"recherche": {
"desc": "Enter the start of a nickname or public key",
"desc": {
"lexicon": "Search in the lexicon",
"member": "Enter the start of a nickname or public key"
},
"effacer": "Erase your search",
"title": "Your search"
},
"revocation": {
......@@ -170,19 +245,51 @@
"revoila": "Here they are again",
"slogan": "The Web of Trust’s wizard",
"statut": {
"bientotmanquecertif": "Needs certifications soon",
"manquecertif": "Needs certifications",
"allcertif": "5 recieved certificates",
"bientotmanquecertif": "Needs certificates soon",
"manquecertif": "Needs certificates",
"member": "Member",
"missing": "Membership lost",
"newcomer": "Future member",
"renew": "Membership to renew",
"revoked": "Revoked member"
"revoked": "Revoked member",
"title": "Status"
},
"suivis": {
"ajouter": "Add to favorites",
"alert": {
"btn": "Find your identity",
"desc": "Please indicate a member as your identity by clicking on the button « I am this member »",
"title": "You're not registered yet"
},
"confirm": "Are you sure ?",
"display": {
"all": "See all",
"out": "See only profiles to monitor"
},
"enregistre": "Saved to favorites&nbsp;!",
"enregistre_uid": "Save",
"iam": "I am that member",
"iamnot": "I am not that member",
"none": "The list is empty",
"supprime": "Deleted from favourites&nbsp;!",
"supprimer": "Delete from favourites",
"supprimer_tous": "Delete all favourites",
"tabs": {
"certificateurs": " My certifiers",
"certifies": "My certified members",
"favoris": "My favorites"
},
"title": "My follow-ups",
"use": "My favorites only",
"voir_profil": "See my profile"
},
"time": {
"a": "at"
},
"traitement": "Ongoing treatment",
"tri": {
"action": "Sort by",
"pardate": "Sort by date",
"parmembres": "Sort by members"
},
......@@ -196,5 +303,8 @@
"wot": {
"desc": "Set of the individuals recognized as such by their peers including the links that bind them together through certifications",
"title": "Web of trust"
},
"wotwizard": {
"nodeselect": "Select a server"
}
}
{
"accueil": "Página principal",
"actuellement": {
"debut": "Actualmente hay",
"fin": "miembros en la red de confianza"
},
"adhesion": {
"desc": "Registro en la red de confianza. La membresía es válida por un año y debe renovarse si desea continuar coproduciendo su Universal Dividend",
"desc": "Registro en la red de confianza. La membresía es válida por un año y debe renovarse si desea continuar cocreando su Dividendo Universal",
"title": "Membresía"
},
"alert": {
"attenteCertifiers": "Esperando certificadores",
"attention": "Atención",
"certStockLim": "Esta cuenta solo tiene <b>{n} certificación</b> en stock. | Esta cuenta solo tiene <b>{n} certificaciones</b> en stock.",
"certifManquantes": "Esta cuenta carece de <b>{n} certificación</b> para convertirse en miembro. | Esta cuenta carece de <b>{n} certificaciones</b> para convertirse en miembro.",
"certifManquantesBientot": "Esta cuenta pronto <b>se quedará sin certificaciones</b>.",
"distKO": "Esta cuenta infringe la <b>regla de distancia</b>.",
"dossierKOtitle": "Archivo incompleto",
"dossierOK": "El archivo de esta cuenta está <b>completo</b> y <b>pronto será miembro</b>.",
"dossierOKtitle": "Archivo completo",
"information": "Información",
"missing": "Esta cuenta ha perdido su membresía. Tiene <b>{n} día</b> para volver a solicitar la membresía antes de la revocación automática. | Esta cuenta ha perdido su membresía. Tiene <b>{n} días</b> para volver a solicitar la membresía antes de la revocación automática.",
"noMoreCert": "Esta cuenta <b>no tiene más certificaciones</b> en stock.",
"notAllCertifiersDispo": "Uno o más certificadores <b>no están disponibles</b>.",
"notAvailable": "Este miembro <b>no está disponible</b> para certificar.",
"renew": "Esta cuenta necesita <b>renovar su membresía</b>.",
"revoked": "Esta cuenta está <b>revocada</b> y ya no puede convertirse en miembro."
},
"apropos": {
"alert": "Los datos que muestra la aplicación provienen de <a href='https://git.duniter.org/gerard94/WotWizard' target='_blank' class='alert-link'>un servidor Wotwizard con tecnología graphQL</a> y dependen del nodo Duniter consultado. Esta es la razón por la que los datos que aún no se escriben en la cadena de bloques pueden diferir de una aplicación a otra.",
"bienvenue": "¡Bienvenido a Wotwizard!",
"contribuer": "El código fuente de la aplicación está en <a href=\"https://git.duniter.org/clients/wotwizard-ui\" target=\"_blank\">nuestro servidor Gitlab</a>. No dudes en reportar errores o sugerencias de mejora en <a href=\"https://git.duniter.org/clients/wotwizard-ui/-/issues\" target=\"_blank\">la sección de <b>Tickets</b></a>.",
"deploiement": "Despliegue :",
"desc": "Esta herramienta le permite realizar un seguimiento de las entradas y salidas de la red de confianza de la moneda libre Ğ1 y es el resultado de una colaboración entre varios desarrolladores y usuarios de la moneda. No dude en agradecerles haciendo una donación a la siguiente llave pública:",
"developpeurs": "Desarrolladores :",
"graphql": "GrahQL API",
"participants": "Lista de participantes del proyecto :",
"testeurs": "Testeadores :",
"title": "Acerca de",
"traducteurs": "Traductores :"
},
"aria": {
"ariane": "Hilo de Ariadna",
"clipboard": "Copiar al portapapeles",
"close": "Cerrar",
"closemenu": "Cerrar menú",
"openmenu": "Menú abierto",
"scrolltotop": "Volver arriba",
"themedark": "Cambiar a tema oscuro",
"themelight": "Cambiar a tema claro"
},
"aurevoir": "Salen",
"bienvenue": "Entran",
"bloc": {
"desc": "Fichier contenant des transactions inaltérables (création de monnaie, transferts et certifications dans le cas de Duniter) et faisant partie de la chaîne de blocs",
"desc": "Fichero conteniendo transacciones inalterables (creación de moneda, transferencias y certificaciones en el caso de Duntier) que forman parte de la cadena de bloques",
"title": "Bloque"
},
"blockchain": {
"desc": "Conjunto de bloques calculados por nodos miembros de la red Duniter",
"title": "Blockchain"
"title": "Cadena de bloques(Blockchain)"
},
"centralite": {
"desc": "Número de veces que el miembro está en el camino más corto entre otros dos miembros de la Red de Confianza. El camino es la cadena de certificaciones entre los miembros. La centralidad, por lo tanto, permite conocer la importancia e influencia de un miembro en Web of Trust",
"desc": "Número de veces que el miembro está en el camino más corto entre otros dos miembros de la Red de Confianza. El camino es la cadena o sucesión de certificaciones entre los miembros. La centralidad, por lo tanto, permite conocer la importancia e influencia de un miembro en la Red de Confianza.",
"title": "Centralidad"
},
"certification": {
"afficher": "Para mostrar certificaciones",
"desc": "Vínculo de reconocimiento entre un individuo y otro registrado en la cadena de bloques. Una certificación es válida por 2 años.",
"enattente": "Esperando tratamiento",
"encours": "Actualmente válido",
"envoyees": "Certificaciones enviadas",
"masquer": "Esconder certificaciones",
"perimees": "Renovar",
"recues": "Certificaciones recibidas ",
"title": "Certificacione"
},
"chargement": "Cargando",
"cle": {
"privee": {
"desc": "Clave secreta utilizada para firmar documentos (realizar una transacción, enviar una certificación, etc.). Se calcula a partir de la pareja usuario/contraseña, y se vincula matemáticamente a la clave pública",
"desc": "Llave secreta utilizada para firmar documentos (realizar una transacción, enviar una certificación, etc.). Se calcula a partir del par frase secreta/contraseña, y se vincula matemáticamente a la llave pública",
"title": "Llave privada"
},
"publique": {
"desc": "Equivalente al número de cuenta (miembro o cartera). Este es el que usted comunica para ser certificado o recibir el pago. Se calcula a partir del par usuario/contraseña",
"desc": "Equivalente al número de cuenta (ya sea tipo miembro o simple). Este es el que se comunica para ser certificado o recibir un pago. Se calcula a partir del par frase secreta/contraseña",
"title": "Llave pública"
}
},
"compte": {
"membre": {
"desc": "Cuenta certificada adjunta a una identidad de miembro. Solo una cuenta de miembro puede coproducir moneda a través de Universal Dividend y escribir en la cadena de bloques a través del software Duniter.",
"title": "Cuenta de miembro"
"desc": "Cuenta certificada adjunta a una identidad de miembro. Solo una cuenta de miembro por ser humano puede coproducir moneda a través del Dividendo Universal y forjar bloques en la cadena de bloques a través del software Duniter.",
"title": "Cuenta miembro"
},
"portefeuille": {
"desc": "Cuenta asociada a una clave pública no miembro. Es decir, que no forma parte de la Red de Confianza y no coproduce el Dividendo Universal. Puede tratarse de un recién llegado que desee transformar su cuenta en una cuenta de miembro más tarde o para satisfacer necesidades personales, asociativas, de gestión empresarial, etc.",
"title": "Cuenta de billetera"
"desc": "Cuenta asociada a una llave pública no miembro. Es decir, que no forma parte de la Red de Confianza y no coproduce el Dividendo Universal. Puede tratarse de un recién llegado que desee transformar su cuenta en una cuenta de miembro más tarde o para satisfacer necesidades personales, asociativas, de gestión empresarial, etc.",
"title": "Cuenta simple de monedero"
}
},
"copie": "Copiada",
"copie": "Copia",
"date": "Fecha",
"description": "Descripción",
"dev": "En desarrollo",
"dividende": {
"desc": "Cuota de moneda producida por todos los miembros de la red de confianza calculada para respetar la simetría espacial y temporal. Su fórmula anual teórica simplificada es: DU = c × M/N donde c es la tasa de crecimiento anual (10%), M la oferta monetaria y N el número de afiliados",
"desc": "Cuota de moneda producida por todos los miembros de la red de confianza calculada para respetar la simetría espacial y temporal. Su fórmula anual teórica simplificada es: DU = c × M/N donde c es la tasa de crecimiento anual (10%), M la oferta monetaria y N el número de miembros",
"title": "Dividendo Universal"
},
"dossier": {
"attente": "No hay candidaturas pendientes | 1 candidatura pendiente | {n} candidaturas pendientes",
"desc": "Solicitud de afiliación en trámite. El expediente es un conjunto de documentos que permiten a Duniter determinar si un nuevo miembro respeta todas las reglas de la red de confianza",
"desc": "Solicitud de membresía en trámite. La candidatura es un conjunto de documentos que permiten a Duniter determinar si un nuevo miembro respeta todas las reglas de la red de confianza",
"title": "Candidatura"
},
"duniter": {
"desc": "Software de criptomonedas que utiliza una cadena de bloques, que cumple con la Teoría Relativa del Dinero (TRD) y utiliza la red de confianza para la identificación de los miembros coproductores de la moneda",
"desc": "Software de criptomonedas que utiliza una cadena de bloques, que cumple con la Teoría Relativa de la Moneda (TRM) y utiliza la red de confianza para la identificación de los miembros coproductores de la moneda",
"title": "Duniter"
},
"expire": "Expira el",
"favoris": {
"enregistre": "¡Guardado en favoritos!",
"none": "Aún no tienes favoritos",
"supprime": "¡Eliminado de favoritos!",
"title": "Mis favoritos"
"expire": "Expiración",
"filter": {
"certif": "Filtrar por estado de certificación",
"statut": "Filtrar por estado de miembro"
},
"futuremembers": "Futuros miembros",
"futureexits": "Futuras salidas",
"infos": "Informaciones",
"inout": "Entradas y salidas de la red de confianza en los últimos 2 días",
"inpreparation": "En preparación",
"jours": "0 días | 1 día | {n} días",
"jours": "1 día | {n} días",
"jours_avant": "< 24h | hay {n} días",
"lang": "Elige tu idioma",
"lexique": "Léxico",
"membre": {
"calculant": {
"desc": "Miembro usando su clave privada para falsificar bloques gracias a Duniter instalado en un nodo accesible en la red de Internet",
"title": "Miembro calculador"
"desc": "Miembro usando su llave privada para forjar bloques gracias a Duniter instalado en un nodo accesible en la red de Internet",
"title": "Miembro forjador"
},
"datelimadhesion": {
"desc": "Fecha antes de la cual la cuenta perderá su estado de membresía si no se ha realizado una solicitud de renovación",
"title": "Fecha límite de membresía"
},
"datelimadhesion": "Fecha límite de membresía",
"datelimrevoc": "Fecha límite de la autorevocación",
"datelimpertestatut": "Pérdida de Membresía",
"datemanquecertifs": "Fecha antes de quedarse sin certificaciones",
"desc": "Individuo cuya afiliación está en curso y que ha recibido las 5 certificaciones necesarias que le permitan respetar la regla de distanciamiento. Lo que le permite ser co-creador de la moneda a través de su Dividendo Universal",
"datelimrevoc": {
"desc": "Fecha antes de la cual se revocará automáticamente la cuenta si no ha habido solicitud de renovación",
"title": "Fecha límite de la autorevocación"
},
"datemanquecertifs": {
"desc": "Fecha en que la cuenta se quedará sin certificaciones",
"title": "Falta de certificaciones"
},
"desc": "Individuo cuya candidatura está en curso y que ha recibido las 5 certificaciones necesarias y que le permitan respetar la regla de la distancia. Lo que le permite ser co-creador de la moneda a través de su Dividendo Universal",
"dispo": "Disponible",
"dispocertif": "Disponible para certificar",
"dispocertif": {
"desc": "Un miembro solo puede emitir una certificación 5 días después de que se haya procesado la última. Envíe solo una certificación a la vez para facilitar el ingreso de nuevos miembros",
"title": "Disponible para certificar"
},
"disponibilite": "Disponibilidad",
"distance": {
"desc": "% de miembros referidos accesibles en 5 saltos o menos en la web de confianza. Para convertirse en miembro, debe recopilar al menos 5 certificaciones que le permitan llegar al 80% de los miembros de referencia en 5 saltos como máximo.",
"desc": "% de miembros de referencia o control accesibles en 5 pasos o menos en la Red de Confianza. Para convertirse en miembro, esta tasa debe ser mayor o igual al 80%",
"title": "Distancia"
},
"nb_certifs": "Núm. de certificaciones disponibles",
"nodispo": "Indisponible",
"nb_certifs": {
"desc": "Cada miembro tiene un stock de 100 certificaciones válidas",
"title": "Núm. de certificaciones disponibles"
},
"nodispo": "No disponible",
"qualite": {
"desc": "% de miembros referidos accesibles en 4 saltos o menos en la red de confianza. Un miembro cuya calidad sea superior al 80% podrá asegurarse de que sus miembros certificados respetarán la regla de distancia",
"desc": "% de miembros de referencia accesibles en 4 saltos o menos en la red de confianza. Un miembro cuya calidad sea superior al 80% podrá asegurarse de que sus miembros certificados respetarán la regla de distancia",
"title": "Calidad de enlace"
},
"referent": {
"desc": "Miembro que haya emitido Y recibido un número determinado de certificaciones, variable según el número total de miembros. Este estatus no ofrece ninguna ventaja pero permite la seguridad de la web de confianza en particular gracias a la regla de distancia",
"title": "Miembrio referente"
"desc": "Miembro que haya emitido Y recibido <code>CEIL(N<sup>(1/stepMax)</sup>)</code> certificaciones, siendo N el número total de miembros. Este estatus no ofrece ninguna ventaja o privilegio personal pero permite la seguridad de la red de confianza en particular gracias a la regla de distancia",
"title": "Miembro de referencia o control"
},
"title": "Miembro"
"title": "Miembro",
"voirinfos": "Ver información de miembros"
},
"membres": "Miembros",
"meta": {
"description": "Consulta las entradas y salidas de la web de confianza de la moneda libre Ğ1"
},
"mot": "Palabra o expresión",
"noeud": {
"desc": "Computadora que usa el software Duniter para participar en la cadena de bloques. Un nodo miembro puede crear nuevos bloques y un miembro calculador lo pone a disposición, mientras que un nodo no miembro no puede crear nuevos bloques y participa en la resiliencia de la red",
"desc": "Ordenador que ejecuta el software Duniter para participar en la cadena de bloques. Un nodo miembro puede forjar nuevos bloques ponerlos a disposición de la red, mientras que un nodo no miembro (espejo) no puede forjar nuevos bloques pero participa en la resiliencia de la red",
"title": "Nodo"
},
"nom": "Nombre",
......@@ -115,86 +184,127 @@
"params": {
"breadcrumb": "Parámetros",
"name": {
"avgGenTime": "The average time for writing 1 block (wished time)",
"c": "The relative growth of the UD every <code>dtReeval</code> period",
"dt": "Time period between two UD",
"dtDiffEval": "The number of blocks required to evaluate again PoWMin value",
"dtReeval": "Time period between two re-evaluation of the UD",
"idtyWindow": "Maximum delay an identity can wait before being expired for non-writing",
"medianTimeBlocks": "Number of blocks used for calculating median time",
"msPeriod": "Minimum delay between 2 memberships of a same issuer",
"msValidity": "Maximum age of an active membership",
"msWindow": "Maximum delay a membership can wait before being expired for non-writing",
"percentRot": "The proportion of calculating members not excluded from the proof of work",
"sigPeriod": "Minimum delay between two certifications of a same issuer",
"sigQty": "Minimum quantity of signatures to be part of the WoT",
"sigReplay": "Minimum delay before replaying a certification",
"sigStock": "Maximum quantity of active certifications made by member",
"sigValidity": "Maximum age of an active certification",
"sigWindow": "Maximum delay a certification can wait before being expired for non-writing",
"stepMax": "Maximum distance between a WOT member and <code>xpercent</code> of sentries",
"txWindow": "Maximum delay a transaction can wait before being expired for non-writing",
"ud0": "UD(0), i.e. initial Universal Dividend",
"udReevalTime0": "Time of first reevaluation of the UD",
"udTime0": "Time of first UD",
"xpercent": "Minimum percent of sentries to reach to match the distance rule"
"avgGenTime": "Tiempo medio para forjar 1 bloque (tiempo deseado)",
"c": "El crecimiento relativo del DU con período <code>dtReeval</code>",
"dt": "Período de tiempo entre dos DU",
"dtDiffEval": "Número de bloques requeridos para reevaluar el valor de PoWMin",
"dtReeval": "Período de tiempo entre dos reevaluaciones del DU",
"idtyWindow": "Máxima demora que una identidad puede esperar antes de expirar por inactividad",
"medianTimeBlocks": "Número de bloques usados para calcular la mediana de tiempo",
"msPeriod": "Mínima demora entre la renovación de membresía de un miembro certificador",
"msValidity": "Máxima edad de una membresía activa",
"msWindow": "Máxima demora que una membresía puede esperar antes de expirar por inactividad",
"percentRot": "La proporción de miembros tenidos en cuenta en el cálculo por la prueba de trabajo",
"sigPeriod": "Mínima demora entre dos certificaciones del mismo miembro certificador",
"sigQty": "Cantidad mínima de certificaciones para formar parte de la Red De Confianza",
"sigReplay": "Demora mínima entre la repetición de una certificación",
"sigStock": "Cantidad máxima de certificaciones activas realizadas por un miembro",
"sigValidity": "Edad máxima de una certificación activa",
"sigWindow": "Demora máxima antes de que una certificación expire si no llega a hacerse activa",
"stepMax": "Distancia máxima entre un miembro de la RdC y el <code>xpercent</code> de los puntos de control",
"txWindow": "Demora máxima antes de expirar un transacción por no llegarse a escribirse",
"ud0": "DU(0), i.e. el Dividendo Universal inicial",
"udReevalTime0": "Momento de la primera reevaluación del DU",
"udTime0": "Momento del primer DU",
"xpercent": "Porcentage mínimo de puntos de control a alcanzar para pasar la regla de la distancia"
},
"title": "Parámetros de la blockchain"
},
"piscine": {
"desc": "Conjunto de datos almacenados por los nodos y en espera de validación de la carpeta antes de escribir en un bloque. Si los datos quedan incompletos o no válidos, acaban siendo olvidados",
"title": "Piscina"
"desc": "Conjunto de datos almacenados por los nodos y en espera de validación antes de escribir en un bloque. Si los datos quedan incompletos o no válidos, acaban siendo borrados",
"title": "Piscina(pool)"
},
"pow": {
"desc": "Resolución de un problema matemático complejo por parte de un ordenador que le permite asegurar la autenticidad de los datos que ofrece a una cadena de bloques",
"title": "Prueba de trabajo"
},
"previsions": {
"futureentries": "Futuras entradas",
"futureexits": "Futuras salidas",
"pardate": "Previsiones por fecha",
"parmembre": "Previsiones por miembros",
"period": {
"title": "Período de búsqueda",
"desc": "Seleccione el número de días deseado"
"desc": "Seleccione las fechas deseadas",
"title": "Período de búsqueda"
},
"title": "Pronósticos"
},
"pubkey": "Llave pública",
"recherche": {
"desc": "Introduce el comienzo de un pseudónimo o llave pública",
"desc": {
"lexicon": "Buscar en el léxico",
"member": "Introduce el comienzo de un pseudónimo o llave pública"
},
"effacer": "Limpia tu búsqueda",
"title": "Buscar"
},
"revocation": {
"desc": "Abandono voluntario o no de una cuenta de socio. La revocación puede ser voluntaria a través del expediente de revocación o involuntaria por falta de certificaciones o no renovación de la afiliación. La revocación no destruye el dinero que está en la cuenta del miembro pero desactiva la coproducción del Dividendo Universal",
"desc": "Abandono voluntario o no de una cuenta miembro. La revocación puede ser voluntaria a través del expediente de revocación o involuntaria por falta de certificaciones o no renovación de la membresía. La revocación no destruye el dinero que está en la cuenta del miembro pero desactiva la cocreación del Dividendo Universal",
"title": "Revocación"
},
"revoila": "Regresan",
"slogan": "El mago de la Red de Confianza",
"statut": {
"bientotmanquecertif": "Pronto necesitará certificaciones",
"allcertif": "5 certificaciones recibidas",
"bientotmanquecertif": "Necesitará certificaciones",
"manquecertif": "Faltan certificaciones",
"member": "Miembro",
"missing": "Membresía perdida",
"newcomer": "Futur@ miembro",
"renew": "Membresía por renovar",
"revoked": "Membresía revocada"
"revoked": "Membresía revocada",
"title": "Estado"
},
"suivis": {
"ajouter": "Agregar a los favoritos",
"alert": {
"btn": "Encuentra tu identidad",
"desc": "Indique un miembro como su identidad haciendo clic en el botón « Soy este miembro »",
"title": "Aún no estás registrado"
},
"confirm": "Está usted seguro ?",
"display": {
"all": "Ver todo",
"out": "Ver solo perfiles para monitorear"
},
"enregistre": "¡Guardado en favoritos!",
"enregistre_uid": "Salvaguardar",
"iam": "Soy este miembro",
"iamnot": "No soy este miembro",
"none": "La lista está vacía",
"supprime": "¡Eliminado de favoritos!",
"supprimer": "Eliminar de favoritos",
"supprimer_tous": "Eliminar todos los favoritos",
"tabs": {
"certificateurs": "Mis certificadores",
"certifies": "Mis miembros certificados",
"favoris": "Mis favoritos"
},
"title": "Mis seguimientos",
"use": "Solo mis favoritos",
"voir_profil": "Mira mi perfil"
},
"time": {
"a": "a"
},
"traitement": "Tratamiento en curso",
"tri": {
"action": "Ordenar por",
"pardate": "Ordenar por fecha",
"parmembres": "Clasificar por miembros"
"parmembres": "Ordenar por miembros"
},
"trm": {
"desc": "Teoría que demuestra que es posible una moneda libre con una propiedad de invariancia y que la solución a este problema es única: Una moneda es libre si y solo si es coproducida por igual en el espacio y en el tiempo por todos sus miembros",
"title": "Teoría relativa del dinero (TRD)"
"title": "Teoría relativa de la moneda (TRM)"
},
"type": "Tipo",
"uid": "Identificador único",
"valeur": "Valor",
"wot": {
"desc": "Conjunto de las personas reconocidas como tales por sus pares incluyendo los vínculos que las unen a través de certificaciones",
"title": "Red de confianza"
"desc": "Conjunto de los seres humanos reconocidos como tales por sus pares incluyendo los vínculos que las unen a través de certificaciones (Web of Trust en inglés WOT)",
"title": "Red De Confianza(RdC)"
},
"wotwizard": {
"nodeselect": "Seleccione un servidor"
}
}