diff options
| -rw-r--r-- | Attorney_Online.pro | 6 | ||||
| -rw-r--r-- | include/aooptionsdialog.h | 2 | ||||
| -rw-r--r-- | include/discord_rich_presence.h | 4 | ||||
| -rw-r--r-- | resource/translations/ao_de.qm | bin | 0 -> 23500 bytes | |||
| -rw-r--r-- | resource/translations/ao_de.ts | 982 | ||||
| -rw-r--r-- | resource/translations/ao_en.qm | bin | 0 -> 23 bytes | |||
| -rw-r--r-- | resource/translations/ao_en.ts | 826 | ||||
| -rw-r--r-- | resource/translations/ao_es.qm | bin | 0 -> 23447 bytes | |||
| -rw-r--r-- | resource/translations/ao_es.ts | 881 | ||||
| -rw-r--r-- | resource/translations/ao_jp.qm | bin | 0 -> 2004 bytes | |||
| -rw-r--r-- | resource/translations/ao_jp.ts | 849 | ||||
| -rw-r--r-- | resource/translations/ao_ru.qm | bin | 0 -> 21968 bytes | |||
| -rw-r--r-- | resource/translations/ao_ru.ts | 855 | ||||
| -rw-r--r-- | resources.qrc | 5 | ||||
| -rw-r--r-- | src/aoapplication.cpp | 9 | ||||
| -rw-r--r-- | src/aooptionsdialog.cpp | 16 | ||||
| -rw-r--r-- | src/charselect.cpp | 2 | ||||
| -rw-r--r-- | src/courtroom.cpp | 36 | ||||
| -rw-r--r-- | src/debug_functions.cpp | 9 | ||||
| -rw-r--r-- | src/evidence.cpp | 4 | ||||
| -rw-r--r-- | src/lobby.cpp | 20 | ||||
| -rw-r--r-- | src/main.cpp | 21 | ||||
| -rw-r--r-- | src/packet_distribution.cpp | 27 |
23 files changed, 4501 insertions, 53 deletions
diff --git a/Attorney_Online.pro b/Attorney_Online.pro index aefd5140..32781a1b 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -41,5 +41,11 @@ CONFIG += c++14 RESOURCES += resources.qrc +TRANSLATIONS = resource/translations/ao_en.ts \ + resource/translations/ao_jp.ts \ + resource/translations/ao_de.ts \ + resource/translations/ao_ru.ts \ + resource/translations/ao_es.ts + win32:RC_ICONS = resource/logo.ico macx:ICON = resource/logo.icns diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h index a65e3f59..83b84cbc 100644 --- a/include/aooptionsdialog.h +++ b/include/aooptionsdialog.h @@ -55,6 +55,8 @@ private: QLineEdit *ui_ms_textbox; QLabel *ui_discord_lbl; QCheckBox *ui_discord_cb; + QLabel *ui_language_label; + QComboBox *ui_language_combobox; QWidget *ui_callwords_tab; QWidget *ui_callwords_widget; diff --git a/include/discord_rich_presence.h b/include/discord_rich_presence.h index e7ecc6ef..4115b516 100644 --- a/include/discord_rich_presence.h +++ b/include/discord_rich_presence.h @@ -5,6 +5,8 @@ #include <ctime> #include <QDebug> #include <string> +#include <QCoreApplication> + #include <discord-rpc.h> #include <cstring> @@ -16,6 +18,8 @@ namespace AttorneyOnline { class Discord { + Q_DECLARE_TR_FUNCTIONS(Discord) + private: const char* APPLICATION_ID = "399779271737868288"; std::string server_name, server_id; diff --git a/resource/translations/ao_de.qm b/resource/translations/ao_de.qm Binary files differnew file mode 100644 index 00000000..6fd250de --- /dev/null +++ b/resource/translations/ao_de.qm diff --git a/resource/translations/ao_de.ts b/resource/translations/ao_de.ts new file mode 100644 index 00000000..1c0675b9 --- /dev/null +++ b/resource/translations/ao_de.ts @@ -0,0 +1,982 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="de_DE"> +<context> + <name>AOApplication</name> + <message> + <location filename="../../src/aoapplication.cpp" line="138"/> + <source>Disconnected from server.</source> + <translation>Vom Server getrennt.</translation> + </message> + <message> + <location filename="../../src/aoapplication.cpp" line="163"/> + <source>Error connecting to master server. Will try again in %1 seconds.</source> + <translation>Fehler bei der Verbindung zum Master Server. Erneuter Versuch in %1 Sekunden.</translation> + </message> + <message> + <source>Error connecting to master server. Will try again in %n seconds.</source> + <translation type="vanished">Fehler bei der Verbindung zum Master Server. Erneuter Versuch in %n Sekunden.</translation> + </message> + <message> + <location filename="../../src/aoapplication.cpp" line="167"/> + <source>There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again.</source> + <translation>Es gab einen Fehler beim Verbinden zum Master Server. +Wir verwenden mehrere Master Server um Ausfälle zu verhindern, jedoch hat der Client alle Möglichkeiten einen zu finden erschöpft. +Bitte prüfe deine Internetverbindung und Firewall, und versuche es erneut.</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="106"/> + <source>Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update.</source> + <translation>Version zu alt! Deine Version: %1 +Bitte besuche aceattorneyonline.com für ein Update.</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="114"/> + <source>You have been exiled from AO. +Have a nice day.</source> + <translation>Du wurdest von AO befreit. +Schönen Urlaub.</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="249"/> + <source>Attorney Online 2</source> + <translation>Attorney Online 2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="275"/> + <source>Loading</source> + <translation>Laden</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="363"/> + <source>Loading evidence: +%1/%2</source> + <translation>Lade Beweisstücke: +%1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="395"/> + <location filename="../../src/packet_distribution.cpp" line="490"/> + <source>Loading music: +%1/%2</source> + <translation>Lade Musik: +%1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="467"/> + <source>Loading chars: +%1/%2</source> + <translation>Lade Charaktere: +%1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="642"/> + <source>You have been kicked from the server. +Reason: %1</source> + <translation>Du wurdest von diesem Server geschmissen. +Grund: %1</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="651"/> + <source>You have been banned from the server. +Reason: %1</source> + <translation>Du wurdest von diesem Server verbannt. +Grund: %1</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="659"/> + <source>You are banned on this server. +Reason: %1</source> + <translation>Du bist von diesem Server verbannt. +Grund: %1</translation> + </message> + <message> + <source>You have been kicked from the server. +Reason: </source> + <translation type="vanished">Du wurdest von diesem Server geschmissen. +Grund: </translation> + </message> + <message> + <source>You are banned on this server. +Reason: </source> + <translation type="vanished">Du wurdest von diesem Server verbannt. +Grund: </translation> + </message> + <message> + <source>You have been kicked.</source> + <translation type="vanished">Du wurdest rausgeschmissen.</translation> + </message> + <message> + <source>You are banned on this server.</source> + <translation type="vanished">Du wurdest verbannt.</translation> + </message> +</context> +<context> + <name>AOCaseAnnouncerDialog</name> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="9"/> + <source>Case Announcer</source> + <translation>Fallansager</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="38"/> + <source>Case title:</source> + <translation>Fallname:</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="48"/> + <source>Defense needed</source> + <translation>Verteidiger benötigt</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="50"/> + <source>Prosecution needed</source> + <translation>Kläger benötigt</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="52"/> + <source>Judge needed</source> + <translation>Richter benötigt</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="54"/> + <source>Jurors needed</source> + <translation>Jury benötigt</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="56"/> + <source>Stenographer needed</source> + <translation>Stenograph benötigt</translation> + </message> +</context> +<context> + <name>AOOptionsDialog</name> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="11"/> + <source>Settings</source> + <translation>Einstellungen</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="40"/> + <source>Gameplay</source> + <translation>Spiel</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="51"/> + <source>Theme:</source> + <translation>Theme:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="52"/> + <source>Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> + <translation>Setzt das Theme. Wenn das neue Theme auch das Aussehen der Lobby verändert, must du diese neu laden um die Änderungen zu sehen.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="81"/> + <source>Log goes downwards:</source> + <translation>Verlauf geht nach unten:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="82"/> + <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> + <translation>Wenn angehakt werden neue Nachrichten unten erscheinen (wie beim OOC). Das traditionelle (AO1) Verhalten wäre nicht angehakt.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="94"/> + <source>Log length:</source> + <translation>Länge:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="95"/> + <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'.</source> + <translation>Die Menge an Nachrichten die aufgehoben werden bevor alte gelöscht werden. 0 bedeutet unendlich.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="113"/> + <source>Default username:</source> + <translation>Standard Benutzername:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="114"/> + <source>Your OOC name will be automatically set to this value when you join a server.</source> + <translation>Dein OOC Name wird automatisch auf dies gesetzt.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="126"/> + <source>Custom shownames:</source> + <translation>Eigener Anzeigename:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="127"/> + <source>Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names.</source> + <translation>Standardwert für die Anzeigename Box, welche den In-Charakter Namen bestimmt.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="145"/> + <source>Backup MS:</source> + <translation>Rückfall MS:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="146"/> + <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> + <translation>Wenn dereingebaute Master Server fehlschlägt, wird das Spiel diesen hier verwenden.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="158"/> + <source>Discord:</source> + <translation>Discord:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="159"/> + <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> + <translation>Erlaubt anderen auf Discord zu sehen auf welchem Server du spielst, welchen Charakter du spielst und wie lange.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="171"/> + <source>Language:</source> + <translation>Sprache:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="172"/> + <source>Sets the language if you don't want to use your system language.</source> + <translation>Setzte die Sprache falls du nicht die Systemsprache verwenden möchtest.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="186"/> + <source>Callwords</source> + <translation>Alarmwörter</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="211"/> + <source><html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html></source> + <translation><html><head/><body>Gib so viele Alarmwörter ein wie du möchtest. Groß/Kleinschreibung ist egal. Für jede Wort nur eine Zeile!<br>Bitte keine leere Zeile am Ende -- du bekommst sonst bei jeder Nachricht einen Alarm.</body></html></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="217"/> + <source>Audio</source> + <translation>Audio</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="228"/> + <source>Audio device:</source> + <translation>Audiogerät:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="229"/> + <source>Sets the audio device for all sounds.</source> + <translation>Setzt das Audiogerät für all Geräusche.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="263"/> + <source>Music:</source> + <translation>Musik:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="264"/> + <source>Sets the music's default volume.</source> + <translation>Setzt die Musiklautstärke.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="276"/> + <source>SFX:</source> + <translation>SFX:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="277"/> + <source>Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'.</source> + <translation>Setzt die Lautstärke der Soundeffekte wie Einsprüche und die Geräusche der Charaktere.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="290"/> + <source>Blips:</source> + <translation>Blips:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="291"/> + <source>Sets the volume of the blips, the talking sound effects.</source> + <translation>Setzt die Lautstärke der Blips, das ist das Geräusch das die Charaktere beim Reden machen.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="309"/> + <source>Blip rate:</source> + <translation>Bliprate:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="310"/> + <source>Sets the delay between playing the blip sounds.</source> + <translation>Setzt die Pause zwischen einzelnen Blips.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="321"/> + <source>Blank blips:</source> + <translation>Leere Blips:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="322"/> + <source>If true, the game will play a blip sound even when a space is 'being said'.</source> + <translation>Wenn angehakt wird das Spiel auch bei einem Leerzeichen einen Blip machen.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="334"/> + <source>Casing</source> + <translation>Fälle</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="348"/> + <source>This server supports case alerts.</source> + <translation>Dieser Server unterstützt Fallalarme.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="350"/> + <source>This server does not support case alerts.</source> + <translation>Dieser Server unterstützt Fallalarme nicht.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="351"/> + <source>Pretty self-explanatory.</source> + <translation>Eigentlich selbsterklärend.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="358"/> + <source>Casing:</source> + <translation>Fälle:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="359"/> + <source>If checked, you will get alerts about case announcements.</source> + <translation>Wenn angehakt wirst du benachrichtigt wenn ein Fall angekündigt wird.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="372"/> + <source>Defense:</source> + <translation>Verteidigung:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="373"/> + <source>If checked, you will get alerts about case announcements if a defense spot is open.</source> + <translation>Wenn angehakt wirst du benachrichtigt wenn ein Verteidiger benötigt wird.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="386"/> + <source>Prosecution:</source> + <translation>Kläger:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="387"/> + <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> + <translation>Wenn angehakt wirst du benachrichtigt wenn ein Kläger benötigt wird.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="400"/> + <source>Judge:</source> + <translation>Richter:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="401"/> + <source>If checked, you will get alerts about case announcements if the judge spot is open.</source> + <translation>Wenn angehakt wirst du benachrichtigt wenn ein Richter benötigt wird.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="414"/> + <source>Juror:</source> + <translation>Jury:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="415"/> + <source>If checked, you will get alerts about case announcements if a juror spot is open.</source> + <translation>Wenn angehakt wirst du benachrichtigt wenn eine Jury benötigt wird.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="428"/> + <source>Stenographer:</source> + <translation>Stenograph:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="429"/> + <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> + <translation>Wenn angehakt wirst du benachrichtigt wenn ein Stenograph benötigt wird.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="442"/> + <source>CM:</source> + <translation>CM:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="443"/> + <source>If checked, you will appear amongst the potential CMs on the server.</source> + <translation>Wenn angehakt wirst du als potentielle CM angezeigt.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="456"/> + <source>Hosting cases:</source> + <translation>Fallleitung:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="457"/> + <source>If you're a CM, enter what cases you are willing to host.</source> + <translation>Wenn du CM bist, gib ein welche Fälle du spielen möchtest.</translation> + </message> +</context> +<context> + <name>Courtroom</name> + <message> + <location filename="../../src/charselect.cpp" line="21"/> + <source>Password</source> + <translation>Passwort</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="27"/> + <source>Spectator</source> + <translation>Zuschauer</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="30"/> + <location filename="../../src/courtroom.cpp" line="138"/> + <source>Search</source> + <translation>Suche</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="35"/> + <source>Passworded</source> + <translation>Gesperrt</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="39"/> + <source>Taken</source> + <translation>Benutzt</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="217"/> + <source>Generating chars: +%1/%2</source> + <translation>Generiere Charaktere: +%1/%2</translation> + </message> + <message> + <source>Generating chars: +</source> + <translation type="vanished">Generiere Charaktere: +</translation> + </message> + <message> + <source>Could not find %1</source> + <translation type="vanished">Konnte %1 nicht finden.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="116"/> + <source>Showname</source> + <translation>Anzeigename</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="120"/> + <source>Message</source> + <translation>Nachricht</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="130"/> + <source>Name</source> + <translation>Name</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="183"/> + <source>Pre</source> + <translation>Vor</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="186"/> + <source>Flip</source> + <translation>Spiegeln</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="190"/> + <source>Guard</source> + <translation>Wache</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="195"/> + <location filename="../../src/courtroom.cpp" line="608"/> + <source>Casing</source> + <translation>Fall</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="200"/> + <source>Shownames</source> + <translation>Anzeigenamen</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="203"/> + <source>No Interrupt</source> + <translation>Keine Unterbrechung</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="217"/> + <source>White</source> + <translation>Weiß</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="218"/> + <source>Green</source> + <translation>Grün</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="219"/> + <source>Red</source> + <translation>Rot</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="220"/> + <source>Orange</source> + <translation>Orange</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="221"/> + <source>Blue</source> + <translation>Blau</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="222"/> + <source>Yellow</source> + <translation>Gelb</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="566"/> + <source>Music</source> + <translation>Musik</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="568"/> + <source>Sfx</source> + <translation>Sfx</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="570"/> + <source>Blips</source> + <translation>Blips</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="573"/> + <source>Log limit</source> + <translation>Verlaufsgrenze</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="583"/> + <location filename="../../src/courtroom.cpp" line="2959"/> + <source>Server</source> + <translation>Server</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="596"/> + <source>Change character</source> + <translation>Charakter ändern</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="599"/> + <source>Reload theme</source> + <translation>Aussehen neu laden</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="602"/> + <source>Call mod</source> + <translation>Moderator rufen</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="605"/> + <source>Settings</source> + <translation>Einstellungen</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="611"/> + <source>A/M</source> + <translation>A/M</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="614"/> + <source>Preanim</source> + <translation>Voranimation</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="692"/> + <source>Back to Lobby</source> + <translation>Zurück zur Lobby</translation> + </message> + <message> + <source>You have been banned.</source> + <translation type="vanished">Du wurdest verbannt.</translation> + </message> + <message> + <source>%1 has played a song: %2</source> + <translation type="vanished">%1 hat ein Lied gespielt: %2</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="223"/> + <source>Rainbow</source> + <translation>Regenbogen</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="224"/> + <source>Pink</source> + <translation>Pink</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="225"/> + <source>Cyan</source> + <translation>Cyan</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="248"/> + <source>% offset</source> + <translation>% Abstand</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2681"/> + <source>You were granted the Guard button.</source> + <translation>Dir wurde der Wache Knopf gegeben.</translation> + </message> + <message> + <source>This does nohing, but there you go.</source> + <translation type="vanished">Dies bewirkt nichts, aber egal.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2688"/> + <source>This does nothing, but there you go.</source> + <translation>Dies bewirkt nichts, aber egal.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2695"/> + <source>You opened the settings menu.</source> + <translation>Du hast die Einstellungen geöffnet.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2710"/> + <source>You will now pair up with </source> + <translation>Du wirst nun mit </translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2712"/> + <source> if they also choose your character in return.</source> + <translation> gepaart, wenn der andere dies auch tut.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2718"/> + <source>You are no longer paired with anyone.</source> + <translation>Du bist nicht mehr gepaart.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2723"/> + <source>Are you sure you typed that well? The char ID could not be recognised.</source> + <translation>Hast du dich vertippt? Die ID konnte nicht erkannt werden.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2739"/> + <source>You have set your offset to </source> + <translation>Dein Abstand ist auf </translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2746"/> + <source>Your offset must be between -100% and 100%!</source> + <translation>Der Abstand muss zwischen -100% und 100% liegen!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2751"/> + <source>That offset does not look like one.</source> + <translation>Das sieht nicht wie ein Abstand aus.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2757"/> + <source>You switched your music and area list.</source> + <translation>Du hast zwischen Musik- und Gebitsliste umgeschaltet.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2764"/> + <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> + <translation>Du hast Funktionen erzwungen die der Server eventuell nicht unterstützt. Möglicherweise wirst du nicht mehr sprechen können.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2775"/> + <source>Your pre-animations interrupt again.</source> + <translation>Deine Voranimation unterbrechen nun Text.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2777"/> + <source>Your pre-animations will not interrupt text.</source> + <translation>Deine Voranimation unterbrechen Text nicht.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2788"/> + <source>Couldn't open chatlog.txt to write into.</source> + <translation>Konnte chatlog.txt nicht öffnen.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2801"/> + <source>The IC chatlog has been saved.</source> + <translation>Der IC Verlauf wurde gespeichert.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2813"/> + <source>You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there.</source> + <translation>Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2824"/> + <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1</source> + <translation>Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im 'base/cases' Ordner ist und das er korrekt formatiert ist. +Verfügbare Fälle: %1</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2845"/> + <source>Case made by %1.</source> + <translation>Fall von %1.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2851"/> + <source>Navigate to %1 for the CM doc.</source> + <translation>Gehe zu %1 für das CM Dokument.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2870"/> + <source>Your case "%1" was loaded!</source> + <translation>Dein Fall "%1" wurde geladen!</translation> + </message> + <message> + <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: </source> + <translation type="vanished">Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im 'base/cases' Ordner ist und das er korrekt formatiert ist. +Verfügbare Fälle: </translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2832"/> + <source>Too many arguments to load a case! You only need one filename, without extension.</source> + <translation>Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung.</translation> + </message> + <message> + <source>Case made by </source> + <translation type="vanished">Fall von </translation> + </message> + <message> + <source>Navigate to </source> + <translation type="vanished">Gehe zu </translation> + </message> + <message> + <source> for the CM doc.</source> + <translation type="vanished"> für das CM Dokument.</translation> + </message> + <message> + <source>Your case "</source> + <translation type="vanished">Dein Fall "</translation> + </message> + <message> + <source>" was loaded!</source> + <translation type="vanished">" wurde geladen!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2882"/> + <source>You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it.</source> + <translation>Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2893"/> + <source>You need to give a filename to save (extension not needed) and the courtroom status!</source> + <translation>Du musst einen Dateinamen (ohne Erweiterung) angebenn, sowie den Gebietsstatus!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2901"/> + <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> + <translation>Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung sowie den Gebietsstatus!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2923"/> + <source>Succesfully saved, edit doc and cmdoc link on the ini!</source> + <translation>Erfolgreich gespeichert!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2951"/> + <source>Master</source> + <translation>Master</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3422"/> + <source>Reason:</source> + <translation>Grund:</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3423"/> + <source>Call Moderator</source> + <translation>Moderator rufen</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3431"/> + <location filename="../../src/courtroom.cpp" line="3434"/> + <source>Error</source> + <translation>Fehler</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3431"/> + <source>You must provide a reason.</source> + <translation>Du musst einen Grund angeben.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3434"/> + <source>The message is too long.</source> + <translation>Die Nachricht ist zu lang.</translation> + </message> + <message> + <source>Choose..</source> + <translation type="vanished">Wähle..</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="25"/> + <source>Choose...</source> + <translation>Wähle...</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="194"/> + <source>Images (*.png)</source> + <translation>Bilder (*.png)</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="268"/> + <source>Add new evidence...</source> + <translation>Neues Beweisstück...</translation> + </message> +</context> +<context> + <name>Discord</name> + <message> + <source>Objection!</source> + <translation type="vanished">Einspruch!</translation> + </message> + <message> + <source>In Lobby</source> + <translation type="vanished">In Lobby</translation> + </message> + <message> + <source>Idle</source> + <translation type="vanished">Untätig</translation> + </message> + <message> + <source>In a Server</source> + <translation type="vanished">In einem Server</translation> + </message> + <message> + <source>Playing as %1</source> + <translation type="vanished">Spielt als %1</translation> + </message> + <message> + <source>Spectating</source> + <translation type="vanished">Zuschauend</translation> + </message> +</context> +<context> + <name>Lobby</name> + <message> + <location filename="../../src/lobby.cpp" line="12"/> + <source>Attorney Online 2</source> + <translation>Attorney Online 2</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="29"/> + <source>Name</source> + <translation>Name</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="74"/> + <source>It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder?</source> + <translation>Dein Client ist nicht korrekt eingerichtet. +Hast du ALLES von tiny.cc/getao heruntergeladen und entpackt, auch den großen 'base' Ordner?</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="104"/> + <source>Version: %1</source> + <translation>Version: %1</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="147"/> + <source>Loading</source> + <translation>Laden</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="151"/> + <source>Cancel</source> + <translation>Abbrechen</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="270"/> + <source><h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> + <translation><h2>Attorney Online %1</h2>Der Gerichtsdrama Simulator<p><b>Quelltext:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Leitende Entwicklung:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Danksagungen:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="376"/> + <source>Online: %1/%2</source> + <translation>Online: %1/%2</translation> + </message> + <message> + <source>Attorney Online 2 is built using Qt 5.11. + +Lead development: +longbyte1 +OmniTroid + +stonedDiscord +Supporting development: +Fiercy + +UI design: +Ruekasu +Draxirch + +Special thanks: +Unishred +Argoneus +Noevain +Cronnicossy</source> + <translation type="vanished">Attorney Online 2 wurde gemacht mit Qt 5.11. + +Leitende Entwicklung: +longbyte1 +OmniTroid +stonedDiscord + +Unterstützende Entwicklung: +Fiercy + +UI Design: +Ruekasu +Draxirch + +Speziellen Dank: +Unishred +Argoneus +Noevain +Cronnicossy</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="114"/> + <location filename="../../src/lobby.cpp" line="316"/> + <source>Offline</source> + <translation>Offline</translation> + </message> +</context> +<context> + <name>debug_functions</name> + <message> + <location filename="../../src/debug_functions.cpp" line="10"/> + <source>Error: %1</source> + <translation>Fehler: %1</translation> + </message> + <message> + <location filename="../../src/debug_functions.cpp" line="11"/> + <source>Error</source> + <translation>Fehler</translation> + </message> + <message> + <location filename="../../src/debug_functions.cpp" line="23"/> + <source>Notice</source> + <translation>Hinweis</translation> + </message> +</context> +</TS> diff --git a/resource/translations/ao_en.qm b/resource/translations/ao_en.qm Binary files differnew file mode 100644 index 00000000..9dad8dff --- /dev/null +++ b/resource/translations/ao_en.qm diff --git a/resource/translations/ao_en.ts b/resource/translations/ao_en.ts new file mode 100644 index 00000000..b917a419 --- /dev/null +++ b/resource/translations/ao_en.ts @@ -0,0 +1,826 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="en_US"> +<context> + <name>AOApplication</name> + <message> + <location filename="../../src/aoapplication.cpp" line="138"/> + <source>Disconnected from server.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aoapplication.cpp" line="163"/> + <source>Error connecting to master server. Will try again in %1 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aoapplication.cpp" line="167"/> + <source>There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="106"/> + <source>Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="114"/> + <source>You have been exiled from AO. +Have a nice day.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="249"/> + <source>Attorney Online 2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="275"/> + <source>Loading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="363"/> + <source>Loading evidence: +%1/%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="395"/> + <location filename="../../src/packet_distribution.cpp" line="490"/> + <source>Loading music: +%1/%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="467"/> + <source>Loading chars: +%1/%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="642"/> + <source>You have been kicked from the server. +Reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="651"/> + <source>You have been banned from the server. +Reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="659"/> + <source>You are banned on this server. +Reason: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>AOCaseAnnouncerDialog</name> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="9"/> + <source>Case Announcer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="38"/> + <source>Case title:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="48"/> + <source>Defense needed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="50"/> + <source>Prosecution needed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="52"/> + <source>Judge needed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="54"/> + <source>Jurors needed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="56"/> + <source>Stenographer needed</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>AOOptionsDialog</name> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="11"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="40"/> + <source>Gameplay</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="51"/> + <source>Theme:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="52"/> + <source>Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="81"/> + <source>Log goes downwards:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="82"/> + <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="94"/> + <source>Log length:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="95"/> + <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="113"/> + <source>Default username:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="114"/> + <source>Your OOC name will be automatically set to this value when you join a server.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="126"/> + <source>Custom shownames:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="127"/> + <source>Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="145"/> + <source>Backup MS:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="146"/> + <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="158"/> + <source>Discord:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="159"/> + <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="171"/> + <source>Language:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="172"/> + <source>Sets the language if you don't want to use your system language.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="186"/> + <source>Callwords</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="211"/> + <source><html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="217"/> + <source>Audio</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="228"/> + <source>Audio device:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="229"/> + <source>Sets the audio device for all sounds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="263"/> + <source>Music:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="264"/> + <source>Sets the music's default volume.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="276"/> + <source>SFX:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="277"/> + <source>Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="290"/> + <source>Blips:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="291"/> + <source>Sets the volume of the blips, the talking sound effects.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="309"/> + <source>Blip rate:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="310"/> + <source>Sets the delay between playing the blip sounds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="321"/> + <source>Blank blips:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="322"/> + <source>If true, the game will play a blip sound even when a space is 'being said'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="334"/> + <source>Casing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="348"/> + <source>This server supports case alerts.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="350"/> + <source>This server does not support case alerts.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="351"/> + <source>Pretty self-explanatory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="358"/> + <source>Casing:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="359"/> + <source>If checked, you will get alerts about case announcements.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="372"/> + <source>Defense:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="373"/> + <source>If checked, you will get alerts about case announcements if a defense spot is open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="386"/> + <source>Prosecution:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="387"/> + <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="400"/> + <source>Judge:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="401"/> + <source>If checked, you will get alerts about case announcements if the judge spot is open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="414"/> + <source>Juror:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="415"/> + <source>If checked, you will get alerts about case announcements if a juror spot is open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="428"/> + <source>Stenographer:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="429"/> + <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="442"/> + <source>CM:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="443"/> + <source>If checked, you will appear amongst the potential CMs on the server.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="456"/> + <source>Hosting cases:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="457"/> + <source>If you're a CM, enter what cases you are willing to host.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Courtroom</name> + <message> + <location filename="../../src/charselect.cpp" line="21"/> + <source>Password</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="27"/> + <source>Spectator</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="30"/> + <location filename="../../src/courtroom.cpp" line="138"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="35"/> + <source>Passworded</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="39"/> + <source>Taken</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="217"/> + <source>Generating chars: +%1/%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="116"/> + <source>Showname</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="120"/> + <source>Message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="130"/> + <source>Name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="183"/> + <source>Pre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="186"/> + <source>Flip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="190"/> + <source>Guard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="195"/> + <location filename="../../src/courtroom.cpp" line="608"/> + <source>Casing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="200"/> + <source>Shownames</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="203"/> + <source>No Interrupt</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="217"/> + <source>White</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="218"/> + <source>Green</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="219"/> + <source>Red</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="220"/> + <source>Orange</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="221"/> + <source>Blue</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="222"/> + <source>Yellow</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2688"/> + <source>This does nothing, but there you go.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2824"/> + <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2845"/> + <source>Case made by %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2851"/> + <source>Navigate to %1 for the CM doc.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2870"/> + <source>Your case "%1" was loaded!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="583"/> + <location filename="../../src/courtroom.cpp" line="2959"/> + <source>Server</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="692"/> + <source>Back to Lobby</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="223"/> + <source>Rainbow</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="224"/> + <source>Pink</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="225"/> + <source>Cyan</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="248"/> + <source>% offset</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="566"/> + <source>Music</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="568"/> + <source>Sfx</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="570"/> + <source>Blips</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="573"/> + <source>Log limit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="596"/> + <source>Change character</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="599"/> + <source>Reload theme</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="602"/> + <source>Call mod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="605"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="611"/> + <source>A/M</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="614"/> + <source>Preanim</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2681"/> + <source>You were granted the Guard button.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2695"/> + <source>You opened the settings menu.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2710"/> + <source>You will now pair up with </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2712"/> + <source> if they also choose your character in return.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2718"/> + <source>You are no longer paired with anyone.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2723"/> + <source>Are you sure you typed that well? The char ID could not be recognised.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2739"/> + <source>You have set your offset to </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2746"/> + <source>Your offset must be between -100% and 100%!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2751"/> + <source>That offset does not look like one.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2757"/> + <source>You switched your music and area list.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2764"/> + <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2775"/> + <source>Your pre-animations interrupt again.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2777"/> + <source>Your pre-animations will not interrupt text.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2788"/> + <source>Couldn't open chatlog.txt to write into.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2801"/> + <source>The IC chatlog has been saved.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2813"/> + <source>You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2832"/> + <source>Too many arguments to load a case! You only need one filename, without extension.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2882"/> + <source>You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2893"/> + <source>You need to give a filename to save (extension not needed) and the courtroom status!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2901"/> + <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2923"/> + <source>Succesfully saved, edit doc and cmdoc link on the ini!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2951"/> + <source>Master</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3422"/> + <source>Reason:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3423"/> + <source>Call Moderator</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3431"/> + <location filename="../../src/courtroom.cpp" line="3434"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3431"/> + <source>You must provide a reason.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3434"/> + <source>The message is too long.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="25"/> + <source>Choose...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="194"/> + <source>Images (*.png)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="268"/> + <source>Add new evidence...</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Lobby</name> + <message> + <location filename="../../src/lobby.cpp" line="12"/> + <source>Attorney Online 2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="29"/> + <source>Name</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="74"/> + <source>It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="104"/> + <source>Version: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="147"/> + <source>Loading</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="151"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="270"/> + <source><h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="376"/> + <source>Online: %1/%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="114"/> + <location filename="../../src/lobby.cpp" line="316"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>debug_functions</name> + <message> + <location filename="../../src/debug_functions.cpp" line="10"/> + <source>Error: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/debug_functions.cpp" line="11"/> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/debug_functions.cpp" line="23"/> + <source>Notice</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/resource/translations/ao_es.qm b/resource/translations/ao_es.qm Binary files differnew file mode 100644 index 00000000..214af271 --- /dev/null +++ b/resource/translations/ao_es.qm diff --git a/resource/translations/ao_es.ts b/resource/translations/ao_es.ts new file mode 100644 index 00000000..2ccccd64 --- /dev/null +++ b/resource/translations/ao_es.ts @@ -0,0 +1,881 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="es"> +<context> + <name>AOApplication</name> + <message> + <location filename="../../src/aoapplication.cpp" line="138"/> + <source>Disconnected from server.</source> + <translation>Desconectado del servidor.</translation> + </message> + <message> + <location filename="../../src/aoapplication.cpp" line="163"/> + <source>Error connecting to master server. Will try again in %1 seconds.</source> + <translation>Error al conectarse a la lista de servidores. Se intentará nuevamente en %1 segundos.</translation> + </message> + <message> + <location filename="../../src/aoapplication.cpp" line="167"/> + <source>There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again.</source> + <translatorcomment>I translated master servers as "lista de servidores" because literally nobody will understand if i make the literal translation "servidor maestro". And in the end a master server is just a list of servers. Also removed the part about having multiple master servers, i just don't think the average user will understand this even if i do a good translation.</translatorcomment> + <translation>Hubo un error al obtener la lista de servidores. Verifique su conexión a Internet y firewall, y vuelva a intentarlo.</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="106"/> + <source>Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update.</source> + <translation>¡Versión desactualizada! Su versión: %1 Vaya a aceattorneyonline.com para actualizar.</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="114"/> + <source>You have been exiled from AO. +Have a nice day.</source> + <translation>Has sido exiliado de AO. +Que tengas un buen día.</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="249"/> + <source>Attorney Online 2</source> + <translation>Attorney Online 2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="275"/> + <source>Loading</source> + <translation>Cargando</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="363"/> + <source>Loading evidence: +%1/%2</source> + <translation>Cargando evidencia: +%1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="395"/> + <location filename="../../src/packet_distribution.cpp" line="490"/> + <source>Loading music: +%1/%2</source> + <translation>Cargando música: +%1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="467"/> + <source>Loading chars: +%1/%2</source> + <translation>Cargando personajes: +%1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="642"/> + <source>You have been kicked from the server. +Reason: %1</source> + <translation>Has sido expulsado del servidor. +Razón: %1</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="651"/> + <source>You have been banned from the server. +Reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="659"/> + <source>You are banned on this server. +Reason: %1</source> + <translation>Has sido baneado en este servidor. +Razón: %1</translation> + </message> + <message> + <source>You have been kicked from the server. +Reason: </source> + <translation type="vanished">Has sido expulsado del servidor. +Razón: </translation> + </message> + <message> + <source>You are banned on this server. +Reason: </source> + <translation type="vanished">Has sido baneado en este servidor. +Razón: </translation> + </message> +</context> +<context> + <name>AOCaseAnnouncerDialog</name> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="9"/> + <source>Case Announcer</source> + <translation>Anunciar caso</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="38"/> + <source>Case title:</source> + <translation>Título del caso:</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="48"/> + <source>Defense needed</source> + <translation>Se necesita defensa</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="50"/> + <source>Prosecution needed</source> + <translation>Se necesita fiscal</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="52"/> + <source>Judge needed</source> + <translation>Se necesita juez</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="54"/> + <source>Jurors needed</source> + <translation>Se necesita jurado</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="56"/> + <source>Stenographer needed</source> + <translation>Se necesita taquígrafo</translation> + </message> +</context> +<context> + <name>AOOptionsDialog</name> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="11"/> + <source>Settings</source> + <translation>Ajustes</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="40"/> + <source>Gameplay</source> + <translation>Jugabilidad</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="51"/> + <source>Theme:</source> + <translation>Tema visual:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="52"/> + <source>Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> + <translation>Establece el tema visual utilizado en el juego. Si el nuevo tema también cambia el aspecto del lobby, deberá volver a cargar el lobby para que los cambios surtan efecto, como unirse a un servidor y volver al lobby.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="81"/> + <source>Log goes downwards:</source> + <translation>Invertir historial IC:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="82"/> + <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> + <translation>Si está marcado, los nuevos mensajes aparecerán en la parte inferior (como el chat OOC).</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="94"/> + <source>Log length:</source> + <translation>Longitud del historial:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="95"/> + <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'.</source> + <translation>La cantidad de mensajes que mantendrá el historial del chat IC antes de eliminar mensajes más antiguos. 0 significa 'infinito'.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="113"/> + <source>Default username:</source> + <translation>Usuario predeterminado:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="114"/> + <source>Your OOC name will be automatically set to this value when you join a server.</source> + <translation>Su nombre OOC se establecerá automáticamente a este cuando se una a un servidor.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="126"/> + <source>Custom shownames:</source> + <translation>Mostrar nombres:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="127"/> + <source>Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names.</source> + <translation>Activa la casilla 'Mostrar nombres' de forma predeterminada en el juego, que a su vez determina si el cliente debe mostrar nombres personalizados en los personajes.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="145"/> + <source>Backup MS:</source> + <translation>MS de respaldo:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="146"/> + <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> + <translation>Si la lista de servidores predeterminada falla, el juego probará la dirección proporcionada aquí.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="158"/> + <source>Discord:</source> + <translation></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="159"/> + <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> + <translation>Permite a otros en Discord ver en qué servidor estás, qué personaje juegas y cuánto tiempo has estado jugando.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="171"/> + <source>Language:</source> + <translation>Idioma:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="172"/> + <source>Sets the language if you don't want to use your system language.</source> + <translation>Establece el idioma si no desea utilizar el idioma de su sistema.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="186"/> + <source>Callwords</source> + <translation></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="211"/> + <source><html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html></source> + <translation><html><head/><body>Ingrese tantas palabras de llamada como desee.<br>Esto no distingue entre mayúsculas y minúsculas. ¡Asegúrese de dejar cada palabra en su propia línea!<br>No deje una línea con un espacio al final; recibirá una alerta cada vez que alguien use un espacio en sus mensajes.</body></html></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="217"/> + <source>Audio</source> + <translation>Audio</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="228"/> + <source>Audio device:</source> + <translation>Dispositivo:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="229"/> + <source>Sets the audio device for all sounds.</source> + <translation>Establece el dispositivo de audio.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="263"/> + <source>Music:</source> + <translation>Música:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="264"/> + <source>Sets the music's default volume.</source> + <translation>Establece el volumen predeterminado de la música.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="276"/> + <source>SFX:</source> + <translation></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="277"/> + <source>Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'.</source> + <translation>Establece el volumen predeterminado de SFX. Las interjecciones y los efectos de sonido reales cuentan como 'SFX'.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="290"/> + <source>Blips:</source> + <translation></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="291"/> + <source>Sets the volume of the blips, the talking sound effects.</source> + <translation>Establece el volumen de los blips, el sonido al hablar.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="309"/> + <source>Blip rate:</source> + <translation>Tasa de blips:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="310"/> + <source>Sets the delay between playing the blip sounds.</source> + <translation>Establece el retraso entre la reproducción de los sonidos blip.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="321"/> + <source>Blank blips:</source> + <translation>Blips en blanco:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="322"/> + <source>If true, the game will play a blip sound even when a space is 'being said'.</source> + <translation>Si está marcada, el juego reproducirá un sonido blip incluso cuando se 'dice' un espacio.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="334"/> + <source>Casing</source> + <translation>Caso</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="348"/> + <source>This server supports case alerts.</source> + <translation>Este servidor admite alertas de casos.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="350"/> + <source>This server does not support case alerts.</source> + <translation>Este servidor no admite alertas de casos.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="351"/> + <source>Pretty self-explanatory.</source> + <translation>Bastante autoexplicativo.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="358"/> + <source>Casing:</source> + <translation>Caso:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="359"/> + <source>If checked, you will get alerts about case announcements.</source> + <translation>Si está marcado, recibirá anuncios de casos.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="372"/> + <source>Defense:</source> + <translation>Defensa:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="373"/> + <source>If checked, you will get alerts about case announcements if a defense spot is open.</source> + <translation>Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de defensa abierto.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="386"/> + <source>Prosecution:</source> + <translation>Fiscal:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="387"/> + <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> + <translation>Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal abierto.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="400"/> + <source>Judge:</source> + <translation>Juez:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="401"/> + <source>If checked, you will get alerts about case announcements if the judge spot is open.</source> + <translation>Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está abierto.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="414"/> + <source>Juror:</source> + <translation>Jurado:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="415"/> + <source>If checked, you will get alerts about case announcements if a juror spot is open.</source> + <translation>Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado abierto.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="428"/> + <source>Stenographer:</source> + <translation>Taquígrafo:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="429"/> + <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> + <translation>Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo abierto.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="442"/> + <source>CM:</source> + <translation></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="443"/> + <source>If checked, you will appear amongst the potential CMs on the server.</source> + <translation>Si está marcado, aparecerá entre los posibles CM en el servidor.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="456"/> + <source>Hosting cases:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="457"/> + <source>If you're a CM, enter what cases you are willing to host.</source> + <translation>Si eres un CM, ingresa qué casos estás dispuesto a organizar.</translation> + </message> +</context> +<context> + <name>Courtroom</name> + <message> + <location filename="../../src/charselect.cpp" line="21"/> + <source>Password</source> + <translation>Contraseña</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="27"/> + <source>Spectator</source> + <translation>Espectador</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="30"/> + <location filename="../../src/courtroom.cpp" line="138"/> + <source>Search</source> + <translation>Buscar</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="35"/> + <source>Passworded</source> + <translation>Contraseña</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="39"/> + <source>Taken</source> + <translation>En uso</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="217"/> + <source>Generating chars: +%1/%2</source> + <translation>Generando personajes: +%1/%2</translation> + </message> + <message> + <source>Generating chars: +</source> + <translation type="obsolete">Generando personajes: +</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="116"/> + <source>Showname</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="120"/> + <source>Message</source> + <translation>Mensaje</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="130"/> + <source>Name</source> + <translation>Nombre</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="183"/> + <source>Pre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="186"/> + <source>Flip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="190"/> + <source>Guard</source> + <translation>Guardia</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="195"/> + <location filename="../../src/courtroom.cpp" line="608"/> + <source>Casing</source> + <translation>Caso</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="200"/> + <source>Shownames</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="203"/> + <source>No Interrupt</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="217"/> + <source>White</source> + <translation>Blanco</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="218"/> + <source>Green</source> + <translation>Verde</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="219"/> + <source>Red</source> + <translation>Rojo</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="220"/> + <source>Orange</source> + <translation>Naranja</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="221"/> + <source>Blue</source> + <translation>Azul</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="222"/> + <source>Yellow</source> + <translation>Amarillo</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="223"/> + <source>Rainbow</source> + <translation>Arcoíris</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="224"/> + <source>Pink</source> + <translation>Rosado</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="225"/> + <source>Cyan</source> + <translation>Cian</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="248"/> + <source>% offset</source> + <translation>% desplazamiento</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="566"/> + <source>Music</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="568"/> + <source>Sfx</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="570"/> + <source>Blips</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="573"/> + <source>Log limit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="596"/> + <source>Change character</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="599"/> + <source>Reload theme</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="602"/> + <source>Call mod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="605"/> + <source>Settings</source> + <translation>Ajustes</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="611"/> + <source>A/M</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="614"/> + <source>Preanim</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="692"/> + <source>Back to Lobby</source> + <translation>Volver al lobby</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2681"/> + <source>You were granted the Guard button.</source> + <translation>Te ha sido otorgado el botón Guardia.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2688"/> + <source>This does nothing, but there you go.</source> + <translation>Esto no hace nada, pero ahí lo tienes.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2695"/> + <source>You opened the settings menu.</source> + <translation>Abriste el menú de configuración.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2710"/> + <source>You will now pair up with </source> + <translation>Ahora te emparejarás con </translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2712"/> + <source> if they also choose your character in return.</source> + <translation> si ellos también eligen a tu personaje a cambio.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2718"/> + <source>You are no longer paired with anyone.</source> + <translation>Ya no estás emparejado con nadie.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2723"/> + <source>Are you sure you typed that well? The char ID could not be recognised.</source> + <translation>¿Estás seguro de que lo escribiste bien? El ID de personaje no pudo ser reconocido.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2739"/> + <source>You have set your offset to </source> + <translation>Ha configurado su desplazamiento en </translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2746"/> + <source>Your offset must be between -100% and 100%!</source> + <translation>¡Su desplazamiento debe estar entre -100% y 100%!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2751"/> + <source>That offset does not look like one.</source> + <translation>Ese desplazamiento no se parece a uno.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2757"/> + <source>You switched your music and area list.</source> + <translation>Cambiaste tu lista de música y área.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2764"/> + <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> + <translation>Ha habilitado forzosamente funciones que el servidor puede no admitir. Es posible que no pueda hablar IC, o peor, debido a esto.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2775"/> + <source>Your pre-animations interrupt again.</source> + <translation>Sus pre-animaciones interrumpen de nuevo.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2777"/> + <source>Your pre-animations will not interrupt text.</source> + <translation>Sus pre-animaciones no interrumpirán el texto.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2788"/> + <source>Couldn't open chatlog.txt to write into.</source> + <translation>No se pudo abrir chatlog.txt para escribir.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2801"/> + <source>The IC chatlog has been saved.</source> + <translation>El chat IC se ha guardado.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2813"/> + <source>You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there.</source> + <translation>¡No tienes una carpeta `base/cases /`! Ha sido creada para ti. Pero debido a que no existia la carpeta, tampoco habían casos guardados ahí.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2824"/> + <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1</source> + <translation>¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto. +Casos que puede cargar: %1</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2845"/> + <source>Case made by %1.</source> + <translation>Caso hecho por %1.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2851"/> + <source>Navigate to %1 for the CM doc.</source> + <translation>Navegue a %1 para el documento del CM.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2870"/> + <source>Your case "%1" was loaded!</source> + <translation>Su caso "%1" fue cargado!</translation> + </message> + <message> + <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: </source> + <translation type="obsolete">¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto. +Casos que puede cargar: </translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2832"/> + <source>Too many arguments to load a case! You only need one filename, without extension.</source> + <translation>¡Demasiados argumentos para cargar un caso! Solo necesita un nombre de archivo, sin extensión.</translation> + </message> + <message> + <source>Case made by </source> + <translation type="obsolete">Caso hecho por </translation> + </message> + <message> + <source>Navigate to </source> + <translation type="obsolete">Navegue a </translation> + </message> + <message> + <source> for the CM doc.</source> + <translation type="obsolete"> para el documento de CM.</translation> + </message> + <message> + <source>Your case "</source> + <translation type="obsolete">Su caso "</translation> + </message> + <message> + <source>" was loaded!</source> + <translation type="obsolete">" fue cargado!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2882"/> + <source>You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it.</source> + <translation>¡No tienes una carpeta `base/cases /`! Fue creada para ti.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2893"/> + <source>You need to give a filename to save (extension not needed) and the courtroom status!</source> + <translation>¡Debe dar un nombre de archivo para guardar (no se necesita la extensión) y el estado de la sala del tribunal!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2901"/> + <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> + <translatorcomment>why two exclamations, seems excesive.</translatorcomment> + <translation>¡Demasiados argumentos para salvar un caso! Solo necesita un nombre de archivo sin extensión y el estado de la sala del tribunal.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2923"/> + <source>Succesfully saved, edit doc and cmdoc link on the ini!</source> + <translation>¡Guardado con éxito, puede editar el doc y doc link en el archivo ini!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2951"/> + <source>Master</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="583"/> + <location filename="../../src/courtroom.cpp" line="2959"/> + <source>Server</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3422"/> + <source>Reason:</source> + <translation>Razón:</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3423"/> + <source>Call Moderator</source> + <translation>Llamar Moderador</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3431"/> + <location filename="../../src/courtroom.cpp" line="3434"/> + <source>Error</source> + <translation>Error</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3431"/> + <source>You must provide a reason.</source> + <translation>Debes proporcionar una razón.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3434"/> + <source>The message is too long.</source> + <translation>El mensaje es muy largo.</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="25"/> + <source>Choose...</source> + <translation>Elegir...</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="194"/> + <source>Images (*.png)</source> + <translation>Imágenes (* .png)</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="268"/> + <source>Add new evidence...</source> + <translation>Añadir nueva evidencia...</translation> + </message> +</context> +<context> + <name>Lobby</name> + <message> + <location filename="../../src/lobby.cpp" line="12"/> + <source>Attorney Online 2</source> + <translation>Attorney Online 2</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="29"/> + <source>Name</source> + <translation>Nombre</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="74"/> + <source>It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder?</source> + <translation>No parece que su cliente esté configurado correctamente. +¿Descargó todos los recursos correctamente desde tiny.cc/getao, incluida la gran carpeta 'base'?</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="104"/> + <source>Version: %1</source> + <translation>Versión: %1</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="147"/> + <source>Loading</source> + <translation>Cargando</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="151"/> + <source>Cancel</source> + <translation>Cancelar</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="270"/> + <source><h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> + <translation><h2>Attorney Online %1</h2>El simulador de drama de la sala del tribunal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https: //github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b> <br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Agradecimiento especial:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (diseño de interfaz de usuario), Draxirch (diseño de interfaz de usuario), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="376"/> + <source>Online: %1/%2</source> + <translation>En línea: %1/%2</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="114"/> + <location filename="../../src/lobby.cpp" line="316"/> + <source>Offline</source> + <translation>Fuera de línea</translation> + </message> +</context> +<context> + <name>debug_functions</name> + <message> + <location filename="../../src/debug_functions.cpp" line="10"/> + <source>Error: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/debug_functions.cpp" line="11"/> + <source>Error</source> + <translation type="unfinished">Error</translation> + </message> + <message> + <location filename="../../src/debug_functions.cpp" line="23"/> + <source>Notice</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/resource/translations/ao_jp.qm b/resource/translations/ao_jp.qm Binary files differnew file mode 100644 index 00000000..e4fb562a --- /dev/null +++ b/resource/translations/ao_jp.qm diff --git a/resource/translations/ao_jp.ts b/resource/translations/ao_jp.ts new file mode 100644 index 00000000..4f8153a6 --- /dev/null +++ b/resource/translations/ao_jp.ts @@ -0,0 +1,849 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ja_JP"> +<context> + <name>AOApplication</name> + <message> + <location filename="../../src/aoapplication.cpp" line="138"/> + <source>Disconnected from server.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aoapplication.cpp" line="163"/> + <source>Error connecting to master server. Will try again in %1 seconds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aoapplication.cpp" line="167"/> + <source>There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="106"/> + <source>Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="114"/> + <source>You have been exiled from AO. +Have a nice day.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="249"/> + <source>Attorney Online 2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="275"/> + <source>Loading</source> + <translation>ロード中</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="363"/> + <source>Loading evidence: +%1/%2</source> + <translation>証拠がロード中: %1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="395"/> + <location filename="../../src/packet_distribution.cpp" line="490"/> + <source>Loading music: +%1/%2</source> + <translation>音楽がロード中: %1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="467"/> + <source>Loading chars: +%1/%2</source> + <translation>キャラがロード中: %1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="642"/> + <source>You have been kicked from the server. +Reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="651"/> + <source>You have been banned from the server. +Reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="659"/> + <source>You are banned on this server. +Reason: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>AOCaseAnnouncerDialog</name> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="9"/> + <source>Case Announcer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="38"/> + <source>Case title:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="48"/> + <source>Defense needed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="50"/> + <source>Prosecution needed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="52"/> + <source>Judge needed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="54"/> + <source>Jurors needed</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="56"/> + <source>Stenographer needed</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>AOOptionsDialog</name> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="11"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="40"/> + <source>Gameplay</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="51"/> + <source>Theme:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="52"/> + <source>Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="81"/> + <source>Log goes downwards:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="82"/> + <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="94"/> + <source>Log length:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="95"/> + <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="113"/> + <source>Default username:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="114"/> + <source>Your OOC name will be automatically set to this value when you join a server.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="126"/> + <source>Custom shownames:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="127"/> + <source>Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="145"/> + <source>Backup MS:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="146"/> + <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="158"/> + <source>Discord:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="159"/> + <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="171"/> + <source>Language:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="172"/> + <source>Sets the language if you don't want to use your system language.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="186"/> + <source>Callwords</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="211"/> + <source><html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="217"/> + <source>Audio</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="228"/> + <source>Audio device:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="229"/> + <source>Sets the audio device for all sounds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="263"/> + <source>Music:</source> + <translation>音楽:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="264"/> + <source>Sets the music's default volume.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="276"/> + <source>SFX:</source> + <translation>効果音:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="277"/> + <source>Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="290"/> + <source>Blips:</source> + <translation>ブリップ:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="291"/> + <source>Sets the volume of the blips, the talking sound effects.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="309"/> + <source>Blip rate:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="310"/> + <source>Sets the delay between playing the blip sounds.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="321"/> + <source>Blank blips:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="322"/> + <source>If true, the game will play a blip sound even when a space is 'being said'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="334"/> + <source>Casing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="348"/> + <source>This server supports case alerts.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="350"/> + <source>This server does not support case alerts.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="351"/> + <source>Pretty self-explanatory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="358"/> + <source>Casing:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="359"/> + <source>If checked, you will get alerts about case announcements.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="372"/> + <source>Defense:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="373"/> + <source>If checked, you will get alerts about case announcements if a defense spot is open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="386"/> + <source>Prosecution:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="387"/> + <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="400"/> + <source>Judge:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="401"/> + <source>If checked, you will get alerts about case announcements if the judge spot is open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="414"/> + <source>Juror:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="415"/> + <source>If checked, you will get alerts about case announcements if a juror spot is open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="428"/> + <source>Stenographer:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="429"/> + <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="442"/> + <source>CM:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="443"/> + <source>If checked, you will appear amongst the potential CMs on the server.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="456"/> + <source>Hosting cases:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="457"/> + <source>If you're a CM, enter what cases you are willing to host.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Courtroom</name> + <message> + <location filename="../../src/charselect.cpp" line="21"/> + <source>Password</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="27"/> + <source>Spectator</source> + <translation>観客</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="30"/> + <location filename="../../src/courtroom.cpp" line="138"/> + <source>Search</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="35"/> + <source>Passworded</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="39"/> + <source>Taken</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="217"/> + <source>Generating chars: +%1/%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="116"/> + <source>Showname</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="120"/> + <source>Message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="130"/> + <source>Name</source> + <translation>名前</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="183"/> + <source>Pre</source> + <translation>前</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="186"/> + <source>Flip</source> + <translation>フリップ</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="190"/> + <source>Guard</source> + <translation>ガード</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="195"/> + <location filename="../../src/courtroom.cpp" line="608"/> + <source>Casing</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="200"/> + <source>Shownames</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="203"/> + <source>No Interrupt</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="217"/> + <source>White</source> + <translation>白</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="218"/> + <source>Green</source> + <translation>緑</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="219"/> + <source>Red</source> + <translation>赤</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="220"/> + <source>Orange</source> + <translation>オレンジ</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="221"/> + <source>Blue</source> + <translation>青</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="222"/> + <source>Yellow</source> + <translation>黄色</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2688"/> + <source>This does nothing, but there you go.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2824"/> + <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2845"/> + <source>Case made by %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2851"/> + <source>Navigate to %1 for the CM doc.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2870"/> + <source>Your case "%1" was loaded!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="583"/> + <location filename="../../src/courtroom.cpp" line="2959"/> + <source>Server</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="692"/> + <source>Back to Lobby</source> + <translation>ロビーに戻る</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="223"/> + <source>Rainbow</source> + <translation>虹</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="224"/> + <source>Pink</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="225"/> + <source>Cyan</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="248"/> + <source>% offset</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="566"/> + <source>Music</source> + <translation>音楽</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="568"/> + <source>Sfx</source> + <translation>効果音</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="570"/> + <source>Blips</source> + <translation>ブリップ</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="573"/> + <source>Log limit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="596"/> + <source>Change character</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="599"/> + <source>Reload theme</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="602"/> + <source>Call mod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="605"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="611"/> + <source>A/M</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="614"/> + <source>Preanim</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2681"/> + <source>You were granted the Guard button.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2695"/> + <source>You opened the settings menu.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2710"/> + <source>You will now pair up with </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2712"/> + <source> if they also choose your character in return.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2718"/> + <source>You are no longer paired with anyone.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2723"/> + <source>Are you sure you typed that well? The char ID could not be recognised.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2739"/> + <source>You have set your offset to </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2746"/> + <source>Your offset must be between -100% and 100%!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2751"/> + <source>That offset does not look like one.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2757"/> + <source>You switched your music and area list.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2764"/> + <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2775"/> + <source>Your pre-animations interrupt again.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2777"/> + <source>Your pre-animations will not interrupt text.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2788"/> + <source>Couldn't open chatlog.txt to write into.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2801"/> + <source>The IC chatlog has been saved.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2813"/> + <source>You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2832"/> + <source>Too many arguments to load a case! You only need one filename, without extension.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2882"/> + <source>You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2893"/> + <source>You need to give a filename to save (extension not needed) and the courtroom status!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2901"/> + <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2923"/> + <source>Succesfully saved, edit doc and cmdoc link on the ini!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2951"/> + <source>Master</source> + <translation>マスター</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3422"/> + <source>Reason:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3423"/> + <source>Call Moderator</source> + <translation>モデレーターを呼ぶ</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3431"/> + <location filename="../../src/courtroom.cpp" line="3434"/> + <source>Error</source> + <translation>エラー</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3431"/> + <source>You must provide a reason.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3434"/> + <source>The message is too long.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="25"/> + <source>Choose...</source> + <translation>選択...</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="194"/> + <source>Images (*.png)</source> + <translation>イメージ (*.png)</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="268"/> + <source>Add new evidence...</source> + <translation>新しい証拠を付け加える...</translation> + </message> +</context> +<context> + <name>Discord</name> + <message> + <source>Objection!</source> + <translation type="vanished">意義あり!</translation> + </message> + <message> + <source>In Lobby</source> + <translation type="vanished">ロビーでいる</translation> + </message> + <message> + <source>Idle</source> + <translation type="vanished">落ちている</translation> + </message> + <message> + <source>In a Server</source> + <translation type="vanished">サーバーでいます</translation> + </message> + <message> + <source>Spectating</source> + <translation type="vanished">観客している</translation> + </message> +</context> +<context> + <name>Lobby</name> + <message> + <location filename="../../src/lobby.cpp" line="12"/> + <source>Attorney Online 2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="29"/> + <source>Name</source> + <translation type="unfinished">名前</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="74"/> + <source>It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="104"/> + <source>Version: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="147"/> + <source>Loading</source> + <translation>ロード中</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="151"/> + <source>Cancel</source> + <translation>キャンセル</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="270"/> + <source><h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="376"/> + <source>Online: %1/%2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="114"/> + <location filename="../../src/lobby.cpp" line="316"/> + <source>Offline</source> + <translation>オフライン</translation> + </message> +</context> +<context> + <name>debug_functions</name> + <message> + <location filename="../../src/debug_functions.cpp" line="10"/> + <source>Error: %1</source> + <translation>エラー: %1</translation> + </message> + <message> + <location filename="../../src/debug_functions.cpp" line="11"/> + <source>Error</source> + <translation>エラー</translation> + </message> + <message> + <location filename="../../src/debug_functions.cpp" line="23"/> + <source>Notice</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/resource/translations/ao_ru.qm b/resource/translations/ao_ru.qm Binary files differnew file mode 100644 index 00000000..19bf0a95 --- /dev/null +++ b/resource/translations/ao_ru.qm diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts new file mode 100644 index 00000000..9714c9d5 --- /dev/null +++ b/resource/translations/ao_ru.ts @@ -0,0 +1,855 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="ru_RU"> +<context> + <name>AOApplication</name> + <message> + <location filename="../../src/aoapplication.cpp" line="138"/> + <source>Disconnected from server.</source> + <translation>Соединение с сервером прервано.</translation> + </message> + <message> + <location filename="../../src/aoapplication.cpp" line="163"/> + <source>Error connecting to master server. Will try again in %1 seconds.</source> + <translation>Ошибка соединения с главным сервером. Попытка пересоединения будет через %1 с.</translation> + </message> + <message> + <location filename="../../src/aoapplication.cpp" line="167"/> + <source>There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again.</source> + <translation>Произошла ошибка соединения с главным сервером. +Пожалуйста, проверьте ваши Интернет-соединение, настройки браундмауэра, и попробуйте перезайти.</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="106"/> + <source>Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update.</source> + <translation>Устаревшая версия! У вас установлена %1 +Проследуйте на сайт aceattorneyonline.com для обновления.</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="114"/> + <source>You have been exiled from AO. +Have a nice day.</source> + <translation>Из AO вас отправили в жизнь. +Хорошего дня.</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="249"/> + <source>Attorney Online 2</source> + <translation>Attorney Online 2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="275"/> + <source>Loading</source> + <translation>Загрузка</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="363"/> + <source>Loading evidence: +%1/%2</source> + <translation>Загрузка вещдоков: +%1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="395"/> + <location filename="../../src/packet_distribution.cpp" line="490"/> + <source>Loading music: +%1/%2</source> + <translation>Загрузка музыки: +%1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="467"/> + <source>Loading chars: +%1/%2</source> + <translation>Загрузка персонажей: +%1/%2</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="642"/> + <source>You have been kicked from the server. +Reason: %1</source> + <translation>Вас выпнули с сервера. +Причина: %1</translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="651"/> + <source>You have been banned from the server. +Reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/packet_distribution.cpp" line="659"/> + <source>You are banned on this server. +Reason: %1</source> + <translation>Вас отправили в баню. +Причина: %1</translation> + </message> + <message> + <source>You have been kicked from the server. +Reason: </source> + <translation type="vanished">Вас выпнули с сервера. +Причина: </translation> + </message> + <message> + <source>You are banned on this server. +Reason: </source> + <translation type="vanished">Вас отправили в баню. +Причина: </translation> + </message> +</context> +<context> + <name>AOCaseAnnouncerDialog</name> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="9"/> + <source>Case Announcer</source> + <translation>Материалы дела</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="38"/> + <source>Case title:</source> + <translation>Название:</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="48"/> + <source>Defense needed</source> + <translation>Сторона защиты</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="50"/> + <source>Prosecution needed</source> + <translation>Сторона обвинения</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="52"/> + <source>Judge needed</source> + <translation>Без судьи никак</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="54"/> + <source>Jurors needed</source> + <translation>Суд присяжных</translation> + </message> + <message> + <location filename="../../src/aocaseannouncerdialog.cpp" line="56"/> + <source>Stenographer needed</source> + <translation>Нужен стенографист?</translation> + </message> +</context> +<context> + <name>AOOptionsDialog</name> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="11"/> + <source>Settings</source> + <translation>Настройки</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="40"/> + <source>Gameplay</source> + <translation>Игра</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="51"/> + <source>Theme:</source> + <translation>Тема:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="52"/> + <source>Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it.</source> + <translation>Устанавливает внешний вид игры. Может понадобиться перезайти на сервер.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="81"/> + <source>Log goes downwards:</source> + <translation>Портянку вниз:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="82"/> + <source>If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked.</source> + <translation>Отметьте галочку, если хотите, чтобы сообщения в игровом чате отображались снизу, а не сверху.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="94"/> + <source>Log length:</source> + <translation>Длина игрового чата:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="95"/> + <source>The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'.</source> + <translation>Количество сообщений, максимально хранимых в игровом чате. Значение, равное 0 или меньше, будет расценено как снятие такого ограничения.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="113"/> + <source>Default username:</source> + <translation>Никнейм по умолчанию:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="114"/> + <source>Your OOC name will be automatically set to this value when you join a server.</source> + <translation>Псевдоним, используемый при соединении с сервером. В основном, его видно в чате сервера.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="126"/> + <source>Custom shownames:</source> + <translation>Произвольные имена:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="127"/> + <source>Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names.</source> + <translation>Отображать произвольные имена персонажей, установленные самими игроками.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="145"/> + <source>Backup MS:</source> + <translation>Запасной ГС:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="146"/> + <source>If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address.</source> + <translation>Отображать перечень серверов от главного сервера, указанного здесь, когда не удалось соединиться с первичным ГС.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="158"/> + <source>Discord:</source> + <translation>Discord:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="159"/> + <source>Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for.</source> + <translation>Показать в Discord сервер, на котором вы играете, каким персонажем управляете и время игры.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="171"/> + <source>Language:</source> + <translation>Язык:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="172"/> + <source>Sets the language if you don't want to use your system language.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="186"/> + <source>Callwords</source> + <translation>Позывные</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="211"/> + <source><html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html></source> + <translation><html><head/><body>Введите на отдельных строках свои позывные, при указании которых в сообщениях будет подан звуковой сигнал.</body></html></translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="217"/> + <source>Audio</source> + <translation>Аудио</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="228"/> + <source>Audio device:</source> + <translation>Устройство воспроизведения:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="229"/> + <source>Sets the audio device for all sounds.</source> + <translation>Куда вещать звук из игры.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="263"/> + <source>Music:</source> + <translation>Музыка:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="264"/> + <source>Sets the music's default volume.</source> + <translation>Громкость музыки по умолчанию.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="276"/> + <source>SFX:</source> + <translation>Звук. эффекты:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="277"/> + <source>Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'.</source> + <translation>Громкость звуковых эффектов по умолчанию.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="290"/> + <source>Blips:</source> + <translation>Сигналы:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="291"/> + <source>Sets the volume of the blips, the talking sound effects.</source> + <translation>Громкость сигналов, заменяющих голос, по умолчанию.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="309"/> + <source>Blip rate:</source> + <translation>Пер. сигналов:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="310"/> + <source>Sets the delay between playing the blip sounds.</source> + <translation>Период между сигналами, заменяющими голос, по умолчанию.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="321"/> + <source>Blank blips:</source> + <translation>Пустые сигналы:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="322"/> + <source>If true, the game will play a blip sound even when a space is 'being said'.</source> + <translation>Проигрывать сигналы даже для пробелов.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="334"/> + <source>Casing</source> + <translation>Заседание</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="348"/> + <source>This server supports case alerts.</source> + <translation>Этот сервер поддерживает объявление заседания.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="350"/> + <source>This server does not support case alerts.</source> + <translation>Этот сервер не поддерживает объявление заседания.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="351"/> + <source>Pretty self-explanatory.</source> + <translation>Весьма доходчиво.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="358"/> + <source>Casing:</source> + <translation>Новое дело:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="359"/> + <source>If checked, you will get alerts about case announcements.</source> + <translation>При заведении дела вы получите уведомление.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="372"/> + <source>Defense:</source> + <translation>Защита:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="373"/> + <source>If checked, you will get alerts about case announcements if a defense spot is open.</source> + <translation>При заведении дела, в котором нужна сторона защиты, вы получите уведомление.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="386"/> + <source>Prosecution:</source> + <translation>Обвинение:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="387"/> + <source>If checked, you will get alerts about case announcements if a prosecutor spot is open.</source> + <translation>При заведении дела, в котором нужна сторона обвинения, вы получите уведомление.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="400"/> + <source>Judge:</source> + <translation>Судья:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="401"/> + <source>If checked, you will get alerts about case announcements if the judge spot is open.</source> + <translation>При заведении дела, в котором нужен судья, вы получите уведомление.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="414"/> + <source>Juror:</source> + <translation>Присяжный:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="415"/> + <source>If checked, you will get alerts about case announcements if a juror spot is open.</source> + <translation>При заведении дела, в котором нужны присяжные заседатели, вы получите уведомление.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="428"/> + <source>Stenographer:</source> + <translation>Стенографист:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="429"/> + <source>If checked, you will get alerts about case announcements if a stenographer spot is open.</source> + <translation>При заведении дела, в котором нужна стенография, вы получите уведомление.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="442"/> + <source>CM:</source> + <translation>ПД:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="443"/> + <source>If checked, you will appear amongst the potential CMs on the server.</source> + <translation>Отметьте, если вы хотите состоять в числе производителей дел.</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="456"/> + <source>Hosting cases:</source> + <translation>ПД акт.:</translation> + </message> + <message> + <location filename="../../src/aooptionsdialog.cpp" line="457"/> + <source>If you're a CM, enter what cases you are willing to host.</source> + <translation>Будучи производителем дела (ПД), вы можете войти в зону и заниматься её оркестровкой.</translation> + </message> +</context> +<context> + <name>Courtroom</name> + <message> + <location filename="../../src/charselect.cpp" line="21"/> + <source>Password</source> + <translation>Пароль</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="27"/> + <source>Spectator</source> + <translation>Наблюдатель</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="30"/> + <location filename="../../src/courtroom.cpp" line="138"/> + <source>Search</source> + <translation>Поиск</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="35"/> + <source>Passworded</source> + <translation>Ограничен паролем</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="39"/> + <source>Taken</source> + <translation>Занят</translation> + </message> + <message> + <location filename="../../src/charselect.cpp" line="217"/> + <source>Generating chars: +%1/%2</source> + <translation>Генерация персонажей: +%1/%2</translation> + </message> + <message> + <source>Generating chars: +</source> + <translation type="vanished">Генерация персонажей: +</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="116"/> + <source>Showname</source> + <translation>Имя</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="120"/> + <source>Message</source> + <translation>Сообщение</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="130"/> + <source>Name</source> + <translation>Никнейм</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="183"/> + <source>Pre</source> + <translation>Пред.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="186"/> + <source>Flip</source> + <translation>Разв.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="190"/> + <source>Guard</source> + <translation>Охрана</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="195"/> + <location filename="../../src/courtroom.cpp" line="608"/> + <source>Casing</source> + <translation>Дело</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="200"/> + <source>Shownames</source> + <translation>Произв. имена</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="203"/> + <source>No Interrupt</source> + <translation>Говорить сразу</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="217"/> + <source>White</source> + <translation>Белый</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="218"/> + <source>Green</source> + <translation>Зелëный</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="219"/> + <source>Red</source> + <translation>Красный</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="220"/> + <source>Orange</source> + <translation>Оранжевый</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="221"/> + <source>Blue</source> + <translation>Синий</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="222"/> + <source>Yellow</source> + <translation>Жëлтый</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2688"/> + <source>This does nothing, but there you go.</source> + <translation>В общем-то, это ни на что не влияет...</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2824"/> + <source>You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1</source> + <translation>Укажите имя файла с делом (без расширения) для загрузки. Убедитесь, что оно расположено в папке `base/cases`. +Были найдены: %1</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2845"/> + <source>Case made by %1.</source> + <translation>Дело завëл игрок: %1.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2851"/> + <source>Navigate to %1 for the CM doc.</source> + <translation>Перейдите к %1 для получения материалов дела.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2870"/> + <source>Your case "%1" was loaded!</source> + <translation>Дело под кодовым названием "%1" готово!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="583"/> + <location filename="../../src/courtroom.cpp" line="2959"/> + <source>Server</source> + <translation>Сервер</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="692"/> + <source>Back to Lobby</source> + <translation>Назад в лобби</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="223"/> + <source>Rainbow</source> + <translation>Радужный</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="224"/> + <source>Pink</source> + <translation>Розовый</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="225"/> + <source>Cyan</source> + <translation>Голубой</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="248"/> + <source>% offset</source> + <translation>% сдвига</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="566"/> + <source>Music</source> + <translation>Музыка</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="568"/> + <source>Sfx</source> + <translation>Звук. эффекты</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="570"/> + <source>Blips</source> + <translation>Сигналы</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="573"/> + <source>Log limit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="596"/> + <source>Change character</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="599"/> + <source>Reload theme</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="602"/> + <source>Call mod</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="605"/> + <source>Settings</source> + <translation>Настройки</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="611"/> + <source>A/M</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="614"/> + <source>Preanim</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2681"/> + <source>You were granted the Guard button.</source> + <translation>Теперь у вас есть кнопка "Охрана".</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2695"/> + <source>You opened the settings menu.</source> + <translation>Вы открыли меню настроек.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2710"/> + <source>You will now pair up with </source> + <translation>Вы встанете парой с персонажем по имени </translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2712"/> + <source> if they also choose your character in return.</source> + <translation> (если он выберет вас в ответ).</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2718"/> + <source>You are no longer paired with anyone.</source> + <translation>Теперь вы не стоите в парах.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2723"/> + <source>Are you sure you typed that well? The char ID could not be recognised.</source> + <translation>Кажется, вам нужно поменять запрос: такой идентификатор персонажа не был найден.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2739"/> + <source>You have set your offset to </source> + <translation>Вы установили сдвиг персонажа на </translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2746"/> + <source>Your offset must be between -100% and 100%!</source> + <translation>Сдвиг персонажа должен быть между -100% и 100%!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2751"/> + <source>That offset does not look like one.</source> + <translation>Неверный сдвиг персонажа.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2757"/> + <source>You switched your music and area list.</source> + <translation>Вы переключили перечень зон и музыки.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2764"/> + <source>You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.</source> + <translation>Из-за того, что вы включили не поддержимаемые сервером возможности, он может не принять ваши сообщения.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2775"/> + <source>Your pre-animations interrupt again.</source> + <translation>Персонаж будет говорить только после анимации.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2777"/> + <source>Your pre-animations will not interrupt text.</source> + <translation>Персонаж будет говорить и во время анимации.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2788"/> + <source>Couldn't open chatlog.txt to write into.</source> + <translation>Не могу открыть `chatlog.txt` для записи лога.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2801"/> + <source>The IC chatlog has been saved.</source> + <translation>Лог игрового чата сохранëн.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2813"/> + <source>You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there.</source> + <translation>Файл с делом не найден. Если найдëте, положите его в папку `base/cases/`, которую мы для вас создали.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2832"/> + <source>Too many arguments to load a case! You only need one filename, without extension.</source> + <translation>Введите имя файла без расширения.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2882"/> + <source>You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it.</source> + <translation>Папка `base/cases/` отсутствует!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2893"/> + <source>You need to give a filename to save (extension not needed) and the courtroom status!</source> + <translation>Введите имя файла (без расширения) и предоставьте статус зоны.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2901"/> + <source>Too many arguments to save a case! You only need a filename without extension and the courtroom status!</source> + <translation>Убедитесь, что имя файла не содержит расширение.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2923"/> + <source>Succesfully saved, edit doc and cmdoc link on the ini!</source> + <translation>Сохранение прошло успешно!</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="2951"/> + <source>Master</source> + <translation>Мастер</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3422"/> + <source>Reason:</source> + <translation>Причина:</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3423"/> + <source>Call Moderator</source> + <translation>Позвать модератора</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3431"/> + <location filename="../../src/courtroom.cpp" line="3434"/> + <source>Error</source> + <translation>Ошибка</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3431"/> + <source>You must provide a reason.</source> + <translation>Укажите причину.</translation> + </message> + <message> + <location filename="../../src/courtroom.cpp" line="3434"/> + <source>The message is too long.</source> + <translation>Слишком длинный текст.</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="25"/> + <source>Choose...</source> + <translation>Выбрать...</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="194"/> + <source>Images (*.png)</source> + <translation>Изображения (*.png)</translation> + </message> + <message> + <location filename="../../src/evidence.cpp" line="268"/> + <source>Add new evidence...</source> + <translation>Добавить новую улику...</translation> + </message> +</context> +<context> + <name>Lobby</name> + <message> + <location filename="../../src/lobby.cpp" line="12"/> + <source>Attorney Online 2</source> + <translation>Attorney Online 2</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="29"/> + <source>Name</source> + <translation>Никнейм</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="74"/> + <source>It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder?</source> + <translation>Не похоже, что ваш клиент установлен правильно. +Скачали ли вы все ресурсы (tiny.cc/getao), включая огромную папку `base`?</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="104"/> + <source>Version: %1</source> + <translation>Версия: %1</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="147"/> + <source>Loading</source> + <translation>Загрузка</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="151"/> + <source>Cancel</source> + <translation>Отмена</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="270"/> + <source><h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</source> + <translation><h2>Attorney Online %1</h2>Симулятор судебной драмы<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основной разработкой занимались:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Особенная благодарность:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="376"/> + <source>Online: %1/%2</source> + <translation>Онлайн: %1/%2</translation> + </message> + <message> + <location filename="../../src/lobby.cpp" line="114"/> + <location filename="../../src/lobby.cpp" line="316"/> + <source>Offline</source> + <translation>Вне сети</translation> + </message> +</context> +<context> + <name>debug_functions</name> + <message> + <location filename="../../src/debug_functions.cpp" line="10"/> + <source>Error: %1</source> + <translation>Ошибка: %1</translation> + </message> + <message> + <location filename="../../src/debug_functions.cpp" line="11"/> + <source>Error</source> + <translation>Ошибка</translation> + </message> + <message> + <location filename="../../src/debug_functions.cpp" line="23"/> + <source>Notice</source> + <translation>На заметку</translation> + </message> +</context> +</TS> diff --git a/resources.qrc b/resources.qrc index bc9f322e..b8f62d1a 100644 --- a/resources.qrc +++ b/resources.qrc @@ -2,5 +2,10 @@ <qresource prefix="/"> <file>resource/fonts/Ace-Attorney.ttf</file> <file>resource/logo.png</file> + <file>resource/translations/ao_de.qm</file> + <file>resource/translations/ao_en.qm</file> + <file>resource/translations/ao_jp.qm</file> + <file>resource/translations/ao_es.qm</file> + <file>resource/translations/ao_ru.qm</file> </qresource> </RCC> diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 4ef1edd3..6213acd6 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -135,7 +135,7 @@ void AOApplication::server_disconnected() { if (courtroom_constructed) { - call_notice("Disconnected from server."); + call_notice(tr("Disconnected from server.")); construct_lobby(); destruct_courtroom(); } @@ -160,16 +160,15 @@ void AOApplication::ms_connect_finished(bool connected, bool will_retry) if (will_retry) { if (lobby_constructed) - w_lobby->append_error("Error connecting to master server. Will try again in " - + QString::number(net_manager->ms_reconnect_delay) + " seconds."); + w_lobby->append_error(tr("Error connecting to master server. Will try again in %1 seconds.").arg(QString::number(net_manager->ms_reconnect_delay))); } else { - call_error("There was an error connecting to the master server.\n" + call_error(tr("There was an error connecting to the master server.\n" "We deploy multiple master servers to mitigate any possible downtime, " "but the client appears to have exhausted all possible methods of finding " "and connecting to one.\n" - "Please check your Internet connection and firewall, and please try again."); + "Please check your Internet connection and firewall, and please try again.")); } } } diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index 4bfe9de2..b5cb46fe 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -167,6 +167,21 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_gameplay_form->setWidget(9, QFormLayout::FieldRole, ui_discord_cb); + ui_language_label = new QLabel(ui_form_layout_widget); + ui_language_label->setText(tr("Language:")); + ui_language_label->setToolTip(tr("Sets the language if you don't want to use your system language.")); + ui_gameplay_form->setWidget(10, QFormLayout::LabelRole, ui_language_label); + + ui_language_combobox = new QComboBox(ui_form_layout_widget); + ui_language_combobox->addItem(configini->value("language", " ").value<QString>() + " - Keep current setting"); + ui_language_combobox->addItem(" - Default"); + ui_language_combobox->addItem("en - English"); + ui_language_combobox->addItem("de - Deutsch"); + ui_language_combobox->addItem("es - Español"); + ui_language_combobox->addItem("jp - 日本語"); + ui_language_combobox->addItem("ru - Русский"); + ui_gameplay_form->setWidget(10, QFormLayout::FieldRole, ui_language_combobox); + // Here we start the callwords tab. ui_callwords_tab = new QWidget(); ui_settings_tabs->addTab(ui_callwords_tab, tr("Callwords")); @@ -466,6 +481,7 @@ void AOOptionsDialog::save_pressed() configini->setValue("show_custom_shownames", ui_showname_cb->isChecked()); configini->setValue("master", ui_ms_textbox->text()); configini->setValue("discord", ui_discord_cb->isChecked()); + configini->setValue("language", ui_language_combobox->currentText().left(2)); QFile* callwordsini = new QFile(ao_app->get_base_path() + "callwords.ini"); diff --git a/src/charselect.cpp b/src/charselect.cpp index 9d579a7b..0cfb7753 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -215,7 +215,7 @@ void Courtroom::character_loading_finished() int total_loading_size = ao_app->char_list_size * 2 + ao_app->evidence_list_size + ao_app->music_list_size; int loading_value = int(((ao_app->loaded_chars + ao_app->generated_chars + ao_app->loaded_music + ao_app->loaded_evidence) / static_cast<double>(total_loading_size)) * 100); ao_app->w_lobby->set_loading_value(loading_value); - ao_app->w_lobby->set_loading_text("Generating chars:\n" + QString::number(ao_app->generated_chars) + "/" + QString::number(ao_app->char_list_size)); + ao_app->w_lobby->set_loading_text(tr("Generating chars:\n%1/%2").arg(QString::number(ao_app->generated_chars)).arg(QString::number(ao_app->char_list_size))); } } diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 7907b543..54b1b2df 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -245,7 +245,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_pair_list = new QListWidget(this); ui_pair_offset_spinbox = new QSpinBox(this); ui_pair_offset_spinbox->setRange(-100,100); - ui_pair_offset_spinbox->setSuffix("% offset"); + ui_pair_offset_spinbox->setSuffix(tr("% offset")); ui_pair_button = new AOButton(this, ao_app); ui_evidence_button = new AOButton(this, ao_app); @@ -563,14 +563,14 @@ void Courtroom::set_widgets() ui_prosecution_bar->set_image("prosecutionbar" + QString::number(prosecution_bar_state) + ".png"); set_size_and_pos(ui_music_label, "music_label"); - ui_music_label->setText("Music"); + ui_music_label->setText(tr("Music")); set_size_and_pos(ui_sfx_label, "sfx_label"); - ui_sfx_label->setText("Sfx"); + ui_sfx_label->setText(tr("Sfx")); set_size_and_pos(ui_blip_label, "blip_label"); - ui_blip_label->setText("Blips"); + ui_blip_label->setText(tr("Blips")); set_size_and_pos(ui_log_limit_label, "log_limit_label"); - ui_log_limit_label->setText("Log limit"); + ui_log_limit_label->setText(tr("Log limit")); set_size_and_pos(ui_hold_it, "hold_it"); ui_hold_it->set_image("holdit.png"); @@ -580,7 +580,7 @@ void Courtroom::set_widgets() ui_take_that->set_image("takethat.png"); set_size_and_pos(ui_ooc_toggle, "ooc_toggle"); - ui_ooc_toggle->setText("Server"); + ui_ooc_toggle->setText(tr("Server")); set_size_and_pos(ui_witness_testimony, "witness_testimony"); ui_witness_testimony->set_image("witnesstestimony.png"); @@ -593,25 +593,25 @@ void Courtroom::set_widgets() ui_not_guilty->set_image("notguilty.png"); set_size_and_pos(ui_change_character, "change_character"); - ui_change_character->setText("Change character"); + ui_change_character->setText(tr("Change character")); set_size_and_pos(ui_reload_theme, "reload_theme"); - ui_reload_theme->setText("Reload theme"); + ui_reload_theme->setText(tr("Reload theme")); set_size_and_pos(ui_call_mod, "call_mod"); - ui_call_mod->setText("Call mod"); + ui_call_mod->setText(tr("Call mod")); set_size_and_pos(ui_settings, "settings"); - ui_settings->setText("Settings"); + ui_settings->setText(tr("Settings")); set_size_and_pos(ui_announce_casing, "casing_button"); - ui_announce_casing->setText("Casing"); + ui_announce_casing->setText(tr("Casing")); set_size_and_pos(ui_switch_area_music, "switch_area_music"); - ui_switch_area_music->setText("A/M"); + ui_switch_area_music->setText(tr("A/M")); set_size_and_pos(ui_pre, "pre"); - ui_pre->setText("Preanim"); + ui_pre->setText(tr("Preanim")); set_size_and_pos(ui_pre_non_interrupt, "pre_no_interrupt"); set_size_and_pos(ui_flip, "flip"); @@ -2685,7 +2685,7 @@ void Courtroom::on_ooc_return_pressed() //ui_text_color->addItem("Rainbow"); ui_ooc_chat_message->clear(); //rainbow_appended = true; - append_server_chatmessage("CLIENT", tr("This does nohing, but there you go."), "1"); + append_server_chatmessage("CLIENT", tr("This does nothing, but there you go."), "1"); return; } else if (ooc_message.startsWith("/settings")) @@ -2821,7 +2821,7 @@ void Courtroom::on_ooc_return_pressed() if (command.size() < 2) { - append_server_chatmessage("CLIENT", tr("You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.\nCases you can load: ") + caseslist.join(", "), "1"); + append_server_chatmessage("CLIENT", tr("You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.\nCases you can load: %1").arg(caseslist.join(", ")), "1"); ui_ooc_chat_message->clear(); return; } @@ -2842,13 +2842,13 @@ void Courtroom::on_ooc_return_pressed() QString casestatus = casefile.value("status", "").value<QString>(); if (!caseauth.isEmpty()) - append_server_chatmessage("CLIENT", tr("Case made by ") + caseauth + ".", "1"); + append_server_chatmessage("CLIENT", tr("Case made by %1.").arg(caseauth), "1"); if (!casedoc.isEmpty()) ao_app->send_server_packet(new AOPacket("CT#" + ui_ooc_chat_name->text() + "#/doc " + casedoc + "#%")); if (!casestatus.isEmpty()) ao_app->send_server_packet(new AOPacket("CT#" + ui_ooc_chat_name->text() + "#/status " + casestatus + "#%")); if (!cmdoc.isEmpty()) - append_server_chatmessage("CLIENT", tr("Navigate to ") + cmdoc + tr(" for the CM doc."), "1"); + append_server_chatmessage("CLIENT", tr("Navigate to %1 for the CM doc.").arg(cmdoc), "1"); for (int i = local_evidence_list.size() - 1; i >= 0; i--) { ao_app->send_server_packet(new AOPacket("DE#" + QString::number(i) + "#%")); @@ -2867,7 +2867,7 @@ void Courtroom::on_ooc_return_pressed() ao_app->send_server_packet(new AOPacket("PE", f_contents)); } - append_server_chatmessage("CLIENT", tr("Your case \"") + command[1] + tr("\" was loaded!"), "1"); + append_server_chatmessage("CLIENT", tr("Your case \"%1\" was loaded!").arg(command[1]), "1"); ui_ooc_chat_message->clear(); return; } diff --git a/src/debug_functions.cpp b/src/debug_functions.cpp index 77f2f35a..a790610d 100644 --- a/src/debug_functions.cpp +++ b/src/debug_functions.cpp @@ -1,11 +1,14 @@ +#include <QMessageBox> +#include <QCoreApplication> + #include "debug_functions.h" void call_error(QString p_message) { QMessageBox *msgBox = new QMessageBox; - msgBox->setText("Error: " + p_message); - msgBox->setWindowTitle("Error"); + msgBox->setText(QCoreApplication::translate("debug_functions", "Error: %1").arg(p_message)); + msgBox->setWindowTitle(QCoreApplication::translate("debug_functions", "Error")); //msgBox->setWindowModality(Qt::NonModal); @@ -17,7 +20,7 @@ void call_notice(QString p_message) QMessageBox *msgBox = new QMessageBox; msgBox->setText(p_message); - msgBox->setWindowTitle("Notice"); + msgBox->setWindowTitle(QCoreApplication::translate("debug_functions", "Notice")); //msgBox->setWindowModality(Qt::NonModal); diff --git a/src/evidence.cpp b/src/evidence.cpp index ebef7490..341bed0f 100644 --- a/src/evidence.cpp +++ b/src/evidence.cpp @@ -22,7 +22,7 @@ void Courtroom::construct_evidence() ui_evidence_delete = new AOButton(ui_evidence_overlay, ao_app); ui_evidence_image_name = new AOLineEdit(ui_evidence_overlay); ui_evidence_image_button = new AOButton(ui_evidence_overlay, ao_app); - ui_evidence_image_button->setText("Choose.."); + ui_evidence_image_button->setText(tr("Choose...")); ui_evidence_x = new AOButton(ui_evidence_overlay, ao_app); ui_evidence_description = new AOTextEdit(ui_evidence_overlay); @@ -265,7 +265,7 @@ void Courtroom::on_evidence_hover(int p_id, bool p_state) if (p_state) { if (final_id == local_evidence_list.size()) - ui_evidence_name->setText("Add new evidence..."); + ui_evidence_name->setText(tr("Add new evidence...")); else if (final_id < local_evidence_list.size()) ui_evidence_name->setText(local_evidence_list.at(final_id).name); } diff --git a/src/lobby.cpp b/src/lobby.cpp index 4a96e567..c95fd49c 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -9,7 +9,7 @@ Lobby::Lobby(AOApplication *p_ao_app) : QMainWindow() { ao_app = p_ao_app; - this->setWindowTitle("Attorney Online 2"); + this->setWindowTitle(tr("Attorney Online 2")); this->setWindowIcon(QIcon(":/logo.png")); ui_background = new AOImage(this, ao_app); @@ -26,7 +26,7 @@ Lobby::Lobby(AOApplication *p_ao_app) : QMainWindow() ui_chatbox = new AOTextArea(this); ui_chatbox->setOpenExternalLinks(true); ui_chatname = new QLineEdit(this); - ui_chatname->setPlaceholderText("Name"); + ui_chatname->setPlaceholderText(tr("Name")); ui_chatname->setText(ao_app->get_ooc_name()); ui_chatmessage = new QLineEdit(this); ui_loading_background = new AOImage(this, ao_app); @@ -71,9 +71,9 @@ void Lobby::set_widgets() qDebug() << "W: did not find lobby width or height in " << filename; // Most common symptom of bad config files and missing assets. - call_notice("It doesn't look like your client is set up correctly.\n" + call_notice(tr("It doesn't look like your client is set up correctly.\n" "Did you download all resources correctly from tiny.cc/getao, " - "including the large 'base' folder?"); + "including the large 'base' folder?")); this->resize(517, 666); } @@ -101,7 +101,7 @@ void Lobby::set_widgets() ui_connect->set_image("connect.png"); set_size_and_pos(ui_version, "version"); - ui_version->setText("Version: " + ao_app->get_version_string()); + ui_version->setText(tr("Version: %1").arg(ao_app->get_version_string())); set_size_and_pos(ui_about, "about"); ui_about->set_image("about.png"); @@ -111,7 +111,7 @@ void Lobby::set_widgets() "font: bold;"); set_size_and_pos(ui_player_count, "player_count"); - ui_player_count->setText("Offline"); + ui_player_count->setText(tr("Offline")); ui_player_count->setStyleSheet("font: bold;" "color: white;" "qproperty-alignment: AlignCenter;"); @@ -144,11 +144,11 @@ void Lobby::set_widgets() ui_loading_text->setFrameStyle(QFrame::NoFrame); ui_loading_text->setStyleSheet("background-color: rgba(0, 0, 0, 0);" "color: rgba(255, 128, 0, 255);"); - ui_loading_text->append("Loading"); + ui_loading_text->append(tr("Loading")); set_size_and_pos(ui_progress_bar, "progress_bar"); set_size_and_pos(ui_cancel, "cancel"); - ui_cancel->setText("Cancel"); + ui_cancel->setText(tr("Cancel")); ui_loading_background->hide(); @@ -313,7 +313,7 @@ void Lobby::on_server_list_clicked(QModelIndex p_model) ui_description->moveCursor(QTextCursor::Start); ui_description->ensureCursorVisible(); - ui_player_count->setText("Offline"); + ui_player_count->setText(tr("Offline")); ui_connect->setEnabled(false); @@ -373,7 +373,7 @@ void Lobby::append_error(QString f_message) void Lobby::set_player_count(int players_online, int max_players) { - QString f_string = "Online: " + QString::number(players_online) + "/" + QString::number(max_players); + QString f_string = tr("Online: %1/%2").arg(QString::number(players_online)).arg(QString::number(max_players)); ui_player_count->setText(f_string); } diff --git a/src/main.cpp b/src/main.cpp index 80ea93bb..6c7b1513 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,3 @@ - #include "aoapplication.h" #include "datatypes.h" @@ -7,6 +6,9 @@ #include "courtroom.h" #include <QPluginLoader> #include <QDebug> +#include <QTranslator> +#include <QLibraryInfo> + int main(int argc, char *argv[]) { #if QT_VERSION > QT_VERSION_CHECK(5, 6, 0) @@ -17,6 +19,23 @@ int main(int argc, char *argv[]) #endif AOApplication main_app(argc, argv); + + QSettings *configini = main_app.configini; + + QString p_language = configini->value("language", QLocale::system().name()).toString(); + if (p_language == " " || p_language == "") + p_language = QLocale::system().name(); + + QTranslator qtTranslator; + qtTranslator.load("qt_" + p_language, + QLibraryInfo::location(QLibraryInfo::TranslationsPath)); + main_app.installTranslator(&qtTranslator); + + QTranslator appTranslator; + qDebug() << ":/resource/translations/ao_" + p_language; + appTranslator.load("ao_" + p_language, ":/resource/translations/"); + main_app.installTranslator(&appTranslator); + main_app.construct_lobby(); main_app.net_manager->connect_to_master(); main_app.w_lobby->show(); diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 942c275d..b79ec309 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -103,15 +103,16 @@ void AOApplication::ms_packet_received(AOPacket *p_packet) } } - call_notice("Outdated version! Your version: " + get_version_string() - + "\nPlease go to aceattorneyonline.com to update."); + call_notice(tr("Outdated version! Your version: %1\n" + "Please go to aceattorneyonline.com to update.") + .arg(get_version_string())); destruct_courtroom(); destruct_lobby(); } else if (header == "DOOM") { - call_notice("You have been exiled from AO." - "Have a nice day."); + call_notice(tr("You have been exiled from AO.\n" + "Have a nice day.")); destruct_courtroom(); destruct_lobby(); } @@ -245,7 +246,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) courtroom_loaded = false; - QString window_title = "Attorney Online 2"; + QString window_title = tr("Attorney Online 2"); int selected_server = w_lobby->get_selected_server(); QString server_address = "", server_name = ""; @@ -271,7 +272,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->set_window_title(window_title); w_lobby->show_loading_overlay(); - w_lobby->set_loading_text("Loading"); + w_lobby->set_loading_text(tr("Loading")); w_lobby->set_loading_value(0); AOPacket *f_packet; @@ -359,7 +360,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) ++loaded_evidence; - w_lobby->set_loading_text("Loading evidence:\n" + QString::number(loaded_evidence) + "/" + QString::number(evidence_list_size)); + w_lobby->set_loading_text(tr("Loading evidence:\n%1/%2").arg(QString::number(loaded_evidence)).arg(QString::number(evidence_list_size))); w_courtroom->append_evidence(f_evi); @@ -391,7 +392,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) ++loaded_music; - w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); + w_lobby->set_loading_text(tr("Loading music:\n%1/%2").arg(QString::number(loaded_music)).arg(QString::number(music_list_size))); if (musics_time) { @@ -463,7 +464,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) ++loaded_chars; - w_lobby->set_loading_text("Loading chars:\n" + QString::number(loaded_chars) + "/" + QString::number(char_list_size)); + w_lobby->set_loading_text(tr("Loading chars:\n%1/%2").arg(QString::number(loaded_chars)).arg(QString::number(char_list_size))); w_courtroom->append_char(f_char); @@ -486,7 +487,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { ++loaded_music; - w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); + w_lobby->set_loading_text(tr("Loading music:\n%1/%2").arg(QString::number(loaded_music)).arg(QString::number(music_list_size))); if (musics_time) { @@ -638,7 +639,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { if (courtroom_constructed && f_contents.size() >= 1) { - call_notice("You have been kicked from the server.\nReason: " + f_contents.at(0)); + call_notice(tr("You have been kicked from the server.\nReason: %1").arg(f_contents.at(0))); construct_lobby(); destruct_courtroom(); } @@ -647,7 +648,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { if (courtroom_constructed && f_contents.size() >= 1) { - call_notice("You have been banned from the server.\nReason: " + f_contents.at(0)); + call_notice(tr("You have been banned from the server.\nReason: %1").arg(f_contents.at(0))); construct_lobby(); destruct_courtroom(); } @@ -655,7 +656,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else if (header == "BD") { - call_notice("You are banned on this server.\nReason: " + f_contents.at(0)); + call_notice(tr("You are banned on this server.\nReason: %1").arg(f_contents.at(0))); } else if (header == "ZZ") { |
