Remove the telemetry (#45)

* remove the telemetry except from the renderers as I'm not being capable to remove it from there

* remove the telemetry except from the renderers as I'm not being capable to remove it from there

* Remove remainder of non-functional Telemetry and Citra Web Services

Squashed commit of the following:

commit f6dd4d4579c91db323877f0d08b9c01c82e1bb32
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 14:02:26 2024 -0600

    gl_driver.h: add back missing functions

commit 8f14384e7a7b763c3f2ccb3af6b5a59df641d9ee
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 13:56:16 2024 -0600

    gl_driver.cpp: add back missing functions

commit 5c802524b01a6eb05952d88ccf9dd78d63baee0a
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 13:39:46 2024 -0600

    apply clang-format

commit e8f62a7d3ee8a3da885a28bce21bcfcb84f13a84
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 13:16:22 2024 -0600

    remove web_tab

commit ced7f1e4909ae7b2714a96e3c3fa0500e8c62968
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 13:13:47 2024 -0600

    remove unused call?

commit f10e05da887e4570853fae2bd55a71087b4bcc77
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 13:03:47 2024 -0600

    fix build errors

commit 0489c1770b4b48d51f626145ae9235d3c81029fc
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 12:54:35 2024 -0600

    Remove deleted files

commit b2eb56f5a1f01663cc9874d99fe77ee64b48622b
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 12:43:17 2024 -0600

    Remove ConfigureWeb

commit b96f7c724006b2c5ee2272becaa70584fe90d012
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 11:49:51 2024 -0600

    remove unused DebugHandler

commit 91ddf16f63f9ae07b0cb2768171728dc878d1653
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 11:41:31 2024 -0600

    remove CollectToolingInfo() reference

commit 3909ac0502f23f8fb54944b53d5072b6986f8ffd
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 11:33:39 2024 -0600

    Fix "clean renderer_vulkan.cpp"

    This reverts commit 8a882658da9fabca40d71d73bfaf3bb5702acd72.

commit f4a10c4e4f27471b0a263ac363a6fa2abc9d6dc9
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 11:25:12 2024 -0600

    remove Core() references

commit 5593b8484e7c9f525ea218902dd2c13148d86b37
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 11:09:26 2024 -0600

    clean core/core.cpp

commit 55bbd8ad283297ef79db11e19ca6303fdfba6626
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 11:03:45 2024 -0600

    apply clang-format

commit 3707a0b2705dd415876130c9c90b0916bdea11db
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 11:02:16 2024 -0600

    citra_qt/main.h

commit ddbdea9be4d8179a333e04e7c302e215868715a9
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 11:01:30 2024 -0600

    clean common/detached_tasks.h

commit b513ba3b91ebc81bddd634b5690b6434824e1c7a
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:58:51 2024 -0600

    clean android/app/src/main/jni/default_ini.h

commit b6ba7d7cd730393883fdca294c651a4186727b55
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:58:14 2024 -0600

    clean android/app/src/main/jni/native.cpp

commit 2351305bb24b005920af0f3f7bb6bbb5bb3124bd
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:56:59 2024 -0600

    network/network_settings.h

commit 5b4c1ebb97c7fad5daf7789e1d3640041c2412fb
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:55:53 2024 -0600

    clean citra_qt/configuration/configure_web.ui

commit 9526d5122995c2e9c52b4d93b6e836a2ea4c80ef
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:54:53 2024 -0600

    citra_qt/configuration/config.cpp

commit ec6fe57412ce97e06096fc07f8b86dd080b7b944
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:53:50 2024 -0600

    clean citra/default_ini.h

commit acba1cf7e94de2fa87174e9f6d7c7c4554146352
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:52:47 2024 -0600

    clean citra/config.cpp

commit 02888777590d4e4bf1423e168a672ca0c5e140e5
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:50:42 2024 -0600

    clean vk_instance.cpp

commit eae451d5825b3601382c3a6dd08a3bde5c7a9460
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:48:53 2024 -0600

    clean vk_instanch.h

commit 8a882658da9fabca40d71d73bfaf3bb5702acd72
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:47:11 2024 -0600

    clean renderer_vulkan.cpp

commit ea6df111bc447913d2999acd86de984acced7eeb
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:45:51 2024 -0600

    clean renderer_opengl.cpp

commit 6b1bea0ef8cf8831c520d1c4e90b9d73d421c764
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:44:17 2024 -0600

    clean pica_to_gl.h

commit c12e984045a430cb10500241ada68701f73c85ac
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:42:48 2024 -0600

    clean gl_driver.h

commit ca3fe7801fff125a1ab8706bfc3998ca2928bded
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:40:14 2024 -0600

    clean gl_driver.cpp

commit d57381c38b217a423a7039bc7b413d79f59c2ff1
Author: Reg Tiangha <rtiangha@users.noreply.github.com>
Date:   Fri Mar 29 10:38:44 2024 -0600

    delete telemetry files

commit 1af826d1a045c5568a0d9ef4ca423514f298aee2
Author: Miguel <81558772+Miguel-hrvs@users.noreply.github.com>
Date:   Wed Mar 27 16:17:58 2024 +0100

    remove the telemetry except from the renderers as I'm not being capable to remove it from there

* rebase renderer_vulkan

* clean up renderer_vulkan

* bring back vulkan gpu logging

* clang-format vk_instance.h

* fix-formatting

---------

Co-authored-by: Reg Tiangha <rtiangha@users.noreply.github.com>
This commit is contained in:
Miguel 2024-04-02 20:25:36 +02:00 committed by GitHub
parent a442389a60
commit 8e35df1a6c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
62 changed files with 49 additions and 4395 deletions

View File

@ -3583,142 +3583,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Engelsk</translation> <translation>Engelsk</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citras webservice</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Ved at give dit brugernavn og token, accepterer du at Citra indsamler yderligere brugsdata, som måske kan indeholde brugeridentificerende information.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Bekræft</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Opret konto</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Brugernavn:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Hvad er min token?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>Konfiguration af webservicen kan kun ændres mens du ikke er vært af et offentligt rum.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetri</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Del anonym brugsdata med udviklerne af Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Lær mere</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>Telemetri-id:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Generer nyt</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord-presence</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Vis kørende spil som din Discord-status</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Lær mere&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Opret bruger&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Hvad er min token?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>Telemetri-id: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Godkender...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Bekræftelse mislykkedes</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

136
dist/languages/de.ts vendored
View File

@ -3585,142 +3585,6 @@ Ziehe Punkte, um ihre Position zu verändern, oder doppelklicke auf Zellen in de
<translation>Englisch</translation> <translation>Englisch</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra Web Service</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Mit dem Bereitstellen Ihres Nutzernamens und Tokens, erlauben Sie Citra, zusätzliche Nutzungsdaten zu sammeln. Die Nutzungsdaten können auch Daten zur Nutzeridentifikation beinhalten.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Verifizieren</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Registrieren</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token: </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Nutzername:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Was ist mein Token?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>Die Web-Service-Konfiguration kann nur geändert werden, wenn kein öffentlicher Raum gehostet wird.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetrie</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Anonyme Nutzungsdaten an das Citra-Team senden</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Mehr erfahren</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>Telemetrie-ID:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Regenerieren</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord Presence</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Aktuelles Spiel in Ihrem Discordstatus anzeigen</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Mehr erfahren&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Anmelden&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Was ist mein Token?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Nicht spezifiziert</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>Telemetrie-ID: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Token nicht verifiziert</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Der Token wurde nicht verifiziert. Die Änderung zu dem Token wurde nicht gespeichert.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Verifizieren...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Verifizierung fehlgeschlagen</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Verifizierung fehlgeschlagen. Stellen Sie sicher, dass Sie sowohl Ihren Token korrekt eingegeben haben und dass Sie mit dem Internet verbunden sind.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

136
dist/languages/el.ts vendored
View File

@ -3584,142 +3584,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Αγγλικά</translation> <translation>Αγγλικά</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Φόρμα</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra Web Service</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Παρέχοντας το όνομα χρήστη και το αναγνωριστικό σας, επιτρέπετε στο Citra να συλλέξει περισσότερα δεδομένα χρήσης, που ενδέχεται να περιέχουν αναγνωριστικές πληροφορίες χρήστη.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Επαλήθευση</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Εγγραφή</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Αναγνωριστικό: </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Όνομα χρήστη:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Ποιο είναι το αναγνωριστικό μου;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>Η ρύθμιση της διαδικτυακής υπηρεσίας μπορεί να αλλάξει μόνο όταν δεν είναι σε λειτουργία κάποιο δημόσιο δωμάτιο.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Τηλεμετρία</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Κοινοποίηση ανώνυμων δεδομένων χρήσης στην ομάδα του Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Μάθετε περισσότερα</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>ID τηλεμετρίας:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Επαναδημιουργία</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Παρουσία Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Εμφάνιση τρέχοντος παιχνιδιού στην κατάσταση Discord σας</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Μάθετε περισσότερα&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Εγγραφή&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Ποιο είναι το αναγνωριστικό μου;&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Δεν έχει καθοριστεί</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>ID τηλεμετρίας: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Μη επαληθευμένο αναγνωριστικό</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Το αναγνωριστικό δεν επαληθεύτηκε. Η αλλαγή στο αναγνωριστικό σας δεν έχει αποθηκευτεί.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Επαλήθευση...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Αποτυχία επαλήθευσης</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Αποτυχία επαλήθευσης. Βεβαιωθείτε ότι έχετε εισαγάγει σωστά το αναγνωστικό σας και ότι λειτουργεί η σύνδεσή σας στο διαδίκτυο.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3585,142 +3585,6 @@ Mueve los puntos para cambiar la posición, o haz doble click en las celdas de l
<translation>Inglés (English)</translation> <translation>Inglés (English)</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Formulario</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Servicio Web de Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Al dar tu nombre de usuario y tu token, das tu consentimiento a que Citra recopile datos de uso adicionales, que pueden incluir información que identifique al usuario.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Verificar</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Registrarse</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Nombre de usuario:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>¿Cuál es mi token?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>La configuración del Servicio Web sólo puede ser cambiada cuando una sala pública no está siendo alojada.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetría</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Compartir datos de uso anónimos con el equipo de Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Más Información</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>ID de Telemetría:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Regenerar</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Presencia en Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Mostrar Juego Actual en el Estado de Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Más información&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Regístrate&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;¿Cuál es mi token?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Sin especificar</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>ID de Telemetría: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Token no verificado</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>El token no ha sido verificado. El cambio a tu token no se ha guardado.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Verificando...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>La verificación falló</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>La verificación ha fallado. Comprueba que has introducido tu token correctamente y que tu conexión a Internet funcione correctamente.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

136
dist/languages/fi.ts vendored
View File

@ -3583,142 +3583,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Englanti</translation> <translation>Englanti</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Muot</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citran Nettipalvelu</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Todenna</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Rekisteröidy</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Avain:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Käyttäjänimi</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Mikä on avaimeni?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetria</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Jaa anonyymejä käyttötietoja Citran tekiöiden kanssa</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Opi lisää</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>Telemetria tunnus:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Uudista</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord läsnäolo</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Näytä nykyinen peli Discord tilassa</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Lue lisää&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Kirjaudu&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Mikä on avaimeni?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>Telemetria tunnus: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Varmennetaan...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Varmennus epäonnistui</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

136
dist/languages/fr.ts vendored
View File

@ -3585,142 +3585,6 @@ Glissez les points pour modifier la position, ou double-cliquez les cellules pou
<translation>Anglais</translation> <translation>Anglais</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Forme</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Service web de Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>En fournissant votre nom d&apos;utilisateur et votre jeton, vous acceptez d&apos;autoriser Citra à collecter des données d&apos;utilisation supplémentaires, qui peuvent inclure des informations d&apos;identification de l&apos;utilisateur.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Vérifier</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>S&apos;inscrire</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Jeton :</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Nom d&apos;utilisateur</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Quel est mon jeton ?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>La configuration du service Web ne peut être modifiée que si un salon publique n&apos;est pas en cours d&apos;hébergement.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Télémétrie</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Partage des données d&apos;utilisation anonymes avec l&apos;équipe Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>En savoir plus</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>ID de télémétrie :</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Régénérer</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Présence sur Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Afficher votre jeu en cours dans votre statut Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;En savoir plus&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;S&apos;inscrire&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Quel est mon jeton ?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Non spécifié</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>ID de télémétrie: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Jeton non vérifié</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Jeton non vérifié. La modification de votre jeton n&apos;a pas é sauvegardée.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Vérification en cours...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Échec de la vérification</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Échec de la vérification. Vérifiez que le jeton a é écris correctement et que votre connexion internet fonctionne.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3582,190 +3582,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Angol</translation> <translation>Angol</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Forma</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra Web-szolgáltatás</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>A felhasználóneved és tokened megadásával, belegyezel abba, hogy a Citra használati adatokat gyűjtsön, ami felhasználó azonosító információt tartalmazhat.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Ellenőrzés</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Regisztráció</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Felhasználónév:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Mi a tokenem?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetria</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Névtelen használati adat megosztása a Citra csapatával</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Tudj meg többet</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>Telemetria ID:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Regeneráció</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord jelenlét</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Jelenlegi játék megjelenítése a Discord állapotodban</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Tudj meg többet&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Regisztráció&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Mi a tokenem?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Nem meghatározott</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>Telemetria ID: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Token nincs megerősítve</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Token nincs megerősítve. A változtatások nem lettek elmentve.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Megerősítés...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Ellenőrzés sikertelen</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Sikertelen megerősítés. Győződj meg róla, hogy helyesen írtad be a tokened, és van internetkapcsolatod.</translation>
</message>
</context>
<context>
<name>DirectConnect</name>
<message>
<location filename="../../src/citra_qt/multiplayer/direct_connect.ui" line="14"/>
<source>Direct Connect</source>
<translation>Közvetlen Kapcsolódás</translation>
</message>
<message>
<location filename="../../src/citra_qt/multiplayer/direct_connect.ui" line="47"/>
<source>Server Address</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/multiplayer/direct_connect.ui" line="54"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Server address of the host&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/multiplayer/direct_connect.ui" line="64"/>
<source>Port</source>
<translation>Port</translation>
</message>
<message>
<location filename="../../src/citra_qt/multiplayer/direct_connect.ui" line="71"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Port number the host is listening on&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Annak a portnak a száma, amire a gazda figyel&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/multiplayer/direct_connect.ui" line="77"/>
<source>24872</source>
<translation>24872</translation>
</message>
<message>
<location filename="../../src/citra_qt/multiplayer/direct_connect.ui" line="97"/>
<source>Nickname</source>
<translation>Becenév</translation>
</message>
<message>
<location filename="../../src/citra_qt/multiplayer/direct_connect.ui" line="111"/>
<source>Password</source>
<translation>Jelszó</translation>
</message>
<message>
<location filename="../../src/citra_qt/multiplayer/direct_connect.ui" line="153"/>
<source>Connect</source>
<translation>Kapcsolás</translation>
</message>
</context>
<context> <context>
<name>DirectConnectWindow</name> <name>DirectConnectWindow</name>
<message> <message>

137
dist/languages/id.ts vendored
View File

@ -3584,143 +3584,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Inggris</translation> <translation>Inggris</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Formulir</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Layanan Web Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Dengan memberikan nama user dan token, Anda menyetujui Citra untuk mengumpulkan data penggunaan tambahan, mungkin termaksud informasi identifikasi pengguna.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Verifikasi</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Daftar</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token: </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Nama User:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Apa token Saya?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>Konfigurasi Servis Web hanya bisa di ubah ketika ruangan publik sedang tidak digunakan</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetri</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Bagikan data penggunaan anonim dengan tim Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Pelajari lebih Banyak</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>ID Telemetri:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Memperbarui</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Status Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Tampilkan Game Saat Ini ke Status Discord Anda</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Pelajari lebih banyak&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Daftar&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Apa token saya ?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Tidak di spesifikasi</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>ID Telemetri: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Token tidak ter-verifikasi</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Token tidak di verifikasi.
Perubahan pada token anda belum tersimpan.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Mem-verifikasi...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Verifikasi gagal</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Verifikasi gagal. Pastikan nama user dan token yang Anda masukkan benar dan koneksi internet Anda menyala.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

136
dist/languages/it.ts vendored
View File

@ -3585,142 +3585,6 @@ Trascina i punti per cambiarne la posizione, o fai doppio clic sulla tabella per
<translation>Inglese</translation> <translation>Inglese</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Modulo</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Servizio web di Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Fornendo i tuoi nome utente e token, permetti a Citra di raccogliere dati di utilizzo aggiuntivi, che potrebbero contenere informazioni identificative dell&apos;utente.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Verifica</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Registrati</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Nome utente</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Qual è il mio token?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>La configurazione del servizio web può essere cambiata solo quando non si sta ospitando una stanza pubblica.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetria</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Condividi dati anonimi sull&apos;utilizzo con il team di Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Per saperne di più</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>ID telemetria:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Rigenera</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord Presence</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Mostra il gioco attuale nel tuo stato di Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Per saperne di più&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Registrati&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Qual è il mio token?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Non specificato</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>ID telemetria: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Token non verificato</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Il token non è stato verificato. La modifica al token non è stata salvata.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Verifica...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Verifica fallita</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Verifica fallita. Controlla di aver inserito il token correttamente, e che la tua connessione a internet sia funzionante.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3587,142 +3587,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation></translation> <translation></translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra Webサービス</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Citraへの追加の情報データの収集</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>Web設定はPublicなルームをホスティング中は変更できません</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Citraチームに匿名で使用データを共有する</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord Presence</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Discordに表示</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;もっと詳しく&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;サインアップ&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;トークンの取得&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>テレメトリーID: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation></translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3585,142 +3585,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>English</translation> <translation>English</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation> Citra가 .</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation> :</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation> ?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation> .</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Citra팀과 </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation> </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation> ID:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation> </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation> </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;자세히 알아보기&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;가입&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;나의 토큰이 무엇인가요?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation> ID: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation> </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation> . .</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation> </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation> . .</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3581,142 +3581,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Anglų k.</translation> <translation>Anglų k.</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Forma</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra interneto tarnyba</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Įrašydami jūsų vartotojo vardą ir simbolinį ID, jūs sutinkate, kad Citra rinktų papildomus naudojimo duomenis, tarp kurių gali būti informacija, skirta atpažinti vartotoją.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Patikrinti</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Užsiregistruoti</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Simbolinis ID:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Vartotojo vardas:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Koks yra mano simbolinis ID?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetrija</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Pasidalinti anonimiškais naudojimo duomenimis su Citra komanda</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Sužinoti daugiau</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>Telemetrijos ID:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Regeneruoti</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord nustatymai</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Rodyti jūsų žaidžiamą žaidimą Discord&apos;e</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sužinoti daugiau&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Užsiregistruoti&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Koks yra mano simbolinis ID?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>Telemetrijos ID: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Tikrinama...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Tikrinimas nepavyko</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

136
dist/languages/nb.ts vendored
View File

@ -3584,142 +3584,6 @@ Dra punkter for å endre posisjon, eller dobbeltklikk på tabellceller for å re
<translation>Engelsk</translation> <translation>Engelsk</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra Web Tjenester</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Ved å gi brukernavn og nøkkel, samtykker du i å tillate Citra å samle inn brukerdata, som kan inneholde bruker indentifiserende informasjon.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Verifisere</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Registrer deg</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Nøkkel: </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Brukernavn:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Hva er min nøkkel?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>Web Service-konfigurasjon kan bare endres når et offentlig rom ikke blir hostet.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetri</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Del anonyme brukerdata med Citra-teamet</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Lær mer</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>Telemetri ID:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Regenerere</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord tilstedeværelse</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Vis Gjeldende Spill i Discord Statusen din.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Lær mer&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Registrer deg&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Hva er min nøkkel?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Uspesifisert</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>Telemetri ID: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Nøkkel ikke bekreftet</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Nøkkel ble ikke bekreftet. Endringen til nøkelen ditt er ikke lagret.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Verifiserer...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Verifikasjon misslyktes</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Bekreftelsen mislyktes. Sjekk at du har lagt inn nøkkelen riktig, og at internettforbindelsen din fungerer.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

136
dist/languages/nl.ts vendored
View File

@ -3585,142 +3585,6 @@ Sleep punten om de positie te wijzigen of dubbelklik op tabelcellen om waarden t
<translation>Engels</translation> <translation>Engels</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Formulier</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra-webdienst</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Door het voorzien van je gebruikersnaam en token, ga je akkoord dat Citra aanvullende gebruiksdata verzameld, waaronder informatie waarmee de gebruiker zou kunnen worden geïdentificeerd.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Verifiëren </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Registreren</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Gebruikersnaam:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Wat is mijn token?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>De webserviceconfiguratie kan alleen worden gewijzigd als er geen publieke ruimte wordt gehost.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetrie</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Deel anonieme gebruiksdata met het Citra team</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Meer leren</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>Telemetrie ID:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Regenereren</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord Presence</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Toon Huidige Spel in je Discord Status</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Meer leren&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Registreren&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Wat is mijn token?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Ongespecificeerd</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>Telemetrie ID: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Token niet geverifieerd</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Token is niet geverifieerd. De wijziging van uw token is niet opgeslagen.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Verifiëren...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Verificatie mislukt</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Verificatie mislukt. Controleer of je je token correct hebt ingevoerd en of uw internetverbinding werkt.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3583,142 +3583,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Angielski (English)</translation> <translation>Angielski (English)</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Formularz</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Usługa Sieciowa Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Poprzez wprowadzenia nazwy użytkownika i tokenu, wyrażasz zgodę na wysłanie dodatkowych danych do Citra. Dane te mogą zawierać informacje identyfikujące użytkownika.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Zweryfikuj</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Zarejestruj się</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token: </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Nazwa Użytkownika:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Czym jest mój token?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetria</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Udostępnij anonimowe dane użytkowania zespołowi Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Dowiedz się więcej</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>ID Telemetrii:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Regeneruj</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Widoczność na Discordzie</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Pokaż obecnie włączoną grę w statusie na Discrodzie</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Dowiedz się więcej&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Czym jest mój token?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>ID Telemetrii: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Token nie zweryfikowany</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Weryfikowanie...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Weryfikacja nieudana</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3585,142 +3585,6 @@ Arraste os pontos para alterar a posição ou clique duas vezes nas células da
<translation>Inglês (English)</translation> <translation>Inglês (English)</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Formulário</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra Web Service</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Ao informar o seu usuário e token, você concorda em permitir ao Citra recolher dados de utilização adicionais, que podem incluir informações de identificação de usuário.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Verificar</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Registrar-se</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Nome de usuário</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Qual é o meu token?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>As configurações do Web Service não podem ser alteradas quando uma sala pública criada por você estiver em operação.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetria</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Compartilhar anonimamente dados de utilização com a equipe do Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Saiba mais</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>ID de telemetria:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Gerar um novo</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Presença no Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Mostrar o jogo atual no seu perfil do Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Saber mais&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Registrar-se&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Qual é o meu token?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Não especificado</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>ID de telemetria: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Token não verificado</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>O token não foi verificado. A alteração no seu token não foi salva.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Verificando...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Falha na verificação</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Falha na verificação. Verifique se o token foi inserido corretamente e se a conexão à internet está funcionando.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3584,142 +3584,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Engleză</translation> <translation>Engleză</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Model</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra Serviciu Web</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Furnizând numele de utilizator și token-ul, sunteți de acord permiți companiei Citra colecteze date suplimentare de utilizare, care pot include informații de identificare a utilizatorului.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Verificați</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Înregistrare</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token: </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Nume de utilizator:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Care este token-ul meu?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>Configurarea de săli publice poate fi modificată doar când o sală publică nu este găzduită.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetrie</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Distribuiți date de utilizare anonime cu echipa Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Mai multe informații</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>ID telemetrie:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Regenerează</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Prezență pe Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Afișează Jocul Prezent pe Statusul Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Mai multe informații&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Înregistrare&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Care este token-ul meu?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Nespecificat</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>ID de Telemetrie: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Verificănd...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Verificare eșuată</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3587,143 +3587,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Английский</translation> <translation>Английский</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Форма</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Веб-сервис Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Отправка имени пользователя и токена означает согласие на сбор приложением Citra дополнительных данных об использовании,
которые могут включать сведения, идентифицирующие пользователя.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Подтвердить</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Регистрация</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Токен:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Имя пользователя:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Что такое токен?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>Настройки веб-сервиса можно изменять только в том случае, если на компьютере не размещается публичная комната чата.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Телеметрия</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Поделиться анонимными данными использования с командой Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Дополнительная информация</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>ID телеметрии:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Пересоздать</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Интеграция с Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Показывать текущую игру в статусе Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Дополнительная информация&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Зарегистрироваться&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Что такое токен?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Не указано</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>ID телеметрии: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Токен не проверен</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Токен не был проверен. Изменения к токену сохранены не были.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Проверка...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Сбой проверки</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Сбой проверки. Убедитесь в том, что токен введён верно и подключение к Интернету работает.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3583,142 +3583,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>İngilizce</translation> <translation>İngilizce</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra Servisi</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Kullanıcı adınızı ve tokeninizi sağlayarak Citra&apos;nın ek kullanım verilerini toplamasına izin vermeyi kabul ediyorsunuz, bu kullanıcı tanımlayıcı bilgileri de içerebilir.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Doğrula</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Kaydol</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Kullanıcı Adı:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Tokenim nedir?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>Web servisi yapılandırması yalnızca Herkese ık Oda sunulmadığı sürece değiştirilebilir.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Telemetri</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Citra ekibiyle anonim kullanım verilerini paylaş</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Daha fazla bilgi edinin</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation>Telemetri ID:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Yeniden Oluştur</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord Görünümü</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Şu Anki Oyunu Discord Durumunda Göster</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Daha fazla bilgi edinin&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Kaydol&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Tokenim nedir?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Belirtilmemiş</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation>Telemetri ID: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Token doğrulanmadı</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Token doğrulanmadı. Token&apos;inizdeki değişiklikler kaydedilmeyecektir.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Doğrulanıyor...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Doğrulama başarısız oldu</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Doğrulama başarısız oldu. Token&apos;inizi doğru girdiğinizden ve internet bağlantınızın çalıştığından emin olun.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3583,142 +3583,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Tiếng Anh</translation> <translation>Tiếng Anh</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Đnh dạng</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Dịch vụ Web Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>Bằng việc cung cấp tên tài khoản token, bạn đã cho phép Citra thu thập các thông tin liên quan đến giả lập, cũng như bao gồm các thông tin đnh danh người dùng.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation>Xác thực</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation>Đăng </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation>Token: </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>Tên người dùng:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation>Token của tôi ?</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation>Thiết lập cho Dịch vụ web chỉ thay đi đưc khi đang không tổ chức phòng công khai nào.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>Theo dõi từ xa</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>Gửi các dữ liệu sử dụng nặc danh cho đi ngũ Citra</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation>Tìm hiểu thêm</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation> theo dõi:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation>Tạo mới</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation>Hiển thị game đang chơi trên trạng thái Discord</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Tìm hiểu thêm&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Đăng ký&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Token là gì?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation>Chưa đnh nghĩa</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation> theo dõi: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation>Token không đưc xác thực</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation>Token này chưa đưc xác thực. Thay đi về token chưa đưc lưu.</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>Đang xác thực...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation>Xác thực thất bại</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation>Xác thực thất bại. Vui lòng kiểm tra token đã nhập vào đúng, hiện thiết bị đang kết nối đến mạng.</translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3585,142 +3585,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation></translation> <translation></translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation> Citra 使</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation>使</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation> Citra 使</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation> ID:</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation> Discord </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;了解更多&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;注册&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;我的令牌是?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation> ID: 0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation></translation>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -3584,142 +3584,6 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>English</translation> <translation>English</translation>
</message> </message>
</context> </context>
<context>
<name>ConfigureWeb</name>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="14"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="22"/>
<source>Citra Web Service</source>
<translation>Citra </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="28"/>
<source>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</source>
<translation>使 Citra 使使</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="46"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="140"/>
<source>Verify</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="53"/>
<source>Sign up</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="63"/>
<source>Token: </source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="73"/>
<source>Username: </source>
<translation>使</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="90"/>
<source>What is my token?</source>
<translation> Citra </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="115"/>
<source>Web Service configuration can only be changed when a public room isn&apos;t being hosted.</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="125"/>
<source>Telemetry</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="131"/>
<source>Share anonymous usage data with the Citra team</source>
<translation>使 Citra </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="138"/>
<source>Learn more</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="147"/>
<source>Telemetry ID:</source>
<translation> ID</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="163"/>
<source>Regenerate</source>
<translation> ID</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="177"/>
<source>Discord Presence</source>
<translation>Discord </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.ui" line="183"/>
<source>Show Current Game in your Discord Status</source>
<translation> Discord </translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="58"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;了解更多&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="66"/>
<source>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://profile.citra-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;註冊&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="70"/>
<source>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://citra-emu.org/wiki/citra-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;什麼是 Citra 權杖?&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="76"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="151"/>
<source>Unspecified</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="87"/>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="111"/>
<source>Telemetry ID: 0x%1</source>
<translation> ID0x%1</translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="103"/>
<source>Token not verified</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="104"/>
<source>Token was not verified. The change to your token has not been saved.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="130"/>
<source>Verifying...</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="152"/>
<source>Verification failed</source>
<translation></translation>
</message>
<message>
<location filename="../../src/citra_qt/configuration/configure_web.cpp" line="153"/>
<source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>DirectConnect</name> <name>DirectConnect</name>
<message> <message>

View File

@ -266,8 +266,6 @@ void Config::ReadValues() {
} }
// Web Service // Web Service
NetSettings::values.enable_telemetry =
sdl2_config->GetBoolean("WebService", "enable_telemetry", false);
NetSettings::values.web_api_url = NetSettings::values.web_api_url =
sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org"); sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org");
NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", ""); NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", "");

View File

@ -353,9 +353,6 @@ gdbstub_port=24689
# To LLE a service module add "LLE\<module name>=true" # To LLE a service module add "LLE\<module name>=true"
[WebService] [WebService]
# Whether or not to enable telemetry
# 0 (default): No, 1: Yes
enable_telemetry =
# URL for Web API # URL for Web API
web_api_url = https://api.citra-emu.org web_api_url = https://api.citra-emu.org
# Username and token for Citra Web Service # Username and token for Citra Web Service

View File

@ -38,7 +38,6 @@
#include "core/hle/service/nfc/nfc.h" #include "core/hle/service/nfc/nfc.h"
#include "core/loader/loader.h" #include "core/loader/loader.h"
#include "core/savestate.h" #include "core/savestate.h"
#include "core/telemetry_session.h"
#include "jni/android_common/android_common.h" #include "jni/android_common/android_common.h"
#include "jni/applets/mii_selector.h" #include "jni/applets/mii_selector.h"
#include "jni/applets/swkbd.h" #include "jni/applets/swkbd.h"
@ -207,9 +206,6 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) {
return load_result; return load_result;
} }
auto& telemetry_session = system.TelemetrySession();
telemetry_session.AddField(Common::Telemetry::FieldType::App, "Frontend", "Android");
stop_run = false; stop_run = false;
pause_emulation = false; pause_emulation = false;

View File

@ -39,7 +39,6 @@
#include "core/hle/service/am/am.h" #include "core/hle/service/am/am.h"
#include "core/hle/service/cfg/cfg.h" #include "core/hle/service/cfg/cfg.h"
#include "core/movie.h" #include "core/movie.h"
#include "core/telemetry_session.h"
#include "input_common/main.h" #include "input_common/main.h"
#include "network/network.h" #include "network/network.h"
#include "video_core/gpu.h" #include "video_core/gpu.h"
@ -436,8 +435,6 @@ int main(int argc, char** argv) {
break; break;
} }
system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", "SDL");
if (use_multiplayer) { if (use_multiplayer) {
if (auto member = Network::GetRoomMember().lock()) { if (auto member = Network::GetRoomMember().lock()) {
member->BindOnChatMessageRecieved(OnMessageReceived); member->BindOnChatMessageRecieved(OnMessageReceived);

View File

@ -328,8 +328,6 @@ void Config::ReadValues() {
} }
// Web Service // Web Service
NetSettings::values.enable_telemetry =
sdl2_config->GetBoolean("WebService", "enable_telemetry", false);
NetSettings::values.web_api_url = NetSettings::values.web_api_url =
sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org"); sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org");
NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", ""); NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", "");

View File

@ -361,9 +361,6 @@ renderer_debug =
# To LLE a service module add "LLE\<module name>=true" # To LLE a service module add "LLE\<module name>=true"
[WebService] [WebService]
# Whether or not to enable telemetry
# 0 (default): No, 1: Yes
enable_telemetry =
# URL for Web API # URL for Web API
web_api_url = https://api.citra-emu.org web_api_url = https://api.citra-emu.org
# Username and token for Citra Web Service # Username and token for Citra Web Service

View File

@ -81,9 +81,6 @@ add_executable(citra-qt
configuration/configure_ui.cpp configuration/configure_ui.cpp
configuration/configure_ui.h configuration/configure_ui.h
configuration/configure_ui.ui configuration/configure_ui.ui
configuration/configure_web.cpp
configuration/configure_web.h
configuration/configure_web.ui
configuration/configure_cheats.cpp configuration/configure_cheats.cpp
configuration/configure_cheats.h configuration/configure_cheats.h
configuration/configure_cheats.ui configuration/configure_cheats.ui

View File

@ -7,14 +7,12 @@
#include <QPushButton> #include <QPushButton>
#include <QtConcurrent/qtconcurrentrun.h> #include <QtConcurrent/qtconcurrentrun.h>
#include "citra_qt/compatdb.h" #include "citra_qt/compatdb.h"
#include "common/telemetry.h"
#include "core/core.h" #include "core/core.h"
#include "core/telemetry_session.h"
#include "ui_compatdb.h" #include "ui_compatdb.h"
CompatDB::CompatDB(Core::TelemetrySession& telemetry_session_, QWidget* parent) CompatDB::CompatDB(QWidget* parent)
: QWizard(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint), : QWizard(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint),
ui{std::make_unique<Ui::CompatDB>()}, telemetry_session{telemetry_session_} { ui{std::make_unique<Ui::CompatDB>()} {
ui->setupUi(this); ui->setupUi(this);
connect(ui->radioButton_Perfect, &QRadioButton::clicked, this, &CompatDB::EnableNext); connect(ui->radioButton_Perfect, &QRadioButton::clicked, this, &CompatDB::EnableNext);
connect(ui->radioButton_Great, &QRadioButton::clicked, this, &CompatDB::EnableNext); connect(ui->radioButton_Great, &QRadioButton::clicked, this, &CompatDB::EnableNext);
@ -52,15 +50,11 @@ void CompatDB::Submit() {
case CompatDBPage::Final: case CompatDBPage::Final:
back(); back();
LOG_DEBUG(Frontend, "Compatibility Rating: {}", compatibility->checkedId()); LOG_DEBUG(Frontend, "Compatibility Rating: {}", compatibility->checkedId());
telemetry_session.AddField(Common::Telemetry::FieldType::UserFeedback, "Compatibility",
compatibility->checkedId());
button(NextButton)->setEnabled(false); button(NextButton)->setEnabled(false);
button(NextButton)->setText(tr("Submitting")); button(NextButton)->setText(tr("Submitting"));
button(CancelButton)->setVisible(false); button(CancelButton)->setVisible(false);
testcase_watcher.setFuture(
QtConcurrent::run([this] { return telemetry_session.SubmitTestcase(); }));
break; break;
default: default:
LOG_ERROR(Frontend, "Unexpected page: {}", currentId()); LOG_ERROR(Frontend, "Unexpected page: {}", currentId());

View File

@ -8,10 +8,6 @@
#include <QFutureWatcher> #include <QFutureWatcher>
#include <QWizard> #include <QWizard>
namespace Core {
class TelemetrySession;
}
namespace Ui { namespace Ui {
class CompatDB; class CompatDB;
} }
@ -20,7 +16,7 @@ class CompatDB : public QWizard {
Q_OBJECT Q_OBJECT
public: public:
explicit CompatDB(Core::TelemetrySession& telemetry_session_, QWidget* parent = nullptr); explicit CompatDB(QWidget* parent = nullptr);
~CompatDB(); ~CompatDB();
private: private:
@ -31,6 +27,4 @@ private:
void Submit(); void Submit();
void OnTestcaseSubmitted(); void OnTestcaseSubmitted();
void EnableNext(); void EnableNext();
Core::TelemetrySession& telemetry_session;
}; };

View File

@ -837,8 +837,6 @@ void Config::ReadUpdaterValues() {
void Config::ReadWebServiceValues() { void Config::ReadWebServiceValues() {
qt_config->beginGroup(QStringLiteral("WebService")); qt_config->beginGroup(QStringLiteral("WebService"));
NetSettings::values.enable_telemetry =
ReadSetting(QStringLiteral("enable_telemetry"), false).toBool();
NetSettings::values.web_api_url = NetSettings::values.web_api_url =
ReadSetting(QStringLiteral("web_api_url"), QStringLiteral("https://api.citra-emu.org")) ReadSetting(QStringLiteral("web_api_url"), QStringLiteral("https://api.citra-emu.org"))
.toString() .toString()
@ -1319,7 +1317,6 @@ void Config::SaveUpdaterValues() {
void Config::SaveWebServiceValues() { void Config::SaveWebServiceValues() {
qt_config->beginGroup(QStringLiteral("WebService")); qt_config->beginGroup(QStringLiteral("WebService"));
WriteSetting(QStringLiteral("enable_telemetry"), NetSettings::values.enable_telemetry, false);
WriteSetting(QStringLiteral("web_api_url"), WriteSetting(QStringLiteral("web_api_url"),
QString::fromStdString(NetSettings::values.web_api_url), QString::fromStdString(NetSettings::values.web_api_url),
QStringLiteral("https://api.citra-emu.org")); QStringLiteral("https://api.citra-emu.org"));

View File

@ -97,12 +97,6 @@
<header>configuration/configure_enhancements.h</header> <header>configuration/configure_enhancements.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>ConfigureWeb</class>
<extends>QWidget</extends>
<header>configuration/configure_web.h</header>
<container>1</container>
</customwidget>
<customwidget> <customwidget>
<class>ConfigureUi</class> <class>ConfigureUi</class>
<extends>QWidget</extends> <extends>QWidget</extends>

View File

@ -16,7 +16,6 @@
#include "citra_qt/configuration/configure_storage.h" #include "citra_qt/configuration/configure_storage.h"
#include "citra_qt/configuration/configure_system.h" #include "citra_qt/configuration/configure_system.h"
#include "citra_qt/configuration/configure_ui.h" #include "citra_qt/configuration/configure_ui.h"
#include "citra_qt/configuration/configure_web.h"
#include "citra_qt/hotkeys.h" #include "citra_qt/hotkeys.h"
#include "common/settings.h" #include "common/settings.h"
#include "core/core.h" #include "core/core.h"
@ -38,7 +37,7 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry_, Cor
camera_tab{std::make_unique<ConfigureCamera>(this)}, camera_tab{std::make_unique<ConfigureCamera>(this)},
debug_tab{std::make_unique<ConfigureDebug>(is_powered_on, this)}, debug_tab{std::make_unique<ConfigureDebug>(is_powered_on, this)},
storage_tab{std::make_unique<ConfigureStorage>(is_powered_on, this)}, storage_tab{std::make_unique<ConfigureStorage>(is_powered_on, this)},
web_tab{std::make_unique<ConfigureWeb>(this)}, ui_tab{std::make_unique<ConfigureUi>(this)} { ui_tab{std::make_unique<ConfigureUi>(this)} {
Settings::SetConfiguringGlobal(true); Settings::SetConfiguringGlobal(true);
ui->setupUi(this); ui->setupUi(this);
@ -53,11 +52,9 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry_, Cor
ui->tabWidget->addTab(camera_tab.get(), tr("Camera")); ui->tabWidget->addTab(camera_tab.get(), tr("Camera"));
ui->tabWidget->addTab(debug_tab.get(), tr("Debug")); ui->tabWidget->addTab(debug_tab.get(), tr("Debug"));
ui->tabWidget->addTab(storage_tab.get(), tr("Storage")); ui->tabWidget->addTab(storage_tab.get(), tr("Storage"));
ui->tabWidget->addTab(web_tab.get(), tr("Web"));
ui->tabWidget->addTab(ui_tab.get(), tr("UI")); ui->tabWidget->addTab(ui_tab.get(), tr("UI"));
hotkeys_tab->Populate(registry); hotkeys_tab->Populate(registry);
web_tab->SetWebServiceConfigEnabled(enable_web_config);
PopulateSelectionList(); PopulateSelectionList();
@ -90,7 +87,6 @@ void ConfigureDialog::SetConfiguration() {
audio_tab->SetConfiguration(); audio_tab->SetConfiguration();
camera_tab->SetConfiguration(); camera_tab->SetConfiguration();
debug_tab->SetConfiguration(); debug_tab->SetConfiguration();
web_tab->SetConfiguration();
ui_tab->SetConfiguration(); ui_tab->SetConfiguration();
storage_tab->SetConfiguration(); storage_tab->SetConfiguration();
} }
@ -106,7 +102,6 @@ void ConfigureDialog::ApplyConfiguration() {
audio_tab->ApplyConfiguration(); audio_tab->ApplyConfiguration();
camera_tab->ApplyConfiguration(); camera_tab->ApplyConfiguration();
debug_tab->ApplyConfiguration(); debug_tab->ApplyConfiguration();
web_tab->ApplyConfiguration();
ui_tab->ApplyConfiguration(); ui_tab->ApplyConfiguration();
storage_tab->ApplyConfiguration(); storage_tab->ApplyConfiguration();
system.ApplySettings(); system.ApplySettings();
@ -119,7 +114,7 @@ void ConfigureDialog::PopulateSelectionList() {
ui->selectorList->clear(); ui->selectorList->clear();
const std::array<std::pair<QString, QList<QWidget*>>, 5> items{ const std::array<std::pair<QString, QList<QWidget*>>, 5> items{
{{tr("General"), {general_tab.get(), web_tab.get(), debug_tab.get(), ui_tab.get()}}, {{tr("General"), {general_tab.get(), debug_tab.get(), ui_tab.get()}},
{tr("System"), {system_tab.get(), camera_tab.get(), storage_tab.get()}}, {tr("System"), {system_tab.get(), camera_tab.get(), storage_tab.get()}},
{tr("Graphics"), {enhancements_tab.get(), graphics_tab.get()}}, {tr("Graphics"), {enhancements_tab.get(), graphics_tab.get()}},
{tr("Audio"), {audio_tab.get()}}, {tr("Audio"), {audio_tab.get()}},
@ -159,7 +154,6 @@ void ConfigureDialog::RetranslateUI() {
audio_tab->RetranslateUI(); audio_tab->RetranslateUI();
camera_tab->RetranslateUI(); camera_tab->RetranslateUI();
debug_tab->RetranslateUI(); debug_tab->RetranslateUI();
web_tab->RetranslateUI();
ui_tab->RetranslateUI(); ui_tab->RetranslateUI();
storage_tab->RetranslateUI(); storage_tab->RetranslateUI();
} }
@ -179,7 +173,6 @@ void ConfigureDialog::UpdateVisibleTabs() {
{camera_tab.get(), tr("Camera")}, {camera_tab.get(), tr("Camera")},
{debug_tab.get(), tr("Debug")}, {debug_tab.get(), tr("Debug")},
{storage_tab.get(), tr("Storage")}, {storage_tab.get(), tr("Storage")},
{web_tab.get(), tr("Web")},
{ui_tab.get(), tr("UI")}}; {ui_tab.get(), tr("UI")}};
ui->tabWidget->clear(); ui->tabWidget->clear();

View File

@ -29,7 +29,6 @@ class ConfigureAudio;
class ConfigureCamera; class ConfigureCamera;
class ConfigureDebug; class ConfigureDebug;
class ConfigureStorage; class ConfigureStorage;
class ConfigureWeb;
class ConfigureUi; class ConfigureUi;
class ConfigureDialog : public QDialog { class ConfigureDialog : public QDialog {
@ -70,6 +69,5 @@ private:
std::unique_ptr<ConfigureCamera> camera_tab; std::unique_ptr<ConfigureCamera> camera_tab;
std::unique_ptr<ConfigureDebug> debug_tab; std::unique_ptr<ConfigureDebug> debug_tab;
std::unique_ptr<ConfigureStorage> storage_tab; std::unique_ptr<ConfigureStorage> storage_tab;
std::unique_ptr<ConfigureWeb> web_tab;
std::unique_ptr<ConfigureUi> ui_tab; std::unique_ptr<ConfigureUi> ui_tab;
}; };

View File

@ -1,165 +0,0 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include <QIcon>
#include <QMessageBox>
#include <QtConcurrent/QtConcurrentRun>
#include "citra_qt/configuration/configure_web.h"
#include "citra_qt/uisettings.h"
#include "core/telemetry_session.h"
#include "network/network_settings.h"
#include "ui_configure_web.h"
static constexpr char token_delimiter{':'};
static std::string GenerateDisplayToken(const std::string& username, const std::string& token) {
if (username.empty() || token.empty()) {
return {};
}
const std::string unencoded_display_token{username + token_delimiter + token};
QByteArray b{unencoded_display_token.c_str()};
QByteArray b64 = b.toBase64();
return b64.toStdString();
}
static std::string UsernameFromDisplayToken(const std::string& display_token) {
const std::string unencoded_display_token{
QByteArray::fromBase64(display_token.c_str()).toStdString()};
return unencoded_display_token.substr(0, unencoded_display_token.find(token_delimiter));
}
static std::string TokenFromDisplayToken(const std::string& display_token) {
const std::string unencoded_display_token{
QByteArray::fromBase64(display_token.c_str()).toStdString()};
return unencoded_display_token.substr(unencoded_display_token.find(token_delimiter) + 1);
}
ConfigureWeb::ConfigureWeb(QWidget* parent)
: QWidget(parent), ui(std::make_unique<Ui::ConfigureWeb>()) {
ui->setupUi(this);
connect(ui->button_regenerate_telemetry_id, &QPushButton::clicked, this,
&ConfigureWeb::RefreshTelemetryID);
connect(ui->button_verify_login, &QPushButton::clicked, this, &ConfigureWeb::VerifyLogin);
connect(&verify_watcher, &QFutureWatcher<bool>::finished, this, &ConfigureWeb::OnLoginVerified);
#ifndef USE_DISCORD_PRESENCE
ui->discord_group->setVisible(false);
#endif
SetConfiguration();
}
ConfigureWeb::~ConfigureWeb() = default;
void ConfigureWeb::SetConfiguration() {
ui->web_credentials_disclaimer->setWordWrap(true);
ui->telemetry_learn_more->setOpenExternalLinks(true);
ui->telemetry_learn_more->setText(tr("<a "
"href='https://citra-emu.org/entry/"
"telemetry-and-why-thats-a-good-thing/'><span "
"style=\"text-decoration: underline; "
"color:#039be5;\">Learn more</span></a>"));
ui->web_signup_link->setOpenExternalLinks(true);
ui->web_signup_link->setText(
tr("<a href='https://profile.citra-emu.org/'><span style=\"text-decoration: underline; "
"color:#039be5;\">Sign up</span></a>"));
ui->web_token_info_link->setOpenExternalLinks(true);
ui->web_token_info_link->setText(
tr("<a href='https://citra-emu.org/wiki/citra-web-service/'><span style=\"text-decoration: "
"underline; color:#039be5;\">What is my token?</span></a>"));
ui->toggle_telemetry->setChecked(NetSettings::values.enable_telemetry);
if (NetSettings::values.citra_username.empty()) {
ui->username->setText(tr("Unspecified"));
} else {
ui->username->setText(QString::fromStdString(NetSettings::values.citra_username));
}
ui->edit_token->setText(QString::fromStdString(
GenerateDisplayToken(NetSettings::values.citra_username, NetSettings::values.citra_token)));
// Connect after setting the values, to avoid calling OnLoginChanged now
connect(ui->edit_token, &QLineEdit::textChanged, this, &ConfigureWeb::OnLoginChanged);
ui->label_telemetry_id->setText(
tr("Telemetry ID: 0x%1").arg(QString::number(Core::GetTelemetryId(), 16).toUpper()));
user_verified = true;
ui->toggle_discordrpc->setChecked(UISettings::values.enable_discord_presence.GetValue());
}
void ConfigureWeb::ApplyConfiguration() {
NetSettings::values.enable_telemetry = ui->toggle_telemetry->isChecked();
UISettings::values.enable_discord_presence = ui->toggle_discordrpc->isChecked();
if (user_verified) {
NetSettings::values.citra_username =
UsernameFromDisplayToken(ui->edit_token->text().toStdString());
NetSettings::values.citra_token =
TokenFromDisplayToken(ui->edit_token->text().toStdString());
} else {
QMessageBox::warning(
this, tr("Token not verified"),
tr("Token was not verified. The change to your token has not been saved."));
}
}
void ConfigureWeb::RefreshTelemetryID() {
const u64 new_telemetry_id{Core::RegenerateTelemetryId()};
ui->label_telemetry_id->setText(
tr("Telemetry ID: 0x%1").arg(QString::number(new_telemetry_id, 16).toUpper()));
}
void ConfigureWeb::OnLoginChanged() {
if (ui->edit_token->text().isEmpty()) {
user_verified = true;
const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("checked")).pixmap(16);
ui->label_token_verified->setPixmap(pixmap);
} else {
user_verified = false;
const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("failed")).pixmap(16);
ui->label_token_verified->setPixmap(pixmap);
}
}
void ConfigureWeb::VerifyLogin() {
ui->button_verify_login->setDisabled(true);
ui->button_verify_login->setText(tr("Verifying..."));
verify_watcher.setFuture(QtConcurrent::run(
[username = UsernameFromDisplayToken(ui->edit_token->text().toStdString()),
token = TokenFromDisplayToken(ui->edit_token->text().toStdString())] {
return Core::VerifyLogin(username, token);
}));
}
void ConfigureWeb::OnLoginVerified() {
ui->button_verify_login->setEnabled(true);
ui->button_verify_login->setText(tr("Verify"));
if (verify_watcher.result()) {
user_verified = true;
const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("checked")).pixmap(16);
ui->label_token_verified->setPixmap(pixmap);
ui->username->setText(
QString::fromStdString(UsernameFromDisplayToken(ui->edit_token->text().toStdString())));
} else {
const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("failed")).pixmap(16);
ui->label_token_verified->setPixmap(pixmap);
ui->username->setText(tr("Unspecified"));
QMessageBox::critical(this, tr("Verification failed"),
tr("Verification failed. Check that you have entered your token "
"correctly, and that your internet connection is working."));
}
}
void ConfigureWeb::RetranslateUI() {
ui->retranslateUi(this);
}
void ConfigureWeb::SetWebServiceConfigEnabled(bool enabled) {
ui->label_disable_info->setVisible(!enabled);
ui->groupBoxWebConfig->setEnabled(enabled);
}

View File

@ -1,37 +0,0 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include <memory>
#include <QFutureWatcher>
#include <QWidget>
namespace Ui {
class ConfigureWeb;
}
class ConfigureWeb : public QWidget {
Q_OBJECT
public:
explicit ConfigureWeb(QWidget* parent = nullptr);
~ConfigureWeb() override;
void ApplyConfiguration();
void RetranslateUI();
void SetConfiguration();
void SetWebServiceConfigEnabled(bool enabled);
private:
void RefreshTelemetryID();
void OnLoginChanged();
void VerifyLogin();
void OnLoginVerified();
bool user_verified = true;
QFutureWatcher<bool> verify_watcher;
std::unique_ptr<Ui::ConfigureWeb> ui;
};

View File

@ -1,214 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ConfigureWeb</class>
<widget class="QWidget" name="ConfigureWeb">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>996</width>
<height>561</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGroupBox" name="groupBoxWebConfig">
<property name="title">
<string>Citra Web Service</string>
</property>
<layout class="QVBoxLayout" name="verticalLayoutCitraWebService">
<item>
<widget class="QLabel" name="web_credentials_disclaimer">
<property name="text">
<string>By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information.</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayoutCitraUsername">
<item row="2" column="3">
<widget class="QPushButton" name="button_verify_login">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string>Verify</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="web_signup_link">
<property name="text">
<string>Sign up</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="3">
<widget class="QLabel" name="username"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_token">
<property name="text">
<string>Token: </string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QLabel" name="label_token_verified"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_username">
<property name="text">
<string>Username: </string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="3">
<widget class="QLineEdit" name="edit_token">
<property name="maxLength">
<number>80</number>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="web_token_info_link">
<property name="text">
<string>What is my token?</string>
</property>
</widget>
</item>
<item row="2" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="label_disable_info">
<property name="text">
<string>Web Service configuration can only be changed when a public room isn't being hosted.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Telemetry</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QCheckBox" name="toggle_telemetry">
<property name="text">
<string>Share anonymous usage data with the Citra team</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="telemetry_learn_more">
<property name="text">
<string>Learn more</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayoutTelemetryId">
<item row="0" column="0">
<widget class="QLabel" name="label_telemetry_id">
<property name="text">
<string>Telemetry ID:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="button_regenerate_telemetry_id">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string>Regenerate</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="discord_group">
<property name="title">
<string>Discord Presence</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_21">
<item>
<widget class="QCheckBox" name="toggle_discordrpc">
<property name="text">
<string>Show Current Game in your Discord Status</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<tabstops>
<tabstop>edit_token</tabstop>
<tabstop>button_verify_login</tabstop>
<tabstop>toggle_telemetry</tabstop>
<tabstop>button_regenerate_telemetry_id</tabstop>
<tabstop>toggle_discordrpc</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@ -15,7 +15,6 @@
#include <QtGui> #include <QtGui>
#include <QtWidgets> #include <QtWidgets>
#include <fmt/format.h> #include <fmt/format.h>
#include "core/telemetry_session.h"
#ifdef __APPLE__ #ifdef __APPLE__
#include <unistd.h> // for chdir #include <unistd.h> // for chdir
#endif #endif
@ -128,27 +127,6 @@ constexpr int default_mouse_timeout = 2500;
* is a bitfield "callout_flags" options, used to track if a message has already been shown to the * is a bitfield "callout_flags" options, used to track if a message has already been shown to the
* user. This is 32-bits - if we have more than 32 callouts, we should retire and recycle old ones. * user. This is 32-bits - if we have more than 32 callouts, we should retire and recycle old ones.
*/ */
enum class CalloutFlag : uint32_t {
Telemetry = 0x1,
};
void GMainWindow::ShowTelemetryCallout() {
if (UISettings::values.callout_flags.GetValue() &
static_cast<uint32_t>(CalloutFlag::Telemetry)) {
return;
}
UISettings::values.callout_flags =
UISettings::values.callout_flags.GetValue() | static_cast<uint32_t>(CalloutFlag::Telemetry);
const QString telemetry_message =
tr("<a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous "
"data is collected</a> to help improve Citra. "
"<br/><br/>Would you like to share your usage data with us?");
if (QMessageBox::question(this, tr("Telemetry"), telemetry_message) == QMessageBox::Yes) {
NetSettings::values.enable_telemetry = true;
system.ApplySettings();
}
}
const int GMainWindow::max_recent_files_item; const int GMainWindow::max_recent_files_item;
@ -263,9 +241,6 @@ GMainWindow::GMainWindow(Core::System& system_)
game_list->LoadCompatibilityList(); game_list->LoadCompatibilityList();
game_list->PopulateAsync(UISettings::values.game_dirs); game_list->PopulateAsync(UISettings::values.game_dirs);
// Show one-time "callout" messages to the user
ShowTelemetryCallout();
mouse_hide_timer.setInterval(default_mouse_timeout); mouse_hide_timer.setInterval(default_mouse_timeout);
connect(&mouse_hide_timer, &QTimer::timeout, this, &GMainWindow::HideMouseCursor); connect(&mouse_hide_timer, &QTimer::timeout, this, &GMainWindow::HideMouseCursor);
connect(ui->menubar, &QMenuBar::hovered, this, &GMainWindow::OnMouseActivity); connect(ui->menubar, &QMenuBar::hovered, this, &GMainWindow::OnMouseActivity);
@ -1244,7 +1219,6 @@ bool GMainWindow::LoadROM(const QString& filename) {
game_path = filename; game_path = filename;
system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", "Qt");
return true; return true;
} }
@ -1988,7 +1962,7 @@ void GMainWindow::OnLoadComplete() {
void GMainWindow::OnMenuReportCompatibility() { void GMainWindow::OnMenuReportCompatibility() {
if (!NetSettings::values.citra_token.empty() && !NetSettings::values.citra_username.empty()) { if (!NetSettings::values.citra_token.empty() && !NetSettings::values.citra_username.empty()) {
CompatDB compatdb{system.TelemetrySession(), this}; CompatDB compatdb{this};
compatdb.exec(); compatdb.exec();
} else { } else {
QMessageBox::critical(this, tr("Missing Citra Account"), QMessageBox::critical(this, tr("Missing Citra Account"),

View File

@ -152,7 +152,6 @@ private:
void BootGame(const QString& filename); void BootGame(const QString& filename);
void ShutdownGame(); void ShutdownGame();
void ShowTelemetryCallout();
void SetDiscordEnabled(bool state); void SetDiscordEnabled(bool state);
void LoadAmiibo(const QString& filename); void LoadAmiibo(const QString& filename);

View File

@ -130,8 +130,6 @@ add_library(citra_common STATIC
string_util.cpp string_util.cpp
string_util.h string_util.h
swap.h swap.h
telemetry.cpp
telemetry.h
texture.cpp texture.cpp
texture.h texture.h
thread.cpp thread.cpp

View File

@ -12,10 +12,10 @@ namespace Common {
/** /**
* A background manager which ensures that all detached task is finished before program exits. * A background manager which ensures that all detached task is finished before program exits.
* *
* Some tasks, telemetry submission for example, prefer executing asynchronously and don't care * Some tasks prefer executing asynchronously and don't care
* about the result. These tasks are suitable for std::thread::detach(). However, this is unsafe if * about the result. These tasks are suitable for std::thread::detach().
* the task is launched just before the program exits (which is a common case for telemetry), so we * However, this is unsafe if the task is launched just before the program exits
* need to block on these tasks on program exit. * so we need to block on these tasks on program exit.
* *
* To make detached task safe, a single DetachedTasks object should be placed in the main(), and * To make detached task safe, a single DetachedTasks object should be placed in the main(), and
* call WaitForAllTasks() after all program execution but before global/static variable destruction. * call WaitForAllTasks() after all program execution but before global/static variable destruction.

View File

@ -1,92 +1 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include <algorithm>
#include <cstring>
#include "common/arch.h"
#include "common/assert.h"
#include "common/scm_rev.h"
#include "common/telemetry.h"
#if CITRA_ARCH(x86_64)
#include "common/x64/cpu_detect.h"
#endif
namespace Common::Telemetry {
void FieldCollection::Accept(VisitorInterface& visitor) const {
for (const auto& field : fields) {
field.second->Accept(visitor);
}
}
void FieldCollection::AddField(std::unique_ptr<FieldInterface> field) {
fields[field->GetName()] = std::move(field);
}
template <class T>
void Field<T>::Accept(VisitorInterface& visitor) const {
visitor.Visit(*this);
}
template class Field<bool>;
template class Field<double>;
template class Field<float>;
template class Field<u8>;
template class Field<u16>;
template class Field<u32>;
template class Field<u64>;
template class Field<s8>;
template class Field<s16>;
template class Field<s32>;
template class Field<s64>;
template class Field<std::string>;
template class Field<const char*>;
template class Field<std::chrono::microseconds>;
void AppendBuildInfo(FieldCollection& fc) {
const bool is_git_dirty{std::strstr(Common::g_scm_desc, "dirty") != nullptr};
fc.AddField(FieldType::App, "Git_IsDirty", is_git_dirty);
fc.AddField(FieldType::App, "Git_Branch", Common::g_scm_branch);
fc.AddField(FieldType::App, "Git_Revision", Common::g_scm_rev);
fc.AddField(FieldType::App, "BuildDate", Common::g_build_date);
fc.AddField(FieldType::App, "BuildName", Common::g_build_name);
}
void AppendCPUInfo(FieldCollection& fc) {
#if CITRA_ARCH(x86_64)
fc.AddField(FieldType::UserSystem, "CPU_Model", Common::GetCPUCaps().cpu_string);
fc.AddField(FieldType::UserSystem, "CPU_BrandString", Common::GetCPUCaps().brand_string);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AES", Common::GetCPUCaps().aes);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX", Common::GetCPUCaps().avx);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX2", Common::GetCPUCaps().avx2);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX512", Common::GetCPUCaps().avx512);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_BMI1", Common::GetCPUCaps().bmi1);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_BMI2", Common::GetCPUCaps().bmi2);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_FMA", Common::GetCPUCaps().fma);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_FMA4", Common::GetCPUCaps().fma4);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE", Common::GetCPUCaps().sse);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE2", Common::GetCPUCaps().sse2);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE3", Common::GetCPUCaps().sse3);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSSE3", Common::GetCPUCaps().ssse3);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE41", Common::GetCPUCaps().sse4_1);
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE42", Common::GetCPUCaps().sse4_2);
#else
fc.AddField(FieldType::UserSystem, "CPU_Model", "Other");
#endif
}
void AppendOSInfo(FieldCollection& fc) {
#ifdef __APPLE__
fc.AddField(FieldType::UserSystem, "OsPlatform", "Apple");
#elif defined(_WIN32)
fc.AddField(FieldType::UserSystem, "OsPlatform", "Windows");
#elif defined(__linux__) || defined(linux) || defined(__linux)
fc.AddField(FieldType::UserSystem, "OsPlatform", "Linux");
#else
fc.AddField(FieldType::UserSystem, "OsPlatform", "Unknown");
#endif
}
} // namespace Common::Telemetry

View File

@ -1,199 +1 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include <chrono>
#include <map>
#include <memory>
#include <string>
#include "common/common_types.h"
namespace Common::Telemetry {
/// Field type, used for grouping fields together in the final submitted telemetry log
enum class FieldType : u8 {
None = 0, ///< No specified field group
App, ///< Citra application fields (e.g. version, branch, etc.)
Session, ///< Emulated session fields (e.g. title ID, log, etc.)
Performance, ///< Emulated performance (e.g. fps, emulated CPU speed, etc.)
UserFeedback, ///< User submitted feedback (e.g. star rating, user notes, etc.)
UserConfig, ///< User configuration fields (e.g. emulated CPU core, renderer, etc.)
UserSystem, ///< User system information (e.g. host CPU type, RAM, etc.)
};
struct VisitorInterface;
/**
* Interface class for telemetry data fields.
*/
class FieldInterface : NonCopyable {
public:
virtual ~FieldInterface() = default;
/**
* Accept method for the visitor pattern.
* @param visitor Reference to the visitor that will visit this field.
*/
virtual void Accept(VisitorInterface& visitor) const = 0;
/**
* Gets the name of this field.
* @returns Name of this field as a string.
*/
virtual const std::string& GetName() const = 0;
};
/**
* Represents a telemetry data field, i.e. a unit of data that gets logged and submitted to our
* telemetry web service.
*/
template <typename T>
class Field : public FieldInterface {
public:
Field(FieldType type, std::string name, T value)
: name(std::move(name)), type(type), value(std::move(value)) {}
Field(const Field&) = default;
Field& operator=(const Field&) = default;
Field(Field&&) = default;
Field& operator=(Field&& other) = default;
void Accept(VisitorInterface& visitor) const override;
[[nodiscard]] const std::string& GetName() const override {
return name;
}
/**
* Returns the type of the field.
*/
[[nodiscard]] FieldType GetType() const {
return type;
}
/**
* Returns the value of the field.
*/
[[nodiscard]] const T& GetValue() const {
return value;
}
[[nodiscard]] bool operator==(const Field& other) const {
return (type == other.type) && (name == other.name) && (value == other.value);
}
[[nodiscard]] bool operator!=(const Field& other) const {
return !operator==(other);
}
private:
std::string name; ///< Field name, must be unique
FieldType type{}; ///< Field type, used for grouping fields together
T value; ///< Field value
};
/**
* Collection of data fields that have been logged.
*/
class FieldCollection final : NonCopyable {
public:
FieldCollection() = default;
/**
* Accept method for the visitor pattern, visits each field in the collection.
* @param visitor Reference to the visitor that will visit each field.
*/
void Accept(VisitorInterface& visitor) const;
/**
* Creates a new field and adds it to the field collection.
* @param type Type of the field to add.
* @param name Name of the field to add.
* @param value Value for the field to add.
*/
template <typename T>
void AddField(FieldType type, const char* name, T value) {
return AddField(std::make_unique<Field<T>>(type, name, std::move(value)));
}
/**
* Adds a new field to the field collection.
* @param field Field to add to the field collection.
*/
void AddField(std::unique_ptr<FieldInterface> field);
private:
std::map<std::string, std::unique_ptr<FieldInterface>> fields;
};
/**
* Telemetry fields visitor interface class. A backend to log to a web service should implement
* this interface.
*/
struct VisitorInterface : NonCopyable {
virtual ~VisitorInterface() = default;
virtual void Visit(const Field<bool>& field) = 0;
virtual void Visit(const Field<double>& field) = 0;
virtual void Visit(const Field<float>& field) = 0;
virtual void Visit(const Field<u8>& field) = 0;
virtual void Visit(const Field<u16>& field) = 0;
virtual void Visit(const Field<u32>& field) = 0;
virtual void Visit(const Field<u64>& field) = 0;
virtual void Visit(const Field<s8>& field) = 0;
virtual void Visit(const Field<s16>& field) = 0;
virtual void Visit(const Field<s32>& field) = 0;
virtual void Visit(const Field<s64>& field) = 0;
virtual void Visit(const Field<std::string>& field) = 0;
virtual void Visit(const Field<const char*>& field) = 0;
virtual void Visit(const Field<std::chrono::microseconds>& field) = 0;
/// Completion method, called once all fields have been visited
virtual void Complete() = 0;
virtual bool SubmitTestcase() = 0;
};
/**
* Empty implementation of VisitorInterface that drops all fields. Used when a functional
* backend implementation is not available.
*/
struct NullVisitor : public VisitorInterface {
~NullVisitor() = default;
void Visit(const Field<bool>& /*field*/) override {}
void Visit(const Field<double>& /*field*/) override {}
void Visit(const Field<float>& /*field*/) override {}
void Visit(const Field<u8>& /*field*/) override {}
void Visit(const Field<u16>& /*field*/) override {}
void Visit(const Field<u32>& /*field*/) override {}
void Visit(const Field<u64>& /*field*/) override {}
void Visit(const Field<s8>& /*field*/) override {}
void Visit(const Field<s16>& /*field*/) override {}
void Visit(const Field<s32>& /*field*/) override {}
void Visit(const Field<s64>& /*field*/) override {}
void Visit(const Field<std::string>& /*field*/) override {}
void Visit(const Field<const char*>& /*field*/) override {}
void Visit(const Field<std::chrono::microseconds>& /*field*/) override {}
void Complete() override {}
bool SubmitTestcase() override {
return false;
}
};
/// Appends build-specific information to the given FieldCollection,
/// such as branch name, revision hash, etc.
void AppendBuildInfo(FieldCollection& fc);
/// Appends CPU-specific information to the given FieldCollection,
/// such as instruction set extensions, etc.
void AppendCPUInfo(FieldCollection& fc);
/// Appends OS-specific information to the given FieldCollection,
/// such as platform name, etc.
void AppendOSInfo(FieldCollection& fc);
} // namespace Common::Telemetry

View File

@ -467,8 +467,6 @@ add_library(citra_core STATIC
savestate_data.h savestate_data.h
system_titles.cpp system_titles.cpp
system_titles.h system_titles.h
telemetry_session.cpp
telemetry_session.h
tracer/citrace.h tracer/citrace.h
tracer/recorder.cpp tracer/recorder.cpp
tracer/recorder.h tracer/recorder.h

View File

@ -47,7 +47,6 @@
#ifdef ENABLE_SCRIPTING #ifdef ENABLE_SCRIPTING
#include "core/rpc/server.h" #include "core/rpc/server.h"
#endif #endif
#include "core/telemetry_session.h"
#include "network/network.h" #include "network/network.h"
#include "video_core/custom_textures/custom_tex_manager.h" #include "video_core/custom_textures/custom_tex_manager.h"
#include "video_core/gpu.h" #include "video_core/gpu.h"
@ -322,7 +321,6 @@ System::ResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::st
restore_plugin_context.reset(); restore_plugin_context.reset();
} }
telemetry_session->AddInitialInfo(*app_loader);
std::shared_ptr<Kernel::Process> process; std::shared_ptr<Kernel::Process> process;
const Loader::ResultStatus load_result{app_loader->Load(process)}; const Loader::ResultStatus load_result{app_loader->Load(process)};
if (Loader::ResultStatus::Success != load_result) { if (Loader::ResultStatus::Success != load_result) {
@ -452,8 +450,6 @@ System::ResultStatus System::Init(Frontend::EmuWindow& emu_window,
Settings::values.output_device.GetValue()); Settings::values.output_device.GetValue());
dsp_core->EnableStretching(Settings::values.enable_audio_stretching.GetValue()); dsp_core->EnableStretching(Settings::values.enable_audio_stretching.GetValue());
telemetry_session = std::make_unique<Core::TelemetrySession>();
#ifdef ENABLE_SCRIPTING #ifdef ENABLE_SCRIPTING
rpc_server = std::make_unique<RPC::Server>(*this); rpc_server = std::make_unique<RPC::Server>(*this);
#endif #endif
@ -578,16 +574,6 @@ void System::RegisterImageInterface(std::shared_ptr<Frontend::ImageInterface> im
} }
void System::Shutdown(bool is_deserializing) { void System::Shutdown(bool is_deserializing) {
// Log last frame performance stats
const auto perf_results = GetAndResetPerfStats();
constexpr auto performance = Common::Telemetry::FieldType::Performance;
telemetry_session->AddField(performance, "Shutdown_EmulationSpeed",
perf_results.emulation_speed * 100.0);
telemetry_session->AddField(performance, "Shutdown_Framerate", perf_results.game_fps);
telemetry_session->AddField(performance, "Shutdown_Frametime", perf_results.frametime * 1000.0);
telemetry_session->AddField(performance, "Mean_Frametime_MS",
perf_stats ? perf_stats->GetMeanFrametime() : 0);
// Shutdown emulation session // Shutdown emulation session
is_powered_on = false; is_powered_on = false;
@ -599,7 +585,6 @@ void System::Shutdown(bool is_deserializing) {
app_loader.reset(); app_loader.reset();
} }
custom_tex_manager.reset(); custom_tex_manager.reset();
telemetry_session.reset();
#ifdef ENABLE_SCRIPTING #ifdef ENABLE_SCRIPTING
rpc_server.reset(); rpc_server.reset();
#endif #endif

View File

@ -72,7 +72,6 @@ class AppLoader;
namespace Core { namespace Core {
class ARM_Interface; class ARM_Interface;
class TelemetrySession;
class ExclusiveMonitor; class ExclusiveMonitor;
class Timing; class Timing;
@ -165,14 +164,6 @@ public:
return is_powered_on; return is_powered_on;
} }
/**
* Returns a reference to the telemetry session for this emulation session.
* @returns Reference to the telemetry session.
*/
[[nodiscard]] Core::TelemetrySession& TelemetrySession() const {
return *telemetry_session;
}
/// Prepare the core emulation for a reschedule /// Prepare the core emulation for a reschedule
void PrepareReschedule(); void PrepareReschedule();
@ -385,9 +376,6 @@ private:
/// When true, signals that a reschedule should happen /// When true, signals that a reschedule should happen
bool reschedule_pending{}; bool reschedule_pending{};
/// Telemetry session for this emulation session
std::unique_ptr<Core::TelemetrySession> telemetry_session;
std::unique_ptr<VideoCore::GPU> gpu; std::unique_ptr<VideoCore::GPU> gpu;
/// Service manager /// Service manager

View File

@ -34,7 +34,6 @@
#include "core/hw/aes/ccm.h" #include "core/hw/aes/ccm.h"
#include "core/hw/aes/key.h" #include "core/hw/aes/key.h"
#include "core/loader/loader.h" #include "core/loader/loader.h"
#include "core/telemetry_session.h"
SERVICE_CONSTRUCT_IMPL(Service::APT::Module) SERVICE_CONSTRUCT_IMPL(Service::APT::Module)
@ -274,10 +273,6 @@ void Module::APTInterface::GetSharedFont(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx); IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(2, 2); IPC::RequestBuilder rb = rp.MakeBuilder(2, 2);
// Log in telemetry if the game uses the shared font
apt->system.TelemetrySession().AddField(Common::Telemetry::FieldType::Session,
"RequiresSharedFont", true);
if (!apt->shared_font_loaded) { if (!apt->shared_font_loaded) {
// On real 3DS, font loading happens on booting. However, we load it on demand to coordinate // On real 3DS, font loading happens on booting. However, we load it on demand to coordinate
// with CFG region auto configuration, which happens later than APT initialization. // with CFG region auto configuration, which happens later than APT initialization.

View File

@ -26,7 +26,6 @@
#include "core/loader/smdh.h" #include "core/loader/smdh.h"
#include "core/memory.h" #include "core/memory.h"
#include "core/system_titles.h" #include "core/system_titles.h"
#include "core/telemetry_session.h"
#include "network/network.h" #include "network/network.h"
namespace Loader { namespace Loader {
@ -277,9 +276,6 @@ ResultStatus AppLoader_NCCH::Load(std::shared_ptr<Kernel::Process>& process) {
overlay_ncch = &update_ncch; overlay_ncch = &update_ncch;
} }
system.TelemetrySession().AddField(Common::Telemetry::FieldType::Session, "ProgramId",
program_id);
if (auto room_member = Network::GetRoomMember().lock()) { if (auto room_member = Network::GetRoomMember().lock()) {
Network::GameInfo game_info; Network::GameInfo game_info;
ReadTitle(game_info.name); ReadTitle(game_info.name);

View File

@ -1,176 +0,0 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include <cryptopp/osrng.h>
#include "common/assert.h"
#include "common/common_types.h"
#include "common/file_util.h"
#include "common/logging/log.h"
#include "common/scm_rev.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/loader/loader.h"
#include "core/telemetry_session.h"
#include "network/network_settings.h"
#ifdef ENABLE_WEB_SERVICE
#include "web_service/telemetry_json.h"
#include "web_service/verify_login.h"
#endif
namespace Core {
namespace Telemetry = Common::Telemetry;
static u64 GenerateTelemetryId() {
u64 telemetry_id{};
CryptoPP::AutoSeededRandomPool rng;
rng.GenerateBlock(reinterpret_cast<CryptoPP::byte*>(&telemetry_id), sizeof(u64));
return telemetry_id;
}
u64 GetTelemetryId() {
u64 telemetry_id{};
const std::string filename{FileUtil::GetUserPath(FileUtil::UserPath::ConfigDir) +
"telemetry_id"};
if (FileUtil::Exists(filename)) {
FileUtil::IOFile file(filename, "rb");
if (!file.IsOpen()) {
LOG_ERROR(Core, "failed to open telemetry_id: {}", filename);
return {};
}
file.ReadBytes(&telemetry_id, sizeof(u64));
} else {
FileUtil::IOFile file(filename, "wb");
if (!file.IsOpen()) {
LOG_ERROR(Core, "failed to open telemetry_id: {}", filename);
return {};
}
telemetry_id = GenerateTelemetryId();
file.WriteBytes(&telemetry_id, sizeof(u64));
}
return telemetry_id;
}
u64 RegenerateTelemetryId() {
const u64 new_telemetry_id{GenerateTelemetryId()};
const std::string filename{FileUtil::GetUserPath(FileUtil::UserPath::ConfigDir) +
"telemetry_id"};
FileUtil::IOFile file(filename, "wb");
if (!file.IsOpen()) {
LOG_ERROR(Core, "failed to open telemetry_id: {}", filename);
return {};
}
file.WriteBytes(&new_telemetry_id, sizeof(u64));
return new_telemetry_id;
}
bool VerifyLogin(const std::string& username, const std::string& token) {
#ifdef ENABLE_WEB_SERVICE
return WebService::VerifyLogin(NetSettings::values.web_api_url, username, token);
#else
return false;
#endif
}
TelemetrySession::TelemetrySession() = default;
TelemetrySession::~TelemetrySession() {
// Log one-time session end information
const s64 shutdown_time{std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch())
.count()};
AddField(Telemetry::FieldType::Session, "Shutdown_Time", shutdown_time);
#ifdef ENABLE_WEB_SERVICE
auto backend = std::make_unique<WebService::TelemetryJson>(NetSettings::values.web_api_url,
NetSettings::values.citra_username,
NetSettings::values.citra_token);
#else
auto backend = std::make_unique<Telemetry::NullVisitor>();
#endif
// Complete the session, submitting to the web service backend if necessary
field_collection.Accept(*backend);
if (NetSettings::values.enable_telemetry) {
backend->Complete();
}
}
void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader) {
// Log one-time top-level information
AddField(Telemetry::FieldType::None, "TelemetryId", GetTelemetryId());
// Log one-time session start information
const s64 init_time{std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch())
.count()};
AddField(Telemetry::FieldType::Session, "Init_Time", init_time);
std::string program_name;
const Loader::ResultStatus res{app_loader.ReadTitle(program_name)};
if (res == Loader::ResultStatus::Success) {
AddField(Telemetry::FieldType::Session, "ProgramName", program_name);
}
// Log application information
Telemetry::AppendBuildInfo(field_collection);
// Log user system information
Telemetry::AppendCPUInfo(field_collection);
Telemetry::AppendOSInfo(field_collection);
// Log user configuration information
AddField(Telemetry::FieldType::UserConfig, "Audio_SinkId",
static_cast<int>(Settings::values.output_type.GetValue()));
AddField(Telemetry::FieldType::UserConfig, "Audio_EnableAudioStretching",
Settings::values.enable_audio_stretching.GetValue());
AddField(Telemetry::FieldType::UserConfig, "Core_UseCpuJit",
Settings::values.use_cpu_jit.GetValue());
AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor",
Settings::values.resolution_factor.GetValue());
AddField(Telemetry::FieldType::UserConfig, "Renderer_FrameLimit",
Settings::values.frame_limit.GetValue());
AddField(Telemetry::FieldType::UserConfig, "Renderer_Backend",
static_cast<int>(Settings::values.graphics_api.GetValue()));
AddField(Telemetry::FieldType::UserConfig, "Renderer_UseHwShader",
Settings::values.use_hw_shader.GetValue());
AddField(Telemetry::FieldType::UserConfig, "Renderer_ShadersAccurateMul",
Settings::values.shaders_accurate_mul.GetValue());
AddField(Telemetry::FieldType::UserConfig, "Renderer_UseShaderJit",
Settings::values.use_shader_jit.GetValue());
AddField(Telemetry::FieldType::UserConfig, "Renderer_UseVsync",
Settings::values.use_vsync_new.GetValue());
AddField(Telemetry::FieldType::UserConfig, "Renderer_FilterMode",
Settings::values.filter_mode.GetValue());
AddField(Telemetry::FieldType::UserConfig, "Renderer_Render3d",
static_cast<int>(Settings::values.render_3d.GetValue()));
AddField(Telemetry::FieldType::UserConfig, "Renderer_Factor3d",
Settings::values.factor_3d.GetValue());
AddField(Telemetry::FieldType::UserConfig, "Renderer_MonoRenderOption",
static_cast<int>(Settings::values.mono_render_option.GetValue()));
AddField(Telemetry::FieldType::UserConfig, "System_IsNew3ds",
Settings::values.is_new_3ds.GetValue());
AddField(Telemetry::FieldType::UserConfig, "System_LLEApplets",
Settings::values.lle_applets.GetValue());
AddField(Telemetry::FieldType::UserConfig, "System_RegionValue",
Settings::values.region_value.GetValue());
}
bool TelemetrySession::SubmitTestcase() {
#ifdef ENABLE_WEB_SERVICE
auto backend = std::make_unique<WebService::TelemetryJson>(NetSettings::values.web_api_url,
NetSettings::values.citra_username,
NetSettings::values.citra_token);
field_collection.Accept(*backend);
return backend->SubmitTestcase();
#else
return false;
#endif
}
} // namespace Core

View File

@ -1,91 +0,0 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include <memory>
#include <string>
#include "common/telemetry.h"
namespace Loader {
class AppLoader;
}
namespace Core {
/**
* Instruments telemetry for this emulation session. Creates a new set of telemetry fields on each
* session, logging any one-time fields. Interfaces with the telemetry backend used for submitting
* data to the web service. Submits session data on close.
*/
class TelemetrySession {
public:
explicit TelemetrySession();
~TelemetrySession();
TelemetrySession(const TelemetrySession&) = delete;
TelemetrySession& operator=(const TelemetrySession&) = delete;
TelemetrySession(TelemetrySession&&) = delete;
TelemetrySession& operator=(TelemetrySession&&) = delete;
/**
* Adds the initial telemetry info necessary when starting up a title.
*
* This includes information such as:
* - Telemetry ID
* - Initialization time
* - Title ID
* - Title name
* - Title file format
* - Miscellaneous settings values.
*
* @param app_loader The application loader to use to retrieve
* title-specific information.
*/
void AddInitialInfo(Loader::AppLoader& app_loader);
/**
* Wrapper around the Telemetry::FieldCollection::AddField method.
* @param type Type of the field to add.
* @param name Name of the field to add.
* @param value Value for the field to add.
*/
template <typename T>
void AddField(Common::Telemetry::FieldType type, const char* name, T value) {
field_collection.AddField(type, name, std::move(value));
}
/**
* Submits a Testcase.
* @returns A bool indicating whether the submission succeeded
*/
bool SubmitTestcase();
private:
/// Tracks all added fields for the session
Common::Telemetry::FieldCollection field_collection;
};
/**
* Gets TelemetryId, a unique identifier used for the user's telemetry sessions.
* @returns The current TelemetryId for the session.
*/
u64 GetTelemetryId();
/**
* Regenerates TelemetryId, a unique identifier used for the user's telemetry sessions.
* @returns The new TelemetryId that was generated.
*/
u64 RegenerateTelemetryId();
/**
* Verifies the username and token.
* @param username Citra username to use for authentication.
* @param token Citra token to use for authentication.
* @returns Future with bool indicating whether the verification succeeded
*/
bool VerifyLogin(const std::string& username, const std::string& token);
} // namespace Core

View File

@ -10,7 +10,6 @@ namespace NetSettings {
struct Values { struct Values {
// WebService // WebService
bool enable_telemetry;
std::string web_api_url; std::string web_api_url;
std::string citra_username; std::string citra_username;
std::string citra_token; std::string citra_token;

View File

@ -5,7 +5,6 @@
#include <glad/glad.h> #include <glad/glad.h>
#include "common/assert.h" #include "common/assert.h"
#include "common/settings.h" #include "common/settings.h"
#include "core/telemetry_session.h"
#include "video_core/custom_textures/custom_format.h" #include "video_core/custom_textures/custom_format.h"
#include "video_core/renderer_opengl/gl_driver.h" #include "video_core/renderer_opengl/gl_driver.h"
#include "video_core/renderer_opengl/gl_vars.h" #include "video_core/renderer_opengl/gl_vars.h"
@ -70,12 +69,11 @@ static void APIENTRY DebugHandler(GLenum source, GLenum type, GLuint id, GLenum
level = Common::Log::Level::Debug; level = Common::Log::Level::Debug;
break; break;
} }
LOG_GENERIC(Common::Log::Class::Render_OpenGL, level, "{} {} {}: {}", GetSource(source), LOG_GENERIC(Common::Log::Class::Render_OpenGL, level, "{} {} {}: {}", GetSource(source),
GetType(type), id, message); GetType(type), id, message);
} }
Driver::Driver(Core::TelemetrySession& telemetry_session_) : telemetry_session{telemetry_session_} { Driver::Driver() {
const bool enable_debug = Settings::values.renderer_debug.GetValue(); const bool enable_debug = Settings::values.renderer_debug.GetValue();
if (enable_debug) { if (enable_debug) {
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
@ -135,12 +133,6 @@ void Driver::ReportDriverInfo() {
LOG_INFO(Render_OpenGL, "GL_VERSION: {}", gl_version); LOG_INFO(Render_OpenGL, "GL_VERSION: {}", gl_version);
LOG_INFO(Render_OpenGL, "GL_VENDOR: {}", gpu_vendor); LOG_INFO(Render_OpenGL, "GL_VENDOR: {}", gpu_vendor);
LOG_INFO(Render_OpenGL, "GL_RENDERER: {}", gpu_model); LOG_INFO(Render_OpenGL, "GL_RENDERER: {}", gpu_model);
// Add the information to the telemetry system
constexpr auto user_system = Common::Telemetry::FieldType::UserSystem;
telemetry_session.AddField(user_system, "GPU_Vendor", std::string{gpu_vendor});
telemetry_session.AddField(user_system, "GPU_Model", std::string{gpu_model});
telemetry_session.AddField(user_system, "GPU_OpenGL_Version", std::string{gl_version});
} }
void Driver::DeduceGLES() { void Driver::DeduceGLES() {

View File

@ -7,10 +7,6 @@
#include <string_view> #include <string_view>
#include "common/common_types.h" #include "common/common_types.h"
namespace Core {
class TelemetrySession;
}
namespace VideoCore { namespace VideoCore {
enum class CustomPixelFormat : u32; enum class CustomPixelFormat : u32;
} }
@ -48,7 +44,7 @@ enum class DriverBug {
*/ */
class Driver { class Driver {
public: public:
Driver(Core::TelemetrySession& telemetry_session); Driver();
~Driver(); ~Driver();
/// Returns true of the driver has a particular bug stated in the DriverBug enum /// Returns true of the driver has a particular bug stated in the DriverBug enum
@ -143,7 +139,6 @@ private:
void FindBugs(); void FindBugs();
private: private:
Core::TelemetrySession& telemetry_session;
Vendor vendor = Vendor::Unknown; Vendor vendor = Vendor::Unknown;
DriverBug bugs{}; DriverBug bugs{};
bool is_suitable{}; bool is_suitable{};

View File

@ -9,7 +9,6 @@
#include "common/assert.h" #include "common/assert.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core.h" #include "core/core.h"
#include "core/telemetry_session.h"
#include "video_core/pica/regs_framebuffer.h" #include "video_core/pica/regs_framebuffer.h"
#include "video_core/pica/regs_lighting.h" #include "video_core/pica/regs_lighting.h"
#include "video_core/pica/regs_texturing.h" #include "video_core/pica/regs_texturing.h"
@ -76,9 +75,6 @@ inline GLenum WrapMode(Pica::TexturingRegs::TextureConfig::WrapMode mode) {
} }
if (index > 3) { if (index > 3) {
Core::System::GetInstance().TelemetrySession().AddField(
Common::Telemetry::FieldType::Session, "VideoCore_Pica_UnsupportedTextureWrapMode",
static_cast<u32>(index));
LOG_WARNING(Render_OpenGL, "Using texture wrap mode {}", index); LOG_WARNING(Render_OpenGL, "Using texture wrap mode {}", index);
} }

View File

@ -75,9 +75,9 @@ static std::array<GLfloat, 3 * 2> MakeOrthographicMatrix(const float width, cons
RendererOpenGL::RendererOpenGL(Core::System& system, Pica::PicaCore& pica_, RendererOpenGL::RendererOpenGL(Core::System& system, Pica::PicaCore& pica_,
Frontend::EmuWindow& window, Frontend::EmuWindow* secondary_window) Frontend::EmuWindow& window, Frontend::EmuWindow* secondary_window)
: VideoCore::RendererBase{system, window, secondary_window}, pica{pica_}, : VideoCore::RendererBase{system, window, secondary_window}, pica{pica_},
driver{system.TelemetrySession()}, rasterizer{system.Memory(), pica, rasterizer{system.Memory(), pica, system.CustomTexManager(), *this, driver}, frame_dumper{
system.CustomTexManager(), *this, driver}, system,
frame_dumper{system, window} { window} {
const bool has_debug_tool = driver.HasDebugTool(); const bool has_debug_tool = driver.HasDebugTool();
window.mailbox = std::make_unique<OGLTextureMailbox>(has_debug_tool); window.mailbox = std::make_unique<OGLTextureMailbox>(has_debug_tool);
if (secondary_window) { if (secondary_window) {

View File

@ -53,9 +53,9 @@ constexpr static std::array<vk::DescriptorSetLayoutBinding, 1> PRESENT_BINDINGS
RendererVulkan::RendererVulkan(Core::System& system, Pica::PicaCore& pica_, RendererVulkan::RendererVulkan(Core::System& system, Pica::PicaCore& pica_,
Frontend::EmuWindow& window, Frontend::EmuWindow* secondary_window) Frontend::EmuWindow& window, Frontend::EmuWindow* secondary_window)
: RendererBase{system, window, secondary_window}, memory{system.Memory()}, pica{pica_}, : RendererBase{system, window, secondary_window}, memory{system.Memory()}, pica{pica_},
instance{system.TelemetrySession(), window, Settings::values.physical_device.GetValue()}, instance{window, Settings::values.physical_device.GetValue()}, scheduler{instance},
scheduler{instance}, renderpass_cache{instance, scheduler}, pool{instance}, renderpass_cache{instance, scheduler}, pool{instance}, main_window{window, instance,
main_window{window, instance, scheduler}, scheduler},
vertex_buffer{instance, scheduler, vk::BufferUsageFlagBits::eVertexBuffer, vertex_buffer{instance, scheduler, vk::BufferUsageFlagBits::eVertexBuffer,
VERTEX_BUFFER_SIZE}, VERTEX_BUFFER_SIZE},
rasterizer{memory, rasterizer{memory,

View File

@ -9,7 +9,6 @@
#include "common/assert.h" #include "common/assert.h"
#include "common/settings.h" #include "common/settings.h"
#include "core/frontend/emu_window.h" #include "core/frontend/emu_window.h"
#include "core/telemetry_session.h"
#include "video_core/custom_textures/custom_format.h" #include "video_core/custom_textures/custom_format.h"
#include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_instance.h"
#include "video_core/renderer_vulkan/vk_platform.h" #include "video_core/renderer_vulkan/vk_platform.h"
@ -138,8 +137,7 @@ Instance::Instance(bool enable_validation, bool dump_command_buffers)
enable_validation, dump_command_buffers)}, enable_validation, dump_command_buffers)},
physical_devices{instance->enumeratePhysicalDevices()} {} physical_devices{instance->enumeratePhysicalDevices()} {}
Instance::Instance(Core::TelemetrySession& telemetry, Frontend::EmuWindow& window, Instance::Instance(Frontend::EmuWindow& window, u32 physical_device_index)
u32 physical_device_index)
: library{OpenLibrary(&window)}, instance{CreateInstance( : library{OpenLibrary(&window)}, instance{CreateInstance(
*library, window.GetWindowInfo().type, *library, window.GetWindowInfo().type,
Settings::values.renderer_debug.GetValue(), Settings::values.renderer_debug.GetValue(),
@ -161,10 +159,9 @@ Instance::Instance(Core::TelemetrySession& telemetry, Frontend::EmuWindow& windo
VK_VERSION_MAJOR(properties.apiVersion), VK_VERSION_MINOR(properties.apiVersion))); VK_VERSION_MAJOR(properties.apiVersion), VK_VERSION_MINOR(properties.apiVersion)));
} }
CollectTelemetryParameters(telemetry);
CreateDevice(); CreateDevice();
CollectToolingInfo();
CreateFormatTable(); CreateFormatTable();
CollectToolingInfo();
CreateCustomFormatTable(); CreateCustomFormatTable();
CreateAttribTable(); CreateAttribTable();
} }
@ -645,7 +642,10 @@ void Instance::CreateAllocator() {
} }
} }
void Instance::CollectTelemetryParameters(Core::TelemetrySession& telemetry) { void Instance::CollectToolingInfo() {
if (!tooling_info) {
return;
}
const vk::StructureChain property_chain = const vk::StructureChain property_chain =
physical_device physical_device
.getProperties2<vk::PhysicalDeviceProperties2, vk::PhysicalDeviceDriverProperties>(); .getProperties2<vk::PhysicalDeviceProperties2, vk::PhysicalDeviceDriverProperties>();
@ -664,19 +664,6 @@ void Instance::CollectTelemetryParameters(Core::TelemetrySession& telemetry) {
LOG_INFO(Render_Vulkan, "VK_DRIVER: {}", driver_name); LOG_INFO(Render_Vulkan, "VK_DRIVER: {}", driver_name);
LOG_INFO(Render_Vulkan, "VK_DEVICE: {}", model_name); LOG_INFO(Render_Vulkan, "VK_DEVICE: {}", model_name);
LOG_INFO(Render_Vulkan, "VK_VERSION: {}", api_version); LOG_INFO(Render_Vulkan, "VK_VERSION: {}", api_version);
static constexpr auto field = Common::Telemetry::FieldType::UserSystem;
telemetry.AddField(field, "GPU_Vendor", vendor_name);
telemetry.AddField(field, "GPU_Model", model_name);
telemetry.AddField(field, "GPU_Vulkan_Driver", driver_name);
telemetry.AddField(field, "GPU_Vulkan_Version", api_version);
telemetry.AddField(field, "GPU_Vulkan_Extensions", extensions);
}
void Instance::CollectToolingInfo() {
if (!tooling_info) {
return;
}
const auto tools = physical_device.getToolPropertiesEXT(); const auto tools = physical_device.getToolPropertiesEXT();
for (const vk::PhysicalDeviceToolProperties& tool : tools) { for (const vk::PhysicalDeviceToolProperties& tool : tools) {
const std::string_view name = tool.name; const std::string_view name = tool.name;

View File

@ -10,10 +10,6 @@
#include "video_core/rasterizer_cache/pixel_format.h" #include "video_core/rasterizer_cache/pixel_format.h"
#include "video_core/renderer_vulkan/vk_platform.h" #include "video_core/renderer_vulkan/vk_platform.h"
namespace Core {
class TelemetrySession;
}
namespace Frontend { namespace Frontend {
class EmuWindow; class EmuWindow;
} }
@ -41,8 +37,7 @@ struct FormatTraits {
class Instance { class Instance {
public: public:
explicit Instance(bool validation = false, bool dump_command_buffers = false); explicit Instance(bool validation = false, bool dump_command_buffers = false);
explicit Instance(Core::TelemetrySession& telemetry, Frontend::EmuWindow& window, explicit Instance(Frontend::EmuWindow& window, u32 physical_device_index);
u32 physical_device_index);
~Instance(); ~Instance();
/// Returns the FormatTraits struct for the provided pixel format /// Returns the FormatTraits struct for the provided pixel format
@ -290,8 +285,7 @@ private:
/// Creates the VMA allocator handle /// Creates the VMA allocator handle
void CreateAllocator(); void CreateAllocator();
/// Collects telemetry information from the device. // Collects logging gpu info
void CollectTelemetryParameters(Core::TelemetrySession& telemetry);
void CollectToolingInfo(); void CollectToolingInfo();
private: private:

View File

@ -2,8 +2,6 @@ add_library(web_service STATIC
announce_room_json.cpp announce_room_json.cpp
announce_room_json.h announce_room_json.h
precompiled_headers.h precompiled_headers.h
telemetry_json.cpp
telemetry_json.h
verify_login.cpp verify_login.cpp
verify_login.h verify_login.h
verify_user_jwt.cpp verify_user_jwt.cpp

View File

@ -1,130 +0,0 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include <json.hpp>
#include "common/detached_tasks.h"
#include "common/web_result.h"
#include "web_service/telemetry_json.h"
#include "web_service/web_backend.h"
namespace WebService {
namespace Telemetry = Common::Telemetry;
struct TelemetryJson::Impl {
Impl(std::string host, std::string username, std::string token)
: host{std::move(host)}, username{std::move(username)}, token{std::move(token)} {}
nlohmann::json& TopSection() {
return sections[static_cast<u8>(Telemetry::FieldType::None)];
}
const nlohmann::json& TopSection() const {
return sections[static_cast<u8>(Telemetry::FieldType::None)];
}
template <class T>
void Serialize(Telemetry::FieldType type, const std::string& name, T value) {
sections[static_cast<u8>(type)][name] = value;
}
void SerializeSection(Telemetry::FieldType type, const std::string& name) {
TopSection()[name] = sections[static_cast<unsigned>(type)];
}
nlohmann::json output;
std::array<nlohmann::json, 7> sections;
std::string host;
std::string username;
std::string token;
};
TelemetryJson::TelemetryJson(std::string host, std::string username, std::string token)
: impl{std::make_unique<Impl>(std::move(host), std::move(username), std::move(token))} {}
TelemetryJson::~TelemetryJson() = default;
void TelemetryJson::Visit(const Telemetry::Field<bool>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<double>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<float>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<u8>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<u16>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<u32>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<u64>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<s8>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<s16>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<s32>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<s64>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<std::string>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue());
}
void TelemetryJson::Visit(const Telemetry::Field<const char*>& field) {
impl->Serialize(field.GetType(), field.GetName(), std::string(field.GetValue()));
}
void TelemetryJson::Visit(const Telemetry::Field<std::chrono::microseconds>& field) {
impl->Serialize(field.GetType(), field.GetName(), field.GetValue().count());
}
void TelemetryJson::Complete() {
impl->SerializeSection(Telemetry::FieldType::App, "App");
impl->SerializeSection(Telemetry::FieldType::Session, "Session");
impl->SerializeSection(Telemetry::FieldType::Performance, "Performance");
impl->SerializeSection(Telemetry::FieldType::UserConfig, "UserConfig");
impl->SerializeSection(Telemetry::FieldType::UserSystem, "UserSystem");
auto content = impl->TopSection().dump();
// Send the telemetry async but don't handle the errors since they were written to the log
Common::DetachedTasks::AddTask([host{impl->host}, content]() {
Client{host, "", ""}.PostJson("/telemetry", content, true);
});
}
bool TelemetryJson::SubmitTestcase() {
impl->SerializeSection(Telemetry::FieldType::App, "App");
impl->SerializeSection(Telemetry::FieldType::Session, "Session");
impl->SerializeSection(Telemetry::FieldType::UserFeedback, "UserFeedback");
impl->SerializeSection(Telemetry::FieldType::UserSystem, "UserSystem");
auto content = impl->TopSection().dump();
Client client(impl->host, impl->username, impl->token);
auto value = client.PostJson("/gamedb/testcase", content, false);
return value.result_code == Common::WebResult::Code::Success;
}
} // namespace WebService

View File

@ -1,46 +0,0 @@
// Copyright 2017 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include <chrono>
#include <string>
#include "common/announce_multiplayer_room.h"
#include "common/telemetry.h"
namespace WebService {
/**
* Implementation of VisitorInterface that serialized telemetry into JSON, and submits it to the
* Citra web service
*/
class TelemetryJson : public Common::Telemetry::VisitorInterface {
public:
TelemetryJson(std::string host, std::string username, std::string token);
~TelemetryJson() override;
void Visit(const Common::Telemetry::Field<bool>& field) override;
void Visit(const Common::Telemetry::Field<double>& field) override;
void Visit(const Common::Telemetry::Field<float>& field) override;
void Visit(const Common::Telemetry::Field<u8>& field) override;
void Visit(const Common::Telemetry::Field<u16>& field) override;
void Visit(const Common::Telemetry::Field<u32>& field) override;
void Visit(const Common::Telemetry::Field<u64>& field) override;
void Visit(const Common::Telemetry::Field<s8>& field) override;
void Visit(const Common::Telemetry::Field<s16>& field) override;
void Visit(const Common::Telemetry::Field<s32>& field) override;
void Visit(const Common::Telemetry::Field<s64>& field) override;
void Visit(const Common::Telemetry::Field<std::string>& field) override;
void Visit(const Common::Telemetry::Field<const char*>& field) override;
void Visit(const Common::Telemetry::Field<std::chrono::microseconds>& field) override;
void Complete() override;
bool SubmitTestcase() override;
private:
struct Impl;
std::unique_ptr<Impl> impl;
};
} // namespace WebService