Compare commits

..

16 Commits

Author SHA1 Message Date
Łukasz Domeradzki
92d5b99e36 Merge pull request #446 from JustArchi/l10n
New Crowdin translations
2017-01-31 09:29:02 +01:00
JustArchi
a61a70c27e Misc 2017-01-31 09:08:53 +01:00
JustArchi
b148c41147 Another portion of pointless fixes for network issue debugging 2017-01-31 09:04:40 +01:00
Łukasz Domeradzki
25a5f76bac Translated 2017-01-31 04:52:39 +01:00
Łukasz Domeradzki
618cdb0fd1 Translated 2017-01-31 04:43:05 +01:00
Łukasz Domeradzki
cbfe1623e1 Translated 2017-01-31 04:32:44 +01:00
Łukasz Domeradzki
fe6ac73095 Translated 2017-01-31 04:22:34 +01:00
Łukasz Domeradzki
d559dc1fa2 Approved. Step name: Proofread 2017-01-31 04:22:29 +01:00
Łukasz Domeradzki
1ad7ff008d Translated 2017-01-31 04:12:51 +01:00
Łukasz Domeradzki
4bce3d4b19 Translated 2017-01-31 04:01:58 +01:00
Łukasz Domeradzki
5570a00a29 Translated 2017-01-31 03:52:15 +01:00
Łukasz Domeradzki
0f6546d56b Translated 2017-01-31 03:42:19 +01:00
Łukasz Domeradzki
3662a0b3de Translated 2017-01-31 03:33:00 +01:00
Łukasz Domeradzki
8cd6ae4b43 Translated 2017-01-31 03:32:54 +01:00
JustArchi
d183ec567a Bump 2017-01-31 03:30:54 +01:00
Łukasz Domeradzki
793c844416 Translated 2017-01-31 03:22:27 +01:00
6 changed files with 112 additions and 95 deletions

View File

@@ -184,6 +184,7 @@ namespace ArchiSteamFarm {
CallbackManager.Subscribe<SteamApps.FreeLicenseCallback>(OnFreeLicense);
CallbackManager.Subscribe<SteamApps.GuestPassListCallback>(OnGuestPassList);
CallbackManager.Subscribe<SteamApps.LicenseListCallback>(OnLicenseList);
CallbackManager.Subscribe<SteamApps.PICSProductInfoCallback>(OnPICSProductInfo);
SteamFriends = SteamClient.GetHandler<SteamFriends>();
CallbackManager.Subscribe<SteamFriends.ChatInviteCallback>(OnChatInvite);
@@ -770,11 +771,15 @@ namespace ArchiSteamFarm {
TimeSpan timeSpan = TimeSpan.FromMilliseconds(CallbackSleep);
while (KeepRunning || SteamClient.IsConnected) {
if (!CallbackSemaphore.Wait(0)) {
if (Debugging.IsUserDebugging) {
ArchiLogger.LogGenericDebug(string.Format(Strings.WarningFailedWithError, nameof(CallbackSemaphore)));
}
return;
}
try {
CallbackManager.RunWaitCallbacks(timeSpan);
CallbackManager.RunWaitAllCallbacks(timeSpan);
} catch (Exception e) {
ArchiLogger.LogGenericException(e);
} finally {
@@ -811,12 +816,16 @@ namespace ArchiSteamFarm {
HeartBeatFailures = 0;
Statistics?.OnHeartBeat().Forget();
} catch {
} catch (Exception e) {
if (Debugging.IsUserDebugging) {
ArchiLogger.LogGenericDebugException(e);
}
if (!KeepRunning || !IsConnectedAndLoggedOn || (HeartBeatFailures == byte.MaxValue)) {
return;
}
if (++HeartBeatFailures > (byte) Math.Ceiling(Program.GlobalConfig.ConnectionTimeout / 10.0)) {
if (++HeartBeatFailures >= (byte) Math.Ceiling(Program.GlobalConfig.ConnectionTimeout / 4.0)) {
HeartBeatFailures = byte.MaxValue;
ArchiLogger.LogGenericWarning(Strings.BotConnectionLost);
Connect(true).Forget();
@@ -1541,6 +1550,12 @@ namespace ArchiSteamFarm {
}
}
private void OnPICSProductInfo(SteamApps.PICSProductInfoCallback callback) {
if (callback == null) {
ArchiLogger.LogNullError(nameof(callback));
}
}
private void OnPlayingSessionState(ArchiHandler.PlayingSessionStateCallback callback) {
if (callback == null) {
ArchiLogger.LogNullError(nameof(callback));

View File

@@ -35,6 +35,8 @@ namespace ArchiSteamFarm {
internal static readonly bool IsDebugBuild = false;
#endif
internal static bool IsUserDebugging => IsDebugBuild || Program.GlobalConfig.Debug;
internal sealed class DebugListener : IDebugListener {
public void WriteLine(string category, string msg) {
if (string.IsNullOrEmpty(category) && string.IsNullOrEmpty(msg)) {

View File

@@ -134,7 +134,7 @@
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorEarlyFatalExceptionInfo" xml:space="preserve">
<value>ASF V{0} foi executado com uma exceção fatal antes mesmo que o módulo de registro fosse inicializado!</value>
<value>ASF V{0} encontrou uma exceção fatal antes mesmo que o módulo de registro fosse inicializado!</value>
<comment>{0} will be replaced by version number</comment>
</data>
<data name="ErrorEarlyFatalExceptionPrint" xml:space="preserve">
@@ -151,7 +151,7 @@ StackTrace:
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>A configuração global não pode ser carregada, por favor, certifique-se que {0} existe e é válido! Caso estiver com dúvidas, siga o guia de configuração na Wiki.</value>
<value>A configuração global não pôde ser carregada, confirme que {0} existe e é válido! Caso esteja com dúvidas, siga o guia de configuração na Wiki.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
@@ -173,7 +173,7 @@ StackTrace:
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Não foi possível remover o ASF binário antigo, por favor, remova o {0} manualmente para que a função de atualização funcione!</value>
<value>Não foi possível remover o binário do ASF antigo, remova {0} manualmente para que a função de atualização funcione!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
@@ -184,7 +184,7 @@ StackTrace:
<value>Não foi possível verificar a última versão!</value>
</data>
<data name="ErrorUpdateNoAssetForThisBinary" xml:space="preserve">
<value>Não foi possível prosseguir com a atualização pois não existe nenhum recurso associado com o atual binário executado! Por favor certifique-se que seu ASF binário está nomeado corretamente!</value>
<value>Não foi possível prosseguir com a atualização pois não existe nenhum arquivo associado com o binário executado! Por favor, confirme que o binário do ASF está nomeado corretamente!</value>
</data>
<data name="ErrorUpdateNoAssets" xml:space="preserve">
<value>Não foi possível prosseguir com a atualização pois esta versão não inclui nenhum recurso!</value>
@@ -213,7 +213,7 @@ StackTrace:
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="LoggingIn" xml:space="preserve">
<value>Iniciando seção em {0}...</value>
<value>Iniciando sessão em {0}...</value>
<comment>{0} will be replaced by service's name</comment>
</data>
<data name="NoBotsAreRunning" xml:space="preserve">
@@ -230,18 +230,18 @@ StackTrace:
<value>Reiniciando...</value>
</data>
<data name="WarningRuntimeUnsupported" xml:space="preserve">
<value>ASF detectou uma versão do runtime sem suporte, o programa pode NÃO funcionar corretamente no ambiente atual. Você está executando sem suporte por sua conta e risco!</value>
<value>ASF detectou uma versão do runtime que não é suportada, o programa pode NÃO funcionar corretamente no ambiente atual. Você está executando sem suporte por sua conta e risco!</value>
</data>
<data name="RuntimeVersionComparison" xml:space="preserve">
<value>Versão necessária: {0} | Versão encontrada: {1}</value>
<comment>{0} will be replaced by required version, {1} will be replaced by current version</comment>
</data>
<data name="RuntimeVersionOK" xml:space="preserve">
<value>Sua versão do {0} runtime está OK.</value>
<value>A versão do runtime {0} está OK.</value>
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
</data>
<data name="WarningRuntimeVersionTooOld" xml:space="preserve">
<value>Sua versão do {0} runtime é muito antiga!</value>
<value>A versão do runtime {0} é muito antiga!</value>
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
</data>
<data name="Starting" xml:space="preserve">
@@ -286,16 +286,16 @@ StackTrace:
<value>Desbloqueando modo família...</value>
</data>
<data name="UpdateCheckingNewVersion" xml:space="preserve">
<value>Verificando por nova versão...</value>
<value>Verificando se há atualizações...</value>
</data>
<data name="UpdateDownloadingNewVersion" xml:space="preserve">
<value>Baixando a nova versão... Enquanto aguarda, considere fazer uma doação se você aprecia o trabalho que está sendo feito! :)</value>
<value>Baixando nova versão... Enquanto aguarda, considere fazer uma doação caso aprecie o trabalho que está sendo feito! :)</value>
</data>
<data name="UpdateFinished" xml:space="preserve">
<value>Processo de atualização finalizado!</value>
</data>
<data name="UpdateNewVersionAvailable" xml:space="preserve">
<value>Uma nova versão do ASF está disponível! Considere atualizar!</value>
<value>Nova versão do ASF disponível! Considere atualizar!</value>
</data>
<data name="UpdateVersionInfo" xml:space="preserve">
<value>Versão local: {0} | Versão remota: {1}</value>
@@ -306,23 +306,23 @@ StackTrace:
<comment>{0} will be replaced by bot's name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>&lt;{0}&gt; Insira seu código 2FA de seu autentificador do aplicativo móvel do Steam: </value>
<value>&lt;{0}&gt; Insira o código atual gerado pelo autenticador móvel do Steam: </value>
<comment>{0} will be replaced by bot's name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>&lt;{0}&gt; Insira seu código de autorização do SteamGuard que foi enviado para seu e-mail: </value>
<value>&lt;{0}&gt; Insira o código do Steam Guard enviado ao seu e-mail: </value>
<comment>{0} will be replaced by bot's name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>&lt;{0}&gt; Insira seu usuário do Steam: </value>
<value>&lt;{0}&gt; Insira o seu usuário do Steam: </value>
<comment>{0} will be replaced by bot's name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>&lt;{0}&gt; Insira seu PIN do Steam modo família: </value>
<value>&lt;{0}&gt; Insira o seu código do modo família: </value>
<comment>{0} will be replaced by bot's name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>&lt;{0}&gt; Insira sua senha do Steam: </value>
<value>&lt;{0}&gt; Insira a sua senha do Steam: </value>
<comment>{0} will be replaced by bot's name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputUnknown" xml:space="preserve">
@@ -330,7 +330,7 @@ StackTrace:
<comment>{0} will be replaced by bot's name, {1} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputWCFHost" xml:space="preserve">
<value>&lt;{0}&gt; Insira seu serviço WCF: </value>
<value>&lt;{0}&gt; Insira o seu host WCF: </value>
<comment>{0} will be replaced by bot's name. Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
@@ -342,7 +342,7 @@ StackTrace:
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="WarningWCFIgnoringCommand" xml:space="preserve">
<value>Ignorando o comando WCF pois o --client não foi especificado: {0}</value>
<value>Ignorando o comando do WCF pois --client não foi especificado: {0}</value>
<comment>{0} will be replaced by WCF command</comment>
</data>
<data name="ErrorWCFAddressAccessDeniedException" xml:space="preserve">
@@ -371,26 +371,26 @@ StackTrace:
<value>Este bot já está desligado!</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Não foi possível achar nenhum bot chamado {0}!</value>
<value>Não foi possível encontrar nenhum bot chamado {0}!</value>
<comment>{0} will be replaced by bot's name</comment>
</data>
<data name="BotsStatusOverview" xml:space="preserve">
<value>Existe {0}/{1} bots em execução, no total de {2} jogos ({3} cartas) restantes para receber.</value>
<value> {0}/{1} bots em execução, com um total de {2} jogo(s) ({3} cartas) restante(s) para coletar.</value>
<comment>{0} will be replaced by number of active bots, {1} will be replaced by total number of bots, {2} will be replaced by total number of games left to idle, {3} will be replaced by total number of cards left to idle</comment>
</data>
<data name="BotStatusIdling" xml:space="preserve">
<value>Bot {0} está executando o jogo: {1} ({2}, {3} carta restante) no total de {4} jogos ({5} cartas) restante para receber (~{6} restando).</value>
<value>Bot {0} está executando o jogo: {1} ({2}, {3} carta(s) restante(s)) de um total de {4} jogo(s) ({5} cartas) restante(s) para a coleta (~{6} restante(s)).</value>
<comment>{0} will be replaced by bot's name, {1} will be replaced by game's appID (number), {2} will be replaced by game's name, {3} will be replaced by number of cards left to idle, {4} will be replaced by total number of games to idle, {5} will be replaced by total number of cards to idle, {6} will be replaced by translated TimeSpan string built from TimeSpan* translation parts</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
<value>Bot {0} está executando os jogos: {1} no total de {2} jogos ({3} cartas) restante para executar (~{4} restando).</value>
<value>Bot {0} está executando os jogos: {1} de um total de {2} jogo(s) ({3} cartas) restante(s) para coletar (~{4} restante(s)).</value>
<comment>{0} will be replaced by bot's name, {1} will be replaced by list of the games (appIDs, numbers), {2} will be replaced by total number of games to idle, {3} will be replaced by total number of cards to idle, {4} will be replaced by translated TimeSpan string built from TimeSpan* translation parts</comment>
</data>
<data name="CheckingFirstBadgePage" xml:space="preserve">
<value>Verificando primeira página de insígnias...</value>
</data>
<data name="CheckingOtherBadgePages" xml:space="preserve">
<value>Verificando outras páginas de insignias...</value>
<value>Verificando outras páginas de insígnias...</value>
</data>
<data name="ChosenFarmingAlgorithm" xml:space="preserve">
<value>Algoritmo escolhido para a coleta de cartas: {0}</value>
@@ -400,14 +400,14 @@ StackTrace:
<value>Pronto!</value>
</data>
<data name="GamesToIdle" xml:space="preserve">
<value>ASF contém um total de {0} jogos ({1} cartas) restantes para coletar (faltam ~{2})...</value>
<value>Temos um total de {0} jogo(s) ({1} cartas) para a coleta (~{2} restante(s))...</value>
<comment>{0} will be replaced by number of games, {1} will be replaced by number of cards, {2} will be replaced by translated TimeSpan string built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinished" xml:space="preserve">
<value>Coleta de cartas finalizada!</value>
</data>
<data name="IdlingFinishedForGame" xml:space="preserve">
<value>Finalizado o processo de receber cartas: {0} ({1}) após {2} jogados!</value>
<value>Coleta de cartas finalizada: {0} ({1}) após {2} de jogo!</value>
<comment>{0} will be replaced by game's appID (number), {1} will be replaced by game's name, {2} will be replaced by translated TimeSpan string built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinishedForGames" xml:space="preserve">
@@ -415,11 +415,11 @@ StackTrace:
<comment>{0} will be replaced by list of the games (appIDs, numbers), separated by a comma</comment>
</data>
<data name="IdlingStatusForGame" xml:space="preserve">
<value>Status do processo de receber cartas para {0} ({1}): {2} cartas restantes</value>
<value>Estado do processo de receber cartas para {0} ({1}): {2} carta(s) restante(s)</value>
<comment>{0} will be replaced by game's appID (number), {1} will be replaced by game's name, {2} will be replaced by number of cards left to idle</comment>
</data>
<data name="IdlingStopped" xml:space="preserve">
<value>Processo de receber cartas parado!</value>
<value>Coleta de cartas interrompida!</value>
</data>
<data name="IgnoredStickyPauseEnabled" xml:space="preserve">
<value>Ignorando esse pedido, já que o pause manual está habilitado!</value>
@@ -428,7 +428,7 @@ StackTrace:
<value>Não temos cartas disponíveis nesta conta!</value>
</data>
<data name="NowIdling" xml:space="preserve">
<value>Agora recebendo cartas: {0} ({1})</value>
<value>Coletando cartas: {0} ({1})</value>
<comment>{0} will be replaced by game's appID (number), {1} will be replaced by game's name</comment>
</data>
<data name="NowIdlingList" xml:space="preserve">
@@ -436,7 +436,7 @@ StackTrace:
<comment>{0} will be replaced by list of the games (appIDs, numbers), separated by a comma</comment>
</data>
<data name="PlayingNotAvailable" xml:space="preserve">
<value>O arquivamento não está disponível no momento. Tente mais tarde!</value>
<value>Não é possível jogar no momento, tentaremos novamente mais tarde!</value>
</data>
<data name="StillIdling" xml:space="preserve">
<value>Ainda executando: {0} ({1})</value>
@@ -447,40 +447,40 @@ StackTrace:
<comment>{0} will be replaced by list of the games (appIDs, numbers), separated by a comma</comment>
</data>
<data name="StoppedIdling" xml:space="preserve">
<value>Execução pausada: {0} ({1})</value>
<value>Coleta interrompida: {0} ({1})</value>
<comment>{0} will be replaced by game's appID (number), {1} will be replaced by game's name</comment>
</data>
<data name="StoppedIdlingList" xml:space="preserve">
<value>Processo pausado: {0}</value>
<value>Coleta interrompida: {0}</value>
<comment>{0} will be replaced by list of the games (appIDs, numbers), separated by a comma</comment>
</data>
<data name="UnknownCommand" xml:space="preserve">
<value>Comando desconhecido!</value>
</data>
<data name="WarningCouldNotCheckBadges" xml:space="preserve">
<value>Não foi possível obter informações de insignias, vamos tentar novamente mais tarde!</value>
<value>Não foi possível obter informações das insígnias, tentaremos novamente mais tarde!</value>
</data>
<data name="WarningCouldNotCheckCardsStatus" xml:space="preserve">
<value>Não foi possível verificar o status das cartas de: {0} ({1}), tentaremos novamente mais tarde!</value>
<value>Não foi possível verificar o estado das cartas de: {0} ({1}), tentaremos novamente mais tarde!</value>
<comment>{0} will be replaced by game's appID (number), {1} will be replaced by game's name</comment>
</data>
<data name="BotAcceptingGift" xml:space="preserve">
<value>Aceitando o presente: {0}...</value>
<value>Aceitando presente: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Essa conta está limitada, o processo de receber cartas está permanentemente indisponível até que a restrição seja removida!</value>
<value>Essa conta é limitada, o processo de receber cartas está permanentemente indisponível até que a restrição seja removida!</value>
</data>
<data name="BotAddLicenseResponse" xml:space="preserve">
<value>&lt;{0}&gt; GameID: {1} | Status: {2}</value>
<value>&lt;{0}&gt; GameID: {1} | Estado: {2}</value>
<comment>{0} will be replaced by bot's name, {1} will be replaced by gameID (number), {2} will be replaced by status string</comment>
</data>
<data name="BotAddLicenseResponseWithItems" xml:space="preserve">
<value>&lt;{0}&gt; GameID: {1} | Status: {2} | Itens: {3}</value>
<value>&lt;{0}&gt; GameID: {1} | Estado: {2} | Itens: {3}</value>
<comment>{0} will be replaced by bot's name, {1} will be replaced by gameID (number), {2} will be replaced by status string, {3} will be replaced by list of granted appIDs (numbers), separated by a comma</comment>
</data>
<data name="BotAlreadyRunning" xml:space="preserve">
<value>Este bot já está em execução!</value>
<value>Uma instância do bot já está sendo executada!</value>
<comment>{0} will be replaced by bot's name</comment>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
@@ -493,24 +493,24 @@ StackTrace:
<value>Seu DeviceID está incorreto ou não existe!</value>
</data>
<data name="BotAuthenticatorToken" xml:space="preserve">
<value>Código 2FA: {0}</value>
<value>Código de autenticação: {0}</value>
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
<value>Processo automático de receber cartas está agora pausado!</value>
</data>
<data name="BotAutomaticIdlingNowResumed" xml:space="preserve">
<value>Processo automático de receber cartas está agora retomado!</value>
<value>A coleta automática de cartas foi retomada!</value>
</data>
<data name="BotAutomaticIdlingPausedAlready" xml:space="preserve">
<value>Processo automático de receber cartas já está pausado!</value>
<value>A coleta automática de cartas já está pausada!</value>
</data>
<data name="BotAutomaticIdlingPausedWithCountdown" xml:space="preserve">
<value>Processo automático de receber cartas está agora pausado! Você tem {0} minutos para iniciar um jogo.</value>
<value>A coleta automática de cartas foi pausada! Você tem {0} minutos para iniciar um jogo.</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotAutomaticIdlingResumedAlready" xml:space="preserve">
<value>Processo automático de receber cartas já está retomado!</value>
<value>A coleta automática de cartas já foi retomada!</value>
</data>
<data name="BotConnected" xml:space="preserve">
<value>Conectado ao Steam!</value>
@@ -533,20 +533,20 @@ StackTrace:
<comment>{0} will be replaced by maximum allowed number of failed 2FA attempts</comment>
</data>
<data name="BotLoggedOff" xml:space="preserve">
<value>Deslogado do Steam: {0}</value>
<value>Sessão finalizada: {0}</value>
<comment>{0} will be replaced by logging off reason (string)</comment>
</data>
<data name="BotLoggedOn" xml:space="preserve">
<value>Logado com sucesso!</value>
<value>Sessão iniciada com sucesso!</value>
</data>
<data name="BotLoggingIn" xml:space="preserve">
<value>Logando...</value>
<value>Iniciando sessão...</value>
</data>
<data name="BotLogonSessionReplaced" xml:space="preserve">
<value>Esta conta parece que está sendo usada em outra instância do ASF, o que é um comportamento indefinido, recusando em continuar executando!</value>
<value>Esta conta parece estar sendo usada em outra instância do ASF, o que é um comportamento indefinido, impedindo-a de ser executada!</value>
</data>
<data name="BotLootingFailed" xml:space="preserve">
<value>Oferta de troca falhou!</value>
<value>Proposta de troca falhou!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>A troca não pôde ser enviada pois o SteamMasterID não foi definido!</value>
@@ -556,19 +556,19 @@ StackTrace:
<value>Você não configurou nenhum tipo de itens para coletar!</value>
</data>
<data name="BotLootingNowDisabled" xml:space="preserve">
<value>Coleta agora está desabilitada!</value>
<value>A coleta está desabilitada!</value>
</data>
<data name="BotLootingNowEnabled" xml:space="preserve">
<value>A coleta agora está ativada!</value>
</data>
<data name="BotLootingSuccess" xml:space="preserve">
<value>Oferta de troca enviada com sucesso!</value>
<value>Proposta enviada com sucesso!</value>
</data>
<data name="BotLootingTemporarilyDisabled" xml:space="preserve">
<value>Coleta temporariamente desabilitada!</value>
</data>
<data name="BotLootingYourself" xml:space="preserve">
<value>Você não pode coletar seus próprios itens!</value>
<value>Você não pode coletar os seus próprios itens!</value>
</data>
<data name="BotNoASFAuthenticator" xml:space="preserve">
<value>Esse bot não tem ASF 2FA habilitado! Você esqueceu de configurar as confirmações para 2FA ASF?</value>
@@ -582,7 +582,7 @@ StackTrace:
<comment>{0} will be replaced by bot's name, {1} will be replaced by query (string)</comment>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>&lt;{0} &gt; Já possuído: {1} | {2}</value>
<value>&lt;{0} &gt; Já possui: {1} | {2}</value>
<comment>{0} will be replaced by bot's name, {1} will be replaced by game's appID (number), {2} will be replaced by game's name</comment>
</data>
<data name="BotRateLimitExceeded" xml:space="preserve">
@@ -604,11 +604,11 @@ StackTrace:
<value>Chave de sessão expirada removida!</value>
</data>
<data name="BotsStatusNotIdling" xml:space="preserve">
<value>Bot {0} não está executando nada.</value>
<value>Bot {0} não está coletando nada.</value>
<comment>{0} will be replaced by bot's name</comment>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot {0} é limitado e não é possível receber nenhuma carta através do recurso.</value>
<value>Bot {0} é limitado e não pode receber nenhuma carta através da coleta.</value>
<comment>{0} will be replaced by bot's name</comment>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
@@ -628,11 +628,11 @@ StackTrace:
<comment>{0} will be replaced by bot's name</comment>
</data>
<data name="BotUnableToConnect" xml:space="preserve">
<value>Incapaz de conectar com o Steam: {0}</value>
<value>Não foi possível conectar-se ao Steam: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotUnableToLogin" xml:space="preserve">
<value>Incapaz de logar no Steam: {0}/{1}</value>
<value>Não foi possível iniciar a sessão no Steam: {0}/{1}</value>
<comment>{0} will be replaced by failure reason (string), {1} will be replaced by extended failure reason (string)</comment>
</data>
<data name="ErrorIsEmpty" xml:space="preserve">
@@ -640,7 +640,7 @@ StackTrace:
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="UnusedKeys" xml:space="preserve">
<value>Chaves não usadas: {0}</value>
<value>Códigos não ativados: {0}</value>
<comment>{0} will be replaced by list of cd-keys (strings), separated by a comma</comment>
</data>
<data name="WarningFailedWithError" xml:space="preserve">
@@ -648,7 +648,7 @@ StackTrace:
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
<value>Conexão perdida com a Steam Network, reconectando...</value>
<value>Conexão com a rede Steam perdida, reconectando...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>A conta não está mais ocupada, o processo de receber cartas foi retomado!</value>
@@ -657,22 +657,22 @@ StackTrace:
<value>A conta está atualmente em uso, o ASF retomará o processo quando estiver livre...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>A Biblioteca compartilhada não foi iniciada no período de tempo especificado, o processo de receber cartas foi retomado!</value>
<value>A biblioteca compartilhada não foi iniciada no período de tempo especificado, a coleta foi retomada!</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Conectando...</value>
</data>
<data name="BotHeartBeatFailed" xml:space="preserve">
<value>Falha ao desconectar o cliente, abandonando esse bot!</value>
<value>Falha ao desconectar cliente, abandonando instância!</value>
</data>
<data name="BotSteamDirectoryInitializationFailed" xml:space="preserve">
<value>Não foi possível inicializar o SteamDirectory, a conexão com o Steam Network pode demorar mais do que o normal!</value>
<value>Não foi possível inicializar o SteamDirectory, a conexão com a rede Steam pode demorar mais do que o normal!</value>
</data>
<data name="BotStopping" xml:space="preserve">
<value>Parando...</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>A configuração do seu bot é inválida, por favor verifique o conteúdo de {0} e tente de novo!</value>
<value>A configuração do bot é inválida, verifique o conteúdo de {0} e tente novamente!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
@@ -687,7 +687,7 @@ StackTrace:
<value>Por favor revise a seção de política de privacidade na nossa wiki se você está preocupado com o que o ASF realmente está fazendo!</value>
</data>
<data name="Welcome" xml:space="preserve">
<value>Parece que é sua primeira vez abrindo o programa, bem-vindo!</value>
<value>Parece que é a sua primeira vez abrindo o programa, bem-vindo(a)!</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>O CurrentCulture providenciado é inválido, o ASF continuará usando o padrão!</value>

View File

@@ -44,7 +44,7 @@ namespace ArchiSteamFarm {
internal const string ServiceDescription = "ASF is an application that allows you to farm steam cards using multiple steam accounts simultaneously.";
internal const string ServiceName = "ArchiSteamFarm";
internal const string StatisticsServer = "asf.justarchi.net";
internal const string VersionNumber = "2.2.1.7";
internal const string VersionNumber = "2.2.1.8";
internal static readonly Version Version = Assembly.GetEntryAssembly().GetName().Version;
}

View File

@@ -517,7 +517,7 @@ namespace ArchiSteamFarm {
responseMessage = await HttpClient.SendAsync(requestMessage).ConfigureAwait(false);
} catch (Exception e) {
// This exception is really common, don't bother with it unless debug mode is enabled
if (Debugging.IsDebugBuild || Program.GlobalConfig.Debug) {
if (Debugging.IsUserDebugging) {
ArchiLogger.LogGenericDebugException(e);
}
@@ -533,7 +533,7 @@ namespace ArchiSteamFarm {
return responseMessage;
}
if (Debugging.IsDebugBuild || Program.GlobalConfig.Debug) {
if (Debugging.IsUserDebugging) {
ArchiLogger.LogGenericDebug(string.Format(Strings.ErrorFailingRequest, request));
ArchiLogger.LogGenericDebug(string.Format(Strings.StatusCode, responseMessage.StatusCode));
ArchiLogger.LogGenericDebug(string.Format(Strings.Content, await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false)));

View File

@@ -118,16 +118,16 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="CategoryAccess" xml:space="preserve">
<value>Permissão de Acesso</value>
<value>Permissão de acesso</value>
</data>
<data name="CategoryAdvanced" xml:space="preserve">
<value>Preferências avançadas</value>
<value>Avançado</value>
</data>
<data name="CategoryCore" xml:space="preserve">
<value>Básico</value>
<value>Principal</value>
</data>
<data name="CategoryDebugging" xml:space="preserve">
<value>Depurando</value>
<value>Depuração</value>
</data>
<data name="CategoryPerformance" xml:space="preserve">
<value>Desempenho</value>
@@ -136,10 +136,10 @@
<value>Atualizações</value>
</data>
<data name="ConfirmRemoval" xml:space="preserve">
<value>Você deseja realmente remover essa configuração?</value>
<value>Você realmente deseja remover essa configuração?</value>
</data>
<data name="ErrorBotNameEmpty" xml:space="preserve">
<value>O nome de seu bot está em branco!</value>
<value>O nome do bot está em branco!</value>
</data>
<data name="ErrorCantRemoveGlobalConfig" xml:space="preserve">
<value>Você não pode remover a configuração global!</value>
@@ -148,14 +148,14 @@
<value>Você não pode renomear a configuração global!</value>
</data>
<data name="ErrorConfigDirectoryNotFound" xml:space="preserve">
<value>Configuração do diretório não pôde ser encontrada!</value>
<value>Diretório da configuração não encontrado!</value>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>Configuração {0} inválida com a propriedade: {1}</value>
<value>Configuração da propriedade {0} inválida: {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>Sua CurrentCulture é inválida, o ConfigGenerator continuará executando pelo padrão!</value>
<value>A propriedade CurrentCulture fornecida é inválida, o ConfigGenerator continuará executando com o valor padrão!</value>
</data>
<data name="ErrorNameAlreadyUsed" xml:space="preserve">
<value>Este nome já está em uso!</value>
@@ -170,11 +170,11 @@
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorVersionMismatch" xml:space="preserve">
<value>Você tentou usar uma versão inválida do ConfigGenerator em seu ASF!
<value>Você tentou usar uma versão inválida do ConfigGenerator no seu ASF!
ASF: {0} | ConfigGenerator: {1}
Por favor use uma versão do ConfigGenerator correspondente ao seu ASF. Você será redirecionado para a versão apropriada...</value>
Por favor, use uma versão do ConfigGenerator correspondente ao seu ASF. Você será redirecionado para a versão apropriada...</value>
<comment>{0} will be replaced by ASF version (string), {1} will be replaced by ConfigGenerator version (string). Please note that this string should include newlines for formatting.</comment>
</data>
<data name="New" xml:space="preserve">
@@ -182,7 +182,7 @@ Por favor use uma versão do ConfigGenerator correspondente ao seu ASF. Você se
<comment>This is used as MessageBox title</comment>
</data>
<data name="Removal" xml:space="preserve">
<value>Eliminar</value>
<value>Remoção</value>
<comment>This is used as MessageBox title</comment>
</data>
<data name="Rename" xml:space="preserve">
@@ -190,52 +190,52 @@ Por favor use uma versão do ConfigGenerator correspondente ao seu ASF. Você se
<comment>This is used as MessageBox title</comment>
</data>
<data name="TutorialBotFormEnabled" xml:space="preserve">
<value>Excelente! Seu bot agora está ativado. Na verdade, isso era tudo que você precisava fazer para rodar este bot no ASF, mas talvez você deveria configurar mais duas propriedades: {0} e {1}. Caso queira continuar o tutorial, fique à vontade. Lembre-se de consultar a Wiki se você não tem certeza se tal propriedade deve ser configurada, ou se precisar de uma ajuda extra.</value>
<value>Excelente! O seu bot agora está ativado. Na verdade, isso era tudo que você precisava fazer para usar esse bot no ASF, mas talvez você queira configurar mais duas propriedades: {0} e {1}. Caso queira continuar o tutorial, fique à vontade. Lembre-se de consultar a Wiki caso não tenha certeza de como alguma propriedade deve ser configurada ou se precisar de uma ajuda extra.</value>
<comment>{0} will be replaced by "SteamLogin" configuration property, {1} will be replaced by "SteamPassword" configuration property</comment>
</data>
<data name="TutorialBotFormReady" xml:space="preserve">
<value>Seu ASF está agora pronto! Basta executar o ASF.exe e digitar tudo corretamente, você verá o ASF entrar em seção e começar o processo de receber cartas. Se você tiver o SteamGuard ou autenticação por dois fatores ativado, o ASF te perguntará por essas credenciais durante o processo.</value>
<value>O ASF agora está pronto! Basta executar o ASF.exe e digitar tudo corretamente para que o ASF inicie a sessão e comece o processo de coleta. Caso tenha o Steam Guard ou a autenticação em duas etapas ativada, o ASF pedirá por essas credenciais durante o processo.</value>
</data>
<data name="TutorialFinished" xml:space="preserve">
<value>Parabéns! Você fez tudo que era necessário para deixar o ASF em processo de uso, isso também completa o tutorial que preparamos para você. É altamente recomendado agora ler toda a seção de configuração na Wiki, pois o ASF oferece outras ótimas funções para você configurar, como receber cartas em modo offline ou ativar o ASF no algoritmo mais eficiente de receber cartas para a sua conta. Tudo isso claro, é opcional, e você pode fechar nosso configurador quando quiser. Nós desejamos que aproveite o programa que desenvolvemos para você!</value>
<value>Parabéns! Você fez tudo que era necessário para deixar o ASF usável, isso também completa o tutorial que preparamos para você. É altamente recomendado agora ler toda a seção de configuração na Wiki, pois o ASF oferece outras ótimas funções para você configurar, como receber cartas em modo offline ou ativar o ASF no algoritmo mais eficiente de receber cartas para a sua conta. Claro que tudo isso é opcional e você pode fechar o nosso configurador quando quiser. Nós desejamos que aproveite o programa que desenvolvemos para você!</value>
</data>
<data name="TutorialMainFormBotsManagementButtons" xml:space="preserve">
<value>Na parte superior da janela, você pode notar que atualmente as configurações abertas, e 3 botões extras para remoção [-], renomeação [~] e adição de novos [+].</value>
<value>Na parte superior da janela você pode ver as configurações atualmente abertas e 3 botões extras para remoção [-], renomeação [~] e adição [+] de novas.</value>
<comment>If possible, try to keep visual representation of buttons: [-], [~] and [+]</comment>
</data>
<data name="TutorialMainFormConfigurationWiki" xml:space="preserve">
<value>Por favor, note-se que todas informações sobre as propriedades das configurações disponíveis, incluindo suas descrições, finalidades, e valores aceitos, estão disponíveis em nossa Wiki no GitHub. Por favor use isto como referência.</value>
<value>Por favor, observe que todas as informações sobre as propriedades das configurações disponíveis, incluindo descrições, finalidades e valores aceitos estão disponíveis na nossa Wiki no GitHub. Use-a como referência.</value>
</data>
<data name="TutorialMainFormConfigurationWindow" xml:space="preserve">
<value>No meio da janela você pode configurar todas as propriedades das configurações que estão disponíveis para você, para as suas atuais configurações selecionadas.</value>
<value>No meio da janela você pode configurar todas as propriedades das configurações que estão disponíveis para você, para as configurações selecionadas atualmente.</value>
</data>
<data name="TutorialMainFormFinished" xml:space="preserve">
<value>Certo, vamos começar a configurar nosso ASF. Clique no botão de mais [+] para adicionar sua primeira conta do Steam!</value>
<value>Certo, vamos começar a configurar o ASF. Clique no botão de mais [+] para adicionar a sua primeira conta Steam!</value>
<comment>If possible, try to keep visual representation of [+] button</comment>
</data>
<data name="TutorialMainFormHelpButton" xml:space="preserve">
<value>No canto superior você encontrará o botão de ajuda [?] que te redirecionará para a Wiki do ASF para mais informações.</value>
<value>No canto superior direito você encontrará o botão de ajuda [?] que te redirecionará para a Wiki do ASF para mais informações.</value>
<comment>If possible, try to keep visual representation of [?] button</comment>
</data>
<data name="TutorialMainFormShown" xml:space="preserve">
<value>Esta é a janela principal do ASF ConfigGenerator, é muito fácil de usar!</value>
<value>Esta é a janela principal do ConfigGenerator do ASF, é muito fácil de usar!</value>
</data>
<data name="TutorialNewBotFormFinished" xml:space="preserve">
<value>Como você pode ver, seu bot está agora pronto para ser configurado! A primeira coisa que você deve fazer é trocar a propriedade {0} de falso para verdadeiro, experimente!</value>
<value>Como você pode ver, o seu bot está agora pronto para ser configurado! A primeira coisa que você deve fazer é trocar a propriedade {0} de falso (false) para verdadeiro (true), experimente!</value>
<comment>{0} will be replaced by name of the configuration property ("Enabled")</comment>
</data>
<data name="TutorialNewBotFormShown" xml:space="preserve">
<value>Bom trabalho! Agora você será pedido para inserir o nome de seu bot. Um bom exemplo seria um nick que você usa para o nome da sua conta do Steam que está prestes a ser configurada, ou qualquer outro nome que você desejar e seja fácil para você conectar a instância do bot que está sendo configurado.</value>
<value>Bom trabalho! Agora você precisará informar o nome do bot. Um bom exemplo seria o apelido usado na conta Steam que você está configurando, ou qualquer outro nome que você desejar que seja fácil para você conectar com a instância configurada.</value>
</data>
<data name="TutorialStart" xml:space="preserve">
<value>Bem-Vindo! Eu notei que você está usando o ASF ConfigGenerator pela primeira vez, então deixe-me te ajudar.</value>
<value>Bem-vindo(a)! Notei que você está usando o ConfigGenerator do ASF pela primeira vez, então deixe-me ajudá-lo(a).</value>
</data>
<data name="UserInputBotName" xml:space="preserve">
<value>Por favor, insira o novo nome do bot: </value>
<value>Insira o nome do novo do bot: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningConfigPropertyModified" xml:space="preserve">
<value>{0} foi definido como: {1}</value>
<value>{0} definido como: {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by new value</comment>
</data>
</root>