openwallet-foundation / bifold-wallet Goto Github PK
View Code? Open in Web Editor NEWAries Mobile Agent React Native - Part of the Aries Bifold effort to provide SSI capabilities in a production ready app.
License: Apache License 2.0
Aries Mobile Agent React Native - Part of the Aries Bifold effort to provide SSI capabilities in a production ready app.
License: Apache License 2.0
As a developer I want to be able to identify when a credential has been revoked and be able to display a notification to the user or a warning prior to creating a presentation proof.
Hi,
After the acceptOffer method is called, the offer state becomes Requested instead of Issued.
It works fine when accept from the Trinsic Wallet app. Can you help check if anything else is needed to make it work with Trinsic server?
Thanks.
Thinking of a few minor tweaks to help improve the QR Scanner:
Currently these screens StyleSheet
s to apply component styling. We want to refactor these screens to use emotion
.
Already followed the instruction.
Mediator and genesis are already set.
But still received the following error:
Object { "indyBacktrace": "", "indyCode": 307, "indyMessage": "Error: Pool timeout Caused by: Pool timeout ", "indyName": "PoolLedgerTimeout", "message": "PoolLedgerTimeout", "name": "IndyError", }
Am I missing something?
Any chance to update the wallet to the latest AFJ version, soon?
Some major bug fixes out there
I might be wrong, but is the README outdated ? - the value of the MEDIATOR should be the invitation url
MEDIATOR_URL=https://somewhere.mediatorx.io?c_i=ewogICJAdHlwZSI6ICJodHRwczovL2RpZGNvbW0ub3JnL2Nvbm5lY3Rpb25zLzEuMC9pbnZpdGF0aW9uIiwKICAiQGlkIjogIjE1NTZmMzZjLTRjZmUtNGQ1OS05YTliLTNmNmQ0MWFiZmVkMCIsCiAgImxhYmVsIjogIkF3ZXNvbWUuTWVkaWF0b3IiLAogICJyZWNpcGllbnRLZXlzIjogWwogICAgIjltdmVoZ3BzckNrNWcxdWlWNDNVQUhOSkVjemdCZEVMVHdEZXk2U3ZXRkgyIgogIF0sCiAgInNlcnZpY2VFbmRwb2ludCI6ICJodHRwczovL3NvbWV3aGVyZS5tZWRpYXRvcnguaW8iCn0=
GENESIS_URL=http://......./genesis
i'm getting an error message when i'm trying to run the below command on docker playground
docker-compose -f docker/docker-compose-mediators.yml -f docker/docker-compose-mediators-ngrok.yml up --build
ERROR: The Compose file './docker/docker-compose-mediators.yml' is invalid because:
Unsupported config option for services.mediator: 'platform'
Occurs when there is a notification present on the Home Screen to accept/reject a credential offer. Upon accepting the offer, a modal is displayed indicating success/failure of acceptance. When the modal is dismissed, a blank screen is displayed. No errors are logged to the console.
Hello, first I would like to know if there is any document / video of the project execution, demonstrating how to execute, establish a connection and receive credentials using the test networks indicated in the readme (Indicio TestNet / Sovrin StagingNet)?
Second, I am trying to execute the project, however I am having problems in responding to the AFJ mediator, as in the image below.
The ngrok address shown is correct in relation to that displayed by the AFJ when I run the mediator.
Thirdly, is it possible to carry out the project with aca-py as the issuing agent? before the error pointed out above, I couldn't connect to aca-py!
Finally, congratulations on the project!
May VC related workflows are asynchronous. As such, an operation like making an offer, for example, can take some time causing the UI to time out and the workflow to get lost. This makes the UI/UX a little unfriendly as one looses track of where one is in the process, what is being waited on, and if there are any actions the user should preform.
As part of this issue I propose to rework alert style notifications (pending, processing, etc) to better be asynchronous and to use something like a toast for displaying them.
Hello,
Is there a publicly available mediatorUrl i can use to test the app? The one i am hosting locally doesnt seem to be working as the connection with the mediator stays on requested.
Just as a background, I am demoing this app with the aca-py demo faber agent to create a connection and issue credentials, I am able to establish a connection with the mediator and faber agent, but when i issue credentials from the faber agent and go to the credentials page on the app i get an Mediation error.
Mediation Error: 503 ngrok gateway error
The server returned an invalid or incomplete HTTP response.
Ignace Loomans
This requested project improvement is to add back eslint/prettier rules to require the use of semicolons.
While Automatic Semicolon Insertion (ASI) is great and pretty reliable I find its more common in ECMAscript based languages to add semicolon in rather than rely on the implementations in the JS interpreter (which are quite day in most implementations). Also, I believe they are require by the ECMAscript standard but as a convenience they are permitted to be omitted so longs as ASI is implemented in the interpreter.
Based on feedback from PR #109 it would be worthwhile allowing the user to override the automatic language selection. A few considerations are how to make it easy to do if the application is set in the wrong language. If you can't read the screens it will be difficult to navigate to where one needs to make the change.
As an end user and developer I would like the capability to verify credential proof presentations.
Hello,
After receiving credentials from the issuer agent, I have established a connection with the verifier agent, and am now trying to send a proof request. After the connection is established my backend sends a present-proof id message to the established connection. And after this I am supposed to 'present the proof' from the mobile side. I was just wondering if this area has already been covered in the app, or if its something that i will have to implement myself! Thanks in advance.
Can we have options in settings screen where user can set the custom fonts and also scale the font size as well?
I managed to run build and run the app in IOS with the following:
Now, I want to get credentials stored in my wallet app and later to present this to any party.
Are there public demo websites/endpoints that I can use to demo credentials storing and proof verification using this app?
or are there steps where I can run my Issuer and Verifier demo website?
Thanks
AFJ has been updated with multi-ledger support. Bifold AFJ dependencies should be updated and Agent initialization should include multiple ledger configurations.
As a developer I want the capability to use aries-mobile-agent-react-native in an existing project and to be able to receive new updates and push additions back. We need to add componentization or state management to enable this functionality.
The intent is to create a set of core components or state to allow a developer to use default UI components or have the necessary tools to display and interact with the framework and data.
This proposal is to first add support to AFJ to allow looking up the alias of the issuer in the ledger then pulling trough the functionality so that we can display that in the applications credentials. When credentials don't contain any information on who issued a credential the Alias can be used as a convention.
Feedback and comments welcome.
As a developer I want a way to receive push notifications from a mediator to go fetch queued messages. Relevant discussion for ACA-Py: hyperledger/aries-cloudagent-python#950
Relevant Rocketchat discussion: https://chat.hyperledger.org/channel/aries-cloudagent-python?msg=PiCe7t2SSqnFCBcMk
The mechanisms discussed could allow for an open source way (Firebase) of doing push notifications from a mediator.
Hi, when I tried to run "npm install" () according to "Running the App" for aries-mobile-agent-reacy-native on MacOS BigSur, I got the following error:
npm WARN tarball tarball data for aries-framework-javascript@file:/Users/myself/aries-mobile-agent-react-native/aries-framework-javascript-v1.0.0.tgz (sha512-yu8/bKnMmXzZ6/PGNWGrWfByWXmIxsfYE3Tn+RmW2i5fS2LD7qX4hyklGv5WVJGAGzxekXothOCgIK6eHCeHvg==) seems to be corrupted. Trying again. npm WARN tarball tarball data for aries-framework-javascript@file:/Users/myself/aries-mobile-agent-react-native/aries-framework-javascript-v1.0.0.tgz (sha512-yu8/bKnMmXzZ6/PGNWGrWfByWXmIxsfYE3Tn+RmW2i5fS2LD7qX4hyklGv5WVJGAGzxekXothOCgIK6eHCeHvg==) seems to be corrupted. Trying again. npm ERR! code EINTEGRITY npm ERR! sha512-yu8/bKnMmXzZ6/PGNWGrWfByWXmIxsfYE3Tn+RmW2i5fS2LD7qX4hyklGv5WVJGAGzxekXothOCgIK6eHCeHvg== integrity checksum failed when using sha512: wanted sha512-yu8/bKnMmXzZ6/PGNWGrWfByWXmIxsfYE3Tn+RmW2i5fS2LD7qX4hyklGv5WVJGAGzxekXothOCgIK6eHCeHvg== but got sha512-85/KPHodPLGFhDGbWZ9rEHl+VhsKXAaxT1JXNrOHdTp1N6cpyLT0RvItzg9HuhY2sgkt+kiucFF151gD1kNhFg==. (215984 bytes)
I've reinstalled npm using brew. Here is the version information:
npm: 7.7.6
node: 15.14.0
watchman: 4.9.0
pod: 1.10.1
MacOS: 11.2.3
Is there anything that I'm missing? Thanks in advance.
Cheers,
Jason
Hey.
I'm trying to make a connection with another agent with a mediator between.
I can connect from react native app (using code from this repo) to aca-py mediator, but had to move the invitation to another server (/invitation
path does not exist in aca-py admin). I don't know if it's good, but it works.
The issue is when I want to connect with another aca-py agent with mediator between. When I try to receive invitation on mobile I'm getting message in react native app:
New Connection Record
{
"_didDoc":
{
"@context": "https://w3id.org/did/v1",
"authentication":
[
[
undefined
]
],
"id": "Cv5XNG6AW7bQNSz49M3a8h",
"publicKey":
[
[
undefined
]
],
"service":
[
[
undefined
]
]
},
"_invitation":
{
"@id": "859fec9e-ad20-4fe1-bc5b-2585e52636cc",
"@type": "https://didcomm.org/connections/1.0/invitation",
"label": "label",
"recipientKeys":
[
"G9JytRnX8tx6uSetjPyYuSkwwVrDFm23LB8GGK7ifB4k"
],
"routingKeys":
[
"8zNjW3SZt9Tc94dmHjpGdm5qGL8EFQNPMXVCHqJR88ff"
],
"serviceEndpoint": "http://x:3006/"
},
"_theirDidDoc": undefined,
"alias": undefined,
"autoAcceptConnection": true,
"createdAt": 1618056938615,
"did": "Cv5XNG6AW7bQNSz49M3a8h",
"endpoint": undefined,
"id": "d12851bc-f05c-46af-8c7a-721023b1a960",
"role": "INVITEE",
"state": "requested",
"tags":
{
"invitationKey": "G9JytRnX8tx6uSetjPyYuSkwwVrDFm23LB8GGK7ifB4k",
"verkey": "7VfLb6mWcLz3apc3Z1dQxcytAghm4E4c2iKppVYdLXB3"
},
"theirDid": undefined,
"type": "ConnectionRecord",
"verkey": "7VfLb6mWcLz3apc3Z1dQxcytAghm4E4c2iKppVYdLXB3"
}
But I'm getting an error on edge agent (mediator looks good - it shows messages regarding forwarded messages):
2021-04-10 07:17:57,143 aries_cloudagent.core.conductor WARNING Cannot queue message for delivery, no supported transport
Invitation created by edge agent looks like this:
{
"connection_id": "1281a500-aa9b-49ba-b8b8-7dba030772ba",
"invitation": {
"@type": "https://didcomm.org/connections/1.0/invitation",
"@id": "16be3a5c-4cc7-4c2f-a182-6defe6665930",
"recipientKeys": [
"4hxjdd6u3iHyi9WnPfesh9nDvwAKmGZiskw1NiriWMNr"
],
"label": "Edge",
"serviceEndpoint": "http://x:3006/",
"routingKeys": [
"8zNjW3SZt9Tc94dmHjpGdm5qGL8EFQNPMXVCHqJR88ff"
]
},
"invitation_url": "http://x:3006/?c_i=invitation base 64"
}
I copy invitation url, then paste it to qr generator and scan it.
Mediator config:
aca-py start --wallet-type indy \
--seed 00000000000000000000000001Mediat \
--wallet-key mediatorkey \
--wallet-name mediator \
--label "Mediator" \
--open-mediation \
--genesis-url http://genesishost/genesis \
--inbound-transport http 0.0.0.0 3006 \
--inbound-transport ws 0.0.0.0 3008 \
--outbound-transport http \
--outbound-transport ws \
--admin 0.0.0.0 3007 \
--admin-insecure-mode --auto-accept-invites --auto-accept-requests --auto-ping-connection \
--log-level info \
-e http://x:3006/ \
--emit-new-didcomm-prefix
Edge agent config:
aca-py start --wallet-type indy \
--seed 00000000000000000000000001Issuer \
--wallet-key issuerkey \
--wallet-name issuer \
--label "Edge" \
--inbound-transport http 0.0.0.0 3001 \
--inbound-transport ws 0.0.0.0 3003 \
--outbound-transport http \
--outbound-transport ws \
-e http://x:3001/ \
--admin 0.0.0.0 3002 \
--admin-insecure-mode --auto-accept-invites --auto-accept-requests --auto-ping-connection \
--log-level debug \
--genesis-url http://genesishost/genesis \
--emit-new-didcomm-prefix
Mobile config:
const agentConfig = new AgentConfig({
mediatorUrl: Config.MEDIATOR_URL,
label: 'Holder',
walletConfig: {id: 'holder-wallet'},
walletCredentials: {key: 'holderkey'},
autoAcceptConnections: true,
genesisPath,
logger: new ConsoleLogger(LogLevel.debug),
indy,
})
Has anyone experienced an issue like this?
This is really nit-picky but I'd like to propose to change the name from aries-mobileagent-react-native
to aries-mobile-agent-react-native
. It looks a lot cleaner IMO. This is also what we did for our mobile agent.
It are two separate words and I'm not sure why all other aries projects do it.
If people disagree I'm fine with keeping it as is, I just wanted to have made my case.
The GitHub Actions (workflows) are not able to run because there are too many LINTing issues.
Hi,
When scanning the Trinsic invitation qrcode in iphone, I got the Message is undeliverable to connection
.
I have already added the mediator3.test.indiciotech.io
and api.portal.streetcred.id
in exception domains, anything else is missing? Thanks.
DEBUG DEBUG: Sending outbound message to service with id 233aa91a-e8ee-4bcf-941c-0449349d5188-invitation failed with the following error: {
"message": "Error packing message",
"error": {}
}
ERROR ERROR: Message is undeliverable to connection 17a5ee4c-c88b-4314-b5c2-170f6cc0a0af (indi-test) {
"message": {
"@type": "https://didcomm.org/connections/1.0/request",
"@id": "5c3471e3-9616-4ba5-b871-a706d73527d3",
"label": "Topcoder Wallet",
"connection": {
"DID": "VJwzoQG9J4vgR9n4Wiz9Cb",
"DIDDoc": {
"@context": "https://w3id.org/did/v1",
"publicKey": [
{
"id": "VJwzoQG9J4vgR9n4Wiz9Cb#1",
"controller": "VJwzoQG9J4vgR9n4Wiz9Cb",
"type": "Ed25519VerificationKey2018",
"publicKeyBase58": "GRvDmCaNYSzppHTaCTEvi6F6V6PRur8vGw6iJa7hzS63"
}
],
"service": [
{
"id": "VJwzoQG9J4vgR9n4Wiz9Cb#IndyAgentService",
"serviceEndpoint": "http://mediator3.test.indiciotech.io:3000",
"type": "IndyAgent",
"priority": 0,
"recipientKeys": [
"GRvDmCaNYSzppHTaCTEvi6F6V6PRur8vGw6iJa7hzS63"
],
"routingKeys": [
"DGYY31KpABLT4ydNHw11rRneEL8a41X4s6xqre2cAEbn"
]
}
],
"authentication": [
{
"publicKey": "VJwzoQG9J4vgR9n4Wiz9Cb#1",
"type": "Ed25519SignatureAuthentication2018"
}
],
"id": "VJwzoQG9J4vgR9n4Wiz9Cb"
}
}
},
"connection": {
"_tags": {
"state": "invited",
"invitationKey": "A4uAkGcKNaQv5wgmtrgNttv5FBumk6z9dKNLnx2B7Aq7",
"role": "invitee",
"verkey": "GRvDmCaNYSzppHTaCTEvi6F6V6PRur8vGw6iJa7hzS63"
},
"id": "17a5ee4c-c88b-4314-b5c2-170f6cc0a0af",
"createdAt": "2021-11-04T02:13:42.178Z",
"did": "VJwzoQG9J4vgR9n4Wiz9Cb",
"didDoc": {
"@context": "https://w3id.org/did/v1",
"publicKey": [
{
"id": "VJwzoQG9J4vgR9n4Wiz9Cb#1",
"controller": "VJwzoQG9J4vgR9n4Wiz9Cb",
"type": "Ed25519VerificationKey2018",
"publicKeyBase58": "GRvDmCaNYSzppHTaCTEvi6F6V6PRur8vGw6iJa7hzS63"
}
],
"service": [
{
"id": "VJwzoQG9J4vgR9n4Wiz9Cb#IndyAgentService",
"serviceEndpoint": "http://mediator3.test.indiciotech.io:3000",
"type": "IndyAgent",
"priority": 0,
"recipientKeys": [
"GRvDmCaNYSzppHTaCTEvi6F6V6PRur8vGw6iJa7hzS63"
],
"routingKeys": [
"DGYY31KpABLT4ydNHw11rRneEL8a41X4s6xqre2cAEbn"
]
}
],
"authentication": [
{
"publicKey": "VJwzoQG9J4vgR9n4Wiz9Cb#1",
"type": "Ed25519SignatureAuthentication2018"
}
],
"id": "VJwzoQG9J4vgR9n4Wiz9Cb"
},
"verkey": "GRvDmCaNYSzppHTaCTEvi6F6V6PRur8vGw6iJa7hzS63",
"theirLabel": "indi-test",
"state": "requested",
"role": "invitee",
"invitation": {
"@type": "https://didcomm.org/connections/1.0/invitation",
"label": "indi-test",
"imageUrl": "https://trinsicapiassets.azureedge.net/files/e240f026-7673-48a3-a86b-08c3e4390eab_6f012535-89c8-4052-b678-279a1a8fa7a0.png",
"serviceEndpoint": "https://api.portal.streetcred.id/agent/f1hh3tE1gCGT3tgoXBfX6W3yQQbrzVoJ",
"routingKeys": [
"F2HitoRST9NDdft8WCFtRAyPBBHhtQU87WyxUuJQwfCK"
],
"recipientKeys": [
"A4uAkGcKNaQv5wgmtrgNttv5FBumk6z9dKNLnx2B7Aq7"
],
"@id": "ce2f273f-e853-4f1e-98f2-9d97abf99f6b"
}
}
}
WARN Possible Unhandled Promise Rejection (id: 0):
[AriesFrameworkError: Message is undeliverable to connection 17a5ee4c-c88b-4314-b5c2-170f6cc0a0af (indi-test)]
As a developer, I want to be able to fetch messages queued with a mediator while the app is in a background state. Ideally message processing can occur to determine if a notification is relevant to show to an end user.
There needs to be investigation into the allowed processing time in iOS (and Android) to determine how viable this is.
After the latest updates the application is throwing navigation errors when a notification is received:
Couldn't find a navigation object. Is your component inside NavigationContainer?
Since the NavigationContainer
wraps <App />
in index.js
its a root level component and definitely exists. Adding an additional one causes additional errors.
From iOS 11+ application must be submitted with an complete icon set. As part of fixing this issue we would like to add the Aries themed icon set for iOS and Android.
When trying to run the application on Android, I encountered two issues with the setup.
1: The README did not mention that I have to pack
aries-framework-javascript myself.
2: That I have to create a .env file with the correct entries.
template env file, found on Rocketchat:
MEDIATOR_URL=https://dd652a260851.ngrok.io
GENESIS_URL=https://raw.githubusercontent.com/Indiciotech/indicionetwork/main/genesis_files/pool_transactions_testnet_genesis
cheers!
We would like to give end users the capability of basic messaging with other agents and people.
is support for the new Aries Interop Profile 2.0 planned for this project?
In AFJ the indy sdk reference (in package.json) is:
"indy-sdk": "^1.16.0-dev-1636",
Bifold looks like it's still on 1.14.0
, can we update to the latest Indy SDK?
I can only run using the following on visual studio #code:
npm install --force
After scanning a QR code connection a success modal is displayed. Upon unloading the modal the camera screen goes blank with no navigation triggered back to the home page.
AFJ: 0.1.0-alpha.289
Bifold: Commit cc83291
Genesis url: http://test.bcovrin.vonx.io/genesis
This network is used by a lot of test/demo apps
As a developer, I would like to as a recipient utilize ACA-Py as a mediator. The additions here are to allow environment configuration of an ACA-Py mediator. This requires updates in Aries Framework Javascript, being tracked here.
Can we support the localisation for schema attributes and value?
To achieve this do we need to implement this functionality on react-native app side or on Aries agent side by implementing the below RFC?
https://github.com/hyperledger/aries-rfcs/blob/main/features/0043-l10n/README.md
As per the error message the app is throwing a VirtualizedLists
should not be embedded in a SafeAreaScrollView
.
VirtualizedLists should never be nested inside plain ScrollViews with the same orientation
because it can break windowing and other functionality - use another
VirtualizedList-backed container instead.
Im finding the listener for the state changing in credentials to be a bit unreliable at the moment. I would like to add a refresh button to find new offered credentials. Does anyone by chance know how I could fetch all offered credentials for my agent?
So instead of using this
agentContext.agent.credentials.events.removeAllListeners(CredentialEventType.StateChanged) agentContext.agent.credentials.events.on(CredentialEventType.StateChanged, handleCredentialStateChange)
Have a button that onPress I can fetch the offered credentials for my existing connections.
Thanks allot!
I received the following error while provisioning.
DEBUG DEBUG: Provision record with id 'UNIQUE_PROVISIONING_ID' not found. {
"indyError": "WalletItemNotFound"
}
INFO INFO: No provision record found.
I am trying to get Bifold to accept an invitation sent by a DTS issuer running on my local machine
I cannot get pass this error after scanning the barcode of the credential invitation
[javascript] Possible Unhandled Promise Rejection (id: 0):
Error: Connection record is not ready to be used. Expected responded or complete, found invalid state requested
Error: Connection record is not ready to be used. Expected responded or complete, found invalid state requested
Steps:
Just to make things easier
this is the last message received from issuer right before the exception happens
{
"@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/issue-credential/1.0/offer-credential",
"@id": "cfb0d143-0705-41ec-8d1d-74ae3945f934",
"thread": {},attach": [
"offers
{
"@id": "libindy-cred-offer-0",
"mime-type": "application/json",
"data": {
"base64": "[Base 64 data]"
}
}
],
"credential_preview": {
"@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/issue-credential/1.0/credential-preview",
"attributes": [
{
"name": "name",
"value": "Vaccination Certificate"
},
{
"name": "description",
"value": "Vaccination Certificate"
},
{
"name": "expirationDate",
"value": "2022-06-30T04:46:57.6417668+00:00"
},
{
"name": "credential_type",
"value": "VaccinationEvent"
},
{
"name": "countryOfVaccination",
"value": "CA"
},
{
"name": "recipient_type",
"value": "VaccineRecipient"
},
{
"name": "recipient_fullName",
"value": "SCHITT, Roland Ethan"
},
{
"name": "recipient_birthDate",
"value": "01/14/1952"
},
{
"name": "vaccine_type",
"value": "Vaccine"
},
{
"name": "vaccine_disease",
"value": "Influenza"
},
{
"name": "vaccine_medicinalProductName",
"value": "Fluzone High-Dose"
},
{
"name": "vaccine_marketingAuthorizationHolder",
"value": "SANOFI PASTEUR LIMITED"
},
{
"name": "vaccine_dateOfVaccination",
"value": "09/22/2020"
}
]
},
"comment": "create automated credential exchange"
}
I attached the log from both the issuer and the bifold terminal
agent_invitee.txt
issuer_log.txt
I also can't seem to find where I should add breakpoints in the code to dive deep in the process
It seems like the last event I can get to is
components>GRCodeScanner>index.js
`const connectionRecord = await agentContext.agent.connections.receiveInvitation(decodedInvitation, {
autoAcceptConnection: true,
})
//that's the last point I could reach
console.log('New Connection Record', connectionRecord)`
I don't seem to be able to reach with the debugger breakpoints to this line though
Workflows>index.js
const handleCredentialStateChange = async (event) => { console.info(
Credentials State Change, new state: "${event.credentialRecord.state}", event) ..... }
Which I believe runs if there was to be a successful connection attempt
Any more thoughts?
Hi, when I tried to run "npm run ios" on MacOS BigSur, I got the following error:
error: No signing certificate "iOS Development" found: No "iOS Development" signing certificate matching team ID "8GUD26WFN3" with a private key was found. (in target 'AriesBifoldTests' from project 'AriesBifold')
error: Signing for "AriesBifold" requires a development team. Select a development team in the Signing & Capabilities editor. (in target 'AriesBifold' from project 'AriesBifold')
** BUILD FAILED **
Here is the version information:
npm: 7.23.0
node: 12.16.2
pod: 1.11.2
MacOS: 11.5.2
Thanks in advance.
Yoshiyuki Karezaki
This requested project improvement is to add support for multiple languages (l18n). When people can interact with a VC in a language they easily understand it will help erase barriers to adoption. To make this happen I've implemented a the basic mechanics for internationalization (i8n) using two basic npm packages. One to help select the prefers language and another to manage translations. The implementation is not complete as all strings are not moved to the translations file but is good enough to start the conversation.
When done, I would expect the application to determine the current language and, if a matching translation is available, use it throughout the application. The base implementation will remain en
and others will be added pending community contributions.
Add multi-language (internationalisation and localisation)support using I18next and react-i18next
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.