translation of all project, and new translation mechanism
This commit is contained in:
+31
-35
@@ -1,4 +1,5 @@
|
||||
#include "msaauthservice.h"
|
||||
#include "localization.h"
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QJsonArray>
|
||||
@@ -64,21 +65,19 @@ QString describeXstsError(const QJsonObject &response)
|
||||
const qint64 code = static_cast<qint64>(response.value(QStringLiteral("XErr")).toDouble());
|
||||
switch (code) {
|
||||
case 2148916233:
|
||||
return MsaAuthService::tr("К аккаунту Microsoft не привязан профиль Xbox. "
|
||||
"Создайте его на xbox.com и повторите вход.");
|
||||
return Loc::text("auth.msa.error.noXboxProfile");
|
||||
case 2148916235:
|
||||
return MsaAuthService::tr("Xbox Live недоступен в стране, указанной в аккаунте");
|
||||
return Loc::text("auth.msa.error.countryBlocked");
|
||||
case 2148916236:
|
||||
case 2148916237:
|
||||
return MsaAuthService::tr("Аккаунту нужна проверка возраста на xbox.com");
|
||||
return Loc::text("auth.msa.error.ageVerification");
|
||||
case 2148916238:
|
||||
return MsaAuthService::tr("Детский аккаунт: добавьте его в семейную группу "
|
||||
"Microsoft, иначе вход в Xbox Live невозможен");
|
||||
return Loc::text("auth.msa.error.childAccount");
|
||||
default:
|
||||
break;
|
||||
}
|
||||
const QString message = response.value(QStringLiteral("Message")).toString();
|
||||
return message.isEmpty() ? MsaAuthService::tr("Xbox Live отклонил вход (XErr %1)").arg(code)
|
||||
return message.isEmpty() ? Loc::text("auth.msa.error.xboxRejected").arg(code)
|
||||
: message;
|
||||
}
|
||||
|
||||
@@ -90,7 +89,7 @@ QString describeOauthError(const QJsonObject &response, int status)
|
||||
const QString error = response.value(QStringLiteral("error")).toString();
|
||||
if (!error.isEmpty())
|
||||
return error;
|
||||
return MsaAuthService::tr("Microsoft вернул код %1").arg(status);
|
||||
return Loc::text("auth.msa.error.microsoftCode").arg(status);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
@@ -216,7 +215,7 @@ void MsaAuthService::loginWithCode(const QString &code, Callback callback)
|
||||
{
|
||||
if (code.isEmpty()) {
|
||||
AuthResult result;
|
||||
result.error = tr("Microsoft не вернул код авторизации");
|
||||
result.error = Loc::text("auth.msa.error.noAuthCode");
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
@@ -227,7 +226,7 @@ void MsaAuthService::loginWithCode(const QString &code, Callback callback)
|
||||
form.addQueryItem(QStringLiteral("grant_type"), QStringLiteral("authorization_code"));
|
||||
form.addQueryItem(QStringLiteral("redirect_uri"), kRedirectUri);
|
||||
|
||||
emit progress(tr("Обмен кода Microsoft на токен…"));
|
||||
emit progress(Loc::text("auth.msa.progress.exchangingCode"));
|
||||
exchangeToken(form.toString(QUrl::FullyEncoded).toUtf8(), std::move(callback));
|
||||
}
|
||||
|
||||
@@ -235,7 +234,7 @@ void MsaAuthService::loginWithRefreshToken(const QString &refreshToken, Callback
|
||||
{
|
||||
if (refreshToken.isEmpty()) {
|
||||
AuthResult result;
|
||||
result.error = tr("Профиль не подключён к аккаунту Microsoft");
|
||||
result.error = Loc::text("auth.msa.error.profileNotLinked");
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
@@ -247,7 +246,7 @@ void MsaAuthService::loginWithRefreshToken(const QString &refreshToken, Callback
|
||||
form.addQueryItem(QStringLiteral("redirect_uri"), kRedirectUri);
|
||||
form.addQueryItem(QStringLiteral("scope"), kScope);
|
||||
|
||||
emit progress(tr("Обновление сессии Microsoft…"));
|
||||
emit progress(Loc::text("auth.msa.progress.refreshingSession"));
|
||||
exchangeToken(form.toString(QUrl::FullyEncoded).toUtf8(), std::move(callback));
|
||||
}
|
||||
|
||||
@@ -257,7 +256,7 @@ void MsaAuthService::exchangeToken(const QByteArray &form, Callback callback)
|
||||
[this, callback](int status, const QJsonObject &response, const QString &transportError) {
|
||||
if (!transportError.isEmpty()) {
|
||||
AuthResult result;
|
||||
result.error = tr("Нет связи с сервером Microsoft: %1").arg(transportError);
|
||||
result.error = Loc::text("auth.msa.error.microsoftUnreachable").arg(transportError);
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
@@ -274,7 +273,7 @@ void MsaAuthService::exchangeToken(const QByteArray &form, Callback callback)
|
||||
const QString refreshToken = response.value(QStringLiteral("refresh_token")).toString();
|
||||
if (accessToken.isEmpty()) {
|
||||
AuthResult result;
|
||||
result.error = tr("Microsoft не вернул токен доступа");
|
||||
result.error = Loc::text("auth.msa.error.noAccessToken");
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
@@ -286,7 +285,7 @@ void MsaAuthService::authenticateXbox(const QString µsoftToken,
|
||||
const QString &refreshToken,
|
||||
Callback callback)
|
||||
{
|
||||
emit progress(tr("Вход в Xbox Live…"));
|
||||
emit progress(Loc::text("auth.msa.progress.xboxSignIn"));
|
||||
|
||||
QJsonObject properties{{QStringLiteral("AuthMethod"), QStringLiteral("RPS")},
|
||||
{QStringLiteral("SiteName"), QStringLiteral("user.auth.xboxlive.com")},
|
||||
@@ -300,19 +299,19 @@ void MsaAuthService::authenticateXbox(const QString µsoftToken,
|
||||
const QString &transportError) {
|
||||
AuthResult result;
|
||||
if (!transportError.isEmpty()) {
|
||||
result.error = tr("Нет связи с Xbox Live: %1").arg(transportError);
|
||||
result.error = Loc::text("auth.msa.error.xboxUnreachable").arg(transportError);
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
if (status != 200) {
|
||||
result.error = tr("Xbox Live отклонил токен Microsoft (код %1)").arg(status);
|
||||
result.error = Loc::text("auth.msa.error.xboxTokenRejected").arg(status);
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
|
||||
const QString token = response.value(QStringLiteral("Token")).toString();
|
||||
if (token.isEmpty()) {
|
||||
result.error = tr("Xbox Live не вернул токен");
|
||||
result.error = Loc::text("auth.msa.error.xboxNoToken");
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
@@ -324,7 +323,7 @@ void MsaAuthService::authorizeXsts(const QString &xblToken,
|
||||
const QString &refreshToken,
|
||||
Callback callback)
|
||||
{
|
||||
emit progress(tr("Проверка прав XSTS…"));
|
||||
emit progress(Loc::text("auth.msa.progress.xsts"));
|
||||
|
||||
const QJsonObject properties{{QStringLiteral("SandboxId"), QStringLiteral("RETAIL")},
|
||||
{QStringLiteral("UserTokens"), QJsonArray{xblToken}}};
|
||||
@@ -338,7 +337,7 @@ void MsaAuthService::authorizeXsts(const QString &xblToken,
|
||||
const QString &transportError) {
|
||||
AuthResult result;
|
||||
if (!transportError.isEmpty()) {
|
||||
result.error = tr("Нет связи с сервером XSTS: %1").arg(transportError);
|
||||
result.error = Loc::text("auth.msa.error.xstsUnreachable").arg(transportError);
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
@@ -348,7 +347,7 @@ void MsaAuthService::authorizeXsts(const QString &xblToken,
|
||||
return;
|
||||
}
|
||||
if (status != 200) {
|
||||
result.error = tr("XSTS отклонил запрос (код %1)").arg(status);
|
||||
result.error = Loc::text("auth.msa.error.xstsRejected").arg(status);
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
@@ -357,7 +356,7 @@ void MsaAuthService::authorizeXsts(const QString &xblToken,
|
||||
const QJsonObject claim = displayClaim(response);
|
||||
const QString userHash = claim.value(QStringLiteral("uhs")).toString();
|
||||
if (token.isEmpty() || userHash.isEmpty()) {
|
||||
result.error = tr("XSTS не вернул данные пользователя");
|
||||
result.error = Loc::text("auth.msa.error.xstsNoUser");
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
@@ -372,7 +371,7 @@ void MsaAuthService::loginWithXbox(const QString &userHash,
|
||||
const QString &refreshToken,
|
||||
Callback callback)
|
||||
{
|
||||
emit progress(tr("Авторизация в Minecraft Services…"));
|
||||
emit progress(Loc::text("auth.msa.progress.minecraftServices"));
|
||||
|
||||
const QJsonObject body{{QStringLiteral("identityToken"),
|
||||
QStringLiteral("XBL3.0 x=%1;%2").arg(userHash, xstsToken)}};
|
||||
@@ -382,19 +381,19 @@ void MsaAuthService::loginWithXbox(const QString &userHash,
|
||||
const QString &transportError) {
|
||||
AuthResult result;
|
||||
if (!transportError.isEmpty()) {
|
||||
result.error = tr("Нет связи с api.minecraftservices.com: %1").arg(transportError);
|
||||
result.error = Loc::text("auth.msa.error.servicesUnreachable").arg(transportError);
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
if (status != 200) {
|
||||
result.error = tr("Minecraft Services отклонили вход (код %1)").arg(status);
|
||||
result.error = Loc::text("auth.msa.error.servicesRejected").arg(status);
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
|
||||
result.accessToken = response.value(QStringLiteral("access_token")).toString();
|
||||
if (result.accessToken.isEmpty()) {
|
||||
result.error = tr("Minecraft Services не вернули токен доступа");
|
||||
result.error = Loc::text("auth.msa.error.servicesNoToken");
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
@@ -411,7 +410,7 @@ void MsaAuthService::loginWithXbox(const QString &userHash,
|
||||
|
||||
void MsaAuthService::checkLicense(AuthResult result, Callback callback)
|
||||
{
|
||||
emit progress(tr("Проверка лицензии Minecraft…"));
|
||||
emit progress(Loc::text("auth.msa.progress.checkingLicence"));
|
||||
|
||||
getJson(QUrl(kEntitlementsUrl), result.accessToken,
|
||||
[this, result, callback](int status, const QJsonObject &response, const QString &) {
|
||||
@@ -430,7 +429,7 @@ void MsaAuthService::fetchProfile(AuthResult result, bool storeEntitlement, Call
|
||||
[result, storeEntitlement, callback](int status, const QJsonObject &response,
|
||||
const QString &transportError) mutable {
|
||||
if (!transportError.isEmpty()) {
|
||||
result.error = MsaAuthService::tr("Нет связи с api.minecraftservices.com: %1")
|
||||
result.error = Loc::text("auth.msa.error.servicesUnreachable")
|
||||
.arg(transportError);
|
||||
callback(result);
|
||||
return;
|
||||
@@ -442,17 +441,14 @@ void MsaAuthService::fetchProfile(AuthResult result, bool storeEntitlement, Call
|
||||
result.licenseMissing = true;
|
||||
result.error =
|
||||
storeEntitlement
|
||||
? MsaAuthService::tr("На аккаунте Microsoft есть покупка, но игровой "
|
||||
"профиль не создан. Зайдите один раз в "
|
||||
"официальный лаунчер и выберите ник.")
|
||||
: MsaAuthService::tr("На этом аккаунте Microsoft нет копии "
|
||||
"Minecraft: Java Edition");
|
||||
? Loc::text("auth.msa.error.noProfileYet")
|
||||
: Loc::text("auth.msa.error.noLicence");
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
if (status != 200) {
|
||||
result.error =
|
||||
MsaAuthService::tr("Не удалось получить профиль Minecraft (код %1)").arg(status);
|
||||
Loc::text("auth.msa.error.profileFetchFailed").arg(status);
|
||||
callback(result);
|
||||
return;
|
||||
}
|
||||
@@ -462,7 +458,7 @@ void MsaAuthService::fetchProfile(AuthResult result, bool storeEntitlement, Call
|
||||
result.ok = !result.playerName.isEmpty() && !result.uuid.isEmpty();
|
||||
if (!result.ok) {
|
||||
result.licenseMissing = true;
|
||||
result.error = MsaAuthService::tr("Minecraft Services не вернули игровой профиль");
|
||||
result.error = Loc::text("auth.msa.error.servicesNoProfile");
|
||||
}
|
||||
callback(result);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user