diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 69500e88ee..baa6c449e5 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -10,6 +10,7 @@ body: id: desc attributes: label: What is the problem? + description: Describe the problem. What did you expect to happen? What happened instead? validations: required: true - type: textarea @@ -23,28 +24,16 @@ body: 3. ... validations: required: true - - type: textarea - id: expected - attributes: - label: What did you expect to happen? - validations: - required: true - - type: textarea - id: outcome - attributes: - label: What happened instead? - validations: - required: true - type: input attributes: - label: Device Info - description: Specify the device you are using the app on (e.g. Pixel 7) + label: App version + description: Specify the application version (e.g. 0.7.8). validations: required: true - type: input attributes: - label: Operating System Version - description: Example. Android 14 or iOS 16 + label: Device Info + description: Specify the device and Operating System you are using the app on (e.g. Pixel 7 / Android 14) validations: required: true - type: textarea diff --git a/android/Gemfile.lock b/android/Gemfile.lock index d987bff794..cbd2b355ea 100644 --- a/android/Gemfile.lock +++ b/android/Gemfile.lock @@ -171,7 +171,7 @@ GEM trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.3.2) + rexml (3.3.3) strscan rouge (2.0.7) ruby2_keywords (0.0.5) diff --git a/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt b/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt index ecb046a713..2f651b5bd1 100644 --- a/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt +++ b/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt @@ -4,18 +4,17 @@ import android.app.ActivityManager import android.content.Context import android.graphics.Rect import androidx.core.view.ViewCompat -import androidx.annotation.NonNull import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugin.common.MethodChannel class MainActivity: FlutterActivity() { - private val exclusionChannel = "mobile.lichess.org/gestures_exclusion" - private val storageChannel = "mobile.lichess.org/storage" + private val GESTURES_CHANNEL = "mobile.lichess.org/gestures_exclusion" + private val SYSTEM_CHANNEL = "mobile.lichess.org/system" - override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { + override fun configureFlutterEngine(flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) - MethodChannel(flutterEngine.dartExecutor.binaryMessenger, exclusionChannel).setMethodCallHandler { + MethodChannel(flutterEngine.dartExecutor.binaryMessenger, GESTURES_CHANNEL).setMethodCallHandler { call, result -> if (call.method == "setSystemGestureExclusionRects") { val arguments = call.arguments as List> @@ -27,13 +26,26 @@ class MainActivity: FlutterActivity() { } } - MethodChannel(flutterEngine.dartExecutor.binaryMessenger, storageChannel).setMethodCallHandler { + MethodChannel(flutterEngine.dartExecutor.binaryMessenger, SYSTEM_CHANNEL).setMethodCallHandler { call, result -> - if (call.method == "clearApplicationUserData") { - val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager - result.success(activityManager.clearApplicationUserData()) - } else { - result.notImplemented() + when (call.method) { + "clearApplicationUserData" -> { + val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + result.success(activityManager.clearApplicationUserData()) + } + "getTotalRam" -> { + val memoryInfo = getAvailableMemory() + val totalMemInMb = memoryInfo.totalMem / 1048576L + result.success(totalMemInMb.toInt()) + } + // "getAvailableRam" -> { + // val memoryInfo = getAvailableMemory() + // val availMemInMb = memoryInfo.availMem / 1048576L + // result.success(availMemInMb.toInt()) + // } + else -> { + result.notImplemented() + } } } } @@ -47,4 +59,11 @@ class MainActivity: FlutterActivity() { item["bottom"] ?: error("rect at index $index doesn't contain 'bottom' property") ) } + + private fun getAvailableMemory(): ActivityManager.MemoryInfo { + val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + return ActivityManager.MemoryInfo().also { memoryInfo -> + activityManager.getMemoryInfo(memoryInfo) + } + } } diff --git a/android/fastlane/Fastfile b/android/fastlane/Fastfile index 1446009058..63d6088225 100644 --- a/android/fastlane/Fastfile +++ b/android/fastlane/Fastfile @@ -30,7 +30,7 @@ platform :android do end def deploy_to_play_store(track) - sh "flutter build appbundle -v --obfuscate --split-debug-info=./build/app/outputs/bundle/release/symbols --dart-define=cronetHttpNoPlay=true --dart-define=no_default_http_client=true --dart-define=LICHESS_HOST=lichess.org --dart-define=LICHESS_WS_HOST=socket.lichess.org --dart-define=LICHESS_WS_SECRET=#{ENV['WS_SECRET']}" + sh "flutter build appbundle -v --obfuscate --split-debug-info=./build/app/outputs/bundle/release/symbols --dart-define=cronetHttpNoPlay=true --dart-define=LICHESS_HOST=lichess.org --dart-define=LICHESS_WS_HOST=socket.lichess.org --dart-define=LICHESS_WS_SECRET=#{ENV['WS_SECRET']}" upload_to_play_store( track: track, aab: '../build/app/outputs/bundle/release/app-release.aab', diff --git a/assets/sounds/standard/puzzleStormEnd.aifc b/assets/sounds/standard/puzzleStormEnd.aifc new file mode 100644 index 0000000000..38a715b7ca Binary files /dev/null and b/assets/sounds/standard/puzzleStormEnd.aifc differ diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock index e1e7f94be7..e662975a89 100644 --- a/ios/Gemfile.lock +++ b/ios/Gemfile.lock @@ -5,25 +5,25 @@ GEM base64 nkf rexml - addressable (2.8.6) - public_suffix (>= 2.0.2, < 6.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.3.0) - aws-partitions (1.930.0) - aws-sdk-core (3.196.1) + aws-partitions (1.959.0) + aws-sdk-core (3.201.3) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.81.0) - aws-sdk-core (~> 3, >= 3.193.0) - aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.151.0) - aws-sdk-core (~> 3, >= 3.194.0) + aws-sdk-kms (1.88.0) + aws-sdk-core (~> 3, >= 3.201.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.156.0) + aws-sdk-core (~> 3, >= 3.201.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.8) - aws-sigv4 (1.8.0) + aws-sigv4 (~> 1.5) + aws-sigv4 (1.9.1) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) base64 (0.2.0) @@ -38,7 +38,7 @@ GEM domain_name (0.6.20240107) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.110.0) + excon (0.111.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -60,7 +60,7 @@ GEM faraday-httpclient (1.0.1) faraday-multipart (1.0.4) multipart-post (~> 2) - faraday-net_http (1.0.1) + faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) @@ -68,7 +68,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.3.1) - fastlane (2.220.0) + fastlane (2.222.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -147,14 +147,14 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.5) + http-cookie (1.0.6) domain_name (~> 0.5) httpclient (2.8.3) jmespath (1.6.2) json (2.7.2) - jwt (2.8.1) + jwt (2.8.2) base64 - mini_magick (4.12.0) + mini_magick (4.13.2) mini_mime (1.1.5) multi_json (1.15.0) multipart-post (2.4.1) @@ -164,15 +164,15 @@ GEM optparse (0.5.0) os (1.1.4) plist (3.7.1) - public_suffix (5.0.5) + public_suffix (6.0.1) rake (13.2.1) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.8) - strscan (>= 3.0.9) + rexml (3.3.3) + strscan rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) @@ -197,13 +197,12 @@ GEM uber (0.1.0) unicode-display_width (2.5.0) word_wrap (1.0.0) - xcodeproj (1.24.0) + xcodeproj (1.19.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) nanaimo (~> 0.3.0) - rexml (~> 3.2.4) xcpretty (0.3.0) rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index ae6069428f..74671449b0 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,4 +1,6 @@ PODS: + - app_settings (5.1.1): + - Flutter - AppAuth (1.7.4): - AppAuth/Core (= 1.7.4) - AppAuth/ExternalUserAgent (= 1.7.4) @@ -12,26 +14,26 @@ PODS: - Flutter - device_info_plus (0.0.1): - Flutter - - Firebase/CoreOnly (10.28.0): - - FirebaseCore (= 10.28.0) - - Firebase/Crashlytics (10.28.0): + - Firebase/CoreOnly (10.29.0): + - FirebaseCore (= 10.29.0) + - Firebase/Crashlytics (10.29.0): - Firebase/CoreOnly - - FirebaseCrashlytics (~> 10.28.0) - - Firebase/Messaging (10.28.0): + - FirebaseCrashlytics (~> 10.29.0) + - Firebase/Messaging (10.29.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 10.28.0) - - firebase_core (3.2.0): - - Firebase/CoreOnly (= 10.28.0) + - FirebaseMessaging (~> 10.29.0) + - firebase_core (3.3.0): + - Firebase/CoreOnly (= 10.29.0) - Flutter - - firebase_crashlytics (4.0.3): - - Firebase/Crashlytics (= 10.28.0) + - firebase_crashlytics (4.0.4): + - Firebase/Crashlytics (= 10.29.0) - firebase_core - Flutter - - firebase_messaging (15.0.3): - - Firebase/Messaging (= 10.28.0) + - firebase_messaging (15.0.4): + - Firebase/Messaging (= 10.29.0) - firebase_core - Flutter - - FirebaseCore (10.28.0): + - FirebaseCore (10.29.0): - FirebaseCoreInternal (~> 10.0) - GoogleUtilities/Environment (~> 7.12) - GoogleUtilities/Logger (~> 7.12) @@ -39,7 +41,7 @@ PODS: - FirebaseCore (~> 10.0) - FirebaseCoreInternal (10.29.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseCrashlytics (10.28.1): + - FirebaseCrashlytics (10.29.0): - FirebaseCore (~> 10.5) - FirebaseInstallations (~> 10.0) - FirebaseRemoteConfigInterop (~> 10.23) @@ -53,7 +55,7 @@ PODS: - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseMessaging (10.28.0): + - FirebaseMessaging (10.29.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - GoogleDataTransport (~> 9.3) @@ -127,14 +129,12 @@ PODS: - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - - soundpool (0.0.1): + - sound_effect (0.0.2): - Flutter - sqflite (0.0.3): - Flutter - FlutterMacOS - - stockfish (1.6.0): - - Flutter - - system_info_plus (0.0.1): + - stockfish (1.6.1): - Flutter - url_launcher_ios (0.0.1): - Flutter @@ -142,6 +142,7 @@ PODS: - Flutter DEPENDENCIES: + - app_settings (from `.symlinks/plugins/app_settings/ios`) - connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`) - cupertino_http (from `.symlinks/plugins/cupertino_http/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) @@ -156,10 +157,9 @@ DEPENDENCIES: - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - share_plus (from `.symlinks/plugins/share_plus/ios`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - - soundpool (from `.symlinks/plugins/soundpool/ios`) + - sound_effect (from `.symlinks/plugins/sound_effect/ios`) - sqflite (from `.symlinks/plugins/sqflite/darwin`) - stockfish (from `.symlinks/plugins/stockfish/ios`) - - system_info_plus (from `.symlinks/plugins/system_info_plus/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`) @@ -182,6 +182,8 @@ SPEC REPOS: - PromisesSwift EXTERNAL SOURCES: + app_settings: + :path: ".symlinks/plugins/app_settings/ios" connectivity_plus: :path: ".symlinks/plugins/connectivity_plus/darwin" cupertino_http: @@ -210,34 +212,33 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/share_plus/ios" shared_preferences_foundation: :path: ".symlinks/plugins/shared_preferences_foundation/darwin" - soundpool: - :path: ".symlinks/plugins/soundpool/ios" + sound_effect: + :path: ".symlinks/plugins/sound_effect/ios" sqflite: :path: ".symlinks/plugins/sqflite/darwin" stockfish: :path: ".symlinks/plugins/stockfish/ios" - system_info_plus: - :path: ".symlinks/plugins/system_info_plus/ios" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" wakelock_plus: :path: ".symlinks/plugins/wakelock_plus/ios" SPEC CHECKSUMS: + app_settings: 017320c6a680cdc94c799949d95b84cb69389ebc AppAuth: 182c5b88630569df5acb672720534756c29b3358 connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db cupertino_http: 1a3a0f163c1b26e7f1a293b33d476e0fde7a64ec device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d - Firebase: 5121c624121af81cbc81df3bda414b3c28c4f3c3 - firebase_core: a9d0180d5285527884d07a41eb4a9ec9ed12cdb6 - firebase_crashlytics: 12b2b1ecfc50f6c551c68e491ae156b2b7d41273 - firebase_messaging: ccc82a143a74de75f440a4e413dbbb37ec3fddbc - FirebaseCore: 857dc1c6dd1255675047404d8466f7dfaac5d779 + Firebase: cec914dab6fd7b1bd8ab56ea07ce4e03dd251c2d + firebase_core: 57aeb91680e5d5e6df6b888064be7c785f146efb + firebase_crashlytics: e3d3e0c99bad5aaab5908385133dea8ec344693f + firebase_messaging: c862b3d2b973ecc769194dc8de09bd22c77ae757 + FirebaseCore: 30e9c1cbe3d38f5f5e75f48bfcea87d7c358ec16 FirebaseCoreExtension: 705ca5b14bf71d2564a0ddc677df1fc86ffa600f FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 - FirebaseCrashlytics: f51e12b93f8e1134bbed602ed22df33804d55ccf + FirebaseCrashlytics: 34647b41e18de773717fdd348a22206f2f9bc774 FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd - FirebaseMessaging: 087a7c7cadef7b9239f005bc4db823894844f323 + FirebaseMessaging: 7b5d8033e183ab59eb5b852a53201559e976d366 FirebaseRemoteConfigInterop: 6efda51fb5e2f15b16585197e26eaa09574e8a4d FirebaseSessions: dbd14adac65ce996228652c1fc3a3f576bdf3ecc Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 @@ -253,10 +254,9 @@ SPEC CHECKSUMS: PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 - soundpool: c7f4422ca206e77f8900ed3c4ee6a6ff5a0e38a9 + sound_effect: 5280cfa89d4a576032186f15600dc948ca6d39ce sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec - stockfish: 1cee686b12e2541a977d062746d2eb3f794d891c - system_info_plus: 5393c8da281d899950d751713575fbf91c7709aa + stockfish: 9e398e73bfb36580f16b79e8b9b45568b9e1dcd9 url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1 diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 53ed728cce..da4a3e1265 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -9,10 +9,13 @@ import Flutter ) -> Bool { let controller : FlutterViewController = window?.rootViewController as! FlutterViewController - let badgeChannel = FlutterMethodChannel(name: "mobile.lichess.org/badge", + let BADGE_CHANNEL = FlutterMethodChannel(name: "mobile.lichess.org/badge", binaryMessenger: controller.binaryMessenger) - badgeChannel.setMethodCallHandler({ + let SYSTEM_CHANNEL = FlutterMethodChannel(name: "mobile.lichess.org/system", + binaryMessenger: controller.binaryMessenger) + + BADGE_CHANNEL.setMethodCallHandler({ (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in guard call.method == "setBadge" else { result(FlutterMethodNotImplemented) @@ -28,7 +31,24 @@ import Flutter } }) + SYSTEM_CHANNEL.setMethodCallHandler({ + (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in + guard call.method == "getTotalRam" else { + result(FlutterMethodNotImplemented) + return + } + + result(self.getPhysicalMemory()) + }) + GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } + + private func getPhysicalMemory() -> Int { + let memory : Int = Int(ProcessInfo.processInfo.physicalMemory) + let constant : Int = 1_048_576 + let res = memory / constant + return Int(res) + } } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 24b261fca3..83000377fe 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -26,7 +26,7 @@ "mobileNoSearchResults": "No results", "mobileAreYouSure": "Are you sure?", "mobilePuzzleStreakAbortWarning": "You will lose your current streak and your score will be saved.", - "mobilePuzzleStormNothingToShow": "Nothing to show. Play some runs of storm", + "mobilePuzzleStormNothingToShow": "Nothing to show. Play some runs of Puzzle Storm.", "mobileSharePuzzle": "Share this puzzle", "mobileShareGameURL": "Share game URL", "mobileShareGamePGN": "Share PGN", @@ -44,6 +44,19 @@ "mobileCustomGameJoinAGame": "Join a game", "mobileCorrespondenceClearSavedMove": "Clear saved move", "mobileSomethingWentWrong": "Something went wrong.", + "mobileShowResult": "Show result", + "mobilePuzzleThemesSubtitle": "Play puzzles from your favorite openings, or choose a theme.", + "mobilePuzzleStormSubtitle": "Solve as many puzzles as possible in 3 minutes.", + "mobileGreeting": "Hello, {param}", + "@mobileGreeting": { + "placeholders": { + "param": { + "type": "String" + } + } + }, + "mobileGreetingWithoutName": "Hello", + "mobilePrefMagnifyDraggedPiece": "Magnify dragged piece", "activityActivity": "Activity", "activityHostedALiveStream": "Hosted a live stream", "activityRankedInSwissTournament": "Ranked #{param1} in {param2}", @@ -458,7 +471,7 @@ "preferencesNotifyDevice": "Device", "preferencesBellNotificationSound": "Bell notification sound", "puzzlePuzzles": "Puzzles", - "puzzlePuzzleThemes": "Puzzle themes", + "puzzlePuzzleThemes": "Puzzle Themes", "puzzleRecommended": "Recommended", "puzzlePhases": "Phases", "puzzleMotifs": "Motifs", @@ -958,6 +971,7 @@ "latestForumPosts": "Latest forum posts", "players": "Players", "friends": "Friends", + "otherPlayers": "other players", "discussions": "Conversations", "today": "Today", "yesterday": "Yesterday", @@ -1449,6 +1463,8 @@ "descPrivateHelp": "Text that only the team members will see. If set, replaces the public description for team members.", "no": "No", "yes": "Yes", + "website": "Website", + "mobile": "Mobile", "help": "Help:", "createANewTopic": "Create a new topic", "topics": "Topics", diff --git a/lib/l10n/l10n.dart b/lib/l10n/l10n.dart index 3e8932b9ab..341eb51750 100644 --- a/lib/l10n/l10n.dart +++ b/lib/l10n/l10n.dart @@ -29,6 +29,7 @@ import 'l10n_fo.dart'; import 'l10n_fr.dart'; import 'l10n_ga.dart'; import 'l10n_gl.dart'; +import 'l10n_gsw.dart'; import 'l10n_he.dart'; import 'l10n_hi.dart'; import 'l10n_hr.dart'; @@ -56,7 +57,6 @@ import 'l10n_sq.dart'; import 'l10n_sr.dart'; import 'l10n_sv.dart'; import 'l10n_tr.dart'; -import 'l10n_tt.dart'; import 'l10n_uk.dart'; import 'l10n_vi.dart'; import 'l10n_zh.dart'; @@ -169,6 +169,7 @@ abstract class AppLocalizations { Locale('fr'), Locale('ga'), Locale('gl'), + Locale('gsw'), Locale('he'), Locale('hi'), Locale('hr'), @@ -188,7 +189,7 @@ abstract class AppLocalizations { Locale('nn'), Locale('pl'), Locale('pt'), - Locale('pt', 'PT'), + Locale('pt', 'BR'), Locale('ro'), Locale('ru'), Locale('sk'), @@ -197,7 +198,6 @@ abstract class AppLocalizations { Locale('sr'), Locale('sv'), Locale('tr'), - Locale('tt'), Locale('uk'), Locale('vi'), Locale('zh'), @@ -327,7 +327,7 @@ abstract class AppLocalizations { /// No description provided for @mobilePuzzleStormNothingToShow. /// /// In en, this message translates to: - /// **'Nothing to show. Play some runs of storm'** + /// **'Nothing to show. Play some runs of Puzzle Storm.'** String get mobilePuzzleStormNothingToShow; /// No description provided for @mobileSharePuzzle. @@ -432,6 +432,42 @@ abstract class AppLocalizations { /// **'Something went wrong.'** String get mobileSomethingWentWrong; + /// No description provided for @mobileShowResult. + /// + /// In en, this message translates to: + /// **'Show result'** + String get mobileShowResult; + + /// No description provided for @mobilePuzzleThemesSubtitle. + /// + /// In en, this message translates to: + /// **'Play puzzles from your favorite openings, or choose a theme.'** + String get mobilePuzzleThemesSubtitle; + + /// No description provided for @mobilePuzzleStormSubtitle. + /// + /// In en, this message translates to: + /// **'Solve as many puzzles as possible in 3 minutes.'** + String get mobilePuzzleStormSubtitle; + + /// No description provided for @mobileGreeting. + /// + /// In en, this message translates to: + /// **'Hello, {param}'** + String mobileGreeting(String param); + + /// No description provided for @mobileGreetingWithoutName. + /// + /// In en, this message translates to: + /// **'Hello'** + String get mobileGreetingWithoutName; + + /// No description provided for @mobilePrefMagnifyDraggedPiece. + /// + /// In en, this message translates to: + /// **'Magnify dragged piece'** + String get mobilePrefMagnifyDraggedPiece; + /// No description provided for @activityActivity. /// /// In en, this message translates to: @@ -1317,7 +1353,7 @@ abstract class AppLocalizations { /// No description provided for @puzzlePuzzleThemes. /// /// In en, this message translates to: - /// **'Puzzle themes'** + /// **'Puzzle Themes'** String get puzzlePuzzleThemes; /// No description provided for @puzzleRecommended. @@ -3426,6 +3462,12 @@ abstract class AppLocalizations { /// **'Friends'** String get friends; + /// No description provided for @otherPlayers. + /// + /// In en, this message translates to: + /// **'other players'** + String get otherPlayers; + /// No description provided for @discussions. /// /// In en, this message translates to: @@ -4968,6 +5010,18 @@ abstract class AppLocalizations { /// **'Yes'** String get yes; + /// No description provided for @website. + /// + /// In en, this message translates to: + /// **'Website'** + String get website; + + /// No description provided for @mobile. + /// + /// In en, this message translates to: + /// **'Mobile'** + String get mobile; + /// No description provided for @help. /// /// In en, this message translates to: @@ -8062,7 +8116,7 @@ class _AppLocalizationsDelegate extends LocalizationsDelegate } @override - bool isSupported(Locale locale) => ['en', 'af', 'ar', 'az', 'be', 'bg', 'bn', 'br', 'bs', 'ca', 'cs', 'da', 'de', 'el', 'eo', 'es', 'et', 'eu', 'fa', 'fi', 'fo', 'fr', 'ga', 'gl', 'he', 'hi', 'hr', 'hu', 'hy', 'id', 'it', 'ja', 'kk', 'ko', 'lb', 'lt', 'lv', 'mk', 'nb', 'nl', 'nn', 'pl', 'pt', 'ro', 'ru', 'sk', 'sl', 'sq', 'sr', 'sv', 'tr', 'tt', 'uk', 'vi', 'zh'].contains(locale.languageCode); + bool isSupported(Locale locale) => ['en', 'af', 'ar', 'az', 'be', 'bg', 'bn', 'br', 'bs', 'ca', 'cs', 'da', 'de', 'el', 'eo', 'es', 'et', 'eu', 'fa', 'fi', 'fo', 'fr', 'ga', 'gl', 'gsw', 'he', 'hi', 'hr', 'hu', 'hy', 'id', 'it', 'ja', 'kk', 'ko', 'lb', 'lt', 'lv', 'mk', 'nb', 'nl', 'nn', 'pl', 'pt', 'ro', 'ru', 'sk', 'sl', 'sq', 'sr', 'sv', 'tr', 'uk', 'vi', 'zh'].contains(locale.languageCode); @override bool shouldReload(_AppLocalizationsDelegate old) => false; @@ -8080,7 +8134,7 @@ AppLocalizations lookupAppLocalizations(Locale locale) { } case 'pt': { switch (locale.countryCode) { - case 'PT': return AppLocalizationsPtPt(); + case 'BR': return AppLocalizationsPtBr(); } break; } @@ -8118,6 +8172,7 @@ AppLocalizations lookupAppLocalizations(Locale locale) { case 'fr': return AppLocalizationsFr(); case 'ga': return AppLocalizationsGa(); case 'gl': return AppLocalizationsGl(); + case 'gsw': return AppLocalizationsGsw(); case 'he': return AppLocalizationsHe(); case 'hi': return AppLocalizationsHi(); case 'hr': return AppLocalizationsHr(); @@ -8145,7 +8200,6 @@ AppLocalizations lookupAppLocalizations(Locale locale) { case 'sr': return AppLocalizationsSr(); case 'sv': return AppLocalizationsSv(); case 'tr': return AppLocalizationsTr(); - case 'tt': return AppLocalizationsTt(); case 'uk': return AppLocalizationsUk(); case 'vi': return AppLocalizationsVi(); case 'zh': return AppLocalizationsZh(); diff --git a/lib/l10n/l10n_af.dart b/lib/l10n/l10n_af.dart index b82ae3f4c7..4e5ee67e73 100644 --- a/lib/l10n/l10n_af.dart +++ b/lib/l10n/l10n_af.dart @@ -24,81 +24,81 @@ class AppLocalizationsAf extends AppLocalizations { String get mobileSettingsTab => 'Instellings'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Jy moet ingeteken wees om hierdie bladsy te kan sien.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Stelselkleure'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Terugvoer'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'Reg'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Vibrasieterugvoer'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Volskermmodus'; @override String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Jy volg nie enige gebruikers nie.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Alle spelle'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Onlangse soektogte'; @override String get mobileClearButton => 'Clear'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Spelers met \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Geen resultate nie'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Is jy seker?'; @override String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Deel hierdie kopkrapper'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Deel spel se bronadres'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Deel PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Deel posisie as FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Wys variasies'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Verberg variasie'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Wys kommentaar'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Wil jy hierdie lopie beëindig?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Niks om te wys nie; verander asb. die filters'; @override String get mobileCancelTakebackOffer => 'Cancel takeback offer'; @@ -107,22 +107,42 @@ class AppLocalizationsAf extends AppLocalizations { String get mobileCancelDrawOffer => 'Cancel draw offer'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Wag vir opponent om aan te sluit...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Geblinddoek'; @override String get mobileLiveStreamers => 'Live streamers'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Sluit aan by \'n spel'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Vee gestoorde skuif uit'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Iets het skeefgeloop.'; + + @override + String get mobileShowResult => 'Wys resultaat'; + + @override + String get mobilePuzzleThemesSubtitle => 'Doen kopkrappers van jou gunstelingopenings, of kies \'n tema.'; + + @override + String get mobilePuzzleStormSubtitle => 'Los soveel kopkrappers moontlik op in 3 minute.'; + + @override + String mobileGreeting(String param) { + return 'Hallo, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hallo'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Aktiwiteite'; @@ -1857,6 +1877,9 @@ class AppLocalizationsAf extends AppLocalizations { @override String get friends => 'Vriende'; + @override + String get otherPlayers => 'ander spelers'; + @override String get discussions => 'Gesprekke'; @@ -2688,6 +2711,12 @@ class AppLocalizationsAf extends AppLocalizations { @override String get yes => 'Ja'; + @override + String get website => 'Webtuiste'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Help:'; diff --git a/lib/l10n/l10n_ar.dart b/lib/l10n/l10n_ar.dart index 8107aca39b..472b3a4125 100644 --- a/lib/l10n/l10n_ar.dart +++ b/lib/l10n/l10n_ar.dart @@ -9,120 +9,140 @@ class AppLocalizationsAr extends AppLocalizations { AppLocalizationsAr([String locale = 'ar']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'الرئيسية'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'ألغاز'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'أدوات'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'شاهد'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'الإعدادات'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'لعرض هذه الصفحة، قم بتسجيل الدخول.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'ألوان النظام'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'الملاحظات'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'موافق'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'التعليقات اللمسية'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'وضع ملء الشاشة'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'إخفاء واجهة المستخدم خلال التشغيل. استخدم هذا إذا كنت مزعجاً من إيماءات التنقل للنظام عند حواف الشاشة. ينطبق على المباريات في اللعبة والألغاز.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'أنت لا تتبع أي مستخدم.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'جميع الألعاب'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'عمليات البحث الأخيرة'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'مسح'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'لاعبين مع \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'لا توجد نتائج'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'هل أنت متأكد؟'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'سوف تفقد تسلقك الحالي وسيتم حفظ نتيجتك.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'لا شيء لإظهاره. العب بعض الألغاز.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'شارك هذا اللغز'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'شارك رابط المباراة'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'شارك الPGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'مشاركة الموضع كFEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'أظهر سلسلة النقلات المرشحة'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'إخفاء سلسلة النقلات المرشحة'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'عرض التعليقات'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'هل تريد إنهاء هذا التشغيل؟'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'لا شيء لإظهاره، الرجاء تغيير الفلاتر'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'إلغاء عرض الاسترداد'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'إلغاء عرض التعادل'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'في انتظار انضمام الطرف الآخر...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'عصب العينين'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'البثوث المباشرة'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'الانضمام إلى لعبة'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'مسح النقل المحفوظ'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'لقد حدث خطأ ما.'; + + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'الأنشطة'; @@ -1945,6 +1965,9 @@ class AppLocalizationsAr extends AppLocalizations { @override String get friends => 'الأصدقاء'; + @override + String get otherPlayers => 'لاعبون آخرون'; + @override String get discussions => 'المحادثات'; @@ -2696,7 +2719,7 @@ class AppLocalizationsAr extends AppLocalizations { String get editProfile => 'حرر الملف الشخصي'; @override - String get realName => 'Real name'; + String get realName => 'الاسم الحقيقي'; @override String get setFlair => 'اختيار الشارة'; @@ -2776,6 +2799,12 @@ class AppLocalizationsAr extends AppLocalizations { @override String get yes => 'نعم'; + @override + String get website => 'الموقع'; + + @override + String get mobile => 'الهاتف المحمول'; + @override String get help => 'مساعدة:'; @@ -2934,7 +2963,7 @@ class AppLocalizationsAr extends AppLocalizations { String get outsideTheBoard => 'خارج الرقعة'; @override - String get allSquaresOfTheBoard => 'All squares of the board'; + String get allSquaresOfTheBoard => 'جميع مربعات اللوح'; @override String get onSlowGames => 'في المباريات البطيئة'; diff --git a/lib/l10n/l10n_az.dart b/lib/l10n/l10n_az.dart index c56c02dfc4..8ab787334a 100644 --- a/lib/l10n/l10n_az.dart +++ b/lib/l10n/l10n_az.dart @@ -71,7 +71,7 @@ class AppLocalizationsAz extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsAz extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Aktivlik'; @@ -1855,6 +1875,9 @@ class AppLocalizationsAz extends AppLocalizations { @override String get friends => 'Dostlar'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Söhbətlərlər'; @@ -2686,6 +2709,12 @@ class AppLocalizationsAz extends AppLocalizations { @override String get yes => 'Bəli'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Kömək:'; diff --git a/lib/l10n/l10n_be.dart b/lib/l10n/l10n_be.dart index 0a7a98e573..4881fc737d 100644 --- a/lib/l10n/l10n_be.dart +++ b/lib/l10n/l10n_be.dart @@ -71,7 +71,7 @@ class AppLocalizationsBe extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsBe extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Актыўнасць'; @@ -1901,6 +1921,9 @@ class AppLocalizationsBe extends AppLocalizations { @override String get friends => 'Сябры'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Размовы'; @@ -2732,6 +2755,12 @@ class AppLocalizationsBe extends AppLocalizations { @override String get yes => 'Так'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Дапамога:'; diff --git a/lib/l10n/l10n_bg.dart b/lib/l10n/l10n_bg.dart index e8c9482cd2..4d6c9a7e35 100644 --- a/lib/l10n/l10n_bg.dart +++ b/lib/l10n/l10n_bg.dart @@ -15,7 +15,7 @@ class AppLocalizationsBg extends AppLocalizations { String get mobilePuzzlesTab => 'Задачи'; @override - String get mobileToolsTab => 'Инструменти'; + String get mobileToolsTab => 'Анализ'; @override String get mobileWatchTab => 'Гледай'; @@ -24,22 +24,22 @@ class AppLocalizationsBg extends AppLocalizations { String get mobileSettingsTab => 'Настройки'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'За да видите тази страница, трябва да влезете в профила си.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Системни цветове'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Отзиви'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'ОК'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Вибрация при докосване'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Режим \"Цял екран\"'; @override String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; @@ -48,13 +48,13 @@ class AppLocalizationsBg extends AppLocalizations { String get mobileNotFollowingAnyUser => 'You are not following any user.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Всички игри'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Последни търсения'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Изчисти'; @override String mobilePlayersMatchingSearchTerm(String param) { @@ -62,37 +62,37 @@ class AppLocalizationsBg extends AppLocalizations { } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Няма резултати'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Сигурни ли сте?'; @override String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Сподели тази задача'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Сподели URL на играта'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Сподели PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Сподели позицията във формат FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Покажи вариациите'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Скрий вариацията'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Покажи коментарите'; @override String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; @@ -122,7 +122,27 @@ class AppLocalizationsBg extends AppLocalizations { String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Възникна грешка.'; + + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Дейност'; @@ -1857,6 +1877,9 @@ class AppLocalizationsBg extends AppLocalizations { @override String get friends => 'Приятели'; + @override + String get otherPlayers => 'други играчи'; + @override String get discussions => 'Разговори'; @@ -2688,6 +2711,12 @@ class AppLocalizationsBg extends AppLocalizations { @override String get yes => 'Да'; + @override + String get website => 'Уебсайт'; + + @override + String get mobile => 'Мобилен'; + @override String get help => 'Помощ:'; diff --git a/lib/l10n/l10n_bn.dart b/lib/l10n/l10n_bn.dart index aa16f7254e..36ed6689cb 100644 --- a/lib/l10n/l10n_bn.dart +++ b/lib/l10n/l10n_bn.dart @@ -71,7 +71,7 @@ class AppLocalizationsBn extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsBn extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'কার্যকলাপ'; @@ -1857,6 +1877,9 @@ class AppLocalizationsBn extends AppLocalizations { @override String get friends => 'বন্ধুরা'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'বার্তাগুলি'; @@ -2688,6 +2711,12 @@ class AppLocalizationsBn extends AppLocalizations { @override String get yes => 'হ্যা'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'সাহায্য'; diff --git a/lib/l10n/l10n_br.dart b/lib/l10n/l10n_br.dart index 8736a38a6f..859cba0240 100644 --- a/lib/l10n/l10n_br.dart +++ b/lib/l10n/l10n_br.dart @@ -71,7 +71,7 @@ class AppLocalizationsBr extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsBr extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Obererezhioù diwezhañ'; @@ -785,7 +805,7 @@ class AppLocalizationsBr extends AppLocalizations { String get puzzlePuzzles => 'Poelladennoù'; @override - String get puzzlePuzzleThemes => 'Puzzle themes'; + String get puzzlePuzzleThemes => 'Puzzle Themes'; @override String get puzzleRecommended => 'Recommended'; @@ -1909,6 +1929,9 @@ class AppLocalizationsBr extends AppLocalizations { @override String get friends => 'Mignoned'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Kaozeadennoù'; @@ -2740,6 +2763,12 @@ class AppLocalizationsBr extends AppLocalizations { @override String get yes => 'Ya'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Sikour:'; diff --git a/lib/l10n/l10n_bs.dart b/lib/l10n/l10n_bs.dart index ad86732406..59c21e3501 100644 --- a/lib/l10n/l10n_bs.dart +++ b/lib/l10n/l10n_bs.dart @@ -71,7 +71,7 @@ class AppLocalizationsBs extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsBs extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Aktivnost'; @@ -1879,6 +1899,9 @@ class AppLocalizationsBs extends AppLocalizations { @override String get friends => 'Prijatelji'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Diskusije'; @@ -2710,6 +2733,12 @@ class AppLocalizationsBs extends AppLocalizations { @override String get yes => 'Da'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Pomoć:'; diff --git a/lib/l10n/l10n_ca.dart b/lib/l10n/l10n_ca.dart index 51bd0c0a40..da53e6374b 100644 --- a/lib/l10n/l10n_ca.dart +++ b/lib/l10n/l10n_ca.dart @@ -24,105 +24,125 @@ class AppLocalizationsCa extends AppLocalizations { String get mobileSettingsTab => 'Configuració'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Has d\'estar connectat per veure aquesta pàgina.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Colors del sistema'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Suggeriments'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'D\'acord'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Resposta hàptica'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Mode immersiu'; @override String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'No estàs seguint a cap usuari.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Totes les partides'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Cerques recents'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Neteja'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Jugadors amb \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Sense resultats'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Estàs segur?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Perdreu la vostra ratxa i la vostra puntuació es guardarà.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Res a mostrar. Fes algunes rondes al Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Comparteix aquest problema'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Comparteix l\'enllaç a la partida'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Comparteix PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Comparteix la posició com a FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Mostra les variacions'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Amaga les variacions'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Mostra comentaris'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Voleu acabar aquesta ronda?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Res a mostrar, si us plau canvieu els filtres'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Anul·la la petició per desfer la jugada'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Anul·la la petició de taules'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Esperant que s\'uneixi l\'adversari...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'A la cega'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Retransmissors en directe'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Unir-se a una partida'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Elimina la jugada guardada'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Alguna cosa ha anat malament.'; + + @override + String get mobileShowResult => 'Mostra el resultat'; + + @override + String get mobilePuzzleThemesSubtitle => 'Resoleu problemes de les vostres obertures preferides o seleccioneu una temàtica.'; + + @override + String get mobilePuzzleStormSubtitle => 'Resoleu el màxim nombre de problemes en 3 minuts.'; + + @override + String mobileGreeting(String param) { + return 'Hola, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hola'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Activitat'; @@ -1857,6 +1877,9 @@ class AppLocalizationsCa extends AppLocalizations { @override String get friends => 'Amics'; + @override + String get otherPlayers => 'altres jugadors'; + @override String get discussions => 'Missatges'; @@ -2688,6 +2711,12 @@ class AppLocalizationsCa extends AppLocalizations { @override String get yes => 'Sí'; + @override + String get website => 'Lloc web'; + + @override + String get mobile => 'Mòbil'; + @override String get help => 'Ajuda:'; diff --git a/lib/l10n/l10n_cs.dart b/lib/l10n/l10n_cs.dart index 4d10cb4c05..eaef3e5109 100644 --- a/lib/l10n/l10n_cs.dart +++ b/lib/l10n/l10n_cs.dart @@ -71,7 +71,7 @@ class AppLocalizationsCs extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsCs extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Aktivita'; @@ -609,7 +629,7 @@ class AppLocalizationsCs extends AppLocalizations { String get preferencesShowPlayerRatings => 'Zobrazit hodnocení hráčů'; @override - String get preferencesShowFlairs => 'Zobrazit hráčův rating'; + String get preferencesShowFlairs => 'Zobrazovat ikony hráčů'; @override String get preferencesExplainShowPlayerRatings => 'Toto umožňuje skrýt rating z webových stránek, což pomůže soustředit se pouze na šachy. Hodnocené hry budou mít stále dopad na Váš rating.'; @@ -1901,6 +1921,9 @@ class AppLocalizationsCs extends AppLocalizations { @override String get friends => 'Přátelé'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Konverzace'; @@ -2732,6 +2755,12 @@ class AppLocalizationsCs extends AppLocalizations { @override String get yes => 'Ano'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Nápověda:'; diff --git a/lib/l10n/l10n_da.dart b/lib/l10n/l10n_da.dart index a51b6a580c..e23dcef0b7 100644 --- a/lib/l10n/l10n_da.dart +++ b/lib/l10n/l10n_da.dart @@ -24,105 +24,125 @@ class AppLocalizationsDa extends AppLocalizations { String get mobileSettingsTab => 'Indstillinger'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Du skal være logget ind for at se denne side.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Systemfarver'; @override String get mobileFeedbackButton => 'Feedback'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'Ok'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Haptisk feedback'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Fordybelsestilstand'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Skjul systemets brugergrænseflade, mens du spiller. Brug denne funktion, hvis du er generet af systemets navigationsbevægelser i kanterne af skærmen. Gælder for parti- og Puzzle Storm-skærme.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Du følger ikke nogen brugere.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Alle partier'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Seneste søgninger'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Ryd'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Spillere med \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Ingen resultater'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Er du sikker?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Du vil miste din nuværende stime og din score vil blive gemt.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Intet at vise. Spil nogle runder af Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Del denne opgave'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Del partiets URL'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Del PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Del position som FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Vis variationer'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Skjul variation'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Vis kommentarer'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Vil du afslutte dette løb?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Intet at vise, ændr venligst filtre'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Annuller tilbud om tilbagetagelse'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Træk tilbud om remis tilbage'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Venter på at modstander slutter sig til...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Bind for øjnene'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Live-streamere'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Deltag i et parti'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Ryd gemt træk'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Noget gik galt.'; + + @override + String get mobileShowResult => 'Vis resultat'; + + @override + String get mobilePuzzleThemesSubtitle => 'Spil opgaver fra dine foretrukne åbninger, eller vælg et tema.'; + + @override + String get mobilePuzzleStormSubtitle => 'Løs så mange opgaver som muligt på 3 minutter.'; + + @override + String mobileGreeting(String param) { + return 'Hej, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hej'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Aktivitet'; @@ -605,7 +625,7 @@ class AppLocalizationsDa extends AppLocalizations { String get preferencesSoundWhenTimeGetsCritical => 'Lyd, når tiden bliver kritisk'; @override - String get preferencesGiveMoreTime => 'Give mere tid'; + String get preferencesGiveMoreTime => 'Giv mere tid'; @override String get preferencesGameBehavior => 'Spiladfærd'; @@ -632,7 +652,7 @@ class AppLocalizationsDa extends AppLocalizations { String get preferencesInCasualGamesOnly => 'Kun i ikke-ratede spil'; @override - String get preferencesPromoteToQueenAutomatically => 'Forfrem til Dronning automatisk'; + String get preferencesPromoteToQueenAutomatically => 'Forfrem til dronning automatisk'; @override String get preferencesExplainPromoteToQueenAutomatically => 'Hold -tasten nede, mens du forfremmer for midlertidigt at deaktivere auto-forfremmelse'; @@ -1857,6 +1877,9 @@ class AppLocalizationsDa extends AppLocalizations { @override String get friends => 'Venner'; + @override + String get otherPlayers => 'andre spillere'; + @override String get discussions => 'Samtaler'; @@ -2688,6 +2711,12 @@ class AppLocalizationsDa extends AppLocalizations { @override String get yes => 'Ja'; + @override + String get website => 'Websted'; + + @override + String get mobile => 'Mobil'; + @override String get help => 'Hjælp:'; diff --git a/lib/l10n/l10n_de.dart b/lib/l10n/l10n_de.dart index cf39a6a00e..da502af1fd 100644 --- a/lib/l10n/l10n_de.dart +++ b/lib/l10n/l10n_de.dart @@ -9,7 +9,7 @@ class AppLocalizationsDe extends AppLocalizations { AppLocalizationsDe([String locale = 'de']) : super(locale); @override - String get mobileHomeTab => 'Startseite'; + String get mobileHomeTab => 'Start'; @override String get mobilePuzzlesTab => 'Aufgaben'; @@ -24,10 +24,10 @@ class AppLocalizationsDe extends AppLocalizations { String get mobileSettingsTab => 'Einstellungen'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Du musst eingeloggt sein, um diese Seite anzuzeigen.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Systemfarben'; @override String get mobileFeedbackButton => 'Feedback'; @@ -36,93 +36,113 @@ class AppLocalizationsDe extends AppLocalizations { String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Haptisches Feedback'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Immersiver Modus'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'System-Benutzeroberfläche während des Spielens ausblenden. Nutze diese Option, wenn dich die Navigationsverhalten des Systems an den Bildschirmrändern stören. Gilt für Spiel- und Puzzle-Storm-Bildschirme.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Du folgst keinem Nutzer.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Alle Partien'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Letzte Suchen'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Löschen'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Spieler mit \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Keine Ergebnisse'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Bist du sicher?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Du verlierst deine aktuelle Serie und dein Ergebnis wird gespeichert.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nichts anzuzeigen. Spiele ein paar Runden Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Teile diese Aufgabe'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Link der Partie teilen'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'PGN teilen'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Stellung als FEN teilen'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Varianten anzeigen'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Variante ausblenden'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Kommentare anzeigen'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Möchtest du diesen Durchlauf beenden?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Nichts anzuzeigen, bitte passe deine Filter an'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Zugzurücknahme-Angebot abbrechen'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Remisangebot zurücknehmen'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Warte auf Beitritt eines Gegners...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Blind spielen'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Livestreamer'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Einer Partie beitreten'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Gespeicherten Zug löschen'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Etwas ist schiefgelaufen.'; + + @override + String get mobileShowResult => 'Ergebnis anzeigen'; + + @override + String get mobilePuzzleThemesSubtitle => 'Spiele Aufgaben aus deinen Lieblings-Öffnungen oder wähle ein Thema.'; + + @override + String get mobilePuzzleStormSubtitle => 'Löse in 3 Minuten so viele Aufgaben wie möglich.'; + + @override + String mobileGreeting(String param) { + return 'Hallo, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hallo'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Verlauf'; @@ -1857,6 +1877,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get friends => 'Freunde'; + @override + String get otherPlayers => 'andere Spieler'; + @override String get discussions => 'Konversationen'; @@ -2688,6 +2711,12 @@ class AppLocalizationsDe extends AppLocalizations { @override String get yes => 'Ja'; + @override + String get website => 'Webseite'; + + @override + String get mobile => 'Handy'; + @override String get help => 'Hilfe:'; diff --git a/lib/l10n/l10n_el.dart b/lib/l10n/l10n_el.dart index 19e06e7139..d932457dea 100644 --- a/lib/l10n/l10n_el.dart +++ b/lib/l10n/l10n_el.dart @@ -71,7 +71,7 @@ class AppLocalizationsEl extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsEl extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Εμφάνιση αποτελέσματος'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Λύστε όσους γρίφους όσο το δυνατόν, σε 3 λεπτά.'; + + @override + String mobileGreeting(String param) { + return 'Καλωσορίσατε, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Καλωσορίσατε'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Δραστηριότητα'; @@ -1857,6 +1877,9 @@ class AppLocalizationsEl extends AppLocalizations { @override String get friends => 'Φίλοι'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Συζητήσεις'; @@ -2688,6 +2711,12 @@ class AppLocalizationsEl extends AppLocalizations { @override String get yes => 'Ναι'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Βοήθεια:'; diff --git a/lib/l10n/l10n_en.dart b/lib/l10n/l10n_en.dart index a1b24e854f..949d04a151 100644 --- a/lib/l10n/l10n_en.dart +++ b/lib/l10n/l10n_en.dart @@ -71,7 +71,7 @@ class AppLocalizationsEn extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsEn extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Activity'; @@ -734,7 +754,7 @@ class AppLocalizationsEn extends AppLocalizations { String get puzzlePuzzles => 'Puzzles'; @override - String get puzzlePuzzleThemes => 'Puzzle themes'; + String get puzzlePuzzleThemes => 'Puzzle Themes'; @override String get puzzleRecommended => 'Recommended'; @@ -1855,6 +1875,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get friends => 'Friends'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Conversations'; @@ -2686,6 +2709,12 @@ class AppLocalizationsEn extends AppLocalizations { @override String get yes => 'Yes'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Help:'; @@ -4703,6 +4732,134 @@ class AppLocalizationsEn extends AppLocalizations { class AppLocalizationsEnUs extends AppLocalizationsEn { AppLocalizationsEnUs(): super('en_US'); + @override + String get mobileHomeTab => 'Home'; + + @override + String get mobilePuzzlesTab => 'Puzzles'; + + @override + String get mobileToolsTab => 'Tools'; + + @override + String get mobileWatchTab => 'Watch'; + + @override + String get mobileSettingsTab => 'Settings'; + + @override + String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + + @override + String get mobileSystemColors => 'System colors'; + + @override + String get mobileFeedbackButton => 'Feedback'; + + @override + String get mobileOkButton => 'OK'; + + @override + String get mobileSettingsHapticFeedback => 'Haptic feedback'; + + @override + String get mobileSettingsImmersiveMode => 'Immersive mode'; + + @override + String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + + @override + String get mobileNotFollowingAnyUser => 'You are not following any user.'; + + @override + String get mobileAllGames => 'All games'; + + @override + String get mobileRecentSearches => 'Recent searches'; + + @override + String get mobileClearButton => 'Clear'; + + @override + String get mobileNoSearchResults => 'No results'; + + @override + String get mobileAreYouSure => 'Are you sure?'; + + @override + String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak, but your score will be saved.'; + + @override + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; + + @override + String get mobileSharePuzzle => 'Share this puzzle'; + + @override + String get mobileShareGameURL => 'Share game URL'; + + @override + String get mobileShareGamePGN => 'Share PGN'; + + @override + String get mobileSharePositionAsFEN => 'Share position as FEN'; + + @override + String get mobileShowVariations => 'Show variations'; + + @override + String get mobileHideVariation => 'Hide variation'; + + @override + String get mobileShowComments => 'Show comments'; + + @override + String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + + @override + String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + + @override + String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + + @override + String get mobileCancelDrawOffer => 'Cancel draw offer'; + + @override + String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + + @override + String get mobileBlindfoldMode => 'Blindfold'; + + @override + String get mobileLiveStreamers => 'Live streamers'; + + @override + String get mobileCustomGameJoinAGame => 'Join a game'; + + @override + String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + + @override + String get mobileSomethingWentWrong => 'Something went wrong.'; + + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + @override String get activityActivity => 'Activity'; @@ -5313,7 +5470,7 @@ class AppLocalizationsEnUs extends AppLocalizationsEn { String get puzzlePuzzles => 'Chess Puzzles'; @override - String get puzzlePuzzleThemes => 'Puzzle themes'; + String get puzzlePuzzleThemes => 'Puzzle Themes'; @override String get puzzleRecommended => 'Recommended'; @@ -6436,6 +6593,9 @@ class AppLocalizationsEnUs extends AppLocalizationsEn { @override String get friends => 'Friends'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Conversations'; @@ -7267,6 +7427,12 @@ class AppLocalizationsEnUs extends AppLocalizationsEn { @override String get yes => 'Yes'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Help:'; diff --git a/lib/l10n/l10n_eo.dart b/lib/l10n/l10n_eo.dart index b57573054e..e1f48e2589 100644 --- a/lib/l10n/l10n_eo.dart +++ b/lib/l10n/l10n_eo.dart @@ -9,69 +9,69 @@ class AppLocalizationsEo extends AppLocalizations { AppLocalizationsEo([String locale = 'eo']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Hejmo'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Puzloj'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Iloj'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Spekti'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Agordoj'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Vi devas esti ensalutata por spekti ĉi tiun paĝon.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Sistemaj koloroj'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Prikomentado'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'Bone'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Tuŝ-retrokuplado'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Enakviĝa reĝimo'; @override String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Vi ne abonas ĉiun uzanton.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Ĉiuj ludoj'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Lastaj serĉoj'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Malplenigi'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Ludantanto kun \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Neniu rezultoj'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Ĉu vi certas?'; @override String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsEo extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Aktiveco'; @@ -1616,10 +1636,10 @@ class AppLocalizationsEo extends AppLocalizations { String get deleteFromHere => 'Forigi ekde tie ĉi'; @override - String get collapseVariations => 'Collapse variations'; + String get collapseVariations => 'Malatendi variaĵojn'; @override - String get expandVariations => 'Expand variations'; + String get expandVariations => 'Etendi variaĵojn'; @override String get forceVariation => 'Devigi variaĵon'; @@ -1857,6 +1877,9 @@ class AppLocalizationsEo extends AppLocalizations { @override String get friends => 'Amikoj'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Konversacioj'; @@ -2098,7 +2121,7 @@ class AppLocalizationsEo extends AppLocalizations { String get standard => 'Normale'; @override - String get customPosition => 'Custom position'; + String get customPosition => 'Tajlora pozicio'; @override String get unlimited => 'Senlime'; @@ -2608,7 +2631,7 @@ class AppLocalizationsEo extends AppLocalizations { String get editProfile => 'Redakti profilon'; @override - String get realName => 'Real name'; + String get realName => 'Fakta nomo'; @override String get setFlair => 'Agordi viaj emoĝio'; @@ -2668,7 +2691,7 @@ class AppLocalizationsEo extends AppLocalizations { String get puzzles => 'Puzloj'; @override - String get onlineBots => 'Online bots'; + String get onlineBots => 'Retaj robotoj'; @override String get name => 'Nomo'; @@ -2688,6 +2711,12 @@ class AppLocalizationsEo extends AppLocalizations { @override String get yes => 'Jes'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Helpo:'; @@ -2846,7 +2875,7 @@ class AppLocalizationsEo extends AppLocalizations { String get outsideTheBoard => 'Ekstere de la tabulo'; @override - String get allSquaresOfTheBoard => 'All squares of the board'; + String get allSquaresOfTheBoard => 'Ĉiuj kvadratoj de la ŝaktabulo'; @override String get onSlowGames => 'Ĉe malrapidaj ludoj'; @@ -3180,10 +3209,10 @@ class AppLocalizationsEo extends AppLocalizations { String get cyclePreviousOrNextVariation => 'Cickligi antaŭan/sekvan variaĵon'; @override - String get toggleGlyphAnnotations => 'Baskuligi signobildan prinotadon'; + String get toggleGlyphAnnotations => 'Baskuligi movajn prinotaĵojn'; @override - String get togglePositionAnnotations => 'Toggle position annotations'; + String get togglePositionAnnotations => 'Baskuligi poziciajn prinotaĵojn'; @override String get variationArrowsInfo => 'Variaĵaj sagoj lasi vin navigi neutile la movlisto.'; @@ -3442,22 +3471,22 @@ class AppLocalizationsEo extends AppLocalizations { String get backgroundImageUrl => 'Malantaŭografikaĵo URL:'; @override - String get board => 'Board'; + String get board => 'Ŝaktabulo'; @override - String get size => 'Size'; + String get size => 'Amplekso'; @override - String get opacity => 'Opacity'; + String get opacity => 'Opakeco'; @override - String get brightness => 'Brightness'; + String get brightness => 'Lumeco'; @override - String get hue => 'Hue'; + String get hue => 'Kolortono'; @override - String get boardReset => 'Reset colours to default'; + String get boardReset => 'Restarigi kolorojn al la defaŭlta'; @override String get pieceSet => 'Ŝakpecaro'; @@ -4046,7 +4075,7 @@ class AppLocalizationsEo extends AppLocalizations { String get lichessPatronInfo => 'Lichess estas almoza kaj tute libera malfermitkoda programaro.\nĈiu funkciada elspezo, ellaborado, kaj enhavo estas financita sole de uzantajn donacojn.'; @override - String get nothingToSeeHere => 'Nothing to see here at the moment.'; + String get nothingToSeeHere => 'Nenio videbla ĉi tie nuntempe.'; @override String opponentLeftCounter(int count) { diff --git a/lib/l10n/l10n_es.dart b/lib/l10n/l10n_es.dart index db4cfec3c3..7f65a608d6 100644 --- a/lib/l10n/l10n_es.dart +++ b/lib/l10n/l10n_es.dart @@ -21,108 +21,128 @@ class AppLocalizationsEs extends AppLocalizations { String get mobileWatchTab => 'Ver'; @override - String get mobileSettingsTab => 'Preferencias'; + String get mobileSettingsTab => 'Ajustes'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Debes iniciar sesión para ver esta página.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Colores del sistema'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Comentarios'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'Aceptar'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Respuesta táctil'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Modo inmersivo'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Ocultar la interfaz del sistema durante la partida. Usa esto si te molestan los iconos de navegación del sistema en los bordes de la pantalla. Se aplica a las pantallas del juego y de Puzzle Storm.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'No estás siguiendo a ningún usuario.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Todas las partidas'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Búsquedas recientes'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Limpiar'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Jugadores con \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'No hay resultados'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => '¿Estás seguro?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Perderás tu racha actual y tu puntuación será guardada.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nada que mostrar. Juega algunas rondas de Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Compartir este ejercicio'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Compartir enlace de la partida'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Compartir PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Compartir posición como FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Mostrar variaciones'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Ocultar variación'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Mostrar comentarios'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => '¿Quieres finalizar esta ronda?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Nada que mostrar, por favor cambia los filtros'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Cancelar oferta de deshacer movimiento'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Cancelar ofertas de tablas'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Esperando a que se una un oponente...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'A ciegas'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Presentadores en vivo'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Únete a una partida'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Borrar movimiento guardado'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Algo salió mal.'; + + @override + String get mobileShowResult => 'Ver resultado'; + + @override + String get mobilePuzzleThemesSubtitle => 'Realiza ejercicios de tus aperturas favoritas o elige un tema.'; + + @override + String get mobilePuzzleStormSubtitle => 'Resuelve tantos ejercicios como puedas en 3 minutos.'; + + @override + String mobileGreeting(String param) { + return 'Hola $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hola'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Actividad'; @@ -132,7 +152,7 @@ class AppLocalizationsEs extends AppLocalizations { @override String activityRankedInSwissTournament(String param1, String param2) { - return '#$param1 en la clasificación en $param2'; + return '#$param1 En la Clasificatoria de $param2'; } @override @@ -1857,6 +1877,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get friends => 'Amigos'; + @override + String get otherPlayers => 'otros jugadores'; + @override String get discussions => 'Conversaciones'; @@ -2688,6 +2711,12 @@ class AppLocalizationsEs extends AppLocalizations { @override String get yes => 'Sí'; + @override + String get website => 'Sitio web'; + + @override + String get mobile => 'Móvil'; + @override String get help => 'Ayuda:'; diff --git a/lib/l10n/l10n_et.dart b/lib/l10n/l10n_et.dart index 93dc3277dd..fe1ec9d9f3 100644 --- a/lib/l10n/l10n_et.dart +++ b/lib/l10n/l10n_et.dart @@ -71,7 +71,7 @@ class AppLocalizationsEt extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsEt extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Aktiivsus'; @@ -1857,6 +1877,9 @@ class AppLocalizationsEt extends AppLocalizations { @override String get friends => 'Sõbrad'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Vestlused'; @@ -2688,6 +2711,12 @@ class AppLocalizationsEt extends AppLocalizations { @override String get yes => 'Jah'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Abi:'; diff --git a/lib/l10n/l10n_eu.dart b/lib/l10n/l10n_eu.dart index f43f5126fb..f3e070aab1 100644 --- a/lib/l10n/l10n_eu.dart +++ b/lib/l10n/l10n_eu.dart @@ -71,7 +71,7 @@ class AppLocalizationsEu extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsEu extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Jarduera'; @@ -1857,6 +1877,9 @@ class AppLocalizationsEu extends AppLocalizations { @override String get friends => 'Lagunak'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Eztabaidak'; @@ -2688,6 +2711,12 @@ class AppLocalizationsEu extends AppLocalizations { @override String get yes => 'Bai'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Laguntza:'; diff --git a/lib/l10n/l10n_fa.dart b/lib/l10n/l10n_fa.dart index 6d49019729..f250133286 100644 --- a/lib/l10n/l10n_fa.dart +++ b/lib/l10n/l10n_fa.dart @@ -24,111 +24,131 @@ class AppLocalizationsFa extends AppLocalizations { String get mobileSettingsTab => 'تنظیمات'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'برای دیدن این صفحه باید وارد حساب‌تان شده باشید.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'رنگ‌های دستگاه'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'بازخوراند'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'باشه'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'بازخوراند لمسی'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'حالت غوطه‌ور'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'هنگام بازی، میانای کاربری دستگاه را پنهان کنید. اگر حرکت‌های ناوبری دستگاه در لبه‌های پرده آزارتان می‌دهد، از این استفاده کنید. برای پرده‌های بازی و معماباران (Puzzle Storm) کاربرد دارد.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'شما هیچ کاربری را نمی‌دنبالید.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'همه بازی‌ها'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'جستجوهای اخیر'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'پاکسازی'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'بازیکنانِ «$param»'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'بدون نتیجه'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'مطمئنید؟'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'شما ریسه فعلی‌تان را خواهید باخت و امتیازتان ذخیره خواهد شد.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'چیزی برای نمایش نیست، چند دور معماباران بازی کنید.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'همرسانی این معما'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'همرسانی وب‌نشانی بازی'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'همرسانی PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'همرسانی وضعیت، به شکل FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'باز کردن شاخه‌ها'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'بستن شاخه‌ها'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'نمایش نظرها'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'می‌خواهید این دور را پایان دهید؟'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'چیزی برای نمایش نیست، لطفا پالاب‌گرها را تغییر دهید'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'رد درخواست برگرداندن'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'رد پیشنهاد تساوی'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'در انتظار آمدن حریف...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'چشم‌بسته'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'بَرخَط-محتواسازان زنده'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'به بازی بپیوندید'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'پاکیدن حرکت ذخیره‌شده'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'مشکلی پیش آمد.'; + + @override + String get mobileShowResult => 'نمایش نتیجه'; + + @override + String get mobilePuzzleThemesSubtitle => 'معماهایی را از گشایش دلخواه‌تان بازی کنید، یا موضوعی را برگزینید.'; + + @override + String get mobilePuzzleStormSubtitle => 'در ۳ دقیقه، هر چندتا معما که می‌توانید، حل کنید.'; + + @override + String mobileGreeting(String param) { + return 'درود، $param'; + } + + @override + String get mobileGreetingWithoutName => 'سلام'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'فعالیت'; @override - String get activityHostedALiveStream => 'یک پخش زنده میزبانی کرد'; + String get activityHostedALiveStream => 'میزبان پخش زنده بود'; @override String activityRankedInSwissTournament(String param1, String param2) { @@ -154,8 +174,8 @@ class AppLocalizationsFa extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count پوزیسیون را در $param2 تمرین کرد', - one: '$count وضعیت را در $param2 تمرین کرد', + other: '$count وضعیت تمرین‌شده در $param2', + one: '$count وضعیت تمرین‌شده در $param2', ); return '$_temp0'; } @@ -395,7 +415,7 @@ class AppLocalizationsFa extends AppLocalizations { String get challengeDeclineRated => 'لطفا به جایش، پیشنهاد بازی رسمی بده.'; @override - String get challengeDeclineCasual => 'لطفا به جایش، پیشنهاد بازی غیررسمی بده.'; + String get challengeDeclineCasual => 'لطفا به جایش، پیشنهاد بازی نارسمی بده.'; @override String get challengeDeclineStandard => 'الان پیشنهاد بازی‌های شطرنج‌گونه را نمی‌پذیرم.'; @@ -422,7 +442,7 @@ class AppLocalizationsFa extends AppLocalizations { String get patronDonate => 'کمک مالی'; @override - String get patronLichessPatron => 'پشتیبانِ Lichess'; + String get patronLichessPatron => 'یاورِ Lichess'; @override String perfStatPerfStats(String param) { @@ -584,7 +604,7 @@ class AppLocalizationsFa extends AppLocalizations { String get preferencesDisplayBoardResizeHandle => 'نمایش دستگیره برای تغییر اندازه صفحه'; @override - String get preferencesOnlyOnInitialPosition => 'فقط در آغاز بازی'; + String get preferencesOnlyOnInitialPosition => 'فقط در وضعیت آغازین'; @override String get preferencesInGameOnly => 'تنها در بازی'; @@ -629,10 +649,10 @@ class AppLocalizationsFa extends AppLocalizations { String get preferencesTakebacksWithOpponentApproval => 'پس گرفتن حرکت (با تایید حریف)'; @override - String get preferencesInCasualGamesOnly => 'در بازی های غیررسمی'; + String get preferencesInCasualGamesOnly => 'فقط در بازی‌های نارسمی'; @override - String get preferencesPromoteToQueenAutomatically => 'ترفیع کردن به وزیر به صورت خودکار'; + String get preferencesPromoteToQueenAutomatically => 'ارتقا خودکار به وزیر'; @override String get preferencesExplainPromoteToQueenAutomatically => ' را در هنگام تبلیغ بزنید تا به طور موقت تبلیغات خودکار را غیرفعال کنید'; @@ -641,7 +661,7 @@ class AppLocalizationsFa extends AppLocalizations { String get preferencesWhenPremoving => 'در زمان پیش حرکت'; @override - String get preferencesClaimDrawOnThreefoldRepetitionAutomatically => 'ادعای تساوی در تکرار سه گانه به طور خودکار'; + String get preferencesClaimDrawOnThreefoldRepetitionAutomatically => 'ادعای خودکار تساوی، در تکرار سه‌گانه'; @override String get preferencesWhenTimeRemainingLessThanThirtySeconds => 'وقتی زمان باقی مانده کمتر از سی ثانیه است'; @@ -650,7 +670,7 @@ class AppLocalizationsFa extends AppLocalizations { String get preferencesMoveConfirmation => 'تایید حرکت'; @override - String get preferencesExplainCanThenBeTemporarilyDisabled => 'می‌توانید در طول بازی منوی تخته را غیرفعال کنید'; + String get preferencesExplainCanThenBeTemporarilyDisabled => 'می‌تواند هنگام بازی با «گزینگان صفحه‌بازی» خاموش شود'; @override String get preferencesInCorrespondenceGames => 'در حال بازی مکاتبه ای'; @@ -662,13 +682,13 @@ class AppLocalizationsFa extends AppLocalizations { String get preferencesConfirmResignationAndDrawOffers => 'نیاز به تایید دوباره؛ زمانی که تسلیم می شوید یا پیشنهاد تساوی می دهید'; @override - String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'روش انجام شاه قلعه'; + String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'روش قلعه‌روی'; @override - String get preferencesCastleByMovingTwoSquares => 'به وسیله ی دو خانه حرکت دادن شاه'; + String get preferencesCastleByMovingTwoSquares => 'شاه را دو خانه حرکت دهید'; @override - String get preferencesCastleByMovingOntoTheRook => 'به وسیله ی حرکت دادن شاه روی خانه رخ'; + String get preferencesCastleByMovingOntoTheRook => 'شاه را روی رخ گذارید'; @override String get preferencesInputMovesWithTheKeyboard => 'ورود حرکات با استفاده از صفحه کلید'; @@ -734,7 +754,7 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzlePuzzles => 'معماها'; @override - String get puzzlePuzzleThemes => 'معماهای دسته‌بندی شده'; + String get puzzlePuzzleThemes => 'موضوع معماها'; @override String get puzzleRecommended => 'توصیه شده'; @@ -779,10 +799,10 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleYourPuzzleRatingWillNotChange => 'درجه‌بندی معمایی شما تغییری نخواهد کرد. توجه داشته باشید که معماها یک رقابت نیستند. درجه‌بندی‌تان به انتخاب بهترین معماها برای سطح مهارت فعلی‌تان کمک می‌کند.'; @override - String get puzzleFindTheBestMoveForWhite => 'بهترین حرکت برای سفید را پیدا کنید.'; + String get puzzleFindTheBestMoveForWhite => 'بهترین حرکت سفید را بیابید.'; @override - String get puzzleFindTheBestMoveForBlack => 'بهترین حرکت برای سیاه را پیدا کنید.'; + String get puzzleFindTheBestMoveForBlack => 'بهترین حرکت سیاه را بیابید.'; @override String get puzzleToGetPersonalizedPuzzles => 'دریافت معماهای شخصی‌سازی‌شده:'; @@ -826,10 +846,10 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleOpeningsYouPlayedTheMost => 'گشایش‌هایی که بیش از همه در بازی‌های امتیازی کرده‌اید'; @override - String get puzzleUseFindInPage => 'با استفاده از قابلیت \"جستجو در صفحه\" مرورگر خود گشایش محبوب خود را پیدا کنید!'; + String get puzzleUseFindInPage => 'از گزینه «جستجو در صفحه» مرورگر استفاده کنید تا گشایش دلخواه‌تان را بیابید!'; @override - String get puzzleUseCtrlF => 'از Ctrl+f برای پیدا کردن گشایش مورد علاقه خود استفاده کنید!'; + String get puzzleUseCtrlF => 'از Ctrl+f برای یابیدن گشایش دلخواه‌تان استفاده کنید!'; @override String get puzzleNotTheMove => 'این حرکت نیست!'; @@ -847,7 +867,7 @@ class AppLocalizationsFa extends AppLocalizations { @override String puzzleFromGameLink(String param) { - return 'برگرفته شده از بازی $param'; + return 'برگرفته از بازی $param'; } @override @@ -922,22 +942,22 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleFromMyGames => 'از بازی های من'; @override - String get puzzleLookupOfPlayer => 'به دنبال معماهای برگرفته‌شده از بازی‌های یک بازیکن مشخص، بگردید'; + String get puzzleLookupOfPlayer => 'به دنبال معماهای برگرفته از بازی‌های یک بازیکن مشخص، بگردید'; @override String puzzleFromXGames(String param) { - return 'معماهای برگرفته‌شده از بازی‌های $param'; + return 'معماهای برگرفته از بازی‌های $param'; } @override String get puzzleSearchPuzzles => 'جستجوی معماها'; @override - String get puzzleFromMyGamesNone => 'شما هیچ معمایی در پایگاه‌داده ندارید، اما Lichess همچنان شما را بسیار دوست دارد.\n\nبازی‌های سریع و مرسوم را انجام دهید تا بَختِتان را برای اضافه کردن یک معما از خودتان افزایش دهید!'; + String get puzzleFromMyGamesNone => 'شما هیچ معمایی در پایگاه‌داده ندارید، اما Lichess همچنان شما را بسیار دوست دارد.\n\nبازی‌های سریع و مرسوم را انجام دهید تا بَختِتان را برای افزودن معمایی از خودتان بیفزایید!'; @override String puzzleFromXGamesFound(String param1, String param2) { - return '$param1 معما در بازی‌های $param2 پیدا شد'; + return '$param1 معما در بازی‌های $param2 یافت شد'; } @override @@ -945,11 +965,11 @@ class AppLocalizationsFa extends AppLocalizations { @override String puzzlePercentSolved(String param) { - return '$param حل شده'; + return '$param حل‌شده'; } @override - String get puzzleNoPuzzlesToShow => 'هیچ موردی برای نمایش وجود ندارد، بروید و ابتدا چند معما حل کنید!'; + String get puzzleNoPuzzlesToShow => 'چیزی برای نمایش نیست، نخست بروید و چند معما حل کنید!'; @override String get puzzleImprovementAreasDescription => 'این‌ها را تمرین کنید تا روند پیشرفت خود را بهبود ببخشید!'; @@ -973,8 +993,8 @@ class AppLocalizationsFa extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count امتیاز پایین‌تر از امتیاز شما در معماها', - one: 'یک امتیاز پایین‌تر از امتیاز شما در معماها', + other: '$count امتیاز زیر درجه‌بندی معمایی‌تان', + one: 'یک امتیاز زیر درجه‌بندی معمایی‌تان', ); return '$_temp0'; } @@ -984,8 +1004,8 @@ class AppLocalizationsFa extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count امتیاز بالاتر از درجه‌بندی معمایی‌تان', - one: 'یک امتیاز بالاتر از درجه‌بندی معمایی‌تان', + other: '$count امتیاز بالای درجه‌بندی معمایی‌تان', + one: 'یک امتیاز بالای درجه‌بندی معمایی‌تان', ); return '$_temp0'; } @@ -1006,8 +1026,8 @@ class AppLocalizationsFa extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count مورد برای بازبینی', - one: '$count برای بازبینی', + other: '$count بازپخش', + one: '$count بازپخش', ); return '$_temp0'; } @@ -1016,13 +1036,13 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeAdvancedPawn => 'پیاده پیش رفته'; @override - String get puzzleThemeAdvancedPawnDescription => 'یکی از پیاده های شما در زمین حریف پیشروی کرده، گویی تهدید به ارتقا میکنه.'; + String get puzzleThemeAdvancedPawnDescription => 'یکی از پیاده‌های‌تان به اردوگاه حریف پیش‌رویده، شاید تهدید به ارتقا کند.'; @override String get puzzleThemeAdvantage => 'برتری'; @override - String get puzzleThemeAdvantageDescription => 'از شانس خود برای بدست اوردن برتری قطعی استفاده کنید. (200cp ≤ eval ≤ 600cp)'; + String get puzzleThemeAdvantageDescription => 'از بخت‌تان برای رسیدن به برتری قطعی بهره برید. (۲۰۰ص‌پ ≤ ارزیابی ≤ ۶۰۰ص‌پ)'; @override String get puzzleThemeAnastasiaMate => 'مات آناستازیا'; @@ -1067,7 +1087,7 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeBodenMateDescription => 'دو فیل به حالت ضربدری که به گوشه زمین حمله می کنند یک شاه که راهش با مهره های خودش سد شده را مات می کنند.'; @override - String get puzzleThemeCastling => 'قلعه رفتن'; + String get puzzleThemeCastling => 'قلعه‌روی'; @override String get puzzleThemeCastlingDescription => 'شاه خود را ایمن کنید و رخ خود را برای حمله مستقر کنید.'; @@ -1082,7 +1102,7 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeCrushing => 'تخریب'; @override - String get puzzleThemeCrushingDescription => 'استفاده از اشتباه حریف برای بدست آوردن مزیتی کوچک. (eval ≥ 600cp)'; + String get puzzleThemeCrushingDescription => 'تشخیص اشتباه فاحش حریف، برای رسیدن به برتری‌ای کوبنده. (ارزیابی ≥ ۶۰۰ص‌پ)'; @override String get puzzleThemeDoubleBishopMate => 'مات با دو فیل'; @@ -1100,19 +1120,19 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeEquality => 'برابری'; @override - String get puzzleThemeEqualityDescription => 'تغییر وضعیت بازنده، و تضمین تساوی یا وضعیت متعادل. (eval ≤ 200cp)'; + String get puzzleThemeEqualityDescription => 'از وضعیت باخت در‌آیید و به وضعیت تساوی یا ترازمند برسید. (ارزیابی ≤ ۲۰۰ ص‌پ)'; @override - String get puzzleThemeKingsideAttack => 'حمله به جناه شاه'; + String get puzzleThemeKingsideAttack => 'حمله به جناح شاه'; @override - String get puzzleThemeKingsideAttackDescription => 'حمله به شاه حریف زمانی که در جناه شاه قلعه رفته است.'; + String get puzzleThemeKingsideAttackDescription => 'حمله به شاه حریف، پس از آنکه آنها قلعه کوچک رفتند.'; @override - String get puzzleThemeClearance => 'پاکسازی'; + String get puzzleThemeClearance => 'آزادسازی'; @override - String get puzzleThemeClearanceDescription => 'حرکتی، اغلب سریع، برای پاک کردن صفحه جهت دنبال کردن ایده های تاکتیکی بعدی.'; + String get puzzleThemeClearanceDescription => 'حرکتی، اغلب با زمان، که خانه، عرض، ستون یا قطری را برای پیشبُرد اندیشه‌ای راهکنشی، آزاد می‌کند.'; @override String get puzzleThemeDefensiveMove => 'حرکت تدافعی'; @@ -1172,16 +1192,16 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeHookMateDescription => 'مات با یک رخ، اسب و یک پیاده در برابر یک پیاده حریف برای محدود کردن راه های فرار شاه دشمن.'; @override - String get puzzleThemeInterference => 'چنگال'; + String get puzzleThemeInterference => 'میان‌زَنِش'; @override - String get puzzleThemeInterferenceDescription => 'حرکت دادن یک مهره و حمله کردن به دو مهره هم زمان که بتوان یکی از مهره ها را گرفت، مانند حمله یک اسب به به دو تا رخ بصورت هم زمان.'; + String get puzzleThemeInterferenceDescription => 'حرکت یک مهره به میان دو مهره حریف برای بی‌دفاع کردن یک یا هر دو مهره حریف، برای نمونه گذاشتن اسبی در خانه دفاع‌شده میان دو رخ.'; @override - String get puzzleThemeIntermezzo => 'زوگزوانگ'; + String get puzzleThemeIntermezzo => 'میان‌آیند'; @override - String get puzzleThemeIntermezzoDescription => 'به جای انجام حرکت مورد انتظار، ابتدا حرکت دیگری را وارد کنید که تهدیدی فوری است که حریف باید به آن پاسخ دهد. به عنوان \"Zwischenzug\" شناخته میشود.'; + String get puzzleThemeIntermezzoDescription => 'به جای انجام حرکت موردانتظار، نخست حرکت دیگری را روید که تهدیدی فوری‌ست و حریف باید به آن پاسخ دهد. همچنین به آن «قطار میانی - Zwischenzug» یا «در میانه» می‌گویند.'; @override String get puzzleThemeKnightEndgame => 'آخربازی اسب'; @@ -1199,13 +1219,13 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeMaster => 'بازی‌های استادان'; @override - String get puzzleThemeMasterDescription => 'معماهای برگرفته‌شده از بازی‌های بازیکنان عنوان‌دار.'; + String get puzzleThemeMasterDescription => 'معماهای برگرفته از بازی‌های بازیکنان عنوان‌دار.'; @override String get puzzleThemeMasterVsMaster => 'بازی‌های استادان برابر هم'; @override - String get puzzleThemeMasterVsMasterDescription => 'معماهای برگرفته‌شده از بازی‌های بین دو بازیکن عنوان‌دار.'; + String get puzzleThemeMasterVsMasterDescription => 'معماهای برگرفته از بازی‌های میان دو بازیکن عنوان‌دار.'; @override String get puzzleThemeMate => 'کیش و مات'; @@ -1247,7 +1267,7 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeMiddlegame => 'وسط بازی'; @override - String get puzzleThemeMiddlegameDescription => 'تاکتیکی در لحظات آخر بازی.'; + String get puzzleThemeMiddlegameDescription => 'راهکنشی در مرحله دوم بازی.'; @override String get puzzleThemeOneMove => 'معمای یک-حرکتی'; @@ -1274,10 +1294,10 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemePinDescription => 'راهکنش آچمزی، که یک مهره نمی‌تواند حرکت کند، مگر اینکه به مهره ارزشمندتر پشتش حمله می‌شود.'; @override - String get puzzleThemePromotion => 'ترفیع'; + String get puzzleThemePromotion => 'ارتقا'; @override - String get puzzleThemePromotionDescription => 'یکی از پیاده های خود را به وزیر یا مهره دیگر ارتقا دهید.'; + String get puzzleThemePromotionDescription => 'یکی از پیاده‌های‌تان را به وزیر یا سواری دیگر ارتقا دهید.'; @override String get puzzleThemeQueenEndgame => 'آخربازی وزیر'; @@ -1292,10 +1312,10 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeQueenRookEndgameDescription => 'آخربازی، تنها با وزیرها، رُخ‌ها و پیاده‌ها.'; @override - String get puzzleThemeQueensideAttack => 'حمله به جناه وزیر'; + String get puzzleThemeQueensideAttack => 'حمله به جناح وزیر'; @override - String get puzzleThemeQueensideAttackDescription => 'یک حمله به شاه حریف، زمانی که در جناه وزیر قلعه رفته است.'; + String get puzzleThemeQueensideAttackDescription => 'حمله به شاه حریف، پس از آنکه آنها قلعه بزرگ رفتند.'; @override String get puzzleThemeQuietMove => 'حرکت آرام'; @@ -1331,13 +1351,13 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeSmotheredMate => 'مات مختنق'; @override - String get puzzleThemeSmotheredMateDescription => 'ماتی که توسط یک اسب انجام می شود که در آن پادشاه قادر به حرکت نیست زیرا توسط مهره های خود احاطه شده.'; + String get puzzleThemeSmotheredMateDescription => 'ماتی که با یک اسب انجام می‌شود و در آن شاه قادر به حرکت نیست زیرا با مهره‌های خودش احاطه (یا خفه) شده است.'; @override String get puzzleThemeSuperGM => 'بازی اَبَر استاد بزرگان'; @override - String get puzzleThemeSuperGMDescription => 'معماهای برگرفته‌شده از بازی‌های بهترین بازیکنان جهان.'; + String get puzzleThemeSuperGMDescription => 'معماهای برگرفته از بازی‌های بهترین بازیکنان جهان.'; @override String get puzzleThemeTrappedPiece => 'مهره به‌دام‌افتاده'; @@ -1346,7 +1366,7 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeTrappedPieceDescription => 'یک مهره قادر به فرار کردن از زده شدن نیست چون حرکات محدودی دارد.'; @override - String get puzzleThemeUnderPromotion => 'ارتقا به غیر از وزیر'; + String get puzzleThemeUnderPromotion => 'فرو-ارتقا'; @override String get puzzleThemeUnderPromotionDescription => 'ارتقا به اسب، فیل یا رخ.'; @@ -1367,7 +1387,7 @@ class AppLocalizationsFa extends AppLocalizations { String get puzzleThemeZugzwang => 'زوگزوانگ'; @override - String get puzzleThemeZugzwangDescription => 'حریف حرکات محدودی برای انجام دادن دارد و تمام حرکات ممکن موقعیت حریف را بدتر میکند.'; + String get puzzleThemeZugzwangDescription => 'حریف در حرکت‌هایش محدود است و همه‌شان وضعیتش را بدتر می‌کند.'; @override String get puzzleThemeHealthyMix => 'ترکیب سالم'; @@ -1576,14 +1596,14 @@ class AppLocalizationsFa extends AppLocalizations { @override String depthX(String param) { - return 'عمق بررسی تا $param حرکت'; + return 'عمق $param'; } @override - String get usingServerAnalysis => 'استفاده از کارساز برای تحلیل'; + String get usingServerAnalysis => 'با استفاده از کارسازِ تحلیل'; @override - String get loadingEngine => 'در حال بارگذاری پردازشگر شطرنج...'; + String get loadingEngine => 'پردازشگر بارمی‌گذارد...'; @override String get calculatingMoves => 'در حال محاسبه حرکات...'; @@ -1595,10 +1615,10 @@ class AppLocalizationsFa extends AppLocalizations { String get cloudAnalysis => 'تحلیل ابری'; @override - String get goDeeper => 'عمق و تعداد بیشتری از حرکتها را بررسی نمایید'; + String get goDeeper => 'بررسی عمیق‌تر'; @override - String get showThreat => 'تهدید را نمایش بدهید'; + String get showThreat => 'نمایش تهدید'; @override String get inLocalBrowser => 'در مرورگر محلی'; @@ -1628,7 +1648,7 @@ class AppLocalizationsFa extends AppLocalizations { String get copyVariationPgn => 'کپی PGN این شاخه'; @override - String get move => 'انتقال بدهید'; + String get move => 'حرکت'; @override String get variantLoss => 'حرکت بازنده'; @@ -1637,7 +1657,7 @@ class AppLocalizationsFa extends AppLocalizations { String get variantWin => 'حرکت برنده'; @override - String get insufficientMaterial => 'مُهره کافی برای مات کردن وجود ندارد'; + String get insufficientMaterial => 'مُهره ناکافی برای مات'; @override String get pawnMove => 'حرکت پیاده'; @@ -1692,16 +1712,16 @@ class AppLocalizationsFa extends AppLocalizations { String get maxDepthReached => 'عمق به حداکثر رسیده!'; @override - String get maybeIncludeMoreGamesFromThePreferencesMenu => 'شاید بازی‌های بیشتری با توجه به گزینگان ترجیحات، وجود داشته باشه؟'; + String get maybeIncludeMoreGamesFromThePreferencesMenu => 'ممکنه بازی‌های بیشتری با توجه به گزینگان ترجیح‌ها، وجود داشته باشد؟'; @override - String get openings => 'گشایش'; + String get openings => 'گشایش‌ها'; @override - String get openingExplorer => 'جستجوگر گشایش‌'; + String get openingExplorer => 'پویشگر گشایش‌'; @override - String get openingEndgameExplorer => 'جستجوگر گشایش/آخربازی'; + String get openingEndgameExplorer => 'پویشگر گشایش/آخربازی'; @override String xOpeningExplorer(String param) { @@ -1709,7 +1729,7 @@ class AppLocalizationsFa extends AppLocalizations { } @override - String get playFirstOpeningEndgameExplorerMove => 'اولین حرکت گشایش/آخربازی را برو'; + String get playFirstOpeningEndgameExplorerMove => 'نخستین حرکت گشایش/آخربازی پویشگر را برو'; @override String get winPreventedBy50MoveRule => 'قانون پنجاه حرکت از پیروزی جلوگیری کرد'; @@ -1739,7 +1759,7 @@ class AppLocalizationsFa extends AppLocalizations { String get deleteThisImportedGame => 'آیا این بازیِ درونبُرده پاک شود؟'; @override - String get replayMode => 'حالت پخش'; + String get replayMode => 'حالت بازپخش'; @override String get realtimeReplay => 'مشابه بازی'; @@ -1748,7 +1768,7 @@ class AppLocalizationsFa extends AppLocalizations { String get byCPL => 'درنگ حین اشتباهات'; @override - String get openStudy => 'مطالعه را شروع نمایید'; + String get openStudy => 'گشودن مطالعه'; @override String get enable => 'فعال سازی'; @@ -1775,7 +1795,7 @@ class AppLocalizationsFa extends AppLocalizations { String get infiniteAnalysis => 'آنالیز بی پایان'; @override - String get removesTheDepthLimit => 'محدودیت عمق بررسی را بر می دارد که به گرم شدن کامپیوتر شما منجر می شود'; + String get removesTheDepthLimit => 'محدودیت عمق را برمی‌دارد و رایانه‌تان داغ می‌ماند'; @override String get engineManager => 'مدیر موتور شطرنج'; @@ -1857,6 +1877,9 @@ class AppLocalizationsFa extends AppLocalizations { @override String get friends => 'دوستان'; + @override + String get otherPlayers => 'بازیکنان دیگر'; + @override String get discussions => 'مکالمات'; @@ -2104,16 +2127,16 @@ class AppLocalizationsFa extends AppLocalizations { String get unlimited => 'نامحدود'; @override - String get mode => 'نوع'; + String get mode => 'حالت'; @override - String get casual => 'غیر رسمی'; + String get casual => 'نارسمی'; @override String get rated => 'رسمی'; @override - String get casualTournament => 'غیر رسمی'; + String get casualTournament => 'نارسمی'; @override String get ratedTournament => 'رسمی'; @@ -2188,7 +2211,7 @@ class AppLocalizationsFa extends AppLocalizations { String get thisAccountViolatedTos => 'این حساب قوانین را نقض کرده است'; @override - String get openingExplorerAndTablebase => 'جستجوگر گشایش و آخربازی'; + String get openingExplorerAndTablebase => 'پویشگر گشایش و آخربازی'; @override String get takeback => 'پس گرفتن حرکت'; @@ -2233,7 +2256,7 @@ class AppLocalizationsFa extends AppLocalizations { String get noDrawBeforeSwissLimit => 'شما نمی‌توانید در مسابقات سوییس تا قبل از حرکت ۳۰ام بازی را مساوی کنید.'; @override - String get thematic => 'واریانتی'; + String get thematic => 'موضوعی'; @override String yourPerfRatingIsProvisional(String param) { @@ -2279,7 +2302,7 @@ class AppLocalizationsFa extends AppLocalizations { String get backToGame => 'بازگشت به بازی'; @override - String get siteDescription => 'شطرنج آنلاین رایگان. همین حالا شطرنج بازی کنید. بدون نیاز به ثبت نام، بدون تبلیغات، بدون نیاز به افزونه. بازی با کامپیوتر، دوستان و یا حریفان تصادفی.'; + String get siteDescription => 'کارساز برخط و رایگان شطرنج. با میانایی روان شطرنج بازی کنید. بدون ثبت‌نام، بدون تبلیغ، بدون نیاز به افزونه. با رایانه، دوستان یا حریفان تصادفی شطرنج بازی کنید.'; @override String xJoinedTeamY(String param1, String param2) { @@ -2292,11 +2315,11 @@ class AppLocalizationsFa extends AppLocalizations { } @override - String get startedStreaming => 'شروع به استریم کرده است'; + String get startedStreaming => 'پخش را آغازید'; @override String xStartedStreaming(String param) { - return '$param شروع به استریم کرده است'; + return '$param پخش را آغازید'; } @override @@ -2306,10 +2329,10 @@ class AppLocalizationsFa extends AppLocalizations { String get location => 'محل'; @override - String get filterGames => 'دستچین کردن بازی‌ها'; + String get filterGames => 'پالابش بازی‌ها'; @override - String get reset => 'تنظیم مجدد'; + String get reset => 'بازنشانی'; @override String get apply => 'تایید'; @@ -2321,7 +2344,7 @@ class AppLocalizationsFa extends AppLocalizations { String get leaderboard => 'جدول رده‌بندی'; @override - String get screenshotCurrentPosition => 'از وضعیت فعلی نماگرفت بگیرید'; + String get screenshotCurrentPosition => 'نماگرفت از وضعیت فعلی'; @override String get gameAsGIF => 'بارگیری GIF بازی'; @@ -2336,7 +2359,7 @@ class AppLocalizationsFa extends AppLocalizations { String get orUploadPgnFile => 'یا یک فایل PGN بارگذاری کنید'; @override - String get fromPosition => 'شروع از پوزیشن'; + String get fromPosition => 'از وضعیت'; @override String get continueFromHere => 'از اینجا ادامه دهید'; @@ -2360,7 +2383,7 @@ class AppLocalizationsFa extends AppLocalizations { String get thisIsAChessCaptcha => 'این یک کپچا [کد امنیتی] شطرنجی است'; @override - String get clickOnTheBoardToMakeYourMove => 'برای اثبات اینکه کامپیوتر نیستید، روی صفحه کلیک کنید تا حرکت خود را انجام دهید'; + String get clickOnTheBoardToMakeYourMove => 'روی صفحه بزنید تا حرکت‌تان را بروید و اثبات کنید که انسانید.'; @override String get captcha_fail => 'لطفا captcha را حل کنید'; @@ -2564,28 +2587,28 @@ class AppLocalizationsFa extends AppLocalizations { String get popularOpenings => 'گشایش‌های محبوب'; @override - String get endgamePositions => 'آخربازی'; + String get endgamePositions => 'وضعیت‌های آخربازی'; @override String chess960StartPosition(String param) { - return 'پوزیشن ابتدایی شطرنج960: $param'; + return 'وضعیت آغازین شطرنج۹۶۰: $param'; } @override - String get startPosition => 'موقعیت شروع'; + String get startPosition => 'وضعیت آغازش'; @override String get clearBoard => 'پاک کردن صفحه'; @override - String get loadPosition => 'بارگذاری موقعیت'; + String get loadPosition => 'بارگذاری وضعیت'; @override String get isPrivate => 'خصوصی'; @override String reportXToModerators(String param) { - return 'گزارش $param به مدیران سایت'; + return 'گزارش $param به ناظران'; } @override @@ -2611,10 +2634,10 @@ class AppLocalizationsFa extends AppLocalizations { String get realName => 'نام راستین'; @override - String get setFlair => 'تعیین کردن شکلک'; + String get setFlair => 'تعیین شکلک'; @override - String get flair => 'نشان'; + String get flair => 'شکلک'; @override String get youCanHideFlair => 'تنظیماتی برای مخفی کردن همه شکلک‌های کاربر در کل ویگاه وجود دارد.'; @@ -2629,16 +2652,16 @@ class AppLocalizationsFa extends AppLocalizations { String get thankYou => 'ممنون!'; @override - String get socialMediaLinks => 'لینک های رسانه های اجتماعی'; + String get socialMediaLinks => 'پیوندهای رسانه‌های اجتماعی'; @override - String get oneUrlPerLine => 'یک نشانی در هر خط.'; + String get oneUrlPerLine => 'یک وب‌نشانی در هر خط.'; @override String get inlineNotation => 'نشانه‌گذاری خطی'; @override - String get makeAStudy => 'برای نگهداری مطمئن و اشتراک‌گذاری، ایجاد یک مطالعه را در نظر بگیرید.'; + String get makeAStudy => 'برای نگهداری مطمئن و همرسانی، ساخت یک مطالعه را در نظر بگیرید.'; @override String get clearSavedMoves => 'حرکت های واضح'; @@ -2688,6 +2711,12 @@ class AppLocalizationsFa extends AppLocalizations { @override String get yes => 'بله'; + @override + String get website => 'وبگاه'; + + @override + String get mobile => 'گوشی'; + @override String get help => 'راهنما:'; @@ -2737,7 +2766,7 @@ class AppLocalizationsFa extends AppLocalizations { String get cheat => 'تقلب'; @override - String get troll => 'ترول'; + String get troll => 'وِزُل'; @override String get other => 'موضوعات دیگر'; @@ -2822,7 +2851,7 @@ class AppLocalizationsFa extends AppLocalizations { String get letOtherPlayersChallengeYou => 'اجازه دهید بازیکنان دیگر به شما پیشنهاد بازی دهند'; @override - String get letOtherPlayersInviteYouToStudy => 'اجازه دهید دیگر بازیکن شما را به مطالعه دعوت کنند'; + String get letOtherPlayersInviteYouToStudy => 'بگذارید دیگر بازیکنان، شما را به مطالعه دعوت کنند'; @override String get sound => 'صدا'; @@ -2896,7 +2925,7 @@ class AppLocalizationsFa extends AppLocalizations { String get biographyDescription => 'درباره ی خودتان بگویید - به چه چیزی در شطرنج علاقه داریدو گشایش ها - بازی ها و بازیکنان مورد علاقه تان…'; @override - String get listBlockedPlayers => 'لیست بازیکنانی که شما مسدود کرده اید'; + String get listBlockedPlayers => 'فهرست بازیکنانی که مسدود کرده‌اید'; @override String get human => 'شخص واقعی'; @@ -2941,7 +2970,7 @@ class AppLocalizationsFa extends AppLocalizations { String get error_email => 'آدرس ایمیل غیر معتبر است'; @override - String get error_email_acceptable => 'این آدرس ایمیل قابل قبول نیست. لطفا آدرس وارد شده را چک کنید و دوباره امتحان کنید.'; + String get error_email_acceptable => 'این نشانی رایانامه پذیرفتنی نیست. لطفا باز به آن سر زنید و دوباره بکوشید.'; @override String get error_email_unique => 'آدرس ایمیل نامعتبر است یا قبلا در سیستم ثبت شده است'; @@ -2987,13 +3016,13 @@ class AppLocalizationsFa extends AppLocalizations { String get menu => 'فهرست'; @override - String get castling => 'قلعه رفتن'; + String get castling => 'قلعه‌روی'; @override - String get whiteCastlingKingside => 'سفید O-O'; + String get whiteCastlingKingside => 'O-O سفید'; @override - String get blackCastlingKingside => 'سیاه O-O'; + String get blackCastlingKingside => 'O-O سیاه'; @override String tpTimeSpentPlaying(String param) { @@ -3005,7 +3034,7 @@ class AppLocalizationsFa extends AppLocalizations { @override String tpTimeSpentOnTV(String param) { - return 'مدت زمان سپری شده در تلویزیون: $param'; + return 'مدت گذرانده در تلویزیون: $param'; } @override @@ -3183,7 +3212,7 @@ class AppLocalizationsFa extends AppLocalizations { String get toggleGlyphAnnotations => 'کلید علائم حرکت‌نویسی'; @override - String get togglePositionAnnotations => 'تغییر علائم حرکت‌نویسی'; + String get togglePositionAnnotations => 'تغییر حرکت‌نویسی وضعیت'; @override String get variationArrowsInfo => 'پیکان های شاخه اصلی به شما امکان می‌دهد بدون استفاده از فهرست حرکت، پیمایش کنید.'; @@ -3198,7 +3227,7 @@ class AppLocalizationsFa extends AppLocalizations { String get tournamentHomeTitle => 'مسابقات شطرنج با گونه‌ها و زمان‌بندی‌های مختلف'; @override - String get tournamentHomeDescription => 'هرچه سریع‌تر شطرنج بازی کنید! به یک مسابقه رسمی برنامه‌ریزی‌شده بپیوندید یا مسابقات خودتان را ایجاد کنید. شطرنج گلوله‌ای، برق‌آسا، مرسوم، ۹۶۰، پادشاه تپه‌ها، سه‌کیش و دیگر گزینه‌ها، برای لذت بی‌پایان از شطرنج در دسترس هستند.'; + String get tournamentHomeDescription => 'هرچه زودتر شطرنج بازی کنید! به یک مسابقه رسمی برنامه‌ریزی‌شده بپیوندید یا مسابقات خودتان را بسازید. شطرنج گلوله‌ای، برق‌آسا، مرسوم، ۹۶۰، پادشاه تپه‌ها، سه‌کیش و دیگر گزینه‌ها، برای لذت بی‌پایان از شطرنج در دسترسند.'; @override String get tournamentNotFound => 'مسابقات یافت نشد'; @@ -3252,13 +3281,13 @@ class AppLocalizationsFa extends AppLocalizations { String get glicko2Rating => 'درجه‌بندی Glicko-2'; @override - String get checkYourEmail => 'ایمیل خود را چک کنید'; + String get checkYourEmail => 'به رایانامه‌تان سر زنید'; @override String get weHaveSentYouAnEmailClickTheLink => 'ما به شما ایمیل فرستادیم. روی لینکی که در ایمیل است کلیک کنید'; @override - String get ifYouDoNotSeeTheEmailCheckOtherPlaces => 'اگر رایانامه را نمی‌بینید، مکان‌های دیگری مانند پوشه‌های ناخواسته، هرزنامه، اجتماعی یا سایر موارد را بررسی کنید.'; + String get ifYouDoNotSeeTheEmailCheckOtherPlaces => 'اگر رایانامه را نمی‌بینید، مکان‌های دیگری مانند پوشه‌های ناخواسته، هرزنامه، اجتماعی یا سایر موردها را بررسی کنید.'; @override String weHaveSentYouAnEmailTo(String param) { @@ -3383,7 +3412,7 @@ class AppLocalizationsFa extends AppLocalizations { String get onlineAndOfflinePlay => 'بازی بَرخط و بُرون‌خط'; @override - String get viewTheSolution => 'دیدن راهِ حل'; + String get viewTheSolution => 'دیدن راه‌حل'; @override String get followAndChallengeFriends => 'دنبال کردن و پیشنهاد بازی دادن به دوستان'; @@ -3410,14 +3439,14 @@ class AppLocalizationsFa extends AppLocalizations { String get quickPairing => 'رویارویی سریع'; @override - String get lobby => 'بازی های ایجادشده'; + String get lobby => 'سَرسَرا'; @override String get anonymous => 'ناشناس'; @override String yourScore(String param) { - return 'امتیاز شما:$param'; + return 'امتیازتان: $param'; } @override @@ -3493,7 +3522,7 @@ class AppLocalizationsFa extends AppLocalizations { String get invalidPgn => 'فایل PGN نامعتبر است'; @override - String get invalidFen => 'پوزیشن وارد شده نامعتبر است'; + String get invalidFen => 'وضعیت نامعتبر'; @override String get custom => 'دلخواه'; @@ -3512,7 +3541,7 @@ class AppLocalizationsFa extends AppLocalizations { } @override - String get practiceWithComputer => 'تمرین با کامپیوتر'; + String get practiceWithComputer => 'تمرین با رایانه'; @override String anotherWasX(String param) { @@ -3537,7 +3566,7 @@ class AppLocalizationsFa extends AppLocalizations { String get theGameIsADraw => 'بازی مساوی است.'; @override - String get computerThinking => 'کامپیوتر در حال محاسبه است...'; + String get computerThinking => 'محاسبه رایانه‌ای ...'; @override String get seeBestMove => 'مشاهده بهترین حرکت'; @@ -3575,16 +3604,16 @@ class AppLocalizationsFa extends AppLocalizations { } @override - String get findBetterMoveForWhite => 'یه حرکت بهتر برای سفید پیدا کنید'; + String get findBetterMoveForWhite => 'حرکت بهتری برای سفید بیابید'; @override - String get findBetterMoveForBlack => 'یه حرکت بهتر برای سیاه پیدا کنید'; + String get findBetterMoveForBlack => 'حرکت بهتری برای سیاه بیابید'; @override String get resumeLearning => 'ادامه یادگیری'; @override - String get youCanDoBetter => 'شما می توانید حرکت بهتری انجام دهید!'; + String get youCanDoBetter => 'می‌توانید بهتر انجامش دهید'; @override String get tryAnotherMoveForWhite => 'برای سفید،حرکت دیگری را امتحان کنید'; @@ -3593,7 +3622,7 @@ class AppLocalizationsFa extends AppLocalizations { String get tryAnotherMoveForBlack => 'برای سیاه،حرکت دیگری را امتحان کنید'; @override - String get solution => 'راه حل'; + String get solution => 'راه‌حل'; @override String get waitingForAnalysis => 'در انتظار برای آنالیز'; @@ -3632,7 +3661,7 @@ class AppLocalizationsFa extends AppLocalizations { String get endgame => 'آخربازی'; @override - String get conditionalPremoves => 'پیش حرکت های شرطی'; + String get conditionalPremoves => 'پیش‌حرکت‌های شرطی'; @override String get addCurrentVariation => 'اضافه کردن این نوع حرکات'; @@ -3641,7 +3670,7 @@ class AppLocalizationsFa extends AppLocalizations { String get playVariationToCreateConditionalPremoves => 'یک نوع حرکات را بازی کنید تا پیش حرکت های شرطی را بسازید'; @override - String get noConditionalPremoves => 'فاقد پیش حرکت های شرطی'; + String get noConditionalPremoves => 'بدون پیش‌حرکت‌های شرطی'; @override String playX(String param) { @@ -3676,7 +3705,7 @@ class AppLocalizationsFa extends AppLocalizations { String get howToAvoidThis => 'چگونه از این امر جلوگیری کنیم؟'; @override - String get playEveryGame => 'هر بازی که استارت میزنید را بازی کنید.'; + String get playEveryGame => 'هر بازی‌ای که آغازیدید را، بازی کنید.'; @override String get tryToWin => 'در هر بازی برای پیروزی (یا حداقل تساوی) تلاش کنید.'; @@ -3821,12 +3850,12 @@ class AppLocalizationsFa extends AppLocalizations { @override String invitedYouToX(String param1) { - return 'شما به \"$param1\" دعوت شده اید.'; + return 'به «$param1» دعوت شده‌اید.'; } @override String xInvitedYouToY(String param1, String param2) { - return '$param1 شما را به \"$param2\" دعوت کرده است.'; + return '$param1 شما را به «$param2» دعوت کرده است.'; } @override @@ -3854,7 +3883,7 @@ class AppLocalizationsFa extends AppLocalizations { } @override - String get lostAgainstTOSViolator => 'شما در مقابل کسی که قوانین Lichess را نقض کرده، امتیاز درجه‌بندی از دست دادید'; + String get lostAgainstTOSViolator => 'شما در برابر کسی که قانون‌های Lichess را نقض کرده، امتیاز درجه‌بندی از دست دادید'; @override String refundXpointsTimeControlY(String param1, String param2) { @@ -3865,7 +3894,7 @@ class AppLocalizationsFa extends AppLocalizations { String get timeAlmostUp => 'زمان تقریباً تمام شده است!'; @override - String get clickToRevealEmailAddress => 'جهت مشاهده ایمیل کلیک کنید'; + String get clickToRevealEmailAddress => '[برای آشکارسازی نشانی رایانامه بتلیکید]'; @override String get download => 'بارگیری'; @@ -3905,7 +3934,7 @@ class AppLocalizationsFa extends AppLocalizations { @override String positionInputHelp(String param) { - return 'برای شروع هر بازی از یک پوزیشن مشخص یک FEN معتبر را جایگذاری کنید.\nاین عمل فقط برای بازی های استاندارد امکان پذیر است، نه با واریانت ها.\nشما می توانید $param را جهت ساخت یک پوزیشن FEN استفاده کنید و سپس اینجا جایگذاری کنید.\nبرای شروع بازی ها از وضعیت عادی ابتدایی خالی بگذارید.'; + return 'برای آغاز هر بازی از یک وضعیت مشخص، یک FEN معتبر جای‌گذارید.\nتنها برای شطرنج معیار کار می‌کند، نه با شطرنج‌گونه‌ها.\nمی‌توانید از $param برای آزانیدن وضعیت FEN استفاده کنید، سپس آن را اینجا جای‌گذارید.\nبرای آغاز بازی از وضعیت نخستین معمولی، خالی بگذارید.'; } @override @@ -3939,7 +3968,7 @@ class AppLocalizationsFa extends AppLocalizations { } @override - String get embedsAvailable => 'وب‌نشانی بازی یا وب‌نشانی فصل مطالعه را برای جاسازی آن، جایگذاری کنید.'; + String get embedsAvailable => 'وب‌نشانی بازی یا وب‌نشانی بخشی از مطالعه را، برای جاسازی آن، جایگذاری کنید.'; @override String get inYourLocalTimezone => 'ذر منطقه زمانی شما'; @@ -3957,25 +3986,25 @@ class AppLocalizationsFa extends AppLocalizations { String get onlyTeamMembers => 'تنها اعضای تیم'; @override - String get navigateMoveTree => 'لیست درختی کلیدهای مربوط به جابجا شدن'; + String get navigateMoveTree => 'ناویدن فهرست حرکت‌ها'; @override - String get mouseTricks => 'ترفندهای مربوط به موشواره'; + String get mouseTricks => 'ترفندهای موشواره'; @override - String get toggleLocalAnalysis => 'از سخت‌افزارِ رایانه خود برای بررسی استفاده نمایید'; + String get toggleLocalAnalysis => 'تغییر در تحلیل رایانه‌ای محلی'; @override - String get toggleAllAnalysis => 'از سخت‌افزارِ رایانه خود و از سرورهای سایت برای بررسی استفاده نمایید'; + String get toggleAllAnalysis => 'تغییر در هرگونه تحلیل رایانه‌ای'; @override - String get playComputerMove => 'بهترین حرکت پیشنهادی توسط رایانه را انتخاب و بازی کنید'; + String get playComputerMove => 'بازی کردن بهترین حرکت رایانه‌ای'; @override - String get analysisOptions => 'امکاناتِ تجزیه و تحلیل'; + String get analysisOptions => 'امکاناتِ تحلیل'; @override - String get focusChat => 'تمرکز بر روی امکان چت و نوشتن در آن'; + String get focusChat => 'به گپ برو'; @override String get showHelpDialog => 'نمایش این پنجره راهنما'; @@ -3987,7 +4016,7 @@ class AppLocalizationsFa extends AppLocalizations { String get closedAccountChangedMind => 'اگر حساب کاربری خود را مسدود کردید، اما بعد از آن نظرتان عوض شد، شما یک فرصت برای بازگرداندنِ حساب کاربری خود خواهید داشت.'; @override - String get onlyWorksOnce => 'پس از مسدودسازی حساب کاربری فقط یک بار امکان بازیابی آن خواهد بود.'; + String get onlyWorksOnce => 'تنها یک‌بار کار خواهد کرد.'; @override String get cantDoThisTwice => 'اگر برای بار دوم حساب کاربری خود را مسدود سازید، هیچ راهی برای بازیابی آن وجود نخواهد داشت.'; @@ -3996,7 +4025,7 @@ class AppLocalizationsFa extends AppLocalizations { String get emailAssociatedToaccount => 'آدرس ایمیلی که به حساب کاربری مربوط شده است'; @override - String get sentEmailWithLink => 'ما یک ایمیل که حاوی یک لینک می‌باشد را به شما ارسال کرده‌ایم.'; + String get sentEmailWithLink => 'ما رایانامه‌ای شامل یک پیوند را به شما فرستاده‌ایم.'; @override String get tournamentEntryCode => 'کد ورودی مسابقه'; @@ -4025,7 +4054,7 @@ class AppLocalizationsFa extends AppLocalizations { String get until => 'تا وقتی که'; @override - String get lichessDbExplanation => 'بازی‌های رسمی برگزار شده در Lichess'; + String get lichessDbExplanation => 'بازی‌های رسمی برگزاریده در Lichess'; @override String get switchSides => 'تعویض سمت'; @@ -4698,5 +4727,5 @@ class AppLocalizationsFa extends AppLocalizations { String get studyShareAndExport => 'همرسانی و برون‏بُرد'; @override - String get studyStart => 'شروع'; + String get studyStart => 'آغاز'; } diff --git a/lib/l10n/l10n_fi.dart b/lib/l10n/l10n_fi.dart index 6e826748b8..ff4644cfd5 100644 --- a/lib/l10n/l10n_fi.dart +++ b/lib/l10n/l10n_fi.dart @@ -9,52 +9,52 @@ class AppLocalizationsFi extends AppLocalizations { AppLocalizationsFi([String locale = 'fi']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Etusivu'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Tehtävät'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Työkalut'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Seuraa'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Asetukset'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Sinun täytyy olla kirjautuneena nähdäksesi tämän sivun.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Järjestelmän värit'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Palaute'; @override String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Kosketuspalaute'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Kokoruututila'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Piilota laitteen käyttöliittymä pelatessasi. Valitse tämä, jos laitteesi navigointieleet näytön laidoilla ovat sinulle häiriöksi. Asetus vaikuttaa peli- ja Puzzle Storm -näkymiin.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Et seuraa yhtäkään käyttäjää.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Kaikki pelit'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Viimeisimmät haut'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Tyhjennä'; @override String mobilePlayersMatchingSearchTerm(String param) { @@ -62,67 +62,87 @@ class AppLocalizationsFi extends AppLocalizations { } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Ei hakutuloksia'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Oletko varma?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Parhaillaan menossa oleva putkesi päättyy, ja pistemääräsi tallennetaan.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Ei näytettävää. Pelaa ensin muutama sarja Puzzle Stormia.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Jaa tämä tehtävä'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Jaa pelin URL'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Jaa PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Jaa asema FEN:nä'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Näytä muunnelmat'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Piilota muunnelma'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Näytä kommentit'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Haluatko lopettaa tämän sarjan?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Ei näytettävää, muuta suodatusehtoja'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Peruuta siirron peruutuspyyntö'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Peruuta tasapeliehdotus'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Odotetaan vastustajan löytymistä...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Sokko'; @override String get mobileLiveStreamers => 'Live streamers'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Liity peliin'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Poista tallennettu siirto'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Jokin meni vikaan.'; + + @override + String get mobileShowResult => 'Näytä lopputulos'; + + @override + String get mobilePuzzleThemesSubtitle => 'Tee tehtäviä suosikkiavauksistasi tai valitse tehtäväteema.'; + + @override + String get mobilePuzzleStormSubtitle => 'Ratkaise mahdollisimman monta tehtävää 3 minuutissa.'; + + @override + String mobileGreeting(String param) { + return 'Hei $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hei'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Toiminta'; @@ -659,7 +679,7 @@ class AppLocalizationsFi extends AppLocalizations { String get preferencesCorrespondenceAndUnlimited => 'Kirjeshakki ja aikarajaton'; @override - String get preferencesConfirmResignationAndDrawOffers => 'Vahvista luovutukset ja tasapelitarjoukset'; + String get preferencesConfirmResignationAndDrawOffers => 'Vahvista luovutukset ja tasapeliehdotukset'; @override String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'Kuinka linnoittaudut'; @@ -1857,6 +1877,9 @@ class AppLocalizationsFi extends AppLocalizations { @override String get friends => 'Kaverit'; + @override + String get otherPlayers => 'muiden pelaajien'; + @override String get discussions => 'Keskustelut'; @@ -2194,19 +2217,19 @@ class AppLocalizationsFi extends AppLocalizations { String get takeback => 'Peruuta siirto'; @override - String get proposeATakeback => 'Ehdota siirron peruutusta'; + String get proposeATakeback => 'Pyydä siirron peruutusta'; @override - String get takebackPropositionSent => 'Siirron peruutusta ehdotettu'; + String get takebackPropositionSent => 'Siirron peruutusta pyydetty'; @override - String get takebackPropositionDeclined => 'Siirron peruutuksen ehdotus hylätty'; + String get takebackPropositionDeclined => 'Siirron peruutuspyyntö torjuttu'; @override - String get takebackPropositionAccepted => 'Siirron peruutuksen ehdotus hyväksytty'; + String get takebackPropositionAccepted => 'Siirron peruutuspyyntö hyväksytty'; @override - String get takebackPropositionCanceled => 'Siirron peruutuksen ehdotus peruttu'; + String get takebackPropositionCanceled => 'Siirron peruutuspyyntö vedetty pois'; @override String get yourOpponentProposesATakeback => 'Vastustajasi ehdottaa siirron peruutusta'; @@ -2688,6 +2711,12 @@ class AppLocalizationsFi extends AppLocalizations { @override String get yes => 'Kyllä'; + @override + String get website => 'Verkkosivusto'; + + @override + String get mobile => 'Mobiili'; + @override String get help => 'Apu:'; diff --git a/lib/l10n/l10n_fo.dart b/lib/l10n/l10n_fo.dart index c190532186..cc6dc465d9 100644 --- a/lib/l10n/l10n_fo.dart +++ b/lib/l10n/l10n_fo.dart @@ -71,7 +71,7 @@ class AppLocalizationsFo extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsFo extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Virkni'; @@ -1855,6 +1875,9 @@ class AppLocalizationsFo extends AppLocalizations { @override String get friends => 'Vinir'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Samrøður'; @@ -2686,6 +2709,12 @@ class AppLocalizationsFo extends AppLocalizations { @override String get yes => 'Ja'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Hjálp:'; diff --git a/lib/l10n/l10n_fr.dart b/lib/l10n/l10n_fr.dart index eff6f69a50..30bfa85b63 100644 --- a/lib/l10n/l10n_fr.dart +++ b/lib/l10n/l10n_fr.dart @@ -24,105 +24,125 @@ class AppLocalizationsFr extends AppLocalizations { String get mobileSettingsTab => 'Paramètres'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Vous devez être connecté pour voir cette page.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Couleurs du système'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Commentaires'; @override String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Mode vibration'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Mode plein écran'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Masquer l\'interface système durant la partie. À utiliser lorsque les gestes pour naviguer dans l\'interface système sur les bords de l\'écran vous gênent. S\'applique aux écrans de la partie et des problèmes (Puzzle Storm).'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Vous ne suivez aucun utilisateur.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Toutes les parties'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Recherches récentes'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Effacer'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Joueurs – \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Aucun résultat'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Êtes-vous sûr(e) ?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Votre série actuelle (streak) prendra fin et votre résultat sera sauvegardé.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Rien à afficher. Jouez quelques séries de problèmes (Puzzle Storm).'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Partager ce problème'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Partager l\'URL de la partie'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Partager le PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Partager la position FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Afficher les variantes'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Masquer les variantes'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Afficher les commentaires'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Voulez-vous mettre fin à cette série?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Rien à afficher. Veuillez changer les filtres.'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Annuler la proposition de reprise du coup'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Annuler la proposition de nulle'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'En attente d\'un adversaire...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Partie à l\'aveugle'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Diffuseurs en direct'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Joindre une partie'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Effacer les coups enregistrés'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Une erreur s\'est produite.'; + + @override + String get mobileShowResult => 'Afficher le résultat'; + + @override + String get mobilePuzzleThemesSubtitle => 'Faites des problèmes basés sur vos ouvertures préférées ou choisissez un thème.'; + + @override + String get mobilePuzzleStormSubtitle => 'Faites un maximum de problèmes en 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Bonjour $param'; + } + + @override + String get mobileGreetingWithoutName => 'Bonjour'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Activité'; @@ -1857,6 +1877,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get friends => 'Amis'; + @override + String get otherPlayers => 'autres joueurs'; + @override String get discussions => 'Discussions'; @@ -2688,6 +2711,12 @@ class AppLocalizationsFr extends AppLocalizations { @override String get yes => 'Oui'; + @override + String get website => 'Site Web'; + + @override + String get mobile => 'Appli mobile'; + @override String get help => 'Aide :'; diff --git a/lib/l10n/l10n_ga.dart b/lib/l10n/l10n_ga.dart index 224cf739e9..4aece38474 100644 --- a/lib/l10n/l10n_ga.dart +++ b/lib/l10n/l10n_ga.dart @@ -71,7 +71,7 @@ class AppLocalizationsGa extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsGa extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Gníomhaíocht'; @@ -1923,6 +1943,9 @@ class AppLocalizationsGa extends AppLocalizations { @override String get friends => 'Cairde'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Comhráite'; @@ -2754,6 +2777,12 @@ class AppLocalizationsGa extends AppLocalizations { @override String get yes => 'Lig'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Cabhair:'; diff --git a/lib/l10n/l10n_gl.dart b/lib/l10n/l10n_gl.dart index 40a5e9e987..9630689049 100644 --- a/lib/l10n/l10n_gl.dart +++ b/lib/l10n/l10n_gl.dart @@ -12,7 +12,7 @@ class AppLocalizationsGl extends AppLocalizations { String get mobileHomeTab => 'Inicio'; @override - String get mobilePuzzlesTab => 'Crebacabezas'; + String get mobilePuzzlesTab => 'Problemas'; @override String get mobileToolsTab => 'Ferramentas'; @@ -24,105 +24,125 @@ class AppLocalizationsGl extends AppLocalizations { String get mobileSettingsTab => 'Axustes'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Debes iniciar sesión para ver esta páxina.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Cores do sistema'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Comentarios'; @override String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Vibración ó mover'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Pantalla completa'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Oculta a Interface de Usuario mentres xogas. Emprega esta opción se che molestan os xestos de navegación do sistema ós bordos da pantalla. Aplícase ás pantallas da partida e á de Puzzle Storm.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Non estás a seguir a ningún usuario.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Todas as partidas'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Procuras recentes'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Borrar'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Xogadores con \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Sen resultados'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Estás seguro?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Perderás a túa secuencia actual e o teu resultado gardarase.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Non hai nada que amosar. Primeiro xoga algunha quenda de Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Compartir este crebacabezas'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Compartir a URL da partida'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Compartir PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Compartir a posición coma FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Amosar variantes'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Ocultar variantes'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Amosar comentarios'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Queres rematar esta quenda?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Non aparece nada. Por favor, cambia os filtros'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Cancelar a proposta de cambio'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Cancelar a oferta de táboas'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Agardando un rival...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Á cega'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Presentadores en directo'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Unirse a unha partida'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Borrar a xogada gardada'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Algo foi mal.'; + + @override + String get mobileShowResult => 'Amosar o resultado'; + + @override + String get mobilePuzzleThemesSubtitle => 'Resolve crebacabezas das túas aperturas favoritas ou elixe un tema.'; + + @override + String get mobilePuzzleStormSubtitle => 'Resolve tantos crebacabezas como sexa posible en 3 minutos.'; + + @override + String mobileGreeting(String param) { + return 'Ola, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Ola'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Actividade'; @@ -1857,6 +1877,9 @@ class AppLocalizationsGl extends AppLocalizations { @override String get friends => 'Amizades'; + @override + String get otherPlayers => 'outros xogadores'; + @override String get discussions => 'Conversas'; @@ -2688,6 +2711,12 @@ class AppLocalizationsGl extends AppLocalizations { @override String get yes => 'Si'; + @override + String get website => 'Páxina web'; + + @override + String get mobile => 'Móbil'; + @override String get help => 'Axuda:'; diff --git a/lib/l10n/l10n_gsw.dart b/lib/l10n/l10n_gsw.dart new file mode 100644 index 0000000000..80685dbfce --- /dev/null +++ b/lib/l10n/l10n_gsw.dart @@ -0,0 +1,4731 @@ +import 'package:intl/intl.dart' as intl; + +import 'l10n.dart'; + +// ignore_for_file: type=lint + +/// The translations for Swiss German Alemannic Alsatian (`gsw`). +class AppLocalizationsGsw extends AppLocalizations { + AppLocalizationsGsw([String locale = 'gsw']) : super(locale); + + @override + String get mobileHomeTab => 'Afangssite'; + + @override + String get mobilePuzzlesTab => 'Ufgabe'; + + @override + String get mobileToolsTab => 'Werchzüg'; + + @override + String get mobileWatchTab => 'Luege'; + + @override + String get mobileSettingsTab => 'Ischtelle'; + + @override + String get mobileMustBeLoggedIn => 'Muesch iglogt si, zum die Site z\'gseh.'; + + @override + String get mobileSystemColors => 'Syschtem-Farbe'; + + @override + String get mobileFeedbackButton => 'Rückmäldig'; + + @override + String get mobileOkButton => 'OK'; + + @override + String get mobileSettingsHapticFeedback => 'Rückmäldig mit Vibration'; + + @override + String get mobileSettingsImmersiveMode => 'Ibettete Modus'; + + @override + String get mobileSettingsImmersiveModeSubtitle => 'UI-Syschtem während em schpille usblände. Benutz die Option, wänn dich d\'Navigationsgeschte, vum Sysychtem, am Bildschirmrand störed. Das gilt für Schpiel- und Puzzle Storm-Bildschirm.'; + + @override + String get mobileNotFollowingAnyUser => 'Du folgsch keim Schpiller.'; + + @override + String get mobileAllGames => 'Alli Partie'; + + @override + String get mobileRecentSearches => 'Kürzlich Gsuechts'; + + @override + String get mobileClearButton => 'Leere'; + + @override + String mobilePlayersMatchingSearchTerm(String param) { + return 'Schpiller mit \"$param%'; + } + + @override + String get mobileNoSearchResults => 'Nüt g\'funde'; + + @override + String get mobileAreYouSure => 'Bisch sicher?'; + + @override + String get mobilePuzzleStreakAbortWarning => 'Du verlürsch din aktuelle Lauf und din Rekord wird g\'schpeicheret.'; + + @override + String get mobilePuzzleStormNothingToShow => 'Es git nüt zum Zeige. Schpill zerscht ochli Puzzle Storm.'; + + @override + String get mobileSharePuzzle => 'Teil die Ufgab'; + + @override + String get mobileShareGameURL => 'Teil d\'Schpiel-URL'; + + @override + String get mobileShareGamePGN => 'Teil s\'PGN'; + + @override + String get mobileSharePositionAsFEN => 'Teil d\'Position als FEN'; + + @override + String get mobileShowVariations => 'Zeig Variante'; + + @override + String get mobileHideVariation => 'Variante verberge'; + + @override + String get mobileShowComments => 'Zeig Kommentär'; + + @override + String get mobilePuzzleStormConfirmEndRun => 'Wottsch de Lauf beände?'; + + @override + String get mobilePuzzleStormFilterNothingToShow => 'Nüt zum Zeige, bitte d\'Filter ändere'; + + @override + String get mobileCancelTakebackOffer => 'Zugsrücknam-Offerte zruggzieh'; + + @override + String get mobileCancelDrawOffer => 'Remis-Agebot zruggzieh'; + + @override + String get mobileWaitingForOpponentToJoin => 'Warte bis en Gegner erschint...'; + + @override + String get mobileBlindfoldMode => 'Blind schpille'; + + @override + String get mobileLiveStreamers => 'Live Streamer'; + + @override + String get mobileCustomGameJoinAGame => 'Bi ere Partie mitschpille'; + + @override + String get mobileCorrespondenceClearSavedMove => 'Lösch die gschpeicherete Züg'; + + @override + String get mobileSomethingWentWrong => 'Es isch öppis schief gange.'; + + @override + String get mobileShowResult => 'Resultat zeige'; + + @override + String get mobilePuzzleThemesSubtitle => 'Schpill Ufgabe mit dine Lieblings-Eröffnige oder wähl es Thema.'; + + @override + String get mobilePuzzleStormSubtitle => 'Lös i 3 Minute so vill Ufgabe wie möglich.'; + + @override + String mobileGreeting(String param) { + return 'Hoi, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hoi'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + + @override + String get activityActivity => 'Aktivitäte'; + + @override + String get activityHostedALiveStream => 'Hät en Live Stream gmacht'; + + @override + String activityRankedInSwissTournament(String param1, String param2) { + return 'Hät Rang #$param1 im Turnier $param2 erreicht'; + } + + @override + String get activitySignedUp => 'Hät sich bi lichess.org agmäldet'; + + @override + String activitySupportedNbMonths(int count, String param2) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Underschtützt lichess.org sit $count Mönet als $param2', + one: 'Underschtüzt lichess.org sit $count Monet als $param2', + ); + return '$_temp0'; + } + + @override + String activityPracticedNbPositions(int count, String param2) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät $count Schtellige bi $param2 güebt', + one: 'Hät $count Schtellig bi $param2 güebt', + ); + return '$_temp0'; + } + + @override + String activitySolvedNbPuzzles(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät $count Taktikufgabe glöst', + one: 'Hät $count Taktikufgab glöst', + ); + return '$_temp0'; + } + + @override + String activityPlayedNbGames(int count, String param2) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät $count Partie $param2 gschpillt', + one: 'Hät $count Partie $param2 gschpillt', + ); + return '$_temp0'; + } + + @override + String activityPostedNbMessages(int count, String param2) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät $count Nachrichte in $param2 gschribe', + one: 'Hät $count Nachricht in $param2 gschribe', + ); + return '$_temp0'; + } + + @override + String activityPlayedNbMoves(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät $count Züg gschpillt', + one: 'Hät $count Zug gschpillt', + ); + return '$_temp0'; + } + + @override + String activityInNbCorrespondenceGames(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'i $count Fernschachpartie', + one: 'i $count Fernschachpartie', + ); + return '$_temp0'; + } + + @override + String activityCompletedNbGames(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät $count Fernschachpartie gschpillt', + one: 'Hät $count Fernschachpartie gschpillt', + ); + return '$_temp0'; + } + + @override + String activityFollowedNbPlayers(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Folgt $count Schpiller', + one: 'Folgt $count Schpiller', + ); + return '$_temp0'; + } + + @override + String activityGainedNbFollowers(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät $count neui Folgendi', + one: 'Hät $count neui Folgendi', + ); + return '$_temp0'; + } + + @override + String activityHostedNbSimuls(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät $count Simultanschachs gmacht', + one: 'Hät $count Simultanschach gmacht', + ); + return '$_temp0'; + } + + @override + String activityJoinedNbSimuls(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät a $count Simultanschachs mitgmacht', + one: 'Hät a $count Simultanschach mitgmacht', + ); + return '$_temp0'; + } + + @override + String activityCreatedNbStudies(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät $count neui Schtudie erschtellt', + one: 'Hät $count neui Schtudie erschtellt', + ); + return '$_temp0'; + } + + @override + String activityCompetedInNbTournaments(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät a $count Turnier teilgnah', + one: 'Hät a $count Turnier teilgnah', + ); + return '$_temp0'; + } + + @override + String activityRankedInTournament(int count, String param2, String param3, String param4) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät Rang #$count (oberi $param2%) mit $param3 Schpiel in $param4 erreicht', + one: 'Hät Rang #$count (oberi $param2%) mit $param3 Schpiel in $param4 erreicht', + ); + return '$_temp0'; + } + + @override + String activityCompetedInNbSwissTournaments(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät a $count Turnier nach \"Schweizer System\" teilgnah', + one: 'Hät a $count Turnier nach \"Schweizer System\" teilgnah', + ); + return '$_temp0'; + } + + @override + String activityJoinedNbTeams(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Isch $count Teams biträte', + one: 'Isch $count Team biträte', + ); + return '$_temp0'; + } + + @override + String get broadcastBroadcasts => 'Überträgige'; + + @override + String get broadcastLiveBroadcasts => 'Live Turnier-Überträgige'; + + @override + String challengeChallengesX(String param1) { + return 'Useforderige: $param1'; + } + + @override + String get challengeChallengeToPlay => 'Zunere Partie usefordere'; + + @override + String get challengeChallengeDeclined => 'Useforderig abglehnt'; + + @override + String get challengeChallengeAccepted => 'Useforderig agnah!'; + + @override + String get challengeChallengeCanceled => 'Useforderig zrugg\'zoge.'; + + @override + String get challengeRegisterToSendChallenges => 'Bitte regischtier dich, zum Useforderige schicke.'; + + @override + String challengeYouCannotChallengeX(String param) { + return 'Du chasch $param nöd usefordere.'; + } + + @override + String challengeXDoesNotAcceptChallenges(String param) { + return '$param akzeptiert kei Useforderige.'; + } + + @override + String challengeYourXRatingIsTooFarFromY(String param1, String param2) { + return 'Dini $param1 Wertig isch z\'wit vu $param2 entfernt.'; + } + + @override + String challengeCannotChallengeDueToProvisionalXRating(String param) { + return 'Useforderig wäge provisorischer $param Wertig nöd möglich.'; + } + + @override + String challengeXOnlyAcceptsChallengesFromFriends(String param) { + return '$param akzeptiert nur Useforderige vu Fründe.'; + } + + @override + String get challengeDeclineGeneric => 'Ich akzeptiere momentan kei Useforderige.'; + + @override + String get challengeDeclineLater => 'Ich han grad kei Zit, bitte frög spöter nomal.'; + + @override + String get challengeDeclineTooFast => 'Die Bedänkzit isch mir z\'churz, bitte forder mich für es langsamers Schpiel.'; + + @override + String get challengeDeclineTooSlow => 'Die Bedänkzit isch mir z\'lang, bitte forder mich für es schnällers Schpiel.'; + + @override + String get challengeDeclineTimeControl => 'Ich akzeptiere kei Schpiel, mit dere Bedänkzit.'; + + @override + String get challengeDeclineRated => 'Bitte schick mir, anstell vu dem, e Forderig für es g\'wertets Spiel.'; + + @override + String get challengeDeclineCasual => 'Bitte schick mir, anstell vu dem, e Forderig für es ung\'wertets Spiel.'; + + @override + String get challengeDeclineStandard => 'Ich nimme momentan kei Useforderige für anderi Schpielvariante a.'; + + @override + String get challengeDeclineVariant => 'Ich wott momentan die Variante nöd schpille.'; + + @override + String get challengeDeclineNoBot => 'Ich akzeptiere kei Useforderige vu Bots.'; + + @override + String get challengeDeclineOnlyBot => 'Ich akzeptiere nur Useforderige vu Bots.'; + + @override + String get challengeInviteLichessUser => 'Oder tue en Lichess User ilade:'; + + @override + String get contactContact => 'Kontakt'; + + @override + String get contactContactLichess => 'Lichess kontaktiere'; + + @override + String get patronDonate => 'Schpände'; + + @override + String get patronLichessPatron => 'Lichess Gönner'; + + @override + String perfStatPerfStats(String param) { + return '$param-Schtatischtike'; + } + + @override + String get perfStatViewTheGames => 'Schpil azeige'; + + @override + String get perfStatProvisional => 'provisorisch'; + + @override + String get perfStatNotEnoughRatedGames => 'Nöd gnueg gwerteti Schpil, für e verlässlichi Wertig z\'errächne.'; + + @override + String perfStatProgressOverLastXGames(String param) { + return 'Fortschritt über di letschte $param Schpil:'; + } + + @override + String perfStatRatingDeviation(String param) { + return 'Wertigssabwichig: $param.'; + } + + @override + String perfStatRatingDeviationTooltip(String param1, String param2, String param3) { + return 'En niedrige Wert bedütet, dass d\'Wertig schtabiler isch. Über $param1 wird d\'Wertig als provisorisch betrachtet. In Ranglischtene chunnt mer, wänn de Wert under $param2 (Standard) oder $param3 (Variante) isch.'; + } + + @override + String get perfStatTotalGames => 'Alli Schpil'; + + @override + String get perfStatRatedGames => 'Gwerteti Schpil'; + + @override + String get perfStatTournamentGames => 'Turnier Schpil'; + + @override + String get perfStatBerserkedGames => 'Berserk Schpil'; + + @override + String get perfStatTimeSpentPlaying => 'Gsamti Schpillzit'; + + @override + String get perfStatAverageOpponent => 'Durchschnittlichi Gägnerwertig'; + + @override + String get perfStatVictories => 'Sieg'; + + @override + String get perfStatDefeats => 'Niederlage'; + + @override + String get perfStatDisconnections => 'Verbindigsabbrüch'; + + @override + String get perfStatNotEnoughGames => 'Nöd gnueg Schpil gschpillt'; + + @override + String perfStatHighestRating(String param) { + return 'Höchschti Wertigszahl: $param'; + } + + @override + String perfStatLowestRating(String param) { + return 'Tüfschti Wertigszahl: $param'; + } + + @override + String perfStatFromXToY(String param1, String param2) { + return 'vu $param1 bis $param2'; + } + + @override + String get perfStatWinningStreak => 'Sieges Serie'; + + @override + String get perfStatLosingStreak => 'Niderlage Serie'; + + @override + String perfStatLongestStreak(String param) { + return 'Längschti Serie: $param'; + } + + @override + String perfStatCurrentStreak(String param) { + return 'Aktuelli Serie: $param'; + } + + @override + String get perfStatBestRated => 'die beschte Sieg'; + + @override + String get perfStatGamesInARow => 'In Serie gschpillti Partie'; + + @override + String get perfStatLessThanOneHour => 'Weniger als 1 Schtund zwüsche de Schpil'; + + @override + String get perfStatMaxTimePlaying => 'Maximali Schpillzit'; + + @override + String get perfStatNow => 'jetzt'; + + @override + String get preferencesPreferences => 'Ischtellige'; + + @override + String get preferencesDisplay => 'Azeige'; + + @override + String get preferencesPrivacy => 'Privatsfähre'; + + @override + String get preferencesNotifications => 'Mäldige'; + + @override + String get preferencesPieceAnimation => 'Figure Animation'; + + @override + String get preferencesMaterialDifference => 'Materialunderschid'; + + @override + String get preferencesBoardHighlights => 'Markierige ufem Brätt (letschte Zug und Schach)'; + + @override + String get preferencesPieceDestinations => 'Zilfälder markiere (gültigi Züg und Voruszüg)'; + + @override + String get preferencesBoardCoordinates => 'Brättkoordinate (A - H / 1 - 8)'; + + @override + String get preferencesMoveListWhilePlaying => 'Zugslischte während em Schpiel zeige'; + + @override + String get preferencesPgnPieceNotation => 'Zugsnotation'; + + @override + String get preferencesChessPieceSymbol => 'Schachfigure Symbol'; + + @override + String get preferencesPgnLetter => 'Buechstabe (K - Q - R - B - N)'; + + @override + String get preferencesZenMode => 'Zen Modus'; + + @override + String get preferencesShowPlayerRatings => 'Zeig Schpiller Wertige'; + + @override + String get preferencesShowFlairs => 'Benutzer-Emojis azeige'; + + @override + String get preferencesExplainShowPlayerRatings => 'Das erlaubt s\'Usblände vu allne Wertige uf de Site und hilft, sich ufs Schach z\'konzentriere. Partie chönd immer no bewertet werde, es gaht nur um das, was du gsesch.'; + + @override + String get preferencesDisplayBoardResizeHandle => 'Zeig de Brättgrössi Regler'; + + @override + String get preferencesOnlyOnInitialPosition => 'Nur bi de Afangsschtellig'; + + @override + String get preferencesInGameOnly => 'Nur im Schpiel'; + + @override + String get preferencesChessClock => 'Schachuhr'; + + @override + String get preferencesTenthsOfSeconds => 'Zähntelsekunde'; + + @override + String get preferencesWhenTimeRemainingLessThanTenSeconds => 'Bi Reschtzit < 10 Sekunde'; + + @override + String get preferencesHorizontalGreenProgressBars => 'Horizontali grüeni Fortschrittsbalke'; + + @override + String get preferencesSoundWhenTimeGetsCritical => 'Warnig, bi wenig Zit'; + + @override + String get preferencesGiveMoreTime => 'Gib meh Zit'; + + @override + String get preferencesGameBehavior => 'Schpielverhalte'; + + @override + String get preferencesHowDoYouMovePieces => 'Wie wottsch Figure bewege?'; + + @override + String get preferencesClickTwoSquares => 'Klick Schtartfäld und Zielfäld'; + + @override + String get preferencesDragPiece => 'Figur mit Cursor zieh'; + + @override + String get preferencesBothClicksAndDrag => 'Beides'; + + @override + String get preferencesPremovesPlayingDuringOpponentTurn => 'Voruszüg (Premoves), während de Gägner am Zug isch'; + + @override + String get preferencesTakebacksWithOpponentApproval => 'Zugsrücknahm (mit Erlaubnis vom Gägner)'; + + @override + String get preferencesInCasualGamesOnly => 'Nur in ungwertete Schpiel'; + + @override + String get preferencesPromoteToQueenAutomatically => 'Automatischi Umwandlig zur Dame'; + + @override + String get preferencesExplainPromoteToQueenAutomatically => 'Druck bi de Umwandlig, so wird sie vorübergehend abgschtellt'; + + @override + String get preferencesWhenPremoving => 'Bim Voruszug'; + + @override + String get preferencesClaimDrawOnThreefoldRepetitionAutomatically => 'Automatischs Remis bi 3 Mal glicher Stellig'; + + @override + String get preferencesWhenTimeRemainingLessThanThirtySeconds => 'Bi Reschtzit < 30 Sekunde'; + + @override + String get preferencesMoveConfirmation => 'Zugsbeschtätigung'; + + @override + String get preferencesExplainCanThenBeTemporarilyDisabled => 'Chann während eme Schpil im Brättmenü deaktiviert werde'; + + @override + String get preferencesInCorrespondenceGames => 'Bi Fernschach'; + + @override + String get preferencesCorrespondenceAndUnlimited => 'Bi Fernschach und ohni Uhr'; + + @override + String get preferencesConfirmResignationAndDrawOffers => 'Ufgab und Remis Agebot beschtätige'; + + @override + String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'Rochade Usfüherig'; + + @override + String get preferencesCastleByMovingTwoSquares => 'Zieh de König 2 Fälder'; + + @override + String get preferencesCastleByMovingOntoTheRook => 'Zieh de König zum Turm'; + + @override + String get preferencesInputMovesWithTheKeyboard => 'Züg mit de Taschtatur usfühere'; + + @override + String get preferencesInputMovesWithVoice => 'Züg per Sprachigab'; + + @override + String get preferencesSnapArrowsToValidMoves => 'Möglichi Züg werded mit Pfil azeigt'; + + @override + String get preferencesSayGgWpAfterLosingOrDrawing => 'Säg \"guet gschpillt\" nach ere Niderlag oder bi me Remis'; + + @override + String get preferencesYourPreferencesHaveBeenSaved => 'Dini Ischtellige sind gschpeicheret.'; + + @override + String get preferencesScrollOnTheBoardToReplayMoves => 'Mit em Muszeiger uf em Brätt, chasch mit em Musrad all Züg vor- und zrugg scrolle'; + + @override + String get preferencesCorrespondenceEmailNotification => 'Täglichi E-Mail-Benachrichtigung, wo Dini Fernschachpartie uflischtet'; + + @override + String get preferencesNotifyStreamStart => 'De Streamer gaht live'; + + @override + String get preferencesNotifyInboxMsg => 'Neui Nachricht im Poschtigang'; + + @override + String get preferencesNotifyForumMention => 'En Forumkommentar erwähnt dich'; + + @override + String get preferencesNotifyInvitedStudy => 'Zur Schtudie ilade'; + + @override + String get preferencesNotifyGameEvent => 'Aktualisierig vum Korreschpondänzschpiel'; + + @override + String get preferencesNotifyChallenge => 'Useforderige'; + + @override + String get preferencesNotifyTournamentSoon => 'Turnier schtarted bald'; + + @override + String get preferencesNotifyTimeAlarm => 'Korreschpondänzzit lauft ab'; + + @override + String get preferencesNotifyBell => 'Akustischi Mäldig, innerhalb Lichess'; + + @override + String get preferencesNotifyPush => 'Mäldig vum Grät, wänn du nöd uf Lichess bisch'; + + @override + String get preferencesNotifyWeb => 'Browser'; + + @override + String get preferencesNotifyDevice => 'Grät'; + + @override + String get preferencesBellNotificationSound => 'Ton für Benachrichtige'; + + @override + String get puzzlePuzzles => 'Ufgabe'; + + @override + String get puzzlePuzzleThemes => 'Ufgabe Theme'; + + @override + String get puzzleRecommended => 'Empfohle'; + + @override + String get puzzlePhases => 'Schpiel Fase'; + + @override + String get puzzleMotifs => 'Situation'; + + @override + String get puzzleAdvanced => 'Fortgschritte'; + + @override + String get puzzleLengths => 'Länge'; + + @override + String get puzzleMates => 'Matts'; + + @override + String get puzzleGoals => 'Ziel'; + + @override + String get puzzleOrigin => 'Herkunft'; + + @override + String get puzzleSpecialMoves => 'Spezielli Züg'; + + @override + String get puzzleDidYouLikeThisPuzzle => 'Hät dir d\'Ufgab g\'falle?'; + + @override + String get puzzleVoteToLoadNextOne => 'Stimm ab, um die Nächscht z\'lade!'; + + @override + String get puzzleUpVote => 'Die Ufgab positiv bewerte'; + + @override + String get puzzleDownVote => 'Die Ufgab negativ bewerte'; + + @override + String get puzzleYourPuzzleRatingWillNotChange => 'Dini Ufgabe-Wertig veränderet sich nöd. Eusi Ufgabe sind kein Wettbewerb. Dini Wertig hilft nur Ufgabe z\'wähle, wo zu dinere aktuelle Schpielstärchi passed.'; + + @override + String get puzzleFindTheBestMoveForWhite => 'Find de bescht Zug für Wiss.'; + + @override + String get puzzleFindTheBestMoveForBlack => 'Find de bescht Zug für Schwarz.'; + + @override + String get puzzleToGetPersonalizedPuzzles => 'Für personalisierti Ufgabe muesch:'; + + @override + String puzzlePuzzleId(String param) { + return 'Ufgab $param'; + } + + @override + String get puzzlePuzzleOfTheDay => 'Ufgab vom Tag'; + + @override + String get puzzleDailyPuzzle => 'Täglichi Ufgab'; + + @override + String get puzzleClickToSolve => 'Zum Löse klicke'; + + @override + String get puzzleGoodMove => 'Guete Zug'; + + @override + String get puzzleBestMove => 'Beschte Zug!'; + + @override + String get puzzleKeepGoing => 'Blib dra…'; + + @override + String get puzzlePuzzleSuccess => 'Korräkt!'; + + @override + String get puzzlePuzzleComplete => 'Ufgab abgschlosse!'; + + @override + String get puzzleByOpenings => 'Nach Eröffnige'; + + @override + String get puzzlePuzzlesByOpenings => 'Ufgabe nach Eröffnige'; + + @override + String get puzzleOpeningsYouPlayedTheMost => 'Dini meischt-gschpillte Eröffnige, i gwertete Partie'; + + @override + String get puzzleUseFindInPage => 'Benutz im Browser \"Suchen...\", um dini bevorzugti Eröffnig z\'finde!'; + + @override + String get puzzleUseCtrlF => 'Find dini bevorzugti Eröffnig mit Ctrl+F !'; + + @override + String get puzzleNotTheMove => 'Das isch nöd de Zug!'; + + @override + String get puzzleTrySomethingElse => 'Probier öppis Anders.'; + + @override + String puzzleRatingX(String param) { + return 'Wertig: $param'; + } + + @override + String get puzzleHidden => 'verschteckt'; + + @override + String puzzleFromGameLink(String param) { + return 'Us de Partie $param'; + } + + @override + String get puzzleContinueTraining => 'Witer trainiere'; + + @override + String get puzzleDifficultyLevel => 'Schwierigi Stufe'; + + @override + String get puzzleNormal => 'Normal'; + + @override + String get puzzleEasier => 'Eifacher'; + + @override + String get puzzleEasiest => 'Am eifachschte'; + + @override + String get puzzleHarder => 'Schwieriger'; + + @override + String get puzzleHardest => 'Am schwierigschte'; + + @override + String get puzzleExample => 'Bischpil'; + + @override + String get puzzleAddAnotherTheme => 'Es witers Motiv zuefüege'; + + @override + String get puzzleNextPuzzle => 'nächschti Ufgab'; + + @override + String get puzzleJumpToNextPuzzleImmediately => 'Diräkt zur nächschte Ufgab'; + + @override + String get puzzlePuzzleDashboard => 'Ufgabe Übersicht'; + + @override + String get puzzleImprovementAreas => 'Verbesserigs Bereich'; + + @override + String get puzzleStrengths => 'Stärche'; + + @override + String get puzzleHistory => 'Ufgabe Verlauf'; + + @override + String get puzzleSolved => 'glöst'; + + @override + String get puzzleFailed => 'unglöst'; + + @override + String get puzzleStreakDescription => 'Lös immer schwierigeri Ufgabe und versuech e langi Erfolgserie z\'erreiche. Nimm dir Zit, es lauft kei Uhr. Doch nur 1 falsche Zug und es isch verbi! Aber du chasch 1 Zug pro Serie überschpringe.'; + + @override + String puzzleYourStreakX(String param) { + return 'Dini Erfolgsserie: $param'; + } + + @override + String get puzzleStreakSkipExplanation => 'Überschpring de Zug, um dini Erfolgsserie z\'hebe! Aber du chasch das nur 1x pro Serie mache.'; + + @override + String get puzzleContinueTheStreak => 'Erfolgsserie witerfüehre'; + + @override + String get puzzleNewStreak => 'Neui Erfolgsserie'; + + @override + String get puzzleFromMyGames => 'Us eigene Schpil'; + + @override + String get puzzleLookupOfPlayer => 'Suech Ufgabe us de Partie vu me Schpiller'; + + @override + String puzzleFromXGames(String param) { + return 'Ufgabe us Partie vu $param'; + } + + @override + String get puzzleSearchPuzzles => 'Suech Ufgabe'; + + @override + String get puzzleFromMyGamesNone => 'Eu häsch kei Ufgabe i de Datäbank, aber Lichess schätzt dich immerno sehr.\n\nSchpill schnälli und klassischi Partie, so erhöht sich d\'Chance, dass au Ufgabe us dine eigene Schpil zuegfüegt werded!'; + + @override + String puzzleFromXGamesFound(String param1, String param2) { + return '$param1 Ufgabe in $param2 Partie gfunde'; + } + + @override + String get puzzlePuzzleDashboardDescription => 'Trainiere analysiere und besser werde'; + + @override + String puzzlePercentSolved(String param) { + return '$param glöst'; + } + + @override + String get puzzleNoPuzzlesToShow => 'Es git no nüt zum Zeige, lös zerscht es paar Ufgabe!'; + + @override + String get puzzleImprovementAreasDescription => 'Trainier mit dene Ufgabe und optimier din Fortschritt!'; + + @override + String get puzzleStrengthDescription => 'Dini Leischtig isch am beschte i dene Theme'; + + @override + String puzzlePlayedXTimes(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count mal gschpillt', + one: '$count mal gschpillt', + ); + return '$_temp0'; + } + + @override + String puzzleNbPointsBelowYourPuzzleRating(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Pünkt under dinere Ufgabe-Wertig', + one: '1 Punkt under dinere Ufgabe-Wertig', + ); + return '$_temp0'; + } + + @override + String puzzleNbPointsAboveYourPuzzleRating(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Pünkt über dinere Ufgabe-Wertig', + one: '1 Punkt über dinere Ufgabe-Wertig', + ); + return '$_temp0'; + } + + @override + String puzzleNbPlayed(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count gschpillt', + one: '$count gschpillt', + ); + return '$_temp0'; + } + + @override + String puzzleNbToReplay(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count widerhole', + one: '$count widerhole', + ); + return '$_temp0'; + } + + @override + String get puzzleThemeAdvancedPawn => 'Vorgruckte Puur'; + + @override + String get puzzleThemeAdvancedPawnDescription => 'En Pur isch tüf i di gägnerisch Schtellig vorgruckt und droht sich umzuwandle.'; + + @override + String get puzzleThemeAdvantage => 'Vorteil'; + + @override + String get puzzleThemeAdvantageDescription => 'Nutz dini Chance, en entscheidende Vorteil z\'erlange. (200 Hundertstelpure ≤ Bewertung ≤ 600 Hundertstelpure)'; + + @override + String get puzzleThemeAnastasiaMate => 'Anastasia\'s Matt'; + + @override + String get puzzleThemeAnastasiaMateDescription => 'En Schpringer und en Turm oder e Dame schaffed zäme, um de König, zwüschet em Brättrand und sine eigene Figure, z\'verwütsche.'; + + @override + String get puzzleThemeArabianMate => 'Arabischs Matt'; + + @override + String get puzzleThemeArabianMateDescription => 'En Schpringer und en Turm schaffed zäme, um de König im Egge z\'fange.'; + + @override + String get puzzleThemeAttackingF2F7 => 'Agriff uf f2 oder f7'; + + @override + String get puzzleThemeAttackingF2F7Description => 'En Agriff, wo sich uf d\'Pure uf f2 oder f7 konzentriert.'; + + @override + String get puzzleThemeAttraction => 'Aziehigschraft'; + + @override + String get puzzleThemeAttractionDescription => 'En Tusch oder es Opfer, wo e gägnerischi Figur uf es Fäld länkt oder zwingt, was dänn e Folgetaktik ermöglicht.'; + + @override + String get puzzleThemeBackRankMate => 'Grundreihe Matt'; + + @override + String get puzzleThemeBackRankMateDescription => 'De König uf de Grundreihe matt setze, wänn er dur sini eigene Figure blockiert isch.'; + + @override + String get puzzleThemeBishopEndgame => 'Läufer Ändschpil'; + + @override + String get puzzleThemeBishopEndgameDescription => 'Es Ändschpil, nur mit Läufer und Pure.'; + + @override + String get puzzleThemeBodenMate => 'Boden Matt'; + + @override + String get puzzleThemeBodenMateDescription => 'Zwei Läufer, uf sich chrüzende Diagonale, setzed en König matt, wo dur eigeni Figure behinderet wird.'; + + @override + String get puzzleThemeCastling => 'Rochade'; + + @override + String get puzzleThemeCastlingDescription => 'Bring de König in Sicherheit und schick de Turm in Agriff.'; + + @override + String get puzzleThemeCapturingDefender => 'Schlag de Verteidiger'; + + @override + String get puzzleThemeCapturingDefenderDescription => 'Schlag e Figur, wo e Anderi entscheidend deckt, dass die Ungschützti im nächschte Zug gschlage werde chann.'; + + @override + String get puzzleThemeCrushing => 'Vernichtend'; + + @override + String get puzzleThemeCrushingDescription => 'Find de gägnerisch Patzer und chumm zume vernichtende Vorteil. (Bewertig ≥ 600 Hundertschtel-Pure)'; + + @override + String get puzzleThemeDoubleBishopMate => 'Läuferpaar Matt'; + + @override + String get puzzleThemeDoubleBishopMateDescription => 'Zwei Läufer, uf näbenand ligende Diagonale, setzed en König matt, wo dur eigeni Figure behinderet wird.'; + + @override + String get puzzleThemeDovetailMate => 'Schwalbeschwanz Matt'; + + @override + String get puzzleThemeDovetailMateDescription => 'Mit de Dame - diräkt bim König - matt setze, wobi sini Fluchtfälder dur eigeni Figure verschtellt sind.'; + + @override + String get puzzleThemeEquality => 'Usglich'; + + @override + String get puzzleThemeEqualityDescription => 'Befrei dich us verlorener Schtellig und sicher dir es Remis oder en usglicheni Schtellig. (Bewertig ≤ 200 Hundertstelpure)'; + + @override + String get puzzleThemeKingsideAttack => 'Agriff am Königsflügel'; + + @override + String get puzzleThemeKingsideAttackDescription => 'En Agriff uf de gägnerisch König, nachdem er am Königsflügel d\'Rochade gmacht hät.'; + + @override + String get puzzleThemeClearance => 'Öffnig'; + + @override + String get puzzleThemeClearanceDescription => 'En Zug - oft mit Tämpo - wo es Fäld, e Linie oder e Diagonale für e folgendi, taktischi Idee frei macht.'; + + @override + String get puzzleThemeDefensiveMove => 'Verteidigungszug'; + + @override + String get puzzleThemeDefensiveMoveDescription => 'En gnaue Zug oder e Zugfolg, wo nötig isch, um kei Material oder Vorteil z\'verlüre.'; + + @override + String get puzzleThemeDeflection => 'Ablänkig'; + + @override + String get puzzleThemeDeflectionDescription => 'En Zug, wo e gägnerischi Figur devo ablänkt e Figur oder es wichtigs Fäld z\'schütze. Wird au als \"Überlaschtig\" bezeichnet.'; + + @override + String get puzzleThemeDiscoveredAttack => 'Abzugsagriff'; + + @override + String get puzzleThemeDiscoveredAttackDescription => 'Me nimmt (z. B. en Schpringer) wo vorher en Agriff dur e anderi, wit weg stehendi, Figur (z. B. en Turm) blockiert hät, us em Wäg.'; + + @override + String get puzzleThemeDoubleCheck => 'Doppelschach'; + + @override + String get puzzleThemeDoubleCheckDescription => 'Abzug mit doppletem Schachgebot, wobi die vorher verdeckti Figur- und die Abzogeni, de König glichzitig agrifed.'; + + @override + String get puzzleThemeEndgame => 'Ändschpil'; + + @override + String get puzzleThemeEndgameDescription => 'E Taktik für die letscht Fase vu de Partie.'; + + @override + String get puzzleThemeEnPassantDescription => 'E Taktik wo \"En-Passant\" beinhaltet - e Regle wo en Pur cha en gägnerische Pur schlaa, wänn de ihn mit em \"Zwei-Fälder-Zug\" übergange hät.'; + + @override + String get puzzleThemeExposedKing => 'Exponierte König'; + + @override + String get puzzleThemeExposedKingDescription => 'E Taktik wo de König nu vu wenige Figure verteidigt wird und oft zu Schachmatt fühert.'; + + @override + String get puzzleThemeFork => 'Gable'; + + @override + String get puzzleThemeForkDescription => 'En Zug wobi die zogeni Figur glichzitig 2 gägnerischi Figure agrift.'; + + @override + String get puzzleThemeHangingPiece => 'Hängendi Figur'; + + @override + String get puzzleThemeHangingPieceDescription => 'E Taktik wo e gägnerischi Figur zwenig oder gar nöd deckt isch und drum, mit Vorteil, gschlage werde cha.'; + + @override + String get puzzleThemeHookMate => 'Hake Matt'; + + @override + String get puzzleThemeHookMateDescription => 'Schachmatt mit Turm, Schpringer und Pur und eim gägnerische Pur, wo em König d\'Flucht verschperrt.'; + + @override + String get puzzleThemeInterference => 'Störig'; + + @override + String get puzzleThemeInterferenceDescription => 'E Figur zwüsche 2 gägnerischi Figure stelle, um einere oder beide de Schutz znäh - z. B. en Schpringer uf es verteidigts Fäld, zwüsche 2 Türm, stelle.'; + + @override + String get puzzleThemeIntermezzo => 'Zwüschezug'; + + @override + String get puzzleThemeIntermezzoDescription => 'Anstatt de erwarteti Zug, zerscht en Andere mache, wo diräkt droht, so dass de Gägner muess reagiere. Isch au bekannt als \"Zwüschezug\".'; + + @override + String get puzzleThemeKnightEndgame => 'Schpringer Ändschpil'; + + @override + String get puzzleThemeKnightEndgameDescription => 'Es Ändschpiel, nur mit Schpringer und Pure.'; + + @override + String get puzzleThemeLong => 'Mehrzügigi Ufgab'; + + @override + String get puzzleThemeLongDescription => '3 Züg zum Sieg.'; + + @override + String get puzzleThemeMaster => 'Meischter Partie'; + + @override + String get puzzleThemeMasterDescription => 'Ufgabe us Partie vu Schpiller mit Titel.'; + + @override + String get puzzleThemeMasterVsMaster => 'Meischter gäge Meischter Partie'; + + @override + String get puzzleThemeMasterVsMasterDescription => 'Ufgabe us Partie vu 2 Schpiller mit Titel.'; + + @override + String get puzzleThemeMate => 'Schachmatt'; + + @override + String get puzzleThemeMateDescription => 'Günn das Schpiel mit Schtil.'; + + @override + String get puzzleThemeMateIn1 => 'Matt in 1'; + + @override + String get puzzleThemeMateIn1Description => 'Schachmatt mit 1 Zug.'; + + @override + String get puzzleThemeMateIn2 => 'Matt in 2'; + + @override + String get puzzleThemeMateIn2Description => 'Schachmatt mit 2 Züg.'; + + @override + String get puzzleThemeMateIn3 => 'Matt in 3'; + + @override + String get puzzleThemeMateIn3Description => 'Schachmatt mit 3 Züg.'; + + @override + String get puzzleThemeMateIn4 => 'Matt in 4'; + + @override + String get puzzleThemeMateIn4Description => 'Schachmatt mit 4 Züg.'; + + @override + String get puzzleThemeMateIn5 => 'Matt in 5 oder meh'; + + @override + String get puzzleThemeMateIn5Description => 'Find e langi Mattfüherig.'; + + @override + String get puzzleThemeMiddlegame => 'Mittelschpiel'; + + @override + String get puzzleThemeMiddlegameDescription => 'E Taktik für die zweit Fase vu de Partie.'; + + @override + String get puzzleThemeOneMove => '1-zügigi Ufgab'; + + @override + String get puzzleThemeOneMoveDescription => 'E Ufgab, mit nur 1 Zug.'; + + @override + String get puzzleThemeOpening => 'Eröffnig'; + + @override + String get puzzleThemeOpeningDescription => 'E Taktik für die erscht Fase vu de Partie.'; + + @override + String get puzzleThemePawnEndgame => 'Pure Ändschpiel'; + + @override + String get puzzleThemePawnEndgameDescription => 'Es Ändschpiel nur mit Pure.'; + + @override + String get puzzleThemePin => 'Fesslig'; + + @override + String get puzzleThemePinDescription => 'E Taktik mit Fesslig, wo sich e Figur nöd bewege cha, ohni de Angriff uf e stärcheri Figur z\'verrate.'; + + @override + String get puzzleThemePromotion => 'Umwandlig'; + + @override + String get puzzleThemePromotionDescription => 'En Pur zur Dame oder andere Figur umwandle.'; + + @override + String get puzzleThemeQueenEndgame => 'Dame Ändschpiel'; + + @override + String get puzzleThemeQueenEndgameDescription => 'Es Ändschpiel nur mit Dame und Pure.'; + + @override + String get puzzleThemeQueenRookEndgame => 'Dame und Turm'; + + @override + String get puzzleThemeQueenRookEndgameDescription => 'Es Ändschpiel nur mit Dame Türm und Pure.'; + + @override + String get puzzleThemeQueensideAttack => 'Agriff am Dameflügel'; + + @override + String get puzzleThemeQueensideAttackDescription => 'En Agriff uf de gägnerisch König, nachdem er am Dameflügel d\'Rochade gmacht hät.'; + + @override + String get puzzleThemeQuietMove => 'Schtille Zug'; + + @override + String get puzzleThemeQuietMoveDescription => 'En Zug wo kei \"Schach\" bütet, wo nüt schlaht und au nöd droht öppis z\'schlah, wo aber - verschteckt - e unvermeidlichi Drohig dur en schpöter folgende Zug vorbereitet.'; + + @override + String get puzzleThemeRookEndgame => 'Turm Ändschpiel'; + + @override + String get puzzleThemeRookEndgameDescription => 'Es Ändschpiel nur mit Türm und Pure.'; + + @override + String get puzzleThemeSacrifice => 'Opfer'; + + @override + String get puzzleThemeSacrificeDescription => 'E Taktik, wo churzfrischtig Material gopferet wird, um dänn mit erzwungener Zugfolg wieder en Vorteil z\'günne.'; + + @override + String get puzzleThemeShort => 'Churzi Ufgab'; + + @override + String get puzzleThemeShortDescription => '2 Züg zum Sieg.'; + + @override + String get puzzleThemeSkewer => 'Schpiess (Hinderschtellig)'; + + @override + String get puzzleThemeSkewerDescription => 'Bim \"Schpiess\" wird e Figur, wo vor ere Andere staht - oft wird sie au dezue zwunge, sich vor die Ander z\'schtelle - agriffe, so dass sie us em Wäg muess und ermöglicht, die Hinder z\'schlah. Quasi umgekehrti Fesslig.'; + + @override + String get puzzleThemeSmotheredMate => 'Erschtickigs Matt'; + + @override + String get puzzleThemeSmotheredMateDescription => 'Es Schachmatt mit em Springer, wo sich de König nöd bewege cha, will er vu sine eigene Figuren umstellt-, also vollkomme igschlosse, wird.'; + + @override + String get puzzleThemeSuperGM => 'Super-Grossmeischter-Partie'; + + @override + String get puzzleThemeSuperGMDescription => 'Ufgabe us Partie, vu de beschte Schpiller uf de Wält.'; + + @override + String get puzzleThemeTrappedPiece => 'G\'fangeni Figur'; + + @override + String get puzzleThemeTrappedPieceDescription => 'E Figur cha em Schlah nöd entgah, will sie nur begränzt Züg mache cha.'; + + @override + String get puzzleThemeUnderPromotion => 'Underverwandlig'; + + @override + String get puzzleThemeUnderPromotionDescription => 'Umwandlig in \"nur\" en Schpringer, Läufer oder Turm.'; + + @override + String get puzzleThemeVeryLong => 'Sehr langi Ufgab'; + + @override + String get puzzleThemeVeryLongDescription => '4 oder meh Züg bis zum Sieg.'; + + @override + String get puzzleThemeXRayAttack => 'Röntge Agriff'; + + @override + String get puzzleThemeXRayAttackDescription => 'E Figur attackiert oder verteidigt es Fäld dur e gägnerischi Figur.'; + + @override + String get puzzleThemeZugzwang => 'Zugszwang'; + + @override + String get puzzleThemeZugzwangDescription => 'De Gägner hät nur e limitierti Azahl Züg und Jede verschlächteret sini Schtellig.'; + + @override + String get puzzleThemeHealthyMix => 'En gsunde Mix'; + + @override + String get puzzleThemeHealthyMixDescription => 'Es bitzli vu Allem, me weiss nöd was eim erwartet, drum isch mer uf alles g\'fasst - genau wie bi richtige Schachschpiel.'; + + @override + String get puzzleThemePlayerGames => 'Schpiller Partie'; + + @override + String get puzzleThemePlayerGamesDescription => 'Suech nach Ufgabe us dine Schpiel oder Ufgabe us Schpiel vu Andere.'; + + @override + String puzzleThemePuzzleDownloadInformation(String param) { + return 'Die Ufgabe sind öffentlich, mer channs abelade under $param.'; + } + + @override + String get searchSearch => 'Suechi'; + + @override + String get settingsSettings => 'Ischtellige'; + + @override + String get settingsCloseAccount => 'Benutzerkonto schlüsse'; + + @override + String get settingsManagedAccountCannotBeClosed => 'Dis Konto wird verwaltet, es chann nöd geschlosse werde.'; + + @override + String get settingsClosingIsDefinitive => 'Die Schlüssig isch ändgültig. Es git keis Z\'rugg! Bisch du sicher?'; + + @override + String get settingsCantOpenSimilarAccount => 'Es isch nöd erlaubt es neus Konto mit em gliche Name z\'eröffne, au wänn d\'Gross- und d\'Chlischribig andersch isch.'; + + @override + String get settingsChangedMindDoNotCloseAccount => 'Ich ha mini Meinig gändert, schlüssed mis Benutzerkonto nöd'; + + @override + String get settingsCloseAccountExplanation => 'Bisch du sicher, dass du dis Benutzerkonto schlüsse wottsch? Dini Entscheidig zum Schlüsse isch ändgültigi. Du chasch nachher NIE MEH ilogge.'; + + @override + String get settingsThisAccountIsClosed => 'Das Benutzerkonto isch g\'schlosse.'; + + @override + String get playWithAFriend => 'Schpill mit eme Fründ'; + + @override + String get playWithTheMachine => 'Schpill mit em Computer'; + + @override + String get toInviteSomeoneToPlayGiveThisUrl => 'Wottsch öpper zum Schpille ilade - schick die URL'; + + @override + String get gameOver => 'Schpiel verbi'; + + @override + String get waitingForOpponent => 'Uf de Gägner warte'; + + @override + String get orLetYourOpponentScanQrCode => 'Oder lass din Gägner de QR-Code skänne'; + + @override + String get waiting => 'Am Warte'; + + @override + String get yourTurn => 'Du bisch dra'; + + @override + String aiNameLevelAiLevel(String param1, String param2) { + return '$param1 Schtufe $param2'; + } + + @override + String get level => 'Schtufe'; + + @override + String get strength => 'Schpillstärchi'; + + @override + String get toggleTheChat => 'Chat a und abschalte'; + + @override + String get chat => 'Chat'; + + @override + String get resign => 'Ufgeh'; + + @override + String get checkmate => 'Schachmatt'; + + @override + String get stalemate => 'Patt'; + + @override + String get white => 'Wiss'; + + @override + String get black => 'Schwarz'; + + @override + String get asWhite => 'als Wiss'; + + @override + String get asBlack => 'als Schwarz'; + + @override + String get randomColor => 'Farb zuefällig'; + + @override + String get createAGame => 'Erschtell e Partie'; + + @override + String get whiteIsVictorious => 'Wiss günnt'; + + @override + String get blackIsVictorious => 'Schwarz günnt'; + + @override + String get youPlayTheWhitePieces => 'Du schpillsch mit Wiss'; + + @override + String get youPlayTheBlackPieces => 'Du schpillsch mit Schwarz'; + + @override + String get itsYourTurn => 'Du bisch dra!'; + + @override + String get cheatDetected => 'Betrug bemerkt'; + + @override + String get kingInTheCenter => 'König im Zäntrum'; + + @override + String get threeChecks => 'Drümal Schach'; + + @override + String get raceFinished => 'Ränne beändet'; + + @override + String get variantEnding => 'Variante ändet'; + + @override + String get newOpponent => 'En neue Gägner'; + + @override + String get yourOpponentWantsToPlayANewGameWithYou => 'Din Gägner wett es neus Schpil mit dir schpille'; + + @override + String get joinTheGame => 'Tritt de Partie bi'; + + @override + String get whitePlays => 'Wiss am Zug'; + + @override + String get blackPlays => 'Schwarz am Zug'; + + @override + String get opponentLeftChoices => 'Din Gägner hät s\'Schpiel verlah. Du chasch de Sieg beaschpruche, es Remis mache oder warte.'; + + @override + String get forceResignation => 'Sieg beaschpruche'; + + @override + String get forceDraw => 'Remis mälde'; + + @override + String get talkInChat => 'Bitte blib nett im Chat!'; + + @override + String get theFirstPersonToComeOnThisUrlWillPlayWithYou => 'Die erscht Person, wo die URL klickt, schpillt mit dir.'; + + @override + String get whiteResigned => 'Wiss hät ufgeh'; + + @override + String get blackResigned => 'Schwarz hät ufgeh'; + + @override + String get whiteLeftTheGame => 'Wiss hät d\'Partie verlah'; + + @override + String get blackLeftTheGame => 'Schwarz hät d\'Partie verlah'; + + @override + String get whiteDidntMove => 'Wiss hät nöd zoge'; + + @override + String get blackDidntMove => 'Schwarz hät nöd zoge'; + + @override + String get requestAComputerAnalysis => 'Computer-Analyse afordere'; + + @override + String get computerAnalysis => 'Computer-Analyse'; + + @override + String get computerAnalysisAvailable => 'Computer-Analyse verfüegbar'; + + @override + String get computerAnalysisDisabled => 'Computer-Analyse deaktiviert'; + + @override + String get analysis => 'Analysebrätt'; + + @override + String depthX(String param) { + return 'Tüfi: $param'; + } + + @override + String get usingServerAnalysis => 'Server-Analyse benutze'; + + @override + String get loadingEngine => 'Engine wird glade ...'; + + @override + String get calculatingMoves => 'Zugs-Berächnig...'; + + @override + String get engineFailed => 'Fähler bim Engine lade'; + + @override + String get cloudAnalysis => 'Cloud-Analyse'; + + @override + String get goDeeper => 'Gang tüfer'; + + @override + String get showThreat => 'Bedrohig azeige'; + + @override + String get inLocalBrowser => 'im lokale Browser'; + + @override + String get toggleLocalEvaluation => 'Lokali Uswertig a und abschalte'; + + @override + String get promoteVariation => 'Variante ufwerte'; + + @override + String get makeMainLine => 'Zur Hauptvariante mache'; + + @override + String get deleteFromHere => 'Ab da lösche'; + + @override + String get collapseVariations => 'Variante kollabiere'; + + @override + String get expandVariations => 'Variante erwitere'; + + @override + String get forceVariation => 'Variante erzwinge'; + + @override + String get copyVariationPgn => 'PGN Variante kopiere'; + + @override + String get move => 'Zug'; + + @override + String get variantLoss => 'Variante verlore'; + + @override + String get variantWin => 'Variante gwunne'; + + @override + String get insufficientMaterial => 'Nöd gnueg Material'; + + @override + String get pawnMove => 'Pure-Zug'; + + @override + String get capture => 'Schlag-Zug'; + + @override + String get close => 'Schlüsse'; + + @override + String get winning => 'Gwünn-Zug'; + + @override + String get losing => 'Verlore'; + + @override + String get drawn => 'Remis'; + + @override + String get unknown => 'Unbekannt'; + + @override + String get database => 'Datäbank'; + + @override + String get whiteDrawBlack => 'Wiss / Remis / Schwarz'; + + @override + String averageRatingX(String param) { + return 'Durchschnittlichi Wertigszahl: $param'; + } + + @override + String get recentGames => 'Aktuelli Partie'; + + @override + String get topGames => 'Beschti-Partie'; + + @override + String masterDbExplanation(String param1, String param2, String param3) { + return '2 Millione OTB Schpil vu $param1+ FIDE-gwertete Schpiller vu $param2 bis $param3'; + } + + @override + String get dtzWithRounding => 'DTZ50\'\' mit Rundig, basierend uf de Azahl Halbzüg bis zum nächschte Schlag- oder Pure-Zug'; + + @override + String get noGameFound => 'Keis Schpiel gfunde'; + + @override + String get maxDepthReached => 'Die maximali Tüfi isch erreicht!'; + + @override + String get maybeIncludeMoreGamesFromThePreferencesMenu => 'Villicht sötted meh Schpiel vom Iischteligs Menü ibezoge werde?'; + + @override + String get openings => 'Eröffnige'; + + @override + String get openingExplorer => 'Eröffnigsdatäbank'; + + @override + String get openingEndgameExplorer => 'Eröffnigs- / Ändschpiel-Explorer'; + + @override + String xOpeningExplorer(String param) { + return '$param Eröffnigs-Explorer'; + } + + @override + String get playFirstOpeningEndgameExplorerMove => 'Erschte Eröffnigs-/Endschpil-Erkundigszug schpille'; + + @override + String get winPreventedBy50MoveRule => 'Sieg mit de 50-Züg-Regle verhinderet'; + + @override + String get lossSavedBy50MoveRule => 'Verluscht dur d 50-Züg-Reglä verhinderät'; + + @override + String get winOr50MovesByPriorMistake => 'Sieg oder 50 Züg dur en vorherige Fähler'; + + @override + String get lossOr50MovesByPriorMistake => 'Niderlag oder 50 Züg dur en vorherige Fähler'; + + @override + String get unknownDueToRounding => 'Sieg/Niderlag nur garantiert, wänn die empfohle Datäbank-Zugfolg sit em letschte Schlag- oder Pure-Zug befolgt worde isch, da möglicherwis DTZ-Wert i de Syzygy-Datäbank grundet sind.'; + + @override + String get allSet => 'Fertig!'; + + @override + String get importPgn => 'PGN importierä'; + + @override + String get delete => 'Lösche'; + + @override + String get deleteThisImportedGame => 'Das importierte Schpiel lösche?'; + + @override + String get replayMode => 'Widergabemodus'; + + @override + String get realtimeReplay => 'Ächtzit'; + + @override + String get byCPL => 'Nach CPL'; + + @override + String get openStudy => 'Schtudie eröffne'; + + @override + String get enable => 'Ischalte'; + + @override + String get bestMoveArrow => 'Pfil für de bescht Zug'; + + @override + String get showVariationArrows => 'Pfil für Variante azeige'; + + @override + String get evaluationGauge => 'Bewertigs-Massschtab'; + + @override + String get multipleLines => 'Mehreri Variantä'; + + @override + String get cpus => 'Prozässore'; + + @override + String get memory => 'Arbetsschpeicher'; + + @override + String get infiniteAnalysis => 'Unändlichi Analyse'; + + @override + String get removesTheDepthLimit => 'Entfernt d\'Tüfebegränzig und haltet din Computer warm'; + + @override + String get engineManager => 'Engine Betreuer'; + + @override + String get blunder => 'En Patzer'; + + @override + String get mistake => 'Fähler'; + + @override + String get inaccuracy => 'Ungnauigkeit'; + + @override + String get moveTimes => 'Zugzite'; + + @override + String get flipBoard => 'Brätt umcheere'; + + @override + String get threefoldRepetition => 'Drüüfachi Stelligswiederholig'; + + @override + String get claimADraw => 'Es Remis beaschpruche'; + + @override + String get offerDraw => 'Remis abüte'; + + @override + String get draw => 'Remis'; + + @override + String get drawByMutualAgreement => 'Remis dur Einigung'; + + @override + String get fiftyMovesWithoutProgress => '50 Züg ohni Fortschritt'; + + @override + String get currentGames => 'Laufendi Partie'; + + @override + String get viewInFullSize => 'In voller Grössi azeige'; + + @override + String get logOut => 'Abmälde'; + + @override + String get signIn => 'Ilogge'; + + @override + String get rememberMe => 'Erinner dich a mich'; + + @override + String get youNeedAnAccountToDoThat => 'Für das bruchsch du es Benutzerkonto'; + + @override + String get signUp => 'Regischtriere'; + + @override + String get computersAreNotAllowedToPlay => 'Computer und Computer-Understützig isch nöd erlaubt. Bitte lass dir bim Schpille nöd vu Schachengines, Datäbanke oder andere Schpiller hälfe. \nAu vum Erschtelle vu mehrere Konte wird dringend abgrate - übermässigs Multikonteverhalte chann zume Usschluss fühere.'; + + @override + String get games => 'Partie'; + + @override + String get forum => 'Forum'; + + @override + String xPostedInForumY(String param1, String param2) { + return '$param1 hät zum Thema $param2 öppis gschribä'; + } + + @override + String get latestForumPosts => 'Neuschti Forum-Biträg'; + + @override + String get players => 'Schpiller'; + + @override + String get friends => 'Fründe'; + + @override + String get otherPlayers => 'anderi Schpiller'; + + @override + String get discussions => 'Underhaltige'; + + @override + String get today => 'Hüt'; + + @override + String get yesterday => 'Geschter'; + + @override + String get minutesPerSide => 'Minute pro Schpiller'; + + @override + String get variant => 'Variante'; + + @override + String get variants => 'Variante'; + + @override + String get timeControl => 'Bedänkzit'; + + @override + String get realTime => 'Ächtzit'; + + @override + String get correspondence => 'Fernschach'; + + @override + String get daysPerTurn => 'Täg pro Zug'; + + @override + String get oneDay => 'Ein Tag'; + + @override + String get time => 'Zit'; + + @override + String get rating => 'Wertig'; + + @override + String get ratingStats => 'Wertigs-Statistike'; + + @override + String get username => 'Benutzername'; + + @override + String get usernameOrEmail => 'Benutzername oder E-Mail-Adrässe'; + + @override + String get changeUsername => 'Benutzername ändere'; + + @override + String get changeUsernameNotSame => 'Me chann nur d\'Gross-/Chlischriibig verändere, z. B. \"grosspatzer\" in \"GrossPatzer\".'; + + @override + String get changeUsernameDescription => 'Korrigier din Benutzername: Das gaht aber nur eimal und mer chann nur d\'Gros- und d\'Chlischribig verändere.'; + + @override + String get signupUsernameHint => 'Wähl bitte en aschtändige Benutzername. Du chasch en nachträglich nöd ändere und jedes Konto mit untolerierbarem Name wird gschlosse!'; + + @override + String get signupEmailHint => 'Mir benutzed sie nur zum s\'Passwort zruggsetze.'; + + @override + String get password => 'Passwort'; + + @override + String get changePassword => 'Passwort ändere'; + + @override + String get changeEmail => 'E-Mail-Adrässe ändere'; + + @override + String get email => 'E-Mail'; + + @override + String get passwordReset => 'Passwort zruggsetze'; + + @override + String get forgotPassword => 'Passwort vergässe?'; + + @override + String get error_weakPassword => 'So es Passwort isch extrem hüfig und liecht z\'knacke!'; + + @override + String get error_namePassword => 'Nimm bitte nöd din Benutzername als Passwort!'; + + @override + String get blankedPassword => 'Du häsch das Passwort scho noime anderscht benutzt und ebe det isch\'s missbrucht worde. Zum d\'Sicherheit vu dim Lichess-Konto z\'gwähre, muesch es nois Passwort kreiere. Mir danked dir für dis Verschtändnis.'; + + @override + String get youAreLeavingLichess => 'Du verlahsch jetzt Lichess'; + + @override + String get neverTypeYourPassword => 'Benutz dis Lichess-Passwort nie uf andere Website!'; + + @override + String proceedToX(String param) { + return 'Witer zu $param'; + } + + @override + String get passwordSuggestion => 'Setz keis Passwort, wo dir e anderi Person vorgschlage hät. Suscht chan dis Konto gschtohle werde.'; + + @override + String get emailSuggestion => 'Setz kei E-Mail-Adrässe, wo dir e anderi Person vorgschlage hät. Suscht chan dis Konto gschtohle werde.'; + + @override + String get emailConfirmHelp => 'Hilf bi de E-Mail Beschtätigung'; + + @override + String get emailConfirmNotReceived => 'Häsch nach de Amäldig kei Beschtätigungs-Mail übercho?'; + + @override + String get whatSignupUsername => 'Mit welem Benutzername häsch dich agmäldet?'; + + @override + String usernameNotFound(String param) { + return 'Mir händ kein Benutzer mit em Name $param gfunde.'; + } + + @override + String get usernameCanBeUsedForNewAccount => 'Du chasch de Name verwände, zum es neus Konto erschtelle'; + + @override + String emailSent(String param) { + return 'Mir händ es E-Mail a $param gschickt.'; + } + + @override + String get emailCanTakeSomeTime => 'Es brucht ochli Zit, bis es achunnt.'; + + @override + String get refreshInboxAfterFiveMinutes => 'Wart 5 Minute und check dini E-Mail-Inbox.'; + + @override + String get checkSpamFolder => 'Lueg au im Spam-Ordner, es chönnt det glandet si. Wänn ja, lösch d\'Spam-Markierig.'; + + @override + String get emailForSignupHelp => 'Wänn alles nöd gaht, schick eus die E-Mail:'; + + @override + String copyTextToEmail(String param) { + return 'Kopier de oberi Text, füeg en i und schick en an $param'; + } + + @override + String get waitForSignupHelp => 'Mir mälded eus in Chürzi, dass du dini Amäldig abschlüsse chasch.'; + + @override + String accountConfirmed(String param) { + return 'De Benutzer $param isch erfolgrich beschtätigt.'; + } + + @override + String accountCanLogin(String param) { + return 'Du chasch jetzt als $param ilogge.'; + } + + @override + String get accountConfirmationEmailNotNeeded => 'Du muesch kei Beschtätigungs-E-Mail übercho.'; + + @override + String accountClosed(String param) { + return 's\'Konto $param isch gschlosse.'; + } + + @override + String accountRegisteredWithoutEmail(String param) { + return 's\'Konto $param isch ohni E-Mail-Adrässe regischtriert worde.'; + } + + @override + String get rank => 'Rang'; + + @override + String rankX(String param) { + return 'Platz: $param'; + } + + @override + String get gamesPlayed => 'Gschpillti Partie'; + + @override + String get cancel => 'Abbräche'; + + @override + String get whiteTimeOut => 'Wiss hät d\'Zit überschritte'; + + @override + String get blackTimeOut => 'Schwarz hät d\'Zit überschritte'; + + @override + String get drawOfferSent => 'Remis-Agebot gsändet'; + + @override + String get drawOfferAccepted => 'Remis-Agebot akzeptiert'; + + @override + String get drawOfferCanceled => 'Remis-Agebot zruggzoge'; + + @override + String get whiteOffersDraw => 'Wiss offeriert Remis'; + + @override + String get blackOffersDraw => 'Schwarz offeriert Remis'; + + @override + String get whiteDeclinesDraw => 'Wiss lähnt es Remis ab'; + + @override + String get blackDeclinesDraw => 'Schwarz lähnt es Remis ab'; + + @override + String get yourOpponentOffersADraw => 'Din Gägner offeriert es Remis'; + + @override + String get accept => 'Akzeptiere'; + + @override + String get decline => 'Ablehnä'; + + @override + String get playingRightNow => 'Partie isch am laufe'; + + @override + String get eventInProgress => 'Lauft jetzt'; + + @override + String get finished => 'Beändet'; + + @override + String get abortGame => 'Partie abbräche'; + + @override + String get gameAborted => 'Partie abbroche'; + + @override + String get standard => 'Standard'; + + @override + String get customPosition => 'Benutzerdefinierti Schtellig'; + + @override + String get unlimited => 'Unbegränzt'; + + @override + String get mode => 'Modus'; + + @override + String get casual => 'Ungwertet'; + + @override + String get rated => 'Gwertet'; + + @override + String get casualTournament => 'Ungwertet'; + + @override + String get ratedTournament => 'Gwertet'; + + @override + String get thisGameIsRated => 'Das Schpiel isch gwertet'; + + @override + String get rematch => 'Revanche'; + + @override + String get rematchOfferSent => 'Agebot zur Revanche gsändet'; + + @override + String get rematchOfferAccepted => 'Revanche-Agebot aktzeptiert'; + + @override + String get rematchOfferCanceled => 'Revanche-Agebot zruggzoge'; + + @override + String get rematchOfferDeclined => 'Revanche-Agebot abglähnt'; + + @override + String get cancelRematchOffer => 'Revanche-Agebot zruggneh'; + + @override + String get viewRematch => 'Revanche aluege'; + + @override + String get confirmMove => 'Zug beschtätige'; + + @override + String get play => 'Schpille'; + + @override + String get inbox => 'Poschtigang'; + + @override + String get chatRoom => 'Chatruum'; + + @override + String get loginToChat => 'Zum Tschätte amälde'; + + @override + String get youHaveBeenTimedOut => 'Du häsch es verordnets timeout.'; + + @override + String get spectatorRoom => 'Zueschauerruum'; + + @override + String get composeMessage => 'Nachricht verfasse'; + + @override + String get subject => 'Beträff'; + + @override + String get send => 'Schicke'; + + @override + String get incrementInSeconds => 'Inkrement in Sekunde'; + + @override + String get freeOnlineChess => 'Gratis Online-Schach'; + + @override + String get exportGames => 'Partie exportiere'; + + @override + String get ratingRange => 'Wertigsbereich'; + + @override + String get thisAccountViolatedTos => 'Das Konto hät gäge d\'Lichess-Nutzigsbedingige verschtosse'; + + @override + String get openingExplorerAndTablebase => 'Eröffnigsbuech & Ändschpiel-Datäbank'; + + @override + String get takeback => 'Zugsrücknahm'; + + @override + String get proposeATakeback => 'Zugsrücknahm vorschlah'; + + @override + String get takebackPropositionSent => 'Vorschlag zur Zugsrücknahm gsändet'; + + @override + String get takebackPropositionDeclined => 'Zugsrücknahm abglehnt'; + + @override + String get takebackPropositionAccepted => 'Zugsrücknahm akzeptiert'; + + @override + String get takebackPropositionCanceled => 'Zugsrücknahm zruggzoge'; + + @override + String get yourOpponentProposesATakeback => 'Din Gägner wott de letscht Zug zruggneh'; + + @override + String get bookmarkThisGame => 'Das Schpiel mit eme Läsezeiche markiere'; + + @override + String get tournament => 'Turnier'; + + @override + String get tournaments => 'Turnier'; + + @override + String get tournamentPoints => 'Turnierpünkt'; + + @override + String get viewTournament => 'Turnier zueluege'; + + @override + String get backToTournament => 'Zrugg zum Turnier'; + + @override + String get noDrawBeforeSwissLimit => 'Ime Turnier, nach \"Schweizer System\", chann me erscht nach 30 Züg Remis mache.'; + + @override + String get thematic => 'Thematisch'; + + @override + String yourPerfRatingIsProvisional(String param) { + return 'Dini $param Wertig isch provisorisch'; + } + + @override + String yourPerfRatingIsTooHigh(String param1, String param2) { + return 'Dini $param1 Wertig ($param2) isch z\'höch'; + } + + @override + String yourTopWeeklyPerfRatingIsTooHigh(String param1, String param2) { + return 'Dini höchschti $param1 Wertig ($param2) isch z\'höch'; + } + + @override + String yourPerfRatingIsTooLow(String param1, String param2) { + return 'Dini $param1 Wertig ($param2) isch z\'tüüf'; + } + + @override + String ratedMoreThanInPerf(String param1, String param2) { + return 'Gwertet ≥ $param1 in $param2'; + } + + @override + String ratedLessThanInPerf(String param1, String param2) { + return 'Wertig ≤ $param1 im $param2 die letschte 7 Täg'; + } + + @override + String mustBeInTeam(String param) { + return 'Du muesch im Team $param si'; + } + + @override + String youAreNotInTeam(String param) { + return 'Du bisch nöd im Team $param'; + } + + @override + String get backToGame => 'Zrugg zum Schpiel'; + + @override + String get siteDescription => 'Gratis Online Schach Server: Schpill Schach uf ere suubere Benutzeroberflächi! Kei Regrischtrierig, kei Werbig, kei Plugins. Schpill Schach gäge Computer, mit Fründe oder gäge zuefällig gwählti Gägner.'; + + @override + String xJoinedTeamY(String param1, String param2) { + return '$param1 isch jetzt im Team $param2'; + } + + @override + String xCreatedTeamY(String param1, String param2) { + return '$param1 hät s\'Team $param2 gründet'; + } + + @override + String get startedStreaming => 'hät agfange Streame'; + + @override + String xStartedStreaming(String param) { + return '$param hät mit Streame agfange'; + } + + @override + String get averageElo => 'Durchschnittswertig'; + + @override + String get location => 'Ortschaft/Land'; + + @override + String get filterGames => 'Partie filtere'; + + @override + String get reset => 'Zruggsetze'; + + @override + String get apply => 'Awände'; + + @override + String get save => 'Schpeichere'; + + @override + String get leaderboard => 'Ranglischte'; + + @override + String get screenshotCurrentPosition => 'En Screenshot vu de aktuelle Schtellig mache'; + + @override + String get gameAsGIF => 'Schpiel als GIF'; + + @override + String get pasteTheFenStringHere => 'Füeg de FEN-Tegscht da i'; + + @override + String get pasteThePgnStringHere => 'Füeg de PGN-Tegscht da i'; + + @override + String get orUploadPgnFile => 'Oder lad e PGN-Datei ufe'; + + @override + String get fromPosition => 'Ab Schtellig'; + + @override + String get continueFromHere => 'Vu da us witer schpille'; + + @override + String get toStudy => 'Schtudie'; + + @override + String get importGame => 'Partie importiere'; + + @override + String get importGameExplanation => 'Füeg e Schpiel-PGN i, für Zuegriff uf Schpielwiderholig, Computeranalyse, Chat und e teilbari URL.'; + + @override + String get importGameCaveat => 'd\'Variazione werded glöscht. Zums b\'halte, muesch d\'PGN mit ere Schtudie importiere.'; + + @override + String get importGameDataPrivacyWarning => 'De PGN isch öffentlich zuegänglich. Zum es Schpiel privat importiere, nimmsch e Schtudie.'; + + @override + String get thisIsAChessCaptcha => 'Das isch es Schach Captcha.'; + + @override + String get clickOnTheBoardToMakeYourMove => 'Klick ufs Brätt und mach en Zug, \nzum bewise dass du en Mänsch bisch.'; + + @override + String get captcha_fail => 'Bitte lös die Schach Ufgab.'; + + @override + String get notACheckmate => 'Das isch keis Matt'; + + @override + String get whiteCheckmatesInOneMove => 'Wiss setzt i eim Zug Matt'; + + @override + String get blackCheckmatesInOneMove => 'Schwarz setzt i eim Zug Matt'; + + @override + String get retry => 'Probiers nomal'; + + @override + String get reconnecting => 'Widerverbindä'; + + @override + String get noNetwork => 'Offline'; + + @override + String get favoriteOpponents => 'Hüfigschti Gägner'; + + @override + String get follow => 'Verfolge'; + + @override + String get following => 'Verfolg ich'; + + @override + String get unfollow => 'Nümme folge'; + + @override + String followX(String param) { + return '$param folge'; + } + + @override + String unfollowX(String param) { + return '$param nümme folge'; + } + + @override + String get block => 'Blockiärä'; + + @override + String get blocked => 'Blockiärt'; + + @override + String get unblock => 'Blockierig ufhebe'; + + @override + String get followsYou => 'Folgt dir'; + + @override + String xStartedFollowingY(String param1, String param2) { + return '$param1 folgt jetzt $param2'; + } + + @override + String get more => 'Meh'; + + @override + String get memberSince => 'Mitglid sit'; + + @override + String lastSeenActive(String param) { + return 'Zletscht aktiv $param'; + } + + @override + String get player => 'Schpiller'; + + @override + String get list => 'Lischtä'; + + @override + String get graph => 'Grafik'; + + @override + String get required => 'Pflichtfäld.'; + + @override + String get openTournaments => 'Offeni Turnier'; + + @override + String get duration => 'Duur'; + + @override + String get winner => 'Sieger'; + + @override + String get standing => 'Tabälle'; + + @override + String get createANewTournament => 'Erschtell es neus Turnier'; + + @override + String get tournamentCalendar => 'Turnier Kaländer'; + + @override + String get conditionOfEntry => 'Teilnahmebedingige:'; + + @override + String get advancedSettings => 'Erwiterti Ischtellige'; + + @override + String get safeTournamentName => 'Wähl en möglichscht sichere Name fürs Turnier.'; + + @override + String get inappropriateNameWarning => 'Alles - au liecht Unagmässes - cha zur Schlüssig vu dim Konto fühere.'; + + @override + String get emptyTournamentName => 'Frei la zum s\'Turnier nach eme namhafte Schachschpiller z\'benänne.'; + + @override + String get makePrivateTournament => 'Mach das Turnier privat und beschränk de Zuegang mit Passwort'; + + @override + String get join => 'Mach mit'; + + @override + String get withdraw => 'Usstige'; + + @override + String get points => 'Pünkt'; + + @override + String get wins => 'Sieg'; + + @override + String get losses => 'Niederlage'; + + @override + String get createdBy => 'Erschtellt vo'; + + @override + String get tournamentIsStarting => 's\'Turnier fangt a'; + + @override + String get tournamentPairingsAreNowClosed => 'Es werded kei Turnierschpiel meh gschpillt.'; + + @override + String standByX(String param) { + return 'Achtung $param, es git neui Paarige, mach dich parat!'; + } + + @override + String get pause => 'underbräche'; + + @override + String get resume => 'wieder ischtige'; + + @override + String get youArePlaying => 'Dis Schpiel fangt a!'; + + @override + String get winRate => 'Gwünn Rate'; + + @override + String get berserkRate => 'Berserkrate'; + + @override + String get performance => 'Leischtig'; + + @override + String get tournamentComplete => 'Das Turnier isch fertig'; + + @override + String get movesPlayed => 'Gschpillti Züg'; + + @override + String get whiteWins => 'Sieg mit Wiss'; + + @override + String get blackWins => 'Sieg mit Schwarz'; + + @override + String get drawRate => 'Remis-Rate'; + + @override + String get draws => 'Remis'; + + @override + String nextXTournament(String param) { + return 'Nächschts $param Turnier:'; + } + + @override + String get averageOpponent => 'Durchschnitt - Gägner'; + + @override + String get boardEditor => 'Schtellig ufbaue'; + + @override + String get setTheBoard => 'Brätt ufbaue'; + + @override + String get popularOpenings => 'Beliebti Eröffnige'; + + @override + String get endgamePositions => 'Ändschpiel-Posizione'; + + @override + String chess960StartPosition(String param) { + return 'Schach960 Afangsschtellig: $param'; + } + + @override + String get startPosition => 'Afangsposition'; + + @override + String get clearBoard => 'Brätt lösche'; + + @override + String get loadPosition => 'Schtellig lade'; + + @override + String get isPrivate => 'Privat'; + + @override + String reportXToModerators(String param) { + return 'Mäld $param de Moderatore'; + } + + @override + String profileCompletion(String param) { + return 'Profil-Vollschtändigkeit: $param'; + } + + @override + String xRating(String param) { + return '$param Wertigszahl'; + } + + @override + String get ifNoneLeaveEmpty => 'Nur wänn vorhande'; + + @override + String get profile => 'Profil'; + + @override + String get editProfile => 'Profil bearbeite'; + + @override + String get realName => 'Richtige Name'; + + @override + String get setFlair => 'Wähl dis Emoji'; + + @override + String get flair => 'Emoji'; + + @override + String get youCanHideFlair => 'Alli Benutzer-Emojis chönnd - uf de ganze Site - usbländet werde.'; + + @override + String get biography => 'Biografie'; + + @override + String get countryRegion => 'Land, Region oder Kanton'; + + @override + String get thankYou => 'Ich danke dir!'; + + @override + String get socialMediaLinks => 'Social Media Links'; + + @override + String get oneUrlPerLine => 'Nur 1 Web Adrässe (URL) pro Zile.'; + + @override + String get inlineNotation => 'Inline-Notation'; + + @override + String get makeAStudy => 'Zum Variante sicher ufzbewahre und zum Witergeh, söttsch e Schtudie erschtelle.'; + + @override + String get clearSavedMoves => 'Gschpeichereti Züg lösche'; + + @override + String get previouslyOnLichessTV => 'Zletscht uf Lichess TV'; + + @override + String get onlinePlayers => 'Online Schpiller'; + + @override + String get activePlayers => 'Aktivi Schpiller'; + + @override + String get bewareTheGameIsRatedButHasNoClock => 'Achtung, das Schpiel isch gwertet, aber ohni Zitlimit!'; + + @override + String get success => 'Korräkt'; + + @override + String get automaticallyProceedToNextGameAfterMoving => 'Nach em Zug automatisch zur nächschte Partie'; + + @override + String get autoSwitch => 'Automatische Wächsel'; + + @override + String get puzzles => 'Ufgabe'; + + @override + String get onlineBots => 'Online Roboter'; + + @override + String get name => 'Name'; + + @override + String get description => 'Beschribig'; + + @override + String get descPrivate => 'Privati Beschribig'; + + @override + String get descPrivateHelp => 'Tegscht wo nur Team-Mitglider gsehnd. Wänn usgfüllt, ersetzt er für sie de Öffentlichi.'; + + @override + String get no => 'Nei'; + + @override + String get yes => 'Ja'; + + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobil'; + + @override + String get help => 'Hilf:'; + + @override + String get createANewTopic => 'Erschtell es neus Thema'; + + @override + String get topics => 'Theme'; + + @override + String get posts => 'Biträg'; + + @override + String get lastPost => 'Letschte Bitrag'; + + @override + String get views => 'Bsüech'; + + @override + String get replies => 'Antwortä'; + + @override + String get replyToThisTopic => 'Uf das Thema antwortä'; + + @override + String get reply => 'Antwortä'; + + @override + String get message => 'Nachricht'; + + @override + String get createTheTopic => 'Mach es Thema'; + + @override + String get reportAUser => 'Mäld en Benutzer'; + + @override + String get user => 'Benutzer'; + + @override + String get reason => 'Grund'; + + @override + String get whatIsIheMatter => 'Was isch s\'Problem?'; + + @override + String get cheat => 'Bschiss'; + + @override + String get troll => 'Troll'; + + @override + String get other => 'Suschtigs'; + + @override + String get reportDescriptionHelp => 'Füeg de Link dere/dene Partie bi und erchlär, wie sich de Benutzer falsch benah hät. Säg nöd nur \"de bschisst\", schrib eus wie du da druf chunnsch. (änglisch gschribeni Mäldige, werded schnäller behandlet).'; + + @override + String get error_provideOneCheatedGameLink => 'Bitte gib mindeschtens 1 Link zume Schpiel a, wo bschisse worde isch.'; + + @override + String by(String param) { + return 'vu $param'; + } + + @override + String importedByX(String param) { + return 'Importiert vu $param'; + } + + @override + String get thisTopicIsNowClosed => 'Das Thema isch jetzt gschlosse.'; + + @override + String get blog => 'Blog'; + + @override + String get notes => 'Notize'; + + @override + String get typePrivateNotesHere => 'Gib privati Notize da i'; + + @override + String get writeAPrivateNoteAboutThisUser => 'Schrib e privati Notiz über de Benutzer'; + + @override + String get noNoteYet => 'No kei Notiz vorhande'; + + @override + String get invalidUsernameOrPassword => 'Ungültige Benutzername oder Passwort'; + + @override + String get incorrectPassword => 'Falschs Passwort'; + + @override + String get invalidAuthenticationCode => 'Ungültige Authentifizierigscode'; + + @override + String get emailMeALink => 'Schick mer per E-Mail en Link'; + + @override + String get currentPassword => 'Aktuells Passwort'; + + @override + String get newPassword => 'Neus Passwort'; + + @override + String get newPasswordAgain => 'Neus Passwort (nomal)'; + + @override + String get newPasswordsDontMatch => 'Die neue Passwörter sind nöd glich'; + + @override + String get newPasswordStrength => 'Passwortstärchi'; + + @override + String get clockInitialTime => 'Grundbedänkzit'; + + @override + String get clockIncrement => 'Zit-Inkrement'; + + @override + String get privacy => 'Privatsphäre'; + + @override + String get privacyPolicy => 'Datäschutzbeschtimmige'; + + @override + String get letOtherPlayersFollowYou => 'Lass anderi Schpiller dir folge'; + + @override + String get letOtherPlayersChallengeYou => 'Lass anderi Schpiller dich fordere'; + + @override + String get letOtherPlayersInviteYouToStudy => 'Andere Schpiller erlaube, dich zu ere Schtudie izlade'; + + @override + String get sound => 'Ton'; + + @override + String get none => 'Keine'; + + @override + String get fast => 'Schnäll'; + + @override + String get normal => 'Normal'; + + @override + String get slow => 'Langsam'; + + @override + String get insideTheBoard => 'Uf em Brätt'; + + @override + String get outsideTheBoard => 'Usse vum Brätt'; + + @override + String get allSquaresOfTheBoard => 'Uf jedem Fäld'; + + @override + String get onSlowGames => 'Bi langsame Partie'; + + @override + String get always => 'Immer'; + + @override + String get never => 'Nie'; + + @override + String xCompetesInY(String param1, String param2) { + return '$param1 nimmt bi $param2 teil'; + } + + @override + String get victory => 'Sieg'; + + @override + String get defeat => 'Niderlag'; + + @override + String victoryVsYInZ(String param1, String param2, String param3) { + return '$param1 gäge $param2 in $param3'; + } + + @override + String defeatVsYInZ(String param1, String param2, String param3) { + return '$param1 gäge $param2 in $param3'; + } + + @override + String drawVsYInZ(String param1, String param2, String param3) { + return '$param1 gäge $param2 in $param3'; + } + + @override + String get timeline => 'Verlauf'; + + @override + String get starting => 'Schtartet:'; + + @override + String get allInformationIsPublicAndOptional => 'Alli Informatione sind öffentlich und freiwillig.'; + + @override + String get biographyDescription => 'Verzell öppis über dich: dini Inträsse, was du gern häsch bim Schach, dini liebschte Eröffnige oder Schpiller wo du guet findsch, etc...'; + + @override + String get listBlockedPlayers => 'Lischte vu de Schpiller, wo du blockiert häsch'; + + @override + String get human => 'Mänsch'; + + @override + String get computer => 'Computer'; + + @override + String get side => 'Farb'; + + @override + String get clock => 'Uhr'; + + @override + String get opponent => 'Gägner'; + + @override + String get learnMenu => 'Lerne'; + + @override + String get studyMenu => 'Schtudie'; + + @override + String get practice => 'Trainiere'; + + @override + String get community => 'Gmeinschaft'; + + @override + String get tools => 'Werchzüg'; + + @override + String get increment => 'Inkrement'; + + @override + String get error_unknown => 'ungültigi Agab'; + + @override + String get error_required => 'Das isch es Pflichtfäld'; + + @override + String get error_email => 'Die E-Mail-Adrässe isch ungültig'; + + @override + String get error_email_acceptable => 'Die E-Mail-Adrässe wird nöd akzeptiert. Bitte überprüef sie und probiers nomal.'; + + @override + String get error_email_unique => 'Die E-Mail-Adrässe isch ungültig oder bereits vorhande'; + + @override + String get error_email_different => 'Das isch bereits dini E-Mail-Adrässe'; + + @override + String error_minLength(String param) { + return 'Muess mindeschtens $param Zeiche lang si'; + } + + @override + String error_maxLength(String param) { + return 'Dörf höchschtens $param Zeiche lang si'; + } + + @override + String error_min(String param) { + return 'Muess mindeschtens $param si'; + } + + @override + String error_max(String param) { + return 'Dörf höchschtens $param si'; + } + + @override + String ifRatingIsPlusMinusX(String param) { + return 'Wänn d\'Wertig ± $param isch'; + } + + @override + String get ifRegistered => 'Wänn regischtriert'; + + @override + String get onlyExistingConversations => 'Nur bestehendi Underhaltige'; + + @override + String get onlyFriends => 'Nur Fründe'; + + @override + String get menu => 'Menü'; + + @override + String get castling => 'Rochade'; + + @override + String get whiteCastlingKingside => 'Wiss 0-0'; + + @override + String get blackCastlingKingside => 'Schwarz 0-0'; + + @override + String tpTimeSpentPlaying(String param) { + return 'Gsamti-Schpillzit: $param'; + } + + @override + String get watchGames => 'Partie zueluege'; + + @override + String tpTimeSpentOnTV(String param) { + return 'Gsamtzit uf Lichess TV: $param'; + } + + @override + String get watch => 'Zueluege'; + + @override + String get videoLibrary => 'Video-Bibliothek'; + + @override + String get streamersMenu => 'Streamer'; + + @override + String get mobileApp => 'Mobili App'; + + @override + String get webmasters => 'Webmaster'; + + @override + String get about => 'Über'; + + @override + String aboutX(String param) { + return 'Über $param'; + } + + @override + String xIsAFreeYLibreOpenSourceChessServer(String param1, String param2) { + return '$param1 isch en freie, quälle-offene Schachserver. Gratis ($param2) und ohni Werbig.'; + } + + @override + String get really => 'würkli'; + + @override + String get contribute => 'Mitmache'; + + @override + String get termsOfService => 'Nutzigs-Bedingige'; + + @override + String get sourceCode => 'Quällcode'; + + @override + String get simultaneousExhibitions => 'Simultanschach Veraschtaltige'; + + @override + String get host => 'Simultanschpiller'; + + @override + String hostColorX(String param) { + return 'Farb Simultanschpiller: $param'; + } + + @override + String get yourPendingSimuls => 'Dini usstehende Simultanschachs'; + + @override + String get createdSimuls => 'Neu kreierts Simultanschach'; + + @override + String get hostANewSimul => 'Mach dir es Simultanschach'; + + @override + String get signUpToHostOrJoinASimul => 'Mäld dich - als Gaschtgeber oder Teilnehmer - bime Simultanschach a'; + + @override + String get noSimulFound => 'Simultanschach nöd gfunde'; + + @override + String get noSimulExplanation => 'Das Simultanschach exischtiert nöd.'; + + @override + String get returnToSimulHomepage => 'Zrugg zur Simultanschach Startsite'; + + @override + String get aboutSimul => 'Bim Simultanschach schpillt 1 Simultanschpiller \nglichzitig gäge beliebig vill Simultangägner.'; + + @override + String get aboutSimulImage => 'Hät de Bobby Fischer, bi 50 Gägner, 47 Sieg \nund 2 Remis gschafft; nur 1 Partie hät er verlore.'; + + @override + String get aboutSimulRealLife => 'Bim Simultanschach schpillt 1 Simultanschpiller \nglichzitig gäge beliebig vill Simultangägner, \nso lang, bis alli Partie fertig gschpillt sind.'; + + @override + String get aboutSimulRules => 'Wie bi reale Simultanschach Veraschtaltige, gaht \nde Simultanschpiller vu eim Simultangägner zum \nNächschte und macht bi jedem Brätt 1 Zug.'; + + @override + String get aboutSimulSettings => 'Zugsrücknahme, zuesätzlichi Zit oder Revanche \ngits nöd und es isch immer ungwertet.'; + + @override + String get create => 'Erschtelle'; + + @override + String get whenCreateSimul => 'Wänn du dir es Simultanschach machsch, chasch du glichzitig gäge mehreri Gägner schpille.'; + + @override + String get simulVariantsHint => 'Wänn du mehreri Variante wählsch, chann jede Simultangägner ussueche, was er schpille will.'; + + @override + String get simulClockHint => 'Fischer Uhr: Je meh Gägner, umso meh Zit bruchsch wahrschinlich.'; + + @override + String get simulAddExtraTime => 'Du chasch dir Extrazit geh, dass du z\'rächt chunsch.'; + + @override + String get simulHostExtraTime => 'Extrazit Simultanschpiller'; + + @override + String get simulAddExtraTimePerPlayer => 'Gib für jede Schpiller, wo am Simultan teilnimmt, bi dinere Uhr Zit dezue'; + + @override + String get simulHostExtraTimePerPlayer => 'Für jede Schpiller zuesätzlichi Zit addiere'; + + @override + String get lichessTournaments => 'Lichess Turnier'; + + @override + String get tournamentFAQ => 'Arena Turnier - hüfigi Frage (FAQ)'; + + @override + String get timeBeforeTournamentStarts => 'Zit bis s\'Turnier afangt'; + + @override + String get averageCentipawnLoss => 'Durchschnittlichi Verluscht vo Hundertstelpure'; + + @override + String get accuracy => 'Gnauigkeit'; + + @override + String get keyboardShortcuts => 'Diräkti Taschtebefehl'; + + @override + String get keyMoveBackwardOrForward => 'zieh zrugg/vorwärts'; + + @override + String get keyGoToStartOrEnd => 'gang zum Afang/Änd'; + + @override + String get keyCycleSelectedVariation => 'Usgwählti Zyklusvariante'; + + @override + String get keyShowOrHideComments => 'zeig/verschteck d\'Kommentär'; + + @override + String get keyEnterOrExitVariation => 'Variante ischtige/verlah'; + + @override + String get keyRequestComputerAnalysis => 'Computeranalyse afordere, Lern us dine Fähler'; + + @override + String get keyNextLearnFromYourMistakes => 'Nächschts (Lern vu dine Fähler)'; + + @override + String get keyNextBlunder => 'Nächschte Patzer'; + + @override + String get keyNextMistake => 'Nächschte Fähler'; + + @override + String get keyNextInaccuracy => 'Nächschti Ungnauigkeit'; + + @override + String get keyPreviousBranch => 'Vorherige Variante'; + + @override + String get keyNextBranch => 'Nächschti Variante'; + + @override + String get toggleVariationArrows => 'Variatione-Pfil umschalte'; + + @override + String get cyclePreviousOrNextVariation => 'Zyklus vorherigi/nächschti Variante'; + + @override + String get toggleGlyphAnnotations => 'Glyph-Amerkige ischalte und usschalte (...was immer das glyph isch?!)'; + + @override + String get togglePositionAnnotations => 'Positionsamerkige umschalte'; + + @override + String get variationArrowsInfo => 'Mit de Variationspfil chasch ohni d\'Zugslischte navigiere.'; + + @override + String get playSelectedMove => 'spill de gwählti zug'; + + @override + String get newTournament => 'Neus Turnier'; + + @override + String get tournamentHomeTitle => 'Schachturnier mit verschiedene Zitkontrolle und Variante'; + + @override + String get tournamentHomeDescription => 'Schpill rasanti Turnier! Mach bi plante Turnier mit oder erschtell es Eiges. Bullet, Blitz, Klassisch, Schach960, König uf em Hügel, Drüfach-Schach und witeri Variante sind vorhande - für ändlose Schach-Spass.'; + + @override + String get tournamentNotFound => 'Turnier nöd gfunde'; + + @override + String get tournamentDoesNotExist => 'Das Turnier exischtiert nöd.'; + + @override + String get tournamentMayHaveBeenCanceled => 'Es Turnier wird abgseit, wänn alli Schpiller vor em Start weg sind.'; + + @override + String get returnToTournamentsHomepage => 'Zrugg zur Turnier-Homepage'; + + @override + String weeklyPerfTypeRatingDistribution(String param) { + return 'Wüchentlichi $param-Wertigsverteilig'; + } + + @override + String yourPerfTypeRatingIsRating(String param1, String param2) { + return 'Dini $param1-Wertig isch $param2.'; + } + + @override + String youAreBetterThanPercentOfPerfTypePlayers(String param1, String param2) { + return 'Du bisch besser als $param1 vu allne $param2-Schpiller.'; + } + + @override + String userIsBetterThanPercentOfPerfTypePlayers(String param1, String param2, String param3) { + return '$param1 isch besser als $param2 vo allne $param3-Schpiller.'; + } + + @override + String betterThanPercentPlayers(String param1, String param2) { + return 'Besser als $param1 vu $param2 Schpiller'; + } + + @override + String youDoNotHaveAnEstablishedPerfTypeRating(String param) { + return 'Du häsch kei fixi $param-Wertig.'; + } + + @override + String get yourRating => 'Dini Wertig'; + + @override + String get cumulative => 'Summiert'; + + @override + String get glicko2Rating => 'Glicko-2 Wertig'; + + @override + String get checkYourEmail => 'Check dini E-Mail'; + + @override + String get weHaveSentYouAnEmailClickTheLink => 'Mir händ dir es Mail gschickt: Klick de Link i de Nachricht, um dis Konto z\'aktiviere.'; + + @override + String get ifYouDoNotSeeTheEmailCheckOtherPlaces => 'Wänn du die E-Mail nöd findsch, dursuech witeri Ordner: z. B. de Spamordner oder au de Papierchorb.'; + + @override + String weHaveSentYouAnEmailTo(String param) { + return 'Mir händ dir es Email a $param gschickt. Klick im Mail uf de Link und setz dis Passwort zrugg.'; + } + + @override + String byRegisteringYouAgreeToBeBoundByOur(String param) { + return 'Mit dinere Regischtrierig schtimmsch du de $param zue.'; + } + + @override + String readAboutOur(String param) { + return 'Lies euseri $param.'; + } + + @override + String get networkLagBetweenYouAndLichess => 'Netzwerk-Verzögerig, zwüschet dir und Lichess (lag)'; + + @override + String get timeToProcessAMoveOnLichessServer => 'Zit zum en Zug uf em Lichess-Server z\'verarbeite'; + + @override + String get downloadAnnotated => 'Download mit Kommentär'; + + @override + String get downloadRaw => 'Download ohni Kommentär'; + + @override + String get downloadImported => 'Importierte Download'; + + @override + String get crosstable => 'Matchverlauf'; + + @override + String get youCanAlsoScrollOverTheBoardToMoveInTheGame => 'Übers Brätt scrolle laht s\'Schpil vor- oder rückwärts laufe.'; + + @override + String get scrollOverComputerVariationsToPreviewThem => 'Über e Computer-Variante scrolle, zeigt e Vorschau.'; + + @override + String get analysisShapesHowTo => 'Mit Shift + Musklick - rächts oder links - chasch grüeni oder roti Chreis und Pfil ufs Brätt zeichne.'; + + @override + String get letOtherPlayersMessageYou => 'Erlaub andere Schpiller dir Nachrichte z\'schicke'; + + @override + String get receiveForumNotifications => 'Mäldige empfange, falls du im Forum erwähnt wirsch'; + + @override + String get shareYourInsightsData => 'Teil dini persönliche Schpilldate'; + + @override + String get withNobody => 'Mit niemertem'; + + @override + String get withFriends => 'Mit Fründe'; + + @override + String get withEverybody => 'Mit allne'; + + @override + String get kidMode => 'Chinder-Modus'; + + @override + String get kidModeIsEnabled => 'De Chindermodus isch aktiviert.'; + + @override + String get kidModeExplanation => 'Sicherheitsiischtellig: Im Chinder-Modus isch die ganzi Kommunikation deaktiviert. Aktivier de Modus und schütz dini Chind vor andere Internetbenutzer.'; + + @override + String inKidModeTheLichessLogoGetsIconX(String param) { + return 'Im Chinder-Modus erschint s\'Lichess-Logo mit $param-Icon, was dir zeigt, dass dini Chind gschützt sind.'; + } + + @override + String get askYourChessTeacherAboutLiftingKidMode => 'Dis Konto wird verwaltet, frög din Schachlehrer für d\'Ufhebig vum Chindermodus.'; + + @override + String get enableKidMode => 'Chinder-Modus aktiviere'; + + @override + String get disableKidMode => 'Chinder-Modus deaktiviere'; + + @override + String get security => 'Sicherheit'; + + @override + String get sessions => 'Sitzige'; + + @override + String get revokeAllSessions => 'alli Sitzige beände'; + + @override + String get playChessEverywhere => 'Schpill überall Schach'; + + @override + String get asFreeAsLichess => 'So gratis wie Lichess'; + + @override + String get builtForTheLoveOfChessNotMoney => 'Erschaffe us Liebi zum Schach, nöd zum Gäld'; + + @override + String get everybodyGetsAllFeaturesForFree => 'Jede chann alli Funktione gratis nutze'; + + @override + String get zeroAdvertisement => 'Null Werbig'; + + @override + String get fullFeatured => 'Alli Funktione'; + + @override + String get phoneAndTablet => 'Smart Phone und Tablet'; + + @override + String get bulletBlitzClassical => 'Bullet, Blitz, Klassisch'; + + @override + String get correspondenceChess => 'Fernschach'; + + @override + String get onlineAndOfflinePlay => 'Online und offline schpille'; + + @override + String get viewTheSolution => 'Lueg d\'Lösig a'; + + @override + String get followAndChallengeFriends => 'Folg Fründe und forder sie zum Schpil'; + + @override + String get gameAnalysis => 'Schpil-Analyse'; + + @override + String xHostsY(String param1, String param2) { + return '$param1 hät $param2 erschtellt'; + } + + @override + String xJoinsY(String param1, String param2) { + return '$param1 isch $param2 biträte'; + } + + @override + String xLikesY(String param1, String param2) { + return '$param1 gfallt $param2'; + } + + @override + String get quickPairing => 'Schnälli Paarig'; + + @override + String get lobby => 'Lobby'; + + @override + String get anonymous => 'Anonym'; + + @override + String yourScore(String param) { + return 'Din Punkteschtand: $param'; + } + + @override + String get language => 'Schprach'; + + @override + String get background => 'Hindergrund'; + + @override + String get light => 'Hell'; + + @override + String get dark => 'Dunkel'; + + @override + String get transparent => 'Durchsichtig'; + + @override + String get deviceTheme => 'Mit em Grät synchronisiere'; + + @override + String get backgroundImageUrl => 'Hindergrund-Bild-URL:'; + + @override + String get board => 'Brätt'; + + @override + String get size => 'Grössi'; + + @override + String get opacity => 'OpaStadt'; + + @override + String get brightness => 'Helligkeit'; + + @override + String get hue => 'Farbton'; + + @override + String get boardReset => 'Farbe zruggstelle'; + + @override + String get pieceSet => 'Figureart'; + + @override + String get embedInYourWebsite => 'I dini Website integriere'; + + @override + String get usernameAlreadyUsed => 'De Benutzername isch bereits vergeh, bitte probier en andere.'; + + @override + String get usernamePrefixInvalid => 'De Benutzername muess mit eme Buechschtabe afange.'; + + @override + String get usernameSuffixInvalid => 'De Benutzername muess mit eme Buechschtabe oder ere Zahl ände.'; + + @override + String get usernameCharsInvalid => 'De Benutzername dörf nu Buechschtabe, Zahle, Understrich und Bindestrich ha. Nach enand folgendi Understrich oder Bindestrich sind nöd erlaubt.'; + + @override + String get usernameUnacceptable => 'De Benutzername wird nöd akzeptiert.'; + + @override + String get playChessInStyle => 'Schpill Schach mit Schtil'; + + @override + String get chessBasics => 'Grundlage'; + + @override + String get coaches => 'Trainer'; + + @override + String get invalidPgn => 'Fähler im PGN'; + + @override + String get invalidFen => 'Fähler im FEN'; + + @override + String get custom => 'Eigeni Bedänkzit'; + + @override + String get notifications => 'Benachrichtigunge'; + + @override + String notificationsX(String param1) { + return 'Benachrichtigunge: $param1'; + } + + @override + String perfRatingX(String param) { + return 'Wertig: $param'; + } + + @override + String get practiceWithComputer => 'Üeb mit em Computer'; + + @override + String anotherWasX(String param) { + return 'Möglich wär au $param'; + } + + @override + String bestWasX(String param) { + return 'Am beschte wär $param'; + } + + @override + String get youBrowsedAway => 'Du häsch weg blätteret'; + + @override + String get resumePractice => 'Üebig fortsetze'; + + @override + String get drawByFiftyMoves => 'Das Spiel isch unentschiede, gemäss de 50-Züg-Regle.'; + + @override + String get theGameIsADraw => 'Das Schpil isch Remis.'; + + @override + String get computerThinking => 'De Computer rächnet ...'; + + @override + String get seeBestMove => 'Zeig de bescht Zug'; + + @override + String get hideBestMove => 'Verschteck de bescht Zug'; + + @override + String get getAHint => 'Lass dir en Tipp geh'; + + @override + String get evaluatingYourMove => 'Din Zug wird gwertet ...'; + + @override + String get whiteWinsGame => 'Wiss günnt'; + + @override + String get blackWinsGame => 'Schwarz günnt'; + + @override + String get learnFromYourMistakes => 'Lern us dine Fähler'; + + @override + String get learnFromThisMistake => 'Lern us dem Fähler'; + + @override + String get skipThisMove => 'Überschpring de Zug'; + + @override + String get next => 'Zum Nächschte'; + + @override + String xWasPlayed(String param) { + return '$param isch gschpillt worde'; + } + + @override + String get findBetterMoveForWhite => 'Find en bessere Zug für Wiss'; + + @override + String get findBetterMoveForBlack => 'Find en bessere Zug für Schwarz'; + + @override + String get resumeLearning => 'Witer lerne'; + + @override + String get youCanDoBetter => 'Das chasch du besser'; + + @override + String get tryAnotherMoveForWhite => 'Probier en andere Zug für Wiss'; + + @override + String get tryAnotherMoveForBlack => 'Probier en andere Zug für Schwarz'; + + @override + String get solution => 'Uflösig'; + + @override + String get waitingForAnalysis => 'Warte uf d\'Analyse'; + + @override + String get noMistakesFoundForWhite => 'Kei Fähler vu Wiss gfunde'; + + @override + String get noMistakesFoundForBlack => 'Kei Fähler vu Schwarz gfunde'; + + @override + String get doneReviewingWhiteMistakes => 'Fähler vu Wiss prüeft'; + + @override + String get doneReviewingBlackMistakes => 'Fähler vu Schwarz prüeft'; + + @override + String get doItAgain => 'Machs nomal'; + + @override + String get reviewWhiteMistakes => 'Fähler vu Wiss werded prüeft'; + + @override + String get reviewBlackMistakes => 'Fähler vu Schwarz werded prüeft'; + + @override + String get advantage => 'Vorteil'; + + @override + String get opening => 'Eröffnig'; + + @override + String get middlegame => 'Mittelschpiel'; + + @override + String get endgame => 'Ändschpiel'; + + @override + String get conditionalPremoves => 'Bedingti Voruszüg'; + + @override + String get addCurrentVariation => 'Aktuelli Variante zuefüege'; + + @override + String get playVariationToCreateConditionalPremoves => 'Schpill e Variante, um bedingti Voruszüg z\'kreiere'; + + @override + String get noConditionalPremoves => 'Kei bedingti Voruszüg'; + + @override + String playX(String param) { + return 'Schpill $param'; + } + + @override + String get showUnreadLichessMessage => 'Lichess hät dir e privati Nachricht g\'schickt.'; + + @override + String get clickHereToReadIt => 'Klick da zum läse'; + + @override + String get sorry => 'Äxgüsi :('; + + @override + String get weHadToTimeYouOutForAWhile => 'Mir händ dich für es Zitli müesse schperre.'; + + @override + String get why => 'Wieso?'; + + @override + String get pleasantChessExperience => 'Mir wänd allne e möglichscht gueti Schach-Erfahrig büte.'; + + @override + String get goodPractice => 'Zum dem Zwäck müend mir sicher si, dass sich all Schpiller korräkt verhalted.'; + + @override + String get potentialProblem => 'Wänn es möglichs Problem entdeckt wird, zeiged mir die Mäldig.'; + + @override + String get howToAvoidThis => 'Wie chasch das verhindere?'; + + @override + String get playEveryGame => 'Schpill jedi Partie, wo du afangsch, au fertig.'; + + @override + String get tryToWin => 'Probier jedes Schpil z\'günne (oder mindeschtens es Remis z\'erreiche).'; + + @override + String get resignLostGames => 'Gib es verlores Schpiel uf (lass nöd eifach d\'Uhr ablaufe).'; + + @override + String get temporaryInconvenience => 'Mir entschuldiged eus für die vorübergehende Unannehmlichkeite,'; + + @override + String get wishYouGreatGames => 'und wünsched dir tolli Schpiel uf lichess.org.'; + + @override + String get thankYouForReading => 'Danke für’s Läse!'; + + @override + String get lifetimeScore => 'Läbeszit Rekord'; + + @override + String get currentMatchScore => 'Aktuelle Schpielschtand'; + + @override + String get agreementAssistance => 'Ich schtimme zue, dass ich zum Schpille, kei Hilfe nutze - wie z. B. Schach-Computer, Büecher, Datäbanke oder Drittpersone.'; + + @override + String get agreementNice => 'Ich schtimme zue, dass ich mit andere Schpiller immer reschpäktvoll umgang.'; + + @override + String agreementMultipleAccounts(String param) { + return 'Ich bi demit iverschtande, dass ich kei Mehrfachkonti mache (usser us de Gründ, wo i de $param ageh sind).'; + } + + @override + String get agreementPolicy => 'Ich schtimme zue, dass ich alli Lichess-Richtlinie befolge.'; + + @override + String get searchOrStartNewDiscussion => 'Suech e Underhaltig oder fang e Neui a'; + + @override + String get edit => 'Bearbeite'; + + @override + String get bullet => 'Bullet'; + + @override + String get blitz => 'Blitz'; + + @override + String get rapid => 'Schnällschach'; + + @override + String get classical => 'Klassisch'; + + @override + String get ultraBulletDesc => 'Wahnsinnig schnälli Schpiel: weniger als 30 Sekunde'; + + @override + String get bulletDesc => 'Sehr schnälli Schpiel: weniger als 3 Minute'; + + @override + String get blitzDesc => 'Schnälli Schpiel: 3 bis 8 Minute'; + + @override + String get rapidDesc => 'Schnällschach: 8 bis 25 Minute'; + + @override + String get classicalDesc => 'Klassischi Schpiel: 25 Minute und meh'; + + @override + String get correspondenceDesc => 'Fernschach Partie: 1 oder mehreri Täg pro Zug'; + + @override + String get puzzleDesc => 'Schach-Taktik Trainer'; + + @override + String get important => 'Wichtig'; + + @override + String yourQuestionMayHaveBeenAnswered(String param1) { + return 'Dini Frag chönnt bereits $param1 beantwortet worde si'; + } + + @override + String get inTheFAQ => 'i de hüfig gschtellte Frage (FAQ)'; + + @override + String toReportSomeoneForCheatingOrBadBehavior(String param1) { + return 'Zum en Nutzer wäge Betrug oder schlächtem Verhalte mälde, $param1'; + } + + @override + String get useTheReportForm => 'benutz euses Mälde-Formular'; + + @override + String toRequestSupport(String param1) { + return 'Zum Hilf überchoo, $param1'; + } + + @override + String get tryTheContactPage => 'probiers uf de Kontaktsite'; + + @override + String makeSureToRead(String param1) { + return 'Lies unbedingt $param1'; + } + + @override + String get theForumEtiquette => 'd\'Forum Aschtandsregle'; + + @override + String get thisTopicIsArchived => 'Das Thema isch archiviert und chann nüme beantwortet werde.'; + + @override + String joinTheTeamXToPost(String param1) { + return 'Tritt $param1 bi, um i dem Forum Biträg z\'schribe'; + } + + @override + String teamNamedX(String param1) { + return '$param1 Team'; + } + + @override + String get youCannotPostYetPlaySomeGames => 'Du chasch nonig im Forum schribe: Schpill zerscht no es paar Partie!'; + + @override + String get subscribe => 'Abonniere'; + + @override + String get unsubscribe => 'Abmälde'; + + @override + String mentionedYouInX(String param1) { + return 'hät dich in \"$param1\" erwähnt.'; + } + + @override + String xMentionedYouInY(String param1, String param2) { + return '$param1 hät dich in \"$param2\" erwähnt.'; + } + + @override + String invitedYouToX(String param1) { + return 'hät dich zu \"$param1\" iglade.'; + } + + @override + String xInvitedYouToY(String param1, String param2) { + return '$param1 hät dich zu \"$param2\" iglade.'; + } + + @override + String get youAreNowPartOfTeam => 'Du bisch jetzt es Mitglid vu dem Team.'; + + @override + String youHaveJoinedTeamX(String param1) { + return 'Du bisch \"$param1\" biträte.'; + } + + @override + String get someoneYouReportedWasBanned => 'Öpper wo du gmäldet häsch, isch bannt worde'; + + @override + String get congratsYouWon => 'Gratuliere, du häsch gunne!'; + + @override + String gameVsX(String param1) { + return 'Partie gäge $param1'; + } + + @override + String resVsX(String param1, String param2) { + return '$param1 gäge $param2'; + } + + @override + String get lostAgainstTOSViolator => 'Du häsch Wertigspünkt verlore, gäge öpper, wo d\'Lichess-Regle verletzt hät'; + + @override + String refundXpointsTimeControlY(String param1, String param2) { + return 'Rückerschtattig: $param1 $param2 Wertigspünkt.'; + } + + @override + String get timeAlmostUp => 'D\'Zit isch fascht abgloffe!'; + + @override + String get clickToRevealEmailAddress => '[Klick, zum die E-Mail-Adrässe azeige]'; + + @override + String get download => 'Abelade'; + + @override + String get coachManager => 'Trainer Verwalter'; + + @override + String get streamerManager => 'Streamer Verwalter'; + + @override + String get cancelTournament => 'Brich das Turnier ab'; + + @override + String get tournDescription => 'Turnier Beschribig'; + + @override + String get tournDescriptionHelp => 'Wottsch de Teilnehmer öppis Speziells mitteile? Probier dich churz z\'fasse. Url mit Name sind möglich: [name](https://url)'; + + @override + String get ratedFormHelp => 'Alli Partie sind gwertet\nund beiflussed dini Wertig'; + + @override + String get onlyMembersOfTeam => 'Nur Mitglider vum Team'; + + @override + String get noRestriction => 'Kei Ischränkige'; + + @override + String get minimumRatedGames => 'Minimum gwerteti Partie'; + + @override + String get minimumRating => 'Minimali Wertig'; + + @override + String get maximumWeeklyRating => 'Maximali wüchentlichi Wertig'; + + @override + String positionInputHelp(String param) { + return 'E gültigi FEN schtartet jedes Schpiel ab ere beschtimmte Schtellig. \nDas funktioniert nur für Schtandardschpiel und nöd für Variante!\nDu chasch mit $param so e FEN-Schtellig generiere und \nsie dänn im Fäld \"Afangsposition\" ifüege oder das \nFäld leer lah und all Schpiel normal schtarte.'; + } + + @override + String get cancelSimul => 'Simultanschach abbräche'; + + @override + String get simulHostcolor => 'Farb vom Simultanschpiller, für jedi Partie'; + + @override + String get estimatedStart => 'Vorussichtlichi Schtartzit'; + + @override + String simulFeatured(String param) { + return 'Uf $param zeige'; + } + + @override + String simulFeaturedHelp(String param) { + return 'Zeig allne uf $param dis Simultanschach. Privats Simultanschach deaktiviert.'; + } + + @override + String get simulDescription => 'Simultanschach Beschribig'; + + @override + String get simulDescriptionHelp => 'Wottsch de Teilnehmer öppis mitteile?'; + + @override + String markdownAvailable(String param) { + return '$param isch für erwitereti Syntax verfüegbar.'; + } + + @override + String get embedsAvailable => 'Füeg zum Ibette e Schpil-URL oder e Schtudiekapitel-URL i.'; + + @override + String get inYourLocalTimezone => 'I dinere lokale Zitzone'; + + @override + String get tournChat => 'Turnier Chat'; + + @override + String get noChat => 'Kein Chat'; + + @override + String get onlyTeamLeaders => 'Nur Teamleiter'; + + @override + String get onlyTeamMembers => 'Nur Team-Mitglider'; + + @override + String get navigateMoveTree => 'Dur de Zugbaum navigiere'; + + @override + String get mouseTricks => 'Tricks mit de Muus'; + + @override + String get toggleLocalAnalysis => 'Lokali Computer-Analyse a-/abschalte'; + + @override + String get toggleAllAnalysis => 'Alli Computer-Analyse a-/abschalte'; + + @override + String get playComputerMove => 'Schpill de bescht Computerzug'; + + @override + String get analysisOptions => 'Analyse Möglichkeite'; + + @override + String get focusChat => 'Chat fokussiere'; + + @override + String get showHelpDialog => 'Zeig de Hilfsdialog'; + + @override + String get reopenYourAccount => 'Konto wider eröffne'; + + @override + String get closedAccountChangedMind => 'Wänn du s\'Konto gschlosse häsch und das bereusch, dänn gits no 1 Chance dis Konto wider zrugg z\'hole.'; + + @override + String get onlyWorksOnce => 'Das funktioniert aber nur eimal.'; + + @override + String get cantDoThisTwice => 'Wänn du dis Konto es 2. Mal schlüssisch, gits kei Möglichkeit meh das rückgängig z\'mache.'; + + @override + String get emailAssociatedToaccount => 'Mit dim Konto verbundeni E-Mail-Adrässe'; + + @override + String get sentEmailWithLink => 'Mir hän dir e E-Mail mit eme Link gschickt.'; + + @override + String get tournamentEntryCode => 'Turnier-Bitrittscode'; + + @override + String get hangOn => 'En Momänt!'; + + @override + String gameInProgress(String param) { + return 'Du häsch no e laufedi Partie mit $param.'; + } + + @override + String get abortTheGame => 'Partie abbräche'; + + @override + String get resignTheGame => 'Partie ufgeh'; + + @override + String get youCantStartNewGame => 'Du chasch kei neui Partie starte, bevor die no Laufendi nöd fertig gschpillt isch.'; + + @override + String get since => 'Sit'; + + @override + String get until => 'Bis'; + + @override + String get lichessDbExplanation => 'Gwerteti Schpiel vu allne Lichess Schpiller'; + + @override + String get switchSides => 'Farb wächsle'; + + @override + String get closingAccountWithdrawAppeal => 'Wänn du dis Konto schlüssisch, ziehsch du au din Ischpruch zrugg'; + + @override + String get ourEventTips => 'Eusi Tipps, fürs Organisiere vu Events'; + + @override + String get instructions => 'Awisige'; + + @override + String get showMeEverything => 'Zeig mer alles'; + + @override + String get lichessPatronInfo => 'Lichess isch e Wohltätigkeitsorganisation und e völlig choschtelosi/freii Open-Source-Software.\nAlli Betriebs-Choschte, d\'Entwicklig und d\'Inhält werded usschliesslich dur Benutzerschpände finanziert.'; + + @override + String get nothingToSeeHere => 'Da gits im monumäntan nüt z\'gseh.'; + + @override + String opponentLeftCounter(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Din Gägner hät d\'Partie verlah, du chasch in $count Sekunde din Sieg beaschpruche', + one: 'Din Gägner hät d\'Partie verlah. Du chasch in $count Sekunde din Sieg beaschpruche', + ); + return '$_temp0'; + } + + @override + String mateInXHalfMoves(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Matt i $count Halbzüg', + one: 'Matt i $count Halbzug', + ); + return '$_temp0'; + } + + @override + String nbBlunders(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Patzer', + one: '$count Patzer', + ); + return '$_temp0'; + } + + @override + String nbMistakes(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Fähler', + one: '$count Fähler', + ); + return '$_temp0'; + } + + @override + String nbInaccuracies(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Ungnauigkeite', + one: '$count Ungnauigkeit', + ); + return '$_temp0'; + } + + @override + String nbPlayers(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Schpiller', + one: '$count Schpiller', + ); + return '$_temp0'; + } + + @override + String nbGames(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Partie', + one: '$count Partie', + ); + return '$_temp0'; + } + + @override + String ratingXOverYGames(int count, String param2) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Wertig vu $param2 Spiel', + one: '$count Wertig vu $param2 Spiel', + ); + return '$_temp0'; + } + + @override + String nbBookmarks(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Läsezeiche', + one: '$count Läsezeiche', + ); + return '$_temp0'; + } + + @override + String nbDays(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Täg', + one: '$count Tag', + ); + return '$_temp0'; + } + + @override + String nbHours(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Schtunde', + one: '$count Schtund', + ); + return '$_temp0'; + } + + @override + String nbMinutes(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Minute', + one: '$count Minute', + ); + return '$_temp0'; + } + + @override + String rankIsUpdatedEveryNbMinutes(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'De Rang wird alli $count Minute aktualisiert', + one: 'De Rang wird jedi Minute aktualisiert', + ); + return '$_temp0'; + } + + @override + String nbPuzzles(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Ufgabe', + one: '$count Ufgab', + ); + return '$_temp0'; + } + + @override + String nbGamesWithYou(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Partie mit dir', + one: '$count Partie mit dir', + ); + return '$_temp0'; + } + + @override + String nbRated(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count gwerteti', + one: '$count gwertet', + ); + return '$_temp0'; + } + + @override + String nbWins(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Sieg', + one: '$count Sieg', + ); + return '$_temp0'; + } + + @override + String nbLosses(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Niderlage', + one: '$count Niederlag', + ); + return '$_temp0'; + } + + @override + String nbDraws(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Remis', + one: '$count Remis', + ); + return '$_temp0'; + } + + @override + String nbPlaying(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count laufendi Partie', + one: '$count laufendi Partie', + ); + return '$_temp0'; + } + + @override + String giveNbSeconds(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Gib dim Gägner $count Sekunde', + one: 'Gib dim Gägner $count Sekunde', + ); + return '$_temp0'; + } + + @override + String nbTournamentPoints(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Turnierpünkt', + one: '$count Turnierpunkt', + ); + return '$_temp0'; + } + + @override + String nbStudies(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Schtudie', + one: '$count Schtudie', + ); + return '$_temp0'; + } + + @override + String nbSimuls(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Simultan', + one: '$count Simultan', + ); + return '$_temp0'; + } + + @override + String moreThanNbRatedGames(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '≥ $count gwerteti Schpiel', + one: '≥ $count gwertets Schpiel', + ); + return '$_temp0'; + } + + @override + String moreThanNbPerfRatedGames(int count, String param2) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '≥ $count gwerteti $param2 Schpiel', + one: '≥ $count gwertets $param2 Schpiel', + ); + return '$_temp0'; + } + + @override + String needNbMorePerfGames(int count, String param2) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Du muesch no $count gwerteti Partie meh $param2 schpille', + one: 'Du muesch no $count gwerteti Partie meh $param2 schpille', + ); + return '$_temp0'; + } + + @override + String needNbMoreGames(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Du bruchsch no $count Wertigs-Schpiel meh', + one: 'Du bruchsch no $count Wertigs-Schpiel meh', + ); + return '$_temp0'; + } + + @override + String nbImportedGames(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count importierti Partie', + one: '$count importierti Partie', + ); + return '$_temp0'; + } + + @override + String nbFriendsOnline(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Fründe online', + one: '$count Fründ online', + ); + return '$_temp0'; + } + + @override + String nbFollowers(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Follower', + one: '$count Follower', + ); + return '$_temp0'; + } + + @override + String nbFollowing(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count folgänd', + one: '$count folgänd', + ); + return '$_temp0'; + } + + @override + String lessThanNbMinutes(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Weniger als $count Minute', + one: 'Weniger als $count Minute', + ); + return '$_temp0'; + } + + @override + String nbGamesInPlay(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count laufendi Partie', + one: '$count laufendi Partie', + ); + return '$_temp0'; + } + + @override + String maximumNbCharacters(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Höchschtens $count Buechstabe.', + one: 'Höchschtens $count Buechstabe.', + ); + return '$_temp0'; + } + + @override + String blocks(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Blockti', + one: '$count blockt', + ); + return '$_temp0'; + } + + @override + String nbForumPosts(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Forum-Biträg', + one: '$count Forum-Bitrag', + ); + return '$_temp0'; + } + + @override + String nbPerfTypePlayersThisWeek(int count, String param2) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count $param2 Schpiller i dere Wuche.', + one: '$count $param2 Schpiller i dere Wuche.', + ); + return '$_temp0'; + } + + @override + String availableInNbLanguages(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Verfüegbar i $count Schprache!', + one: 'Verfüegbar i $count Schprach!', + ); + return '$_temp0'; + } + + @override + String nbSecondsToPlayTheFirstMove(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Sekunde für de 1. Zug', + one: '$count Sekunde für de 1. Zug', + ); + return '$_temp0'; + } + + @override + String nbSeconds(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Sekunde', + one: '$count Sekunde', + ); + return '$_temp0'; + } + + @override + String andSaveNbPremoveLines(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'und speicher $count Voruszug Zile', + one: 'und speicher $count Voruszug Zile', + ); + return '$_temp0'; + } + + @override + String get stormMoveToStart => 'Zieh zum schtarte'; + + @override + String get stormYouPlayTheWhitePiecesInAllPuzzles => 'Du schpillsch bi allne Ufgabe mit Wiss'; + + @override + String get stormYouPlayTheBlackPiecesInAllPuzzles => 'Du schpillsch bi allne Ufgabe mit Schwarz'; + + @override + String get stormPuzzlesSolved => 'glösti Ufgabe'; + + @override + String get stormNewDailyHighscore => 'Neue Tagesrekord!'; + + @override + String get stormNewWeeklyHighscore => 'Neue Wucherekord!'; + + @override + String get stormNewMonthlyHighscore => 'Neue Monetsrekord!'; + + @override + String get stormNewAllTimeHighscore => 'Neue Allzitrekord!'; + + @override + String stormPreviousHighscoreWasX(String param) { + return 'Din bisherige Rekord isch $param gsi'; + } + + @override + String get stormPlayAgain => 'Schpill nomal'; + + @override + String stormHighscoreX(String param) { + return 'Rekord: $param'; + } + + @override + String get stormScore => 'Punkteschtand'; + + @override + String get stormMoves => 'Züg'; + + @override + String get stormAccuracy => 'Gnauigkeit'; + + @override + String get stormCombo => 'Combo'; + + @override + String get stormTime => 'Zit'; + + @override + String get stormTimePerMove => 'Zit pro Zug'; + + @override + String get stormHighestSolved => 'Schwirigschti Lösig'; + + @override + String get stormPuzzlesPlayed => 'Gschpillti Ufgabe'; + + @override + String get stormNewRun => 'Neue Lauf (Leertaschte)'; + + @override + String get stormEndRun => 'Lauf beände (Entertaschte)'; + + @override + String get stormHighscores => 'Alli Rekörd'; + + @override + String get stormViewBestRuns => 'Zeig die beschte Läuf'; + + @override + String get stormBestRunOfDay => 'De bescht Lauf vum Tag'; + + @override + String get stormRuns => 'Läuf'; + + @override + String get stormGetReady => 'Mach di parat!'; + + @override + String get stormWaitingForMorePlayers => 'Warte uf meh Schpiller wo mitmached...'; + + @override + String get stormRaceComplete => 'Ränne beändet!'; + + @override + String get stormSpectating => 'Zueluege'; + + @override + String get stormJoinTheRace => 'Mach am Ränne mit!'; + + @override + String get stormStartTheRace => 'Ränne schtarte'; + + @override + String stormYourRankX(String param) { + return 'Dini Platzierig: $param'; + } + + @override + String get stormWaitForRematch => 'Wart uf Revanche'; + + @override + String get stormNextRace => 'Nächschts Ränne'; + + @override + String get stormJoinRematch => 'Mach mit bi de Revanche'; + + @override + String get stormWaitingToStart => 'Warte uf de Schtart'; + + @override + String get stormCreateNewGame => 'Erschtell es neus Ränne'; + + @override + String get stormJoinPublicRace => 'Fahr es öffentlichs Ränne'; + + @override + String get stormRaceYourFriends => 'Fahr es Ränne mit Fründe'; + + @override + String get stormSkip => 'überschpringe'; + + @override + String get stormSkipHelp => 'Chasch 1 Zug pro Ränne überschpringe:'; + + @override + String get stormSkipExplanation => 'Überschpring de Zug, um dini combo b\'halte! Das chasch nur 1x pro Ränne.'; + + @override + String get stormFailedPuzzles => 'Falsch glösti Ufgabe'; + + @override + String get stormSlowPuzzles => 'Langsami Ufgabe'; + + @override + String get stormSkippedPuzzle => 'Überschprungeni Ufgab'; + + @override + String get stormThisWeek => 'Die Wuche'; + + @override + String get stormThisMonth => 'De Monet'; + + @override + String get stormAllTime => 'All-Zit'; + + @override + String get stormClickToReload => 'Klick, zum neu lade'; + + @override + String get stormThisRunHasExpired => 'De Durchgang isch beändet!'; + + @override + String get stormThisRunWasOpenedInAnotherTab => 'De Durchgang isch ime andere Tab göffnet worde!'; + + @override + String stormXRuns(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count Läuf', + one: '1 Lauf', + ); + return '$_temp0'; + } + + @override + String stormPlayedNbRunsOfPuzzleStorm(int count, String param2) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Hät $count Läuf vu $param2 gschpillt', + one: 'Het en Lauf vo $param2 gschpillt', + ); + return '$_temp0'; + } + + @override + String get streamerLichessStreamers => 'Lichess Streamer/-in'; + + @override + String get studyShareAndExport => 'Teile & exportiere'; + + @override + String get studyStart => 'Schtart'; +} diff --git a/lib/l10n/l10n_he.dart b/lib/l10n/l10n_he.dart index 663ca887be..03f10af8d1 100644 --- a/lib/l10n/l10n_he.dart +++ b/lib/l10n/l10n_he.dart @@ -24,105 +24,125 @@ class AppLocalizationsHe extends AppLocalizations { String get mobileSettingsTab => 'הגדרות'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'יש להתחבר כדי לצפות בדף זה.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'צבעי מערכת ההפעלה'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'משוב'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'בסדר'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'רטט בכל מהלך'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'מצב ריכוז'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'הסתירו את שאר הממשק במהלך המשחק. מומלץ להפעיל הגדרה זו אם אפשרויות הניווט בקצות הלוח מפריעות לכם לשחק. רלוונטי למשחקים ול־Puzzle Storm.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'אינכם עוקבים אחר אף אחד.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'כל המשחקים'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'חיפושים אחרונים'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'ניקוי'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'שחקנים עם ״$param״'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'אין תוצאות'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'בטוח?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'הרצף הנוכחי שלך ייאבד אך הניקוד יישמר.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'אין מה להראות. שחקו כמה סיבובים של Puzzle Storm קודם.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'שיתוף החידה'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'שיתוף הקישור למשחק'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'שיתוף ה־PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'שיתוף העמדה כ־FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'הצגת וריאציות'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'הסתרת וריאציות'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'הצגת הערות'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'האם לסיים את הסבב?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'אין מה להראות. ניתן לשנות את חתכי הסינון'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'ביטול ההצעה להחזיר את המהלך האחרון'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'ביטול הצעת התיקו'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'ממתין שיריב יצטרף...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'משחק עיוור'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'שדרנים בשידור חי'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'הצטרפות למשחק'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'ניקוי המהלך השמור'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'משהו השתבש.'; + + @override + String get mobileShowResult => 'הצגת תוצאת המשחק'; + + @override + String get mobilePuzzleThemesSubtitle => 'פתרו חידות עם הפתיחות האהובות עליכם או בחרו ממגוון נושאים.'; + + @override + String get mobilePuzzleStormSubtitle => 'פתרו כמה שיותר חידות ב־3 דקות.'; + + @override + String mobileGreeting(String param) { + return 'שלום, $param'; + } + + @override + String get mobileGreetingWithoutName => 'שלום'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'פעילות'; @@ -169,10 +189,10 @@ class AppLocalizationsHe extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'פתר/ה $count פאזלים טקטיים', - many: 'פתר/ה $count פאזלים טקטיים', - two: 'פתר/ה $count פאזלים טקטיים', - one: 'פתר/ה פאזל טקטי $count', + other: 'פתר/ה $count חידות טקטיות', + many: 'פתר/ה $count חידות טקטיות', + two: 'פתר/ה $count חידות טקטיות', + one: 'פתר/ה חידה טקטית $count', ); return '$_temp0'; } @@ -1901,6 +1921,9 @@ class AppLocalizationsHe extends AppLocalizations { @override String get friends => 'חברים'; + @override + String get otherPlayers => 'שחקנים אחרים'; + @override String get discussions => 'דיונים'; @@ -2732,6 +2755,12 @@ class AppLocalizationsHe extends AppLocalizations { @override String get yes => 'כן'; + @override + String get website => 'אתר האינטרנט'; + + @override + String get mobile => 'האפליקציה'; + @override String get help => 'עזרה:'; diff --git a/lib/l10n/l10n_hi.dart b/lib/l10n/l10n_hi.dart index 4320ce78b8..338aa918c6 100644 --- a/lib/l10n/l10n_hi.dart +++ b/lib/l10n/l10n_hi.dart @@ -9,37 +9,37 @@ class AppLocalizationsHi extends AppLocalizations { AppLocalizationsHi([String locale = 'hi']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'होम'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'पज़ल'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'टूल्स'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'देखें'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'सेटिंग'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'इस पेज को देखने के लिए आपको login करना होगा'; @override String get mobileSystemColors => 'System colors'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'फीडबैक'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'ओके'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'कंपन फीडबैक'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'इमर्सिव मोड'; @override String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; @@ -48,7 +48,7 @@ class AppLocalizationsHi extends AppLocalizations { String get mobileNotFollowingAnyUser => 'You are not following any user.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'सारे गेम्स'; @override String get mobileRecentSearches => 'Recent searches'; @@ -62,37 +62,37 @@ class AppLocalizationsHi extends AppLocalizations { } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'कोई परिणाम नहीं'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'क्या आप सुनिश्चित हैं?'; @override String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'पज़ल शरीर करें'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'गेम URL शेयर करें'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'PGN शेयर करें'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'पोजीशन FEN के रूप में शेयर करें'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'वेरिएशन देखें'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'वेरिएशन छुपाए'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'कमेंट्स देखें'; @override String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; @@ -101,10 +101,10 @@ class AppLocalizationsHi extends AppLocalizations { String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Takeback प्रस्ताव रद्द करें'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Draw प्रस्ताव रद्द करें'; @override String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; @@ -113,7 +113,7 @@ class AppLocalizationsHi extends AppLocalizations { String get mobileBlindfoldMode => 'Blindfold'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'लाइव स्ट्रीमर्स'; @override String get mobileCustomGameJoinAGame => 'Join a game'; @@ -124,6 +124,26 @@ class AppLocalizationsHi extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'कार्यकलाप'; @@ -1855,6 +1875,9 @@ class AppLocalizationsHi extends AppLocalizations { @override String get friends => 'मित्र'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'वार्तालाप'; @@ -2686,6 +2709,12 @@ class AppLocalizationsHi extends AppLocalizations { @override String get yes => 'हाँ'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'सहायता'; diff --git a/lib/l10n/l10n_hr.dart b/lib/l10n/l10n_hr.dart index e99e18f567..3270304cf5 100644 --- a/lib/l10n/l10n_hr.dart +++ b/lib/l10n/l10n_hr.dart @@ -71,7 +71,7 @@ class AppLocalizationsHr extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsHr extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Aktivnost'; @@ -1879,6 +1899,9 @@ class AppLocalizationsHr extends AppLocalizations { @override String get friends => 'Prijatelji'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Razgovori'; @@ -2710,6 +2733,12 @@ class AppLocalizationsHr extends AppLocalizations { @override String get yes => 'Da'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Pomoć:'; diff --git a/lib/l10n/l10n_hu.dart b/lib/l10n/l10n_hu.dart index 87118fe42a..7eec643fcf 100644 --- a/lib/l10n/l10n_hu.dart +++ b/lib/l10n/l10n_hu.dart @@ -9,120 +9,140 @@ class AppLocalizationsHu extends AppLocalizations { AppLocalizationsHu([String locale = 'hu']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Kezdőlap'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Feladvány'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Eszközök'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Néznivaló'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Beállítás'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Az oldal megtekintéséhez be kell jelentkezned.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Rendszerszínek'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Visszajelzés'; @override String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Haptikus visszajelzés'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Teljes képernyős mód'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'A rendszer gombjainak elrejtése játék közben. Kapcsold be, ha zavarnak a rendszer navigációs mozdulatai a képernyő sarkainál. A játszmaképernyőn és a Puzzle Storm képernyőjén működik.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Jelenleg nem követsz senkit.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Az összes játszma'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Keresési előzmények'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Törlés'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Játékosok $param felhasználónévvel'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Nincs találat'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Biztos vagy benne?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'A jelenlegi sorozatod elveszik és az eredményedet rögzítjük.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Feladvány megosztása'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Játszma URL megosztása'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'PGN megosztása'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Állás megosztása FEN-ként'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Változatok megjelenítése'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Változatok elrejtése'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Megjegyzések megjelenítése'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Befejezed a futamot?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Nincs megjeleníthető elem, változtasd meg a szűrőket'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Visszalépés kérésének visszavonása'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Döntetlenkérés visszavonása'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Várakozás az ellenfél csatlakozására...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Vakjátszma mód'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Lichess streamerek'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Csatlakozás játszmához'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Mentett lépés törlése'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Hiba történt.'; + + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Aktivitás'; @@ -1857,6 +1877,9 @@ class AppLocalizationsHu extends AppLocalizations { @override String get friends => 'Barátok'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Beszélgetések'; @@ -2688,6 +2711,12 @@ class AppLocalizationsHu extends AppLocalizations { @override String get yes => 'Igen'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Segítség'; diff --git a/lib/l10n/l10n_hy.dart b/lib/l10n/l10n_hy.dart index bc933fb334..e67f7d9221 100644 --- a/lib/l10n/l10n_hy.dart +++ b/lib/l10n/l10n_hy.dart @@ -71,7 +71,7 @@ class AppLocalizationsHy extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsHy extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Գործունեություն'; @@ -1857,6 +1877,9 @@ class AppLocalizationsHy extends AppLocalizations { @override String get friends => 'Ընկերներ'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Հաղորդագրություններ'; @@ -2688,6 +2711,12 @@ class AppLocalizationsHy extends AppLocalizations { @override String get yes => 'այո'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Օգնություն.'; diff --git a/lib/l10n/l10n_id.dart b/lib/l10n/l10n_id.dart index d79256f5d4..45042ee484 100644 --- a/lib/l10n/l10n_id.dart +++ b/lib/l10n/l10n_id.dart @@ -71,7 +71,7 @@ class AppLocalizationsId extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsId extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Aktivitas'; @@ -1835,6 +1855,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get friends => 'Teman'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Diskusi'; @@ -2666,6 +2689,12 @@ class AppLocalizationsId extends AppLocalizations { @override String get yes => 'Ya'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Bantuan:'; diff --git a/lib/l10n/l10n_it.dart b/lib/l10n/l10n_it.dart index bb187fcad6..84551045ec 100644 --- a/lib/l10n/l10n_it.dart +++ b/lib/l10n/l10n_it.dart @@ -12,117 +12,137 @@ class AppLocalizationsIt extends AppLocalizations { String get mobileHomeTab => 'Home'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Tattiche'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Strumenti'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Guarda'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Settaggi'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Devi aver effettuato l\'accesso per visualizzare questa pagina.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Tema app'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Suggerimenti'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'Ok'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Feedback tattile'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Modalità immersiva'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Nascondi la UI di sistema mentre giochi. Attiva se i gesti di navigazione ai bordi dello schermo ti danno fastidio. Si applica alla schermata di gioco e Puzzle Storm.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Non stai seguendo nessun utente.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Tutte le partite'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Ricerche recenti'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Elimina'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Giocatori con \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Nessun risultato'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Sei sicuro?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Perderai la tua serie corrente e il tuo punteggio verrà salvato.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Niente da mostrare. Gioca ad alcune partite di Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Condividi questa tattica'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Condividi URL della partita'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Condividi PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Condividi posizione come FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Mostra varianti'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Nascondi variante'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Mostra commenti'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Vuoi terminare questa serie?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Nessun risultato, per favore modifica i filtri'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Annulla richiesta di ritiro mossa'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Annulla richiesta di patta'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'In attesa dell\'avversario...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Alla cieca'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Streamer in diretta'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Unisciti a una partita'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Cancella mossa salvata'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Si è verificato un errore.'; + + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Attività'; @@ -662,7 +682,7 @@ class AppLocalizationsIt extends AppLocalizations { String get preferencesConfirmResignationAndDrawOffers => 'Conferma abbandono e offerte di patta'; @override - String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'Metodo di arrocco'; + String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'Modalità di arrocco'; @override String get preferencesCastleByMovingTwoSquares => 'Muovi il re di due caselle'; @@ -1616,10 +1636,10 @@ class AppLocalizationsIt extends AppLocalizations { String get deleteFromHere => 'Elimina da qui'; @override - String get collapseVariations => 'Collapse variations'; + String get collapseVariations => 'Riduci varianti'; @override - String get expandVariations => 'Expand variations'; + String get expandVariations => 'Espandi varianti'; @override String get forceVariation => 'Mostra come variante'; @@ -1857,6 +1877,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get friends => 'Amici'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Conversazioni'; @@ -2608,7 +2631,7 @@ class AppLocalizationsIt extends AppLocalizations { String get editProfile => 'Modifica profilo'; @override - String get realName => 'Real name'; + String get realName => 'Nome reale'; @override String get setFlair => 'Imposta la tua icona'; @@ -2688,6 +2711,12 @@ class AppLocalizationsIt extends AppLocalizations { @override String get yes => 'Sì'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Aiuto:'; @@ -2846,7 +2875,7 @@ class AppLocalizationsIt extends AppLocalizations { String get outsideTheBoard => 'Fuori la scacchiera'; @override - String get allSquaresOfTheBoard => 'All squares of the board'; + String get allSquaresOfTheBoard => 'Su tutte le case della scacchiera'; @override String get onSlowGames => 'Nelle partite lente'; diff --git a/lib/l10n/l10n_ja.dart b/lib/l10n/l10n_ja.dart index 6d33c9c401..c64040946d 100644 --- a/lib/l10n/l10n_ja.dart +++ b/lib/l10n/l10n_ja.dart @@ -9,120 +9,140 @@ class AppLocalizationsJa extends AppLocalizations { AppLocalizationsJa([String locale = 'ja']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'ホーム'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => '問題'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'ツール'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => '見る'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => '設定'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'このページを見るにはログインが必要です。'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'OS と同じ色設定'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'フィードバック'; @override String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => '振動フィードバック'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => '没入モード'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => '対局中にシステム用の UI を隠します。画面端のナビゲーションなどがじゃまな人はこれを使ってください。対局と問題ストームの画面に適用されます。'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => '誰もフォローしていません。'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'すべて'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => '最近の検索'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'クリア'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return '「$param」を含むプレイヤー'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => '検索結果なし'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => '本当にいいですか?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => '現在の連続正解が終わり、スコアが保存されます。'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'データがありません。まず問題ストームをプレイして。'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'この問題を共有する'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'ゲーム URLを共有'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'PGN を共有'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => '局面を FEN で共有'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => '変化手順を表示'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => '変化手順を隠す'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'コメントを表示'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'このストームを終了しますか?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => '条件に合う問題がありません。フィルターを変更してください'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => '待ったをキャンセル'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'ドロー提案をキャンセル'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => '対戦相手の参加を待っています…'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'めかくしモード'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'ライブ配信者'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'ゲームに参加'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => '保存した手を削除'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => '問題が発生しました。'; + + @override + String get mobileShowResult => '結果を表示'; + + @override + String get mobilePuzzleThemesSubtitle => 'お気に入りのオープニングやテーマの問題が選べます。'; + + @override + String get mobilePuzzleStormSubtitle => '3 分間でできるだけ多くの問題を解いてください。'; + + @override + String mobileGreeting(String param) { + return 'こんにちは $param さん'; + } + + @override + String get mobileGreetingWithoutName => 'こんにちは'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => '活動'; @@ -1835,6 +1855,9 @@ class AppLocalizationsJa extends AppLocalizations { @override String get friends => '友達'; + @override + String get otherPlayers => 'その他のプレイヤー'; + @override String get discussions => 'トピック'; @@ -2666,6 +2689,12 @@ class AppLocalizationsJa extends AppLocalizations { @override String get yes => 'はい'; + @override + String get website => 'ウェブサイト'; + + @override + String get mobile => 'モバイル'; + @override String get help => 'ヘルプ:'; diff --git a/lib/l10n/l10n_kk.dart b/lib/l10n/l10n_kk.dart index 565e967516..8dbeda53d5 100644 --- a/lib/l10n/l10n_kk.dart +++ b/lib/l10n/l10n_kk.dart @@ -9,78 +9,78 @@ class AppLocalizationsKk extends AppLocalizations { AppLocalizationsKk([String locale = 'kk']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Үйге'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Жұмбақ'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Құрал'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Бақылау'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Баптау'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Бұл бетті көру үшін тіркелгіге кіріңіз.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Жүйе түстері'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Пікір айту'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'Иә'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Дірілмен білдіру'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Оқшау көрініс'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Ойын кезінде жүйенің элементтерін жасыру. Экран жиегіндегі жүйенің навигация қимыл белгілері сізге кедергі келтірсе - қолданарлық жағдай. Ойын мен Жұмбақ Дауылы кезінде жұмыс істейді.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Сіз әзір ешкіге серік емессіз.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Барлық ойындар'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Кейінгі іздеулер'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Өшіру'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Атауында \"$param\" бар ойыншылар'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Нәтиже жоқ'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Растайсыз ба?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Қазіргі тізбектен айрыласыз, нәтиже сақталады.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Нәтиже әзір жоқ. Жұмбақ Дауылын ойнап көріңіз.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Бұл жұмбақты тарату'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Ойын сілтемесін тарату'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'PGN тарату'; @override String get mobileSharePositionAsFEN => 'Share position as FEN'; @@ -124,6 +124,26 @@ class AppLocalizationsKk extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Нәтижесін көру'; + + @override + String get mobilePuzzleThemesSubtitle => 'Өз бастауларыңызға негізделген жұмбақтар, не кез-келген тақырып.'; + + @override + String get mobilePuzzleStormSubtitle => '3 минутта барынша көп жұмбақ шешіп көр.'; + + @override + String mobileGreeting(String param) { + return 'Ассаламу ғалейкүм, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Ассаламу ғалейкүм'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Белсенділігі'; @@ -1857,6 +1877,9 @@ class AppLocalizationsKk extends AppLocalizations { @override String get friends => 'Достарыңыз'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Сұхбаттар'; @@ -2688,6 +2711,12 @@ class AppLocalizationsKk extends AppLocalizations { @override String get yes => 'Иә'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Көмек:'; @@ -3694,7 +3723,7 @@ class AppLocalizationsKk extends AppLocalizations { String get thankYouForReading => 'Оқығаныңыз үшін рахмет!'; @override - String get lifetimeScore => 'Жалпы ұпайлар'; + String get lifetimeScore => 'Жалпы нәтиже'; @override String get currentMatchScore => 'Осы жарыстағы нәтижеңіз'; diff --git a/lib/l10n/l10n_ko.dart b/lib/l10n/l10n_ko.dart index 15084f181b..df44e81b5d 100644 --- a/lib/l10n/l10n_ko.dart +++ b/lib/l10n/l10n_ko.dart @@ -9,81 +9,81 @@ class AppLocalizationsKo extends AppLocalizations { AppLocalizationsKo([String locale = 'ko']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => '홈'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => '퍼즐'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => '도구'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => '관람'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => '설정'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => '이 페이지를 보려면 로그인해야 합니다.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => '시스템 색상'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => '피드백'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => '확인'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => '터치 시 진동'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => '전체 화면 모드'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => '플레이 중 시스템 UI를 숨깁니다. 화면 가장자리의 시스템 내비게이션 제스처가 불편하다면 사용하세요. 대국과 퍼즐 스톰 화면에서 적용됩니다.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => '팔로우한 사용자가 없습니다.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => '모든 대국'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => '최근 검색어'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => '지우기'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return '닉네임에 \"$param\"가 포함된 플레이어'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => '결과 없음'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => '확실하십니까?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => '현재 연속 해결 기록을 잃고 점수는 저장됩니다.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => '표시할 것이 없습니다. 먼저 퍼즐 스톰을 플레이하세요.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => '이 퍼즐 공유'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => '게임 URL 공유'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'PGN 공유'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'FEN으로 공유'; @override String get mobileShowVariations => 'Show variations'; @@ -92,37 +92,57 @@ class AppLocalizationsKo extends AppLocalizations { String get mobileHideVariation => 'Hide variation'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => '댓글 보기'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => '이 도전을 종료하시겠습니까?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => '표시할 것이 없습니다. 필터를 변경해 주세요'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => '무르기 요청 취소'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => '무승부 요청 취소'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => '상대 참가를 기다리는 중...'; @override String get mobileBlindfoldMode => 'Blindfold'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => '방송 중인 스트리머'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => '게임 참가'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => '저장된 수 삭제'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => '문제가 발생했습니다.'; + + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => '활동'; @@ -1835,6 +1855,9 @@ class AppLocalizationsKo extends AppLocalizations { @override String get friends => '친구들'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => '토론'; @@ -2586,7 +2609,7 @@ class AppLocalizationsKo extends AppLocalizations { String get editProfile => '프로필 수정'; @override - String get realName => 'Real name'; + String get realName => '본명'; @override String get setFlair => 'Set your flair'; @@ -2666,6 +2689,12 @@ class AppLocalizationsKo extends AppLocalizations { @override String get yes => '예'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => '힌트:'; diff --git a/lib/l10n/l10n_lb.dart b/lib/l10n/l10n_lb.dart index 3c9814393d..26186fd760 100644 --- a/lib/l10n/l10n_lb.dart +++ b/lib/l10n/l10n_lb.dart @@ -12,7 +12,7 @@ class AppLocalizationsLb extends AppLocalizations { String get mobileHomeTab => 'Home'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Aufgaben'; @override String get mobileToolsTab => 'Tools'; @@ -24,10 +24,10 @@ class AppLocalizationsLb extends AppLocalizations { String get mobileSettingsTab => 'Settings'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Du muss ageloggt si fir dës Säit ze gesinn.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Systemsfaarwen'; @override String get mobileFeedbackButton => 'Feedback'; @@ -36,10 +36,10 @@ class AppLocalizationsLb extends AppLocalizations { String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Haptesche Feedback'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Immersive Modus'; @override String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; @@ -48,7 +48,7 @@ class AppLocalizationsLb extends AppLocalizations { String get mobileNotFollowingAnyUser => 'You are not following any user.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'All Partien'; @override String get mobileRecentSearches => 'Recent searches'; @@ -58,41 +58,41 @@ class AppLocalizationsLb extends AppLocalizations { @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Spiller mat „$param“'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Keng Resultater'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Bass de sécher?'; @override String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Dës Aufgab deelen'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'URL vun der Partie deelen'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'PGN deelen'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Stellung als FEN deelen'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Variante weisen'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Variante verstoppen'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Kommentarer weisen'; @override String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; @@ -110,7 +110,7 @@ class AppLocalizationsLb extends AppLocalizations { String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Blann'; @override String get mobileLiveStreamers => 'Live streamers'; @@ -122,7 +122,27 @@ class AppLocalizationsLb extends AppLocalizations { String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Et ass eppes schifgaang.'; + + @override + String get mobileShowResult => 'Resultat weisen'; + + @override + String get mobilePuzzleThemesSubtitle => 'Maach Aufgaben aus denge Liiblingserëffnungen oder sich dir een Theema eraus.'; + + @override + String get mobilePuzzleStormSubtitle => 'Léis sou vill Aufgabe wéi méiglech an 3 Minutten.'; + + @override + String mobileGreeting(String param) { + return 'Moien, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Moien'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Verlaf'; @@ -1857,6 +1877,9 @@ class AppLocalizationsLb extends AppLocalizations { @override String get friends => 'Kolleegen'; + @override + String get otherPlayers => 'aner Spiller'; + @override String get discussions => 'Konversatiounen'; @@ -2608,7 +2631,7 @@ class AppLocalizationsLb extends AppLocalizations { String get editProfile => 'Profil änneren'; @override - String get realName => 'Real name'; + String get realName => 'Richtegen Numm'; @override String get setFlair => 'Set your flair'; @@ -2688,6 +2711,12 @@ class AppLocalizationsLb extends AppLocalizations { @override String get yes => 'Jo'; + @override + String get website => 'Websäit'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Hëllef:'; @@ -2846,7 +2875,7 @@ class AppLocalizationsLb extends AppLocalizations { String get outsideTheBoard => 'Außerhalb vum Briet'; @override - String get allSquaresOfTheBoard => 'All squares of the board'; + String get allSquaresOfTheBoard => 'All d\'Felder um Briet'; @override String get onSlowGames => 'An luesen Partien'; diff --git a/lib/l10n/l10n_lt.dart b/lib/l10n/l10n_lt.dart index 5f1cce55ff..37288a6162 100644 --- a/lib/l10n/l10n_lt.dart +++ b/lib/l10n/l10n_lt.dart @@ -71,7 +71,7 @@ class AppLocalizationsLt extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsLt extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Veikla'; @@ -609,7 +629,7 @@ class AppLocalizationsLt extends AppLocalizations { String get preferencesShowPlayerRatings => 'Rodyti žaidėjų reitingus'; @override - String get preferencesShowFlairs => 'Show player flairs'; + String get preferencesShowFlairs => 'Parodykite žaidėjo emociją'; @override String get preferencesExplainShowPlayerRatings => 'Tai leidžia iš svetainės paslėpti visus reitingus ir padeda susifokusuoti ties šachmatais. Partijos vis dar gali būti reitinguojamos. Šis pasirinkimas skirtas tik nustatyti, ką galite matyti.'; @@ -1660,10 +1680,10 @@ class AppLocalizationsLt extends AppLocalizations { String get deleteFromHere => 'Ištrinti nuo čia'; @override - String get collapseVariations => 'Collapse variations'; + String get collapseVariations => 'Slėpti variantus'; @override - String get expandVariations => 'Expand variations'; + String get expandVariations => 'Plėtoti variantus'; @override String get forceVariation => 'Rodyti kaip variaciją'; @@ -1901,6 +1921,9 @@ class AppLocalizationsLt extends AppLocalizations { @override String get friends => 'Draugai'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Diskusijos'; @@ -2652,16 +2675,16 @@ class AppLocalizationsLt extends AppLocalizations { String get editProfile => 'Redaguoti profilį'; @override - String get realName => 'Real name'; + String get realName => 'Tikrasis vardas'; @override String get setFlair => 'Pasirinkite savo atskiriamąjį ženklą - avatarą'; @override - String get flair => 'Atskiriamasis ženklas'; + String get flair => 'Skiriamasis ženklas'; @override - String get youCanHideFlair => 'Yra nustatymas leidžiantis atjungti visų žaidėjų skiriamuosius ženklus.'; + String get youCanHideFlair => 'Tai nustatymas, leidžiantis atjungti visų žaidėjų skiriamuosius ženklus.'; @override String get biography => 'Aprašymas'; @@ -2712,7 +2735,7 @@ class AppLocalizationsLt extends AppLocalizations { String get puzzles => 'Užduotys'; @override - String get onlineBots => 'Prisijungę robotai'; + String get onlineBots => 'Online robotai'; @override String get name => 'Pavadinimas'; @@ -2732,6 +2755,12 @@ class AppLocalizationsLt extends AppLocalizations { @override String get yes => 'Taip'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Pagalba:'; @@ -2890,7 +2919,7 @@ class AppLocalizationsLt extends AppLocalizations { String get outsideTheBoard => 'Šalia lentos'; @override - String get allSquaresOfTheBoard => 'All squares of the board'; + String get allSquaresOfTheBoard => 'Visi lentos laukeliai'; @override String get onSlowGames => 'Lėtose partijose'; @@ -3188,7 +3217,7 @@ class AppLocalizationsLt extends AppLocalizations { String get keyGoToStartOrEnd => 'eiti į pradžią/pabaigą'; @override - String get keyCycleSelectedVariation => 'Pereiti pasirinktą variantą'; + String get keyCycleSelectedVariation => 'Praeiti pasirinktą variantą'; @override String get keyShowOrHideComments => 'rodyti/slėpti komentarus'; @@ -3215,13 +3244,13 @@ class AppLocalizationsLt extends AppLocalizations { String get keyPreviousBranch => 'Praeita atšaka'; @override - String get keyNextBranch => 'Kita atšaka'; + String get keyNextBranch => 'Sekanti atšaka'; @override String get toggleVariationArrows => 'Rodyti variacijų rodykles'; @override - String get cyclePreviousOrNextVariation => 'Eiti į praeitą/sekantį variantą'; + String get cyclePreviousOrNextVariation => 'Eiti į ankstesnį/sekantį variantą'; @override String get toggleGlyphAnnotations => 'Įjungti ėjimų komentarus'; @@ -3230,7 +3259,7 @@ class AppLocalizationsLt extends AppLocalizations { String get togglePositionAnnotations => 'Įjungti pozicijos komentarus'; @override - String get variationArrowsInfo => 'Variacijų rodyklės leidžia jums naviguoti nenaudojant ėjimų lentelės.'; + String get variationArrowsInfo => 'Variacijų rodyklės leidžia jums naviguoti nenaudojant ėjimų sarašo.'; @override String get playSelectedMove => 'padaryti pasirinktą ėjimą'; @@ -3242,7 +3271,7 @@ class AppLocalizationsLt extends AppLocalizations { String get tournamentHomeTitle => 'Šachmatų turnyras su įvairiomis laiko kontrolėmis ir variantais'; @override - String get tournamentHomeDescription => 'Žaiskite aukšto tempo šachmatų turnyruose! Prisijunkite prie oficialaus suplanuoto turnyro arba sukurkite savo.'; + String get tournamentHomeDescription => 'Žaiskite aukšto tempo šachmatų turnyruose! Prisijunkite prie oficialaus suplanuoto turnyro arba sukurkite savo. Kulka, žaibas, klasikiniai, Chess960, King of the Hill, Threecheck ir daugiau parinkčių, skirtų begalinėms šachmatų pramogoms.'; @override String get tournamentNotFound => 'Turnyras nerastas'; @@ -3418,7 +3447,7 @@ class AppLocalizationsLt extends AppLocalizations { String get phoneAndTablet => 'Telefonui ir planšetei'; @override - String get bulletBlitzClassical => 'Žaibo, blic, klasikiniai'; + String get bulletBlitzClassical => 'Kulka, Žaibas, klasikiniai'; @override String get correspondenceChess => 'Korespondenciniai'; @@ -3764,10 +3793,10 @@ class AppLocalizationsLt extends AppLocalizations { String get edit => 'Keisti'; @override - String get bullet => 'Naujiena'; + String get bullet => 'Kulka'; @override - String get blitz => 'Blitz'; + String get blitz => 'Žaibas'; @override String get rapid => 'Greitieji'; @@ -3782,7 +3811,7 @@ class AppLocalizationsLt extends AppLocalizations { String get bulletDesc => 'Labai greitos partijos: mažiau nei 3 minutės'; @override - String get blitzDesc => 'Blic partijos: nuo 3 iki 8 minučių'; + String get blitzDesc => 'Žaibo partijos: nuo 3 iki 8 minučių'; @override String get rapidDesc => 'Greitosios partijos: nuo 8 iki 25 minučių'; diff --git a/lib/l10n/l10n_lv.dart b/lib/l10n/l10n_lv.dart index 229c730208..4111b6e32d 100644 --- a/lib/l10n/l10n_lv.dart +++ b/lib/l10n/l10n_lv.dart @@ -71,7 +71,7 @@ class AppLocalizationsLv extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsLv extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Aktivitāte'; @@ -1879,6 +1899,9 @@ class AppLocalizationsLv extends AppLocalizations { @override String get friends => 'Draugi'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Sarunas'; @@ -2710,6 +2733,12 @@ class AppLocalizationsLv extends AppLocalizations { @override String get yes => 'Jā'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Palīdzība:'; diff --git a/lib/l10n/l10n_mk.dart b/lib/l10n/l10n_mk.dart index 0b61f752d6..91912a2485 100644 --- a/lib/l10n/l10n_mk.dart +++ b/lib/l10n/l10n_mk.dart @@ -71,7 +71,7 @@ class AppLocalizationsMk extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsMk extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Активност'; @@ -1857,6 +1877,9 @@ class AppLocalizationsMk extends AppLocalizations { @override String get friends => 'Пријатели'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Разговори'; @@ -2688,6 +2711,12 @@ class AppLocalizationsMk extends AppLocalizations { @override String get yes => 'Да'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Помош'; diff --git a/lib/l10n/l10n_nb.dart b/lib/l10n/l10n_nb.dart index 636d10e73d..ee123d534b 100644 --- a/lib/l10n/l10n_nb.dart +++ b/lib/l10n/l10n_nb.dart @@ -9,120 +9,140 @@ class AppLocalizationsNb extends AppLocalizations { AppLocalizationsNb([String locale = 'nb']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Hjem'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Nøtter'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Verktøy'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Se'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Valg'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Du må være logget inn for å vise denne siden.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Systemfarger'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Tilbakemeldinger'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'Ok'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Haptiske tilbakemeldinger'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Fordypelsesmodus'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Skjul systemgrensesnittet mens du spiller. Bruk dette hvis du blir forstyrret av systemets navigasjonsgester på skjermkanten. Gjelder for partier og Puzzle Storm.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Du følger ingen brukere.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Alle partier'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Nylige søk'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Tøm'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Spillere med «$param»'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Ingen treff'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Er du sikker?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Du mister rekken og poengsummen din blir lagret.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Ingenting her. Spill noen runder med Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Del denne sjakknøtten'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Del URL til partiet'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Del PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Del stillingen som FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Vis varianter'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Skjul variant'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Vis kommentarer'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Vil du avslutte denne runden?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Ingenting her, endre filteret'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Avbryt tilbud om å angre'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Avbryt remistilbud'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Venter på motstanderen ...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Blindsjakk'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Direktestrømmere'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Bli med på et parti'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Fjern lagret trekk'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Noe gikk galt.'; + + @override + String get mobileShowResult => 'Vis resultat'; + + @override + String get mobilePuzzleThemesSubtitle => 'Spill sjakknøtter fra favorittåpningene dine, eller velg et tema.'; + + @override + String get mobilePuzzleStormSubtitle => 'Løs så mange sjakknøtter som mulig i løpet av 3 minutter.'; + + @override + String mobileGreeting(String param) { + return 'Hallo, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hallo'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Aktivitet'; @@ -1857,6 +1877,9 @@ class AppLocalizationsNb extends AppLocalizations { @override String get friends => 'Venner'; + @override + String get otherPlayers => 'andre spillere'; + @override String get discussions => 'Samtaler'; @@ -2688,6 +2711,12 @@ class AppLocalizationsNb extends AppLocalizations { @override String get yes => 'Ja'; + @override + String get website => 'Nettsted'; + + @override + String get mobile => 'Mobil'; + @override String get help => 'Hjelp:'; @@ -2846,7 +2875,7 @@ class AppLocalizationsNb extends AppLocalizations { String get outsideTheBoard => 'Utenfor brettet'; @override - String get allSquaresOfTheBoard => 'All squares of the board'; + String get allSquaresOfTheBoard => 'Alle felt på brettet'; @override String get onSlowGames => 'På lange partier'; diff --git a/lib/l10n/l10n_nl.dart b/lib/l10n/l10n_nl.dart index 20d206a141..9781f805ca 100644 --- a/lib/l10n/l10n_nl.dart +++ b/lib/l10n/l10n_nl.dart @@ -24,10 +24,10 @@ class AppLocalizationsNl extends AppLocalizations { String get mobileSettingsTab => 'Instellingen'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Je moet ingelogd zijn om deze pagina te bekijken.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Systeemkleuren'; @override String get mobileFeedbackButton => 'Feedback'; @@ -36,66 +36,66 @@ class AppLocalizationsNl extends AppLocalizations { String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Haptische feedback'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Volledig scherm-modus'; @override String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'U volgt geen gebruiker.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Alle partijen'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Recente zoekopdrachten'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Wissen'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Spelers met \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Geen resultaten'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Weet je het zeker?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Je verliest je huidige reeks en de score wordt opgeslagen.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Niets om te tonen. Speel een aantal reeksen Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Deze puzzel delen'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Partij URL delen'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'PGN delen'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Stelling delen als FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Toon varianten'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Verberg varianten'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Opmerkingen weergeven'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Wil je dit uitvoeren beëindigen?'; @override String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; @@ -104,10 +104,10 @@ class AppLocalizationsNl extends AppLocalizations { String get mobileCancelTakebackOffer => 'Cancel takeback offer'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Remiseaanbod intrekken'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Wachten op een tegenstander...'; @override String get mobileBlindfoldMode => 'Blindfold'; @@ -116,13 +116,33 @@ class AppLocalizationsNl extends AppLocalizations { String get mobileLiveStreamers => 'Live streamers'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Een partij beginnen'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Opgeslagen zet wissen'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Er is iets fout gegaan.'; + + @override + String get mobileShowResult => 'Toon resultaat'; + + @override + String get mobilePuzzleThemesSubtitle => 'Speel puzzels uit je favorieten openingen, of kies een thema.'; + + @override + String get mobilePuzzleStormSubtitle => 'Los zoveel mogelijk puzzels op in 3 minuten.'; + + @override + String mobileGreeting(String param) { + return 'Hallo, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hallo'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Activiteit'; @@ -1857,6 +1877,9 @@ class AppLocalizationsNl extends AppLocalizations { @override String get friends => 'Vrienden'; + @override + String get otherPlayers => 'andere spelers'; + @override String get discussions => 'Discussies'; @@ -2688,6 +2711,12 @@ class AppLocalizationsNl extends AppLocalizations { @override String get yes => 'Ja'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobiel'; + @override String get help => 'Help:'; diff --git a/lib/l10n/l10n_nn.dart b/lib/l10n/l10n_nn.dart index 508422e58f..ac94f6395c 100644 --- a/lib/l10n/l10n_nn.dart +++ b/lib/l10n/l10n_nn.dart @@ -24,105 +24,125 @@ class AppLocalizationsNn extends AppLocalizations { String get mobileSettingsTab => 'Innstillingar'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Du må vera innlogga for å sjå denne sida.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Systemfargar'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Tilbakemelding'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'Ok'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Haptisk tilbakemelding'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Immersiv modus'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Skjul system-UI mens du spelar. Bruk dette dersom systemet sine navigasjonsrørsler ved skjermkanten forstyrrar deg. Gjelder skjermbileta for spel og oppgåvestorm.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Du følgjer ingen brukarar.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Alle spel'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Nylege søk'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Tøm'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Spelarar med \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Ingen resultat'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Er du sikker?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Du vil mista din noverande vinstrekke og poengsummen din vert lagra.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Ikkje noko å visa. Spel nokre omgangar Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Del denne oppgåva'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Del URLen til partiet'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Del PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Del stilling som FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Vis variantpilar'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Skjul variant'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Vis kommentarar'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Vil du avslutte dette løpet?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Ikkje noko å syna, ver venleg å endre filtera'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Avbryt tilbud om angrerett'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Avbryt remistilbud'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Ventar på motspelar...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Blindsjakk'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Direkte strøymarar'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Bli med på eit parti'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Fjern lagra trekk'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Det oppsto ein feil.'; + + @override + String get mobileShowResult => 'Vis resultat'; + + @override + String get mobilePuzzleThemesSubtitle => 'Spel oppgåver frå favorittopningane dine, eller velg eit tema.'; + + @override + String get mobilePuzzleStormSubtitle => 'Løys så mange oppgåver som du maktar på tre minutt.'; + + @override + String mobileGreeting(String param) { + return 'Hei $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hei'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Aktivitet'; @@ -1857,6 +1877,9 @@ class AppLocalizationsNn extends AppLocalizations { @override String get friends => 'Vener'; + @override + String get otherPlayers => 'andre spelarar'; + @override String get discussions => 'Diskusjonar'; @@ -2688,6 +2711,12 @@ class AppLocalizationsNn extends AppLocalizations { @override String get yes => 'Ja'; + @override + String get website => 'Nettside'; + + @override + String get mobile => 'Mobil'; + @override String get help => 'Hjelp:'; diff --git a/lib/l10n/l10n_pl.dart b/lib/l10n/l10n_pl.dart index 1f1a50546e..ac34b50c46 100644 --- a/lib/l10n/l10n_pl.dart +++ b/lib/l10n/l10n_pl.dart @@ -9,120 +9,140 @@ class AppLocalizationsPl extends AppLocalizations { AppLocalizationsPl([String locale = 'pl']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Start'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Zadania'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Narzędzia'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Oglądaj'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Ustawienia'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Musisz być zalogowany, aby wyświetlić tę stronę.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Kolory systemowe'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Opinie'; @override String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Wibracja przy dotknięciu'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Tryb pełnoekranowy'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Ukryj interfejs użytkownika podczas gry. Użyj tego, jeśli rozpraszają Cię elementy nawigacji systemu na krawędziach ekranu. Dotyczy ekranów gry i rozwiązywania zadań.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Nie obserwujesz żadnego gracza.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Wszystkie partie'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Ostatnio wyszukiwane'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Wyczyść'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Gracze pasujący do \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Brak wyników'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Jesteś pewien?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Przerwiesz swoją dobrą passę, a Twój wynik zostanie zapisany.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nic do wyświetlenia. Rozegraj kilka serii.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Udostępnij to zadanie'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Udostępnij adres URL partii'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Udostępnij PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Udostępnij pozycję jako FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Pokaż warianty'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Ukryj wariant'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Pokaż komentarze'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Czy chcesz zakończyć tę serię?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Brak wyników, zmień proszę filtry'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Anuluj prośbę cofnięcia ruchu'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Anuluj propozycję remisu'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Oczekiwanie na dołączenie przeciwnika...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Gra na ślepo'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Aktywni streamerzy'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Dołącz do partii'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Usuń zapisany ruch'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Coś poszło nie tak.'; + + @override + String get mobileShowResult => 'Pokaż wynik'; + + @override + String get mobilePuzzleThemesSubtitle => 'Rozwiąż zadania z ulubionego debiutu lub wybierz motyw.'; + + @override + String get mobilePuzzleStormSubtitle => 'Rozwiąż jak najwięcej zadań w ciągu 3 minut.'; + + @override + String mobileGreeting(String param) { + return 'Witaj $param'; + } + + @override + String get mobileGreetingWithoutName => 'Witaj'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Aktywność'; @@ -1901,6 +1921,9 @@ class AppLocalizationsPl extends AppLocalizations { @override String get friends => 'Znajomi'; + @override + String get otherPlayers => 'inni gracze'; + @override String get discussions => 'Rozmowy'; @@ -2732,6 +2755,12 @@ class AppLocalizationsPl extends AppLocalizations { @override String get yes => 'Tak'; + @override + String get website => 'Strona internetowa'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Porada:'; diff --git a/lib/l10n/l10n_pt.dart b/lib/l10n/l10n_pt.dart index 165f68d278..fc5c158b3a 100644 --- a/lib/l10n/l10n_pt.dart +++ b/lib/l10n/l10n_pt.dart @@ -15,19 +15,19 @@ class AppLocalizationsPt extends AppLocalizations { String get mobilePuzzlesTab => 'Problemas'; @override - String get mobileToolsTab => 'Ferramentas'; + String get mobileToolsTab => 'Tools'; @override String get mobileWatchTab => 'Assistir'; @override - String get mobileSettingsTab => 'Configurações'; + String get mobileSettingsTab => 'Definições'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Tem de iniciar sessão para visualizar esta página.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Cores do sistema'; @override String get mobileFeedbackButton => 'Feedback'; @@ -36,115 +36,135 @@ class AppLocalizationsPt extends AppLocalizations { String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Feedback tátil'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Modo imersivo'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Ocultar a interface do sistema durante o jogo. Utiliza esta opção se sentires incomodado com os gestos de navegação do sistema nas extremidades do ecrã. Aplica-se aos ecrãs de jogo e do Puzzle Storm.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Não segues nenhum utilizador.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Todos os jogos'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Pesquisas recentes'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Limpar'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Jogadores com \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Sem resultados'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Tens a certeza?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Perderas a tua sequência atual e a pontuação será salva.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nada para mostrar. Joga alguns Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Partilhar este problema'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Partilhar o URL do jogo'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Partilhar PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Partilhar posição como FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Mostrar variações'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Ocultar variação'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Mostrar comentários'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Queres terminar esta corrida?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Nada para mostrar, por favor, altera os filtros'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Cancelar pedido de voltar'; @override String get mobileCancelDrawOffer => 'Cancel draw offer'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'À espera do adversário entrar...'; + + @override + String get mobileBlindfoldMode => 'De olhos vendados'; + + @override + String get mobileLiveStreamers => 'Streamers em direto'; + + @override + String get mobileCustomGameJoinAGame => 'Entrar num jogo'; + + @override + String get mobileCorrespondenceClearSavedMove => 'Limpar movimento salvo'; + + @override + String get mobileSomethingWentWrong => 'Algo deu errado.'; + + @override + String get mobileShowResult => 'Show result'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String mobileGreeting(String param) { + return 'Hello, $param'; + } @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileGreetingWithoutName => 'Hello'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Atividade'; @override - String get activityHostedALiveStream => 'Iniciou uma transmissão ao vivo'; + String get activityHostedALiveStream => 'Criou uma livestream'; @override String activityRankedInSwissTournament(String param1, String param2) { - return 'Classificado #$param1 entre $param2'; + return 'Classificado #$param1 em $param2'; } @override - String get activitySignedUp => 'Registrou-se no lichess'; + String get activitySignedUp => 'Registou-se no lichess.org'; @override String activitySupportedNbMonths(int count, String param2) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Contribuiu para o lichess.org por $count meses como $param2', - one: 'Contribuiu para o lichess.org por $count mês como $param2', + other: 'Apoiou o lichess.org durante $count meses como $param2', + one: 'Apoiou o lichess.org durante $count mês como $param2', ); return '$_temp0'; } @@ -165,8 +185,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Resolveu $count quebra-cabeças táticos', - one: 'Resolveu $count quebra-cabeça tático', + other: 'Resolveu $count problemas', + one: 'Resolveu $count problema', ); return '$_temp0'; } @@ -176,8 +196,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Jogou $count partidas de $param2', - one: 'Jogou $count partida de $param2', + other: 'Jogou $count jogos de $param2', + one: 'Jogou $count jogo de $param2', ); return '$_temp0'; } @@ -198,8 +218,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Jogou $count movimentos', - one: 'Jogou $count movimento', + other: 'Fez $count jogadas', + one: 'Fez $count jogada', ); return '$_temp0'; } @@ -253,8 +273,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Hospedou $count exibições simultâneas', - one: 'Hospedou $count exibição simultânea', + other: 'Criou $count exibições simultâneas', + one: 'Criou $count exibição simultânea', ); return '$_temp0'; } @@ -286,8 +306,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Competiu em $count torneios arena', - one: 'Competiu em $count torneio arena', + other: 'Competiu em $count torneios', + one: 'Competiu em $count torneio', ); return '$_temp0'; } @@ -297,8 +317,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Classificado #$count (top $param2%) com $param3 jogos em $param4', - one: 'Classificado #$count (top $param2%) com $param3 jogo em $param4', + other: 'Qualificado #$count (nos $param2% melhores) com $param3 jogos em $param4', + one: 'Qualificado #$count (nos $param2% melhores) com $param3 jogo em $param4', ); return '$_temp0'; } @@ -319,8 +339,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Entrou nas $count equipes', - one: 'Entrou na $count equipe', + other: 'Entrou em $count equipas', + one: 'Entrou em $count equipa', ); return '$_temp0'; } @@ -329,7 +349,7 @@ class AppLocalizationsPt extends AppLocalizations { String get broadcastBroadcasts => 'Transmissões'; @override - String get broadcastLiveBroadcasts => 'Transmissões ao vivo do torneio'; + String get broadcastLiveBroadcasts => 'Transmissões do torneio em direto'; @override String challengeChallengesX(String param1) { @@ -343,17 +363,17 @@ class AppLocalizationsPt extends AppLocalizations { String get challengeChallengeDeclined => 'Desafio recusado'; @override - String get challengeChallengeAccepted => 'Desafio aceito!'; + String get challengeChallengeAccepted => 'Desafio aceite!'; @override String get challengeChallengeCanceled => 'Desafio cancelado.'; @override - String get challengeRegisterToSendChallenges => 'Por favor, registre-se para enviar desafios.'; + String get challengeRegisterToSendChallenges => 'Por favor regista-te para enviar desafios.'; @override String challengeYouCannotChallengeX(String param) { - return 'Você não pode desafiar $param.'; + return 'Não podes desafiar $param.'; } @override @@ -363,12 +383,12 @@ class AppLocalizationsPt extends AppLocalizations { @override String challengeYourXRatingIsTooFarFromY(String param1, String param2) { - return 'O seu rating $param1 é muito diferente de $param2.'; + return 'O teu ranking $param1 esta muito distante de $param2.'; } @override String challengeCannotChallengeDueToProvisionalXRating(String param) { - return 'Não pode desafiar devido ao rating provisório de $param.'; + return 'Não podes desafiar devido a ranking provisório $param.'; } @override @@ -377,52 +397,52 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get challengeDeclineGeneric => 'Não estou aceitando desafios no momento.'; + String get challengeDeclineGeneric => 'Não estou a aceitar desafios no momento.'; @override String get challengeDeclineLater => 'Este não é o momento certo para mim, por favor pergunte novamente mais tarde.'; @override - String get challengeDeclineTooFast => 'Este controle de tempo é muito rápido para mim, por favor, desafie novamente com um jogo mais lento.'; + String get challengeDeclineTooFast => 'Este controlo de tempo é muito rápido para mim, por favor, desafie-me novamente com um jogo mais lento.'; @override - String get challengeDeclineTooSlow => 'Este controle de tempo é muito lento para mim, por favor, desafie novamente com um jogo mais rápido.'; + String get challengeDeclineTooSlow => 'Este controlo de tempo é muito lento para mim, por favor, desafie-me novamente com um jogo mais rápido.'; @override - String get challengeDeclineTimeControl => 'Não estou aceitando desafios com estes controles de tempo.'; + String get challengeDeclineTimeControl => 'Não estou a aceitar desafios com este controlo de tempo.'; @override - String get challengeDeclineRated => 'Por favor, envie-me um desafio ranqueado.'; + String get challengeDeclineRated => 'Por favor, envie-me um desafio a valer para a classificação.'; @override String get challengeDeclineCasual => 'Por favor, envie-me um desafio amigável.'; @override - String get challengeDeclineStandard => 'Não estou aceitando desafios de variantes no momento.'; + String get challengeDeclineStandard => 'Não estou a aceitar desafios de variante, de momento.'; @override - String get challengeDeclineVariant => 'Não estou a fim de jogar esta variante no momento.'; + String get challengeDeclineVariant => 'Não estou disposto a jogar essa variante, de momento.'; @override - String get challengeDeclineNoBot => 'Não estou aceitando desafios de robôs.'; + String get challengeDeclineNoBot => 'Não estou a aceitar desafios de bots.'; @override - String get challengeDeclineOnlyBot => 'Estou aceitando apenas desafios de robôs.'; + String get challengeDeclineOnlyBot => 'Apenas aceito desafios de bots.'; @override - String get challengeInviteLichessUser => 'Ou convide um usuário Lichess:'; + String get challengeInviteLichessUser => 'Ou convide um utilizador Lichess:'; @override - String get contactContact => 'Contato'; + String get contactContact => 'Contacto'; @override - String get contactContactLichess => 'Entrar em contato com Lichess'; + String get contactContactLichess => 'Contactar o Lichess'; @override - String get patronDonate => 'Doação'; + String get patronDonate => 'Doar'; @override - String get patronLichessPatron => 'Apoie o Lichess'; + String get patronLichessPatron => 'Patrono do Lichess'; @override String perfStatPerfStats(String param) { @@ -430,46 +450,46 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get perfStatViewTheGames => 'Ver os jogos'; + String get perfStatViewTheGames => 'Ver as partidas'; @override String get perfStatProvisional => 'provisório'; @override - String get perfStatNotEnoughRatedGames => 'Não foram jogadas partidas suficientes valendo rating para estabelecer uma classificação confiável.'; + String get perfStatNotEnoughRatedGames => 'Não foi jogado um número suficiente de partidas a pontuar para estabelecer uma pontuação de confiança.'; @override String perfStatProgressOverLastXGames(String param) { - return 'Progresso nos últimos $param jogos:'; + return 'Progresso nas últimas $param partidas:'; } @override String perfStatRatingDeviation(String param) { - return 'Desvio de pontuação: $param.'; + return 'Desvio da pontuação: $param.'; } @override String perfStatRatingDeviationTooltip(String param1, String param2, String param3) { - return 'Um valor inferior indica que a pontuação é mais estável. Superior a $param1, a pontuação é classificada como provisória. Para ser incluída nas classificações, esse valor deve ser inferior a $param2 (xadrez padrão) ou $param3 (variantes).'; + return 'Um valor inferior significa que a classificação é mais estável. Acima de $param1, a classificação é considerada provisória. Para ser incluído nas classificações, esse valor deve estar abaixo de $param2 (xadrez padrão) ou $param3 (variantes).'; } @override String get perfStatTotalGames => 'Total de partidas'; @override - String get perfStatRatedGames => 'Partidas valendo pontos'; + String get perfStatRatedGames => 'Total de partidas a pontuar'; @override - String get perfStatTournamentGames => 'Jogos de torneio'; + String get perfStatTournamentGames => 'Partidas em torneios'; @override - String get perfStatBerserkedGames => 'Partidas Berserked'; + String get perfStatBerserkedGames => 'Partidas no modo frenético'; @override - String get perfStatTimeSpentPlaying => 'Tempo jogando'; + String get perfStatTimeSpentPlaying => 'Tempo passado a jogar'; @override - String get perfStatAverageOpponent => 'Pontuação média do adversário'; + String get perfStatAverageOpponent => 'Pontuação média dos adversários'; @override String get perfStatVictories => 'Vitórias'; @@ -481,7 +501,7 @@ class AppLocalizationsPt extends AppLocalizations { String get perfStatDisconnections => 'Desconexões'; @override - String get perfStatNotEnoughGames => 'Jogos insuficientes jogados'; + String get perfStatNotEnoughGames => 'Não foram jogadas partidas suficientes'; @override String perfStatHighestRating(String param) { @@ -490,19 +510,19 @@ class AppLocalizationsPt extends AppLocalizations { @override String perfStatLowestRating(String param) { - return 'Rating mais baixo: $param'; + return 'Pontuação mais baixa: $param'; } @override String perfStatFromXToY(String param1, String param2) { - return 'de $param1 para $param2'; + return 'de $param1 a $param2'; } @override - String get perfStatWinningStreak => 'Série de Vitórias'; + String get perfStatWinningStreak => 'Vitórias consecutivas'; @override - String get perfStatLosingStreak => 'Série de derrotas'; + String get perfStatLosingStreak => 'Derrotas consecutivas'; @override String perfStatLongestStreak(String param) { @@ -515,16 +535,16 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get perfStatBestRated => 'Melhores vitórias valendo pontuação'; + String get perfStatBestRated => 'Melhores vitórias a pontuar'; @override - String get perfStatGamesInARow => 'Partidas jogadas seguidas'; + String get perfStatGamesInARow => 'Partidas jogadas de seguida'; @override String get perfStatLessThanOneHour => 'Menos de uma hora entre partidas'; @override - String get perfStatMaxTimePlaying => 'Tempo máximo jogando'; + String get perfStatMaxTimePlaying => 'Tempo máximo passado a jogar'; @override String get perfStatNow => 'agora'; @@ -533,7 +553,7 @@ class AppLocalizationsPt extends AppLocalizations { String get preferencesPreferences => 'Preferências'; @override - String get preferencesDisplay => 'Exibição'; + String get preferencesDisplay => 'Mostrar'; @override String get preferencesPrivacy => 'Privacidade'; @@ -545,58 +565,58 @@ class AppLocalizationsPt extends AppLocalizations { String get preferencesPieceAnimation => 'Animação das peças'; @override - String get preferencesMaterialDifference => 'Diferença material'; + String get preferencesMaterialDifference => 'Diferença de material'; @override - String get preferencesBoardHighlights => 'Destacar casas do tabuleiro (último movimento e xeque)'; + String get preferencesBoardHighlights => 'Destacar as casas do tabuleiro (último movimento e xeque)'; @override - String get preferencesPieceDestinations => 'Destino das peças (movimentos válidos e pré-movimentos)'; + String get preferencesPieceDestinations => 'Destino das peças (movimentos válidos e antecipados)'; @override String get preferencesBoardCoordinates => 'Coordenadas do tabuleiro (A-H, 1-8)'; @override - String get preferencesMoveListWhilePlaying => 'Lista de movimentos durante a partida'; + String get preferencesMoveListWhilePlaying => 'Lista de movimentos'; @override - String get preferencesPgnPieceNotation => 'Modo de notação das jogadas'; + String get preferencesPgnPieceNotation => 'Anotação de movimentos'; @override - String get preferencesChessPieceSymbol => 'Símbolo da peça'; + String get preferencesChessPieceSymbol => 'Usar símbolo das peças'; @override - String get preferencesPgnLetter => 'Letra (K, Q, R, B, N)'; + String get preferencesPgnLetter => 'Usar letras (K, Q, R, B, N)'; @override - String get preferencesZenMode => 'Modo Zen'; + String get preferencesZenMode => 'Modo zen'; @override - String get preferencesShowPlayerRatings => 'Mostrar rating dos jogadores'; + String get preferencesShowPlayerRatings => 'Mostrar classificações dos jogadores'; @override - String get preferencesShowFlairs => 'Mostrar emotes de usuário'; + String get preferencesShowFlairs => 'Mostrar os estilos do jogadores'; @override - String get preferencesExplainShowPlayerRatings => 'Permite ocultar todas os ratings do site, para ajudar a se concentrar no jogo. As partidas continuam valendo rating.'; + String get preferencesExplainShowPlayerRatings => 'Isto permite ocultar todas as avaliações do site, para o ajudar a concentrar-se no xadrez. Os jogos continuam a poder ser avaliados, trata-se apenas do que poderá ver.'; @override - String get preferencesDisplayBoardResizeHandle => 'Mostrar cursor de redimensionamento do tabuleiro'; + String get preferencesDisplayBoardResizeHandle => 'Mostrar o cursor de redimensionamento do tabuleiro'; @override String get preferencesOnlyOnInitialPosition => 'Apenas na posição inicial'; @override - String get preferencesInGameOnly => 'Durante partidas'; + String get preferencesInGameOnly => 'Apenas em Jogo'; @override - String get preferencesChessClock => 'Relógio'; + String get preferencesChessClock => 'Relógio de xadrez'; @override String get preferencesTenthsOfSeconds => 'Décimos de segundo'; @override - String get preferencesWhenTimeRemainingLessThanTenSeconds => 'Quando o tempo restante < 10 segundos'; + String get preferencesWhenTimeRemainingLessThanTenSeconds => 'Quando o tempo restante for < 10 segundos'; @override String get preferencesHorizontalGreenProgressBars => 'Barras de progresso verdes horizontais'; @@ -608,25 +628,25 @@ class AppLocalizationsPt extends AppLocalizations { String get preferencesGiveMoreTime => 'Dar mais tempo'; @override - String get preferencesGameBehavior => 'Comportamento do jogo'; + String get preferencesGameBehavior => 'Funcionamento do jogo'; @override - String get preferencesHowDoYouMovePieces => 'Como você move as peças?'; + String get preferencesHowDoYouMovePieces => 'Como queres mexer as peças?'; @override String get preferencesClickTwoSquares => 'Clicar em duas casas'; @override - String get preferencesDragPiece => 'Arrastar a peça'; + String get preferencesDragPiece => 'Arrastar uma peça'; @override - String get preferencesBothClicksAndDrag => 'Ambas'; + String get preferencesBothClicksAndDrag => 'Qualquer'; @override - String get preferencesPremovesPlayingDuringOpponentTurn => 'Pré-movimentos (jogadas durante o turno do oponente)'; + String get preferencesPremovesPlayingDuringOpponentTurn => 'Jogadas antecipadas (jogadas durante a vez do adversário)'; @override - String get preferencesTakebacksWithOpponentApproval => 'Voltar jogada (com aprovação do oponente)'; + String get preferencesTakebacksWithOpponentApproval => 'Voltar jogadas atrás (com aprovação do adversário)'; @override String get preferencesInCasualGamesOnly => 'Somente em jogos casuais'; @@ -638,58 +658,58 @@ class AppLocalizationsPt extends AppLocalizations { String get preferencesExplainPromoteToQueenAutomatically => 'Mantenha a tecla pressionada enquanto promove para desativar temporariamente a autopromoção'; @override - String get preferencesWhenPremoving => 'Quando pré-mover'; + String get preferencesWhenPremoving => 'Quando mover antecipadamente'; @override - String get preferencesClaimDrawOnThreefoldRepetitionAutomatically => 'Reivindicar empate sobre a repetição tripla automaticamente'; + String get preferencesClaimDrawOnThreefoldRepetitionAutomatically => 'Reivindicar empate automaticamente após uma repetição tripla'; @override - String get preferencesWhenTimeRemainingLessThanThirtySeconds => 'Quando o tempo restante < 30 segundos'; + String get preferencesWhenTimeRemainingLessThanThirtySeconds => 'Quando o tempo restante for < 30 segundos'; @override String get preferencesMoveConfirmation => 'Confirmação de movimento'; @override - String get preferencesExplainCanThenBeTemporarilyDisabled => 'Pode ser desativado durante a partida no menu do tabuleiro'; + String get preferencesExplainCanThenBeTemporarilyDisabled => 'Pode ser desativado durante um jogo com o menu do tabuleiro'; @override String get preferencesInCorrespondenceGames => 'Jogos por correspondência'; @override - String get preferencesCorrespondenceAndUnlimited => 'Por correspondência e sem limites'; + String get preferencesCorrespondenceAndUnlimited => 'Por correspondência e ilimitado'; @override - String get preferencesConfirmResignationAndDrawOffers => 'Confirmar abandono e oferta de empate'; + String get preferencesConfirmResignationAndDrawOffers => 'Confirmar desistências e propostas de empate'; @override - String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'Maneira de rocar'; + String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'Método de roque'; @override String get preferencesCastleByMovingTwoSquares => 'Mover o rei duas casas'; @override - String get preferencesCastleByMovingOntoTheRook => 'Mover o rei em direção à torre'; + String get preferencesCastleByMovingOntoTheRook => 'Mover o rei até à torre'; @override - String get preferencesInputMovesWithTheKeyboard => 'Fazer lances com escrita do teclado'; + String get preferencesInputMovesWithTheKeyboard => 'Introduzir movimentos com o teclado'; @override - String get preferencesInputMovesWithVoice => 'Mova as peças com sua voz'; + String get preferencesInputMovesWithVoice => 'Insira movimentos com a sua voz'; @override - String get preferencesSnapArrowsToValidMoves => 'Insira setas para movimentos válidos'; + String get preferencesSnapArrowsToValidMoves => 'Alinhar as setas para sítios para onde as peças se podem mover'; @override - String get preferencesSayGgWpAfterLosingOrDrawing => 'Diga \"Bom jogo, bem jogado\" após a derrota ou empate'; + String get preferencesSayGgWpAfterLosingOrDrawing => 'Dizer \"Good game, well played\" (Bom jogo, bem jogado) após uma derrota ou empate'; @override - String get preferencesYourPreferencesHaveBeenSaved => 'Suas preferências foram salvas.'; + String get preferencesYourPreferencesHaveBeenSaved => 'As tuas preferências foram guardadas.'; @override - String get preferencesScrollOnTheBoardToReplayMoves => 'Use o scroll do mouse no tabuleiro para ir passando as jogadas'; + String get preferencesScrollOnTheBoardToReplayMoves => 'Rolar no tabuleiro para repetir os movimentos'; @override - String get preferencesCorrespondenceEmailNotification => 'Email diário listando seus jogos por correspondência'; + String get preferencesCorrespondenceEmailNotification => 'Notificações diárias por email listando seus jogos por correspondência'; @override String get preferencesNotifyStreamStart => 'Streamer começou uma transmissão ao vivo'; @@ -698,28 +718,28 @@ class AppLocalizationsPt extends AppLocalizations { String get preferencesNotifyInboxMsg => 'Nova mensagem na caixa de entrada'; @override - String get preferencesNotifyForumMention => 'Você foi mencionado em um comentário do fórum'; + String get preferencesNotifyForumMention => 'Um comentário do fórum menciona-o'; @override - String get preferencesNotifyInvitedStudy => 'Convite para um estudo'; + String get preferencesNotifyInvitedStudy => 'Convite para estudo'; @override - String get preferencesNotifyGameEvent => 'Jogo por correspondência atualizado'; + String get preferencesNotifyGameEvent => 'Atualizações dos jogos por correspondência'; @override String get preferencesNotifyChallenge => 'Desafios'; @override - String get preferencesNotifyTournamentSoon => 'O torneio vai começar em breve'; + String get preferencesNotifyTournamentSoon => 'O torneio começará em breve'; @override - String get preferencesNotifyTimeAlarm => 'Está acabando o tempo no jogo por correspondência'; + String get preferencesNotifyTimeAlarm => 'Está a acabar o tempo no jogo por correspondência'; @override - String get preferencesNotifyBell => 'Notificação no Lichess'; + String get preferencesNotifyBell => 'Notificação do sino no Lichess'; @override - String get preferencesNotifyPush => 'Notificação no dispositivo fora do Lichess'; + String get preferencesNotifyPush => 'Notificação do dispositivo quando não está no Lichess'; @override String get preferencesNotifyWeb => 'Navegador'; @@ -731,10 +751,10 @@ class AppLocalizationsPt extends AppLocalizations { String get preferencesBellNotificationSound => 'Som da notificação'; @override - String get puzzlePuzzles => 'Quebra-cabeças'; + String get puzzlePuzzles => 'Problemas'; @override - String get puzzlePuzzleThemes => 'Temas de quebra-cabeça'; + String get puzzlePuzzleThemes => 'Temas de problemas'; @override String get puzzleRecommended => 'Recomendado'; @@ -743,13 +763,13 @@ class AppLocalizationsPt extends AppLocalizations { String get puzzlePhases => 'Fases'; @override - String get puzzleMotifs => 'Motivos táticos'; + String get puzzleMotifs => 'Temas'; @override String get puzzleAdvanced => 'Avançado'; @override - String get puzzleLengths => 'Distância'; + String get puzzleLengths => 'Comprimentos'; @override String get puzzleMates => 'Xeque-mates'; @@ -764,42 +784,42 @@ class AppLocalizationsPt extends AppLocalizations { String get puzzleSpecialMoves => 'Movimentos especiais'; @override - String get puzzleDidYouLikeThisPuzzle => 'Você gostou deste quebra-cabeças?'; + String get puzzleDidYouLikeThisPuzzle => 'Gostaste deste problema?'; @override - String get puzzleVoteToLoadNextOne => 'Vote para carregar o próximo!'; + String get puzzleVoteToLoadNextOne => 'Vota para carregares o próximo!'; @override - String get puzzleUpVote => 'Votar a favor do quebra-cabeça'; + String get puzzleUpVote => 'Aprove o puzzle'; @override - String get puzzleDownVote => 'Votar contra o quebra-cabeça'; + String get puzzleDownVote => 'Desaprove o puzzle'; @override - String get puzzleYourPuzzleRatingWillNotChange => 'Sua pontuação de quebra-cabeças não mudará. Note que os quebra-cabeças não são uma competição. A pontuação indica os quebra-cabeças que se adequam às suas habilidades.'; + String get puzzleYourPuzzleRatingWillNotChange => 'A tua classificação de problemas não será alterada. Nota que os problemas não são uma competição. A classificação ajuda a selecionar os melhores problemas para o teu nível atual.'; @override - String get puzzleFindTheBestMoveForWhite => 'Encontre o melhor lance para as brancas.'; + String get puzzleFindTheBestMoveForWhite => 'Encontra a melhor jogada para as brancas.'; @override - String get puzzleFindTheBestMoveForBlack => 'Encontre a melhor jogada para as pretas.'; + String get puzzleFindTheBestMoveForBlack => 'Encontra a melhor jogada para as pretas.'; @override String get puzzleToGetPersonalizedPuzzles => 'Para obter desafios personalizados:'; @override String puzzlePuzzleId(String param) { - return 'Quebra-cabeça $param'; + return 'Problema $param'; } @override - String get puzzlePuzzleOfTheDay => 'Quebra-cabeça do dia'; + String get puzzlePuzzleOfTheDay => 'Problema do dia'; @override - String get puzzleDailyPuzzle => 'Quebra-cabeça diário'; + String get puzzleDailyPuzzle => 'Problema diário'; @override - String get puzzleClickToSolve => 'Clique para resolver'; + String get puzzleClickToSolve => 'Clica para resolveres'; @override String get puzzleGoodMove => 'Boa jogada'; @@ -808,42 +828,42 @@ class AppLocalizationsPt extends AppLocalizations { String get puzzleBestMove => 'Melhor jogada!'; @override - String get puzzleKeepGoing => 'Continue…'; + String get puzzleKeepGoing => 'Continua…'; @override String get puzzlePuzzleSuccess => 'Sucesso!'; @override - String get puzzlePuzzleComplete => 'Quebra-cabeças concluído!'; + String get puzzlePuzzleComplete => 'Problema resolvido!'; @override String get puzzleByOpenings => 'Por abertura'; @override - String get puzzlePuzzlesByOpenings => 'Quebra-cabeças por abertura'; + String get puzzlePuzzlesByOpenings => 'Problemas por abertura'; @override - String get puzzleOpeningsYouPlayedTheMost => 'Aberturas que você mais jogou em partidas valendo pontos'; + String get puzzleOpeningsYouPlayedTheMost => 'Aberturas que jogou mais vezes em partidas com rating'; @override - String get puzzleUseFindInPage => 'Use a ferramenta \"Encontrar na página\" do navegador para encontrar sua abertura favorita!'; + String get puzzleUseFindInPage => 'Usar \"Localizar na página\" no menu do navegador para encontrar a sua abertura favorita!'; @override - String get puzzleUseCtrlF => 'Aperte Ctrl + F para encontrar sua abertura favorita!'; + String get puzzleUseCtrlF => 'Usar Ctrl+f para encontrar a sua abertura favorita!'; @override - String get puzzleNotTheMove => 'O movimento não é este!'; + String get puzzleNotTheMove => 'Não é esse movimento!'; @override - String get puzzleTrySomethingElse => 'Tente algo diferente.'; + String get puzzleTrySomethingElse => 'Tenta outra coisa.'; @override String puzzleRatingX(String param) { - return 'Rating: $param'; + return 'Pontuação: $param'; } @override - String get puzzleHidden => 'oculto'; + String get puzzleHidden => 'oculta'; @override String puzzleFromGameLink(String param) { @@ -851,7 +871,7 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get puzzleContinueTraining => 'Continue treinando'; + String get puzzleContinueTraining => 'Continuar o treino'; @override String get puzzleDifficultyLevel => 'Nível de dificuldade'; @@ -860,88 +880,88 @@ class AppLocalizationsPt extends AppLocalizations { String get puzzleNormal => 'Normal'; @override - String get puzzleEasier => 'Fácil'; + String get puzzleEasier => 'Mais fáceis'; @override - String get puzzleEasiest => 'Muito fácil'; + String get puzzleEasiest => 'Mais fáceis'; @override - String get puzzleHarder => 'Difícil'; + String get puzzleHarder => 'Mais difíceis'; @override - String get puzzleHardest => 'Muito difícil'; + String get puzzleHardest => 'Mais difíceis'; @override String get puzzleExample => 'Exemplo'; @override - String get puzzleAddAnotherTheme => 'Adicionar um outro tema'; + String get puzzleAddAnotherTheme => 'Adicionar outro tema'; @override - String get puzzleNextPuzzle => 'Próximo quebra-cabeça'; + String get puzzleNextPuzzle => 'Próximo desafio'; @override - String get puzzleJumpToNextPuzzleImmediately => 'Ir para o próximo problema automaticamente'; + String get puzzleJumpToNextPuzzleImmediately => 'Saltar imediatamente para o próximo problema'; @override - String get puzzlePuzzleDashboard => 'Painel do quebra-cabeças'; + String get puzzlePuzzleDashboard => 'Painel de controlo dos problemas'; @override - String get puzzleImprovementAreas => 'Áreas de aprimoramento'; + String get puzzleImprovementAreas => 'Áreas a melhorar'; @override String get puzzleStrengths => 'Pontos fortes'; @override - String get puzzleHistory => 'Histórico de quebra-cabeças'; + String get puzzleHistory => 'Histórico de problemas'; @override String get puzzleSolved => 'resolvido'; @override - String get puzzleFailed => 'falhou'; + String get puzzleFailed => 'incorreto'; @override - String get puzzleStreakDescription => 'Resolva quebra-cabeças progressivamente mais difíceis e construa uma sequência de vitórias. Não há relógio, então tome seu tempo. Um movimento errado e o jogo acaba! Porém, você pode pular um movimento por sessão.'; + String get puzzleStreakDescription => 'Resolve puzzles progressivamente mais difíceis e estabelece uma sequência de vitórias. Não há relógio, demora o teu tempo. Um movimento errado e o jogo acaba! No entanto, podes saltar um movimento por sessão.'; @override String puzzleYourStreakX(String param) { - return 'Sua sequência: $param'; + return 'Vitórias consecutivas: $param'; } @override - String get puzzleStreakSkipExplanation => 'Pule este lance para preservar a sua sequência! Funciona apenas uma vez por corrida.'; + String get puzzleStreakSkipExplanation => 'Salta este movimento para preservar a tua sequência! Apenas funciona uma vez por sessão.'; @override - String get puzzleContinueTheStreak => 'Continuar a sequência'; + String get puzzleContinueTheStreak => 'Continua a sequência'; @override - String get puzzleNewStreak => 'Nova sequência'; + String get puzzleNewStreak => 'Nova sequência de vitórias'; @override String get puzzleFromMyGames => 'Dos meus jogos'; @override - String get puzzleLookupOfPlayer => 'Pesquise quebra-cabeças de um jogador específico'; + String get puzzleLookupOfPlayer => 'Pesquise problemas de jogos de um jogador'; @override String puzzleFromXGames(String param) { - return 'Problemas de $param\' jogos'; + return 'Puzzles dos jogos de $param'; } @override - String get puzzleSearchPuzzles => 'Procurar quebra-cabeças'; + String get puzzleSearchPuzzles => 'Pesquisar desafios'; @override - String get puzzleFromMyGamesNone => 'Você não tem nenhum quebra-cabeça no banco de dados, mas o Lichess ainda te ama muito.\nJogue partidas rápidas e clássicas para aumentar suas chances de ter um desafio seu adicionado!'; + String get puzzleFromMyGamesNone => 'Não tens problemas na base de dados, mas Lichess adora-te muito.\n\nJoga partidas semi-rápidas e clássicas para aumentares a probabilidade de teres um problema adicionado!'; @override String puzzleFromXGamesFound(String param1, String param2) { - return '$param1 quebra-cabeças encontrados em $param2 partidas'; + return '$param1 problemas encontrados em $param2 partidas'; } @override - String get puzzlePuzzleDashboardDescription => 'Treine, analise, melhore'; + String get puzzlePuzzleDashboardDescription => 'Treinar, analisar, melhorar'; @override String puzzlePercentSolved(String param) { @@ -949,13 +969,13 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get puzzleNoPuzzlesToShow => 'Não há nada para mostrar aqui, jogue alguns quebra-cabeças primeiro!'; + String get puzzleNoPuzzlesToShow => 'Nada para mostrar, joga alguns problemas primeiro!'; @override String get puzzleImprovementAreasDescription => 'Treine estes para otimizar o seu progresso!'; @override - String get puzzleStrengthDescription => 'Sua perfomance é melhor nesses temas'; + String get puzzleStrengthDescription => 'Você tem melhor desempenho nestes temas'; @override String puzzlePlayedXTimes(int count) { @@ -963,7 +983,7 @@ class AppLocalizationsPt extends AppLocalizations { count, locale: localeName, other: 'Jogado $count vezes', - one: 'Jogado $count vezes', + one: 'Jogado $count vez', ); return '$_temp0'; } @@ -973,8 +993,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count pontos abaixo da sua classificação de quebra-cabeças', - one: 'Um ponto abaixo da sua classificação de quebra-cabeças', + other: '$count pontos abaixo da sua pontuação de problemas', + one: 'Um ponto abaixo da sua pontuação de problemas', ); return '$_temp0'; } @@ -984,8 +1004,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count pontos acima da sua classificação de quebra-cabeças', - one: 'Um ponto acima da sua classificação de quebra-cabeças', + other: '$count pontos acima da sua pontuação de problemas', + one: 'Um ponto acima da sua pontuação de problemas', ); return '$_temp0'; } @@ -995,8 +1015,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count jogados', - one: '$count jogado', + other: '$count problemas feitos', + one: '$count problema feito', ); return '$_temp0'; } @@ -1006,8 +1026,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count a serem repetidos', - one: '$count a ser repetido', + other: '$count para repetir', + one: '$count para repetir', ); return '$_temp0'; } @@ -1016,136 +1036,136 @@ class AppLocalizationsPt extends AppLocalizations { String get puzzleThemeAdvancedPawn => 'Peão avançado'; @override - String get puzzleThemeAdvancedPawnDescription => 'Um peão prestes a ser promovido ou à beira da promoção é um tema tático.'; + String get puzzleThemeAdvancedPawnDescription => 'A chave do tático é um peão a promover ou a ameaçar promover.'; @override String get puzzleThemeAdvantage => 'Vantagem'; @override - String get puzzleThemeAdvantageDescription => 'Aproveite a sua chance de ter uma vantagem decisiva. (200cp ≤ eval ≤ 600cp)'; + String get puzzleThemeAdvantageDescription => 'Aproveita a oportunidade de obter uma vantagem decisiva. (200cp ≤ aval ≤ 600cp)'; @override String get puzzleThemeAnastasiaMate => 'Mate Anastasia'; @override - String get puzzleThemeAnastasiaMateDescription => 'Um cavalo e uma torre se unem para prender o rei do oponente entre a lateral do tabuleiro e uma peça amiga.'; + String get puzzleThemeAnastasiaMateDescription => 'Um cavalo e uma torre ou dama cooperam para prender o rei inimigo entre um lado do tabuleiro e outra peça inimiga.'; @override - String get puzzleThemeArabianMate => 'Mate árabe'; + String get puzzleThemeArabianMate => 'Mate Árabe'; @override - String get puzzleThemeArabianMateDescription => 'Um cavalo e uma torre se unem para prender o rei inimigo em um canto do tabuleiro.'; + String get puzzleThemeArabianMateDescription => 'Um cavalo e uma torre cooperam para prenderem o rei inimigo no canto do tabuleiro.'; @override - String get puzzleThemeAttackingF2F7 => 'Atacando f2 ou f7'; + String get puzzleThemeAttackingF2F7 => 'Atacar f2 ou f7'; @override - String get puzzleThemeAttackingF2F7Description => 'Um ataque focado no peão de f2 e no peão de f7, como na abertura frango frito.'; + String get puzzleThemeAttackingF2F7Description => 'Um ataque ao peão de f2 ou f7, como a abertura \"Fried Liver\".'; @override String get puzzleThemeAttraction => 'Atração'; @override - String get puzzleThemeAttractionDescription => 'Uma troca ou sacrifício encorajando ou forçando uma peça do oponente a uma casa que permite uma sequência tática.'; + String get puzzleThemeAttractionDescription => 'Uma troca ou sacrifício que encoraja ou força uma peça adversária a ir para uma casa que permite um tático.'; @override - String get puzzleThemeBackRankMate => 'Mate do corredor'; + String get puzzleThemeBackRankMate => 'Mate de corredor'; @override - String get puzzleThemeBackRankMateDescription => 'Dê o xeque-mate no rei na última fileira, quando ele estiver bloqueado pelas próprias peças.'; + String get puzzleThemeBackRankMateDescription => 'Dá mate ao rei na fila inicial, quando está preso pelas suas próprias peças.'; @override - String get puzzleThemeBishopEndgame => 'Finais de bispo'; + String get puzzleThemeBishopEndgame => 'Final de bispos'; @override - String get puzzleThemeBishopEndgameDescription => 'Final com somente bispos e peões.'; + String get puzzleThemeBishopEndgameDescription => 'Um final apenas com bispos e peões.'; @override - String get puzzleThemeBodenMate => 'Mate de Boden'; + String get puzzleThemeBodenMate => 'Mate Boden'; @override - String get puzzleThemeBodenMateDescription => 'Dois bispos atacantes em diagonais cruzadas dão um mate em um rei obstruído por peças amigas.'; + String get puzzleThemeBodenMateDescription => 'Dois bispos em diagonais perpendiculares dão mate ao rei inimigo obstruído por peças aliadas.'; @override String get puzzleThemeCastling => 'Roque'; @override - String get puzzleThemeCastlingDescription => 'Traga o seu rei para a segurança, e prepare sua torre para o ataque.'; + String get puzzleThemeCastlingDescription => 'Proteger o rei e trazer a torre para o ataque.'; @override - String get puzzleThemeCapturingDefender => 'Capture o defensor'; + String get puzzleThemeCapturingDefender => 'Capturar o defensor'; @override - String get puzzleThemeCapturingDefenderDescription => 'Remover uma peça que seja importante na defesa de outra, permitindo que agora a peça indefesa seja capturada na jogada seguinte.'; + String get puzzleThemeCapturingDefenderDescription => 'Remove uma peça que seja crítica para a defesa de outra peça, permitindo que esta seja capturada na próxima jogada.'; @override - String get puzzleThemeCrushing => 'Punindo'; + String get puzzleThemeCrushing => 'Esmagar'; @override - String get puzzleThemeCrushingDescription => 'Perceba a capivarada do oponente para obter uma vantagem decisiva. (vantagem ≥ 600cp)'; + String get puzzleThemeCrushingDescription => 'Descobre um erro grave do oponente e obtém uma vantagem esmagadora. (avaliação ≥ 600cp)'; @override - String get puzzleThemeDoubleBishopMate => 'Mate de dois bispos'; + String get puzzleThemeDoubleBishopMate => 'Mate com dois bispos'; @override - String get puzzleThemeDoubleBishopMateDescription => 'Dois bispos atacantes em diagonais adjacentes dão um mate em um rei obstruído por peças amigas.'; + String get puzzleThemeDoubleBishopMateDescription => 'Dois bispos em diagonais adjacentes dão mate ao rei inimigo obstruído por peças aliadas.'; @override - String get puzzleThemeDovetailMate => 'Mate da cauda de andorinha'; + String get puzzleThemeDovetailMate => 'Mate cauda-de-andorinha'; @override - String get puzzleThemeDovetailMateDescription => 'Uma dama dá um mate em um rei adjacente, cujos únicos dois quadrados de fuga estão obstruídos por peças amigas.'; + String get puzzleThemeDovetailMateDescription => 'Uma dama dá mate ao rei inimigo cujas jogadas de escape estão bloqueadas por peças aliadas.'; @override String get puzzleThemeEquality => 'Igualdade'; @override - String get puzzleThemeEqualityDescription => 'Saia de uma posição perdida, e assegure um empate ou uma posição equilibrada. (aval ≤ 200cp)'; + String get puzzleThemeEqualityDescription => 'Recupera de uma posição perdedora e garante um empate ou uma posição de equilíbrio. (avaliação ≤ 200cp)'; @override - String get puzzleThemeKingsideAttack => 'Ataque na ala do Rei'; + String get puzzleThemeKingsideAttack => 'Ataque no lado do rei'; @override - String get puzzleThemeKingsideAttackDescription => 'Um ataque ao rei do oponente, após ele ter efetuado o roque curto.'; + String get puzzleThemeKingsideAttackDescription => 'Um ataque ao rei do adversário, após este ter feito roque menor (para o lado do rei).'; @override - String get puzzleThemeClearance => 'Lance útil'; + String get puzzleThemeClearance => 'Limpeza'; @override - String get puzzleThemeClearanceDescription => 'Um lance, às vezes consumindo tempos, que libera uma casa, fileira ou diagonal para uma ideia tática em seguida.'; + String get puzzleThemeClearanceDescription => 'Uma jogada, com tempo, que limpa uma casa, fila, coluna ou diagonal para uma ideia tática subsequente.'; @override String get puzzleThemeDefensiveMove => 'Movimento defensivo'; @override - String get puzzleThemeDefensiveMoveDescription => 'Um movimento preciso ou sequência de movimentos que são necessários para evitar perda de material ou outra vantagem.'; + String get puzzleThemeDefensiveMoveDescription => 'Um movimento ou sequência de movimentos precisos, necessários para evitar uma desvantagem, como por exemplo perda de material.'; @override String get puzzleThemeDeflection => 'Desvio'; @override - String get puzzleThemeDeflectionDescription => 'Um movimento que desvia a peça do oponente da sua função, por exemplo a de defesa de outra peça ou a defesa de uma casa importante.'; + String get puzzleThemeDeflectionDescription => 'Uma jogada que distrai uma peça do adversário de outra função, como por exemplo, proteger uma casa chave. Às vezes também é chamado de sobrecarga.'; @override String get puzzleThemeDiscoveredAttack => 'Ataque descoberto'; @override - String get puzzleThemeDiscoveredAttackDescription => 'Mover uma peça que anteriormente bloqueava um ataque de uma peça de longo alcance, como por exemplo um cavalo liberando a coluna de uma torre.'; + String get puzzleThemeDiscoveredAttackDescription => 'Mover uma peça que estava a bloquear um ataque de uma peça de longo alcance, como por exemplo um cavalo que sai da frente de uma torre.'; @override String get puzzleThemeDoubleCheck => 'Xeque duplo'; @override - String get puzzleThemeDoubleCheckDescription => 'Dar Xeque com duas peças ao mesmo tempo, como resultado de um ataque descoberto onde tanto a peça que se move quanto a peça que estava sendo obstruída atacam o rei do oponente.'; + String get puzzleThemeDoubleCheckDescription => 'Fazer xeque com duas peças ao mesmo tempo, como consequência de um ataque descoberto em que tanto a peça que move como a peça que é descoberta atacam o rei do adversário.'; @override - String get puzzleThemeEndgame => 'Finais'; + String get puzzleThemeEndgame => 'Final de jogo'; @override - String get puzzleThemeEndgameDescription => 'Tática durante a última fase do jogo.'; + String get puzzleThemeEndgameDescription => 'Uma tática durante a última fase do jogo.'; @override - String get puzzleThemeEnPassantDescription => 'Uma tática envolvendo a regra do en passant, onde um peão pode capturar um peão do oponente que passou por ele usando seu movimento inicial de duas casas.'; + String get puzzleThemeEnPassantDescription => 'Uma tática que envolve a regra de \"en passant\", onde um peão pode capturar um peão adversário que o ignorou usando o seu primeiro movimento de duas casas.'; @override String get puzzleThemeExposedKing => 'Rei exposto'; @@ -1154,273 +1174,273 @@ class AppLocalizationsPt extends AppLocalizations { String get puzzleThemeExposedKingDescription => 'Uma tática que envolve um rei com poucos defensores ao seu redor, muitas vezes levando a xeque-mate.'; @override - String get puzzleThemeFork => 'Garfo (ou duplo)'; + String get puzzleThemeFork => 'Garfo'; @override - String get puzzleThemeForkDescription => 'Um movimento onde a peça movida ataca duas peças de oponente de uma só vez.'; + String get puzzleThemeForkDescription => 'Uma jogada em que uma peça ataca duas peças do adversário simultaneamente.'; @override - String get puzzleThemeHangingPiece => 'Peça pendurada'; + String get puzzleThemeHangingPiece => 'Peça desprotegida'; @override - String get puzzleThemeHangingPieceDescription => 'Uma táctica que envolve uma peça indefesa do oponente ou insuficientemente defendida e livre para ser capturada.'; + String get puzzleThemeHangingPieceDescription => 'Uma tática que envolve uma peça do adversário que não está suficientemente defendida e por isso pode ser capturada.'; @override - String get puzzleThemeHookMate => 'Xeque gancho'; + String get puzzleThemeHookMate => 'Mate gancho'; @override - String get puzzleThemeHookMateDescription => 'Xeque-mate com uma torre, um cavalo e um peão, juntamente com um peão inimigo, para limitar a fuga do rei.'; + String get puzzleThemeHookMateDescription => 'Mate com uma torre, cavalo e peão em que o rei inimigo tem as jogadas de escape bloqueadas por um peão aliado.'; @override String get puzzleThemeInterference => 'Interferência'; @override - String get puzzleThemeInterferenceDescription => 'Mover uma peça entre duas peças do oponente para deixar uma ou duas peças do oponente indefesas, como um cavalo em uma casa defendida por duas torres.'; + String get puzzleThemeInterferenceDescription => 'Jogar uma peça para uma casa entre duas peças do adversário deixando pelo menos uma delas desprotegia, como por exemplo um cavalo numa casa defendida entre duas torres.'; @override - String get puzzleThemeIntermezzo => 'Lance intermediário'; + String get puzzleThemeIntermezzo => 'Intermezzo'; @override - String get puzzleThemeIntermezzoDescription => 'Em vez de jogar o movimento esperado, primeiro realiza outro movimento criando uma ameaça imediata a que o oponente deve responder. Também conhecido como \"Zwischenzug\" ou \"In between\".'; + String get puzzleThemeIntermezzoDescription => 'Em vez de jogares o movimento esperado, primeiro interpõe outro movimento colocando uma ameaça imediata à qual o oponente deve responder. Também conhecido como \"Zwischenzug\" ou jogada intermédia.'; @override - String get puzzleThemeKnightEndgame => 'Finais de Cavalo'; + String get puzzleThemeKnightEndgame => 'Final de cavalo'; @override - String get puzzleThemeKnightEndgameDescription => 'Um final jogado apenas com cavalos e peões.'; + String get puzzleThemeKnightEndgameDescription => 'Um final de jogo com apenas cavalos e peões.'; @override - String get puzzleThemeLong => 'Quebra-cabeças longo'; + String get puzzleThemeLong => 'Problema longo'; @override - String get puzzleThemeLongDescription => 'Vitória em três movimentos.'; + String get puzzleThemeLongDescription => 'Três movimentos para ganhar.'; @override - String get puzzleThemeMaster => 'Partidas de mestres'; + String get puzzleThemeMaster => 'Jogos de mestres'; @override - String get puzzleThemeMasterDescription => 'Quebra-cabeças de partidas jogadas por jogadores titulados.'; + String get puzzleThemeMasterDescription => 'Problemas de partidas jogadas por jogadores titulados.'; @override - String get puzzleThemeMasterVsMaster => 'Partidas de Mestre vs Mestre'; + String get puzzleThemeMasterVsMaster => 'Jogos de Mestre vs Mestre'; @override - String get puzzleThemeMasterVsMasterDescription => 'Quebra-cabeças de partidas entre dois jogadores titulados.'; + String get puzzleThemeMasterVsMasterDescription => 'Partidas jogadas entre dois jogadores titulados.'; @override String get puzzleThemeMate => 'Xeque-mate'; @override - String get puzzleThemeMateDescription => 'Vença o jogo com estilo.'; + String get puzzleThemeMateDescription => 'Vence a partida com estilo.'; @override String get puzzleThemeMateIn1 => 'Mate em 1'; @override - String get puzzleThemeMateIn1Description => 'Dar xeque-mate em um movimento.'; + String get puzzleThemeMateIn1Description => 'Faz xeque-mate num movimento.'; @override String get puzzleThemeMateIn2 => 'Mate em 2'; @override - String get puzzleThemeMateIn2Description => 'Dar xeque-mate em dois movimentos.'; + String get puzzleThemeMateIn2Description => 'Faz xeque-mate em dois movimentos.'; @override String get puzzleThemeMateIn3 => 'Mate em 3'; @override - String get puzzleThemeMateIn3Description => 'Dar xeque-mate em três movimentos.'; + String get puzzleThemeMateIn3Description => 'Faz xeque-mate em três movimentos.'; @override String get puzzleThemeMateIn4 => 'Mate em 4'; @override - String get puzzleThemeMateIn4Description => 'Dar xeque-mate em 4 movimentos.'; + String get puzzleThemeMateIn4Description => 'Faz xeque-mate em quatro movimentos.'; @override String get puzzleThemeMateIn5 => 'Mate em 5 ou mais'; @override - String get puzzleThemeMateIn5Description => 'Descubra uma longa sequência de mate.'; + String get puzzleThemeMateIn5Description => 'Descobre uma longa sequência que leva ao xeque-mate.'; @override String get puzzleThemeMiddlegame => 'Meio-jogo'; @override - String get puzzleThemeMiddlegameDescription => 'Tática durante a segunda fase do jogo.'; + String get puzzleThemeMiddlegameDescription => 'Uma tática durante a segunda fase do jogo.'; @override - String get puzzleThemeOneMove => 'Quebra-cabeças de um movimento'; + String get puzzleThemeOneMove => 'Problema de um movimento'; @override - String get puzzleThemeOneMoveDescription => 'Quebra-cabeças de um movimento.'; + String get puzzleThemeOneMoveDescription => 'Um problema que é resolvido com apenas um movimento.'; @override String get puzzleThemeOpening => 'Abertura'; @override - String get puzzleThemeOpeningDescription => 'Tática durante a primeira fase do jogo.'; + String get puzzleThemeOpeningDescription => 'Uma tática durante a primeira fase do jogo.'; @override - String get puzzleThemePawnEndgame => 'Finais de peões'; + String get puzzleThemePawnEndgame => 'Final de peões'; @override - String get puzzleThemePawnEndgameDescription => 'Um final apenas com peões.'; + String get puzzleThemePawnEndgameDescription => 'Um final de jogo só com peões.'; @override String get puzzleThemePin => 'Cravada'; @override - String get puzzleThemePinDescription => 'Uma tática envolvendo cravada, onde uma peça é incapaz de mover-se sem abrir um descoberto em uma peça de maior valor.'; + String get puzzleThemePinDescription => 'Uma tática que envolve cravadas, onde uma peça é incapaz de se mover sem revelar um ataque a uma peça de valor superior.'; @override String get puzzleThemePromotion => 'Promoção'; @override - String get puzzleThemePromotionDescription => 'Promova um peão para uma dama ou a uma peça menor.'; + String get puzzleThemePromotionDescription => 'Promova o teu peão a uma dama ou numa peça menor.'; @override - String get puzzleThemeQueenEndgame => 'Finais de Dama'; + String get puzzleThemeQueenEndgame => 'Final de dama'; @override String get puzzleThemeQueenEndgameDescription => 'Um final com apenas damas e peões.'; @override - String get puzzleThemeQueenRookEndgame => 'Finais de Dama e Torre'; + String get puzzleThemeQueenRookEndgame => 'Dama e torre'; @override - String get puzzleThemeQueenRookEndgameDescription => 'Finais com apenas Dama, Torre e Peões.'; + String get puzzleThemeQueenRookEndgameDescription => 'Um final de jogo só com damas, torres e peões.'; @override - String get puzzleThemeQueensideAttack => 'Ataque na ala da dama'; + String get puzzleThemeQueensideAttack => 'Ataque no lado da dama'; @override - String get puzzleThemeQueensideAttackDescription => 'Um ataque ao rei adversário, após ter efetuado o roque na ala da Dama.'; + String get puzzleThemeQueensideAttackDescription => 'Um ataque ao rei do adversário, após este ter feito roque grande (para o lado da dama).'; @override - String get puzzleThemeQuietMove => 'Lance de preparação'; + String get puzzleThemeQuietMove => 'Jogada subtil'; @override - String get puzzleThemeQuietMoveDescription => 'Um lance que não dá xeque nem realiza uma captura, mas prepara uma ameaça inevitável para a jogada seguinte.'; + String get puzzleThemeQuietMoveDescription => 'Um movimento que não faz uma cheque nem captura, mas prepara uma ameaça inevitável.'; @override - String get puzzleThemeRookEndgame => 'Finais de Torres'; + String get puzzleThemeRookEndgame => 'Final de torre'; @override - String get puzzleThemeRookEndgameDescription => 'Um final com apenas torres e peões.'; + String get puzzleThemeRookEndgameDescription => 'Um final de jogo com apenas torres e peões.'; @override String get puzzleThemeSacrifice => 'Sacrifício'; @override - String get puzzleThemeSacrificeDescription => 'Uma tática envolvendo a entrega de material no curto prazo, com o objetivo de se obter uma vantagem após uma sequência forçada de movimentos.'; + String get puzzleThemeSacrificeDescription => 'Uma tática que involve abdicar de material a curto prazo, para ganhar uma vantagem após uma sequência forçada de movimentos.'; @override - String get puzzleThemeShort => 'Quebra-cabeças curto'; + String get puzzleThemeShort => 'Problema curto'; @override - String get puzzleThemeShortDescription => 'Vitória em dois lances.'; + String get puzzleThemeShortDescription => 'Duas jogadas para ganhar.'; @override - String get puzzleThemeSkewer => 'Raio X'; + String get puzzleThemeSkewer => 'Cravada inversa'; @override - String get puzzleThemeSkewerDescription => 'Um movimento que envolve uma peça de alto valor sendo atacada fugindo do ataque e permitindo que uma peça de menor valor seja capturada ou atacada, o inverso de cravada.'; + String get puzzleThemeSkewerDescription => 'Uma tática que envolve uma peça de alto valor que está ser atacada, mas ao afastar-se, permite que uma peça de menor valor, que estava atrás dela, seja capturada ou atacada. É o inverso da cravada.'; @override - String get puzzleThemeSmotheredMate => 'Mate de Philidor (mate sufocado)'; + String get puzzleThemeSmotheredMate => 'Mate de Philidor'; @override - String get puzzleThemeSmotheredMateDescription => 'Um xeque-mate dado por um cavalo onde o rei é incapaz de mover-se porque está cercado (ou sufocado) pelas próprias peças.'; + String get puzzleThemeSmotheredMateDescription => 'Uma xeque-mate feito por um cavalo em que o rei não se pode mover porque está rodeado pelas suas próprias peças. Também conhecido como mate sufocado.'; @override - String get puzzleThemeSuperGM => 'Super partidas de GMs'; + String get puzzleThemeSuperGM => 'Jogos de Super GM'; @override - String get puzzleThemeSuperGMDescription => 'Quebra-cabeças de partidas jogadas pelos melhores jogadores do mundo.'; + String get puzzleThemeSuperGMDescription => 'Problemas de partidas jogadas pelos melhores jogadores do mundo.'; @override - String get puzzleThemeTrappedPiece => 'Peça presa'; + String get puzzleThemeTrappedPiece => 'Peça encurralada'; @override - String get puzzleThemeTrappedPieceDescription => 'Uma peça é incapaz de escapar da captura, pois tem movimentos limitados.'; + String get puzzleThemeTrappedPieceDescription => 'Uma peça não consegue escapar à captura, pois tem movimentos limitados.'; @override String get puzzleThemeUnderPromotion => 'Subpromoção'; @override - String get puzzleThemeUnderPromotionDescription => 'Promover para cavalo, bispo ou torre.'; + String get puzzleThemeUnderPromotionDescription => 'Promoção para um cavalo, bispo ou torre.'; @override - String get puzzleThemeVeryLong => 'Quebra-cabeças muito longo'; + String get puzzleThemeVeryLong => 'Problema muito longo'; @override - String get puzzleThemeVeryLongDescription => 'Quatro movimentos ou mais para vencer.'; + String get puzzleThemeVeryLongDescription => 'Quatro jogadas para ganhar.'; @override - String get puzzleThemeXRayAttack => 'Ataque em raio X'; + String get puzzleThemeXRayAttack => 'Ataque raio-X'; @override - String get puzzleThemeXRayAttackDescription => 'Uma peça ataca ou defende uma casa indiretamente, através de uma peça adversária.'; + String get puzzleThemeXRayAttackDescription => 'Uma peça ataque ou defende uma casa através de uma peça inimiga.'; @override String get puzzleThemeZugzwang => 'Zugzwang'; @override - String get puzzleThemeZugzwangDescription => 'O adversário tem os seus movimentos limitados, e qualquer movimento que ele faça vai enfraquecer sua própria posição.'; + String get puzzleThemeZugzwangDescription => 'O adversário está limitado quanto aos seus movimentos, e todas as jogadas pioram a sua posição.'; @override - String get puzzleThemeHealthyMix => 'Combinação saudável'; + String get puzzleThemeHealthyMix => 'Mistura saudável'; @override - String get puzzleThemeHealthyMixDescription => 'Um pouco de tudo. Você nunca sabe o que vai encontrar, então esteja pronto para tudo! Igualzinho aos jogos em tabuleiros reais.'; + String get puzzleThemeHealthyMixDescription => 'Um pouco de tudo. Não sabes o que esperar, então ficas pronto para qualquer coisa! Exatamente como em jogos de verdade.'; @override - String get puzzleThemePlayerGames => 'Partidas de jogadores'; + String get puzzleThemePlayerGames => 'Jogos de jogadores'; @override - String get puzzleThemePlayerGamesDescription => 'Procure quebra-cabeças gerados a partir de suas partidas ou das de outro jogador.'; + String get puzzleThemePlayerGamesDescription => 'Procura problemas gerados a partir dos teus jogos ou de jogos de outro jogador.'; @override String puzzleThemePuzzleDownloadInformation(String param) { - return 'Esses quebra-cabeças estão em domínio público, e você pode baixá-los em $param.'; + return 'Esses problemas são do domínio público e podem ser obtidos em $param.'; } @override - String get searchSearch => 'Buscar'; + String get searchSearch => 'Procurar'; @override String get settingsSettings => 'Configurações'; @override - String get settingsCloseAccount => 'Encerrar conta'; + String get settingsCloseAccount => 'Encerrar a conta'; @override - String get settingsManagedAccountCannotBeClosed => 'Sua conta é gerenciada, e não pode ser encerrada.'; + String get settingsManagedAccountCannotBeClosed => 'A sua conta é gerida e não pode ser encerrada.'; @override - String get settingsClosingIsDefinitive => 'O encerramento é definitivo. Não há como desfazer. Tem certeza?'; + String get settingsClosingIsDefinitive => 'O encerramento é definitivo. Não podes voltar atrás. Tens a certeza?'; @override - String get settingsCantOpenSimilarAccount => 'Você não poderá abrir uma nova conta com o mesmo nome, mesmo que alterne entre maiúsculas e minúsculas.'; + String get settingsCantOpenSimilarAccount => 'Não poderá criar uma nova conta com o mesmo nome, mesmo que as maiúsculas ou minúsculas sejam diferentes.'; @override - String get settingsChangedMindDoNotCloseAccount => 'Eu mudei de ideia, não encerre minha conta'; + String get settingsChangedMindDoNotCloseAccount => 'Mudei de ideias, não encerrem a minha conta'; @override - String get settingsCloseAccountExplanation => 'Tem certeza de que deseja encerrar sua conta? Encerrar sua conta é uma decisão permanente. Você NUNCA MAIS será capaz de entrar com ela novamente.'; + String get settingsCloseAccountExplanation => 'Tens a certeza que queres encerrar sua conta? Encerrar a tua conta é uma decisão permanente. Tu NUNCA MAIS serás capaz de iniciar sessão nesta conta.'; @override String get settingsThisAccountIsClosed => 'Esta conta foi encerrada.'; @override - String get playWithAFriend => 'Jogar contra um amigo'; + String get playWithAFriend => 'Jogar com um amigo'; @override String get playWithTheMachine => 'Jogar contra o computador'; @override - String get toInviteSomeoneToPlayGiveThisUrl => 'Para convidar alguém para jogar, envie este URL'; + String get toInviteSomeoneToPlayGiveThisUrl => 'Para convidares alguém para jogar, envia este URL'; @override String get gameOver => 'Fim da partida'; @@ -1429,13 +1449,13 @@ class AppLocalizationsPt extends AppLocalizations { String get waitingForOpponent => 'Aguardando oponente'; @override - String get orLetYourOpponentScanQrCode => 'Ou deixe seu oponente ler este QR Code'; + String get orLetYourOpponentScanQrCode => 'Ou deixa o teu oponente ler este código QR'; @override - String get waiting => 'Aguardando'; + String get waiting => 'A aguardar'; @override - String get yourTurn => 'Sua vez'; + String get yourTurn => 'É a tua vez'; @override String aiNameLevelAiLevel(String param1, String param2) { @@ -1449,7 +1469,7 @@ class AppLocalizationsPt extends AppLocalizations { String get strength => 'Nível'; @override - String get toggleTheChat => 'Ativar/Desativar chat'; + String get toggleTheChat => 'Ativar/Desativar o chat'; @override String get chat => 'Chat'; @@ -1470,10 +1490,10 @@ class AppLocalizationsPt extends AppLocalizations { String get black => 'Pretas'; @override - String get asWhite => 'de brancas'; + String get asWhite => 'com as brancas'; @override - String get asBlack => 'de pretas'; + String get asBlack => 'com as pretas'; @override String get randomColor => 'Cor aleatória'; @@ -1488,16 +1508,16 @@ class AppLocalizationsPt extends AppLocalizations { String get blackIsVictorious => 'Pretas vencem'; @override - String get youPlayTheWhitePieces => 'Você joga com as peças brancas'; + String get youPlayTheWhitePieces => 'Tu jogas com as peças brancas'; @override - String get youPlayTheBlackPieces => 'Você joga com as peças pretas'; + String get youPlayTheBlackPieces => 'Tu jogas com as peças pretas'; @override - String get itsYourTurn => 'É a sua vez!'; + String get itsYourTurn => 'É a tua vez!'; @override - String get cheatDetected => 'Trapaça Detectada'; + String get cheatDetected => 'Fraude detetada'; @override String get kingInTheCenter => 'Rei no centro'; @@ -1512,22 +1532,22 @@ class AppLocalizationsPt extends AppLocalizations { String get variantEnding => 'Fim da variante'; @override - String get newOpponent => 'Novo oponente'; + String get newOpponent => 'Novo adversário'; @override - String get yourOpponentWantsToPlayANewGameWithYou => 'Seu oponente quer jogar uma nova partida contra você'; + String get yourOpponentWantsToPlayANewGameWithYou => 'O teu adversário quer jogar outra vez contra ti'; @override String get joinTheGame => 'Entrar no jogo'; @override - String get whitePlays => 'Brancas jogam'; + String get whitePlays => 'Jogam as brancas'; @override - String get blackPlays => 'Pretas jogam'; + String get blackPlays => 'Jogam as pretas'; @override - String get opponentLeftChoices => 'O seu oponente deixou a partida. Você pode reivindicar vitória, declarar empate ou aguardar.'; + String get opponentLeftChoices => 'O teu adversário deixou a partida. Podes reivindicar vitória, declarar empate ou aguardar.'; @override String get forceResignation => 'Reivindicar vitória'; @@ -1536,22 +1556,22 @@ class AppLocalizationsPt extends AppLocalizations { String get forceDraw => 'Reivindicar empate'; @override - String get talkInChat => 'Por favor, seja gentil no chat!'; + String get talkInChat => 'Por favor, sê gentil na conversa!'; @override - String get theFirstPersonToComeOnThisUrlWillPlayWithYou => 'A primeira pessoa que acessar esta URL jogará contigo.'; + String get theFirstPersonToComeOnThisUrlWillPlayWithYou => 'A primeira pessoa que aceder a este link jogará contra ti.'; @override - String get whiteResigned => 'Brancas desistiram'; + String get whiteResigned => 'As brancas desistiram'; @override - String get blackResigned => 'Pretas desistiram'; + String get blackResigned => 'As pretas desistiram'; @override - String get whiteLeftTheGame => 'Brancas deixaram a partida'; + String get whiteLeftTheGame => 'As brancas deixaram a partida'; @override - String get blackLeftTheGame => 'Pretas deixaram a partida'; + String get blackLeftTheGame => 'As pretas deixaram a partida'; @override String get whiteDidntMove => 'As brancas não se moveram'; @@ -1560,10 +1580,10 @@ class AppLocalizationsPt extends AppLocalizations { String get blackDidntMove => 'As pretas não se moveram'; @override - String get requestAComputerAnalysis => 'Solicitar uma análise do computador'; + String get requestAComputerAnalysis => 'Solicitar uma análise de computador'; @override - String get computerAnalysis => 'Análise do computador'; + String get computerAnalysis => 'Análise de computador'; @override String get computerAnalysisAvailable => 'Análise de computador disponível'; @@ -1580,22 +1600,22 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get usingServerAnalysis => 'Análise de servidor em uso'; + String get usingServerAnalysis => 'A usar a análise do servidor'; @override - String get loadingEngine => 'Carregando ...'; + String get loadingEngine => 'A carregar o motor de jogo...'; @override - String get calculatingMoves => 'Calculando jogadas...'; + String get calculatingMoves => 'A calcular as jogadas...'; @override - String get engineFailed => 'Erro ao carregar o engine'; + String get engineFailed => 'Erro ao carregar o motor'; @override String get cloudAnalysis => 'Análise na nuvem'; @override - String get goDeeper => 'Detalhar'; + String get goDeeper => 'Aprofundar'; @override String get showThreat => 'Mostrar ameaça'; @@ -1604,37 +1624,37 @@ class AppLocalizationsPt extends AppLocalizations { String get inLocalBrowser => 'no navegador local'; @override - String get toggleLocalEvaluation => 'Ativar/Desativar análise local'; + String get toggleLocalEvaluation => 'Ligar/desligar a avaliação local'; @override String get promoteVariation => 'Promover variante'; @override - String get makeMainLine => 'Transformar em linha principal'; + String get makeMainLine => 'Tornar variante principal'; @override - String get deleteFromHere => 'Excluir a partir daqui'; + String get deleteFromHere => 'Eliminar a partir de aqui'; @override - String get collapseVariations => 'Esconder variantes'; + String get collapseVariations => 'Recolher variações'; @override - String get expandVariations => 'Mostrar variantes'; + String get expandVariations => 'Expandir variações'; @override - String get forceVariation => 'Variante forçada'; + String get forceVariation => 'Forçar variante'; @override - String get copyVariationPgn => 'Copiar PGN da variante'; + String get copyVariationPgn => 'Copiar variação PGN'; @override - String get move => 'Movimentos'; + String get move => 'Jogada'; @override - String get variantLoss => 'Derrota da variante'; + String get variantLoss => 'Variante perdida'; @override - String get variantWin => 'Vitória da variante'; + String get variantWin => 'Variante ganha'; @override String get insufficientMaterial => 'Material insuficiente'; @@ -1649,26 +1669,26 @@ class AppLocalizationsPt extends AppLocalizations { String get close => 'Fechar'; @override - String get winning => 'Vencendo'; + String get winning => 'Ganhas'; @override - String get losing => 'Perdendo'; + String get losing => 'Perdidas'; @override - String get drawn => 'Empate'; + String get drawn => 'Empatado'; @override - String get unknown => 'Posição desconhecida'; + String get unknown => 'Desconhecidos'; @override - String get database => 'Banco de Dados'; + String get database => 'Base de dados'; @override String get whiteDrawBlack => 'Brancas / Empate / Pretas'; @override String averageRatingX(String param) { - return 'Classificação média: $param'; + return 'Pontuação média: $param'; } @override @@ -1679,20 +1699,20 @@ class AppLocalizationsPt extends AppLocalizations { @override String masterDbExplanation(String param1, String param2, String param3) { - return 'Duas milhões de partidas de jogadores com pontuação FIDE acima de $param1, desde $param2 a $param3'; + return 'de partidas OTB de jogadores com +$param1 rating FIDE de $param2 a $param3'; } @override - String get dtzWithRounding => 'DTZ50\" com arredondamento, baseado no número de meias-jogadas até a próxima captura ou jogada de peão'; + String get dtzWithRounding => 'DTZ50\'\' com arredondamento, baseado no número de meios-movimentos até à próxima captura ou movimento de peão'; @override - String get noGameFound => 'Nenhuma partida encontrada'; + String get noGameFound => 'Nenhum jogo encontrado'; @override - String get maxDepthReached => 'Profundidade máxima alcançada!'; + String get maxDepthReached => 'Nível máximo alcançado!'; @override - String get maybeIncludeMoreGamesFromThePreferencesMenu => 'Talvez você queira incluir mais jogos a partir do menu de preferências'; + String get maybeIncludeMoreGamesFromThePreferencesMenu => 'Talvez incluir mais jogos no menu de preferências?'; @override String get openings => 'Aberturas'; @@ -1705,47 +1725,47 @@ class AppLocalizationsPt extends AppLocalizations { @override String xOpeningExplorer(String param) { - return '$param Explorador de aberturas'; + return 'Explorador de aberturas de $param'; } @override - String get playFirstOpeningEndgameExplorerMove => 'Jogue o primeiro lance do explorador de aberturas/finais'; + String get playFirstOpeningEndgameExplorerMove => 'Jogar o primeiro lance do explorador de aberturas/finais'; @override String get winPreventedBy50MoveRule => 'Vitória impedida pela regra dos 50 movimentos'; @override - String get lossSavedBy50MoveRule => 'Derrota impedida pela regra dos 50 movimentos'; + String get lossSavedBy50MoveRule => 'Derrota evitada pela regra dos 50 movimentos'; @override - String get winOr50MovesByPriorMistake => 'Vitória ou 50 movimentos por erro anterior'; + String get winOr50MovesByPriorMistake => 'Vitória ou 50 movimentos por engano anterior'; @override - String get lossOr50MovesByPriorMistake => 'Derrota ou 50 movimentos por erro anterior'; + String get lossOr50MovesByPriorMistake => 'Vitória ou 50 movimentos por engano anterior'; @override - String get unknownDueToRounding => 'Vitória/derrota garantida somente se a variante recomendada tiver sido seguida desde o último movimento de captura ou de peão, devido ao possível arredondamento.'; + String get unknownDueToRounding => 'Vitória/derrota garantida apenas se a linha da tabela recomendada tiver sido seguida desde a última captura ou movimento de peão, devido a possível arredondamento.'; @override - String get allSet => 'Tudo pronto!'; + String get allSet => 'Tudo a postos!'; @override String get importPgn => 'Importar PGN'; @override - String get delete => 'Excluir'; + String get delete => 'Eliminar'; @override - String get deleteThisImportedGame => 'Excluir este jogo importado?'; + String get deleteThisImportedGame => 'Eliminar este jogo importado?'; @override - String get replayMode => 'Rever a partida'; + String get replayMode => 'Modo de repetição'; @override - String get realtimeReplay => 'Tempo Real'; + String get realtimeReplay => 'Tempo real'; @override - String get byCPL => 'Por erros'; + String get byCPL => 'Por CPL'; @override String get openStudy => 'Abrir estudo'; @@ -1757,13 +1777,13 @@ class AppLocalizationsPt extends AppLocalizations { String get bestMoveArrow => 'Seta de melhor movimento'; @override - String get showVariationArrows => 'Mostrar setas das variantes'; + String get showVariationArrows => 'Ver setas de variação'; @override - String get evaluationGauge => 'Escala de avaliação'; + String get evaluationGauge => 'Medidor da avaliação'; @override - String get multipleLines => 'Linhas de análise'; + String get multipleLines => 'Múltiplas continuações'; @override String get cpus => 'CPUs'; @@ -1775,13 +1795,13 @@ class AppLocalizationsPt extends AppLocalizations { String get infiniteAnalysis => 'Análise infinita'; @override - String get removesTheDepthLimit => 'Remove o limite de profundidade, o que aquece seu computador'; + String get removesTheDepthLimit => 'Remove o limite de profundidade e mantém o teu computador quente'; @override - String get engineManager => 'Gerenciador de engine'; + String get engineManager => 'Gestão do motor'; @override - String get blunder => 'Capivarada'; + String get blunder => 'Erro grave'; @override String get mistake => 'Erro'; @@ -1790,16 +1810,16 @@ class AppLocalizationsPt extends AppLocalizations { String get inaccuracy => 'Imprecisão'; @override - String get moveTimes => 'Tempo por movimento'; + String get moveTimes => 'Tempo das jogadas'; @override - String get flipBoard => 'Girar o tabuleiro'; + String get flipBoard => 'Inverter o tabuleiro'; @override - String get threefoldRepetition => 'Tripla repetição'; + String get threefoldRepetition => 'Repetição tripla'; @override - String get claimADraw => 'Reivindicar empate'; + String get claimADraw => 'Declarar empate'; @override String get offerDraw => 'Propor empate'; @@ -1814,7 +1834,7 @@ class AppLocalizationsPt extends AppLocalizations { String get fiftyMovesWithoutProgress => 'Cinquenta jogadas sem progresso'; @override - String get currentGames => 'Partidas atuais'; + String get currentGames => 'Partidas a decorrer'; @override String get viewInFullSize => 'Ver em tela cheia'; @@ -1826,16 +1846,16 @@ class AppLocalizationsPt extends AppLocalizations { String get signIn => 'Entrar'; @override - String get rememberMe => 'Lembrar de mim'; + String get rememberMe => 'Lembrar-me'; @override - String get youNeedAnAccountToDoThat => 'Você precisa de uma conta para fazer isso'; + String get youNeedAnAccountToDoThat => 'Precisas de uma conta para fazeres isso'; @override - String get signUp => 'Registrar'; + String get signUp => 'Registar-se'; @override - String get computersAreNotAllowedToPlay => 'A ajuda de software não é permitida. Por favor, não utilize programas de xadrez, bancos de dados ou o auxilio de outros jogadores durante a partida. Além disso, a criação de múltiplas contas é fortemente desaconselhada e sua prática excessiva acarretará em banimento.'; + String get computersAreNotAllowedToPlay => 'Computadores ou jogadores assistidos por computador não estão autorizados a jogar. Por favor não utilizes assistência de programas de xadrez, bases de dados ou outros jogadores enquanto estiveres a jogar. Além disso, a criação de contas múltiplas é fortemente desencorajada e a sua prática excessiva acarretará banimento.'; @override String get games => 'Partidas'; @@ -1858,7 +1878,10 @@ class AppLocalizationsPt extends AppLocalizations { String get friends => 'Amigos'; @override - String get discussions => 'Discussões'; + String get otherPlayers => 'other players'; + + @override + String get discussions => 'Conversas'; @override String get today => 'Hoje'; @@ -1876,10 +1899,10 @@ class AppLocalizationsPt extends AppLocalizations { String get variants => 'Variantes'; @override - String get timeControl => 'Ritmo'; + String get timeControl => 'Ritmo de jogo'; @override - String get realTime => 'Tempo real'; + String get realTime => 'Em tempo real'; @override String get correspondence => 'Correspondência'; @@ -1894,37 +1917,37 @@ class AppLocalizationsPt extends AppLocalizations { String get time => 'Tempo'; @override - String get rating => 'Rating'; + String get rating => 'Pontuação'; @override - String get ratingStats => 'Estatísticas de classificação'; + String get ratingStats => 'Estatísticas de pontuação'; @override - String get username => 'Nome de usuário'; + String get username => 'Nome de utilizador'; @override - String get usernameOrEmail => 'Nome ou email do usuário'; + String get usernameOrEmail => 'Nome ou e-mail do utilizador'; @override - String get changeUsername => 'Alterar nome de usuário'; + String get changeUsername => 'Alterar o nome de utilizador'; @override - String get changeUsernameNotSame => 'Pode-se apenas trocar as letras de minúscula para maiúscula e vice-versa. Por exemplo, \"fulanodetal\" para \"FulanoDeTal\".'; + String get changeUsernameNotSame => 'Só te é permitido trocar as letras de minúscula para maiúscula e vice-versa. Por exemplo, \"johndoe\" para \"JohnDoe\".'; @override - String get changeUsernameDescription => 'Altere seu nome de usuário. Isso só pode ser feito uma vez e você poderá apenas trocar as letras de minúscula para maiúscula e vice-versa.'; + String get changeUsernameDescription => 'Altera o teu nome de utilizador. Isso só pode ser feito uma vez e só poderás trocar as letras de minúscula para maiúscula e vice-versa.'; @override - String get signupUsernameHint => 'Escolha um nome de usuário apropriado. Não será possível mudá-lo, e qualquer conta que tiver um nome ofensivo ou inapropriado será excluída!'; + String get signupUsernameHint => 'Certifique-se que escolhe um nome de utilizador decoroso. Não poderá alterá-lo mais tarde e quaisquer contas com nomes de utilizador inapropriados serão fechadas!'; @override - String get signupEmailHint => 'Vamos usar apenas para redefinir a sua senha.'; + String get signupEmailHint => 'Só o usaremos para redefinir a palavra-passe.'; @override - String get password => 'Senha'; + String get password => 'Palavra-passe'; @override - String get changePassword => 'Alterar senha'; + String get changePassword => 'Alterar a palavra-passe'; @override String get changeEmail => 'Alterar email'; @@ -1933,45 +1956,45 @@ class AppLocalizationsPt extends AppLocalizations { String get email => 'E-mail'; @override - String get passwordReset => 'Redefinição de senha'; + String get passwordReset => 'Redefinir a palavra-passe'; @override - String get forgotPassword => 'Esqueceu sua senha?'; + String get forgotPassword => 'Esqueceste-te da tua palavra-passe?'; @override - String get error_weakPassword => 'A senha é extremamente comum e fácil de adivinhar.'; + String get error_weakPassword => 'Esta senha é extremamente comum, e muito fácil de adivinhar.'; @override - String get error_namePassword => 'Não utilize seu nome de usuário como senha.'; + String get error_namePassword => 'Por favor, não usa o teu nome de utilizador como senha.'; @override - String get blankedPassword => 'Você usou a mesma senha em outro site, e esse site foi comprometido. Para garantir a segurança da sua conta no Lichess, você precisa criar uma nova senha. Agradecemos sua compreensão.'; + String get blankedPassword => 'Utilizou a mesma palavra-passe noutro site, e esse site foi comprometido. Para garantir a segurança da sua conta Lichess, precisamos que redefina a palavra-passe. Obrigado pela compreensão.'; @override - String get youAreLeavingLichess => 'Você está saindo do Lichess'; + String get youAreLeavingLichess => 'Você está a sair do Lichess'; @override - String get neverTypeYourPassword => 'Nunca digite sua senha do Lichess em outro site!'; + String get neverTypeYourPassword => 'Nunca escrevas a tua senha Lichess em outro site!'; @override String proceedToX(String param) { - return 'Ir para $param'; + return 'Continuar para $param'; } @override - String get passwordSuggestion => 'Não coloque uma senha sugerida por outra pessoa, porque ela poderá roubar sua conta.'; + String get passwordSuggestion => 'Não uses uma senha sugerida por outra pessoa. Eles vão utilizar-la para roubar a tua conta.'; @override - String get emailSuggestion => 'Não coloque um endereço de email sugerido por outra pessoa, porque ela poderá roubar sua conta.'; + String get emailSuggestion => 'Não uses um email sugerida por outra pessoa. Eles vão utilizar-la para roubar a tua conta.'; @override - String get emailConfirmHelp => 'Ajuda com confirmação por e-mail'; + String get emailConfirmHelp => 'Ajuda com a confirmação do endereço eletrónico'; @override - String get emailConfirmNotReceived => 'Não recebeu seu e-mail de confirmação após o registro?'; + String get emailConfirmNotReceived => 'Não recebeu no seu correio eletrónico uma mensagem de confirmação após o registo?'; @override - String get whatSignupUsername => 'Qual nome de usuário você usou para se registrar?'; + String get whatSignupUsername => 'Que nome de utilizador usou para se registar?'; @override String usernameNotFound(String param) { @@ -1979,24 +2002,24 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get usernameCanBeUsedForNewAccount => 'Você pode usar esse nome de usuário para criar uma nova conta'; + String get usernameCanBeUsedForNewAccount => 'Pode usar esse nome de utilizador para criar uma conta'; @override String emailSent(String param) { - return 'Enviamos um e-mail para $param.'; + return 'Enviámos um correio eletrónico para $param.'; } @override - String get emailCanTakeSomeTime => 'Pode levar algum tempo para chegar.'; + String get emailCanTakeSomeTime => 'Pode demorar algum tempo a chegar.'; @override - String get refreshInboxAfterFiveMinutes => 'Aguarde 5 minutos e atualize sua caixa de entrada.'; + String get refreshInboxAfterFiveMinutes => 'Aguarde 5 minutos e atualize a sua caixa de entrada de correio eletrónico.'; @override - String get checkSpamFolder => 'Verifique também a sua caixa de spam. Caso esteja lá, marque como não é spam.'; + String get checkSpamFolder => 'Verifique também a sua pasta de “spam”, pode estar lá. Se sim, assinale como não “spam”.'; @override - String get emailForSignupHelp => 'Se todo o resto falhar, envie-nos este e-mail:'; + String get emailForSignupHelp => 'Se tudo falhar, então envie-nos este correio eletrónico:'; @override String copyTextToEmail(String param) { @@ -2004,20 +2027,20 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get waitForSignupHelp => 'Entraremos em contato em breve para ajudá-lo a completar seu registro.'; + String get waitForSignupHelp => 'Nós entraremos brevemente em contacto para ajudá-lo a completar a inscrição.'; @override String accountConfirmed(String param) { - return 'O usuário $param foi confirmado com sucesso.'; + return 'O utilizador $param foi confirmado com sucesso.'; } @override String accountCanLogin(String param) { - return 'Você pode acessar agora como $param.'; + return 'Pode agora aceder como $param.'; } @override - String get accountConfirmationEmailNotNeeded => 'Você não precisa de um e-mail de confirmação.'; + String get accountConfirmationEmailNotNeeded => 'Não precisa de um endereço eletrónico de confirmação.'; @override String accountClosed(String param) { @@ -2026,52 +2049,52 @@ class AppLocalizationsPt extends AppLocalizations { @override String accountRegisteredWithoutEmail(String param) { - return 'A conta $param foi registrada sem um e-mail.'; + return 'A conta $param foi registada sem um endereço eletrónico.'; } @override - String get rank => 'Rank'; + String get rank => 'Classificação'; @override String rankX(String param) { - return 'Classificação: $param'; + return 'Posição: $param'; } @override - String get gamesPlayed => 'Partidas realizadas'; + String get gamesPlayed => 'Partidas jogadas'; @override String get cancel => 'Cancelar'; @override - String get whiteTimeOut => 'Tempo das brancas esgotado'; + String get whiteTimeOut => 'Acabou o tempo das brancas'; @override - String get blackTimeOut => 'Tempo das pretas esgotado'; + String get blackTimeOut => 'Acabou o tempo das pretas'; @override String get drawOfferSent => 'Proposta de empate enviada'; @override - String get drawOfferAccepted => 'Proposta de empate aceita'; + String get drawOfferAccepted => 'Proposta de empate aceite'; @override String get drawOfferCanceled => 'Proposta de empate cancelada'; @override - String get whiteOffersDraw => 'Brancas oferecem empate'; + String get whiteOffersDraw => 'As brancas propõem empate'; @override - String get blackOffersDraw => 'Pretas oferecem empate'; + String get blackOffersDraw => 'As pretas propõem empate'; @override - String get whiteDeclinesDraw => 'Brancas recusam empate'; + String get whiteDeclinesDraw => 'As brancas recusam o empate'; @override - String get blackDeclinesDraw => 'Pretas recusam empate'; + String get blackDeclinesDraw => 'As pretas recusam o empate'; @override - String get yourOpponentOffersADraw => 'Seu adversário oferece empate'; + String get yourOpponentOffersADraw => 'O teu adversário propõe empate'; @override String get accept => 'Aceitar'; @@ -2080,16 +2103,16 @@ class AppLocalizationsPt extends AppLocalizations { String get decline => 'Recusar'; @override - String get playingRightNow => 'Jogando agora'; + String get playingRightNow => 'A jogar agora'; @override - String get eventInProgress => 'Jogando agora'; + String get eventInProgress => 'A decorrer agora'; @override String get finished => 'Terminado'; @override - String get abortGame => 'Cancelar partida'; + String get abortGame => 'Cancelar a partida'; @override String get gameAborted => 'Partida cancelada'; @@ -2107,64 +2130,64 @@ class AppLocalizationsPt extends AppLocalizations { String get mode => 'Modo'; @override - String get casual => 'Amistosa'; + String get casual => 'Amigável'; @override - String get rated => 'Ranqueada'; + String get rated => 'A valer pontos'; @override - String get casualTournament => 'Amistoso'; + String get casualTournament => 'Amigável'; @override - String get ratedTournament => 'Valendo pontos'; + String get ratedTournament => 'A valer pontos'; @override String get thisGameIsRated => 'Esta partida vale pontos'; @override - String get rematch => 'Revanche'; + String get rematch => 'Desforra'; @override - String get rematchOfferSent => 'Oferta de revanche enviada'; + String get rematchOfferSent => 'Pedido de desforra enviado'; @override - String get rematchOfferAccepted => 'Oferta de revanche aceita'; + String get rematchOfferAccepted => 'Pedido de desforra aceite'; @override - String get rematchOfferCanceled => 'Oferta de revanche cancelada'; + String get rematchOfferCanceled => 'Pedido de desforra cancelado'; @override - String get rematchOfferDeclined => 'Oferta de revanche recusada'; + String get rematchOfferDeclined => 'Pedido de desforra recusado'; @override - String get cancelRematchOffer => 'Cancelar oferta de revanche'; + String get cancelRematchOffer => 'Cancelar o pedido de desforra'; @override - String get viewRematch => 'Ver revanche'; + String get viewRematch => 'Ver a desforra'; @override - String get confirmMove => 'Confirmar lance'; + String get confirmMove => 'Confirmar o lance'; @override String get play => 'Jogar'; @override - String get inbox => 'Mensagens'; + String get inbox => 'Caixa de entrada'; @override String get chatRoom => 'Sala de chat'; @override - String get loginToChat => 'Faça login para conversar'; + String get loginToChat => 'Inicia sessão para poderes conversar'; @override - String get youHaveBeenTimedOut => 'Sua sessão expirou.'; + String get youHaveBeenTimedOut => 'Foste impedido de conversar por agora.'; @override - String get spectatorRoom => 'Sala do espectador'; + String get spectatorRoom => 'Sala dos espectadores'; @override - String get composeMessage => 'Escrever mensagem'; + String get composeMessage => 'Escrever uma mensagem'; @override String get subject => 'Assunto'; @@ -2173,7 +2196,7 @@ class AppLocalizationsPt extends AppLocalizations { String get send => 'Enviar'; @override - String get incrementInSeconds => 'Acréscimo em segundos'; + String get incrementInSeconds => 'Incremento em segundos'; @override String get freeOnlineChess => 'Xadrez Online Gratuito'; @@ -2182,34 +2205,34 @@ class AppLocalizationsPt extends AppLocalizations { String get exportGames => 'Exportar partidas'; @override - String get ratingRange => 'Rating entre'; + String get ratingRange => 'Pontuação entre'; @override - String get thisAccountViolatedTos => 'Esta conta violou os Termos de Serviço do Lichess'; + String get thisAccountViolatedTos => 'Esta conta violou os termos de serviço do Lichess'; @override - String get openingExplorerAndTablebase => 'Explorador de abertura & tabela de finais'; + String get openingExplorerAndTablebase => 'Explorador de aberturas & tabelas de finais'; @override - String get takeback => 'Voltar jogada'; + String get takeback => 'Voltar uma jogada atrás'; @override - String get proposeATakeback => 'Propor voltar jogada'; + String get proposeATakeback => 'Propor voltar uma jogada atrás'; @override - String get takebackPropositionSent => 'Proposta de voltar jogada enviada'; + String get takebackPropositionSent => 'Proposta de voltar uma jogada atrás enviada'; @override - String get takebackPropositionDeclined => 'Proposta de voltar jogada recusada'; + String get takebackPropositionDeclined => 'Proposta de voltar uma jogada atrás recusada'; @override - String get takebackPropositionAccepted => 'Proposta de voltar jogada aceita'; + String get takebackPropositionAccepted => 'Proposta de voltar uma jogada atrás aceite'; @override - String get takebackPropositionCanceled => 'Proposta de voltar jogada cancelada'; + String get takebackPropositionCanceled => 'Proposta de voltar uma jogada atrás cancelada'; @override - String get yourOpponentProposesATakeback => 'Seu oponente propõe voltar jogada'; + String get yourOpponentProposesATakeback => 'O teu adversário propõe voltar uma jogada atrás'; @override String get bookmarkThisGame => 'Adicionar esta partida às favoritas'; @@ -2221,38 +2244,38 @@ class AppLocalizationsPt extends AppLocalizations { String get tournaments => 'Torneios'; @override - String get tournamentPoints => 'Pontos de torneios'; + String get tournamentPoints => 'Pontos de torneio'; @override - String get viewTournament => 'Ver torneio'; + String get viewTournament => 'Ver o torneio'; @override String get backToTournament => 'Voltar ao torneio'; @override - String get noDrawBeforeSwissLimit => 'Não é possível empatar antes de 30 lances em um torneio suíço.'; + String get noDrawBeforeSwissLimit => 'Num torneio suíço não pode empatar antes de 30 jogadas.'; @override String get thematic => 'Temático'; @override String yourPerfRatingIsProvisional(String param) { - return 'Seu rating $param é provisório'; + return 'A tua pontuação em $param é provisória'; } @override String yourPerfRatingIsTooHigh(String param1, String param2) { - return 'Seu $param1 rating ($param2) é muito alta'; + return 'A tua pontuação em $param1 ($param2) é demasiado alta'; } @override String yourTopWeeklyPerfRatingIsTooHigh(String param1, String param2) { - return 'Seu melhor rating $param1 da semana ($param2) é muito alto'; + return 'A tua pontuação máxima nesta semana em $param1 ($param2) é demasiado alta'; } @override String yourPerfRatingIsTooLow(String param1, String param2) { - return 'Sua $param1 pontuação ($param2) é muito baixa'; + return 'A tua pontuação em $param1 ($param2) é demasiado baixa'; } @override @@ -2267,40 +2290,40 @@ class AppLocalizationsPt extends AppLocalizations { @override String mustBeInTeam(String param) { - return 'Precisa estar na equipe $param'; + return 'Tens de pertencer à equipa $param'; } @override String youAreNotInTeam(String param) { - return 'Você não está na equipe $param'; + return 'Não estás na equipa $param'; } @override - String get backToGame => 'Retorne à partida'; + String get backToGame => 'Voltar à partida'; @override - String get siteDescription => 'Xadrez online gratuito. Jogue xadrez agora numa interface simples. Sem registro, sem anúncios, sem plugins. Jogue xadrez contra computador, amigos ou adversários aleatórios.'; + String get siteDescription => 'Xadrez online gratuito. Joga xadrez numa interface simples. Sem registos, sem anúncios, sem plugins. Joga xadrez com o computador, amigos ou adversários aleatórios.'; @override String xJoinedTeamY(String param1, String param2) { - return '$param1 juntou-se à equipe $param2'; + return '$param1 juntou-se à equipa $param2'; } @override String xCreatedTeamY(String param1, String param2) { - return '$param1 criou a equipe $param2'; + return '$param1 criou a equipa $param2'; } @override - String get startedStreaming => 'começou uma transmissão ao vivo'; + String get startedStreaming => 'começou uma stream'; @override String xStartedStreaming(String param) { - return '$param começou a transmitir'; + return '$param começou uma stream'; } @override - String get averageElo => 'Média de rating'; + String get averageElo => 'Pontuação média'; @override String get location => 'Localização'; @@ -2309,70 +2332,70 @@ class AppLocalizationsPt extends AppLocalizations { String get filterGames => 'Filtrar partidas'; @override - String get reset => 'Reiniciar'; + String get reset => 'Voltar ao original'; @override String get apply => 'Aplicar'; @override - String get save => 'Salvar'; + String get save => 'Guardar'; @override - String get leaderboard => 'Classificação'; + String get leaderboard => 'Tabela de liderança'; @override - String get screenshotCurrentPosition => 'Captura de tela da posição atual'; + String get screenshotCurrentPosition => 'Posição atual da captura de ecrã'; @override - String get gameAsGIF => 'Salvar a partida como GIF'; + String get gameAsGIF => 'Jogo como GIF'; @override - String get pasteTheFenStringHere => 'Cole a notação FEN aqui'; + String get pasteTheFenStringHere => 'Coloca a notação FEN aqui'; @override - String get pasteThePgnStringHere => 'Cole a notação PGN aqui'; + String get pasteThePgnStringHere => 'Coloca a notação PGN aqui'; @override - String get orUploadPgnFile => 'Ou carregue um arquivo PGN'; + String get orUploadPgnFile => 'Ou enviar um ficheiro PGN'; @override - String get fromPosition => 'A partir da posição'; + String get fromPosition => 'A partir de uma posição'; @override - String get continueFromHere => 'Continuar daqui'; + String get continueFromHere => 'Continuar a partir daqui'; @override String get toStudy => 'Estudo'; @override - String get importGame => 'Importar partida'; + String get importGame => 'Importar uma partida'; @override - String get importGameExplanation => 'Após colar uma partida em PGN você poderá revisá-la interativamente, consultar uma análise de computador, utilizar o chat e compartilhar um link.'; + String get importGameExplanation => 'Coloca aqui o PGN de um jogo, para teres acesso a navegar pela repetição,\nanálise de computador, sala de chat do jogo e link de partilha.'; @override - String get importGameCaveat => 'As variantes serão apagadas. Para salvá-las, importe o PGN em um estudo.'; + String get importGameCaveat => 'As variações serão apagadas. Para mantê-las, importe o PGN através de um estudo.'; @override - String get importGameDataPrivacyWarning => 'Este PGN pode ser acessado publicamente. Use um estudo para importar um jogo privado.'; + String get importGameDataPrivacyWarning => 'Este PGN pode ser acessada pelo público. Para importar um jogo de forma privada, use um estudo.'; @override - String get thisIsAChessCaptcha => 'Este é um CAPTCHA enxadrístico.'; + String get thisIsAChessCaptcha => 'Este é um \"CAPTCHA\" de xadrez.'; @override - String get clickOnTheBoardToMakeYourMove => 'Clique no tabuleiro para fazer seu lance, provando que é humano.'; + String get clickOnTheBoardToMakeYourMove => 'Clica no tabuleiro para fazeres a tua jogada, provando que és humano.'; @override - String get captcha_fail => 'Por favor, resolva o captcha enxadrístico.'; + String get captcha_fail => 'Por favor, resolve o captcha.'; @override - String get notACheckmate => 'Não é xeque-mate'; + String get notACheckmate => 'Não é xeque-mate.'; @override - String get whiteCheckmatesInOneMove => 'As brancas dão mate em um lance'; + String get whiteCheckmatesInOneMove => 'As brancas dão mate em um movimento'; @override - String get blackCheckmatesInOneMove => 'As pretas dão mate em um lance'; + String get blackCheckmatesInOneMove => 'As pretas dão mate em um movimento'; @override String get retry => 'Tentar novamente'; @@ -2381,7 +2404,7 @@ class AppLocalizationsPt extends AppLocalizations { String get reconnecting => 'Reconectando'; @override - String get noNetwork => 'Sem conexão'; + String get noNetwork => 'Desligado'; @override String get favoriteOpponents => 'Adversários favoritos'; @@ -2390,10 +2413,10 @@ class AppLocalizationsPt extends AppLocalizations { String get follow => 'Seguir'; @override - String get following => 'Seguindo'; + String get following => 'A seguir'; @override - String get unfollow => 'Parar de seguir'; + String get unfollow => 'Deixar de seguir'; @override String followX(String param) { @@ -2415,7 +2438,7 @@ class AppLocalizationsPt extends AppLocalizations { String get unblock => 'Desbloquear'; @override - String get followsYou => 'Segue você'; + String get followsYou => 'Segue-te'; @override String xStartedFollowingY(String param1, String param2) { @@ -2455,13 +2478,13 @@ class AppLocalizationsPt extends AppLocalizations { String get winner => 'Vencedor'; @override - String get standing => 'Colocação'; + String get standing => 'Classificação'; @override - String get createANewTournament => 'Criar novo torneio'; + String get createANewTournament => 'Criar um torneio'; @override - String get tournamentCalendar => 'Calendário do torneio'; + String get tournamentCalendar => 'Calendário de torneios'; @override String get conditionOfEntry => 'Condições de participação:'; @@ -2470,16 +2493,16 @@ class AppLocalizationsPt extends AppLocalizations { String get advancedSettings => 'Configurações avançadas'; @override - String get safeTournamentName => 'Escolha um nome seguro para o torneio.'; + String get safeTournamentName => 'Escolhe um nome totalmente seguro para o torneio.'; @override - String get inappropriateNameWarning => 'Até mesmo a menor indecência poderia ensejar o encerramento de sua conta.'; + String get inappropriateNameWarning => 'Até uma linguagem ligeiramente inadequada pode levar ao encerramento da tua conta.'; @override - String get emptyTournamentName => 'Deixe em branco para dar ao torneio o nome de um grande mestre aleatório.'; + String get emptyTournamentName => 'Deixe em branco e será atribuído um nome aleatório de um jogador notável ao torneio.'; @override - String get makePrivateTournament => 'Faça o torneio privado e restrinja o acesso com uma senha'; + String get makePrivateTournament => 'Torna o torneio privado e restrinje o acesso com uma palavra-passe'; @override String get join => 'Entrar'; @@ -2500,71 +2523,71 @@ class AppLocalizationsPt extends AppLocalizations { String get createdBy => 'Criado por'; @override - String get tournamentIsStarting => 'O torneio está começando'; + String get tournamentIsStarting => 'O torneio está a começar'; @override - String get tournamentPairingsAreNowClosed => 'Os pareamentos do torneio estão fechados agora.'; + String get tournamentPairingsAreNowClosed => 'Os emparelhamentos no torneio já estão fechados.'; @override String standByX(String param) { - return '$param, aguarde: o pareamento está em andamento, prepare-se!'; + return 'Aguarda $param, estamos a emparelhar jogadores, prepara-te!'; } @override - String get pause => 'Pausar'; + String get pause => 'Pausa'; @override String get resume => 'Continuar'; @override - String get youArePlaying => 'Você está participando!'; + String get youArePlaying => 'Estás a jogar!'; @override String get winRate => 'Taxa de vitórias'; @override - String get berserkRate => 'Taxa Berserk'; + String get berserkRate => 'Taxa de partidas no modo frenético'; @override String get performance => 'Desempenho'; @override - String get tournamentComplete => 'Torneio completo'; + String get tournamentComplete => 'Torneio terminado'; @override - String get movesPlayed => 'Movimentos realizados'; + String get movesPlayed => 'Movimentos feitos'; @override - String get whiteWins => 'Brancas venceram'; + String get whiteWins => 'Vitórias com as brancas'; @override - String get blackWins => 'Pretas venceram'; + String get blackWins => 'Vitórias com as pretas'; @override - String get drawRate => 'Taxa de empates'; + String get drawRate => 'Taxa de empate'; @override String get draws => 'Empates'; @override String nextXTournament(String param) { - return 'Próximo torneio $param:'; + return 'Próximo torneio de $param:'; } @override - String get averageOpponent => 'Pontuação média adversários'; + String get averageOpponent => 'Pontuação média dos adversários'; @override String get boardEditor => 'Editor de tabuleiro'; @override - String get setTheBoard => 'Defina a posição'; + String get setTheBoard => 'Partilha o tabuleiro'; @override String get popularOpenings => 'Aberturas populares'; @override - String get endgamePositions => 'Posições de final'; + String get endgamePositions => 'Posições finais'; @override String chess960StartPosition(String param) { @@ -2575,10 +2598,10 @@ class AppLocalizationsPt extends AppLocalizations { String get startPosition => 'Posição inicial'; @override - String get clearBoard => 'Limpar tabuleiro'; + String get clearBoard => 'Limpar o tabuleiro'; @override - String get loadPosition => 'Carregar posição'; + String get loadPosition => 'Carregar uma posição'; @override String get isPrivate => 'Privado'; @@ -2590,34 +2613,34 @@ class AppLocalizationsPt extends AppLocalizations { @override String profileCompletion(String param) { - return 'Conclusão do perfil: $param'; + return 'Perfil completo: $param'; } @override String xRating(String param) { - return 'Rating $param'; + return 'Pontuação $param'; } @override - String get ifNoneLeaveEmpty => 'Se nenhuma, deixe vazio'; + String get ifNoneLeaveEmpty => 'Se não existir, deixa em branco'; @override String get profile => 'Perfil'; @override - String get editProfile => 'Editar perfil'; + String get editProfile => 'Editar o perfil'; @override - String get realName => 'Nome real'; + String get realName => 'Nome Real'; @override - String get setFlair => 'Escolha seu emote'; + String get setFlair => 'Defina o teu estilo'; @override String get flair => 'Estilo'; @override - String get youCanHideFlair => 'Você pode esconder todos os emotes de usuário no site.'; + String get youCanHideFlair => 'Há uma opção para ocultar todos os estilos dos utilizadores em todo o site.'; @override String get biography => 'Biografia'; @@ -2629,22 +2652,22 @@ class AppLocalizationsPt extends AppLocalizations { String get thankYou => 'Obrigado!'; @override - String get socialMediaLinks => 'Links de mídia social'; + String get socialMediaLinks => 'Links das redes sociais'; @override - String get oneUrlPerLine => 'Uma URL por linha.'; + String get oneUrlPerLine => 'Um URL por linha.'; @override - String get inlineNotation => 'Notação em linha'; + String get inlineNotation => 'Anotações em linha'; @override - String get makeAStudy => 'Para salvar e compartilhar uma análise, crie um estudo.'; + String get makeAStudy => 'Para guardar e partilhar, considere fazer um estudo.'; @override - String get clearSavedMoves => 'Limpar lances'; + String get clearSavedMoves => 'Limpar jogadas'; @override - String get previouslyOnLichessTV => 'Anteriormente em Lichess TV'; + String get previouslyOnLichessTV => 'Anteriormente na TV Lichess'; @override String get onlinePlayers => 'Jogadores online'; @@ -2653,19 +2676,19 @@ class AppLocalizationsPt extends AppLocalizations { String get activePlayers => 'Jogadores ativos'; @override - String get bewareTheGameIsRatedButHasNoClock => 'Cuidado, o jogo vale rating, mas não há controle de tempo!'; + String get bewareTheGameIsRatedButHasNoClock => 'Cuidado, o jogo vale pontos, mas não há limite de tempo!'; @override String get success => 'Sucesso'; @override - String get automaticallyProceedToNextGameAfterMoving => 'Passar automaticamente ao jogo seguinte após o lance'; + String get automaticallyProceedToNextGameAfterMoving => 'Passar automaticamente ao jogo seguinte após a jogada'; @override String get autoSwitch => 'Alternar automaticamente'; @override - String get puzzles => 'Quebra-cabeças'; + String get puzzles => 'Problemas'; @override String get onlineBots => 'Bots online'; @@ -2680,7 +2703,7 @@ class AppLocalizationsPt extends AppLocalizations { String get descPrivate => 'Descrição privada'; @override - String get descPrivateHelp => 'Texto que apenas os membros da equipe verão. Se definido, substitui a descrição pública para os membros da equipe.'; + String get descPrivateHelp => 'Texto que apenas está visível para os membros da equipa. Se definido, substitui a descrição pública dos membros da equipa.'; @override String get no => 'Não'; @@ -2688,11 +2711,17 @@ class AppLocalizationsPt extends AppLocalizations { @override String get yes => 'Sim'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Ajuda:'; @override - String get createANewTopic => 'Criar novo tópico'; + String get createANewTopic => 'Criar um novo tópico'; @override String get topics => 'Tópicos'; @@ -2701,7 +2730,7 @@ class AppLocalizationsPt extends AppLocalizations { String get posts => 'Publicações'; @override - String get lastPost => 'Última postagem'; + String get lastPost => 'Última publicação'; @override String get views => 'Visualizações'; @@ -2719,13 +2748,13 @@ class AppLocalizationsPt extends AppLocalizations { String get message => 'Mensagem'; @override - String get createTheTopic => 'Criar tópico'; + String get createTheTopic => 'Criar o tópico'; @override - String get reportAUser => 'Reportar um usuário'; + String get reportAUser => 'Denunciar um utilizador'; @override - String get user => 'Usuário'; + String get user => 'Utilizador'; @override String get reason => 'Motivo'; @@ -2734,7 +2763,7 @@ class AppLocalizationsPt extends AppLocalizations { String get whatIsIheMatter => 'Qual é o motivo?'; @override - String get cheat => 'Trapaça'; + String get cheat => 'Batota'; @override String get troll => 'Troll'; @@ -2743,10 +2772,10 @@ class AppLocalizationsPt extends AppLocalizations { String get other => 'Outro'; @override - String get reportDescriptionHelp => 'Cole o link do(s) jogo(s) e explique o que há de errado com o comportamento do usuário. Não diga apenas \"ele trapaceia\", informe-nos como chegou a esta conclusão. Sua denúncia será processada mais rapidamente se escrita em inglês.'; + String get reportDescriptionHelp => 'Inclui o link do(s) jogo(s) e explica o que há de errado com o comportamento deste utilizador. Não digas apenas \"ele faz batota\"; informa-nos como chegaste a essa conclusão. A tua denúncia será processada mais rapidamente se for escrita em inglês.'; @override - String get error_provideOneCheatedGameLink => 'Por favor forneça ao menos um link para um jogo com suspeita de trapaça.'; + String get error_provideOneCheatedGameLink => 'Por favor, fornece-nos pelo menos um link para um jogo onde tenha havido batota.'; @override String by(String param) { @@ -2759,7 +2788,7 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get thisTopicIsNowClosed => 'O tópico foi fechado.'; + String get thisTopicIsNowClosed => 'Este tópico foi fechado.'; @override String get blog => 'Blog'; @@ -2768,46 +2797,46 @@ class AppLocalizationsPt extends AppLocalizations { String get notes => 'Notas'; @override - String get typePrivateNotesHere => 'Digite notas pessoais aqui'; + String get typePrivateNotesHere => 'Escreve notas privadas aqui'; @override - String get writeAPrivateNoteAboutThisUser => 'Escreva uma nota pessoal sobre este usuário'; + String get writeAPrivateNoteAboutThisUser => 'Escreva uma nota privada sobre este utilizador'; @override - String get noNoteYet => 'Nenhuma nota'; + String get noNoteYet => 'Ainda sem notas'; @override - String get invalidUsernameOrPassword => 'Nome de usuário ou senha incorretos'; + String get invalidUsernameOrPassword => 'Nome de utilizador ou palavra-passe incorretos'; @override - String get incorrectPassword => 'Senha incorreta'; + String get incorrectPassword => 'Palavra-passe incorreta'; @override - String get invalidAuthenticationCode => 'Código de verificação inválido'; + String get invalidAuthenticationCode => 'Código de autenticação inválido'; @override - String get emailMeALink => 'Me envie um link'; + String get emailMeALink => 'Envie-me um link por e-mail'; @override - String get currentPassword => 'Senha atual'; + String get currentPassword => 'Palavra-passe atual'; @override - String get newPassword => 'Nova senha'; + String get newPassword => 'Nova palavra-chave'; @override - String get newPasswordAgain => 'Nova senha (novamente)'; + String get newPasswordAgain => 'Nova palavra-passe (novamente)'; @override - String get newPasswordsDontMatch => 'As novas senhas não correspondem'; + String get newPasswordsDontMatch => 'As novas palavras-passe não coincidem'; @override - String get newPasswordStrength => 'Senha forte'; + String get newPasswordStrength => 'Força da palavra-passe'; @override - String get clockInitialTime => 'Tempo de relógio'; + String get clockInitialTime => 'Tempo inicial no relógio'; @override - String get clockIncrement => 'Incremento do relógio'; + String get clockIncrement => 'Incremento no relógio'; @override String get privacy => 'Privacidade'; @@ -2816,13 +2845,13 @@ class AppLocalizationsPt extends AppLocalizations { String get privacyPolicy => 'Política de privacidade'; @override - String get letOtherPlayersFollowYou => 'Permitir que outros jogadores sigam você'; + String get letOtherPlayersFollowYou => 'Permitir que outros jogadores te sigam'; @override - String get letOtherPlayersChallengeYou => 'Permitir que outros jogadores desafiem você'; + String get letOtherPlayersChallengeYou => 'Permitir que outros jogadores te desafiem'; @override - String get letOtherPlayersInviteYouToStudy => 'Deixe outros jogadores convidá-lo para um estudo'; + String get letOtherPlayersInviteYouToStudy => 'Permitir que outros jogadores te convidem para estudos'; @override String get sound => 'Som'; @@ -2849,7 +2878,7 @@ class AppLocalizationsPt extends AppLocalizations { String get allSquaresOfTheBoard => 'Todas as casas do tabuleiro'; @override - String get onSlowGames => 'Em partidas lentas'; + String get onSlowGames => 'Em jogos lentos'; @override String get always => 'Sempre'; @@ -2870,33 +2899,33 @@ class AppLocalizationsPt extends AppLocalizations { @override String victoryVsYInZ(String param1, String param2, String param3) { - return '$param1 vs $param2 em $param3'; + return '$param1 contra $param2 em $param3'; } @override String defeatVsYInZ(String param1, String param2, String param3) { - return '$param1 vs $param2 em $param3'; + return '$param1 contra $param2 em $param3'; } @override String drawVsYInZ(String param1, String param2, String param3) { - return '$param1 vs $param2 em $param3'; + return '$param1 contra $param2 em $param3'; } @override - String get timeline => 'Linha do tempo'; + String get timeline => 'Cronologia'; @override - String get starting => 'Iniciando:'; + String get starting => 'Começa às:'; @override String get allInformationIsPublicAndOptional => 'Todas as informações são públicas e opcionais.'; @override - String get biographyDescription => 'Fale sobre você, seus interesses, o que você gosta no xadrez, suas aberturas favoritas, jogadores...'; + String get biographyDescription => 'Fala de ti, do que gostas no xadrez, das tuas aberturas favoritas, jogos, jogadores...'; @override - String get listBlockedPlayers => 'Sua lista de jogadores bloqueados'; + String get listBlockedPlayers => 'Lista os jogadores que bloqueaste'; @override String get human => 'Humano'; @@ -2917,7 +2946,7 @@ class AppLocalizationsPt extends AppLocalizations { String get learnMenu => 'Aprender'; @override - String get studyMenu => 'Estudar'; + String get studyMenu => 'Estudos'; @override String get practice => 'Praticar'; @@ -2935,50 +2964,50 @@ class AppLocalizationsPt extends AppLocalizations { String get error_unknown => 'Valor inválido'; @override - String get error_required => 'Este campo deve ser preenchido'; + String get error_required => 'Este campo tem de ser preenchido'; @override String get error_email => 'Este endereço de e-mail é inválido'; @override - String get error_email_acceptable => 'Este endereço de e-mail não é válido. Verifique e tente novamente.'; + String get error_email_acceptable => 'Este endereço de e-mail não é aceitável. Por favor verifica-o e tenta outra vez.'; @override - String get error_email_unique => 'Endereço de e-mail é inválido ou já está sendo utilizado'; + String get error_email_unique => 'Endereço de e-mail inválido ou já utilizado'; @override - String get error_email_different => 'Este já é o seu endereço de e-mail'; + String get error_email_different => 'Este já é o teu endereço de e-mail'; @override String error_minLength(String param) { - return 'O mínimo de caracteres é $param'; + return 'Deve conter pelo menos $param caracteres'; } @override String error_maxLength(String param) { - return 'O máximo de caracteres é $param'; + return 'Deve conter no máximo $param caracteres'; } @override String error_min(String param) { - return 'Deve ser maior ou igual a $param'; + return 'Deve ser pelo menos $param'; } @override String error_max(String param) { - return 'Deve ser menor ou igual a $param'; + return 'Deve ser no máximo $param'; } @override String ifRatingIsPlusMinusX(String param) { - return 'Se o rating for ± $param'; + return 'Se a pontuação for ± $param'; } @override - String get ifRegistered => 'Se registrado'; + String get ifRegistered => 'Se registado'; @override - String get onlyExistingConversations => 'Apenas conversas iniciadas'; + String get onlyExistingConversations => 'Apenas conversas existentes'; @override String get onlyFriends => 'Apenas amigos'; @@ -2990,35 +3019,35 @@ class AppLocalizationsPt extends AppLocalizations { String get castling => 'Roque'; @override - String get whiteCastlingKingside => 'O-O das brancas'; + String get whiteCastlingKingside => 'Brancas O-O'; @override - String get blackCastlingKingside => 'O-O das pretas'; + String get blackCastlingKingside => 'Pretas O-O'; @override String tpTimeSpentPlaying(String param) { - return 'Tempo jogando: $param'; + return 'Tempo passado a jogar: $param'; } @override - String get watchGames => 'Assistir partidas'; + String get watchGames => 'Ver jogos'; @override String tpTimeSpentOnTV(String param) { - return 'Tempo na TV: $param'; + return 'Tempo a ser transmitido na TV: $param'; } @override - String get watch => 'Assistir'; + String get watch => 'Observar'; @override - String get videoLibrary => 'Vídeos'; + String get videoLibrary => 'Videoteca'; @override String get streamersMenu => 'Streamers'; @override - String get mobileApp => 'Aplicativo Móvel'; + String get mobileApp => 'Aplicação móvel'; @override String get webmasters => 'Webmasters'; @@ -3033,11 +3062,11 @@ class AppLocalizationsPt extends AppLocalizations { @override String xIsAFreeYLibreOpenSourceChessServer(String param1, String param2) { - return '$param1 é um servidor de xadrez gratuito ($param2), livre, sem anúncios e código aberto.'; + return 'O $param1 é um servidor de xadrez grátis ($param2), sem publicidades e open-source.'; } @override - String get really => 'realmente'; + String get really => 'a sério'; @override String get contribute => 'Contribuir'; @@ -3046,17 +3075,17 @@ class AppLocalizationsPt extends AppLocalizations { String get termsOfService => 'Termos de serviço'; @override - String get sourceCode => 'Código-fonte'; + String get sourceCode => 'Código fonte'; @override - String get simultaneousExhibitions => 'Exibição simultânea'; + String get simultaneousExhibitions => 'Exibições simultâneas'; @override - String get host => 'Simultanista'; + String get host => 'Anfitrião'; @override String hostColorX(String param) { - return 'Cor do simultanista: $param'; + return 'Cor do anfitrião: $param'; } @override @@ -3066,10 +3095,10 @@ class AppLocalizationsPt extends AppLocalizations { String get createdSimuls => 'Simultâneas criadas recentemente'; @override - String get hostANewSimul => 'Iniciar nova simultânea'; + String get hostANewSimul => 'Iniciar uma simultânea'; @override - String get signUpToHostOrJoinASimul => 'Entre em uma ou crie uma conta para hospedar'; + String get signUpToHostOrJoinASimul => 'Registra-te para hospedar ou juntar a uma simultânea'; @override String get noSimulFound => 'Simultânea não encontrada'; @@ -3078,88 +3107,88 @@ class AppLocalizationsPt extends AppLocalizations { String get noSimulExplanation => 'Esta exibição simultânea não existe.'; @override - String get returnToSimulHomepage => 'Retornar à página inicial da simultânea'; + String get returnToSimulHomepage => 'Voltar à página inicial da simultânea'; @override - String get aboutSimul => 'A simultânea envolve um único jogador contra vários oponentes ao mesmo tempo.'; + String get aboutSimul => 'As simultâneas envolvem um único jogador contra vários adversários ao mesmo tempo.'; @override - String get aboutSimulImage => 'Contra 50 oponentes, Fischer ganhou 47 jogos, empatou 2 e perdeu 1.'; + String get aboutSimulImage => 'Contra 50 adversários, Fischer ganhou 47 jogos, empatou 2 e perdeu 1.'; @override - String get aboutSimulRealLife => 'O conceito provém de eventos reais, nos quais o simultanista se move de mesa em mesa, executando um movimento por vez.'; + String get aboutSimulRealLife => 'O conceito provém de eventos reais, nos quais o simultanista se move de mesa em mesa, executando um movimento de cada vez.'; @override - String get aboutSimulRules => 'Quando a simultânea começa, cada jogador começa sua partida contra o simultanista, o qual sempre tem as brancas. A simultânea termina quando todas as partidas são finalizadas.'; + String get aboutSimulRules => 'Quando a simultânea começa, cada jogador começa sua partida contra o anfitrião, que joga sempre com as peças brancas. A simultânea termina quando todas as partidas tiverem acabado.'; @override - String get aboutSimulSettings => 'As simultâneas sempre são partidas amigáveis. Revanches, voltar jogadas e tempo adicional estão desativados.'; + String get aboutSimulSettings => 'As simultâneas são sempre partidas amigáveis. Desforras, voltar jogadas atrás e dar mais tempo estão desativados.'; @override String get create => 'Criar'; @override - String get whenCreateSimul => 'Quando cria uma simultânea, você joga com vários adversários ao mesmo tempo.'; + String get whenCreateSimul => 'Quando crias uma simultânea, podes jogar com vários adversários ao mesmo tempo.'; @override - String get simulVariantsHint => 'Se você selecionar diversas variantes, cada jogador poderá escolher qual delas jogar.'; + String get simulVariantsHint => 'Se selecionares diversas variantes, cada jogador poderá escolher qual delas jogar.'; @override - String get simulClockHint => 'Configuração de acréscimos no relógio. Quanto mais jogadores admitir, mais tempo pode necessitar.'; + String get simulClockHint => 'Configuração de incrementos no relógio. Quanto mais jogadores admitires, mais tempo poderás necessitar.'; @override - String get simulAddExtraTime => 'Você pode acrescentar tempo adicional a seu relógio, para ajudá-lo a lidar com a simultânea.'; + String get simulAddExtraTime => 'Podes acrescentar tempo adicional ao teu relógio, para te ajudar a lidar com a simultânea.'; @override - String get simulHostExtraTime => 'Tempo adicional do simultanista'; + String get simulHostExtraTime => 'Tempo adicional do anfitrião'; @override - String get simulAddExtraTimePerPlayer => 'Adicionar tempo inicial ao seu relógio por cada jogador adversário que entrar na simultânea.'; + String get simulAddExtraTimePerPlayer => 'Adicione tempo inicial ao seu relógio para cada jogador que entra na simulação.'; @override - String get simulHostExtraTimePerPlayer => 'Tempo adicional do simultanista por jogador'; + String get simulHostExtraTimePerPlayer => 'Tempo extra de relógio por jogador'; @override String get lichessTournaments => 'Torneios do Lichess'; @override - String get tournamentFAQ => 'Perguntas Frequentes sobre torneios no estilo Arena'; + String get tournamentFAQ => 'Perguntas frequentes sobre torneios em arena'; @override - String get timeBeforeTournamentStarts => 'Contagem regressiva para início do torneio'; + String get timeBeforeTournamentStarts => 'Contagem decrescente para o início do torneio'; @override - String get averageCentipawnLoss => 'Perda média em centipeões'; + String get averageCentipawnLoss => 'Perda média de centésimos de peão'; @override String get accuracy => 'Precisão'; @override - String get keyboardShortcuts => 'Atalhos de teclado'; + String get keyboardShortcuts => 'Atalhos do teclado'; @override - String get keyMoveBackwardOrForward => 'retroceder/avançar lance'; + String get keyMoveBackwardOrForward => 'retroceder/avançar jogada'; @override String get keyGoToStartOrEnd => 'ir para início/fim'; @override - String get keyCycleSelectedVariation => 'Alternar entre as variantes'; + String get keyCycleSelectedVariation => 'Ciclo da variante selecionada'; @override - String get keyShowOrHideComments => 'mostrar/ocultar comentários'; + String get keyShowOrHideComments => 'mostrar/ocultar os comentários'; @override String get keyEnterOrExitVariation => 'entrar/sair da variante'; @override - String get keyRequestComputerAnalysis => 'Solicite análise do computador, aprenda com seus erros'; + String get keyRequestComputerAnalysis => 'Solicite análise do computador, Aprenda com seus erros'; @override - String get keyNextLearnFromYourMistakes => 'Próximo (Aprenda com seus erros)'; + String get keyNextLearnFromYourMistakes => 'Seguinte (Aprenda com os seus erros)'; @override - String get keyNextBlunder => 'Próximo erro grave'; + String get keyNextBlunder => 'Próxima gafe'; @override String get keyNextMistake => 'Próximo erro'; @@ -3168,19 +3197,19 @@ class AppLocalizationsPt extends AppLocalizations { String get keyNextInaccuracy => 'Próxima imprecisão'; @override - String get keyPreviousBranch => 'Branch anterior'; + String get keyPreviousBranch => 'Ramo anterior'; @override - String get keyNextBranch => 'Próximo branch'; + String get keyNextBranch => 'Próximo ramo'; @override - String get toggleVariationArrows => 'Ativar/desativar setas'; + String get toggleVariationArrows => 'Ativar/desactivar seta da variante'; @override - String get cyclePreviousOrNextVariation => 'Variante seguinte/anterior'; + String get cyclePreviousOrNextVariation => 'Ciclo anterior/próxima variante'; @override - String get toggleGlyphAnnotations => 'Ativar/desativar anotações'; + String get toggleGlyphAnnotations => 'Ativar/desativar anotações com símbolos'; @override String get togglePositionAnnotations => 'Ativar/desativar anotações de posição'; @@ -3189,16 +3218,16 @@ class AppLocalizationsPt extends AppLocalizations { String get variationArrowsInfo => 'Setas de variação permitem navegar sem usar a lista de movimentos.'; @override - String get playSelectedMove => 'jogar movimento selecionado'; + String get playSelectedMove => 'jogar o movimento selecionado'; @override String get newTournament => 'Novo torneio'; @override - String get tournamentHomeTitle => 'Torneios de xadrez com diversos controles de tempo e variantes'; + String get tournamentHomeTitle => 'Torneios de xadrez com diversos ritmos de jogo e variantes'; @override - String get tournamentHomeDescription => 'Jogue xadrez em ritmo acelerado! Entre em um torneio oficial agendado ou crie seu próprio. Bullet, Blitz, Clássico, Chess960, King of the Hill, Três Xeques e outras modalidades disponíveis para uma ilimitada diversão enxadrística.'; + String get tournamentHomeDescription => 'Joga xadrez em ritmo acelerado! Entra num torneio oficial agendado ou cria o teu próprio. Bullet, Rápida, Clássica, Chess960, Rei da Colina, Três Xeques e mais opções disponíveis para uma diversão ilimitada.'; @override String get tournamentNotFound => 'Torneio não encontrado'; @@ -3207,109 +3236,109 @@ class AppLocalizationsPt extends AppLocalizations { String get tournamentDoesNotExist => 'Este torneio não existe.'; @override - String get tournamentMayHaveBeenCanceled => 'O evento pode ter sido cancelado, se todos os jogadores saíram antes de seu início.'; + String get tournamentMayHaveBeenCanceled => 'O torneio pode ter sido cancelado, se todos os jogadores tiverem saíram antes do seu começo.'; @override - String get returnToTournamentsHomepage => 'Volte à página inicial de torneios'; + String get returnToTournamentsHomepage => 'Voltar à página inicial de torneios'; @override String weeklyPerfTypeRatingDistribution(String param) { - return 'Distribuição mensal de rating em $param'; + return 'Distribuição semanal de pontuação em $param'; } @override String yourPerfTypeRatingIsRating(String param1, String param2) { - return 'Seu rating em $param1 é $param2.'; + return 'A tua pontuação em $param1 é $param2.'; } @override String youAreBetterThanPercentOfPerfTypePlayers(String param1, String param2) { - return 'Você é melhor que $param1 dos jogadores de $param2.'; + return 'És melhor que $param1 dos jogadores de $param2.'; } @override String userIsBetterThanPercentOfPerfTypePlayers(String param1, String param2, String param3) { - return '$param1 é melhor que $param2 dos $param3 jogadores.'; + return '$param1 é melhor que $param2 dos jogadores de $param3.'; } @override String betterThanPercentPlayers(String param1, String param2) { - return 'Melhor que $param1 dos jogadores de $param2'; + return 'Melhor que $param1 de $param2 jogadores'; } @override String youDoNotHaveAnEstablishedPerfTypeRating(String param) { - return 'Você não tem rating definido em $param.'; + return 'Não tens uma pontuação estabelecida em $param.'; } @override - String get yourRating => 'Seu rating'; + String get yourRating => 'A tua pontuação'; @override - String get cumulative => 'Cumulativo'; + String get cumulative => 'Acumulativo'; @override - String get glicko2Rating => 'Rating Glicko-2'; + String get glicko2Rating => 'Pontuação Glicko-2'; @override - String get checkYourEmail => 'Verifique seu e-mail'; + String get checkYourEmail => 'Verifica o teu e-mail'; @override - String get weHaveSentYouAnEmailClickTheLink => 'Enviamos um e-mail. Clique no link do e-mail para ativar sua conta.'; + String get weHaveSentYouAnEmailClickTheLink => 'Enviámos-te um e-mail. Clica no link nesse e-mail para ativares a tua conta.'; @override - String get ifYouDoNotSeeTheEmailCheckOtherPlaces => 'Se você não vir o e-mail, verifique outros locais onde possa estar, como lixeira, spam ou outras pastas.'; + String get ifYouDoNotSeeTheEmailCheckOtherPlaces => 'Se você não vires o e-mail, verifica outros locais onde este possa estar, como pastas de lixo, spam, social ou outras.'; @override String weHaveSentYouAnEmailTo(String param) { - return 'Enviamos um e-mail para $param. Clique no link do e-mail para redefinir sua senha.'; + return 'Enviámos-te um e-mail para $param. Clica no link nesse e-mail para redefinires a tua palavra-passe.'; } @override String byRegisteringYouAgreeToBeBoundByOur(String param) { - return 'Ao registrar, você concorda em se comprometer com nossa $param.'; + return 'Ao criares uma conta, concordas comprometeres-te com os nossos $param.'; } @override String readAboutOur(String param) { - return 'Leia sobre a nossa $param.'; + return 'Lê sobre a nossa $param.'; } @override - String get networkLagBetweenYouAndLichess => 'Atraso na rede'; + String get networkLagBetweenYouAndLichess => 'Atraso na rede entre ti e o Lichess'; @override String get timeToProcessAMoveOnLichessServer => 'Tempo para processar um movimento no servidor do Lichess'; @override - String get downloadAnnotated => 'Baixar anotação'; + String get downloadAnnotated => 'Transferir anotação'; @override - String get downloadRaw => 'Baixar texto'; + String get downloadRaw => 'Transferir texto'; @override - String get downloadImported => 'Baixar partida importada'; + String get downloadImported => 'Transferir a partida importada'; @override String get crosstable => 'Tabela'; @override - String get youCanAlsoScrollOverTheBoardToMoveInTheGame => 'Você também pode rolar sobre o tabuleiro para percorrer as jogadas.'; + String get youCanAlsoScrollOverTheBoardToMoveInTheGame => 'Também podes rodar a rodinha do rato sobre o tabuleiro para percorreres as jogadas na partida.'; @override - String get scrollOverComputerVariationsToPreviewThem => 'Passe o mouse pelas variações do computador para visualizá-las.'; + String get scrollOverComputerVariationsToPreviewThem => 'Passe o rato sobre as variantes do computador para visualizá-las.'; @override - String get analysisShapesHowTo => 'Pressione Shift+Clique ou clique com o botão direito do mouse para desenhar círculos e setas no tabuleiro.'; + String get analysisShapesHowTo => 'Pressiona shift+clique ou clica com o botão direito do rato para desenhares círculos e setas no tabuleiro.'; @override - String get letOtherPlayersMessageYou => 'Permitir que outros jogadores lhe enviem mensagem'; + String get letOtherPlayersMessageYou => 'Permitir que outros jogadores te enviem mensagens'; @override - String get receiveForumNotifications => 'Receba notificações quando você for mencionado no fórum'; + String get receiveForumNotifications => 'Olá aOlá a todos'; @override - String get shareYourInsightsData => 'Compartilhe seus dados da análise'; + String get shareYourInsightsData => 'Compartilhar os teus dados de \"insights\" de xadrez'; @override String get withNobody => 'Com ninguém'; @@ -3324,24 +3353,24 @@ class AppLocalizationsPt extends AppLocalizations { String get kidMode => 'Modo infantil'; @override - String get kidModeIsEnabled => 'O modo infantil está ativado.'; + String get kidModeIsEnabled => 'Modo infantil está ativado.'; @override - String get kidModeExplanation => 'Isto diz respeito à segurança. No modo infantil, todas as comunicações do site são desabilitadas. Habilite isso para seus filhos e alunos, para protegê-los de outros usuários da Internet.'; + String get kidModeExplanation => 'Iso é sobre segurança. No modo infantil, todas as comunicações do site ficam desactivadas. Activa esta opção para os teus filhos ou alunos, para protegê-los de outros utilizadores da internet.'; @override String inKidModeTheLichessLogoGetsIconX(String param) { - return 'No modo infantil, a logo do lichess tem um ícone $param, para que você saiba que suas crianças estão seguras.'; + return 'No modo criança, o logótipo do Lichess fica com um ícone $param para que saibas que as tuas crianças estão seguras.'; } @override - String get askYourChessTeacherAboutLiftingKidMode => 'Sua conta é gerenciada. Para desativar o modo infantil, peça ao seu professor.'; + String get askYourChessTeacherAboutLiftingKidMode => 'A sua conta é gerida. Peça ao seu professor de xadrez para retirar o modo infantil.'; @override - String get enableKidMode => 'Habilitar o modo infantil'; + String get enableKidMode => 'Ativar o modo infantil'; @override - String get disableKidMode => 'Desabilitar o modo infantil'; + String get disableKidMode => 'Desativar o modo infantil'; @override String get security => 'Segurança'; @@ -3350,10 +3379,10 @@ class AppLocalizationsPt extends AppLocalizations { String get sessions => 'Sessões'; @override - String get revokeAllSessions => 'revogar todas as sessões'; + String get revokeAllSessions => 'desativar todas as sessões'; @override - String get playChessEverywhere => 'Jogue xadrez em qualquer lugar'; + String get playChessEverywhere => 'Joga xadrez em qualquer lugar'; @override String get asFreeAsLichess => 'Tão gratuito quanto o Lichess'; @@ -3362,7 +3391,7 @@ class AppLocalizationsPt extends AppLocalizations { String get builtForTheLoveOfChessNotMoney => 'Desenvolvido pelo amor ao xadrez, não pelo dinheiro'; @override - String get everybodyGetsAllFeaturesForFree => 'Todos têm todos os recursos de graça'; + String get everybodyGetsAllFeaturesForFree => 'Todos têm todos os recursos gratuitamente'; @override String get zeroAdvertisement => 'Zero anúncios'; @@ -3371,7 +3400,7 @@ class AppLocalizationsPt extends AppLocalizations { String get fullFeatured => 'Cheio de recursos'; @override - String get phoneAndTablet => 'Celular e tablet'; + String get phoneAndTablet => 'Telemóvel e tablet'; @override String get bulletBlitzClassical => 'Bullet, blitz, clássico'; @@ -3380,20 +3409,20 @@ class AppLocalizationsPt extends AppLocalizations { String get correspondenceChess => 'Xadrez por correspondência'; @override - String get onlineAndOfflinePlay => 'Jogue online e offline'; + String get onlineAndOfflinePlay => 'Jogar online e offline'; @override - String get viewTheSolution => 'Ver solução'; + String get viewTheSolution => 'Ver a solução'; @override - String get followAndChallengeFriends => 'Siga e desafie amigos'; + String get followAndChallengeFriends => 'Joga e desafia amigos'; @override String get gameAnalysis => 'Análise da partida'; @override String xHostsY(String param1, String param2) { - return '$param1 criou $param2'; + return '$param1 criou a exibição simultânea $param2'; } @override @@ -3407,24 +3436,24 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get quickPairing => 'Pareamento rápido'; + String get quickPairing => 'Emparelhamento rápido'; @override - String get lobby => 'Salão'; + String get lobby => 'Sala de espera'; @override String get anonymous => 'Anônimo'; @override String yourScore(String param) { - return 'Sua pontuação:$param'; + return 'O teu resultado: $param'; } @override - String get language => 'Idioma'; + String get language => 'Lingua'; @override - String get background => 'Cor tema'; + String get background => 'Fundo'; @override String get light => 'Claro'; @@ -3454,37 +3483,37 @@ class AppLocalizationsPt extends AppLocalizations { String get brightness => 'Brilho'; @override - String get hue => 'Tom'; + String get hue => 'Tonalidade'; @override - String get boardReset => 'Restaurar as cores padrão'; + String get boardReset => 'Redefinir cores para o padrão'; @override - String get pieceSet => 'Estilo das peças'; + String get pieceSet => 'Peças'; @override - String get embedInYourWebsite => 'Incorporar no seu site'; + String get embedInYourWebsite => 'Incorporar no teu site'; @override - String get usernameAlreadyUsed => 'Este nome de usuário já está registado, por favor, escolha outro.'; + String get usernameAlreadyUsed => 'Este nome de utilizador já existe, por favor escolhe outro.'; @override - String get usernamePrefixInvalid => 'O nome de usuário deve começar com uma letra.'; + String get usernamePrefixInvalid => 'O nome do utilizador tem começar com uma letra.'; @override - String get usernameSuffixInvalid => 'O nome de usuário deve terminar com uma letra ou um número.'; + String get usernameSuffixInvalid => 'O nome do utilizador tem de acabar com uma letra ou número.'; @override - String get usernameCharsInvalid => 'Nomes de usuário só podem conter letras, números, sublinhados e hifens.'; + String get usernameCharsInvalid => 'O nome do utilizador só pode conter letras, números, underscores ou hífenes.'; @override - String get usernameUnacceptable => 'Este nome de usuário não é aceitável.'; + String get usernameUnacceptable => 'Este nome de utilizador não é aceitável.'; @override - String get playChessInStyle => 'Jogue xadrez com estilo'; + String get playChessInStyle => 'Jogar xadrez com estilo'; @override - String get chessBasics => 'Básicos do xadrez'; + String get chessBasics => 'O básico do xadrez'; @override String get coaches => 'Treinadores'; @@ -3508,66 +3537,66 @@ class AppLocalizationsPt extends AppLocalizations { @override String perfRatingX(String param) { - return 'Rating: $param'; + return 'Pontuação: $param'; } @override - String get practiceWithComputer => 'Pratique com o computador'; + String get practiceWithComputer => 'Praticar com o computador'; @override String anotherWasX(String param) { - return 'Um outro lance seria $param'; + return 'Outro seria $param'; } @override String bestWasX(String param) { - return 'Melhor seria $param'; + return '$param seria melhor'; } @override - String get youBrowsedAway => 'Você navegou para longe'; + String get youBrowsedAway => 'Saíste'; @override - String get resumePractice => 'Retornar à prática'; + String get resumePractice => 'Continuar a prática'; @override - String get drawByFiftyMoves => 'O jogo empatou pela regra dos cinquenta movimentos.'; + String get drawByFiftyMoves => 'O jogo foi empatado de acordo com a regra dos cinquenta lances.'; @override - String get theGameIsADraw => 'A partida terminou em empate.'; + String get theGameIsADraw => 'O jogo é um empate.'; @override - String get computerThinking => 'Computador pensando ...'; + String get computerThinking => 'Computador a pensar...'; @override - String get seeBestMove => 'Veja o melhor lance'; + String get seeBestMove => 'Ver o melhor movimento'; @override - String get hideBestMove => 'Esconder o melhor lance'; + String get hideBestMove => 'Ocultar o melhor movimento'; @override String get getAHint => 'Obter uma dica'; @override - String get evaluatingYourMove => 'Avaliando o seu movimento ...'; + String get evaluatingYourMove => 'A analisar o teu movimento ...'; @override - String get whiteWinsGame => 'Brancas vencem'; + String get whiteWinsGame => 'As brancas ganham'; @override - String get blackWinsGame => 'Pretas vencem'; + String get blackWinsGame => 'As pretas ganham'; @override - String get learnFromYourMistakes => 'Aprenda com seus erros'; + String get learnFromYourMistakes => 'Aprende com os teus erros'; @override - String get learnFromThisMistake => 'Aprenda com este erro'; + String get learnFromThisMistake => 'Aprende com este erro'; @override - String get skipThisMove => 'Pular esse lance'; + String get skipThisMove => 'Saltar este movimento'; @override - String get next => 'Próximo'; + String get next => 'Seguinte'; @override String xWasPlayed(String param) { @@ -3575,49 +3604,49 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get findBetterMoveForWhite => 'Encontrar o melhor lance para as Brancas'; + String get findBetterMoveForWhite => 'Encontra um melhor movimento para as brancas'; @override - String get findBetterMoveForBlack => 'Encontre o melhor lance para as Pretas'; + String get findBetterMoveForBlack => 'Encontra um melhor movimento para as pretas'; @override String get resumeLearning => 'Continuar a aprendizagem'; @override - String get youCanDoBetter => 'Você pode fazer melhor'; + String get youCanDoBetter => 'Podes fazer melhor'; @override - String get tryAnotherMoveForWhite => 'Tente um outro lance para as Brancas'; + String get tryAnotherMoveForWhite => 'Tenta outro movimento para as brancas'; @override - String get tryAnotherMoveForBlack => 'Tente um outro lance para as Pretas'; + String get tryAnotherMoveForBlack => 'Tenta outro movimento para as pretas'; @override String get solution => 'Solução'; @override - String get waitingForAnalysis => 'Aguardando análise'; + String get waitingForAnalysis => 'A aguardar pela análise'; @override - String get noMistakesFoundForWhite => 'Nenhum erro encontrado para as Brancas'; + String get noMistakesFoundForWhite => 'Não foram encontrados erros das brancas'; @override - String get noMistakesFoundForBlack => 'Nenhum erro encontrado para as Pretas'; + String get noMistakesFoundForBlack => 'Não foram encontrados erros das pretas'; @override - String get doneReviewingWhiteMistakes => 'Erros das brancas já revistos'; + String get doneReviewingWhiteMistakes => 'Terminada a revisão de erros das brancas'; @override - String get doneReviewingBlackMistakes => 'Erros das pretas já revistos'; + String get doneReviewingBlackMistakes => 'Terminada a revisão de erros das pretas'; @override - String get doItAgain => 'Faça novamente'; + String get doItAgain => 'Repetir'; @override - String get reviewWhiteMistakes => 'Rever erros das Brancas'; + String get reviewWhiteMistakes => 'Rever os erros das brancas'; @override - String get reviewBlackMistakes => 'Rever erros das Pretas'; + String get reviewBlackMistakes => 'Rever os erros das pretas'; @override String get advantage => 'Vantagem'; @@ -3626,95 +3655,95 @@ class AppLocalizationsPt extends AppLocalizations { String get opening => 'Abertura'; @override - String get middlegame => 'Meio-jogo'; + String get middlegame => 'Meio jogo'; @override - String get endgame => 'Finais'; + String get endgame => 'Final de jogo'; @override - String get conditionalPremoves => 'Pré-lances condicionais'; + String get conditionalPremoves => 'Movimentos antecipados condicionais'; @override - String get addCurrentVariation => 'Adicionar a variação atual'; + String get addCurrentVariation => 'Adicionar a variante atual'; @override - String get playVariationToCreateConditionalPremoves => 'Jogar uma variação para criar pré-lances condicionais'; + String get playVariationToCreateConditionalPremoves => 'Joga uma variante para criares movimentos antecipados condicionais'; @override - String get noConditionalPremoves => 'Sem pré-lances condicionais'; + String get noConditionalPremoves => 'Sem movimentos antecipados condicionais'; @override String playX(String param) { - return 'Jogar $param'; + return 'Joga $param'; } @override - String get showUnreadLichessMessage => 'Você recebeu uma mensagem privada do Lichess.'; + String get showUnreadLichessMessage => 'Recebestes uma mensagem privada do Lichess.'; @override - String get clickHereToReadIt => 'Clique aqui para ler'; + String get clickHereToReadIt => 'Clica aqui para ler'; @override String get sorry => 'Desculpa :('; @override - String get weHadToTimeYouOutForAWhile => 'Tivemos de bloqueá-lo por um tempo.'; + String get weHadToTimeYouOutForAWhile => 'Tivemos de te banir por algum tempo.'; @override - String get why => 'Por quê?'; + String get why => 'Porquê?'; @override - String get pleasantChessExperience => 'Buscamos oferecer uma experiência agradável de xadrez para todos.'; + String get pleasantChessExperience => 'Tencionamos proporcionar uma experiência de xadrez agradável a todos.'; @override - String get goodPractice => 'Para isso, precisamos assegurar que nossos jogadores sigam boas práticas.'; + String get goodPractice => 'Para isso, temos de nos assegurar que todos os jogadores seguem boas práticas.'; @override - String get potentialProblem => 'Quando um problema em potencial é detectado, nós mostramos esta mensagem.'; + String get potentialProblem => 'Quando um potencial problema é detetado, exibimos esta mensagem.'; @override - String get howToAvoidThis => 'Como evitar isso?'; + String get howToAvoidThis => 'Como evitar isto?'; @override - String get playEveryGame => 'Jogue todos os jogos que inicia.'; + String get playEveryGame => 'Joga todas as partidas que começares.'; @override - String get tryToWin => 'Tente vencer (ou pelo menos empatar) todos os jogos que jogar.'; + String get tryToWin => 'Tenta ganhar (ou pelo menos empatar) todas as partida que jogares.'; @override - String get resignLostGames => 'Conceda partidas perdidas (não deixe o relógio ir até ao fim).'; + String get resignLostGames => 'Desiste em partidas perdidas (não deixes o tempo no relógio acabar).'; @override - String get temporaryInconvenience => 'Pedimos desculpa pelo incômodo temporário,'; + String get temporaryInconvenience => 'Pedimos desculpa pelo incómodo temporário,'; @override - String get wishYouGreatGames => 'e desejamos-lhe grandes jogos em lichess.org.'; + String get wishYouGreatGames => 'e desejamos-te grandes jogos no lichess.org.'; @override String get thankYouForReading => 'Obrigado pela leitura!'; @override - String get lifetimeScore => 'Pontuação de todo o período'; + String get lifetimeScore => 'Pontuação desde sempre'; @override - String get currentMatchScore => 'Pontuação da partida atual'; + String get currentMatchScore => 'Pontuação atual'; @override - String get agreementAssistance => 'Eu concordo que em momento algum receberei assistência durante os meus jogos (seja de um computador, livro, banco de dados ou outra pessoa).'; + String get agreementAssistance => 'Concordo que nunca recorrerei a assistência durante as minhas partidas (de um computador de xadrez, livro, base de dados ou outra pessoa).'; @override - String get agreementNice => 'Eu concordo que serei sempre cortês com outros jogadores.'; + String get agreementNice => 'Concordo que serei sempre repeitoso para os outros jogadores.'; @override String agreementMultipleAccounts(String param) { - return 'Eu concordo que não criarei múltiplas contas (exceto pelas razões indicadas em $param).'; + return 'Concordo que não criarei várias contas (exceto pelas razões indicadas em $param).'; } @override - String get agreementPolicy => 'Eu concordo que seguirei todas as normas do Lichess.'; + String get agreementPolicy => 'Concordo que seguirei todas as políticas do Lichess.'; @override - String get searchOrStartNewDiscussion => 'Procurar ou iniciar nova conversa'; + String get searchOrStartNewDiscussion => 'Pesquisa ou começa uma nova conversa'; @override String get edit => 'Editar'; @@ -3723,31 +3752,31 @@ class AppLocalizationsPt extends AppLocalizations { String get bullet => 'Bullet'; @override - String get blitz => 'Blitz'; + String get blitz => 'Rápidas'; @override - String get rapid => 'Rápida'; + String get rapid => 'Semi-rápidas'; @override - String get classical => 'Clássico'; + String get classical => 'Clássicas'; @override - String get ultraBulletDesc => 'Jogos insanamente rápidos: menos de 30 segundos'; + String get ultraBulletDesc => 'Partidas incrivelmente rápidas: menos de 30 segundos'; @override - String get bulletDesc => 'Jogos muito rápidos: menos de 3 minutos'; + String get bulletDesc => 'Partidas muito rápidas: menos de 3 minutos'; @override - String get blitzDesc => 'Jogos rápidos: 3 a 8 minutos'; + String get blitzDesc => 'Partidas rápidas: 3 a 8 minutos'; @override - String get rapidDesc => 'Jogos rápidos: 8 a 25 minutos'; + String get rapidDesc => 'Partidas semi-rápidas: 8 a 25 minutos'; @override - String get classicalDesc => 'Jogos clássicos: 25 minutos ou mais'; + String get classicalDesc => 'Partidas clássicas: 25 minutos ou mais'; @override - String get correspondenceDesc => 'Jogos por correspondência: um ou vários dias por lance'; + String get correspondenceDesc => 'Partidas por correspondência: um ou vários dias por lance'; @override String get puzzleDesc => 'Treinador de táticas de xadrez'; @@ -3757,91 +3786,91 @@ class AppLocalizationsPt extends AppLocalizations { @override String yourQuestionMayHaveBeenAnswered(String param1) { - return 'A sua pergunta pode já ter sido respondida $param1'; + return 'A tua pergunta pode já ter uma resposta $param1'; } @override - String get inTheFAQ => 'no F.A.Q.'; + String get inTheFAQ => 'no F.A.Q. (perguntas frequentes).'; @override String toReportSomeoneForCheatingOrBadBehavior(String param1) { - return 'Para denunciar um usuário por trapaças ou mau comportamento, $param1'; + return 'Para reportares um utilizador por fazer batota ou por mau comportamento, $param1.'; } @override - String get useTheReportForm => 'use o formulário de denúncia'; + String get useTheReportForm => 'usa a ficha própria para o fazeres'; @override String toRequestSupport(String param1) { - return 'Para solicitar ajuda, $param1'; + return 'Para solicitares suporte, $param1.'; } @override - String get tryTheContactPage => 'tente a página de contato'; + String get tryTheContactPage => 'tenta a página de contacto'; @override String makeSureToRead(String param1) { - return 'Certifique-se de ler $param1'; + return 'Certifique-se que lê $param1'; } @override - String get theForumEtiquette => 'as regras do fórum'; + String get theForumEtiquette => 'a etiqueta do fórum'; @override - String get thisTopicIsArchived => 'Este tópico foi arquivado e não pode mais ser respondido.'; + String get thisTopicIsArchived => 'Este tópico foi arquivado e já não pode ser respondido.'; @override String joinTheTeamXToPost(String param1) { - return 'Junte-se a $param1 para publicar neste fórum'; + return 'Junta-te a $param1, para publicares neste fórum'; } @override String teamNamedX(String param1) { - return 'Equipe $param1'; + return 'equipa $param1'; } @override - String get youCannotPostYetPlaySomeGames => 'Você não pode publicar nos fóruns ainda. Jogue algumas partidas!'; + String get youCannotPostYetPlaySomeGames => 'Ainda não podes publicar nos fóruns. Joga alguns jogos!'; @override - String get subscribe => 'Seguir publicações'; + String get subscribe => 'Subscrever-se'; @override - String get unsubscribe => 'Deixar de seguir publicações'; + String get unsubscribe => 'Cancelar a subscrição'; @override String mentionedYouInX(String param1) { - return 'mencionou você em \"$param1\".'; + return 'foste mencionado em \"$param1\".'; } @override String xMentionedYouInY(String param1, String param2) { - return '$param1 mencionou você em \"$param2\".'; + return '$param1 mencionou-te em \"$param2\".'; } @override String invitedYouToX(String param1) { - return 'convidou você para \"$param1\".'; + return 'convidou-te para \"$param1\".'; } @override String xInvitedYouToY(String param1, String param2) { - return '$param1 convidou você para \"$param2\".'; + return '$param1 convidou-te para \"$param2\".'; } @override - String get youAreNowPartOfTeam => 'Você agora faz parte da equipe.'; + String get youAreNowPartOfTeam => 'Já fazes parte da equipa.'; @override String youHaveJoinedTeamX(String param1) { - return 'Você ingressou em \"$param1\".'; + return 'Juntaste-te a \"$param1\".'; } @override - String get someoneYouReportedWasBanned => 'Alguém que você denunciou foi banido'; + String get someoneYouReportedWasBanned => 'Alguém que denunciaste foi banido'; @override - String get congratsYouWon => 'Parabéns, você venceu!'; + String get congratsYouWon => 'Parabéns! Ganhaste!'; @override String gameVsX(String param1) { @@ -3854,27 +3883,27 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get lostAgainstTOSViolator => 'Você perdeu rating para alguém que violou os termos de serviço do Lichess'; + String get lostAgainstTOSViolator => 'Perdes-te contra alguém que violou as regras do Lichess'; @override String refundXpointsTimeControlY(String param1, String param2) { - return 'Reembolso: $param1 $param2 pontos de rating.'; + return 'Devolução: $param1 $param2 pontos de Elo.'; } @override - String get timeAlmostUp => 'O tempo está quase acabando!'; + String get timeAlmostUp => 'O tempo está quase a terminar!'; @override String get clickToRevealEmailAddress => '[Clique para revelar o endereço de e-mail]'; @override - String get download => 'Baixar'; + String get download => 'Transferir'; @override - String get coachManager => 'Configurações para professores'; + String get coachManager => 'Gestor de treinadores'; @override - String get streamerManager => 'Configurações para streamers'; + String get streamerManager => 'Gestor do streamer'; @override String get cancelTournament => 'Cancelar o torneio'; @@ -3883,66 +3912,66 @@ class AppLocalizationsPt extends AppLocalizations { String get tournDescription => 'Descrição do torneio'; @override - String get tournDescriptionHelp => 'Algo especial que você queira dizer aos participantes? Tente ser breve. Links em Markdown disponíveis: [name](https://url)'; + String get tournDescriptionHelp => 'Quer dizer alguma coisa em especial aos participantes? Seja breve. Estão disponíveis ligações de Markdown: [name](https://url)'; @override - String get ratedFormHelp => 'Os jogos valem classificação\ne afetam o rating dos jogadores'; + String get ratedFormHelp => 'Os jogos são classificados\ne afetam as avaliações dos jogadores'; @override - String get onlyMembersOfTeam => 'Apenas membros da equipe'; + String get onlyMembersOfTeam => 'Apenas membros da equipa'; @override - String get noRestriction => 'Sem restrição'; + String get noRestriction => 'Sem restrições'; @override - String get minimumRatedGames => 'Mínimo de partidas ranqueadas'; + String get minimumRatedGames => 'Jogos com classificação mínima'; @override - String get minimumRating => 'Rating mínimo'; + String get minimumRating => 'Classificação mínima'; @override - String get maximumWeeklyRating => 'Rating máxima da semana'; + String get maximumWeeklyRating => 'Avaliação semanal máxima'; @override String positionInputHelp(String param) { - return 'Cole um FEN válido para iniciar as partidas a partir de uma posição específica.\nSó funciona com jogos padrão, e não com variantes.\nUse o $param para gerar uma posição FEN, e depois cole-a aqui.\nDeixe em branco para começar as partidas na posição inicial padrão.'; + return 'Cole um FEN válido para iniciar todos os jogos a partir de uma determinada posição.\nSó funciona para os jogos padrão, não com variantes.\nVocê pode usar o $param para gerar uma posição FEN e, em seguida, colá-lo aqui.\nDeixe em branco para iniciar jogos da posição inicial normal.'; } @override String get cancelSimul => 'Cancelar a simultânea'; @override - String get simulHostcolor => 'Cor do simultanista em cada jogo'; + String get simulHostcolor => 'Cor do anfitrião para cada jogo'; @override - String get estimatedStart => 'Tempo de início estimado'; + String get estimatedStart => 'Hora de início prevista'; @override String simulFeatured(String param) { - return 'Compartilhar em $param'; + return 'Em destaque em $param'; } @override String simulFeaturedHelp(String param) { - return 'Compartilhar a simultânia com todos em $param. Desative para jogos privados.'; + return 'Mostre a sua simultânea a todos em $param. Desativar para simultâneas privadas.'; } @override String get simulDescription => 'Descrição da simultânea'; @override - String get simulDescriptionHelp => 'Você gostaria de dizer algo aos participantes?'; + String get simulDescriptionHelp => 'Quer dizer alguma coisa aos participantes?'; @override String markdownAvailable(String param) { - return '$param está disponível para opções de formatação adicionais.'; + return '$param está disponível para sintaxe mais avançada.'; } @override - String get embedsAvailable => 'Cole a URL de uma partida ou de um capítulo de estudo para incorporá-lo.'; + String get embedsAvailable => 'Cole o URL de um jogo ou um URL de um capítulo de estudo para integrá-lo.'; @override - String get inYourLocalTimezone => 'No seu próprio fuso horário'; + String get inYourLocalTimezone => 'No seu próprio fuso horário local'; @override String get tournChat => 'Chat do torneio'; @@ -3951,72 +3980,72 @@ class AppLocalizationsPt extends AppLocalizations { String get noChat => 'Sem chat'; @override - String get onlyTeamLeaders => 'Apenas líderes de equipe'; + String get onlyTeamLeaders => 'Apenas líderes da equipa'; @override - String get onlyTeamMembers => 'Apenas membros da equipe'; + String get onlyTeamMembers => 'Apenas membros da equipa'; @override - String get navigateMoveTree => 'Navegar pela notação de movimentos'; + String get navigateMoveTree => 'Navegar pela árvore de movimentos'; @override - String get mouseTricks => 'Funcionalidades do mouse'; + String get mouseTricks => 'Movimentos do rato'; @override - String get toggleLocalAnalysis => 'Ativar/desativar análise local do computador'; + String get toggleLocalAnalysis => 'Ativar/desativar análise local no computador'; @override - String get toggleAllAnalysis => 'Ativar/desativar todas análises locais do computador'; + String get toggleAllAnalysis => 'Alternar todas as análises no computador'; @override - String get playComputerMove => 'Jogar o melhor lance de computador'; + String get playComputerMove => 'Jogar o melhor lance do computador'; @override String get analysisOptions => 'Opções de análise'; @override - String get focusChat => 'Focar texto'; + String get focusChat => 'Focar no bate-papo'; @override String get showHelpDialog => 'Mostrar esta mensagem de ajuda'; @override - String get reopenYourAccount => 'Reabra sua conta'; + String get reopenYourAccount => 'Reabrir a sua conta'; @override - String get closedAccountChangedMind => 'Caso você tenha encerrado sua conta, mas mudou de opinião, você tem ainda uma chance de recuperá-la.'; + String get closedAccountChangedMind => 'Se fechou a sua conta mas desde então mudou de ideias, terá uma oportunidade de recuperar a sua conta.'; @override - String get onlyWorksOnce => 'Isso só vai funcionar uma vez.'; + String get onlyWorksOnce => 'Isto só vai funcionar uma única vez.'; @override - String get cantDoThisTwice => 'Caso você encerre sua conta pela segunda vez, será impossível recuperá-la.'; + String get cantDoThisTwice => 'Se fechar a conta uma segunda vez, não haverá forma de a recuperar.'; @override - String get emailAssociatedToaccount => 'Endereço de e-mail associado à conta'; + String get emailAssociatedToaccount => 'Endereço de email associado à conta'; @override - String get sentEmailWithLink => 'Enviamos um e-mail pra você com um link.'; + String get sentEmailWithLink => 'Enviámos-lhe um e-mail com um link.'; @override String get tournamentEntryCode => 'Código de entrada do torneio'; @override - String get hangOn => 'Espere!'; + String get hangOn => 'Aguarde!'; @override String gameInProgress(String param) { - return 'Você tem uma partida em andamento com $param.'; + return 'Tem um jogo em curso com $param.'; } @override - String get abortTheGame => 'Cancelar a partida'; + String get abortTheGame => 'Cancelar o jogo'; @override - String get resignTheGame => 'Abandonar a partida'; + String get resignTheGame => 'Abandonar o jogo'; @override - String get youCantStartNewGame => 'Você não pode iniciar um novo jogo até que este acabe.'; + String get youCantStartNewGame => 'Não pode iniciar um novo jogo antes de este estar terminado.'; @override String get since => 'Desde'; @@ -4025,25 +4054,25 @@ class AppLocalizationsPt extends AppLocalizations { String get until => 'Até'; @override - String get lichessDbExplanation => 'Amostra de partidas rankeadas de todos os jogadores do Lichess'; + String get lichessDbExplanation => 'Jogos avaliados por amostragem de todos os jogadores Lichess'; @override String get switchSides => 'Trocar de lado'; @override - String get closingAccountWithdrawAppeal => 'Encerrar sua conta anulará seu apelo'; + String get closingAccountWithdrawAppeal => 'Encerrar a tua conta anula o teu apelo'; @override - String get ourEventTips => 'Nossas dicas para organização de eventos'; + String get ourEventTips => 'Os nossos conselhos para organizar eventos'; @override String get instructions => 'Instruções'; @override - String get showMeEverything => 'Mostrar tudo'; + String get showMeEverything => 'Mostra-me tudo'; @override - String get lichessPatronInfo => 'Lichess é um software de código aberto, totalmente grátis e sem fins lucrativos. Todos os custos operacionais, de desenvolvimento, e os conteúdos são financiados unicamente através de doações de usuários.'; + String get lichessPatronInfo => 'Lichess é uma instituição de caridade e software de código aberto totalmente livre.\nTodos os custos operacionais, de desenvolvimento e conteúdo são financiados exclusivamente por doações de usuários.'; @override String get nothingToSeeHere => 'Nada para ver aqui no momento.'; @@ -4053,8 +4082,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'O seu adversário deixou a partida. Você pode reivindicar vitória em $count segundos.', - one: 'O seu adversário deixou a partida. Você pode reivindicar vitória em $count segundo.', + other: 'O teu adversário deixou a partida. Podes reivindicar vitória em $count segundos.', + one: 'O teu adversário deixou a partida. Podes reivindicar vitória em $count segundo.', ); return '$_temp0'; } @@ -4064,8 +4093,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Mate em $count lances', - one: 'Mate em $count lance', + other: 'Xeque-mate em $count meio-movimentos', + one: 'Xeque-mate em $count meio-movimento', ); return '$_temp0'; } @@ -4075,8 +4104,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count capivaradas', - one: '$count capivarada', + other: '$count erros graves', + one: '$count erro grave', ); return '$_temp0'; } @@ -4108,8 +4137,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count jogadores conectados', - one: '$count jogadores conectados', + other: '$count jogadores', + one: '$count jogador', ); return '$_temp0'; } @@ -4119,8 +4148,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count partidas', - one: '$count partida', + other: '$count jogos', + one: '$count jogo', ); return '$_temp0'; } @@ -4130,8 +4159,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Rating $count após $param2 partidas', - one: 'Rating $count em $param2 jogo', + other: '$param2 partidas $count avaliadas', + one: '$param2 partida $count avaliada', ); return '$_temp0'; } @@ -4141,8 +4170,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count Favoritos', - one: '$count Favoritos', + other: '$count favoritos', + one: '$count favorito', ); return '$_temp0'; } @@ -4153,7 +4182,7 @@ class AppLocalizationsPt extends AppLocalizations { count, locale: localeName, other: '$count dias', - one: '$count dias', + one: '$count dia', ); return '$_temp0'; } @@ -4164,7 +4193,7 @@ class AppLocalizationsPt extends AppLocalizations { count, locale: localeName, other: '$count horas', - one: '$count horas', + one: '$count hora', ); return '$_temp0'; } @@ -4184,9 +4213,9 @@ class AppLocalizationsPt extends AppLocalizations { String rankIsUpdatedEveryNbMinutes(int count) { String _temp0 = intl.Intl.pluralLogic( count, - locale: localeName, - other: 'O ranking é atualizado a cada $count minutos', - one: 'O ranking é atualizado a cada $count minutos', + locale: localeName, + other: 'As posições são atualizadas a cada $count minutos', + one: 'As posições são atualizadas a cada minuto', ); return '$_temp0'; } @@ -4197,7 +4226,7 @@ class AppLocalizationsPt extends AppLocalizations { count, locale: localeName, other: '$count problemas', - one: '$count quebra-cabeça', + one: '$count problema', ); return '$_temp0'; } @@ -4207,8 +4236,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count partidas contra você', - one: '$count partidas contra você', + other: '$count jogos contigo', + one: '$count jogo contigo', ); return '$_temp0'; } @@ -4218,8 +4247,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count valendo pontos', - one: '$count valendo pontos', + other: '$count partidas a valer pontos', + one: '$count partida a valer pontos', ); return '$_temp0'; } @@ -4252,7 +4281,7 @@ class AppLocalizationsPt extends AppLocalizations { count, locale: localeName, other: '$count empates', - one: '$count empates', + one: '$count empate', ); return '$_temp0'; } @@ -4262,8 +4291,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count jogando', - one: '$count jogando', + other: '$count a jogar', + one: '$count a jogar', ); return '$_temp0'; } @@ -4274,7 +4303,7 @@ class AppLocalizationsPt extends AppLocalizations { count, locale: localeName, other: 'Dar $count segundos', - one: 'Dar $count segundos', + one: 'Dar $count segundo', ); return '$_temp0'; } @@ -4317,8 +4346,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '≥ $count jogos valendo pontos', - one: '≥ $count jogos valendo pontos', + other: '≥ $count partidas a valer pontos', + one: '≥ $count partida a valer pontos', ); return '$_temp0'; } @@ -4328,8 +4357,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '≥ $count $param2 partidas valendo pontos', - one: '≥ $count partida $param2 valendo pontos', + other: '≥ $count partidas de $param2 a valer pontos', + one: '≥ $count partida de $param2 a valer pontos', ); return '$_temp0'; } @@ -4339,8 +4368,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Você precisa jogar mais $count partidas de $param2 valendo pontos', - one: 'Você precisa jogar mais $count partida de $param2 valendo pontos', + other: 'Precisa de jogar mais $count jogos de $param2 a valer pontos', + one: 'Precisas de jogar mais $count jogo de $param2 a valer pontos', ); return '$_temp0'; } @@ -4350,8 +4379,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Você precisa jogar ainda $count partidas valendo pontos', - one: 'Você precisa jogar ainda $count partidas valendo pontos', + other: 'Tens de jogar mais $count jogos a valer pontos', + one: 'Tens de jogar mais $count jogo a valer pontos', ); return '$_temp0'; } @@ -4361,8 +4390,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count de partidas importadas', - one: '$count de partidas importadas', + other: '$count partidas importadas', + one: '$count partida importada', ); return '$_temp0'; } @@ -4384,7 +4413,7 @@ class AppLocalizationsPt extends AppLocalizations { count, locale: localeName, other: '$count seguidores', - one: '$count seguidores', + one: '$count seguidor', ); return '$_temp0'; } @@ -4394,8 +4423,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count seguidos', - one: '$count seguidos', + other: 'a seguir $count jogadores', + one: 'a seguir $count jogador', ); return '$_temp0'; } @@ -4405,8 +4434,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Menos que $count minutos', - one: 'Menos que $count minutos', + other: 'Menos de $count minutos', + one: 'Menos de $count minuto', ); return '$_temp0'; } @@ -4416,8 +4445,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count partidas em andamento', - one: '$count partidas em andamento', + other: '$count jogos a decorrer', + one: '$count jogo a decorrer', ); return '$_temp0'; } @@ -4428,7 +4457,7 @@ class AppLocalizationsPt extends AppLocalizations { count, locale: localeName, other: 'Máximo: $count caracteres.', - one: 'Máximo: $count caractere.', + one: 'Máximo: $count carácter.', ); return '$_temp0'; } @@ -4460,8 +4489,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count $param2 jogadores nesta semana.', - one: '$count $param2 jogador nesta semana.', + other: '$count jogadores ativos esta semana em $param2.', + one: '$count jogador ativo esta semana em $param2.', ); return '$_temp0'; } @@ -4471,8 +4500,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Disponível em $count idiomas!', - one: 'Disponível em $count idiomas!', + other: 'Disponível em $count línguas!', + one: 'Disponível em $count língua!', ); return '$_temp0'; } @@ -4482,8 +4511,8 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count segundos para fazer o primeiro lance', - one: '$count segundo para fazer o primeiro lance', + other: '$count segundos para jogar o primeiro movimento', + one: '$count segundo para jogar o primeiro movimento', ); return '$_temp0'; } @@ -4504,23 +4533,23 @@ class AppLocalizationsPt extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'e salvar as linhas de pré-lance de $count', - one: 'e salvar a linha de pré-lance de $count', + other: 'e guarda $count variantes de movimentos antecipados', + one: 'e guarda $count variante de movimentos antecipados', ); return '$_temp0'; } @override - String get stormMoveToStart => 'Mova para começar'; + String get stormMoveToStart => 'Faz um lance para começar'; @override - String get stormYouPlayTheWhitePiecesInAllPuzzles => 'Você joga com as peças brancas em todos os quebra-cabeças'; + String get stormYouPlayTheWhitePiecesInAllPuzzles => 'Jogas com as peças brancas em todos os problemas'; @override - String get stormYouPlayTheBlackPiecesInAllPuzzles => 'Você joga com as peças pretas em todos os quebra-cabeças'; + String get stormYouPlayTheBlackPiecesInAllPuzzles => 'Jogas com as peças pretas em todos os problemas'; @override - String get stormPuzzlesSolved => 'quebra-cabeças resolvidos'; + String get stormPuzzlesSolved => 'problemas resolvidos'; @override String get stormNewDailyHighscore => 'Novo recorde diário!'; @@ -4532,11 +4561,11 @@ class AppLocalizationsPt extends AppLocalizations { String get stormNewMonthlyHighscore => 'Novo recorde mensal!'; @override - String get stormNewAllTimeHighscore => 'Novo recorde de todos os tempos!'; + String get stormNewAllTimeHighscore => 'Novo recorde!'; @override String stormPreviousHighscoreWasX(String param) { - return 'Recorde anterior era $param'; + return 'O recorde anterior era $param'; } @override @@ -4551,7 +4580,7 @@ class AppLocalizationsPt extends AppLocalizations { String get stormScore => 'Pontuação'; @override - String get stormMoves => 'Lances'; + String get stormMoves => 'Total de lances'; @override String get stormAccuracy => 'Precisão'; @@ -4563,169 +4592,302 @@ class AppLocalizationsPt extends AppLocalizations { String get stormTime => 'Tempo'; @override - String get stormTimePerMove => 'Tempo por lance'; + String get stormTimePerMove => 'Tempo por jogada'; @override - String get stormHighestSolved => 'Classificação mais alta'; + String get stormHighestSolved => 'Problema mais difícil resolvido'; @override - String get stormPuzzlesPlayed => 'Quebra-cabeças jogados'; + String get stormPuzzlesPlayed => 'Problemas jogados'; @override - String get stormNewRun => 'Nova série (tecla de atalho: espaço)'; + String get stormNewRun => 'Nova partida (tecla: espaço)'; @override - String get stormEndRun => 'Finalizar série (tecla de atalho: Enter)'; + String get stormEndRun => 'Terminar partida (tecla: Enter)'; @override - String get stormHighscores => 'Melhores pontuações'; + String get stormHighscores => 'Recorde'; @override - String get stormViewBestRuns => 'Ver melhores séries'; + String get stormViewBestRuns => 'Ver as melhores partidas'; @override - String get stormBestRunOfDay => 'Melhor série do dia'; + String get stormBestRunOfDay => 'Melhor partida do dia'; @override - String get stormRuns => 'Séries'; + String get stormRuns => 'Partidas'; @override - String get stormGetReady => 'Prepare-se!'; + String get stormGetReady => 'Preparar!'; @override - String get stormWaitingForMorePlayers => 'Esperando mais jogadores entrarem...'; + String get stormWaitingForMorePlayers => 'À espera de mais jogadores...'; @override - String get stormRaceComplete => 'Corrida concluída!'; + String get stormRaceComplete => 'Race concluída!'; @override - String get stormSpectating => 'Espectando'; + String get stormSpectating => 'A assistir'; @override - String get stormJoinTheRace => 'Entre na corrida!'; + String get stormJoinTheRace => 'Junta-te à corrida!'; @override String get stormStartTheRace => 'Começar a corrida'; @override String stormYourRankX(String param) { - return 'Sua classificação: $param'; + return 'A tua pontuação: $param'; } @override - String get stormWaitForRematch => 'Esperando por revanche'; + String get stormWaitForRematch => 'Espera pela desforra'; @override String get stormNextRace => 'Próxima corrida'; @override - String get stormJoinRematch => 'Junte-se a revanche'; + String get stormJoinRematch => 'Juntar-se à desforra'; @override - String get stormWaitingToStart => 'Esperando para começar'; + String get stormWaitingToStart => 'À espera de começar'; @override String get stormCreateNewGame => 'Criar um novo jogo'; @override - String get stormJoinPublicRace => 'Junte-se a uma corrida pública'; + String get stormJoinPublicRace => 'Junta-te a uma corrida pública'; @override - String get stormRaceYourFriends => 'Corra contra seus amigos'; + String get stormRaceYourFriends => 'Corre contra os teus amigos'; @override - String get stormSkip => 'pular'; + String get stormSkip => 'ignorar'; @override - String get stormSkipHelp => 'Você pode pular um movimento por corrida:'; + String get stormSkipHelp => 'Pode pular um movimento por corrida:'; @override - String get stormSkipExplanation => 'Pule este lance para preservar o seu combo! Funciona apenas uma vez por corrida.'; + String get stormSkipExplanation => 'Passa à frente esta jogada para preservares o teu combo! Só podes fazê-lo apenas uma vez por Race.'; @override - String get stormFailedPuzzles => 'Quebra-cabeças falhados'; + String get stormFailedPuzzles => 'Desafios falhados'; @override - String get stormSlowPuzzles => 'Quebra-cabeças lentos'; + String get stormSlowPuzzles => 'Desafios lentos'; @override - String get stormSkippedPuzzle => 'Quebra-cabeça pulado'; + String get stormSkippedPuzzle => 'Desafios saltados'; @override - String get stormThisWeek => 'Essa semana'; + String get stormThisWeek => 'Esta semana'; @override - String get stormThisMonth => 'Esse mês'; + String get stormThisMonth => 'Este mês'; @override - String get stormAllTime => 'Desde o início'; + String get stormAllTime => 'Desde sempre'; @override String get stormClickToReload => 'Clique para recarregar'; @override - String get stormThisRunHasExpired => 'Esta corrida acabou!'; + String get stormThisRunHasExpired => 'Esta sessão expirou!'; @override - String get stormThisRunWasOpenedInAnotherTab => 'Esta corrida foi aberta em outra aba!'; + String get stormThisRunWasOpenedInAnotherTab => 'Esta sessão foi aberta noutra aba!'; @override String stormXRuns(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count séries', - one: '1 tentativa', + other: '$count tentativas', + one: '1 partida', + ); + return '$_temp0'; + } + + @override + String stormPlayedNbRunsOfPuzzleStorm(int count, String param2) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'Jogou $count partidas de $param2', + one: 'Jogou uma partida de $param2', ); return '$_temp0'; } @override - String stormPlayedNbRunsOfPuzzleStorm(int count, String param2) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Jogou $count tentativas de $param2', - one: 'Jogou uma tentativa de $param2', - ); - return '$_temp0'; - } + String get streamerLichessStreamers => 'Streamers no Lichess'; + + @override + String get studyShareAndExport => 'Partilhar & exportar'; + + @override + String get studyStart => 'Iniciar'; +} + +/// The translations for Portuguese, as used in Brazil (`pt_BR`). +class AppLocalizationsPtBr extends AppLocalizationsPt { + AppLocalizationsPtBr(): super('pt_BR'); + + @override + String get mobileHomeTab => 'Início'; + + @override + String get mobilePuzzlesTab => 'Problemas'; + + @override + String get mobileToolsTab => 'Ferramentas'; + + @override + String get mobileWatchTab => 'Assistir'; + + @override + String get mobileSettingsTab => 'Ajustes'; + + @override + String get mobileMustBeLoggedIn => 'Você precisa estar logado para ver essa pagina.'; + + @override + String get mobileSystemColors => 'Cores do sistema'; + + @override + String get mobileFeedbackButton => 'Comentários'; + + @override + String get mobileOkButton => 'Ok'; + + @override + String get mobileSettingsHapticFeedback => 'Vibrar ao trocar'; + + @override + String get mobileSettingsImmersiveMode => 'Modo imerssivo'; + + @override + String get mobileSettingsImmersiveModeSubtitle => 'Ocultar a “interface” do sistema durante a reprodução. Use isto se você estiver incomodado com gestor de navegação do sistema nas bordas da tela. Aplica-se as telas dos jogos e desafios.'; + + @override + String get mobileNotFollowingAnyUser => 'Você não estar seguindo nenhum usuário.'; + + @override + String get mobileAllGames => 'Todos os jogos'; + + @override + String get mobileRecentSearches => 'Pesquisas recentes'; + + @override + String get mobileClearButton => 'Limpar'; + + @override + String mobilePlayersMatchingSearchTerm(String param) { + return 'Usuários com \"$param\"'; + } + + @override + String get mobileNoSearchResults => 'Sem Resultados'; + + @override + String get mobileAreYouSure => 'Você tem certeza?'; + + @override + String get mobilePuzzleStreakAbortWarning => 'Você perderá a sua sequência atual e sua pontuação será salva.'; + + @override + String get mobilePuzzleStormNothingToShow => 'Nada para mostrar aqui. Jogue algumas rodadas da Puzzle Storm.'; + + @override + String get mobileSharePuzzle => 'Tentar novamente este quebra-cabeça'; + + @override + String get mobileShareGameURL => 'Compartilhar URL do jogo'; + + @override + String get mobileShareGamePGN => 'Compartilhar PGN'; + + @override + String get mobileSharePositionAsFEN => 'Compartilhar posição como FEN'; + + @override + String get mobileShowVariations => 'Mostrar setas da variantes'; + + @override + String get mobileHideVariation => 'Ocultar variante forçada'; + + @override + String get mobileShowComments => 'Mostrar comentários'; + + @override + String get mobilePuzzleStormConfirmEndRun => 'Você quer terminar o turno?'; + + @override + String get mobilePuzzleStormFilterNothingToShow => 'Nada para mostrar aqui, por favor, altere os filtros'; + + @override + String get mobileCancelTakebackOffer => 'Cancelar oferta de revanche'; + + @override + String get mobileCancelDrawOffer => 'Cancelar oferta de revanche'; + + @override + String get mobileWaitingForOpponentToJoin => 'Esperando por um oponente...'; + + @override + String get mobileBlindfoldMode => 'Venda'; + + @override + String get mobileLiveStreamers => 'Streamers do Lichess'; + + @override + String get mobileCustomGameJoinAGame => 'Entrar em um jogo'; + + @override + String get mobileCorrespondenceClearSavedMove => 'Limpar movimento salvos'; + + @override + String get mobileSomethingWentWrong => 'Houve algum problema.'; + + @override + String get mobileShowResult => 'Mostrar resultado'; @override - String get streamerLichessStreamers => 'Streamers do Lichess'; + String get mobilePuzzleThemesSubtitle => 'Jogue quebra-cabeças de suas aberturas favoritas, ou escolha um tema.'; @override - String get studyShareAndExport => 'Compartilhar & exportar'; + String get mobilePuzzleStormSubtitle => 'Resolva quantos quebra-cabeças for possível em 3 minutos.'; @override - String get studyStart => 'Iniciar'; -} + String mobileGreeting(String param) { + return 'Olá, $param'; + } -/// The translations for Portuguese, as used in Portugal (`pt_PT`). -class AppLocalizationsPtPt extends AppLocalizationsPt { - AppLocalizationsPtPt(): super('pt_PT'); + @override + String get mobileGreetingWithoutName => 'Olá'; @override String get activityActivity => 'Atividade'; @override - String get activityHostedALiveStream => 'Criou uma livestream'; + String get activityHostedALiveStream => 'Iniciou uma transmissão ao vivo'; @override String activityRankedInSwissTournament(String param1, String param2) { - return 'Classificado #$param1 em $param2'; + return 'Classificado #$param1 entre $param2'; } @override - String get activitySignedUp => 'Registou-se no lichess.org'; + String get activitySignedUp => 'Registrou-se no lichess'; @override String activitySupportedNbMonths(int count, String param2) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Apoiou o lichess.org durante $count meses como $param2', - one: 'Apoiou o lichess.org durante $count mês como $param2', + other: 'Contribuiu para o lichess.org por $count meses como $param2', + one: 'Contribuiu para o lichess.org por $count mês como $param2', ); return '$_temp0'; } @@ -4746,8 +4908,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Resolveu $count problemas', - one: 'Resolveu $count problema', + other: 'Resolveu $count quebra-cabeças táticos', + one: 'Resolveu $count quebra-cabeça tático', ); return '$_temp0'; } @@ -4757,8 +4919,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Jogou $count jogos de $param2', - one: 'Jogou $count jogo de $param2', + other: 'Jogou $count partidas de $param2', + one: 'Jogou $count partida de $param2', ); return '$_temp0'; } @@ -4779,8 +4941,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Fez $count jogadas', - one: 'Fez $count jogada', + other: 'Jogou $count movimentos', + one: 'Jogou $count movimento', ); return '$_temp0'; } @@ -4834,8 +4996,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Criou $count exibições simultâneas', - one: 'Criou $count exibição simultânea', + other: 'Hospedou $count exibições simultâneas', + one: 'Hospedou $count exibição simultânea', ); return '$_temp0'; } @@ -4867,8 +5029,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Competiu em $count torneios', - one: 'Competiu em $count torneio', + other: 'Competiu em $count torneios arena', + one: 'Competiu em $count torneio arena', ); return '$_temp0'; } @@ -4878,8 +5040,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Qualificado #$count (nos $param2% melhores) com $param3 jogos em $param4', - one: 'Qualificado #$count (nos $param2% melhores) com $param3 jogo em $param4', + other: 'Classificado #$count (top $param2%) com $param3 jogos em $param4', + one: 'Classificado #$count (top $param2%) com $param3 jogo em $param4', ); return '$_temp0'; } @@ -4900,8 +5062,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Entrou em $count equipas', - one: 'Entrou em $count equipa', + other: 'Entrou nas $count equipes', + one: 'Entrou na $count equipe', ); return '$_temp0'; } @@ -4910,7 +5072,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get broadcastBroadcasts => 'Transmissões'; @override - String get broadcastLiveBroadcasts => 'Transmissões do torneio em direto'; + String get broadcastLiveBroadcasts => 'Transmissões ao vivo do torneio'; @override String challengeChallengesX(String param1) { @@ -4924,17 +5086,17 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get challengeChallengeDeclined => 'Desafio recusado'; @override - String get challengeChallengeAccepted => 'Desafio aceite!'; + String get challengeChallengeAccepted => 'Desafio aceito!'; @override String get challengeChallengeCanceled => 'Desafio cancelado.'; @override - String get challengeRegisterToSendChallenges => 'Por favor regista-te para enviar desafios.'; + String get challengeRegisterToSendChallenges => 'Por favor, registre-se para enviar desafios.'; @override String challengeYouCannotChallengeX(String param) { - return 'Não podes desafiar $param.'; + return 'Você não pode desafiar $param.'; } @override @@ -4944,12 +5106,12 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String challengeYourXRatingIsTooFarFromY(String param1, String param2) { - return 'O teu ranking $param1 esta muito distante de $param2.'; + return 'O seu rating $param1 é muito diferente de $param2.'; } @override String challengeCannotChallengeDueToProvisionalXRating(String param) { - return 'Não podes desafiar devido a ranking provisório $param.'; + return 'Não pode desafiar devido ao rating provisório de $param.'; } @override @@ -4958,52 +5120,52 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get challengeDeclineGeneric => 'Não estou a aceitar desafios no momento.'; + String get challengeDeclineGeneric => 'Não estou aceitando desafios no momento.'; @override String get challengeDeclineLater => 'Este não é o momento certo para mim, por favor pergunte novamente mais tarde.'; @override - String get challengeDeclineTooFast => 'Este controlo de tempo é muito rápido para mim, por favor, desafie-me novamente com um jogo mais lento.'; + String get challengeDeclineTooFast => 'Este controle de tempo é muito rápido para mim, por favor, desafie novamente com um jogo mais lento.'; @override - String get challengeDeclineTooSlow => 'Este controlo de tempo é muito lento para mim, por favor, desafie-me novamente com um jogo mais rápido.'; + String get challengeDeclineTooSlow => 'Este controle de tempo é muito lento para mim, por favor, desafie novamente com um jogo mais rápido.'; @override - String get challengeDeclineTimeControl => 'Não estou a aceitar desafios com este controlo de tempo.'; + String get challengeDeclineTimeControl => 'Não estou aceitando desafios com estes controles de tempo.'; @override - String get challengeDeclineRated => 'Por favor, envie-me um desafio a valer para a classificação.'; + String get challengeDeclineRated => 'Por favor, envie-me um desafio ranqueado.'; @override String get challengeDeclineCasual => 'Por favor, envie-me um desafio amigável.'; @override - String get challengeDeclineStandard => 'Não estou a aceitar desafios de variante, de momento.'; + String get challengeDeclineStandard => 'Não estou aceitando desafios de variantes no momento.'; @override - String get challengeDeclineVariant => 'Não estou disposto a jogar essa variante, de momento.'; + String get challengeDeclineVariant => 'Não estou a fim de jogar esta variante no momento.'; @override - String get challengeDeclineNoBot => 'Não estou a aceitar desafios de bots.'; + String get challengeDeclineNoBot => 'Não estou aceitando desafios de robôs.'; @override - String get challengeDeclineOnlyBot => 'Apenas aceito desafios de bots.'; + String get challengeDeclineOnlyBot => 'Estou aceitando apenas desafios de robôs.'; @override - String get challengeInviteLichessUser => 'Ou convide um utilizador Lichess:'; + String get challengeInviteLichessUser => 'Ou convide um usuário Lichess:'; @override - String get contactContact => 'Contacto'; + String get contactContact => 'Contato'; @override - String get contactContactLichess => 'Contactar o Lichess'; + String get contactContactLichess => 'Entrar em contato com Lichess'; @override - String get patronDonate => 'Doar'; + String get patronDonate => 'Doação'; @override - String get patronLichessPatron => 'Patrono do Lichess'; + String get patronLichessPatron => 'Apoie o Lichess'; @override String perfStatPerfStats(String param) { @@ -5011,46 +5173,46 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get perfStatViewTheGames => 'Ver as partidas'; + String get perfStatViewTheGames => 'Ver os jogos'; @override String get perfStatProvisional => 'provisório'; @override - String get perfStatNotEnoughRatedGames => 'Não foi jogado um número suficiente de partidas a pontuar para estabelecer uma pontuação de confiança.'; + String get perfStatNotEnoughRatedGames => 'Não foram jogadas partidas suficientes valendo rating para estabelecer uma classificação confiável.'; @override String perfStatProgressOverLastXGames(String param) { - return 'Progresso nas últimas $param partidas:'; + return 'Progresso nos últimos $param jogos:'; } @override String perfStatRatingDeviation(String param) { - return 'Desvio da pontuação: $param.'; + return 'Desvio de pontuação: $param.'; } @override String perfStatRatingDeviationTooltip(String param1, String param2, String param3) { - return 'Um valor inferior significa que a classificação é mais estável. Acima de $param1, a classificação é considerada provisória. Para ser incluído nas classificações, esse valor deve estar abaixo de $param2 (xadrez padrão) ou $param3 (variantes).'; + return 'Um valor inferior indica que a pontuação é mais estável. Superior a $param1, a pontuação é classificada como provisória. Para ser incluída nas classificações, esse valor deve ser inferior a $param2 (xadrez padrão) ou $param3 (variantes).'; } @override String get perfStatTotalGames => 'Total de partidas'; @override - String get perfStatRatedGames => 'Total de partidas a pontuar'; + String get perfStatRatedGames => 'Partidas valendo pontos'; @override - String get perfStatTournamentGames => 'Partidas em torneios'; + String get perfStatTournamentGames => 'Jogos de torneio'; @override - String get perfStatBerserkedGames => 'Partidas no modo frenético'; + String get perfStatBerserkedGames => 'Partidas Berserked'; @override - String get perfStatTimeSpentPlaying => 'Tempo passado a jogar'; + String get perfStatTimeSpentPlaying => 'Tempo jogando'; @override - String get perfStatAverageOpponent => 'Pontuação média dos adversários'; + String get perfStatAverageOpponent => 'Pontuação média do adversário'; @override String get perfStatVictories => 'Vitórias'; @@ -5062,7 +5224,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get perfStatDisconnections => 'Desconexões'; @override - String get perfStatNotEnoughGames => 'Não foram jogadas partidas suficientes'; + String get perfStatNotEnoughGames => 'Jogos insuficientes jogados'; @override String perfStatHighestRating(String param) { @@ -5071,19 +5233,19 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String perfStatLowestRating(String param) { - return 'Pontuação mais baixa: $param'; + return 'Rating mais baixo: $param'; } @override String perfStatFromXToY(String param1, String param2) { - return 'de $param1 a $param2'; + return 'de $param1 para $param2'; } @override - String get perfStatWinningStreak => 'Vitórias consecutivas'; + String get perfStatWinningStreak => 'Série de Vitórias'; @override - String get perfStatLosingStreak => 'Derrotas consecutivas'; + String get perfStatLosingStreak => 'Série de derrotas'; @override String perfStatLongestStreak(String param) { @@ -5096,16 +5258,16 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get perfStatBestRated => 'Melhores vitórias a pontuar'; + String get perfStatBestRated => 'Melhores vitórias valendo pontuação'; @override - String get perfStatGamesInARow => 'Partidas jogadas de seguida'; + String get perfStatGamesInARow => 'Partidas jogadas seguidas'; @override String get perfStatLessThanOneHour => 'Menos de uma hora entre partidas'; @override - String get perfStatMaxTimePlaying => 'Tempo máximo passado a jogar'; + String get perfStatMaxTimePlaying => 'Tempo máximo jogando'; @override String get perfStatNow => 'agora'; @@ -5114,7 +5276,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get preferencesPreferences => 'Preferências'; @override - String get preferencesDisplay => 'Mostrar'; + String get preferencesDisplay => 'Exibição'; @override String get preferencesPrivacy => 'Privacidade'; @@ -5126,58 +5288,58 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get preferencesPieceAnimation => 'Animação das peças'; @override - String get preferencesMaterialDifference => 'Diferença de material'; + String get preferencesMaterialDifference => 'Diferença material'; @override - String get preferencesBoardHighlights => 'Destacar as casas do tabuleiro (último movimento e xeque)'; + String get preferencesBoardHighlights => 'Destacar casas do tabuleiro (último movimento e xeque)'; @override - String get preferencesPieceDestinations => 'Destino das peças (movimentos válidos e antecipados)'; + String get preferencesPieceDestinations => 'Destino das peças (movimentos válidos e pré-movimentos)'; @override String get preferencesBoardCoordinates => 'Coordenadas do tabuleiro (A-H, 1-8)'; @override - String get preferencesMoveListWhilePlaying => 'Lista de movimentos'; + String get preferencesMoveListWhilePlaying => 'Lista de movimentos durante a partida'; @override - String get preferencesPgnPieceNotation => 'Anotação de movimentos'; + String get preferencesPgnPieceNotation => 'Modo de notação das jogadas'; @override - String get preferencesChessPieceSymbol => 'Usar símbolo das peças'; + String get preferencesChessPieceSymbol => 'Símbolo da peça'; @override - String get preferencesPgnLetter => 'Usar letras (K, Q, R, B, N)'; + String get preferencesPgnLetter => 'Letra (K, Q, R, B, N)'; @override - String get preferencesZenMode => 'Modo zen'; + String get preferencesZenMode => 'Modo Zen'; @override - String get preferencesShowPlayerRatings => 'Mostrar classificações dos jogadores'; + String get preferencesShowPlayerRatings => 'Mostrar rating dos jogadores'; @override - String get preferencesShowFlairs => 'Mostrar os estilos do jogadores'; + String get preferencesShowFlairs => 'Mostrar emotes de usuário'; @override - String get preferencesExplainShowPlayerRatings => 'Isto permite ocultar todas as avaliações do site, para o ajudar a concentrar-se no xadrez. Os jogos continuam a poder ser avaliados, trata-se apenas do que poderá ver.'; + String get preferencesExplainShowPlayerRatings => 'Permite ocultar todas os ratings do site, para ajudar a se concentrar no jogo. As partidas continuam valendo rating.'; @override - String get preferencesDisplayBoardResizeHandle => 'Mostrar o cursor de redimensionamento do tabuleiro'; + String get preferencesDisplayBoardResizeHandle => 'Mostrar cursor de redimensionamento do tabuleiro'; @override String get preferencesOnlyOnInitialPosition => 'Apenas na posição inicial'; @override - String get preferencesInGameOnly => 'Apenas em Jogo'; + String get preferencesInGameOnly => 'Durante partidas'; @override - String get preferencesChessClock => 'Relógio de xadrez'; + String get preferencesChessClock => 'Relógio'; @override String get preferencesTenthsOfSeconds => 'Décimos de segundo'; @override - String get preferencesWhenTimeRemainingLessThanTenSeconds => 'Quando o tempo restante for < 10 segundos'; + String get preferencesWhenTimeRemainingLessThanTenSeconds => 'Quando o tempo restante < 10 segundos'; @override String get preferencesHorizontalGreenProgressBars => 'Barras de progresso verdes horizontais'; @@ -5189,25 +5351,25 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get preferencesGiveMoreTime => 'Dar mais tempo'; @override - String get preferencesGameBehavior => 'Funcionamento do jogo'; + String get preferencesGameBehavior => 'Comportamento do jogo'; @override - String get preferencesHowDoYouMovePieces => 'Como queres mexer as peças?'; + String get preferencesHowDoYouMovePieces => 'Como você move as peças?'; @override String get preferencesClickTwoSquares => 'Clicar em duas casas'; @override - String get preferencesDragPiece => 'Arrastar uma peça'; + String get preferencesDragPiece => 'Arrastar a peça'; @override - String get preferencesBothClicksAndDrag => 'Qualquer'; + String get preferencesBothClicksAndDrag => 'Ambas'; @override - String get preferencesPremovesPlayingDuringOpponentTurn => 'Jogadas antecipadas (jogadas durante a vez do adversário)'; + String get preferencesPremovesPlayingDuringOpponentTurn => 'Pré-movimentos (jogadas durante o turno do oponente)'; @override - String get preferencesTakebacksWithOpponentApproval => 'Voltar jogadas atrás (com aprovação do adversário)'; + String get preferencesTakebacksWithOpponentApproval => 'Voltar jogada (com aprovação do oponente)'; @override String get preferencesInCasualGamesOnly => 'Somente em jogos casuais'; @@ -5219,58 +5381,58 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get preferencesExplainPromoteToQueenAutomatically => 'Mantenha a tecla pressionada enquanto promove para desativar temporariamente a autopromoção'; @override - String get preferencesWhenPremoving => 'Quando mover antecipadamente'; + String get preferencesWhenPremoving => 'Quando pré-mover'; @override - String get preferencesClaimDrawOnThreefoldRepetitionAutomatically => 'Reivindicar empate automaticamente após uma repetição tripla'; + String get preferencesClaimDrawOnThreefoldRepetitionAutomatically => 'Reivindicar empate sobre a repetição tripla automaticamente'; @override - String get preferencesWhenTimeRemainingLessThanThirtySeconds => 'Quando o tempo restante for < 30 segundos'; + String get preferencesWhenTimeRemainingLessThanThirtySeconds => 'Quando o tempo restante < 30 segundos'; @override String get preferencesMoveConfirmation => 'Confirmação de movimento'; @override - String get preferencesExplainCanThenBeTemporarilyDisabled => 'Pode ser desativado durante um jogo com o menu do tabuleiro'; + String get preferencesExplainCanThenBeTemporarilyDisabled => 'Pode ser desativado durante a partida no menu do tabuleiro'; @override String get preferencesInCorrespondenceGames => 'Jogos por correspondência'; @override - String get preferencesCorrespondenceAndUnlimited => 'Por correspondência e ilimitado'; + String get preferencesCorrespondenceAndUnlimited => 'Por correspondência e sem limites'; @override - String get preferencesConfirmResignationAndDrawOffers => 'Confirmar desistências e propostas de empate'; + String get preferencesConfirmResignationAndDrawOffers => 'Confirmar abandono e oferta de empate'; @override - String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'Método de roque'; + String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'Maneira de rocar'; @override String get preferencesCastleByMovingTwoSquares => 'Mover o rei duas casas'; @override - String get preferencesCastleByMovingOntoTheRook => 'Mover o rei até à torre'; + String get preferencesCastleByMovingOntoTheRook => 'Mover o rei em direção à torre'; @override - String get preferencesInputMovesWithTheKeyboard => 'Introduzir movimentos com o teclado'; + String get preferencesInputMovesWithTheKeyboard => 'Fazer lances com escrita do teclado'; @override - String get preferencesInputMovesWithVoice => 'Insira movimentos com a sua voz'; + String get preferencesInputMovesWithVoice => 'Mova as peças com sua voz'; @override - String get preferencesSnapArrowsToValidMoves => 'Alinhar as setas para sítios para onde as peças se podem mover'; + String get preferencesSnapArrowsToValidMoves => 'Insira setas para movimentos válidos'; @override - String get preferencesSayGgWpAfterLosingOrDrawing => 'Dizer \"Good game, well played\" (Bom jogo, bem jogado) após uma derrota ou empate'; + String get preferencesSayGgWpAfterLosingOrDrawing => 'Diga \"Bom jogo, bem jogado\" após a derrota ou empate'; @override - String get preferencesYourPreferencesHaveBeenSaved => 'As tuas preferências foram guardadas.'; + String get preferencesYourPreferencesHaveBeenSaved => 'Suas preferências foram salvas.'; @override - String get preferencesScrollOnTheBoardToReplayMoves => 'Rolar no tabuleiro para repetir os movimentos'; + String get preferencesScrollOnTheBoardToReplayMoves => 'Use o scroll do mouse no tabuleiro para ir passando as jogadas'; @override - String get preferencesCorrespondenceEmailNotification => 'Notificações diárias por email listando seus jogos por correspondência'; + String get preferencesCorrespondenceEmailNotification => 'Email diário listando seus jogos por correspondência'; @override String get preferencesNotifyStreamStart => 'Streamer começou uma transmissão ao vivo'; @@ -5279,28 +5441,28 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get preferencesNotifyInboxMsg => 'Nova mensagem na caixa de entrada'; @override - String get preferencesNotifyForumMention => 'Um comentário do fórum menciona-o'; + String get preferencesNotifyForumMention => 'Você foi mencionado em um comentário do fórum'; @override - String get preferencesNotifyInvitedStudy => 'Convite para estudo'; + String get preferencesNotifyInvitedStudy => 'Convite para um estudo'; @override - String get preferencesNotifyGameEvent => 'Atualizações dos jogos por correspondência'; + String get preferencesNotifyGameEvent => 'Jogo por correspondência atualizado'; @override String get preferencesNotifyChallenge => 'Desafios'; @override - String get preferencesNotifyTournamentSoon => 'O torneio começará em breve'; + String get preferencesNotifyTournamentSoon => 'O torneio vai começar em breve'; @override - String get preferencesNotifyTimeAlarm => 'Está a acabar o tempo no jogo por correspondência'; + String get preferencesNotifyTimeAlarm => 'Está acabando o tempo no jogo por correspondência'; @override - String get preferencesNotifyBell => 'Notificação do sino no Lichess'; + String get preferencesNotifyBell => 'Notificação no Lichess'; @override - String get preferencesNotifyPush => 'Notificação do dispositivo quando não está no Lichess'; + String get preferencesNotifyPush => 'Notificação no dispositivo fora do Lichess'; @override String get preferencesNotifyWeb => 'Navegador'; @@ -5312,10 +5474,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get preferencesBellNotificationSound => 'Som da notificação'; @override - String get puzzlePuzzles => 'Problemas'; + String get puzzlePuzzles => 'Quebra-cabeças'; @override - String get puzzlePuzzleThemes => 'Temas de problemas'; + String get puzzlePuzzleThemes => 'Temas de quebra-cabeça'; @override String get puzzleRecommended => 'Recomendado'; @@ -5324,13 +5486,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get puzzlePhases => 'Fases'; @override - String get puzzleMotifs => 'Temas'; + String get puzzleMotifs => 'Motivos táticos'; @override String get puzzleAdvanced => 'Avançado'; @override - String get puzzleLengths => 'Comprimentos'; + String get puzzleLengths => 'Distância'; @override String get puzzleMates => 'Xeque-mates'; @@ -5345,42 +5507,42 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get puzzleSpecialMoves => 'Movimentos especiais'; @override - String get puzzleDidYouLikeThisPuzzle => 'Gostaste deste problema?'; + String get puzzleDidYouLikeThisPuzzle => 'Você gostou deste quebra-cabeças?'; @override - String get puzzleVoteToLoadNextOne => 'Vota para carregares o próximo!'; + String get puzzleVoteToLoadNextOne => 'Vote para carregar o próximo!'; @override - String get puzzleUpVote => 'Aprove o puzzle'; + String get puzzleUpVote => 'Votar a favor do quebra-cabeça'; @override - String get puzzleDownVote => 'Desaprove o puzzle'; + String get puzzleDownVote => 'Votar contra o quebra-cabeça'; @override - String get puzzleYourPuzzleRatingWillNotChange => 'A tua classificação de problemas não será alterada. Nota que os problemas não são uma competição. A classificação ajuda a selecionar os melhores problemas para o teu nível atual.'; + String get puzzleYourPuzzleRatingWillNotChange => 'Sua pontuação de quebra-cabeças não mudará. Note que os quebra-cabeças não são uma competição. A pontuação indica os quebra-cabeças que se adequam às suas habilidades.'; @override - String get puzzleFindTheBestMoveForWhite => 'Encontra a melhor jogada para as brancas.'; + String get puzzleFindTheBestMoveForWhite => 'Encontre o melhor lance para as brancas.'; @override - String get puzzleFindTheBestMoveForBlack => 'Encontra a melhor jogada para as pretas.'; + String get puzzleFindTheBestMoveForBlack => 'Encontre a melhor jogada para as pretas.'; @override String get puzzleToGetPersonalizedPuzzles => 'Para obter desafios personalizados:'; @override String puzzlePuzzleId(String param) { - return 'Problema $param'; + return 'Quebra-cabeça $param'; } @override - String get puzzlePuzzleOfTheDay => 'Problema do dia'; + String get puzzlePuzzleOfTheDay => 'Quebra-cabeça do dia'; @override - String get puzzleDailyPuzzle => 'Problema diário'; + String get puzzleDailyPuzzle => 'Quebra-cabeça diário'; @override - String get puzzleClickToSolve => 'Clica para resolveres'; + String get puzzleClickToSolve => 'Clique para resolver'; @override String get puzzleGoodMove => 'Boa jogada'; @@ -5389,42 +5551,42 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get puzzleBestMove => 'Melhor jogada!'; @override - String get puzzleKeepGoing => 'Continua…'; + String get puzzleKeepGoing => 'Continue…'; @override String get puzzlePuzzleSuccess => 'Sucesso!'; @override - String get puzzlePuzzleComplete => 'Problema resolvido!'; + String get puzzlePuzzleComplete => 'Quebra-cabeças concluído!'; @override String get puzzleByOpenings => 'Por abertura'; @override - String get puzzlePuzzlesByOpenings => 'Problemas por abertura'; + String get puzzlePuzzlesByOpenings => 'Quebra-cabeças por abertura'; @override - String get puzzleOpeningsYouPlayedTheMost => 'Aberturas que jogou mais vezes em partidas com rating'; + String get puzzleOpeningsYouPlayedTheMost => 'Aberturas que você mais jogou em partidas valendo pontos'; @override - String get puzzleUseFindInPage => 'Usar \"Localizar na página\" no menu do navegador para encontrar a sua abertura favorita!'; + String get puzzleUseFindInPage => 'Use a ferramenta \"Encontrar na página\" do navegador para encontrar sua abertura favorita!'; @override - String get puzzleUseCtrlF => 'Usar Ctrl+f para encontrar a sua abertura favorita!'; + String get puzzleUseCtrlF => 'Aperte Ctrl + F para encontrar sua abertura favorita!'; @override - String get puzzleNotTheMove => 'Não é esse movimento!'; + String get puzzleNotTheMove => 'O movimento não é este!'; @override - String get puzzleTrySomethingElse => 'Tenta outra coisa.'; + String get puzzleTrySomethingElse => 'Tente algo diferente.'; @override String puzzleRatingX(String param) { - return 'Pontuação: $param'; + return 'Rating: $param'; } @override - String get puzzleHidden => 'oculta'; + String get puzzleHidden => 'oculto'; @override String puzzleFromGameLink(String param) { @@ -5432,7 +5594,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get puzzleContinueTraining => 'Continuar o treino'; + String get puzzleContinueTraining => 'Continue treinando'; @override String get puzzleDifficultyLevel => 'Nível de dificuldade'; @@ -5441,88 +5603,88 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get puzzleNormal => 'Normal'; @override - String get puzzleEasier => 'Mais fáceis'; + String get puzzleEasier => 'Fácil'; @override - String get puzzleEasiest => 'Mais fáceis'; + String get puzzleEasiest => 'Muito fácil'; @override - String get puzzleHarder => 'Mais difíceis'; + String get puzzleHarder => 'Difícil'; @override - String get puzzleHardest => 'Mais difíceis'; + String get puzzleHardest => 'Muito difícil'; @override String get puzzleExample => 'Exemplo'; @override - String get puzzleAddAnotherTheme => 'Adicionar outro tema'; + String get puzzleAddAnotherTheme => 'Adicionar um outro tema'; @override - String get puzzleNextPuzzle => 'Próximo desafio'; + String get puzzleNextPuzzle => 'Próximo quebra-cabeça'; @override - String get puzzleJumpToNextPuzzleImmediately => 'Saltar imediatamente para o próximo problema'; + String get puzzleJumpToNextPuzzleImmediately => 'Ir para o próximo problema automaticamente'; @override - String get puzzlePuzzleDashboard => 'Painel de controlo dos problemas'; + String get puzzlePuzzleDashboard => 'Painel do quebra-cabeças'; @override - String get puzzleImprovementAreas => 'Áreas a melhorar'; + String get puzzleImprovementAreas => 'Áreas de aprimoramento'; @override String get puzzleStrengths => 'Pontos fortes'; @override - String get puzzleHistory => 'Histórico de problemas'; + String get puzzleHistory => 'Histórico de quebra-cabeças'; @override String get puzzleSolved => 'resolvido'; @override - String get puzzleFailed => 'incorreto'; + String get puzzleFailed => 'falhou'; @override - String get puzzleStreakDescription => 'Resolve puzzles progressivamente mais difíceis e estabelece uma sequência de vitórias. Não há relógio, demora o teu tempo. Um movimento errado e o jogo acaba! No entanto, podes saltar um movimento por sessão.'; + String get puzzleStreakDescription => 'Resolva quebra-cabeças progressivamente mais difíceis e construa uma sequência de vitórias. Não há relógio, então tome seu tempo. Um movimento errado e o jogo acaba! Porém, você pode pular um movimento por sessão.'; @override String puzzleYourStreakX(String param) { - return 'Vitórias consecutivas: $param'; + return 'Sua sequência: $param'; } @override - String get puzzleStreakSkipExplanation => 'Salta este movimento para preservar a tua sequência! Apenas funciona uma vez por sessão.'; + String get puzzleStreakSkipExplanation => 'Pule este lance para preservar a sua sequência! Funciona apenas uma vez por corrida.'; @override - String get puzzleContinueTheStreak => 'Continua a sequência'; + String get puzzleContinueTheStreak => 'Continuar a sequência'; @override - String get puzzleNewStreak => 'Nova sequência de vitórias'; + String get puzzleNewStreak => 'Nova sequência'; @override String get puzzleFromMyGames => 'Dos meus jogos'; @override - String get puzzleLookupOfPlayer => 'Pesquise problemas de jogos de um jogador'; + String get puzzleLookupOfPlayer => 'Pesquise quebra-cabeças de um jogador específico'; @override String puzzleFromXGames(String param) { - return 'Puzzles dos jogos de $param'; + return 'Problemas de $param\' jogos'; } @override - String get puzzleSearchPuzzles => 'Pesquisar desafios'; + String get puzzleSearchPuzzles => 'Procurar quebra-cabeças'; @override - String get puzzleFromMyGamesNone => 'Não tens problemas na base de dados, mas Lichess adora-te muito.\n\nJoga partidas semi-rápidas e clássicas para aumentares a probabilidade de teres um problema adicionado!'; + String get puzzleFromMyGamesNone => 'Você não tem nenhum quebra-cabeça no banco de dados, mas o Lichess ainda te ama muito.\nJogue partidas rápidas e clássicas para aumentar suas chances de ter um desafio seu adicionado!'; @override String puzzleFromXGamesFound(String param1, String param2) { - return '$param1 problemas encontrados em $param2 partidas'; + return '$param1 quebra-cabeças encontrados em $param2 partidas'; } @override - String get puzzlePuzzleDashboardDescription => 'Treinar, analisar, melhorar'; + String get puzzlePuzzleDashboardDescription => 'Treine, analise, melhore'; @override String puzzlePercentSolved(String param) { @@ -5530,13 +5692,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get puzzleNoPuzzlesToShow => 'Nada para mostrar, joga alguns problemas primeiro!'; + String get puzzleNoPuzzlesToShow => 'Não há nada para mostrar aqui, jogue alguns quebra-cabeças primeiro!'; @override String get puzzleImprovementAreasDescription => 'Treine estes para otimizar o seu progresso!'; @override - String get puzzleStrengthDescription => 'Você tem melhor desempenho nestes temas'; + String get puzzleStrengthDescription => 'Sua perfomance é melhor nesses temas'; @override String puzzlePlayedXTimes(int count) { @@ -5544,7 +5706,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { count, locale: localeName, other: 'Jogado $count vezes', - one: 'Jogado $count vez', + one: 'Jogado $count vezes', ); return '$_temp0'; } @@ -5554,8 +5716,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count pontos abaixo da sua pontuação de problemas', - one: 'Um ponto abaixo da sua pontuação de problemas', + other: '$count pontos abaixo da sua classificação de quebra-cabeças', + one: 'Um ponto abaixo da sua classificação de quebra-cabeças', ); return '$_temp0'; } @@ -5565,8 +5727,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count pontos acima da sua pontuação de problemas', - one: 'Um ponto acima da sua pontuação de problemas', + other: '$count pontos acima da sua classificação de quebra-cabeças', + one: 'Um ponto acima da sua classificação de quebra-cabeças', ); return '$_temp0'; } @@ -5576,8 +5738,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count problemas feitos', - one: '$count problema feito', + other: '$count jogados', + one: '$count jogado', ); return '$_temp0'; } @@ -5587,8 +5749,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count para repetir', - one: '$count para repetir', + other: '$count a serem repetidos', + one: '$count a ser repetido', ); return '$_temp0'; } @@ -5597,136 +5759,136 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get puzzleThemeAdvancedPawn => 'Peão avançado'; @override - String get puzzleThemeAdvancedPawnDescription => 'A chave do tático é um peão a promover ou a ameaçar promover.'; + String get puzzleThemeAdvancedPawnDescription => 'Um peão prestes a ser promovido ou à beira da promoção é um tema tático.'; @override String get puzzleThemeAdvantage => 'Vantagem'; @override - String get puzzleThemeAdvantageDescription => 'Aproveita a oportunidade de obter uma vantagem decisiva. (200cp ≤ aval ≤ 600cp)'; + String get puzzleThemeAdvantageDescription => 'Aproveite a sua chance de ter uma vantagem decisiva. (200cp ≤ eval ≤ 600cp)'; @override String get puzzleThemeAnastasiaMate => 'Mate Anastasia'; @override - String get puzzleThemeAnastasiaMateDescription => 'Um cavalo e uma torre ou dama cooperam para prender o rei inimigo entre um lado do tabuleiro e outra peça inimiga.'; + String get puzzleThemeAnastasiaMateDescription => 'Um cavalo e uma torre se unem para prender o rei do oponente entre a lateral do tabuleiro e uma peça amiga.'; @override - String get puzzleThemeArabianMate => 'Mate Árabe'; + String get puzzleThemeArabianMate => 'Mate árabe'; @override - String get puzzleThemeArabianMateDescription => 'Um cavalo e uma torre cooperam para prenderem o rei inimigo no canto do tabuleiro.'; + String get puzzleThemeArabianMateDescription => 'Um cavalo e uma torre se unem para prender o rei inimigo em um canto do tabuleiro.'; @override - String get puzzleThemeAttackingF2F7 => 'Atacar f2 ou f7'; + String get puzzleThemeAttackingF2F7 => 'Atacando f2 ou f7'; @override - String get puzzleThemeAttackingF2F7Description => 'Um ataque ao peão de f2 ou f7, como a abertura \"Fried Liver\".'; + String get puzzleThemeAttackingF2F7Description => 'Um ataque focado no peão de f2 e no peão de f7, como na abertura frango frito.'; @override String get puzzleThemeAttraction => 'Atração'; @override - String get puzzleThemeAttractionDescription => 'Uma troca ou sacrifício que encoraja ou força uma peça adversária a ir para uma casa que permite um tático.'; + String get puzzleThemeAttractionDescription => 'Uma troca ou sacrifício encorajando ou forçando uma peça do oponente a uma casa que permite uma sequência tática.'; @override - String get puzzleThemeBackRankMate => 'Mate de corredor'; + String get puzzleThemeBackRankMate => 'Mate do corredor'; @override - String get puzzleThemeBackRankMateDescription => 'Dá mate ao rei na fila inicial, quando está preso pelas suas próprias peças.'; + String get puzzleThemeBackRankMateDescription => 'Dê o xeque-mate no rei na última fileira, quando ele estiver bloqueado pelas próprias peças.'; @override - String get puzzleThemeBishopEndgame => 'Final de bispos'; + String get puzzleThemeBishopEndgame => 'Finais de bispo'; @override - String get puzzleThemeBishopEndgameDescription => 'Um final apenas com bispos e peões.'; + String get puzzleThemeBishopEndgameDescription => 'Final com somente bispos e peões.'; @override - String get puzzleThemeBodenMate => 'Mate Boden'; + String get puzzleThemeBodenMate => 'Mate de Boden'; @override - String get puzzleThemeBodenMateDescription => 'Dois bispos em diagonais perpendiculares dão mate ao rei inimigo obstruído por peças aliadas.'; + String get puzzleThemeBodenMateDescription => 'Dois bispos atacantes em diagonais cruzadas dão um mate em um rei obstruído por peças amigas.'; @override String get puzzleThemeCastling => 'Roque'; @override - String get puzzleThemeCastlingDescription => 'Proteger o rei e trazer a torre para o ataque.'; + String get puzzleThemeCastlingDescription => 'Traga o seu rei para a segurança, e prepare sua torre para o ataque.'; @override - String get puzzleThemeCapturingDefender => 'Capturar o defensor'; + String get puzzleThemeCapturingDefender => 'Capture o defensor'; @override - String get puzzleThemeCapturingDefenderDescription => 'Remove uma peça que seja crítica para a defesa de outra peça, permitindo que esta seja capturada na próxima jogada.'; + String get puzzleThemeCapturingDefenderDescription => 'Remover uma peça que seja importante na defesa de outra, permitindo que agora a peça indefesa seja capturada na jogada seguinte.'; @override - String get puzzleThemeCrushing => 'Esmagar'; + String get puzzleThemeCrushing => 'Punindo'; @override - String get puzzleThemeCrushingDescription => 'Descobre um erro grave do oponente e obtém uma vantagem esmagadora. (avaliação ≥ 600cp)'; + String get puzzleThemeCrushingDescription => 'Perceba a capivarada do oponente para obter uma vantagem decisiva. (vantagem ≥ 600cp)'; @override - String get puzzleThemeDoubleBishopMate => 'Mate com dois bispos'; + String get puzzleThemeDoubleBishopMate => 'Mate de dois bispos'; @override - String get puzzleThemeDoubleBishopMateDescription => 'Dois bispos em diagonais adjacentes dão mate ao rei inimigo obstruído por peças aliadas.'; + String get puzzleThemeDoubleBishopMateDescription => 'Dois bispos atacantes em diagonais adjacentes dão um mate em um rei obstruído por peças amigas.'; @override - String get puzzleThemeDovetailMate => 'Mate cauda-de-andorinha'; + String get puzzleThemeDovetailMate => 'Mate da cauda de andorinha'; @override - String get puzzleThemeDovetailMateDescription => 'Uma dama dá mate ao rei inimigo cujas jogadas de escape estão bloqueadas por peças aliadas.'; + String get puzzleThemeDovetailMateDescription => 'Uma dama dá um mate em um rei adjacente, cujos únicos dois quadrados de fuga estão obstruídos por peças amigas.'; @override String get puzzleThemeEquality => 'Igualdade'; @override - String get puzzleThemeEqualityDescription => 'Recupera de uma posição perdedora e garante um empate ou uma posição de equilíbrio. (avaliação ≤ 200cp)'; + String get puzzleThemeEqualityDescription => 'Saia de uma posição perdida, e assegure um empate ou uma posição equilibrada. (aval ≤ 200cp)'; @override - String get puzzleThemeKingsideAttack => 'Ataque no lado do rei'; + String get puzzleThemeKingsideAttack => 'Ataque na ala do Rei'; @override - String get puzzleThemeKingsideAttackDescription => 'Um ataque ao rei do adversário, após este ter feito roque menor (para o lado do rei).'; + String get puzzleThemeKingsideAttackDescription => 'Um ataque ao rei do oponente, após ele ter efetuado o roque curto.'; @override - String get puzzleThemeClearance => 'Limpeza'; + String get puzzleThemeClearance => 'Lance útil'; @override - String get puzzleThemeClearanceDescription => 'Uma jogada, com tempo, que limpa uma casa, fila, coluna ou diagonal para uma ideia tática subsequente.'; + String get puzzleThemeClearanceDescription => 'Um lance, às vezes consumindo tempos, que libera uma casa, fileira ou diagonal para uma ideia tática em seguida.'; @override String get puzzleThemeDefensiveMove => 'Movimento defensivo'; @override - String get puzzleThemeDefensiveMoveDescription => 'Um movimento ou sequência de movimentos precisos, necessários para evitar uma desvantagem, como por exemplo perda de material.'; + String get puzzleThemeDefensiveMoveDescription => 'Um movimento preciso ou sequência de movimentos que são necessários para evitar perda de material ou outra vantagem.'; @override String get puzzleThemeDeflection => 'Desvio'; @override - String get puzzleThemeDeflectionDescription => 'Uma jogada que distrai uma peça do adversário de outra função, como por exemplo, proteger uma casa chave. Às vezes também é chamado de sobrecarga.'; + String get puzzleThemeDeflectionDescription => 'Um movimento que desvia a peça do oponente da sua função, por exemplo a de defesa de outra peça ou a defesa de uma casa importante.'; @override String get puzzleThemeDiscoveredAttack => 'Ataque descoberto'; @override - String get puzzleThemeDiscoveredAttackDescription => 'Mover uma peça que estava a bloquear um ataque de uma peça de longo alcance, como por exemplo um cavalo que sai da frente de uma torre.'; + String get puzzleThemeDiscoveredAttackDescription => 'Mover uma peça que anteriormente bloqueava um ataque de uma peça de longo alcance, como por exemplo um cavalo liberando a coluna de uma torre.'; @override String get puzzleThemeDoubleCheck => 'Xeque duplo'; @override - String get puzzleThemeDoubleCheckDescription => 'Fazer xeque com duas peças ao mesmo tempo, como consequência de um ataque descoberto em que tanto a peça que move como a peça que é descoberta atacam o rei do adversário.'; + String get puzzleThemeDoubleCheckDescription => 'Dar Xeque com duas peças ao mesmo tempo, como resultado de um ataque descoberto onde tanto a peça que se move quanto a peça que estava sendo obstruída atacam o rei do oponente.'; @override - String get puzzleThemeEndgame => 'Final de jogo'; + String get puzzleThemeEndgame => 'Finais'; @override - String get puzzleThemeEndgameDescription => 'Uma tática durante a última fase do jogo.'; + String get puzzleThemeEndgameDescription => 'Tática durante a última fase do jogo.'; @override - String get puzzleThemeEnPassantDescription => 'Uma tática que envolve a regra de \"en passant\", onde um peão pode capturar um peão adversário que o ignorou usando o seu primeiro movimento de duas casas.'; + String get puzzleThemeEnPassantDescription => 'Uma tática envolvendo a regra do en passant, onde um peão pode capturar um peão do oponente que passou por ele usando seu movimento inicial de duas casas.'; @override String get puzzleThemeExposedKing => 'Rei exposto'; @@ -5735,273 +5897,273 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get puzzleThemeExposedKingDescription => 'Uma tática que envolve um rei com poucos defensores ao seu redor, muitas vezes levando a xeque-mate.'; @override - String get puzzleThemeFork => 'Garfo'; + String get puzzleThemeFork => 'Garfo (ou duplo)'; @override - String get puzzleThemeForkDescription => 'Uma jogada em que uma peça ataca duas peças do adversário simultaneamente.'; + String get puzzleThemeForkDescription => 'Um movimento onde a peça movida ataca duas peças de oponente de uma só vez.'; @override - String get puzzleThemeHangingPiece => 'Peça desprotegida'; + String get puzzleThemeHangingPiece => 'Peça pendurada'; @override - String get puzzleThemeHangingPieceDescription => 'Uma tática que envolve uma peça do adversário que não está suficientemente defendida e por isso pode ser capturada.'; + String get puzzleThemeHangingPieceDescription => 'Uma táctica que envolve uma peça indefesa do oponente ou insuficientemente defendida e livre para ser capturada.'; @override - String get puzzleThemeHookMate => 'Mate gancho'; + String get puzzleThemeHookMate => 'Xeque gancho'; @override - String get puzzleThemeHookMateDescription => 'Mate com uma torre, cavalo e peão em que o rei inimigo tem as jogadas de escape bloqueadas por um peão aliado.'; + String get puzzleThemeHookMateDescription => 'Xeque-mate com uma torre, um cavalo e um peão, juntamente com um peão inimigo, para limitar a fuga do rei.'; @override String get puzzleThemeInterference => 'Interferência'; @override - String get puzzleThemeInterferenceDescription => 'Jogar uma peça para uma casa entre duas peças do adversário deixando pelo menos uma delas desprotegia, como por exemplo um cavalo numa casa defendida entre duas torres.'; + String get puzzleThemeInterferenceDescription => 'Mover uma peça entre duas peças do oponente para deixar uma ou duas peças do oponente indefesas, como um cavalo em uma casa defendida por duas torres.'; @override - String get puzzleThemeIntermezzo => 'Intermezzo'; + String get puzzleThemeIntermezzo => 'Lance intermediário'; @override - String get puzzleThemeIntermezzoDescription => 'Em vez de jogares o movimento esperado, primeiro interpõe outro movimento colocando uma ameaça imediata à qual o oponente deve responder. Também conhecido como \"Zwischenzug\" ou jogada intermédia.'; + String get puzzleThemeIntermezzoDescription => 'Em vez de jogar o movimento esperado, primeiro realiza outro movimento criando uma ameaça imediata a que o oponente deve responder. Também conhecido como \"Zwischenzug\" ou \"In between\".'; @override - String get puzzleThemeKnightEndgame => 'Final de cavalo'; + String get puzzleThemeKnightEndgame => 'Finais de Cavalo'; @override - String get puzzleThemeKnightEndgameDescription => 'Um final de jogo com apenas cavalos e peões.'; + String get puzzleThemeKnightEndgameDescription => 'Um final jogado apenas com cavalos e peões.'; @override - String get puzzleThemeLong => 'Problema longo'; + String get puzzleThemeLong => 'Quebra-cabeças longo'; @override - String get puzzleThemeLongDescription => 'Três movimentos para ganhar.'; + String get puzzleThemeLongDescription => 'Vitória em três movimentos.'; @override - String get puzzleThemeMaster => 'Jogos de mestres'; + String get puzzleThemeMaster => 'Partidas de mestres'; @override - String get puzzleThemeMasterDescription => 'Problemas de partidas jogadas por jogadores titulados.'; + String get puzzleThemeMasterDescription => 'Quebra-cabeças de partidas jogadas por jogadores titulados.'; @override - String get puzzleThemeMasterVsMaster => 'Jogos de Mestre vs Mestre'; + String get puzzleThemeMasterVsMaster => 'Partidas de Mestre vs Mestre'; @override - String get puzzleThemeMasterVsMasterDescription => 'Partidas jogadas entre dois jogadores titulados.'; + String get puzzleThemeMasterVsMasterDescription => 'Quebra-cabeças de partidas entre dois jogadores titulados.'; @override String get puzzleThemeMate => 'Xeque-mate'; @override - String get puzzleThemeMateDescription => 'Vence a partida com estilo.'; + String get puzzleThemeMateDescription => 'Vença o jogo com estilo.'; @override String get puzzleThemeMateIn1 => 'Mate em 1'; @override - String get puzzleThemeMateIn1Description => 'Faz xeque-mate num movimento.'; + String get puzzleThemeMateIn1Description => 'Dar xeque-mate em um movimento.'; @override String get puzzleThemeMateIn2 => 'Mate em 2'; @override - String get puzzleThemeMateIn2Description => 'Faz xeque-mate em dois movimentos.'; + String get puzzleThemeMateIn2Description => 'Dar xeque-mate em dois movimentos.'; @override String get puzzleThemeMateIn3 => 'Mate em 3'; @override - String get puzzleThemeMateIn3Description => 'Faz xeque-mate em três movimentos.'; + String get puzzleThemeMateIn3Description => 'Dar xeque-mate em três movimentos.'; @override String get puzzleThemeMateIn4 => 'Mate em 4'; @override - String get puzzleThemeMateIn4Description => 'Faz xeque-mate em quatro movimentos.'; + String get puzzleThemeMateIn4Description => 'Dar xeque-mate em 4 movimentos.'; @override String get puzzleThemeMateIn5 => 'Mate em 5 ou mais'; @override - String get puzzleThemeMateIn5Description => 'Descobre uma longa sequência que leva ao xeque-mate.'; + String get puzzleThemeMateIn5Description => 'Descubra uma longa sequência de mate.'; @override String get puzzleThemeMiddlegame => 'Meio-jogo'; @override - String get puzzleThemeMiddlegameDescription => 'Uma tática durante a segunda fase do jogo.'; + String get puzzleThemeMiddlegameDescription => 'Tática durante a segunda fase do jogo.'; @override - String get puzzleThemeOneMove => 'Problema de um movimento'; + String get puzzleThemeOneMove => 'Quebra-cabeças de um movimento'; @override - String get puzzleThemeOneMoveDescription => 'Um problema que é resolvido com apenas um movimento.'; + String get puzzleThemeOneMoveDescription => 'Quebra-cabeças de um movimento.'; @override String get puzzleThemeOpening => 'Abertura'; @override - String get puzzleThemeOpeningDescription => 'Uma tática durante a primeira fase do jogo.'; + String get puzzleThemeOpeningDescription => 'Tática durante a primeira fase do jogo.'; @override - String get puzzleThemePawnEndgame => 'Final de peões'; + String get puzzleThemePawnEndgame => 'Finais de peões'; @override - String get puzzleThemePawnEndgameDescription => 'Um final de jogo só com peões.'; + String get puzzleThemePawnEndgameDescription => 'Um final apenas com peões.'; @override String get puzzleThemePin => 'Cravada'; @override - String get puzzleThemePinDescription => 'Uma tática que envolve cravadas, onde uma peça é incapaz de se mover sem revelar um ataque a uma peça de valor superior.'; + String get puzzleThemePinDescription => 'Uma tática envolvendo cravada, onde uma peça é incapaz de mover-se sem abrir um descoberto em uma peça de maior valor.'; @override String get puzzleThemePromotion => 'Promoção'; @override - String get puzzleThemePromotionDescription => 'Promova o teu peão a uma dama ou numa peça menor.'; + String get puzzleThemePromotionDescription => 'Promova um peão para uma dama ou a uma peça menor.'; @override - String get puzzleThemeQueenEndgame => 'Final de dama'; + String get puzzleThemeQueenEndgame => 'Finais de Dama'; @override String get puzzleThemeQueenEndgameDescription => 'Um final com apenas damas e peões.'; @override - String get puzzleThemeQueenRookEndgame => 'Dama e torre'; + String get puzzleThemeQueenRookEndgame => 'Finais de Dama e Torre'; @override - String get puzzleThemeQueenRookEndgameDescription => 'Um final de jogo só com damas, torres e peões.'; + String get puzzleThemeQueenRookEndgameDescription => 'Finais com apenas Dama, Torre e Peões.'; @override - String get puzzleThemeQueensideAttack => 'Ataque no lado da dama'; + String get puzzleThemeQueensideAttack => 'Ataque na ala da dama'; @override - String get puzzleThemeQueensideAttackDescription => 'Um ataque ao rei do adversário, após este ter feito roque grande (para o lado da dama).'; + String get puzzleThemeQueensideAttackDescription => 'Um ataque ao rei adversário, após ter efetuado o roque na ala da Dama.'; @override - String get puzzleThemeQuietMove => 'Jogada subtil'; + String get puzzleThemeQuietMove => 'Lance de preparação'; @override - String get puzzleThemeQuietMoveDescription => 'Um movimento que não faz uma cheque nem captura, mas prepara uma ameaça inevitável.'; + String get puzzleThemeQuietMoveDescription => 'Um lance que não dá xeque nem realiza uma captura, mas prepara uma ameaça inevitável para a jogada seguinte.'; @override - String get puzzleThemeRookEndgame => 'Final de torre'; + String get puzzleThemeRookEndgame => 'Finais de Torres'; @override - String get puzzleThemeRookEndgameDescription => 'Um final de jogo com apenas torres e peões.'; + String get puzzleThemeRookEndgameDescription => 'Um final com apenas torres e peões.'; @override String get puzzleThemeSacrifice => 'Sacrifício'; @override - String get puzzleThemeSacrificeDescription => 'Uma tática que involve abdicar de material a curto prazo, para ganhar uma vantagem após uma sequência forçada de movimentos.'; + String get puzzleThemeSacrificeDescription => 'Uma tática envolvendo a entrega de material no curto prazo, com o objetivo de se obter uma vantagem após uma sequência forçada de movimentos.'; @override - String get puzzleThemeShort => 'Problema curto'; + String get puzzleThemeShort => 'Quebra-cabeças curto'; @override - String get puzzleThemeShortDescription => 'Duas jogadas para ganhar.'; + String get puzzleThemeShortDescription => 'Vitória em dois lances.'; @override - String get puzzleThemeSkewer => 'Cravada inversa'; + String get puzzleThemeSkewer => 'Raio X'; @override - String get puzzleThemeSkewerDescription => 'Uma tática que envolve uma peça de alto valor que está ser atacada, mas ao afastar-se, permite que uma peça de menor valor, que estava atrás dela, seja capturada ou atacada. É o inverso da cravada.'; + String get puzzleThemeSkewerDescription => 'Um movimento que envolve uma peça de alto valor sendo atacada fugindo do ataque e permitindo que uma peça de menor valor seja capturada ou atacada, o inverso de cravada.'; @override - String get puzzleThemeSmotheredMate => 'Mate de Philidor'; + String get puzzleThemeSmotheredMate => 'Mate de Philidor (mate sufocado)'; @override - String get puzzleThemeSmotheredMateDescription => 'Uma xeque-mate feito por um cavalo em que o rei não se pode mover porque está rodeado pelas suas próprias peças. Também conhecido como mate sufocado.'; + String get puzzleThemeSmotheredMateDescription => 'Um xeque-mate dado por um cavalo onde o rei é incapaz de mover-se porque está cercado (ou sufocado) pelas próprias peças.'; @override - String get puzzleThemeSuperGM => 'Jogos de Super GM'; + String get puzzleThemeSuperGM => 'Super partidas de GMs'; @override - String get puzzleThemeSuperGMDescription => 'Problemas de partidas jogadas pelos melhores jogadores do mundo.'; + String get puzzleThemeSuperGMDescription => 'Quebra-cabeças de partidas jogadas pelos melhores jogadores do mundo.'; @override - String get puzzleThemeTrappedPiece => 'Peça encurralada'; + String get puzzleThemeTrappedPiece => 'Peça presa'; @override - String get puzzleThemeTrappedPieceDescription => 'Uma peça não consegue escapar à captura, pois tem movimentos limitados.'; + String get puzzleThemeTrappedPieceDescription => 'Uma peça é incapaz de escapar da captura, pois tem movimentos limitados.'; @override String get puzzleThemeUnderPromotion => 'Subpromoção'; @override - String get puzzleThemeUnderPromotionDescription => 'Promoção para um cavalo, bispo ou torre.'; + String get puzzleThemeUnderPromotionDescription => 'Promover para cavalo, bispo ou torre.'; @override - String get puzzleThemeVeryLong => 'Problema muito longo'; + String get puzzleThemeVeryLong => 'Quebra-cabeças muito longo'; @override - String get puzzleThemeVeryLongDescription => 'Quatro jogadas para ganhar.'; + String get puzzleThemeVeryLongDescription => 'Quatro movimentos ou mais para vencer.'; @override - String get puzzleThemeXRayAttack => 'Ataque raio-X'; + String get puzzleThemeXRayAttack => 'Ataque em raio X'; @override - String get puzzleThemeXRayAttackDescription => 'Uma peça ataque ou defende uma casa através de uma peça inimiga.'; + String get puzzleThemeXRayAttackDescription => 'Uma peça ataca ou defende uma casa indiretamente, através de uma peça adversária.'; @override String get puzzleThemeZugzwang => 'Zugzwang'; @override - String get puzzleThemeZugzwangDescription => 'O adversário está limitado quanto aos seus movimentos, e todas as jogadas pioram a sua posição.'; + String get puzzleThemeZugzwangDescription => 'O adversário tem os seus movimentos limitados, e qualquer movimento que ele faça vai enfraquecer sua própria posição.'; @override - String get puzzleThemeHealthyMix => 'Mistura saudável'; + String get puzzleThemeHealthyMix => 'Combinação saudável'; @override - String get puzzleThemeHealthyMixDescription => 'Um pouco de tudo. Não sabes o que esperar, então ficas pronto para qualquer coisa! Exatamente como em jogos de verdade.'; + String get puzzleThemeHealthyMixDescription => 'Um pouco de tudo. Você nunca sabe o que vai encontrar, então esteja pronto para tudo! Igualzinho aos jogos em tabuleiros reais.'; @override - String get puzzleThemePlayerGames => 'Jogos de jogadores'; + String get puzzleThemePlayerGames => 'Partidas de jogadores'; @override - String get puzzleThemePlayerGamesDescription => 'Procura problemas gerados a partir dos teus jogos ou de jogos de outro jogador.'; + String get puzzleThemePlayerGamesDescription => 'Procure quebra-cabeças gerados a partir de suas partidas ou das de outro jogador.'; @override String puzzleThemePuzzleDownloadInformation(String param) { - return 'Esses problemas são do domínio público e podem ser obtidos em $param.'; + return 'Esses quebra-cabeças estão em domínio público, e você pode baixá-los em $param.'; } @override - String get searchSearch => 'Procurar'; + String get searchSearch => 'Buscar'; @override String get settingsSettings => 'Configurações'; @override - String get settingsCloseAccount => 'Encerrar a conta'; + String get settingsCloseAccount => 'Encerrar conta'; @override - String get settingsManagedAccountCannotBeClosed => 'A sua conta é gerida e não pode ser encerrada.'; + String get settingsManagedAccountCannotBeClosed => 'Sua conta é gerenciada, e não pode ser encerrada.'; @override - String get settingsClosingIsDefinitive => 'O encerramento é definitivo. Não podes voltar atrás. Tens a certeza?'; + String get settingsClosingIsDefinitive => 'O encerramento é definitivo. Não há como desfazer. Tem certeza?'; @override - String get settingsCantOpenSimilarAccount => 'Não poderá criar uma nova conta com o mesmo nome, mesmo que as maiúsculas ou minúsculas sejam diferentes.'; + String get settingsCantOpenSimilarAccount => 'Você não poderá abrir uma nova conta com o mesmo nome, mesmo que alterne entre maiúsculas e minúsculas.'; @override - String get settingsChangedMindDoNotCloseAccount => 'Mudei de ideias, não encerrem a minha conta'; + String get settingsChangedMindDoNotCloseAccount => 'Eu mudei de ideia, não encerre minha conta'; @override - String get settingsCloseAccountExplanation => 'Tens a certeza que queres encerrar sua conta? Encerrar a tua conta é uma decisão permanente. Tu NUNCA MAIS serás capaz de iniciar sessão nesta conta.'; + String get settingsCloseAccountExplanation => 'Tem certeza de que deseja encerrar sua conta? Encerrar sua conta é uma decisão permanente. Você NUNCA MAIS será capaz de entrar com ela novamente.'; @override String get settingsThisAccountIsClosed => 'Esta conta foi encerrada.'; @override - String get playWithAFriend => 'Jogar com um amigo'; + String get playWithAFriend => 'Jogar contra um amigo'; @override String get playWithTheMachine => 'Jogar contra o computador'; @override - String get toInviteSomeoneToPlayGiveThisUrl => 'Para convidares alguém para jogar, envia este URL'; + String get toInviteSomeoneToPlayGiveThisUrl => 'Para convidar alguém para jogar, envie este URL'; @override String get gameOver => 'Fim da partida'; @@ -6010,13 +6172,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get waitingForOpponent => 'Aguardando oponente'; @override - String get orLetYourOpponentScanQrCode => 'Ou deixa o teu oponente ler este código QR'; + String get orLetYourOpponentScanQrCode => 'Ou deixe seu oponente ler este QR Code'; @override - String get waiting => 'A aguardar'; + String get waiting => 'Aguardando'; @override - String get yourTurn => 'É a tua vez'; + String get yourTurn => 'Sua vez'; @override String aiNameLevelAiLevel(String param1, String param2) { @@ -6030,7 +6192,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get strength => 'Nível'; @override - String get toggleTheChat => 'Ativar/Desativar o chat'; + String get toggleTheChat => 'Ativar/Desativar chat'; @override String get chat => 'Chat'; @@ -6051,10 +6213,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get black => 'Pretas'; @override - String get asWhite => 'com as brancas'; + String get asWhite => 'de brancas'; @override - String get asBlack => 'com as pretas'; + String get asBlack => 'de pretas'; @override String get randomColor => 'Cor aleatória'; @@ -6069,16 +6231,16 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get blackIsVictorious => 'Pretas vencem'; @override - String get youPlayTheWhitePieces => 'Tu jogas com as peças brancas'; + String get youPlayTheWhitePieces => 'Você joga com as peças brancas'; @override - String get youPlayTheBlackPieces => 'Tu jogas com as peças pretas'; + String get youPlayTheBlackPieces => 'Você joga com as peças pretas'; @override - String get itsYourTurn => 'É a tua vez!'; + String get itsYourTurn => 'É a sua vez!'; @override - String get cheatDetected => 'Fraude detetada'; + String get cheatDetected => 'Trapaça Detectada'; @override String get kingInTheCenter => 'Rei no centro'; @@ -6093,22 +6255,22 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get variantEnding => 'Fim da variante'; @override - String get newOpponent => 'Novo adversário'; + String get newOpponent => 'Novo oponente'; @override - String get yourOpponentWantsToPlayANewGameWithYou => 'O teu adversário quer jogar outra vez contra ti'; + String get yourOpponentWantsToPlayANewGameWithYou => 'Seu oponente quer jogar uma nova partida contra você'; @override String get joinTheGame => 'Entrar no jogo'; @override - String get whitePlays => 'Jogam as brancas'; + String get whitePlays => 'Brancas jogam'; @override - String get blackPlays => 'Jogam as pretas'; + String get blackPlays => 'Pretas jogam'; @override - String get opponentLeftChoices => 'O teu adversário deixou a partida. Podes reivindicar vitória, declarar empate ou aguardar.'; + String get opponentLeftChoices => 'O seu oponente deixou a partida. Você pode reivindicar vitória, declarar empate ou aguardar.'; @override String get forceResignation => 'Reivindicar vitória'; @@ -6117,22 +6279,22 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get forceDraw => 'Reivindicar empate'; @override - String get talkInChat => 'Por favor, sê gentil na conversa!'; + String get talkInChat => 'Por favor, seja gentil no chat!'; @override - String get theFirstPersonToComeOnThisUrlWillPlayWithYou => 'A primeira pessoa que aceder a este link jogará contra ti.'; + String get theFirstPersonToComeOnThisUrlWillPlayWithYou => 'A primeira pessoa que acessar esta URL jogará contigo.'; @override - String get whiteResigned => 'As brancas desistiram'; + String get whiteResigned => 'Brancas desistiram'; @override - String get blackResigned => 'As pretas desistiram'; + String get blackResigned => 'Pretas desistiram'; @override - String get whiteLeftTheGame => 'As brancas deixaram a partida'; + String get whiteLeftTheGame => 'Brancas deixaram a partida'; @override - String get blackLeftTheGame => 'As pretas deixaram a partida'; + String get blackLeftTheGame => 'Pretas deixaram a partida'; @override String get whiteDidntMove => 'As brancas não se moveram'; @@ -6141,10 +6303,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get blackDidntMove => 'As pretas não se moveram'; @override - String get requestAComputerAnalysis => 'Solicitar uma análise de computador'; + String get requestAComputerAnalysis => 'Solicitar uma análise do computador'; @override - String get computerAnalysis => 'Análise de computador'; + String get computerAnalysis => 'Análise do computador'; @override String get computerAnalysisAvailable => 'Análise de computador disponível'; @@ -6161,22 +6323,22 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get usingServerAnalysis => 'A usar a análise do servidor'; + String get usingServerAnalysis => 'Análise de servidor em uso'; @override - String get loadingEngine => 'A carregar o motor de jogo...'; + String get loadingEngine => 'Carregando ...'; @override - String get calculatingMoves => 'A calcular as jogadas...'; + String get calculatingMoves => 'Calculando jogadas...'; @override - String get engineFailed => 'Erro ao carregar o motor'; + String get engineFailed => 'Erro ao carregar o engine'; @override String get cloudAnalysis => 'Análise na nuvem'; @override - String get goDeeper => 'Aprofundar'; + String get goDeeper => 'Detalhar'; @override String get showThreat => 'Mostrar ameaça'; @@ -6185,37 +6347,37 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get inLocalBrowser => 'no navegador local'; @override - String get toggleLocalEvaluation => 'Ligar/desligar a avaliação local'; + String get toggleLocalEvaluation => 'Ativar/Desativar análise local'; @override String get promoteVariation => 'Promover variante'; @override - String get makeMainLine => 'Tornar variante principal'; + String get makeMainLine => 'Transformar em linha principal'; @override - String get deleteFromHere => 'Eliminar a partir de aqui'; + String get deleteFromHere => 'Excluir a partir daqui'; @override - String get collapseVariations => 'Recolher variações'; + String get collapseVariations => 'Esconder variantes'; @override - String get expandVariations => 'Expandir variações'; + String get expandVariations => 'Mostrar variantes'; @override - String get forceVariation => 'Forçar variante'; + String get forceVariation => 'Variante forçada'; @override - String get copyVariationPgn => 'Copiar variação PGN'; + String get copyVariationPgn => 'Copiar PGN da variante'; @override - String get move => 'Jogada'; + String get move => 'Movimentos'; @override - String get variantLoss => 'Variante perdida'; + String get variantLoss => 'Derrota da variante'; @override - String get variantWin => 'Variante ganha'; + String get variantWin => 'Vitória da variante'; @override String get insufficientMaterial => 'Material insuficiente'; @@ -6230,26 +6392,26 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get close => 'Fechar'; @override - String get winning => 'Ganhas'; + String get winning => 'Vencendo'; @override - String get losing => 'Perdidas'; + String get losing => 'Perdendo'; @override - String get drawn => 'Empatado'; + String get drawn => 'Empate'; @override - String get unknown => 'Desconhecidos'; + String get unknown => 'Posição desconhecida'; @override - String get database => 'Base de dados'; + String get database => 'Banco de Dados'; @override String get whiteDrawBlack => 'Brancas / Empate / Pretas'; @override String averageRatingX(String param) { - return 'Pontuação média: $param'; + return 'Classificação média: $param'; } @override @@ -6260,20 +6422,20 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String masterDbExplanation(String param1, String param2, String param3) { - return 'de partidas OTB de jogadores com +$param1 rating FIDE de $param2 a $param3'; + return 'Duas milhões de partidas de jogadores com pontuação FIDE acima de $param1, desde $param2 a $param3'; } @override - String get dtzWithRounding => 'DTZ50\'\' com arredondamento, baseado no número de meios-movimentos até à próxima captura ou movimento de peão'; + String get dtzWithRounding => 'DTZ50\" com arredondamento, baseado no número de meias-jogadas até a próxima captura ou jogada de peão'; @override - String get noGameFound => 'Nenhum jogo encontrado'; + String get noGameFound => 'Nenhuma partida encontrada'; @override - String get maxDepthReached => 'Nível máximo alcançado!'; + String get maxDepthReached => 'Profundidade máxima alcançada!'; @override - String get maybeIncludeMoreGamesFromThePreferencesMenu => 'Talvez incluir mais jogos no menu de preferências?'; + String get maybeIncludeMoreGamesFromThePreferencesMenu => 'Talvez você queira incluir mais jogos a partir do menu de preferências'; @override String get openings => 'Aberturas'; @@ -6286,47 +6448,47 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String xOpeningExplorer(String param) { - return 'Explorador de aberturas de $param'; + return '$param Explorador de aberturas'; } @override - String get playFirstOpeningEndgameExplorerMove => 'Jogar o primeiro lance do explorador de aberturas/finais'; + String get playFirstOpeningEndgameExplorerMove => 'Jogue o primeiro lance do explorador de aberturas/finais'; @override String get winPreventedBy50MoveRule => 'Vitória impedida pela regra dos 50 movimentos'; @override - String get lossSavedBy50MoveRule => 'Derrota evitada pela regra dos 50 movimentos'; + String get lossSavedBy50MoveRule => 'Derrota impedida pela regra dos 50 movimentos'; @override - String get winOr50MovesByPriorMistake => 'Vitória ou 50 movimentos por engano anterior'; + String get winOr50MovesByPriorMistake => 'Vitória ou 50 movimentos por erro anterior'; @override - String get lossOr50MovesByPriorMistake => 'Vitória ou 50 movimentos por engano anterior'; + String get lossOr50MovesByPriorMistake => 'Derrota ou 50 movimentos por erro anterior'; @override - String get unknownDueToRounding => 'Vitória/derrota garantida apenas se a linha da tabela recomendada tiver sido seguida desde a última captura ou movimento de peão, devido a possível arredondamento.'; + String get unknownDueToRounding => 'Vitória/derrota garantida somente se a variante recomendada tiver sido seguida desde o último movimento de captura ou de peão, devido ao possível arredondamento.'; @override - String get allSet => 'Tudo a postos!'; + String get allSet => 'Tudo pronto!'; @override String get importPgn => 'Importar PGN'; @override - String get delete => 'Eliminar'; + String get delete => 'Excluir'; @override - String get deleteThisImportedGame => 'Eliminar este jogo importado?'; + String get deleteThisImportedGame => 'Excluir este jogo importado?'; @override - String get replayMode => 'Modo de repetição'; + String get replayMode => 'Rever a partida'; @override - String get realtimeReplay => 'Tempo real'; + String get realtimeReplay => 'Tempo Real'; @override - String get byCPL => 'Por CPL'; + String get byCPL => 'Por erros'; @override String get openStudy => 'Abrir estudo'; @@ -6338,13 +6500,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get bestMoveArrow => 'Seta de melhor movimento'; @override - String get showVariationArrows => 'Ver setas de variação'; + String get showVariationArrows => 'Mostrar setas das variantes'; @override - String get evaluationGauge => 'Medidor da avaliação'; + String get evaluationGauge => 'Escala de avaliação'; @override - String get multipleLines => 'Múltiplas continuações'; + String get multipleLines => 'Linhas de análise'; @override String get cpus => 'CPUs'; @@ -6356,13 +6518,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get infiniteAnalysis => 'Análise infinita'; @override - String get removesTheDepthLimit => 'Remove o limite de profundidade e mantém o teu computador quente'; + String get removesTheDepthLimit => 'Remove o limite de profundidade, o que aquece seu computador'; @override - String get engineManager => 'Gestão do motor'; + String get engineManager => 'Gerenciador de engine'; @override - String get blunder => 'Erro grave'; + String get blunder => 'Capivarada'; @override String get mistake => 'Erro'; @@ -6371,16 +6533,16 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get inaccuracy => 'Imprecisão'; @override - String get moveTimes => 'Tempo das jogadas'; + String get moveTimes => 'Tempo por movimento'; @override - String get flipBoard => 'Inverter o tabuleiro'; + String get flipBoard => 'Girar o tabuleiro'; @override - String get threefoldRepetition => 'Repetição tripla'; + String get threefoldRepetition => 'Tripla repetição'; @override - String get claimADraw => 'Declarar empate'; + String get claimADraw => 'Reivindicar empate'; @override String get offerDraw => 'Propor empate'; @@ -6395,7 +6557,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get fiftyMovesWithoutProgress => 'Cinquenta jogadas sem progresso'; @override - String get currentGames => 'Partidas a decorrer'; + String get currentGames => 'Partidas atuais'; @override String get viewInFullSize => 'Ver em tela cheia'; @@ -6407,16 +6569,16 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get signIn => 'Entrar'; @override - String get rememberMe => 'Lembrar-me'; + String get rememberMe => 'Lembrar de mim'; @override - String get youNeedAnAccountToDoThat => 'Precisas de uma conta para fazeres isso'; + String get youNeedAnAccountToDoThat => 'Você precisa de uma conta para fazer isso'; @override - String get signUp => 'Registar-se'; + String get signUp => 'Registrar'; @override - String get computersAreNotAllowedToPlay => 'Computadores ou jogadores assistidos por computador não estão autorizados a jogar. Por favor não utilizes assistência de programas de xadrez, bases de dados ou outros jogadores enquanto estiveres a jogar. Além disso, a criação de contas múltiplas é fortemente desencorajada e a sua prática excessiva acarretará banimento.'; + String get computersAreNotAllowedToPlay => 'A ajuda de software não é permitida. Por favor, não utilize programas de xadrez, bancos de dados ou o auxilio de outros jogadores durante a partida. Além disso, a criação de múltiplas contas é fortemente desaconselhada e sua prática excessiva acarretará em banimento.'; @override String get games => 'Partidas'; @@ -6439,7 +6601,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get friends => 'Amigos'; @override - String get discussions => 'Conversas'; + String get otherPlayers => 'outros jogadores'; + + @override + String get discussions => 'Discussões'; @override String get today => 'Hoje'; @@ -6457,10 +6622,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get variants => 'Variantes'; @override - String get timeControl => 'Ritmo de jogo'; + String get timeControl => 'Ritmo'; @override - String get realTime => 'Em tempo real'; + String get realTime => 'Tempo real'; @override String get correspondence => 'Correspondência'; @@ -6475,37 +6640,37 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get time => 'Tempo'; @override - String get rating => 'Pontuação'; + String get rating => 'Rating'; @override - String get ratingStats => 'Estatísticas de pontuação'; + String get ratingStats => 'Estatísticas de classificação'; @override - String get username => 'Nome de utilizador'; + String get username => 'Nome de usuário'; @override - String get usernameOrEmail => 'Nome ou e-mail do utilizador'; + String get usernameOrEmail => 'Nome ou email do usuário'; @override - String get changeUsername => 'Alterar o nome de utilizador'; + String get changeUsername => 'Alterar nome de usuário'; @override - String get changeUsernameNotSame => 'Só te é permitido trocar as letras de minúscula para maiúscula e vice-versa. Por exemplo, \"johndoe\" para \"JohnDoe\".'; + String get changeUsernameNotSame => 'Pode-se apenas trocar as letras de minúscula para maiúscula e vice-versa. Por exemplo, \"fulanodetal\" para \"FulanoDeTal\".'; @override - String get changeUsernameDescription => 'Altera o teu nome de utilizador. Isso só pode ser feito uma vez e só poderás trocar as letras de minúscula para maiúscula e vice-versa.'; + String get changeUsernameDescription => 'Altere seu nome de usuário. Isso só pode ser feito uma vez e você poderá apenas trocar as letras de minúscula para maiúscula e vice-versa.'; @override - String get signupUsernameHint => 'Certifique-se que escolhe um nome de utilizador decoroso. Não poderá alterá-lo mais tarde e quaisquer contas com nomes de utilizador inapropriados serão fechadas!'; + String get signupUsernameHint => 'Escolha um nome de usuário apropriado. Não será possível mudá-lo, e qualquer conta que tiver um nome ofensivo ou inapropriado será excluída!'; @override - String get signupEmailHint => 'Só o usaremos para redefinir a palavra-passe.'; + String get signupEmailHint => 'Vamos usar apenas para redefinir a sua senha.'; @override - String get password => 'Palavra-passe'; + String get password => 'Senha'; @override - String get changePassword => 'Alterar a palavra-passe'; + String get changePassword => 'Alterar senha'; @override String get changeEmail => 'Alterar email'; @@ -6514,45 +6679,45 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get email => 'E-mail'; @override - String get passwordReset => 'Redefinir a palavra-passe'; + String get passwordReset => 'Redefinição de senha'; @override - String get forgotPassword => 'Esqueceste-te da tua palavra-passe?'; + String get forgotPassword => 'Esqueceu sua senha?'; @override - String get error_weakPassword => 'Esta senha é extremamente comum, e muito fácil de adivinhar.'; + String get error_weakPassword => 'A senha é extremamente comum e fácil de adivinhar.'; @override - String get error_namePassword => 'Por favor, não usa o teu nome de utilizador como senha.'; + String get error_namePassword => 'Não utilize seu nome de usuário como senha.'; @override - String get blankedPassword => 'Utilizou a mesma palavra-passe noutro site, e esse site foi comprometido. Para garantir a segurança da sua conta Lichess, precisamos que redefina a palavra-passe. Obrigado pela compreensão.'; + String get blankedPassword => 'Você usou a mesma senha em outro site, e esse site foi comprometido. Para garantir a segurança da sua conta no Lichess, você precisa criar uma nova senha. Agradecemos sua compreensão.'; @override - String get youAreLeavingLichess => 'Você está a sair do Lichess'; + String get youAreLeavingLichess => 'Você está saindo do Lichess'; @override - String get neverTypeYourPassword => 'Nunca escrevas a tua senha Lichess em outro site!'; + String get neverTypeYourPassword => 'Nunca digite sua senha do Lichess em outro site!'; @override String proceedToX(String param) { - return 'Continuar para $param'; + return 'Ir para $param'; } @override - String get passwordSuggestion => 'Não uses uma senha sugerida por outra pessoa. Eles vão utilizar-la para roubar a tua conta.'; + String get passwordSuggestion => 'Não coloque uma senha sugerida por outra pessoa, porque ela poderá roubar sua conta.'; @override - String get emailSuggestion => 'Não uses um email sugerida por outra pessoa. Eles vão utilizar-la para roubar a tua conta.'; + String get emailSuggestion => 'Não coloque um endereço de email sugerido por outra pessoa, porque ela poderá roubar sua conta.'; @override - String get emailConfirmHelp => 'Ajuda com a confirmação do endereço eletrónico'; + String get emailConfirmHelp => 'Ajuda com confirmação por e-mail'; @override - String get emailConfirmNotReceived => 'Não recebeu no seu correio eletrónico uma mensagem de confirmação após o registo?'; + String get emailConfirmNotReceived => 'Não recebeu seu e-mail de confirmação após o registro?'; @override - String get whatSignupUsername => 'Que nome de utilizador usou para se registar?'; + String get whatSignupUsername => 'Qual nome de usuário você usou para se registrar?'; @override String usernameNotFound(String param) { @@ -6560,24 +6725,24 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get usernameCanBeUsedForNewAccount => 'Pode usar esse nome de utilizador para criar uma conta'; + String get usernameCanBeUsedForNewAccount => 'Você pode usar esse nome de usuário para criar uma nova conta'; @override String emailSent(String param) { - return 'Enviámos um correio eletrónico para $param.'; + return 'Enviamos um e-mail para $param.'; } @override - String get emailCanTakeSomeTime => 'Pode demorar algum tempo a chegar.'; + String get emailCanTakeSomeTime => 'Pode levar algum tempo para chegar.'; @override - String get refreshInboxAfterFiveMinutes => 'Aguarde 5 minutos e atualize a sua caixa de entrada de correio eletrónico.'; + String get refreshInboxAfterFiveMinutes => 'Aguarde 5 minutos e atualize sua caixa de entrada.'; @override - String get checkSpamFolder => 'Verifique também a sua pasta de “spam”, pode estar lá. Se sim, assinale como não “spam”.'; + String get checkSpamFolder => 'Verifique também a sua caixa de spam. Caso esteja lá, marque como não é spam.'; @override - String get emailForSignupHelp => 'Se tudo falhar, então envie-nos este correio eletrónico:'; + String get emailForSignupHelp => 'Se todo o resto falhar, envie-nos este e-mail:'; @override String copyTextToEmail(String param) { @@ -6585,20 +6750,20 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get waitForSignupHelp => 'Nós entraremos brevemente em contacto para ajudá-lo a completar a inscrição.'; + String get waitForSignupHelp => 'Entraremos em contato em breve para ajudá-lo a completar seu registro.'; @override String accountConfirmed(String param) { - return 'O utilizador $param foi confirmado com sucesso.'; + return 'O usuário $param foi confirmado com sucesso.'; } @override String accountCanLogin(String param) { - return 'Pode agora aceder como $param.'; + return 'Você pode acessar agora como $param.'; } @override - String get accountConfirmationEmailNotNeeded => 'Não precisa de um endereço eletrónico de confirmação.'; + String get accountConfirmationEmailNotNeeded => 'Você não precisa de um e-mail de confirmação.'; @override String accountClosed(String param) { @@ -6607,52 +6772,52 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String accountRegisteredWithoutEmail(String param) { - return 'A conta $param foi registada sem um endereço eletrónico.'; + return 'A conta $param foi registrada sem um e-mail.'; } @override - String get rank => 'Classificação'; + String get rank => 'Rank'; @override String rankX(String param) { - return 'Posição: $param'; + return 'Classificação: $param'; } @override - String get gamesPlayed => 'Partidas jogadas'; + String get gamesPlayed => 'Partidas realizadas'; @override String get cancel => 'Cancelar'; @override - String get whiteTimeOut => 'Acabou o tempo das brancas'; + String get whiteTimeOut => 'Tempo das brancas esgotado'; @override - String get blackTimeOut => 'Acabou o tempo das pretas'; + String get blackTimeOut => 'Tempo das pretas esgotado'; @override String get drawOfferSent => 'Proposta de empate enviada'; @override - String get drawOfferAccepted => 'Proposta de empate aceite'; + String get drawOfferAccepted => 'Proposta de empate aceita'; @override String get drawOfferCanceled => 'Proposta de empate cancelada'; @override - String get whiteOffersDraw => 'As brancas propõem empate'; + String get whiteOffersDraw => 'Brancas oferecem empate'; @override - String get blackOffersDraw => 'As pretas propõem empate'; + String get blackOffersDraw => 'Pretas oferecem empate'; @override - String get whiteDeclinesDraw => 'As brancas recusam o empate'; + String get whiteDeclinesDraw => 'Brancas recusam empate'; @override - String get blackDeclinesDraw => 'As pretas recusam o empate'; + String get blackDeclinesDraw => 'Pretas recusam empate'; @override - String get yourOpponentOffersADraw => 'O teu adversário propõe empate'; + String get yourOpponentOffersADraw => 'Seu adversário oferece empate'; @override String get accept => 'Aceitar'; @@ -6661,16 +6826,16 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get decline => 'Recusar'; @override - String get playingRightNow => 'A jogar agora'; + String get playingRightNow => 'Jogando agora'; @override - String get eventInProgress => 'A decorrer agora'; + String get eventInProgress => 'Jogando agora'; @override String get finished => 'Terminado'; @override - String get abortGame => 'Cancelar a partida'; + String get abortGame => 'Cancelar partida'; @override String get gameAborted => 'Partida cancelada'; @@ -6688,64 +6853,64 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get mode => 'Modo'; @override - String get casual => 'Amigável'; + String get casual => 'Amistosa'; @override - String get rated => 'A valer pontos'; + String get rated => 'Ranqueada'; @override - String get casualTournament => 'Amigável'; + String get casualTournament => 'Amistoso'; @override - String get ratedTournament => 'A valer pontos'; + String get ratedTournament => 'Valendo pontos'; @override String get thisGameIsRated => 'Esta partida vale pontos'; @override - String get rematch => 'Desforra'; + String get rematch => 'Revanche'; @override - String get rematchOfferSent => 'Pedido de desforra enviado'; + String get rematchOfferSent => 'Oferta de revanche enviada'; @override - String get rematchOfferAccepted => 'Pedido de desforra aceite'; + String get rematchOfferAccepted => 'Oferta de revanche aceita'; @override - String get rematchOfferCanceled => 'Pedido de desforra cancelado'; + String get rematchOfferCanceled => 'Oferta de revanche cancelada'; @override - String get rematchOfferDeclined => 'Pedido de desforra recusado'; + String get rematchOfferDeclined => 'Oferta de revanche recusada'; @override - String get cancelRematchOffer => 'Cancelar o pedido de desforra'; + String get cancelRematchOffer => 'Cancelar oferta de revanche'; @override - String get viewRematch => 'Ver a desforra'; + String get viewRematch => 'Ver revanche'; @override - String get confirmMove => 'Confirmar o lance'; + String get confirmMove => 'Confirmar lance'; @override String get play => 'Jogar'; @override - String get inbox => 'Caixa de entrada'; + String get inbox => 'Mensagens'; @override String get chatRoom => 'Sala de chat'; @override - String get loginToChat => 'Inicia sessão para poderes conversar'; + String get loginToChat => 'Faça login para conversar'; @override - String get youHaveBeenTimedOut => 'Foste impedido de conversar por agora.'; + String get youHaveBeenTimedOut => 'Sua sessão expirou.'; @override - String get spectatorRoom => 'Sala dos espectadores'; + String get spectatorRoom => 'Sala do espectador'; @override - String get composeMessage => 'Escrever uma mensagem'; + String get composeMessage => 'Escrever mensagem'; @override String get subject => 'Assunto'; @@ -6754,7 +6919,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get send => 'Enviar'; @override - String get incrementInSeconds => 'Incremento em segundos'; + String get incrementInSeconds => 'Acréscimo em segundos'; @override String get freeOnlineChess => 'Xadrez Online Gratuito'; @@ -6763,34 +6928,34 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get exportGames => 'Exportar partidas'; @override - String get ratingRange => 'Pontuação entre'; + String get ratingRange => 'Rating entre'; @override - String get thisAccountViolatedTos => 'Esta conta violou os termos de serviço do Lichess'; + String get thisAccountViolatedTos => 'Esta conta violou os Termos de Serviço do Lichess'; @override - String get openingExplorerAndTablebase => 'Explorador de aberturas & tabelas de finais'; + String get openingExplorerAndTablebase => 'Explorador de abertura & tabela de finais'; @override - String get takeback => 'Voltar uma jogada atrás'; + String get takeback => 'Voltar jogada'; @override - String get proposeATakeback => 'Propor voltar uma jogada atrás'; + String get proposeATakeback => 'Propor voltar jogada'; @override - String get takebackPropositionSent => 'Proposta de voltar uma jogada atrás enviada'; + String get takebackPropositionSent => 'Proposta de voltar jogada enviada'; @override - String get takebackPropositionDeclined => 'Proposta de voltar uma jogada atrás recusada'; + String get takebackPropositionDeclined => 'Proposta de voltar jogada recusada'; @override - String get takebackPropositionAccepted => 'Proposta de voltar uma jogada atrás aceite'; + String get takebackPropositionAccepted => 'Proposta de voltar jogada aceita'; @override - String get takebackPropositionCanceled => 'Proposta de voltar uma jogada atrás cancelada'; + String get takebackPropositionCanceled => 'Proposta de voltar jogada cancelada'; @override - String get yourOpponentProposesATakeback => 'O teu adversário propõe voltar uma jogada atrás'; + String get yourOpponentProposesATakeback => 'Seu oponente propõe voltar jogada'; @override String get bookmarkThisGame => 'Adicionar esta partida às favoritas'; @@ -6802,38 +6967,38 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get tournaments => 'Torneios'; @override - String get tournamentPoints => 'Pontos de torneio'; + String get tournamentPoints => 'Pontos de torneios'; @override - String get viewTournament => 'Ver o torneio'; + String get viewTournament => 'Ver torneio'; @override String get backToTournament => 'Voltar ao torneio'; @override - String get noDrawBeforeSwissLimit => 'Num torneio suíço não pode empatar antes de 30 jogadas.'; + String get noDrawBeforeSwissLimit => 'Não é possível empatar antes de 30 lances em um torneio suíço.'; @override String get thematic => 'Temático'; @override String yourPerfRatingIsProvisional(String param) { - return 'A tua pontuação em $param é provisória'; + return 'Seu rating $param é provisório'; } @override String yourPerfRatingIsTooHigh(String param1, String param2) { - return 'A tua pontuação em $param1 ($param2) é demasiado alta'; + return 'Seu $param1 rating ($param2) é muito alta'; } @override String yourTopWeeklyPerfRatingIsTooHigh(String param1, String param2) { - return 'A tua pontuação máxima nesta semana em $param1 ($param2) é demasiado alta'; + return 'Seu melhor rating $param1 da semana ($param2) é muito alto'; } @override String yourPerfRatingIsTooLow(String param1, String param2) { - return 'A tua pontuação em $param1 ($param2) é demasiado baixa'; + return 'Sua $param1 pontuação ($param2) é muito baixa'; } @override @@ -6848,40 +7013,40 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String mustBeInTeam(String param) { - return 'Tens de pertencer à equipa $param'; + return 'Precisa estar na equipe $param'; } @override String youAreNotInTeam(String param) { - return 'Não estás na equipa $param'; + return 'Você não está na equipe $param'; } @override - String get backToGame => 'Voltar à partida'; + String get backToGame => 'Retorne à partida'; @override - String get siteDescription => 'Xadrez online gratuito. Joga xadrez numa interface simples. Sem registos, sem anúncios, sem plugins. Joga xadrez com o computador, amigos ou adversários aleatórios.'; + String get siteDescription => 'Xadrez online gratuito. Jogue xadrez agora numa interface simples. Sem registro, sem anúncios, sem plugins. Jogue xadrez contra computador, amigos ou adversários aleatórios.'; @override String xJoinedTeamY(String param1, String param2) { - return '$param1 juntou-se à equipa $param2'; + return '$param1 juntou-se à equipe $param2'; } @override String xCreatedTeamY(String param1, String param2) { - return '$param1 criou a equipa $param2'; + return '$param1 criou a equipe $param2'; } @override - String get startedStreaming => 'começou uma stream'; + String get startedStreaming => 'começou uma transmissão ao vivo'; @override String xStartedStreaming(String param) { - return '$param começou uma stream'; + return '$param começou a transmitir'; } @override - String get averageElo => 'Pontuação média'; + String get averageElo => 'Média de rating'; @override String get location => 'Localização'; @@ -6890,70 +7055,70 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get filterGames => 'Filtrar partidas'; @override - String get reset => 'Voltar ao original'; + String get reset => 'Reiniciar'; @override String get apply => 'Aplicar'; @override - String get save => 'Guardar'; + String get save => 'Salvar'; @override - String get leaderboard => 'Tabela de liderança'; + String get leaderboard => 'Classificação'; @override - String get screenshotCurrentPosition => 'Posição atual da captura de ecrã'; + String get screenshotCurrentPosition => 'Captura de tela da posição atual'; @override - String get gameAsGIF => 'Jogo como GIF'; + String get gameAsGIF => 'Salvar a partida como GIF'; @override - String get pasteTheFenStringHere => 'Coloca a notação FEN aqui'; + String get pasteTheFenStringHere => 'Cole a notação FEN aqui'; @override - String get pasteThePgnStringHere => 'Coloca a notação PGN aqui'; + String get pasteThePgnStringHere => 'Cole a notação PGN aqui'; @override - String get orUploadPgnFile => 'Ou enviar um ficheiro PGN'; + String get orUploadPgnFile => 'Ou carregue um arquivo PGN'; @override - String get fromPosition => 'A partir de uma posição'; + String get fromPosition => 'A partir da posição'; @override - String get continueFromHere => 'Continuar a partir daqui'; + String get continueFromHere => 'Continuar daqui'; @override String get toStudy => 'Estudo'; @override - String get importGame => 'Importar uma partida'; + String get importGame => 'Importar partida'; @override - String get importGameExplanation => 'Coloca aqui o PGN de um jogo, para teres acesso a navegar pela repetição,\nanálise de computador, sala de chat do jogo e link de partilha.'; + String get importGameExplanation => 'Após colar uma partida em PGN você poderá revisá-la interativamente, consultar uma análise de computador, utilizar o chat e compartilhar um link.'; @override - String get importGameCaveat => 'As variações serão apagadas. Para mantê-las, importe o PGN através de um estudo.'; + String get importGameCaveat => 'As variantes serão apagadas. Para salvá-las, importe o PGN em um estudo.'; @override - String get importGameDataPrivacyWarning => 'Este PGN pode ser acessada pelo público. Para importar um jogo de forma privada, use um estudo.'; + String get importGameDataPrivacyWarning => 'Este PGN pode ser acessado publicamente. Use um estudo para importar um jogo privado.'; @override - String get thisIsAChessCaptcha => 'Este é um \"CAPTCHA\" de xadrez.'; + String get thisIsAChessCaptcha => 'Este é um CAPTCHA enxadrístico.'; @override - String get clickOnTheBoardToMakeYourMove => 'Clica no tabuleiro para fazeres a tua jogada, provando que és humano.'; + String get clickOnTheBoardToMakeYourMove => 'Clique no tabuleiro para fazer seu lance, provando que é humano.'; @override - String get captcha_fail => 'Por favor, resolve o captcha.'; + String get captcha_fail => 'Por favor, resolva o captcha enxadrístico.'; @override - String get notACheckmate => 'Não é xeque-mate.'; + String get notACheckmate => 'Não é xeque-mate'; @override - String get whiteCheckmatesInOneMove => 'As brancas dão mate em um movimento'; + String get whiteCheckmatesInOneMove => 'As brancas dão mate em um lance'; @override - String get blackCheckmatesInOneMove => 'As pretas dão mate em um movimento'; + String get blackCheckmatesInOneMove => 'As pretas dão mate em um lance'; @override String get retry => 'Tentar novamente'; @@ -6962,7 +7127,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get reconnecting => 'Reconectando'; @override - String get noNetwork => 'Desligado'; + String get noNetwork => 'Sem conexão'; @override String get favoriteOpponents => 'Adversários favoritos'; @@ -6971,10 +7136,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get follow => 'Seguir'; @override - String get following => 'A seguir'; + String get following => 'Seguindo'; @override - String get unfollow => 'Deixar de seguir'; + String get unfollow => 'Parar de seguir'; @override String followX(String param) { @@ -6996,7 +7161,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get unblock => 'Desbloquear'; @override - String get followsYou => 'Segue-te'; + String get followsYou => 'Segue você'; @override String xStartedFollowingY(String param1, String param2) { @@ -7036,13 +7201,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get winner => 'Vencedor'; @override - String get standing => 'Classificação'; + String get standing => 'Colocação'; @override - String get createANewTournament => 'Criar um torneio'; + String get createANewTournament => 'Criar novo torneio'; @override - String get tournamentCalendar => 'Calendário de torneios'; + String get tournamentCalendar => 'Calendário do torneio'; @override String get conditionOfEntry => 'Condições de participação:'; @@ -7051,16 +7216,16 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get advancedSettings => 'Configurações avançadas'; @override - String get safeTournamentName => 'Escolhe um nome totalmente seguro para o torneio.'; + String get safeTournamentName => 'Escolha um nome seguro para o torneio.'; @override - String get inappropriateNameWarning => 'Até uma linguagem ligeiramente inadequada pode levar ao encerramento da tua conta.'; + String get inappropriateNameWarning => 'Até mesmo a menor indecência poderia ensejar o encerramento de sua conta.'; @override - String get emptyTournamentName => 'Deixe em branco e será atribuído um nome aleatório de um jogador notável ao torneio.'; + String get emptyTournamentName => 'Deixe em branco para dar ao torneio o nome de um grande mestre aleatório.'; @override - String get makePrivateTournament => 'Torna o torneio privado e restrinje o acesso com uma palavra-passe'; + String get makePrivateTournament => 'Faça o torneio privado e restrinja o acesso com uma senha'; @override String get join => 'Entrar'; @@ -7081,71 +7246,71 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get createdBy => 'Criado por'; @override - String get tournamentIsStarting => 'O torneio está a começar'; + String get tournamentIsStarting => 'O torneio está começando'; @override - String get tournamentPairingsAreNowClosed => 'Os emparelhamentos no torneio já estão fechados.'; + String get tournamentPairingsAreNowClosed => 'Os pareamentos do torneio estão fechados agora.'; @override String standByX(String param) { - return 'Aguarda $param, estamos a emparelhar jogadores, prepara-te!'; + return '$param, aguarde: o pareamento está em andamento, prepare-se!'; } @override - String get pause => 'Pausa'; + String get pause => 'Pausar'; @override String get resume => 'Continuar'; @override - String get youArePlaying => 'Estás a jogar!'; + String get youArePlaying => 'Você está participando!'; @override String get winRate => 'Taxa de vitórias'; @override - String get berserkRate => 'Taxa de partidas no modo frenético'; + String get berserkRate => 'Taxa Berserk'; @override String get performance => 'Desempenho'; @override - String get tournamentComplete => 'Torneio terminado'; + String get tournamentComplete => 'Torneio completo'; @override - String get movesPlayed => 'Movimentos feitos'; + String get movesPlayed => 'Movimentos realizados'; @override - String get whiteWins => 'Vitórias com as brancas'; + String get whiteWins => 'Brancas venceram'; @override - String get blackWins => 'Vitórias com as pretas'; + String get blackWins => 'Pretas venceram'; @override - String get drawRate => 'Taxa de empate'; + String get drawRate => 'Taxa de empates'; @override String get draws => 'Empates'; @override String nextXTournament(String param) { - return 'Próximo torneio de $param:'; + return 'Próximo torneio $param:'; } @override - String get averageOpponent => 'Pontuação média dos adversários'; + String get averageOpponent => 'Pontuação média adversários'; @override String get boardEditor => 'Editor de tabuleiro'; @override - String get setTheBoard => 'Partilha o tabuleiro'; + String get setTheBoard => 'Defina a posição'; @override String get popularOpenings => 'Aberturas populares'; @override - String get endgamePositions => 'Posições finais'; + String get endgamePositions => 'Posições de final'; @override String chess960StartPosition(String param) { @@ -7156,10 +7321,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get startPosition => 'Posição inicial'; @override - String get clearBoard => 'Limpar o tabuleiro'; + String get clearBoard => 'Limpar tabuleiro'; @override - String get loadPosition => 'Carregar uma posição'; + String get loadPosition => 'Carregar posição'; @override String get isPrivate => 'Privado'; @@ -7171,34 +7336,34 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String profileCompletion(String param) { - return 'Perfil completo: $param'; + return 'Conclusão do perfil: $param'; } @override String xRating(String param) { - return 'Pontuação $param'; + return 'Rating $param'; } @override - String get ifNoneLeaveEmpty => 'Se não existir, deixa em branco'; + String get ifNoneLeaveEmpty => 'Se nenhuma, deixe vazio'; @override String get profile => 'Perfil'; @override - String get editProfile => 'Editar o perfil'; + String get editProfile => 'Editar perfil'; @override - String get realName => 'Nome Real'; + String get realName => 'Nome real'; @override - String get setFlair => 'Defina o teu estilo'; + String get setFlair => 'Escolha seu emote'; @override String get flair => 'Estilo'; @override - String get youCanHideFlair => 'Há uma opção para ocultar todos os estilos dos utilizadores em todo o site.'; + String get youCanHideFlair => 'Você pode esconder todos os emotes de usuário no site.'; @override String get biography => 'Biografia'; @@ -7210,22 +7375,22 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get thankYou => 'Obrigado!'; @override - String get socialMediaLinks => 'Links das redes sociais'; + String get socialMediaLinks => 'Links de mídia social'; @override - String get oneUrlPerLine => 'Um URL por linha.'; + String get oneUrlPerLine => 'Uma URL por linha.'; @override - String get inlineNotation => 'Anotações em linha'; + String get inlineNotation => 'Notação em linha'; @override - String get makeAStudy => 'Para guardar e partilhar, considere fazer um estudo.'; + String get makeAStudy => 'Para salvar e compartilhar uma análise, crie um estudo.'; @override - String get clearSavedMoves => 'Limpar jogadas'; + String get clearSavedMoves => 'Limpar lances'; @override - String get previouslyOnLichessTV => 'Anteriormente na TV Lichess'; + String get previouslyOnLichessTV => 'Anteriormente em Lichess TV'; @override String get onlinePlayers => 'Jogadores online'; @@ -7234,19 +7399,19 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get activePlayers => 'Jogadores ativos'; @override - String get bewareTheGameIsRatedButHasNoClock => 'Cuidado, o jogo vale pontos, mas não há limite de tempo!'; + String get bewareTheGameIsRatedButHasNoClock => 'Cuidado, o jogo vale rating, mas não há controle de tempo!'; @override String get success => 'Sucesso'; @override - String get automaticallyProceedToNextGameAfterMoving => 'Passar automaticamente ao jogo seguinte após a jogada'; + String get automaticallyProceedToNextGameAfterMoving => 'Passar automaticamente ao jogo seguinte após o lance'; @override String get autoSwitch => 'Alternar automaticamente'; @override - String get puzzles => 'Problemas'; + String get puzzles => 'Quebra-cabeças'; @override String get onlineBots => 'Bots online'; @@ -7261,7 +7426,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get descPrivate => 'Descrição privada'; @override - String get descPrivateHelp => 'Texto que apenas está visível para os membros da equipa. Se definido, substitui a descrição pública dos membros da equipa.'; + String get descPrivateHelp => 'Texto que apenas os membros da equipe verão. Se definido, substitui a descrição pública para os membros da equipe.'; @override String get no => 'Não'; @@ -7269,11 +7434,17 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get yes => 'Sim'; + @override + String get website => 'Site'; + + @override + String get mobile => 'Celular'; + @override String get help => 'Ajuda:'; @override - String get createANewTopic => 'Criar um novo tópico'; + String get createANewTopic => 'Criar novo tópico'; @override String get topics => 'Tópicos'; @@ -7282,7 +7453,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get posts => 'Publicações'; @override - String get lastPost => 'Última publicação'; + String get lastPost => 'Última postagem'; @override String get views => 'Visualizações'; @@ -7300,13 +7471,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get message => 'Mensagem'; @override - String get createTheTopic => 'Criar o tópico'; + String get createTheTopic => 'Criar tópico'; @override - String get reportAUser => 'Denunciar um utilizador'; + String get reportAUser => 'Reportar um usuário'; @override - String get user => 'Utilizador'; + String get user => 'Usuário'; @override String get reason => 'Motivo'; @@ -7315,7 +7486,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get whatIsIheMatter => 'Qual é o motivo?'; @override - String get cheat => 'Batota'; + String get cheat => 'Trapaça'; @override String get troll => 'Troll'; @@ -7324,10 +7495,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get other => 'Outro'; @override - String get reportDescriptionHelp => 'Inclui o link do(s) jogo(s) e explica o que há de errado com o comportamento deste utilizador. Não digas apenas \"ele faz batota\"; informa-nos como chegaste a essa conclusão. A tua denúncia será processada mais rapidamente se for escrita em inglês.'; + String get reportDescriptionHelp => 'Cole o link do(s) jogo(s) e explique o que há de errado com o comportamento do usuário. Não diga apenas \"ele trapaceia\", informe-nos como chegou a esta conclusão. Sua denúncia será processada mais rapidamente se escrita em inglês.'; @override - String get error_provideOneCheatedGameLink => 'Por favor, fornece-nos pelo menos um link para um jogo onde tenha havido batota.'; + String get error_provideOneCheatedGameLink => 'Por favor forneça ao menos um link para um jogo com suspeita de trapaça.'; @override String by(String param) { @@ -7340,7 +7511,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get thisTopicIsNowClosed => 'Este tópico foi fechado.'; + String get thisTopicIsNowClosed => 'O tópico foi fechado.'; @override String get blog => 'Blog'; @@ -7349,46 +7520,46 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get notes => 'Notas'; @override - String get typePrivateNotesHere => 'Escreve notas privadas aqui'; + String get typePrivateNotesHere => 'Digite notas pessoais aqui'; @override - String get writeAPrivateNoteAboutThisUser => 'Escreva uma nota privada sobre este utilizador'; + String get writeAPrivateNoteAboutThisUser => 'Escreva uma nota pessoal sobre este usuário'; @override - String get noNoteYet => 'Ainda sem notas'; + String get noNoteYet => 'Nenhuma nota'; @override - String get invalidUsernameOrPassword => 'Nome de utilizador ou palavra-passe incorretos'; + String get invalidUsernameOrPassword => 'Nome de usuário ou senha incorretos'; @override - String get incorrectPassword => 'Palavra-passe incorreta'; + String get incorrectPassword => 'Senha incorreta'; @override - String get invalidAuthenticationCode => 'Código de autenticação inválido'; + String get invalidAuthenticationCode => 'Código de verificação inválido'; @override - String get emailMeALink => 'Envie-me um link por e-mail'; + String get emailMeALink => 'Me envie um link'; @override - String get currentPassword => 'Palavra-passe atual'; + String get currentPassword => 'Senha atual'; @override - String get newPassword => 'Nova palavra-chave'; + String get newPassword => 'Nova senha'; @override - String get newPasswordAgain => 'Nova palavra-passe (novamente)'; + String get newPasswordAgain => 'Nova senha (novamente)'; @override - String get newPasswordsDontMatch => 'As novas palavras-passe não coincidem'; + String get newPasswordsDontMatch => 'As novas senhas não correspondem'; @override - String get newPasswordStrength => 'Força da palavra-passe'; + String get newPasswordStrength => 'Senha forte'; @override - String get clockInitialTime => 'Tempo inicial no relógio'; + String get clockInitialTime => 'Tempo de relógio'; @override - String get clockIncrement => 'Incremento no relógio'; + String get clockIncrement => 'Incremento do relógio'; @override String get privacy => 'Privacidade'; @@ -7397,13 +7568,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get privacyPolicy => 'Política de privacidade'; @override - String get letOtherPlayersFollowYou => 'Permitir que outros jogadores te sigam'; + String get letOtherPlayersFollowYou => 'Permitir que outros jogadores sigam você'; @override - String get letOtherPlayersChallengeYou => 'Permitir que outros jogadores te desafiem'; + String get letOtherPlayersChallengeYou => 'Permitir que outros jogadores desafiem você'; @override - String get letOtherPlayersInviteYouToStudy => 'Permitir que outros jogadores te convidem para estudos'; + String get letOtherPlayersInviteYouToStudy => 'Deixe outros jogadores convidá-lo para um estudo'; @override String get sound => 'Som'; @@ -7430,7 +7601,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get allSquaresOfTheBoard => 'Todas as casas do tabuleiro'; @override - String get onSlowGames => 'Em jogos lentos'; + String get onSlowGames => 'Em partidas lentas'; @override String get always => 'Sempre'; @@ -7451,33 +7622,33 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String victoryVsYInZ(String param1, String param2, String param3) { - return '$param1 contra $param2 em $param3'; + return '$param1 vs $param2 em $param3'; } @override String defeatVsYInZ(String param1, String param2, String param3) { - return '$param1 contra $param2 em $param3'; + return '$param1 vs $param2 em $param3'; } @override String drawVsYInZ(String param1, String param2, String param3) { - return '$param1 contra $param2 em $param3'; + return '$param1 vs $param2 em $param3'; } @override - String get timeline => 'Cronologia'; + String get timeline => 'Linha do tempo'; @override - String get starting => 'Começa às:'; + String get starting => 'Iniciando:'; @override String get allInformationIsPublicAndOptional => 'Todas as informações são públicas e opcionais.'; @override - String get biographyDescription => 'Fala de ti, do que gostas no xadrez, das tuas aberturas favoritas, jogos, jogadores...'; + String get biographyDescription => 'Fale sobre você, seus interesses, o que você gosta no xadrez, suas aberturas favoritas, jogadores...'; @override - String get listBlockedPlayers => 'Lista os jogadores que bloqueaste'; + String get listBlockedPlayers => 'Sua lista de jogadores bloqueados'; @override String get human => 'Humano'; @@ -7498,7 +7669,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get learnMenu => 'Aprender'; @override - String get studyMenu => 'Estudos'; + String get studyMenu => 'Estudar'; @override String get practice => 'Praticar'; @@ -7516,50 +7687,50 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get error_unknown => 'Valor inválido'; @override - String get error_required => 'Este campo tem de ser preenchido'; + String get error_required => 'Este campo deve ser preenchido'; @override String get error_email => 'Este endereço de e-mail é inválido'; @override - String get error_email_acceptable => 'Este endereço de e-mail não é aceitável. Por favor verifica-o e tenta outra vez.'; + String get error_email_acceptable => 'Este endereço de e-mail não é válido. Verifique e tente novamente.'; @override - String get error_email_unique => 'Endereço de e-mail inválido ou já utilizado'; + String get error_email_unique => 'Endereço de e-mail é inválido ou já está sendo utilizado'; @override - String get error_email_different => 'Este já é o teu endereço de e-mail'; + String get error_email_different => 'Este já é o seu endereço de e-mail'; @override String error_minLength(String param) { - return 'Deve conter pelo menos $param caracteres'; + return 'O mínimo de caracteres é $param'; } @override String error_maxLength(String param) { - return 'Deve conter no máximo $param caracteres'; + return 'O máximo de caracteres é $param'; } @override String error_min(String param) { - return 'Deve ser pelo menos $param'; + return 'Deve ser maior ou igual a $param'; } @override String error_max(String param) { - return 'Deve ser no máximo $param'; + return 'Deve ser menor ou igual a $param'; } @override String ifRatingIsPlusMinusX(String param) { - return 'Se a pontuação for ± $param'; + return 'Se o rating for ± $param'; } @override - String get ifRegistered => 'Se registado'; + String get ifRegistered => 'Se registrado'; @override - String get onlyExistingConversations => 'Apenas conversas existentes'; + String get onlyExistingConversations => 'Apenas conversas iniciadas'; @override String get onlyFriends => 'Apenas amigos'; @@ -7571,35 +7742,35 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get castling => 'Roque'; @override - String get whiteCastlingKingside => 'Brancas O-O'; + String get whiteCastlingKingside => 'O-O das brancas'; @override - String get blackCastlingKingside => 'Pretas O-O'; + String get blackCastlingKingside => 'O-O das pretas'; @override String tpTimeSpentPlaying(String param) { - return 'Tempo passado a jogar: $param'; + return 'Tempo jogando: $param'; } @override - String get watchGames => 'Ver jogos'; + String get watchGames => 'Assistir partidas'; @override String tpTimeSpentOnTV(String param) { - return 'Tempo a ser transmitido na TV: $param'; + return 'Tempo na TV: $param'; } @override - String get watch => 'Observar'; + String get watch => 'Assistir'; @override - String get videoLibrary => 'Videoteca'; + String get videoLibrary => 'Vídeos'; @override String get streamersMenu => 'Streamers'; @override - String get mobileApp => 'Aplicação móvel'; + String get mobileApp => 'Aplicativo Móvel'; @override String get webmasters => 'Webmasters'; @@ -7614,11 +7785,11 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String xIsAFreeYLibreOpenSourceChessServer(String param1, String param2) { - return 'O $param1 é um servidor de xadrez grátis ($param2), sem publicidades e open-source.'; + return '$param1 é um servidor de xadrez gratuito ($param2), livre, sem anúncios e código aberto.'; } @override - String get really => 'a sério'; + String get really => 'realmente'; @override String get contribute => 'Contribuir'; @@ -7627,17 +7798,17 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get termsOfService => 'Termos de serviço'; @override - String get sourceCode => 'Código fonte'; + String get sourceCode => 'Código-fonte'; @override - String get simultaneousExhibitions => 'Exibições simultâneas'; + String get simultaneousExhibitions => 'Exibição simultânea'; @override - String get host => 'Anfitrião'; + String get host => 'Simultanista'; @override String hostColorX(String param) { - return 'Cor do anfitrião: $param'; + return 'Cor do simultanista: $param'; } @override @@ -7647,10 +7818,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get createdSimuls => 'Simultâneas criadas recentemente'; @override - String get hostANewSimul => 'Iniciar uma simultânea'; + String get hostANewSimul => 'Iniciar nova simultânea'; @override - String get signUpToHostOrJoinASimul => 'Registra-te para hospedar ou juntar a uma simultânea'; + String get signUpToHostOrJoinASimul => 'Entre em uma ou crie uma conta para hospedar'; @override String get noSimulFound => 'Simultânea não encontrada'; @@ -7659,88 +7830,88 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get noSimulExplanation => 'Esta exibição simultânea não existe.'; @override - String get returnToSimulHomepage => 'Voltar à página inicial da simultânea'; + String get returnToSimulHomepage => 'Retornar à página inicial da simultânea'; @override - String get aboutSimul => 'As simultâneas envolvem um único jogador contra vários adversários ao mesmo tempo.'; + String get aboutSimul => 'A simultânea envolve um único jogador contra vários oponentes ao mesmo tempo.'; @override - String get aboutSimulImage => 'Contra 50 adversários, Fischer ganhou 47 jogos, empatou 2 e perdeu 1.'; + String get aboutSimulImage => 'Contra 50 oponentes, Fischer ganhou 47 jogos, empatou 2 e perdeu 1.'; @override - String get aboutSimulRealLife => 'O conceito provém de eventos reais, nos quais o simultanista se move de mesa em mesa, executando um movimento de cada vez.'; + String get aboutSimulRealLife => 'O conceito provém de eventos reais, nos quais o simultanista se move de mesa em mesa, executando um movimento por vez.'; @override - String get aboutSimulRules => 'Quando a simultânea começa, cada jogador começa sua partida contra o anfitrião, que joga sempre com as peças brancas. A simultânea termina quando todas as partidas tiverem acabado.'; + String get aboutSimulRules => 'Quando a simultânea começa, cada jogador começa sua partida contra o simultanista, o qual sempre tem as brancas. A simultânea termina quando todas as partidas são finalizadas.'; @override - String get aboutSimulSettings => 'As simultâneas são sempre partidas amigáveis. Desforras, voltar jogadas atrás e dar mais tempo estão desativados.'; + String get aboutSimulSettings => 'As simultâneas sempre são partidas amigáveis. Revanches, voltar jogadas e tempo adicional estão desativados.'; @override String get create => 'Criar'; @override - String get whenCreateSimul => 'Quando crias uma simultânea, podes jogar com vários adversários ao mesmo tempo.'; + String get whenCreateSimul => 'Quando cria uma simultânea, você joga com vários adversários ao mesmo tempo.'; @override - String get simulVariantsHint => 'Se selecionares diversas variantes, cada jogador poderá escolher qual delas jogar.'; + String get simulVariantsHint => 'Se você selecionar diversas variantes, cada jogador poderá escolher qual delas jogar.'; @override - String get simulClockHint => 'Configuração de incrementos no relógio. Quanto mais jogadores admitires, mais tempo poderás necessitar.'; + String get simulClockHint => 'Configuração de acréscimos no relógio. Quanto mais jogadores admitir, mais tempo pode necessitar.'; @override - String get simulAddExtraTime => 'Podes acrescentar tempo adicional ao teu relógio, para te ajudar a lidar com a simultânea.'; + String get simulAddExtraTime => 'Você pode acrescentar tempo adicional a seu relógio, para ajudá-lo a lidar com a simultânea.'; @override - String get simulHostExtraTime => 'Tempo adicional do anfitrião'; + String get simulHostExtraTime => 'Tempo adicional do simultanista'; @override - String get simulAddExtraTimePerPlayer => 'Adicione tempo inicial ao seu relógio para cada jogador que entra na simulação.'; + String get simulAddExtraTimePerPlayer => 'Adicionar tempo inicial ao seu relógio por cada jogador adversário que entrar na simultânea.'; @override - String get simulHostExtraTimePerPlayer => 'Tempo extra de relógio por jogador'; + String get simulHostExtraTimePerPlayer => 'Tempo adicional do simultanista por jogador'; @override String get lichessTournaments => 'Torneios do Lichess'; @override - String get tournamentFAQ => 'Perguntas frequentes sobre torneios em arena'; + String get tournamentFAQ => 'Perguntas Frequentes sobre torneios no estilo Arena'; @override - String get timeBeforeTournamentStarts => 'Contagem decrescente para o início do torneio'; + String get timeBeforeTournamentStarts => 'Contagem regressiva para início do torneio'; @override - String get averageCentipawnLoss => 'Perda média de centésimos de peão'; + String get averageCentipawnLoss => 'Perda média em centipeões'; @override String get accuracy => 'Precisão'; @override - String get keyboardShortcuts => 'Atalhos do teclado'; + String get keyboardShortcuts => 'Atalhos de teclado'; @override - String get keyMoveBackwardOrForward => 'retroceder/avançar jogada'; + String get keyMoveBackwardOrForward => 'retroceder/avançar lance'; @override String get keyGoToStartOrEnd => 'ir para início/fim'; @override - String get keyCycleSelectedVariation => 'Ciclo da variante selecionada'; + String get keyCycleSelectedVariation => 'Alternar entre as variantes'; @override - String get keyShowOrHideComments => 'mostrar/ocultar os comentários'; + String get keyShowOrHideComments => 'mostrar/ocultar comentários'; @override String get keyEnterOrExitVariation => 'entrar/sair da variante'; @override - String get keyRequestComputerAnalysis => 'Solicite análise do computador, Aprenda com seus erros'; + String get keyRequestComputerAnalysis => 'Solicite análise do computador, aprenda com seus erros'; @override - String get keyNextLearnFromYourMistakes => 'Seguinte (Aprenda com os seus erros)'; + String get keyNextLearnFromYourMistakes => 'Próximo (Aprenda com seus erros)'; @override - String get keyNextBlunder => 'Próxima gafe'; + String get keyNextBlunder => 'Próximo erro grave'; @override String get keyNextMistake => 'Próximo erro'; @@ -7749,19 +7920,19 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get keyNextInaccuracy => 'Próxima imprecisão'; @override - String get keyPreviousBranch => 'Ramo anterior'; + String get keyPreviousBranch => 'Branch anterior'; @override - String get keyNextBranch => 'Próximo ramo'; + String get keyNextBranch => 'Próximo branch'; @override - String get toggleVariationArrows => 'Ativar/desactivar seta da variante'; + String get toggleVariationArrows => 'Ativar/desativar setas'; @override - String get cyclePreviousOrNextVariation => 'Ciclo anterior/próxima variante'; + String get cyclePreviousOrNextVariation => 'Variante seguinte/anterior'; @override - String get toggleGlyphAnnotations => 'Ativar/desativar anotações com símbolos'; + String get toggleGlyphAnnotations => 'Ativar/desativar anotações'; @override String get togglePositionAnnotations => 'Ativar/desativar anotações de posição'; @@ -7770,16 +7941,16 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get variationArrowsInfo => 'Setas de variação permitem navegar sem usar a lista de movimentos.'; @override - String get playSelectedMove => 'jogar o movimento selecionado'; + String get playSelectedMove => 'jogar movimento selecionado'; @override String get newTournament => 'Novo torneio'; @override - String get tournamentHomeTitle => 'Torneios de xadrez com diversos ritmos de jogo e variantes'; + String get tournamentHomeTitle => 'Torneios de xadrez com diversos controles de tempo e variantes'; @override - String get tournamentHomeDescription => 'Joga xadrez em ritmo acelerado! Entra num torneio oficial agendado ou cria o teu próprio. Bullet, Rápida, Clássica, Chess960, Rei da Colina, Três Xeques e mais opções disponíveis para uma diversão ilimitada.'; + String get tournamentHomeDescription => 'Jogue xadrez em ritmo acelerado! Entre em um torneio oficial agendado ou crie seu próprio. Bullet, Blitz, Clássico, Chess960, King of the Hill, Três Xeques e outras modalidades disponíveis para uma ilimitada diversão enxadrística.'; @override String get tournamentNotFound => 'Torneio não encontrado'; @@ -7788,109 +7959,109 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get tournamentDoesNotExist => 'Este torneio não existe.'; @override - String get tournamentMayHaveBeenCanceled => 'O torneio pode ter sido cancelado, se todos os jogadores tiverem saíram antes do seu começo.'; + String get tournamentMayHaveBeenCanceled => 'O evento pode ter sido cancelado, se todos os jogadores saíram antes de seu início.'; @override - String get returnToTournamentsHomepage => 'Voltar à página inicial de torneios'; + String get returnToTournamentsHomepage => 'Volte à página inicial de torneios'; @override String weeklyPerfTypeRatingDistribution(String param) { - return 'Distribuição semanal de pontuação em $param'; + return 'Distribuição mensal de rating em $param'; } @override String yourPerfTypeRatingIsRating(String param1, String param2) { - return 'A tua pontuação em $param1 é $param2.'; + return 'Seu rating em $param1 é $param2.'; } @override String youAreBetterThanPercentOfPerfTypePlayers(String param1, String param2) { - return 'És melhor que $param1 dos jogadores de $param2.'; + return 'Você é melhor que $param1 dos jogadores de $param2.'; } @override String userIsBetterThanPercentOfPerfTypePlayers(String param1, String param2, String param3) { - return '$param1 é melhor que $param2 dos jogadores de $param3.'; + return '$param1 é melhor que $param2 dos $param3 jogadores.'; } @override String betterThanPercentPlayers(String param1, String param2) { - return 'Melhor que $param1 de $param2 jogadores'; + return 'Melhor que $param1 dos jogadores de $param2'; } @override String youDoNotHaveAnEstablishedPerfTypeRating(String param) { - return 'Não tens uma pontuação estabelecida em $param.'; + return 'Você não tem rating definido em $param.'; } @override - String get yourRating => 'A tua pontuação'; + String get yourRating => 'Seu rating'; @override - String get cumulative => 'Acumulativo'; + String get cumulative => 'Cumulativo'; @override - String get glicko2Rating => 'Pontuação Glicko-2'; + String get glicko2Rating => 'Rating Glicko-2'; @override - String get checkYourEmail => 'Verifica o teu e-mail'; + String get checkYourEmail => 'Verifique seu e-mail'; @override - String get weHaveSentYouAnEmailClickTheLink => 'Enviámos-te um e-mail. Clica no link nesse e-mail para ativares a tua conta.'; + String get weHaveSentYouAnEmailClickTheLink => 'Enviamos um e-mail. Clique no link do e-mail para ativar sua conta.'; @override - String get ifYouDoNotSeeTheEmailCheckOtherPlaces => 'Se você não vires o e-mail, verifica outros locais onde este possa estar, como pastas de lixo, spam, social ou outras.'; + String get ifYouDoNotSeeTheEmailCheckOtherPlaces => 'Se você não vir o e-mail, verifique outros locais onde possa estar, como lixeira, spam ou outras pastas.'; @override String weHaveSentYouAnEmailTo(String param) { - return 'Enviámos-te um e-mail para $param. Clica no link nesse e-mail para redefinires a tua palavra-passe.'; + return 'Enviamos um e-mail para $param. Clique no link do e-mail para redefinir sua senha.'; } @override String byRegisteringYouAgreeToBeBoundByOur(String param) { - return 'Ao criares uma conta, concordas comprometeres-te com os nossos $param.'; + return 'Ao registrar, você concorda em se comprometer com nossa $param.'; } @override String readAboutOur(String param) { - return 'Lê sobre a nossa $param.'; + return 'Leia sobre a nossa $param.'; } @override - String get networkLagBetweenYouAndLichess => 'Atraso na rede entre ti e o Lichess'; + String get networkLagBetweenYouAndLichess => 'Atraso na rede'; @override String get timeToProcessAMoveOnLichessServer => 'Tempo para processar um movimento no servidor do Lichess'; @override - String get downloadAnnotated => 'Transferir anotação'; + String get downloadAnnotated => 'Baixar anotação'; @override - String get downloadRaw => 'Transferir texto'; + String get downloadRaw => 'Baixar texto'; @override - String get downloadImported => 'Transferir a partida importada'; + String get downloadImported => 'Baixar partida importada'; @override String get crosstable => 'Tabela'; @override - String get youCanAlsoScrollOverTheBoardToMoveInTheGame => 'Também podes rodar a rodinha do rato sobre o tabuleiro para percorreres as jogadas na partida.'; + String get youCanAlsoScrollOverTheBoardToMoveInTheGame => 'Você também pode rolar sobre o tabuleiro para percorrer as jogadas.'; @override - String get scrollOverComputerVariationsToPreviewThem => 'Passe o rato sobre as variantes do computador para visualizá-las.'; + String get scrollOverComputerVariationsToPreviewThem => 'Passe o mouse pelas variações do computador para visualizá-las.'; @override - String get analysisShapesHowTo => 'Pressiona shift+clique ou clica com o botão direito do rato para desenhares círculos e setas no tabuleiro.'; + String get analysisShapesHowTo => 'Pressione Shift+Clique ou clique com o botão direito do mouse para desenhar círculos e setas no tabuleiro.'; @override - String get letOtherPlayersMessageYou => 'Permitir que outros jogadores te enviem mensagens'; + String get letOtherPlayersMessageYou => 'Permitir que outros jogadores lhe enviem mensagem'; @override - String get receiveForumNotifications => 'Olá aOlá a todos'; + String get receiveForumNotifications => 'Receba notificações quando você for mencionado no fórum'; @override - String get shareYourInsightsData => 'Compartilhar os teus dados de \"insights\" de xadrez'; + String get shareYourInsightsData => 'Compartilhe seus dados da análise'; @override String get withNobody => 'Com ninguém'; @@ -7905,24 +8076,24 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get kidMode => 'Modo infantil'; @override - String get kidModeIsEnabled => 'Modo infantil está ativado.'; + String get kidModeIsEnabled => 'O modo infantil está ativado.'; @override - String get kidModeExplanation => 'Iso é sobre segurança. No modo infantil, todas as comunicações do site ficam desactivadas. Activa esta opção para os teus filhos ou alunos, para protegê-los de outros utilizadores da internet.'; + String get kidModeExplanation => 'Isto diz respeito à segurança. No modo infantil, todas as comunicações do site são desabilitadas. Habilite isso para seus filhos e alunos, para protegê-los de outros usuários da Internet.'; @override String inKidModeTheLichessLogoGetsIconX(String param) { - return 'No modo criança, o logótipo do Lichess fica com um ícone $param para que saibas que as tuas crianças estão seguras.'; + return 'No modo infantil, a logo do lichess tem um ícone $param, para que você saiba que suas crianças estão seguras.'; } @override - String get askYourChessTeacherAboutLiftingKidMode => 'A sua conta é gerida. Peça ao seu professor de xadrez para retirar o modo infantil.'; + String get askYourChessTeacherAboutLiftingKidMode => 'Sua conta é gerenciada. Para desativar o modo infantil, peça ao seu professor.'; @override - String get enableKidMode => 'Ativar o modo infantil'; + String get enableKidMode => 'Habilitar o modo infantil'; @override - String get disableKidMode => 'Desativar o modo infantil'; + String get disableKidMode => 'Desabilitar o modo infantil'; @override String get security => 'Segurança'; @@ -7931,10 +8102,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get sessions => 'Sessões'; @override - String get revokeAllSessions => 'desativar todas as sessões'; + String get revokeAllSessions => 'revogar todas as sessões'; @override - String get playChessEverywhere => 'Joga xadrez em qualquer lugar'; + String get playChessEverywhere => 'Jogue xadrez em qualquer lugar'; @override String get asFreeAsLichess => 'Tão gratuito quanto o Lichess'; @@ -7943,7 +8114,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get builtForTheLoveOfChessNotMoney => 'Desenvolvido pelo amor ao xadrez, não pelo dinheiro'; @override - String get everybodyGetsAllFeaturesForFree => 'Todos têm todos os recursos gratuitamente'; + String get everybodyGetsAllFeaturesForFree => 'Todos têm todos os recursos de graça'; @override String get zeroAdvertisement => 'Zero anúncios'; @@ -7952,7 +8123,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get fullFeatured => 'Cheio de recursos'; @override - String get phoneAndTablet => 'Telemóvel e tablet'; + String get phoneAndTablet => 'Celular e tablet'; @override String get bulletBlitzClassical => 'Bullet, blitz, clássico'; @@ -7961,20 +8132,20 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get correspondenceChess => 'Xadrez por correspondência'; @override - String get onlineAndOfflinePlay => 'Jogar online e offline'; + String get onlineAndOfflinePlay => 'Jogue online e offline'; @override - String get viewTheSolution => 'Ver a solução'; + String get viewTheSolution => 'Ver solução'; @override - String get followAndChallengeFriends => 'Joga e desafia amigos'; + String get followAndChallengeFriends => 'Siga e desafie amigos'; @override String get gameAnalysis => 'Análise da partida'; @override String xHostsY(String param1, String param2) { - return '$param1 criou a exibição simultânea $param2'; + return '$param1 criou $param2'; } @override @@ -7988,24 +8159,24 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get quickPairing => 'Emparelhamento rápido'; + String get quickPairing => 'Pareamento rápido'; @override - String get lobby => 'Sala de espera'; + String get lobby => 'Salão'; @override String get anonymous => 'Anônimo'; @override String yourScore(String param) { - return 'O teu resultado: $param'; + return 'Sua pontuação:$param'; } @override - String get language => 'Lingua'; + String get language => 'Idioma'; @override - String get background => 'Fundo'; + String get background => 'Cor tema'; @override String get light => 'Claro'; @@ -8035,37 +8206,37 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get brightness => 'Brilho'; @override - String get hue => 'Tonalidade'; + String get hue => 'Tom'; @override - String get boardReset => 'Redefinir cores para o padrão'; + String get boardReset => 'Restaurar as cores padrão'; @override - String get pieceSet => 'Peças'; + String get pieceSet => 'Estilo das peças'; @override - String get embedInYourWebsite => 'Incorporar no teu site'; + String get embedInYourWebsite => 'Incorporar no seu site'; @override - String get usernameAlreadyUsed => 'Este nome de utilizador já existe, por favor escolhe outro.'; + String get usernameAlreadyUsed => 'Este nome de usuário já está registado, por favor, escolha outro.'; @override - String get usernamePrefixInvalid => 'O nome do utilizador tem começar com uma letra.'; + String get usernamePrefixInvalid => 'O nome de usuário deve começar com uma letra.'; @override - String get usernameSuffixInvalid => 'O nome do utilizador tem de acabar com uma letra ou número.'; + String get usernameSuffixInvalid => 'O nome de usuário deve terminar com uma letra ou um número.'; @override - String get usernameCharsInvalid => 'O nome do utilizador só pode conter letras, números, underscores ou hífenes.'; + String get usernameCharsInvalid => 'Nomes de usuário só podem conter letras, números, sublinhados e hifens.'; @override - String get usernameUnacceptable => 'Este nome de utilizador não é aceitável.'; + String get usernameUnacceptable => 'Este nome de usuário não é aceitável.'; @override - String get playChessInStyle => 'Jogar xadrez com estilo'; + String get playChessInStyle => 'Jogue xadrez com estilo'; @override - String get chessBasics => 'O básico do xadrez'; + String get chessBasics => 'Básicos do xadrez'; @override String get coaches => 'Treinadores'; @@ -8089,66 +8260,66 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String perfRatingX(String param) { - return 'Pontuação: $param'; + return 'Rating: $param'; } @override - String get practiceWithComputer => 'Praticar com o computador'; + String get practiceWithComputer => 'Pratique com o computador'; @override String anotherWasX(String param) { - return 'Outro seria $param'; + return 'Um outro lance seria $param'; } @override String bestWasX(String param) { - return '$param seria melhor'; + return 'Melhor seria $param'; } @override - String get youBrowsedAway => 'Saíste'; + String get youBrowsedAway => 'Você navegou para longe'; @override - String get resumePractice => 'Continuar a prática'; + String get resumePractice => 'Retornar à prática'; @override - String get drawByFiftyMoves => 'O jogo foi empatado de acordo com a regra dos cinquenta lances.'; + String get drawByFiftyMoves => 'O jogo empatou pela regra dos cinquenta movimentos.'; @override - String get theGameIsADraw => 'O jogo é um empate.'; + String get theGameIsADraw => 'A partida terminou em empate.'; @override - String get computerThinking => 'Computador a pensar...'; + String get computerThinking => 'Computador pensando ...'; @override - String get seeBestMove => 'Ver o melhor movimento'; + String get seeBestMove => 'Veja o melhor lance'; @override - String get hideBestMove => 'Ocultar o melhor movimento'; + String get hideBestMove => 'Esconder o melhor lance'; @override String get getAHint => 'Obter uma dica'; @override - String get evaluatingYourMove => 'A analisar o teu movimento ...'; + String get evaluatingYourMove => 'Avaliando o seu movimento ...'; @override - String get whiteWinsGame => 'As brancas ganham'; + String get whiteWinsGame => 'Brancas vencem'; @override - String get blackWinsGame => 'As pretas ganham'; + String get blackWinsGame => 'Pretas vencem'; @override - String get learnFromYourMistakes => 'Aprende com os teus erros'; + String get learnFromYourMistakes => 'Aprenda com seus erros'; @override - String get learnFromThisMistake => 'Aprende com este erro'; + String get learnFromThisMistake => 'Aprenda com este erro'; @override - String get skipThisMove => 'Saltar este movimento'; + String get skipThisMove => 'Pular esse lance'; @override - String get next => 'Seguinte'; + String get next => 'Próximo'; @override String xWasPlayed(String param) { @@ -8156,49 +8327,49 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get findBetterMoveForWhite => 'Encontra um melhor movimento para as brancas'; + String get findBetterMoveForWhite => 'Encontrar o melhor lance para as Brancas'; @override - String get findBetterMoveForBlack => 'Encontra um melhor movimento para as pretas'; + String get findBetterMoveForBlack => 'Encontre o melhor lance para as Pretas'; @override String get resumeLearning => 'Continuar a aprendizagem'; @override - String get youCanDoBetter => 'Podes fazer melhor'; + String get youCanDoBetter => 'Você pode fazer melhor'; @override - String get tryAnotherMoveForWhite => 'Tenta outro movimento para as brancas'; + String get tryAnotherMoveForWhite => 'Tente um outro lance para as Brancas'; @override - String get tryAnotherMoveForBlack => 'Tenta outro movimento para as pretas'; + String get tryAnotherMoveForBlack => 'Tente um outro lance para as Pretas'; @override String get solution => 'Solução'; @override - String get waitingForAnalysis => 'A aguardar pela análise'; + String get waitingForAnalysis => 'Aguardando análise'; @override - String get noMistakesFoundForWhite => 'Não foram encontrados erros das brancas'; + String get noMistakesFoundForWhite => 'Nenhum erro encontrado para as Brancas'; @override - String get noMistakesFoundForBlack => 'Não foram encontrados erros das pretas'; + String get noMistakesFoundForBlack => 'Nenhum erro encontrado para as Pretas'; @override - String get doneReviewingWhiteMistakes => 'Terminada a revisão de erros das brancas'; + String get doneReviewingWhiteMistakes => 'Erros das brancas já revistos'; @override - String get doneReviewingBlackMistakes => 'Terminada a revisão de erros das pretas'; + String get doneReviewingBlackMistakes => 'Erros das pretas já revistos'; @override - String get doItAgain => 'Repetir'; + String get doItAgain => 'Faça novamente'; @override - String get reviewWhiteMistakes => 'Rever os erros das brancas'; + String get reviewWhiteMistakes => 'Rever erros das Brancas'; @override - String get reviewBlackMistakes => 'Rever os erros das pretas'; + String get reviewBlackMistakes => 'Rever erros das Pretas'; @override String get advantage => 'Vantagem'; @@ -8207,95 +8378,95 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get opening => 'Abertura'; @override - String get middlegame => 'Meio jogo'; + String get middlegame => 'Meio-jogo'; @override - String get endgame => 'Final de jogo'; + String get endgame => 'Finais'; @override - String get conditionalPremoves => 'Movimentos antecipados condicionais'; + String get conditionalPremoves => 'Pré-lances condicionais'; @override - String get addCurrentVariation => 'Adicionar a variante atual'; + String get addCurrentVariation => 'Adicionar a variação atual'; @override - String get playVariationToCreateConditionalPremoves => 'Joga uma variante para criares movimentos antecipados condicionais'; + String get playVariationToCreateConditionalPremoves => 'Jogar uma variação para criar pré-lances condicionais'; @override - String get noConditionalPremoves => 'Sem movimentos antecipados condicionais'; + String get noConditionalPremoves => 'Sem pré-lances condicionais'; @override String playX(String param) { - return 'Joga $param'; + return 'Jogar $param'; } @override - String get showUnreadLichessMessage => 'Recebestes uma mensagem privada do Lichess.'; + String get showUnreadLichessMessage => 'Você recebeu uma mensagem privada do Lichess.'; @override - String get clickHereToReadIt => 'Clica aqui para ler'; + String get clickHereToReadIt => 'Clique aqui para ler'; @override String get sorry => 'Desculpa :('; @override - String get weHadToTimeYouOutForAWhile => 'Tivemos de te banir por algum tempo.'; + String get weHadToTimeYouOutForAWhile => 'Tivemos de bloqueá-lo por um tempo.'; @override - String get why => 'Porquê?'; + String get why => 'Por quê?'; @override - String get pleasantChessExperience => 'Tencionamos proporcionar uma experiência de xadrez agradável a todos.'; + String get pleasantChessExperience => 'Buscamos oferecer uma experiência agradável de xadrez para todos.'; @override - String get goodPractice => 'Para isso, temos de nos assegurar que todos os jogadores seguem boas práticas.'; + String get goodPractice => 'Para isso, precisamos assegurar que nossos jogadores sigam boas práticas.'; @override - String get potentialProblem => 'Quando um potencial problema é detetado, exibimos esta mensagem.'; + String get potentialProblem => 'Quando um problema em potencial é detectado, nós mostramos esta mensagem.'; @override - String get howToAvoidThis => 'Como evitar isto?'; + String get howToAvoidThis => 'Como evitar isso?'; @override - String get playEveryGame => 'Joga todas as partidas que começares.'; + String get playEveryGame => 'Jogue todos os jogos que inicia.'; @override - String get tryToWin => 'Tenta ganhar (ou pelo menos empatar) todas as partida que jogares.'; + String get tryToWin => 'Tente vencer (ou pelo menos empatar) todos os jogos que jogar.'; @override - String get resignLostGames => 'Desiste em partidas perdidas (não deixes o tempo no relógio acabar).'; + String get resignLostGames => 'Conceda partidas perdidas (não deixe o relógio ir até ao fim).'; @override - String get temporaryInconvenience => 'Pedimos desculpa pelo incómodo temporário,'; + String get temporaryInconvenience => 'Pedimos desculpa pelo incômodo temporário,'; @override - String get wishYouGreatGames => 'e desejamos-te grandes jogos no lichess.org.'; + String get wishYouGreatGames => 'e desejamos-lhe grandes jogos em lichess.org.'; @override String get thankYouForReading => 'Obrigado pela leitura!'; @override - String get lifetimeScore => 'Pontuação desde sempre'; + String get lifetimeScore => 'Pontuação de todo o período'; @override - String get currentMatchScore => 'Pontuação atual'; + String get currentMatchScore => 'Pontuação da partida atual'; @override - String get agreementAssistance => 'Concordo que nunca recorrerei a assistência durante as minhas partidas (de um computador de xadrez, livro, base de dados ou outra pessoa).'; + String get agreementAssistance => 'Eu concordo que em momento algum receberei assistência durante os meus jogos (seja de um computador, livro, banco de dados ou outra pessoa).'; @override - String get agreementNice => 'Concordo que serei sempre repeitoso para os outros jogadores.'; + String get agreementNice => 'Eu concordo que serei sempre cortês com outros jogadores.'; @override String agreementMultipleAccounts(String param) { - return 'Concordo que não criarei várias contas (exceto pelas razões indicadas em $param).'; + return 'Eu concordo que não criarei múltiplas contas (exceto pelas razões indicadas em $param).'; } @override - String get agreementPolicy => 'Concordo que seguirei todas as políticas do Lichess.'; + String get agreementPolicy => 'Eu concordo que seguirei todas as normas do Lichess.'; @override - String get searchOrStartNewDiscussion => 'Pesquisa ou começa uma nova conversa'; + String get searchOrStartNewDiscussion => 'Procurar ou iniciar nova conversa'; @override String get edit => 'Editar'; @@ -8304,31 +8475,31 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get bullet => 'Bullet'; @override - String get blitz => 'Rápidas'; + String get blitz => 'Blitz'; @override - String get rapid => 'Semi-rápidas'; + String get rapid => 'Rápida'; @override - String get classical => 'Clássicas'; + String get classical => 'Clássico'; @override - String get ultraBulletDesc => 'Partidas incrivelmente rápidas: menos de 30 segundos'; + String get ultraBulletDesc => 'Jogos insanamente rápidos: menos de 30 segundos'; @override - String get bulletDesc => 'Partidas muito rápidas: menos de 3 minutos'; + String get bulletDesc => 'Jogos muito rápidos: menos de 3 minutos'; @override - String get blitzDesc => 'Partidas rápidas: 3 a 8 minutos'; + String get blitzDesc => 'Jogos rápidos: 3 a 8 minutos'; @override - String get rapidDesc => 'Partidas semi-rápidas: 8 a 25 minutos'; + String get rapidDesc => 'Jogos rápidos: 8 a 25 minutos'; @override - String get classicalDesc => 'Partidas clássicas: 25 minutos ou mais'; + String get classicalDesc => 'Jogos clássicos: 25 minutos ou mais'; @override - String get correspondenceDesc => 'Partidas por correspondência: um ou vários dias por lance'; + String get correspondenceDesc => 'Jogos por correspondência: um ou vários dias por lance'; @override String get puzzleDesc => 'Treinador de táticas de xadrez'; @@ -8338,91 +8509,91 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String yourQuestionMayHaveBeenAnswered(String param1) { - return 'A tua pergunta pode já ter uma resposta $param1'; + return 'A sua pergunta pode já ter sido respondida $param1'; } @override - String get inTheFAQ => 'no F.A.Q. (perguntas frequentes).'; + String get inTheFAQ => 'no F.A.Q.'; @override String toReportSomeoneForCheatingOrBadBehavior(String param1) { - return 'Para reportares um utilizador por fazer batota ou por mau comportamento, $param1.'; + return 'Para denunciar um usuário por trapaças ou mau comportamento, $param1'; } @override - String get useTheReportForm => 'usa a ficha própria para o fazeres'; + String get useTheReportForm => 'use o formulário de denúncia'; @override String toRequestSupport(String param1) { - return 'Para solicitares suporte, $param1.'; + return 'Para solicitar ajuda, $param1'; } @override - String get tryTheContactPage => 'tenta a página de contacto'; + String get tryTheContactPage => 'tente a página de contato'; @override String makeSureToRead(String param1) { - return 'Certifique-se que lê $param1'; + return 'Certifique-se de ler $param1'; } @override - String get theForumEtiquette => 'a etiqueta do fórum'; + String get theForumEtiquette => 'as regras do fórum'; @override - String get thisTopicIsArchived => 'Este tópico foi arquivado e já não pode ser respondido.'; + String get thisTopicIsArchived => 'Este tópico foi arquivado e não pode mais ser respondido.'; @override String joinTheTeamXToPost(String param1) { - return 'Junta-te a $param1, para publicares neste fórum'; + return 'Junte-se a $param1 para publicar neste fórum'; } @override String teamNamedX(String param1) { - return 'equipa $param1'; + return 'Equipe $param1'; } @override - String get youCannotPostYetPlaySomeGames => 'Ainda não podes publicar nos fóruns. Joga alguns jogos!'; + String get youCannotPostYetPlaySomeGames => 'Você não pode publicar nos fóruns ainda. Jogue algumas partidas!'; @override - String get subscribe => 'Subscrever-se'; + String get subscribe => 'Seguir publicações'; @override - String get unsubscribe => 'Cancelar a subscrição'; + String get unsubscribe => 'Deixar de seguir publicações'; @override String mentionedYouInX(String param1) { - return 'foste mencionado em \"$param1\".'; + return 'mencionou você em \"$param1\".'; } @override String xMentionedYouInY(String param1, String param2) { - return '$param1 mencionou-te em \"$param2\".'; + return '$param1 mencionou você em \"$param2\".'; } @override String invitedYouToX(String param1) { - return 'convidou-te para \"$param1\".'; + return 'convidou você para \"$param1\".'; } @override String xInvitedYouToY(String param1, String param2) { - return '$param1 convidou-te para \"$param2\".'; + return '$param1 convidou você para \"$param2\".'; } @override - String get youAreNowPartOfTeam => 'Já fazes parte da equipa.'; + String get youAreNowPartOfTeam => 'Você agora faz parte da equipe.'; @override String youHaveJoinedTeamX(String param1) { - return 'Juntaste-te a \"$param1\".'; + return 'Você ingressou em \"$param1\".'; } @override - String get someoneYouReportedWasBanned => 'Alguém que denunciaste foi banido'; + String get someoneYouReportedWasBanned => 'Alguém que você denunciou foi banido'; @override - String get congratsYouWon => 'Parabéns! Ganhaste!'; + String get congratsYouWon => 'Parabéns, você venceu!'; @override String gameVsX(String param1) { @@ -8435,27 +8606,27 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get lostAgainstTOSViolator => 'Perdes-te contra alguém que violou as regras do Lichess'; + String get lostAgainstTOSViolator => 'Você perdeu rating para alguém que violou os termos de serviço do Lichess'; @override String refundXpointsTimeControlY(String param1, String param2) { - return 'Devolução: $param1 $param2 pontos de Elo.'; + return 'Reembolso: $param1 $param2 pontos de rating.'; } @override - String get timeAlmostUp => 'O tempo está quase a terminar!'; + String get timeAlmostUp => 'O tempo está quase acabando!'; @override String get clickToRevealEmailAddress => '[Clique para revelar o endereço de e-mail]'; @override - String get download => 'Transferir'; + String get download => 'Baixar'; @override - String get coachManager => 'Gestor de treinadores'; + String get coachManager => 'Configurações para professores'; @override - String get streamerManager => 'Gestor do streamer'; + String get streamerManager => 'Configurações para streamers'; @override String get cancelTournament => 'Cancelar o torneio'; @@ -8464,66 +8635,66 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get tournDescription => 'Descrição do torneio'; @override - String get tournDescriptionHelp => 'Quer dizer alguma coisa em especial aos participantes? Seja breve. Estão disponíveis ligações de Markdown: [name](https://url)'; + String get tournDescriptionHelp => 'Algo especial que você queira dizer aos participantes? Tente ser breve. Links em Markdown disponíveis: [name](https://url)'; @override - String get ratedFormHelp => 'Os jogos são classificados\ne afetam as avaliações dos jogadores'; + String get ratedFormHelp => 'Os jogos valem classificação\ne afetam o rating dos jogadores'; @override - String get onlyMembersOfTeam => 'Apenas membros da equipa'; + String get onlyMembersOfTeam => 'Apenas membros da equipe'; @override - String get noRestriction => 'Sem restrições'; + String get noRestriction => 'Sem restrição'; @override - String get minimumRatedGames => 'Jogos com classificação mínima'; + String get minimumRatedGames => 'Mínimo de partidas ranqueadas'; @override - String get minimumRating => 'Classificação mínima'; + String get minimumRating => 'Rating mínimo'; @override - String get maximumWeeklyRating => 'Avaliação semanal máxima'; + String get maximumWeeklyRating => 'Rating máxima da semana'; @override String positionInputHelp(String param) { - return 'Cole um FEN válido para iniciar todos os jogos a partir de uma determinada posição.\nSó funciona para os jogos padrão, não com variantes.\nVocê pode usar o $param para gerar uma posição FEN e, em seguida, colá-lo aqui.\nDeixe em branco para iniciar jogos da posição inicial normal.'; + return 'Cole um FEN válido para iniciar as partidas a partir de uma posição específica.\nSó funciona com jogos padrão, e não com variantes.\nUse o $param para gerar uma posição FEN, e depois cole-a aqui.\nDeixe em branco para começar as partidas na posição inicial padrão.'; } @override String get cancelSimul => 'Cancelar a simultânea'; @override - String get simulHostcolor => 'Cor do anfitrião para cada jogo'; + String get simulHostcolor => 'Cor do simultanista em cada jogo'; @override - String get estimatedStart => 'Hora de início prevista'; + String get estimatedStart => 'Tempo de início estimado'; @override String simulFeatured(String param) { - return 'Em destaque em $param'; + return 'Compartilhar em $param'; } @override String simulFeaturedHelp(String param) { - return 'Mostre a sua simultânea a todos em $param. Desativar para simultâneas privadas.'; + return 'Compartilhar a simultânia com todos em $param. Desative para jogos privados.'; } @override String get simulDescription => 'Descrição da simultânea'; @override - String get simulDescriptionHelp => 'Quer dizer alguma coisa aos participantes?'; + String get simulDescriptionHelp => 'Você gostaria de dizer algo aos participantes?'; @override String markdownAvailable(String param) { - return '$param está disponível para sintaxe mais avançada.'; + return '$param está disponível para opções de formatação adicionais.'; } @override - String get embedsAvailable => 'Cole o URL de um jogo ou um URL de um capítulo de estudo para integrá-lo.'; + String get embedsAvailable => 'Cole a URL de uma partida ou de um capítulo de estudo para incorporá-lo.'; @override - String get inYourLocalTimezone => 'No seu próprio fuso horário local'; + String get inYourLocalTimezone => 'No seu próprio fuso horário'; @override String get tournChat => 'Chat do torneio'; @@ -8532,72 +8703,72 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get noChat => 'Sem chat'; @override - String get onlyTeamLeaders => 'Apenas líderes da equipa'; + String get onlyTeamLeaders => 'Apenas líderes de equipe'; @override - String get onlyTeamMembers => 'Apenas membros da equipa'; + String get onlyTeamMembers => 'Apenas membros da equipe'; @override - String get navigateMoveTree => 'Navegar pela árvore de movimentos'; + String get navigateMoveTree => 'Navegar pela notação de movimentos'; @override - String get mouseTricks => 'Movimentos do rato'; + String get mouseTricks => 'Funcionalidades do mouse'; @override - String get toggleLocalAnalysis => 'Ativar/desativar análise local no computador'; + String get toggleLocalAnalysis => 'Ativar/desativar análise local do computador'; @override - String get toggleAllAnalysis => 'Alternar todas as análises no computador'; + String get toggleAllAnalysis => 'Ativar/desativar todas análises locais do computador'; @override - String get playComputerMove => 'Jogar o melhor lance do computador'; + String get playComputerMove => 'Jogar o melhor lance de computador'; @override String get analysisOptions => 'Opções de análise'; @override - String get focusChat => 'Focar no bate-papo'; + String get focusChat => 'Focar texto'; @override String get showHelpDialog => 'Mostrar esta mensagem de ajuda'; @override - String get reopenYourAccount => 'Reabrir a sua conta'; + String get reopenYourAccount => 'Reabra sua conta'; @override - String get closedAccountChangedMind => 'Se fechou a sua conta mas desde então mudou de ideias, terá uma oportunidade de recuperar a sua conta.'; + String get closedAccountChangedMind => 'Caso você tenha encerrado sua conta, mas mudou de opinião, você tem ainda uma chance de recuperá-la.'; @override - String get onlyWorksOnce => 'Isto só vai funcionar uma única vez.'; + String get onlyWorksOnce => 'Isso só vai funcionar uma vez.'; @override - String get cantDoThisTwice => 'Se fechar a conta uma segunda vez, não haverá forma de a recuperar.'; + String get cantDoThisTwice => 'Caso você encerre sua conta pela segunda vez, será impossível recuperá-la.'; @override - String get emailAssociatedToaccount => 'Endereço de email associado à conta'; + String get emailAssociatedToaccount => 'Endereço de e-mail associado à conta'; @override - String get sentEmailWithLink => 'Enviámos-lhe um e-mail com um link.'; + String get sentEmailWithLink => 'Enviamos um e-mail pra você com um link.'; @override String get tournamentEntryCode => 'Código de entrada do torneio'; @override - String get hangOn => 'Aguarde!'; + String get hangOn => 'Espere!'; @override String gameInProgress(String param) { - return 'Tem um jogo em curso com $param.'; + return 'Você tem uma partida em andamento com $param.'; } @override - String get abortTheGame => 'Cancelar o jogo'; + String get abortTheGame => 'Cancelar a partida'; @override - String get resignTheGame => 'Abandonar o jogo'; + String get resignTheGame => 'Abandonar a partida'; @override - String get youCantStartNewGame => 'Não pode iniciar um novo jogo antes de este estar terminado.'; + String get youCantStartNewGame => 'Você não pode iniciar um novo jogo até que este acabe.'; @override String get since => 'Desde'; @@ -8606,25 +8777,25 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get until => 'Até'; @override - String get lichessDbExplanation => 'Jogos avaliados por amostragem de todos os jogadores Lichess'; + String get lichessDbExplanation => 'Amostra de partidas rankeadas de todos os jogadores do Lichess'; @override String get switchSides => 'Trocar de lado'; @override - String get closingAccountWithdrawAppeal => 'Encerrar a tua conta anula o teu apelo'; + String get closingAccountWithdrawAppeal => 'Encerrar sua conta anulará seu apelo'; @override - String get ourEventTips => 'Os nossos conselhos para organizar eventos'; + String get ourEventTips => 'Nossas dicas para organização de eventos'; @override String get instructions => 'Instruções'; @override - String get showMeEverything => 'Mostra-me tudo'; + String get showMeEverything => 'Mostrar tudo'; @override - String get lichessPatronInfo => 'Lichess é uma instituição de caridade e software de código aberto totalmente livre.\nTodos os custos operacionais, de desenvolvimento e conteúdo são financiados exclusivamente por doações de usuários.'; + String get lichessPatronInfo => 'Lichess é um software de código aberto, totalmente grátis e sem fins lucrativos. Todos os custos operacionais, de desenvolvimento, e os conteúdos são financiados unicamente através de doações de usuários.'; @override String get nothingToSeeHere => 'Nada para ver aqui no momento.'; @@ -8634,8 +8805,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'O teu adversário deixou a partida. Podes reivindicar vitória em $count segundos.', - one: 'O teu adversário deixou a partida. Podes reivindicar vitória em $count segundo.', + other: 'O seu adversário deixou a partida. Você pode reivindicar vitória em $count segundos.', + one: 'O seu adversário deixou a partida. Você pode reivindicar vitória em $count segundo.', ); return '$_temp0'; } @@ -8645,8 +8816,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Xeque-mate em $count meio-movimentos', - one: 'Xeque-mate em $count meio-movimento', + other: 'Mate em $count lances', + one: 'Mate em $count lance', ); return '$_temp0'; } @@ -8656,8 +8827,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count erros graves', - one: '$count erro grave', + other: '$count capivaradas', + one: '$count capivarada', ); return '$_temp0'; } @@ -8689,8 +8860,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count jogadores', - one: '$count jogador', + other: '$count jogadores conectados', + one: '$count jogadores conectados', ); return '$_temp0'; } @@ -8700,8 +8871,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count jogos', - one: '$count jogo', + other: '$count partidas', + one: '$count partida', ); return '$_temp0'; } @@ -8711,8 +8882,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$param2 partidas $count avaliadas', - one: '$param2 partida $count avaliada', + other: 'Rating $count após $param2 partidas', + one: 'Rating $count em $param2 jogo', ); return '$_temp0'; } @@ -8722,8 +8893,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count favoritos', - one: '$count favorito', + other: '$count Favoritos', + one: '$count Favoritos', ); return '$_temp0'; } @@ -8734,7 +8905,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { count, locale: localeName, other: '$count dias', - one: '$count dia', + one: '$count dias', ); return '$_temp0'; } @@ -8745,7 +8916,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { count, locale: localeName, other: '$count horas', - one: '$count hora', + one: '$count horas', ); return '$_temp0'; } @@ -8766,8 +8937,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'As posições são atualizadas a cada $count minutos', - one: 'As posições são atualizadas a cada minuto', + other: 'O ranking é atualizado a cada $count minutos', + one: 'O ranking é atualizado a cada $count minutos', ); return '$_temp0'; } @@ -8778,7 +8949,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { count, locale: localeName, other: '$count problemas', - one: '$count problema', + one: '$count quebra-cabeça', ); return '$_temp0'; } @@ -8788,8 +8959,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count jogos contigo', - one: '$count jogo contigo', + other: '$count partidas contra você', + one: '$count partidas contra você', ); return '$_temp0'; } @@ -8799,8 +8970,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count partidas a valer pontos', - one: '$count partida a valer pontos', + other: '$count valendo pontos', + one: '$count valendo pontos', ); return '$_temp0'; } @@ -8833,7 +9004,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { count, locale: localeName, other: '$count empates', - one: '$count empate', + one: '$count empates', ); return '$_temp0'; } @@ -8843,8 +9014,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count a jogar', - one: '$count a jogar', + other: '$count jogando', + one: '$count jogando', ); return '$_temp0'; } @@ -8855,7 +9026,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { count, locale: localeName, other: 'Dar $count segundos', - one: 'Dar $count segundo', + one: 'Dar $count segundos', ); return '$_temp0'; } @@ -8898,8 +9069,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '≥ $count partidas a valer pontos', - one: '≥ $count partida a valer pontos', + other: '≥ $count jogos valendo pontos', + one: '≥ $count jogos valendo pontos', ); return '$_temp0'; } @@ -8909,8 +9080,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '≥ $count partidas de $param2 a valer pontos', - one: '≥ $count partida de $param2 a valer pontos', + other: '≥ $count $param2 partidas valendo pontos', + one: '≥ $count partida $param2 valendo pontos', ); return '$_temp0'; } @@ -8920,8 +9091,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Precisa de jogar mais $count jogos de $param2 a valer pontos', - one: 'Precisas de jogar mais $count jogo de $param2 a valer pontos', + other: 'Você precisa jogar mais $count partidas de $param2 valendo pontos', + one: 'Você precisa jogar mais $count partida de $param2 valendo pontos', ); return '$_temp0'; } @@ -8931,8 +9102,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Tens de jogar mais $count jogos a valer pontos', - one: 'Tens de jogar mais $count jogo a valer pontos', + other: 'Você precisa jogar ainda $count partidas valendo pontos', + one: 'Você precisa jogar ainda $count partidas valendo pontos', ); return '$_temp0'; } @@ -8942,8 +9113,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count partidas importadas', - one: '$count partida importada', + other: '$count de partidas importadas', + one: '$count de partidas importadas', ); return '$_temp0'; } @@ -8965,7 +9136,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { count, locale: localeName, other: '$count seguidores', - one: '$count seguidor', + one: '$count seguidores', ); return '$_temp0'; } @@ -8975,8 +9146,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'a seguir $count jogadores', - one: 'a seguir $count jogador', + other: '$count seguidos', + one: '$count seguidos', ); return '$_temp0'; } @@ -8986,8 +9157,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Menos de $count minutos', - one: 'Menos de $count minuto', + other: 'Menos que $count minutos', + one: 'Menos que $count minutos', ); return '$_temp0'; } @@ -8997,8 +9168,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count jogos a decorrer', - one: '$count jogo a decorrer', + other: '$count partidas em andamento', + one: '$count partidas em andamento', ); return '$_temp0'; } @@ -9009,7 +9180,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { count, locale: localeName, other: 'Máximo: $count caracteres.', - one: 'Máximo: $count carácter.', + one: 'Máximo: $count caractere.', ); return '$_temp0'; } @@ -9041,8 +9212,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count jogadores ativos esta semana em $param2.', - one: '$count jogador ativo esta semana em $param2.', + other: '$count $param2 jogadores nesta semana.', + one: '$count $param2 jogador nesta semana.', ); return '$_temp0'; } @@ -9052,8 +9223,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Disponível em $count línguas!', - one: 'Disponível em $count língua!', + other: 'Disponível em $count idiomas!', + one: 'Disponível em $count idiomas!', ); return '$_temp0'; } @@ -9063,8 +9234,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count segundos para jogar o primeiro movimento', - one: '$count segundo para jogar o primeiro movimento', + other: '$count segundos para fazer o primeiro lance', + one: '$count segundo para fazer o primeiro lance', ); return '$_temp0'; } @@ -9085,23 +9256,23 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'e guarda $count variantes de movimentos antecipados', - one: 'e guarda $count variante de movimentos antecipados', + other: 'e salvar as linhas de pré-lance de $count', + one: 'e salvar a linha de pré-lance de $count', ); return '$_temp0'; } @override - String get stormMoveToStart => 'Faz um lance para começar'; + String get stormMoveToStart => 'Mova para começar'; @override - String get stormYouPlayTheWhitePiecesInAllPuzzles => 'Jogas com as peças brancas em todos os problemas'; + String get stormYouPlayTheWhitePiecesInAllPuzzles => 'Você joga com as peças brancas em todos os quebra-cabeças'; @override - String get stormYouPlayTheBlackPiecesInAllPuzzles => 'Jogas com as peças pretas em todos os problemas'; + String get stormYouPlayTheBlackPiecesInAllPuzzles => 'Você joga com as peças pretas em todos os quebra-cabeças'; @override - String get stormPuzzlesSolved => 'problemas resolvidos'; + String get stormPuzzlesSolved => 'quebra-cabeças resolvidos'; @override String get stormNewDailyHighscore => 'Novo recorde diário!'; @@ -9113,11 +9284,11 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get stormNewMonthlyHighscore => 'Novo recorde mensal!'; @override - String get stormNewAllTimeHighscore => 'Novo recorde!'; + String get stormNewAllTimeHighscore => 'Novo recorde de todos os tempos!'; @override String stormPreviousHighscoreWasX(String param) { - return 'O recorde anterior era $param'; + return 'Recorde anterior era $param'; } @override @@ -9132,7 +9303,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get stormScore => 'Pontuação'; @override - String get stormMoves => 'Total de lances'; + String get stormMoves => 'Lances'; @override String get stormAccuracy => 'Precisão'; @@ -9144,119 +9315,119 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get stormTime => 'Tempo'; @override - String get stormTimePerMove => 'Tempo por jogada'; + String get stormTimePerMove => 'Tempo por lance'; @override - String get stormHighestSolved => 'Problema mais difícil resolvido'; + String get stormHighestSolved => 'Classificação mais alta'; @override - String get stormPuzzlesPlayed => 'Problemas jogados'; + String get stormPuzzlesPlayed => 'Quebra-cabeças jogados'; @override - String get stormNewRun => 'Nova partida (tecla: espaço)'; + String get stormNewRun => 'Nova série (tecla de atalho: espaço)'; @override - String get stormEndRun => 'Terminar partida (tecla: Enter)'; + String get stormEndRun => 'Finalizar série (tecla de atalho: Enter)'; @override - String get stormHighscores => 'Recorde'; + String get stormHighscores => 'Melhores pontuações'; @override - String get stormViewBestRuns => 'Ver as melhores partidas'; + String get stormViewBestRuns => 'Ver melhores séries'; @override - String get stormBestRunOfDay => 'Melhor partida do dia'; + String get stormBestRunOfDay => 'Melhor série do dia'; @override - String get stormRuns => 'Partidas'; + String get stormRuns => 'Séries'; @override - String get stormGetReady => 'Preparar!'; + String get stormGetReady => 'Prepare-se!'; @override - String get stormWaitingForMorePlayers => 'À espera de mais jogadores...'; + String get stormWaitingForMorePlayers => 'Esperando mais jogadores entrarem...'; @override - String get stormRaceComplete => 'Race concluída!'; + String get stormRaceComplete => 'Corrida concluída!'; @override - String get stormSpectating => 'A assistir'; + String get stormSpectating => 'Espectando'; @override - String get stormJoinTheRace => 'Junta-te à corrida!'; + String get stormJoinTheRace => 'Entre na corrida!'; @override String get stormStartTheRace => 'Começar a corrida'; @override String stormYourRankX(String param) { - return 'A tua pontuação: $param'; + return 'Sua classificação: $param'; } @override - String get stormWaitForRematch => 'Espera pela desforra'; + String get stormWaitForRematch => 'Esperando por revanche'; @override String get stormNextRace => 'Próxima corrida'; @override - String get stormJoinRematch => 'Juntar-se à desforra'; + String get stormJoinRematch => 'Junte-se a revanche'; @override - String get stormWaitingToStart => 'À espera de começar'; + String get stormWaitingToStart => 'Esperando para começar'; @override String get stormCreateNewGame => 'Criar um novo jogo'; @override - String get stormJoinPublicRace => 'Junta-te a uma corrida pública'; + String get stormJoinPublicRace => 'Junte-se a uma corrida pública'; @override - String get stormRaceYourFriends => 'Corre contra os teus amigos'; + String get stormRaceYourFriends => 'Corra contra seus amigos'; @override - String get stormSkip => 'ignorar'; + String get stormSkip => 'pular'; @override - String get stormSkipHelp => 'Pode pular um movimento por corrida:'; + String get stormSkipHelp => 'Você pode pular um movimento por corrida:'; @override - String get stormSkipExplanation => 'Passa à frente esta jogada para preservares o teu combo! Só podes fazê-lo apenas uma vez por Race.'; + String get stormSkipExplanation => 'Pule este lance para preservar o seu combo! Funciona apenas uma vez por corrida.'; @override - String get stormFailedPuzzles => 'Desafios falhados'; + String get stormFailedPuzzles => 'Quebra-cabeças falhados'; @override - String get stormSlowPuzzles => 'Desafios lentos'; + String get stormSlowPuzzles => 'Quebra-cabeças lentos'; @override - String get stormSkippedPuzzle => 'Desafios saltados'; + String get stormSkippedPuzzle => 'Quebra-cabeça pulado'; @override - String get stormThisWeek => 'Esta semana'; + String get stormThisWeek => 'Essa semana'; @override - String get stormThisMonth => 'Este mês'; + String get stormThisMonth => 'Esse mês'; @override - String get stormAllTime => 'Desde sempre'; + String get stormAllTime => 'Desde o início'; @override String get stormClickToReload => 'Clique para recarregar'; @override - String get stormThisRunHasExpired => 'Esta sessão expirou!'; + String get stormThisRunHasExpired => 'Esta corrida acabou!'; @override - String get stormThisRunWasOpenedInAnotherTab => 'Esta sessão foi aberta noutra aba!'; + String get stormThisRunWasOpenedInAnotherTab => 'Esta corrida foi aberta em outra aba!'; @override String stormXRuns(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count tentativas', - one: '1 partida', + other: '$count séries', + one: '1 tentativa', ); return '$_temp0'; } @@ -9266,17 +9437,17 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Jogou $count partidas de $param2', - one: 'Jogou uma partida de $param2', + other: 'Jogou $count tentativas de $param2', + one: 'Jogou uma tentativa de $param2', ); return '$_temp0'; } @override - String get streamerLichessStreamers => 'Streamers no Lichess'; + String get streamerLichessStreamers => 'Streamers do Lichess'; @override - String get studyShareAndExport => 'Partilhar & exportar'; + String get studyShareAndExport => 'Compartilhar & exportar'; @override String get studyStart => 'Iniciar'; diff --git a/lib/l10n/l10n_ro.dart b/lib/l10n/l10n_ro.dart index cafc80a121..6fc00078fb 100644 --- a/lib/l10n/l10n_ro.dart +++ b/lib/l10n/l10n_ro.dart @@ -9,7 +9,7 @@ class AppLocalizationsRo extends AppLocalizations { AppLocalizationsRo([String locale = 'ro']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Acasă'; @override String get mobilePuzzlesTab => 'Puzzles'; @@ -21,10 +21,10 @@ class AppLocalizationsRo extends AppLocalizations { String get mobileWatchTab => 'Watch'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Setări'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Trebuie să te autentifici pentru a accesa această pagină.'; @override String get mobileSystemColors => 'System colors'; @@ -48,7 +48,7 @@ class AppLocalizationsRo extends AppLocalizations { String get mobileNotFollowingAnyUser => 'You are not following any user.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Toate jocurile'; @override String get mobileRecentSearches => 'Recent searches'; @@ -71,7 +71,7 @@ class AppLocalizationsRo extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -92,7 +92,7 @@ class AppLocalizationsRo extends AppLocalizations { String get mobileHideVariation => 'Hide variation'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Afişează сomentarii'; @override String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; @@ -124,6 +124,26 @@ class AppLocalizationsRo extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Arată rezultatul'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Rezolvă cât mai multe puzzle-uri în 3 minute.'; + + @override + String mobileGreeting(String param) { + return 'Salut, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Salut'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Activitate'; @@ -1879,6 +1899,9 @@ class AppLocalizationsRo extends AppLocalizations { @override String get friends => 'Prieteni'; + @override + String get otherPlayers => 'alți jucători'; + @override String get discussions => 'Discuții'; @@ -2710,6 +2733,12 @@ class AppLocalizationsRo extends AppLocalizations { @override String get yes => 'Da'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Ajutor:'; diff --git a/lib/l10n/l10n_ru.dart b/lib/l10n/l10n_ru.dart index aa2f0c168b..cda5bef248 100644 --- a/lib/l10n/l10n_ru.dart +++ b/lib/l10n/l10n_ru.dart @@ -9,120 +9,140 @@ class AppLocalizationsRu extends AppLocalizations { AppLocalizationsRu([String locale = 'ru']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Главная'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Задачи'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Анализ'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Просмотр'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Настройки'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Вы должны войти для просмотра этой страницы.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Цвет интерфейса'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Отзыв'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'ОК'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Виброотклик'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Полноэкранный режим'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Скрывать интерфейс во время игры. Воспользуйтесь, если вам мешает навигация по краям экрана. Применяется в режиме партий и задач.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Вы не подписаны на других пользователей.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Все игры'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Последние запросы'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Очистить'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Игроки, содержащие «$param»'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Ничего не найденo'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Вы уверены?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Вы потеряете свою текущую серию, и результаты будут сохранены.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Ничего нет. Сыграйте несколько попыток.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Поделиться задачей'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Поделиться ссылкой на игру'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Поделиться PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Поделиться FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Показывать варианты'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Скрыть варианты'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Показать комментарии'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Хотите закончить эту попытку?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Ничего не найдено, измените фильтры, пожалуйста'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Отменить предложение о возврате хода'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Отменить предложение ничьей'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Ожидание соперника...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Игра вслепую'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Стримеры в эфире'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Присоединиться к игре'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Очистить сохранённый ход'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Что-то пошло не так.'; + + @override + String get mobileShowResult => 'Показать результат'; + + @override + String get mobilePuzzleThemesSubtitle => 'Решайте задачи по вашим любимым дебютам или выберите тему.'; + + @override + String get mobilePuzzleStormSubtitle => 'Решите как можно больше задач за 3 минуты.'; + + @override + String mobileGreeting(String param) { + return 'Привет, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Привет'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Активность'; @@ -1473,7 +1493,7 @@ class AppLocalizationsRu extends AppLocalizations { String get waitingForOpponent => 'Ожидание соперника'; @override - String get orLetYourOpponentScanQrCode => 'Или дайте вашему сопернику отсканировать этот QR-код'; + String get orLetYourOpponentScanQrCode => 'Или позвольте вашему сопернику отсканировать этот QR-код'; @override String get waiting => 'Ожидание'; @@ -1901,6 +1921,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get friends => 'Друзья'; + @override + String get otherPlayers => 'другие игроки'; + @override String get discussions => 'Беседы'; @@ -2652,7 +2675,7 @@ class AppLocalizationsRu extends AppLocalizations { String get editProfile => 'Редактировать профиль'; @override - String get realName => 'Real name'; + String get realName => 'Настоящее имя'; @override String get setFlair => 'Задайте свой эмодзи'; @@ -2732,6 +2755,12 @@ class AppLocalizationsRu extends AppLocalizations { @override String get yes => 'Да'; + @override + String get website => 'Сайт'; + + @override + String get mobile => 'Мобильный'; + @override String get help => 'Помощь:'; @@ -2890,7 +2919,7 @@ class AppLocalizationsRu extends AppLocalizations { String get outsideTheBoard => 'Вне доски'; @override - String get allSquaresOfTheBoard => 'All squares of the board'; + String get allSquaresOfTheBoard => 'Все поля на доске'; @override String get onSlowGames => 'В медленных играх'; @@ -3723,7 +3752,7 @@ class AppLocalizationsRu extends AppLocalizations { String get playEveryGame => 'Доигрывайте все партии, которые начинали.'; @override - String get tryToWin => 'Пытайтесь выиграть (или хотя бы свести на ничью) каждую свою партию.'; + String get tryToWin => 'Попытайтесь выиграть (или хотя бы свести вничью) каждую свою партию.'; @override String get resignLostGames => 'Сдавайтесь в безнадёжной позиции (а не ждите, когда время закончится).'; diff --git a/lib/l10n/l10n_sk.dart b/lib/l10n/l10n_sk.dart index 8e50e2b0d3..ef0e4eec53 100644 --- a/lib/l10n/l10n_sk.dart +++ b/lib/l10n/l10n_sk.dart @@ -9,120 +9,140 @@ class AppLocalizationsSk extends AppLocalizations { AppLocalizationsSk([String locale = 'sk']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Domov'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Úlohy'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Nástroje'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Sledovať'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Nastavenia'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Na zobrazenie tejto stránky musíte byť prihlásený.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Farby operačného systému'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Spätná väzba'; @override String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Vibrovanie zariadenia'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Režim celej obrazovky'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Skrytie používateľského rozhrania systému počas hrania. Túto funkciu použite, ak vám prekážajú navigačné gestá systému na okrajoch obrazovky. Vzťahuje sa na obrazovku počas partie a Puzzle Storm.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Nesledujete žiadneho používateľa.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Všetky partie'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Posledné vyhľadávania'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Odstrániť'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Hráči s \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Nič sa nenašlo'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Ste si istý?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Stratíte svoju aktuálnu sériu a vaše skóre sa uloží.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Niet čo zobraziť. Zahrajte si niekoľko kôl Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Zdieľať túto úlohu'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Zdieľať URL partie'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Zdieľať PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Zdieľať pozíciu vo formáte FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Zobraziť varianty'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Skryť varianty'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Zobraziť komentáre'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Chcete ukončiť tento pokus?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Niet čo zobraziť, prosím, zmeňte filtre'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Zrušiť žiadosť o vrátenie ťahu'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Zrušiť navrhnutie remízy'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Čaká sa na pripojenie súpera...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Naslepo'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Vysielajúci strímeri'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Pripojiť sa k partii'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Vymazať uložený ťah'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Došlo k chybe.'; + + @override + String get mobileShowResult => 'Zobraziť výsledok'; + + @override + String get mobilePuzzleThemesSubtitle => 'Riešte úlohy zo svojich obľúbených otvorení alebo si vyberte tému.'; + + @override + String get mobilePuzzleStormSubtitle => 'Vyriešte čo najviac úloh za 3 minúty.'; + + @override + String mobileGreeting(String param) { + return 'Ahoj, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Ahoj'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Aktivita'; @@ -944,7 +964,7 @@ class AppLocalizationsSk extends AppLocalizations { } @override - String get puzzleStreakSkipExplanation => 'Preskočte tento ťah, aby ste neprerušili sériu! Funguje len raz za sériu.'; + String get puzzleStreakSkipExplanation => 'Preskočte tento ťah, aby ste neprerušili sériu! Funguje len raz za kolo.'; @override String get puzzleContinueTheStreak => 'Pokračovať v sérii výhier'; @@ -983,7 +1003,7 @@ class AppLocalizationsSk extends AppLocalizations { } @override - String get puzzleNoPuzzlesToShow => 'Niet tu čo ukázať, choďte najprv riešiť pár úloh!'; + String get puzzleNoPuzzlesToShow => 'Niet čo zobraziť, vyriešte najprv zopár úloh!'; @override String get puzzleImprovementAreasDescription => 'Precvičujte tieto úlohy aby ste napredovali čo najrýchlejšie!'; @@ -1901,6 +1921,9 @@ class AppLocalizationsSk extends AppLocalizations { @override String get friends => 'Priatelia'; + @override + String get otherPlayers => 'iní hráči'; + @override String get discussions => 'Konverzácie'; @@ -2142,7 +2165,7 @@ class AppLocalizationsSk extends AppLocalizations { String get standard => 'Štandard'; @override - String get customPosition => 'Custom position'; + String get customPosition => 'Vlastná pozícia'; @override String get unlimited => 'Bez času'; @@ -2712,7 +2735,7 @@ class AppLocalizationsSk extends AppLocalizations { String get puzzles => 'Šachové úlohy'; @override - String get onlineBots => 'Online bots'; + String get onlineBots => 'Online boti'; @override String get name => 'Meno'; @@ -2732,6 +2755,12 @@ class AppLocalizationsSk extends AppLocalizations { @override String get yes => 'Áno'; + @override + String get website => 'Webstránka'; + + @override + String get mobile => 'Mobil'; + @override String get help => 'Pomoc:'; @@ -3059,7 +3088,7 @@ class AppLocalizationsSk extends AppLocalizations { String get videoLibrary => 'Video knižnica'; @override - String get streamersMenu => 'Streameri'; + String get streamersMenu => 'Strímeri'; @override String get mobileApp => 'Mobilná aplikácia'; @@ -3188,7 +3217,7 @@ class AppLocalizationsSk extends AppLocalizations { String get keyGoToStartOrEnd => 'ísť na začiatok/koniec'; @override - String get keyCycleSelectedVariation => 'Cycle selected variation'; + String get keyCycleSelectedVariation => 'Vybrať variant'; @override String get keyShowOrHideComments => 'zobraziť/skryť komentáre'; @@ -3212,28 +3241,28 @@ class AppLocalizationsSk extends AppLocalizations { String get keyNextInaccuracy => 'Ďalšia nepresnosť'; @override - String get keyPreviousBranch => 'Previous branch'; + String get keyPreviousBranch => 'Predchádzajúca vetva'; @override - String get keyNextBranch => 'Next branch'; + String get keyNextBranch => 'Nasledujúca vetva'; @override - String get toggleVariationArrows => 'Toggle variation arrows'; + String get toggleVariationArrows => 'Prepnúť šípky variantov'; @override - String get cyclePreviousOrNextVariation => 'Cycle previous/next variation'; + String get cyclePreviousOrNextVariation => 'Zakomponovať predchádzajúci/nasledujúci variant'; @override - String get toggleGlyphAnnotations => 'Toggle move annotations'; + String get toggleGlyphAnnotations => 'Prepnúť poznámky k ťahom'; @override - String get togglePositionAnnotations => 'Toggle position annotations'; + String get togglePositionAnnotations => 'Prepnúť poznámky k pozíciám'; @override - String get variationArrowsInfo => 'Variation arrows let you navigate without using the move list.'; + String get variationArrowsInfo => 'Šípky variantov umožňujú navigáciu bez použitia záznamu ťahov.'; @override - String get playSelectedMove => 'play selected move'; + String get playSelectedMove => 'zahrať zvolený ťah'; @override String get newTournament => 'Nový turnaj'; @@ -3368,7 +3397,7 @@ class AppLocalizationsSk extends AppLocalizations { String get kidMode => 'Detský režim'; @override - String get kidModeIsEnabled => 'Kid mode is enabled.'; + String get kidModeIsEnabled => 'Detský režim je povolený.'; @override String get kidModeExplanation => 'V detskom režime je pre ochranu detí a mládeže pred ostatnými užívateľmi akákoľvek komunikácia zablokovaná.'; @@ -3693,10 +3722,10 @@ class AppLocalizationsSk extends AppLocalizations { } @override - String get showUnreadLichessMessage => 'You have received a private message from Lichess.'; + String get showUnreadLichessMessage => 'Obdržali ste súkromnú správu od Lichess.'; @override - String get clickHereToReadIt => 'Click here to read it'; + String get clickHereToReadIt => 'Kliknutím sem si ju môžete prečítať'; @override String get sorry => 'Prepáčte :('; @@ -4090,7 +4119,7 @@ class AppLocalizationsSk extends AppLocalizations { String get lichessPatronInfo => 'Lichess je bezplatný a úplne slobodný/nezávislý softvér s otvoreným zdrojovým kódom. Všetky prevádzkové náklady, vývoj a obsah sú financované výlučne z darov používateľov.'; @override - String get nothingToSeeHere => 'Nothing to see here at the moment.'; + String get nothingToSeeHere => 'Momentálne tu nie je nič k zobrazeniu.'; @override String opponentLeftCounter(int count) { @@ -4700,22 +4729,22 @@ class AppLocalizationsSk extends AppLocalizations { String get stormPuzzlesPlayed => 'Riešené úlohy'; @override - String get stormNewRun => 'Nový pokus (kláves. skratka: Medzerník)'; + String get stormNewRun => 'Nové kolo (kláves. skratka: Medzerník)'; @override - String get stormEndRun => 'Ukončiť pokus (kláves. skratka: Enter)'; + String get stormEndRun => 'Ukončiť kolo (kláves. skratka: Enter)'; @override String get stormHighscores => 'Najvyššie skóre'; @override - String get stormViewBestRuns => 'Prezrieť najlepšie pokusy'; + String get stormViewBestRuns => 'Prezrieť najlepšie kolá'; @override - String get stormBestRunOfDay => 'Najlepší pokus dňa'; + String get stormBestRunOfDay => 'Najlepšie kolo dňa'; @override - String get stormRuns => 'Pokusy'; + String get stormRuns => 'Kolá'; @override String get stormGetReady => 'Pripravte sa!'; @@ -4792,20 +4821,20 @@ class AppLocalizationsSk extends AppLocalizations { String get stormClickToReload => 'Kliknite pre opätovné načítanie'; @override - String get stormThisRunHasExpired => 'Tento pokus vypršal!'; + String get stormThisRunHasExpired => 'Čas tohto kola vypršal!'; @override - String get stormThisRunWasOpenedInAnotherTab => 'Tento pokus ste otvorili v inej záložke!'; + String get stormThisRunWasOpenedInAnotherTab => 'Toto kolo ste otvorili v inej záložke!'; @override String stormXRuns(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count pokusov', - many: '$count pokusov', - few: '$count pokusy', - one: '1 pokus', + other: '$count kôl', + many: '$count kôl', + few: '$count kolá', + one: '1 kolo', ); return '$_temp0'; } @@ -4815,10 +4844,10 @@ class AppLocalizationsSk extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Odohraných $count pokusov $param2', - many: 'Odohraných $count pokusov $param2', - few: 'Obohrané $count pokusy $param2', - one: 'Odohraný jeden pokus $param2', + other: 'Odohraných $count kôl $param2', + many: 'Odohraných $count kôl $param2', + few: 'Obohrané $count kolá $param2', + one: 'Odohrané jedeno kolo $param2', ); return '$_temp0'; } diff --git a/lib/l10n/l10n_sl.dart b/lib/l10n/l10n_sl.dart index 0a419b0f19..dfc348e8b8 100644 --- a/lib/l10n/l10n_sl.dart +++ b/lib/l10n/l10n_sl.dart @@ -71,7 +71,7 @@ class AppLocalizationsSl extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsSl extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Pokaži rezultat'; + + @override + String get mobilePuzzleThemesSubtitle => 'Igrajte uganke iz svojih najljubših otvoritev ali izberite temo.'; + + @override + String get mobilePuzzleStormSubtitle => 'V 3 minutah rešite čim več ugank.'; + + @override + String mobileGreeting(String param) { + return 'Pozdravljeni $param'; + } + + @override + String get mobileGreetingWithoutName => 'Živjo'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Aktivnost'; @@ -1901,6 +1921,9 @@ class AppLocalizationsSl extends AppLocalizations { @override String get friends => 'Prijatelji'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Pogovori'; @@ -2732,6 +2755,12 @@ class AppLocalizationsSl extends AppLocalizations { @override String get yes => 'Da'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Pomoč:'; diff --git a/lib/l10n/l10n_sq.dart b/lib/l10n/l10n_sq.dart index 4d5f50ee70..ee6e39f9de 100644 --- a/lib/l10n/l10n_sq.dart +++ b/lib/l10n/l10n_sq.dart @@ -9,120 +9,140 @@ class AppLocalizationsSq extends AppLocalizations { AppLocalizationsSq([String locale = 'sq']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Kreu'; @override String get mobilePuzzlesTab => 'Puzzles'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Mjete'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Shiheni'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Rregullime'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Që të shihni këtë faqe, duhet të keni bërë hyrjen në llogari.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Ngjyra sistemi'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Përshtypje'; @override String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Dridhje gjatë lëvizjesh'; @override String get mobileSettingsImmersiveMode => 'Immersive mode'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Fshihni ndërfaqen e sistemit teksa luani. Përdoreni këtë nëse ju bezdisin gjeste sistemi për lëvizjet në skaje të ekranit. Ka vend për lojëra dhe skena Puzzle Storm.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'S’ndiqni ndonjë përdorues.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Krejt lojërat'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Kërkime së fundi'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Spastroje'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Lojëtarë me “$param”'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'S’ka përfundime'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Jeni i sigurt?'; @override String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'S’ka gjë për shfaqje. Luani ndonjë raund Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Ndajeni këtë ushtrim me të tjerët'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Ndani URL loje me të tjerë'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Ndani PGN me të tjerë'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Tregojuni të tjerëve pozicionin si FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Shfaq variante'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Fshihe variantin'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Shfaq komente'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Doni të përfundohen ku raund?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'S’ka gjë për t’u shfaqur, ju lutemi, ndryshoni filtrat'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Anulojeni ofertën për prapakthim'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Anulojeni ofertën për barazim'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Po pritet që të vijë kundërshtari…'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Me sytë lidhur'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Transmetues drejtpërsëdrejti'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Merrni pjesë në një lojë'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Spastroje lëvizjen e ruajtur'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Diç shkoi ters.'; + + @override + String get mobileShowResult => 'Shfaq përfundimin'; + + @override + String get mobilePuzzleThemesSubtitle => 'Luani puzzle-e nga hapjet tuaja të parapëlqyera, ose zgjidhni një temë.'; + + @override + String get mobilePuzzleStormSubtitle => 'Zgjidhni sa më shumë puzzle-e të mundeni brenda 3 minutash.'; + + @override + String mobileGreeting(String param) { + return 'Tungjatjeta, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Tungjatjeta'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Aktiviteti'; @@ -1857,6 +1877,9 @@ class AppLocalizationsSq extends AppLocalizations { @override String get friends => 'Miqtë'; + @override + String get otherPlayers => 'lojtarë të tjerë'; + @override String get discussions => 'Biseda'; @@ -2688,6 +2711,12 @@ class AppLocalizationsSq extends AppLocalizations { @override String get yes => 'Po'; + @override + String get website => 'Sajt'; + + @override + String get mobile => 'Celular'; + @override String get help => 'Ndihmë:'; diff --git a/lib/l10n/l10n_sr.dart b/lib/l10n/l10n_sr.dart index 703d38808a..8fdff22f73 100644 --- a/lib/l10n/l10n_sr.dart +++ b/lib/l10n/l10n_sr.dart @@ -71,7 +71,7 @@ class AppLocalizationsSr extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsSr extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Активност'; @@ -1872,6 +1892,9 @@ class AppLocalizationsSr extends AppLocalizations { @override String get friends => 'Пријатељи'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Разговори'; @@ -2703,6 +2726,12 @@ class AppLocalizationsSr extends AppLocalizations { @override String get yes => 'Да'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Помоћ'; diff --git a/lib/l10n/l10n_sv.dart b/lib/l10n/l10n_sv.dart index a7ad67ae62..592ce18f9a 100644 --- a/lib/l10n/l10n_sv.dart +++ b/lib/l10n/l10n_sv.dart @@ -71,7 +71,7 @@ class AppLocalizationsSv extends AppLocalizations { String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override String get mobileSharePuzzle => 'Share this puzzle'; @@ -124,6 +124,26 @@ class AppLocalizationsSv extends AppLocalizations { @override String get mobileSomethingWentWrong => 'Something went wrong.'; + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; + @override String get activityActivity => 'Aktivitet'; @@ -1857,6 +1877,9 @@ class AppLocalizationsSv extends AppLocalizations { @override String get friends => 'Vänner'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Konversationer'; @@ -2608,7 +2631,7 @@ class AppLocalizationsSv extends AppLocalizations { String get editProfile => 'Ändra profil'; @override - String get realName => 'Real name'; + String get realName => 'Verkligt namn'; @override String get setFlair => 'Ställ in din flair'; @@ -2688,6 +2711,12 @@ class AppLocalizationsSv extends AppLocalizations { @override String get yes => 'Ja'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Hjälp:'; diff --git a/lib/l10n/l10n_tr.dart b/lib/l10n/l10n_tr.dart index 0d8f0f5328..24e4ffa09d 100644 --- a/lib/l10n/l10n_tr.dart +++ b/lib/l10n/l10n_tr.dart @@ -9,34 +9,34 @@ class AppLocalizationsTr extends AppLocalizations { AppLocalizationsTr([String locale = 'tr']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Ana sayfa'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Bulmacalar'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Araçlar'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'İzle'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Ayarlar'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Bu sayfayı görüntülemek için giriş yapmalısınız.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Sistem renkleri'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Geri bildirimde bulun'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'Tamam'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Titreşimli geri bildirim'; @override String get mobileSettingsImmersiveMode => 'Immersive mode'; @@ -45,16 +45,16 @@ class AppLocalizationsTr extends AppLocalizations { String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Hiçbir kullanıcıyı takip etmiyorsunuz.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Tüm oyunlar'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Son aramalar'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Temizle'; @override String mobilePlayersMatchingSearchTerm(String param) { @@ -62,37 +62,37 @@ class AppLocalizationsTr extends AppLocalizations { } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Sonuç bulunamadı'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Emin misiniz?'; @override String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Bulmacayı paylaş'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Oyun linkini paylaş'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'PGN\'yi paylaş'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Konumu FEN olarak paylaş'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Varyasyonları göster'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Varyasyonu gizle'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Yorumları göster'; @override String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; @@ -101,28 +101,48 @@ class AppLocalizationsTr extends AppLocalizations { String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Geri alma teklifini iptal et'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Berabere teklifini iptal et'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Rakip bekleniyor...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Körleme modu'; @override String get mobileLiveStreamers => 'Live streamers'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Bir oyuna katıl'; @override String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Birşeyler ters gitti.'; + + @override + String get mobileShowResult => 'Show result'; + + @override + String get mobilePuzzleThemesSubtitle => 'Play puzzles from your favorite openings, or choose a theme.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Son Etkinlikler'; @@ -1857,6 +1877,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get friends => 'Arkadaşlar'; + @override + String get otherPlayers => 'other players'; + @override String get discussions => 'Sohbetler'; @@ -2688,6 +2711,12 @@ class AppLocalizationsTr extends AppLocalizations { @override String get yes => 'Evet'; + @override + String get website => 'Website'; + + @override + String get mobile => 'Mobile'; + @override String get help => 'Yardım:'; diff --git a/lib/l10n/l10n_tt.dart b/lib/l10n/l10n_tt.dart deleted file mode 100644 index f2e7c7ad28..0000000000 --- a/lib/l10n/l10n_tt.dart +++ /dev/null @@ -1,4638 +0,0 @@ -import 'package:intl/intl.dart' as intl; - -import 'l10n.dart'; - -// ignore_for_file: type=lint - -/// The translations for Tatar (`tt`). -class AppLocalizationsTt extends AppLocalizations { - AppLocalizationsTt([String locale = 'tt']) : super(locale); - - @override - String get mobileHomeTab => 'Home'; - - @override - String get mobilePuzzlesTab => 'Puzzles'; - - @override - String get mobileToolsTab => 'Tools'; - - @override - String get mobileWatchTab => 'Watch'; - - @override - String get mobileSettingsTab => 'Settings'; - - @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; - - @override - String get mobileSystemColors => 'System colors'; - - @override - String get mobileFeedbackButton => 'Feedback'; - - @override - String get mobileOkButton => 'OK'; - - @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; - - @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; - - @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; - - @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; - - @override - String get mobileAllGames => 'All games'; - - @override - String get mobileRecentSearches => 'Recent searches'; - - @override - String get mobileClearButton => 'Clear'; - - @override - String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; - } - - @override - String get mobileNoSearchResults => 'No results'; - - @override - String get mobileAreYouSure => 'Are you sure?'; - - @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; - - @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; - - @override - String get mobileSharePuzzle => 'Share this puzzle'; - - @override - String get mobileShareGameURL => 'Share game URL'; - - @override - String get mobileShareGamePGN => 'Share PGN'; - - @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; - - @override - String get mobileShowVariations => 'Show variations'; - - @override - String get mobileHideVariation => 'Hide variation'; - - @override - String get mobileShowComments => 'Show comments'; - - @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; - - @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; - - @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; - - @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; - - @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; - - @override - String get mobileBlindfoldMode => 'Blindfold'; - - @override - String get mobileLiveStreamers => 'Live streamers'; - - @override - String get mobileCustomGameJoinAGame => 'Join a game'; - - @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; - - @override - String get mobileSomethingWentWrong => 'Something went wrong.'; - - @override - String get activityActivity => 'Эшчәнлек'; - - @override - String get activityHostedALiveStream => 'Стрим хуҗасы'; - - @override - String activityRankedInSwissTournament(String param1, String param2) { - return 'Ранкы #$param1 $param2 өчендә'; - } - - @override - String get activitySignedUp => 'Lichess.org ка кергән'; - - @override - String activitySupportedNbMonths(int count, String param2) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'lichess.org сайтына $count айга $param2 буларак ярдәм күрсәтте', - ); - return '$_temp0'; - } - - @override - String activityPracticedNbPositions(int count, String param2) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$param2-да $count күнегү ясады', - ); - return '$_temp0'; - } - - @override - String activitySolvedNbPuzzles(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count тактикалык мәсәлә чиште', - ); - return '$_temp0'; - } - - @override - String activityPlayedNbGames(int count, String param2) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count $param2 уенын уйнады', - ); - return '$_temp0'; - } - - @override - String activityPostedNbMessages(int count, String param2) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count хәбәрләрне нәшер итте$param2', - ); - return '$_temp0'; - } - - @override - String activityPlayedNbMoves(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count хәрәкәт уйнады', - ); - return '$_temp0'; - } - - @override - String activityInNbCorrespondenceGames(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count хат язышу уенында', - ); - return '$_temp0'; - } - - @override - String activityCompletedNbGames(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Тәмамлады $count хат язышу уеннарын', - ); - return '$_temp0'; - } - - @override - String activityFollowedNbPlayers(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count уйнаучы артыннан кушылды', - ); - return '$_temp0'; - } - - @override - String activityGainedNbFollowers(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count яңа артыннан баручылар белән казанган', - ); - return '$_temp0'; - } - - @override - String activityHostedNbSimuls(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Алып барган бер үк вакыттагы күргәзмәләрне', - ); - return '$_temp0'; - } - - @override - String activityJoinedNbSimuls(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Иштирак ителгән $count бер үк ватыттагы күргәзмәләр', - ); - return '$_temp0'; - } - - @override - String activityCreatedNbStudies(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Яңа $count өйрәнеш оештырды', - ); - return '$_temp0'; - } - - @override - String activityCompetedInNbTournaments(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Тәмам колынды $count Мәйдан бәйгеләре', - ); - return '$_temp0'; - } - - @override - String activityRankedInTournament(int count, String param2, String param3, String param4) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Ранкы #$count (югары$param2%) $param3 уен белән $param4', - ); - return '$_temp0'; - } - - @override - String activityCompetedInNbSwissTournaments(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Тәмам колындылар $count швецар бәйгесе', - ); - return '$_temp0'; - } - - @override - String activityJoinedNbTeams(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count җәмәга кушылды', - ); - return '$_temp0'; - } - - @override - String get broadcastBroadcasts => 'Ишеттәрешләр'; - - @override - String get broadcastLiveBroadcasts => 'Хәяти бәйгеләр ишетләштерешләр'; - - @override - String challengeChallengesX(String param1) { - return 'Challenges: $param1'; - } - - @override - String get challengeChallengeToPlay => 'Сынаулар уенда'; - - @override - String get challengeChallengeDeclined => 'Сынаулар кире кагылды'; - - @override - String get challengeChallengeAccepted => 'Сынаулар алынды!'; - - @override - String get challengeChallengeCanceled => 'Сынауны кире кактылар.'; - - @override - String get challengeRegisterToSendChallenges => 'Зинһар теркәл сынаулар җибәрер өчен.'; - - @override - String challengeYouCannotChallengeX(String param) { - return 'Сез сыный алмыйсыз $param.'; - } - - @override - String challengeXDoesNotAcceptChallenges(String param) { - return '$param сезнең сынауны кире какты.'; - } - - @override - String challengeYourXRatingIsTooFarFromY(String param1, String param2) { - return 'Сезнең $param1 рейтингыгыз $param2 дан оглы ара.'; - } - - @override - String challengeCannotChallengeDueToProvisionalXRating(String param) { - return 'Сынау вакытлы $param рейтингыгыз аркасында кыенлыклар тудыра алмый.'; - } - - @override - String challengeXOnlyAcceptsChallengesFromFriends(String param) { - return '$param ала сынаулар дустлардан гына.'; - } - - @override - String get challengeDeclineGeneric => 'Мин алмыйм сынауларны бу вакытта.'; - - @override - String get challengeDeclineLater => 'Бу минем өчен дөрес вакыт түгел, зинһар, соңрак кабат сорагыз.'; - - @override - String get challengeDeclineTooFast => 'Бу вакыт тикшерүе бик тиз минем өчен, зинһар сынагыз яңадан озаграк уен белән.'; - - @override - String get challengeDeclineTooSlow => 'Бу вакыт тикшерүе бик озак минем өчен, зинһар сынагыз яңадан тиз уен белән.'; - - @override - String get challengeDeclineTimeControl => 'Мин алмыйм сынауларны вакыт тикшерүе белән.'; - - @override - String get challengeDeclineRated => 'Зинһар җибәрегез миңа рейтинглы сынау урнына.'; - - @override - String get challengeDeclineCasual => 'Зинһар җибәрегез миңа бәяләүсез сынау урнына.'; - - @override - String get challengeDeclineStandard => 'Мин алмыйм вариантлы сынаулар хәзер.'; - - @override - String get challengeDeclineVariant => 'Мин тәләп куймыйм уйнарга бу вариантка хәзер.'; - - @override - String get challengeDeclineNoBot => 'Мин алмыйм сынаулар боттан.'; - - @override - String get challengeDeclineOnlyBot => 'Мин алам сынаулар боттан гына.'; - - @override - String get challengeInviteLichessUser => 'Or invite a Lichess user:'; - - @override - String get contactContact => 'Контакт'; - - @override - String get contactContactLichess => 'Элемтә Lichess'; - - @override - String get patronDonate => 'Хәйрия колмак'; - - @override - String get patronLichessPatron => 'Lichess иганәче'; - - @override - String perfStatPerfStats(String param) { - return '$param статистикасы'; - } - - @override - String get perfStatViewTheGames => 'Карарга уеннарны'; - - @override - String get perfStatProvisional => 'вакытлыча'; - - @override - String get perfStatNotEnoughRatedGames => 'Ышанычлы рейтинг булдыру өчен җитәрлек бәяләнгән уеннар уйнамады.'; - - @override - String perfStatProgressOverLastXGames(String param) { - return 'Соңгы $param уеннарында алга китеш:'; - } - - @override - String perfStatRatingDeviation(String param) { - return 'Рейтингның тайпылышы:$param.'; - } - - @override - String perfStatRatingDeviationTooltip(String param1, String param2, String param3) { - return 'Lower value means the rating is more stable. Above $param1, the rating is considered provisional. To be included in the rankings, this value should be below $param2 (standard chess) or $param3 (variants).'; - } - - @override - String get perfStatTotalGames => 'Бөтен уеннар'; - - @override - String get perfStatRatedGames => 'Рейтинглы уеннар'; - - @override - String get perfStatTournamentGames => 'Бәйге уеннары'; - - @override - String get perfStatBerserkedGames => 'Яман уеннар'; - - @override - String get perfStatTimeSpentPlaying => 'Уенда уздырылган вакыт'; - - @override - String get perfStatAverageOpponent => 'Уртача ярышучы'; - - @override - String get perfStatVictories => 'Җиңүләр'; - - @override - String get perfStatDefeats => 'Җиңелүләр'; - - @override - String get perfStatDisconnections => 'Өзелгән'; - - @override - String get perfStatNotEnoughGames => 'Җитми уйналган уеннар'; - - @override - String perfStatHighestRating(String param) { - return 'Иң югары рейтинг $param'; - } - - @override - String perfStatLowestRating(String param) { - return 'Иң кече рейтинг $param'; - } - - @override - String perfStatFromXToY(String param1, String param2) { - return '$param1 дан $param2 га'; - } - - @override - String get perfStatWinningStreak => 'Бер-артлы җиңүләр'; - - @override - String get perfStatLosingStreak => 'Бер-артлы җиңүлеләр'; - - @override - String perfStatLongestStreak(String param) { - return 'Иң озын бер-артлы: $param'; - } - - @override - String perfStatCurrentStreak(String param) { - return 'Хәзерге бер-артлы: $param'; - } - - @override - String get perfStatBestRated => 'Иң яхшы рейтинглы җиңүләр'; - - @override - String get perfStatGamesInARow => 'Уеннар рәттән уйналды'; - - @override - String get perfStatLessThanOneHour => 'Уеннар арасында бер сәгатьтән дә азрак'; - - @override - String get perfStatMaxTimePlaying => 'Бер-артлы уйнаган максималь вакыт'; - - @override - String get perfStatNow => 'хәзер'; - - @override - String get preferencesPreferences => 'Көйләүләр'; - - @override - String get preferencesDisplay => 'Display'; - - @override - String get preferencesPrivacy => 'Хосусыйлык'; - - @override - String get preferencesNotifications => 'Notifications'; - - @override - String get preferencesPieceAnimation => 'Piece animation'; - - @override - String get preferencesMaterialDifference => 'Material difference'; - - @override - String get preferencesBoardHighlights => 'Board highlights (last move and check)'; - - @override - String get preferencesPieceDestinations => 'Piece destinations (valid moves and premoves)'; - - @override - String get preferencesBoardCoordinates => 'Board coordinates (A-H, 1-8)'; - - @override - String get preferencesMoveListWhilePlaying => 'Move list while playing'; - - @override - String get preferencesPgnPieceNotation => 'Move notation'; - - @override - String get preferencesChessPieceSymbol => 'Chess piece symbol'; - - @override - String get preferencesPgnLetter => 'Хәреф (K, Q, R, B, N)'; - - @override - String get preferencesZenMode => 'Зен режимы'; - - @override - String get preferencesShowPlayerRatings => 'Show player ratings'; - - @override - String get preferencesShowFlairs => 'Show player flairs'; - - @override - String get preferencesExplainShowPlayerRatings => 'This hides all ratings from Lichess, to help focus on the chess. Rated games still impact your rating, this is only about what you get to see.'; - - @override - String get preferencesDisplayBoardResizeHandle => 'Show board resize handle'; - - @override - String get preferencesOnlyOnInitialPosition => 'Only on initial position'; - - @override - String get preferencesInGameOnly => 'In-game only'; - - @override - String get preferencesChessClock => 'Chess clock'; - - @override - String get preferencesTenthsOfSeconds => 'Tenths of seconds'; - - @override - String get preferencesWhenTimeRemainingLessThanTenSeconds => 'When time remaining < 10 seconds'; - - @override - String get preferencesHorizontalGreenProgressBars => 'Horizontal green progress bars'; - - @override - String get preferencesSoundWhenTimeGetsCritical => 'Sound when time gets critical'; - - @override - String get preferencesGiveMoreTime => 'Give more time'; - - @override - String get preferencesGameBehavior => 'Game behaviour'; - - @override - String get preferencesHowDoYouMovePieces => 'How do you move pieces?'; - - @override - String get preferencesClickTwoSquares => 'Click two squares'; - - @override - String get preferencesDragPiece => 'Drag a piece'; - - @override - String get preferencesBothClicksAndDrag => 'Either'; - - @override - String get preferencesPremovesPlayingDuringOpponentTurn => 'Premoves (playing during opponent turn)'; - - @override - String get preferencesTakebacksWithOpponentApproval => 'Takebacks (with opponent approval)'; - - @override - String get preferencesInCasualGamesOnly => 'In casual games only'; - - @override - String get preferencesPromoteToQueenAutomatically => 'Promote to Queen automatically'; - - @override - String get preferencesExplainPromoteToQueenAutomatically => 'Hold the key while promoting to temporarily disable auto-promotion'; - - @override - String get preferencesWhenPremoving => 'When premoving'; - - @override - String get preferencesClaimDrawOnThreefoldRepetitionAutomatically => 'Claim draw on threefold repetition automatically'; - - @override - String get preferencesWhenTimeRemainingLessThanThirtySeconds => 'When time remaining < 30 seconds'; - - @override - String get preferencesMoveConfirmation => 'Move confirmation'; - - @override - String get preferencesExplainCanThenBeTemporarilyDisabled => 'Can be disabled during a game with the board menu'; - - @override - String get preferencesInCorrespondenceGames => 'Correspondence games'; - - @override - String get preferencesCorrespondenceAndUnlimited => 'Correspondence and unlimited'; - - @override - String get preferencesConfirmResignationAndDrawOffers => 'Confirm resignation and draw offers'; - - @override - String get preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook => 'Castling method'; - - @override - String get preferencesCastleByMovingTwoSquares => 'Move king two squares'; - - @override - String get preferencesCastleByMovingOntoTheRook => 'Move king onto rook'; - - @override - String get preferencesInputMovesWithTheKeyboard => 'Input moves with the keyboard'; - - @override - String get preferencesInputMovesWithVoice => 'Input moves with your voice'; - - @override - String get preferencesSnapArrowsToValidMoves => 'Snap arrows to valid moves'; - - @override - String get preferencesSayGgWpAfterLosingOrDrawing => 'Say \"Good game, well played\" upon defeat or draw'; - - @override - String get preferencesYourPreferencesHaveBeenSaved => 'Your preferences have been saved.'; - - @override - String get preferencesScrollOnTheBoardToReplayMoves => 'Scroll on the board to replay moves'; - - @override - String get preferencesCorrespondenceEmailNotification => 'Daily email listing your correspondence games'; - - @override - String get preferencesNotifyStreamStart => 'Streamer goes live'; - - @override - String get preferencesNotifyInboxMsg => 'New inbox message'; - - @override - String get preferencesNotifyForumMention => 'Forum comment mentions you'; - - @override - String get preferencesNotifyInvitedStudy => 'Study invite'; - - @override - String get preferencesNotifyGameEvent => 'Correspondence game updates'; - - @override - String get preferencesNotifyChallenge => 'Challenges'; - - @override - String get preferencesNotifyTournamentSoon => 'Tournament starting soon'; - - @override - String get preferencesNotifyTimeAlarm => 'Correspondence clock running out'; - - @override - String get preferencesNotifyBell => 'Bell notification within Lichess'; - - @override - String get preferencesNotifyPush => 'Device notification when you\'re not on Lichess'; - - @override - String get preferencesNotifyWeb => 'Браузер'; - - @override - String get preferencesNotifyDevice => 'Җиһаз'; - - @override - String get preferencesBellNotificationSound => 'Bell notification sound'; - - @override - String get puzzlePuzzles => 'Башваткычлар'; - - @override - String get puzzlePuzzleThemes => 'Башваткыч бизәкләре'; - - @override - String get puzzleRecommended => 'Тәкдим ителә'; - - @override - String get puzzlePhases => 'Фазалар'; - - @override - String get puzzleMotifs => 'Зәхәриф'; - - @override - String get puzzleAdvanced => 'Өстәмә'; - - @override - String get puzzleLengths => 'Озынлык'; - - @override - String get puzzleMates => 'Матлар'; - - @override - String get puzzleGoals => 'Морады'; - - @override - String get puzzleOrigin => 'Чыгыш'; - - @override - String get puzzleSpecialMoves => 'Максус хәрәкәтләр'; - - @override - String get puzzleDidYouLikeThisPuzzle => 'Сезгә ошадымы башваткыч?'; - - @override - String get puzzleVoteToLoadNextOne => 'Киләсе йөкләү өчен тавыш бирегез!'; - - @override - String get puzzleUpVote => 'Up vote puzzle'; - - @override - String get puzzleDownVote => 'Down vote puzzle'; - - @override - String get puzzleYourPuzzleRatingWillNotChange => 'Your puzzle rating will not change. Note that puzzles are not a competition. Your rating helps selecting the best puzzles for your current skill.'; - - @override - String get puzzleFindTheBestMoveForWhite => 'Тап якшы хәрәкәт аклар өчен.'; - - @override - String get puzzleFindTheBestMoveForBlack => 'Тап якшы хәрәкәт каралар өчен.'; - - @override - String get puzzleToGetPersonalizedPuzzles => 'Персональләштерелгән башваткычлар алу өчен:'; - - @override - String puzzlePuzzleId(String param) { - return 'Башваткыч $param'; - } - - @override - String get puzzlePuzzleOfTheDay => 'Бүгенге башваткыч'; - - @override - String get puzzleDailyPuzzle => 'Daily Puzzle'; - - @override - String get puzzleClickToSolve => 'Чишер өчен сук'; - - @override - String get puzzleGoodMove => 'Якшы хәрәкәт'; - - @override - String get puzzleBestMove => 'Иң яхшы хәрәкәт!'; - - @override - String get puzzleKeepGoing => 'Юлга дәвам…'; - - @override - String get puzzlePuzzleSuccess => 'Уңышлы!'; - - @override - String get puzzlePuzzleComplete => 'Башваткыч чишелгән!'; - - @override - String get puzzleByOpenings => 'By openings'; - - @override - String get puzzlePuzzlesByOpenings => 'Puzzles by openings'; - - @override - String get puzzleOpeningsYouPlayedTheMost => 'Openings you played the most in rated games'; - - @override - String get puzzleUseFindInPage => 'Use \"Find in page\" in the browser menu to find your favourite opening!'; - - @override - String get puzzleUseCtrlF => 'Use Ctrl+f to find your favourite opening!'; - - @override - String get puzzleNotTheMove => 'Бу хәрәкәт түгел!'; - - @override - String get puzzleTrySomethingElse => 'Башка нәрсәне сынап карагыз.'; - - @override - String puzzleRatingX(String param) { - return 'Рейтинг: $param'; - } - - @override - String get puzzleHidden => 'качырылган'; - - @override - String puzzleFromGameLink(String param) { - return '$param уендан'; - } - - @override - String get puzzleContinueTraining => 'Күнегүләр дәвамы'; - - @override - String get puzzleDifficultyLevel => 'Авырлык дәрәҗәсе'; - - @override - String get puzzleNormal => 'Нормаль'; - - @override - String get puzzleEasier => 'Җиңелрәк'; - - @override - String get puzzleEasiest => 'Иң җиңелрәге'; - - @override - String get puzzleHarder => 'Авыррак'; - - @override - String get puzzleHardest => 'Иң авыры'; - - @override - String get puzzleExample => 'Мәсәлән'; - - @override - String get puzzleAddAnotherTheme => 'Икенче тһеманы өстәргә'; - - @override - String get puzzleNextPuzzle => 'Next puzzle'; - - @override - String get puzzleJumpToNextPuzzleImmediately => 'Киләсе Башваткычка шунда ук сикерегез'; - - @override - String get puzzlePuzzleDashboard => 'Башваткыч Гөстертактасы'; - - @override - String get puzzleImprovementAreas => 'Яхшырту өлкәләре'; - - @override - String get puzzleStrengths => 'Көчләр яклары'; - - @override - String get puzzleHistory => 'Башваткыч тарихы'; - - @override - String get puzzleSolved => 'чишелгән'; - - @override - String get puzzleFailed => 'уңышсыз'; - - @override - String get puzzleStreakDescription => 'Акрынлап катлаулы башваткычларны чишегез һәм җиңү сызыгы төзегез. Сәгать юк, шуңа күрә вакытыгызны алыгыз. Бер ялгыш хәрәкәт, һәм бу уен бетте! Ләкин сез сессиягә бер хәрәкәтне калдыра аласыз.'; - - @override - String puzzleYourStreakX(String param) { - return 'Сезнең юл $param'; - } - - @override - String get puzzleStreakSkipExplanation => 'Сезнең юлны саклап калу өчен бу хәрәкәтне ташлагыз! Бер тапкыр гына эшли.'; - - @override - String get puzzleContinueTheStreak => 'Сызуны дәвам итегез'; - - @override - String get puzzleNewStreak => 'Яңа сызу'; - - @override - String get puzzleFromMyGames => 'From my games'; - - @override - String get puzzleLookupOfPlayer => 'Lookup puzzles from a player\'s games'; - - @override - String puzzleFromXGames(String param) { - return 'Puzzles from $param\' games'; - } - - @override - String get puzzleSearchPuzzles => 'Search puzzles'; - - @override - String get puzzleFromMyGamesNone => 'You have no puzzles in the database, but Lichess still loves you very much.\n\nPlay rapid and classical games to increase your chances of having a puzzle of yours added!'; - - @override - String puzzleFromXGamesFound(String param1, String param2) { - return '$param1 puzzles found in $param2 games'; - } - - @override - String get puzzlePuzzleDashboardDescription => 'Train, analyse, improve'; - - @override - String puzzlePercentSolved(String param) { - return '$param solved'; - } - - @override - String get puzzleNoPuzzlesToShow => 'Nothing to show, go play some puzzles first!'; - - @override - String get puzzleImprovementAreasDescription => 'Train these to optimize your progress!'; - - @override - String get puzzleStrengthDescription => 'You perform the best in these themes'; - - @override - String puzzlePlayedXTimes(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Уйналган $count вакыт', - ); - return '$_temp0'; - } - - @override - String puzzleNbPointsBelowYourPuzzleRating(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count сезнең башваткыч рейтингтан бер максад', - ); - return '$_temp0'; - } - - @override - String puzzleNbPointsAboveYourPuzzleRating(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Сезнең башваткыч рейтингтан бер максад', - ); - return '$_temp0'; - } - - @override - String puzzleNbPlayed(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count played', - ); - return '$_temp0'; - } - - @override - String puzzleNbToReplay(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count to replay', - ); - return '$_temp0'; - } - - @override - String get puzzleThemeAdvancedPawn => 'Алга киткән җирле'; - - @override - String get puzzleThemeAdvancedPawnDescription => 'Сезнең җәяүлеләрнең берсе көндәш позициясенә тирән керә, бәлки алга җибәрү белән куркытыр.'; - - @override - String get puzzleThemeAdvantage => 'Өстенлек'; - - @override - String get puzzleThemeAdvantageDescription => 'Хәлиткеч өстенлек алу мөмкинлеген кулланыгыз. (200cp ≤ бәяләү ≤ 600cp)'; - - @override - String get puzzleThemeAnastasiaMate => 'Әнәстәсия маты'; - - @override - String get puzzleThemeAnastasiaMateDescription => 'Атчы, Тура яки Вәзир командасы каршы шаһны такта ягы белән дуслар арасына тозакка эләктерәләр.'; - - @override - String get puzzleThemeArabianMate => 'Гарәп маты'; - - @override - String get puzzleThemeArabianMateDescription => 'A knight and a rook team up to trap the opposing king on a corner of the board.'; - - @override - String get puzzleThemeAttackingF2F7 => 'f2 яки f7-не һөҗүм итү'; - - @override - String get puzzleThemeAttackingF2F7Description => 'An attack focusing on the f2 or f7 pawn, such as in the fried liver opening.'; - - @override - String get puzzleThemeAttraction => 'Attraction'; - - @override - String get puzzleThemeAttractionDescription => 'An exchange or sacrifice encouraging or forcing an opponent piece to a square that allows a follow-up tactic.'; - - @override - String get puzzleThemeBackRankMate => 'Back rank mate'; - - @override - String get puzzleThemeBackRankMateDescription => 'Checkmate the king on the home rank, when it is trapped there by its own pieces.'; - - @override - String get puzzleThemeBishopEndgame => 'Bishop endgame'; - - @override - String get puzzleThemeBishopEndgameDescription => 'An endgame with only bishops and pawns.'; - - @override - String get puzzleThemeBodenMate => 'Боден маты'; - - @override - String get puzzleThemeBodenMateDescription => 'Ике һөҗүм итүче киселешәләр диагональ буенча һәм рәкыйпнең үз дуст сөякләре кома шаулаган шаһына мат куялар.'; - - @override - String get puzzleThemeCastling => 'Castling'; - - @override - String get puzzleThemeCastlingDescription => 'Bring the king to safety, and deploy the rook for attack.'; - - @override - String get puzzleThemeCapturingDefender => 'Capture the defender'; - - @override - String get puzzleThemeCapturingDefenderDescription => 'Removing a piece that is critical to defence of another piece, allowing the now undefended piece to be captured on a following move.'; - - @override - String get puzzleThemeCrushing => 'Изеш'; - - @override - String get puzzleThemeCrushingDescription => 'Spot the opponent blunder to obtain a crushing advantage. (eval ≥ 600cp)'; - - @override - String get puzzleThemeDoubleBishopMate => 'Икеләтә филь маты'; - - @override - String get puzzleThemeDoubleBishopMateDescription => 'Two attacking bishops on adjacent diagonals deliver mate to a king obstructed by friendly pieces.'; - - @override - String get puzzleThemeDovetailMate => 'Dovetail mate'; - - @override - String get puzzleThemeDovetailMateDescription => 'A queen delivers mate to an adjacent king, whose only two escape squares are obstructed by friendly pieces.'; - - @override - String get puzzleThemeEquality => 'Тигезлек'; - - @override - String get puzzleThemeEqualityDescription => 'Come back from a losing position, and secure a draw or a balanced position. (eval ≤ 200cp)'; - - @override - String get puzzleThemeKingsideAttack => 'Шаһ яктагы һөҗүм'; - - @override - String get puzzleThemeKingsideAttackDescription => 'Рәкыйп шаһы һөҗүме, алар шаһ ягына куйганнан соң.'; - - @override - String get puzzleThemeClearance => 'Чистарту'; - - @override - String get puzzleThemeClearanceDescription => 'Киләсе тактик идея өчен квадратны, файлны яки диагональне чистарта торган хәрәкәт.'; - - @override - String get puzzleThemeDefensiveMove => 'Калкала хәрәкәте'; - - @override - String get puzzleThemeDefensiveMoveDescription => 'Материалны яисә бүтән өстенлекне югалтмас өчен кирәк булган төгәл хәрәкәт яки хәрәкәт эзлеклелеге.'; - - @override - String get puzzleThemeDeflection => 'Deflection'; - - @override - String get puzzleThemeDeflectionDescription => 'A move that distracts an opponent piece from another duty that it performs, such as guarding a key square. Sometimes also called \"overloading\".'; - - @override - String get puzzleThemeDiscoveredAttack => 'Discovered attack'; - - @override - String get puzzleThemeDiscoveredAttackDescription => 'Moving a piece (such as a knight), that previously blocked an attack by a long range piece (such as a rook), out of the way of that piece.'; - - @override - String get puzzleThemeDoubleCheck => 'Double check'; - - @override - String get puzzleThemeDoubleCheckDescription => 'Checking with two pieces at once, as a result of a discovered attack where both the moving piece and the unveiled piece attack the opponent\'s king.'; - - @override - String get puzzleThemeEndgame => 'Уен азагы'; - - @override - String get puzzleThemeEndgameDescription => 'A tactic during the last phase of the game.'; - - @override - String get puzzleThemeEnPassantDescription => 'A tactic involving the en passant rule, where a pawn can capture an opponent pawn that has bypassed it using its initial two-square move.'; - - @override - String get puzzleThemeExposedKing => 'Exposed king'; - - @override - String get puzzleThemeExposedKingDescription => 'A tactic involving a king with few defenders around it, often leading to checkmate.'; - - @override - String get puzzleThemeFork => 'Сәнәк'; - - @override - String get puzzleThemeForkDescription => 'A move where the moved piece attacks two opponent pieces at once.'; - - @override - String get puzzleThemeHangingPiece => 'Hanging piece'; - - @override - String get puzzleThemeHangingPieceDescription => 'A tactic involving an opponent piece being undefended or insufficiently defended and free to capture.'; - - @override - String get puzzleThemeHookMate => 'Hook mate'; - - @override - String get puzzleThemeHookMateDescription => 'Checkmate with a rook, knight, and pawn along with one enemy pawn to limit the enemy king\'s escape.'; - - @override - String get puzzleThemeInterference => 'Interference'; - - @override - String get puzzleThemeInterferenceDescription => 'Moving a piece between two opponent pieces to leave one or both opponent pieces undefended, such as a knight on a defended square between two rooks.'; - - @override - String get puzzleThemeIntermezzo => 'Intermezzo'; - - @override - String get puzzleThemeIntermezzoDescription => 'Instead of playing the expected move, first interpose another move posing an immediate threat that the opponent must answer. Also known as \"Zwischenzug\" or \"In between\".'; - - @override - String get puzzleThemeKnightEndgame => 'Knight endgame'; - - @override - String get puzzleThemeKnightEndgameDescription => 'An endgame with only knights and pawns.'; - - @override - String get puzzleThemeLong => 'Long puzzle'; - - @override - String get puzzleThemeLongDescription => 'Three moves to win.'; - - @override - String get puzzleThemeMaster => 'Осталарның уеннары'; - - @override - String get puzzleThemeMasterDescription => 'Puzzles from games played by titled players.'; - - @override - String get puzzleThemeMasterVsMaster => 'Осталар арасындагы уеннар'; - - @override - String get puzzleThemeMasterVsMasterDescription => 'Puzzles from games between two titled players.'; - - @override - String get puzzleThemeMate => 'Мат'; - - @override - String get puzzleThemeMateDescription => 'Win the game with style.'; - - @override - String get puzzleThemeMateIn1 => 'Mate in 1'; - - @override - String get puzzleThemeMateIn1Description => 'Deliver checkmate in one move.'; - - @override - String get puzzleThemeMateIn2 => 'Mate in 2'; - - @override - String get puzzleThemeMateIn2Description => 'Deliver checkmate in two moves.'; - - @override - String get puzzleThemeMateIn3 => 'Mate in 3'; - - @override - String get puzzleThemeMateIn3Description => 'Deliver checkmate in three moves.'; - - @override - String get puzzleThemeMateIn4 => 'Mate in 4'; - - @override - String get puzzleThemeMateIn4Description => 'Deliver checkmate in four moves.'; - - @override - String get puzzleThemeMateIn5 => 'Mate in 5 or more'; - - @override - String get puzzleThemeMateIn5Description => 'Figure out a long mating sequence.'; - - @override - String get puzzleThemeMiddlegame => 'Уен уртасы'; - - @override - String get puzzleThemeMiddlegameDescription => 'A tactic during the second phase of the game.'; - - @override - String get puzzleThemeOneMove => 'One-move puzzle'; - - @override - String get puzzleThemeOneMoveDescription => 'A puzzle that is only one move long.'; - - @override - String get puzzleThemeOpening => 'Дебют'; - - @override - String get puzzleThemeOpeningDescription => 'A tactic during the first phase of the game.'; - - @override - String get puzzleThemePawnEndgame => 'Pawn endgame'; - - @override - String get puzzleThemePawnEndgameDescription => 'An endgame with only pawns.'; - - @override - String get puzzleThemePin => 'Беркетү'; - - @override - String get puzzleThemePinDescription => 'A tactic involving pins, where a piece is unable to move without revealing an attack on a higher value piece.'; - - @override - String get puzzleThemePromotion => 'Promotion'; - - @override - String get puzzleThemePromotionDescription => 'Promote one of your pawn to a queen or minor piece.'; - - @override - String get puzzleThemeQueenEndgame => 'Queen endgame'; - - @override - String get puzzleThemeQueenEndgameDescription => 'An endgame with only queens and pawns.'; - - @override - String get puzzleThemeQueenRookEndgame => 'Queen and Rook'; - - @override - String get puzzleThemeQueenRookEndgameDescription => 'An endgame with only queens, rooks and pawns.'; - - @override - String get puzzleThemeQueensideAttack => 'Queenside attack'; - - @override - String get puzzleThemeQueensideAttackDescription => 'An attack of the opponent\'s king, after they castled on the queen side.'; - - @override - String get puzzleThemeQuietMove => 'Quiet move'; - - @override - String get puzzleThemeQuietMoveDescription => 'A move that does neither make a check or capture, nor an immediate threat to capture, but does prepare a more hidden unavoidable threat for a later move.'; - - @override - String get puzzleThemeRookEndgame => 'Rook endgame'; - - @override - String get puzzleThemeRookEndgameDescription => 'An endgame with only rooks and pawns.'; - - @override - String get puzzleThemeSacrifice => 'Sacrifice'; - - @override - String get puzzleThemeSacrificeDescription => 'A tactic involving giving up material in the short-term, to gain an advantage again after a forced sequence of moves.'; - - @override - String get puzzleThemeShort => 'Short puzzle'; - - @override - String get puzzleThemeShortDescription => 'Two moves to win.'; - - @override - String get puzzleThemeSkewer => 'Skewer'; - - @override - String get puzzleThemeSkewerDescription => 'A motif involving a high value piece being attacked, moving out the way, and allowing a lower value piece behind it to be captured or attacked, the inverse of a pin.'; - - @override - String get puzzleThemeSmotheredMate => 'Smothered mate'; - - @override - String get puzzleThemeSmotheredMateDescription => 'A checkmate delivered by a knight in which the mated king is unable to move because it is surrounded (or smothered) by its own pieces.'; - - @override - String get puzzleThemeSuperGM => 'Super GM games'; - - @override - String get puzzleThemeSuperGMDescription => 'Puzzles from games played by the best players in the world.'; - - @override - String get puzzleThemeTrappedPiece => 'Trapped piece'; - - @override - String get puzzleThemeTrappedPieceDescription => 'A piece is unable to escape capture as it has limited moves.'; - - @override - String get puzzleThemeUnderPromotion => 'Underpromotion'; - - @override - String get puzzleThemeUnderPromotionDescription => 'Promotion to a knight, bishop, or rook.'; - - @override - String get puzzleThemeVeryLong => 'Very long puzzle'; - - @override - String get puzzleThemeVeryLongDescription => 'Four moves or more to win.'; - - @override - String get puzzleThemeXRayAttack => 'X-Ray attack'; - - @override - String get puzzleThemeXRayAttackDescription => 'A piece attacks or defends a square, through an enemy piece.'; - - @override - String get puzzleThemeZugzwang => 'Zugzwang'; - - @override - String get puzzleThemeZugzwangDescription => 'The opponent is limited in the moves they can make, and all moves worsen their position.'; - - @override - String get puzzleThemeHealthyMix => 'Healthy mix'; - - @override - String get puzzleThemeHealthyMixDescription => 'A bit of everything. You don\'t know what to expect, so you remain ready for anything! Just like in real games.'; - - @override - String get puzzleThemePlayerGames => 'Player games'; - - @override - String get puzzleThemePlayerGamesDescription => 'Lookup puzzles generated from your games, or from another player\'s games.'; - - @override - String puzzleThemePuzzleDownloadInformation(String param) { - return 'These puzzles are in the public domain, and can be downloaded from $param.'; - } - - @override - String get searchSearch => 'Табу'; - - @override - String get settingsSettings => 'Көйләүләр'; - - @override - String get settingsCloseAccount => 'Һисапны ябыш'; - - @override - String get settingsManagedAccountCannotBeClosed => 'Your account is managed, and cannot be closed.'; - - @override - String get settingsClosingIsDefinitive => 'Ябыш анык. Артка кайтыш юк. Ошануыгыз камилме?'; - - @override - String get settingsCantOpenSimilarAccount => 'Һәттә очрак башкача булса һәм сезгә бер хил исемдәге яңа һисап ачырга рөхсәт бирелмиде.'; - - @override - String get settingsChangedMindDoNotCloseAccount => 'Мин үз фикеремне үзгәртердем, һисапны япмам'; - - @override - String get settingsCloseAccountExplanation => 'Һисапны ябышны хуплайсызмы? Һисабыгызны ябыш даими карар. Сез ҺИЧ КАЙЧАН КЕРЕШЕГЕЗ МӨМКИН.'; - - @override - String get settingsThisAccountIsClosed => 'Ошбу һисап ябылган.'; - - @override - String get playWithAFriend => 'Дустың белән уйнарга'; - - @override - String get playWithTheMachine => 'Компьютер белән уйнарга'; - - @override - String get toInviteSomeoneToPlayGiveThisUrl => 'Бу сылтама белән уенга чакыру'; - - @override - String get gameOver => 'Уен бетте'; - - @override - String get waitingForOpponent => 'Ярышучыны көтәбез'; - - @override - String get orLetYourOpponentScanQrCode => 'Or let your opponent scan this QR code'; - - @override - String get waiting => 'Көтү'; - - @override - String get yourTurn => 'Сез йөрисез'; - - @override - String aiNameLevelAiLevel(String param1, String param2) { - return '$param1 дәрәҗәсе $param2'; - } - - @override - String get level => 'Дәрәҗә'; - - @override - String get strength => 'Ныгыту'; - - @override - String get toggleTheChat => 'Чатны ачу/ябу'; - - @override - String get chat => 'Сүхбәт'; - - @override - String get resign => 'Җиңелү'; - - @override - String get checkmate => 'Мат'; - - @override - String get stalemate => 'Пат'; - - @override - String get white => 'Ак'; - - @override - String get black => 'Кара'; - - @override - String get asWhite => 'as white'; - - @override - String get asBlack => 'as black'; - - @override - String get randomColor => 'Очраклы төс'; - - @override - String get createAGame => 'Уен башларга'; - - @override - String get whiteIsVictorious => 'Ак җиңде'; - - @override - String get blackIsVictorious => 'Кара җиңде'; - - @override - String get youPlayTheWhitePieces => 'Сез ак фигуралар белән уйныйсыз'; - - @override - String get youPlayTheBlackPieces => 'Сез кара фигуралар белән уйныйсыз'; - - @override - String get itsYourTurn => 'Сезнең йөрүегез!'; - - @override - String get cheatDetected => 'Хәйлә аныкланган'; - - @override - String get kingInTheCenter => 'Патша такта уртасында'; - - @override - String get threeChecks => 'Өч шах'; - - @override - String get raceFinished => 'Ярыш бетте'; - - @override - String get variantEnding => 'Уен бетте'; - - @override - String get newOpponent => 'Яңа ярышучы'; - - @override - String get yourOpponentWantsToPlayANewGameWithYou => 'Ярушычыгыз сезнең белән яңа уен уйнарга тели'; - - @override - String get joinTheGame => 'Уенга кушылу'; - - @override - String get whitePlays => 'Аклар йөри'; - - @override - String get blackPlays => 'Каралар йөри'; - - @override - String get opponentLeftChoices => 'Ярышучыгыз уеннан чыкты. Сез җиңүегезне я бер-берегезнең тигезлеген белдерә, я аны көтеп тора аласыз.'; - - @override - String get forceResignation => 'Җиңүегезне игълан итү'; - - @override - String get forceDraw => 'Тигезлек игълан итү'; - - @override - String get talkInChat => 'Сөйләшкәндә әдәпле булыгыз!'; - - @override - String get theFirstPersonToComeOnThisUrlWillPlayWithYou => 'Сылтамага кергән беренче кеше сезнең белән уйнар.'; - - @override - String get whiteResigned => 'Аклар истифа итте'; - - @override - String get blackResigned => 'Каралар истифа итте'; - - @override - String get whiteLeftTheGame => 'Ак уеннан чыкты'; - - @override - String get blackLeftTheGame => 'Кара уеннан чыкты'; - - @override - String get whiteDidntMove => 'White didn\'t move'; - - @override - String get blackDidntMove => 'Black didn\'t move'; - - @override - String get requestAComputerAnalysis => 'Компьютер тикшеревен итү'; - - @override - String get computerAnalysis => 'Компьютер тикшереве'; - - @override - String get computerAnalysisAvailable => 'Компьютер тикшеревен итә аласыз'; - - @override - String get computerAnalysisDisabled => 'Computer analysis disabled'; - - @override - String get analysis => 'Тикшерү тактасы'; - - @override - String depthX(String param) { - return 'Тирәнлек $param'; - } - - @override - String get usingServerAnalysis => 'Сервер анализын куллану'; - - @override - String get loadingEngine => 'Движок йөкләнә...'; - - @override - String get calculatingMoves => 'Calculating moves...'; - - @override - String get engineFailed => 'Error loading engine'; - - @override - String get cloudAnalysis => 'Болыт анализы'; - - @override - String get goDeeper => 'Тирәңрәк'; - - @override - String get showThreat => 'Янауны күрсәтү'; - - @override - String get inLocalBrowser => 'браузерда'; - - @override - String get toggleLocalEvaluation => 'Җирле анализ күчтерү'; - - @override - String get promoteVariation => 'Вариантнын приоритетын күтәрү'; - - @override - String get makeMainLine => 'Төп вариант итеп кую'; - - @override - String get deleteFromHere => 'Бу урыннан бетерү'; - - @override - String get collapseVariations => 'Collapse variations'; - - @override - String get expandVariations => 'Expand variations'; - - @override - String get forceVariation => 'Вариантны төп итү'; - - @override - String get copyVariationPgn => 'Copy variation PGN'; - - @override - String get move => 'Йөрү'; - - @override - String get variantLoss => 'Җиңелү юлы'; - - @override - String get variantWin => 'Җиңү юлы'; - - @override - String get insufficientMaterial => 'Материал җитми'; - - @override - String get pawnMove => 'Пешка йөрүе'; - - @override - String get capture => 'Алу'; - - @override - String get close => 'Ябу'; - - @override - String get winning => 'Җиңү'; - - @override - String get losing => 'Җиңелү'; - - @override - String get drawn => 'Тиңлек'; - - @override - String get unknown => 'Билгесез'; - - @override - String get database => 'Партияләр архивы'; - - @override - String get whiteDrawBlack => 'Аклар / Тиңлек / Каралар'; - - @override - String averageRatingX(String param) { - return 'Уртача рейтинг $param'; - } - - @override - String get recentGames => 'Соңгы уеннар'; - - @override - String get topGames => 'Иң яхшы уеннар'; - - @override - String masterDbExplanation(String param1, String param2, String param3) { - return '$param2нче елдан $param3нче елга кадәр $param1+ FIDE рейтинглы уенчылары тарафыннан такта артында уйналган 2 миллион уен'; - } - - @override - String get dtzWithRounding => 'DTZ50\'\' with rounding, based on number of half-moves until next capture or pawn move'; - - @override - String get noGameFound => 'Бер уен да табылмады'; - - @override - String get maxDepthReached => 'Max depth reached!'; - - @override - String get maybeIncludeMoreGamesFromThePreferencesMenu => 'Бәлки көйләүләрдә күбрәк уеннарны кабызырсыз?'; - - @override - String get openings => 'Openings'; - - @override - String get openingExplorer => 'Дебютлар базасы'; - - @override - String get openingEndgameExplorer => 'Opening/endgame explorer'; - - @override - String xOpeningExplorer(String param) { - return '$param дебютлар базасы'; - } - - @override - String get playFirstOpeningEndgameExplorerMove => 'Play first opening/endgame-explorer move'; - - @override - String get winPreventedBy50MoveRule => '50 йөрү кайгыйдәсе буенча җиңеп булмый'; - - @override - String get lossSavedBy50MoveRule => '50 йөрү кагыйдәсе буенча җиңелеп булмый'; - - @override - String get winOr50MovesByPriorMistake => 'Win or 50 moves by prior mistake'; - - @override - String get lossOr50MovesByPriorMistake => 'Loss or 50 moves by prior mistake'; - - @override - String get unknownDueToRounding => 'Win/loss only guaranteed if recommended tablebase line has been followed since the last capture or pawn move, due to possible rounding of DTZ values in Syzygy tablebases.'; - - @override - String get allSet => 'Бөтенесе әзер!'; - - @override - String get importPgn => 'PGN импорты'; - - @override - String get delete => 'Бетерү'; - - @override - String get deleteThisImportedGame => 'Бу импортланган уенны ташларгамы?'; - - @override - String get replayMode => 'Кабат карау'; - - @override - String get realtimeReplay => 'Чын вакытта'; - - @override - String get byCPL => 'Хаталар буенча'; - - @override - String get openStudy => 'Өйрәнүне ачу'; - - @override - String get enable => 'Кабызылган'; - - @override - String get bestMoveArrow => 'Иң яхшы йөрүне күрсәтү'; - - @override - String get showVariationArrows => 'Show variation arrows'; - - @override - String get evaluationGauge => 'Бәяләу шкаласы'; - - @override - String get multipleLines => 'Берничә вариант'; - - @override - String get cpus => 'Процессорлар'; - - @override - String get memory => 'Хәтер'; - - @override - String get infiniteAnalysis => 'Чиксез анализ'; - - @override - String get removesTheDepthLimit => 'Тикшерү чикләрен бетерә һәм компьютерыгызны җылыта'; - - @override - String get engineManager => 'Engine manager'; - - @override - String get blunder => 'Зур хата'; - - @override - String get mistake => 'Хата'; - - @override - String get inaccuracy => 'Җиңел хата'; - - @override - String get moveTimes => 'Йөреш вакыты'; - - @override - String get flipBoard => 'Тактаны әйләндерү'; - - @override - String get threefoldRepetition => 'Өч тапкыр кабатлау'; - - @override - String get claimADraw => 'Тигез уен белдерү'; - - @override - String get offerDraw => 'Тигезлекне тәкъдим итү'; - - @override - String get draw => 'Тиңлек'; - - @override - String get drawByMutualAgreement => 'Draw by mutual agreement'; - - @override - String get fiftyMovesWithoutProgress => 'Fifty moves without progress'; - - @override - String get currentGames => 'Хәзерге уеннар'; - - @override - String get viewInFullSize => 'Тулысынча күрү'; - - @override - String get logOut => 'Чыгу'; - - @override - String get signIn => 'Керү'; - - @override - String get rememberMe => 'Keep me logged in'; - - @override - String get youNeedAnAccountToDoThat => 'Моның өчен аккаунт кирәк'; - - @override - String get signUp => 'Теркәлү'; - - @override - String get computersAreNotAllowedToPlay => 'Компьютер булышы тыелган. Зинһар, уйнаганда, шахмат программалары, мәглүмәт базалары я башка уенчылар булышы белән файдаланмагыз. Күп аккаунтлар ясау киңәш ителми һәм кирәк булмаган күп аккаунтлар ясау сезне банга китерер.'; - - @override - String get games => 'Уеннар'; - - @override - String get forum => 'Форум'; - - @override - String xPostedInForumY(String param1, String param2) { - return '$param1 $param2 темасына язу җибәрде'; - } - - @override - String get latestForumPosts => 'Соңгы форум язулары'; - - @override - String get players => 'Уенчылар'; - - @override - String get friends => 'Дуслар'; - - @override - String get discussions => 'Әңгәмәләр'; - - @override - String get today => 'Бүген'; - - @override - String get yesterday => 'Кичә'; - - @override - String get minutesPerSide => 'Һәр якка бирелгән вакыт'; - - @override - String get variant => 'Вариант'; - - @override - String get variants => 'Вариантлар'; - - @override - String get timeControl => 'Вакыт контроле'; - - @override - String get realTime => 'Хәзерге вакытта'; - - @override - String get correspondence => 'Хат алмашып уйнау'; - - @override - String get daysPerTurn => 'Бер йөреш вакыты'; - - @override - String get oneDay => 'Бер көн'; - - @override - String get time => 'Вакыт'; - - @override - String get rating => 'Рейтинг'; - - @override - String get ratingStats => 'Рейтинг статистикасы'; - - @override - String get username => 'Кулланучы исеме'; - - @override - String get usernameOrEmail => 'Кулланычы исеме я эл. почтасы'; - - @override - String get changeUsername => 'Кулланучы исемен үзгәртү'; - - @override - String get changeUsernameNotSame => 'Хәрефләр регистрын гына үзгәртеп була. Мәсәлән, \"johndoe\"ны \"JohnDoe\"га.'; - - @override - String get changeUsernameDescription => 'Кулланучы исемегезне үзгәртегез. Сез моны бер тапкыр гына ясый аласыз һәм хәрефләрнен зурлыгын гына үзгәртә аласыз.'; - - @override - String get signupUsernameHint => 'Make sure to choose a family-friendly username. You cannot change it later and any accounts with inappropriate usernames will get closed!'; - - @override - String get signupEmailHint => 'We will only use it for password reset.'; - - @override - String get password => 'Серсүз'; - - @override - String get changePassword => 'Серсүзне үзгәртү'; - - @override - String get changeEmail => 'Emailны үзгәртү'; - - @override - String get email => 'Email'; - - @override - String get passwordReset => 'Серсүзне алыштыру'; - - @override - String get forgotPassword => 'Серсүзне оныттыгыз?'; - - @override - String get error_weakPassword => 'This password is extremely common, and too easy to guess.'; - - @override - String get error_namePassword => 'Please don\'t use your username as your password.'; - - @override - String get blankedPassword => 'You have used the same password on another site, and that site has been compromised. To ensure the safety of your Lichess account, we need you to set a new password. Thank you for your understanding.'; - - @override - String get youAreLeavingLichess => 'You are leaving Lichess'; - - @override - String get neverTypeYourPassword => 'Never type your Lichess password on another site!'; - - @override - String proceedToX(String param) { - return 'Proceed to $param'; - } - - @override - String get passwordSuggestion => 'Do not set a password suggested by someone else. They will use it to steal your account.'; - - @override - String get emailSuggestion => 'Do not set an email address suggested by someone else. They will use it to steal your account.'; - - @override - String get emailConfirmHelp => 'Help with email confirmation'; - - @override - String get emailConfirmNotReceived => 'Didn\'t receive your confirmation email after signing up?'; - - @override - String get whatSignupUsername => 'What username did you use to sign up?'; - - @override - String usernameNotFound(String param) { - return 'We couldn\'t find any user by this name: $param.'; - } - - @override - String get usernameCanBeUsedForNewAccount => 'You can use this username to create a new account'; - - @override - String emailSent(String param) { - return 'We have sent an email to $param.'; - } - - @override - String get emailCanTakeSomeTime => 'It can take some time to arrive.'; - - @override - String get refreshInboxAfterFiveMinutes => 'Wait 5 minutes and refresh your email inbox.'; - - @override - String get checkSpamFolder => 'Also check your spam folder, it might end up there. If so, mark it as not spam.'; - - @override - String get emailForSignupHelp => 'If everything else fails, then send us this email:'; - - @override - String copyTextToEmail(String param) { - return 'Copy and paste the above text and send it to $param'; - } - - @override - String get waitForSignupHelp => 'We will come back to you shortly to help you complete your signup.'; - - @override - String accountConfirmed(String param) { - return 'The user $param is successfully confirmed.'; - } - - @override - String accountCanLogin(String param) { - return 'You can login right now as $param.'; - } - - @override - String get accountConfirmationEmailNotNeeded => 'You do not need a confirmation email.'; - - @override - String accountClosed(String param) { - return 'The account $param is closed.'; - } - - @override - String accountRegisteredWithoutEmail(String param) { - return 'The account $param was registered without an email.'; - } - - @override - String get rank => 'Урын'; - - @override - String rankX(String param) { - return 'Урын: $param'; - } - - @override - String get gamesPlayed => 'Уеннар саны'; - - @override - String get cancel => 'Булдыртмау'; - - @override - String get whiteTimeOut => 'Акларның вакыты чыкты'; - - @override - String get blackTimeOut => 'Караларның вакыты чыкты'; - - @override - String get drawOfferSent => 'Тиңлек тәкъдиме җибәрелде'; - - @override - String get drawOfferAccepted => 'Тиңлек тәкъдиме кабул ителде'; - - @override - String get drawOfferCanceled => 'Тиңлек тәкъдиме туктатылды'; - - @override - String get whiteOffersDraw => 'Аклар тиңлек тәкъдим итә'; - - @override - String get blackOffersDraw => 'Каралар тиңлек тәкъдим итә'; - - @override - String get whiteDeclinesDraw => 'Аклар тиңлекне кире кага'; - - @override - String get blackDeclinesDraw => 'Каралар тиңлекне кире кага'; - - @override - String get yourOpponentOffersADraw => 'Ярышучыгыз тиңлек тәкъдим итә'; - - @override - String get accept => 'Кабул итү'; - - @override - String get decline => 'Кире кагу'; - - @override - String get playingRightNow => 'Хәзер уйнала'; - - @override - String get eventInProgress => 'Хәзер уйнала'; - - @override - String get finished => 'Тәмамланган'; - - @override - String get abortGame => 'Уенны туктату'; - - @override - String get gameAborted => 'Уен туктатылды'; - - @override - String get standard => 'Стандартлы'; - - @override - String get customPosition => 'Custom position'; - - @override - String get unlimited => 'Чиксез'; - - @override - String get mode => 'Режим'; - - @override - String get casual => 'Рейтингсыз'; - - @override - String get rated => 'Рейтинглы'; - - @override - String get casualTournament => 'Рейтингсыз'; - - @override - String get ratedTournament => 'Рейтинглы'; - - @override - String get thisGameIsRated => 'Бу уен рейтинглы'; - - @override - String get rematch => 'Яңадан уйнау'; - - @override - String get rematchOfferSent => 'Яңадан уйнау тәкъдим ителде'; - - @override - String get rematchOfferAccepted => 'Яңадан уйнау кабул ителде'; - - @override - String get rematchOfferCanceled => 'Яңадан уйнау тәкъдиме туктатылды'; - - @override - String get rematchOfferDeclined => 'Яңадан уйнау кабул ителмәде'; - - @override - String get cancelRematchOffer => 'Яңадан уйнау тәкъдимен туктатырга'; - - @override - String get viewRematch => 'Яңадан уйнауны күрү'; - - @override - String get confirmMove => 'Йөрүне раслау'; - - @override - String get play => 'Уйнау'; - - @override - String get inbox => 'Хатлар'; - - @override - String get chatRoom => 'Сөйләшү бүлмәсе'; - - @override - String get loginToChat => 'Чат куллану өчен керегез'; - - @override - String get youHaveBeenTimedOut => 'Чаттан вакытлыча чыгарылдыгыз.'; - - @override - String get spectatorRoom => 'Күзәтү бүлмәсе'; - - @override - String get composeMessage => 'Хат язу'; - - @override - String get subject => 'Хат темасы'; - - @override - String get send => 'Җибәрү'; - - @override - String get incrementInSeconds => 'Секунд кушыла'; - - @override - String get freeOnlineChess => 'Түләүсез Онлайн Шахмат'; - - @override - String get exportGames => 'Уеннарны экспортлау'; - - @override - String get ratingRange => 'Рейтинг аралыгы'; - - @override - String get thisAccountViolatedTos => 'Бу аккаунт Lichessның Куллану Шартларын бозды'; - - @override - String get openingExplorerAndTablebase => 'Дебютлар һәм эндшпилләр базасы'; - - @override - String get takeback => 'Кире алырга'; - - @override - String get proposeATakeback => 'Йөрүне кире алырга сорарга'; - - @override - String get takebackPropositionSent => 'Йөрүне кире алу соралды'; - - @override - String get takebackPropositionDeclined => 'Йөрүне кире алу кире кагылды'; - - @override - String get takebackPropositionAccepted => 'Йөрүне кире алу кабул ителде'; - - @override - String get takebackPropositionCanceled => 'Йөрүне кире алу тәкъдиме туктатылды'; - - @override - String get yourOpponentProposesATakeback => 'Ярышучыгыз йөрүне кире алырга сорый'; - - @override - String get bookmarkThisGame => 'Бу битне кыстыргычларга сакларга'; - - @override - String get tournament => 'Бәйге'; - - @override - String get tournaments => 'Бәйгеләр'; - - @override - String get tournamentPoints => 'Бәйге нокталары'; - - @override - String get viewTournament => 'Бәйгене күрү'; - - @override - String get backToTournament => 'Бәйгегә кайту'; - - @override - String get noDrawBeforeSwissLimit => 'You cannot draw before 30 moves are played in a Swiss tournament.'; - - @override - String get thematic => 'Тематик'; - - @override - String yourPerfRatingIsProvisional(String param) { - return 'Сезнең $param рейтингыгыз әле фараз'; - } - - @override - String yourPerfRatingIsTooHigh(String param1, String param2) { - return 'Сезнең $param1 рейтингыгыз ($param2) артык югары'; - } - - @override - String yourTopWeeklyPerfRatingIsTooHigh(String param1, String param2) { - return 'Сезнең атналы $param1 рейтингыгыз ($param2) артык югары'; - } - - @override - String yourPerfRatingIsTooLow(String param1, String param2) { - return 'Сезнең $param1 рейтингыгыз ($param2) кирәкледән кечкенәрәк'; - } - - @override - String ratedMoreThanInPerf(String param1, String param2) { - return '$param2 рейтингы ≥ $param1'; - } - - @override - String ratedLessThanInPerf(String param1, String param2) { - return '$param2 рейтингы ≤ $param1'; - } - - @override - String mustBeInTeam(String param) { - return '$param төркемендә булырга тиеш'; - } - - @override - String youAreNotInTeam(String param) { - return 'Сез $param төркемендә түгел'; - } - - @override - String get backToGame => 'Уенга кайту'; - - @override - String get siteDescription => 'Түләүсез онлайн шахмат серверы. Уңайлы интерфейс. Рекламасыз, регистрация һәм программаны йөкләү кирәкми. Компьютер, дусларыгыз я очраклы каршыдаш белән уйнагыз.'; - - @override - String xJoinedTeamY(String param1, String param2) { - return '$param1 $param2 төркеменә кушылды'; - } - - @override - String xCreatedTeamY(String param1, String param2) { - return '$param1 $param2 төркемен ясады'; - } - - @override - String get startedStreaming => 'started streaming'; - - @override - String xStartedStreaming(String param) { - return '$param стрим башлады'; - } - - @override - String get averageElo => 'Уртача рейтинг'; - - @override - String get location => 'Урын'; - - @override - String get filterGames => 'Уеннар фильтры'; - - @override - String get reset => 'Яңадан'; - - @override - String get apply => 'Саклау'; - - @override - String get save => 'Саклау'; - - @override - String get leaderboard => 'Лидерлар тактасы'; - - @override - String get screenshotCurrentPosition => 'Screenshot current position'; - - @override - String get gameAsGIF => 'GIF итеп саклау'; - - @override - String get pasteTheFenStringHere => 'FEN текстын монда кертегез'; - - @override - String get pasteThePgnStringHere => 'PGN текстын монда кертегез'; - - @override - String get orUploadPgnFile => 'Or upload a PGN file'; - - @override - String get fromPosition => 'Позициядән'; - - @override - String get continueFromHere => 'Бу җирдән дәвам итү'; - - @override - String get toStudy => 'Өйрәнү'; - - @override - String get importGame => 'Уенны импортлау'; - - @override - String get importGameExplanation => 'Уенны яңадан күзәтү, компьютерлап анализлау, уен чатын hәм бүлешерлек URL алу өчен уеннын PGN йөкләгез.'; - - @override - String get importGameCaveat => 'Variations will be erased. To keep them, import the PGN via a study.'; - - @override - String get importGameDataPrivacyWarning => 'This PGN can be accessed by the public. To import a game privately, use a study.'; - - @override - String get thisIsAChessCaptcha => 'Бу шахматлы CAPTCHA.'; - - @override - String get clickOnTheBoardToMakeYourMove => 'Кеше икәнегезне раслау өчен тактага басып, йөрү ясагыз.'; - - @override - String get captcha_fail => 'Зинhaр, шахматлы капчаны чишегез.'; - - @override - String get notACheckmate => 'Мат түгел'; - - @override - String get whiteCheckmatesInOneMove => 'Аклар бер йөрүдә мат куялар'; - - @override - String get blackCheckmatesInOneMove => 'Каралар бер йөрүдә мат куялар'; - - @override - String get retry => 'Кабатлау'; - - @override - String get reconnecting => 'Яңадан бәйләнешү'; - - @override - String get noNetwork => 'Offline'; - - @override - String get favoriteOpponents => 'Яраткан ярышучылар'; - - @override - String get follow => 'Язылу'; - - @override - String get following => 'Язылгансыз'; - - @override - String get unfollow => 'Язылынмау'; - - @override - String followX(String param) { - return 'Follow $param'; - } - - @override - String unfollowX(String param) { - return '$param язылынмау'; - } - - @override - String get block => 'Блоклау'; - - @override - String get blocked => 'Блокланган'; - - @override - String get unblock => 'Блоктан чыгару'; - - @override - String get followsYou => 'Сезгә язылган'; - - @override - String xStartedFollowingY(String param1, String param2) { - return '$param1 $param2 исемле уенчыга язылган'; - } - - @override - String get more => 'Тагын'; - - @override - String get memberSince => 'Регистрация көне'; - - @override - String lastSeenActive(String param) { - return '$param кергән иде'; - } - - @override - String get player => 'Уенчы'; - - @override - String get list => 'Тезем'; - - @override - String get graph => 'График'; - - @override - String get required => 'Тәлап ителгән.'; - - @override - String get openTournaments => 'Ачык бәйгеләр'; - - @override - String get duration => 'Озаклыгы'; - - @override - String get winner => 'Җиңүче'; - - @override - String get standing => 'Урыны'; - - @override - String get createANewTournament => 'Яңа бәйге башламак'; - - @override - String get tournamentCalendar => 'Бәйге календаре'; - - @override - String get conditionOfEntry => 'Керу тәлапләре:'; - - @override - String get advancedSettings => 'Кушылма көйләүләр'; - - @override - String get safeTournamentName => 'Бәйге өчен хуп имин исем куегыз.'; - - @override - String get inappropriateNameWarning => 'Әз генә дә килешми торган исем аккаунтыгызның ябылуына китерә ала.'; - - @override - String get emptyTournamentName => 'Бәйгегә берәр атаклы шаһматчының исемен бирү өчен буш калдырыгыз.'; - - @override - String get makePrivateTournament => 'Бәйгегә серсүз буенча гына керү куя аласыз'; - - @override - String get join => 'Катнашу'; - - @override - String get withdraw => 'Уеннан чыгу'; - - @override - String get points => 'Баллар'; - - @override - String get wins => 'Җиңүләр'; - - @override - String get losses => 'Җиңелүләр'; - - @override - String get createdBy => 'Оештыручы'; - - @override - String get tournamentIsStarting => 'Бәйгене башлана'; - - @override - String get tournamentPairingsAreNowClosed => 'Бәйге чиратлаштыруы ябылган.'; - - @override - String standByX(String param) { - return '$param көтегез, уйнаучылар чиратлаштырыла, әзерләнегез!'; - } - - @override - String get pause => 'Туктату'; - - @override - String get resume => 'Дәвам итү'; - - @override - String get youArePlaying => 'Сез уйныйсыз!'; - - @override - String get winRate => 'Җиңүләр'; - - @override - String get berserkRate => 'Берсерк'; - - @override - String get performance => 'Перфоманс'; - - @override - String get tournamentComplete => 'Бәйге тәмамланды'; - - @override - String get movesPlayed => 'Йөрешләр саны'; - - @override - String get whiteWins => 'Аклар җиңүләре'; - - @override - String get blackWins => 'Каралар җиңүләре'; - - @override - String get drawRate => 'Draw rate'; - - @override - String get draws => 'Тиңлекләр'; - - @override - String nextXTournament(String param) { - return 'Киләсе $param бәйгесе:'; - } - - @override - String get averageOpponent => 'Уртача ярышучы'; - - @override - String get boardEditor => 'Тактаны үзгәртү'; - - @override - String get setTheBoard => 'Тактаны урнаштыру'; - - @override - String get popularOpenings => 'Популяр дебютлар'; - - @override - String get endgamePositions => 'Endgame positions'; - - @override - String chess960StartPosition(String param) { - return 'Chess960 start position: $param'; - } - - @override - String get startPosition => 'Башлангыч позиция'; - - @override - String get clearBoard => 'Тактаны бушату'; - - @override - String get loadPosition => 'Позицияне йөкләү'; - - @override - String get isPrivate => 'Яшерен'; - - @override - String reportXToModerators(String param) { - return '$param турында модераторларга белдерү'; - } - - @override - String profileCompletion(String param) { - return 'Профиль тәмамлыгы: $param'; - } - - @override - String xRating(String param) { - return '$param рейтингы'; - } - - @override - String get ifNoneLeaveEmpty => 'Булмаса, буш калдырыгыз'; - - @override - String get profile => 'Профиль'; - - @override - String get editProfile => 'Профильны үзгәртү'; - - @override - String get realName => 'Real name'; - - @override - String get setFlair => 'Set your flair'; - - @override - String get flair => 'Flair'; - - @override - String get youCanHideFlair => 'There is a setting to hide all user flairs across the entire site.'; - - @override - String get biography => 'Үзең турында'; - - @override - String get countryRegion => 'Country or region'; - - @override - String get thankYou => 'Рәхмәт!'; - - @override - String get socialMediaLinks => 'Социаль медиа сылтамалары'; - - @override - String get oneUrlPerLine => 'One URL per line.'; - - @override - String get inlineNotation => 'Кертелгән билгеләнеш'; - - @override - String get makeAStudy => 'For safekeeping and sharing, consider making a study.'; - - @override - String get clearSavedMoves => 'Clear moves'; - - @override - String get previouslyOnLichessTV => 'Алданлырак Личес ТВда'; - - @override - String get onlinePlayers => 'Юрдә уйнаучылар'; - - @override - String get activePlayers => 'Актив уйнаучылар'; - - @override - String get bewareTheGameIsRatedButHasNoClock => 'Сак бул, бу уен рейтинглы, әмма сәгать юк!'; - - @override - String get success => 'Уңышлы'; - - @override - String get automaticallyProceedToNextGameAfterMoving => 'Тукталмыйча дәвам ит киләсе уенны алгы йөртүдә'; - - @override - String get autoSwitch => 'Үзе күчерә'; - - @override - String get puzzles => 'Башваткычлар'; - - @override - String get onlineBots => 'Online bots'; - - @override - String get name => 'Исем'; - - @override - String get description => 'Тафсиры'; - - @override - String get descPrivate => 'Шәхси тафсиры'; - - @override - String get descPrivateHelp => 'Язма төркемле уенчыларга гына күренә ала. Әгәр куйсагыз, алыштырсагыз төркем әгъзалары өчен җәмәгать тасвирламасын.'; - - @override - String get no => 'Юк'; - - @override - String get yes => 'Әйе'; - - @override - String get help => 'Булышу:'; - - @override - String get createANewTopic => 'Яңа сәрхаү ачу'; - - @override - String get topics => 'Сәрхәү'; - - @override - String get posts => 'Хәбәрләр'; - - @override - String get lastPost => 'Соңгы хәбәр'; - - @override - String get views => 'Карамаклар'; - - @override - String get replies => 'Җаваплар'; - - @override - String get replyToThisTopic => 'Бу сәрхәүгә җавап'; - - @override - String get reply => 'Җавап'; - - @override - String get message => 'Хәбәр'; - - @override - String get createTheTopic => 'Сәрхәү ачу'; - - @override - String get reportAUser => 'Кулланучыны белделергә'; - - @override - String get user => 'Кулланучы'; - - @override - String get reason => 'Сәбаб'; - - @override - String get whatIsIheMatter => 'Нәрсә булды?'; - - @override - String get cheat => 'Алдамак'; - - @override - String get troll => 'Троль'; - - @override - String get other => 'Бүтән'; - - @override - String get reportDescriptionHelp => 'Уен(нар) сылтамаларын кертегез һәм бу кулланучының тәртибендә дөрес булмаганны аңлатыгыз. \"Алдакчы\" дип кенә әйтмәгез, бу нәтиҗәгә ничек килгәнегезне әйтегез. Сезнең җибәрүегез инглизчә язылган очракта тизрәк эшкәртеләчәк.'; - - @override - String get error_provideOneCheatedGameLink => 'Зинһар, алданган уенга ким дигәндә бер сылтама бирегез.'; - - @override - String by(String param) { - return '$paramдан'; - } - - @override - String importedByX(String param) { - return 'Imported by $param'; - } - - @override - String get thisTopicIsNowClosed => 'Бу сәрхәү хәзер ябык.'; - - @override - String get blog => 'Шәлкемлек'; - - @override - String get notes => 'Искәрмәләр'; - - @override - String get typePrivateNotesHere => 'Шәхси язма монда калдырыгыз'; - - @override - String get writeAPrivateNoteAboutThisUser => 'Write a private note about this user'; - - @override - String get noNoteYet => 'No note yet'; - - @override - String get invalidUsernameOrPassword => 'Кулланучы исеме яки серсүз яраксыз'; - - @override - String get incorrectPassword => 'Бозык серсүз'; - - @override - String get invalidAuthenticationCode => 'Аутһентикация коды яраксыз'; - - @override - String get emailMeALink => 'Сылтама белән миңа хат'; - - @override - String get currentPassword => 'Хәзерге серсүз'; - - @override - String get newPassword => 'Яңа серсүз'; - - @override - String get newPasswordAgain => 'Яңа серсүз (яңадан)'; - - @override - String get newPasswordsDontMatch => 'Яңа серсүз килешми'; - - @override - String get newPasswordStrength => 'Серсүз ныклыгы'; - - @override - String get clockInitialTime => 'Сәгатьнең баштагы вакыты'; - - @override - String get clockIncrement => 'Сәгатьнең артуы'; - - @override - String get privacy => 'Шәхсилек'; - - @override - String get privacyPolicy => 'Хосуслык сәясәте'; - - @override - String get letOtherPlayersFollowYou => 'Башка уенчылар сезгә иярсәләр'; - - @override - String get letOtherPlayersChallengeYou => 'Башка кулланучылар сезне сынамышка чакырсалар'; - - @override - String get letOtherPlayersInviteYouToStudy => 'Башка кулланучылар укырга чакырсалар'; - - @override - String get sound => 'Тавыш'; - - @override - String get none => 'Юк'; - - @override - String get fast => 'Тиз'; - - @override - String get normal => 'Гадәттәгечә'; - - @override - String get slow => 'Акрын'; - - @override - String get insideTheBoard => 'Тактаның эчендә'; - - @override - String get outsideTheBoard => 'Тактаның тышында'; - - @override - String get allSquaresOfTheBoard => 'All squares of the board'; - - @override - String get onSlowGames => 'Тыныч уеннарда'; - - @override - String get always => 'Һәрвакыт'; - - @override - String get never => 'Беркачанда'; - - @override - String xCompetesInY(String param1, String param2) { - return '$param1 көндәшлек итә $param2'; - } - - @override - String get victory => 'Җиңү'; - - @override - String get defeat => 'Җиңелде'; - - @override - String victoryVsYInZ(String param1, String param2, String param3) { - return '$param3 монда $param1 каршы $param2'; - } - - @override - String defeatVsYInZ(String param1, String param2, String param3) { - return '$param3 монда $param1 каршы $param2'; - } - - @override - String drawVsYInZ(String param1, String param2, String param3) { - return '$param3 монда $param1 каршы $param2'; - } - - @override - String get timeline => 'Вакыт узуы'; - - @override - String get starting => 'Башлануы:'; - - @override - String get allInformationIsPublicAndOptional => 'Барлык мәгълүмат җәмәгать һәм өстәмә.'; - - @override - String get biographyDescription => 'Сөйләгез үзегез хакында, сезнең кызыксындырулар турында, Ни сез яратасыз шаһматта, сезнең яраткан ачылышыгыз, кулланучыгыз,...'; - - @override - String get listBlockedPlayers => 'Язмасындагы кулланучыларны сез кисәттегез'; - - @override - String get human => 'Кеше'; - - @override - String get computer => 'Компьютер'; - - @override - String get side => 'Як'; - - @override - String get clock => 'Сәгать'; - - @override - String get opponent => 'Көндәшегез'; - - @override - String get learnMenu => 'Өйрәнү'; - - @override - String get studyMenu => 'Өйрәнү'; - - @override - String get practice => 'Практика'; - - @override - String get community => 'Җәмәгать'; - - @override - String get tools => 'Кораллар'; - - @override - String get increment => 'Артуы'; - - @override - String get error_unknown => 'Invalid value'; - - @override - String get error_required => 'Бу алан кирәкле'; - - @override - String get error_email => 'This email address is invalid'; - - @override - String get error_email_acceptable => 'This email address is not acceptable. Please double-check it, and try again.'; - - @override - String get error_email_unique => 'Email address invalid or already taken'; - - @override - String get error_email_different => 'This is already your email address'; - - @override - String error_minLength(String param) { - return 'Must be at least $param characters long'; - } - - @override - String error_maxLength(String param) { - return 'Must be at most $param characters long'; - } - - @override - String error_min(String param) { - return 'Must be at least $param'; - } - - @override - String error_max(String param) { - return 'Must be at most $param'; - } - - @override - String ifRatingIsPlusMinusX(String param) { - return 'Әгәр рейтингың ± $param'; - } - - @override - String get ifRegistered => 'If registered'; - - @override - String get onlyExistingConversations => 'Бары тик сөйләшүләр генә'; - - @override - String get onlyFriends => 'Дустлар гына'; - - @override - String get menu => 'Меню'; - - @override - String get castling => 'Ныгытма'; - - @override - String get whiteCastlingKingside => 'Аклар O-O'; - - @override - String get blackCastlingKingside => 'Каралар O-O'; - - @override - String tpTimeSpentPlaying(String param) { - return 'Уйнау өчен вакыт: $param'; - } - - @override - String get watchGames => 'Кара уеннарны'; - - @override - String tpTimeSpentOnTV(String param) { - return 'ТВдан күрсәтелгән вакыт: $param'; - } - - @override - String get watch => 'Кара'; - - @override - String get videoLibrary => 'Видео җиентыгы'; - - @override - String get streamersMenu => 'Алып баручылар'; - - @override - String get mobileApp => 'Кәрәзле Әсбап'; - - @override - String get webmasters => 'Вебмастерлар'; - - @override - String get about => 'Хакында'; - - @override - String aboutX(String param) { - return '$param хакында'; - } - - @override - String xIsAFreeYLibreOpenSourceChessServer(String param1, String param2) { - return '$param1 ул азат ($param2), ирекле, комерциясез, ачык чыганаклы шаһмат серверы.'; - } - - @override - String get really => 'чыннанда'; - - @override - String get contribute => 'Игътибар итегез'; - - @override - String get termsOfService => 'Куллану шартлары'; - - @override - String get sourceCode => 'Кодның чыганагы'; - - @override - String get simultaneousExhibitions => 'Синхрон күргәзмәләр'; - - @override - String get host => 'Хуҗа'; - - @override - String hostColorX(String param) { - return 'Алып бару төсе $param'; - } - - @override - String get yourPendingSimuls => 'Your pending simuls'; - - @override - String get createdSimuls => 'Яңа гына ачылган симул'; - - @override - String get hostANewSimul => 'Яңа симулның хуҗасы'; - - @override - String get signUpToHostOrJoinASimul => 'Sign up to host or join a simul'; - - @override - String get noSimulFound => 'Симул табылмады'; - - @override - String get noSimulExplanation => 'Бер үк вакыттагы күргәзмә юк.'; - - @override - String get returnToSimulHomepage => 'Симул ал битенә кайтырга'; - - @override - String get aboutSimul => 'Симуляцияда бер генэ кеше уйныйала, шул вакытта кайберлэр кешелэр белэн уйный аларга ярый.'; - - @override - String get aboutSimulImage => '50 Рәкыйп чыкты, Фишер 47 уенны җиңде, 2се җиңүсез һәм 1 уенда җиңелде.'; - - @override - String get aboutSimulRealLife => 'Концепция хакыкый дөнья вакыйгаларыннан алынган. Хакыкый хаяттә бу бер үк вакытта алып барган хәрәкәтләрне өстәлдән өстәлгә уйнашны үзе хәрәкәт итте.'; - - @override - String get aboutSimulRules => 'Берүк башлаганда һәр бер уенчы алып баручы белән уенны уенны башлады. Берүк барча уеннар тутаганнан соң туктый.'; - - @override - String get aboutSimulSettings => 'Берүк һаманда рәсми түгел. Кайтаргыч уеннар, кайтарып алулар һәм вакыт өстәү мәгакъ.'; - - @override - String get create => 'Ячарга'; - - @override - String get whenCreateSimul => 'Качанда сез Берүк ачканда, сезгә уйнау өчен берничә уенчы тугры киләдер.'; - - @override - String get simulVariantsHint => 'Әгәр сез берничә вариантны сайласагыз, һәр уйнаучы сайлый ала берне уйнау өчен.'; - - @override - String get simulClockHint => 'Фишер Сәгатен үзләштерү. Күбрәк уенчыларны кабул кылсагыз, сезгә кубрәк вакыт кирәк буласы мөмкин.'; - - @override - String get simulAddExtraTime => 'Берүктә җиңәр өчен сезгә сәгатькә кушымча вакыт кушышсагыз мөмкин.'; - - @override - String get simulHostExtraTime => 'Алып барырга өстәмә сәгать вакытын'; - - @override - String get simulAddExtraTimePerPlayer => 'Add initial time to your clock for each player joining the simul.'; - - @override - String get simulHostExtraTimePerPlayer => 'Host extra clock time per player'; - - @override - String get lichessTournaments => 'Личесс бәйгеләре'; - - @override - String get tournamentFAQ => 'Бәйге мәйданы ЕБС'; - - @override - String get timeBeforeTournamentStarts => 'Бәйге башланыр алдындагы вакыт'; - - @override - String get averageCentipawnLoss => 'Уртача урнашу-матерьялы җиңүлүе'; - - @override - String get accuracy => 'Төгәллек'; - - @override - String get keyboardShortcuts => 'Керткечнең эзмәләре'; - - @override - String get keyMoveBackwardOrForward => 'артка/Алга хәрәкәт'; - - @override - String get keyGoToStartOrEnd => 'башлануга/бетүгә'; - - @override - String get keyCycleSelectedVariation => 'Cycle selected variation'; - - @override - String get keyShowOrHideComments => 'комментларны ачу/качыру'; - - @override - String get keyEnterOrExitVariation => 'керт/чык вариантны'; - - @override - String get keyRequestComputerAnalysis => 'Request computer analysis, Learn from your mistakes'; - - @override - String get keyNextLearnFromYourMistakes => 'Next (Learn from your mistakes)'; - - @override - String get keyNextBlunder => 'Next blunder'; - - @override - String get keyNextMistake => 'Next mistake'; - - @override - String get keyNextInaccuracy => 'Next inaccuracy'; - - @override - String get keyPreviousBranch => 'Previous branch'; - - @override - String get keyNextBranch => 'Next branch'; - - @override - String get toggleVariationArrows => 'Toggle variation arrows'; - - @override - String get cyclePreviousOrNextVariation => 'Cycle previous/next variation'; - - @override - String get toggleGlyphAnnotations => 'Toggle move annotations'; - - @override - String get togglePositionAnnotations => 'Toggle position annotations'; - - @override - String get variationArrowsInfo => 'Variation arrows let you navigate without using the move list.'; - - @override - String get playSelectedMove => 'play selected move'; - - @override - String get newTournament => 'Яңа бәйге'; - - @override - String get tournamentHomeTitle => 'Шаһмат бәйгесе төрле хосусиятләргә вакытны башкару һәм вариантларга ия'; - - @override - String get tournamentHomeDescription => 'Уйна Тизкер шаһмат бәйгесендә! Рәтләштерелгән рәсми бәйгегә шәхсән кушыл яки үзеңнекен ач. Мәрми, Яшен, Хуп, Фишерча, ТауШаһы, ӨчләтәШаһ, һәм тагын имкинлиятлекләр форсаты чиксез шаһмат куанычы өчен.'; - - @override - String get tournamentNotFound => 'Бәйге табылмаган'; - - @override - String get tournamentDoesNotExist => 'Ошбу бәйге мәүҗуд итмәс.'; - - @override - String get tournamentMayHaveBeenCanceled => 'Әгәр барча уенчылар башлангыш алдындан китешкән булса, бәйге бөкер кылынган булуш мөмкин.'; - - @override - String get returnToTournamentsHomepage => 'Бәйгеләр албитенә барырга'; - - @override - String weeklyPerfTypeRatingDistribution(String param) { - return 'Атналы $param рейтинг таратылышы'; - } - - @override - String yourPerfTypeRatingIsRating(String param1, String param2) { - return 'Сезнең $param1 рейтингыгыз $param2.'; - } - - @override - String youAreBetterThanPercentOfPerfTypePlayers(String param1, String param2) { - return 'Сез $param1 уйнаучыдан $param2 әхсәндер.'; - } - - @override - String userIsBetterThanPercentOfPerfTypePlayers(String param1, String param2, String param3) { - return '$param3 уйнаучылар арасында $param2 караганда $param1 әхсәндер.'; - } - - @override - String betterThanPercentPlayers(String param1, String param2) { - return 'Better than $param1 of $param2 players'; - } - - @override - String youDoNotHaveAnEstablishedPerfTypeRating(String param) { - return 'Сездә билгеләнгән $param рейтингы юк.'; - } - - @override - String get yourRating => 'Сезнең рейтингыгыз'; - - @override - String get cumulative => 'Кумулятив'; - - @override - String get glicko2Rating => 'Glicko-2 рейтингы'; - - @override - String get checkYourEmail => 'Тикшерегез э. почтаны'; - - @override - String get weHaveSentYouAnEmailClickTheLink => 'Без сезгә электрон почта җибәрдек. Хисап язмагызны активлаштыру өчен электрон почтадагы сылтамага басыгыз.'; - - @override - String get ifYouDoNotSeeTheEmailCheckOtherPlaces => 'Электрон почтаны күрмәсәгез, башка урыннарны тикшерегез, сезнең кирәксез, спам, социаль яки бүтән папкалар кебек.'; - - @override - String weHaveSentYouAnEmailTo(String param) { - return 'Безнең $param җибәрдек. Серсүзне яңадан урнаштыру өчен электрон почтадагы сылтамага басыгыз.'; - } - - @override - String byRegisteringYouAgreeToBeBoundByOur(String param) { - return 'Теркәлү белән сез $param белән ризалашасыз.'; - } - - @override - String readAboutOur(String param) { - return 'Безнең $param турында укыгыз.'; - } - - @override - String get networkLagBetweenYouAndLichess => 'Челтәр сезнең белән Lichess арасында артта калды'; - - @override - String get timeToProcessAMoveOnLichessServer => 'Lichess серверында хәрәкәтне эшкәртү вакыты'; - - @override - String get downloadAnnotated => 'Өзешлене йөкләү'; - - @override - String get downloadRaw => 'Чималны иңдер'; - - @override - String get downloadImported => 'Импортны йөкләү'; - - @override - String get crosstable => 'Кросстабель'; - - @override - String get youCanAlsoScrollOverTheBoardToMoveInTheGame => 'Сез шулай ук уенга күчү өчен такта өстенә әйләндерә аласыз.'; - - @override - String get scrollOverComputerVariationsToPreviewThem => 'Scroll over computer variations to preview them.'; - - @override - String get analysisShapesHowTo => 'Тактада түгәрәкләр һәм уклар сызу өчен shift + чирттерү яки уң төймәгә+чирттерү.'; - - @override - String get letOtherPlayersMessageYou => 'Башка уенчылар сезгә хәбәр итсеннәр'; - - @override - String get receiveForumNotifications => 'Receive notifications when mentioned in the forum'; - - @override - String get shareYourInsightsData => 'Шаһмат мәгълүматлары белән уртаклашыгыз'; - - @override - String get withNobody => 'Беркем беләндә түгел'; - - @override - String get withFriends => 'Дустлар белән'; - - @override - String get withEverybody => 'Барысы белән'; - - @override - String get kidMode => 'Сабыйлар осулы'; - - @override - String get kidModeIsEnabled => 'Kid mode is enabled.'; - - @override - String get kidModeExplanation => 'Бу куркынычсызлык турында. Балалар режимында барлык сайт элемтәләре дә сүндерелгән. Моны балаларыгыз һәм мәктәп укучылары өчен рөхсәт итегез, аларны бүтән интернет кулланучылардан саклагыз.'; - - @override - String inKidModeTheLichessLogoGetsIconX(String param) { - return 'Балалар усулында Lichess тамгасы $param иконасын ала, шуңа күрә сез балаларыгызның куркынычсыз булуын беләсез.'; - } - - @override - String get askYourChessTeacherAboutLiftingKidMode => 'Your account is managed. Ask your chess teacher about lifting kid mode.'; - - @override - String get enableKidMode => 'Балалар осулын куй'; - - @override - String get disableKidMode => 'Сабый осулын кирегә куй'; - - @override - String get security => 'Хәвефсезлек'; - - @override - String get sessions => 'Sessions'; - - @override - String get revokeAllSessions => 'һәр сессиядан чыгу'; - - @override - String get playChessEverywhere => 'Уйна шаһмат бөтен җирдә'; - - @override - String get asFreeAsLichess => 'Личесс кебек азат'; - - @override - String get builtForTheLoveOfChessNotMoney => 'Төздек шаһмат яратучылары өчен, акча түгел'; - - @override - String get everybodyGetsAllFeaturesForFree => 'Һәркайсы алы барлык әйберләрен азат'; - - @override - String get zeroAdvertisement => 'Сәрмая юк'; - - @override - String get fullFeatured => 'Барлык үзенчәлекләр'; - - @override - String get phoneAndTablet => 'Кәрәзле телефон һәм планшет'; - - @override - String get bulletBlitzClassical => 'Мәрми, яшенчә, хуп'; - - @override - String get correspondenceChess => 'Язылу шаһматы'; - - @override - String get onlineAndOfflinePlay => 'Чилтәрдә һәм чилтәрсез уйнамак'; - - @override - String get viewTheSolution => 'Чишелешне карап алу'; - - @override - String get followAndChallengeFriends => 'Иярергә һәм сынарга дутларны'; - - @override - String get gameAnalysis => 'Уенны уйланырга'; - - @override - String xHostsY(String param1, String param2) { - return '$param1 хуҗасы $param2'; - } - - @override - String xJoinsY(String param1, String param2) { - return '$param1 Кушлады $param2'; - } - - @override - String xLikesY(String param1, String param2) { - return '$param1 ошады $param2'; - } - - @override - String get quickPairing => 'Тизкер парлаштырыш'; - - @override - String get lobby => 'Көндәшләр'; - - @override - String get anonymous => 'Билгесез'; - - @override - String yourScore(String param) { - return 'Синен бәяләү $param'; - } - - @override - String get language => 'Тел'; - - @override - String get background => 'Җирлек'; - - @override - String get light => 'Ачык'; - - @override - String get dark => 'Караңгы'; - - @override - String get transparent => 'Үтә күренмәле'; - - @override - String get deviceTheme => 'Device theme'; - - @override - String get backgroundImageUrl => 'Арткы караныш рәсеме URL:'; - - @override - String get board => 'Board'; - - @override - String get size => 'Size'; - - @override - String get opacity => 'Opacity'; - - @override - String get brightness => 'Brightness'; - - @override - String get hue => 'Hue'; - - @override - String get boardReset => 'Reset colours to default'; - - @override - String get pieceSet => 'Эйберлэр'; - - @override - String get embedInYourWebsite => 'Веб-сайтыгызга җайлаштырылган'; - - @override - String get usernameAlreadyUsed => 'Ошбу кулланучынәми әлләкайчан ишләтелгән, фадлыйк башкасын сынап карыйк.'; - - @override - String get usernamePrefixInvalid => 'Кулланучынәмә хәрефтән башланырга тиеш.'; - - @override - String get usernameSuffixInvalid => 'Кулланучынәмә хәреф яки сан белән тәмамланырга тиеш.'; - - @override - String get usernameCharsInvalid => 'Кулланучынәма фәкать харефләр, саннар, астсызыклар вә урта сызыклар гыйбәрәт булыш кирәк. Китмә-киткән астсызыклар вә урта сызыкларга юк куймайды.'; - - @override - String get usernameUnacceptable => 'Бу кулланучынәма макбул түгел.'; - - @override - String get playChessInStyle => 'Уйна шаһмат стиль белән'; - - @override - String get chessBasics => 'Шаһмат нигезләре'; - - @override - String get coaches => 'Тренерлар'; - - @override - String get invalidPgn => 'Бозык PGN'; - - @override - String get invalidFen => 'Бозык FEN'; - - @override - String get custom => 'Куелган'; - - @override - String get notifications => 'Хәбәр итүләр'; - - @override - String notificationsX(String param1) { - return 'Notifications: $param1'; - } - - @override - String perfRatingX(String param) { - return 'Рейтинг: $param'; - } - - @override - String get practiceWithComputer => 'Компьютер белән практикалаштыру'; - - @override - String anotherWasX(String param) { - return 'Башкасы $param иде'; - } - - @override - String bestWasX(String param) { - return 'Иң якшысы $param'; - } - - @override - String get youBrowsedAway => 'Сез карадыгыз'; - - @override - String get resumePractice => 'Дәвам итергә практиканы'; - - @override - String get drawByFiftyMoves => 'The game has been drawn by the fifty move rule.'; - - @override - String get theGameIsADraw => 'Бу уен җиңүсез.'; - - @override - String get computerThinking => 'Компьютер саный ...'; - - @override - String get seeBestMove => 'Иң якшы хәрәкәтне кара'; - - @override - String get hideBestMove => 'Иң якшы хәрәкәтне качырырга'; - - @override - String get getAHint => 'Этәргеч алырга'; - - @override - String get evaluatingYourMove => 'Сезнең хәрәкәтне бәяләү ...'; - - @override - String get whiteWinsGame => 'Аклар җиңүләре'; - - @override - String get blackWinsGame => 'Каралар җиңүләре'; - - @override - String get learnFromYourMistakes => 'Хаталардан өйрәнегез'; - - @override - String get learnFromThisMistake => 'Бу хатадан өйрәнегез'; - - @override - String get skipThisMove => 'Төшереп калдыру бу хәрәкәтне'; - - @override - String get next => 'Киләсе'; - - @override - String xWasPlayed(String param) { - return '$param уйнады'; - } - - @override - String get findBetterMoveForWhite => 'Эзлә иң якшы хәрәкәтне аклар өчен'; - - @override - String get findBetterMoveForBlack => 'Эзлә иң якшы хәрәкәтне каралар өчен'; - - @override - String get resumeLearning => 'Өйрәнүгә кайту'; - - @override - String get youCanDoBetter => 'Сез яхшырак эшли аласыз'; - - @override - String get tryAnotherMoveForWhite => 'Акларга бүтән хәрәкәтне карагыз'; - - @override - String get tryAnotherMoveForBlack => 'Караларга бүтән хәрәкәтне карагыз'; - - @override - String get solution => 'Чишелеше'; - - @override - String get waitingForAnalysis => 'Көтегез тәхлил өчен'; - - @override - String get noMistakesFoundForWhite => 'Аклар өчен табылмады хата'; - - @override - String get noMistakesFoundForBlack => 'Табылмады караларның хаталары'; - - @override - String get doneReviewingWhiteMistakes => 'Аклар хаталарын карау булды'; - - @override - String get doneReviewingBlackMistakes => 'Каралар хаталарын карау булды'; - - @override - String get doItAgain => 'Кабат ясарга'; - - @override - String get reviewWhiteMistakes => 'Тагын карарга аклар хаталарын'; - - @override - String get reviewBlackMistakes => 'Тагын карарга каралар хаталарын'; - - @override - String get advantage => 'Өстенлек'; - - @override - String get opening => 'Башлагыч'; - - @override - String get middlegame => 'Урта уен'; - - @override - String get endgame => 'Уен азагы'; - - @override - String get conditionalPremoves => 'Шартлы хәрәкәтләр'; - - @override - String get addCurrentVariation => 'Агымдагы үзгәрешне өстәгез'; - - @override - String get playVariationToCreateConditionalPremoves => 'Шартлы хәрәкәтләр ясау өчен вариация уйнагыз'; - - @override - String get noConditionalPremoves => 'Юк шартлы хәрәкәтләр'; - - @override - String playX(String param) { - return 'Уйнау $param'; - } - - @override - String get showUnreadLichessMessage => 'You have received a private message from Lichess.'; - - @override - String get clickHereToReadIt => 'Click here to read it'; - - @override - String get sorry => 'Юаныч :('; - - @override - String get weHadToTimeYouOutForAWhile => 'Без сезне бераз вакытка чыгарырга тиеш идек.'; - - @override - String get why => 'Нигә?'; - - @override - String get pleasantChessExperience => 'Без һәркемгә шаһмат тәҗрибәсен тәкъдим итәбез.'; - - @override - String get goodPractice => 'Моның өчен без барлык уенчыларның да яхшы практиканы үтәргә тиеш.'; - - @override - String get potentialProblem => 'Мөмкин булган мөшәкәт аныкланганда, без ошбу хәбәрне күрсәтербез.'; - - @override - String get howToAvoidThis => 'Моннан ничек сакланырга?'; - - @override - String get playEveryGame => 'Сез башлаган һәр уенны уйнагыз.'; - - @override - String get tryToWin => 'Сез уйнаган һәр уенда җиңәргә (яки ким дигәндә җиңүсезлеккә) тырышыгыз.'; - - @override - String get resignLostGames => 'Истифа ителгән җиңелгән уеннар (сәгать эшләмәсен).'; - - @override - String get temporaryInconvenience => 'Вакытлыча уңайсызлыклар өчен гафу үтенәбез,'; - - @override - String get wishYouGreatGames => 'һәм сезгә lichess.org сайтында зур уеннар телим.'; - - @override - String get thankYouForReading => 'Укыган өчен ташаккур!'; - - @override - String get lifetimeScore => 'Гомер буе исәпләү'; - - @override - String get currentMatchScore => 'Хәзерге матч исәбе'; - - @override - String get agreementAssistance => 'Минем уеннар вакытында теләсә кайсы вакытта ярдәм алуыма ризалашам (шахмат компьютерыннан, китаптан, мәгълүмат базасыннан яки бүтән кешедән).'; - - @override - String get agreementNice => 'Мин башка уенчыларга һәрвакыт хөрмәт күрсәтермен дип килешәм.'; - - @override - String agreementMultipleAccounts(String param) { - return 'I agree that I will not create multiple accounts (except for the reasons stated in the $param).'; - } - - @override - String get agreementPolicy => 'Мин барлык Lichess сәясәтен үтәрмен дип килешәм.'; - - @override - String get searchOrStartNewDiscussion => 'Яңа сөйләшүне эзләү яки башлау'; - - @override - String get edit => 'Үзгәртү'; - - @override - String get bullet => 'Bullet'; - - @override - String get blitz => 'Блиц'; - - @override - String get rapid => 'Тиз'; - - @override - String get classical => 'Классика'; - - @override - String get ultraBulletDesc => 'Гаҗәеп тиз уеннар: 30 секундтан да азрак'; - - @override - String get bulletDesc => 'Бик тиз уеннар: 3 минуттан да азрак'; - - @override - String get blitzDesc => 'Тиз уеннар: 3 - 8 минут'; - - @override - String get rapidDesc => 'Тиз уеннар 8дән 25минутка кадәр'; - - @override - String get classicalDesc => 'Хуп уеннар: 25 минут һәм аннан да күбрәк'; - - @override - String get correspondenceDesc => 'Хат язышу уеннары: хәрәкәткә бер-берничә көн'; - - @override - String get puzzleDesc => 'Шаһмат тактикалар остасы'; - - @override - String get important => 'Мөһим'; - - @override - String yourQuestionMayHaveBeenAnswered(String param1) { - return 'Сезнең сорауга $param1 җаваплар булырга мөмкин'; - } - - @override - String get inTheFAQ => 'Еш Сорый торган Сорауларда.'; - - @override - String toReportSomeoneForCheatingOrBadBehavior(String param1) { - return 'Алдау яки начар тәртип өчен кулланучыга хәбәр итү өчен, $param1'; - } - - @override - String get useTheReportForm => 'куллан җибәрү формасын'; - - @override - String toRequestSupport(String param1) { - return 'Ярдәм сорашу өчен $param1'; - } - - @override - String get tryTheContactPage => 'контакт битен карагыз'; - - @override - String makeSureToRead(String param1) { - return 'Make sure to read $param1'; - } - - @override - String get theForumEtiquette => 'the forum etiquette'; - - @override - String get thisTopicIsArchived => 'Бу тема архивланган һәм аңа җавап биреп булмый.'; - - @override - String joinTheTeamXToPost(String param1) { - return 'Бу форумда урнаштыру өчен $param1 кушылыгыз'; - } - - @override - String teamNamedX(String param1) { - return '$param1 Җәмәга'; - } - - @override - String get youCannotPostYetPlaySomeGames => 'Сез әле форумда бәрид урнаштыра алмыйсыз. Берничә уен уйнагыз!'; - - @override - String get subscribe => 'Кушылмак'; - - @override - String get unsubscribe => 'Аерылмак'; - - @override - String mentionedYouInX(String param1) { - return '\"$param1\" сезне искә алдылар.'; - } - - @override - String xMentionedYouInY(String param1, String param2) { - return '$param1 сезне \"$param2\" да искә алды.'; - } - - @override - String invitedYouToX(String param1) { - return '\"$param1\" сезне яште.'; - } - - @override - String xInvitedYouToY(String param1, String param2) { - return '$param1 сезне \"$param2\" чакырды.'; - } - - @override - String get youAreNowPartOfTeam => 'Сез хәзер җәмәга әгъзасы.'; - - @override - String youHaveJoinedTeamX(String param1) { - return 'Сез \"$param1\" га кушылдыгыз.'; - } - - @override - String get someoneYouReportedWasBanned => 'Сез хәбәр иткән кеше тыелган'; - - @override - String get congratsYouWon => 'Тәбриклийбез, сез җиңдегез!'; - - @override - String gameVsX(String param1) { - return '$param1 каршы уен'; - } - - @override - String resVsX(String param1, String param2) { - return '$param1 vs $param2'; - } - - @override - String get lostAgainstTOSViolator => 'Сез Lichess TOS кагыйдәләрене бозган кешегә оттырдыгыз'; - - @override - String refundXpointsTimeControlY(String param1, String param2) { - return 'Кире кайтару $param1 $param2 рейтинг накате.'; - } - - @override - String get timeAlmostUp => 'Вакыт тугады диярлек!'; - - @override - String get clickToRevealEmailAddress => '[Click to reveal email address]'; - - @override - String get download => 'Йөкләп алу'; - - @override - String get coachManager => 'Coach manager'; - - @override - String get streamerManager => 'Streamer manager'; - - @override - String get cancelTournament => 'Cancel the tournament'; - - @override - String get tournDescription => 'Ярыш тасвирламасы'; - - @override - String get tournDescriptionHelp => 'Anything special you want to tell the participants? Try to keep it short. Markdown links are available: [name](https://url)'; - - @override - String get ratedFormHelp => 'Games are rated and impact players ratings'; - - @override - String get onlyMembersOfTeam => 'Only members of team'; - - @override - String get noRestriction => 'No restriction'; - - @override - String get minimumRatedGames => 'Minimum rated games'; - - @override - String get minimumRating => 'Minimum rating'; - - @override - String get maximumWeeklyRating => 'Maximum weekly rating'; - - @override - String positionInputHelp(String param) { - return 'Paste a valid FEN to start every game from a given position.\nIt only works for standard games, not with variants.\nYou can use the $param to generate a FEN position, then paste it here.\nLeave empty to start games from the normal initial position.'; - } - - @override - String get cancelSimul => 'Cancel the simul'; - - @override - String get simulHostcolor => 'Host colour for each game'; - - @override - String get estimatedStart => 'Estimated start time'; - - @override - String simulFeatured(String param) { - return 'Feature on $param'; - } - - @override - String simulFeaturedHelp(String param) { - return 'Show your simul to everyone on $param. Disable for private simuls.'; - } - - @override - String get simulDescription => 'Simul description'; - - @override - String get simulDescriptionHelp => 'Anything you want to tell the participants?'; - - @override - String markdownAvailable(String param) { - return '$param is available for more advanced syntax.'; - } - - @override - String get embedsAvailable => 'Paste a game URL or a study chapter URL to embed it.'; - - @override - String get inYourLocalTimezone => 'In your own local timezone'; - - @override - String get tournChat => 'Tournament chat'; - - @override - String get noChat => 'No chat'; - - @override - String get onlyTeamLeaders => 'Only team leaders'; - - @override - String get onlyTeamMembers => 'Only team members'; - - @override - String get navigateMoveTree => 'Navigate the move tree'; - - @override - String get mouseTricks => 'Mouse tricks'; - - @override - String get toggleLocalAnalysis => 'Toggle local computer analysis'; - - @override - String get toggleAllAnalysis => 'Toggle all computer analysis'; - - @override - String get playComputerMove => 'Play best computer move'; - - @override - String get analysisOptions => 'Analysis options'; - - @override - String get focusChat => 'Focus chat'; - - @override - String get showHelpDialog => 'Show this help dialog'; - - @override - String get reopenYourAccount => 'Reopen your account'; - - @override - String get closedAccountChangedMind => 'If you closed your account, but have since changed your mind, you get one chance of getting your account back.'; - - @override - String get onlyWorksOnce => 'This will only work once.'; - - @override - String get cantDoThisTwice => 'If you close your account a second time, there will be no way of recovering it.'; - - @override - String get emailAssociatedToaccount => 'Email address associated to the account'; - - @override - String get sentEmailWithLink => 'We\'ve sent you an email with a link.'; - - @override - String get tournamentEntryCode => 'Tournament entry code'; - - @override - String get hangOn => 'Туктагыз!'; - - @override - String gameInProgress(String param) { - return 'You have a game in progress with $param.'; - } - - @override - String get abortTheGame => 'Abort the game'; - - @override - String get resignTheGame => 'Resign the game'; - - @override - String get youCantStartNewGame => 'You can\'t start a new game until this one is finished.'; - - @override - String get since => 'Since'; - - @override - String get until => 'Until'; - - @override - String get lichessDbExplanation => 'Rated games played on Lichess'; - - @override - String get switchSides => 'Switch sides'; - - @override - String get closingAccountWithdrawAppeal => 'Closing your account will withdraw your appeal'; - - @override - String get ourEventTips => 'Our tips for organising events'; - - @override - String get instructions => 'Instructions'; - - @override - String get showMeEverything => 'Show me everything'; - - @override - String get lichessPatronInfo => 'Lichess is a charity and entirely free/libre open source software.\nAll operating costs, development, and content are funded solely by user donations.'; - - @override - String get nothingToSeeHere => 'Nothing to see here at the moment.'; - - @override - String opponentLeftCounter(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Ярышучыгыз уеннан чыкты. Сез җиңүегезне $count секундтан белдерә аласыз.', - ); - return '$_temp0'; - } - - @override - String mateInXHalfMoves(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count ярты-йөрүдә мат', - ); - return '$_temp0'; - } - - @override - String nbBlunders(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count хаталар', - ); - return '$_temp0'; - } - - @override - String nbMistakes(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count хата', - ); - return '$_temp0'; - } - - @override - String nbInaccuracies(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count төгәлсезлек', - ); - return '$_temp0'; - } - - @override - String nbPlayers(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count уенчы', - ); - return '$_temp0'; - } - - @override - String nbGames(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count уен', - ); - return '$_temp0'; - } - - @override - String ratingXOverYGames(int count, String param2) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count rating over $param2 games', - one: '$count rating over $param2 game', - ); - return '$_temp0'; - } - - @override - String nbBookmarks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count билгеләнгән', - ); - return '$_temp0'; - } - - @override - String nbDays(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count көн', - ); - return '$_temp0'; - } - - @override - String nbHours(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count сәгатъ', - ); - return '$_temp0'; - } - - @override - String nbMinutes(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count минут', - ); - return '$_temp0'; - } - - @override - String rankIsUpdatedEveryNbMinutes(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Урын hәр $count минут саен яңартыла', - ); - return '$_temp0'; - } - - @override - String nbPuzzles(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count күнегү', - ); - return '$_temp0'; - } - - @override - String nbGamesWithYou(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Сезнең белән $count уен', - ); - return '$_temp0'; - } - - @override - String nbRated(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count рейтинглы', - ); - return '$_temp0'; - } - - @override - String nbWins(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count җиңү', - ); - return '$_temp0'; - } - - @override - String nbLosses(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count җиңелү', - ); - return '$_temp0'; - } - - @override - String nbDraws(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count тиңлек', - ); - return '$_temp0'; - } - - @override - String nbPlaying(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count уйнала', - ); - return '$_temp0'; - } - - @override - String giveNbSeconds(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count секунд бирү', - ); - return '$_temp0'; - } - - @override - String nbTournamentPoints(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count турнир баллары', - ); - return '$_temp0'; - } - - @override - String nbStudies(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count өйрәнү', - ); - return '$_temp0'; - } - - @override - String nbSimuls(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count simuls', - one: '$count simul', - ); - return '$_temp0'; - } - - @override - String moreThanNbRatedGames(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '≥ $count рейтинглы уен', - ); - return '$_temp0'; - } - - @override - String moreThanNbPerfRatedGames(int count, String param2) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '≥ $count рейтинглы $param2 уен', - ); - return '$_temp0'; - } - - @override - String needNbMorePerfGames(int count, String param2) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Сезгә тагын $param2 рейтинглы $count уен уйнарга кирәк', - ); - return '$_temp0'; - } - - @override - String needNbMoreGames(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Сезгә тагын $count рейтинглы уен уйнарга кирәк', - ); - return '$_temp0'; - } - - @override - String nbImportedGames(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count импортланган уен', - ); - return '$_temp0'; - } - - @override - String nbFriendsOnline(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count дус челтәрдә', - ); - return '$_temp0'; - } - - @override - String nbFollowers(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count язылучы', - ); - return '$_temp0'; - } - - @override - String nbFollowing(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count язылганнары', - ); - return '$_temp0'; - } - - @override - String lessThanNbMinutes(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count минуттан әзрәк', - ); - return '$_temp0'; - } - - @override - String nbGamesInPlay(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count уен уйныйлар', - ); - return '$_temp0'; - } - - @override - String maximumNbCharacters(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Азагында $count билге.', - ); - return '$_temp0'; - } - - @override - String blocks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count кисетелгән', - ); - return '$_temp0'; - } - - @override - String nbForumPosts(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count аралашу хәбәры', - ); - return '$_temp0'; - } - - @override - String nbPerfTypePlayersThisWeek(int count, String param2) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count $param2 уенчылар бу атнада.', - ); - return '$_temp0'; - } - - @override - String availableInNbLanguages(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count телдә бар!', - ); - return '$_temp0'; - } - - @override - String nbSecondsToPlayTheFirstMove(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count секунд уйнар өчен беренче хәрәкәтне', - ); - return '$_temp0'; - } - - @override - String nbSeconds(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count секунд', - ); - return '$_temp0'; - } - - @override - String andSaveNbPremoveLines(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'һәм $count йөрмәгән линияне', - ); - return '$_temp0'; - } - - @override - String get stormMoveToStart => 'Башлар өчен хәрәкәт'; - - @override - String get stormYouPlayTheWhitePiecesInAllPuzzles => 'Барлык башваткычларда аклар сөякләрне уйныйсыз'; - - @override - String get stormYouPlayTheBlackPiecesInAllPuzzles => 'Барлык башваткычларда каралар кисәкләрне уйныйсыз'; - - @override - String get stormPuzzlesSolved => 'табышмаклар чишелде'; - - @override - String get stormNewDailyHighscore => 'Яңа көндәлек югары күрсәткеч!'; - - @override - String get stormNewWeeklyHighscore => 'Яңа атналык югары күрсәткеч!'; - - @override - String get stormNewMonthlyHighscore => 'Яңа айлык югары күрсәткеч!'; - - @override - String get stormNewAllTimeHighscore => 'Яңа гел югары күрсәткеч!'; - - @override - String stormPreviousHighscoreWasX(String param) { - return 'Элеккеге югары күрсәткеч $param иде'; - } - - @override - String get stormPlayAgain => 'Яңадан уйнау'; - - @override - String stormHighscoreX(String param) { - return 'Югары күрсәткеч: $param'; - } - - @override - String get stormScore => 'Күрсәткеч'; - - @override - String get stormMoves => 'Хәрәкәт'; - - @override - String get stormAccuracy => 'Төгәллек'; - - @override - String get stormCombo => 'Комбо'; - - @override - String get stormTime => 'Вакыт'; - - @override - String get stormTimePerMove => 'Бер хәрәкәт вакыты'; - - @override - String get stormHighestSolved => 'Иң югары чишелгән'; - - @override - String get stormPuzzlesPlayed => 'Башваткыч уйналды'; - - @override - String get stormNewRun => 'Яңа йөгерү (уңайлытөймә: Space)'; - - @override - String get stormEndRun => 'Ахыр йөгерү (уңайлытөймә: Enter)'; - - @override - String get stormHighscores => 'Югары күрсәткеч'; - - @override - String get stormViewBestRuns => 'Иң яхшы йөгерүне карау'; - - @override - String get stormBestRunOfDay => 'Көннең иң яхшы йөгереше'; - - @override - String get stormRuns => 'Үтәргә'; - - @override - String get stormGetReady => 'Әзер бул!'; - - @override - String get stormWaitingForMorePlayers => 'Күбрәк уенчыларның кушылуын көтеп...'; - - @override - String get stormRaceComplete => 'Ярыш тәмам!'; - - @override - String get stormSpectating => 'Тамаша'; - - @override - String get stormJoinTheRace => 'Ярышка кушылыгыз!'; - - @override - String get stormStartTheRace => 'Start the race'; - - @override - String stormYourRankX(String param) { - return 'Сезнең ранк: $param'; - } - - @override - String get stormWaitForRematch => 'Кайтаргыч уенны көтегез'; - - @override - String get stormNextRace => 'Киләсе Ярыш'; - - @override - String get stormJoinRematch => 'Кайтаргыч уенга кушылыгыз'; - - @override - String get stormWaitingToStart => 'Башлауны көтә'; - - @override - String get stormCreateNewGame => 'Яңа уен ясагыз'; - - @override - String get stormJoinPublicRace => 'Иҗтимагый ярышка кушылыгыз'; - - @override - String get stormRaceYourFriends => 'Сезнең дусларың белән ярыш'; - - @override - String get stormSkip => 'отыш'; - - @override - String get stormSkipHelp => 'Сез бер ярышка бер хәрәкәтне калдыра аласыз:'; - - @override - String get stormSkipExplanation => 'Комбаны саклап калу өчен бу хәрәкәтне ташлагыз! Ярышка бер тапкыр гына эшли.'; - - @override - String get stormFailedPuzzles => 'Failed puzzles'; - - @override - String get stormSlowPuzzles => 'Slow puzzles'; - - @override - String get stormSkippedPuzzle => 'Skipped puzzle'; - - @override - String get stormThisWeek => 'Бу атна'; - - @override - String get stormThisMonth => 'This month'; - - @override - String get stormAllTime => 'All-time'; - - @override - String get stormClickToReload => 'Click to reload'; - - @override - String get stormThisRunHasExpired => 'This run has expired!'; - - @override - String get stormThisRunWasOpenedInAnotherTab => 'This run was opened in another tab!'; - - @override - String stormXRuns(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count йөгерә', - ); - return '$_temp0'; - } - - @override - String stormPlayedNbRunsOfPuzzleStorm(int count, String param2) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count уйнаган $param2 йөгерә', - ); - return '$_temp0'; - } - - @override - String get streamerLichessStreamers => 'Личесс агымнары'; - - @override - String get studyShareAndExport => 'Юшәрик & яшдүр'; - - @override - String get studyStart => 'Башла'; -} diff --git a/lib/l10n/l10n_uk.dart b/lib/l10n/l10n_uk.dart index ac561a4f73..fb35d69ab9 100644 --- a/lib/l10n/l10n_uk.dart +++ b/lib/l10n/l10n_uk.dart @@ -9,120 +9,140 @@ class AppLocalizationsUk extends AppLocalizations { AppLocalizationsUk([String locale = 'uk']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Головна'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Задачі'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Інструм.'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Дивитися'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Налашт.'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Ви повинні ввійти, аби переглянути цю сторінку.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Системні кольори'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Відгук'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => 'Гаразд'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Вібрація при ході'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Повноекранний режим'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Приховати інтерфейс системи під час гри. Використовуйте, якщо вас турбують навігаційні жести системи по краях екрану. Застосовується до екранів гри та задач.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Ви ні на кого не підписані.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Усі ігри'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Недавні пошуки'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Очистити'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'Гравці з «$param»'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Немає результатів '; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Ви впевнені?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Ви втратите поточну серію, і ваш рахунок буде збережено.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Нічого показати. Зіграйте в гру Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Поділитися задачею'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Поділитися посиланням на гру'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Поділитися PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Поділитися FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Показати варіанти'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Сховати варіанти'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Показати коментарі'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Ви хочете закінчити цю серію?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Нічого не знайдено, будь ласка, змініть фільтри'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Скасувати пропозицію повернення ходу'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Скасувати пропозицію нічиєї'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Очікування на суперника...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Наосліп'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Стримери в прямому етері'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Приєднатися до гри'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Очистити збережений хід'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Щось пішло не так.'; + + @override + String get mobileShowResult => 'Показати результат'; + + @override + String get mobilePuzzleThemesSubtitle => 'Розв\'язуйте задачі з улюбленими дебютами або обирайте тему.'; + + @override + String get mobilePuzzleStormSubtitle => 'Розв\'яжіть якомога більше задач за 3 хвилини.'; + + @override + String mobileGreeting(String param) { + return 'Привіт, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Привіт'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Активність'; @@ -1901,6 +1921,9 @@ class AppLocalizationsUk extends AppLocalizations { @override String get friends => 'Друзі'; + @override + String get otherPlayers => 'інші гравці'; + @override String get discussions => 'Обговорення'; @@ -2732,6 +2755,12 @@ class AppLocalizationsUk extends AppLocalizations { @override String get yes => 'Так'; + @override + String get website => 'Вебсайт'; + + @override + String get mobile => 'Застосунок'; + @override String get help => 'Допомога:'; @@ -3424,7 +3453,7 @@ class AppLocalizationsUk extends AppLocalizations { String get correspondenceChess => 'Заочні'; @override - String get onlineAndOfflinePlay => 'Гра онлайн та оффлайн'; + String get onlineAndOfflinePlay => 'Гра онлайн та офлайн'; @override String get viewTheSolution => 'Дивитись рішення'; diff --git a/lib/l10n/l10n_vi.dart b/lib/l10n/l10n_vi.dart index d5dca8eb1b..700900240c 100644 --- a/lib/l10n/l10n_vi.dart +++ b/lib/l10n/l10n_vi.dart @@ -9,120 +9,140 @@ class AppLocalizationsVi extends AppLocalizations { AppLocalizationsVi([String locale = 'vi']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => 'Trang chủ'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => 'Câu đố'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => 'Công cụ'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => 'Xem'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => 'Cài đặt'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => 'Bạn phải đăng nhập để xem trang này.'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => 'Màu hệ thống'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => 'Phản hồi'; @override String get mobileOkButton => 'OK'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => 'Rung phản hồi'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => 'Chế độ toàn màn hình'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => 'Ẩn UI hệ thống trong khi chơi. Sử dụng điều này nếu bạn bị làm phiền bởi các cử chỉ điều hướng của hệ thống ở các cạnh của màn hình. Áp dụng cho màn hình ván đấu và Puzzle Strom.'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => 'Bạn chưa theo dõi người dùng nào.'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => 'Tất cả ván đấu'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => 'Tìm kiếm gần đây'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => 'Xóa'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return 'chơi với \"$param\"'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => 'Không có kết quả'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => 'Bạn chắc chứ?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => 'Bạn sẽ mất chuỗi hiện tại và điểm của bạn sẽ được lưu.'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => 'Không có gì để xem. Chơi một vài ván Puzzle Storm.'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => 'Chia sẻ câu đố này'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => 'Chia sẻ URL ván cờ'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => 'Chia sẻ tập tin PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => 'Chia sẻ thế cờ dạng FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => 'Hiện các biến'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => 'Ẩn các biến'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => 'Hiển thị bình luận'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => 'Bạn có muốn kết thúc lượt chạy này không?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => 'Không có gì để hiển thị, vui lòng thay đổi bộ lọc'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => 'Hủy đề nghị đi lại'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => 'Hủy đề nghị hòa'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => 'Đang chờ đối thủ tham gia...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => 'Bịt mắt'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => 'Các Streamer phát trực tiếp'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => 'Tham gia một ván cờ'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => 'Xóa nước cờ đã lưu'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => 'Đã xảy ra lỗi.'; + + @override + String get mobileShowResult => 'Xem kết quả'; + + @override + String get mobilePuzzleThemesSubtitle => 'Giải câu đố từ những khai cuộc yêu thích của bạn hoặc chọn một chủ đề.'; + + @override + String get mobilePuzzleStormSubtitle => 'Solve as many puzzles as possible in 3 minutes.'; + + @override + String mobileGreeting(String param) { + return 'Hello, $param'; + } + + @override + String get mobileGreetingWithoutName => 'Hello'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => 'Hoạt động'; @@ -283,7 +303,7 @@ class AppLocalizationsVi extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'Được hạng #$count (lọt top $param2%) với $param3 ván trong giải $param4', + other: 'Được hạng #$count (tốp $param2%) với $param3 ván trong giải $param4', ); return '$_temp0'; } @@ -762,10 +782,10 @@ class AppLocalizationsVi extends AppLocalizations { String get puzzleYourPuzzleRatingWillNotChange => 'Hệ số giải câu đố của bạn sẽ không thay đổi. Lưu ý rằng giải câu đố không phải một cuộc thi. Hệ số của bạn nhằm giúp chọn những câu đố phù hợp nhất với trình độ của bạn.'; @override - String get puzzleFindTheBestMoveForWhite => 'Tìm nước tối ưu cho Trắng.'; + String get puzzleFindTheBestMoveForWhite => 'Tìm nước tối ưu cho bên trắng.'; @override - String get puzzleFindTheBestMoveForBlack => 'Tìm nước tối ưu cho Đen.'; + String get puzzleFindTheBestMoveForBlack => 'Tìm nước tối ưu cho bên đen.'; @override String get puzzleToGetPersonalizedPuzzles => 'Để có được các thế cờ dành riêng cho bạn:'; @@ -1460,10 +1480,10 @@ class AppLocalizationsVi extends AppLocalizations { String get createAGame => 'Tạo một ván cờ'; @override - String get whiteIsVictorious => 'Bên Trắng thắng'; + String get whiteIsVictorious => 'Bên trắng thắng'; @override - String get blackIsVictorious => 'Bên Đen thắng'; + String get blackIsVictorious => 'Bên đen thắng'; @override String get youPlayTheWhitePieces => 'Bạn chơi quân trắng'; @@ -1499,10 +1519,10 @@ class AppLocalizationsVi extends AppLocalizations { String get joinTheGame => 'Tham gia ván cờ'; @override - String get whitePlays => 'Lượt Trắng đi'; + String get whitePlays => 'Lượt trắng đi'; @override - String get blackPlays => 'Lượt Đen đi'; + String get blackPlays => 'Lượt đen đi'; @override String get opponentLeftChoices => 'Đối thủ của bạn đã rời khỏi ván cờ. Bạn có thể tuyên bố chiến thắng, chọn hòa hoặc đợi.'; @@ -1520,16 +1540,16 @@ class AppLocalizationsVi extends AppLocalizations { String get theFirstPersonToComeOnThisUrlWillPlayWithYou => 'Người đầu tiên sử dụng URL này sẽ bắt đầu chơi với bạn.'; @override - String get whiteResigned => 'Trắng chịu thua'; + String get whiteResigned => 'Bên trắng chịu thua'; @override String get blackResigned => 'Đen chịu thua'; @override - String get whiteLeftTheGame => 'Trắng đã rời khỏi ván cờ'; + String get whiteLeftTheGame => 'Bên trắng đã rời khỏi ván cờ'; @override - String get blackLeftTheGame => 'Đen đã rời khỏi ván cờ'; + String get blackLeftTheGame => 'Bên đen đã rời khỏi ván cờ'; @override String get whiteDidntMove => 'Bên trắng không đi quân'; @@ -1642,7 +1662,7 @@ class AppLocalizationsVi extends AppLocalizations { String get database => 'Cơ sở dữ liệu'; @override - String get whiteDrawBlack => 'Trắng / Hòa / Đen'; + String get whiteDrawBlack => 'Trắng thắng / Hòa / Đen thắng'; @override String averageRatingX(String param) { @@ -1835,6 +1855,9 @@ class AppLocalizationsVi extends AppLocalizations { @override String get friends => 'Bạn bè'; + @override + String get otherPlayers => 'các kỳ thủ khác'; + @override String get discussions => 'Trò chuyện'; @@ -2022,10 +2045,10 @@ class AppLocalizationsVi extends AppLocalizations { String get cancel => 'Hủy'; @override - String get whiteTimeOut => 'Trắng hết giờ'; + String get whiteTimeOut => 'Bên trắng hết giờ'; @override - String get blackTimeOut => 'Đen hết giờ'; + String get blackTimeOut => 'Bên đen hết giờ'; @override String get drawOfferSent => 'Đã gửi đề nghị hòa'; @@ -2037,16 +2060,16 @@ class AppLocalizationsVi extends AppLocalizations { String get drawOfferCanceled => 'Đã hủy bỏ đề nghị hoà'; @override - String get whiteOffersDraw => 'Trắng đề nghị hòa'; + String get whiteOffersDraw => 'Bên trắng đề nghị hòa'; @override - String get blackOffersDraw => 'Đen đề nghị hòa'; + String get blackOffersDraw => 'Bên đen đề nghị hòa'; @override - String get whiteDeclinesDraw => 'Trắng từ chối hòa'; + String get whiteDeclinesDraw => 'Bên trắng từ chối hòa'; @override - String get blackDeclinesDraw => 'Đen từ chối hòa'; + String get blackDeclinesDraw => 'Bên đen từ chối hòa'; @override String get yourOpponentOffersADraw => 'Đối thủ xin hoà'; @@ -2347,10 +2370,10 @@ class AppLocalizationsVi extends AppLocalizations { String get notACheckmate => 'Không phải là một nước chiếu hết'; @override - String get whiteCheckmatesInOneMove => 'Trắng chiếu hết trong một nước đi'; + String get whiteCheckmatesInOneMove => 'Bên trắng hãy chiếu hết trong một nước đi'; @override - String get blackCheckmatesInOneMove => 'Đen chiếu hết trong một nước đi'; + String get blackCheckmatesInOneMove => 'Bên đen hãy chiếu hết trong một nước đi'; @override String get retry => 'Thử lại'; @@ -2666,6 +2689,12 @@ class AppLocalizationsVi extends AppLocalizations { @override String get yes => 'Có'; + @override + String get website => 'Trang mạng'; + + @override + String get mobile => 'Điện thoại di động'; + @override String get help => 'Hỗ trợ:'; @@ -3095,7 +3124,7 @@ class AppLocalizationsVi extends AppLocalizations { String get simulAddExtraTimePerPlayer => 'Thêm thời gian ban đầu vào đồng hồ của bạn cho mỗi người chơi tham gia sự kiện đồng loạt.'; @override - String get simulHostExtraTimePerPlayer => 'Thời gian thêm cho mỗi người tham gia'; + String get simulHostExtraTimePerPlayer => 'Thời gian thêm cho người chủ trì theo số người tham gia'; @override String get lichessTournaments => 'Các giải đấu của Lichess'; @@ -3553,7 +3582,7 @@ class AppLocalizationsVi extends AppLocalizations { } @override - String get findBetterMoveForWhite => 'Tìm nước đi tốt hơn cho trắng'; + String get findBetterMoveForWhite => 'Tìm nước đi tốt hơn cho bên trắng'; @override String get findBetterMoveForBlack => 'Tìm nước đi tốt hơn cho đen'; @@ -3565,10 +3594,10 @@ class AppLocalizationsVi extends AppLocalizations { String get youCanDoBetter => 'Bạn có thể làm tốt hơn'; @override - String get tryAnotherMoveForWhite => 'Tìm nước đi khác cho trắng'; + String get tryAnotherMoveForWhite => 'Tìm nước đi khác cho bên trắng'; @override - String get tryAnotherMoveForBlack => 'Tìm nước đi khác cho đen'; + String get tryAnotherMoveForBlack => 'Tìm nước đi khác cho bên đen'; @override String get solution => 'Đáp án'; @@ -3592,10 +3621,10 @@ class AppLocalizationsVi extends AppLocalizations { String get doItAgain => 'Thử lại một lần nữa'; @override - String get reviewWhiteMistakes => 'Đánh giá lỗi bên trắng'; + String get reviewWhiteMistakes => 'Xem lại sai lầm của bên trắng'; @override - String get reviewBlackMistakes => 'Đánh giá lỗi bên đen'; + String get reviewBlackMistakes => 'Xem lại sai lầm của bên đen'; @override String get advantage => 'Lợi thế'; diff --git a/lib/l10n/l10n_zh.dart b/lib/l10n/l10n_zh.dart index c8239a9c84..75b678ce81 100644 --- a/lib/l10n/l10n_zh.dart +++ b/lib/l10n/l10n_zh.dart @@ -9,120 +9,140 @@ class AppLocalizationsZh extends AppLocalizations { AppLocalizationsZh([String locale = 'zh']) : super(locale); @override - String get mobileHomeTab => 'Home'; + String get mobileHomeTab => '主页'; @override - String get mobilePuzzlesTab => 'Puzzles'; + String get mobilePuzzlesTab => '谜题'; @override - String get mobileToolsTab => 'Tools'; + String get mobileToolsTab => '工具'; @override - String get mobileWatchTab => 'Watch'; + String get mobileWatchTab => '观看'; @override - String get mobileSettingsTab => 'Settings'; + String get mobileSettingsTab => '设置'; @override - String get mobileMustBeLoggedIn => 'You must be logged in to view this page.'; + String get mobileMustBeLoggedIn => '您必须登录才能浏览此页面。'; @override - String get mobileSystemColors => 'System colors'; + String get mobileSystemColors => '系统颜色'; @override - String get mobileFeedbackButton => 'Feedback'; + String get mobileFeedbackButton => '问题反馈'; @override - String get mobileOkButton => 'OK'; + String get mobileOkButton => '好'; @override - String get mobileSettingsHapticFeedback => 'Haptic feedback'; + String get mobileSettingsHapticFeedback => '震动反馈'; @override - String get mobileSettingsImmersiveMode => 'Immersive mode'; + String get mobileSettingsImmersiveMode => '沉浸模式'; @override - String get mobileSettingsImmersiveModeSubtitle => 'Hide system UI while playing. Use this if you are bothered by the system\'s navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.'; + String get mobileSettingsImmersiveModeSubtitle => '播放时隐藏系统UI。 如果您对屏幕边缘的系统导航手势感到困扰,请使用此功能。 适用于游戏和益智风暴屏幕。'; @override - String get mobileNotFollowingAnyUser => 'You are not following any user.'; + String get mobileNotFollowingAnyUser => '你没有关注任何用户。'; @override - String get mobileAllGames => 'All games'; + String get mobileAllGames => '所有对局'; @override - String get mobileRecentSearches => 'Recent searches'; + String get mobileRecentSearches => '最近搜索'; @override - String get mobileClearButton => 'Clear'; + String get mobileClearButton => '清空'; @override String mobilePlayersMatchingSearchTerm(String param) { - return 'Players with \"$param\"'; + return '拥有\"$param\"的玩家'; } @override - String get mobileNoSearchResults => 'No results'; + String get mobileNoSearchResults => '无结果'; @override - String get mobileAreYouSure => 'Are you sure?'; + String get mobileAreYouSure => '你确定吗?'; @override - String get mobilePuzzleStreakAbortWarning => 'You will lose your current streak and your score will be saved.'; + String get mobilePuzzleStreakAbortWarning => '你将失去你目前的连胜,你的分数将被保存。'; @override - String get mobilePuzzleStormNothingToShow => 'Nothing to show. Play some runs of storm'; + String get mobilePuzzleStormNothingToShow => '没什么好表现的。 玩拼图风暴的一些运行。'; @override - String get mobileSharePuzzle => 'Share this puzzle'; + String get mobileSharePuzzle => '分享这个谜题'; @override - String get mobileShareGameURL => 'Share game URL'; + String get mobileShareGameURL => '分享棋局链接'; @override - String get mobileShareGamePGN => 'Share PGN'; + String get mobileShareGamePGN => '分享 PGN'; @override - String get mobileSharePositionAsFEN => 'Share position as FEN'; + String get mobileSharePositionAsFEN => '保存局面为 FEN'; @override - String get mobileShowVariations => 'Show variations'; + String get mobileShowVariations => '显示变化'; @override - String get mobileHideVariation => 'Hide variation'; + String get mobileHideVariation => '隐藏变异'; @override - String get mobileShowComments => 'Show comments'; + String get mobileShowComments => '显示评论'; @override - String get mobilePuzzleStormConfirmEndRun => 'Do you want to end this run?'; + String get mobilePuzzleStormConfirmEndRun => '你想结束这次跑步吗?'; @override - String get mobilePuzzleStormFilterNothingToShow => 'Nothing to show, please change the filters'; + String get mobilePuzzleStormFilterNothingToShow => '没有显示,请更改过滤器'; @override - String get mobileCancelTakebackOffer => 'Cancel takeback offer'; + String get mobileCancelTakebackOffer => '取消悔棋请求'; @override - String get mobileCancelDrawOffer => 'Cancel draw offer'; + String get mobileCancelDrawOffer => '取消和棋请求'; @override - String get mobileWaitingForOpponentToJoin => 'Waiting for opponent to join...'; + String get mobileWaitingForOpponentToJoin => '正在等待对手加入...'; @override - String get mobileBlindfoldMode => 'Blindfold'; + String get mobileBlindfoldMode => '盲棋'; @override - String get mobileLiveStreamers => 'Live streamers'; + String get mobileLiveStreamers => '主播'; @override - String get mobileCustomGameJoinAGame => 'Join a game'; + String get mobileCustomGameJoinAGame => '加入一局游戏'; @override - String get mobileCorrespondenceClearSavedMove => 'Clear saved move'; + String get mobileCorrespondenceClearSavedMove => '清除已保存的移动'; @override - String get mobileSomethingWentWrong => 'Something went wrong.'; + String get mobileSomethingWentWrong => '发生一些错误。'; + + @override + String get mobileShowResult => '显示结果'; + + @override + String get mobilePuzzleThemesSubtitle => '从你最喜欢的开口玩拼图,或选择一个主题。'; + + @override + String get mobilePuzzleStormSubtitle => '在3分钟内尽可能多地解决谜题'; + + @override + String mobileGreeting(String param) { + return '你好,$param'; + } + + @override + String get mobileGreetingWithoutName => '你好!'; + + @override + String get mobilePrefMagnifyDraggedPiece => 'Magnify dragged piece'; @override String get activityActivity => '动态'; @@ -1835,6 +1855,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get friends => '棋友'; + @override + String get otherPlayers => '其他玩家'; + @override String get discussions => '讨论组'; @@ -2666,6 +2689,12 @@ class AppLocalizationsZh extends AppLocalizations { @override String get yes => '是'; + @override + String get website => '网站'; + + @override + String get mobile => '流动电话'; + @override String get help => '帮助:'; @@ -2824,7 +2853,7 @@ class AppLocalizationsZh extends AppLocalizations { String get outsideTheBoard => '棋盘外'; @override - String get allSquaresOfTheBoard => 'All squares of the board'; + String get allSquaresOfTheBoard => '棋盘上的所有格子'; @override String get onSlowGames => '在慢棋时'; @@ -3438,7 +3467,7 @@ class AppLocalizationsZh extends AppLocalizations { String get boardReset => '重置颜色设置'; @override - String get pieceSet => '棋子设定'; + String get pieceSet => '棋子风格'; @override String get embedInYourWebsite => '嵌入到你的网站上'; @@ -4639,6 +4668,60 @@ class AppLocalizationsZh extends AppLocalizations { class AppLocalizationsZhTw extends AppLocalizationsZh { AppLocalizationsZhTw(): super('zh_TW'); + @override + String get mobileHomeTab => '主頁'; + + @override + String get mobilePuzzlesTab => '謎題'; + + @override + String get mobileToolsTab => '工具'; + + @override + String get mobileWatchTab => '觀看'; + + @override + String get mobileSettingsTab => '設置'; + + @override + String get mobileMustBeLoggedIn => '你必須登入才能查看此頁面。'; + + @override + String get mobileSystemColors => '系统颜色'; + + @override + String get mobileFeedbackButton => '問題反饋'; + + @override + String get mobileOkButton => '確認'; + + @override + String get mobileSettingsHapticFeedback => '震動回饋'; + + @override + String get mobileSettingsImmersiveMode => '沉浸模式'; + + @override + String get mobileAllGames => '所有遊戲'; + + @override + String get mobileRecentSearches => '最近搜尋'; + + @override + String get mobileClearButton => '清除'; + + @override + String get mobileNoSearchResults => '無結果'; + + @override + String get mobileAreYouSure => '您確定嗎?'; + + @override + String get mobileShareGamePGN => '分享 PGN'; + + @override + String get mobileCustomGameJoinAGame => '加入遊戲'; + @override String get activityActivity => '活動'; diff --git a/lib/l10n/lila_af.arb b/lib/l10n/lila_af.arb index a95ceedc11..8f6f276407 100644 --- a/lib/l10n/lila_af.arb +++ b/lib/l10n/lila_af.arb @@ -4,6 +4,37 @@ "mobileToolsTab": "Hulpmiddels", "mobileWatchTab": "Hou dop", "mobileSettingsTab": "Instellings", + "mobileMustBeLoggedIn": "Jy moet ingeteken wees om hierdie bladsy te kan sien.", + "mobileSystemColors": "Stelselkleure", + "mobileFeedbackButton": "Terugvoer", + "mobileOkButton": "Reg", + "mobileSettingsHapticFeedback": "Vibrasieterugvoer", + "mobileSettingsImmersiveMode": "Volskermmodus", + "mobileNotFollowingAnyUser": "Jy volg nie enige gebruikers nie.", + "mobileAllGames": "Alle spelle", + "mobileRecentSearches": "Onlangse soektogte", + "mobilePlayersMatchingSearchTerm": "Spelers met \"{param}\"", + "mobileNoSearchResults": "Geen resultate nie", + "mobileAreYouSure": "Is jy seker?", + "mobileSharePuzzle": "Deel hierdie kopkrapper", + "mobileShareGameURL": "Deel spel se bronadres", + "mobileShareGamePGN": "Deel PGN", + "mobileSharePositionAsFEN": "Deel posisie as FEN", + "mobileShowVariations": "Wys variasies", + "mobileHideVariation": "Verberg variasie", + "mobileShowComments": "Wys kommentaar", + "mobilePuzzleStormConfirmEndRun": "Wil jy hierdie lopie beëindig?", + "mobilePuzzleStormFilterNothingToShow": "Niks om te wys nie; verander asb. die filters", + "mobileWaitingForOpponentToJoin": "Wag vir opponent om aan te sluit...", + "mobileBlindfoldMode": "Geblinddoek", + "mobileCustomGameJoinAGame": "Sluit aan by 'n spel", + "mobileCorrespondenceClearSavedMove": "Vee gestoorde skuif uit", + "mobileSomethingWentWrong": "Iets het skeefgeloop.", + "mobileShowResult": "Wys resultaat", + "mobilePuzzleThemesSubtitle": "Doen kopkrappers van jou gunstelingopenings, of kies 'n tema.", + "mobilePuzzleStormSubtitle": "Los soveel kopkrappers moontlik op in 3 minute.", + "mobileGreeting": "Hallo, {param}", + "mobileGreetingWithoutName": "Hallo", "activityActivity": "Aktiwiteite", "activityHostedALiveStream": "Het 'n lewendige uitsending aangebied", "activityRankedInSwissTournament": "Rang van #{param1} uit {param2}", @@ -500,6 +531,7 @@ "latestForumPosts": "Jongste forumplasings", "players": "Spelers", "friends": "Vriende", + "otherPlayers": "ander spelers", "discussions": "Gesprekke", "today": "Vandag", "yesterday": "Gister", @@ -750,6 +782,7 @@ "descPrivateHelp": "Teks wat slegs spanlede sal sien. Indien gestel vervang dit die publieke beskrywing vir spanlede.", "no": "Nee", "yes": "Ja", + "website": "Webtuiste", "help": "Help:", "createANewTopic": "Skep 'n nuwe onderwerp", "topics": "Onderwerpe", diff --git a/lib/l10n/lila_ar.arb b/lib/l10n/lila_ar.arb index c71e072506..1e090d3489 100644 --- a/lib/l10n/lila_ar.arb +++ b/lib/l10n/lila_ar.arb @@ -1,4 +1,42 @@ { + "mobileHomeTab": "الرئيسية", + "mobilePuzzlesTab": "ألغاز", + "mobileToolsTab": "أدوات", + "mobileWatchTab": "شاهد", + "mobileSettingsTab": "الإعدادات", + "mobileMustBeLoggedIn": "لعرض هذه الصفحة، قم بتسجيل الدخول.", + "mobileSystemColors": "ألوان النظام", + "mobileFeedbackButton": "الملاحظات", + "mobileOkButton": "موافق", + "mobileSettingsHapticFeedback": "التعليقات اللمسية", + "mobileSettingsImmersiveMode": "وضع ملء الشاشة", + "mobileSettingsImmersiveModeSubtitle": "إخفاء واجهة المستخدم خلال التشغيل. استخدم هذا إذا كنت مزعجاً من إيماءات التنقل للنظام عند حواف الشاشة. ينطبق على المباريات في اللعبة والألغاز.", + "mobileNotFollowingAnyUser": "أنت لا تتبع أي مستخدم.", + "mobileAllGames": "جميع الألعاب", + "mobileRecentSearches": "عمليات البحث الأخيرة", + "mobileClearButton": "مسح", + "mobilePlayersMatchingSearchTerm": "لاعبين مع \"{param}\"", + "mobileNoSearchResults": "لا توجد نتائج", + "mobileAreYouSure": "هل أنت متأكد؟", + "mobilePuzzleStreakAbortWarning": "سوف تفقد تسلقك الحالي وسيتم حفظ نتيجتك.", + "mobilePuzzleStormNothingToShow": "لا شيء لإظهاره. العب بعض الألغاز.", + "mobileSharePuzzle": "شارك هذا اللغز", + "mobileShareGameURL": "شارك رابط المباراة", + "mobileShareGamePGN": "شارك الPGN", + "mobileSharePositionAsFEN": "مشاركة الموضع كFEN", + "mobileShowVariations": "أظهر سلسلة النقلات المرشحة", + "mobileHideVariation": "إخفاء سلسلة النقلات المرشحة", + "mobileShowComments": "عرض التعليقات", + "mobilePuzzleStormConfirmEndRun": "هل تريد إنهاء هذا التشغيل؟", + "mobilePuzzleStormFilterNothingToShow": "لا شيء لإظهاره، الرجاء تغيير الفلاتر", + "mobileCancelTakebackOffer": "إلغاء عرض الاسترداد", + "mobileCancelDrawOffer": "إلغاء عرض التعادل", + "mobileWaitingForOpponentToJoin": "في انتظار انضمام الطرف الآخر...", + "mobileBlindfoldMode": "عصب العينين", + "mobileLiveStreamers": "البثوث المباشرة", + "mobileCustomGameJoinAGame": "الانضمام إلى لعبة", + "mobileCorrespondenceClearSavedMove": "مسح النقل المحفوظ", + "mobileSomethingWentWrong": "لقد حدث خطأ ما.", "activityActivity": "الأنشطة", "activityHostedALiveStream": "بدأ بث مباشر", "activityRankedInSwissTournament": "حائز على تصنيف #{param1} في {param2}", @@ -498,6 +536,7 @@ "latestForumPosts": "آخر منشورات المنتدى", "players": "اللاعبون", "friends": "الأصدقاء", + "otherPlayers": "لاعبون آخرون", "discussions": "المحادثات", "today": "اليوم", "yesterday": "الأمس", @@ -728,6 +767,7 @@ "ifNoneLeaveEmpty": "إذا لم يوجد، أتركه فارغًا", "profile": "الملف الشخصي", "editProfile": "حرر الملف الشخصي", + "realName": "الاسم الحقيقي", "setFlair": "اختيار الشارة", "flair": "الشارة", "youCanHideFlair": "يستخدم هذا الإعداد لإخفاء جميع شارات المستخدمين في الموقع.", @@ -754,6 +794,8 @@ "descPrivateHelp": "هذا النص سيراه فقط أعضاء الفريق. في حالة ضبطه، سيحل محل الوصف العام لأعضاء الفريق.", "no": "لا", "yes": "نعم", + "website": "الموقع", + "mobile": "الهاتف المحمول", "help": "مساعدة:", "createANewTopic": "إنشاء موضوع جديد", "topics": "المواضيع", @@ -805,6 +847,7 @@ "slow": "بطيء", "insideTheBoard": "داخل الرقعة", "outsideTheBoard": "خارج الرقعة", + "allSquaresOfTheBoard": "جميع مربعات اللوح", "onSlowGames": "في المباريات البطيئة", "always": "دائماً", "never": "إطلاقا", diff --git a/lib/l10n/lila_bg.arb b/lib/l10n/lila_bg.arb index d1803fa5f4..18d2310883 100644 --- a/lib/l10n/lila_bg.arb +++ b/lib/l10n/lila_bg.arb @@ -1,9 +1,28 @@ { "mobileHomeTab": "Начало", "mobilePuzzlesTab": "Задачи", - "mobileToolsTab": "Инструменти", + "mobileToolsTab": "Анализ", "mobileWatchTab": "Гледай", "mobileSettingsTab": "Настройки", + "mobileMustBeLoggedIn": "За да видите тази страница, трябва да влезете в профила си.", + "mobileSystemColors": "Системни цветове", + "mobileFeedbackButton": "Отзиви", + "mobileOkButton": "ОК", + "mobileSettingsHapticFeedback": "Вибрация при докосване", + "mobileSettingsImmersiveMode": "Режим \"Цял екран\"", + "mobileAllGames": "Всички игри", + "mobileRecentSearches": "Последни търсения", + "mobileClearButton": "Изчисти", + "mobileNoSearchResults": "Няма резултати", + "mobileAreYouSure": "Сигурни ли сте?", + "mobileSharePuzzle": "Сподели тази задача", + "mobileShareGameURL": "Сподели URL на играта", + "mobileShareGamePGN": "Сподели PGN", + "mobileSharePositionAsFEN": "Сподели позицията във формат FEN", + "mobileShowVariations": "Покажи вариациите", + "mobileHideVariation": "Скрий вариацията", + "mobileShowComments": "Покажи коментарите", + "mobileSomethingWentWrong": "Възникна грешка.", "activityActivity": "Дейност", "activityHostedALiveStream": "Стартира предаване на живо", "activityRankedInSwissTournament": "Рейтинг #{param1} от {param2}", @@ -503,6 +522,7 @@ "latestForumPosts": "Последни съобщения във форума", "players": "Играчи", "friends": "Приятели", + "otherPlayers": "други играчи", "discussions": "Разговори", "today": "Днес", "yesterday": "Вчера", @@ -755,6 +775,8 @@ "descPrivateHelp": "Описание, което ще бъде видимо само от членовете на отбора. Ако е дадено, то ще замени публичното описание което членовете на отбора виждат.", "no": "Не", "yes": "Да", + "website": "Уебсайт", + "mobile": "Мобилен", "help": "Помощ:", "createANewTopic": "Създаване на нова тема", "topics": "Теми", diff --git a/lib/l10n/lila_ca.arb b/lib/l10n/lila_ca.arb index b0e855d23b..214dc06cbd 100644 --- a/lib/l10n/lila_ca.arb +++ b/lib/l10n/lila_ca.arb @@ -4,6 +4,43 @@ "mobileToolsTab": "Eines", "mobileWatchTab": "Visualitza", "mobileSettingsTab": "Configuració", + "mobileMustBeLoggedIn": "Has d'estar connectat per veure aquesta pàgina.", + "mobileSystemColors": "Colors del sistema", + "mobileFeedbackButton": "Suggeriments", + "mobileOkButton": "D'acord", + "mobileSettingsHapticFeedback": "Resposta hàptica", + "mobileSettingsImmersiveMode": "Mode immersiu", + "mobileNotFollowingAnyUser": "No estàs seguint a cap usuari.", + "mobileAllGames": "Totes les partides", + "mobileRecentSearches": "Cerques recents", + "mobileClearButton": "Neteja", + "mobilePlayersMatchingSearchTerm": "Jugadors amb \"{param}\"", + "mobileNoSearchResults": "Sense resultats", + "mobileAreYouSure": "Estàs segur?", + "mobilePuzzleStreakAbortWarning": "Perdreu la vostra ratxa i la vostra puntuació es guardarà.", + "mobilePuzzleStormNothingToShow": "Res a mostrar. Fes algunes rondes al Puzzle Storm.", + "mobileSharePuzzle": "Comparteix aquest problema", + "mobileShareGameURL": "Comparteix l'enllaç a la partida", + "mobileShareGamePGN": "Comparteix PGN", + "mobileSharePositionAsFEN": "Comparteix la posició com a FEN", + "mobileShowVariations": "Mostra les variacions", + "mobileHideVariation": "Amaga les variacions", + "mobileShowComments": "Mostra comentaris", + "mobilePuzzleStormConfirmEndRun": "Voleu acabar aquesta ronda?", + "mobilePuzzleStormFilterNothingToShow": "Res a mostrar, si us plau canvieu els filtres", + "mobileCancelTakebackOffer": "Anul·la la petició per desfer la jugada", + "mobileCancelDrawOffer": "Anul·la la petició de taules", + "mobileWaitingForOpponentToJoin": "Esperant que s'uneixi l'adversari...", + "mobileBlindfoldMode": "A la cega", + "mobileLiveStreamers": "Retransmissors en directe", + "mobileCustomGameJoinAGame": "Unir-se a una partida", + "mobileCorrespondenceClearSavedMove": "Elimina la jugada guardada", + "mobileSomethingWentWrong": "Alguna cosa ha anat malament.", + "mobileShowResult": "Mostra el resultat", + "mobilePuzzleThemesSubtitle": "Resoleu problemes de les vostres obertures preferides o seleccioneu una temàtica.", + "mobilePuzzleStormSubtitle": "Resoleu el màxim nombre de problemes en 3 minuts.", + "mobileGreeting": "Hola, {param}", + "mobileGreetingWithoutName": "Hola", "activityActivity": "Activitat", "activityHostedALiveStream": "Has fet una retransmissió en directe", "activityRankedInSwissTournament": "Classificat #{param1} en {param2}", @@ -503,6 +540,7 @@ "latestForumPosts": "Últimes publicacions al fòrum", "players": "Jugadors", "friends": "Amics", + "otherPlayers": "altres jugadors", "discussions": "Missatges", "today": "Avui", "yesterday": "Ahir", @@ -760,6 +798,8 @@ "descPrivateHelp": "Text que només veuran els membres de l'equip. Si conté text, substituïrà la descripció pública pels membres de l'equip.", "no": "No", "yes": "Sí", + "website": "Lloc web", + "mobile": "Mòbil", "help": "Ajuda:", "createANewTopic": "Crea un nou tema", "topics": "Temes", diff --git a/lib/l10n/lila_cs.arb b/lib/l10n/lila_cs.arb index 3b69228917..7add3d2f1f 100644 --- a/lib/l10n/lila_cs.arb +++ b/lib/l10n/lila_cs.arb @@ -93,7 +93,7 @@ "preferencesPgnLetter": "Anglickými písmeny (K, Q, R, B, N)", "preferencesZenMode": "Zen mód", "preferencesShowPlayerRatings": "Zobrazit hodnocení hráčů", - "preferencesShowFlairs": "Zobrazit hráčův rating", + "preferencesShowFlairs": "Zobrazovat ikony hráčů", "preferencesExplainShowPlayerRatings": "Toto umožňuje skrýt rating z webových stránek, což pomůže soustředit se pouze na šachy. Hodnocené hry budou mít stále dopad na Váš rating.", "preferencesDisplayBoardResizeHandle": "Zobrazit tlačítko pro změnu velikosti šachovnice", "preferencesOnlyOnInitialPosition": "Jen v základním postavení", diff --git a/lib/l10n/lila_da.arb b/lib/l10n/lila_da.arb index 7076fce8ec..95a9dd0689 100644 --- a/lib/l10n/lila_da.arb +++ b/lib/l10n/lila_da.arb @@ -4,6 +4,44 @@ "mobileToolsTab": "Værktøjer", "mobileWatchTab": "Se", "mobileSettingsTab": "Indstillinger", + "mobileMustBeLoggedIn": "Du skal være logget ind for at se denne side.", + "mobileSystemColors": "Systemfarver", + "mobileFeedbackButton": "Feedback", + "mobileOkButton": "Ok", + "mobileSettingsHapticFeedback": "Haptisk feedback", + "mobileSettingsImmersiveMode": "Fordybelsestilstand", + "mobileSettingsImmersiveModeSubtitle": "Skjul systemets brugergrænseflade, mens du spiller. Brug denne funktion, hvis du er generet af systemets navigationsbevægelser i kanterne af skærmen. Gælder for parti- og Puzzle Storm-skærme.", + "mobileNotFollowingAnyUser": "Du følger ikke nogen brugere.", + "mobileAllGames": "Alle partier", + "mobileRecentSearches": "Seneste søgninger", + "mobileClearButton": "Ryd", + "mobilePlayersMatchingSearchTerm": "Spillere med \"{param}\"", + "mobileNoSearchResults": "Ingen resultater", + "mobileAreYouSure": "Er du sikker?", + "mobilePuzzleStreakAbortWarning": "Du vil miste din nuværende stime og din score vil blive gemt.", + "mobilePuzzleStormNothingToShow": "Intet at vise. Spil nogle runder af Puzzle Storm.", + "mobileSharePuzzle": "Del denne opgave", + "mobileShareGameURL": "Del partiets URL", + "mobileShareGamePGN": "Del PGN", + "mobileSharePositionAsFEN": "Del position som FEN", + "mobileShowVariations": "Vis variationer", + "mobileHideVariation": "Skjul variation", + "mobileShowComments": "Vis kommentarer", + "mobilePuzzleStormConfirmEndRun": "Vil du afslutte dette løb?", + "mobilePuzzleStormFilterNothingToShow": "Intet at vise, ændr venligst filtre", + "mobileCancelTakebackOffer": "Annuller tilbud om tilbagetagelse", + "mobileCancelDrawOffer": "Træk tilbud om remis tilbage", + "mobileWaitingForOpponentToJoin": "Venter på at modstander slutter sig til...", + "mobileBlindfoldMode": "Bind for øjnene", + "mobileLiveStreamers": "Live-streamere", + "mobileCustomGameJoinAGame": "Deltag i et parti", + "mobileCorrespondenceClearSavedMove": "Ryd gemt træk", + "mobileSomethingWentWrong": "Noget gik galt.", + "mobileShowResult": "Vis resultat", + "mobilePuzzleThemesSubtitle": "Spil opgaver fra dine foretrukne åbninger, eller vælg et tema.", + "mobilePuzzleStormSubtitle": "Løs så mange opgaver som muligt på 3 minutter.", + "mobileGreeting": "Hej, {param}", + "mobileGreetingWithoutName": "Hej", "activityActivity": "Aktivitet", "activityHostedALiveStream": "Hostede en livestream", "activityRankedInSwissTournament": "Rangeret #{param1} i {param2}", @@ -108,7 +146,7 @@ "preferencesWhenTimeRemainingLessThanTenSeconds": "Når resterende tid < 10 sekunder", "preferencesHorizontalGreenProgressBars": "Horisontale grønne statuslinjer", "preferencesSoundWhenTimeGetsCritical": "Lyd, når tiden bliver kritisk", - "preferencesGiveMoreTime": "Give mere tid", + "preferencesGiveMoreTime": "Giv mere tid", "preferencesGameBehavior": "Spiladfærd", "preferencesHowDoYouMovePieces": "Hvordan flytter du brikker?", "preferencesClickTwoSquares": "Klik på to felter", @@ -117,7 +155,7 @@ "preferencesPremovesPlayingDuringOpponentTurn": "Forhåndstræk (spilles på modstanderens tur)", "preferencesTakebacksWithOpponentApproval": "Fortrydelse af træk (med modstanderens accept)", "preferencesInCasualGamesOnly": "Kun i ikke-ratede spil", - "preferencesPromoteToQueenAutomatically": "Forfrem til Dronning automatisk", + "preferencesPromoteToQueenAutomatically": "Forfrem til dronning automatisk", "preferencesExplainPromoteToQueenAutomatically": "Hold -tasten nede, mens du forfremmer for midlertidigt at deaktivere auto-forfremmelse", "preferencesWhenPremoving": "Ved forhåndstræk", "preferencesClaimDrawOnThreefoldRepetitionAutomatically": "Kræv automatisk remis ved trækgentagelse", @@ -503,6 +541,7 @@ "latestForumPosts": "Seneste debatindlæg", "players": "Spillere", "friends": "Venner", + "otherPlayers": "andre spillere", "discussions": "Samtaler", "today": "I dag", "yesterday": "I går", @@ -760,6 +799,8 @@ "descPrivateHelp": "Tekst som kun holddeltagere vil se. Hvis den er udfyldt, erstatter den for holddeltagere den offentlige beskrivelse.", "no": "Nej", "yes": "Ja", + "website": "Websted", + "mobile": "Mobil", "help": "Hjælp:", "createANewTopic": "Opret et nyt emne", "topics": "Emner", diff --git a/lib/l10n/lila_de.arb b/lib/l10n/lila_de.arb index a9d8e2f751..81b1798b89 100644 --- a/lib/l10n/lila_de.arb +++ b/lib/l10n/lila_de.arb @@ -1,9 +1,47 @@ { - "mobileHomeTab": "Startseite", + "mobileHomeTab": "Start", "mobilePuzzlesTab": "Aufgaben", "mobileToolsTab": "Werkzeuge", "mobileWatchTab": "Zuschauen", "mobileSettingsTab": "Einstellungen", + "mobileMustBeLoggedIn": "Du musst eingeloggt sein, um diese Seite anzuzeigen.", + "mobileSystemColors": "Systemfarben", + "mobileFeedbackButton": "Feedback", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Haptisches Feedback", + "mobileSettingsImmersiveMode": "Immersiver Modus", + "mobileSettingsImmersiveModeSubtitle": "System-Benutzeroberfläche während des Spielens ausblenden. Nutze diese Option, wenn dich die Navigationsverhalten des Systems an den Bildschirmrändern stören. Gilt für Spiel- und Puzzle-Storm-Bildschirme.", + "mobileNotFollowingAnyUser": "Du folgst keinem Nutzer.", + "mobileAllGames": "Alle Partien", + "mobileRecentSearches": "Letzte Suchen", + "mobileClearButton": "Löschen", + "mobilePlayersMatchingSearchTerm": "Spieler mit \"{param}\"", + "mobileNoSearchResults": "Keine Ergebnisse", + "mobileAreYouSure": "Bist du sicher?", + "mobilePuzzleStreakAbortWarning": "Du verlierst deine aktuelle Serie und dein Ergebnis wird gespeichert.", + "mobilePuzzleStormNothingToShow": "Nichts anzuzeigen. Spiele ein paar Runden Puzzle Storm.", + "mobileSharePuzzle": "Teile diese Aufgabe", + "mobileShareGameURL": "Link der Partie teilen", + "mobileShareGamePGN": "PGN teilen", + "mobileSharePositionAsFEN": "Stellung als FEN teilen", + "mobileShowVariations": "Varianten anzeigen", + "mobileHideVariation": "Variante ausblenden", + "mobileShowComments": "Kommentare anzeigen", + "mobilePuzzleStormConfirmEndRun": "Möchtest du diesen Durchlauf beenden?", + "mobilePuzzleStormFilterNothingToShow": "Nichts anzuzeigen, bitte passe deine Filter an", + "mobileCancelTakebackOffer": "Zugzurücknahme-Angebot abbrechen", + "mobileCancelDrawOffer": "Remisangebot zurücknehmen", + "mobileWaitingForOpponentToJoin": "Warte auf Beitritt eines Gegners...", + "mobileBlindfoldMode": "Blind spielen", + "mobileLiveStreamers": "Livestreamer", + "mobileCustomGameJoinAGame": "Einer Partie beitreten", + "mobileCorrespondenceClearSavedMove": "Gespeicherten Zug löschen", + "mobileSomethingWentWrong": "Etwas ist schiefgelaufen.", + "mobileShowResult": "Ergebnis anzeigen", + "mobilePuzzleThemesSubtitle": "Spiele Aufgaben aus deinen Lieblings-Öffnungen oder wähle ein Thema.", + "mobilePuzzleStormSubtitle": "Löse in 3 Minuten so viele Aufgaben wie möglich.", + "mobileGreeting": "Hallo, {param}", + "mobileGreetingWithoutName": "Hallo", "activityActivity": "Verlauf", "activityHostedALiveStream": "Hat live gestreamt", "activityRankedInSwissTournament": "Hat Platz #{param1} im Turnier {param2} belegt", @@ -503,6 +541,7 @@ "latestForumPosts": "Neueste Forenbeiträge", "players": "Spieler", "friends": "Freunde", + "otherPlayers": "andere Spieler", "discussions": "Konversationen", "today": "Heute", "yesterday": "Gestern", @@ -760,6 +799,8 @@ "descPrivateHelp": "Text, den nur Teammitglieder lesen können. Wenn ausgefüllt, ersetzt er für Teammitglieder die öffentliche Beschreibung.", "no": "Nein", "yes": "Ja", + "website": "Webseite", + "mobile": "Handy", "help": "Hilfe:", "createANewTopic": "Erstelle ein neues Thema", "topics": "Themen", diff --git a/lib/l10n/lila_el.arb b/lib/l10n/lila_el.arb index d523c6388f..b7974e8820 100644 --- a/lib/l10n/lila_el.arb +++ b/lib/l10n/lila_el.arb @@ -1,4 +1,8 @@ { + "mobileShowResult": "Εμφάνιση αποτελέσματος", + "mobilePuzzleStormSubtitle": "Λύστε όσους γρίφους όσο το δυνατόν, σε 3 λεπτά.", + "mobileGreeting": "Καλωσορίσατε, {param}", + "mobileGreetingWithoutName": "Καλωσορίσατε", "activityActivity": "Δραστηριότητα", "activityHostedALiveStream": "Μεταδίδει ζωντανά", "activityRankedInSwissTournament": "Κατατάχθηκε #{param1} στο {param2}", diff --git a/lib/l10n/lila_en_US.arb b/lib/l10n/lila_en_US.arb index e4339d6c9f..1dcaf2ee9a 100644 --- a/lib/l10n/lila_en_US.arb +++ b/lib/l10n/lila_en_US.arb @@ -1,4 +1,46 @@ { + "mobileHomeTab": "Home", + "mobilePuzzlesTab": "Puzzles", + "mobileToolsTab": "Tools", + "mobileWatchTab": "Watch", + "mobileSettingsTab": "Settings", + "mobileMustBeLoggedIn": "You must be logged in to view this page.", + "mobileSystemColors": "System colors", + "mobileFeedbackButton": "Feedback", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Haptic feedback", + "mobileSettingsImmersiveMode": "Immersive mode", + "mobileSettingsImmersiveModeSubtitle": "Hide system UI while playing. Use this if you are bothered by the system's navigation gestures at the edges of the screen. Applies to game and Puzzle Storm screens.", + "mobileNotFollowingAnyUser": "You are not following any user.", + "mobileAllGames": "All games", + "mobileRecentSearches": "Recent searches", + "mobileClearButton": "Clear", + "mobileNoSearchResults": "No results", + "mobileAreYouSure": "Are you sure?", + "mobilePuzzleStreakAbortWarning": "You will lose your current streak, but your score will be saved.", + "mobilePuzzleStormNothingToShow": "Nothing to show. Play some runs of Puzzle Storm.", + "mobileSharePuzzle": "Share this puzzle", + "mobileShareGameURL": "Share game URL", + "mobileShareGamePGN": "Share PGN", + "mobileSharePositionAsFEN": "Share position as FEN", + "mobileShowVariations": "Show variations", + "mobileHideVariation": "Hide variation", + "mobileShowComments": "Show comments", + "mobilePuzzleStormConfirmEndRun": "Do you want to end this run?", + "mobilePuzzleStormFilterNothingToShow": "Nothing to show, please change the filters", + "mobileCancelTakebackOffer": "Cancel takeback offer", + "mobileCancelDrawOffer": "Cancel draw offer", + "mobileWaitingForOpponentToJoin": "Waiting for opponent to join...", + "mobileBlindfoldMode": "Blindfold", + "mobileLiveStreamers": "Live streamers", + "mobileCustomGameJoinAGame": "Join a game", + "mobileCorrespondenceClearSavedMove": "Clear saved move", + "mobileSomethingWentWrong": "Something went wrong.", + "mobileShowResult": "Show result", + "mobilePuzzleThemesSubtitle": "Play puzzles from your favorite openings, or choose a theme.", + "mobilePuzzleStormSubtitle": "Solve as many puzzles as possible in 3 minutes.", + "mobileGreeting": "Hello, {param}", + "mobileGreetingWithoutName": "Hello", "activityActivity": "Activity", "activityHostedALiveStream": "Hosted a live stream", "activityRankedInSwissTournament": "Ranked #{param1} in {param2}", @@ -146,7 +188,7 @@ "preferencesNotifyDevice": "Device", "preferencesBellNotificationSound": "Bell notification sound", "puzzlePuzzles": "Chess Puzzles", - "puzzlePuzzleThemes": "Puzzle themes", + "puzzlePuzzleThemes": "Puzzle Themes", "puzzleRecommended": "Recommended", "puzzlePhases": "Phases", "puzzleMotifs": "Motifs", @@ -498,6 +540,7 @@ "latestForumPosts": "Latest forum posts", "players": "Players", "friends": "Friends", + "otherPlayers": "other players", "discussions": "Conversations", "today": "Today", "yesterday": "Yesterday", @@ -755,6 +798,8 @@ "descPrivateHelp": "Text that only the team members will see. If set, replaces the public description for team members.", "no": "No", "yes": "Yes", + "website": "Website", + "mobile": "Mobile", "help": "Help:", "createANewTopic": "Create a new topic", "topics": "Topics", diff --git a/lib/l10n/lila_eo.arb b/lib/l10n/lila_eo.arb index dec63b0dba..f5e8c19877 100644 --- a/lib/l10n/lila_eo.arb +++ b/lib/l10n/lila_eo.arb @@ -1,4 +1,22 @@ { + "mobileHomeTab": "Hejmo", + "mobilePuzzlesTab": "Puzloj", + "mobileToolsTab": "Iloj", + "mobileWatchTab": "Spekti", + "mobileSettingsTab": "Agordoj", + "mobileMustBeLoggedIn": "Vi devas esti ensalutata por spekti ĉi tiun paĝon.", + "mobileSystemColors": "Sistemaj koloroj", + "mobileFeedbackButton": "Prikomentado", + "mobileOkButton": "Bone", + "mobileSettingsHapticFeedback": "Tuŝ-retrokuplado", + "mobileSettingsImmersiveMode": "Enakviĝa reĝimo", + "mobileNotFollowingAnyUser": "Vi ne abonas ĉiun uzanton.", + "mobileAllGames": "Ĉiuj ludoj", + "mobileRecentSearches": "Lastaj serĉoj", + "mobileClearButton": "Malplenigi", + "mobilePlayersMatchingSearchTerm": "Ludantanto kun \"{param}\"", + "mobileNoSearchResults": "Neniu rezultoj", + "mobileAreYouSure": "Ĉu vi certas?", "activityActivity": "Aktiveco", "activityHostedALiveStream": "Gastigis vivan rivereton", "activityRankedInSwissTournament": "Rangita #{param1} en {param2}", @@ -420,6 +438,8 @@ "promoteVariation": "Plivalorigi variaĵon", "makeMainLine": "Ĉefigi linion", "deleteFromHere": "Forigi ekde tie ĉi", + "collapseVariations": "Malatendi variaĵojn", + "expandVariations": "Etendi variaĵojn", "forceVariation": "Devigi variaĵon", "copyVariationPgn": "Kopi varianto PGN", "move": "Movo", @@ -570,6 +590,7 @@ "abortGame": "Ĉesigi ludon", "gameAborted": "Ludo estis ĉesigita", "standard": "Normale", + "customPosition": "Tajlora pozicio", "unlimited": "Senlime", "mode": "Modo", "casual": "Amike", @@ -725,6 +746,7 @@ "ifNoneLeaveEmpty": "Se neniu, lasu malplena", "profile": "Profilo", "editProfile": "Redakti profilon", + "realName": "Fakta nomo", "setFlair": "Agordi viaj emoĝio", "flair": "Emoĝio", "youCanHideFlair": "Estas agordo por kaŝi ĉiujn uzantajn emoĝiojn tra la tuta retejo.", @@ -744,6 +766,7 @@ "automaticallyProceedToNextGameAfterMoving": "Memage iri al sekvanta ludo post via movo", "autoSwitch": "Aŭtomata ludŝanĝado", "puzzles": "Puzloj", + "onlineBots": "Retaj robotoj", "name": "Nomo", "description": "Priskribo", "descPrivate": "Privata priskribo", @@ -801,6 +824,7 @@ "slow": "Malrapide", "insideTheBoard": "Ene de la tabulo", "outsideTheBoard": "Ekstere de la tabulo", + "allSquaresOfTheBoard": "Ĉiuj kvadratoj de la ŝaktabulo", "onSlowGames": "Ĉe malrapidaj ludoj", "always": "Ĉiam", "never": "Neniam", @@ -902,7 +926,8 @@ "keyNextBranch": "Sekva branĉo", "toggleVariationArrows": "Baskuligi variaĵojn sagojn", "cyclePreviousOrNextVariation": "Cickligi antaŭan/sekvan variaĵon", - "toggleGlyphAnnotations": "Baskuligi signobildan prinotadon", + "toggleGlyphAnnotations": "Baskuligi movajn prinotaĵojn", + "togglePositionAnnotations": "Baskuligi poziciajn prinotaĵojn", "variationArrowsInfo": "Variaĵaj sagoj lasi vin navigi neutile la movlisto.", "playSelectedMove": "ludi elektan movon", "newTournament": "Nova konkurso", @@ -979,6 +1004,12 @@ "transparent": "Travidebla", "deviceTheme": "Ila etoso", "backgroundImageUrl": "Malantaŭografikaĵo URL:", + "board": "Ŝaktabulo", + "size": "Amplekso", + "opacity": "Opakeco", + "brightness": "Lumeco", + "hue": "Kolortono", + "boardReset": "Restarigi kolorojn al la defaŭlta", "pieceSet": "Ŝakpecaro", "embedInYourWebsite": "Enkorpigi en via retejo", "usernameAlreadyUsed": "Oni jam uzas tiun salutnomon. Bonvolu provi alian.", @@ -1157,6 +1188,7 @@ "instructions": "Instrukcio", "showMeEverything": "Ĉion montru al mi", "lichessPatronInfo": "Lichess estas almoza kaj tute libera malfermitkoda programaro.\nĈiu funkciada elspezo, ellaborado, kaj enhavo estas financita sole de uzantajn donacojn.", + "nothingToSeeHere": "Nenio videbla ĉi tie nuntempe.", "opponentLeftCounter": "{count, plural, =1{Via kontraŭulo forlasis la ludon. Vi povas postuli venkon en {count} sekundo.} other{Via kontraŭulo forlasis la ludon. Vi povas postuli venkon en {count} sekundoj.}}", "mateInXHalfMoves": "{count, plural, =1{Mato post {count} duonmovo} other{Mato post {count} duonmovoj}}", "nbBlunders": "{count, plural, =1{{count} erarego} other{{count} eraregoj}}", diff --git a/lib/l10n/lila_es.arb b/lib/l10n/lila_es.arb index 28b327e945..403728c5af 100644 --- a/lib/l10n/lila_es.arb +++ b/lib/l10n/lila_es.arb @@ -3,10 +3,48 @@ "mobilePuzzlesTab": "Ejercicios", "mobileToolsTab": "Herramientas", "mobileWatchTab": "Ver", - "mobileSettingsTab": "Preferencias", + "mobileSettingsTab": "Ajustes", + "mobileMustBeLoggedIn": "Debes iniciar sesión para ver esta página.", + "mobileSystemColors": "Colores del sistema", + "mobileFeedbackButton": "Comentarios", + "mobileOkButton": "Aceptar", + "mobileSettingsHapticFeedback": "Respuesta táctil", + "mobileSettingsImmersiveMode": "Modo inmersivo", + "mobileSettingsImmersiveModeSubtitle": "Ocultar la interfaz del sistema durante la partida. Usa esto si te molestan los iconos de navegación del sistema en los bordes de la pantalla. Se aplica a las pantallas del juego y de Puzzle Storm.", + "mobileNotFollowingAnyUser": "No estás siguiendo a ningún usuario.", + "mobileAllGames": "Todas las partidas", + "mobileRecentSearches": "Búsquedas recientes", + "mobileClearButton": "Limpiar", + "mobilePlayersMatchingSearchTerm": "Jugadores con \"{param}\"", + "mobileNoSearchResults": "No hay resultados", + "mobileAreYouSure": "¿Estás seguro?", + "mobilePuzzleStreakAbortWarning": "Perderás tu racha actual y tu puntuación será guardada.", + "mobilePuzzleStormNothingToShow": "Nada que mostrar. Juega algunas rondas de Puzzle Storm.", + "mobileSharePuzzle": "Compartir este ejercicio", + "mobileShareGameURL": "Compartir enlace de la partida", + "mobileShareGamePGN": "Compartir PGN", + "mobileSharePositionAsFEN": "Compartir posición como FEN", + "mobileShowVariations": "Mostrar variaciones", + "mobileHideVariation": "Ocultar variación", + "mobileShowComments": "Mostrar comentarios", + "mobilePuzzleStormConfirmEndRun": "¿Quieres finalizar esta ronda?", + "mobilePuzzleStormFilterNothingToShow": "Nada que mostrar, por favor cambia los filtros", + "mobileCancelTakebackOffer": "Cancelar oferta de deshacer movimiento", + "mobileCancelDrawOffer": "Cancelar ofertas de tablas", + "mobileWaitingForOpponentToJoin": "Esperando a que se una un oponente...", + "mobileBlindfoldMode": "A ciegas", + "mobileLiveStreamers": "Presentadores en vivo", + "mobileCustomGameJoinAGame": "Únete a una partida", + "mobileCorrespondenceClearSavedMove": "Borrar movimiento guardado", + "mobileSomethingWentWrong": "Algo salió mal.", + "mobileShowResult": "Ver resultado", + "mobilePuzzleThemesSubtitle": "Realiza ejercicios de tus aperturas favoritas o elige un tema.", + "mobilePuzzleStormSubtitle": "Resuelve tantos ejercicios como puedas en 3 minutos.", + "mobileGreeting": "Hola {param}", + "mobileGreetingWithoutName": "Hola", "activityActivity": "Actividad", "activityHostedALiveStream": "Emitió en directo", - "activityRankedInSwissTournament": "#{param1} en la clasificación en {param2}", + "activityRankedInSwissTournament": "#{param1} En la Clasificatoria de {param2}", "activitySignedUp": "Registrado en Lichess", "activitySupportedNbMonths": "{count, plural, =1{Ha colaborado con lichess.org durante {count} mes como {param2}} other{Ha colaborado con lichess.org durante {count} meses como {param2}}}", "activityPracticedNbPositions": "{count, plural, =1{Ha practicado {count} posición en {param2}} other{Ha practicado {count} posiciones en {param2}}}", @@ -503,6 +541,7 @@ "latestForumPosts": "Últimos mensajes del foro", "players": "Jugadores", "friends": "Amigos", + "otherPlayers": "otros jugadores", "discussions": "Conversaciones", "today": "Hoy", "yesterday": "Ayer", @@ -760,6 +799,8 @@ "descPrivateHelp": "Este texto sólo pueden verlo los miembros del equipo. El texto que escribas aquí reemplazará tu descripción pública cuando sea vista por los miembros del equipo.", "no": "No", "yes": "Sí", + "website": "Sitio web", + "mobile": "Móvil", "help": "Ayuda:", "createANewTopic": "Crear un tema nuevo", "topics": "Temas", diff --git a/lib/l10n/lila_fa.arb b/lib/l10n/lila_fa.arb index e25b8cf3c9..535edad601 100644 --- a/lib/l10n/lila_fa.arb +++ b/lib/l10n/lila_fa.arb @@ -4,12 +4,50 @@ "mobileToolsTab": "ابزارها", "mobileWatchTab": "تماشا", "mobileSettingsTab": "تنظیمات", + "mobileMustBeLoggedIn": "برای دیدن این صفحه باید وارد حساب‌تان شده باشید.", + "mobileSystemColors": "رنگ‌های دستگاه", + "mobileFeedbackButton": "بازخوراند", + "mobileOkButton": "باشه", + "mobileSettingsHapticFeedback": "بازخوراند لمسی", + "mobileSettingsImmersiveMode": "حالت غوطه‌ور", + "mobileSettingsImmersiveModeSubtitle": "هنگام بازی، میانای کاربری دستگاه را پنهان کنید. اگر حرکت‌های ناوبری دستگاه در لبه‌های پرده آزارتان می‌دهد، از این استفاده کنید. برای پرده‌های بازی و معماباران (Puzzle Storm) کاربرد دارد.", + "mobileNotFollowingAnyUser": "شما هیچ کاربری را نمی‌دنبالید.", + "mobileAllGames": "همه بازی‌ها", + "mobileRecentSearches": "جستجوهای اخیر", + "mobileClearButton": "پاکسازی", + "mobilePlayersMatchingSearchTerm": "بازیکنانِ «{param}»", + "mobileNoSearchResults": "بدون نتیجه", + "mobileAreYouSure": "مطمئنید؟", + "mobilePuzzleStreakAbortWarning": "شما ریسه فعلی‌تان را خواهید باخت و امتیازتان ذخیره خواهد شد.", + "mobilePuzzleStormNothingToShow": "چیزی برای نمایش نیست، چند دور معماباران بازی کنید.", + "mobileSharePuzzle": "همرسانی این معما", + "mobileShareGameURL": "همرسانی وب‌نشانی بازی", + "mobileShareGamePGN": "همرسانی PGN", + "mobileSharePositionAsFEN": "همرسانی وضعیت، به شکل FEN", + "mobileShowVariations": "باز کردن شاخه‌ها", + "mobileHideVariation": "بستن شاخه‌ها", + "mobileShowComments": "نمایش نظرها", + "mobilePuzzleStormConfirmEndRun": "می‌خواهید این دور را پایان دهید؟", + "mobilePuzzleStormFilterNothingToShow": "چیزی برای نمایش نیست، لطفا پالاب‌گرها را تغییر دهید", + "mobileCancelTakebackOffer": "رد درخواست برگرداندن", + "mobileCancelDrawOffer": "رد پیشنهاد تساوی", + "mobileWaitingForOpponentToJoin": "در انتظار آمدن حریف...", + "mobileBlindfoldMode": "چشم‌بسته", + "mobileLiveStreamers": "بَرخَط-محتواسازان زنده", + "mobileCustomGameJoinAGame": "به بازی بپیوندید", + "mobileCorrespondenceClearSavedMove": "پاکیدن حرکت ذخیره‌شده", + "mobileSomethingWentWrong": "مشکلی پیش آمد.", + "mobileShowResult": "نمایش نتیجه", + "mobilePuzzleThemesSubtitle": "معماهایی را از گشایش دلخواه‌تان بازی کنید، یا موضوعی را برگزینید.", + "mobilePuzzleStormSubtitle": "در ۳ دقیقه، هر چندتا معما که می‌توانید، حل کنید.", + "mobileGreeting": "درود، {param}", + "mobileGreetingWithoutName": "سلام", "activityActivity": "فعالیت", - "activityHostedALiveStream": "یک پخش زنده میزبانی کرد", + "activityHostedALiveStream": "میزبان پخش زنده بود", "activityRankedInSwissTournament": "رتبه #{param1} را در {param2} به دست آورد", "activitySignedUp": "در لیچس ثبت نام کرد", "activitySupportedNbMonths": "{count, plural, =1{به عنوان {param2} برای {count} ماه از lichess.org حمایت کرد} other{به عنوان {param2} برای {count} ماه از lichess.org حمایت کرد}}", - "activityPracticedNbPositions": "{count, plural, =1{{count} وضعیت را در {param2} تمرین کرد} other{{count} پوزیسیون را در {param2} تمرین کرد}}", + "activityPracticedNbPositions": "{count, plural, =1{{count} وضعیت تمرین‌شده در {param2}} other{{count} وضعیت تمرین‌شده در {param2}}}", "activitySolvedNbPuzzles": "{count, plural, =1{{count} معمای آموزشی را حل کرد} other{{count} مساله تاکتیکی را حل کرد}}", "activityPlayedNbGames": "{count, plural, =1{{count} بازی {param2} را انجام داد} other{{count} بازی {param2} را انجام داد}}", "activityPostedNbMessages": "{count, plural, =1{{count} پیام را در {param2} ارسال کرد} other{{count} پیام را در {param2} ارسال کرد}}", @@ -44,7 +82,7 @@ "challengeDeclineTooSlow": "این زمان‌بندی برایم خیلی زیاد است، لطفا دوباره با زمان‌بندی کمتر پیشنهاد بازی دهید.", "challengeDeclineTimeControl": "من با این زمان‌بندی، پیشنهاد بازی را نمی‌پذیرم.", "challengeDeclineRated": "لطفا به جایش، پیشنهاد بازی رسمی بده.", - "challengeDeclineCasual": "لطفا به جایش، پیشنهاد بازی غیررسمی بده.", + "challengeDeclineCasual": "لطفا به جایش، پیشنهاد بازی نارسمی بده.", "challengeDeclineStandard": "الان پیشنهاد بازی‌های شطرنج‌گونه را نمی‌پذیرم.", "challengeDeclineVariant": "الان مایل نیستم این شطرنج‌گونه را بازی کنم.", "challengeDeclineNoBot": "من پیشنهاد بازی از ربات‌ها را نمی‌پذیرم.", @@ -53,7 +91,7 @@ "contactContact": "ارتباط با ما", "contactContactLichess": "ارتباط با Lichess", "patronDonate": "کمک مالی", - "patronLichessPatron": "پشتیبانِ Lichess", + "patronLichessPatron": "یاورِ Lichess", "perfStatPerfStats": "وضعیت {param}", "perfStatViewTheGames": "بازی ها را تماشا کنید", "perfStatProvisional": "موقت", @@ -101,7 +139,7 @@ "preferencesShowFlairs": "نمایش نشان بازیکنان", "preferencesExplainShowPlayerRatings": "این گزینه همه درجه‌بندی‌ها در Lichess را پنهان می‌کند تا کمک کند روی شطرنج تمرکز کنید. بازی‌های رسمی همچنان بر درجه‌بندی‌تان تاثیر می‌گذارند، این گزینه فقط مربوط به دیدن/ندیدن درجه‌بندی‌هاست.", "preferencesDisplayBoardResizeHandle": "نمایش دستگیره برای تغییر اندازه صفحه", - "preferencesOnlyOnInitialPosition": "فقط در آغاز بازی", + "preferencesOnlyOnInitialPosition": "فقط در وضعیت آغازین", "preferencesInGameOnly": "تنها در بازی", "preferencesChessClock": "ساعت شطرنج", "preferencesTenthsOfSeconds": "دهم ثانیه", @@ -116,20 +154,20 @@ "preferencesBothClicksAndDrag": "هر دو", "preferencesPremovesPlayingDuringOpponentTurn": "پیش حرکت (بازی در نوبت حریف)", "preferencesTakebacksWithOpponentApproval": "پس گرفتن حرکت (با تایید حریف)", - "preferencesInCasualGamesOnly": "در بازی های غیررسمی", - "preferencesPromoteToQueenAutomatically": "ترفیع کردن به وزیر به صورت خودکار", + "preferencesInCasualGamesOnly": "فقط در بازی‌های نارسمی", + "preferencesPromoteToQueenAutomatically": "ارتقا خودکار به وزیر", "preferencesExplainPromoteToQueenAutomatically": " را در هنگام تبلیغ بزنید تا به طور موقت تبلیغات خودکار را غیرفعال کنید", "preferencesWhenPremoving": "در زمان پیش حرکت", - "preferencesClaimDrawOnThreefoldRepetitionAutomatically": "ادعای تساوی در تکرار سه گانه به طور خودکار", + "preferencesClaimDrawOnThreefoldRepetitionAutomatically": "ادعای خودکار تساوی، در تکرار سه‌گانه", "preferencesWhenTimeRemainingLessThanThirtySeconds": "وقتی زمان باقی مانده کمتر از سی ثانیه است", "preferencesMoveConfirmation": "تایید حرکت", - "preferencesExplainCanThenBeTemporarilyDisabled": "می‌توانید در طول بازی منوی تخته را غیرفعال کنید", + "preferencesExplainCanThenBeTemporarilyDisabled": "می‌تواند هنگام بازی با «گزینگان صفحه‌بازی» خاموش شود", "preferencesInCorrespondenceGames": "در حال بازی مکاتبه ای", "preferencesCorrespondenceAndUnlimited": "مکاتبه ای و نامحدود", "preferencesConfirmResignationAndDrawOffers": "نیاز به تایید دوباره؛ زمانی که تسلیم می شوید یا پیشنهاد تساوی می دهید", - "preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook": "روش انجام شاه قلعه", - "preferencesCastleByMovingTwoSquares": "به وسیله ی دو خانه حرکت دادن شاه", - "preferencesCastleByMovingOntoTheRook": "به وسیله ی حرکت دادن شاه روی خانه رخ", + "preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook": "روش قلعه‌روی", + "preferencesCastleByMovingTwoSquares": "شاه را دو خانه حرکت دهید", + "preferencesCastleByMovingOntoTheRook": "شاه را روی رخ گذارید", "preferencesInputMovesWithTheKeyboard": "ورود حرکات با استفاده از صفحه کلید", "preferencesInputMovesWithVoice": "حرکات را با صدای خود وارد کنید", "preferencesSnapArrowsToValidMoves": "چسبیدن پیکان‌ها به حرکت‌های ممکن", @@ -151,7 +189,7 @@ "preferencesNotifyDevice": "دستگاه", "preferencesBellNotificationSound": "زنگ اعلان", "puzzlePuzzles": "معماها", - "puzzlePuzzleThemes": "معماهای دسته‌بندی شده", + "puzzlePuzzleThemes": "موضوع معماها", "puzzleRecommended": "توصیه شده", "puzzlePhases": "مرحله‌ها", "puzzleMotifs": "موضوعات", @@ -166,8 +204,8 @@ "puzzleUpVote": "معمای خوبی بود", "puzzleDownVote": "معمای بدی بود", "puzzleYourPuzzleRatingWillNotChange": "درجه‌بندی معمایی شما تغییری نخواهد کرد. توجه داشته باشید که معماها یک رقابت نیستند. درجه‌بندی‌تان به انتخاب بهترین معماها برای سطح مهارت فعلی‌تان کمک می‌کند.", - "puzzleFindTheBestMoveForWhite": "بهترین حرکت برای سفید را پیدا کنید.", - "puzzleFindTheBestMoveForBlack": "بهترین حرکت برای سیاه را پیدا کنید.", + "puzzleFindTheBestMoveForWhite": "بهترین حرکت سفید را بیابید.", + "puzzleFindTheBestMoveForBlack": "بهترین حرکت سیاه را بیابید.", "puzzleToGetPersonalizedPuzzles": "دریافت معماهای شخصی‌سازی‌شده:", "puzzlePuzzleId": "معمای {param}", "puzzlePuzzleOfTheDay": "معمای روز", @@ -181,13 +219,13 @@ "puzzleByOpenings": "بر اساس گشایش‌ها", "puzzlePuzzlesByOpenings": "معماها بر اساس گشایش‌ها", "puzzleOpeningsYouPlayedTheMost": "گشایش‌هایی که بیش از همه در بازی‌های امتیازی کرده‌اید", - "puzzleUseFindInPage": "با استفاده از قابلیت \"جستجو در صفحه\" مرورگر خود گشایش محبوب خود را پیدا کنید!", - "puzzleUseCtrlF": "از Ctrl+f برای پیدا کردن گشایش مورد علاقه خود استفاده کنید!", + "puzzleUseFindInPage": "از گزینه «جستجو در صفحه» مرورگر استفاده کنید تا گشایش دلخواه‌تان را بیابید!", + "puzzleUseCtrlF": "از Ctrl+f برای یابیدن گشایش دلخواه‌تان استفاده کنید!", "puzzleNotTheMove": "این حرکت نیست!", "puzzleTrySomethingElse": "چیز دیگری پیدا کنید", "puzzleRatingX": "درجه‌بندی: {param}", "puzzleHidden": "پنهان", - "puzzleFromGameLink": "برگرفته شده از بازی {param}", + "puzzleFromGameLink": "برگرفته از بازی {param}", "puzzleContinueTraining": "ادامه دادن تمرین", "puzzleDifficultyLevel": "میزان سختی", "puzzleNormal": "متوسط", @@ -211,25 +249,25 @@ "puzzleContinueTheStreak": "توالی را ادامه دهید", "puzzleNewStreak": "رکورد جدید", "puzzleFromMyGames": "از بازی های من", - "puzzleLookupOfPlayer": "به دنبال معماهای برگرفته‌شده از بازی‌های یک بازیکن مشخص، بگردید", - "puzzleFromXGames": "معماهای برگرفته‌شده از بازی‌های {param}", + "puzzleLookupOfPlayer": "به دنبال معماهای برگرفته از بازی‌های یک بازیکن مشخص، بگردید", + "puzzleFromXGames": "معماهای برگرفته از بازی‌های {param}", "puzzleSearchPuzzles": "جستجوی معماها", - "puzzleFromMyGamesNone": "شما هیچ معمایی در پایگاه‌داده ندارید، اما Lichess همچنان شما را بسیار دوست دارد.\n\nبازی‌های سریع و مرسوم را انجام دهید تا بَختِتان را برای اضافه کردن یک معما از خودتان افزایش دهید!", - "puzzleFromXGamesFound": "{param1} معما در بازی‌های {param2} پیدا شد", + "puzzleFromMyGamesNone": "شما هیچ معمایی در پایگاه‌داده ندارید، اما Lichess همچنان شما را بسیار دوست دارد.\n\nبازی‌های سریع و مرسوم را انجام دهید تا بَختِتان را برای افزودن معمایی از خودتان بیفزایید!", + "puzzleFromXGamesFound": "{param1} معما در بازی‌های {param2} یافت شد", "puzzlePuzzleDashboardDescription": "تمرین کن، تحلیل کن، پیشرفت کن", - "puzzlePercentSolved": "{param} حل شده", - "puzzleNoPuzzlesToShow": "هیچ موردی برای نمایش وجود ندارد، بروید و ابتدا چند معما حل کنید!", + "puzzlePercentSolved": "{param} حل‌شده", + "puzzleNoPuzzlesToShow": "چیزی برای نمایش نیست، نخست بروید و چند معما حل کنید!", "puzzleImprovementAreasDescription": "این‌ها را تمرین کنید تا روند پیشرفت خود را بهبود ببخشید!", "puzzleStrengthDescription": "شما در این زمینه‌ها بهترین عملکرد را دارید", "puzzlePlayedXTimes": "{count, plural, =1{{count} بار بازی شده است} other{{count} بار بازی شده}}", - "puzzleNbPointsBelowYourPuzzleRating": "{count, plural, =1{یک امتیاز پایین‌تر از امتیاز شما در معماها} other{{count} امتیاز پایین‌تر از امتیاز شما در معماها}}", - "puzzleNbPointsAboveYourPuzzleRating": "{count, plural, =1{یک امتیاز بالاتر از درجه‌بندی معمایی‌تان} other{{count} امتیاز بالاتر از درجه‌بندی معمایی‌تان}}", + "puzzleNbPointsBelowYourPuzzleRating": "{count, plural, =1{یک امتیاز زیر درجه‌بندی معمایی‌تان} other{{count} امتیاز زیر درجه‌بندی معمایی‌تان}}", + "puzzleNbPointsAboveYourPuzzleRating": "{count, plural, =1{یک امتیاز بالای درجه‌بندی معمایی‌تان} other{{count} امتیاز بالای درجه‌بندی معمایی‌تان}}", "puzzleNbPlayed": "{count, plural, =1{{count} بررسی شده} other{{count} نفر بازی کردند}}", - "puzzleNbToReplay": "{count, plural, =1{{count} برای بازبینی} other{{count} مورد برای بازبینی}}", + "puzzleNbToReplay": "{count, plural, =1{{count} بازپخش} other{{count} بازپخش}}", "puzzleThemeAdvancedPawn": "پیاده پیش رفته", - "puzzleThemeAdvancedPawnDescription": "یکی از پیاده های شما در زمین حریف پیشروی کرده، گویی تهدید به ارتقا میکنه.", + "puzzleThemeAdvancedPawnDescription": "یکی از پیاده‌های‌تان به اردوگاه حریف پیش‌رویده، شاید تهدید به ارتقا کند.", "puzzleThemeAdvantage": "برتری", - "puzzleThemeAdvantageDescription": "از شانس خود برای بدست اوردن برتری قطعی استفاده کنید. (200cp ≤ eval ≤ 600cp)", + "puzzleThemeAdvantageDescription": "از بخت‌تان برای رسیدن به برتری قطعی بهره برید. (۲۰۰ص‌پ ≤ ارزیابی ≤ ۶۰۰ص‌پ)", "puzzleThemeAnastasiaMate": "مات آناستازیا", "puzzleThemeAnastasiaMateDescription": "یک اسب و یک رخ به همدیگر کمک میکنند تا شاه حریف را بین گوشه های زمین و یک مهره از حریف زندانی کنند.", "puzzleThemeArabianMate": "مات عربی", @@ -244,22 +282,22 @@ "puzzleThemeBishopEndgameDescription": "آخربازی، تنها با فیل‌ها و پیاده‌ها.", "puzzleThemeBodenMate": "مات بودِن یا دوشمشیر", "puzzleThemeBodenMateDescription": "دو فیل به حالت ضربدری که به گوشه زمین حمله می کنند یک شاه که راهش با مهره های خودش سد شده را مات می کنند.", - "puzzleThemeCastling": "قلعه رفتن", + "puzzleThemeCastling": "قلعه‌روی", "puzzleThemeCastlingDescription": "شاه خود را ایمن کنید و رخ خود را برای حمله مستقر کنید.", "puzzleThemeCapturingDefender": "مهره دفاع کننده را بگیرید", "puzzleThemeCapturingDefenderDescription": "گرفتن یک مهره که برای دفاع از یک مهره دیگر حیاتی است، اجازه می دهد مهره ای که اکنون بدون دفاع است در حرکت بعدی گرفته شود.", "puzzleThemeCrushing": "تخریب", - "puzzleThemeCrushingDescription": "استفاده از اشتباه حریف برای بدست آوردن مزیتی کوچک. (eval ≥ 600cp)", + "puzzleThemeCrushingDescription": "تشخیص اشتباه فاحش حریف، برای رسیدن به برتری‌ای کوبنده. (ارزیابی ≥ ۶۰۰ص‌پ)", "puzzleThemeDoubleBishopMate": "مات با دو فیل", "puzzleThemeDoubleBishopMateDescription": "دو فیل که همزمان به گوشه های مجاور حمله می کنند، شاهی که راهش با مهره های خودش سد شده را مات می کنند.", "puzzleThemeDovetailMate": "مات بوسه ای", "puzzleThemeDovetailMateDescription": "وزیری که شاه مجاور خودش را که تنها دو خانه ای که برای فرارش باقی مانده توسط مهره های خودش سد شده، مات می کند.", "puzzleThemeEquality": "برابری", - "puzzleThemeEqualityDescription": "تغییر وضعیت بازنده، و تضمین تساوی یا وضعیت متعادل. (eval ≤ 200cp)", - "puzzleThemeKingsideAttack": "حمله به جناه شاه", - "puzzleThemeKingsideAttackDescription": "حمله به شاه حریف زمانی که در جناه شاه قلعه رفته است.", - "puzzleThemeClearance": "پاکسازی", - "puzzleThemeClearanceDescription": "حرکتی، اغلب سریع، برای پاک کردن صفحه جهت دنبال کردن ایده های تاکتیکی بعدی.", + "puzzleThemeEqualityDescription": "از وضعیت باخت در‌آیید و به وضعیت تساوی یا ترازمند برسید. (ارزیابی ≤ ۲۰۰ ص‌پ)", + "puzzleThemeKingsideAttack": "حمله به جناح شاه", + "puzzleThemeKingsideAttackDescription": "حمله به شاه حریف، پس از آنکه آنها قلعه کوچک رفتند.", + "puzzleThemeClearance": "آزادسازی", + "puzzleThemeClearanceDescription": "حرکتی، اغلب با زمان، که خانه، عرض، ستون یا قطری را برای پیشبُرد اندیشه‌ای راهکنشی، آزاد می‌کند.", "puzzleThemeDefensiveMove": "حرکت تدافعی", "puzzleThemeDefensiveMoveDescription": "حرکت یا دنباله ای از حرکات که برای جلوگیری از دست دادن مهره یا مزیت لازم است.", "puzzleThemeDeflection": "منحرف کردن", @@ -279,18 +317,18 @@ "puzzleThemeHangingPieceDescription": "تاکتیکی که در آن مهره های حریف برای گرفتن، بدون دفاع یا با دفاع ناکافی است.", "puzzleThemeHookMate": "مات قُلاب", "puzzleThemeHookMateDescription": "مات با یک رخ، اسب و یک پیاده در برابر یک پیاده حریف برای محدود کردن راه های فرار شاه دشمن.", - "puzzleThemeInterference": "چنگال", - "puzzleThemeInterferenceDescription": "حرکت دادن یک مهره و حمله کردن به دو مهره هم زمان که بتوان یکی از مهره ها را گرفت، مانند حمله یک اسب به به دو تا رخ بصورت هم زمان.", - "puzzleThemeIntermezzo": "زوگزوانگ", - "puzzleThemeIntermezzoDescription": "به جای انجام حرکت مورد انتظار، ابتدا حرکت دیگری را وارد کنید که تهدیدی فوری است که حریف باید به آن پاسخ دهد. به عنوان \"Zwischenzug\" شناخته میشود.", + "puzzleThemeInterference": "میان‌زَنِش", + "puzzleThemeInterferenceDescription": "حرکت یک مهره به میان دو مهره حریف برای بی‌دفاع کردن یک یا هر دو مهره حریف، برای نمونه گذاشتن اسبی در خانه دفاع‌شده میان دو رخ.", + "puzzleThemeIntermezzo": "میان‌آیند", + "puzzleThemeIntermezzoDescription": "به جای انجام حرکت موردانتظار، نخست حرکت دیگری را روید که تهدیدی فوری‌ست و حریف باید به آن پاسخ دهد. همچنین به آن «قطار میانی - Zwischenzug» یا «در میانه» می‌گویند.", "puzzleThemeKnightEndgame": "آخربازی اسب", "puzzleThemeKnightEndgameDescription": "آخربازی، تنها با اسب‌ها و پیاده‌ها.", "puzzleThemeLong": "معمای طولانی", "puzzleThemeLongDescription": "سه حرکت برای پیروزی.", "puzzleThemeMaster": "بازی‌های استادان", - "puzzleThemeMasterDescription": "معماهای برگرفته‌شده از بازی‌های بازیکنان عنوان‌دار.", + "puzzleThemeMasterDescription": "معماهای برگرفته از بازی‌های بازیکنان عنوان‌دار.", "puzzleThemeMasterVsMaster": "بازی‌های استادان برابر هم", - "puzzleThemeMasterVsMasterDescription": "معماهای برگرفته‌شده از بازی‌های بین دو بازیکن عنوان‌دار.", + "puzzleThemeMasterVsMasterDescription": "معماهای برگرفته از بازی‌های میان دو بازیکن عنوان‌دار.", "puzzleThemeMate": "کیش و مات", "puzzleThemeMateDescription": "بازی را با سبک خاصی ببرید.", "puzzleThemeMateIn1": "مات در یک حرکت", @@ -304,7 +342,7 @@ "puzzleThemeMateIn5": "مات در پنج حرکت یا بیشتر", "puzzleThemeMateIn5Description": "کشف یک مات طولانی و متوالی.", "puzzleThemeMiddlegame": "وسط بازی", - "puzzleThemeMiddlegameDescription": "تاکتیکی در لحظات آخر بازی.", + "puzzleThemeMiddlegameDescription": "راهکنشی در مرحله دوم بازی.", "puzzleThemeOneMove": "معمای یک-حرکتی", "puzzleThemeOneMoveDescription": "یک معما که فقط یک حرکت طول می‌کشد.", "puzzleThemeOpening": "گشایش", @@ -313,14 +351,14 @@ "puzzleThemePawnEndgameDescription": "آخربازی، تنها با پیاده‌ها.", "puzzleThemePin": "آچمزی", "puzzleThemePinDescription": "راهکنش آچمزی، که یک مهره نمی‌تواند حرکت کند، مگر اینکه به مهره ارزشمندتر پشتش حمله می‌شود.", - "puzzleThemePromotion": "ترفیع", - "puzzleThemePromotionDescription": "یکی از پیاده های خود را به وزیر یا مهره دیگر ارتقا دهید.", + "puzzleThemePromotion": "ارتقا", + "puzzleThemePromotionDescription": "یکی از پیاده‌های‌تان را به وزیر یا سواری دیگر ارتقا دهید.", "puzzleThemeQueenEndgame": "آخربازی وزیر", "puzzleThemeQueenEndgameDescription": "آخربازی، تنها با وزیرها و پیاده‌ها.", "puzzleThemeQueenRookEndgame": "وزیر و رخ", "puzzleThemeQueenRookEndgameDescription": "آخربازی، تنها با وزیرها، رُخ‌ها و پیاده‌ها.", - "puzzleThemeQueensideAttack": "حمله به جناه وزیر", - "puzzleThemeQueensideAttackDescription": "یک حمله به شاه حریف، زمانی که در جناه وزیر قلعه رفته است.", + "puzzleThemeQueensideAttack": "حمله به جناح وزیر", + "puzzleThemeQueensideAttackDescription": "حمله به شاه حریف، پس از آنکه آنها قلعه بزرگ رفتند.", "puzzleThemeQuietMove": "حرکت آرام", "puzzleThemeQuietMoveDescription": "حرکتی که نه کیش ایجاد می کند و نه مهره ای را می گیرد و نه تهدید فوری را در پی دارد اما یک تهدید غیر قابل پیشگیری را در حرکات بعد به همراه دارد.", "puzzleThemeRookEndgame": "آخربازی رخ", @@ -332,19 +370,19 @@ "puzzleThemeSkewer": "سیخ‌کشی یا سیخ‌کباب", "puzzleThemeSkewerDescription": "سیخ‌کشی، که به یک مهره باارزش حمله شده، به گونه‌ای جابجا می‌شود، و حالا امکان می‌دهد که مهره کم‌ارزش پشتش زده شود یا زیر ضرب قرار گیرد. برعکس آچمزی است.", "puzzleThemeSmotheredMate": "مات مختنق", - "puzzleThemeSmotheredMateDescription": "ماتی که توسط یک اسب انجام می شود که در آن پادشاه قادر به حرکت نیست زیرا توسط مهره های خود احاطه شده.", + "puzzleThemeSmotheredMateDescription": "ماتی که با یک اسب انجام می‌شود و در آن شاه قادر به حرکت نیست زیرا با مهره‌های خودش احاطه (یا خفه) شده است.", "puzzleThemeSuperGM": "بازی اَبَر استاد بزرگان", - "puzzleThemeSuperGMDescription": "معماهای برگرفته‌شده از بازی‌های بهترین بازیکنان جهان.", + "puzzleThemeSuperGMDescription": "معماهای برگرفته از بازی‌های بهترین بازیکنان جهان.", "puzzleThemeTrappedPiece": "مهره به‌دام‌افتاده", "puzzleThemeTrappedPieceDescription": "یک مهره قادر به فرار کردن از زده شدن نیست چون حرکات محدودی دارد.", - "puzzleThemeUnderPromotion": "ارتقا به غیر از وزیر", + "puzzleThemeUnderPromotion": "فرو-ارتقا", "puzzleThemeUnderPromotionDescription": "ارتقا به اسب، فیل یا رخ.", "puzzleThemeVeryLong": "معمای خیلی طولانی", "puzzleThemeVeryLongDescription": "چهار حرکت یا بیشتر برای برنده شدن.", "puzzleThemeXRayAttack": "حمله پیکانی", "puzzleThemeXRayAttackDescription": "یک مهره از طریق مهره حریف به یک خانه حمله میکند یا از آن دفاع می کند.", "puzzleThemeZugzwang": "زوگزوانگ", - "puzzleThemeZugzwangDescription": "حریف حرکات محدودی برای انجام دادن دارد و تمام حرکات ممکن موقعیت حریف را بدتر میکند.", + "puzzleThemeZugzwangDescription": "حریف در حرکت‌هایش محدود است و همه‌شان وضعیتش را بدتر می‌کند.", "puzzleThemeHealthyMix": "ترکیب سالم", "puzzleThemeHealthyMixDescription": "یک ذره از همه چیز. شما نمی دانید چه چیزی پیش روی شماست، بنابراین شما باید برای هر چیزی آماده باشید! دقیقا مثل بازی های واقعی.", "puzzleThemePlayerGames": "بازی‌های بازیکن", @@ -412,14 +450,14 @@ "computerAnalysisAvailable": "تحلیل رایانه‌ای موجود است", "computerAnalysisDisabled": "تحلیل رایانه‌ای غیرفعال شد", "analysis": "تحلیل بازی", - "depthX": "عمق بررسی تا {param} حرکت", - "usingServerAnalysis": "استفاده از کارساز برای تحلیل", - "loadingEngine": "در حال بارگذاری پردازشگر شطرنج...", + "depthX": "عمق {param}", + "usingServerAnalysis": "با استفاده از کارسازِ تحلیل", + "loadingEngine": "پردازشگر بارمی‌گذارد...", "calculatingMoves": "در حال محاسبه حرکات...", "engineFailed": "خطا در بارگذاری پردازشگر شطرنج", "cloudAnalysis": "تحلیل ابری", - "goDeeper": "عمق و تعداد بیشتری از حرکتها را بررسی نمایید", - "showThreat": "تهدید را نمایش بدهید", + "goDeeper": "بررسی عمیق‌تر", + "showThreat": "نمایش تهدید", "inLocalBrowser": "در مرورگر محلی", "toggleLocalEvaluation": "کلید ارزیابی محلی", "promoteVariation": "افزایش عمق شاخه اصلی", @@ -429,10 +467,10 @@ "expandVariations": "باز کردن شاخه‌ها", "forceVariation": "نتیجه تحلیل را به عنوان یکی از تنوعهای بازی انتخاب نمایید", "copyVariationPgn": "کپی PGN این شاخه", - "move": "انتقال بدهید", + "move": "حرکت", "variantLoss": "حرکت بازنده", "variantWin": "حرکت برنده", - "insufficientMaterial": "مُهره کافی برای مات کردن وجود ندارد", + "insufficientMaterial": "مُهره ناکافی برای مات", "pawnMove": "حرکت پیاده", "capture": "گرفتن مهره", "close": "بستن", @@ -449,12 +487,12 @@ "dtzWithRounding": "DTZ50'' با گرد کردن، بر اساس تعداد حرکات نیمه تا زمان دستگیری یا حرکت پیاده بعدی", "noGameFound": "هیچ بازی یافت نشد", "maxDepthReached": "عمق به حداکثر رسیده!", - "maybeIncludeMoreGamesFromThePreferencesMenu": "شاید بازی‌های بیشتری با توجه به گزینگان ترجیحات، وجود داشته باشه؟", - "openings": "گشایش", - "openingExplorer": "جستجوگر گشایش‌", - "openingEndgameExplorer": "جستجوگر گشایش/آخربازی", + "maybeIncludeMoreGamesFromThePreferencesMenu": "ممکنه بازی‌های بیشتری با توجه به گزینگان ترجیح‌ها، وجود داشته باشد؟", + "openings": "گشایش‌ها", + "openingExplorer": "پویشگر گشایش‌", + "openingEndgameExplorer": "پویشگر گشایش/آخربازی", "xOpeningExplorer": "جستجوگر گشایش {param}", - "playFirstOpeningEndgameExplorerMove": "اولین حرکت گشایش/آخربازی را برو", + "playFirstOpeningEndgameExplorerMove": "نخستین حرکت گشایش/آخربازی پویشگر را برو", "winPreventedBy50MoveRule": "قانون پنجاه حرکت از پیروزی جلوگیری کرد", "lossSavedBy50MoveRule": "قانون ۵۰ حرکت از شکست جلوگیری کرد", "winOr50MovesByPriorMistake": "برد یا ۵٠ حرکت بعد از اشتباه قبلی", @@ -464,10 +502,10 @@ "importPgn": "PGN را وارد کنید", "delete": "حذف", "deleteThisImportedGame": "آیا این بازیِ درونبُرده پاک شود؟", - "replayMode": "حالت پخش", + "replayMode": "حالت بازپخش", "realtimeReplay": "مشابه بازی", "byCPL": "درنگ حین اشتباهات", - "openStudy": "مطالعه را شروع نمایید", + "openStudy": "گشودن مطالعه", "enable": "فعال سازی", "bestMoveArrow": "فلش نشان دهنده بهترین حرکت", "showVariationArrows": "نمایش پیکان‌های شاخه اصلی", @@ -476,7 +514,7 @@ "cpus": "پردازنده(ها)", "memory": "حافظه", "infiniteAnalysis": "آنالیز بی پایان", - "removesTheDepthLimit": "محدودیت عمق بررسی را بر می دارد که به گرم شدن کامپیوتر شما منجر می شود", + "removesTheDepthLimit": "محدودیت عمق را برمی‌دارد و رایانه‌تان داغ می‌ماند", "engineManager": "مدیر موتور شطرنج", "blunder": "اشتباه فاحش", "mistake": "اشتباه", @@ -503,6 +541,7 @@ "latestForumPosts": "آخرین پست های انجمن", "players": "بازیکنان", "friends": "دوستان", + "otherPlayers": "بازیکنان دیگر", "discussions": "مکالمات", "today": "امروز", "yesterday": "دیروز", @@ -579,10 +618,10 @@ "standard": "استاندارد", "customPosition": "وضعیت به‌دلخواه", "unlimited": "نامحدود", - "mode": "نوع", - "casual": "غیر رسمی", + "mode": "حالت", + "casual": "نارسمی", "rated": "رسمی", - "casualTournament": "غیر رسمی", + "casualTournament": "نارسمی", "ratedTournament": "رسمی", "thisGameIsRated": "این بازی رسمی است", "rematch": "بازی دوباره", @@ -607,7 +646,7 @@ "exportGames": "برون‏بُرد بازی‌ها", "ratingRange": "محدوده درجه‌بندی", "thisAccountViolatedTos": "این حساب قوانین را نقض کرده است", - "openingExplorerAndTablebase": "جستجوگر گشایش و آخربازی", + "openingExplorerAndTablebase": "پویشگر گشایش و آخربازی", "takeback": "پس گرفتن حرکت", "proposeATakeback": "پیشنهاد پس گرفتن حرکت", "takebackPropositionSent": "پیشنهاد پس گرفتن حرکت فرستاده شد", @@ -622,7 +661,7 @@ "viewTournament": "مشاهده مسابقات", "backToTournament": "برگشت به مسابقه", "noDrawBeforeSwissLimit": "شما نمی‌توانید در مسابقات سوییس تا قبل از حرکت ۳۰ام بازی را مساوی کنید.", - "thematic": "واریانتی", + "thematic": "موضوعی", "yourPerfRatingIsProvisional": "درجه‌بندی {param} شما موقتی است", "yourPerfRatingIsTooHigh": "درجه‌بندی {param1} شما ({param2}) بیش از حد بالاست", "yourTopWeeklyPerfRatingIsTooHigh": "درجه‌بندی {param1} هفتگی‌تان ({param2}) بیش از حد بالاست", @@ -632,24 +671,24 @@ "mustBeInTeam": "باید در تیم {param} باشید", "youAreNotInTeam": "شما در تیم {param} نیستید", "backToGame": "بازگشت به بازی", - "siteDescription": "شطرنج آنلاین رایگان. همین حالا شطرنج بازی کنید. بدون نیاز به ثبت نام، بدون تبلیغات، بدون نیاز به افزونه. بازی با کامپیوتر، دوستان و یا حریفان تصادفی.", + "siteDescription": "کارساز برخط و رایگان شطرنج. با میانایی روان شطرنج بازی کنید. بدون ثبت‌نام، بدون تبلیغ، بدون نیاز به افزونه. با رایانه، دوستان یا حریفان تصادفی شطرنج بازی کنید.", "xJoinedTeamY": "{param1} به تیم {param2} پیوست", "xCreatedTeamY": "{param1} تیم {param2} را ایجاد کرد", - "startedStreaming": "شروع به استریم کرده است", - "xStartedStreaming": "{param} شروع به استریم کرده است", + "startedStreaming": "پخش را آغازید", + "xStartedStreaming": "{param} پخش را آغازید", "averageElo": "میانگین درجه‌بندی", "location": "محل", - "filterGames": "دستچین کردن بازی‌ها", - "reset": "تنظیم مجدد", + "filterGames": "پالابش بازی‌ها", + "reset": "بازنشانی", "apply": "تایید", "save": "ذخیره", "leaderboard": "جدول رده‌بندی", - "screenshotCurrentPosition": "از وضعیت فعلی نماگرفت بگیرید", + "screenshotCurrentPosition": "نماگرفت از وضعیت فعلی", "gameAsGIF": "بارگیری GIF بازی", "pasteTheFenStringHere": "پوزیشن دلخواه(FEN) را در این قسمت وارد کنید", "pasteThePgnStringHere": "متن PGN را در این قسمت وارد کنید", "orUploadPgnFile": "یا یک فایل PGN بارگذاری کنید", - "fromPosition": "شروع از پوزیشن", + "fromPosition": "از وضعیت", "continueFromHere": "از اینجا ادامه دهید", "toStudy": "مطالعه", "importGame": "بارگذاری بازی", @@ -657,7 +696,7 @@ "importGameCaveat": "تغییرات پاک خواهند شد. برای حفظ آنها، PGN را از طریق مطالعه وارد کنید.", "importGameDataPrivacyWarning": "این PGN برای عموم در دسترس است، برای وارد کردن یک بازی خصوصی، از *مطالعه* استفاده کنید.", "thisIsAChessCaptcha": "این یک کپچا [کد امنیتی] شطرنجی است", - "clickOnTheBoardToMakeYourMove": "برای اثبات اینکه کامپیوتر نیستید، روی صفحه کلیک کنید تا حرکت خود را انجام دهید", + "clickOnTheBoardToMakeYourMove": "روی صفحه بزنید تا حرکت‌تان را بروید و اثبات کنید که انسانید.", "captcha_fail": "لطفا captcha را حل کنید", "notACheckmate": "این یک کیش و مات نیست", "whiteCheckmatesInOneMove": "سفید در یک حرکت مات می‌کند", @@ -721,29 +760,29 @@ "boardEditor": "مُهره‌چینی", "setTheBoard": "مهره‌ها را بچینید", "popularOpenings": "گشایش‌های محبوب", - "endgamePositions": "آخربازی", - "chess960StartPosition": "پوزیشن ابتدایی شطرنج960: {param}", - "startPosition": "موقعیت شروع", + "endgamePositions": "وضعیت‌های آخربازی", + "chess960StartPosition": "وضعیت آغازین شطرنج۹۶۰: {param}", + "startPosition": "وضعیت آغازش", "clearBoard": "پاک کردن صفحه", - "loadPosition": "بارگذاری موقعیت", + "loadPosition": "بارگذاری وضعیت", "isPrivate": "خصوصی", - "reportXToModerators": "گزارش {param} به مدیران سایت", + "reportXToModerators": "گزارش {param} به ناظران", "profileCompletion": "میزان تکمیل رُخ‌نما: {param}", "xRating": "درجه‌‏بندی {param}", "ifNoneLeaveEmpty": "اگر ندارید، خالی گذارید", "profile": "رُخ‌نما", "editProfile": "ویرایش رُخ‌نما", "realName": "نام راستین", - "setFlair": "تعیین کردن شکلک", - "flair": "نشان", + "setFlair": "تعیین شکلک", + "flair": "شکلک", "youCanHideFlair": "تنظیماتی برای مخفی کردن همه شکلک‌های کاربر در کل ویگاه وجود دارد.", "biography": "شرح‌حال", "countryRegion": "کشور یا منطقه", "thankYou": "ممنون!", - "socialMediaLinks": "لینک های رسانه های اجتماعی", - "oneUrlPerLine": "یک نشانی در هر خط.", + "socialMediaLinks": "پیوندهای رسانه‌های اجتماعی", + "oneUrlPerLine": "یک وب‌نشانی در هر خط.", "inlineNotation": "نشانه‌گذاری خطی", - "makeAStudy": "برای نگهداری مطمئن و اشتراک‌گذاری، ایجاد یک مطالعه را در نظر بگیرید.", + "makeAStudy": "برای نگهداری مطمئن و همرسانی، ساخت یک مطالعه را در نظر بگیرید.", "clearSavedMoves": "حرکت های واضح", "previouslyOnLichessTV": "بازی پیشین در Lichess", "onlinePlayers": "بازیکنان بَرخط", @@ -760,6 +799,8 @@ "descPrivateHelp": "متنی که فقط اعضای تیم مشاهده خواهند کرد. در صورت تعیین، جایگزین توضیحات عمومی برای اعضای تیم خواهد شد.", "no": "نه", "yes": "بله", + "website": "وبگاه", + "mobile": "گوشی", "help": "راهنما:", "createANewTopic": "ایجاد یک موضوع جدید", "topics": "مباحث", @@ -776,7 +817,7 @@ "reason": "دلیل", "whatIsIheMatter": "موضوع", "cheat": "تقلب", - "troll": "ترول", + "troll": "وِزُل", "other": "موضوعات دیگر", "reportDescriptionHelp": "لینک بازی های این کاربر را قرار دهید و توضیع دهید خطای رفتار این بازیکن چه بوده است", "error_provideOneCheatedGameLink": "لطفآ حداقل یک نمونه تقلب در بازی را مطرح کنید.", @@ -803,7 +844,7 @@ "privacyPolicy": "سیاست حریم شخصی", "letOtherPlayersFollowYou": "بقیه بازیکنان شما را دنبال کنند", "letOtherPlayersChallengeYou": "اجازه دهید بازیکنان دیگر به شما پیشنهاد بازی دهند", - "letOtherPlayersInviteYouToStudy": "اجازه دهید دیگر بازیکن شما را به مطالعه دعوت کنند", + "letOtherPlayersInviteYouToStudy": "بگذارید دیگر بازیکنان، شما را به مطالعه دعوت کنند", "sound": "صدا", "none": "هیچ کدام", "fast": "سریع", @@ -825,7 +866,7 @@ "starting": "شروع", "allInformationIsPublicAndOptional": "تمامی اطلاعات عمومی و اختیاری است.", "biographyDescription": "درباره ی خودتان بگویید - به چه چیزی در شطرنج علاقه داریدو گشایش ها - بازی ها و بازیکنان مورد علاقه تان…", - "listBlockedPlayers": "لیست بازیکنانی که شما مسدود کرده اید", + "listBlockedPlayers": "فهرست بازیکنانی که مسدود کرده‌اید", "human": "شخص واقعی", "computer": "رایانه", "side": "چه رنگی؟", @@ -840,7 +881,7 @@ "error_unknown": "مقدار نامعتبر", "error_required": "حتماً باید این خانه را پر کنید", "error_email": "آدرس ایمیل غیر معتبر است", - "error_email_acceptable": "این آدرس ایمیل قابل قبول نیست. لطفا آدرس وارد شده را چک کنید و دوباره امتحان کنید.", + "error_email_acceptable": "این نشانی رایانامه پذیرفتنی نیست. لطفا باز به آن سر زنید و دوباره بکوشید.", "error_email_unique": "آدرس ایمیل نامعتبر است یا قبلا در سیستم ثبت شده است", "error_email_different": "اکنون، این نشانی رایانامه‌تان شما است", "error_minLength": "باید حداقل {param} حرف داشته باشد", @@ -852,12 +893,12 @@ "onlyExistingConversations": "تنها مکالمات موجود", "onlyFriends": "فقط دوستان", "menu": "فهرست", - "castling": "قلعه رفتن", - "whiteCastlingKingside": "سفید O-O", - "blackCastlingKingside": "سیاه O-O", + "castling": "قلعه‌روی", + "whiteCastlingKingside": "O-O سفید", + "blackCastlingKingside": "O-O سیاه", "tpTimeSpentPlaying": "زمان بازی کردن: {param}", "watchGames": "تماشای بازی ها", - "tpTimeSpentOnTV": "مدت زمان سپری شده در تلویزیون: {param}", + "tpTimeSpentOnTV": "مدت گذرانده در تلویزیون: {param}", "watch": "نگاه کردن", "videoLibrary": "فیلم ها", "streamersMenu": "بَرخَط-محتواسازها", @@ -914,12 +955,12 @@ "toggleVariationArrows": "کلید پیکان‌های شاخه اصلی", "cyclePreviousOrNextVariation": "چرخه پیشین/پسین شاخه اصلی", "toggleGlyphAnnotations": "کلید علائم حرکت‌نویسی", - "togglePositionAnnotations": "تغییر علائم حرکت‌نویسی", + "togglePositionAnnotations": "تغییر حرکت‌نویسی وضعیت", "variationArrowsInfo": "پیکان های شاخه اصلی به شما امکان می‌دهد بدون استفاده از فهرست حرکت، پیمایش کنید.", "playSelectedMove": "حرکت انتخاب شده را بازی کن", "newTournament": "مسابقه جدید", "tournamentHomeTitle": "مسابقات شطرنج با گونه‌ها و زمان‌بندی‌های مختلف", - "tournamentHomeDescription": "هرچه سریع‌تر شطرنج بازی کنید! به یک مسابقه رسمی برنامه‌ریزی‌شده بپیوندید یا مسابقات خودتان را ایجاد کنید. شطرنج گلوله‌ای، برق‌آسا، مرسوم، ۹۶۰، پادشاه تپه‌ها، سه‌کیش و دیگر گزینه‌ها، برای لذت بی‌پایان از شطرنج در دسترس هستند.", + "tournamentHomeDescription": "هرچه زودتر شطرنج بازی کنید! به یک مسابقه رسمی برنامه‌ریزی‌شده بپیوندید یا مسابقات خودتان را بسازید. شطرنج گلوله‌ای، برق‌آسا، مرسوم، ۹۶۰، پادشاه تپه‌ها، سه‌کیش و دیگر گزینه‌ها، برای لذت بی‌پایان از شطرنج در دسترسند.", "tournamentNotFound": "مسابقات یافت نشد", "tournamentDoesNotExist": "این مسابقات وجود ندارد", "tournamentMayHaveBeenCanceled": "ممکن است مسابقه لغو شده باشد,شاید همه ی بازیکنان مسابقه را قبل از شروع ترک کرده باشند", @@ -933,9 +974,9 @@ "yourRating": "درجه‌بندی شما", "cumulative": "تجمعی", "glicko2Rating": "درجه‌بندی Glicko-2", - "checkYourEmail": "ایمیل خود را چک کنید", + "checkYourEmail": "به رایانامه‌تان سر زنید", "weHaveSentYouAnEmailClickTheLink": "ما به شما ایمیل فرستادیم. روی لینکی که در ایمیل است کلیک کنید", - "ifYouDoNotSeeTheEmailCheckOtherPlaces": "اگر رایانامه را نمی‌بینید، مکان‌های دیگری مانند پوشه‌های ناخواسته، هرزنامه، اجتماعی یا سایر موارد را بررسی کنید.", + "ifYouDoNotSeeTheEmailCheckOtherPlaces": "اگر رایانامه را نمی‌بینید، مکان‌های دیگری مانند پوشه‌های ناخواسته، هرزنامه، اجتماعی یا سایر موردها را بررسی کنید.", "weHaveSentYouAnEmailTo": "ایمیل ارسال شد.بر روی لینک داخل ایمیل کلیک کنید تا پسورد شما ریست شود {param} به آدرس", "byRegisteringYouAgreeToBeBoundByOur": "با ثبت‌نام، با {param} موافقت می‌کنید.", "readAboutOur": "درباره {param} ما بخوانید.", @@ -974,16 +1015,16 @@ "bulletBlitzClassical": "گلوله‌ای، برق‌آسا، مرسوم", "correspondenceChess": "شطرنج مکاتبه ای", "onlineAndOfflinePlay": "بازی بَرخط و بُرون‌خط", - "viewTheSolution": "دیدن راهِ حل", + "viewTheSolution": "دیدن راه‌حل", "followAndChallengeFriends": "دنبال کردن و پیشنهاد بازی دادن به دوستان", "gameAnalysis": "تجزیه و تحلیلِ بازی", "xHostsY": "{param1} میزبان ها {param2}", "xJoinsY": "{param1} وارد می شود {param2}", "xLikesY": "{param1} می پسندد {param2}", "quickPairing": "رویارویی سریع", - "lobby": "بازی های ایجادشده", + "lobby": "سَرسَرا", "anonymous": "ناشناس", - "yourScore": "امتیاز شما:{param}", + "yourScore": "امتیازتان: {param}", "language": "زبان", "background": "زمینه", "light": "روشن", @@ -1008,19 +1049,19 @@ "chessBasics": "اصول شطرنج", "coaches": "مربی ها", "invalidPgn": "فایل PGN نامعتبر است", - "invalidFen": "پوزیشن وارد شده نامعتبر است", + "invalidFen": "وضعیت نامعتبر", "custom": "دلخواه", "notifications": "گزارش", "notificationsX": "هشدار: {param1}", "perfRatingX": "درجه‌بندی: {param}", - "practiceWithComputer": "تمرین با کامپیوتر", + "practiceWithComputer": "تمرین با رایانه", "anotherWasX": "حرکت مناسب دیگر {param} بود", "bestWasX": "بهترین حرکت {param} بود", "youBrowsedAway": "پوزیشن را به هم زدید!", "resumePractice": "ادامه تمرین", "drawByFiftyMoves": "بازی با قانون پنجاه حرکت مساوی شده است.", "theGameIsADraw": "بازی مساوی است.", - "computerThinking": "کامپیوتر در حال محاسبه است...", + "computerThinking": "محاسبه رایانه‌ای ...", "seeBestMove": "مشاهده بهترین حرکت", "hideBestMove": "پنهان کردن بهترین حرکت", "getAHint": "راهنمایی", @@ -1032,13 +1073,13 @@ "skipThisMove": "رد کردن این حرکت", "next": "بعدی", "xWasPlayed": "{param} بازی شد", - "findBetterMoveForWhite": "یه حرکت بهتر برای سفید پیدا کنید", - "findBetterMoveForBlack": "یه حرکت بهتر برای سیاه پیدا کنید", + "findBetterMoveForWhite": "حرکت بهتری برای سفید بیابید", + "findBetterMoveForBlack": "حرکت بهتری برای سیاه بیابید", "resumeLearning": "ادامه یادگیری", - "youCanDoBetter": "شما می توانید حرکت بهتری انجام دهید!", + "youCanDoBetter": "می‌توانید بهتر انجامش دهید", "tryAnotherMoveForWhite": "برای سفید،حرکت دیگری را امتحان کنید", "tryAnotherMoveForBlack": "برای سیاه،حرکت دیگری را امتحان کنید", - "solution": "راه حل", + "solution": "راه‌حل", "waitingForAnalysis": "در انتظار برای آنالیز", "noMistakesFoundForWhite": "هیچ اشتباهی برای سفید مشاهده نشد", "noMistakesFoundForBlack": "هیچ اشتباهی برای سیاه مشاهده نشد", @@ -1051,10 +1092,10 @@ "opening": "گشایش", "middlegame": "وسط بازی", "endgame": "آخربازی", - "conditionalPremoves": "پیش حرکت های شرطی", + "conditionalPremoves": "پیش‌حرکت‌های شرطی", "addCurrentVariation": "اضافه کردن این نوع حرکات", "playVariationToCreateConditionalPremoves": "یک نوع حرکات را بازی کنید تا پیش حرکت های شرطی را بسازید", - "noConditionalPremoves": "فاقد پیش حرکت های شرطی", + "noConditionalPremoves": "بدون پیش‌حرکت‌های شرطی", "playX": "{param} را انجام دهید", "showUnreadLichessMessage": "شما یک پیام خصوصی از Lichess دریافت کرده‌اید.", "clickHereToReadIt": "برای خواندن، این را بزنید", @@ -1065,7 +1106,7 @@ "goodPractice": "به همین منظور، ما باید اطمینان حاصل کنیم که تمام بازیکنان تمرین خوب را دنبال میکنند.", "potentialProblem": "زمانی که مشکلی احتمالی شناسایی شد ، این پیام را نمایش می دهیم.", "howToAvoidThis": "چگونه از این امر جلوگیری کنیم؟", - "playEveryGame": "هر بازی که استارت میزنید را بازی کنید.", + "playEveryGame": "هر بازی‌ای که آغازیدید را، بازی کنید.", "tryToWin": "در هر بازی برای پیروزی (یا حداقل تساوی) تلاش کنید.", "resignLostGames": "بازی های از دست رفته را انصراف دهید(نگذارید زمان تمام شود).", "temporaryInconvenience": "ما برای این مشکل موقت عذرخواهی می کنیم،", @@ -1107,18 +1148,18 @@ "unsubscribe": "لغو اشتراک", "mentionedYouInX": "از شما در {param1} نام برده شد.", "xMentionedYouInY": "{param1} اسم شما را در \"{param2}\" ذکر کرده است.", - "invitedYouToX": "شما به \"{param1}\" دعوت شده اید.", - "xInvitedYouToY": "{param1} شما را به \"{param2}\" دعوت کرده است.", + "invitedYouToX": "به «{param1}» دعوت شده‌اید.", + "xInvitedYouToY": "{param1} شما را به «{param2}» دعوت کرده است.", "youAreNowPartOfTeam": "شما در حال حاضر عضوی از تیم هستید.", "youHaveJoinedTeamX": "شما به \"{param1}\" پیوستید.", "someoneYouReportedWasBanned": "شخصی که گزارش کردید مسدود شد", "congratsYouWon": "تبریک، شما برنده شدید!", "gameVsX": "بازی در برابر {param1}", "resVsX": "{param1} در برابر {param2}", - "lostAgainstTOSViolator": "شما در مقابل کسی که قوانین Lichess را نقض کرده، امتیاز درجه‌بندی از دست دادید", + "lostAgainstTOSViolator": "شما در برابر کسی که قانون‌های Lichess را نقض کرده، امتیاز درجه‌بندی از دست دادید", "refundXpointsTimeControlY": "پس‌دادن: {param1} امتیاز به درجه‌بندی {param2}.", "timeAlmostUp": "زمان تقریباً تمام شده است!", - "clickToRevealEmailAddress": "جهت مشاهده ایمیل کلیک کنید", + "clickToRevealEmailAddress": "[برای آشکارسازی نشانی رایانامه بتلیکید]", "download": "بارگیری", "coachManager": "تنظیمات مربی", "streamerManager": "مدیریت پخش", @@ -1131,7 +1172,7 @@ "minimumRatedGames": "حداقل بازی های ریتد", "minimumRating": "حداقل درجه‌بندی", "maximumWeeklyRating": "حداکثر درجه‌بندی هفتگی", - "positionInputHelp": "برای شروع هر بازی از یک پوزیشن مشخص یک FEN معتبر را جایگذاری کنید.\nاین عمل فقط برای بازی های استاندارد امکان پذیر است، نه با واریانت ها.\nشما می توانید {param} را جهت ساخت یک پوزیشن FEN استفاده کنید و سپس اینجا جایگذاری کنید.\nبرای شروع بازی ها از وضعیت عادی ابتدایی خالی بگذارید.", + "positionInputHelp": "برای آغاز هر بازی از یک وضعیت مشخص، یک FEN معتبر جای‌گذارید.\nتنها برای شطرنج معیار کار می‌کند، نه با شطرنج‌گونه‌ها.\nمی‌توانید از {param} برای آزانیدن وضعیت FEN استفاده کنید، سپس آن را اینجا جای‌گذارید.\nبرای آغاز بازی از وضعیت نخستین معمولی، خالی بگذارید.", "cancelSimul": "بازی هم‌زمان (سیمولتانه) را لغو نمایید", "simulHostcolor": "رنگ مربوط به نمایش‌دهنده یا میزبان برای هر بازی", "estimatedStart": "زمان تقریبی شروع بازی", @@ -1140,26 +1181,26 @@ "simulDescription": "توصیف بازی هم‌زمان", "simulDescriptionHelp": "آیا می‌خواهید مطلبی را به شرکت‌کنندگان بگویید؟", "markdownAvailable": "{param} برای کُدهای دستوری پیچیده‌تر در دسترس است.", - "embedsAvailable": "وب‌نشانی بازی یا وب‌نشانی فصل مطالعه را برای جاسازی آن، جایگذاری کنید.", + "embedsAvailable": "وب‌نشانی بازی یا وب‌نشانی بخشی از مطالعه را، برای جاسازی آن، جایگذاری کنید.", "inYourLocalTimezone": "ذر منطقه زمانی شما", "tournChat": "چت مسابقه", "noChat": "بدون چت", "onlyTeamLeaders": "تنها مسئولان تیم", "onlyTeamMembers": "تنها اعضای تیم", - "navigateMoveTree": "لیست درختی کلیدهای مربوط به جابجا شدن", - "mouseTricks": "ترفندهای مربوط به موشواره", - "toggleLocalAnalysis": "از سخت‌افزارِ رایانه خود برای بررسی استفاده نمایید", - "toggleAllAnalysis": "از سخت‌افزارِ رایانه خود و از سرورهای سایت برای بررسی استفاده نمایید", - "playComputerMove": "بهترین حرکت پیشنهادی توسط رایانه را انتخاب و بازی کنید", - "analysisOptions": "امکاناتِ تجزیه و تحلیل", - "focusChat": "تمرکز بر روی امکان چت و نوشتن در آن", + "navigateMoveTree": "ناویدن فهرست حرکت‌ها", + "mouseTricks": "ترفندهای موشواره", + "toggleLocalAnalysis": "تغییر در تحلیل رایانه‌ای محلی", + "toggleAllAnalysis": "تغییر در هرگونه تحلیل رایانه‌ای", + "playComputerMove": "بازی کردن بهترین حرکت رایانه‌ای", + "analysisOptions": "امکاناتِ تحلیل", + "focusChat": "به گپ برو", "showHelpDialog": "نمایش این پنجره راهنما", "reopenYourAccount": "باز کردن مجدد حساب کاربری", "closedAccountChangedMind": "اگر حساب کاربری خود را مسدود کردید، اما بعد از آن نظرتان عوض شد، شما یک فرصت برای بازگرداندنِ حساب کاربری خود خواهید داشت.", - "onlyWorksOnce": "پس از مسدودسازی حساب کاربری فقط یک بار امکان بازیابی آن خواهد بود.", + "onlyWorksOnce": "تنها یک‌بار کار خواهد کرد.", "cantDoThisTwice": "اگر برای بار دوم حساب کاربری خود را مسدود سازید، هیچ راهی برای بازیابی آن وجود نخواهد داشت.", "emailAssociatedToaccount": "آدرس ایمیلی که به حساب کاربری مربوط شده است", - "sentEmailWithLink": "ما یک ایمیل که حاوی یک لینک می‌باشد را به شما ارسال کرده‌ایم.", + "sentEmailWithLink": "ما رایانامه‌ای شامل یک پیوند را به شما فرستاده‌ایم.", "tournamentEntryCode": "کد ورودی مسابقه", "hangOn": "صبر کن!", "gameInProgress": "شما یک بازی در حال انجام با {param} دارید.", @@ -1168,7 +1209,7 @@ "youCantStartNewGame": "شما نمی توانید تا زمانی که این بازی تمام نشده بازی جدیدی آغاز کنید.", "since": "از وقتی که", "until": "تا وقتی که", - "lichessDbExplanation": "بازی‌های رسمی برگزار شده در Lichess", + "lichessDbExplanation": "بازی‌های رسمی برگزاریده در Lichess", "switchSides": "تعویض سمت", "closingAccountWithdrawAppeal": "با بستن حساب خود درخواست تجدید نظر خود را پس خواهید گرفت", "ourEventTips": "پیشنهادهای ما برای برگزاری رویدادها", @@ -1273,5 +1314,5 @@ "stormPlayedNbRunsOfPuzzleStorm": "{count, plural, =1{یک دور از {param2} بازی شد} other{{count} دور از {param2} بازی شد}}", "streamerLichessStreamers": "بَرخَط-محتواسازان Lichess", "studyShareAndExport": "همرسانی و برون‏بُرد", - "studyStart": "شروع" + "studyStart": "آغاز" } \ No newline at end of file diff --git a/lib/l10n/lila_fi.arb b/lib/l10n/lila_fi.arb index 1a34766924..4ddb845b0a 100644 --- a/lib/l10n/lila_fi.arb +++ b/lib/l10n/lila_fi.arb @@ -1,4 +1,45 @@ { + "mobileHomeTab": "Etusivu", + "mobilePuzzlesTab": "Tehtävät", + "mobileToolsTab": "Työkalut", + "mobileWatchTab": "Seuraa", + "mobileSettingsTab": "Asetukset", + "mobileMustBeLoggedIn": "Sinun täytyy olla kirjautuneena nähdäksesi tämän sivun.", + "mobileSystemColors": "Järjestelmän värit", + "mobileFeedbackButton": "Palaute", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Kosketuspalaute", + "mobileSettingsImmersiveMode": "Kokoruututila", + "mobileSettingsImmersiveModeSubtitle": "Piilota laitteen käyttöliittymä pelatessasi. Valitse tämä, jos laitteesi navigointieleet näytön laidoilla ovat sinulle häiriöksi. Asetus vaikuttaa peli- ja Puzzle Storm -näkymiin.", + "mobileNotFollowingAnyUser": "Et seuraa yhtäkään käyttäjää.", + "mobileAllGames": "Kaikki pelit", + "mobileRecentSearches": "Viimeisimmät haut", + "mobileClearButton": "Tyhjennä", + "mobileNoSearchResults": "Ei hakutuloksia", + "mobileAreYouSure": "Oletko varma?", + "mobilePuzzleStreakAbortWarning": "Parhaillaan menossa oleva putkesi päättyy, ja pistemääräsi tallennetaan.", + "mobilePuzzleStormNothingToShow": "Ei näytettävää. Pelaa ensin muutama sarja Puzzle Stormia.", + "mobileSharePuzzle": "Jaa tämä tehtävä", + "mobileShareGameURL": "Jaa pelin URL", + "mobileShareGamePGN": "Jaa PGN", + "mobileSharePositionAsFEN": "Jaa asema FEN:nä", + "mobileShowVariations": "Näytä muunnelmat", + "mobileHideVariation": "Piilota muunnelma", + "mobileShowComments": "Näytä kommentit", + "mobilePuzzleStormConfirmEndRun": "Haluatko lopettaa tämän sarjan?", + "mobilePuzzleStormFilterNothingToShow": "Ei näytettävää, muuta suodatusehtoja", + "mobileCancelTakebackOffer": "Peruuta siirron peruutuspyyntö", + "mobileCancelDrawOffer": "Peruuta tasapeliehdotus", + "mobileWaitingForOpponentToJoin": "Odotetaan vastustajan löytymistä...", + "mobileBlindfoldMode": "Sokko", + "mobileCustomGameJoinAGame": "Liity peliin", + "mobileCorrespondenceClearSavedMove": "Poista tallennettu siirto", + "mobileSomethingWentWrong": "Jokin meni vikaan.", + "mobileShowResult": "Näytä lopputulos", + "mobilePuzzleThemesSubtitle": "Tee tehtäviä suosikkiavauksistasi tai valitse tehtäväteema.", + "mobilePuzzleStormSubtitle": "Ratkaise mahdollisimman monta tehtävää 3 minuutissa.", + "mobileGreeting": "Hei {param}", + "mobileGreetingWithoutName": "Hei", "activityActivity": "Toiminta", "activityHostedALiveStream": "Piti livestreamin", "activityRankedInSwissTournament": "Tuli {param1}. sijalle turnauksessa {param2}", @@ -121,7 +162,7 @@ "preferencesExplainCanThenBeTemporarilyDisabled": "Voidaan poistaa käytöstä pelin aikana lautavalikon kautta", "preferencesInCorrespondenceGames": "Kirjeshakissa", "preferencesCorrespondenceAndUnlimited": "Kirjeshakki ja aikarajaton", - "preferencesConfirmResignationAndDrawOffers": "Vahvista luovutukset ja tasapelitarjoukset", + "preferencesConfirmResignationAndDrawOffers": "Vahvista luovutukset ja tasapeliehdotukset", "preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook": "Kuinka linnoittaudut", "preferencesCastleByMovingTwoSquares": "Siirrä kuningasta kaksi ruutua", "preferencesCastleByMovingOntoTheRook": "Siirrä kuningas tornin päälle", @@ -498,6 +539,7 @@ "latestForumPosts": "Uusimmat foorumiviestit", "players": "Pelaajat", "friends": "Kaverit", + "otherPlayers": "muiden pelaajien", "discussions": "Keskustelut", "today": "Tänään", "yesterday": "Eilen", @@ -604,11 +646,11 @@ "thisAccountViolatedTos": "Tämä käyttäjätunnus rikkoi Lichessin käyttöehtoja", "openingExplorerAndTablebase": "Avausselain ja -tietokanta", "takeback": "Peruuta siirto", - "proposeATakeback": "Ehdota siirron peruutusta", - "takebackPropositionSent": "Siirron peruutusta ehdotettu", - "takebackPropositionDeclined": "Siirron peruutuksen ehdotus hylätty", - "takebackPropositionAccepted": "Siirron peruutuksen ehdotus hyväksytty", - "takebackPropositionCanceled": "Siirron peruutuksen ehdotus peruttu", + "proposeATakeback": "Pyydä siirron peruutusta", + "takebackPropositionSent": "Siirron peruutusta pyydetty", + "takebackPropositionDeclined": "Siirron peruutuspyyntö torjuttu", + "takebackPropositionAccepted": "Siirron peruutuspyyntö hyväksytty", + "takebackPropositionCanceled": "Siirron peruutuspyyntö vedetty pois", "yourOpponentProposesATakeback": "Vastustajasi ehdottaa siirron peruutusta", "bookmarkThisGame": "Jätä kirjanmerkki tähän peliin", "tournament": "Turnaus", @@ -755,6 +797,8 @@ "descPrivateHelp": "Teksti, jonka vain joukkueen jäsenet näkevät. Tähän laadittu kuvaus korvaa joukkueen jäseneiden kohdalla julkisen kuvauksen.", "no": "Ei", "yes": "Kyllä", + "website": "Verkkosivusto", + "mobile": "Mobiili", "help": "Apu:", "createANewTopic": "Luo uusi aihe", "topics": "Aiheet", diff --git a/lib/l10n/lila_fr.arb b/lib/l10n/lila_fr.arb index 284b52ec46..c68f898a26 100644 --- a/lib/l10n/lila_fr.arb +++ b/lib/l10n/lila_fr.arb @@ -4,6 +4,44 @@ "mobileToolsTab": "Outils", "mobileWatchTab": "Regarder", "mobileSettingsTab": "Paramètres", + "mobileMustBeLoggedIn": "Vous devez être connecté pour voir cette page.", + "mobileSystemColors": "Couleurs du système", + "mobileFeedbackButton": "Commentaires", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Mode vibration", + "mobileSettingsImmersiveMode": "Mode plein écran", + "mobileSettingsImmersiveModeSubtitle": "Masquer l'interface système durant la partie. À utiliser lorsque les gestes pour naviguer dans l'interface système sur les bords de l'écran vous gênent. S'applique aux écrans de la partie et des problèmes (Puzzle Storm).", + "mobileNotFollowingAnyUser": "Vous ne suivez aucun utilisateur.", + "mobileAllGames": "Toutes les parties", + "mobileRecentSearches": "Recherches récentes", + "mobileClearButton": "Effacer", + "mobilePlayersMatchingSearchTerm": "Joueurs – \"{param}\"", + "mobileNoSearchResults": "Aucun résultat", + "mobileAreYouSure": "Êtes-vous sûr(e) ?", + "mobilePuzzleStreakAbortWarning": "Votre série actuelle (streak) prendra fin et votre résultat sera sauvegardé.", + "mobilePuzzleStormNothingToShow": "Rien à afficher. Jouez quelques séries de problèmes (Puzzle Storm).", + "mobileSharePuzzle": "Partager ce problème", + "mobileShareGameURL": "Partager l'URL de la partie", + "mobileShareGamePGN": "Partager le PGN", + "mobileSharePositionAsFEN": "Partager la position FEN", + "mobileShowVariations": "Afficher les variantes", + "mobileHideVariation": "Masquer les variantes", + "mobileShowComments": "Afficher les commentaires", + "mobilePuzzleStormConfirmEndRun": "Voulez-vous mettre fin à cette série?", + "mobilePuzzleStormFilterNothingToShow": "Rien à afficher. Veuillez changer les filtres.", + "mobileCancelTakebackOffer": "Annuler la proposition de reprise du coup", + "mobileCancelDrawOffer": "Annuler la proposition de nulle", + "mobileWaitingForOpponentToJoin": "En attente d'un adversaire...", + "mobileBlindfoldMode": "Partie à l'aveugle", + "mobileLiveStreamers": "Diffuseurs en direct", + "mobileCustomGameJoinAGame": "Joindre une partie", + "mobileCorrespondenceClearSavedMove": "Effacer les coups enregistrés", + "mobileSomethingWentWrong": "Une erreur s'est produite.", + "mobileShowResult": "Afficher le résultat", + "mobilePuzzleThemesSubtitle": "Faites des problèmes basés sur vos ouvertures préférées ou choisissez un thème.", + "mobilePuzzleStormSubtitle": "Faites un maximum de problèmes en 3 minutes.", + "mobileGreeting": "Bonjour {param}", + "mobileGreetingWithoutName": "Bonjour", "activityActivity": "Activité", "activityHostedALiveStream": "A hébergé une diffusion en direct", "activityRankedInSwissTournament": "Classé {param1} dans le tournoi {param2}", @@ -503,6 +541,7 @@ "latestForumPosts": "Derniers posts du forum", "players": "Joueurs", "friends": "Amis", + "otherPlayers": "autres joueurs", "discussions": "Discussions", "today": "Aujourd'hui", "yesterday": "Hier", @@ -760,6 +799,8 @@ "descPrivateHelp": "Texte que seuls les membres de l'équipe verront. Si utilisé, remplace la description publique pour les membres de l'équipe.", "no": "Non", "yes": "Oui", + "website": "Site Web", + "mobile": "Appli mobile", "help": "Aide :", "createANewTopic": "Créer un nouveau sujet", "topics": "Sujets", diff --git a/lib/l10n/lila_gl.arb b/lib/l10n/lila_gl.arb index 4970dd4c2a..fd63ec9811 100644 --- a/lib/l10n/lila_gl.arb +++ b/lib/l10n/lila_gl.arb @@ -1,9 +1,47 @@ { "mobileHomeTab": "Inicio", - "mobilePuzzlesTab": "Crebacabezas", + "mobilePuzzlesTab": "Problemas", "mobileToolsTab": "Ferramentas", "mobileWatchTab": "Ver", "mobileSettingsTab": "Axustes", + "mobileMustBeLoggedIn": "Debes iniciar sesión para ver esta páxina.", + "mobileSystemColors": "Cores do sistema", + "mobileFeedbackButton": "Comentarios", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Vibración ó mover", + "mobileSettingsImmersiveMode": "Pantalla completa", + "mobileSettingsImmersiveModeSubtitle": "Oculta a Interface de Usuario mentres xogas. Emprega esta opción se che molestan os xestos de navegación do sistema ós bordos da pantalla. Aplícase ás pantallas da partida e á de Puzzle Storm.", + "mobileNotFollowingAnyUser": "Non estás a seguir a ningún usuario.", + "mobileAllGames": "Todas as partidas", + "mobileRecentSearches": "Procuras recentes", + "mobileClearButton": "Borrar", + "mobilePlayersMatchingSearchTerm": "Xogadores con \"{param}\"", + "mobileNoSearchResults": "Sen resultados", + "mobileAreYouSure": "Estás seguro?", + "mobilePuzzleStreakAbortWarning": "Perderás a túa secuencia actual e o teu resultado gardarase.", + "mobilePuzzleStormNothingToShow": "Non hai nada que amosar. Primeiro xoga algunha quenda de Puzzle Storm.", + "mobileSharePuzzle": "Compartir este crebacabezas", + "mobileShareGameURL": "Compartir a URL da partida", + "mobileShareGamePGN": "Compartir PGN", + "mobileSharePositionAsFEN": "Compartir a posición coma FEN", + "mobileShowVariations": "Amosar variantes", + "mobileHideVariation": "Ocultar variantes", + "mobileShowComments": "Amosar comentarios", + "mobilePuzzleStormConfirmEndRun": "Queres rematar esta quenda?", + "mobilePuzzleStormFilterNothingToShow": "Non aparece nada. Por favor, cambia os filtros", + "mobileCancelTakebackOffer": "Cancelar a proposta de cambio", + "mobileCancelDrawOffer": "Cancelar a oferta de táboas", + "mobileWaitingForOpponentToJoin": "Agardando un rival...", + "mobileBlindfoldMode": "Á cega", + "mobileLiveStreamers": "Presentadores en directo", + "mobileCustomGameJoinAGame": "Unirse a unha partida", + "mobileCorrespondenceClearSavedMove": "Borrar a xogada gardada", + "mobileSomethingWentWrong": "Algo foi mal.", + "mobileShowResult": "Amosar o resultado", + "mobilePuzzleThemesSubtitle": "Resolve crebacabezas das túas aperturas favoritas ou elixe un tema.", + "mobilePuzzleStormSubtitle": "Resolve tantos crebacabezas como sexa posible en 3 minutos.", + "mobileGreeting": "Ola, {param}", + "mobileGreetingWithoutName": "Ola", "activityActivity": "Actividade", "activityHostedALiveStream": "Emitiu en directo", "activityRankedInSwissTournament": "{param1}º na clasificación de {param2}", @@ -503,6 +541,7 @@ "latestForumPosts": "Últimas publicacións no foro", "players": "Xogadores", "friends": "Amizades", + "otherPlayers": "outros xogadores", "discussions": "Conversas", "today": "Hoxe", "yesterday": "Onte", @@ -760,6 +799,8 @@ "descPrivateHelp": "Texto que só verán os membros do equipo. Se se emprega, substitúe á descrición pública cando sexa visto polos membros do equipo.", "no": "Non", "yes": "Si", + "website": "Páxina web", + "mobile": "Móbil", "help": "Axuda:", "createANewTopic": "Crear novo tema", "topics": "Temas", diff --git a/lib/l10n/lila_gsw.arb b/lib/l10n/lila_gsw.arb new file mode 100644 index 0000000000..eb1c30da21 --- /dev/null +++ b/lib/l10n/lila_gsw.arb @@ -0,0 +1,1318 @@ +{ + "mobileHomeTab": "Afangssite", + "mobilePuzzlesTab": "Ufgabe", + "mobileToolsTab": "Werchzüg", + "mobileWatchTab": "Luege", + "mobileSettingsTab": "Ischtelle", + "mobileMustBeLoggedIn": "Muesch iglogt si, zum die Site z'gseh.", + "mobileSystemColors": "Syschtem-Farbe", + "mobileFeedbackButton": "Rückmäldig", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Rückmäldig mit Vibration", + "mobileSettingsImmersiveMode": "Ibettete Modus", + "mobileSettingsImmersiveModeSubtitle": "UI-Syschtem während em schpille usblände. Benutz die Option, wänn dich d'Navigationsgeschte, vum Sysychtem, am Bildschirmrand störed. Das gilt für Schpiel- und Puzzle Storm-Bildschirm.", + "mobileNotFollowingAnyUser": "Du folgsch keim Schpiller.", + "mobileAllGames": "Alli Partie", + "mobileRecentSearches": "Kürzlich Gsuechts", + "mobileClearButton": "Leere", + "mobilePlayersMatchingSearchTerm": "Schpiller mit \"{param}%", + "mobileNoSearchResults": "Nüt g'funde", + "mobileAreYouSure": "Bisch sicher?", + "mobilePuzzleStreakAbortWarning": "Du verlürsch din aktuelle Lauf und din Rekord wird g'schpeicheret.", + "mobilePuzzleStormNothingToShow": "Es git nüt zum Zeige. Schpill zerscht ochli Puzzle Storm.", + "mobileSharePuzzle": "Teil die Ufgab", + "mobileShareGameURL": "Teil d'Schpiel-URL", + "mobileShareGamePGN": "Teil s'PGN", + "mobileSharePositionAsFEN": "Teil d'Position als FEN", + "mobileShowVariations": "Zeig Variante", + "mobileHideVariation": "Variante verberge", + "mobileShowComments": "Zeig Kommentär", + "mobilePuzzleStormConfirmEndRun": "Wottsch de Lauf beände?", + "mobilePuzzleStormFilterNothingToShow": "Nüt zum Zeige, bitte d'Filter ändere", + "mobileCancelTakebackOffer": "Zugsrücknam-Offerte zruggzieh", + "mobileCancelDrawOffer": "Remis-Agebot zruggzieh", + "mobileWaitingForOpponentToJoin": "Warte bis en Gegner erschint...", + "mobileBlindfoldMode": "Blind schpille", + "mobileLiveStreamers": "Live Streamer", + "mobileCustomGameJoinAGame": "Bi ere Partie mitschpille", + "mobileCorrespondenceClearSavedMove": "Lösch die gschpeicherete Züg", + "mobileSomethingWentWrong": "Es isch öppis schief gange.", + "mobileShowResult": "Resultat zeige", + "mobilePuzzleThemesSubtitle": "Schpill Ufgabe mit dine Lieblings-Eröffnige oder wähl es Thema.", + "mobilePuzzleStormSubtitle": "Lös i 3 Minute so vill Ufgabe wie möglich.", + "mobileGreeting": "Hoi, {param}", + "mobileGreetingWithoutName": "Hoi", + "activityActivity": "Aktivitäte", + "activityHostedALiveStream": "Hät en Live Stream gmacht", + "activityRankedInSwissTournament": "Hät Rang #{param1} im Turnier {param2} erreicht", + "activitySignedUp": "Hät sich bi lichess.org agmäldet", + "activitySupportedNbMonths": "{count, plural, =1{Underschtüzt lichess.org sit {count} Monet als {param2}} other{Underschtützt lichess.org sit {count} Mönet als {param2}}}", + "activityPracticedNbPositions": "{count, plural, =1{Hät {count} Schtellig bi {param2} güebt} other{Hät {count} Schtellige bi {param2} güebt}}", + "activitySolvedNbPuzzles": "{count, plural, =1{Hät {count} Taktikufgab glöst} other{Hät {count} Taktikufgabe glöst}}", + "activityPlayedNbGames": "{count, plural, =1{Hät {count} Partie {param2} gschpillt} other{Hät {count} Partie {param2} gschpillt}}", + "activityPostedNbMessages": "{count, plural, =1{Hät {count} Nachricht in {param2} gschribe} other{Hät {count} Nachrichte in {param2} gschribe}}", + "activityPlayedNbMoves": "{count, plural, =1{Hät {count} Zug gschpillt} other{Hät {count} Züg gschpillt}}", + "activityInNbCorrespondenceGames": "{count, plural, =1{i {count} Fernschachpartie} other{i {count} Fernschachpartie}}", + "activityCompletedNbGames": "{count, plural, =1{Hät {count} Fernschachpartie gschpillt} other{Hät {count} Fernschachpartie gschpillt}}", + "activityFollowedNbPlayers": "{count, plural, =1{Folgt {count} Schpiller} other{Folgt {count} Schpiller}}", + "activityGainedNbFollowers": "{count, plural, =1{Hät {count} neui Folgendi} other{Hät {count} neui Folgendi}}", + "activityHostedNbSimuls": "{count, plural, =1{Hät {count} Simultanschach gmacht} other{Hät {count} Simultanschachs gmacht}}", + "activityJoinedNbSimuls": "{count, plural, =1{Hät a {count} Simultanschach mitgmacht} other{Hät a {count} Simultanschachs mitgmacht}}", + "activityCreatedNbStudies": "{count, plural, =1{Hät {count} neui Schtudie erschtellt} other{Hät {count} neui Schtudie erschtellt}}", + "activityCompetedInNbTournaments": "{count, plural, =1{Hät a {count} Turnier teilgnah} other{Hät a {count} Turnier teilgnah}}", + "activityRankedInTournament": "{count, plural, =1{Hät Rang #{count} (oberi {param2}%) mit {param3} Schpiel in {param4} erreicht} other{Hät Rang #{count} (oberi {param2}%) mit {param3} Schpiel in {param4} erreicht}}", + "activityCompetedInNbSwissTournaments": "{count, plural, =1{Hät a {count} Turnier nach \"Schweizer System\" teilgnah} other{Hät a {count} Turnier nach \"Schweizer System\" teilgnah}}", + "activityJoinedNbTeams": "{count, plural, =1{Isch {count} Team biträte} other{Isch {count} Teams biträte}}", + "broadcastBroadcasts": "Überträgige", + "broadcastLiveBroadcasts": "Live Turnier-Überträgige", + "challengeChallengesX": "Useforderige: {param1}", + "challengeChallengeToPlay": "Zunere Partie usefordere", + "challengeChallengeDeclined": "Useforderig abglehnt", + "challengeChallengeAccepted": "Useforderig agnah!", + "challengeChallengeCanceled": "Useforderig zrugg'zoge.", + "challengeRegisterToSendChallenges": "Bitte regischtier dich, zum Useforderige schicke.", + "challengeYouCannotChallengeX": "Du chasch {param} nöd usefordere.", + "challengeXDoesNotAcceptChallenges": "{param} akzeptiert kei Useforderige.", + "challengeYourXRatingIsTooFarFromY": "Dini {param1} Wertig isch z'wit vu {param2} entfernt.", + "challengeCannotChallengeDueToProvisionalXRating": "Useforderig wäge provisorischer {param} Wertig nöd möglich.", + "challengeXOnlyAcceptsChallengesFromFriends": "{param} akzeptiert nur Useforderige vu Fründe.", + "challengeDeclineGeneric": "Ich akzeptiere momentan kei Useforderige.", + "challengeDeclineLater": "Ich han grad kei Zit, bitte frög spöter nomal.", + "challengeDeclineTooFast": "Die Bedänkzit isch mir z'churz, bitte forder mich für es langsamers Schpiel.", + "challengeDeclineTooSlow": "Die Bedänkzit isch mir z'lang, bitte forder mich für es schnällers Schpiel.", + "challengeDeclineTimeControl": "Ich akzeptiere kei Schpiel, mit dere Bedänkzit.", + "challengeDeclineRated": "Bitte schick mir, anstell vu dem, e Forderig für es g'wertets Spiel.", + "challengeDeclineCasual": "Bitte schick mir, anstell vu dem, e Forderig für es ung'wertets Spiel.", + "challengeDeclineStandard": "Ich nimme momentan kei Useforderige für anderi Schpielvariante a.", + "challengeDeclineVariant": "Ich wott momentan die Variante nöd schpille.", + "challengeDeclineNoBot": "Ich akzeptiere kei Useforderige vu Bots.", + "challengeDeclineOnlyBot": "Ich akzeptiere nur Useforderige vu Bots.", + "challengeInviteLichessUser": "Oder tue en Lichess User ilade:", + "contactContact": "Kontakt", + "contactContactLichess": "Lichess kontaktiere", + "patronDonate": "Schpände", + "patronLichessPatron": "Lichess Gönner", + "perfStatPerfStats": "{param}-Schtatischtike", + "perfStatViewTheGames": "Schpil azeige", + "perfStatProvisional": "provisorisch", + "perfStatNotEnoughRatedGames": "Nöd gnueg gwerteti Schpil, für e verlässlichi Wertig z'errächne.", + "perfStatProgressOverLastXGames": "Fortschritt über di letschte {param} Schpil:", + "perfStatRatingDeviation": "Wertigssabwichig: {param}.", + "perfStatRatingDeviationTooltip": "En niedrige Wert bedütet, dass d'Wertig schtabiler isch. Über {param1} wird d'Wertig als provisorisch betrachtet. In Ranglischtene chunnt mer, wänn de Wert under {param2} (Standard) oder {param3} (Variante) isch.", + "perfStatTotalGames": "Alli Schpil", + "perfStatRatedGames": "Gwerteti Schpil", + "perfStatTournamentGames": "Turnier Schpil", + "perfStatBerserkedGames": "Berserk Schpil", + "perfStatTimeSpentPlaying": "Gsamti Schpillzit", + "perfStatAverageOpponent": "Durchschnittlichi Gägnerwertig", + "perfStatVictories": "Sieg", + "perfStatDefeats": "Niederlage", + "perfStatDisconnections": "Verbindigsabbrüch", + "perfStatNotEnoughGames": "Nöd gnueg Schpil gschpillt", + "perfStatHighestRating": "Höchschti Wertigszahl: {param}", + "perfStatLowestRating": "Tüfschti Wertigszahl: {param}", + "perfStatFromXToY": "vu {param1} bis {param2}", + "perfStatWinningStreak": "Sieges Serie", + "perfStatLosingStreak": "Niderlage Serie", + "perfStatLongestStreak": "Längschti Serie: {param}", + "perfStatCurrentStreak": "Aktuelli Serie: {param}", + "perfStatBestRated": "die beschte Sieg", + "perfStatGamesInARow": "In Serie gschpillti Partie", + "perfStatLessThanOneHour": "Weniger als 1 Schtund zwüsche de Schpil", + "perfStatMaxTimePlaying": "Maximali Schpillzit", + "perfStatNow": "jetzt", + "preferencesPreferences": "Ischtellige", + "preferencesDisplay": "Azeige", + "preferencesPrivacy": "Privatsfähre", + "preferencesNotifications": "Mäldige", + "preferencesPieceAnimation": "Figure Animation", + "preferencesMaterialDifference": "Materialunderschid", + "preferencesBoardHighlights": "Markierige ufem Brätt (letschte Zug und Schach)", + "preferencesPieceDestinations": "Zilfälder markiere (gültigi Züg und Voruszüg)", + "preferencesBoardCoordinates": "Brättkoordinate (A - H / 1 - 8)", + "preferencesMoveListWhilePlaying": "Zugslischte während em Schpiel zeige", + "preferencesPgnPieceNotation": "Zugsnotation", + "preferencesChessPieceSymbol": "Schachfigure Symbol", + "preferencesPgnLetter": "Buechstabe (K - Q - R - B - N)", + "preferencesZenMode": "Zen Modus", + "preferencesShowPlayerRatings": "Zeig Schpiller Wertige", + "preferencesShowFlairs": "Benutzer-Emojis azeige", + "preferencesExplainShowPlayerRatings": "Das erlaubt s'Usblände vu allne Wertige uf de Site und hilft, sich ufs Schach z'konzentriere. Partie chönd immer no bewertet werde, es gaht nur um das, was du gsesch.", + "preferencesDisplayBoardResizeHandle": "Zeig de Brättgrössi Regler", + "preferencesOnlyOnInitialPosition": "Nur bi de Afangsschtellig", + "preferencesInGameOnly": "Nur im Schpiel", + "preferencesChessClock": "Schachuhr", + "preferencesTenthsOfSeconds": "Zähntelsekunde", + "preferencesWhenTimeRemainingLessThanTenSeconds": "Bi Reschtzit < 10 Sekunde", + "preferencesHorizontalGreenProgressBars": "Horizontali grüeni Fortschrittsbalke", + "preferencesSoundWhenTimeGetsCritical": "Warnig, bi wenig Zit", + "preferencesGiveMoreTime": "Gib meh Zit", + "preferencesGameBehavior": "Schpielverhalte", + "preferencesHowDoYouMovePieces": "Wie wottsch Figure bewege?", + "preferencesClickTwoSquares": "Klick Schtartfäld und Zielfäld", + "preferencesDragPiece": "Figur mit Cursor zieh", + "preferencesBothClicksAndDrag": "Beides", + "preferencesPremovesPlayingDuringOpponentTurn": "Voruszüg (Premoves), während de Gägner am Zug isch", + "preferencesTakebacksWithOpponentApproval": "Zugsrücknahm (mit Erlaubnis vom Gägner)", + "preferencesInCasualGamesOnly": "Nur in ungwertete Schpiel", + "preferencesPromoteToQueenAutomatically": "Automatischi Umwandlig zur Dame", + "preferencesExplainPromoteToQueenAutomatically": "Druck bi de Umwandlig, so wird sie vorübergehend abgschtellt", + "preferencesWhenPremoving": "Bim Voruszug", + "preferencesClaimDrawOnThreefoldRepetitionAutomatically": "Automatischs Remis bi 3 Mal glicher Stellig", + "preferencesWhenTimeRemainingLessThanThirtySeconds": "Bi Reschtzit < 30 Sekunde", + "preferencesMoveConfirmation": "Zugsbeschtätigung", + "preferencesExplainCanThenBeTemporarilyDisabled": "Chann während eme Schpil im Brättmenü deaktiviert werde", + "preferencesInCorrespondenceGames": "Bi Fernschach", + "preferencesCorrespondenceAndUnlimited": "Bi Fernschach und ohni Uhr", + "preferencesConfirmResignationAndDrawOffers": "Ufgab und Remis Agebot beschtätige", + "preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook": "Rochade Usfüherig", + "preferencesCastleByMovingTwoSquares": "Zieh de König 2 Fälder", + "preferencesCastleByMovingOntoTheRook": "Zieh de König zum Turm", + "preferencesInputMovesWithTheKeyboard": "Züg mit de Taschtatur usfühere", + "preferencesInputMovesWithVoice": "Züg per Sprachigab", + "preferencesSnapArrowsToValidMoves": "Möglichi Züg werded mit Pfil azeigt", + "preferencesSayGgWpAfterLosingOrDrawing": "Säg \"guet gschpillt\" nach ere Niderlag oder bi me Remis", + "preferencesYourPreferencesHaveBeenSaved": "Dini Ischtellige sind gschpeicheret.", + "preferencesScrollOnTheBoardToReplayMoves": "Mit em Muszeiger uf em Brätt, chasch mit em Musrad all Züg vor- und zrugg scrolle", + "preferencesCorrespondenceEmailNotification": "Täglichi E-Mail-Benachrichtigung, wo Dini Fernschachpartie uflischtet", + "preferencesNotifyStreamStart": "De Streamer gaht live", + "preferencesNotifyInboxMsg": "Neui Nachricht im Poschtigang", + "preferencesNotifyForumMention": "En Forumkommentar erwähnt dich", + "preferencesNotifyInvitedStudy": "Zur Schtudie ilade", + "preferencesNotifyGameEvent": "Aktualisierig vum Korreschpondänzschpiel", + "preferencesNotifyChallenge": "Useforderige", + "preferencesNotifyTournamentSoon": "Turnier schtarted bald", + "preferencesNotifyTimeAlarm": "Korreschpondänzzit lauft ab", + "preferencesNotifyBell": "Akustischi Mäldig, innerhalb Lichess", + "preferencesNotifyPush": "Mäldig vum Grät, wänn du nöd uf Lichess bisch", + "preferencesNotifyWeb": "Browser", + "preferencesNotifyDevice": "Grät", + "preferencesBellNotificationSound": "Ton für Benachrichtige", + "puzzlePuzzles": "Ufgabe", + "puzzlePuzzleThemes": "Ufgabe Theme", + "puzzleRecommended": "Empfohle", + "puzzlePhases": "Schpiel Fase", + "puzzleMotifs": "Situation", + "puzzleAdvanced": "Fortgschritte", + "puzzleLengths": "Länge", + "puzzleMates": "Matts", + "puzzleGoals": "Ziel", + "puzzleOrigin": "Herkunft", + "puzzleSpecialMoves": "Spezielli Züg", + "puzzleDidYouLikeThisPuzzle": "Hät dir d'Ufgab g'falle?", + "puzzleVoteToLoadNextOne": "Stimm ab, um die Nächscht z'lade!", + "puzzleUpVote": "Die Ufgab positiv bewerte", + "puzzleDownVote": "Die Ufgab negativ bewerte", + "puzzleYourPuzzleRatingWillNotChange": "Dini Ufgabe-Wertig veränderet sich nöd. Eusi Ufgabe sind kein Wettbewerb. Dini Wertig hilft nur Ufgabe z'wähle, wo zu dinere aktuelle Schpielstärchi passed.", + "puzzleFindTheBestMoveForWhite": "Find de bescht Zug für Wiss.", + "puzzleFindTheBestMoveForBlack": "Find de bescht Zug für Schwarz.", + "puzzleToGetPersonalizedPuzzles": "Für personalisierti Ufgabe muesch:", + "puzzlePuzzleId": "Ufgab {param}", + "puzzlePuzzleOfTheDay": "Ufgab vom Tag", + "puzzleDailyPuzzle": "Täglichi Ufgab", + "puzzleClickToSolve": "Zum Löse klicke", + "puzzleGoodMove": "Guete Zug", + "puzzleBestMove": "Beschte Zug!", + "puzzleKeepGoing": "Blib dra…", + "puzzlePuzzleSuccess": "Korräkt!", + "puzzlePuzzleComplete": "Ufgab abgschlosse!", + "puzzleByOpenings": "Nach Eröffnige", + "puzzlePuzzlesByOpenings": "Ufgabe nach Eröffnige", + "puzzleOpeningsYouPlayedTheMost": "Dini meischt-gschpillte Eröffnige, i gwertete Partie", + "puzzleUseFindInPage": "Benutz im Browser \"Suchen...\", um dini bevorzugti Eröffnig z'finde!", + "puzzleUseCtrlF": "Find dini bevorzugti Eröffnig mit Ctrl+F !", + "puzzleNotTheMove": "Das isch nöd de Zug!", + "puzzleTrySomethingElse": "Probier öppis Anders.", + "puzzleRatingX": "Wertig: {param}", + "puzzleHidden": "verschteckt", + "puzzleFromGameLink": "Us de Partie {param}", + "puzzleContinueTraining": "Witer trainiere", + "puzzleDifficultyLevel": "Schwierigi Stufe", + "puzzleNormal": "Normal", + "puzzleEasier": "Eifacher", + "puzzleEasiest": "Am eifachschte", + "puzzleHarder": "Schwieriger", + "puzzleHardest": "Am schwierigschte", + "puzzleExample": "Bischpil", + "puzzleAddAnotherTheme": "Es witers Motiv zuefüege", + "puzzleNextPuzzle": "nächschti Ufgab", + "puzzleJumpToNextPuzzleImmediately": "Diräkt zur nächschte Ufgab", + "puzzlePuzzleDashboard": "Ufgabe Übersicht", + "puzzleImprovementAreas": "Verbesserigs Bereich", + "puzzleStrengths": "Stärche", + "puzzleHistory": "Ufgabe Verlauf", + "puzzleSolved": "glöst", + "puzzleFailed": "unglöst", + "puzzleStreakDescription": "Lös immer schwierigeri Ufgabe und versuech e langi Erfolgserie z'erreiche. Nimm dir Zit, es lauft kei Uhr. Doch nur 1 falsche Zug und es isch verbi! Aber du chasch 1 Zug pro Serie überschpringe.", + "puzzleYourStreakX": "Dini Erfolgsserie: {param}", + "puzzleStreakSkipExplanation": "Überschpring de Zug, um dini Erfolgsserie z'hebe! Aber du chasch das nur 1x pro Serie mache.", + "puzzleContinueTheStreak": "Erfolgsserie witerfüehre", + "puzzleNewStreak": "Neui Erfolgsserie", + "puzzleFromMyGames": "Us eigene Schpil", + "puzzleLookupOfPlayer": "Suech Ufgabe us de Partie vu me Schpiller", + "puzzleFromXGames": "Ufgabe us Partie vu {param}", + "puzzleSearchPuzzles": "Suech Ufgabe", + "puzzleFromMyGamesNone": "Eu häsch kei Ufgabe i de Datäbank, aber Lichess schätzt dich immerno sehr.\n\nSchpill schnälli und klassischi Partie, so erhöht sich d'Chance, dass au Ufgabe us dine eigene Schpil zuegfüegt werded!", + "puzzleFromXGamesFound": "{param1} Ufgabe in {param2} Partie gfunde", + "puzzlePuzzleDashboardDescription": "Trainiere analysiere und besser werde", + "puzzlePercentSolved": "{param} glöst", + "puzzleNoPuzzlesToShow": "Es git no nüt zum Zeige, lös zerscht es paar Ufgabe!", + "puzzleImprovementAreasDescription": "Trainier mit dene Ufgabe und optimier din Fortschritt!", + "puzzleStrengthDescription": "Dini Leischtig isch am beschte i dene Theme", + "puzzlePlayedXTimes": "{count, plural, =1{{count} mal gschpillt} other{{count} mal gschpillt}}", + "puzzleNbPointsBelowYourPuzzleRating": "{count, plural, =1{1 Punkt under dinere Ufgabe-Wertig} other{{count} Pünkt under dinere Ufgabe-Wertig}}", + "puzzleNbPointsAboveYourPuzzleRating": "{count, plural, =1{1 Punkt über dinere Ufgabe-Wertig} other{{count} Pünkt über dinere Ufgabe-Wertig}}", + "puzzleNbPlayed": "{count, plural, =1{{count} gschpillt} other{{count} gschpillt}}", + "puzzleNbToReplay": "{count, plural, =1{{count} widerhole} other{{count} widerhole}}", + "puzzleThemeAdvancedPawn": "Vorgruckte Puur", + "puzzleThemeAdvancedPawnDescription": "En Pur isch tüf i di gägnerisch Schtellig vorgruckt und droht sich umzuwandle.", + "puzzleThemeAdvantage": "Vorteil", + "puzzleThemeAdvantageDescription": "Nutz dini Chance, en entscheidende Vorteil z'erlange. (200 Hundertstelpure ≤ Bewertung ≤ 600 Hundertstelpure)", + "puzzleThemeAnastasiaMate": "Anastasia's Matt", + "puzzleThemeAnastasiaMateDescription": "En Schpringer und en Turm oder e Dame schaffed zäme, um de König, zwüschet em Brättrand und sine eigene Figure, z'verwütsche.", + "puzzleThemeArabianMate": "Arabischs Matt", + "puzzleThemeArabianMateDescription": "En Schpringer und en Turm schaffed zäme, um de König im Egge z'fange.", + "puzzleThemeAttackingF2F7": "Agriff uf f2 oder f7", + "puzzleThemeAttackingF2F7Description": "En Agriff, wo sich uf d'Pure uf f2 oder f7 konzentriert.", + "puzzleThemeAttraction": "Aziehigschraft", + "puzzleThemeAttractionDescription": "En Tusch oder es Opfer, wo e gägnerischi Figur uf es Fäld länkt oder zwingt, was dänn e Folgetaktik ermöglicht.", + "puzzleThemeBackRankMate": "Grundreihe Matt", + "puzzleThemeBackRankMateDescription": "De König uf de Grundreihe matt setze, wänn er dur sini eigene Figure blockiert isch.", + "puzzleThemeBishopEndgame": "Läufer Ändschpil", + "puzzleThemeBishopEndgameDescription": "Es Ändschpil, nur mit Läufer und Pure.", + "puzzleThemeBodenMate": "Boden Matt", + "puzzleThemeBodenMateDescription": "Zwei Läufer, uf sich chrüzende Diagonale, setzed en König matt, wo dur eigeni Figure behinderet wird.", + "puzzleThemeCastling": "Rochade", + "puzzleThemeCastlingDescription": "Bring de König in Sicherheit und schick de Turm in Agriff.", + "puzzleThemeCapturingDefender": "Schlag de Verteidiger", + "puzzleThemeCapturingDefenderDescription": "Schlag e Figur, wo e Anderi entscheidend deckt, dass die Ungschützti im nächschte Zug gschlage werde chann.", + "puzzleThemeCrushing": "Vernichtend", + "puzzleThemeCrushingDescription": "Find de gägnerisch Patzer und chumm zume vernichtende Vorteil. (Bewertig ≥ 600 Hundertschtel-Pure)", + "puzzleThemeDoubleBishopMate": "Läuferpaar Matt", + "puzzleThemeDoubleBishopMateDescription": "Zwei Läufer, uf näbenand ligende Diagonale, setzed en König matt, wo dur eigeni Figure behinderet wird.", + "puzzleThemeDovetailMate": "Schwalbeschwanz Matt", + "puzzleThemeDovetailMateDescription": "Mit de Dame - diräkt bim König - matt setze, wobi sini Fluchtfälder dur eigeni Figure verschtellt sind.", + "puzzleThemeEquality": "Usglich", + "puzzleThemeEqualityDescription": "Befrei dich us verlorener Schtellig und sicher dir es Remis oder en usglicheni Schtellig. (Bewertig ≤ 200 Hundertstelpure)", + "puzzleThemeKingsideAttack": "Agriff am Königsflügel", + "puzzleThemeKingsideAttackDescription": "En Agriff uf de gägnerisch König, nachdem er am Königsflügel d'Rochade gmacht hät.", + "puzzleThemeClearance": "Öffnig", + "puzzleThemeClearanceDescription": "En Zug - oft mit Tämpo - wo es Fäld, e Linie oder e Diagonale für e folgendi, taktischi Idee frei macht.", + "puzzleThemeDefensiveMove": "Verteidigungszug", + "puzzleThemeDefensiveMoveDescription": "En gnaue Zug oder e Zugfolg, wo nötig isch, um kei Material oder Vorteil z'verlüre.", + "puzzleThemeDeflection": "Ablänkig", + "puzzleThemeDeflectionDescription": "En Zug, wo e gägnerischi Figur devo ablänkt e Figur oder es wichtigs Fäld z'schütze. Wird au als \"Überlaschtig\" bezeichnet.", + "puzzleThemeDiscoveredAttack": "Abzugsagriff", + "puzzleThemeDiscoveredAttackDescription": "Me nimmt (z. B. en Schpringer) wo vorher en Agriff dur e anderi, wit weg stehendi, Figur (z. B. en Turm) blockiert hät, us em Wäg.", + "puzzleThemeDoubleCheck": "Doppelschach", + "puzzleThemeDoubleCheckDescription": "Abzug mit doppletem Schachgebot, wobi die vorher verdeckti Figur- und die Abzogeni, de König glichzitig agrifed.", + "puzzleThemeEndgame": "Ändschpil", + "puzzleThemeEndgameDescription": "E Taktik für die letscht Fase vu de Partie.", + "puzzleThemeEnPassantDescription": "E Taktik wo \"En-Passant\" beinhaltet - e Regle wo en Pur cha en gägnerische Pur schlaa, wänn de ihn mit em \"Zwei-Fälder-Zug\" übergange hät.", + "puzzleThemeExposedKing": "Exponierte König", + "puzzleThemeExposedKingDescription": "E Taktik wo de König nu vu wenige Figure verteidigt wird und oft zu Schachmatt fühert.", + "puzzleThemeFork": "Gable", + "puzzleThemeForkDescription": "En Zug wobi die zogeni Figur glichzitig 2 gägnerischi Figure agrift.", + "puzzleThemeHangingPiece": "Hängendi Figur", + "puzzleThemeHangingPieceDescription": "E Taktik wo e gägnerischi Figur zwenig oder gar nöd deckt isch und drum, mit Vorteil, gschlage werde cha.", + "puzzleThemeHookMate": "Hake Matt", + "puzzleThemeHookMateDescription": "Schachmatt mit Turm, Schpringer und Pur und eim gägnerische Pur, wo em König d'Flucht verschperrt.", + "puzzleThemeInterference": "Störig", + "puzzleThemeInterferenceDescription": "E Figur zwüsche 2 gägnerischi Figure stelle, um einere oder beide de Schutz znäh - z. B. en Schpringer uf es verteidigts Fäld, zwüsche 2 Türm, stelle.", + "puzzleThemeIntermezzo": "Zwüschezug", + "puzzleThemeIntermezzoDescription": "Anstatt de erwarteti Zug, zerscht en Andere mache, wo diräkt droht, so dass de Gägner muess reagiere. Isch au bekannt als \"Zwüschezug\".", + "puzzleThemeKnightEndgame": "Schpringer Ändschpil", + "puzzleThemeKnightEndgameDescription": "Es Ändschpiel, nur mit Schpringer und Pure.", + "puzzleThemeLong": "Mehrzügigi Ufgab", + "puzzleThemeLongDescription": "3 Züg zum Sieg.", + "puzzleThemeMaster": "Meischter Partie", + "puzzleThemeMasterDescription": "Ufgabe us Partie vu Schpiller mit Titel.", + "puzzleThemeMasterVsMaster": "Meischter gäge Meischter Partie", + "puzzleThemeMasterVsMasterDescription": "Ufgabe us Partie vu 2 Schpiller mit Titel.", + "puzzleThemeMate": "Schachmatt", + "puzzleThemeMateDescription": "Günn das Schpiel mit Schtil.", + "puzzleThemeMateIn1": "Matt in 1", + "puzzleThemeMateIn1Description": "Schachmatt mit 1 Zug.", + "puzzleThemeMateIn2": "Matt in 2", + "puzzleThemeMateIn2Description": "Schachmatt mit 2 Züg.", + "puzzleThemeMateIn3": "Matt in 3", + "puzzleThemeMateIn3Description": "Schachmatt mit 3 Züg.", + "puzzleThemeMateIn4": "Matt in 4", + "puzzleThemeMateIn4Description": "Schachmatt mit 4 Züg.", + "puzzleThemeMateIn5": "Matt in 5 oder meh", + "puzzleThemeMateIn5Description": "Find e langi Mattfüherig.", + "puzzleThemeMiddlegame": "Mittelschpiel", + "puzzleThemeMiddlegameDescription": "E Taktik für die zweit Fase vu de Partie.", + "puzzleThemeOneMove": "1-zügigi Ufgab", + "puzzleThemeOneMoveDescription": "E Ufgab, mit nur 1 Zug.", + "puzzleThemeOpening": "Eröffnig", + "puzzleThemeOpeningDescription": "E Taktik für die erscht Fase vu de Partie.", + "puzzleThemePawnEndgame": "Pure Ändschpiel", + "puzzleThemePawnEndgameDescription": "Es Ändschpiel nur mit Pure.", + "puzzleThemePin": "Fesslig", + "puzzleThemePinDescription": "E Taktik mit Fesslig, wo sich e Figur nöd bewege cha, ohni de Angriff uf e stärcheri Figur z'verrate.", + "puzzleThemePromotion": "Umwandlig", + "puzzleThemePromotionDescription": "En Pur zur Dame oder andere Figur umwandle.", + "puzzleThemeQueenEndgame": "Dame Ändschpiel", + "puzzleThemeQueenEndgameDescription": "Es Ändschpiel nur mit Dame und Pure.", + "puzzleThemeQueenRookEndgame": "Dame und Turm", + "puzzleThemeQueenRookEndgameDescription": "Es Ändschpiel nur mit Dame Türm und Pure.", + "puzzleThemeQueensideAttack": "Agriff am Dameflügel", + "puzzleThemeQueensideAttackDescription": "En Agriff uf de gägnerisch König, nachdem er am Dameflügel d'Rochade gmacht hät.", + "puzzleThemeQuietMove": "Schtille Zug", + "puzzleThemeQuietMoveDescription": "En Zug wo kei \"Schach\" bütet, wo nüt schlaht und au nöd droht öppis z'schlah, wo aber - verschteckt - e unvermeidlichi Drohig dur en schpöter folgende Zug vorbereitet.", + "puzzleThemeRookEndgame": "Turm Ändschpiel", + "puzzleThemeRookEndgameDescription": "Es Ändschpiel nur mit Türm und Pure.", + "puzzleThemeSacrifice": "Opfer", + "puzzleThemeSacrificeDescription": "E Taktik, wo churzfrischtig Material gopferet wird, um dänn mit erzwungener Zugfolg wieder en Vorteil z'günne.", + "puzzleThemeShort": "Churzi Ufgab", + "puzzleThemeShortDescription": "2 Züg zum Sieg.", + "puzzleThemeSkewer": "Schpiess (Hinderschtellig)", + "puzzleThemeSkewerDescription": "Bim \"Schpiess\" wird e Figur, wo vor ere Andere staht - oft wird sie au dezue zwunge, sich vor die Ander z'schtelle - agriffe, so dass sie us em Wäg muess und ermöglicht, die Hinder z'schlah. Quasi umgekehrti Fesslig.", + "puzzleThemeSmotheredMate": "Erschtickigs Matt", + "puzzleThemeSmotheredMateDescription": "Es Schachmatt mit em Springer, wo sich de König nöd bewege cha, will er vu sine eigene Figuren umstellt-, also vollkomme igschlosse, wird.", + "puzzleThemeSuperGM": "Super-Grossmeischter-Partie", + "puzzleThemeSuperGMDescription": "Ufgabe us Partie, vu de beschte Schpiller uf de Wält.", + "puzzleThemeTrappedPiece": "G'fangeni Figur", + "puzzleThemeTrappedPieceDescription": "E Figur cha em Schlah nöd entgah, will sie nur begränzt Züg mache cha.", + "puzzleThemeUnderPromotion": "Underverwandlig", + "puzzleThemeUnderPromotionDescription": "Umwandlig in \"nur\" en Schpringer, Läufer oder Turm.", + "puzzleThemeVeryLong": "Sehr langi Ufgab", + "puzzleThemeVeryLongDescription": "4 oder meh Züg bis zum Sieg.", + "puzzleThemeXRayAttack": "Röntge Agriff", + "puzzleThemeXRayAttackDescription": "E Figur attackiert oder verteidigt es Fäld dur e gägnerischi Figur.", + "puzzleThemeZugzwang": "Zugszwang", + "puzzleThemeZugzwangDescription": "De Gägner hät nur e limitierti Azahl Züg und Jede verschlächteret sini Schtellig.", + "puzzleThemeHealthyMix": "En gsunde Mix", + "puzzleThemeHealthyMixDescription": "Es bitzli vu Allem, me weiss nöd was eim erwartet, drum isch mer uf alles g'fasst - genau wie bi richtige Schachschpiel.", + "puzzleThemePlayerGames": "Schpiller Partie", + "puzzleThemePlayerGamesDescription": "Suech nach Ufgabe us dine Schpiel oder Ufgabe us Schpiel vu Andere.", + "puzzleThemePuzzleDownloadInformation": "Die Ufgabe sind öffentlich, mer channs abelade under {param}.", + "searchSearch": "Suechi", + "settingsSettings": "Ischtellige", + "settingsCloseAccount": "Benutzerkonto schlüsse", + "settingsManagedAccountCannotBeClosed": "Dis Konto wird verwaltet, es chann nöd geschlosse werde.", + "settingsClosingIsDefinitive": "Die Schlüssig isch ändgültig. Es git keis Z'rugg! Bisch du sicher?", + "settingsCantOpenSimilarAccount": "Es isch nöd erlaubt es neus Konto mit em gliche Name z'eröffne, au wänn d'Gross- und d'Chlischribig andersch isch.", + "settingsChangedMindDoNotCloseAccount": "Ich ha mini Meinig gändert, schlüssed mis Benutzerkonto nöd", + "settingsCloseAccountExplanation": "Bisch du sicher, dass du dis Benutzerkonto schlüsse wottsch? Dini Entscheidig zum Schlüsse isch ändgültigi. Du chasch nachher NIE MEH ilogge.", + "settingsThisAccountIsClosed": "Das Benutzerkonto isch g'schlosse.", + "playWithAFriend": "Schpill mit eme Fründ", + "playWithTheMachine": "Schpill mit em Computer", + "toInviteSomeoneToPlayGiveThisUrl": "Wottsch öpper zum Schpille ilade - schick die URL", + "gameOver": "Schpiel verbi", + "waitingForOpponent": "Uf de Gägner warte", + "orLetYourOpponentScanQrCode": "Oder lass din Gägner de QR-Code skänne", + "waiting": "Am Warte", + "yourTurn": "Du bisch dra", + "aiNameLevelAiLevel": "{param1} Schtufe {param2}", + "level": "Schtufe", + "strength": "Schpillstärchi", + "toggleTheChat": "Chat a und abschalte", + "chat": "Chat", + "resign": "Ufgeh", + "checkmate": "Schachmatt", + "stalemate": "Patt", + "white": "Wiss", + "black": "Schwarz", + "asWhite": "als Wiss", + "asBlack": "als Schwarz", + "randomColor": "Farb zuefällig", + "createAGame": "Erschtell e Partie", + "whiteIsVictorious": "Wiss günnt", + "blackIsVictorious": "Schwarz günnt", + "youPlayTheWhitePieces": "Du schpillsch mit Wiss", + "youPlayTheBlackPieces": "Du schpillsch mit Schwarz", + "itsYourTurn": "Du bisch dra!", + "cheatDetected": "Betrug bemerkt", + "kingInTheCenter": "König im Zäntrum", + "threeChecks": "Drümal Schach", + "raceFinished": "Ränne beändet", + "variantEnding": "Variante ändet", + "newOpponent": "En neue Gägner", + "yourOpponentWantsToPlayANewGameWithYou": "Din Gägner wett es neus Schpil mit dir schpille", + "joinTheGame": "Tritt de Partie bi", + "whitePlays": "Wiss am Zug", + "blackPlays": "Schwarz am Zug", + "opponentLeftChoices": "Din Gägner hät s'Schpiel verlah. Du chasch de Sieg beaschpruche, es Remis mache oder warte.", + "forceResignation": "Sieg beaschpruche", + "forceDraw": "Remis mälde", + "talkInChat": "Bitte blib nett im Chat!", + "theFirstPersonToComeOnThisUrlWillPlayWithYou": "Die erscht Person, wo die URL klickt, schpillt mit dir.", + "whiteResigned": "Wiss hät ufgeh", + "blackResigned": "Schwarz hät ufgeh", + "whiteLeftTheGame": "Wiss hät d'Partie verlah", + "blackLeftTheGame": "Schwarz hät d'Partie verlah", + "whiteDidntMove": "Wiss hät nöd zoge", + "blackDidntMove": "Schwarz hät nöd zoge", + "requestAComputerAnalysis": "Computer-Analyse afordere", + "computerAnalysis": "Computer-Analyse", + "computerAnalysisAvailable": "Computer-Analyse verfüegbar", + "computerAnalysisDisabled": "Computer-Analyse deaktiviert", + "analysis": "Analysebrätt", + "depthX": "Tüfi: {param}", + "usingServerAnalysis": "Server-Analyse benutze", + "loadingEngine": "Engine wird glade ...", + "calculatingMoves": "Zugs-Berächnig...", + "engineFailed": "Fähler bim Engine lade", + "cloudAnalysis": "Cloud-Analyse", + "goDeeper": "Gang tüfer", + "showThreat": "Bedrohig azeige", + "inLocalBrowser": "im lokale Browser", + "toggleLocalEvaluation": "Lokali Uswertig a und abschalte", + "promoteVariation": "Variante ufwerte", + "makeMainLine": "Zur Hauptvariante mache", + "deleteFromHere": "Ab da lösche", + "collapseVariations": "Variante kollabiere", + "expandVariations": "Variante erwitere", + "forceVariation": "Variante erzwinge", + "copyVariationPgn": "PGN Variante kopiere", + "move": "Zug", + "variantLoss": "Variante verlore", + "variantWin": "Variante gwunne", + "insufficientMaterial": "Nöd gnueg Material", + "pawnMove": "Pure-Zug", + "capture": "Schlag-Zug", + "close": "Schlüsse", + "winning": "Gwünn-Zug", + "losing": "Verlore", + "drawn": "Remis", + "unknown": "Unbekannt", + "database": "Datäbank", + "whiteDrawBlack": "Wiss / Remis / Schwarz", + "averageRatingX": "Durchschnittlichi Wertigszahl: {param}", + "recentGames": "Aktuelli Partie", + "topGames": "Beschti-Partie", + "masterDbExplanation": "2 Millione OTB Schpil vu {param1}+ FIDE-gwertete Schpiller vu {param2} bis {param3}", + "dtzWithRounding": "DTZ50'' mit Rundig, basierend uf de Azahl Halbzüg bis zum nächschte Schlag- oder Pure-Zug", + "noGameFound": "Keis Schpiel gfunde", + "maxDepthReached": "Die maximali Tüfi isch erreicht!", + "maybeIncludeMoreGamesFromThePreferencesMenu": "Villicht sötted meh Schpiel vom Iischteligs Menü ibezoge werde?", + "openings": "Eröffnige", + "openingExplorer": "Eröffnigsdatäbank", + "openingEndgameExplorer": "Eröffnigs- / Ändschpiel-Explorer", + "xOpeningExplorer": "{param} Eröffnigs-Explorer", + "playFirstOpeningEndgameExplorerMove": "Erschte Eröffnigs-/Endschpil-Erkundigszug schpille", + "winPreventedBy50MoveRule": "Sieg mit de 50-Züg-Regle verhinderet", + "lossSavedBy50MoveRule": "Verluscht dur d 50-Züg-Reglä verhinderät", + "winOr50MovesByPriorMistake": "Sieg oder 50 Züg dur en vorherige Fähler", + "lossOr50MovesByPriorMistake": "Niderlag oder 50 Züg dur en vorherige Fähler", + "unknownDueToRounding": "Sieg/Niderlag nur garantiert, wänn die empfohle Datäbank-Zugfolg sit em letschte Schlag- oder Pure-Zug befolgt worde isch, da möglicherwis DTZ-Wert i de Syzygy-Datäbank grundet sind.", + "allSet": "Fertig!", + "importPgn": "PGN importierä", + "delete": "Lösche", + "deleteThisImportedGame": "Das importierte Schpiel lösche?", + "replayMode": "Widergabemodus", + "realtimeReplay": "Ächtzit", + "byCPL": "Nach CPL", + "openStudy": "Schtudie eröffne", + "enable": "Ischalte", + "bestMoveArrow": "Pfil für de bescht Zug", + "showVariationArrows": "Pfil für Variante azeige", + "evaluationGauge": "Bewertigs-Massschtab", + "multipleLines": "Mehreri Variantä", + "cpus": "Prozässore", + "memory": "Arbetsschpeicher", + "infiniteAnalysis": "Unändlichi Analyse", + "removesTheDepthLimit": "Entfernt d'Tüfebegränzig und haltet din Computer warm", + "engineManager": "Engine Betreuer", + "blunder": "En Patzer", + "mistake": "Fähler", + "inaccuracy": "Ungnauigkeit", + "moveTimes": "Zugzite", + "flipBoard": "Brätt umcheere", + "threefoldRepetition": "Drüüfachi Stelligswiederholig", + "claimADraw": "Es Remis beaschpruche", + "offerDraw": "Remis abüte", + "draw": "Remis", + "drawByMutualAgreement": "Remis dur Einigung", + "fiftyMovesWithoutProgress": "50 Züg ohni Fortschritt", + "currentGames": "Laufendi Partie", + "viewInFullSize": "In voller Grössi azeige", + "logOut": "Abmälde", + "signIn": "Ilogge", + "rememberMe": "Erinner dich a mich", + "youNeedAnAccountToDoThat": "Für das bruchsch du es Benutzerkonto", + "signUp": "Regischtriere", + "computersAreNotAllowedToPlay": "Computer und Computer-Understützig isch nöd erlaubt. Bitte lass dir bim Schpille nöd vu Schachengines, Datäbanke oder andere Schpiller hälfe. \nAu vum Erschtelle vu mehrere Konte wird dringend abgrate - übermässigs Multikonteverhalte chann zume Usschluss fühere.", + "games": "Partie", + "forum": "Forum", + "xPostedInForumY": "{param1} hät zum Thema {param2} öppis gschribä", + "latestForumPosts": "Neuschti Forum-Biträg", + "players": "Schpiller", + "friends": "Fründe", + "otherPlayers": "anderi Schpiller", + "discussions": "Underhaltige", + "today": "Hüt", + "yesterday": "Geschter", + "minutesPerSide": "Minute pro Schpiller", + "variant": "Variante", + "variants": "Variante", + "timeControl": "Bedänkzit", + "realTime": "Ächtzit", + "correspondence": "Fernschach", + "daysPerTurn": "Täg pro Zug", + "oneDay": "Ein Tag", + "time": "Zit", + "rating": "Wertig", + "ratingStats": "Wertigs-Statistike", + "username": "Benutzername", + "usernameOrEmail": "Benutzername oder E-Mail-Adrässe", + "changeUsername": "Benutzername ändere", + "changeUsernameNotSame": "Me chann nur d'Gross-/Chlischriibig verändere, z. B. \"grosspatzer\" in \"GrossPatzer\".", + "changeUsernameDescription": "Korrigier din Benutzername: Das gaht aber nur eimal und mer chann nur d'Gros- und d'Chlischribig verändere.", + "signupUsernameHint": "Wähl bitte en aschtändige Benutzername. Du chasch en nachträglich nöd ändere und jedes Konto mit untolerierbarem Name wird gschlosse!", + "signupEmailHint": "Mir benutzed sie nur zum s'Passwort zruggsetze.", + "password": "Passwort", + "changePassword": "Passwort ändere", + "changeEmail": "E-Mail-Adrässe ändere", + "email": "E-Mail", + "passwordReset": "Passwort zruggsetze", + "forgotPassword": "Passwort vergässe?", + "error_weakPassword": "So es Passwort isch extrem hüfig und liecht z'knacke!", + "error_namePassword": "Nimm bitte nöd din Benutzername als Passwort!", + "blankedPassword": "Du häsch das Passwort scho noime anderscht benutzt und ebe det isch's missbrucht worde. Zum d'Sicherheit vu dim Lichess-Konto z'gwähre, muesch es nois Passwort kreiere. Mir danked dir für dis Verschtändnis.", + "youAreLeavingLichess": "Du verlahsch jetzt Lichess", + "neverTypeYourPassword": "Benutz dis Lichess-Passwort nie uf andere Website!", + "proceedToX": "Witer zu {param}", + "passwordSuggestion": "Setz keis Passwort, wo dir e anderi Person vorgschlage hät. Suscht chan dis Konto gschtohle werde.", + "emailSuggestion": "Setz kei E-Mail-Adrässe, wo dir e anderi Person vorgschlage hät. Suscht chan dis Konto gschtohle werde.", + "emailConfirmHelp": "Hilf bi de E-Mail Beschtätigung", + "emailConfirmNotReceived": "Häsch nach de Amäldig kei Beschtätigungs-Mail übercho?", + "whatSignupUsername": "Mit welem Benutzername häsch dich agmäldet?", + "usernameNotFound": "Mir händ kein Benutzer mit em Name {param} gfunde.", + "usernameCanBeUsedForNewAccount": "Du chasch de Name verwände, zum es neus Konto erschtelle", + "emailSent": "Mir händ es E-Mail a {param} gschickt.", + "emailCanTakeSomeTime": "Es brucht ochli Zit, bis es achunnt.", + "refreshInboxAfterFiveMinutes": "Wart 5 Minute und check dini E-Mail-Inbox.", + "checkSpamFolder": "Lueg au im Spam-Ordner, es chönnt det glandet si. Wänn ja, lösch d'Spam-Markierig.", + "emailForSignupHelp": "Wänn alles nöd gaht, schick eus die E-Mail:", + "copyTextToEmail": "Kopier de oberi Text, füeg en i und schick en an {param}", + "waitForSignupHelp": "Mir mälded eus in Chürzi, dass du dini Amäldig abschlüsse chasch.", + "accountConfirmed": "De Benutzer {param} isch erfolgrich beschtätigt.", + "accountCanLogin": "Du chasch jetzt als {param} ilogge.", + "accountConfirmationEmailNotNeeded": "Du muesch kei Beschtätigungs-E-Mail übercho.", + "accountClosed": "s'Konto {param} isch gschlosse.", + "accountRegisteredWithoutEmail": "s'Konto {param} isch ohni E-Mail-Adrässe regischtriert worde.", + "rank": "Rang", + "rankX": "Platz: {param}", + "gamesPlayed": "Gschpillti Partie", + "cancel": "Abbräche", + "whiteTimeOut": "Wiss hät d'Zit überschritte", + "blackTimeOut": "Schwarz hät d'Zit überschritte", + "drawOfferSent": "Remis-Agebot gsändet", + "drawOfferAccepted": "Remis-Agebot akzeptiert", + "drawOfferCanceled": "Remis-Agebot zruggzoge", + "whiteOffersDraw": "Wiss offeriert Remis", + "blackOffersDraw": "Schwarz offeriert Remis", + "whiteDeclinesDraw": "Wiss lähnt es Remis ab", + "blackDeclinesDraw": "Schwarz lähnt es Remis ab", + "yourOpponentOffersADraw": "Din Gägner offeriert es Remis", + "accept": "Akzeptiere", + "decline": "Ablehnä", + "playingRightNow": "Partie isch am laufe", + "eventInProgress": "Lauft jetzt", + "finished": "Beändet", + "abortGame": "Partie abbräche", + "gameAborted": "Partie abbroche", + "standard": "Standard", + "customPosition": "Benutzerdefinierti Schtellig", + "unlimited": "Unbegränzt", + "mode": "Modus", + "casual": "Ungwertet", + "rated": "Gwertet", + "casualTournament": "Ungwertet", + "ratedTournament": "Gwertet", + "thisGameIsRated": "Das Schpiel isch gwertet", + "rematch": "Revanche", + "rematchOfferSent": "Agebot zur Revanche gsändet", + "rematchOfferAccepted": "Revanche-Agebot aktzeptiert", + "rematchOfferCanceled": "Revanche-Agebot zruggzoge", + "rematchOfferDeclined": "Revanche-Agebot abglähnt", + "cancelRematchOffer": "Revanche-Agebot zruggneh", + "viewRematch": "Revanche aluege", + "confirmMove": "Zug beschtätige", + "play": "Schpille", + "inbox": "Poschtigang", + "chatRoom": "Chatruum", + "loginToChat": "Zum Tschätte amälde", + "youHaveBeenTimedOut": "Du häsch es verordnets timeout.", + "spectatorRoom": "Zueschauerruum", + "composeMessage": "Nachricht verfasse", + "subject": "Beträff", + "send": "Schicke", + "incrementInSeconds": "Inkrement in Sekunde", + "freeOnlineChess": "Gratis Online-Schach", + "exportGames": "Partie exportiere", + "ratingRange": "Wertigsbereich", + "thisAccountViolatedTos": "Das Konto hät gäge d'Lichess-Nutzigsbedingige verschtosse", + "openingExplorerAndTablebase": "Eröffnigsbuech & Ändschpiel-Datäbank", + "takeback": "Zugsrücknahm", + "proposeATakeback": "Zugsrücknahm vorschlah", + "takebackPropositionSent": "Vorschlag zur Zugsrücknahm gsändet", + "takebackPropositionDeclined": "Zugsrücknahm abglehnt", + "takebackPropositionAccepted": "Zugsrücknahm akzeptiert", + "takebackPropositionCanceled": "Zugsrücknahm zruggzoge", + "yourOpponentProposesATakeback": "Din Gägner wott de letscht Zug zruggneh", + "bookmarkThisGame": "Das Schpiel mit eme Läsezeiche markiere", + "tournament": "Turnier", + "tournaments": "Turnier", + "tournamentPoints": "Turnierpünkt", + "viewTournament": "Turnier zueluege", + "backToTournament": "Zrugg zum Turnier", + "noDrawBeforeSwissLimit": "Ime Turnier, nach \"Schweizer System\", chann me erscht nach 30 Züg Remis mache.", + "thematic": "Thematisch", + "yourPerfRatingIsProvisional": "Dini {param} Wertig isch provisorisch", + "yourPerfRatingIsTooHigh": "Dini {param1} Wertig ({param2}) isch z'höch", + "yourTopWeeklyPerfRatingIsTooHigh": "Dini höchschti {param1} Wertig ({param2}) isch z'höch", + "yourPerfRatingIsTooLow": "Dini {param1} Wertig ({param2}) isch z'tüüf", + "ratedMoreThanInPerf": "Gwertet ≥ {param1} in {param2}", + "ratedLessThanInPerf": "Wertig ≤ {param1} im {param2} die letschte 7 Täg", + "mustBeInTeam": "Du muesch im Team {param} si", + "youAreNotInTeam": "Du bisch nöd im Team {param}", + "backToGame": "Zrugg zum Schpiel", + "siteDescription": "Gratis Online Schach Server: Schpill Schach uf ere suubere Benutzeroberflächi! Kei Regrischtrierig, kei Werbig, kei Plugins. Schpill Schach gäge Computer, mit Fründe oder gäge zuefällig gwählti Gägner.", + "xJoinedTeamY": "{param1} isch jetzt im Team {param2}", + "xCreatedTeamY": "{param1} hät s'Team {param2} gründet", + "startedStreaming": "hät agfange Streame", + "xStartedStreaming": "{param} hät mit Streame agfange", + "averageElo": "Durchschnittswertig", + "location": "Ortschaft/Land", + "filterGames": "Partie filtere", + "reset": "Zruggsetze", + "apply": "Awände", + "save": "Schpeichere", + "leaderboard": "Ranglischte", + "screenshotCurrentPosition": "En Screenshot vu de aktuelle Schtellig mache", + "gameAsGIF": "Schpiel als GIF", + "pasteTheFenStringHere": "Füeg de FEN-Tegscht da i", + "pasteThePgnStringHere": "Füeg de PGN-Tegscht da i", + "orUploadPgnFile": "Oder lad e PGN-Datei ufe", + "fromPosition": "Ab Schtellig", + "continueFromHere": "Vu da us witer schpille", + "toStudy": "Schtudie", + "importGame": "Partie importiere", + "importGameExplanation": "Füeg e Schpiel-PGN i, für Zuegriff uf Schpielwiderholig, Computeranalyse, Chat und e teilbari URL.", + "importGameCaveat": "d'Variazione werded glöscht. Zums b'halte, muesch d'PGN mit ere Schtudie importiere.", + "importGameDataPrivacyWarning": "De PGN isch öffentlich zuegänglich. Zum es Schpiel privat importiere, nimmsch e Schtudie.", + "thisIsAChessCaptcha": "Das isch es Schach Captcha.", + "clickOnTheBoardToMakeYourMove": "Klick ufs Brätt und mach en Zug, \nzum bewise dass du en Mänsch bisch.", + "captcha_fail": "Bitte lös die Schach Ufgab.", + "notACheckmate": "Das isch keis Matt", + "whiteCheckmatesInOneMove": "Wiss setzt i eim Zug Matt", + "blackCheckmatesInOneMove": "Schwarz setzt i eim Zug Matt", + "retry": "Probiers nomal", + "reconnecting": "Widerverbindä", + "noNetwork": "Offline", + "favoriteOpponents": "Hüfigschti Gägner", + "follow": "Verfolge", + "following": "Verfolg ich", + "unfollow": "Nümme folge", + "followX": "{param} folge", + "unfollowX": "{param} nümme folge", + "block": "Blockiärä", + "blocked": "Blockiärt", + "unblock": "Blockierig ufhebe", + "followsYou": "Folgt dir", + "xStartedFollowingY": "{param1} folgt jetzt {param2}", + "more": "Meh", + "memberSince": "Mitglid sit", + "lastSeenActive": "Zletscht aktiv {param}", + "player": "Schpiller", + "list": "Lischtä", + "graph": "Grafik", + "required": "Pflichtfäld.", + "openTournaments": "Offeni Turnier", + "duration": "Duur", + "winner": "Sieger", + "standing": "Tabälle", + "createANewTournament": "Erschtell es neus Turnier", + "tournamentCalendar": "Turnier Kaländer", + "conditionOfEntry": "Teilnahmebedingige:", + "advancedSettings": "Erwiterti Ischtellige", + "safeTournamentName": "Wähl en möglichscht sichere Name fürs Turnier.", + "inappropriateNameWarning": "Alles - au liecht Unagmässes - cha zur Schlüssig vu dim Konto fühere.", + "emptyTournamentName": "Frei la zum s'Turnier nach eme namhafte Schachschpiller z'benänne.", + "makePrivateTournament": "Mach das Turnier privat und beschränk de Zuegang mit Passwort", + "join": "Mach mit", + "withdraw": "Usstige", + "points": "Pünkt", + "wins": "Sieg", + "losses": "Niederlage", + "createdBy": "Erschtellt vo", + "tournamentIsStarting": "s'Turnier fangt a", + "tournamentPairingsAreNowClosed": "Es werded kei Turnierschpiel meh gschpillt.", + "standByX": "Achtung {param}, es git neui Paarige, mach dich parat!", + "pause": "underbräche", + "resume": "wieder ischtige", + "youArePlaying": "Dis Schpiel fangt a!", + "winRate": "Gwünn Rate", + "berserkRate": "Berserkrate", + "performance": "Leischtig", + "tournamentComplete": "Das Turnier isch fertig", + "movesPlayed": "Gschpillti Züg", + "whiteWins": "Sieg mit Wiss", + "blackWins": "Sieg mit Schwarz", + "drawRate": "Remis-Rate", + "draws": "Remis", + "nextXTournament": "Nächschts {param} Turnier:", + "averageOpponent": "Durchschnitt - Gägner", + "boardEditor": "Schtellig ufbaue", + "setTheBoard": "Brätt ufbaue", + "popularOpenings": "Beliebti Eröffnige", + "endgamePositions": "Ändschpiel-Posizione", + "chess960StartPosition": "Schach960 Afangsschtellig: {param}", + "startPosition": "Afangsposition", + "clearBoard": "Brätt lösche", + "loadPosition": "Schtellig lade", + "isPrivate": "Privat", + "reportXToModerators": "Mäld {param} de Moderatore", + "profileCompletion": "Profil-Vollschtändigkeit: {param}", + "xRating": "{param} Wertigszahl", + "ifNoneLeaveEmpty": "Nur wänn vorhande", + "profile": "Profil", + "editProfile": "Profil bearbeite", + "realName": "Richtige Name", + "setFlair": "Wähl dis Emoji", + "flair": "Emoji", + "youCanHideFlair": "Alli Benutzer-Emojis chönnd - uf de ganze Site - usbländet werde.", + "biography": "Biografie", + "countryRegion": "Land, Region oder Kanton", + "thankYou": "Ich danke dir!", + "socialMediaLinks": "Social Media Links", + "oneUrlPerLine": "Nur 1 Web Adrässe (URL) pro Zile.", + "inlineNotation": "Inline-Notation", + "makeAStudy": "Zum Variante sicher ufzbewahre und zum Witergeh, söttsch e Schtudie erschtelle.", + "clearSavedMoves": "Gschpeichereti Züg lösche", + "previouslyOnLichessTV": "Zletscht uf Lichess TV", + "onlinePlayers": "Online Schpiller", + "activePlayers": "Aktivi Schpiller", + "bewareTheGameIsRatedButHasNoClock": "Achtung, das Schpiel isch gwertet, aber ohni Zitlimit!", + "success": "Korräkt", + "automaticallyProceedToNextGameAfterMoving": "Nach em Zug automatisch zur nächschte Partie", + "autoSwitch": "Automatische Wächsel", + "puzzles": "Ufgabe", + "onlineBots": "Online Roboter", + "name": "Name", + "description": "Beschribig", + "descPrivate": "Privati Beschribig", + "descPrivateHelp": "Tegscht wo nur Team-Mitglider gsehnd. Wänn usgfüllt, ersetzt er für sie de Öffentlichi.", + "no": "Nei", + "yes": "Ja", + "website": "Website", + "mobile": "Mobil", + "help": "Hilf:", + "createANewTopic": "Erschtell es neus Thema", + "topics": "Theme", + "posts": "Biträg", + "lastPost": "Letschte Bitrag", + "views": "Bsüech", + "replies": "Antwortä", + "replyToThisTopic": "Uf das Thema antwortä", + "reply": "Antwortä", + "message": "Nachricht", + "createTheTopic": "Mach es Thema", + "reportAUser": "Mäld en Benutzer", + "user": "Benutzer", + "reason": "Grund", + "whatIsIheMatter": "Was isch s'Problem?", + "cheat": "Bschiss", + "troll": "Troll", + "other": "Suschtigs", + "reportDescriptionHelp": "Füeg de Link dere/dene Partie bi und erchlär, wie sich de Benutzer falsch benah hät. Säg nöd nur \"de bschisst\", schrib eus wie du da druf chunnsch. (änglisch gschribeni Mäldige, werded schnäller behandlet).", + "error_provideOneCheatedGameLink": "Bitte gib mindeschtens 1 Link zume Schpiel a, wo bschisse worde isch.", + "by": "vu {param}", + "importedByX": "Importiert vu {param}", + "thisTopicIsNowClosed": "Das Thema isch jetzt gschlosse.", + "blog": "Blog", + "notes": "Notize", + "typePrivateNotesHere": "Gib privati Notize da i", + "writeAPrivateNoteAboutThisUser": "Schrib e privati Notiz über de Benutzer", + "noNoteYet": "No kei Notiz vorhande", + "invalidUsernameOrPassword": "Ungültige Benutzername oder Passwort", + "incorrectPassword": "Falschs Passwort", + "invalidAuthenticationCode": "Ungültige Authentifizierigscode", + "emailMeALink": "Schick mer per E-Mail en Link", + "currentPassword": "Aktuells Passwort", + "newPassword": "Neus Passwort", + "newPasswordAgain": "Neus Passwort (nomal)", + "newPasswordsDontMatch": "Die neue Passwörter sind nöd glich", + "newPasswordStrength": "Passwortstärchi", + "clockInitialTime": "Grundbedänkzit", + "clockIncrement": "Zit-Inkrement", + "privacy": "Privatsphäre", + "privacyPolicy": "Datäschutzbeschtimmige", + "letOtherPlayersFollowYou": "Lass anderi Schpiller dir folge", + "letOtherPlayersChallengeYou": "Lass anderi Schpiller dich fordere", + "letOtherPlayersInviteYouToStudy": "Andere Schpiller erlaube, dich zu ere Schtudie izlade", + "sound": "Ton", + "none": "Keine", + "fast": "Schnäll", + "normal": "Normal", + "slow": "Langsam", + "insideTheBoard": "Uf em Brätt", + "outsideTheBoard": "Usse vum Brätt", + "allSquaresOfTheBoard": "Uf jedem Fäld", + "onSlowGames": "Bi langsame Partie", + "always": "Immer", + "never": "Nie", + "xCompetesInY": "{param1} nimmt bi {param2} teil", + "victory": "Sieg", + "defeat": "Niderlag", + "victoryVsYInZ": "{param1} gäge {param2} in {param3}", + "defeatVsYInZ": "{param1} gäge {param2} in {param3}", + "drawVsYInZ": "{param1} gäge {param2} in {param3}", + "timeline": "Verlauf", + "starting": "Schtartet:", + "allInformationIsPublicAndOptional": "Alli Informatione sind öffentlich und freiwillig.", + "biographyDescription": "Verzell öppis über dich: dini Inträsse, was du gern häsch bim Schach, dini liebschte Eröffnige oder Schpiller wo du guet findsch, etc...", + "listBlockedPlayers": "Lischte vu de Schpiller, wo du blockiert häsch", + "human": "Mänsch", + "computer": "Computer", + "side": "Farb", + "clock": "Uhr", + "opponent": "Gägner", + "learnMenu": "Lerne", + "studyMenu": "Schtudie", + "practice": "Trainiere", + "community": "Gmeinschaft", + "tools": "Werchzüg", + "increment": "Inkrement", + "error_unknown": "ungültigi Agab", + "error_required": "Das isch es Pflichtfäld", + "error_email": "Die E-Mail-Adrässe isch ungültig", + "error_email_acceptable": "Die E-Mail-Adrässe wird nöd akzeptiert. Bitte überprüef sie und probiers nomal.", + "error_email_unique": "Die E-Mail-Adrässe isch ungültig oder bereits vorhande", + "error_email_different": "Das isch bereits dini E-Mail-Adrässe", + "error_minLength": "Muess mindeschtens {param} Zeiche lang si", + "error_maxLength": "Dörf höchschtens {param} Zeiche lang si", + "error_min": "Muess mindeschtens {param} si", + "error_max": "Dörf höchschtens {param} si", + "ifRatingIsPlusMinusX": "Wänn d'Wertig ± {param} isch", + "ifRegistered": "Wänn regischtriert", + "onlyExistingConversations": "Nur bestehendi Underhaltige", + "onlyFriends": "Nur Fründe", + "menu": "Menü", + "castling": "Rochade", + "whiteCastlingKingside": "Wiss 0-0", + "blackCastlingKingside": "Schwarz 0-0", + "tpTimeSpentPlaying": "Gsamti-Schpillzit: {param}", + "watchGames": "Partie zueluege", + "tpTimeSpentOnTV": "Gsamtzit uf Lichess TV: {param}", + "watch": "Zueluege", + "videoLibrary": "Video-Bibliothek", + "streamersMenu": "Streamer", + "mobileApp": "Mobili App", + "webmasters": "Webmaster", + "about": "Über", + "aboutX": "Über {param}", + "xIsAFreeYLibreOpenSourceChessServer": "{param1} isch en freie, quälle-offene Schachserver. Gratis ({param2}) und ohni Werbig.", + "really": "würkli", + "contribute": "Mitmache", + "termsOfService": "Nutzigs-Bedingige", + "sourceCode": "Quällcode", + "simultaneousExhibitions": "Simultanschach Veraschtaltige", + "host": "Simultanschpiller", + "hostColorX": "Farb Simultanschpiller: {param}", + "yourPendingSimuls": "Dini usstehende Simultanschachs", + "createdSimuls": "Neu kreierts Simultanschach", + "hostANewSimul": "Mach dir es Simultanschach", + "signUpToHostOrJoinASimul": "Mäld dich - als Gaschtgeber oder Teilnehmer - bime Simultanschach a", + "noSimulFound": "Simultanschach nöd gfunde", + "noSimulExplanation": "Das Simultanschach exischtiert nöd.", + "returnToSimulHomepage": "Zrugg zur Simultanschach Startsite", + "aboutSimul": "Bim Simultanschach schpillt 1 Simultanschpiller \nglichzitig gäge beliebig vill Simultangägner.", + "aboutSimulImage": "Hät de Bobby Fischer, bi 50 Gägner, 47 Sieg \nund 2 Remis gschafft; nur 1 Partie hät er verlore.", + "aboutSimulRealLife": "Bim Simultanschach schpillt 1 Simultanschpiller \nglichzitig gäge beliebig vill Simultangägner, \nso lang, bis alli Partie fertig gschpillt sind.", + "aboutSimulRules": "Wie bi reale Simultanschach Veraschtaltige, gaht \nde Simultanschpiller vu eim Simultangägner zum \nNächschte und macht bi jedem Brätt 1 Zug.", + "aboutSimulSettings": "Zugsrücknahme, zuesätzlichi Zit oder Revanche \ngits nöd und es isch immer ungwertet.", + "create": "Erschtelle", + "whenCreateSimul": "Wänn du dir es Simultanschach machsch, chasch du glichzitig gäge mehreri Gägner schpille.", + "simulVariantsHint": "Wänn du mehreri Variante wählsch, chann jede Simultangägner ussueche, was er schpille will.", + "simulClockHint": "Fischer Uhr: Je meh Gägner, umso meh Zit bruchsch wahrschinlich.", + "simulAddExtraTime": "Du chasch dir Extrazit geh, dass du z'rächt chunsch.", + "simulHostExtraTime": "Extrazit Simultanschpiller", + "simulAddExtraTimePerPlayer": "Gib für jede Schpiller, wo am Simultan teilnimmt, bi dinere Uhr Zit dezue", + "simulHostExtraTimePerPlayer": "Für jede Schpiller zuesätzlichi Zit addiere", + "lichessTournaments": "Lichess Turnier", + "tournamentFAQ": "Arena Turnier - hüfigi Frage (FAQ)", + "timeBeforeTournamentStarts": "Zit bis s'Turnier afangt", + "averageCentipawnLoss": "Durchschnittlichi Verluscht vo Hundertstelpure", + "accuracy": "Gnauigkeit", + "keyboardShortcuts": "Diräkti Taschtebefehl", + "keyMoveBackwardOrForward": "zieh zrugg/vorwärts", + "keyGoToStartOrEnd": "gang zum Afang/Änd", + "keyCycleSelectedVariation": "Usgwählti Zyklusvariante", + "keyShowOrHideComments": "zeig/verschteck d'Kommentär", + "keyEnterOrExitVariation": "Variante ischtige/verlah", + "keyRequestComputerAnalysis": "Computeranalyse afordere, Lern us dine Fähler", + "keyNextLearnFromYourMistakes": "Nächschts (Lern vu dine Fähler)", + "keyNextBlunder": "Nächschte Patzer", + "keyNextMistake": "Nächschte Fähler", + "keyNextInaccuracy": "Nächschti Ungnauigkeit", + "keyPreviousBranch": "Vorherige Variante", + "keyNextBranch": "Nächschti Variante", + "toggleVariationArrows": "Variatione-Pfil umschalte", + "cyclePreviousOrNextVariation": "Zyklus vorherigi/nächschti Variante", + "toggleGlyphAnnotations": "Glyph-Amerkige ischalte und usschalte (...was immer das glyph isch?!)", + "togglePositionAnnotations": "Positionsamerkige umschalte", + "variationArrowsInfo": "Mit de Variationspfil chasch ohni d'Zugslischte navigiere.", + "playSelectedMove": "spill de gwählti zug", + "newTournament": "Neus Turnier", + "tournamentHomeTitle": "Schachturnier mit verschiedene Zitkontrolle und Variante", + "tournamentHomeDescription": "Schpill rasanti Turnier! Mach bi plante Turnier mit oder erschtell es Eiges. Bullet, Blitz, Klassisch, Schach960, König uf em Hügel, Drüfach-Schach und witeri Variante sind vorhande - für ändlose Schach-Spass.", + "tournamentNotFound": "Turnier nöd gfunde", + "tournamentDoesNotExist": "Das Turnier exischtiert nöd.", + "tournamentMayHaveBeenCanceled": "Es Turnier wird abgseit, wänn alli Schpiller vor em Start weg sind.", + "returnToTournamentsHomepage": "Zrugg zur Turnier-Homepage", + "weeklyPerfTypeRatingDistribution": "Wüchentlichi {param}-Wertigsverteilig", + "yourPerfTypeRatingIsRating": "Dini {param1}-Wertig isch {param2}.", + "youAreBetterThanPercentOfPerfTypePlayers": "Du bisch besser als {param1} vu allne {param2}-Schpiller.", + "userIsBetterThanPercentOfPerfTypePlayers": "{param1} isch besser als {param2} vo allne {param3}-Schpiller.", + "betterThanPercentPlayers": "Besser als {param1} vu {param2} Schpiller", + "youDoNotHaveAnEstablishedPerfTypeRating": "Du häsch kei fixi {param}-Wertig.", + "yourRating": "Dini Wertig", + "cumulative": "Summiert", + "glicko2Rating": "Glicko-2 Wertig", + "checkYourEmail": "Check dini E-Mail", + "weHaveSentYouAnEmailClickTheLink": "Mir händ dir es Mail gschickt: Klick de Link i de Nachricht, um dis Konto z'aktiviere.", + "ifYouDoNotSeeTheEmailCheckOtherPlaces": "Wänn du die E-Mail nöd findsch, dursuech witeri Ordner: z. B. de Spamordner oder au de Papierchorb.", + "weHaveSentYouAnEmailTo": "Mir händ dir es Email a {param} gschickt. Klick im Mail uf de Link und setz dis Passwort zrugg.", + "byRegisteringYouAgreeToBeBoundByOur": "Mit dinere Regischtrierig schtimmsch du de {param} zue.", + "readAboutOur": "Lies euseri {param}.", + "networkLagBetweenYouAndLichess": "Netzwerk-Verzögerig, zwüschet dir und Lichess (lag)", + "timeToProcessAMoveOnLichessServer": "Zit zum en Zug uf em Lichess-Server z'verarbeite", + "downloadAnnotated": "Download mit Kommentär", + "downloadRaw": "Download ohni Kommentär", + "downloadImported": "Importierte Download", + "crosstable": "Matchverlauf", + "youCanAlsoScrollOverTheBoardToMoveInTheGame": "Übers Brätt scrolle laht s'Schpil vor- oder rückwärts laufe.", + "scrollOverComputerVariationsToPreviewThem": "Über e Computer-Variante scrolle, zeigt e Vorschau.", + "analysisShapesHowTo": "Mit Shift + Musklick - rächts oder links - chasch grüeni oder roti Chreis und Pfil ufs Brätt zeichne.", + "letOtherPlayersMessageYou": "Erlaub andere Schpiller dir Nachrichte z'schicke", + "receiveForumNotifications": "Mäldige empfange, falls du im Forum erwähnt wirsch", + "shareYourInsightsData": "Teil dini persönliche Schpilldate", + "withNobody": "Mit niemertem", + "withFriends": "Mit Fründe", + "withEverybody": "Mit allne", + "kidMode": "Chinder-Modus", + "kidModeIsEnabled": "De Chindermodus isch aktiviert.", + "kidModeExplanation": "Sicherheitsiischtellig: Im Chinder-Modus isch die ganzi Kommunikation deaktiviert. Aktivier de Modus und schütz dini Chind vor andere Internetbenutzer.", + "inKidModeTheLichessLogoGetsIconX": "Im Chinder-Modus erschint s'Lichess-Logo mit {param}-Icon, was dir zeigt, dass dini Chind gschützt sind.", + "askYourChessTeacherAboutLiftingKidMode": "Dis Konto wird verwaltet, frög din Schachlehrer für d'Ufhebig vum Chindermodus.", + "enableKidMode": "Chinder-Modus aktiviere", + "disableKidMode": "Chinder-Modus deaktiviere", + "security": "Sicherheit", + "sessions": "Sitzige", + "revokeAllSessions": "alli Sitzige beände", + "playChessEverywhere": "Schpill überall Schach", + "asFreeAsLichess": "So gratis wie Lichess", + "builtForTheLoveOfChessNotMoney": "Erschaffe us Liebi zum Schach, nöd zum Gäld", + "everybodyGetsAllFeaturesForFree": "Jede chann alli Funktione gratis nutze", + "zeroAdvertisement": "Null Werbig", + "fullFeatured": "Alli Funktione", + "phoneAndTablet": "Smart Phone und Tablet", + "bulletBlitzClassical": "Bullet, Blitz, Klassisch", + "correspondenceChess": "Fernschach", + "onlineAndOfflinePlay": "Online und offline schpille", + "viewTheSolution": "Lueg d'Lösig a", + "followAndChallengeFriends": "Folg Fründe und forder sie zum Schpil", + "gameAnalysis": "Schpil-Analyse", + "xHostsY": "{param1} hät {param2} erschtellt", + "xJoinsY": "{param1} isch {param2} biträte", + "xLikesY": "{param1} gfallt {param2}", + "quickPairing": "Schnälli Paarig", + "lobby": "Lobby", + "anonymous": "Anonym", + "yourScore": "Din Punkteschtand: {param}", + "language": "Schprach", + "background": "Hindergrund", + "light": "Hell", + "dark": "Dunkel", + "transparent": "Durchsichtig", + "deviceTheme": "Mit em Grät synchronisiere", + "backgroundImageUrl": "Hindergrund-Bild-URL:", + "board": "Brätt", + "size": "Grössi", + "opacity": "OpaStadt", + "brightness": "Helligkeit", + "hue": "Farbton", + "boardReset": "Farbe zruggstelle", + "pieceSet": "Figureart", + "embedInYourWebsite": "I dini Website integriere", + "usernameAlreadyUsed": "De Benutzername isch bereits vergeh, bitte probier en andere.", + "usernamePrefixInvalid": "De Benutzername muess mit eme Buechschtabe afange.", + "usernameSuffixInvalid": "De Benutzername muess mit eme Buechschtabe oder ere Zahl ände.", + "usernameCharsInvalid": "De Benutzername dörf nu Buechschtabe, Zahle, Understrich und Bindestrich ha. Nach enand folgendi Understrich oder Bindestrich sind nöd erlaubt.", + "usernameUnacceptable": "De Benutzername wird nöd akzeptiert.", + "playChessInStyle": "Schpill Schach mit Schtil", + "chessBasics": "Grundlage", + "coaches": "Trainer", + "invalidPgn": "Fähler im PGN", + "invalidFen": "Fähler im FEN", + "custom": "Eigeni Bedänkzit", + "notifications": "Benachrichtigunge", + "notificationsX": "Benachrichtigunge: {param1}", + "perfRatingX": "Wertig: {param}", + "practiceWithComputer": "Üeb mit em Computer", + "anotherWasX": "Möglich wär au {param}", + "bestWasX": "Am beschte wär {param}", + "youBrowsedAway": "Du häsch weg blätteret", + "resumePractice": "Üebig fortsetze", + "drawByFiftyMoves": "Das Spiel isch unentschiede, gemäss de 50-Züg-Regle.", + "theGameIsADraw": "Das Schpil isch Remis.", + "computerThinking": "De Computer rächnet ...", + "seeBestMove": "Zeig de bescht Zug", + "hideBestMove": "Verschteck de bescht Zug", + "getAHint": "Lass dir en Tipp geh", + "evaluatingYourMove": "Din Zug wird gwertet ...", + "whiteWinsGame": "Wiss günnt", + "blackWinsGame": "Schwarz günnt", + "learnFromYourMistakes": "Lern us dine Fähler", + "learnFromThisMistake": "Lern us dem Fähler", + "skipThisMove": "Überschpring de Zug", + "next": "Zum Nächschte", + "xWasPlayed": "{param} isch gschpillt worde", + "findBetterMoveForWhite": "Find en bessere Zug für Wiss", + "findBetterMoveForBlack": "Find en bessere Zug für Schwarz", + "resumeLearning": "Witer lerne", + "youCanDoBetter": "Das chasch du besser", + "tryAnotherMoveForWhite": "Probier en andere Zug für Wiss", + "tryAnotherMoveForBlack": "Probier en andere Zug für Schwarz", + "solution": "Uflösig", + "waitingForAnalysis": "Warte uf d'Analyse", + "noMistakesFoundForWhite": "Kei Fähler vu Wiss gfunde", + "noMistakesFoundForBlack": "Kei Fähler vu Schwarz gfunde", + "doneReviewingWhiteMistakes": "Fähler vu Wiss prüeft", + "doneReviewingBlackMistakes": "Fähler vu Schwarz prüeft", + "doItAgain": "Machs nomal", + "reviewWhiteMistakes": "Fähler vu Wiss werded prüeft", + "reviewBlackMistakes": "Fähler vu Schwarz werded prüeft", + "advantage": "Vorteil", + "opening": "Eröffnig", + "middlegame": "Mittelschpiel", + "endgame": "Ändschpiel", + "conditionalPremoves": "Bedingti Voruszüg", + "addCurrentVariation": "Aktuelli Variante zuefüege", + "playVariationToCreateConditionalPremoves": "Schpill e Variante, um bedingti Voruszüg z'kreiere", + "noConditionalPremoves": "Kei bedingti Voruszüg", + "playX": "Schpill {param}", + "showUnreadLichessMessage": "Lichess hät dir e privati Nachricht g'schickt.", + "clickHereToReadIt": "Klick da zum läse", + "sorry": "Äxgüsi :(", + "weHadToTimeYouOutForAWhile": "Mir händ dich für es Zitli müesse schperre.", + "why": "Wieso?", + "pleasantChessExperience": "Mir wänd allne e möglichscht gueti Schach-Erfahrig büte.", + "goodPractice": "Zum dem Zwäck müend mir sicher si, dass sich all Schpiller korräkt verhalted.", + "potentialProblem": "Wänn es möglichs Problem entdeckt wird, zeiged mir die Mäldig.", + "howToAvoidThis": "Wie chasch das verhindere?", + "playEveryGame": "Schpill jedi Partie, wo du afangsch, au fertig.", + "tryToWin": "Probier jedes Schpil z'günne (oder mindeschtens es Remis z'erreiche).", + "resignLostGames": "Gib es verlores Schpiel uf (lass nöd eifach d'Uhr ablaufe).", + "temporaryInconvenience": "Mir entschuldiged eus für die vorübergehende Unannehmlichkeite,", + "wishYouGreatGames": "und wünsched dir tolli Schpiel uf lichess.org.", + "thankYouForReading": "Danke für’s Läse!", + "lifetimeScore": "Läbeszit Rekord", + "currentMatchScore": "Aktuelle Schpielschtand", + "agreementAssistance": "Ich schtimme zue, dass ich zum Schpille, kei Hilfe nutze - wie z. B. Schach-Computer, Büecher, Datäbanke oder Drittpersone.", + "agreementNice": "Ich schtimme zue, dass ich mit andere Schpiller immer reschpäktvoll umgang.", + "agreementMultipleAccounts": "Ich bi demit iverschtande, dass ich kei Mehrfachkonti mache (usser us de Gründ, wo i de {param} ageh sind).", + "agreementPolicy": "Ich schtimme zue, dass ich alli Lichess-Richtlinie befolge.", + "searchOrStartNewDiscussion": "Suech e Underhaltig oder fang e Neui a", + "edit": "Bearbeite", + "bullet": "Bullet", + "blitz": "Blitz", + "rapid": "Schnällschach", + "classical": "Klassisch", + "ultraBulletDesc": "Wahnsinnig schnälli Schpiel: weniger als 30 Sekunde", + "bulletDesc": "Sehr schnälli Schpiel: weniger als 3 Minute", + "blitzDesc": "Schnälli Schpiel: 3 bis 8 Minute", + "rapidDesc": "Schnällschach: 8 bis 25 Minute", + "classicalDesc": "Klassischi Schpiel: 25 Minute und meh", + "correspondenceDesc": "Fernschach Partie: 1 oder mehreri Täg pro Zug", + "puzzleDesc": "Schach-Taktik Trainer", + "important": "Wichtig", + "yourQuestionMayHaveBeenAnswered": "Dini Frag chönnt bereits {param1} beantwortet worde si", + "inTheFAQ": "i de hüfig gschtellte Frage (FAQ)", + "toReportSomeoneForCheatingOrBadBehavior": "Zum en Nutzer wäge Betrug oder schlächtem Verhalte mälde, {param1}", + "useTheReportForm": "benutz euses Mälde-Formular", + "toRequestSupport": "Zum Hilf überchoo, {param1}", + "tryTheContactPage": "probiers uf de Kontaktsite", + "makeSureToRead": "Lies unbedingt {param1}", + "theForumEtiquette": "d'Forum Aschtandsregle", + "thisTopicIsArchived": "Das Thema isch archiviert und chann nüme beantwortet werde.", + "joinTheTeamXToPost": "Tritt {param1} bi, um i dem Forum Biträg z'schribe", + "teamNamedX": "{param1} Team", + "youCannotPostYetPlaySomeGames": "Du chasch nonig im Forum schribe: Schpill zerscht no es paar Partie!", + "subscribe": "Abonniere", + "unsubscribe": "Abmälde", + "mentionedYouInX": "hät dich in \"{param1}\" erwähnt.", + "xMentionedYouInY": "{param1} hät dich in \"{param2}\" erwähnt.", + "invitedYouToX": "hät dich zu \"{param1}\" iglade.", + "xInvitedYouToY": "{param1} hät dich zu \"{param2}\" iglade.", + "youAreNowPartOfTeam": "Du bisch jetzt es Mitglid vu dem Team.", + "youHaveJoinedTeamX": "Du bisch \"{param1}\" biträte.", + "someoneYouReportedWasBanned": "Öpper wo du gmäldet häsch, isch bannt worde", + "congratsYouWon": "Gratuliere, du häsch gunne!", + "gameVsX": "Partie gäge {param1}", + "resVsX": "{param1} gäge {param2}", + "lostAgainstTOSViolator": "Du häsch Wertigspünkt verlore, gäge öpper, wo d'Lichess-Regle verletzt hät", + "refundXpointsTimeControlY": "Rückerschtattig: {param1} {param2} Wertigspünkt.", + "timeAlmostUp": "D'Zit isch fascht abgloffe!", + "clickToRevealEmailAddress": "[Klick, zum die E-Mail-Adrässe azeige]", + "download": "Abelade", + "coachManager": "Trainer Verwalter", + "streamerManager": "Streamer Verwalter", + "cancelTournament": "Brich das Turnier ab", + "tournDescription": "Turnier Beschribig", + "tournDescriptionHelp": "Wottsch de Teilnehmer öppis Speziells mitteile? Probier dich churz z'fasse. Url mit Name sind möglich: [name](https://url)", + "ratedFormHelp": "Alli Partie sind gwertet\nund beiflussed dini Wertig", + "onlyMembersOfTeam": "Nur Mitglider vum Team", + "noRestriction": "Kei Ischränkige", + "minimumRatedGames": "Minimum gwerteti Partie", + "minimumRating": "Minimali Wertig", + "maximumWeeklyRating": "Maximali wüchentlichi Wertig", + "positionInputHelp": "E gültigi FEN schtartet jedes Schpiel ab ere beschtimmte Schtellig. \nDas funktioniert nur für Schtandardschpiel und nöd für Variante!\nDu chasch mit {param} so e FEN-Schtellig generiere und \nsie dänn im Fäld \"Afangsposition\" ifüege oder das \nFäld leer lah und all Schpiel normal schtarte.", + "cancelSimul": "Simultanschach abbräche", + "simulHostcolor": "Farb vom Simultanschpiller, für jedi Partie", + "estimatedStart": "Vorussichtlichi Schtartzit", + "simulFeatured": "Uf {param} zeige", + "simulFeaturedHelp": "Zeig allne uf {param} dis Simultanschach. Privats Simultanschach deaktiviert.", + "simulDescription": "Simultanschach Beschribig", + "simulDescriptionHelp": "Wottsch de Teilnehmer öppis mitteile?", + "markdownAvailable": "{param} isch für erwitereti Syntax verfüegbar.", + "embedsAvailable": "Füeg zum Ibette e Schpil-URL oder e Schtudiekapitel-URL i.", + "inYourLocalTimezone": "I dinere lokale Zitzone", + "tournChat": "Turnier Chat", + "noChat": "Kein Chat", + "onlyTeamLeaders": "Nur Teamleiter", + "onlyTeamMembers": "Nur Team-Mitglider", + "navigateMoveTree": "Dur de Zugbaum navigiere", + "mouseTricks": "Tricks mit de Muus", + "toggleLocalAnalysis": "Lokali Computer-Analyse a-/abschalte", + "toggleAllAnalysis": "Alli Computer-Analyse a-/abschalte", + "playComputerMove": "Schpill de bescht Computerzug", + "analysisOptions": "Analyse Möglichkeite", + "focusChat": "Chat fokussiere", + "showHelpDialog": "Zeig de Hilfsdialog", + "reopenYourAccount": "Konto wider eröffne", + "closedAccountChangedMind": "Wänn du s'Konto gschlosse häsch und das bereusch, dänn gits no 1 Chance dis Konto wider zrugg z'hole.", + "onlyWorksOnce": "Das funktioniert aber nur eimal.", + "cantDoThisTwice": "Wänn du dis Konto es 2. Mal schlüssisch, gits kei Möglichkeit meh das rückgängig z'mache.", + "emailAssociatedToaccount": "Mit dim Konto verbundeni E-Mail-Adrässe", + "sentEmailWithLink": "Mir hän dir e E-Mail mit eme Link gschickt.", + "tournamentEntryCode": "Turnier-Bitrittscode", + "hangOn": "En Momänt!", + "gameInProgress": "Du häsch no e laufedi Partie mit {param}.", + "abortTheGame": "Partie abbräche", + "resignTheGame": "Partie ufgeh", + "youCantStartNewGame": "Du chasch kei neui Partie starte, bevor die no Laufendi nöd fertig gschpillt isch.", + "since": "Sit", + "until": "Bis", + "lichessDbExplanation": "Gwerteti Schpiel vu allne Lichess Schpiller", + "switchSides": "Farb wächsle", + "closingAccountWithdrawAppeal": "Wänn du dis Konto schlüssisch, ziehsch du au din Ischpruch zrugg", + "ourEventTips": "Eusi Tipps, fürs Organisiere vu Events", + "instructions": "Awisige", + "showMeEverything": "Zeig mer alles", + "lichessPatronInfo": "Lichess isch e Wohltätigkeitsorganisation und e völlig choschtelosi/freii Open-Source-Software.\nAlli Betriebs-Choschte, d'Entwicklig und d'Inhält werded usschliesslich dur Benutzerschpände finanziert.", + "nothingToSeeHere": "Da gits im monumäntan nüt z'gseh.", + "opponentLeftCounter": "{count, plural, =1{Din Gägner hät d'Partie verlah. Du chasch in {count} Sekunde din Sieg beaschpruche} other{Din Gägner hät d'Partie verlah, du chasch in {count} Sekunde din Sieg beaschpruche}}", + "mateInXHalfMoves": "{count, plural, =1{Matt i {count} Halbzug} other{Matt i {count} Halbzüg}}", + "nbBlunders": "{count, plural, =1{{count} Patzer} other{{count} Patzer}}", + "nbMistakes": "{count, plural, =1{{count} Fähler} other{{count} Fähler}}", + "nbInaccuracies": "{count, plural, =1{{count} Ungnauigkeit} other{{count} Ungnauigkeite}}", + "nbPlayers": "{count, plural, =1{{count} Schpiller} other{{count} Schpiller}}", + "nbGames": "{count, plural, =1{{count} Partie} other{{count} Partie}}", + "ratingXOverYGames": "{count, plural, =1{{count} Wertig vu {param2} Spiel} other{{count} Wertig vu {param2} Spiel}}", + "nbBookmarks": "{count, plural, =1{{count} Läsezeiche} other{{count} Läsezeiche}}", + "nbDays": "{count, plural, =1{{count} Tag} other{{count} Täg}}", + "nbHours": "{count, plural, =1{{count} Schtund} other{{count} Schtunde}}", + "nbMinutes": "{count, plural, =1{{count} Minute} other{{count} Minute}}", + "rankIsUpdatedEveryNbMinutes": "{count, plural, =1{De Rang wird jedi Minute aktualisiert} other{De Rang wird alli {count} Minute aktualisiert}}", + "nbPuzzles": "{count, plural, =1{{count} Ufgab} other{{count} Ufgabe}}", + "nbGamesWithYou": "{count, plural, =1{{count} Partie mit dir} other{{count} Partie mit dir}}", + "nbRated": "{count, plural, =1{{count} gwertet} other{{count} gwerteti}}", + "nbWins": "{count, plural, =1{{count} Sieg} other{{count} Sieg}}", + "nbLosses": "{count, plural, =1{{count} Niederlag} other{{count} Niderlage}}", + "nbDraws": "{count, plural, =1{{count} Remis} other{{count} Remis}}", + "nbPlaying": "{count, plural, =1{{count} laufendi Partie} other{{count} laufendi Partie}}", + "giveNbSeconds": "{count, plural, =1{Gib dim Gägner {count} Sekunde} other{Gib dim Gägner {count} Sekunde}}", + "nbTournamentPoints": "{count, plural, =1{{count} Turnierpunkt} other{{count} Turnierpünkt}}", + "nbStudies": "{count, plural, =1{{count} Schtudie} other{{count} Schtudie}}", + "nbSimuls": "{count, plural, =1{{count} Simultan} other{{count} Simultan}}", + "moreThanNbRatedGames": "{count, plural, =1{≥ {count} gwertets Schpiel} other{≥ {count} gwerteti Schpiel}}", + "moreThanNbPerfRatedGames": "{count, plural, =1{≥ {count} gwertets {param2} Schpiel} other{≥ {count} gwerteti {param2} Schpiel}}", + "needNbMorePerfGames": "{count, plural, =1{Du muesch no {count} gwerteti Partie meh {param2} schpille} other{Du muesch no {count} gwerteti Partie meh {param2} schpille}}", + "needNbMoreGames": "{count, plural, =1{Du bruchsch no {count} Wertigs-Schpiel meh} other{Du bruchsch no {count} Wertigs-Schpiel meh}}", + "nbImportedGames": "{count, plural, =1{{count} importierti Partie} other{{count} importierti Partie}}", + "nbFriendsOnline": "{count, plural, =1{{count} Fründ online} other{{count} Fründe online}}", + "nbFollowers": "{count, plural, =1{{count} Follower} other{{count} Follower}}", + "nbFollowing": "{count, plural, =1{{count} folgänd} other{{count} folgänd}}", + "lessThanNbMinutes": "{count, plural, =1{Weniger als {count} Minute} other{Weniger als {count} Minute}}", + "nbGamesInPlay": "{count, plural, =1{{count} laufendi Partie} other{{count} laufendi Partie}}", + "maximumNbCharacters": "{count, plural, =1{Höchschtens {count} Buechstabe.} other{Höchschtens {count} Buechstabe.}}", + "blocks": "{count, plural, =1{{count} blockt} other{{count} Blockti}}", + "nbForumPosts": "{count, plural, =1{{count} Forum-Bitrag} other{{count} Forum-Biträg}}", + "nbPerfTypePlayersThisWeek": "{count, plural, =1{{count} {param2} Schpiller i dere Wuche.} other{{count} {param2} Schpiller i dere Wuche.}}", + "availableInNbLanguages": "{count, plural, =1{Verfüegbar i {count} Schprach!} other{Verfüegbar i {count} Schprache!}}", + "nbSecondsToPlayTheFirstMove": "{count, plural, =1{{count} Sekunde für de 1. Zug} other{{count} Sekunde für de 1. Zug}}", + "nbSeconds": "{count, plural, =1{{count} Sekunde} other{{count} Sekunde}}", + "andSaveNbPremoveLines": "{count, plural, =1{und speicher {count} Voruszug Zile} other{und speicher {count} Voruszug Zile}}", + "stormMoveToStart": "Zieh zum schtarte", + "stormYouPlayTheWhitePiecesInAllPuzzles": "Du schpillsch bi allne Ufgabe mit Wiss", + "stormYouPlayTheBlackPiecesInAllPuzzles": "Du schpillsch bi allne Ufgabe mit Schwarz", + "stormPuzzlesSolved": "glösti Ufgabe", + "stormNewDailyHighscore": "Neue Tagesrekord!", + "stormNewWeeklyHighscore": "Neue Wucherekord!", + "stormNewMonthlyHighscore": "Neue Monetsrekord!", + "stormNewAllTimeHighscore": "Neue Allzitrekord!", + "stormPreviousHighscoreWasX": "Din bisherige Rekord isch {param} gsi", + "stormPlayAgain": "Schpill nomal", + "stormHighscoreX": "Rekord: {param}", + "stormScore": "Punkteschtand", + "stormMoves": "Züg", + "stormAccuracy": "Gnauigkeit", + "stormCombo": "Combo", + "stormTime": "Zit", + "stormTimePerMove": "Zit pro Zug", + "stormHighestSolved": "Schwirigschti Lösig", + "stormPuzzlesPlayed": "Gschpillti Ufgabe", + "stormNewRun": "Neue Lauf (Leertaschte)", + "stormEndRun": "Lauf beände (Entertaschte)", + "stormHighscores": "Alli Rekörd", + "stormViewBestRuns": "Zeig die beschte Läuf", + "stormBestRunOfDay": "De bescht Lauf vum Tag", + "stormRuns": "Läuf", + "stormGetReady": "Mach di parat!", + "stormWaitingForMorePlayers": "Warte uf meh Schpiller wo mitmached...", + "stormRaceComplete": "Ränne beändet!", + "stormSpectating": "Zueluege", + "stormJoinTheRace": "Mach am Ränne mit!", + "stormStartTheRace": "Ränne schtarte", + "stormYourRankX": "Dini Platzierig: {param}", + "stormWaitForRematch": "Wart uf Revanche", + "stormNextRace": "Nächschts Ränne", + "stormJoinRematch": "Mach mit bi de Revanche", + "stormWaitingToStart": "Warte uf de Schtart", + "stormCreateNewGame": "Erschtell es neus Ränne", + "stormJoinPublicRace": "Fahr es öffentlichs Ränne", + "stormRaceYourFriends": "Fahr es Ränne mit Fründe", + "stormSkip": "überschpringe", + "stormSkipHelp": "Chasch 1 Zug pro Ränne überschpringe:", + "stormSkipExplanation": "Überschpring de Zug, um dini combo b'halte! Das chasch nur 1x pro Ränne.", + "stormFailedPuzzles": "Falsch glösti Ufgabe", + "stormSlowPuzzles": "Langsami Ufgabe", + "stormSkippedPuzzle": "Überschprungeni Ufgab", + "stormThisWeek": "Die Wuche", + "stormThisMonth": "De Monet", + "stormAllTime": "All-Zit", + "stormClickToReload": "Klick, zum neu lade", + "stormThisRunHasExpired": "De Durchgang isch beändet!", + "stormThisRunWasOpenedInAnotherTab": "De Durchgang isch ime andere Tab göffnet worde!", + "stormXRuns": "{count, plural, =1{1 Lauf} other{{count} Läuf}}", + "stormPlayedNbRunsOfPuzzleStorm": "{count, plural, =1{Het en Lauf vo {param2} gschpillt} other{Hät {count} Läuf vu {param2} gschpillt}}", + "streamerLichessStreamers": "Lichess Streamer/-in", + "studyShareAndExport": "Teile & exportiere", + "studyStart": "Schtart" +} \ No newline at end of file diff --git a/lib/l10n/lila_he.arb b/lib/l10n/lila_he.arb index 398ccab016..3b559ed481 100644 --- a/lib/l10n/lila_he.arb +++ b/lib/l10n/lila_he.arb @@ -4,13 +4,51 @@ "mobileToolsTab": "כלים", "mobileWatchTab": "צפייה", "mobileSettingsTab": "הגדרות", + "mobileMustBeLoggedIn": "יש להתחבר כדי לצפות בדף זה.", + "mobileSystemColors": "צבעי מערכת ההפעלה", + "mobileFeedbackButton": "משוב", + "mobileOkButton": "בסדר", + "mobileSettingsHapticFeedback": "רטט בכל מהלך", + "mobileSettingsImmersiveMode": "מצב ריכוז", + "mobileSettingsImmersiveModeSubtitle": "הסתירו את שאר הממשק במהלך המשחק. מומלץ להפעיל הגדרה זו אם אפשרויות הניווט בקצות הלוח מפריעות לכם לשחק. רלוונטי למשחקים ול־Puzzle Storm.", + "mobileNotFollowingAnyUser": "אינכם עוקבים אחר אף אחד.", + "mobileAllGames": "כל המשחקים", + "mobileRecentSearches": "חיפושים אחרונים", + "mobileClearButton": "ניקוי", + "mobilePlayersMatchingSearchTerm": "שחקנים עם ״{param}״", + "mobileNoSearchResults": "אין תוצאות", + "mobileAreYouSure": "בטוח?", + "mobilePuzzleStreakAbortWarning": "הרצף הנוכחי שלך ייאבד אך הניקוד יישמר.", + "mobilePuzzleStormNothingToShow": "אין מה להראות. שחקו כמה סיבובים של Puzzle Storm קודם.", + "mobileSharePuzzle": "שיתוף החידה", + "mobileShareGameURL": "שיתוף הקישור למשחק", + "mobileShareGamePGN": "שיתוף ה־PGN", + "mobileSharePositionAsFEN": "שיתוף העמדה כ־FEN", + "mobileShowVariations": "הצגת וריאציות", + "mobileHideVariation": "הסתרת וריאציות", + "mobileShowComments": "הצגת הערות", + "mobilePuzzleStormConfirmEndRun": "האם לסיים את הסבב?", + "mobilePuzzleStormFilterNothingToShow": "אין מה להראות. ניתן לשנות את חתכי הסינון", + "mobileCancelTakebackOffer": "ביטול ההצעה להחזיר את המהלך האחרון", + "mobileCancelDrawOffer": "ביטול הצעת התיקו", + "mobileWaitingForOpponentToJoin": "ממתין שיריב יצטרף...", + "mobileBlindfoldMode": "משחק עיוור", + "mobileLiveStreamers": "שדרנים בשידור חי", + "mobileCustomGameJoinAGame": "הצטרפות למשחק", + "mobileCorrespondenceClearSavedMove": "ניקוי המהלך השמור", + "mobileSomethingWentWrong": "משהו השתבש.", + "mobileShowResult": "הצגת תוצאת המשחק", + "mobilePuzzleThemesSubtitle": "פתרו חידות עם הפתיחות האהובות עליכם או בחרו ממגוון נושאים.", + "mobilePuzzleStormSubtitle": "פתרו כמה שיותר חידות ב־3 דקות.", + "mobileGreeting": "שלום, {param}", + "mobileGreetingWithoutName": "שלום", "activityActivity": "פעילות", "activityHostedALiveStream": "עלה (או עלתה) לשידור חי", "activityRankedInSwissTournament": "סיים/ה במקום {param1} ב־{param2}", "activitySignedUp": "נרשם/ה לlichess.org", "activitySupportedNbMonths": "{count, plural, =1{תמכ/ה בליצ'ס במשך חודש {count} כ{param2}} =2{תמכ/ה בליצ'ס במשך {count} חודשים כ{param2}} many{תמכ/ה בליצ'ס במשך {count} חודשים כ{param2}} other{תמכ/ה בליצ'ס במשך {count} חודשים כ{param2}}}", "activityPracticedNbPositions": "{count, plural, =1{התאמן/ה על עמדה {count} ב{param2}} =2{התאמן/ה על {count} עמדות ב{param2}} many{התאמן/ה על {count} עמדות ב{param2}} other{התאמן/ה על {count} עמדות ב{param2}}}", - "activitySolvedNbPuzzles": "{count, plural, =1{פתר/ה פאזל טקטי {count}} =2{פתר/ה {count} פאזלים טקטיים} many{פתר/ה {count} פאזלים טקטיים} other{פתר/ה {count} פאזלים טקטיים}}", + "activitySolvedNbPuzzles": "{count, plural, =1{פתר/ה חידה טקטית {count}} =2{פתר/ה {count} חידות טקטיות} many{פתר/ה {count} חידות טקטיות} other{פתר/ה {count} חידות טקטיות}}", "activityPlayedNbGames": "{count, plural, =1{שיחק/ה משחק {param2} {count}} =2{שיחק/ה {count} משחקי {param2}} many{שיחק/ה {count} משחקי {param2}} other{שיחק/ה {count} משחקי {param2}}}", "activityPostedNbMessages": "{count, plural, =1{פרסם/ה הודעה {count} ב{param2}} =2{פרסם/ה {count} הודעות ב{param2}} many{פרסם/ה {count} הודעות ב{param2}} other{פרסם/ה {count} הודעות ב{param2}}}", "activityPlayedNbMoves": "{count, plural, =1{שיחק/ה מהלך {count}} =2{שיחק/ה {count} מהלכים} many{שיחק/ה {count} מהלכים} other{שיחק/ה {count} מהלכים}}", @@ -503,6 +541,7 @@ "latestForumPosts": "פרסומים אחרונים בפורום", "players": "שחקנים", "friends": "חברים", + "otherPlayers": "שחקנים אחרים", "discussions": "דיונים", "today": "היום", "yesterday": "אתמול", @@ -760,6 +799,8 @@ "descPrivateHelp": "טקסט שרק חברי הקבוצה יראו. אם נכתב, יחליף את התיאור הפומבי עבור חברי הקבוצה.", "no": "לא", "yes": "כן", + "website": "אתר האינטרנט", + "mobile": "האפליקציה", "help": "עזרה:", "createANewTopic": "צרו נושא חדש", "topics": "נושאים", diff --git a/lib/l10n/lila_hi.arb b/lib/l10n/lila_hi.arb index 21fa5a0290..6639517c23 100644 --- a/lib/l10n/lila_hi.arb +++ b/lib/l10n/lila_hi.arb @@ -1,4 +1,27 @@ { + "mobileHomeTab": "होम", + "mobilePuzzlesTab": "पज़ल", + "mobileToolsTab": "टूल्स", + "mobileWatchTab": "देखें", + "mobileSettingsTab": "सेटिंग", + "mobileMustBeLoggedIn": "इस पेज को देखने के लिए आपको login करना होगा", + "mobileFeedbackButton": "फीडबैक", + "mobileOkButton": "ओके", + "mobileSettingsHapticFeedback": "कंपन फीडबैक", + "mobileSettingsImmersiveMode": "इमर्सिव मोड", + "mobileAllGames": "सारे गेम्स", + "mobileNoSearchResults": "कोई परिणाम नहीं", + "mobileAreYouSure": "क्या आप सुनिश्चित हैं?", + "mobileSharePuzzle": "पज़ल शरीर करें", + "mobileShareGameURL": "गेम URL शेयर करें", + "mobileShareGamePGN": "PGN शेयर करें", + "mobileSharePositionAsFEN": "पोजीशन FEN के रूप में शेयर करें", + "mobileShowVariations": "वेरिएशन देखें", + "mobileHideVariation": "वेरिएशन छुपाए", + "mobileShowComments": "कमेंट्स देखें", + "mobileCancelTakebackOffer": "Takeback प्रस्ताव रद्द करें", + "mobileCancelDrawOffer": "Draw प्रस्ताव रद्द करें", + "mobileLiveStreamers": "लाइव स्ट्रीमर्स", "activityActivity": "कार्यकलाप", "activityHostedALiveStream": "एक लाइव स्ट्रीम होस्ट किया गया", "activityRankedInSwissTournament": "#{param1} स्थान {param2} मे", diff --git a/lib/l10n/lila_hu.arb b/lib/l10n/lila_hu.arb index 6be26f828d..8a7fbce817 100644 --- a/lib/l10n/lila_hu.arb +++ b/lib/l10n/lila_hu.arb @@ -1,4 +1,41 @@ { + "mobileHomeTab": "Kezdőlap", + "mobilePuzzlesTab": "Feladvány", + "mobileToolsTab": "Eszközök", + "mobileWatchTab": "Néznivaló", + "mobileSettingsTab": "Beállítás", + "mobileMustBeLoggedIn": "Az oldal megtekintéséhez be kell jelentkezned.", + "mobileSystemColors": "Rendszerszínek", + "mobileFeedbackButton": "Visszajelzés", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Haptikus visszajelzés", + "mobileSettingsImmersiveMode": "Teljes képernyős mód", + "mobileSettingsImmersiveModeSubtitle": "A rendszer gombjainak elrejtése játék közben. Kapcsold be, ha zavarnak a rendszer navigációs mozdulatai a képernyő sarkainál. A játszmaképernyőn és a Puzzle Storm képernyőjén működik.", + "mobileNotFollowingAnyUser": "Jelenleg nem követsz senkit.", + "mobileAllGames": "Az összes játszma", + "mobileRecentSearches": "Keresési előzmények", + "mobileClearButton": "Törlés", + "mobilePlayersMatchingSearchTerm": "Játékosok {param} felhasználónévvel", + "mobileNoSearchResults": "Nincs találat", + "mobileAreYouSure": "Biztos vagy benne?", + "mobilePuzzleStreakAbortWarning": "A jelenlegi sorozatod elveszik és az eredményedet rögzítjük.", + "mobileSharePuzzle": "Feladvány megosztása", + "mobileShareGameURL": "Játszma URL megosztása", + "mobileShareGamePGN": "PGN megosztása", + "mobileSharePositionAsFEN": "Állás megosztása FEN-ként", + "mobileShowVariations": "Változatok megjelenítése", + "mobileHideVariation": "Változatok elrejtése", + "mobileShowComments": "Megjegyzések megjelenítése", + "mobilePuzzleStormConfirmEndRun": "Befejezed a futamot?", + "mobilePuzzleStormFilterNothingToShow": "Nincs megjeleníthető elem, változtasd meg a szűrőket", + "mobileCancelTakebackOffer": "Visszalépés kérésének visszavonása", + "mobileCancelDrawOffer": "Döntetlenkérés visszavonása", + "mobileWaitingForOpponentToJoin": "Várakozás az ellenfél csatlakozására...", + "mobileBlindfoldMode": "Vakjátszma mód", + "mobileLiveStreamers": "Lichess streamerek", + "mobileCustomGameJoinAGame": "Csatlakozás játszmához", + "mobileCorrespondenceClearSavedMove": "Mentett lépés törlése", + "mobileSomethingWentWrong": "Hiba történt.", "activityActivity": "Aktivitás", "activityHostedALiveStream": "Élőben közvetített", "activityRankedInSwissTournament": "Helyezés: {param1} / {param2}", diff --git a/lib/l10n/lila_it.arb b/lib/l10n/lila_it.arb index 8ab4858c66..820667bdd2 100644 --- a/lib/l10n/lila_it.arb +++ b/lib/l10n/lila_it.arb @@ -1,4 +1,42 @@ { + "mobileHomeTab": "Home", + "mobilePuzzlesTab": "Tattiche", + "mobileToolsTab": "Strumenti", + "mobileWatchTab": "Guarda", + "mobileSettingsTab": "Settaggi", + "mobileMustBeLoggedIn": "Devi aver effettuato l'accesso per visualizzare questa pagina.", + "mobileSystemColors": "Tema app", + "mobileFeedbackButton": "Suggerimenti", + "mobileOkButton": "Ok", + "mobileSettingsHapticFeedback": "Feedback tattile", + "mobileSettingsImmersiveMode": "Modalità immersiva", + "mobileSettingsImmersiveModeSubtitle": "Nascondi la UI di sistema mentre giochi. Attiva se i gesti di navigazione ai bordi dello schermo ti danno fastidio. Si applica alla schermata di gioco e Puzzle Storm.", + "mobileNotFollowingAnyUser": "Non stai seguendo nessun utente.", + "mobileAllGames": "Tutte le partite", + "mobileRecentSearches": "Ricerche recenti", + "mobileClearButton": "Elimina", + "mobilePlayersMatchingSearchTerm": "Giocatori con \"{param}\"", + "mobileNoSearchResults": "Nessun risultato", + "mobileAreYouSure": "Sei sicuro?", + "mobilePuzzleStreakAbortWarning": "Perderai la tua serie corrente e il tuo punteggio verrà salvato.", + "mobilePuzzleStormNothingToShow": "Niente da mostrare. Gioca ad alcune partite di Puzzle Storm.", + "mobileSharePuzzle": "Condividi questa tattica", + "mobileShareGameURL": "Condividi URL della partita", + "mobileShareGamePGN": "Condividi PGN", + "mobileSharePositionAsFEN": "Condividi posizione come FEN", + "mobileShowVariations": "Mostra varianti", + "mobileHideVariation": "Nascondi variante", + "mobileShowComments": "Mostra commenti", + "mobilePuzzleStormConfirmEndRun": "Vuoi terminare questa serie?", + "mobilePuzzleStormFilterNothingToShow": "Nessun risultato, per favore modifica i filtri", + "mobileCancelTakebackOffer": "Annulla richiesta di ritiro mossa", + "mobileCancelDrawOffer": "Annulla richiesta di patta", + "mobileWaitingForOpponentToJoin": "In attesa dell'avversario...", + "mobileBlindfoldMode": "Alla cieca", + "mobileLiveStreamers": "Streamer in diretta", + "mobileCustomGameJoinAGame": "Unisciti a una partita", + "mobileCorrespondenceClearSavedMove": "Cancella mossa salvata", + "mobileSomethingWentWrong": "Si è verificato un errore.", "activityActivity": "Attività", "activityHostedALiveStream": "Ha ospitato una diretta", "activityRankedInSwissTournament": "Classificato #{param1} in {param2}", @@ -122,7 +160,7 @@ "preferencesInCorrespondenceGames": "Partite per corrispondenza", "preferencesCorrespondenceAndUnlimited": "Corrispondenza e senza limiti di tempo", "preferencesConfirmResignationAndDrawOffers": "Conferma abbandono e offerte di patta", - "preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook": "Metodo di arrocco", + "preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook": "Modalità di arrocco", "preferencesCastleByMovingTwoSquares": "Muovi il re di due caselle", "preferencesCastleByMovingOntoTheRook": "Muovi il re sopra la Torre", "preferencesInputMovesWithTheKeyboard": "Muovi utilizzando la tastiera", @@ -420,6 +458,8 @@ "promoteVariation": "Promuovi la variante", "makeMainLine": "Rendi questa la variante principale", "deleteFromHere": "Elimina da qui", + "collapseVariations": "Riduci varianti", + "expandVariations": "Espandi varianti", "forceVariation": "Mostra come variante", "copyVariationPgn": "Copia il PGN della variante", "move": "Mossa", @@ -726,6 +766,7 @@ "ifNoneLeaveEmpty": "Se nessuno, lasciare vuoto", "profile": "Profilo", "editProfile": "Modifica profilo", + "realName": "Nome reale", "setFlair": "Imposta la tua icona", "flair": "Icona", "youCanHideFlair": "Esiste un'impostazione per nascondere le icone di tutti gli utenti, sull'intero sito.", @@ -803,6 +844,7 @@ "slow": "Lenta", "insideTheBoard": "Dentro la scacchiera", "outsideTheBoard": "Fuori la scacchiera", + "allSquaresOfTheBoard": "Su tutte le case della scacchiera", "onSlowGames": "Nelle partite lente", "always": "Sempre", "never": "Mai", diff --git a/lib/l10n/lila_ja.arb b/lib/l10n/lila_ja.arb index 95fee6d102..8e717358c8 100644 --- a/lib/l10n/lila_ja.arb +++ b/lib/l10n/lila_ja.arb @@ -1,4 +1,47 @@ { + "mobileHomeTab": "ホーム", + "mobilePuzzlesTab": "問題", + "mobileToolsTab": "ツール", + "mobileWatchTab": "見る", + "mobileSettingsTab": "設定", + "mobileMustBeLoggedIn": "このページを見るにはログインが必要です。", + "mobileSystemColors": "OS と同じ色設定", + "mobileFeedbackButton": "フィードバック", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "振動フィードバック", + "mobileSettingsImmersiveMode": "没入モード", + "mobileSettingsImmersiveModeSubtitle": "対局中にシステム用の UI を隠します。画面端のナビゲーションなどがじゃまな人はこれを使ってください。対局と問題ストームの画面に適用されます。", + "mobileNotFollowingAnyUser": "誰もフォローしていません。", + "mobileAllGames": "すべて", + "mobileRecentSearches": "最近の検索", + "mobileClearButton": "クリア", + "mobilePlayersMatchingSearchTerm": "「{param}」を含むプレイヤー", + "mobileNoSearchResults": "検索結果なし", + "mobileAreYouSure": "本当にいいですか?", + "mobilePuzzleStreakAbortWarning": "現在の連続正解が終わり、スコアが保存されます。", + "mobilePuzzleStormNothingToShow": "データがありません。まず問題ストームをプレイして。", + "mobileSharePuzzle": "この問題を共有する", + "mobileShareGameURL": "ゲーム URLを共有", + "mobileShareGamePGN": "PGN を共有", + "mobileSharePositionAsFEN": "局面を FEN で共有", + "mobileShowVariations": "変化手順を表示", + "mobileHideVariation": "変化手順を隠す", + "mobileShowComments": "コメントを表示", + "mobilePuzzleStormConfirmEndRun": "このストームを終了しますか?", + "mobilePuzzleStormFilterNothingToShow": "条件に合う問題がありません。フィルターを変更してください", + "mobileCancelTakebackOffer": "待ったをキャンセル", + "mobileCancelDrawOffer": "ドロー提案をキャンセル", + "mobileWaitingForOpponentToJoin": "対戦相手の参加を待っています…", + "mobileBlindfoldMode": "めかくしモード", + "mobileLiveStreamers": "ライブ配信者", + "mobileCustomGameJoinAGame": "ゲームに参加", + "mobileCorrespondenceClearSavedMove": "保存した手を削除", + "mobileSomethingWentWrong": "問題が発生しました。", + "mobileShowResult": "結果を表示", + "mobilePuzzleThemesSubtitle": "お気に入りのオープニングやテーマの問題が選べます。", + "mobilePuzzleStormSubtitle": "3 分間でできるだけ多くの問題を解いてください。", + "mobileGreeting": "こんにちは {param} さん", + "mobileGreetingWithoutName": "こんにちは", "activityActivity": "活動", "activityHostedALiveStream": "ライブ配信", "activityRankedInSwissTournament": "{param1} 位({param2})", @@ -498,6 +541,7 @@ "latestForumPosts": "最新のフォーラム記事", "players": "プレイヤー", "friends": "友達", + "otherPlayers": "その他のプレイヤー", "discussions": "トピック", "today": "今日", "yesterday": "昨日", @@ -755,6 +799,8 @@ "descPrivateHelp": "チームメンバーだけに見える文章です。設定すると、チームメンバーには一般向けの説明文に代えて表示されます。", "no": "いいえ", "yes": "はい", + "website": "ウェブサイト", + "mobile": "モバイル", "help": "ヘルプ:", "createANewTopic": "新しいトピックを作成", "topics": "トピック", diff --git a/lib/l10n/lila_kk.arb b/lib/l10n/lila_kk.arb index 26117189f4..d8767323ef 100644 --- a/lib/l10n/lila_kk.arb +++ b/lib/l10n/lila_kk.arb @@ -1,4 +1,33 @@ { + "mobileHomeTab": "Үйге", + "mobilePuzzlesTab": "Жұмбақ", + "mobileToolsTab": "Құрал", + "mobileWatchTab": "Бақылау", + "mobileSettingsTab": "Баптау", + "mobileMustBeLoggedIn": "Бұл бетті көру үшін тіркелгіге кіріңіз.", + "mobileSystemColors": "Жүйе түстері", + "mobileFeedbackButton": "Пікір айту", + "mobileOkButton": "Иә", + "mobileSettingsHapticFeedback": "Дірілмен білдіру", + "mobileSettingsImmersiveMode": "Оқшау көрініс", + "mobileSettingsImmersiveModeSubtitle": "Ойын кезінде жүйенің элементтерін жасыру. Экран жиегіндегі жүйенің навигация қимыл белгілері сізге кедергі келтірсе - қолданарлық жағдай. Ойын мен Жұмбақ Дауылы кезінде жұмыс істейді.", + "mobileNotFollowingAnyUser": "Сіз әзір ешкіге серік емессіз.", + "mobileAllGames": "Барлық ойындар", + "mobileRecentSearches": "Кейінгі іздеулер", + "mobileClearButton": "Өшіру", + "mobilePlayersMatchingSearchTerm": "Атауында \"{param}\" бар ойыншылар", + "mobileNoSearchResults": "Нәтиже жоқ", + "mobileAreYouSure": "Растайсыз ба?", + "mobilePuzzleStreakAbortWarning": "Қазіргі тізбектен айрыласыз, нәтиже сақталады.", + "mobilePuzzleStormNothingToShow": "Нәтиже әзір жоқ. Жұмбақ Дауылын ойнап көріңіз.", + "mobileSharePuzzle": "Бұл жұмбақты тарату", + "mobileShareGameURL": "Ойын сілтемесін тарату", + "mobileShareGamePGN": "PGN тарату", + "mobileShowResult": "Нәтижесін көру", + "mobilePuzzleThemesSubtitle": "Өз бастауларыңызға негізделген жұмбақтар, не кез-келген тақырып.", + "mobilePuzzleStormSubtitle": "3 минутта барынша көп жұмбақ шешіп көр.", + "mobileGreeting": "Ассаламу ғалейкүм, {param}", + "mobileGreetingWithoutName": "Ассаламу ғалейкүм", "activityActivity": "Белсенділігі", "activityHostedALiveStream": "Стрим бастады", "activityRankedInSwissTournament": "{param2}-да {param1}-нші орында", @@ -1033,7 +1062,7 @@ "temporaryInconvenience": "Осы уақытша жайсыздық үшін біз өкінішімізді білдіріп,", "wishYouGreatGames": "Личес-та әдемі ойындар болсын деп тілейміз.", "thankYouForReading": "Оқығаныңыз үшін рахмет!", - "lifetimeScore": "Жалпы ұпайлар", + "lifetimeScore": "Жалпы нәтиже", "currentMatchScore": "Осы жарыстағы нәтижеңіз", "agreementAssistance": "Мен ойнап отырғанда, сырттан (басқа адамнан, компьютер, кітап не дерекқорды пайдалана) ешбір көмек алмаймын деп уәде беремін.", "agreementNice": "Мен басқа ойыншыларға құрметпен қараймын деп уәде беремін.", diff --git a/lib/l10n/lila_ko.arb b/lib/l10n/lila_ko.arb index 30cb010a8f..704fad8b14 100644 --- a/lib/l10n/lila_ko.arb +++ b/lib/l10n/lila_ko.arb @@ -1,4 +1,39 @@ { + "mobileHomeTab": "홈", + "mobilePuzzlesTab": "퍼즐", + "mobileToolsTab": "도구", + "mobileWatchTab": "관람", + "mobileSettingsTab": "설정", + "mobileMustBeLoggedIn": "이 페이지를 보려면 로그인해야 합니다.", + "mobileSystemColors": "시스템 색상", + "mobileFeedbackButton": "피드백", + "mobileOkButton": "확인", + "mobileSettingsHapticFeedback": "터치 시 진동", + "mobileSettingsImmersiveMode": "전체 화면 모드", + "mobileSettingsImmersiveModeSubtitle": "플레이 중 시스템 UI를 숨깁니다. 화면 가장자리의 시스템 내비게이션 제스처가 불편하다면 사용하세요. 대국과 퍼즐 스톰 화면에서 적용됩니다.", + "mobileNotFollowingAnyUser": "팔로우한 사용자가 없습니다.", + "mobileAllGames": "모든 대국", + "mobileRecentSearches": "최근 검색어", + "mobileClearButton": "지우기", + "mobilePlayersMatchingSearchTerm": "닉네임에 \"{param}\"가 포함된 플레이어", + "mobileNoSearchResults": "결과 없음", + "mobileAreYouSure": "확실하십니까?", + "mobilePuzzleStreakAbortWarning": "현재 연속 해결 기록을 잃고 점수는 저장됩니다.", + "mobilePuzzleStormNothingToShow": "표시할 것이 없습니다. 먼저 퍼즐 스톰을 플레이하세요.", + "mobileSharePuzzle": "이 퍼즐 공유", + "mobileShareGameURL": "게임 URL 공유", + "mobileShareGamePGN": "PGN 공유", + "mobileSharePositionAsFEN": "FEN으로 공유", + "mobileShowComments": "댓글 보기", + "mobilePuzzleStormConfirmEndRun": "이 도전을 종료하시겠습니까?", + "mobilePuzzleStormFilterNothingToShow": "표시할 것이 없습니다. 필터를 변경해 주세요", + "mobileCancelTakebackOffer": "무르기 요청 취소", + "mobileCancelDrawOffer": "무승부 요청 취소", + "mobileWaitingForOpponentToJoin": "상대 참가를 기다리는 중...", + "mobileLiveStreamers": "방송 중인 스트리머", + "mobileCustomGameJoinAGame": "게임 참가", + "mobileCorrespondenceClearSavedMove": "저장된 수 삭제", + "mobileSomethingWentWrong": "문제가 발생했습니다.", "activityActivity": "활동", "activityHostedALiveStream": "라이브 스트리밍을 함", "activityRankedInSwissTournament": "{param2}에서 {param1}등", @@ -725,6 +760,7 @@ "ifNoneLeaveEmpty": "없으면 무시하세요", "profile": "프로필", "editProfile": "프로필 수정", + "realName": "본명", "biography": "소개", "countryRegion": "국가/지역", "thankYou": "감사합니다!", diff --git a/lib/l10n/lila_lb.arb b/lib/l10n/lila_lb.arb index 1b2b0a6c43..b2cda00e3d 100644 --- a/lib/l10n/lila_lb.arb +++ b/lib/l10n/lila_lb.arb @@ -1,4 +1,29 @@ { + "mobilePuzzlesTab": "Aufgaben", + "mobileMustBeLoggedIn": "Du muss ageloggt si fir dës Säit ze gesinn.", + "mobileSystemColors": "Systemsfaarwen", + "mobileFeedbackButton": "Feedback", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Haptesche Feedback", + "mobileSettingsImmersiveMode": "Immersive Modus", + "mobileAllGames": "All Partien", + "mobilePlayersMatchingSearchTerm": "Spiller mat „{param}“", + "mobileNoSearchResults": "Keng Resultater", + "mobileAreYouSure": "Bass de sécher?", + "mobileSharePuzzle": "Dës Aufgab deelen", + "mobileShareGameURL": "URL vun der Partie deelen", + "mobileShareGamePGN": "PGN deelen", + "mobileSharePositionAsFEN": "Stellung als FEN deelen", + "mobileShowVariations": "Variante weisen", + "mobileHideVariation": "Variante verstoppen", + "mobileShowComments": "Kommentarer weisen", + "mobileBlindfoldMode": "Blann", + "mobileSomethingWentWrong": "Et ass eppes schifgaang.", + "mobileShowResult": "Resultat weisen", + "mobilePuzzleThemesSubtitle": "Maach Aufgaben aus denge Liiblingserëffnungen oder sich dir een Theema eraus.", + "mobilePuzzleStormSubtitle": "Léis sou vill Aufgabe wéi méiglech an 3 Minutten.", + "mobileGreeting": "Moien, {param}", + "mobileGreetingWithoutName": "Moien", "activityActivity": "Verlaf", "activityHostedALiveStream": "Huet live gestreamt", "activityRankedInSwissTournament": "Huet sech als #{param1} an {param2} placéiert", @@ -497,6 +522,7 @@ "latestForumPosts": "Neisten Forumbäiträg", "players": "Spiller", "friends": "Kolleegen", + "otherPlayers": "aner Spiller", "discussions": "Konversatiounen", "today": "Haut", "yesterday": "Gëschter", @@ -726,6 +752,7 @@ "ifNoneLeaveEmpty": "Eidel loossen, falls keng", "profile": "Profil", "editProfile": "Profil änneren", + "realName": "Richtegen Numm", "biography": "Biographie", "countryRegion": "Land oder Regioun", "thankYou": "Merci!", @@ -749,6 +776,7 @@ "descPrivateHelp": "Text deen just Ekippenmemberen wäerten gesinn. Falls agestallt, ersetzt en fir Memberen d'ëffentlech Beschreiwung.", "no": "Nee", "yes": "Jo", + "website": "Websäit", "help": "Hëllef:", "createANewTopic": "Neien Thema kreéieren", "topics": "Themen", @@ -800,6 +828,7 @@ "slow": "Lues", "insideTheBoard": "Um Briet", "outsideTheBoard": "Außerhalb vum Briet", + "allSquaresOfTheBoard": "All d'Felder um Briet", "onSlowGames": "An luesen Partien", "always": "Ëmmer", "never": "Ni", diff --git a/lib/l10n/lila_lt.arb b/lib/l10n/lila_lt.arb index bcde178aa0..590546cb3e 100644 --- a/lib/l10n/lila_lt.arb +++ b/lib/l10n/lila_lt.arb @@ -93,6 +93,7 @@ "preferencesPgnLetter": "Raidės (K, Q, R, B, N)", "preferencesZenMode": "„Zen“ režimas", "preferencesShowPlayerRatings": "Rodyti žaidėjų reitingus", + "preferencesShowFlairs": "Parodykite žaidėjo emociją", "preferencesExplainShowPlayerRatings": "Tai leidžia iš svetainės paslėpti visus reitingus ir padeda susifokusuoti ties šachmatais. Partijos vis dar gali būti reitinguojamos. Šis pasirinkimas skirtas tik nustatyti, ką galite matyti.", "preferencesDisplayBoardResizeHandle": "Rodyti lentos dydžio keitimo simbolį", "preferencesOnlyOnInitialPosition": "Tik pradinėje padėtyje", @@ -419,6 +420,8 @@ "promoteVariation": "Paaukštinimo varijacija", "makeMainLine": "Padaryti pagrindine linija", "deleteFromHere": "Ištrinti nuo čia", + "collapseVariations": "Slėpti variantus", + "expandVariations": "Plėtoti variantus", "forceVariation": "Rodyti kaip variaciją", "copyVariationPgn": "Kopijuoti variacijos PGN", "move": "Ėjimas", @@ -725,9 +728,10 @@ "ifNoneLeaveEmpty": "Jei neturite, palikite tuščią", "profile": "Profilis", "editProfile": "Redaguoti profilį", + "realName": "Tikrasis vardas", "setFlair": "Pasirinkite savo atskiriamąjį ženklą - avatarą", - "flair": "Atskiriamasis ženklas", - "youCanHideFlair": "Yra nustatymas leidžiantis atjungti visų žaidėjų skiriamuosius ženklus.", + "flair": "Skiriamasis ženklas", + "youCanHideFlair": "Tai nustatymas, leidžiantis atjungti visų žaidėjų skiriamuosius ženklus.", "biography": "Aprašymas", "countryRegion": "Šalis ar regionas", "thankYou": "Ačiū!", @@ -744,7 +748,7 @@ "automaticallyProceedToNextGameAfterMoving": "Po ėjimo automatiškai pereiti prie kitos partijos", "autoSwitch": "Automatinis perjungimas", "puzzles": "Užduotys", - "onlineBots": "Prisijungę robotai", + "onlineBots": "Online robotai", "name": "Pavadinimas", "description": "Aprašymas", "descPrivate": "Privatus aprašymas", @@ -802,6 +806,7 @@ "slow": "Lėta", "insideTheBoard": "Ant lentos", "outsideTheBoard": "Šalia lentos", + "allSquaresOfTheBoard": "Visi lentos laukeliai", "onSlowGames": "Lėtose partijose", "always": "Visada", "never": "Niekada", @@ -891,7 +896,7 @@ "keyboardShortcuts": "Spartieji klavišai", "keyMoveBackwardOrForward": "judėti pirmyn/atgal", "keyGoToStartOrEnd": "eiti į pradžią/pabaigą", - "keyCycleSelectedVariation": "Pereiti pasirinktą variantą", + "keyCycleSelectedVariation": "Praeiti pasirinktą variantą", "keyShowOrHideComments": "rodyti/slėpti komentarus", "keyEnterOrExitVariation": "įeiti/išeiti iš variacijos", "keyRequestComputerAnalysis": "Paprašyti kompiuterio analizės, pasimokykite iš savo klaidų", @@ -900,16 +905,16 @@ "keyNextMistake": "Kita klaida", "keyNextInaccuracy": "Kitas netiklsumas", "keyPreviousBranch": "Praeita atšaka", - "keyNextBranch": "Kita atšaka", + "keyNextBranch": "Sekanti atšaka", "toggleVariationArrows": "Rodyti variacijų rodykles", - "cyclePreviousOrNextVariation": "Eiti į praeitą/sekantį variantą", + "cyclePreviousOrNextVariation": "Eiti į ankstesnį/sekantį variantą", "toggleGlyphAnnotations": "Įjungti ėjimų komentarus", "togglePositionAnnotations": "Įjungti pozicijos komentarus", - "variationArrowsInfo": "Variacijų rodyklės leidžia jums naviguoti nenaudojant ėjimų lentelės.", + "variationArrowsInfo": "Variacijų rodyklės leidžia jums naviguoti nenaudojant ėjimų sarašo.", "playSelectedMove": "padaryti pasirinktą ėjimą", "newTournament": "Naujas turnyras", "tournamentHomeTitle": "Šachmatų turnyras su įvairiomis laiko kontrolėmis ir variantais", - "tournamentHomeDescription": "Žaiskite aukšto tempo šachmatų turnyruose! Prisijunkite prie oficialaus suplanuoto turnyro arba sukurkite savo.", + "tournamentHomeDescription": "Žaiskite aukšto tempo šachmatų turnyruose! Prisijunkite prie oficialaus suplanuoto turnyro arba sukurkite savo. Kulka, žaibas, klasikiniai, Chess960, King of the Hill, Threecheck ir daugiau parinkčių, skirtų begalinėms šachmatų pramogoms.", "tournamentNotFound": "Turnyras nerastas", "tournamentDoesNotExist": "Turnyras neegzistuoja.", "tournamentMayHaveBeenCanceled": "Jis galėjo būti atšauktas, jeigu iki jo pradžios išėjo visi žaidėjai.", @@ -961,7 +966,7 @@ "zeroAdvertisement": "Jokių reklamų", "fullFeatured": "Visiškai parengta", "phoneAndTablet": "Telefonui ir planšetei", - "bulletBlitzClassical": "Žaibo, blic, klasikiniai", + "bulletBlitzClassical": "Kulka, Žaibas, klasikiniai", "correspondenceChess": "Korespondenciniai", "onlineAndOfflinePlay": "Žaidimas su ir be interneto", "viewTheSolution": "Parodyti sprendimą", @@ -1069,13 +1074,13 @@ "agreementPolicy": "Pasižadu laikytis visų „Lichess“ nuostatų.", "searchOrStartNewDiscussion": "Ieškokite, arba pradėkite naują diskusiją", "edit": "Keisti", - "bullet": "Naujiena", - "blitz": "Blitz", + "bullet": "Kulka", + "blitz": "Žaibas", "rapid": "Greitieji", "classical": "Klasikiniai", "ultraBulletDesc": "Be proto greitos partijos: mažiau nei 30 sekundžių", "bulletDesc": "Labai greitos partijos: mažiau nei 3 minutės", - "blitzDesc": "Blic partijos: nuo 3 iki 8 minučių", + "blitzDesc": "Žaibo partijos: nuo 3 iki 8 minučių", "rapidDesc": "Greitosios partijos: nuo 8 iki 25 minučių", "classicalDesc": "Klasikinės partijos: 25 minutės ir daugiau", "correspondenceDesc": "Korespondencinės partijos: viena ar kelios dienos ėjimui", diff --git a/lib/l10n/lila_nb.arb b/lib/l10n/lila_nb.arb index 3fefda65ac..0b37d7d989 100644 --- a/lib/l10n/lila_nb.arb +++ b/lib/l10n/lila_nb.arb @@ -1,4 +1,47 @@ { + "mobileHomeTab": "Hjem", + "mobilePuzzlesTab": "Nøtter", + "mobileToolsTab": "Verktøy", + "mobileWatchTab": "Se", + "mobileSettingsTab": "Valg", + "mobileMustBeLoggedIn": "Du må være logget inn for å vise denne siden.", + "mobileSystemColors": "Systemfarger", + "mobileFeedbackButton": "Tilbakemeldinger", + "mobileOkButton": "Ok", + "mobileSettingsHapticFeedback": "Haptiske tilbakemeldinger", + "mobileSettingsImmersiveMode": "Fordypelsesmodus", + "mobileSettingsImmersiveModeSubtitle": "Skjul systemgrensesnittet mens du spiller. Bruk dette hvis du blir forstyrret av systemets navigasjonsgester på skjermkanten. Gjelder for partier og Puzzle Storm.", + "mobileNotFollowingAnyUser": "Du følger ingen brukere.", + "mobileAllGames": "Alle partier", + "mobileRecentSearches": "Nylige søk", + "mobileClearButton": "Tøm", + "mobilePlayersMatchingSearchTerm": "Spillere med «{param}»", + "mobileNoSearchResults": "Ingen treff", + "mobileAreYouSure": "Er du sikker?", + "mobilePuzzleStreakAbortWarning": "Du mister rekken og poengsummen din blir lagret.", + "mobilePuzzleStormNothingToShow": "Ingenting her. Spill noen runder med Puzzle Storm.", + "mobileSharePuzzle": "Del denne sjakknøtten", + "mobileShareGameURL": "Del URL til partiet", + "mobileShareGamePGN": "Del PGN", + "mobileSharePositionAsFEN": "Del stillingen som FEN", + "mobileShowVariations": "Vis varianter", + "mobileHideVariation": "Skjul variant", + "mobileShowComments": "Vis kommentarer", + "mobilePuzzleStormConfirmEndRun": "Vil du avslutte denne runden?", + "mobilePuzzleStormFilterNothingToShow": "Ingenting her, endre filteret", + "mobileCancelTakebackOffer": "Avbryt tilbud om å angre", + "mobileCancelDrawOffer": "Avbryt remistilbud", + "mobileWaitingForOpponentToJoin": "Venter på motstanderen ...", + "mobileBlindfoldMode": "Blindsjakk", + "mobileLiveStreamers": "Direktestrømmere", + "mobileCustomGameJoinAGame": "Bli med på et parti", + "mobileCorrespondenceClearSavedMove": "Fjern lagret trekk", + "mobileSomethingWentWrong": "Noe gikk galt.", + "mobileShowResult": "Vis resultat", + "mobilePuzzleThemesSubtitle": "Spill sjakknøtter fra favorittåpningene dine, eller velg et tema.", + "mobilePuzzleStormSubtitle": "Løs så mange sjakknøtter som mulig i løpet av 3 minutter.", + "mobileGreeting": "Hallo, {param}", + "mobileGreetingWithoutName": "Hallo", "activityActivity": "Aktivitet", "activityHostedALiveStream": "Startet en direktestrøm", "activityRankedInSwissTournament": "Ble nummer {param1} i {param2}", @@ -498,6 +541,7 @@ "latestForumPosts": "Nyeste foruminnlegg", "players": "Spillere", "friends": "Venner", + "otherPlayers": "andre spillere", "discussions": "Samtaler", "today": "I dag", "yesterday": "I går", @@ -755,6 +799,8 @@ "descPrivateHelp": "Tekst som lagmedlemmene ser i stedet for den offentlige beskrivelsen.", "no": "Nei", "yes": "Ja", + "website": "Nettsted", + "mobile": "Mobil", "help": "Hjelp:", "createANewTopic": "Opprett nytt emne", "topics": "Emner", @@ -806,6 +852,7 @@ "slow": "Sakte", "insideTheBoard": "Innenfor brettet", "outsideTheBoard": "Utenfor brettet", + "allSquaresOfTheBoard": "Alle felt på brettet", "onSlowGames": "På lange partier", "always": "Alltid", "never": "Aldri", diff --git a/lib/l10n/lila_nl.arb b/lib/l10n/lila_nl.arb index 517f3a5da4..f2e10f73dc 100644 --- a/lib/l10n/lila_nl.arb +++ b/lib/l10n/lila_nl.arb @@ -4,6 +4,40 @@ "mobileToolsTab": "Gereedschap", "mobileWatchTab": "Kijken", "mobileSettingsTab": "Instellingen", + "mobileMustBeLoggedIn": "Je moet ingelogd zijn om deze pagina te bekijken.", + "mobileSystemColors": "Systeemkleuren", + "mobileFeedbackButton": "Feedback", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Haptische feedback", + "mobileSettingsImmersiveMode": "Volledig scherm-modus", + "mobileNotFollowingAnyUser": "U volgt geen gebruiker.", + "mobileAllGames": "Alle partijen", + "mobileRecentSearches": "Recente zoekopdrachten", + "mobileClearButton": "Wissen", + "mobilePlayersMatchingSearchTerm": "Spelers met \"{param}\"", + "mobileNoSearchResults": "Geen resultaten", + "mobileAreYouSure": "Weet je het zeker?", + "mobilePuzzleStreakAbortWarning": "Je verliest je huidige reeks en de score wordt opgeslagen.", + "mobilePuzzleStormNothingToShow": "Niets om te tonen. Speel een aantal reeksen Puzzle Storm.", + "mobileSharePuzzle": "Deze puzzel delen", + "mobileShareGameURL": "Partij URL delen", + "mobileShareGamePGN": "PGN delen", + "mobileSharePositionAsFEN": "Stelling delen als FEN", + "mobileShowVariations": "Toon varianten", + "mobileHideVariation": "Verberg varianten", + "mobileShowComments": "Opmerkingen weergeven", + "mobilePuzzleStormConfirmEndRun": "Wil je dit uitvoeren beëindigen?", + "mobileCancelDrawOffer": "Remiseaanbod intrekken", + "mobileWaitingForOpponentToJoin": "Wachten op een tegenstander...", + "mobileLiveStreamers": "Live streamers", + "mobileCustomGameJoinAGame": "Een partij beginnen", + "mobileCorrespondenceClearSavedMove": "Opgeslagen zet wissen", + "mobileSomethingWentWrong": "Er is iets fout gegaan.", + "mobileShowResult": "Toon resultaat", + "mobilePuzzleThemesSubtitle": "Speel puzzels uit je favorieten openingen, of kies een thema.", + "mobilePuzzleStormSubtitle": "Los zoveel mogelijk puzzels op in 3 minuten.", + "mobileGreeting": "Hallo, {param}", + "mobileGreetingWithoutName": "Hallo", "activityActivity": "Activiteit", "activityHostedALiveStream": "Heeft een live stream gehost", "activityRankedInSwissTournament": "Eindigde #{param1} in {param2}", @@ -503,6 +537,7 @@ "latestForumPosts": "Recente forumberichten", "players": "Spelers", "friends": "Vrienden", + "otherPlayers": "andere spelers", "discussions": "Discussies", "today": "Vandaag", "yesterday": "Gisteren", @@ -759,6 +794,8 @@ "descPrivateHelp": "Tekst die alleen de teamleden zien. Indien ingesteld, vervangt deze de openbare beschrijving voor teamleden.", "no": "Nee", "yes": "Ja", + "website": "Website", + "mobile": "Mobiel", "help": "Help:", "createANewTopic": "Maak een nieuw onderwerp", "topics": "Onderwerpen", diff --git a/lib/l10n/lila_nn.arb b/lib/l10n/lila_nn.arb index 1e8126d271..b6b613a009 100644 --- a/lib/l10n/lila_nn.arb +++ b/lib/l10n/lila_nn.arb @@ -4,6 +4,44 @@ "mobileToolsTab": "Verktøy", "mobileWatchTab": "Sjå", "mobileSettingsTab": "Innstillingar", + "mobileMustBeLoggedIn": "Du må vera innlogga for å sjå denne sida.", + "mobileSystemColors": "Systemfargar", + "mobileFeedbackButton": "Tilbakemelding", + "mobileOkButton": "Ok", + "mobileSettingsHapticFeedback": "Haptisk tilbakemelding", + "mobileSettingsImmersiveMode": "Immersiv modus", + "mobileSettingsImmersiveModeSubtitle": "Skjul system-UI mens du spelar. Bruk dette dersom systemet sine navigasjonsrørsler ved skjermkanten forstyrrar deg. Gjelder skjermbileta for spel og oppgåvestorm.", + "mobileNotFollowingAnyUser": "Du følgjer ingen brukarar.", + "mobileAllGames": "Alle spel", + "mobileRecentSearches": "Nylege søk", + "mobileClearButton": "Tøm", + "mobilePlayersMatchingSearchTerm": "Spelarar med \"{param}\"", + "mobileNoSearchResults": "Ingen resultat", + "mobileAreYouSure": "Er du sikker?", + "mobilePuzzleStreakAbortWarning": "Du vil mista din noverande vinstrekke og poengsummen din vert lagra.", + "mobilePuzzleStormNothingToShow": "Ikkje noko å visa. Spel nokre omgangar Puzzle Storm.", + "mobileSharePuzzle": "Del denne oppgåva", + "mobileShareGameURL": "Del URLen til partiet", + "mobileShareGamePGN": "Del PGN", + "mobileSharePositionAsFEN": "Del stilling som FEN", + "mobileShowVariations": "Vis variantpilar", + "mobileHideVariation": "Skjul variant", + "mobileShowComments": "Vis kommentarar", + "mobilePuzzleStormConfirmEndRun": "Vil du avslutte dette løpet?", + "mobilePuzzleStormFilterNothingToShow": "Ikkje noko å syna, ver venleg å endre filtera", + "mobileCancelTakebackOffer": "Avbryt tilbud om angrerett", + "mobileCancelDrawOffer": "Avbryt remistilbud", + "mobileWaitingForOpponentToJoin": "Ventar på motspelar...", + "mobileBlindfoldMode": "Blindsjakk", + "mobileLiveStreamers": "Direkte strøymarar", + "mobileCustomGameJoinAGame": "Bli med på eit parti", + "mobileCorrespondenceClearSavedMove": "Fjern lagra trekk", + "mobileSomethingWentWrong": "Det oppsto ein feil.", + "mobileShowResult": "Vis resultat", + "mobilePuzzleThemesSubtitle": "Spel oppgåver frå favorittopningane dine, eller velg eit tema.", + "mobilePuzzleStormSubtitle": "Løys så mange oppgåver som du maktar på tre minutt.", + "mobileGreeting": "Hei {param}", + "mobileGreetingWithoutName": "Hei", "activityActivity": "Aktivitet", "activityHostedALiveStream": "Starta en direktestraum", "activityRankedInSwissTournament": "Vart nr. {param1} i {param2}", @@ -503,6 +541,7 @@ "latestForumPosts": "Siste innlegg i forumet", "players": "Spelarar", "friends": "Vener", + "otherPlayers": "andre spelarar", "discussions": "Diskusjonar", "today": "I dag", "yesterday": "I går", @@ -760,6 +799,8 @@ "descPrivateHelp": "Tekst som berre lagmedlemar kan sjå. Dersom utfylt vert den ei erstatning av den offentlege omtalen, til bruk for laget sine medlemar.", "no": "Nei", "yes": "Ja", + "website": "Nettside", + "mobile": "Mobil", "help": "Hjelp:", "createANewTopic": "Opprett eit nytt emne", "topics": "Emne", diff --git a/lib/l10n/lila_pl.arb b/lib/l10n/lila_pl.arb index 4df2c0ec28..0e35a8a68e 100644 --- a/lib/l10n/lila_pl.arb +++ b/lib/l10n/lila_pl.arb @@ -1,4 +1,47 @@ { + "mobileHomeTab": "Start", + "mobilePuzzlesTab": "Zadania", + "mobileToolsTab": "Narzędzia", + "mobileWatchTab": "Oglądaj", + "mobileSettingsTab": "Ustawienia", + "mobileMustBeLoggedIn": "Musisz być zalogowany, aby wyświetlić tę stronę.", + "mobileSystemColors": "Kolory systemowe", + "mobileFeedbackButton": "Opinie", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Wibracja przy dotknięciu", + "mobileSettingsImmersiveMode": "Tryb pełnoekranowy", + "mobileSettingsImmersiveModeSubtitle": "Ukryj interfejs użytkownika podczas gry. Użyj tego, jeśli rozpraszają Cię elementy nawigacji systemu na krawędziach ekranu. Dotyczy ekranów gry i rozwiązywania zadań.", + "mobileNotFollowingAnyUser": "Nie obserwujesz żadnego gracza.", + "mobileAllGames": "Wszystkie partie", + "mobileRecentSearches": "Ostatnio wyszukiwane", + "mobileClearButton": "Wyczyść", + "mobilePlayersMatchingSearchTerm": "Gracze pasujący do \"{param}\"", + "mobileNoSearchResults": "Brak wyników", + "mobileAreYouSure": "Jesteś pewien?", + "mobilePuzzleStreakAbortWarning": "Przerwiesz swoją dobrą passę, a Twój wynik zostanie zapisany.", + "mobilePuzzleStormNothingToShow": "Nic do wyświetlenia. Rozegraj kilka serii.", + "mobileSharePuzzle": "Udostępnij to zadanie", + "mobileShareGameURL": "Udostępnij adres URL partii", + "mobileShareGamePGN": "Udostępnij PGN", + "mobileSharePositionAsFEN": "Udostępnij pozycję jako FEN", + "mobileShowVariations": "Pokaż warianty", + "mobileHideVariation": "Ukryj wariant", + "mobileShowComments": "Pokaż komentarze", + "mobilePuzzleStormConfirmEndRun": "Czy chcesz zakończyć tę serię?", + "mobilePuzzleStormFilterNothingToShow": "Brak wyników, zmień proszę filtry", + "mobileCancelTakebackOffer": "Anuluj prośbę cofnięcia ruchu", + "mobileCancelDrawOffer": "Anuluj propozycję remisu", + "mobileWaitingForOpponentToJoin": "Oczekiwanie na dołączenie przeciwnika...", + "mobileBlindfoldMode": "Gra na ślepo", + "mobileLiveStreamers": "Aktywni streamerzy", + "mobileCustomGameJoinAGame": "Dołącz do partii", + "mobileCorrespondenceClearSavedMove": "Usuń zapisany ruch", + "mobileSomethingWentWrong": "Coś poszło nie tak.", + "mobileShowResult": "Pokaż wynik", + "mobilePuzzleThemesSubtitle": "Rozwiąż zadania z ulubionego debiutu lub wybierz motyw.", + "mobilePuzzleStormSubtitle": "Rozwiąż jak najwięcej zadań w ciągu 3 minut.", + "mobileGreeting": "Witaj {param}", + "mobileGreetingWithoutName": "Witaj", "activityActivity": "Aktywność", "activityHostedALiveStream": "Udostępnił stream na żywo", "activityRankedInSwissTournament": "{param1} miejsce w {param2}", @@ -498,6 +541,7 @@ "latestForumPosts": "Najnowsze wpisy", "players": "Gracze", "friends": "Znajomi", + "otherPlayers": "inni gracze", "discussions": "Rozmowy", "today": "Dzisiaj", "yesterday": "Wczoraj", @@ -755,6 +799,7 @@ "descPrivateHelp": "Tekst widoczny tylko dla członków klubu. Jeśli jest ustawiony, zastępuje publiczny opis dla członków klubu.", "no": "Nie", "yes": "Tak", + "website": "Strona internetowa", "help": "Porada:", "createANewTopic": "Załóż nowy temat", "topics": "Liczba tematów", diff --git a/lib/l10n/lila_pt.arb b/lib/l10n/lila_pt.arb index 125f384b85..59f532eb24 100644 --- a/lib/l10n/lila_pt.arb +++ b/lib/l10n/lila_pt.arb @@ -1,680 +1,712 @@ { "mobileHomeTab": "Início", "mobilePuzzlesTab": "Problemas", - "mobileToolsTab": "Ferramentas", + "mobileToolsTab": "Tools", "mobileWatchTab": "Assistir", - "mobileSettingsTab": "Configurações", + "mobileSettingsTab": "Definições", + "mobileMustBeLoggedIn": "Tem de iniciar sessão para visualizar esta página.", + "mobileSystemColors": "Cores do sistema", + "mobileFeedbackButton": "Feedback", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Feedback tátil", + "mobileSettingsImmersiveMode": "Modo imersivo", + "mobileSettingsImmersiveModeSubtitle": "Ocultar a interface do sistema durante o jogo. Utiliza esta opção se sentires incomodado com os gestos de navegação do sistema nas extremidades do ecrã. Aplica-se aos ecrãs de jogo e do Puzzle Storm.", + "mobileNotFollowingAnyUser": "Não segues nenhum utilizador.", + "mobileAllGames": "Todos os jogos", + "mobileRecentSearches": "Pesquisas recentes", + "mobileClearButton": "Limpar", + "mobilePlayersMatchingSearchTerm": "Jogadores com \"{param}\"", + "mobileNoSearchResults": "Sem resultados", + "mobileAreYouSure": "Tens a certeza?", + "mobilePuzzleStreakAbortWarning": "Perderas a tua sequência atual e a pontuação será salva.", + "mobilePuzzleStormNothingToShow": "Nada para mostrar. Joga alguns Puzzle Storm.", + "mobileSharePuzzle": "Partilhar este problema", + "mobileShareGameURL": "Partilhar o URL do jogo", + "mobileShareGamePGN": "Partilhar PGN", + "mobileSharePositionAsFEN": "Partilhar posição como FEN", + "mobileShowVariations": "Mostrar variações", + "mobileHideVariation": "Ocultar variação", + "mobileShowComments": "Mostrar comentários", + "mobilePuzzleStormConfirmEndRun": "Queres terminar esta corrida?", + "mobilePuzzleStormFilterNothingToShow": "Nada para mostrar, por favor, altera os filtros", + "mobileCancelTakebackOffer": "Cancelar pedido de voltar", + "mobileWaitingForOpponentToJoin": "À espera do adversário entrar...", + "mobileBlindfoldMode": "De olhos vendados", + "mobileLiveStreamers": "Streamers em direto", + "mobileCustomGameJoinAGame": "Entrar num jogo", + "mobileCorrespondenceClearSavedMove": "Limpar movimento salvo", + "mobileSomethingWentWrong": "Algo deu errado.", "activityActivity": "Atividade", - "activityHostedALiveStream": "Iniciou uma transmissão ao vivo", - "activityRankedInSwissTournament": "Classificado #{param1} entre {param2}", - "activitySignedUp": "Registrou-se no lichess", - "activitySupportedNbMonths": "{count, plural, =1{Contribuiu para o lichess.org por {count} mês como {param2}} other{Contribuiu para o lichess.org por {count} meses como {param2}}}", + "activityHostedALiveStream": "Criou uma livestream", + "activityRankedInSwissTournament": "Classificado #{param1} em {param2}", + "activitySignedUp": "Registou-se no lichess.org", + "activitySupportedNbMonths": "{count, plural, =1{Apoiou o lichess.org durante {count} mês como {param2}} other{Apoiou o lichess.org durante {count} meses como {param2}}}", "activityPracticedNbPositions": "{count, plural, =1{Praticou {count} posição em {param2}} other{Praticou {count} posições em {param2}}}", - "activitySolvedNbPuzzles": "{count, plural, =1{Resolveu {count} quebra-cabeça tático} other{Resolveu {count} quebra-cabeças táticos}}", - "activityPlayedNbGames": "{count, plural, =1{Jogou {count} partida de {param2}} other{Jogou {count} partidas de {param2}}}", + "activitySolvedNbPuzzles": "{count, plural, =1{Resolveu {count} problema} other{Resolveu {count} problemas}}", + "activityPlayedNbGames": "{count, plural, =1{Jogou {count} jogo de {param2}} other{Jogou {count} jogos de {param2}}}", "activityPostedNbMessages": "{count, plural, =1{Publicou {count} mensagem em {param2}} other{Publicou {count} mensagens em {param2}}}", - "activityPlayedNbMoves": "{count, plural, =1{Jogou {count} movimento} other{Jogou {count} movimentos}}", + "activityPlayedNbMoves": "{count, plural, =1{Fez {count} jogada} other{Fez {count} jogadas}}", "activityInNbCorrespondenceGames": "{count, plural, =1{em {count} jogo por correspondência} other{em {count} jogos por correspondência}}", "activityCompletedNbGames": "{count, plural, =1{Completou {count} jogo por correspondência} other{Completou {count} jogos por correspondência}}", "activityFollowedNbPlayers": "{count, plural, =1{Começou a seguir {count} jogador} other{Começou a seguir {count} jogadores}}", "activityGainedNbFollowers": "{count, plural, =1{Ganhou {count} novo seguidor} other{Ganhou {count} novos seguidores}}", - "activityHostedNbSimuls": "{count, plural, =1{Hospedou {count} exibição simultânea} other{Hospedou {count} exibições simultâneas}}", + "activityHostedNbSimuls": "{count, plural, =1{Criou {count} exibição simultânea} other{Criou {count} exibições simultâneas}}", "activityJoinedNbSimuls": "{count, plural, =1{Participou em {count} exibição simultânea} other{Participou em {count} exibições simultâneas}}", "activityCreatedNbStudies": "{count, plural, =1{Criou {count} novo estudo} other{Criou {count} novos estudos}}", - "activityCompetedInNbTournaments": "{count, plural, =1{Competiu em {count} torneio arena} other{Competiu em {count} torneios arena}}", - "activityRankedInTournament": "{count, plural, =1{Classificado #{count} (top {param2}%) com {param3} jogo em {param4}} other{Classificado #{count} (top {param2}%) com {param3} jogos em {param4}}}", + "activityCompetedInNbTournaments": "{count, plural, =1{Competiu em {count} torneio} other{Competiu em {count} torneios}}", + "activityRankedInTournament": "{count, plural, =1{Qualificado #{count} (nos {param2}% melhores) com {param3} jogo em {param4}} other{Qualificado #{count} (nos {param2}% melhores) com {param3} jogos em {param4}}}", "activityCompetedInNbSwissTournaments": "{count, plural, =1{Competiu em {count} torneio suíço} other{Competiu em {count} torneios suíços}}", - "activityJoinedNbTeams": "{count, plural, =1{Entrou na {count} equipe} other{Entrou nas {count} equipes}}", + "activityJoinedNbTeams": "{count, plural, =1{Entrou em {count} equipa} other{Entrou em {count} equipas}}", "broadcastBroadcasts": "Transmissões", - "broadcastLiveBroadcasts": "Transmissões ao vivo do torneio", + "broadcastLiveBroadcasts": "Transmissões do torneio em direto", "challengeChallengesX": "Desafios: {param1}", "challengeChallengeToPlay": "Desafiar para jogar", "challengeChallengeDeclined": "Desafio recusado", - "challengeChallengeAccepted": "Desafio aceito!", + "challengeChallengeAccepted": "Desafio aceite!", "challengeChallengeCanceled": "Desafio cancelado.", - "challengeRegisterToSendChallenges": "Por favor, registre-se para enviar desafios.", - "challengeYouCannotChallengeX": "Você não pode desafiar {param}.", + "challengeRegisterToSendChallenges": "Por favor regista-te para enviar desafios.", + "challengeYouCannotChallengeX": "Não podes desafiar {param}.", "challengeXDoesNotAcceptChallenges": "{param} não aceita desafios.", - "challengeYourXRatingIsTooFarFromY": "O seu rating {param1} é muito diferente de {param2}.", - "challengeCannotChallengeDueToProvisionalXRating": "Não pode desafiar devido ao rating provisório de {param}.", + "challengeYourXRatingIsTooFarFromY": "O teu ranking {param1} esta muito distante de {param2}.", + "challengeCannotChallengeDueToProvisionalXRating": "Não podes desafiar devido a ranking provisório {param}.", "challengeXOnlyAcceptsChallengesFromFriends": "{param} só aceita desafios de amigos.", - "challengeDeclineGeneric": "Não estou aceitando desafios no momento.", + "challengeDeclineGeneric": "Não estou a aceitar desafios no momento.", "challengeDeclineLater": "Este não é o momento certo para mim, por favor pergunte novamente mais tarde.", - "challengeDeclineTooFast": "Este controle de tempo é muito rápido para mim, por favor, desafie novamente com um jogo mais lento.", - "challengeDeclineTooSlow": "Este controle de tempo é muito lento para mim, por favor, desafie novamente com um jogo mais rápido.", - "challengeDeclineTimeControl": "Não estou aceitando desafios com estes controles de tempo.", - "challengeDeclineRated": "Por favor, envie-me um desafio ranqueado.", + "challengeDeclineTooFast": "Este controlo de tempo é muito rápido para mim, por favor, desafie-me novamente com um jogo mais lento.", + "challengeDeclineTooSlow": "Este controlo de tempo é muito lento para mim, por favor, desafie-me novamente com um jogo mais rápido.", + "challengeDeclineTimeControl": "Não estou a aceitar desafios com este controlo de tempo.", + "challengeDeclineRated": "Por favor, envie-me um desafio a valer para a classificação.", "challengeDeclineCasual": "Por favor, envie-me um desafio amigável.", - "challengeDeclineStandard": "Não estou aceitando desafios de variantes no momento.", - "challengeDeclineVariant": "Não estou a fim de jogar esta variante no momento.", - "challengeDeclineNoBot": "Não estou aceitando desafios de robôs.", - "challengeDeclineOnlyBot": "Estou aceitando apenas desafios de robôs.", - "challengeInviteLichessUser": "Ou convide um usuário Lichess:", - "contactContact": "Contato", - "contactContactLichess": "Entrar em contato com Lichess", - "patronDonate": "Doação", - "patronLichessPatron": "Apoie o Lichess", + "challengeDeclineStandard": "Não estou a aceitar desafios de variante, de momento.", + "challengeDeclineVariant": "Não estou disposto a jogar essa variante, de momento.", + "challengeDeclineNoBot": "Não estou a aceitar desafios de bots.", + "challengeDeclineOnlyBot": "Apenas aceito desafios de bots.", + "challengeInviteLichessUser": "Ou convide um utilizador Lichess:", + "contactContact": "Contacto", + "contactContactLichess": "Contactar o Lichess", + "patronDonate": "Doar", + "patronLichessPatron": "Patrono do Lichess", "perfStatPerfStats": "Estatísticas de {param}", - "perfStatViewTheGames": "Ver os jogos", + "perfStatViewTheGames": "Ver as partidas", "perfStatProvisional": "provisório", - "perfStatNotEnoughRatedGames": "Não foram jogadas partidas suficientes valendo rating para estabelecer uma classificação confiável.", - "perfStatProgressOverLastXGames": "Progresso nos últimos {param} jogos:", - "perfStatRatingDeviation": "Desvio de pontuação: {param}.", - "perfStatRatingDeviationTooltip": "Um valor inferior indica que a pontuação é mais estável. Superior a {param1}, a pontuação é classificada como provisória. Para ser incluída nas classificações, esse valor deve ser inferior a {param2} (xadrez padrão) ou {param3} (variantes).", + "perfStatNotEnoughRatedGames": "Não foi jogado um número suficiente de partidas a pontuar para estabelecer uma pontuação de confiança.", + "perfStatProgressOverLastXGames": "Progresso nas últimas {param} partidas:", + "perfStatRatingDeviation": "Desvio da pontuação: {param}.", + "perfStatRatingDeviationTooltip": "Um valor inferior significa que a classificação é mais estável. Acima de {param1}, a classificação é considerada provisória. Para ser incluído nas classificações, esse valor deve estar abaixo de {param2} (xadrez padrão) ou {param3} (variantes).", "perfStatTotalGames": "Total de partidas", - "perfStatRatedGames": "Partidas valendo pontos", - "perfStatTournamentGames": "Jogos de torneio", - "perfStatBerserkedGames": "Partidas Berserked", - "perfStatTimeSpentPlaying": "Tempo jogando", - "perfStatAverageOpponent": "Pontuação média do adversário", + "perfStatRatedGames": "Total de partidas a pontuar", + "perfStatTournamentGames": "Partidas em torneios", + "perfStatBerserkedGames": "Partidas no modo frenético", + "perfStatTimeSpentPlaying": "Tempo passado a jogar", + "perfStatAverageOpponent": "Pontuação média dos adversários", "perfStatVictories": "Vitórias", "perfStatDefeats": "Derrotas", "perfStatDisconnections": "Desconexões", - "perfStatNotEnoughGames": "Jogos insuficientes jogados", + "perfStatNotEnoughGames": "Não foram jogadas partidas suficientes", "perfStatHighestRating": "Pontuação mais alta: {param}", - "perfStatLowestRating": "Rating mais baixo: {param}", - "perfStatFromXToY": "de {param1} para {param2}", - "perfStatWinningStreak": "Série de Vitórias", - "perfStatLosingStreak": "Série de derrotas", + "perfStatLowestRating": "Pontuação mais baixa: {param}", + "perfStatFromXToY": "de {param1} a {param2}", + "perfStatWinningStreak": "Vitórias consecutivas", + "perfStatLosingStreak": "Derrotas consecutivas", "perfStatLongestStreak": "Sequência mais longa: {param}", "perfStatCurrentStreak": "Sequência atual: {param}", - "perfStatBestRated": "Melhores vitórias valendo pontuação", - "perfStatGamesInARow": "Partidas jogadas seguidas", + "perfStatBestRated": "Melhores vitórias a pontuar", + "perfStatGamesInARow": "Partidas jogadas de seguida", "perfStatLessThanOneHour": "Menos de uma hora entre partidas", - "perfStatMaxTimePlaying": "Tempo máximo jogando", + "perfStatMaxTimePlaying": "Tempo máximo passado a jogar", "perfStatNow": "agora", "preferencesPreferences": "Preferências", - "preferencesDisplay": "Exibição", + "preferencesDisplay": "Mostrar", "preferencesPrivacy": "Privacidade", "preferencesNotifications": "Notificações", "preferencesPieceAnimation": "Animação das peças", - "preferencesMaterialDifference": "Diferença material", - "preferencesBoardHighlights": "Destacar casas do tabuleiro (último movimento e xeque)", - "preferencesPieceDestinations": "Destino das peças (movimentos válidos e pré-movimentos)", + "preferencesMaterialDifference": "Diferença de material", + "preferencesBoardHighlights": "Destacar as casas do tabuleiro (último movimento e xeque)", + "preferencesPieceDestinations": "Destino das peças (movimentos válidos e antecipados)", "preferencesBoardCoordinates": "Coordenadas do tabuleiro (A-H, 1-8)", - "preferencesMoveListWhilePlaying": "Lista de movimentos durante a partida", - "preferencesPgnPieceNotation": "Modo de notação das jogadas", - "preferencesChessPieceSymbol": "Símbolo da peça", - "preferencesPgnLetter": "Letra (K, Q, R, B, N)", - "preferencesZenMode": "Modo Zen", - "preferencesShowPlayerRatings": "Mostrar rating dos jogadores", - "preferencesShowFlairs": "Mostrar emotes de usuário", - "preferencesExplainShowPlayerRatings": "Permite ocultar todas os ratings do site, para ajudar a se concentrar no jogo. As partidas continuam valendo rating.", - "preferencesDisplayBoardResizeHandle": "Mostrar cursor de redimensionamento do tabuleiro", + "preferencesMoveListWhilePlaying": "Lista de movimentos", + "preferencesPgnPieceNotation": "Anotação de movimentos", + "preferencesChessPieceSymbol": "Usar símbolo das peças", + "preferencesPgnLetter": "Usar letras (K, Q, R, B, N)", + "preferencesZenMode": "Modo zen", + "preferencesShowPlayerRatings": "Mostrar classificações dos jogadores", + "preferencesShowFlairs": "Mostrar os estilos do jogadores", + "preferencesExplainShowPlayerRatings": "Isto permite ocultar todas as avaliações do site, para o ajudar a concentrar-se no xadrez. Os jogos continuam a poder ser avaliados, trata-se apenas do que poderá ver.", + "preferencesDisplayBoardResizeHandle": "Mostrar o cursor de redimensionamento do tabuleiro", "preferencesOnlyOnInitialPosition": "Apenas na posição inicial", - "preferencesInGameOnly": "Durante partidas", - "preferencesChessClock": "Relógio", + "preferencesInGameOnly": "Apenas em Jogo", + "preferencesChessClock": "Relógio de xadrez", "preferencesTenthsOfSeconds": "Décimos de segundo", - "preferencesWhenTimeRemainingLessThanTenSeconds": "Quando o tempo restante < 10 segundos", + "preferencesWhenTimeRemainingLessThanTenSeconds": "Quando o tempo restante for < 10 segundos", "preferencesHorizontalGreenProgressBars": "Barras de progresso verdes horizontais", "preferencesSoundWhenTimeGetsCritical": "Som ao atingir tempo crítico", "preferencesGiveMoreTime": "Dar mais tempo", - "preferencesGameBehavior": "Comportamento do jogo", - "preferencesHowDoYouMovePieces": "Como você move as peças?", + "preferencesGameBehavior": "Funcionamento do jogo", + "preferencesHowDoYouMovePieces": "Como queres mexer as peças?", "preferencesClickTwoSquares": "Clicar em duas casas", - "preferencesDragPiece": "Arrastar a peça", - "preferencesBothClicksAndDrag": "Ambas", - "preferencesPremovesPlayingDuringOpponentTurn": "Pré-movimentos (jogadas durante o turno do oponente)", - "preferencesTakebacksWithOpponentApproval": "Voltar jogada (com aprovação do oponente)", + "preferencesDragPiece": "Arrastar uma peça", + "preferencesBothClicksAndDrag": "Qualquer", + "preferencesPremovesPlayingDuringOpponentTurn": "Jogadas antecipadas (jogadas durante a vez do adversário)", + "preferencesTakebacksWithOpponentApproval": "Voltar jogadas atrás (com aprovação do adversário)", "preferencesInCasualGamesOnly": "Somente em jogos casuais", "preferencesPromoteToQueenAutomatically": "Promover a Dama automaticamente", "preferencesExplainPromoteToQueenAutomatically": "Mantenha a tecla pressionada enquanto promove para desativar temporariamente a autopromoção", - "preferencesWhenPremoving": "Quando pré-mover", - "preferencesClaimDrawOnThreefoldRepetitionAutomatically": "Reivindicar empate sobre a repetição tripla automaticamente", - "preferencesWhenTimeRemainingLessThanThirtySeconds": "Quando o tempo restante < 30 segundos", + "preferencesWhenPremoving": "Quando mover antecipadamente", + "preferencesClaimDrawOnThreefoldRepetitionAutomatically": "Reivindicar empate automaticamente após uma repetição tripla", + "preferencesWhenTimeRemainingLessThanThirtySeconds": "Quando o tempo restante for < 30 segundos", "preferencesMoveConfirmation": "Confirmação de movimento", - "preferencesExplainCanThenBeTemporarilyDisabled": "Pode ser desativado durante a partida no menu do tabuleiro", + "preferencesExplainCanThenBeTemporarilyDisabled": "Pode ser desativado durante um jogo com o menu do tabuleiro", "preferencesInCorrespondenceGames": "Jogos por correspondência", - "preferencesCorrespondenceAndUnlimited": "Por correspondência e sem limites", - "preferencesConfirmResignationAndDrawOffers": "Confirmar abandono e oferta de empate", - "preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook": "Maneira de rocar", + "preferencesCorrespondenceAndUnlimited": "Por correspondência e ilimitado", + "preferencesConfirmResignationAndDrawOffers": "Confirmar desistências e propostas de empate", + "preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook": "Método de roque", "preferencesCastleByMovingTwoSquares": "Mover o rei duas casas", - "preferencesCastleByMovingOntoTheRook": "Mover o rei em direção à torre", - "preferencesInputMovesWithTheKeyboard": "Fazer lances com escrita do teclado", - "preferencesInputMovesWithVoice": "Mova as peças com sua voz", - "preferencesSnapArrowsToValidMoves": "Insira setas para movimentos válidos", - "preferencesSayGgWpAfterLosingOrDrawing": "Diga \"Bom jogo, bem jogado\" após a derrota ou empate", - "preferencesYourPreferencesHaveBeenSaved": "Suas preferências foram salvas.", - "preferencesScrollOnTheBoardToReplayMoves": "Use o scroll do mouse no tabuleiro para ir passando as jogadas", - "preferencesCorrespondenceEmailNotification": "Email diário listando seus jogos por correspondência", + "preferencesCastleByMovingOntoTheRook": "Mover o rei até à torre", + "preferencesInputMovesWithTheKeyboard": "Introduzir movimentos com o teclado", + "preferencesInputMovesWithVoice": "Insira movimentos com a sua voz", + "preferencesSnapArrowsToValidMoves": "Alinhar as setas para sítios para onde as peças se podem mover", + "preferencesSayGgWpAfterLosingOrDrawing": "Dizer \"Good game, well played\" (Bom jogo, bem jogado) após uma derrota ou empate", + "preferencesYourPreferencesHaveBeenSaved": "As tuas preferências foram guardadas.", + "preferencesScrollOnTheBoardToReplayMoves": "Rolar no tabuleiro para repetir os movimentos", + "preferencesCorrespondenceEmailNotification": "Notificações diárias por email listando seus jogos por correspondência", "preferencesNotifyStreamStart": "Streamer começou uma transmissão ao vivo", "preferencesNotifyInboxMsg": "Nova mensagem na caixa de entrada", - "preferencesNotifyForumMention": "Você foi mencionado em um comentário do fórum", - "preferencesNotifyInvitedStudy": "Convite para um estudo", - "preferencesNotifyGameEvent": "Jogo por correspondência atualizado", + "preferencesNotifyForumMention": "Um comentário do fórum menciona-o", + "preferencesNotifyInvitedStudy": "Convite para estudo", + "preferencesNotifyGameEvent": "Atualizações dos jogos por correspondência", "preferencesNotifyChallenge": "Desafios", - "preferencesNotifyTournamentSoon": "O torneio vai começar em breve", - "preferencesNotifyTimeAlarm": "Está acabando o tempo no jogo por correspondência", - "preferencesNotifyBell": "Notificação no Lichess", - "preferencesNotifyPush": "Notificação no dispositivo fora do Lichess", + "preferencesNotifyTournamentSoon": "O torneio começará em breve", + "preferencesNotifyTimeAlarm": "Está a acabar o tempo no jogo por correspondência", + "preferencesNotifyBell": "Notificação do sino no Lichess", + "preferencesNotifyPush": "Notificação do dispositivo quando não está no Lichess", "preferencesNotifyWeb": "Navegador", "preferencesNotifyDevice": "Dispositivo", "preferencesBellNotificationSound": "Som da notificação", - "puzzlePuzzles": "Quebra-cabeças", - "puzzlePuzzleThemes": "Temas de quebra-cabeça", + "puzzlePuzzles": "Problemas", + "puzzlePuzzleThemes": "Temas de problemas", "puzzleRecommended": "Recomendado", "puzzlePhases": "Fases", - "puzzleMotifs": "Motivos táticos", + "puzzleMotifs": "Temas", "puzzleAdvanced": "Avançado", - "puzzleLengths": "Distância", + "puzzleLengths": "Comprimentos", "puzzleMates": "Xeque-mates", "puzzleGoals": "Objetivos", "puzzleOrigin": "Origem", "puzzleSpecialMoves": "Movimentos especiais", - "puzzleDidYouLikeThisPuzzle": "Você gostou deste quebra-cabeças?", - "puzzleVoteToLoadNextOne": "Vote para carregar o próximo!", - "puzzleUpVote": "Votar a favor do quebra-cabeça", - "puzzleDownVote": "Votar contra o quebra-cabeça", - "puzzleYourPuzzleRatingWillNotChange": "Sua pontuação de quebra-cabeças não mudará. Note que os quebra-cabeças não são uma competição. A pontuação indica os quebra-cabeças que se adequam às suas habilidades.", - "puzzleFindTheBestMoveForWhite": "Encontre o melhor lance para as brancas.", - "puzzleFindTheBestMoveForBlack": "Encontre a melhor jogada para as pretas.", + "puzzleDidYouLikeThisPuzzle": "Gostaste deste problema?", + "puzzleVoteToLoadNextOne": "Vota para carregares o próximo!", + "puzzleUpVote": "Aprove o puzzle", + "puzzleDownVote": "Desaprove o puzzle", + "puzzleYourPuzzleRatingWillNotChange": "A tua classificação de problemas não será alterada. Nota que os problemas não são uma competição. A classificação ajuda a selecionar os melhores problemas para o teu nível atual.", + "puzzleFindTheBestMoveForWhite": "Encontra a melhor jogada para as brancas.", + "puzzleFindTheBestMoveForBlack": "Encontra a melhor jogada para as pretas.", "puzzleToGetPersonalizedPuzzles": "Para obter desafios personalizados:", - "puzzlePuzzleId": "Quebra-cabeça {param}", - "puzzlePuzzleOfTheDay": "Quebra-cabeça do dia", - "puzzleDailyPuzzle": "Quebra-cabeça diário", - "puzzleClickToSolve": "Clique para resolver", + "puzzlePuzzleId": "Problema {param}", + "puzzlePuzzleOfTheDay": "Problema do dia", + "puzzleDailyPuzzle": "Problema diário", + "puzzleClickToSolve": "Clica para resolveres", "puzzleGoodMove": "Boa jogada", "puzzleBestMove": "Melhor jogada!", - "puzzleKeepGoing": "Continue…", + "puzzleKeepGoing": "Continua…", "puzzlePuzzleSuccess": "Sucesso!", - "puzzlePuzzleComplete": "Quebra-cabeças concluído!", + "puzzlePuzzleComplete": "Problema resolvido!", "puzzleByOpenings": "Por abertura", - "puzzlePuzzlesByOpenings": "Quebra-cabeças por abertura", - "puzzleOpeningsYouPlayedTheMost": "Aberturas que você mais jogou em partidas valendo pontos", - "puzzleUseFindInPage": "Use a ferramenta \"Encontrar na página\" do navegador para encontrar sua abertura favorita!", - "puzzleUseCtrlF": "Aperte Ctrl + F para encontrar sua abertura favorita!", - "puzzleNotTheMove": "O movimento não é este!", - "puzzleTrySomethingElse": "Tente algo diferente.", - "puzzleRatingX": "Rating: {param}", - "puzzleHidden": "oculto", + "puzzlePuzzlesByOpenings": "Problemas por abertura", + "puzzleOpeningsYouPlayedTheMost": "Aberturas que jogou mais vezes em partidas com rating", + "puzzleUseFindInPage": "Usar \"Localizar na página\" no menu do navegador para encontrar a sua abertura favorita!", + "puzzleUseCtrlF": "Usar Ctrl+f para encontrar a sua abertura favorita!", + "puzzleNotTheMove": "Não é esse movimento!", + "puzzleTrySomethingElse": "Tenta outra coisa.", + "puzzleRatingX": "Pontuação: {param}", + "puzzleHidden": "oculta", "puzzleFromGameLink": "Do jogo {param}", - "puzzleContinueTraining": "Continue treinando", + "puzzleContinueTraining": "Continuar o treino", "puzzleDifficultyLevel": "Nível de dificuldade", "puzzleNormal": "Normal", - "puzzleEasier": "Fácil", - "puzzleEasiest": "Muito fácil", - "puzzleHarder": "Difícil", - "puzzleHardest": "Muito difícil", + "puzzleEasier": "Mais fáceis", + "puzzleEasiest": "Mais fáceis", + "puzzleHarder": "Mais difíceis", + "puzzleHardest": "Mais difíceis", "puzzleExample": "Exemplo", - "puzzleAddAnotherTheme": "Adicionar um outro tema", - "puzzleNextPuzzle": "Próximo quebra-cabeça", - "puzzleJumpToNextPuzzleImmediately": "Ir para o próximo problema automaticamente", - "puzzlePuzzleDashboard": "Painel do quebra-cabeças", - "puzzleImprovementAreas": "Áreas de aprimoramento", + "puzzleAddAnotherTheme": "Adicionar outro tema", + "puzzleNextPuzzle": "Próximo desafio", + "puzzleJumpToNextPuzzleImmediately": "Saltar imediatamente para o próximo problema", + "puzzlePuzzleDashboard": "Painel de controlo dos problemas", + "puzzleImprovementAreas": "Áreas a melhorar", "puzzleStrengths": "Pontos fortes", - "puzzleHistory": "Histórico de quebra-cabeças", + "puzzleHistory": "Histórico de problemas", "puzzleSolved": "resolvido", - "puzzleFailed": "falhou", - "puzzleStreakDescription": "Resolva quebra-cabeças progressivamente mais difíceis e construa uma sequência de vitórias. Não há relógio, então tome seu tempo. Um movimento errado e o jogo acaba! Porém, você pode pular um movimento por sessão.", - "puzzleYourStreakX": "Sua sequência: {param}", - "puzzleStreakSkipExplanation": "Pule este lance para preservar a sua sequência! Funciona apenas uma vez por corrida.", - "puzzleContinueTheStreak": "Continuar a sequência", - "puzzleNewStreak": "Nova sequência", + "puzzleFailed": "incorreto", + "puzzleStreakDescription": "Resolve puzzles progressivamente mais difíceis e estabelece uma sequência de vitórias. Não há relógio, demora o teu tempo. Um movimento errado e o jogo acaba! No entanto, podes saltar um movimento por sessão.", + "puzzleYourStreakX": "Vitórias consecutivas: {param}", + "puzzleStreakSkipExplanation": "Salta este movimento para preservar a tua sequência! Apenas funciona uma vez por sessão.", + "puzzleContinueTheStreak": "Continua a sequência", + "puzzleNewStreak": "Nova sequência de vitórias", "puzzleFromMyGames": "Dos meus jogos", - "puzzleLookupOfPlayer": "Pesquise quebra-cabeças de um jogador específico", - "puzzleFromXGames": "Problemas de {param}' jogos", - "puzzleSearchPuzzles": "Procurar quebra-cabeças", - "puzzleFromMyGamesNone": "Você não tem nenhum quebra-cabeça no banco de dados, mas o Lichess ainda te ama muito.\nJogue partidas rápidas e clássicas para aumentar suas chances de ter um desafio seu adicionado!", - "puzzleFromXGamesFound": "{param1} quebra-cabeças encontrados em {param2} partidas", - "puzzlePuzzleDashboardDescription": "Treine, analise, melhore", + "puzzleLookupOfPlayer": "Pesquise problemas de jogos de um jogador", + "puzzleFromXGames": "Puzzles dos jogos de {param}", + "puzzleSearchPuzzles": "Pesquisar desafios", + "puzzleFromMyGamesNone": "Não tens problemas na base de dados, mas Lichess adora-te muito.\n\nJoga partidas semi-rápidas e clássicas para aumentares a probabilidade de teres um problema adicionado!", + "puzzleFromXGamesFound": "{param1} problemas encontrados em {param2} partidas", + "puzzlePuzzleDashboardDescription": "Treinar, analisar, melhorar", "puzzlePercentSolved": "{param} resolvido", - "puzzleNoPuzzlesToShow": "Não há nada para mostrar aqui, jogue alguns quebra-cabeças primeiro!", + "puzzleNoPuzzlesToShow": "Nada para mostrar, joga alguns problemas primeiro!", "puzzleImprovementAreasDescription": "Treine estes para otimizar o seu progresso!", - "puzzleStrengthDescription": "Sua perfomance é melhor nesses temas", - "puzzlePlayedXTimes": "{count, plural, =1{Jogado {count} vezes} other{Jogado {count} vezes}}", - "puzzleNbPointsBelowYourPuzzleRating": "{count, plural, =1{Um ponto abaixo da sua classificação de quebra-cabeças} other{{count} pontos abaixo da sua classificação de quebra-cabeças}}", - "puzzleNbPointsAboveYourPuzzleRating": "{count, plural, =1{Um ponto acima da sua classificação de quebra-cabeças} other{{count} pontos acima da sua classificação de quebra-cabeças}}", - "puzzleNbPlayed": "{count, plural, =1{{count} jogado} other{{count} jogados}}", - "puzzleNbToReplay": "{count, plural, =1{{count} a ser repetido} other{{count} a serem repetidos}}", + "puzzleStrengthDescription": "Você tem melhor desempenho nestes temas", + "puzzlePlayedXTimes": "{count, plural, =1{Jogado {count} vez} other{Jogado {count} vezes}}", + "puzzleNbPointsBelowYourPuzzleRating": "{count, plural, =1{Um ponto abaixo da sua pontuação de problemas} other{{count} pontos abaixo da sua pontuação de problemas}}", + "puzzleNbPointsAboveYourPuzzleRating": "{count, plural, =1{Um ponto acima da sua pontuação de problemas} other{{count} pontos acima da sua pontuação de problemas}}", + "puzzleNbPlayed": "{count, plural, =1{{count} problema feito} other{{count} problemas feitos}}", + "puzzleNbToReplay": "{count, plural, =1{{count} para repetir} other{{count} para repetir}}", "puzzleThemeAdvancedPawn": "Peão avançado", - "puzzleThemeAdvancedPawnDescription": "Um peão prestes a ser promovido ou à beira da promoção é um tema tático.", + "puzzleThemeAdvancedPawnDescription": "A chave do tático é um peão a promover ou a ameaçar promover.", "puzzleThemeAdvantage": "Vantagem", - "puzzleThemeAdvantageDescription": "Aproveite a sua chance de ter uma vantagem decisiva. (200cp ≤ eval ≤ 600cp)", + "puzzleThemeAdvantageDescription": "Aproveita a oportunidade de obter uma vantagem decisiva. (200cp ≤ aval ≤ 600cp)", "puzzleThemeAnastasiaMate": "Mate Anastasia", - "puzzleThemeAnastasiaMateDescription": "Um cavalo e uma torre se unem para prender o rei do oponente entre a lateral do tabuleiro e uma peça amiga.", - "puzzleThemeArabianMate": "Mate árabe", - "puzzleThemeArabianMateDescription": "Um cavalo e uma torre se unem para prender o rei inimigo em um canto do tabuleiro.", - "puzzleThemeAttackingF2F7": "Atacando f2 ou f7", - "puzzleThemeAttackingF2F7Description": "Um ataque focado no peão de f2 e no peão de f7, como na abertura frango frito.", + "puzzleThemeAnastasiaMateDescription": "Um cavalo e uma torre ou dama cooperam para prender o rei inimigo entre um lado do tabuleiro e outra peça inimiga.", + "puzzleThemeArabianMate": "Mate Árabe", + "puzzleThemeArabianMateDescription": "Um cavalo e uma torre cooperam para prenderem o rei inimigo no canto do tabuleiro.", + "puzzleThemeAttackingF2F7": "Atacar f2 ou f7", + "puzzleThemeAttackingF2F7Description": "Um ataque ao peão de f2 ou f7, como a abertura \"Fried Liver\".", "puzzleThemeAttraction": "Atração", - "puzzleThemeAttractionDescription": "Uma troca ou sacrifício encorajando ou forçando uma peça do oponente a uma casa que permite uma sequência tática.", - "puzzleThemeBackRankMate": "Mate do corredor", - "puzzleThemeBackRankMateDescription": "Dê o xeque-mate no rei na última fileira, quando ele estiver bloqueado pelas próprias peças.", - "puzzleThemeBishopEndgame": "Finais de bispo", - "puzzleThemeBishopEndgameDescription": "Final com somente bispos e peões.", - "puzzleThemeBodenMate": "Mate de Boden", - "puzzleThemeBodenMateDescription": "Dois bispos atacantes em diagonais cruzadas dão um mate em um rei obstruído por peças amigas.", + "puzzleThemeAttractionDescription": "Uma troca ou sacrifício que encoraja ou força uma peça adversária a ir para uma casa que permite um tático.", + "puzzleThemeBackRankMate": "Mate de corredor", + "puzzleThemeBackRankMateDescription": "Dá mate ao rei na fila inicial, quando está preso pelas suas próprias peças.", + "puzzleThemeBishopEndgame": "Final de bispos", + "puzzleThemeBishopEndgameDescription": "Um final apenas com bispos e peões.", + "puzzleThemeBodenMate": "Mate Boden", + "puzzleThemeBodenMateDescription": "Dois bispos em diagonais perpendiculares dão mate ao rei inimigo obstruído por peças aliadas.", "puzzleThemeCastling": "Roque", - "puzzleThemeCastlingDescription": "Traga o seu rei para a segurança, e prepare sua torre para o ataque.", - "puzzleThemeCapturingDefender": "Capture o defensor", - "puzzleThemeCapturingDefenderDescription": "Remover uma peça que seja importante na defesa de outra, permitindo que agora a peça indefesa seja capturada na jogada seguinte.", - "puzzleThemeCrushing": "Punindo", - "puzzleThemeCrushingDescription": "Perceba a capivarada do oponente para obter uma vantagem decisiva. (vantagem ≥ 600cp)", - "puzzleThemeDoubleBishopMate": "Mate de dois bispos", - "puzzleThemeDoubleBishopMateDescription": "Dois bispos atacantes em diagonais adjacentes dão um mate em um rei obstruído por peças amigas.", - "puzzleThemeDovetailMate": "Mate da cauda de andorinha", - "puzzleThemeDovetailMateDescription": "Uma dama dá um mate em um rei adjacente, cujos únicos dois quadrados de fuga estão obstruídos por peças amigas.", + "puzzleThemeCastlingDescription": "Proteger o rei e trazer a torre para o ataque.", + "puzzleThemeCapturingDefender": "Capturar o defensor", + "puzzleThemeCapturingDefenderDescription": "Remove uma peça que seja crítica para a defesa de outra peça, permitindo que esta seja capturada na próxima jogada.", + "puzzleThemeCrushing": "Esmagar", + "puzzleThemeCrushingDescription": "Descobre um erro grave do oponente e obtém uma vantagem esmagadora. (avaliação ≥ 600cp)", + "puzzleThemeDoubleBishopMate": "Mate com dois bispos", + "puzzleThemeDoubleBishopMateDescription": "Dois bispos em diagonais adjacentes dão mate ao rei inimigo obstruído por peças aliadas.", + "puzzleThemeDovetailMate": "Mate cauda-de-andorinha", + "puzzleThemeDovetailMateDescription": "Uma dama dá mate ao rei inimigo cujas jogadas de escape estão bloqueadas por peças aliadas.", "puzzleThemeEquality": "Igualdade", - "puzzleThemeEqualityDescription": "Saia de uma posição perdida, e assegure um empate ou uma posição equilibrada. (aval ≤ 200cp)", - "puzzleThemeKingsideAttack": "Ataque na ala do Rei", - "puzzleThemeKingsideAttackDescription": "Um ataque ao rei do oponente, após ele ter efetuado o roque curto.", - "puzzleThemeClearance": "Lance útil", - "puzzleThemeClearanceDescription": "Um lance, às vezes consumindo tempos, que libera uma casa, fileira ou diagonal para uma ideia tática em seguida.", + "puzzleThemeEqualityDescription": "Recupera de uma posição perdedora e garante um empate ou uma posição de equilíbrio. (avaliação ≤ 200cp)", + "puzzleThemeKingsideAttack": "Ataque no lado do rei", + "puzzleThemeKingsideAttackDescription": "Um ataque ao rei do adversário, após este ter feito roque menor (para o lado do rei).", + "puzzleThemeClearance": "Limpeza", + "puzzleThemeClearanceDescription": "Uma jogada, com tempo, que limpa uma casa, fila, coluna ou diagonal para uma ideia tática subsequente.", "puzzleThemeDefensiveMove": "Movimento defensivo", - "puzzleThemeDefensiveMoveDescription": "Um movimento preciso ou sequência de movimentos que são necessários para evitar perda de material ou outra vantagem.", + "puzzleThemeDefensiveMoveDescription": "Um movimento ou sequência de movimentos precisos, necessários para evitar uma desvantagem, como por exemplo perda de material.", "puzzleThemeDeflection": "Desvio", - "puzzleThemeDeflectionDescription": "Um movimento que desvia a peça do oponente da sua função, por exemplo a de defesa de outra peça ou a defesa de uma casa importante.", + "puzzleThemeDeflectionDescription": "Uma jogada que distrai uma peça do adversário de outra função, como por exemplo, proteger uma casa chave. Às vezes também é chamado de sobrecarga.", "puzzleThemeDiscoveredAttack": "Ataque descoberto", - "puzzleThemeDiscoveredAttackDescription": "Mover uma peça que anteriormente bloqueava um ataque de uma peça de longo alcance, como por exemplo um cavalo liberando a coluna de uma torre.", + "puzzleThemeDiscoveredAttackDescription": "Mover uma peça que estava a bloquear um ataque de uma peça de longo alcance, como por exemplo um cavalo que sai da frente de uma torre.", "puzzleThemeDoubleCheck": "Xeque duplo", - "puzzleThemeDoubleCheckDescription": "Dar Xeque com duas peças ao mesmo tempo, como resultado de um ataque descoberto onde tanto a peça que se move quanto a peça que estava sendo obstruída atacam o rei do oponente.", - "puzzleThemeEndgame": "Finais", - "puzzleThemeEndgameDescription": "Tática durante a última fase do jogo.", - "puzzleThemeEnPassantDescription": "Uma tática envolvendo a regra do en passant, onde um peão pode capturar um peão do oponente que passou por ele usando seu movimento inicial de duas casas.", + "puzzleThemeDoubleCheckDescription": "Fazer xeque com duas peças ao mesmo tempo, como consequência de um ataque descoberto em que tanto a peça que move como a peça que é descoberta atacam o rei do adversário.", + "puzzleThemeEndgame": "Final de jogo", + "puzzleThemeEndgameDescription": "Uma tática durante a última fase do jogo.", + "puzzleThemeEnPassantDescription": "Uma tática que envolve a regra de \"en passant\", onde um peão pode capturar um peão adversário que o ignorou usando o seu primeiro movimento de duas casas.", "puzzleThemeExposedKing": "Rei exposto", "puzzleThemeExposedKingDescription": "Uma tática que envolve um rei com poucos defensores ao seu redor, muitas vezes levando a xeque-mate.", - "puzzleThemeFork": "Garfo (ou duplo)", - "puzzleThemeForkDescription": "Um movimento onde a peça movida ataca duas peças de oponente de uma só vez.", - "puzzleThemeHangingPiece": "Peça pendurada", - "puzzleThemeHangingPieceDescription": "Uma táctica que envolve uma peça indefesa do oponente ou insuficientemente defendida e livre para ser capturada.", - "puzzleThemeHookMate": "Xeque gancho", - "puzzleThemeHookMateDescription": "Xeque-mate com uma torre, um cavalo e um peão, juntamente com um peão inimigo, para limitar a fuga do rei.", + "puzzleThemeFork": "Garfo", + "puzzleThemeForkDescription": "Uma jogada em que uma peça ataca duas peças do adversário simultaneamente.", + "puzzleThemeHangingPiece": "Peça desprotegida", + "puzzleThemeHangingPieceDescription": "Uma tática que envolve uma peça do adversário que não está suficientemente defendida e por isso pode ser capturada.", + "puzzleThemeHookMate": "Mate gancho", + "puzzleThemeHookMateDescription": "Mate com uma torre, cavalo e peão em que o rei inimigo tem as jogadas de escape bloqueadas por um peão aliado.", "puzzleThemeInterference": "Interferência", - "puzzleThemeInterferenceDescription": "Mover uma peça entre duas peças do oponente para deixar uma ou duas peças do oponente indefesas, como um cavalo em uma casa defendida por duas torres.", - "puzzleThemeIntermezzo": "Lance intermediário", - "puzzleThemeIntermezzoDescription": "Em vez de jogar o movimento esperado, primeiro realiza outro movimento criando uma ameaça imediata a que o oponente deve responder. Também conhecido como \"Zwischenzug\" ou \"In between\".", - "puzzleThemeKnightEndgame": "Finais de Cavalo", - "puzzleThemeKnightEndgameDescription": "Um final jogado apenas com cavalos e peões.", - "puzzleThemeLong": "Quebra-cabeças longo", - "puzzleThemeLongDescription": "Vitória em três movimentos.", - "puzzleThemeMaster": "Partidas de mestres", - "puzzleThemeMasterDescription": "Quebra-cabeças de partidas jogadas por jogadores titulados.", - "puzzleThemeMasterVsMaster": "Partidas de Mestre vs Mestre", - "puzzleThemeMasterVsMasterDescription": "Quebra-cabeças de partidas entre dois jogadores titulados.", + "puzzleThemeInterferenceDescription": "Jogar uma peça para uma casa entre duas peças do adversário deixando pelo menos uma delas desprotegia, como por exemplo um cavalo numa casa defendida entre duas torres.", + "puzzleThemeIntermezzo": "Intermezzo", + "puzzleThemeIntermezzoDescription": "Em vez de jogares o movimento esperado, primeiro interpõe outro movimento colocando uma ameaça imediata à qual o oponente deve responder. Também conhecido como \"Zwischenzug\" ou jogada intermédia.", + "puzzleThemeKnightEndgame": "Final de cavalo", + "puzzleThemeKnightEndgameDescription": "Um final de jogo com apenas cavalos e peões.", + "puzzleThemeLong": "Problema longo", + "puzzleThemeLongDescription": "Três movimentos para ganhar.", + "puzzleThemeMaster": "Jogos de mestres", + "puzzleThemeMasterDescription": "Problemas de partidas jogadas por jogadores titulados.", + "puzzleThemeMasterVsMaster": "Jogos de Mestre vs Mestre", + "puzzleThemeMasterVsMasterDescription": "Partidas jogadas entre dois jogadores titulados.", "puzzleThemeMate": "Xeque-mate", - "puzzleThemeMateDescription": "Vença o jogo com estilo.", + "puzzleThemeMateDescription": "Vence a partida com estilo.", "puzzleThemeMateIn1": "Mate em 1", - "puzzleThemeMateIn1Description": "Dar xeque-mate em um movimento.", + "puzzleThemeMateIn1Description": "Faz xeque-mate num movimento.", "puzzleThemeMateIn2": "Mate em 2", - "puzzleThemeMateIn2Description": "Dar xeque-mate em dois movimentos.", + "puzzleThemeMateIn2Description": "Faz xeque-mate em dois movimentos.", "puzzleThemeMateIn3": "Mate em 3", - "puzzleThemeMateIn3Description": "Dar xeque-mate em três movimentos.", + "puzzleThemeMateIn3Description": "Faz xeque-mate em três movimentos.", "puzzleThemeMateIn4": "Mate em 4", - "puzzleThemeMateIn4Description": "Dar xeque-mate em 4 movimentos.", + "puzzleThemeMateIn4Description": "Faz xeque-mate em quatro movimentos.", "puzzleThemeMateIn5": "Mate em 5 ou mais", - "puzzleThemeMateIn5Description": "Descubra uma longa sequência de mate.", + "puzzleThemeMateIn5Description": "Descobre uma longa sequência que leva ao xeque-mate.", "puzzleThemeMiddlegame": "Meio-jogo", - "puzzleThemeMiddlegameDescription": "Tática durante a segunda fase do jogo.", - "puzzleThemeOneMove": "Quebra-cabeças de um movimento", - "puzzleThemeOneMoveDescription": "Quebra-cabeças de um movimento.", + "puzzleThemeMiddlegameDescription": "Uma tática durante a segunda fase do jogo.", + "puzzleThemeOneMove": "Problema de um movimento", + "puzzleThemeOneMoveDescription": "Um problema que é resolvido com apenas um movimento.", "puzzleThemeOpening": "Abertura", - "puzzleThemeOpeningDescription": "Tática durante a primeira fase do jogo.", - "puzzleThemePawnEndgame": "Finais de peões", - "puzzleThemePawnEndgameDescription": "Um final apenas com peões.", + "puzzleThemeOpeningDescription": "Uma tática durante a primeira fase do jogo.", + "puzzleThemePawnEndgame": "Final de peões", + "puzzleThemePawnEndgameDescription": "Um final de jogo só com peões.", "puzzleThemePin": "Cravada", - "puzzleThemePinDescription": "Uma tática envolvendo cravada, onde uma peça é incapaz de mover-se sem abrir um descoberto em uma peça de maior valor.", + "puzzleThemePinDescription": "Uma tática que envolve cravadas, onde uma peça é incapaz de se mover sem revelar um ataque a uma peça de valor superior.", "puzzleThemePromotion": "Promoção", - "puzzleThemePromotionDescription": "Promova um peão para uma dama ou a uma peça menor.", - "puzzleThemeQueenEndgame": "Finais de Dama", + "puzzleThemePromotionDescription": "Promova o teu peão a uma dama ou numa peça menor.", + "puzzleThemeQueenEndgame": "Final de dama", "puzzleThemeQueenEndgameDescription": "Um final com apenas damas e peões.", - "puzzleThemeQueenRookEndgame": "Finais de Dama e Torre", - "puzzleThemeQueenRookEndgameDescription": "Finais com apenas Dama, Torre e Peões.", - "puzzleThemeQueensideAttack": "Ataque na ala da dama", - "puzzleThemeQueensideAttackDescription": "Um ataque ao rei adversário, após ter efetuado o roque na ala da Dama.", - "puzzleThemeQuietMove": "Lance de preparação", - "puzzleThemeQuietMoveDescription": "Um lance que não dá xeque nem realiza uma captura, mas prepara uma ameaça inevitável para a jogada seguinte.", - "puzzleThemeRookEndgame": "Finais de Torres", - "puzzleThemeRookEndgameDescription": "Um final com apenas torres e peões.", + "puzzleThemeQueenRookEndgame": "Dama e torre", + "puzzleThemeQueenRookEndgameDescription": "Um final de jogo só com damas, torres e peões.", + "puzzleThemeQueensideAttack": "Ataque no lado da dama", + "puzzleThemeQueensideAttackDescription": "Um ataque ao rei do adversário, após este ter feito roque grande (para o lado da dama).", + "puzzleThemeQuietMove": "Jogada subtil", + "puzzleThemeQuietMoveDescription": "Um movimento que não faz uma cheque nem captura, mas prepara uma ameaça inevitável.", + "puzzleThemeRookEndgame": "Final de torre", + "puzzleThemeRookEndgameDescription": "Um final de jogo com apenas torres e peões.", "puzzleThemeSacrifice": "Sacrifício", - "puzzleThemeSacrificeDescription": "Uma tática envolvendo a entrega de material no curto prazo, com o objetivo de se obter uma vantagem após uma sequência forçada de movimentos.", - "puzzleThemeShort": "Quebra-cabeças curto", - "puzzleThemeShortDescription": "Vitória em dois lances.", - "puzzleThemeSkewer": "Raio X", - "puzzleThemeSkewerDescription": "Um movimento que envolve uma peça de alto valor sendo atacada fugindo do ataque e permitindo que uma peça de menor valor seja capturada ou atacada, o inverso de cravada.", - "puzzleThemeSmotheredMate": "Mate de Philidor (mate sufocado)", - "puzzleThemeSmotheredMateDescription": "Um xeque-mate dado por um cavalo onde o rei é incapaz de mover-se porque está cercado (ou sufocado) pelas próprias peças.", - "puzzleThemeSuperGM": "Super partidas de GMs", - "puzzleThemeSuperGMDescription": "Quebra-cabeças de partidas jogadas pelos melhores jogadores do mundo.", - "puzzleThemeTrappedPiece": "Peça presa", - "puzzleThemeTrappedPieceDescription": "Uma peça é incapaz de escapar da captura, pois tem movimentos limitados.", + "puzzleThemeSacrificeDescription": "Uma tática que involve abdicar de material a curto prazo, para ganhar uma vantagem após uma sequência forçada de movimentos.", + "puzzleThemeShort": "Problema curto", + "puzzleThemeShortDescription": "Duas jogadas para ganhar.", + "puzzleThemeSkewer": "Cravada inversa", + "puzzleThemeSkewerDescription": "Uma tática que envolve uma peça de alto valor que está ser atacada, mas ao afastar-se, permite que uma peça de menor valor, que estava atrás dela, seja capturada ou atacada. É o inverso da cravada.", + "puzzleThemeSmotheredMate": "Mate de Philidor", + "puzzleThemeSmotheredMateDescription": "Uma xeque-mate feito por um cavalo em que o rei não se pode mover porque está rodeado pelas suas próprias peças. Também conhecido como mate sufocado.", + "puzzleThemeSuperGM": "Jogos de Super GM", + "puzzleThemeSuperGMDescription": "Problemas de partidas jogadas pelos melhores jogadores do mundo.", + "puzzleThemeTrappedPiece": "Peça encurralada", + "puzzleThemeTrappedPieceDescription": "Uma peça não consegue escapar à captura, pois tem movimentos limitados.", "puzzleThemeUnderPromotion": "Subpromoção", - "puzzleThemeUnderPromotionDescription": "Promover para cavalo, bispo ou torre.", - "puzzleThemeVeryLong": "Quebra-cabeças muito longo", - "puzzleThemeVeryLongDescription": "Quatro movimentos ou mais para vencer.", - "puzzleThemeXRayAttack": "Ataque em raio X", - "puzzleThemeXRayAttackDescription": "Uma peça ataca ou defende uma casa indiretamente, através de uma peça adversária.", + "puzzleThemeUnderPromotionDescription": "Promoção para um cavalo, bispo ou torre.", + "puzzleThemeVeryLong": "Problema muito longo", + "puzzleThemeVeryLongDescription": "Quatro jogadas para ganhar.", + "puzzleThemeXRayAttack": "Ataque raio-X", + "puzzleThemeXRayAttackDescription": "Uma peça ataque ou defende uma casa através de uma peça inimiga.", "puzzleThemeZugzwang": "Zugzwang", - "puzzleThemeZugzwangDescription": "O adversário tem os seus movimentos limitados, e qualquer movimento que ele faça vai enfraquecer sua própria posição.", - "puzzleThemeHealthyMix": "Combinação saudável", - "puzzleThemeHealthyMixDescription": "Um pouco de tudo. Você nunca sabe o que vai encontrar, então esteja pronto para tudo! Igualzinho aos jogos em tabuleiros reais.", - "puzzleThemePlayerGames": "Partidas de jogadores", - "puzzleThemePlayerGamesDescription": "Procure quebra-cabeças gerados a partir de suas partidas ou das de outro jogador.", - "puzzleThemePuzzleDownloadInformation": "Esses quebra-cabeças estão em domínio público, e você pode baixá-los em {param}.", - "searchSearch": "Buscar", + "puzzleThemeZugzwangDescription": "O adversário está limitado quanto aos seus movimentos, e todas as jogadas pioram a sua posição.", + "puzzleThemeHealthyMix": "Mistura saudável", + "puzzleThemeHealthyMixDescription": "Um pouco de tudo. Não sabes o que esperar, então ficas pronto para qualquer coisa! Exatamente como em jogos de verdade.", + "puzzleThemePlayerGames": "Jogos de jogadores", + "puzzleThemePlayerGamesDescription": "Procura problemas gerados a partir dos teus jogos ou de jogos de outro jogador.", + "puzzleThemePuzzleDownloadInformation": "Esses problemas são do domínio público e podem ser obtidos em {param}.", + "searchSearch": "Procurar", "settingsSettings": "Configurações", - "settingsCloseAccount": "Encerrar conta", - "settingsManagedAccountCannotBeClosed": "Sua conta é gerenciada, e não pode ser encerrada.", - "settingsClosingIsDefinitive": "O encerramento é definitivo. Não há como desfazer. Tem certeza?", - "settingsCantOpenSimilarAccount": "Você não poderá abrir uma nova conta com o mesmo nome, mesmo que alterne entre maiúsculas e minúsculas.", - "settingsChangedMindDoNotCloseAccount": "Eu mudei de ideia, não encerre minha conta", - "settingsCloseAccountExplanation": "Tem certeza de que deseja encerrar sua conta? Encerrar sua conta é uma decisão permanente. Você NUNCA MAIS será capaz de entrar com ela novamente.", + "settingsCloseAccount": "Encerrar a conta", + "settingsManagedAccountCannotBeClosed": "A sua conta é gerida e não pode ser encerrada.", + "settingsClosingIsDefinitive": "O encerramento é definitivo. Não podes voltar atrás. Tens a certeza?", + "settingsCantOpenSimilarAccount": "Não poderá criar uma nova conta com o mesmo nome, mesmo que as maiúsculas ou minúsculas sejam diferentes.", + "settingsChangedMindDoNotCloseAccount": "Mudei de ideias, não encerrem a minha conta", + "settingsCloseAccountExplanation": "Tens a certeza que queres encerrar sua conta? Encerrar a tua conta é uma decisão permanente. Tu NUNCA MAIS serás capaz de iniciar sessão nesta conta.", "settingsThisAccountIsClosed": "Esta conta foi encerrada.", - "playWithAFriend": "Jogar contra um amigo", + "playWithAFriend": "Jogar com um amigo", "playWithTheMachine": "Jogar contra o computador", - "toInviteSomeoneToPlayGiveThisUrl": "Para convidar alguém para jogar, envie este URL", + "toInviteSomeoneToPlayGiveThisUrl": "Para convidares alguém para jogar, envia este URL", "gameOver": "Fim da partida", "waitingForOpponent": "Aguardando oponente", - "orLetYourOpponentScanQrCode": "Ou deixe seu oponente ler este QR Code", - "waiting": "Aguardando", - "yourTurn": "Sua vez", + "orLetYourOpponentScanQrCode": "Ou deixa o teu oponente ler este código QR", + "waiting": "A aguardar", + "yourTurn": "É a tua vez", "aiNameLevelAiLevel": "{param1} nível {param2}", "level": "Nível", "strength": "Nível", - "toggleTheChat": "Ativar/Desativar chat", + "toggleTheChat": "Ativar/Desativar o chat", "chat": "Chat", "resign": "Desistir", "checkmate": "Xeque-mate", "stalemate": "Rei afogado", "white": "Brancas", "black": "Pretas", - "asWhite": "de brancas", - "asBlack": "de pretas", + "asWhite": "com as brancas", + "asBlack": "com as pretas", "randomColor": "Cor aleatória", "createAGame": "Criar uma partida", "whiteIsVictorious": "Brancas vencem", "blackIsVictorious": "Pretas vencem", - "youPlayTheWhitePieces": "Você joga com as peças brancas", - "youPlayTheBlackPieces": "Você joga com as peças pretas", - "itsYourTurn": "É a sua vez!", - "cheatDetected": "Trapaça Detectada", + "youPlayTheWhitePieces": "Tu jogas com as peças brancas", + "youPlayTheBlackPieces": "Tu jogas com as peças pretas", + "itsYourTurn": "É a tua vez!", + "cheatDetected": "Fraude detetada", "kingInTheCenter": "Rei no centro", "threeChecks": "Três xeques", "raceFinished": "Corrida terminada", "variantEnding": "Fim da variante", - "newOpponent": "Novo oponente", - "yourOpponentWantsToPlayANewGameWithYou": "Seu oponente quer jogar uma nova partida contra você", + "newOpponent": "Novo adversário", + "yourOpponentWantsToPlayANewGameWithYou": "O teu adversário quer jogar outra vez contra ti", "joinTheGame": "Entrar no jogo", - "whitePlays": "Brancas jogam", - "blackPlays": "Pretas jogam", - "opponentLeftChoices": "O seu oponente deixou a partida. Você pode reivindicar vitória, declarar empate ou aguardar.", + "whitePlays": "Jogam as brancas", + "blackPlays": "Jogam as pretas", + "opponentLeftChoices": "O teu adversário deixou a partida. Podes reivindicar vitória, declarar empate ou aguardar.", "forceResignation": "Reivindicar vitória", "forceDraw": "Reivindicar empate", - "talkInChat": "Por favor, seja gentil no chat!", - "theFirstPersonToComeOnThisUrlWillPlayWithYou": "A primeira pessoa que acessar esta URL jogará contigo.", - "whiteResigned": "Brancas desistiram", - "blackResigned": "Pretas desistiram", - "whiteLeftTheGame": "Brancas deixaram a partida", - "blackLeftTheGame": "Pretas deixaram a partida", + "talkInChat": "Por favor, sê gentil na conversa!", + "theFirstPersonToComeOnThisUrlWillPlayWithYou": "A primeira pessoa que aceder a este link jogará contra ti.", + "whiteResigned": "As brancas desistiram", + "blackResigned": "As pretas desistiram", + "whiteLeftTheGame": "As brancas deixaram a partida", + "blackLeftTheGame": "As pretas deixaram a partida", "whiteDidntMove": "As brancas não se moveram", "blackDidntMove": "As pretas não se moveram", - "requestAComputerAnalysis": "Solicitar uma análise do computador", - "computerAnalysis": "Análise do computador", + "requestAComputerAnalysis": "Solicitar uma análise de computador", + "computerAnalysis": "Análise de computador", "computerAnalysisAvailable": "Análise de computador disponível", "computerAnalysisDisabled": "Análise de computador desativada", "analysis": "Análise", "depthX": "Profundidade {param}", - "usingServerAnalysis": "Análise de servidor em uso", - "loadingEngine": "Carregando ...", - "calculatingMoves": "Calculando jogadas...", - "engineFailed": "Erro ao carregar o engine", + "usingServerAnalysis": "A usar a análise do servidor", + "loadingEngine": "A carregar o motor de jogo...", + "calculatingMoves": "A calcular as jogadas...", + "engineFailed": "Erro ao carregar o motor", "cloudAnalysis": "Análise na nuvem", - "goDeeper": "Detalhar", + "goDeeper": "Aprofundar", "showThreat": "Mostrar ameaça", "inLocalBrowser": "no navegador local", - "toggleLocalEvaluation": "Ativar/Desativar análise local", + "toggleLocalEvaluation": "Ligar/desligar a avaliação local", "promoteVariation": "Promover variante", - "makeMainLine": "Transformar em linha principal", - "deleteFromHere": "Excluir a partir daqui", - "collapseVariations": "Esconder variantes", - "expandVariations": "Mostrar variantes", - "forceVariation": "Variante forçada", - "copyVariationPgn": "Copiar PGN da variante", - "move": "Movimentos", - "variantLoss": "Derrota da variante", - "variantWin": "Vitória da variante", + "makeMainLine": "Tornar variante principal", + "deleteFromHere": "Eliminar a partir de aqui", + "collapseVariations": "Recolher variações", + "expandVariations": "Expandir variações", + "forceVariation": "Forçar variante", + "copyVariationPgn": "Copiar variação PGN", + "move": "Jogada", + "variantLoss": "Variante perdida", + "variantWin": "Variante ganha", "insufficientMaterial": "Material insuficiente", "pawnMove": "Movimento de peão", "capture": "Captura", "close": "Fechar", - "winning": "Vencendo", - "losing": "Perdendo", - "drawn": "Empate", - "unknown": "Posição desconhecida", - "database": "Banco de Dados", + "winning": "Ganhas", + "losing": "Perdidas", + "drawn": "Empatado", + "unknown": "Desconhecidos", + "database": "Base de dados", "whiteDrawBlack": "Brancas / Empate / Pretas", - "averageRatingX": "Classificação média: {param}", + "averageRatingX": "Pontuação média: {param}", "recentGames": "Partidas recentes", "topGames": "Melhores partidas", - "masterDbExplanation": "Duas milhões de partidas de jogadores com pontuação FIDE acima de {param1}, desde {param2} a {param3}", - "dtzWithRounding": "DTZ50\" com arredondamento, baseado no número de meias-jogadas até a próxima captura ou jogada de peão", - "noGameFound": "Nenhuma partida encontrada", - "maxDepthReached": "Profundidade máxima alcançada!", - "maybeIncludeMoreGamesFromThePreferencesMenu": "Talvez você queira incluir mais jogos a partir do menu de preferências", + "masterDbExplanation": "de partidas OTB de jogadores com +{param1} rating FIDE de {param2} a {param3}", + "dtzWithRounding": "DTZ50'' com arredondamento, baseado no número de meios-movimentos até à próxima captura ou movimento de peão", + "noGameFound": "Nenhum jogo encontrado", + "maxDepthReached": "Nível máximo alcançado!", + "maybeIncludeMoreGamesFromThePreferencesMenu": "Talvez incluir mais jogos no menu de preferências?", "openings": "Aberturas", "openingExplorer": "Explorador de aberturas", "openingEndgameExplorer": "Explorador de Aberturas/Finais", - "xOpeningExplorer": "{param} Explorador de aberturas", - "playFirstOpeningEndgameExplorerMove": "Jogue o primeiro lance do explorador de aberturas/finais", + "xOpeningExplorer": "Explorador de aberturas de {param}", + "playFirstOpeningEndgameExplorerMove": "Jogar o primeiro lance do explorador de aberturas/finais", "winPreventedBy50MoveRule": "Vitória impedida pela regra dos 50 movimentos", - "lossSavedBy50MoveRule": "Derrota impedida pela regra dos 50 movimentos", - "winOr50MovesByPriorMistake": "Vitória ou 50 movimentos por erro anterior", - "lossOr50MovesByPriorMistake": "Derrota ou 50 movimentos por erro anterior", - "unknownDueToRounding": "Vitória/derrota garantida somente se a variante recomendada tiver sido seguida desde o último movimento de captura ou de peão, devido ao possível arredondamento.", - "allSet": "Tudo pronto!", + "lossSavedBy50MoveRule": "Derrota evitada pela regra dos 50 movimentos", + "winOr50MovesByPriorMistake": "Vitória ou 50 movimentos por engano anterior", + "lossOr50MovesByPriorMistake": "Vitória ou 50 movimentos por engano anterior", + "unknownDueToRounding": "Vitória/derrota garantida apenas se a linha da tabela recomendada tiver sido seguida desde a última captura ou movimento de peão, devido a possível arredondamento.", + "allSet": "Tudo a postos!", "importPgn": "Importar PGN", - "delete": "Excluir", - "deleteThisImportedGame": "Excluir este jogo importado?", - "replayMode": "Rever a partida", - "realtimeReplay": "Tempo Real", - "byCPL": "Por erros", + "delete": "Eliminar", + "deleteThisImportedGame": "Eliminar este jogo importado?", + "replayMode": "Modo de repetição", + "realtimeReplay": "Tempo real", + "byCPL": "Por CPL", "openStudy": "Abrir estudo", "enable": "Ativar", "bestMoveArrow": "Seta de melhor movimento", - "showVariationArrows": "Mostrar setas das variantes", - "evaluationGauge": "Escala de avaliação", - "multipleLines": "Linhas de análise", + "showVariationArrows": "Ver setas de variação", + "evaluationGauge": "Medidor da avaliação", + "multipleLines": "Múltiplas continuações", "cpus": "CPUs", "memory": "Memória", "infiniteAnalysis": "Análise infinita", - "removesTheDepthLimit": "Remove o limite de profundidade, o que aquece seu computador", - "engineManager": "Gerenciador de engine", - "blunder": "Capivarada", + "removesTheDepthLimit": "Remove o limite de profundidade e mantém o teu computador quente", + "engineManager": "Gestão do motor", + "blunder": "Erro grave", "mistake": "Erro", "inaccuracy": "Imprecisão", - "moveTimes": "Tempo por movimento", - "flipBoard": "Girar o tabuleiro", - "threefoldRepetition": "Tripla repetição", - "claimADraw": "Reivindicar empate", + "moveTimes": "Tempo das jogadas", + "flipBoard": "Inverter o tabuleiro", + "threefoldRepetition": "Repetição tripla", + "claimADraw": "Declarar empate", "offerDraw": "Propor empate", "draw": "Empate", "drawByMutualAgreement": "Empate por acordo mútuo", "fiftyMovesWithoutProgress": "Cinquenta jogadas sem progresso", - "currentGames": "Partidas atuais", + "currentGames": "Partidas a decorrer", "viewInFullSize": "Ver em tela cheia", "logOut": "Sair", "signIn": "Entrar", - "rememberMe": "Lembrar de mim", - "youNeedAnAccountToDoThat": "Você precisa de uma conta para fazer isso", - "signUp": "Registrar", - "computersAreNotAllowedToPlay": "A ajuda de software não é permitida. Por favor, não utilize programas de xadrez, bancos de dados ou o auxilio de outros jogadores durante a partida. Além disso, a criação de múltiplas contas é fortemente desaconselhada e sua prática excessiva acarretará em banimento.", + "rememberMe": "Lembrar-me", + "youNeedAnAccountToDoThat": "Precisas de uma conta para fazeres isso", + "signUp": "Registar-se", + "computersAreNotAllowedToPlay": "Computadores ou jogadores assistidos por computador não estão autorizados a jogar. Por favor não utilizes assistência de programas de xadrez, bases de dados ou outros jogadores enquanto estiveres a jogar. Além disso, a criação de contas múltiplas é fortemente desencorajada e a sua prática excessiva acarretará banimento.", "games": "Partidas", "forum": "Fórum", "xPostedInForumY": "{param1} publicou no tópico {param2}", "latestForumPosts": "Últimas publicações no fórum", "players": "Jogadores", "friends": "Amigos", - "discussions": "Discussões", + "discussions": "Conversas", "today": "Hoje", "yesterday": "Ontem", "minutesPerSide": "Minutos por jogador", "variant": "Variante", "variants": "Variantes", - "timeControl": "Ritmo", - "realTime": "Tempo real", + "timeControl": "Ritmo de jogo", + "realTime": "Em tempo real", "correspondence": "Correspondência", "daysPerTurn": "Dias por lance", "oneDay": "Um dia", "time": "Tempo", - "rating": "Rating", - "ratingStats": "Estatísticas de classificação", - "username": "Nome de usuário", - "usernameOrEmail": "Nome ou email do usuário", - "changeUsername": "Alterar nome de usuário", - "changeUsernameNotSame": "Pode-se apenas trocar as letras de minúscula para maiúscula e vice-versa. Por exemplo, \"fulanodetal\" para \"FulanoDeTal\".", - "changeUsernameDescription": "Altere seu nome de usuário. Isso só pode ser feito uma vez e você poderá apenas trocar as letras de minúscula para maiúscula e vice-versa.", - "signupUsernameHint": "Escolha um nome de usuário apropriado. Não será possível mudá-lo, e qualquer conta que tiver um nome ofensivo ou inapropriado será excluída!", - "signupEmailHint": "Vamos usar apenas para redefinir a sua senha.", - "password": "Senha", - "changePassword": "Alterar senha", + "rating": "Pontuação", + "ratingStats": "Estatísticas de pontuação", + "username": "Nome de utilizador", + "usernameOrEmail": "Nome ou e-mail do utilizador", + "changeUsername": "Alterar o nome de utilizador", + "changeUsernameNotSame": "Só te é permitido trocar as letras de minúscula para maiúscula e vice-versa. Por exemplo, \"johndoe\" para \"JohnDoe\".", + "changeUsernameDescription": "Altera o teu nome de utilizador. Isso só pode ser feito uma vez e só poderás trocar as letras de minúscula para maiúscula e vice-versa.", + "signupUsernameHint": "Certifique-se que escolhe um nome de utilizador decoroso. Não poderá alterá-lo mais tarde e quaisquer contas com nomes de utilizador inapropriados serão fechadas!", + "signupEmailHint": "Só o usaremos para redefinir a palavra-passe.", + "password": "Palavra-passe", + "changePassword": "Alterar a palavra-passe", "changeEmail": "Alterar email", "email": "E-mail", - "passwordReset": "Redefinição de senha", - "forgotPassword": "Esqueceu sua senha?", - "error_weakPassword": "A senha é extremamente comum e fácil de adivinhar.", - "error_namePassword": "Não utilize seu nome de usuário como senha.", - "blankedPassword": "Você usou a mesma senha em outro site, e esse site foi comprometido. Para garantir a segurança da sua conta no Lichess, você precisa criar uma nova senha. Agradecemos sua compreensão.", - "youAreLeavingLichess": "Você está saindo do Lichess", - "neverTypeYourPassword": "Nunca digite sua senha do Lichess em outro site!", - "proceedToX": "Ir para {param}", - "passwordSuggestion": "Não coloque uma senha sugerida por outra pessoa, porque ela poderá roubar sua conta.", - "emailSuggestion": "Não coloque um endereço de email sugerido por outra pessoa, porque ela poderá roubar sua conta.", - "emailConfirmHelp": "Ajuda com confirmação por e-mail", - "emailConfirmNotReceived": "Não recebeu seu e-mail de confirmação após o registro?", - "whatSignupUsername": "Qual nome de usuário você usou para se registrar?", + "passwordReset": "Redefinir a palavra-passe", + "forgotPassword": "Esqueceste-te da tua palavra-passe?", + "error_weakPassword": "Esta senha é extremamente comum, e muito fácil de adivinhar.", + "error_namePassword": "Por favor, não usa o teu nome de utilizador como senha.", + "blankedPassword": "Utilizou a mesma palavra-passe noutro site, e esse site foi comprometido. Para garantir a segurança da sua conta Lichess, precisamos que redefina a palavra-passe. Obrigado pela compreensão.", + "youAreLeavingLichess": "Você está a sair do Lichess", + "neverTypeYourPassword": "Nunca escrevas a tua senha Lichess em outro site!", + "proceedToX": "Continuar para {param}", + "passwordSuggestion": "Não uses uma senha sugerida por outra pessoa. Eles vão utilizar-la para roubar a tua conta.", + "emailSuggestion": "Não uses um email sugerida por outra pessoa. Eles vão utilizar-la para roubar a tua conta.", + "emailConfirmHelp": "Ajuda com a confirmação do endereço eletrónico", + "emailConfirmNotReceived": "Não recebeu no seu correio eletrónico uma mensagem de confirmação após o registo?", + "whatSignupUsername": "Que nome de utilizador usou para se registar?", "usernameNotFound": "Não foi possível encontrar nenhum usuário com este nome: {param}.", - "usernameCanBeUsedForNewAccount": "Você pode usar esse nome de usuário para criar uma nova conta", - "emailSent": "Enviamos um e-mail para {param}.", - "emailCanTakeSomeTime": "Pode levar algum tempo para chegar.", - "refreshInboxAfterFiveMinutes": "Aguarde 5 minutos e atualize sua caixa de entrada.", - "checkSpamFolder": "Verifique também a sua caixa de spam. Caso esteja lá, marque como não é spam.", - "emailForSignupHelp": "Se todo o resto falhar, envie-nos este e-mail:", + "usernameCanBeUsedForNewAccount": "Pode usar esse nome de utilizador para criar uma conta", + "emailSent": "Enviámos um correio eletrónico para {param}.", + "emailCanTakeSomeTime": "Pode demorar algum tempo a chegar.", + "refreshInboxAfterFiveMinutes": "Aguarde 5 minutos e atualize a sua caixa de entrada de correio eletrónico.", + "checkSpamFolder": "Verifique também a sua pasta de “spam”, pode estar lá. Se sim, assinale como não “spam”.", + "emailForSignupHelp": "Se tudo falhar, então envie-nos este correio eletrónico:", "copyTextToEmail": "Copie e cole o texto acima e envie-o para {param}", - "waitForSignupHelp": "Entraremos em contato em breve para ajudá-lo a completar seu registro.", - "accountConfirmed": "O usuário {param} foi confirmado com sucesso.", - "accountCanLogin": "Você pode acessar agora como {param}.", - "accountConfirmationEmailNotNeeded": "Você não precisa de um e-mail de confirmação.", + "waitForSignupHelp": "Nós entraremos brevemente em contacto para ajudá-lo a completar a inscrição.", + "accountConfirmed": "O utilizador {param} foi confirmado com sucesso.", + "accountCanLogin": "Pode agora aceder como {param}.", + "accountConfirmationEmailNotNeeded": "Não precisa de um endereço eletrónico de confirmação.", "accountClosed": "A conta {param} está encerrada.", - "accountRegisteredWithoutEmail": "A conta {param} foi registrada sem um e-mail.", - "rank": "Rank", - "rankX": "Classificação: {param}", - "gamesPlayed": "Partidas realizadas", + "accountRegisteredWithoutEmail": "A conta {param} foi registada sem um endereço eletrónico.", + "rank": "Classificação", + "rankX": "Posição: {param}", + "gamesPlayed": "Partidas jogadas", "cancel": "Cancelar", - "whiteTimeOut": "Tempo das brancas esgotado", - "blackTimeOut": "Tempo das pretas esgotado", + "whiteTimeOut": "Acabou o tempo das brancas", + "blackTimeOut": "Acabou o tempo das pretas", "drawOfferSent": "Proposta de empate enviada", - "drawOfferAccepted": "Proposta de empate aceita", + "drawOfferAccepted": "Proposta de empate aceite", "drawOfferCanceled": "Proposta de empate cancelada", - "whiteOffersDraw": "Brancas oferecem empate", - "blackOffersDraw": "Pretas oferecem empate", - "whiteDeclinesDraw": "Brancas recusam empate", - "blackDeclinesDraw": "Pretas recusam empate", - "yourOpponentOffersADraw": "Seu adversário oferece empate", + "whiteOffersDraw": "As brancas propõem empate", + "blackOffersDraw": "As pretas propõem empate", + "whiteDeclinesDraw": "As brancas recusam o empate", + "blackDeclinesDraw": "As pretas recusam o empate", + "yourOpponentOffersADraw": "O teu adversário propõe empate", "accept": "Aceitar", "decline": "Recusar", - "playingRightNow": "Jogando agora", - "eventInProgress": "Jogando agora", + "playingRightNow": "A jogar agora", + "eventInProgress": "A decorrer agora", "finished": "Terminado", - "abortGame": "Cancelar partida", + "abortGame": "Cancelar a partida", "gameAborted": "Partida cancelada", "standard": "Padrão", "customPosition": "Posição personalizada", "unlimited": "Ilimitado", "mode": "Modo", - "casual": "Amistosa", - "rated": "Ranqueada", - "casualTournament": "Amistoso", - "ratedTournament": "Valendo pontos", + "casual": "Amigável", + "rated": "A valer pontos", + "casualTournament": "Amigável", + "ratedTournament": "A valer pontos", "thisGameIsRated": "Esta partida vale pontos", - "rematch": "Revanche", - "rematchOfferSent": "Oferta de revanche enviada", - "rematchOfferAccepted": "Oferta de revanche aceita", - "rematchOfferCanceled": "Oferta de revanche cancelada", - "rematchOfferDeclined": "Oferta de revanche recusada", - "cancelRematchOffer": "Cancelar oferta de revanche", - "viewRematch": "Ver revanche", - "confirmMove": "Confirmar lance", + "rematch": "Desforra", + "rematchOfferSent": "Pedido de desforra enviado", + "rematchOfferAccepted": "Pedido de desforra aceite", + "rematchOfferCanceled": "Pedido de desforra cancelado", + "rematchOfferDeclined": "Pedido de desforra recusado", + "cancelRematchOffer": "Cancelar o pedido de desforra", + "viewRematch": "Ver a desforra", + "confirmMove": "Confirmar o lance", "play": "Jogar", - "inbox": "Mensagens", + "inbox": "Caixa de entrada", "chatRoom": "Sala de chat", - "loginToChat": "Faça login para conversar", - "youHaveBeenTimedOut": "Sua sessão expirou.", - "spectatorRoom": "Sala do espectador", - "composeMessage": "Escrever mensagem", + "loginToChat": "Inicia sessão para poderes conversar", + "youHaveBeenTimedOut": "Foste impedido de conversar por agora.", + "spectatorRoom": "Sala dos espectadores", + "composeMessage": "Escrever uma mensagem", "subject": "Assunto", "send": "Enviar", - "incrementInSeconds": "Acréscimo em segundos", + "incrementInSeconds": "Incremento em segundos", "freeOnlineChess": "Xadrez Online Gratuito", "exportGames": "Exportar partidas", - "ratingRange": "Rating entre", - "thisAccountViolatedTos": "Esta conta violou os Termos de Serviço do Lichess", - "openingExplorerAndTablebase": "Explorador de abertura & tabela de finais", - "takeback": "Voltar jogada", - "proposeATakeback": "Propor voltar jogada", - "takebackPropositionSent": "Proposta de voltar jogada enviada", - "takebackPropositionDeclined": "Proposta de voltar jogada recusada", - "takebackPropositionAccepted": "Proposta de voltar jogada aceita", - "takebackPropositionCanceled": "Proposta de voltar jogada cancelada", - "yourOpponentProposesATakeback": "Seu oponente propõe voltar jogada", + "ratingRange": "Pontuação entre", + "thisAccountViolatedTos": "Esta conta violou os termos de serviço do Lichess", + "openingExplorerAndTablebase": "Explorador de aberturas & tabelas de finais", + "takeback": "Voltar uma jogada atrás", + "proposeATakeback": "Propor voltar uma jogada atrás", + "takebackPropositionSent": "Proposta de voltar uma jogada atrás enviada", + "takebackPropositionDeclined": "Proposta de voltar uma jogada atrás recusada", + "takebackPropositionAccepted": "Proposta de voltar uma jogada atrás aceite", + "takebackPropositionCanceled": "Proposta de voltar uma jogada atrás cancelada", + "yourOpponentProposesATakeback": "O teu adversário propõe voltar uma jogada atrás", "bookmarkThisGame": "Adicionar esta partida às favoritas", "tournament": "Torneio", "tournaments": "Torneios", - "tournamentPoints": "Pontos de torneios", - "viewTournament": "Ver torneio", + "tournamentPoints": "Pontos de torneio", + "viewTournament": "Ver o torneio", "backToTournament": "Voltar ao torneio", - "noDrawBeforeSwissLimit": "Não é possível empatar antes de 30 lances em um torneio suíço.", + "noDrawBeforeSwissLimit": "Num torneio suíço não pode empatar antes de 30 jogadas.", "thematic": "Temático", - "yourPerfRatingIsProvisional": "Seu rating {param} é provisório", - "yourPerfRatingIsTooHigh": "Seu {param1} rating ({param2}) é muito alta", - "yourTopWeeklyPerfRatingIsTooHigh": "Seu melhor rating {param1} da semana ({param2}) é muito alto", - "yourPerfRatingIsTooLow": "Sua {param1} pontuação ({param2}) é muito baixa", + "yourPerfRatingIsProvisional": "A tua pontuação em {param} é provisória", + "yourPerfRatingIsTooHigh": "A tua pontuação em {param1} ({param2}) é demasiado alta", + "yourTopWeeklyPerfRatingIsTooHigh": "A tua pontuação máxima nesta semana em {param1} ({param2}) é demasiado alta", + "yourPerfRatingIsTooLow": "A tua pontuação em {param1} ({param2}) é demasiado baixa", "ratedMoreThanInPerf": "Pontuação ≥ {param1} em {param2}", "ratedLessThanInPerf": "Pontuação ≤ {param1} em {param2}", - "mustBeInTeam": "Precisa estar na equipe {param}", - "youAreNotInTeam": "Você não está na equipe {param}", - "backToGame": "Retorne à partida", - "siteDescription": "Xadrez online gratuito. Jogue xadrez agora numa interface simples. Sem registro, sem anúncios, sem plugins. Jogue xadrez contra computador, amigos ou adversários aleatórios.", - "xJoinedTeamY": "{param1} juntou-se à equipe {param2}", - "xCreatedTeamY": "{param1} criou a equipe {param2}", - "startedStreaming": "começou uma transmissão ao vivo", - "xStartedStreaming": "{param} começou a transmitir", - "averageElo": "Média de rating", + "mustBeInTeam": "Tens de pertencer à equipa {param}", + "youAreNotInTeam": "Não estás na equipa {param}", + "backToGame": "Voltar à partida", + "siteDescription": "Xadrez online gratuito. Joga xadrez numa interface simples. Sem registos, sem anúncios, sem plugins. Joga xadrez com o computador, amigos ou adversários aleatórios.", + "xJoinedTeamY": "{param1} juntou-se à equipa {param2}", + "xCreatedTeamY": "{param1} criou a equipa {param2}", + "startedStreaming": "começou uma stream", + "xStartedStreaming": "{param} começou uma stream", + "averageElo": "Pontuação média", "location": "Localização", "filterGames": "Filtrar partidas", - "reset": "Reiniciar", + "reset": "Voltar ao original", "apply": "Aplicar", - "save": "Salvar", - "leaderboard": "Classificação", - "screenshotCurrentPosition": "Captura de tela da posição atual", - "gameAsGIF": "Salvar a partida como GIF", - "pasteTheFenStringHere": "Cole a notação FEN aqui", - "pasteThePgnStringHere": "Cole a notação PGN aqui", - "orUploadPgnFile": "Ou carregue um arquivo PGN", - "fromPosition": "A partir da posição", - "continueFromHere": "Continuar daqui", + "save": "Guardar", + "leaderboard": "Tabela de liderança", + "screenshotCurrentPosition": "Posição atual da captura de ecrã", + "gameAsGIF": "Jogo como GIF", + "pasteTheFenStringHere": "Coloca a notação FEN aqui", + "pasteThePgnStringHere": "Coloca a notação PGN aqui", + "orUploadPgnFile": "Ou enviar um ficheiro PGN", + "fromPosition": "A partir de uma posição", + "continueFromHere": "Continuar a partir daqui", "toStudy": "Estudo", - "importGame": "Importar partida", - "importGameExplanation": "Após colar uma partida em PGN você poderá revisá-la interativamente, consultar uma análise de computador, utilizar o chat e compartilhar um link.", - "importGameCaveat": "As variantes serão apagadas. Para salvá-las, importe o PGN em um estudo.", - "importGameDataPrivacyWarning": "Este PGN pode ser acessado publicamente. Use um estudo para importar um jogo privado.", - "thisIsAChessCaptcha": "Este é um CAPTCHA enxadrístico.", - "clickOnTheBoardToMakeYourMove": "Clique no tabuleiro para fazer seu lance, provando que é humano.", - "captcha_fail": "Por favor, resolva o captcha enxadrístico.", - "notACheckmate": "Não é xeque-mate", - "whiteCheckmatesInOneMove": "As brancas dão mate em um lance", - "blackCheckmatesInOneMove": "As pretas dão mate em um lance", + "importGame": "Importar uma partida", + "importGameExplanation": "Coloca aqui o PGN de um jogo, para teres acesso a navegar pela repetição,\nanálise de computador, sala de chat do jogo e link de partilha.", + "importGameCaveat": "As variações serão apagadas. Para mantê-las, importe o PGN através de um estudo.", + "importGameDataPrivacyWarning": "Este PGN pode ser acessada pelo público. Para importar um jogo de forma privada, use um estudo.", + "thisIsAChessCaptcha": "Este é um \"CAPTCHA\" de xadrez.", + "clickOnTheBoardToMakeYourMove": "Clica no tabuleiro para fazeres a tua jogada, provando que és humano.", + "captcha_fail": "Por favor, resolve o captcha.", + "notACheckmate": "Não é xeque-mate.", + "whiteCheckmatesInOneMove": "As brancas dão mate em um movimento", + "blackCheckmatesInOneMove": "As pretas dão mate em um movimento", "retry": "Tentar novamente", "reconnecting": "Reconectando", - "noNetwork": "Sem conexão", + "noNetwork": "Desligado", "favoriteOpponents": "Adversários favoritos", "follow": "Seguir", - "following": "Seguindo", - "unfollow": "Parar de seguir", + "following": "A seguir", + "unfollow": "Deixar de seguir", "followX": "Seguir {param}", "unfollowX": "Deixar de seguir {param}", "block": "Bloquear", "blocked": "Bloqueado", "unblock": "Desbloquear", - "followsYou": "Segue você", + "followsYou": "Segue-te", "xStartedFollowingY": "{param1} começou a seguir {param2}", "more": "Mais", "memberSince": "Membro desde", @@ -686,124 +718,124 @@ "openTournaments": "Torneios abertos", "duration": "Duração", "winner": "Vencedor", - "standing": "Colocação", - "createANewTournament": "Criar novo torneio", - "tournamentCalendar": "Calendário do torneio", + "standing": "Classificação", + "createANewTournament": "Criar um torneio", + "tournamentCalendar": "Calendário de torneios", "conditionOfEntry": "Condições de participação:", "advancedSettings": "Configurações avançadas", - "safeTournamentName": "Escolha um nome seguro para o torneio.", - "inappropriateNameWarning": "Até mesmo a menor indecência poderia ensejar o encerramento de sua conta.", - "emptyTournamentName": "Deixe em branco para dar ao torneio o nome de um grande mestre aleatório.", - "makePrivateTournament": "Faça o torneio privado e restrinja o acesso com uma senha", + "safeTournamentName": "Escolhe um nome totalmente seguro para o torneio.", + "inappropriateNameWarning": "Até uma linguagem ligeiramente inadequada pode levar ao encerramento da tua conta.", + "emptyTournamentName": "Deixe em branco e será atribuído um nome aleatório de um jogador notável ao torneio.", + "makePrivateTournament": "Torna o torneio privado e restrinje o acesso com uma palavra-passe", "join": "Entrar", "withdraw": "Sair", "points": "Pontos", "wins": "Vitórias", "losses": "Derrotas", "createdBy": "Criado por", - "tournamentIsStarting": "O torneio está começando", - "tournamentPairingsAreNowClosed": "Os pareamentos do torneio estão fechados agora.", - "standByX": "{param}, aguarde: o pareamento está em andamento, prepare-se!", - "pause": "Pausar", + "tournamentIsStarting": "O torneio está a começar", + "tournamentPairingsAreNowClosed": "Os emparelhamentos no torneio já estão fechados.", + "standByX": "Aguarda {param}, estamos a emparelhar jogadores, prepara-te!", + "pause": "Pausa", "resume": "Continuar", - "youArePlaying": "Você está participando!", + "youArePlaying": "Estás a jogar!", "winRate": "Taxa de vitórias", - "berserkRate": "Taxa Berserk", + "berserkRate": "Taxa de partidas no modo frenético", "performance": "Desempenho", - "tournamentComplete": "Torneio completo", - "movesPlayed": "Movimentos realizados", - "whiteWins": "Brancas venceram", - "blackWins": "Pretas venceram", - "drawRate": "Taxa de empates", + "tournamentComplete": "Torneio terminado", + "movesPlayed": "Movimentos feitos", + "whiteWins": "Vitórias com as brancas", + "blackWins": "Vitórias com as pretas", + "drawRate": "Taxa de empate", "draws": "Empates", - "nextXTournament": "Próximo torneio {param}:", - "averageOpponent": "Pontuação média adversários", + "nextXTournament": "Próximo torneio de {param}:", + "averageOpponent": "Pontuação média dos adversários", "boardEditor": "Editor de tabuleiro", - "setTheBoard": "Defina a posição", + "setTheBoard": "Partilha o tabuleiro", "popularOpenings": "Aberturas populares", - "endgamePositions": "Posições de final", + "endgamePositions": "Posições finais", "chess960StartPosition": "Posição inicial do Xadrez960: {param}", "startPosition": "Posição inicial", - "clearBoard": "Limpar tabuleiro", - "loadPosition": "Carregar posição", + "clearBoard": "Limpar o tabuleiro", + "loadPosition": "Carregar uma posição", "isPrivate": "Privado", "reportXToModerators": "Reportar {param} aos moderadores", - "profileCompletion": "Conclusão do perfil: {param}", - "xRating": "Rating {param}", - "ifNoneLeaveEmpty": "Se nenhuma, deixe vazio", + "profileCompletion": "Perfil completo: {param}", + "xRating": "Pontuação {param}", + "ifNoneLeaveEmpty": "Se não existir, deixa em branco", "profile": "Perfil", - "editProfile": "Editar perfil", - "realName": "Nome real", - "setFlair": "Escolha seu emote", + "editProfile": "Editar o perfil", + "realName": "Nome Real", + "setFlair": "Defina o teu estilo", "flair": "Estilo", - "youCanHideFlair": "Você pode esconder todos os emotes de usuário no site.", + "youCanHideFlair": "Há uma opção para ocultar todos os estilos dos utilizadores em todo o site.", "biography": "Biografia", "countryRegion": "País ou região", "thankYou": "Obrigado!", - "socialMediaLinks": "Links de mídia social", - "oneUrlPerLine": "Uma URL por linha.", - "inlineNotation": "Notação em linha", - "makeAStudy": "Para salvar e compartilhar uma análise, crie um estudo.", - "clearSavedMoves": "Limpar lances", - "previouslyOnLichessTV": "Anteriormente em Lichess TV", + "socialMediaLinks": "Links das redes sociais", + "oneUrlPerLine": "Um URL por linha.", + "inlineNotation": "Anotações em linha", + "makeAStudy": "Para guardar e partilhar, considere fazer um estudo.", + "clearSavedMoves": "Limpar jogadas", + "previouslyOnLichessTV": "Anteriormente na TV Lichess", "onlinePlayers": "Jogadores online", "activePlayers": "Jogadores ativos", - "bewareTheGameIsRatedButHasNoClock": "Cuidado, o jogo vale rating, mas não há controle de tempo!", + "bewareTheGameIsRatedButHasNoClock": "Cuidado, o jogo vale pontos, mas não há limite de tempo!", "success": "Sucesso", - "automaticallyProceedToNextGameAfterMoving": "Passar automaticamente ao jogo seguinte após o lance", + "automaticallyProceedToNextGameAfterMoving": "Passar automaticamente ao jogo seguinte após a jogada", "autoSwitch": "Alternar automaticamente", - "puzzles": "Quebra-cabeças", + "puzzles": "Problemas", "onlineBots": "Bots online", "name": "Nome", "description": "Descrição", "descPrivate": "Descrição privada", - "descPrivateHelp": "Texto que apenas os membros da equipe verão. Se definido, substitui a descrição pública para os membros da equipe.", + "descPrivateHelp": "Texto que apenas está visível para os membros da equipa. Se definido, substitui a descrição pública dos membros da equipa.", "no": "Não", "yes": "Sim", "help": "Ajuda:", - "createANewTopic": "Criar novo tópico", + "createANewTopic": "Criar um novo tópico", "topics": "Tópicos", "posts": "Publicações", - "lastPost": "Última postagem", + "lastPost": "Última publicação", "views": "Visualizações", "replies": "Respostas", "replyToThisTopic": "Responder a este tópico", "reply": "Responder", "message": "Mensagem", - "createTheTopic": "Criar tópico", - "reportAUser": "Reportar um usuário", - "user": "Usuário", + "createTheTopic": "Criar o tópico", + "reportAUser": "Denunciar um utilizador", + "user": "Utilizador", "reason": "Motivo", "whatIsIheMatter": "Qual é o motivo?", - "cheat": "Trapaça", + "cheat": "Batota", "troll": "Troll", "other": "Outro", - "reportDescriptionHelp": "Cole o link do(s) jogo(s) e explique o que há de errado com o comportamento do usuário. Não diga apenas \"ele trapaceia\", informe-nos como chegou a esta conclusão. Sua denúncia será processada mais rapidamente se escrita em inglês.", - "error_provideOneCheatedGameLink": "Por favor forneça ao menos um link para um jogo com suspeita de trapaça.", + "reportDescriptionHelp": "Inclui o link do(s) jogo(s) e explica o que há de errado com o comportamento deste utilizador. Não digas apenas \"ele faz batota\"; informa-nos como chegaste a essa conclusão. A tua denúncia será processada mais rapidamente se for escrita em inglês.", + "error_provideOneCheatedGameLink": "Por favor, fornece-nos pelo menos um link para um jogo onde tenha havido batota.", "by": "por {param}", "importedByX": "Importado por {param}", - "thisTopicIsNowClosed": "O tópico foi fechado.", + "thisTopicIsNowClosed": "Este tópico foi fechado.", "blog": "Blog", "notes": "Notas", - "typePrivateNotesHere": "Digite notas pessoais aqui", - "writeAPrivateNoteAboutThisUser": "Escreva uma nota pessoal sobre este usuário", - "noNoteYet": "Nenhuma nota", - "invalidUsernameOrPassword": "Nome de usuário ou senha incorretos", - "incorrectPassword": "Senha incorreta", - "invalidAuthenticationCode": "Código de verificação inválido", - "emailMeALink": "Me envie um link", - "currentPassword": "Senha atual", - "newPassword": "Nova senha", - "newPasswordAgain": "Nova senha (novamente)", - "newPasswordsDontMatch": "As novas senhas não correspondem", - "newPasswordStrength": "Senha forte", - "clockInitialTime": "Tempo de relógio", - "clockIncrement": "Incremento do relógio", + "typePrivateNotesHere": "Escreve notas privadas aqui", + "writeAPrivateNoteAboutThisUser": "Escreva uma nota privada sobre este utilizador", + "noNoteYet": "Ainda sem notas", + "invalidUsernameOrPassword": "Nome de utilizador ou palavra-passe incorretos", + "incorrectPassword": "Palavra-passe incorreta", + "invalidAuthenticationCode": "Código de autenticação inválido", + "emailMeALink": "Envie-me um link por e-mail", + "currentPassword": "Palavra-passe atual", + "newPassword": "Nova palavra-chave", + "newPasswordAgain": "Nova palavra-passe (novamente)", + "newPasswordsDontMatch": "As novas palavras-passe não coincidem", + "newPasswordStrength": "Força da palavra-passe", + "clockInitialTime": "Tempo inicial no relógio", + "clockIncrement": "Incremento no relógio", "privacy": "Privacidade", "privacyPolicy": "Política de privacidade", - "letOtherPlayersFollowYou": "Permitir que outros jogadores sigam você", - "letOtherPlayersChallengeYou": "Permitir que outros jogadores desafiem você", - "letOtherPlayersInviteYouToStudy": "Deixe outros jogadores convidá-lo para um estudo", + "letOtherPlayersFollowYou": "Permitir que outros jogadores te sigam", + "letOtherPlayersChallengeYou": "Permitir que outros jogadores te desafiem", + "letOtherPlayersInviteYouToStudy": "Permitir que outros jogadores te convidem para estudos", "sound": "Som", "none": "Nenhum", "fast": "Rápido", @@ -812,180 +844,180 @@ "insideTheBoard": "Dentro do tabuleiro", "outsideTheBoard": "Fora do tabuleiro", "allSquaresOfTheBoard": "Todas as casas do tabuleiro", - "onSlowGames": "Em partidas lentas", + "onSlowGames": "Em jogos lentos", "always": "Sempre", "never": "Nunca", "xCompetesInY": "{param1} compete em {param2}", "victory": "Vitória", "defeat": "Derrota", - "victoryVsYInZ": "{param1} vs {param2} em {param3}", - "defeatVsYInZ": "{param1} vs {param2} em {param3}", - "drawVsYInZ": "{param1} vs {param2} em {param3}", - "timeline": "Linha do tempo", - "starting": "Iniciando:", + "victoryVsYInZ": "{param1} contra {param2} em {param3}", + "defeatVsYInZ": "{param1} contra {param2} em {param3}", + "drawVsYInZ": "{param1} contra {param2} em {param3}", + "timeline": "Cronologia", + "starting": "Começa às:", "allInformationIsPublicAndOptional": "Todas as informações são públicas e opcionais.", - "biographyDescription": "Fale sobre você, seus interesses, o que você gosta no xadrez, suas aberturas favoritas, jogadores...", - "listBlockedPlayers": "Sua lista de jogadores bloqueados", + "biographyDescription": "Fala de ti, do que gostas no xadrez, das tuas aberturas favoritas, jogos, jogadores...", + "listBlockedPlayers": "Lista os jogadores que bloqueaste", "human": "Humano", "computer": "Computador", "side": "Cor", "clock": "Relógio", "opponent": "Adversário", "learnMenu": "Aprender", - "studyMenu": "Estudar", + "studyMenu": "Estudos", "practice": "Praticar", "community": "Comunidade", "tools": "Ferramentas", "increment": "Incremento", "error_unknown": "Valor inválido", - "error_required": "Este campo deve ser preenchido", + "error_required": "Este campo tem de ser preenchido", "error_email": "Este endereço de e-mail é inválido", - "error_email_acceptable": "Este endereço de e-mail não é válido. Verifique e tente novamente.", - "error_email_unique": "Endereço de e-mail é inválido ou já está sendo utilizado", - "error_email_different": "Este já é o seu endereço de e-mail", - "error_minLength": "O mínimo de caracteres é {param}", - "error_maxLength": "O máximo de caracteres é {param}", - "error_min": "Deve ser maior ou igual a {param}", - "error_max": "Deve ser menor ou igual a {param}", - "ifRatingIsPlusMinusX": "Se o rating for ± {param}", - "ifRegistered": "Se registrado", - "onlyExistingConversations": "Apenas conversas iniciadas", + "error_email_acceptable": "Este endereço de e-mail não é aceitável. Por favor verifica-o e tenta outra vez.", + "error_email_unique": "Endereço de e-mail inválido ou já utilizado", + "error_email_different": "Este já é o teu endereço de e-mail", + "error_minLength": "Deve conter pelo menos {param} caracteres", + "error_maxLength": "Deve conter no máximo {param} caracteres", + "error_min": "Deve ser pelo menos {param}", + "error_max": "Deve ser no máximo {param}", + "ifRatingIsPlusMinusX": "Se a pontuação for ± {param}", + "ifRegistered": "Se registado", + "onlyExistingConversations": "Apenas conversas existentes", "onlyFriends": "Apenas amigos", "menu": "Menu", "castling": "Roque", - "whiteCastlingKingside": "O-O das brancas", - "blackCastlingKingside": "O-O das pretas", - "tpTimeSpentPlaying": "Tempo jogando: {param}", - "watchGames": "Assistir partidas", - "tpTimeSpentOnTV": "Tempo na TV: {param}", - "watch": "Assistir", - "videoLibrary": "Vídeos", + "whiteCastlingKingside": "Brancas O-O", + "blackCastlingKingside": "Pretas O-O", + "tpTimeSpentPlaying": "Tempo passado a jogar: {param}", + "watchGames": "Ver jogos", + "tpTimeSpentOnTV": "Tempo a ser transmitido na TV: {param}", + "watch": "Observar", + "videoLibrary": "Videoteca", "streamersMenu": "Streamers", - "mobileApp": "Aplicativo Móvel", + "mobileApp": "Aplicação móvel", "webmasters": "Webmasters", "about": "Sobre", "aboutX": "Sobre o {param}", - "xIsAFreeYLibreOpenSourceChessServer": "{param1} é um servidor de xadrez gratuito ({param2}), livre, sem anúncios e código aberto.", - "really": "realmente", + "xIsAFreeYLibreOpenSourceChessServer": "O {param1} é um servidor de xadrez grátis ({param2}), sem publicidades e open-source.", + "really": "a sério", "contribute": "Contribuir", "termsOfService": "Termos de serviço", - "sourceCode": "Código-fonte", - "simultaneousExhibitions": "Exibição simultânea", - "host": "Simultanista", - "hostColorX": "Cor do simultanista: {param}", + "sourceCode": "Código fonte", + "simultaneousExhibitions": "Exibições simultâneas", + "host": "Anfitrião", + "hostColorX": "Cor do anfitrião: {param}", "yourPendingSimuls": "Suas simultâneas pendentes", "createdSimuls": "Simultâneas criadas recentemente", - "hostANewSimul": "Iniciar nova simultânea", - "signUpToHostOrJoinASimul": "Entre em uma ou crie uma conta para hospedar", + "hostANewSimul": "Iniciar uma simultânea", + "signUpToHostOrJoinASimul": "Registra-te para hospedar ou juntar a uma simultânea", "noSimulFound": "Simultânea não encontrada", "noSimulExplanation": "Esta exibição simultânea não existe.", - "returnToSimulHomepage": "Retornar à página inicial da simultânea", - "aboutSimul": "A simultânea envolve um único jogador contra vários oponentes ao mesmo tempo.", - "aboutSimulImage": "Contra 50 oponentes, Fischer ganhou 47 jogos, empatou 2 e perdeu 1.", - "aboutSimulRealLife": "O conceito provém de eventos reais, nos quais o simultanista se move de mesa em mesa, executando um movimento por vez.", - "aboutSimulRules": "Quando a simultânea começa, cada jogador começa sua partida contra o simultanista, o qual sempre tem as brancas. A simultânea termina quando todas as partidas são finalizadas.", - "aboutSimulSettings": "As simultâneas sempre são partidas amigáveis. Revanches, voltar jogadas e tempo adicional estão desativados.", + "returnToSimulHomepage": "Voltar à página inicial da simultânea", + "aboutSimul": "As simultâneas envolvem um único jogador contra vários adversários ao mesmo tempo.", + "aboutSimulImage": "Contra 50 adversários, Fischer ganhou 47 jogos, empatou 2 e perdeu 1.", + "aboutSimulRealLife": "O conceito provém de eventos reais, nos quais o simultanista se move de mesa em mesa, executando um movimento de cada vez.", + "aboutSimulRules": "Quando a simultânea começa, cada jogador começa sua partida contra o anfitrião, que joga sempre com as peças brancas. A simultânea termina quando todas as partidas tiverem acabado.", + "aboutSimulSettings": "As simultâneas são sempre partidas amigáveis. Desforras, voltar jogadas atrás e dar mais tempo estão desativados.", "create": "Criar", - "whenCreateSimul": "Quando cria uma simultânea, você joga com vários adversários ao mesmo tempo.", - "simulVariantsHint": "Se você selecionar diversas variantes, cada jogador poderá escolher qual delas jogar.", - "simulClockHint": "Configuração de acréscimos no relógio. Quanto mais jogadores admitir, mais tempo pode necessitar.", - "simulAddExtraTime": "Você pode acrescentar tempo adicional a seu relógio, para ajudá-lo a lidar com a simultânea.", - "simulHostExtraTime": "Tempo adicional do simultanista", - "simulAddExtraTimePerPlayer": "Adicionar tempo inicial ao seu relógio por cada jogador adversário que entrar na simultânea.", - "simulHostExtraTimePerPlayer": "Tempo adicional do simultanista por jogador", + "whenCreateSimul": "Quando crias uma simultânea, podes jogar com vários adversários ao mesmo tempo.", + "simulVariantsHint": "Se selecionares diversas variantes, cada jogador poderá escolher qual delas jogar.", + "simulClockHint": "Configuração de incrementos no relógio. Quanto mais jogadores admitires, mais tempo poderás necessitar.", + "simulAddExtraTime": "Podes acrescentar tempo adicional ao teu relógio, para te ajudar a lidar com a simultânea.", + "simulHostExtraTime": "Tempo adicional do anfitrião", + "simulAddExtraTimePerPlayer": "Adicione tempo inicial ao seu relógio para cada jogador que entra na simulação.", + "simulHostExtraTimePerPlayer": "Tempo extra de relógio por jogador", "lichessTournaments": "Torneios do Lichess", - "tournamentFAQ": "Perguntas Frequentes sobre torneios no estilo Arena", - "timeBeforeTournamentStarts": "Contagem regressiva para início do torneio", - "averageCentipawnLoss": "Perda média em centipeões", + "tournamentFAQ": "Perguntas frequentes sobre torneios em arena", + "timeBeforeTournamentStarts": "Contagem decrescente para o início do torneio", + "averageCentipawnLoss": "Perda média de centésimos de peão", "accuracy": "Precisão", - "keyboardShortcuts": "Atalhos de teclado", - "keyMoveBackwardOrForward": "retroceder/avançar lance", + "keyboardShortcuts": "Atalhos do teclado", + "keyMoveBackwardOrForward": "retroceder/avançar jogada", "keyGoToStartOrEnd": "ir para início/fim", - "keyCycleSelectedVariation": "Alternar entre as variantes", - "keyShowOrHideComments": "mostrar/ocultar comentários", + "keyCycleSelectedVariation": "Ciclo da variante selecionada", + "keyShowOrHideComments": "mostrar/ocultar os comentários", "keyEnterOrExitVariation": "entrar/sair da variante", - "keyRequestComputerAnalysis": "Solicite análise do computador, aprenda com seus erros", - "keyNextLearnFromYourMistakes": "Próximo (Aprenda com seus erros)", - "keyNextBlunder": "Próximo erro grave", + "keyRequestComputerAnalysis": "Solicite análise do computador, Aprenda com seus erros", + "keyNextLearnFromYourMistakes": "Seguinte (Aprenda com os seus erros)", + "keyNextBlunder": "Próxima gafe", "keyNextMistake": "Próximo erro", "keyNextInaccuracy": "Próxima imprecisão", - "keyPreviousBranch": "Branch anterior", - "keyNextBranch": "Próximo branch", - "toggleVariationArrows": "Ativar/desativar setas", - "cyclePreviousOrNextVariation": "Variante seguinte/anterior", - "toggleGlyphAnnotations": "Ativar/desativar anotações", + "keyPreviousBranch": "Ramo anterior", + "keyNextBranch": "Próximo ramo", + "toggleVariationArrows": "Ativar/desactivar seta da variante", + "cyclePreviousOrNextVariation": "Ciclo anterior/próxima variante", + "toggleGlyphAnnotations": "Ativar/desativar anotações com símbolos", "togglePositionAnnotations": "Ativar/desativar anotações de posição", "variationArrowsInfo": "Setas de variação permitem navegar sem usar a lista de movimentos.", - "playSelectedMove": "jogar movimento selecionado", + "playSelectedMove": "jogar o movimento selecionado", "newTournament": "Novo torneio", - "tournamentHomeTitle": "Torneios de xadrez com diversos controles de tempo e variantes", - "tournamentHomeDescription": "Jogue xadrez em ritmo acelerado! Entre em um torneio oficial agendado ou crie seu próprio. Bullet, Blitz, Clássico, Chess960, King of the Hill, Três Xeques e outras modalidades disponíveis para uma ilimitada diversão enxadrística.", + "tournamentHomeTitle": "Torneios de xadrez com diversos ritmos de jogo e variantes", + "tournamentHomeDescription": "Joga xadrez em ritmo acelerado! Entra num torneio oficial agendado ou cria o teu próprio. Bullet, Rápida, Clássica, Chess960, Rei da Colina, Três Xeques e mais opções disponíveis para uma diversão ilimitada.", "tournamentNotFound": "Torneio não encontrado", "tournamentDoesNotExist": "Este torneio não existe.", - "tournamentMayHaveBeenCanceled": "O evento pode ter sido cancelado, se todos os jogadores saíram antes de seu início.", - "returnToTournamentsHomepage": "Volte à página inicial de torneios", - "weeklyPerfTypeRatingDistribution": "Distribuição mensal de rating em {param}", - "yourPerfTypeRatingIsRating": "Seu rating em {param1} é {param2}.", - "youAreBetterThanPercentOfPerfTypePlayers": "Você é melhor que {param1} dos jogadores de {param2}.", - "userIsBetterThanPercentOfPerfTypePlayers": "{param1} é melhor que {param2} dos {param3} jogadores.", - "betterThanPercentPlayers": "Melhor que {param1} dos jogadores de {param2}", - "youDoNotHaveAnEstablishedPerfTypeRating": "Você não tem rating definido em {param}.", - "yourRating": "Seu rating", - "cumulative": "Cumulativo", - "glicko2Rating": "Rating Glicko-2", - "checkYourEmail": "Verifique seu e-mail", - "weHaveSentYouAnEmailClickTheLink": "Enviamos um e-mail. Clique no link do e-mail para ativar sua conta.", - "ifYouDoNotSeeTheEmailCheckOtherPlaces": "Se você não vir o e-mail, verifique outros locais onde possa estar, como lixeira, spam ou outras pastas.", - "weHaveSentYouAnEmailTo": "Enviamos um e-mail para {param}. Clique no link do e-mail para redefinir sua senha.", - "byRegisteringYouAgreeToBeBoundByOur": "Ao registrar, você concorda em se comprometer com nossa {param}.", - "readAboutOur": "Leia sobre a nossa {param}.", - "networkLagBetweenYouAndLichess": "Atraso na rede", + "tournamentMayHaveBeenCanceled": "O torneio pode ter sido cancelado, se todos os jogadores tiverem saíram antes do seu começo.", + "returnToTournamentsHomepage": "Voltar à página inicial de torneios", + "weeklyPerfTypeRatingDistribution": "Distribuição semanal de pontuação em {param}", + "yourPerfTypeRatingIsRating": "A tua pontuação em {param1} é {param2}.", + "youAreBetterThanPercentOfPerfTypePlayers": "És melhor que {param1} dos jogadores de {param2}.", + "userIsBetterThanPercentOfPerfTypePlayers": "{param1} é melhor que {param2} dos jogadores de {param3}.", + "betterThanPercentPlayers": "Melhor que {param1} de {param2} jogadores", + "youDoNotHaveAnEstablishedPerfTypeRating": "Não tens uma pontuação estabelecida em {param}.", + "yourRating": "A tua pontuação", + "cumulative": "Acumulativo", + "glicko2Rating": "Pontuação Glicko-2", + "checkYourEmail": "Verifica o teu e-mail", + "weHaveSentYouAnEmailClickTheLink": "Enviámos-te um e-mail. Clica no link nesse e-mail para ativares a tua conta.", + "ifYouDoNotSeeTheEmailCheckOtherPlaces": "Se você não vires o e-mail, verifica outros locais onde este possa estar, como pastas de lixo, spam, social ou outras.", + "weHaveSentYouAnEmailTo": "Enviámos-te um e-mail para {param}. Clica no link nesse e-mail para redefinires a tua palavra-passe.", + "byRegisteringYouAgreeToBeBoundByOur": "Ao criares uma conta, concordas comprometeres-te com os nossos {param}.", + "readAboutOur": "Lê sobre a nossa {param}.", + "networkLagBetweenYouAndLichess": "Atraso na rede entre ti e o Lichess", "timeToProcessAMoveOnLichessServer": "Tempo para processar um movimento no servidor do Lichess", - "downloadAnnotated": "Baixar anotação", - "downloadRaw": "Baixar texto", - "downloadImported": "Baixar partida importada", + "downloadAnnotated": "Transferir anotação", + "downloadRaw": "Transferir texto", + "downloadImported": "Transferir a partida importada", "crosstable": "Tabela", - "youCanAlsoScrollOverTheBoardToMoveInTheGame": "Você também pode rolar sobre o tabuleiro para percorrer as jogadas.", - "scrollOverComputerVariationsToPreviewThem": "Passe o mouse pelas variações do computador para visualizá-las.", - "analysisShapesHowTo": "Pressione Shift+Clique ou clique com o botão direito do mouse para desenhar círculos e setas no tabuleiro.", - "letOtherPlayersMessageYou": "Permitir que outros jogadores lhe enviem mensagem", - "receiveForumNotifications": "Receba notificações quando você for mencionado no fórum", - "shareYourInsightsData": "Compartilhe seus dados da análise", + "youCanAlsoScrollOverTheBoardToMoveInTheGame": "Também podes rodar a rodinha do rato sobre o tabuleiro para percorreres as jogadas na partida.", + "scrollOverComputerVariationsToPreviewThem": "Passe o rato sobre as variantes do computador para visualizá-las.", + "analysisShapesHowTo": "Pressiona shift+clique ou clica com o botão direito do rato para desenhares círculos e setas no tabuleiro.", + "letOtherPlayersMessageYou": "Permitir que outros jogadores te enviem mensagens", + "receiveForumNotifications": "Olá aOlá a todos", + "shareYourInsightsData": "Compartilhar os teus dados de \"insights\" de xadrez", "withNobody": "Com ninguém", "withFriends": "Com amigos", "withEverybody": "Com todos", "kidMode": "Modo infantil", - "kidModeIsEnabled": "O modo infantil está ativado.", - "kidModeExplanation": "Isto diz respeito à segurança. No modo infantil, todas as comunicações do site são desabilitadas. Habilite isso para seus filhos e alunos, para protegê-los de outros usuários da Internet.", - "inKidModeTheLichessLogoGetsIconX": "No modo infantil, a logo do lichess tem um ícone {param}, para que você saiba que suas crianças estão seguras.", - "askYourChessTeacherAboutLiftingKidMode": "Sua conta é gerenciada. Para desativar o modo infantil, peça ao seu professor.", - "enableKidMode": "Habilitar o modo infantil", - "disableKidMode": "Desabilitar o modo infantil", + "kidModeIsEnabled": "Modo infantil está ativado.", + "kidModeExplanation": "Iso é sobre segurança. No modo infantil, todas as comunicações do site ficam desactivadas. Activa esta opção para os teus filhos ou alunos, para protegê-los de outros utilizadores da internet.", + "inKidModeTheLichessLogoGetsIconX": "No modo criança, o logótipo do Lichess fica com um ícone {param} para que saibas que as tuas crianças estão seguras.", + "askYourChessTeacherAboutLiftingKidMode": "A sua conta é gerida. Peça ao seu professor de xadrez para retirar o modo infantil.", + "enableKidMode": "Ativar o modo infantil", + "disableKidMode": "Desativar o modo infantil", "security": "Segurança", "sessions": "Sessões", - "revokeAllSessions": "revogar todas as sessões", - "playChessEverywhere": "Jogue xadrez em qualquer lugar", + "revokeAllSessions": "desativar todas as sessões", + "playChessEverywhere": "Joga xadrez em qualquer lugar", "asFreeAsLichess": "Tão gratuito quanto o Lichess", "builtForTheLoveOfChessNotMoney": "Desenvolvido pelo amor ao xadrez, não pelo dinheiro", - "everybodyGetsAllFeaturesForFree": "Todos têm todos os recursos de graça", + "everybodyGetsAllFeaturesForFree": "Todos têm todos os recursos gratuitamente", "zeroAdvertisement": "Zero anúncios", "fullFeatured": "Cheio de recursos", - "phoneAndTablet": "Celular e tablet", + "phoneAndTablet": "Telemóvel e tablet", "bulletBlitzClassical": "Bullet, blitz, clássico", "correspondenceChess": "Xadrez por correspondência", - "onlineAndOfflinePlay": "Jogue online e offline", - "viewTheSolution": "Ver solução", - "followAndChallengeFriends": "Siga e desafie amigos", + "onlineAndOfflinePlay": "Jogar online e offline", + "viewTheSolution": "Ver a solução", + "followAndChallengeFriends": "Joga e desafia amigos", "gameAnalysis": "Análise da partida", - "xHostsY": "{param1} criou {param2}", + "xHostsY": "{param1} criou a exibição simultânea {param2}", "xJoinsY": "{param1} entrou em {param2}", "xLikesY": "{param1} gostou de {param2}", - "quickPairing": "Pareamento rápido", - "lobby": "Salão", + "quickPairing": "Emparelhamento rápido", + "lobby": "Sala de espera", "anonymous": "Anônimo", - "yourScore": "Sua pontuação:{param}", - "language": "Idioma", - "background": "Cor tema", + "yourScore": "O teu resultado: {param}", + "language": "Lingua", + "background": "Fundo", "light": "Claro", "dark": "Escuro", "transparent": "Transparente", @@ -995,283 +1027,283 @@ "size": "Tamanho", "opacity": "Opacidade", "brightness": "Brilho", - "hue": "Tom", - "boardReset": "Restaurar as cores padrão", - "pieceSet": "Estilo das peças", - "embedInYourWebsite": "Incorporar no seu site", - "usernameAlreadyUsed": "Este nome de usuário já está registado, por favor, escolha outro.", - "usernamePrefixInvalid": "O nome de usuário deve começar com uma letra.", - "usernameSuffixInvalid": "O nome de usuário deve terminar com uma letra ou um número.", - "usernameCharsInvalid": "Nomes de usuário só podem conter letras, números, sublinhados e hifens.", - "usernameUnacceptable": "Este nome de usuário não é aceitável.", - "playChessInStyle": "Jogue xadrez com estilo", - "chessBasics": "Básicos do xadrez", + "hue": "Tonalidade", + "boardReset": "Redefinir cores para o padrão", + "pieceSet": "Peças", + "embedInYourWebsite": "Incorporar no teu site", + "usernameAlreadyUsed": "Este nome de utilizador já existe, por favor escolhe outro.", + "usernamePrefixInvalid": "O nome do utilizador tem começar com uma letra.", + "usernameSuffixInvalid": "O nome do utilizador tem de acabar com uma letra ou número.", + "usernameCharsInvalid": "O nome do utilizador só pode conter letras, números, underscores ou hífenes.", + "usernameUnacceptable": "Este nome de utilizador não é aceitável.", + "playChessInStyle": "Jogar xadrez com estilo", + "chessBasics": "O básico do xadrez", "coaches": "Treinadores", "invalidPgn": "PGN inválido", "invalidFen": "FEN inválido", "custom": "Personalizado", "notifications": "Notificações", "notificationsX": "Notificações: {param1}", - "perfRatingX": "Rating: {param}", - "practiceWithComputer": "Pratique com o computador", - "anotherWasX": "Um outro lance seria {param}", - "bestWasX": "Melhor seria {param}", - "youBrowsedAway": "Você navegou para longe", - "resumePractice": "Retornar à prática", - "drawByFiftyMoves": "O jogo empatou pela regra dos cinquenta movimentos.", - "theGameIsADraw": "A partida terminou em empate.", - "computerThinking": "Computador pensando ...", - "seeBestMove": "Veja o melhor lance", - "hideBestMove": "Esconder o melhor lance", + "perfRatingX": "Pontuação: {param}", + "practiceWithComputer": "Praticar com o computador", + "anotherWasX": "Outro seria {param}", + "bestWasX": "{param} seria melhor", + "youBrowsedAway": "Saíste", + "resumePractice": "Continuar a prática", + "drawByFiftyMoves": "O jogo foi empatado de acordo com a regra dos cinquenta lances.", + "theGameIsADraw": "O jogo é um empate.", + "computerThinking": "Computador a pensar...", + "seeBestMove": "Ver o melhor movimento", + "hideBestMove": "Ocultar o melhor movimento", "getAHint": "Obter uma dica", - "evaluatingYourMove": "Avaliando o seu movimento ...", - "whiteWinsGame": "Brancas vencem", - "blackWinsGame": "Pretas vencem", - "learnFromYourMistakes": "Aprenda com seus erros", - "learnFromThisMistake": "Aprenda com este erro", - "skipThisMove": "Pular esse lance", - "next": "Próximo", + "evaluatingYourMove": "A analisar o teu movimento ...", + "whiteWinsGame": "As brancas ganham", + "blackWinsGame": "As pretas ganham", + "learnFromYourMistakes": "Aprende com os teus erros", + "learnFromThisMistake": "Aprende com este erro", + "skipThisMove": "Saltar este movimento", + "next": "Seguinte", "xWasPlayed": "{param} foi jogado", - "findBetterMoveForWhite": "Encontrar o melhor lance para as Brancas", - "findBetterMoveForBlack": "Encontre o melhor lance para as Pretas", + "findBetterMoveForWhite": "Encontra um melhor movimento para as brancas", + "findBetterMoveForBlack": "Encontra um melhor movimento para as pretas", "resumeLearning": "Continuar a aprendizagem", - "youCanDoBetter": "Você pode fazer melhor", - "tryAnotherMoveForWhite": "Tente um outro lance para as Brancas", - "tryAnotherMoveForBlack": "Tente um outro lance para as Pretas", + "youCanDoBetter": "Podes fazer melhor", + "tryAnotherMoveForWhite": "Tenta outro movimento para as brancas", + "tryAnotherMoveForBlack": "Tenta outro movimento para as pretas", "solution": "Solução", - "waitingForAnalysis": "Aguardando análise", - "noMistakesFoundForWhite": "Nenhum erro encontrado para as Brancas", - "noMistakesFoundForBlack": "Nenhum erro encontrado para as Pretas", - "doneReviewingWhiteMistakes": "Erros das brancas já revistos", - "doneReviewingBlackMistakes": "Erros das pretas já revistos", - "doItAgain": "Faça novamente", - "reviewWhiteMistakes": "Rever erros das Brancas", - "reviewBlackMistakes": "Rever erros das Pretas", + "waitingForAnalysis": "A aguardar pela análise", + "noMistakesFoundForWhite": "Não foram encontrados erros das brancas", + "noMistakesFoundForBlack": "Não foram encontrados erros das pretas", + "doneReviewingWhiteMistakes": "Terminada a revisão de erros das brancas", + "doneReviewingBlackMistakes": "Terminada a revisão de erros das pretas", + "doItAgain": "Repetir", + "reviewWhiteMistakes": "Rever os erros das brancas", + "reviewBlackMistakes": "Rever os erros das pretas", "advantage": "Vantagem", "opening": "Abertura", - "middlegame": "Meio-jogo", - "endgame": "Finais", - "conditionalPremoves": "Pré-lances condicionais", - "addCurrentVariation": "Adicionar a variação atual", - "playVariationToCreateConditionalPremoves": "Jogar uma variação para criar pré-lances condicionais", - "noConditionalPremoves": "Sem pré-lances condicionais", - "playX": "Jogar {param}", - "showUnreadLichessMessage": "Você recebeu uma mensagem privada do Lichess.", - "clickHereToReadIt": "Clique aqui para ler", + "middlegame": "Meio jogo", + "endgame": "Final de jogo", + "conditionalPremoves": "Movimentos antecipados condicionais", + "addCurrentVariation": "Adicionar a variante atual", + "playVariationToCreateConditionalPremoves": "Joga uma variante para criares movimentos antecipados condicionais", + "noConditionalPremoves": "Sem movimentos antecipados condicionais", + "playX": "Joga {param}", + "showUnreadLichessMessage": "Recebestes uma mensagem privada do Lichess.", + "clickHereToReadIt": "Clica aqui para ler", "sorry": "Desculpa :(", - "weHadToTimeYouOutForAWhile": "Tivemos de bloqueá-lo por um tempo.", - "why": "Por quê?", - "pleasantChessExperience": "Buscamos oferecer uma experiência agradável de xadrez para todos.", - "goodPractice": "Para isso, precisamos assegurar que nossos jogadores sigam boas práticas.", - "potentialProblem": "Quando um problema em potencial é detectado, nós mostramos esta mensagem.", - "howToAvoidThis": "Como evitar isso?", - "playEveryGame": "Jogue todos os jogos que inicia.", - "tryToWin": "Tente vencer (ou pelo menos empatar) todos os jogos que jogar.", - "resignLostGames": "Conceda partidas perdidas (não deixe o relógio ir até ao fim).", - "temporaryInconvenience": "Pedimos desculpa pelo incômodo temporário,", - "wishYouGreatGames": "e desejamos-lhe grandes jogos em lichess.org.", + "weHadToTimeYouOutForAWhile": "Tivemos de te banir por algum tempo.", + "why": "Porquê?", + "pleasantChessExperience": "Tencionamos proporcionar uma experiência de xadrez agradável a todos.", + "goodPractice": "Para isso, temos de nos assegurar que todos os jogadores seguem boas práticas.", + "potentialProblem": "Quando um potencial problema é detetado, exibimos esta mensagem.", + "howToAvoidThis": "Como evitar isto?", + "playEveryGame": "Joga todas as partidas que começares.", + "tryToWin": "Tenta ganhar (ou pelo menos empatar) todas as partida que jogares.", + "resignLostGames": "Desiste em partidas perdidas (não deixes o tempo no relógio acabar).", + "temporaryInconvenience": "Pedimos desculpa pelo incómodo temporário,", + "wishYouGreatGames": "e desejamos-te grandes jogos no lichess.org.", "thankYouForReading": "Obrigado pela leitura!", - "lifetimeScore": "Pontuação de todo o período", - "currentMatchScore": "Pontuação da partida atual", - "agreementAssistance": "Eu concordo que em momento algum receberei assistência durante os meus jogos (seja de um computador, livro, banco de dados ou outra pessoa).", - "agreementNice": "Eu concordo que serei sempre cortês com outros jogadores.", - "agreementMultipleAccounts": "Eu concordo que não criarei múltiplas contas (exceto pelas razões indicadas em {param}).", - "agreementPolicy": "Eu concordo que seguirei todas as normas do Lichess.", - "searchOrStartNewDiscussion": "Procurar ou iniciar nova conversa", + "lifetimeScore": "Pontuação desde sempre", + "currentMatchScore": "Pontuação atual", + "agreementAssistance": "Concordo que nunca recorrerei a assistência durante as minhas partidas (de um computador de xadrez, livro, base de dados ou outra pessoa).", + "agreementNice": "Concordo que serei sempre repeitoso para os outros jogadores.", + "agreementMultipleAccounts": "Concordo que não criarei várias contas (exceto pelas razões indicadas em {param}).", + "agreementPolicy": "Concordo que seguirei todas as políticas do Lichess.", + "searchOrStartNewDiscussion": "Pesquisa ou começa uma nova conversa", "edit": "Editar", "bullet": "Bullet", - "blitz": "Blitz", - "rapid": "Rápida", - "classical": "Clássico", - "ultraBulletDesc": "Jogos insanamente rápidos: menos de 30 segundos", - "bulletDesc": "Jogos muito rápidos: menos de 3 minutos", - "blitzDesc": "Jogos rápidos: 3 a 8 minutos", - "rapidDesc": "Jogos rápidos: 8 a 25 minutos", - "classicalDesc": "Jogos clássicos: 25 minutos ou mais", - "correspondenceDesc": "Jogos por correspondência: um ou vários dias por lance", + "blitz": "Rápidas", + "rapid": "Semi-rápidas", + "classical": "Clássicas", + "ultraBulletDesc": "Partidas incrivelmente rápidas: menos de 30 segundos", + "bulletDesc": "Partidas muito rápidas: menos de 3 minutos", + "blitzDesc": "Partidas rápidas: 3 a 8 minutos", + "rapidDesc": "Partidas semi-rápidas: 8 a 25 minutos", + "classicalDesc": "Partidas clássicas: 25 minutos ou mais", + "correspondenceDesc": "Partidas por correspondência: um ou vários dias por lance", "puzzleDesc": "Treinador de táticas de xadrez", "important": "Importante", - "yourQuestionMayHaveBeenAnswered": "A sua pergunta pode já ter sido respondida {param1}", - "inTheFAQ": "no F.A.Q.", - "toReportSomeoneForCheatingOrBadBehavior": "Para denunciar um usuário por trapaças ou mau comportamento, {param1}", - "useTheReportForm": "use o formulário de denúncia", - "toRequestSupport": "Para solicitar ajuda, {param1}", - "tryTheContactPage": "tente a página de contato", - "makeSureToRead": "Certifique-se de ler {param1}", - "theForumEtiquette": "as regras do fórum", - "thisTopicIsArchived": "Este tópico foi arquivado e não pode mais ser respondido.", - "joinTheTeamXToPost": "Junte-se a {param1} para publicar neste fórum", - "teamNamedX": "Equipe {param1}", - "youCannotPostYetPlaySomeGames": "Você não pode publicar nos fóruns ainda. Jogue algumas partidas!", - "subscribe": "Seguir publicações", - "unsubscribe": "Deixar de seguir publicações", - "mentionedYouInX": "mencionou você em \"{param1}\".", - "xMentionedYouInY": "{param1} mencionou você em \"{param2}\".", - "invitedYouToX": "convidou você para \"{param1}\".", - "xInvitedYouToY": "{param1} convidou você para \"{param2}\".", - "youAreNowPartOfTeam": "Você agora faz parte da equipe.", - "youHaveJoinedTeamX": "Você ingressou em \"{param1}\".", - "someoneYouReportedWasBanned": "Alguém que você denunciou foi banido", - "congratsYouWon": "Parabéns, você venceu!", + "yourQuestionMayHaveBeenAnswered": "A tua pergunta pode já ter uma resposta {param1}", + "inTheFAQ": "no F.A.Q. (perguntas frequentes).", + "toReportSomeoneForCheatingOrBadBehavior": "Para reportares um utilizador por fazer batota ou por mau comportamento, {param1}.", + "useTheReportForm": "usa a ficha própria para o fazeres", + "toRequestSupport": "Para solicitares suporte, {param1}.", + "tryTheContactPage": "tenta a página de contacto", + "makeSureToRead": "Certifique-se que lê {param1}", + "theForumEtiquette": "a etiqueta do fórum", + "thisTopicIsArchived": "Este tópico foi arquivado e já não pode ser respondido.", + "joinTheTeamXToPost": "Junta-te a {param1}, para publicares neste fórum", + "teamNamedX": "equipa {param1}", + "youCannotPostYetPlaySomeGames": "Ainda não podes publicar nos fóruns. Joga alguns jogos!", + "subscribe": "Subscrever-se", + "unsubscribe": "Cancelar a subscrição", + "mentionedYouInX": "foste mencionado em \"{param1}\".", + "xMentionedYouInY": "{param1} mencionou-te em \"{param2}\".", + "invitedYouToX": "convidou-te para \"{param1}\".", + "xInvitedYouToY": "{param1} convidou-te para \"{param2}\".", + "youAreNowPartOfTeam": "Já fazes parte da equipa.", + "youHaveJoinedTeamX": "Juntaste-te a \"{param1}\".", + "someoneYouReportedWasBanned": "Alguém que denunciaste foi banido", + "congratsYouWon": "Parabéns! Ganhaste!", "gameVsX": "Jogo vs {param1}", "resVsX": "{param1} vs {param2}", - "lostAgainstTOSViolator": "Você perdeu rating para alguém que violou os termos de serviço do Lichess", - "refundXpointsTimeControlY": "Reembolso: {param1} {param2} pontos de rating.", - "timeAlmostUp": "O tempo está quase acabando!", + "lostAgainstTOSViolator": "Perdes-te contra alguém que violou as regras do Lichess", + "refundXpointsTimeControlY": "Devolução: {param1} {param2} pontos de Elo.", + "timeAlmostUp": "O tempo está quase a terminar!", "clickToRevealEmailAddress": "[Clique para revelar o endereço de e-mail]", - "download": "Baixar", - "coachManager": "Configurações para professores", - "streamerManager": "Configurações para streamers", + "download": "Transferir", + "coachManager": "Gestor de treinadores", + "streamerManager": "Gestor do streamer", "cancelTournament": "Cancelar o torneio", "tournDescription": "Descrição do torneio", - "tournDescriptionHelp": "Algo especial que você queira dizer aos participantes? Tente ser breve. Links em Markdown disponíveis: [name](https://url)", - "ratedFormHelp": "Os jogos valem classificação\ne afetam o rating dos jogadores", - "onlyMembersOfTeam": "Apenas membros da equipe", - "noRestriction": "Sem restrição", - "minimumRatedGames": "Mínimo de partidas ranqueadas", - "minimumRating": "Rating mínimo", - "maximumWeeklyRating": "Rating máxima da semana", - "positionInputHelp": "Cole um FEN válido para iniciar as partidas a partir de uma posição específica.\nSó funciona com jogos padrão, e não com variantes.\nUse o {param} para gerar uma posição FEN, e depois cole-a aqui.\nDeixe em branco para começar as partidas na posição inicial padrão.", + "tournDescriptionHelp": "Quer dizer alguma coisa em especial aos participantes? Seja breve. Estão disponíveis ligações de Markdown: [name](https://url)", + "ratedFormHelp": "Os jogos são classificados\ne afetam as avaliações dos jogadores", + "onlyMembersOfTeam": "Apenas membros da equipa", + "noRestriction": "Sem restrições", + "minimumRatedGames": "Jogos com classificação mínima", + "minimumRating": "Classificação mínima", + "maximumWeeklyRating": "Avaliação semanal máxima", + "positionInputHelp": "Cole um FEN válido para iniciar todos os jogos a partir de uma determinada posição.\nSó funciona para os jogos padrão, não com variantes.\nVocê pode usar o {param} para gerar uma posição FEN e, em seguida, colá-lo aqui.\nDeixe em branco para iniciar jogos da posição inicial normal.", "cancelSimul": "Cancelar a simultânea", - "simulHostcolor": "Cor do simultanista em cada jogo", - "estimatedStart": "Tempo de início estimado", - "simulFeatured": "Compartilhar em {param}", - "simulFeaturedHelp": "Compartilhar a simultânia com todos em {param}. Desative para jogos privados.", + "simulHostcolor": "Cor do anfitrião para cada jogo", + "estimatedStart": "Hora de início prevista", + "simulFeatured": "Em destaque em {param}", + "simulFeaturedHelp": "Mostre a sua simultânea a todos em {param}. Desativar para simultâneas privadas.", "simulDescription": "Descrição da simultânea", - "simulDescriptionHelp": "Você gostaria de dizer algo aos participantes?", - "markdownAvailable": "{param} está disponível para opções de formatação adicionais.", - "embedsAvailable": "Cole a URL de uma partida ou de um capítulo de estudo para incorporá-lo.", - "inYourLocalTimezone": "No seu próprio fuso horário", + "simulDescriptionHelp": "Quer dizer alguma coisa aos participantes?", + "markdownAvailable": "{param} está disponível para sintaxe mais avançada.", + "embedsAvailable": "Cole o URL de um jogo ou um URL de um capítulo de estudo para integrá-lo.", + "inYourLocalTimezone": "No seu próprio fuso horário local", "tournChat": "Chat do torneio", "noChat": "Sem chat", - "onlyTeamLeaders": "Apenas líderes de equipe", - "onlyTeamMembers": "Apenas membros da equipe", - "navigateMoveTree": "Navegar pela notação de movimentos", - "mouseTricks": "Funcionalidades do mouse", - "toggleLocalAnalysis": "Ativar/desativar análise local do computador", - "toggleAllAnalysis": "Ativar/desativar todas análises locais do computador", - "playComputerMove": "Jogar o melhor lance de computador", + "onlyTeamLeaders": "Apenas líderes da equipa", + "onlyTeamMembers": "Apenas membros da equipa", + "navigateMoveTree": "Navegar pela árvore de movimentos", + "mouseTricks": "Movimentos do rato", + "toggleLocalAnalysis": "Ativar/desativar análise local no computador", + "toggleAllAnalysis": "Alternar todas as análises no computador", + "playComputerMove": "Jogar o melhor lance do computador", "analysisOptions": "Opções de análise", - "focusChat": "Focar texto", + "focusChat": "Focar no bate-papo", "showHelpDialog": "Mostrar esta mensagem de ajuda", - "reopenYourAccount": "Reabra sua conta", - "closedAccountChangedMind": "Caso você tenha encerrado sua conta, mas mudou de opinião, você tem ainda uma chance de recuperá-la.", - "onlyWorksOnce": "Isso só vai funcionar uma vez.", - "cantDoThisTwice": "Caso você encerre sua conta pela segunda vez, será impossível recuperá-la.", - "emailAssociatedToaccount": "Endereço de e-mail associado à conta", - "sentEmailWithLink": "Enviamos um e-mail pra você com um link.", + "reopenYourAccount": "Reabrir a sua conta", + "closedAccountChangedMind": "Se fechou a sua conta mas desde então mudou de ideias, terá uma oportunidade de recuperar a sua conta.", + "onlyWorksOnce": "Isto só vai funcionar uma única vez.", + "cantDoThisTwice": "Se fechar a conta uma segunda vez, não haverá forma de a recuperar.", + "emailAssociatedToaccount": "Endereço de email associado à conta", + "sentEmailWithLink": "Enviámos-lhe um e-mail com um link.", "tournamentEntryCode": "Código de entrada do torneio", - "hangOn": "Espere!", - "gameInProgress": "Você tem uma partida em andamento com {param}.", - "abortTheGame": "Cancelar a partida", - "resignTheGame": "Abandonar a partida", - "youCantStartNewGame": "Você não pode iniciar um novo jogo até que este acabe.", + "hangOn": "Aguarde!", + "gameInProgress": "Tem um jogo em curso com {param}.", + "abortTheGame": "Cancelar o jogo", + "resignTheGame": "Abandonar o jogo", + "youCantStartNewGame": "Não pode iniciar um novo jogo antes de este estar terminado.", "since": "Desde", "until": "Até", - "lichessDbExplanation": "Amostra de partidas rankeadas de todos os jogadores do Lichess", + "lichessDbExplanation": "Jogos avaliados por amostragem de todos os jogadores Lichess", "switchSides": "Trocar de lado", - "closingAccountWithdrawAppeal": "Encerrar sua conta anulará seu apelo", - "ourEventTips": "Nossas dicas para organização de eventos", + "closingAccountWithdrawAppeal": "Encerrar a tua conta anula o teu apelo", + "ourEventTips": "Os nossos conselhos para organizar eventos", "instructions": "Instruções", - "showMeEverything": "Mostrar tudo", - "lichessPatronInfo": "Lichess é um software de código aberto, totalmente grátis e sem fins lucrativos. Todos os custos operacionais, de desenvolvimento, e os conteúdos são financiados unicamente através de doações de usuários.", + "showMeEverything": "Mostra-me tudo", + "lichessPatronInfo": "Lichess é uma instituição de caridade e software de código aberto totalmente livre.\nTodos os custos operacionais, de desenvolvimento e conteúdo são financiados exclusivamente por doações de usuários.", "nothingToSeeHere": "Nada para ver aqui no momento.", - "opponentLeftCounter": "{count, plural, =1{O seu adversário deixou a partida. Você pode reivindicar vitória em {count} segundo.} other{O seu adversário deixou a partida. Você pode reivindicar vitória em {count} segundos.}}", - "mateInXHalfMoves": "{count, plural, =1{Mate em {count} lance} other{Mate em {count} lances}}", - "nbBlunders": "{count, plural, =1{{count} capivarada} other{{count} capivaradas}}", + "opponentLeftCounter": "{count, plural, =1{O teu adversário deixou a partida. Podes reivindicar vitória em {count} segundo.} other{O teu adversário deixou a partida. Podes reivindicar vitória em {count} segundos.}}", + "mateInXHalfMoves": "{count, plural, =1{Xeque-mate em {count} meio-movimento} other{Xeque-mate em {count} meio-movimentos}}", + "nbBlunders": "{count, plural, =1{{count} erro grave} other{{count} erros graves}}", "nbMistakes": "{count, plural, =1{{count} erro} other{{count} erros}}", "nbInaccuracies": "{count, plural, =1{{count} imprecisão} other{{count} imprecisões}}", - "nbPlayers": "{count, plural, =1{{count} jogadores conectados} other{{count} jogadores conectados}}", - "nbGames": "{count, plural, =1{{count} partida} other{{count} partidas}}", - "ratingXOverYGames": "{count, plural, =1{Rating {count} em {param2} jogo} other{Rating {count} após {param2} partidas}}", - "nbBookmarks": "{count, plural, =1{{count} Favoritos} other{{count} Favoritos}}", - "nbDays": "{count, plural, =1{{count} dias} other{{count} dias}}", - "nbHours": "{count, plural, =1{{count} horas} other{{count} horas}}", + "nbPlayers": "{count, plural, =1{{count} jogador} other{{count} jogadores}}", + "nbGames": "{count, plural, =1{{count} jogo} other{{count} jogos}}", + "ratingXOverYGames": "{count, plural, =1{{param2} partida {count} avaliada} other{{param2} partidas {count} avaliadas}}", + "nbBookmarks": "{count, plural, =1{{count} favorito} other{{count} favoritos}}", + "nbDays": "{count, plural, =1{{count} dia} other{{count} dias}}", + "nbHours": "{count, plural, =1{{count} hora} other{{count} horas}}", "nbMinutes": "{count, plural, =1{{count} minuto} other{{count} minutos}}", - "rankIsUpdatedEveryNbMinutes": "{count, plural, =1{O ranking é atualizado a cada {count} minutos} other{O ranking é atualizado a cada {count} minutos}}", - "nbPuzzles": "{count, plural, =1{{count} quebra-cabeça} other{{count} problemas}}", - "nbGamesWithYou": "{count, plural, =1{{count} partidas contra você} other{{count} partidas contra você}}", - "nbRated": "{count, plural, =1{{count} valendo pontos} other{{count} valendo pontos}}", + "rankIsUpdatedEveryNbMinutes": "{count, plural, =1{As posições são atualizadas a cada minuto} other{As posições são atualizadas a cada {count} minutos}}", + "nbPuzzles": "{count, plural, =1{{count} problema} other{{count} problemas}}", + "nbGamesWithYou": "{count, plural, =1{{count} jogo contigo} other{{count} jogos contigo}}", + "nbRated": "{count, plural, =1{{count} partida a valer pontos} other{{count} partidas a valer pontos}}", "nbWins": "{count, plural, =1{{count} vitória} other{{count} vitórias}}", "nbLosses": "{count, plural, =1{{count} derrota} other{{count} derrotas}}", - "nbDraws": "{count, plural, =1{{count} empates} other{{count} empates}}", - "nbPlaying": "{count, plural, =1{{count} jogando} other{{count} jogando}}", - "giveNbSeconds": "{count, plural, =1{Dar {count} segundos} other{Dar {count} segundos}}", + "nbDraws": "{count, plural, =1{{count} empate} other{{count} empates}}", + "nbPlaying": "{count, plural, =1{{count} a jogar} other{{count} a jogar}}", + "giveNbSeconds": "{count, plural, =1{Dar {count} segundo} other{Dar {count} segundos}}", "nbTournamentPoints": "{count, plural, =1{{count} ponto de torneio} other{{count} pontos de torneio}}", "nbStudies": "{count, plural, =1{{count} estudo} other{{count} estudos}}", "nbSimuls": "{count, plural, =1{{count} simultânea} other{{count} simultâneas}}", - "moreThanNbRatedGames": "{count, plural, =1{≥ {count} jogos valendo pontos} other{≥ {count} jogos valendo pontos}}", - "moreThanNbPerfRatedGames": "{count, plural, =1{≥ {count} partida {param2} valendo pontos} other{≥ {count} {param2} partidas valendo pontos}}", - "needNbMorePerfGames": "{count, plural, =1{Você precisa jogar mais {count} partida de {param2} valendo pontos} other{Você precisa jogar mais {count} partidas de {param2} valendo pontos}}", - "needNbMoreGames": "{count, plural, =1{Você precisa jogar ainda {count} partidas valendo pontos} other{Você precisa jogar ainda {count} partidas valendo pontos}}", - "nbImportedGames": "{count, plural, =1{{count} de partidas importadas} other{{count} de partidas importadas}}", + "moreThanNbRatedGames": "{count, plural, =1{≥ {count} partida a valer pontos} other{≥ {count} partidas a valer pontos}}", + "moreThanNbPerfRatedGames": "{count, plural, =1{≥ {count} partida de {param2} a valer pontos} other{≥ {count} partidas de {param2} a valer pontos}}", + "needNbMorePerfGames": "{count, plural, =1{Precisas de jogar mais {count} jogo de {param2} a valer pontos} other{Precisa de jogar mais {count} jogos de {param2} a valer pontos}}", + "needNbMoreGames": "{count, plural, =1{Tens de jogar mais {count} jogo a valer pontos} other{Tens de jogar mais {count} jogos a valer pontos}}", + "nbImportedGames": "{count, plural, =1{{count} partida importada} other{{count} partidas importadas}}", "nbFriendsOnline": "{count, plural, =1{{count} amigo online} other{{count} amigos online}}", - "nbFollowers": "{count, plural, =1{{count} seguidores} other{{count} seguidores}}", - "nbFollowing": "{count, plural, =1{{count} seguidos} other{{count} seguidos}}", - "lessThanNbMinutes": "{count, plural, =1{Menos que {count} minutos} other{Menos que {count} minutos}}", - "nbGamesInPlay": "{count, plural, =1{{count} partidas em andamento} other{{count} partidas em andamento}}", - "maximumNbCharacters": "{count, plural, =1{Máximo: {count} caractere.} other{Máximo: {count} caracteres.}}", + "nbFollowers": "{count, plural, =1{{count} seguidor} other{{count} seguidores}}", + "nbFollowing": "{count, plural, =1{a seguir {count} jogador} other{a seguir {count} jogadores}}", + "lessThanNbMinutes": "{count, plural, =1{Menos de {count} minuto} other{Menos de {count} minutos}}", + "nbGamesInPlay": "{count, plural, =1{{count} jogo a decorrer} other{{count} jogos a decorrer}}", + "maximumNbCharacters": "{count, plural, =1{Máximo: {count} carácter.} other{Máximo: {count} caracteres.}}", "blocks": "{count, plural, =1{{count} bloqueado} other{{count} bloqueados}}", "nbForumPosts": "{count, plural, =1{{count} publicação no fórum} other{{count} publicações no fórum}}", - "nbPerfTypePlayersThisWeek": "{count, plural, =1{{count} {param2} jogador nesta semana.} other{{count} {param2} jogadores nesta semana.}}", - "availableInNbLanguages": "{count, plural, =1{Disponível em {count} idiomas!} other{Disponível em {count} idiomas!}}", - "nbSecondsToPlayTheFirstMove": "{count, plural, =1{{count} segundo para fazer o primeiro lance} other{{count} segundos para fazer o primeiro lance}}", + "nbPerfTypePlayersThisWeek": "{count, plural, =1{{count} jogador ativo esta semana em {param2}.} other{{count} jogadores ativos esta semana em {param2}.}}", + "availableInNbLanguages": "{count, plural, =1{Disponível em {count} língua!} other{Disponível em {count} línguas!}}", + "nbSecondsToPlayTheFirstMove": "{count, plural, =1{{count} segundo para jogar o primeiro movimento} other{{count} segundos para jogar o primeiro movimento}}", "nbSeconds": "{count, plural, =1{{count} segundo} other{{count} segundos}}", - "andSaveNbPremoveLines": "{count, plural, =1{e salvar a linha de pré-lance de {count}} other{e salvar as linhas de pré-lance de {count}}}", - "stormMoveToStart": "Mova para começar", - "stormYouPlayTheWhitePiecesInAllPuzzles": "Você joga com as peças brancas em todos os quebra-cabeças", - "stormYouPlayTheBlackPiecesInAllPuzzles": "Você joga com as peças pretas em todos os quebra-cabeças", - "stormPuzzlesSolved": "quebra-cabeças resolvidos", + "andSaveNbPremoveLines": "{count, plural, =1{e guarda {count} variante de movimentos antecipados} other{e guarda {count} variantes de movimentos antecipados}}", + "stormMoveToStart": "Faz um lance para começar", + "stormYouPlayTheWhitePiecesInAllPuzzles": "Jogas com as peças brancas em todos os problemas", + "stormYouPlayTheBlackPiecesInAllPuzzles": "Jogas com as peças pretas em todos os problemas", + "stormPuzzlesSolved": "problemas resolvidos", "stormNewDailyHighscore": "Novo recorde diário!", "stormNewWeeklyHighscore": "Novo recorde semanal!", "stormNewMonthlyHighscore": "Novo recorde mensal!", - "stormNewAllTimeHighscore": "Novo recorde de todos os tempos!", - "stormPreviousHighscoreWasX": "Recorde anterior era {param}", + "stormNewAllTimeHighscore": "Novo recorde!", + "stormPreviousHighscoreWasX": "O recorde anterior era {param}", "stormPlayAgain": "Jogar novamente", "stormHighscoreX": "Recorde: {param}", "stormScore": "Pontuação", - "stormMoves": "Lances", + "stormMoves": "Total de lances", "stormAccuracy": "Precisão", "stormCombo": "Combo", "stormTime": "Tempo", - "stormTimePerMove": "Tempo por lance", - "stormHighestSolved": "Classificação mais alta", - "stormPuzzlesPlayed": "Quebra-cabeças jogados", - "stormNewRun": "Nova série (tecla de atalho: espaço)", - "stormEndRun": "Finalizar série (tecla de atalho: Enter)", - "stormHighscores": "Melhores pontuações", - "stormViewBestRuns": "Ver melhores séries", - "stormBestRunOfDay": "Melhor série do dia", - "stormRuns": "Séries", - "stormGetReady": "Prepare-se!", - "stormWaitingForMorePlayers": "Esperando mais jogadores entrarem...", - "stormRaceComplete": "Corrida concluída!", - "stormSpectating": "Espectando", - "stormJoinTheRace": "Entre na corrida!", + "stormTimePerMove": "Tempo por jogada", + "stormHighestSolved": "Problema mais difícil resolvido", + "stormPuzzlesPlayed": "Problemas jogados", + "stormNewRun": "Nova partida (tecla: espaço)", + "stormEndRun": "Terminar partida (tecla: Enter)", + "stormHighscores": "Recorde", + "stormViewBestRuns": "Ver as melhores partidas", + "stormBestRunOfDay": "Melhor partida do dia", + "stormRuns": "Partidas", + "stormGetReady": "Preparar!", + "stormWaitingForMorePlayers": "À espera de mais jogadores...", + "stormRaceComplete": "Race concluída!", + "stormSpectating": "A assistir", + "stormJoinTheRace": "Junta-te à corrida!", "stormStartTheRace": "Começar a corrida", - "stormYourRankX": "Sua classificação: {param}", - "stormWaitForRematch": "Esperando por revanche", + "stormYourRankX": "A tua pontuação: {param}", + "stormWaitForRematch": "Espera pela desforra", "stormNextRace": "Próxima corrida", - "stormJoinRematch": "Junte-se a revanche", - "stormWaitingToStart": "Esperando para começar", + "stormJoinRematch": "Juntar-se à desforra", + "stormWaitingToStart": "À espera de começar", "stormCreateNewGame": "Criar um novo jogo", - "stormJoinPublicRace": "Junte-se a uma corrida pública", - "stormRaceYourFriends": "Corra contra seus amigos", - "stormSkip": "pular", - "stormSkipHelp": "Você pode pular um movimento por corrida:", - "stormSkipExplanation": "Pule este lance para preservar o seu combo! Funciona apenas uma vez por corrida.", - "stormFailedPuzzles": "Quebra-cabeças falhados", - "stormSlowPuzzles": "Quebra-cabeças lentos", - "stormSkippedPuzzle": "Quebra-cabeça pulado", - "stormThisWeek": "Essa semana", - "stormThisMonth": "Esse mês", - "stormAllTime": "Desde o início", + "stormJoinPublicRace": "Junta-te a uma corrida pública", + "stormRaceYourFriends": "Corre contra os teus amigos", + "stormSkip": "ignorar", + "stormSkipHelp": "Pode pular um movimento por corrida:", + "stormSkipExplanation": "Passa à frente esta jogada para preservares o teu combo! Só podes fazê-lo apenas uma vez por Race.", + "stormFailedPuzzles": "Desafios falhados", + "stormSlowPuzzles": "Desafios lentos", + "stormSkippedPuzzle": "Desafios saltados", + "stormThisWeek": "Esta semana", + "stormThisMonth": "Este mês", + "stormAllTime": "Desde sempre", "stormClickToReload": "Clique para recarregar", - "stormThisRunHasExpired": "Esta corrida acabou!", - "stormThisRunWasOpenedInAnotherTab": "Esta corrida foi aberta em outra aba!", - "stormXRuns": "{count, plural, =1{1 tentativa} other{{count} séries}}", - "stormPlayedNbRunsOfPuzzleStorm": "{count, plural, =1{Jogou uma tentativa de {param2}} other{Jogou {count} tentativas de {param2}}}", - "streamerLichessStreamers": "Streamers do Lichess", - "studyShareAndExport": "Compartilhar & exportar", + "stormThisRunHasExpired": "Esta sessão expirou!", + "stormThisRunWasOpenedInAnotherTab": "Esta sessão foi aberta noutra aba!", + "stormXRuns": "{count, plural, =1{1 partida} other{{count} tentativas}}", + "stormPlayedNbRunsOfPuzzleStorm": "{count, plural, =1{Jogou uma partida de {param2}} other{Jogou {count} partidas de {param2}}}", + "streamerLichessStreamers": "Streamers no Lichess", + "studyShareAndExport": "Partilhar & exportar", "studyStart": "Iniciar" } \ No newline at end of file diff --git a/lib/l10n/lila_pt_BR.arb b/lib/l10n/lila_pt_BR.arb new file mode 100644 index 0000000000..85cfe6863c --- /dev/null +++ b/lib/l10n/lila_pt_BR.arb @@ -0,0 +1,1318 @@ +{ + "mobileHomeTab": "Início", + "mobilePuzzlesTab": "Problemas", + "mobileToolsTab": "Ferramentas", + "mobileWatchTab": "Assistir", + "mobileSettingsTab": "Ajustes", + "mobileMustBeLoggedIn": "Você precisa estar logado para ver essa pagina.", + "mobileSystemColors": "Cores do sistema", + "mobileFeedbackButton": "Comentários", + "mobileOkButton": "Ok", + "mobileSettingsHapticFeedback": "Vibrar ao trocar", + "mobileSettingsImmersiveMode": "Modo imerssivo", + "mobileSettingsImmersiveModeSubtitle": "Ocultar a “interface” do sistema durante a reprodução. Use isto se você estiver incomodado com gestor de navegação do sistema nas bordas da tela. Aplica-se as telas dos jogos e desafios.", + "mobileNotFollowingAnyUser": "Você não estar seguindo nenhum usuário.", + "mobileAllGames": "Todos os jogos", + "mobileRecentSearches": "Pesquisas recentes", + "mobileClearButton": "Limpar", + "mobilePlayersMatchingSearchTerm": "Usuários com \"{param}\"", + "mobileNoSearchResults": "Sem Resultados", + "mobileAreYouSure": "Você tem certeza?", + "mobilePuzzleStreakAbortWarning": "Você perderá a sua sequência atual e sua pontuação será salva.", + "mobilePuzzleStormNothingToShow": "Nada para mostrar aqui. Jogue algumas rodadas da Puzzle Storm.", + "mobileSharePuzzle": "Tentar novamente este quebra-cabeça", + "mobileShareGameURL": "Compartilhar URL do jogo", + "mobileShareGamePGN": "Compartilhar PGN", + "mobileSharePositionAsFEN": "Compartilhar posição como FEN", + "mobileShowVariations": "Mostrar setas da variantes", + "mobileHideVariation": "Ocultar variante forçada", + "mobileShowComments": "Mostrar comentários", + "mobilePuzzleStormConfirmEndRun": "Você quer terminar o turno?", + "mobilePuzzleStormFilterNothingToShow": "Nada para mostrar aqui, por favor, altere os filtros", + "mobileCancelTakebackOffer": "Cancelar oferta de revanche", + "mobileCancelDrawOffer": "Cancelar oferta de revanche", + "mobileWaitingForOpponentToJoin": "Esperando por um oponente...", + "mobileBlindfoldMode": "Venda", + "mobileLiveStreamers": "Streamers do Lichess", + "mobileCustomGameJoinAGame": "Entrar em um jogo", + "mobileCorrespondenceClearSavedMove": "Limpar movimento salvos", + "mobileSomethingWentWrong": "Houve algum problema.", + "mobileShowResult": "Mostrar resultado", + "mobilePuzzleThemesSubtitle": "Jogue quebra-cabeças de suas aberturas favoritas, ou escolha um tema.", + "mobilePuzzleStormSubtitle": "Resolva quantos quebra-cabeças for possível em 3 minutos.", + "mobileGreeting": "Olá, {param}", + "mobileGreetingWithoutName": "Olá", + "activityActivity": "Atividade", + "activityHostedALiveStream": "Iniciou uma transmissão ao vivo", + "activityRankedInSwissTournament": "Classificado #{param1} entre {param2}", + "activitySignedUp": "Registrou-se no lichess", + "activitySupportedNbMonths": "{count, plural, =1{Contribuiu para o lichess.org por {count} mês como {param2}} other{Contribuiu para o lichess.org por {count} meses como {param2}}}", + "activityPracticedNbPositions": "{count, plural, =1{Praticou {count} posição em {param2}} other{Praticou {count} posições em {param2}}}", + "activitySolvedNbPuzzles": "{count, plural, =1{Resolveu {count} quebra-cabeça tático} other{Resolveu {count} quebra-cabeças táticos}}", + "activityPlayedNbGames": "{count, plural, =1{Jogou {count} partida de {param2}} other{Jogou {count} partidas de {param2}}}", + "activityPostedNbMessages": "{count, plural, =1{Publicou {count} mensagem em {param2}} other{Publicou {count} mensagens em {param2}}}", + "activityPlayedNbMoves": "{count, plural, =1{Jogou {count} movimento} other{Jogou {count} movimentos}}", + "activityInNbCorrespondenceGames": "{count, plural, =1{em {count} jogo por correspondência} other{em {count} jogos por correspondência}}", + "activityCompletedNbGames": "{count, plural, =1{Completou {count} jogo por correspondência} other{Completou {count} jogos por correspondência}}", + "activityFollowedNbPlayers": "{count, plural, =1{Começou a seguir {count} jogador} other{Começou a seguir {count} jogadores}}", + "activityGainedNbFollowers": "{count, plural, =1{Ganhou {count} novo seguidor} other{Ganhou {count} novos seguidores}}", + "activityHostedNbSimuls": "{count, plural, =1{Hospedou {count} exibição simultânea} other{Hospedou {count} exibições simultâneas}}", + "activityJoinedNbSimuls": "{count, plural, =1{Participou em {count} exibição simultânea} other{Participou em {count} exibições simultâneas}}", + "activityCreatedNbStudies": "{count, plural, =1{Criou {count} novo estudo} other{Criou {count} novos estudos}}", + "activityCompetedInNbTournaments": "{count, plural, =1{Competiu em {count} torneio arena} other{Competiu em {count} torneios arena}}", + "activityRankedInTournament": "{count, plural, =1{Classificado #{count} (top {param2}%) com {param3} jogo em {param4}} other{Classificado #{count} (top {param2}%) com {param3} jogos em {param4}}}", + "activityCompetedInNbSwissTournaments": "{count, plural, =1{Competiu em {count} torneio suíço} other{Competiu em {count} torneios suíços}}", + "activityJoinedNbTeams": "{count, plural, =1{Entrou na {count} equipe} other{Entrou nas {count} equipes}}", + "broadcastBroadcasts": "Transmissões", + "broadcastLiveBroadcasts": "Transmissões ao vivo do torneio", + "challengeChallengesX": "Desafios: {param1}", + "challengeChallengeToPlay": "Desafiar para jogar", + "challengeChallengeDeclined": "Desafio recusado", + "challengeChallengeAccepted": "Desafio aceito!", + "challengeChallengeCanceled": "Desafio cancelado.", + "challengeRegisterToSendChallenges": "Por favor, registre-se para enviar desafios.", + "challengeYouCannotChallengeX": "Você não pode desafiar {param}.", + "challengeXDoesNotAcceptChallenges": "{param} não aceita desafios.", + "challengeYourXRatingIsTooFarFromY": "O seu rating {param1} é muito diferente de {param2}.", + "challengeCannotChallengeDueToProvisionalXRating": "Não pode desafiar devido ao rating provisório de {param}.", + "challengeXOnlyAcceptsChallengesFromFriends": "{param} só aceita desafios de amigos.", + "challengeDeclineGeneric": "Não estou aceitando desafios no momento.", + "challengeDeclineLater": "Este não é o momento certo para mim, por favor pergunte novamente mais tarde.", + "challengeDeclineTooFast": "Este controle de tempo é muito rápido para mim, por favor, desafie novamente com um jogo mais lento.", + "challengeDeclineTooSlow": "Este controle de tempo é muito lento para mim, por favor, desafie novamente com um jogo mais rápido.", + "challengeDeclineTimeControl": "Não estou aceitando desafios com estes controles de tempo.", + "challengeDeclineRated": "Por favor, envie-me um desafio ranqueado.", + "challengeDeclineCasual": "Por favor, envie-me um desafio amigável.", + "challengeDeclineStandard": "Não estou aceitando desafios de variantes no momento.", + "challengeDeclineVariant": "Não estou a fim de jogar esta variante no momento.", + "challengeDeclineNoBot": "Não estou aceitando desafios de robôs.", + "challengeDeclineOnlyBot": "Estou aceitando apenas desafios de robôs.", + "challengeInviteLichessUser": "Ou convide um usuário Lichess:", + "contactContact": "Contato", + "contactContactLichess": "Entrar em contato com Lichess", + "patronDonate": "Doação", + "patronLichessPatron": "Apoie o Lichess", + "perfStatPerfStats": "Estatísticas de {param}", + "perfStatViewTheGames": "Ver os jogos", + "perfStatProvisional": "provisório", + "perfStatNotEnoughRatedGames": "Não foram jogadas partidas suficientes valendo rating para estabelecer uma classificação confiável.", + "perfStatProgressOverLastXGames": "Progresso nos últimos {param} jogos:", + "perfStatRatingDeviation": "Desvio de pontuação: {param}.", + "perfStatRatingDeviationTooltip": "Um valor inferior indica que a pontuação é mais estável. Superior a {param1}, a pontuação é classificada como provisória. Para ser incluída nas classificações, esse valor deve ser inferior a {param2} (xadrez padrão) ou {param3} (variantes).", + "perfStatTotalGames": "Total de partidas", + "perfStatRatedGames": "Partidas valendo pontos", + "perfStatTournamentGames": "Jogos de torneio", + "perfStatBerserkedGames": "Partidas Berserked", + "perfStatTimeSpentPlaying": "Tempo jogando", + "perfStatAverageOpponent": "Pontuação média do adversário", + "perfStatVictories": "Vitórias", + "perfStatDefeats": "Derrotas", + "perfStatDisconnections": "Desconexões", + "perfStatNotEnoughGames": "Jogos insuficientes jogados", + "perfStatHighestRating": "Pontuação mais alta: {param}", + "perfStatLowestRating": "Rating mais baixo: {param}", + "perfStatFromXToY": "de {param1} para {param2}", + "perfStatWinningStreak": "Série de Vitórias", + "perfStatLosingStreak": "Série de derrotas", + "perfStatLongestStreak": "Sequência mais longa: {param}", + "perfStatCurrentStreak": "Sequência atual: {param}", + "perfStatBestRated": "Melhores vitórias valendo pontuação", + "perfStatGamesInARow": "Partidas jogadas seguidas", + "perfStatLessThanOneHour": "Menos de uma hora entre partidas", + "perfStatMaxTimePlaying": "Tempo máximo jogando", + "perfStatNow": "agora", + "preferencesPreferences": "Preferências", + "preferencesDisplay": "Exibição", + "preferencesPrivacy": "Privacidade", + "preferencesNotifications": "Notificações", + "preferencesPieceAnimation": "Animação das peças", + "preferencesMaterialDifference": "Diferença material", + "preferencesBoardHighlights": "Destacar casas do tabuleiro (último movimento e xeque)", + "preferencesPieceDestinations": "Destino das peças (movimentos válidos e pré-movimentos)", + "preferencesBoardCoordinates": "Coordenadas do tabuleiro (A-H, 1-8)", + "preferencesMoveListWhilePlaying": "Lista de movimentos durante a partida", + "preferencesPgnPieceNotation": "Modo de notação das jogadas", + "preferencesChessPieceSymbol": "Símbolo da peça", + "preferencesPgnLetter": "Letra (K, Q, R, B, N)", + "preferencesZenMode": "Modo Zen", + "preferencesShowPlayerRatings": "Mostrar rating dos jogadores", + "preferencesShowFlairs": "Mostrar emotes de usuário", + "preferencesExplainShowPlayerRatings": "Permite ocultar todas os ratings do site, para ajudar a se concentrar no jogo. As partidas continuam valendo rating.", + "preferencesDisplayBoardResizeHandle": "Mostrar cursor de redimensionamento do tabuleiro", + "preferencesOnlyOnInitialPosition": "Apenas na posição inicial", + "preferencesInGameOnly": "Durante partidas", + "preferencesChessClock": "Relógio", + "preferencesTenthsOfSeconds": "Décimos de segundo", + "preferencesWhenTimeRemainingLessThanTenSeconds": "Quando o tempo restante < 10 segundos", + "preferencesHorizontalGreenProgressBars": "Barras de progresso verdes horizontais", + "preferencesSoundWhenTimeGetsCritical": "Som ao atingir tempo crítico", + "preferencesGiveMoreTime": "Dar mais tempo", + "preferencesGameBehavior": "Comportamento do jogo", + "preferencesHowDoYouMovePieces": "Como você move as peças?", + "preferencesClickTwoSquares": "Clicar em duas casas", + "preferencesDragPiece": "Arrastar a peça", + "preferencesBothClicksAndDrag": "Ambas", + "preferencesPremovesPlayingDuringOpponentTurn": "Pré-movimentos (jogadas durante o turno do oponente)", + "preferencesTakebacksWithOpponentApproval": "Voltar jogada (com aprovação do oponente)", + "preferencesInCasualGamesOnly": "Somente em jogos casuais", + "preferencesPromoteToQueenAutomatically": "Promover a Dama automaticamente", + "preferencesExplainPromoteToQueenAutomatically": "Mantenha a tecla pressionada enquanto promove para desativar temporariamente a autopromoção", + "preferencesWhenPremoving": "Quando pré-mover", + "preferencesClaimDrawOnThreefoldRepetitionAutomatically": "Reivindicar empate sobre a repetição tripla automaticamente", + "preferencesWhenTimeRemainingLessThanThirtySeconds": "Quando o tempo restante < 30 segundos", + "preferencesMoveConfirmation": "Confirmação de movimento", + "preferencesExplainCanThenBeTemporarilyDisabled": "Pode ser desativado durante a partida no menu do tabuleiro", + "preferencesInCorrespondenceGames": "Jogos por correspondência", + "preferencesCorrespondenceAndUnlimited": "Por correspondência e sem limites", + "preferencesConfirmResignationAndDrawOffers": "Confirmar abandono e oferta de empate", + "preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook": "Maneira de rocar", + "preferencesCastleByMovingTwoSquares": "Mover o rei duas casas", + "preferencesCastleByMovingOntoTheRook": "Mover o rei em direção à torre", + "preferencesInputMovesWithTheKeyboard": "Fazer lances com escrita do teclado", + "preferencesInputMovesWithVoice": "Mova as peças com sua voz", + "preferencesSnapArrowsToValidMoves": "Insira setas para movimentos válidos", + "preferencesSayGgWpAfterLosingOrDrawing": "Diga \"Bom jogo, bem jogado\" após a derrota ou empate", + "preferencesYourPreferencesHaveBeenSaved": "Suas preferências foram salvas.", + "preferencesScrollOnTheBoardToReplayMoves": "Use o scroll do mouse no tabuleiro para ir passando as jogadas", + "preferencesCorrespondenceEmailNotification": "Email diário listando seus jogos por correspondência", + "preferencesNotifyStreamStart": "Streamer começou uma transmissão ao vivo", + "preferencesNotifyInboxMsg": "Nova mensagem na caixa de entrada", + "preferencesNotifyForumMention": "Você foi mencionado em um comentário do fórum", + "preferencesNotifyInvitedStudy": "Convite para um estudo", + "preferencesNotifyGameEvent": "Jogo por correspondência atualizado", + "preferencesNotifyChallenge": "Desafios", + "preferencesNotifyTournamentSoon": "O torneio vai começar em breve", + "preferencesNotifyTimeAlarm": "Está acabando o tempo no jogo por correspondência", + "preferencesNotifyBell": "Notificação no Lichess", + "preferencesNotifyPush": "Notificação no dispositivo fora do Lichess", + "preferencesNotifyWeb": "Navegador", + "preferencesNotifyDevice": "Dispositivo", + "preferencesBellNotificationSound": "Som da notificação", + "puzzlePuzzles": "Quebra-cabeças", + "puzzlePuzzleThemes": "Temas de quebra-cabeça", + "puzzleRecommended": "Recomendado", + "puzzlePhases": "Fases", + "puzzleMotifs": "Motivos táticos", + "puzzleAdvanced": "Avançado", + "puzzleLengths": "Distância", + "puzzleMates": "Xeque-mates", + "puzzleGoals": "Objetivos", + "puzzleOrigin": "Origem", + "puzzleSpecialMoves": "Movimentos especiais", + "puzzleDidYouLikeThisPuzzle": "Você gostou deste quebra-cabeças?", + "puzzleVoteToLoadNextOne": "Vote para carregar o próximo!", + "puzzleUpVote": "Votar a favor do quebra-cabeça", + "puzzleDownVote": "Votar contra o quebra-cabeça", + "puzzleYourPuzzleRatingWillNotChange": "Sua pontuação de quebra-cabeças não mudará. Note que os quebra-cabeças não são uma competição. A pontuação indica os quebra-cabeças que se adequam às suas habilidades.", + "puzzleFindTheBestMoveForWhite": "Encontre o melhor lance para as brancas.", + "puzzleFindTheBestMoveForBlack": "Encontre a melhor jogada para as pretas.", + "puzzleToGetPersonalizedPuzzles": "Para obter desafios personalizados:", + "puzzlePuzzleId": "Quebra-cabeça {param}", + "puzzlePuzzleOfTheDay": "Quebra-cabeça do dia", + "puzzleDailyPuzzle": "Quebra-cabeça diário", + "puzzleClickToSolve": "Clique para resolver", + "puzzleGoodMove": "Boa jogada", + "puzzleBestMove": "Melhor jogada!", + "puzzleKeepGoing": "Continue…", + "puzzlePuzzleSuccess": "Sucesso!", + "puzzlePuzzleComplete": "Quebra-cabeças concluído!", + "puzzleByOpenings": "Por abertura", + "puzzlePuzzlesByOpenings": "Quebra-cabeças por abertura", + "puzzleOpeningsYouPlayedTheMost": "Aberturas que você mais jogou em partidas valendo pontos", + "puzzleUseFindInPage": "Use a ferramenta \"Encontrar na página\" do navegador para encontrar sua abertura favorita!", + "puzzleUseCtrlF": "Aperte Ctrl + F para encontrar sua abertura favorita!", + "puzzleNotTheMove": "O movimento não é este!", + "puzzleTrySomethingElse": "Tente algo diferente.", + "puzzleRatingX": "Rating: {param}", + "puzzleHidden": "oculto", + "puzzleFromGameLink": "Do jogo {param}", + "puzzleContinueTraining": "Continue treinando", + "puzzleDifficultyLevel": "Nível de dificuldade", + "puzzleNormal": "Normal", + "puzzleEasier": "Fácil", + "puzzleEasiest": "Muito fácil", + "puzzleHarder": "Difícil", + "puzzleHardest": "Muito difícil", + "puzzleExample": "Exemplo", + "puzzleAddAnotherTheme": "Adicionar um outro tema", + "puzzleNextPuzzle": "Próximo quebra-cabeça", + "puzzleJumpToNextPuzzleImmediately": "Ir para o próximo problema automaticamente", + "puzzlePuzzleDashboard": "Painel do quebra-cabeças", + "puzzleImprovementAreas": "Áreas de aprimoramento", + "puzzleStrengths": "Pontos fortes", + "puzzleHistory": "Histórico de quebra-cabeças", + "puzzleSolved": "resolvido", + "puzzleFailed": "falhou", + "puzzleStreakDescription": "Resolva quebra-cabeças progressivamente mais difíceis e construa uma sequência de vitórias. Não há relógio, então tome seu tempo. Um movimento errado e o jogo acaba! Porém, você pode pular um movimento por sessão.", + "puzzleYourStreakX": "Sua sequência: {param}", + "puzzleStreakSkipExplanation": "Pule este lance para preservar a sua sequência! Funciona apenas uma vez por corrida.", + "puzzleContinueTheStreak": "Continuar a sequência", + "puzzleNewStreak": "Nova sequência", + "puzzleFromMyGames": "Dos meus jogos", + "puzzleLookupOfPlayer": "Pesquise quebra-cabeças de um jogador específico", + "puzzleFromXGames": "Problemas de {param}' jogos", + "puzzleSearchPuzzles": "Procurar quebra-cabeças", + "puzzleFromMyGamesNone": "Você não tem nenhum quebra-cabeça no banco de dados, mas o Lichess ainda te ama muito.\nJogue partidas rápidas e clássicas para aumentar suas chances de ter um desafio seu adicionado!", + "puzzleFromXGamesFound": "{param1} quebra-cabeças encontrados em {param2} partidas", + "puzzlePuzzleDashboardDescription": "Treine, analise, melhore", + "puzzlePercentSolved": "{param} resolvido", + "puzzleNoPuzzlesToShow": "Não há nada para mostrar aqui, jogue alguns quebra-cabeças primeiro!", + "puzzleImprovementAreasDescription": "Treine estes para otimizar o seu progresso!", + "puzzleStrengthDescription": "Sua perfomance é melhor nesses temas", + "puzzlePlayedXTimes": "{count, plural, =1{Jogado {count} vezes} other{Jogado {count} vezes}}", + "puzzleNbPointsBelowYourPuzzleRating": "{count, plural, =1{Um ponto abaixo da sua classificação de quebra-cabeças} other{{count} pontos abaixo da sua classificação de quebra-cabeças}}", + "puzzleNbPointsAboveYourPuzzleRating": "{count, plural, =1{Um ponto acima da sua classificação de quebra-cabeças} other{{count} pontos acima da sua classificação de quebra-cabeças}}", + "puzzleNbPlayed": "{count, plural, =1{{count} jogado} other{{count} jogados}}", + "puzzleNbToReplay": "{count, plural, =1{{count} a ser repetido} other{{count} a serem repetidos}}", + "puzzleThemeAdvancedPawn": "Peão avançado", + "puzzleThemeAdvancedPawnDescription": "Um peão prestes a ser promovido ou à beira da promoção é um tema tático.", + "puzzleThemeAdvantage": "Vantagem", + "puzzleThemeAdvantageDescription": "Aproveite a sua chance de ter uma vantagem decisiva. (200cp ≤ eval ≤ 600cp)", + "puzzleThemeAnastasiaMate": "Mate Anastasia", + "puzzleThemeAnastasiaMateDescription": "Um cavalo e uma torre se unem para prender o rei do oponente entre a lateral do tabuleiro e uma peça amiga.", + "puzzleThemeArabianMate": "Mate árabe", + "puzzleThemeArabianMateDescription": "Um cavalo e uma torre se unem para prender o rei inimigo em um canto do tabuleiro.", + "puzzleThemeAttackingF2F7": "Atacando f2 ou f7", + "puzzleThemeAttackingF2F7Description": "Um ataque focado no peão de f2 e no peão de f7, como na abertura frango frito.", + "puzzleThemeAttraction": "Atração", + "puzzleThemeAttractionDescription": "Uma troca ou sacrifício encorajando ou forçando uma peça do oponente a uma casa que permite uma sequência tática.", + "puzzleThemeBackRankMate": "Mate do corredor", + "puzzleThemeBackRankMateDescription": "Dê o xeque-mate no rei na última fileira, quando ele estiver bloqueado pelas próprias peças.", + "puzzleThemeBishopEndgame": "Finais de bispo", + "puzzleThemeBishopEndgameDescription": "Final com somente bispos e peões.", + "puzzleThemeBodenMate": "Mate de Boden", + "puzzleThemeBodenMateDescription": "Dois bispos atacantes em diagonais cruzadas dão um mate em um rei obstruído por peças amigas.", + "puzzleThemeCastling": "Roque", + "puzzleThemeCastlingDescription": "Traga o seu rei para a segurança, e prepare sua torre para o ataque.", + "puzzleThemeCapturingDefender": "Capture o defensor", + "puzzleThemeCapturingDefenderDescription": "Remover uma peça que seja importante na defesa de outra, permitindo que agora a peça indefesa seja capturada na jogada seguinte.", + "puzzleThemeCrushing": "Punindo", + "puzzleThemeCrushingDescription": "Perceba a capivarada do oponente para obter uma vantagem decisiva. (vantagem ≥ 600cp)", + "puzzleThemeDoubleBishopMate": "Mate de dois bispos", + "puzzleThemeDoubleBishopMateDescription": "Dois bispos atacantes em diagonais adjacentes dão um mate em um rei obstruído por peças amigas.", + "puzzleThemeDovetailMate": "Mate da cauda de andorinha", + "puzzleThemeDovetailMateDescription": "Uma dama dá um mate em um rei adjacente, cujos únicos dois quadrados de fuga estão obstruídos por peças amigas.", + "puzzleThemeEquality": "Igualdade", + "puzzleThemeEqualityDescription": "Saia de uma posição perdida, e assegure um empate ou uma posição equilibrada. (aval ≤ 200cp)", + "puzzleThemeKingsideAttack": "Ataque na ala do Rei", + "puzzleThemeKingsideAttackDescription": "Um ataque ao rei do oponente, após ele ter efetuado o roque curto.", + "puzzleThemeClearance": "Lance útil", + "puzzleThemeClearanceDescription": "Um lance, às vezes consumindo tempos, que libera uma casa, fileira ou diagonal para uma ideia tática em seguida.", + "puzzleThemeDefensiveMove": "Movimento defensivo", + "puzzleThemeDefensiveMoveDescription": "Um movimento preciso ou sequência de movimentos que são necessários para evitar perda de material ou outra vantagem.", + "puzzleThemeDeflection": "Desvio", + "puzzleThemeDeflectionDescription": "Um movimento que desvia a peça do oponente da sua função, por exemplo a de defesa de outra peça ou a defesa de uma casa importante.", + "puzzleThemeDiscoveredAttack": "Ataque descoberto", + "puzzleThemeDiscoveredAttackDescription": "Mover uma peça que anteriormente bloqueava um ataque de uma peça de longo alcance, como por exemplo um cavalo liberando a coluna de uma torre.", + "puzzleThemeDoubleCheck": "Xeque duplo", + "puzzleThemeDoubleCheckDescription": "Dar Xeque com duas peças ao mesmo tempo, como resultado de um ataque descoberto onde tanto a peça que se move quanto a peça que estava sendo obstruída atacam o rei do oponente.", + "puzzleThemeEndgame": "Finais", + "puzzleThemeEndgameDescription": "Tática durante a última fase do jogo.", + "puzzleThemeEnPassantDescription": "Uma tática envolvendo a regra do en passant, onde um peão pode capturar um peão do oponente que passou por ele usando seu movimento inicial de duas casas.", + "puzzleThemeExposedKing": "Rei exposto", + "puzzleThemeExposedKingDescription": "Uma tática que envolve um rei com poucos defensores ao seu redor, muitas vezes levando a xeque-mate.", + "puzzleThemeFork": "Garfo (ou duplo)", + "puzzleThemeForkDescription": "Um movimento onde a peça movida ataca duas peças de oponente de uma só vez.", + "puzzleThemeHangingPiece": "Peça pendurada", + "puzzleThemeHangingPieceDescription": "Uma táctica que envolve uma peça indefesa do oponente ou insuficientemente defendida e livre para ser capturada.", + "puzzleThemeHookMate": "Xeque gancho", + "puzzleThemeHookMateDescription": "Xeque-mate com uma torre, um cavalo e um peão, juntamente com um peão inimigo, para limitar a fuga do rei.", + "puzzleThemeInterference": "Interferência", + "puzzleThemeInterferenceDescription": "Mover uma peça entre duas peças do oponente para deixar uma ou duas peças do oponente indefesas, como um cavalo em uma casa defendida por duas torres.", + "puzzleThemeIntermezzo": "Lance intermediário", + "puzzleThemeIntermezzoDescription": "Em vez de jogar o movimento esperado, primeiro realiza outro movimento criando uma ameaça imediata a que o oponente deve responder. Também conhecido como \"Zwischenzug\" ou \"In between\".", + "puzzleThemeKnightEndgame": "Finais de Cavalo", + "puzzleThemeKnightEndgameDescription": "Um final jogado apenas com cavalos e peões.", + "puzzleThemeLong": "Quebra-cabeças longo", + "puzzleThemeLongDescription": "Vitória em três movimentos.", + "puzzleThemeMaster": "Partidas de mestres", + "puzzleThemeMasterDescription": "Quebra-cabeças de partidas jogadas por jogadores titulados.", + "puzzleThemeMasterVsMaster": "Partidas de Mestre vs Mestre", + "puzzleThemeMasterVsMasterDescription": "Quebra-cabeças de partidas entre dois jogadores titulados.", + "puzzleThemeMate": "Xeque-mate", + "puzzleThemeMateDescription": "Vença o jogo com estilo.", + "puzzleThemeMateIn1": "Mate em 1", + "puzzleThemeMateIn1Description": "Dar xeque-mate em um movimento.", + "puzzleThemeMateIn2": "Mate em 2", + "puzzleThemeMateIn2Description": "Dar xeque-mate em dois movimentos.", + "puzzleThemeMateIn3": "Mate em 3", + "puzzleThemeMateIn3Description": "Dar xeque-mate em três movimentos.", + "puzzleThemeMateIn4": "Mate em 4", + "puzzleThemeMateIn4Description": "Dar xeque-mate em 4 movimentos.", + "puzzleThemeMateIn5": "Mate em 5 ou mais", + "puzzleThemeMateIn5Description": "Descubra uma longa sequência de mate.", + "puzzleThemeMiddlegame": "Meio-jogo", + "puzzleThemeMiddlegameDescription": "Tática durante a segunda fase do jogo.", + "puzzleThemeOneMove": "Quebra-cabeças de um movimento", + "puzzleThemeOneMoveDescription": "Quebra-cabeças de um movimento.", + "puzzleThemeOpening": "Abertura", + "puzzleThemeOpeningDescription": "Tática durante a primeira fase do jogo.", + "puzzleThemePawnEndgame": "Finais de peões", + "puzzleThemePawnEndgameDescription": "Um final apenas com peões.", + "puzzleThemePin": "Cravada", + "puzzleThemePinDescription": "Uma tática envolvendo cravada, onde uma peça é incapaz de mover-se sem abrir um descoberto em uma peça de maior valor.", + "puzzleThemePromotion": "Promoção", + "puzzleThemePromotionDescription": "Promova um peão para uma dama ou a uma peça menor.", + "puzzleThemeQueenEndgame": "Finais de Dama", + "puzzleThemeQueenEndgameDescription": "Um final com apenas damas e peões.", + "puzzleThemeQueenRookEndgame": "Finais de Dama e Torre", + "puzzleThemeQueenRookEndgameDescription": "Finais com apenas Dama, Torre e Peões.", + "puzzleThemeQueensideAttack": "Ataque na ala da dama", + "puzzleThemeQueensideAttackDescription": "Um ataque ao rei adversário, após ter efetuado o roque na ala da Dama.", + "puzzleThemeQuietMove": "Lance de preparação", + "puzzleThemeQuietMoveDescription": "Um lance que não dá xeque nem realiza uma captura, mas prepara uma ameaça inevitável para a jogada seguinte.", + "puzzleThemeRookEndgame": "Finais de Torres", + "puzzleThemeRookEndgameDescription": "Um final com apenas torres e peões.", + "puzzleThemeSacrifice": "Sacrifício", + "puzzleThemeSacrificeDescription": "Uma tática envolvendo a entrega de material no curto prazo, com o objetivo de se obter uma vantagem após uma sequência forçada de movimentos.", + "puzzleThemeShort": "Quebra-cabeças curto", + "puzzleThemeShortDescription": "Vitória em dois lances.", + "puzzleThemeSkewer": "Raio X", + "puzzleThemeSkewerDescription": "Um movimento que envolve uma peça de alto valor sendo atacada fugindo do ataque e permitindo que uma peça de menor valor seja capturada ou atacada, o inverso de cravada.", + "puzzleThemeSmotheredMate": "Mate de Philidor (mate sufocado)", + "puzzleThemeSmotheredMateDescription": "Um xeque-mate dado por um cavalo onde o rei é incapaz de mover-se porque está cercado (ou sufocado) pelas próprias peças.", + "puzzleThemeSuperGM": "Super partidas de GMs", + "puzzleThemeSuperGMDescription": "Quebra-cabeças de partidas jogadas pelos melhores jogadores do mundo.", + "puzzleThemeTrappedPiece": "Peça presa", + "puzzleThemeTrappedPieceDescription": "Uma peça é incapaz de escapar da captura, pois tem movimentos limitados.", + "puzzleThemeUnderPromotion": "Subpromoção", + "puzzleThemeUnderPromotionDescription": "Promover para cavalo, bispo ou torre.", + "puzzleThemeVeryLong": "Quebra-cabeças muito longo", + "puzzleThemeVeryLongDescription": "Quatro movimentos ou mais para vencer.", + "puzzleThemeXRayAttack": "Ataque em raio X", + "puzzleThemeXRayAttackDescription": "Uma peça ataca ou defende uma casa indiretamente, através de uma peça adversária.", + "puzzleThemeZugzwang": "Zugzwang", + "puzzleThemeZugzwangDescription": "O adversário tem os seus movimentos limitados, e qualquer movimento que ele faça vai enfraquecer sua própria posição.", + "puzzleThemeHealthyMix": "Combinação saudável", + "puzzleThemeHealthyMixDescription": "Um pouco de tudo. Você nunca sabe o que vai encontrar, então esteja pronto para tudo! Igualzinho aos jogos em tabuleiros reais.", + "puzzleThemePlayerGames": "Partidas de jogadores", + "puzzleThemePlayerGamesDescription": "Procure quebra-cabeças gerados a partir de suas partidas ou das de outro jogador.", + "puzzleThemePuzzleDownloadInformation": "Esses quebra-cabeças estão em domínio público, e você pode baixá-los em {param}.", + "searchSearch": "Buscar", + "settingsSettings": "Configurações", + "settingsCloseAccount": "Encerrar conta", + "settingsManagedAccountCannotBeClosed": "Sua conta é gerenciada, e não pode ser encerrada.", + "settingsClosingIsDefinitive": "O encerramento é definitivo. Não há como desfazer. Tem certeza?", + "settingsCantOpenSimilarAccount": "Você não poderá abrir uma nova conta com o mesmo nome, mesmo que alterne entre maiúsculas e minúsculas.", + "settingsChangedMindDoNotCloseAccount": "Eu mudei de ideia, não encerre minha conta", + "settingsCloseAccountExplanation": "Tem certeza de que deseja encerrar sua conta? Encerrar sua conta é uma decisão permanente. Você NUNCA MAIS será capaz de entrar com ela novamente.", + "settingsThisAccountIsClosed": "Esta conta foi encerrada.", + "playWithAFriend": "Jogar contra um amigo", + "playWithTheMachine": "Jogar contra o computador", + "toInviteSomeoneToPlayGiveThisUrl": "Para convidar alguém para jogar, envie este URL", + "gameOver": "Fim da partida", + "waitingForOpponent": "Aguardando oponente", + "orLetYourOpponentScanQrCode": "Ou deixe seu oponente ler este QR Code", + "waiting": "Aguardando", + "yourTurn": "Sua vez", + "aiNameLevelAiLevel": "{param1} nível {param2}", + "level": "Nível", + "strength": "Nível", + "toggleTheChat": "Ativar/Desativar chat", + "chat": "Chat", + "resign": "Desistir", + "checkmate": "Xeque-mate", + "stalemate": "Rei afogado", + "white": "Brancas", + "black": "Pretas", + "asWhite": "de brancas", + "asBlack": "de pretas", + "randomColor": "Cor aleatória", + "createAGame": "Criar uma partida", + "whiteIsVictorious": "Brancas vencem", + "blackIsVictorious": "Pretas vencem", + "youPlayTheWhitePieces": "Você joga com as peças brancas", + "youPlayTheBlackPieces": "Você joga com as peças pretas", + "itsYourTurn": "É a sua vez!", + "cheatDetected": "Trapaça Detectada", + "kingInTheCenter": "Rei no centro", + "threeChecks": "Três xeques", + "raceFinished": "Corrida terminada", + "variantEnding": "Fim da variante", + "newOpponent": "Novo oponente", + "yourOpponentWantsToPlayANewGameWithYou": "Seu oponente quer jogar uma nova partida contra você", + "joinTheGame": "Entrar no jogo", + "whitePlays": "Brancas jogam", + "blackPlays": "Pretas jogam", + "opponentLeftChoices": "O seu oponente deixou a partida. Você pode reivindicar vitória, declarar empate ou aguardar.", + "forceResignation": "Reivindicar vitória", + "forceDraw": "Reivindicar empate", + "talkInChat": "Por favor, seja gentil no chat!", + "theFirstPersonToComeOnThisUrlWillPlayWithYou": "A primeira pessoa que acessar esta URL jogará contigo.", + "whiteResigned": "Brancas desistiram", + "blackResigned": "Pretas desistiram", + "whiteLeftTheGame": "Brancas deixaram a partida", + "blackLeftTheGame": "Pretas deixaram a partida", + "whiteDidntMove": "As brancas não se moveram", + "blackDidntMove": "As pretas não se moveram", + "requestAComputerAnalysis": "Solicitar uma análise do computador", + "computerAnalysis": "Análise do computador", + "computerAnalysisAvailable": "Análise de computador disponível", + "computerAnalysisDisabled": "Análise de computador desativada", + "analysis": "Análise", + "depthX": "Profundidade {param}", + "usingServerAnalysis": "Análise de servidor em uso", + "loadingEngine": "Carregando ...", + "calculatingMoves": "Calculando jogadas...", + "engineFailed": "Erro ao carregar o engine", + "cloudAnalysis": "Análise na nuvem", + "goDeeper": "Detalhar", + "showThreat": "Mostrar ameaça", + "inLocalBrowser": "no navegador local", + "toggleLocalEvaluation": "Ativar/Desativar análise local", + "promoteVariation": "Promover variante", + "makeMainLine": "Transformar em linha principal", + "deleteFromHere": "Excluir a partir daqui", + "collapseVariations": "Esconder variantes", + "expandVariations": "Mostrar variantes", + "forceVariation": "Variante forçada", + "copyVariationPgn": "Copiar PGN da variante", + "move": "Movimentos", + "variantLoss": "Derrota da variante", + "variantWin": "Vitória da variante", + "insufficientMaterial": "Material insuficiente", + "pawnMove": "Movimento de peão", + "capture": "Captura", + "close": "Fechar", + "winning": "Vencendo", + "losing": "Perdendo", + "drawn": "Empate", + "unknown": "Posição desconhecida", + "database": "Banco de Dados", + "whiteDrawBlack": "Brancas / Empate / Pretas", + "averageRatingX": "Classificação média: {param}", + "recentGames": "Partidas recentes", + "topGames": "Melhores partidas", + "masterDbExplanation": "Duas milhões de partidas de jogadores com pontuação FIDE acima de {param1}, desde {param2} a {param3}", + "dtzWithRounding": "DTZ50\" com arredondamento, baseado no número de meias-jogadas até a próxima captura ou jogada de peão", + "noGameFound": "Nenhuma partida encontrada", + "maxDepthReached": "Profundidade máxima alcançada!", + "maybeIncludeMoreGamesFromThePreferencesMenu": "Talvez você queira incluir mais jogos a partir do menu de preferências", + "openings": "Aberturas", + "openingExplorer": "Explorador de aberturas", + "openingEndgameExplorer": "Explorador de Aberturas/Finais", + "xOpeningExplorer": "{param} Explorador de aberturas", + "playFirstOpeningEndgameExplorerMove": "Jogue o primeiro lance do explorador de aberturas/finais", + "winPreventedBy50MoveRule": "Vitória impedida pela regra dos 50 movimentos", + "lossSavedBy50MoveRule": "Derrota impedida pela regra dos 50 movimentos", + "winOr50MovesByPriorMistake": "Vitória ou 50 movimentos por erro anterior", + "lossOr50MovesByPriorMistake": "Derrota ou 50 movimentos por erro anterior", + "unknownDueToRounding": "Vitória/derrota garantida somente se a variante recomendada tiver sido seguida desde o último movimento de captura ou de peão, devido ao possível arredondamento.", + "allSet": "Tudo pronto!", + "importPgn": "Importar PGN", + "delete": "Excluir", + "deleteThisImportedGame": "Excluir este jogo importado?", + "replayMode": "Rever a partida", + "realtimeReplay": "Tempo Real", + "byCPL": "Por erros", + "openStudy": "Abrir estudo", + "enable": "Ativar", + "bestMoveArrow": "Seta de melhor movimento", + "showVariationArrows": "Mostrar setas das variantes", + "evaluationGauge": "Escala de avaliação", + "multipleLines": "Linhas de análise", + "cpus": "CPUs", + "memory": "Memória", + "infiniteAnalysis": "Análise infinita", + "removesTheDepthLimit": "Remove o limite de profundidade, o que aquece seu computador", + "engineManager": "Gerenciador de engine", + "blunder": "Capivarada", + "mistake": "Erro", + "inaccuracy": "Imprecisão", + "moveTimes": "Tempo por movimento", + "flipBoard": "Girar o tabuleiro", + "threefoldRepetition": "Tripla repetição", + "claimADraw": "Reivindicar empate", + "offerDraw": "Propor empate", + "draw": "Empate", + "drawByMutualAgreement": "Empate por acordo mútuo", + "fiftyMovesWithoutProgress": "Cinquenta jogadas sem progresso", + "currentGames": "Partidas atuais", + "viewInFullSize": "Ver em tela cheia", + "logOut": "Sair", + "signIn": "Entrar", + "rememberMe": "Lembrar de mim", + "youNeedAnAccountToDoThat": "Você precisa de uma conta para fazer isso", + "signUp": "Registrar", + "computersAreNotAllowedToPlay": "A ajuda de software não é permitida. Por favor, não utilize programas de xadrez, bancos de dados ou o auxilio de outros jogadores durante a partida. Além disso, a criação de múltiplas contas é fortemente desaconselhada e sua prática excessiva acarretará em banimento.", + "games": "Partidas", + "forum": "Fórum", + "xPostedInForumY": "{param1} publicou no tópico {param2}", + "latestForumPosts": "Últimas publicações no fórum", + "players": "Jogadores", + "friends": "Amigos", + "otherPlayers": "outros jogadores", + "discussions": "Discussões", + "today": "Hoje", + "yesterday": "Ontem", + "minutesPerSide": "Minutos por jogador", + "variant": "Variante", + "variants": "Variantes", + "timeControl": "Ritmo", + "realTime": "Tempo real", + "correspondence": "Correspondência", + "daysPerTurn": "Dias por lance", + "oneDay": "Um dia", + "time": "Tempo", + "rating": "Rating", + "ratingStats": "Estatísticas de classificação", + "username": "Nome de usuário", + "usernameOrEmail": "Nome ou email do usuário", + "changeUsername": "Alterar nome de usuário", + "changeUsernameNotSame": "Pode-se apenas trocar as letras de minúscula para maiúscula e vice-versa. Por exemplo, \"fulanodetal\" para \"FulanoDeTal\".", + "changeUsernameDescription": "Altere seu nome de usuário. Isso só pode ser feito uma vez e você poderá apenas trocar as letras de minúscula para maiúscula e vice-versa.", + "signupUsernameHint": "Escolha um nome de usuário apropriado. Não será possível mudá-lo, e qualquer conta que tiver um nome ofensivo ou inapropriado será excluída!", + "signupEmailHint": "Vamos usar apenas para redefinir a sua senha.", + "password": "Senha", + "changePassword": "Alterar senha", + "changeEmail": "Alterar email", + "email": "E-mail", + "passwordReset": "Redefinição de senha", + "forgotPassword": "Esqueceu sua senha?", + "error_weakPassword": "A senha é extremamente comum e fácil de adivinhar.", + "error_namePassword": "Não utilize seu nome de usuário como senha.", + "blankedPassword": "Você usou a mesma senha em outro site, e esse site foi comprometido. Para garantir a segurança da sua conta no Lichess, você precisa criar uma nova senha. Agradecemos sua compreensão.", + "youAreLeavingLichess": "Você está saindo do Lichess", + "neverTypeYourPassword": "Nunca digite sua senha do Lichess em outro site!", + "proceedToX": "Ir para {param}", + "passwordSuggestion": "Não coloque uma senha sugerida por outra pessoa, porque ela poderá roubar sua conta.", + "emailSuggestion": "Não coloque um endereço de email sugerido por outra pessoa, porque ela poderá roubar sua conta.", + "emailConfirmHelp": "Ajuda com confirmação por e-mail", + "emailConfirmNotReceived": "Não recebeu seu e-mail de confirmação após o registro?", + "whatSignupUsername": "Qual nome de usuário você usou para se registrar?", + "usernameNotFound": "Não foi possível encontrar nenhum usuário com este nome: {param}.", + "usernameCanBeUsedForNewAccount": "Você pode usar esse nome de usuário para criar uma nova conta", + "emailSent": "Enviamos um e-mail para {param}.", + "emailCanTakeSomeTime": "Pode levar algum tempo para chegar.", + "refreshInboxAfterFiveMinutes": "Aguarde 5 minutos e atualize sua caixa de entrada.", + "checkSpamFolder": "Verifique também a sua caixa de spam. Caso esteja lá, marque como não é spam.", + "emailForSignupHelp": "Se todo o resto falhar, envie-nos este e-mail:", + "copyTextToEmail": "Copie e cole o texto acima e envie-o para {param}", + "waitForSignupHelp": "Entraremos em contato em breve para ajudá-lo a completar seu registro.", + "accountConfirmed": "O usuário {param} foi confirmado com sucesso.", + "accountCanLogin": "Você pode acessar agora como {param}.", + "accountConfirmationEmailNotNeeded": "Você não precisa de um e-mail de confirmação.", + "accountClosed": "A conta {param} está encerrada.", + "accountRegisteredWithoutEmail": "A conta {param} foi registrada sem um e-mail.", + "rank": "Rank", + "rankX": "Classificação: {param}", + "gamesPlayed": "Partidas realizadas", + "cancel": "Cancelar", + "whiteTimeOut": "Tempo das brancas esgotado", + "blackTimeOut": "Tempo das pretas esgotado", + "drawOfferSent": "Proposta de empate enviada", + "drawOfferAccepted": "Proposta de empate aceita", + "drawOfferCanceled": "Proposta de empate cancelada", + "whiteOffersDraw": "Brancas oferecem empate", + "blackOffersDraw": "Pretas oferecem empate", + "whiteDeclinesDraw": "Brancas recusam empate", + "blackDeclinesDraw": "Pretas recusam empate", + "yourOpponentOffersADraw": "Seu adversário oferece empate", + "accept": "Aceitar", + "decline": "Recusar", + "playingRightNow": "Jogando agora", + "eventInProgress": "Jogando agora", + "finished": "Terminado", + "abortGame": "Cancelar partida", + "gameAborted": "Partida cancelada", + "standard": "Padrão", + "customPosition": "Posição personalizada", + "unlimited": "Ilimitado", + "mode": "Modo", + "casual": "Amistosa", + "rated": "Ranqueada", + "casualTournament": "Amistoso", + "ratedTournament": "Valendo pontos", + "thisGameIsRated": "Esta partida vale pontos", + "rematch": "Revanche", + "rematchOfferSent": "Oferta de revanche enviada", + "rematchOfferAccepted": "Oferta de revanche aceita", + "rematchOfferCanceled": "Oferta de revanche cancelada", + "rematchOfferDeclined": "Oferta de revanche recusada", + "cancelRematchOffer": "Cancelar oferta de revanche", + "viewRematch": "Ver revanche", + "confirmMove": "Confirmar lance", + "play": "Jogar", + "inbox": "Mensagens", + "chatRoom": "Sala de chat", + "loginToChat": "Faça login para conversar", + "youHaveBeenTimedOut": "Sua sessão expirou.", + "spectatorRoom": "Sala do espectador", + "composeMessage": "Escrever mensagem", + "subject": "Assunto", + "send": "Enviar", + "incrementInSeconds": "Acréscimo em segundos", + "freeOnlineChess": "Xadrez Online Gratuito", + "exportGames": "Exportar partidas", + "ratingRange": "Rating entre", + "thisAccountViolatedTos": "Esta conta violou os Termos de Serviço do Lichess", + "openingExplorerAndTablebase": "Explorador de abertura & tabela de finais", + "takeback": "Voltar jogada", + "proposeATakeback": "Propor voltar jogada", + "takebackPropositionSent": "Proposta de voltar jogada enviada", + "takebackPropositionDeclined": "Proposta de voltar jogada recusada", + "takebackPropositionAccepted": "Proposta de voltar jogada aceita", + "takebackPropositionCanceled": "Proposta de voltar jogada cancelada", + "yourOpponentProposesATakeback": "Seu oponente propõe voltar jogada", + "bookmarkThisGame": "Adicionar esta partida às favoritas", + "tournament": "Torneio", + "tournaments": "Torneios", + "tournamentPoints": "Pontos de torneios", + "viewTournament": "Ver torneio", + "backToTournament": "Voltar ao torneio", + "noDrawBeforeSwissLimit": "Não é possível empatar antes de 30 lances em um torneio suíço.", + "thematic": "Temático", + "yourPerfRatingIsProvisional": "Seu rating {param} é provisório", + "yourPerfRatingIsTooHigh": "Seu {param1} rating ({param2}) é muito alta", + "yourTopWeeklyPerfRatingIsTooHigh": "Seu melhor rating {param1} da semana ({param2}) é muito alto", + "yourPerfRatingIsTooLow": "Sua {param1} pontuação ({param2}) é muito baixa", + "ratedMoreThanInPerf": "Pontuação ≥ {param1} em {param2}", + "ratedLessThanInPerf": "Pontuação ≤ {param1} em {param2}", + "mustBeInTeam": "Precisa estar na equipe {param}", + "youAreNotInTeam": "Você não está na equipe {param}", + "backToGame": "Retorne à partida", + "siteDescription": "Xadrez online gratuito. Jogue xadrez agora numa interface simples. Sem registro, sem anúncios, sem plugins. Jogue xadrez contra computador, amigos ou adversários aleatórios.", + "xJoinedTeamY": "{param1} juntou-se à equipe {param2}", + "xCreatedTeamY": "{param1} criou a equipe {param2}", + "startedStreaming": "começou uma transmissão ao vivo", + "xStartedStreaming": "{param} começou a transmitir", + "averageElo": "Média de rating", + "location": "Localização", + "filterGames": "Filtrar partidas", + "reset": "Reiniciar", + "apply": "Aplicar", + "save": "Salvar", + "leaderboard": "Classificação", + "screenshotCurrentPosition": "Captura de tela da posição atual", + "gameAsGIF": "Salvar a partida como GIF", + "pasteTheFenStringHere": "Cole a notação FEN aqui", + "pasteThePgnStringHere": "Cole a notação PGN aqui", + "orUploadPgnFile": "Ou carregue um arquivo PGN", + "fromPosition": "A partir da posição", + "continueFromHere": "Continuar daqui", + "toStudy": "Estudo", + "importGame": "Importar partida", + "importGameExplanation": "Após colar uma partida em PGN você poderá revisá-la interativamente, consultar uma análise de computador, utilizar o chat e compartilhar um link.", + "importGameCaveat": "As variantes serão apagadas. Para salvá-las, importe o PGN em um estudo.", + "importGameDataPrivacyWarning": "Este PGN pode ser acessado publicamente. Use um estudo para importar um jogo privado.", + "thisIsAChessCaptcha": "Este é um CAPTCHA enxadrístico.", + "clickOnTheBoardToMakeYourMove": "Clique no tabuleiro para fazer seu lance, provando que é humano.", + "captcha_fail": "Por favor, resolva o captcha enxadrístico.", + "notACheckmate": "Não é xeque-mate", + "whiteCheckmatesInOneMove": "As brancas dão mate em um lance", + "blackCheckmatesInOneMove": "As pretas dão mate em um lance", + "retry": "Tentar novamente", + "reconnecting": "Reconectando", + "noNetwork": "Sem conexão", + "favoriteOpponents": "Adversários favoritos", + "follow": "Seguir", + "following": "Seguindo", + "unfollow": "Parar de seguir", + "followX": "Seguir {param}", + "unfollowX": "Deixar de seguir {param}", + "block": "Bloquear", + "blocked": "Bloqueado", + "unblock": "Desbloquear", + "followsYou": "Segue você", + "xStartedFollowingY": "{param1} começou a seguir {param2}", + "more": "Mais", + "memberSince": "Membro desde", + "lastSeenActive": "Ativo {param}", + "player": "Jogador", + "list": "Lista", + "graph": "Gráfico", + "required": "Obrigatório.", + "openTournaments": "Torneios abertos", + "duration": "Duração", + "winner": "Vencedor", + "standing": "Colocação", + "createANewTournament": "Criar novo torneio", + "tournamentCalendar": "Calendário do torneio", + "conditionOfEntry": "Condições de participação:", + "advancedSettings": "Configurações avançadas", + "safeTournamentName": "Escolha um nome seguro para o torneio.", + "inappropriateNameWarning": "Até mesmo a menor indecência poderia ensejar o encerramento de sua conta.", + "emptyTournamentName": "Deixe em branco para dar ao torneio o nome de um grande mestre aleatório.", + "makePrivateTournament": "Faça o torneio privado e restrinja o acesso com uma senha", + "join": "Entrar", + "withdraw": "Sair", + "points": "Pontos", + "wins": "Vitórias", + "losses": "Derrotas", + "createdBy": "Criado por", + "tournamentIsStarting": "O torneio está começando", + "tournamentPairingsAreNowClosed": "Os pareamentos do torneio estão fechados agora.", + "standByX": "{param}, aguarde: o pareamento está em andamento, prepare-se!", + "pause": "Pausar", + "resume": "Continuar", + "youArePlaying": "Você está participando!", + "winRate": "Taxa de vitórias", + "berserkRate": "Taxa Berserk", + "performance": "Desempenho", + "tournamentComplete": "Torneio completo", + "movesPlayed": "Movimentos realizados", + "whiteWins": "Brancas venceram", + "blackWins": "Pretas venceram", + "drawRate": "Taxa de empates", + "draws": "Empates", + "nextXTournament": "Próximo torneio {param}:", + "averageOpponent": "Pontuação média adversários", + "boardEditor": "Editor de tabuleiro", + "setTheBoard": "Defina a posição", + "popularOpenings": "Aberturas populares", + "endgamePositions": "Posições de final", + "chess960StartPosition": "Posição inicial do Xadrez960: {param}", + "startPosition": "Posição inicial", + "clearBoard": "Limpar tabuleiro", + "loadPosition": "Carregar posição", + "isPrivate": "Privado", + "reportXToModerators": "Reportar {param} aos moderadores", + "profileCompletion": "Conclusão do perfil: {param}", + "xRating": "Rating {param}", + "ifNoneLeaveEmpty": "Se nenhuma, deixe vazio", + "profile": "Perfil", + "editProfile": "Editar perfil", + "realName": "Nome real", + "setFlair": "Escolha seu emote", + "flair": "Estilo", + "youCanHideFlair": "Você pode esconder todos os emotes de usuário no site.", + "biography": "Biografia", + "countryRegion": "País ou região", + "thankYou": "Obrigado!", + "socialMediaLinks": "Links de mídia social", + "oneUrlPerLine": "Uma URL por linha.", + "inlineNotation": "Notação em linha", + "makeAStudy": "Para salvar e compartilhar uma análise, crie um estudo.", + "clearSavedMoves": "Limpar lances", + "previouslyOnLichessTV": "Anteriormente em Lichess TV", + "onlinePlayers": "Jogadores online", + "activePlayers": "Jogadores ativos", + "bewareTheGameIsRatedButHasNoClock": "Cuidado, o jogo vale rating, mas não há controle de tempo!", + "success": "Sucesso", + "automaticallyProceedToNextGameAfterMoving": "Passar automaticamente ao jogo seguinte após o lance", + "autoSwitch": "Alternar automaticamente", + "puzzles": "Quebra-cabeças", + "onlineBots": "Bots online", + "name": "Nome", + "description": "Descrição", + "descPrivate": "Descrição privada", + "descPrivateHelp": "Texto que apenas os membros da equipe verão. Se definido, substitui a descrição pública para os membros da equipe.", + "no": "Não", + "yes": "Sim", + "website": "Site", + "mobile": "Celular", + "help": "Ajuda:", + "createANewTopic": "Criar novo tópico", + "topics": "Tópicos", + "posts": "Publicações", + "lastPost": "Última postagem", + "views": "Visualizações", + "replies": "Respostas", + "replyToThisTopic": "Responder a este tópico", + "reply": "Responder", + "message": "Mensagem", + "createTheTopic": "Criar tópico", + "reportAUser": "Reportar um usuário", + "user": "Usuário", + "reason": "Motivo", + "whatIsIheMatter": "Qual é o motivo?", + "cheat": "Trapaça", + "troll": "Troll", + "other": "Outro", + "reportDescriptionHelp": "Cole o link do(s) jogo(s) e explique o que há de errado com o comportamento do usuário. Não diga apenas \"ele trapaceia\", informe-nos como chegou a esta conclusão. Sua denúncia será processada mais rapidamente se escrita em inglês.", + "error_provideOneCheatedGameLink": "Por favor forneça ao menos um link para um jogo com suspeita de trapaça.", + "by": "por {param}", + "importedByX": "Importado por {param}", + "thisTopicIsNowClosed": "O tópico foi fechado.", + "blog": "Blog", + "notes": "Notas", + "typePrivateNotesHere": "Digite notas pessoais aqui", + "writeAPrivateNoteAboutThisUser": "Escreva uma nota pessoal sobre este usuário", + "noNoteYet": "Nenhuma nota", + "invalidUsernameOrPassword": "Nome de usuário ou senha incorretos", + "incorrectPassword": "Senha incorreta", + "invalidAuthenticationCode": "Código de verificação inválido", + "emailMeALink": "Me envie um link", + "currentPassword": "Senha atual", + "newPassword": "Nova senha", + "newPasswordAgain": "Nova senha (novamente)", + "newPasswordsDontMatch": "As novas senhas não correspondem", + "newPasswordStrength": "Senha forte", + "clockInitialTime": "Tempo de relógio", + "clockIncrement": "Incremento do relógio", + "privacy": "Privacidade", + "privacyPolicy": "Política de privacidade", + "letOtherPlayersFollowYou": "Permitir que outros jogadores sigam você", + "letOtherPlayersChallengeYou": "Permitir que outros jogadores desafiem você", + "letOtherPlayersInviteYouToStudy": "Deixe outros jogadores convidá-lo para um estudo", + "sound": "Som", + "none": "Nenhum", + "fast": "Rápido", + "normal": "Normal", + "slow": "Lento", + "insideTheBoard": "Dentro do tabuleiro", + "outsideTheBoard": "Fora do tabuleiro", + "allSquaresOfTheBoard": "Todas as casas do tabuleiro", + "onSlowGames": "Em partidas lentas", + "always": "Sempre", + "never": "Nunca", + "xCompetesInY": "{param1} compete em {param2}", + "victory": "Vitória", + "defeat": "Derrota", + "victoryVsYInZ": "{param1} vs {param2} em {param3}", + "defeatVsYInZ": "{param1} vs {param2} em {param3}", + "drawVsYInZ": "{param1} vs {param2} em {param3}", + "timeline": "Linha do tempo", + "starting": "Iniciando:", + "allInformationIsPublicAndOptional": "Todas as informações são públicas e opcionais.", + "biographyDescription": "Fale sobre você, seus interesses, o que você gosta no xadrez, suas aberturas favoritas, jogadores...", + "listBlockedPlayers": "Sua lista de jogadores bloqueados", + "human": "Humano", + "computer": "Computador", + "side": "Cor", + "clock": "Relógio", + "opponent": "Adversário", + "learnMenu": "Aprender", + "studyMenu": "Estudar", + "practice": "Praticar", + "community": "Comunidade", + "tools": "Ferramentas", + "increment": "Incremento", + "error_unknown": "Valor inválido", + "error_required": "Este campo deve ser preenchido", + "error_email": "Este endereço de e-mail é inválido", + "error_email_acceptable": "Este endereço de e-mail não é válido. Verifique e tente novamente.", + "error_email_unique": "Endereço de e-mail é inválido ou já está sendo utilizado", + "error_email_different": "Este já é o seu endereço de e-mail", + "error_minLength": "O mínimo de caracteres é {param}", + "error_maxLength": "O máximo de caracteres é {param}", + "error_min": "Deve ser maior ou igual a {param}", + "error_max": "Deve ser menor ou igual a {param}", + "ifRatingIsPlusMinusX": "Se o rating for ± {param}", + "ifRegistered": "Se registrado", + "onlyExistingConversations": "Apenas conversas iniciadas", + "onlyFriends": "Apenas amigos", + "menu": "Menu", + "castling": "Roque", + "whiteCastlingKingside": "O-O das brancas", + "blackCastlingKingside": "O-O das pretas", + "tpTimeSpentPlaying": "Tempo jogando: {param}", + "watchGames": "Assistir partidas", + "tpTimeSpentOnTV": "Tempo na TV: {param}", + "watch": "Assistir", + "videoLibrary": "Vídeos", + "streamersMenu": "Streamers", + "mobileApp": "Aplicativo Móvel", + "webmasters": "Webmasters", + "about": "Sobre", + "aboutX": "Sobre o {param}", + "xIsAFreeYLibreOpenSourceChessServer": "{param1} é um servidor de xadrez gratuito ({param2}), livre, sem anúncios e código aberto.", + "really": "realmente", + "contribute": "Contribuir", + "termsOfService": "Termos de serviço", + "sourceCode": "Código-fonte", + "simultaneousExhibitions": "Exibição simultânea", + "host": "Simultanista", + "hostColorX": "Cor do simultanista: {param}", + "yourPendingSimuls": "Suas simultâneas pendentes", + "createdSimuls": "Simultâneas criadas recentemente", + "hostANewSimul": "Iniciar nova simultânea", + "signUpToHostOrJoinASimul": "Entre em uma ou crie uma conta para hospedar", + "noSimulFound": "Simultânea não encontrada", + "noSimulExplanation": "Esta exibição simultânea não existe.", + "returnToSimulHomepage": "Retornar à página inicial da simultânea", + "aboutSimul": "A simultânea envolve um único jogador contra vários oponentes ao mesmo tempo.", + "aboutSimulImage": "Contra 50 oponentes, Fischer ganhou 47 jogos, empatou 2 e perdeu 1.", + "aboutSimulRealLife": "O conceito provém de eventos reais, nos quais o simultanista se move de mesa em mesa, executando um movimento por vez.", + "aboutSimulRules": "Quando a simultânea começa, cada jogador começa sua partida contra o simultanista, o qual sempre tem as brancas. A simultânea termina quando todas as partidas são finalizadas.", + "aboutSimulSettings": "As simultâneas sempre são partidas amigáveis. Revanches, voltar jogadas e tempo adicional estão desativados.", + "create": "Criar", + "whenCreateSimul": "Quando cria uma simultânea, você joga com vários adversários ao mesmo tempo.", + "simulVariantsHint": "Se você selecionar diversas variantes, cada jogador poderá escolher qual delas jogar.", + "simulClockHint": "Configuração de acréscimos no relógio. Quanto mais jogadores admitir, mais tempo pode necessitar.", + "simulAddExtraTime": "Você pode acrescentar tempo adicional a seu relógio, para ajudá-lo a lidar com a simultânea.", + "simulHostExtraTime": "Tempo adicional do simultanista", + "simulAddExtraTimePerPlayer": "Adicionar tempo inicial ao seu relógio por cada jogador adversário que entrar na simultânea.", + "simulHostExtraTimePerPlayer": "Tempo adicional do simultanista por jogador", + "lichessTournaments": "Torneios do Lichess", + "tournamentFAQ": "Perguntas Frequentes sobre torneios no estilo Arena", + "timeBeforeTournamentStarts": "Contagem regressiva para início do torneio", + "averageCentipawnLoss": "Perda média em centipeões", + "accuracy": "Precisão", + "keyboardShortcuts": "Atalhos de teclado", + "keyMoveBackwardOrForward": "retroceder/avançar lance", + "keyGoToStartOrEnd": "ir para início/fim", + "keyCycleSelectedVariation": "Alternar entre as variantes", + "keyShowOrHideComments": "mostrar/ocultar comentários", + "keyEnterOrExitVariation": "entrar/sair da variante", + "keyRequestComputerAnalysis": "Solicite análise do computador, aprenda com seus erros", + "keyNextLearnFromYourMistakes": "Próximo (Aprenda com seus erros)", + "keyNextBlunder": "Próximo erro grave", + "keyNextMistake": "Próximo erro", + "keyNextInaccuracy": "Próxima imprecisão", + "keyPreviousBranch": "Branch anterior", + "keyNextBranch": "Próximo branch", + "toggleVariationArrows": "Ativar/desativar setas", + "cyclePreviousOrNextVariation": "Variante seguinte/anterior", + "toggleGlyphAnnotations": "Ativar/desativar anotações", + "togglePositionAnnotations": "Ativar/desativar anotações de posição", + "variationArrowsInfo": "Setas de variação permitem navegar sem usar a lista de movimentos.", + "playSelectedMove": "jogar movimento selecionado", + "newTournament": "Novo torneio", + "tournamentHomeTitle": "Torneios de xadrez com diversos controles de tempo e variantes", + "tournamentHomeDescription": "Jogue xadrez em ritmo acelerado! Entre em um torneio oficial agendado ou crie seu próprio. Bullet, Blitz, Clássico, Chess960, King of the Hill, Três Xeques e outras modalidades disponíveis para uma ilimitada diversão enxadrística.", + "tournamentNotFound": "Torneio não encontrado", + "tournamentDoesNotExist": "Este torneio não existe.", + "tournamentMayHaveBeenCanceled": "O evento pode ter sido cancelado, se todos os jogadores saíram antes de seu início.", + "returnToTournamentsHomepage": "Volte à página inicial de torneios", + "weeklyPerfTypeRatingDistribution": "Distribuição mensal de rating em {param}", + "yourPerfTypeRatingIsRating": "Seu rating em {param1} é {param2}.", + "youAreBetterThanPercentOfPerfTypePlayers": "Você é melhor que {param1} dos jogadores de {param2}.", + "userIsBetterThanPercentOfPerfTypePlayers": "{param1} é melhor que {param2} dos {param3} jogadores.", + "betterThanPercentPlayers": "Melhor que {param1} dos jogadores de {param2}", + "youDoNotHaveAnEstablishedPerfTypeRating": "Você não tem rating definido em {param}.", + "yourRating": "Seu rating", + "cumulative": "Cumulativo", + "glicko2Rating": "Rating Glicko-2", + "checkYourEmail": "Verifique seu e-mail", + "weHaveSentYouAnEmailClickTheLink": "Enviamos um e-mail. Clique no link do e-mail para ativar sua conta.", + "ifYouDoNotSeeTheEmailCheckOtherPlaces": "Se você não vir o e-mail, verifique outros locais onde possa estar, como lixeira, spam ou outras pastas.", + "weHaveSentYouAnEmailTo": "Enviamos um e-mail para {param}. Clique no link do e-mail para redefinir sua senha.", + "byRegisteringYouAgreeToBeBoundByOur": "Ao registrar, você concorda em se comprometer com nossa {param}.", + "readAboutOur": "Leia sobre a nossa {param}.", + "networkLagBetweenYouAndLichess": "Atraso na rede", + "timeToProcessAMoveOnLichessServer": "Tempo para processar um movimento no servidor do Lichess", + "downloadAnnotated": "Baixar anotação", + "downloadRaw": "Baixar texto", + "downloadImported": "Baixar partida importada", + "crosstable": "Tabela", + "youCanAlsoScrollOverTheBoardToMoveInTheGame": "Você também pode rolar sobre o tabuleiro para percorrer as jogadas.", + "scrollOverComputerVariationsToPreviewThem": "Passe o mouse pelas variações do computador para visualizá-las.", + "analysisShapesHowTo": "Pressione Shift+Clique ou clique com o botão direito do mouse para desenhar círculos e setas no tabuleiro.", + "letOtherPlayersMessageYou": "Permitir que outros jogadores lhe enviem mensagem", + "receiveForumNotifications": "Receba notificações quando você for mencionado no fórum", + "shareYourInsightsData": "Compartilhe seus dados da análise", + "withNobody": "Com ninguém", + "withFriends": "Com amigos", + "withEverybody": "Com todos", + "kidMode": "Modo infantil", + "kidModeIsEnabled": "O modo infantil está ativado.", + "kidModeExplanation": "Isto diz respeito à segurança. No modo infantil, todas as comunicações do site são desabilitadas. Habilite isso para seus filhos e alunos, para protegê-los de outros usuários da Internet.", + "inKidModeTheLichessLogoGetsIconX": "No modo infantil, a logo do lichess tem um ícone {param}, para que você saiba que suas crianças estão seguras.", + "askYourChessTeacherAboutLiftingKidMode": "Sua conta é gerenciada. Para desativar o modo infantil, peça ao seu professor.", + "enableKidMode": "Habilitar o modo infantil", + "disableKidMode": "Desabilitar o modo infantil", + "security": "Segurança", + "sessions": "Sessões", + "revokeAllSessions": "revogar todas as sessões", + "playChessEverywhere": "Jogue xadrez em qualquer lugar", + "asFreeAsLichess": "Tão gratuito quanto o Lichess", + "builtForTheLoveOfChessNotMoney": "Desenvolvido pelo amor ao xadrez, não pelo dinheiro", + "everybodyGetsAllFeaturesForFree": "Todos têm todos os recursos de graça", + "zeroAdvertisement": "Zero anúncios", + "fullFeatured": "Cheio de recursos", + "phoneAndTablet": "Celular e tablet", + "bulletBlitzClassical": "Bullet, blitz, clássico", + "correspondenceChess": "Xadrez por correspondência", + "onlineAndOfflinePlay": "Jogue online e offline", + "viewTheSolution": "Ver solução", + "followAndChallengeFriends": "Siga e desafie amigos", + "gameAnalysis": "Análise da partida", + "xHostsY": "{param1} criou {param2}", + "xJoinsY": "{param1} entrou em {param2}", + "xLikesY": "{param1} gostou de {param2}", + "quickPairing": "Pareamento rápido", + "lobby": "Salão", + "anonymous": "Anônimo", + "yourScore": "Sua pontuação:{param}", + "language": "Idioma", + "background": "Cor tema", + "light": "Claro", + "dark": "Escuro", + "transparent": "Transparente", + "deviceTheme": "Tema do dispositivo", + "backgroundImageUrl": "URL da imagem de fundo:", + "board": "Tabuleiro", + "size": "Tamanho", + "opacity": "Opacidade", + "brightness": "Brilho", + "hue": "Tom", + "boardReset": "Restaurar as cores padrão", + "pieceSet": "Estilo das peças", + "embedInYourWebsite": "Incorporar no seu site", + "usernameAlreadyUsed": "Este nome de usuário já está registado, por favor, escolha outro.", + "usernamePrefixInvalid": "O nome de usuário deve começar com uma letra.", + "usernameSuffixInvalid": "O nome de usuário deve terminar com uma letra ou um número.", + "usernameCharsInvalid": "Nomes de usuário só podem conter letras, números, sublinhados e hifens.", + "usernameUnacceptable": "Este nome de usuário não é aceitável.", + "playChessInStyle": "Jogue xadrez com estilo", + "chessBasics": "Básicos do xadrez", + "coaches": "Treinadores", + "invalidPgn": "PGN inválido", + "invalidFen": "FEN inválido", + "custom": "Personalizado", + "notifications": "Notificações", + "notificationsX": "Notificações: {param1}", + "perfRatingX": "Rating: {param}", + "practiceWithComputer": "Pratique com o computador", + "anotherWasX": "Um outro lance seria {param}", + "bestWasX": "Melhor seria {param}", + "youBrowsedAway": "Você navegou para longe", + "resumePractice": "Retornar à prática", + "drawByFiftyMoves": "O jogo empatou pela regra dos cinquenta movimentos.", + "theGameIsADraw": "A partida terminou em empate.", + "computerThinking": "Computador pensando ...", + "seeBestMove": "Veja o melhor lance", + "hideBestMove": "Esconder o melhor lance", + "getAHint": "Obter uma dica", + "evaluatingYourMove": "Avaliando o seu movimento ...", + "whiteWinsGame": "Brancas vencem", + "blackWinsGame": "Pretas vencem", + "learnFromYourMistakes": "Aprenda com seus erros", + "learnFromThisMistake": "Aprenda com este erro", + "skipThisMove": "Pular esse lance", + "next": "Próximo", + "xWasPlayed": "{param} foi jogado", + "findBetterMoveForWhite": "Encontrar o melhor lance para as Brancas", + "findBetterMoveForBlack": "Encontre o melhor lance para as Pretas", + "resumeLearning": "Continuar a aprendizagem", + "youCanDoBetter": "Você pode fazer melhor", + "tryAnotherMoveForWhite": "Tente um outro lance para as Brancas", + "tryAnotherMoveForBlack": "Tente um outro lance para as Pretas", + "solution": "Solução", + "waitingForAnalysis": "Aguardando análise", + "noMistakesFoundForWhite": "Nenhum erro encontrado para as Brancas", + "noMistakesFoundForBlack": "Nenhum erro encontrado para as Pretas", + "doneReviewingWhiteMistakes": "Erros das brancas já revistos", + "doneReviewingBlackMistakes": "Erros das pretas já revistos", + "doItAgain": "Faça novamente", + "reviewWhiteMistakes": "Rever erros das Brancas", + "reviewBlackMistakes": "Rever erros das Pretas", + "advantage": "Vantagem", + "opening": "Abertura", + "middlegame": "Meio-jogo", + "endgame": "Finais", + "conditionalPremoves": "Pré-lances condicionais", + "addCurrentVariation": "Adicionar a variação atual", + "playVariationToCreateConditionalPremoves": "Jogar uma variação para criar pré-lances condicionais", + "noConditionalPremoves": "Sem pré-lances condicionais", + "playX": "Jogar {param}", + "showUnreadLichessMessage": "Você recebeu uma mensagem privada do Lichess.", + "clickHereToReadIt": "Clique aqui para ler", + "sorry": "Desculpa :(", + "weHadToTimeYouOutForAWhile": "Tivemos de bloqueá-lo por um tempo.", + "why": "Por quê?", + "pleasantChessExperience": "Buscamos oferecer uma experiência agradável de xadrez para todos.", + "goodPractice": "Para isso, precisamos assegurar que nossos jogadores sigam boas práticas.", + "potentialProblem": "Quando um problema em potencial é detectado, nós mostramos esta mensagem.", + "howToAvoidThis": "Como evitar isso?", + "playEveryGame": "Jogue todos os jogos que inicia.", + "tryToWin": "Tente vencer (ou pelo menos empatar) todos os jogos que jogar.", + "resignLostGames": "Conceda partidas perdidas (não deixe o relógio ir até ao fim).", + "temporaryInconvenience": "Pedimos desculpa pelo incômodo temporário,", + "wishYouGreatGames": "e desejamos-lhe grandes jogos em lichess.org.", + "thankYouForReading": "Obrigado pela leitura!", + "lifetimeScore": "Pontuação de todo o período", + "currentMatchScore": "Pontuação da partida atual", + "agreementAssistance": "Eu concordo que em momento algum receberei assistência durante os meus jogos (seja de um computador, livro, banco de dados ou outra pessoa).", + "agreementNice": "Eu concordo que serei sempre cortês com outros jogadores.", + "agreementMultipleAccounts": "Eu concordo que não criarei múltiplas contas (exceto pelas razões indicadas em {param}).", + "agreementPolicy": "Eu concordo que seguirei todas as normas do Lichess.", + "searchOrStartNewDiscussion": "Procurar ou iniciar nova conversa", + "edit": "Editar", + "bullet": "Bullet", + "blitz": "Blitz", + "rapid": "Rápida", + "classical": "Clássico", + "ultraBulletDesc": "Jogos insanamente rápidos: menos de 30 segundos", + "bulletDesc": "Jogos muito rápidos: menos de 3 minutos", + "blitzDesc": "Jogos rápidos: 3 a 8 minutos", + "rapidDesc": "Jogos rápidos: 8 a 25 minutos", + "classicalDesc": "Jogos clássicos: 25 minutos ou mais", + "correspondenceDesc": "Jogos por correspondência: um ou vários dias por lance", + "puzzleDesc": "Treinador de táticas de xadrez", + "important": "Importante", + "yourQuestionMayHaveBeenAnswered": "A sua pergunta pode já ter sido respondida {param1}", + "inTheFAQ": "no F.A.Q.", + "toReportSomeoneForCheatingOrBadBehavior": "Para denunciar um usuário por trapaças ou mau comportamento, {param1}", + "useTheReportForm": "use o formulário de denúncia", + "toRequestSupport": "Para solicitar ajuda, {param1}", + "tryTheContactPage": "tente a página de contato", + "makeSureToRead": "Certifique-se de ler {param1}", + "theForumEtiquette": "as regras do fórum", + "thisTopicIsArchived": "Este tópico foi arquivado e não pode mais ser respondido.", + "joinTheTeamXToPost": "Junte-se a {param1} para publicar neste fórum", + "teamNamedX": "Equipe {param1}", + "youCannotPostYetPlaySomeGames": "Você não pode publicar nos fóruns ainda. Jogue algumas partidas!", + "subscribe": "Seguir publicações", + "unsubscribe": "Deixar de seguir publicações", + "mentionedYouInX": "mencionou você em \"{param1}\".", + "xMentionedYouInY": "{param1} mencionou você em \"{param2}\".", + "invitedYouToX": "convidou você para \"{param1}\".", + "xInvitedYouToY": "{param1} convidou você para \"{param2}\".", + "youAreNowPartOfTeam": "Você agora faz parte da equipe.", + "youHaveJoinedTeamX": "Você ingressou em \"{param1}\".", + "someoneYouReportedWasBanned": "Alguém que você denunciou foi banido", + "congratsYouWon": "Parabéns, você venceu!", + "gameVsX": "Jogo vs {param1}", + "resVsX": "{param1} vs {param2}", + "lostAgainstTOSViolator": "Você perdeu rating para alguém que violou os termos de serviço do Lichess", + "refundXpointsTimeControlY": "Reembolso: {param1} {param2} pontos de rating.", + "timeAlmostUp": "O tempo está quase acabando!", + "clickToRevealEmailAddress": "[Clique para revelar o endereço de e-mail]", + "download": "Baixar", + "coachManager": "Configurações para professores", + "streamerManager": "Configurações para streamers", + "cancelTournament": "Cancelar o torneio", + "tournDescription": "Descrição do torneio", + "tournDescriptionHelp": "Algo especial que você queira dizer aos participantes? Tente ser breve. Links em Markdown disponíveis: [name](https://url)", + "ratedFormHelp": "Os jogos valem classificação\ne afetam o rating dos jogadores", + "onlyMembersOfTeam": "Apenas membros da equipe", + "noRestriction": "Sem restrição", + "minimumRatedGames": "Mínimo de partidas ranqueadas", + "minimumRating": "Rating mínimo", + "maximumWeeklyRating": "Rating máxima da semana", + "positionInputHelp": "Cole um FEN válido para iniciar as partidas a partir de uma posição específica.\nSó funciona com jogos padrão, e não com variantes.\nUse o {param} para gerar uma posição FEN, e depois cole-a aqui.\nDeixe em branco para começar as partidas na posição inicial padrão.", + "cancelSimul": "Cancelar a simultânea", + "simulHostcolor": "Cor do simultanista em cada jogo", + "estimatedStart": "Tempo de início estimado", + "simulFeatured": "Compartilhar em {param}", + "simulFeaturedHelp": "Compartilhar a simultânia com todos em {param}. Desative para jogos privados.", + "simulDescription": "Descrição da simultânea", + "simulDescriptionHelp": "Você gostaria de dizer algo aos participantes?", + "markdownAvailable": "{param} está disponível para opções de formatação adicionais.", + "embedsAvailable": "Cole a URL de uma partida ou de um capítulo de estudo para incorporá-lo.", + "inYourLocalTimezone": "No seu próprio fuso horário", + "tournChat": "Chat do torneio", + "noChat": "Sem chat", + "onlyTeamLeaders": "Apenas líderes de equipe", + "onlyTeamMembers": "Apenas membros da equipe", + "navigateMoveTree": "Navegar pela notação de movimentos", + "mouseTricks": "Funcionalidades do mouse", + "toggleLocalAnalysis": "Ativar/desativar análise local do computador", + "toggleAllAnalysis": "Ativar/desativar todas análises locais do computador", + "playComputerMove": "Jogar o melhor lance de computador", + "analysisOptions": "Opções de análise", + "focusChat": "Focar texto", + "showHelpDialog": "Mostrar esta mensagem de ajuda", + "reopenYourAccount": "Reabra sua conta", + "closedAccountChangedMind": "Caso você tenha encerrado sua conta, mas mudou de opinião, você tem ainda uma chance de recuperá-la.", + "onlyWorksOnce": "Isso só vai funcionar uma vez.", + "cantDoThisTwice": "Caso você encerre sua conta pela segunda vez, será impossível recuperá-la.", + "emailAssociatedToaccount": "Endereço de e-mail associado à conta", + "sentEmailWithLink": "Enviamos um e-mail pra você com um link.", + "tournamentEntryCode": "Código de entrada do torneio", + "hangOn": "Espere!", + "gameInProgress": "Você tem uma partida em andamento com {param}.", + "abortTheGame": "Cancelar a partida", + "resignTheGame": "Abandonar a partida", + "youCantStartNewGame": "Você não pode iniciar um novo jogo até que este acabe.", + "since": "Desde", + "until": "Até", + "lichessDbExplanation": "Amostra de partidas rankeadas de todos os jogadores do Lichess", + "switchSides": "Trocar de lado", + "closingAccountWithdrawAppeal": "Encerrar sua conta anulará seu apelo", + "ourEventTips": "Nossas dicas para organização de eventos", + "instructions": "Instruções", + "showMeEverything": "Mostrar tudo", + "lichessPatronInfo": "Lichess é um software de código aberto, totalmente grátis e sem fins lucrativos. Todos os custos operacionais, de desenvolvimento, e os conteúdos são financiados unicamente através de doações de usuários.", + "nothingToSeeHere": "Nada para ver aqui no momento.", + "opponentLeftCounter": "{count, plural, =1{O seu adversário deixou a partida. Você pode reivindicar vitória em {count} segundo.} other{O seu adversário deixou a partida. Você pode reivindicar vitória em {count} segundos.}}", + "mateInXHalfMoves": "{count, plural, =1{Mate em {count} lance} other{Mate em {count} lances}}", + "nbBlunders": "{count, plural, =1{{count} capivarada} other{{count} capivaradas}}", + "nbMistakes": "{count, plural, =1{{count} erro} other{{count} erros}}", + "nbInaccuracies": "{count, plural, =1{{count} imprecisão} other{{count} imprecisões}}", + "nbPlayers": "{count, plural, =1{{count} jogadores conectados} other{{count} jogadores conectados}}", + "nbGames": "{count, plural, =1{{count} partida} other{{count} partidas}}", + "ratingXOverYGames": "{count, plural, =1{Rating {count} em {param2} jogo} other{Rating {count} após {param2} partidas}}", + "nbBookmarks": "{count, plural, =1{{count} Favoritos} other{{count} Favoritos}}", + "nbDays": "{count, plural, =1{{count} dias} other{{count} dias}}", + "nbHours": "{count, plural, =1{{count} horas} other{{count} horas}}", + "nbMinutes": "{count, plural, =1{{count} minuto} other{{count} minutos}}", + "rankIsUpdatedEveryNbMinutes": "{count, plural, =1{O ranking é atualizado a cada {count} minutos} other{O ranking é atualizado a cada {count} minutos}}", + "nbPuzzles": "{count, plural, =1{{count} quebra-cabeça} other{{count} problemas}}", + "nbGamesWithYou": "{count, plural, =1{{count} partidas contra você} other{{count} partidas contra você}}", + "nbRated": "{count, plural, =1{{count} valendo pontos} other{{count} valendo pontos}}", + "nbWins": "{count, plural, =1{{count} vitória} other{{count} vitórias}}", + "nbLosses": "{count, plural, =1{{count} derrota} other{{count} derrotas}}", + "nbDraws": "{count, plural, =1{{count} empates} other{{count} empates}}", + "nbPlaying": "{count, plural, =1{{count} jogando} other{{count} jogando}}", + "giveNbSeconds": "{count, plural, =1{Dar {count} segundos} other{Dar {count} segundos}}", + "nbTournamentPoints": "{count, plural, =1{{count} ponto de torneio} other{{count} pontos de torneio}}", + "nbStudies": "{count, plural, =1{{count} estudo} other{{count} estudos}}", + "nbSimuls": "{count, plural, =1{{count} simultânea} other{{count} simultâneas}}", + "moreThanNbRatedGames": "{count, plural, =1{≥ {count} jogos valendo pontos} other{≥ {count} jogos valendo pontos}}", + "moreThanNbPerfRatedGames": "{count, plural, =1{≥ {count} partida {param2} valendo pontos} other{≥ {count} {param2} partidas valendo pontos}}", + "needNbMorePerfGames": "{count, plural, =1{Você precisa jogar mais {count} partida de {param2} valendo pontos} other{Você precisa jogar mais {count} partidas de {param2} valendo pontos}}", + "needNbMoreGames": "{count, plural, =1{Você precisa jogar ainda {count} partidas valendo pontos} other{Você precisa jogar ainda {count} partidas valendo pontos}}", + "nbImportedGames": "{count, plural, =1{{count} de partidas importadas} other{{count} de partidas importadas}}", + "nbFriendsOnline": "{count, plural, =1{{count} amigo online} other{{count} amigos online}}", + "nbFollowers": "{count, plural, =1{{count} seguidores} other{{count} seguidores}}", + "nbFollowing": "{count, plural, =1{{count} seguidos} other{{count} seguidos}}", + "lessThanNbMinutes": "{count, plural, =1{Menos que {count} minutos} other{Menos que {count} minutos}}", + "nbGamesInPlay": "{count, plural, =1{{count} partidas em andamento} other{{count} partidas em andamento}}", + "maximumNbCharacters": "{count, plural, =1{Máximo: {count} caractere.} other{Máximo: {count} caracteres.}}", + "blocks": "{count, plural, =1{{count} bloqueado} other{{count} bloqueados}}", + "nbForumPosts": "{count, plural, =1{{count} publicação no fórum} other{{count} publicações no fórum}}", + "nbPerfTypePlayersThisWeek": "{count, plural, =1{{count} {param2} jogador nesta semana.} other{{count} {param2} jogadores nesta semana.}}", + "availableInNbLanguages": "{count, plural, =1{Disponível em {count} idiomas!} other{Disponível em {count} idiomas!}}", + "nbSecondsToPlayTheFirstMove": "{count, plural, =1{{count} segundo para fazer o primeiro lance} other{{count} segundos para fazer o primeiro lance}}", + "nbSeconds": "{count, plural, =1{{count} segundo} other{{count} segundos}}", + "andSaveNbPremoveLines": "{count, plural, =1{e salvar a linha de pré-lance de {count}} other{e salvar as linhas de pré-lance de {count}}}", + "stormMoveToStart": "Mova para começar", + "stormYouPlayTheWhitePiecesInAllPuzzles": "Você joga com as peças brancas em todos os quebra-cabeças", + "stormYouPlayTheBlackPiecesInAllPuzzles": "Você joga com as peças pretas em todos os quebra-cabeças", + "stormPuzzlesSolved": "quebra-cabeças resolvidos", + "stormNewDailyHighscore": "Novo recorde diário!", + "stormNewWeeklyHighscore": "Novo recorde semanal!", + "stormNewMonthlyHighscore": "Novo recorde mensal!", + "stormNewAllTimeHighscore": "Novo recorde de todos os tempos!", + "stormPreviousHighscoreWasX": "Recorde anterior era {param}", + "stormPlayAgain": "Jogar novamente", + "stormHighscoreX": "Recorde: {param}", + "stormScore": "Pontuação", + "stormMoves": "Lances", + "stormAccuracy": "Precisão", + "stormCombo": "Combo", + "stormTime": "Tempo", + "stormTimePerMove": "Tempo por lance", + "stormHighestSolved": "Classificação mais alta", + "stormPuzzlesPlayed": "Quebra-cabeças jogados", + "stormNewRun": "Nova série (tecla de atalho: espaço)", + "stormEndRun": "Finalizar série (tecla de atalho: Enter)", + "stormHighscores": "Melhores pontuações", + "stormViewBestRuns": "Ver melhores séries", + "stormBestRunOfDay": "Melhor série do dia", + "stormRuns": "Séries", + "stormGetReady": "Prepare-se!", + "stormWaitingForMorePlayers": "Esperando mais jogadores entrarem...", + "stormRaceComplete": "Corrida concluída!", + "stormSpectating": "Espectando", + "stormJoinTheRace": "Entre na corrida!", + "stormStartTheRace": "Começar a corrida", + "stormYourRankX": "Sua classificação: {param}", + "stormWaitForRematch": "Esperando por revanche", + "stormNextRace": "Próxima corrida", + "stormJoinRematch": "Junte-se a revanche", + "stormWaitingToStart": "Esperando para começar", + "stormCreateNewGame": "Criar um novo jogo", + "stormJoinPublicRace": "Junte-se a uma corrida pública", + "stormRaceYourFriends": "Corra contra seus amigos", + "stormSkip": "pular", + "stormSkipHelp": "Você pode pular um movimento por corrida:", + "stormSkipExplanation": "Pule este lance para preservar o seu combo! Funciona apenas uma vez por corrida.", + "stormFailedPuzzles": "Quebra-cabeças falhados", + "stormSlowPuzzles": "Quebra-cabeças lentos", + "stormSkippedPuzzle": "Quebra-cabeça pulado", + "stormThisWeek": "Essa semana", + "stormThisMonth": "Esse mês", + "stormAllTime": "Desde o início", + "stormClickToReload": "Clique para recarregar", + "stormThisRunHasExpired": "Esta corrida acabou!", + "stormThisRunWasOpenedInAnotherTab": "Esta corrida foi aberta em outra aba!", + "stormXRuns": "{count, plural, =1{1 tentativa} other{{count} séries}}", + "stormPlayedNbRunsOfPuzzleStorm": "{count, plural, =1{Jogou uma tentativa de {param2}} other{Jogou {count} tentativas de {param2}}}", + "streamerLichessStreamers": "Streamers do Lichess", + "studyShareAndExport": "Compartilhar & exportar", + "studyStart": "Iniciar" +} \ No newline at end of file diff --git a/lib/l10n/lila_pt_PT.arb b/lib/l10n/lila_pt_PT.arb deleted file mode 100644 index 10e011d0e4..0000000000 --- a/lib/l10n/lila_pt_PT.arb +++ /dev/null @@ -1,1272 +0,0 @@ -{ - "activityActivity": "Atividade", - "activityHostedALiveStream": "Criou uma livestream", - "activityRankedInSwissTournament": "Classificado #{param1} em {param2}", - "activitySignedUp": "Registou-se no lichess.org", - "activitySupportedNbMonths": "{count, plural, =1{Apoiou o lichess.org durante {count} mês como {param2}} other{Apoiou o lichess.org durante {count} meses como {param2}}}", - "activityPracticedNbPositions": "{count, plural, =1{Praticou {count} posição em {param2}} other{Praticou {count} posições em {param2}}}", - "activitySolvedNbPuzzles": "{count, plural, =1{Resolveu {count} problema} other{Resolveu {count} problemas}}", - "activityPlayedNbGames": "{count, plural, =1{Jogou {count} jogo de {param2}} other{Jogou {count} jogos de {param2}}}", - "activityPostedNbMessages": "{count, plural, =1{Publicou {count} mensagem em {param2}} other{Publicou {count} mensagens em {param2}}}", - "activityPlayedNbMoves": "{count, plural, =1{Fez {count} jogada} other{Fez {count} jogadas}}", - "activityInNbCorrespondenceGames": "{count, plural, =1{em {count} jogo por correspondência} other{em {count} jogos por correspondência}}", - "activityCompletedNbGames": "{count, plural, =1{Completou {count} jogo por correspondência} other{Completou {count} jogos por correspondência}}", - "activityFollowedNbPlayers": "{count, plural, =1{Começou a seguir {count} jogador} other{Começou a seguir {count} jogadores}}", - "activityGainedNbFollowers": "{count, plural, =1{Ganhou {count} novo seguidor} other{Ganhou {count} novos seguidores}}", - "activityHostedNbSimuls": "{count, plural, =1{Criou {count} exibição simultânea} other{Criou {count} exibições simultâneas}}", - "activityJoinedNbSimuls": "{count, plural, =1{Participou em {count} exibição simultânea} other{Participou em {count} exibições simultâneas}}", - "activityCreatedNbStudies": "{count, plural, =1{Criou {count} novo estudo} other{Criou {count} novos estudos}}", - "activityCompetedInNbTournaments": "{count, plural, =1{Competiu em {count} torneio} other{Competiu em {count} torneios}}", - "activityRankedInTournament": "{count, plural, =1{Qualificado #{count} (nos {param2}% melhores) com {param3} jogo em {param4}} other{Qualificado #{count} (nos {param2}% melhores) com {param3} jogos em {param4}}}", - "activityCompetedInNbSwissTournaments": "{count, plural, =1{Competiu em {count} torneio suíço} other{Competiu em {count} torneios suíços}}", - "activityJoinedNbTeams": "{count, plural, =1{Entrou em {count} equipa} other{Entrou em {count} equipas}}", - "broadcastBroadcasts": "Transmissões", - "broadcastLiveBroadcasts": "Transmissões do torneio em direto", - "challengeChallengesX": "Desafios: {param1}", - "challengeChallengeToPlay": "Desafiar para jogar", - "challengeChallengeDeclined": "Desafio recusado", - "challengeChallengeAccepted": "Desafio aceite!", - "challengeChallengeCanceled": "Desafio cancelado.", - "challengeRegisterToSendChallenges": "Por favor regista-te para enviar desafios.", - "challengeYouCannotChallengeX": "Não podes desafiar {param}.", - "challengeXDoesNotAcceptChallenges": "{param} não aceita desafios.", - "challengeYourXRatingIsTooFarFromY": "O teu ranking {param1} esta muito distante de {param2}.", - "challengeCannotChallengeDueToProvisionalXRating": "Não podes desafiar devido a ranking provisório {param}.", - "challengeXOnlyAcceptsChallengesFromFriends": "{param} só aceita desafios de amigos.", - "challengeDeclineGeneric": "Não estou a aceitar desafios no momento.", - "challengeDeclineLater": "Este não é o momento certo para mim, por favor pergunte novamente mais tarde.", - "challengeDeclineTooFast": "Este controlo de tempo é muito rápido para mim, por favor, desafie-me novamente com um jogo mais lento.", - "challengeDeclineTooSlow": "Este controlo de tempo é muito lento para mim, por favor, desafie-me novamente com um jogo mais rápido.", - "challengeDeclineTimeControl": "Não estou a aceitar desafios com este controlo de tempo.", - "challengeDeclineRated": "Por favor, envie-me um desafio a valer para a classificação.", - "challengeDeclineCasual": "Por favor, envie-me um desafio amigável.", - "challengeDeclineStandard": "Não estou a aceitar desafios de variante, de momento.", - "challengeDeclineVariant": "Não estou disposto a jogar essa variante, de momento.", - "challengeDeclineNoBot": "Não estou a aceitar desafios de bots.", - "challengeDeclineOnlyBot": "Apenas aceito desafios de bots.", - "challengeInviteLichessUser": "Ou convide um utilizador Lichess:", - "contactContact": "Contacto", - "contactContactLichess": "Contactar o Lichess", - "patronDonate": "Doar", - "patronLichessPatron": "Patrono do Lichess", - "perfStatPerfStats": "Estatísticas de {param}", - "perfStatViewTheGames": "Ver as partidas", - "perfStatProvisional": "provisório", - "perfStatNotEnoughRatedGames": "Não foi jogado um número suficiente de partidas a pontuar para estabelecer uma pontuação de confiança.", - "perfStatProgressOverLastXGames": "Progresso nas últimas {param} partidas:", - "perfStatRatingDeviation": "Desvio da pontuação: {param}.", - "perfStatRatingDeviationTooltip": "Um valor inferior significa que a classificação é mais estável. Acima de {param1}, a classificação é considerada provisória. Para ser incluído nas classificações, esse valor deve estar abaixo de {param2} (xadrez padrão) ou {param3} (variantes).", - "perfStatTotalGames": "Total de partidas", - "perfStatRatedGames": "Total de partidas a pontuar", - "perfStatTournamentGames": "Partidas em torneios", - "perfStatBerserkedGames": "Partidas no modo frenético", - "perfStatTimeSpentPlaying": "Tempo passado a jogar", - "perfStatAverageOpponent": "Pontuação média dos adversários", - "perfStatVictories": "Vitórias", - "perfStatDefeats": "Derrotas", - "perfStatDisconnections": "Desconexões", - "perfStatNotEnoughGames": "Não foram jogadas partidas suficientes", - "perfStatHighestRating": "Pontuação mais alta: {param}", - "perfStatLowestRating": "Pontuação mais baixa: {param}", - "perfStatFromXToY": "de {param1} a {param2}", - "perfStatWinningStreak": "Vitórias consecutivas", - "perfStatLosingStreak": "Derrotas consecutivas", - "perfStatLongestStreak": "Sequência mais longa: {param}", - "perfStatCurrentStreak": "Sequência atual: {param}", - "perfStatBestRated": "Melhores vitórias a pontuar", - "perfStatGamesInARow": "Partidas jogadas de seguida", - "perfStatLessThanOneHour": "Menos de uma hora entre partidas", - "perfStatMaxTimePlaying": "Tempo máximo passado a jogar", - "perfStatNow": "agora", - "preferencesPreferences": "Preferências", - "preferencesDisplay": "Mostrar", - "preferencesPrivacy": "Privacidade", - "preferencesNotifications": "Notificações", - "preferencesPieceAnimation": "Animação das peças", - "preferencesMaterialDifference": "Diferença de material", - "preferencesBoardHighlights": "Destacar as casas do tabuleiro (último movimento e xeque)", - "preferencesPieceDestinations": "Destino das peças (movimentos válidos e antecipados)", - "preferencesBoardCoordinates": "Coordenadas do tabuleiro (A-H, 1-8)", - "preferencesMoveListWhilePlaying": "Lista de movimentos", - "preferencesPgnPieceNotation": "Anotação de movimentos", - "preferencesChessPieceSymbol": "Usar símbolo das peças", - "preferencesPgnLetter": "Usar letras (K, Q, R, B, N)", - "preferencesZenMode": "Modo zen", - "preferencesShowPlayerRatings": "Mostrar classificações dos jogadores", - "preferencesShowFlairs": "Mostrar os estilos do jogadores", - "preferencesExplainShowPlayerRatings": "Isto permite ocultar todas as avaliações do site, para o ajudar a concentrar-se no xadrez. Os jogos continuam a poder ser avaliados, trata-se apenas do que poderá ver.", - "preferencesDisplayBoardResizeHandle": "Mostrar o cursor de redimensionamento do tabuleiro", - "preferencesOnlyOnInitialPosition": "Apenas na posição inicial", - "preferencesInGameOnly": "Apenas em Jogo", - "preferencesChessClock": "Relógio de xadrez", - "preferencesTenthsOfSeconds": "Décimos de segundo", - "preferencesWhenTimeRemainingLessThanTenSeconds": "Quando o tempo restante for < 10 segundos", - "preferencesHorizontalGreenProgressBars": "Barras de progresso verdes horizontais", - "preferencesSoundWhenTimeGetsCritical": "Som ao atingir tempo crítico", - "preferencesGiveMoreTime": "Dar mais tempo", - "preferencesGameBehavior": "Funcionamento do jogo", - "preferencesHowDoYouMovePieces": "Como queres mexer as peças?", - "preferencesClickTwoSquares": "Clicar em duas casas", - "preferencesDragPiece": "Arrastar uma peça", - "preferencesBothClicksAndDrag": "Qualquer", - "preferencesPremovesPlayingDuringOpponentTurn": "Jogadas antecipadas (jogadas durante a vez do adversário)", - "preferencesTakebacksWithOpponentApproval": "Voltar jogadas atrás (com aprovação do adversário)", - "preferencesInCasualGamesOnly": "Somente em jogos casuais", - "preferencesPromoteToQueenAutomatically": "Promover a Dama automaticamente", - "preferencesExplainPromoteToQueenAutomatically": "Mantenha a tecla pressionada enquanto promove para desativar temporariamente a autopromoção", - "preferencesWhenPremoving": "Quando mover antecipadamente", - "preferencesClaimDrawOnThreefoldRepetitionAutomatically": "Reivindicar empate automaticamente após uma repetição tripla", - "preferencesWhenTimeRemainingLessThanThirtySeconds": "Quando o tempo restante for < 30 segundos", - "preferencesMoveConfirmation": "Confirmação de movimento", - "preferencesExplainCanThenBeTemporarilyDisabled": "Pode ser desativado durante um jogo com o menu do tabuleiro", - "preferencesInCorrespondenceGames": "Jogos por correspondência", - "preferencesCorrespondenceAndUnlimited": "Por correspondência e ilimitado", - "preferencesConfirmResignationAndDrawOffers": "Confirmar desistências e propostas de empate", - "preferencesCastleByMovingTheKingTwoSquaresOrOntoTheRook": "Método de roque", - "preferencesCastleByMovingTwoSquares": "Mover o rei duas casas", - "preferencesCastleByMovingOntoTheRook": "Mover o rei até à torre", - "preferencesInputMovesWithTheKeyboard": "Introduzir movimentos com o teclado", - "preferencesInputMovesWithVoice": "Insira movimentos com a sua voz", - "preferencesSnapArrowsToValidMoves": "Alinhar as setas para sítios para onde as peças se podem mover", - "preferencesSayGgWpAfterLosingOrDrawing": "Dizer \"Good game, well played\" (Bom jogo, bem jogado) após uma derrota ou empate", - "preferencesYourPreferencesHaveBeenSaved": "As tuas preferências foram guardadas.", - "preferencesScrollOnTheBoardToReplayMoves": "Rolar no tabuleiro para repetir os movimentos", - "preferencesCorrespondenceEmailNotification": "Notificações diárias por email listando seus jogos por correspondência", - "preferencesNotifyStreamStart": "Streamer começou uma transmissão ao vivo", - "preferencesNotifyInboxMsg": "Nova mensagem na caixa de entrada", - "preferencesNotifyForumMention": "Um comentário do fórum menciona-o", - "preferencesNotifyInvitedStudy": "Convite para estudo", - "preferencesNotifyGameEvent": "Atualizações dos jogos por correspondência", - "preferencesNotifyChallenge": "Desafios", - "preferencesNotifyTournamentSoon": "O torneio começará em breve", - "preferencesNotifyTimeAlarm": "Está a acabar o tempo no jogo por correspondência", - "preferencesNotifyBell": "Notificação do sino no Lichess", - "preferencesNotifyPush": "Notificação do dispositivo quando não está no Lichess", - "preferencesNotifyWeb": "Navegador", - "preferencesNotifyDevice": "Dispositivo", - "preferencesBellNotificationSound": "Som da notificação", - "puzzlePuzzles": "Problemas", - "puzzlePuzzleThemes": "Temas de problemas", - "puzzleRecommended": "Recomendado", - "puzzlePhases": "Fases", - "puzzleMotifs": "Temas", - "puzzleAdvanced": "Avançado", - "puzzleLengths": "Comprimentos", - "puzzleMates": "Xeque-mates", - "puzzleGoals": "Objetivos", - "puzzleOrigin": "Origem", - "puzzleSpecialMoves": "Movimentos especiais", - "puzzleDidYouLikeThisPuzzle": "Gostaste deste problema?", - "puzzleVoteToLoadNextOne": "Vota para carregares o próximo!", - "puzzleUpVote": "Aprove o puzzle", - "puzzleDownVote": "Desaprove o puzzle", - "puzzleYourPuzzleRatingWillNotChange": "A tua classificação de problemas não será alterada. Nota que os problemas não são uma competição. A classificação ajuda a selecionar os melhores problemas para o teu nível atual.", - "puzzleFindTheBestMoveForWhite": "Encontra a melhor jogada para as brancas.", - "puzzleFindTheBestMoveForBlack": "Encontra a melhor jogada para as pretas.", - "puzzleToGetPersonalizedPuzzles": "Para obter desafios personalizados:", - "puzzlePuzzleId": "Problema {param}", - "puzzlePuzzleOfTheDay": "Problema do dia", - "puzzleDailyPuzzle": "Problema diário", - "puzzleClickToSolve": "Clica para resolveres", - "puzzleGoodMove": "Boa jogada", - "puzzleBestMove": "Melhor jogada!", - "puzzleKeepGoing": "Continua…", - "puzzlePuzzleSuccess": "Sucesso!", - "puzzlePuzzleComplete": "Problema resolvido!", - "puzzleByOpenings": "Por abertura", - "puzzlePuzzlesByOpenings": "Problemas por abertura", - "puzzleOpeningsYouPlayedTheMost": "Aberturas que jogou mais vezes em partidas com rating", - "puzzleUseFindInPage": "Usar \"Localizar na página\" no menu do navegador para encontrar a sua abertura favorita!", - "puzzleUseCtrlF": "Usar Ctrl+f para encontrar a sua abertura favorita!", - "puzzleNotTheMove": "Não é esse movimento!", - "puzzleTrySomethingElse": "Tenta outra coisa.", - "puzzleRatingX": "Pontuação: {param}", - "puzzleHidden": "oculta", - "puzzleFromGameLink": "Do jogo {param}", - "puzzleContinueTraining": "Continuar o treino", - "puzzleDifficultyLevel": "Nível de dificuldade", - "puzzleNormal": "Normal", - "puzzleEasier": "Mais fáceis", - "puzzleEasiest": "Mais fáceis", - "puzzleHarder": "Mais difíceis", - "puzzleHardest": "Mais difíceis", - "puzzleExample": "Exemplo", - "puzzleAddAnotherTheme": "Adicionar outro tema", - "puzzleNextPuzzle": "Próximo desafio", - "puzzleJumpToNextPuzzleImmediately": "Saltar imediatamente para o próximo problema", - "puzzlePuzzleDashboard": "Painel de controlo dos problemas", - "puzzleImprovementAreas": "Áreas a melhorar", - "puzzleStrengths": "Pontos fortes", - "puzzleHistory": "Histórico de problemas", - "puzzleSolved": "resolvido", - "puzzleFailed": "incorreto", - "puzzleStreakDescription": "Resolve puzzles progressivamente mais difíceis e estabelece uma sequência de vitórias. Não há relógio, demora o teu tempo. Um movimento errado e o jogo acaba! No entanto, podes saltar um movimento por sessão.", - "puzzleYourStreakX": "Vitórias consecutivas: {param}", - "puzzleStreakSkipExplanation": "Salta este movimento para preservar a tua sequência! Apenas funciona uma vez por sessão.", - "puzzleContinueTheStreak": "Continua a sequência", - "puzzleNewStreak": "Nova sequência de vitórias", - "puzzleFromMyGames": "Dos meus jogos", - "puzzleLookupOfPlayer": "Pesquise problemas de jogos de um jogador", - "puzzleFromXGames": "Puzzles dos jogos de {param}", - "puzzleSearchPuzzles": "Pesquisar desafios", - "puzzleFromMyGamesNone": "Não tens problemas na base de dados, mas Lichess adora-te muito.\n\nJoga partidas semi-rápidas e clássicas para aumentares a probabilidade de teres um problema adicionado!", - "puzzleFromXGamesFound": "{param1} problemas encontrados em {param2} partidas", - "puzzlePuzzleDashboardDescription": "Treinar, analisar, melhorar", - "puzzlePercentSolved": "{param} resolvido", - "puzzleNoPuzzlesToShow": "Nada para mostrar, joga alguns problemas primeiro!", - "puzzleImprovementAreasDescription": "Treine estes para otimizar o seu progresso!", - "puzzleStrengthDescription": "Você tem melhor desempenho nestes temas", - "puzzlePlayedXTimes": "{count, plural, =1{Jogado {count} vez} other{Jogado {count} vezes}}", - "puzzleNbPointsBelowYourPuzzleRating": "{count, plural, =1{Um ponto abaixo da sua pontuação de problemas} other{{count} pontos abaixo da sua pontuação de problemas}}", - "puzzleNbPointsAboveYourPuzzleRating": "{count, plural, =1{Um ponto acima da sua pontuação de problemas} other{{count} pontos acima da sua pontuação de problemas}}", - "puzzleNbPlayed": "{count, plural, =1{{count} problema feito} other{{count} problemas feitos}}", - "puzzleNbToReplay": "{count, plural, =1{{count} para repetir} other{{count} para repetir}}", - "puzzleThemeAdvancedPawn": "Peão avançado", - "puzzleThemeAdvancedPawnDescription": "A chave do tático é um peão a promover ou a ameaçar promover.", - "puzzleThemeAdvantage": "Vantagem", - "puzzleThemeAdvantageDescription": "Aproveita a oportunidade de obter uma vantagem decisiva. (200cp ≤ aval ≤ 600cp)", - "puzzleThemeAnastasiaMate": "Mate Anastasia", - "puzzleThemeAnastasiaMateDescription": "Um cavalo e uma torre ou dama cooperam para prender o rei inimigo entre um lado do tabuleiro e outra peça inimiga.", - "puzzleThemeArabianMate": "Mate Árabe", - "puzzleThemeArabianMateDescription": "Um cavalo e uma torre cooperam para prenderem o rei inimigo no canto do tabuleiro.", - "puzzleThemeAttackingF2F7": "Atacar f2 ou f7", - "puzzleThemeAttackingF2F7Description": "Um ataque ao peão de f2 ou f7, como a abertura \"Fried Liver\".", - "puzzleThemeAttraction": "Atração", - "puzzleThemeAttractionDescription": "Uma troca ou sacrifício que encoraja ou força uma peça adversária a ir para uma casa que permite um tático.", - "puzzleThemeBackRankMate": "Mate de corredor", - "puzzleThemeBackRankMateDescription": "Dá mate ao rei na fila inicial, quando está preso pelas suas próprias peças.", - "puzzleThemeBishopEndgame": "Final de bispos", - "puzzleThemeBishopEndgameDescription": "Um final apenas com bispos e peões.", - "puzzleThemeBodenMate": "Mate Boden", - "puzzleThemeBodenMateDescription": "Dois bispos em diagonais perpendiculares dão mate ao rei inimigo obstruído por peças aliadas.", - "puzzleThemeCastling": "Roque", - "puzzleThemeCastlingDescription": "Proteger o rei e trazer a torre para o ataque.", - "puzzleThemeCapturingDefender": "Capturar o defensor", - "puzzleThemeCapturingDefenderDescription": "Remove uma peça que seja crítica para a defesa de outra peça, permitindo que esta seja capturada na próxima jogada.", - "puzzleThemeCrushing": "Esmagar", - "puzzleThemeCrushingDescription": "Descobre um erro grave do oponente e obtém uma vantagem esmagadora. (avaliação ≥ 600cp)", - "puzzleThemeDoubleBishopMate": "Mate com dois bispos", - "puzzleThemeDoubleBishopMateDescription": "Dois bispos em diagonais adjacentes dão mate ao rei inimigo obstruído por peças aliadas.", - "puzzleThemeDovetailMate": "Mate cauda-de-andorinha", - "puzzleThemeDovetailMateDescription": "Uma dama dá mate ao rei inimigo cujas jogadas de escape estão bloqueadas por peças aliadas.", - "puzzleThemeEquality": "Igualdade", - "puzzleThemeEqualityDescription": "Recupera de uma posição perdedora e garante um empate ou uma posição de equilíbrio. (avaliação ≤ 200cp)", - "puzzleThemeKingsideAttack": "Ataque no lado do rei", - "puzzleThemeKingsideAttackDescription": "Um ataque ao rei do adversário, após este ter feito roque menor (para o lado do rei).", - "puzzleThemeClearance": "Limpeza", - "puzzleThemeClearanceDescription": "Uma jogada, com tempo, que limpa uma casa, fila, coluna ou diagonal para uma ideia tática subsequente.", - "puzzleThemeDefensiveMove": "Movimento defensivo", - "puzzleThemeDefensiveMoveDescription": "Um movimento ou sequência de movimentos precisos, necessários para evitar uma desvantagem, como por exemplo perda de material.", - "puzzleThemeDeflection": "Desvio", - "puzzleThemeDeflectionDescription": "Uma jogada que distrai uma peça do adversário de outra função, como por exemplo, proteger uma casa chave. Às vezes também é chamado de sobrecarga.", - "puzzleThemeDiscoveredAttack": "Ataque descoberto", - "puzzleThemeDiscoveredAttackDescription": "Mover uma peça que estava a bloquear um ataque de uma peça de longo alcance, como por exemplo um cavalo que sai da frente de uma torre.", - "puzzleThemeDoubleCheck": "Xeque duplo", - "puzzleThemeDoubleCheckDescription": "Fazer xeque com duas peças ao mesmo tempo, como consequência de um ataque descoberto em que tanto a peça que move como a peça que é descoberta atacam o rei do adversário.", - "puzzleThemeEndgame": "Final de jogo", - "puzzleThemeEndgameDescription": "Uma tática durante a última fase do jogo.", - "puzzleThemeEnPassantDescription": "Uma tática que envolve a regra de \"en passant\", onde um peão pode capturar um peão adversário que o ignorou usando o seu primeiro movimento de duas casas.", - "puzzleThemeExposedKing": "Rei exposto", - "puzzleThemeExposedKingDescription": "Uma tática que envolve um rei com poucos defensores ao seu redor, muitas vezes levando a xeque-mate.", - "puzzleThemeFork": "Garfo", - "puzzleThemeForkDescription": "Uma jogada em que uma peça ataca duas peças do adversário simultaneamente.", - "puzzleThemeHangingPiece": "Peça desprotegida", - "puzzleThemeHangingPieceDescription": "Uma tática que envolve uma peça do adversário que não está suficientemente defendida e por isso pode ser capturada.", - "puzzleThemeHookMate": "Mate gancho", - "puzzleThemeHookMateDescription": "Mate com uma torre, cavalo e peão em que o rei inimigo tem as jogadas de escape bloqueadas por um peão aliado.", - "puzzleThemeInterference": "Interferência", - "puzzleThemeInterferenceDescription": "Jogar uma peça para uma casa entre duas peças do adversário deixando pelo menos uma delas desprotegia, como por exemplo um cavalo numa casa defendida entre duas torres.", - "puzzleThemeIntermezzo": "Intermezzo", - "puzzleThemeIntermezzoDescription": "Em vez de jogares o movimento esperado, primeiro interpõe outro movimento colocando uma ameaça imediata à qual o oponente deve responder. Também conhecido como \"Zwischenzug\" ou jogada intermédia.", - "puzzleThemeKnightEndgame": "Final de cavalo", - "puzzleThemeKnightEndgameDescription": "Um final de jogo com apenas cavalos e peões.", - "puzzleThemeLong": "Problema longo", - "puzzleThemeLongDescription": "Três movimentos para ganhar.", - "puzzleThemeMaster": "Jogos de mestres", - "puzzleThemeMasterDescription": "Problemas de partidas jogadas por jogadores titulados.", - "puzzleThemeMasterVsMaster": "Jogos de Mestre vs Mestre", - "puzzleThemeMasterVsMasterDescription": "Partidas jogadas entre dois jogadores titulados.", - "puzzleThemeMate": "Xeque-mate", - "puzzleThemeMateDescription": "Vence a partida com estilo.", - "puzzleThemeMateIn1": "Mate em 1", - "puzzleThemeMateIn1Description": "Faz xeque-mate num movimento.", - "puzzleThemeMateIn2": "Mate em 2", - "puzzleThemeMateIn2Description": "Faz xeque-mate em dois movimentos.", - "puzzleThemeMateIn3": "Mate em 3", - "puzzleThemeMateIn3Description": "Faz xeque-mate em três movimentos.", - "puzzleThemeMateIn4": "Mate em 4", - "puzzleThemeMateIn4Description": "Faz xeque-mate em quatro movimentos.", - "puzzleThemeMateIn5": "Mate em 5 ou mais", - "puzzleThemeMateIn5Description": "Descobre uma longa sequência que leva ao xeque-mate.", - "puzzleThemeMiddlegame": "Meio-jogo", - "puzzleThemeMiddlegameDescription": "Uma tática durante a segunda fase do jogo.", - "puzzleThemeOneMove": "Problema de um movimento", - "puzzleThemeOneMoveDescription": "Um problema que é resolvido com apenas um movimento.", - "puzzleThemeOpening": "Abertura", - "puzzleThemeOpeningDescription": "Uma tática durante a primeira fase do jogo.", - "puzzleThemePawnEndgame": "Final de peões", - "puzzleThemePawnEndgameDescription": "Um final de jogo só com peões.", - "puzzleThemePin": "Cravada", - "puzzleThemePinDescription": "Uma tática que envolve cravadas, onde uma peça é incapaz de se mover sem revelar um ataque a uma peça de valor superior.", - "puzzleThemePromotion": "Promoção", - "puzzleThemePromotionDescription": "Promova o teu peão a uma dama ou numa peça menor.", - "puzzleThemeQueenEndgame": "Final de dama", - "puzzleThemeQueenEndgameDescription": "Um final com apenas damas e peões.", - "puzzleThemeQueenRookEndgame": "Dama e torre", - "puzzleThemeQueenRookEndgameDescription": "Um final de jogo só com damas, torres e peões.", - "puzzleThemeQueensideAttack": "Ataque no lado da dama", - "puzzleThemeQueensideAttackDescription": "Um ataque ao rei do adversário, após este ter feito roque grande (para o lado da dama).", - "puzzleThemeQuietMove": "Jogada subtil", - "puzzleThemeQuietMoveDescription": "Um movimento que não faz uma cheque nem captura, mas prepara uma ameaça inevitável.", - "puzzleThemeRookEndgame": "Final de torre", - "puzzleThemeRookEndgameDescription": "Um final de jogo com apenas torres e peões.", - "puzzleThemeSacrifice": "Sacrifício", - "puzzleThemeSacrificeDescription": "Uma tática que involve abdicar de material a curto prazo, para ganhar uma vantagem após uma sequência forçada de movimentos.", - "puzzleThemeShort": "Problema curto", - "puzzleThemeShortDescription": "Duas jogadas para ganhar.", - "puzzleThemeSkewer": "Cravada inversa", - "puzzleThemeSkewerDescription": "Uma tática que envolve uma peça de alto valor que está ser atacada, mas ao afastar-se, permite que uma peça de menor valor, que estava atrás dela, seja capturada ou atacada. É o inverso da cravada.", - "puzzleThemeSmotheredMate": "Mate de Philidor", - "puzzleThemeSmotheredMateDescription": "Uma xeque-mate feito por um cavalo em que o rei não se pode mover porque está rodeado pelas suas próprias peças. Também conhecido como mate sufocado.", - "puzzleThemeSuperGM": "Jogos de Super GM", - "puzzleThemeSuperGMDescription": "Problemas de partidas jogadas pelos melhores jogadores do mundo.", - "puzzleThemeTrappedPiece": "Peça encurralada", - "puzzleThemeTrappedPieceDescription": "Uma peça não consegue escapar à captura, pois tem movimentos limitados.", - "puzzleThemeUnderPromotion": "Subpromoção", - "puzzleThemeUnderPromotionDescription": "Promoção para um cavalo, bispo ou torre.", - "puzzleThemeVeryLong": "Problema muito longo", - "puzzleThemeVeryLongDescription": "Quatro jogadas para ganhar.", - "puzzleThemeXRayAttack": "Ataque raio-X", - "puzzleThemeXRayAttackDescription": "Uma peça ataque ou defende uma casa através de uma peça inimiga.", - "puzzleThemeZugzwang": "Zugzwang", - "puzzleThemeZugzwangDescription": "O adversário está limitado quanto aos seus movimentos, e todas as jogadas pioram a sua posição.", - "puzzleThemeHealthyMix": "Mistura saudável", - "puzzleThemeHealthyMixDescription": "Um pouco de tudo. Não sabes o que esperar, então ficas pronto para qualquer coisa! Exatamente como em jogos de verdade.", - "puzzleThemePlayerGames": "Jogos de jogadores", - "puzzleThemePlayerGamesDescription": "Procura problemas gerados a partir dos teus jogos ou de jogos de outro jogador.", - "puzzleThemePuzzleDownloadInformation": "Esses problemas são do domínio público e podem ser obtidos em {param}.", - "searchSearch": "Procurar", - "settingsSettings": "Configurações", - "settingsCloseAccount": "Encerrar a conta", - "settingsManagedAccountCannotBeClosed": "A sua conta é gerida e não pode ser encerrada.", - "settingsClosingIsDefinitive": "O encerramento é definitivo. Não podes voltar atrás. Tens a certeza?", - "settingsCantOpenSimilarAccount": "Não poderá criar uma nova conta com o mesmo nome, mesmo que as maiúsculas ou minúsculas sejam diferentes.", - "settingsChangedMindDoNotCloseAccount": "Mudei de ideias, não encerrem a minha conta", - "settingsCloseAccountExplanation": "Tens a certeza que queres encerrar sua conta? Encerrar a tua conta é uma decisão permanente. Tu NUNCA MAIS serás capaz de iniciar sessão nesta conta.", - "settingsThisAccountIsClosed": "Esta conta foi encerrada.", - "playWithAFriend": "Jogar com um amigo", - "playWithTheMachine": "Jogar contra o computador", - "toInviteSomeoneToPlayGiveThisUrl": "Para convidares alguém para jogar, envia este URL", - "gameOver": "Fim da partida", - "waitingForOpponent": "Aguardando oponente", - "orLetYourOpponentScanQrCode": "Ou deixa o teu oponente ler este código QR", - "waiting": "A aguardar", - "yourTurn": "É a tua vez", - "aiNameLevelAiLevel": "{param1} nível {param2}", - "level": "Nível", - "strength": "Nível", - "toggleTheChat": "Ativar/Desativar o chat", - "chat": "Chat", - "resign": "Desistir", - "checkmate": "Xeque-mate", - "stalemate": "Rei afogado", - "white": "Brancas", - "black": "Pretas", - "asWhite": "com as brancas", - "asBlack": "com as pretas", - "randomColor": "Cor aleatória", - "createAGame": "Criar uma partida", - "whiteIsVictorious": "Brancas vencem", - "blackIsVictorious": "Pretas vencem", - "youPlayTheWhitePieces": "Tu jogas com as peças brancas", - "youPlayTheBlackPieces": "Tu jogas com as peças pretas", - "itsYourTurn": "É a tua vez!", - "cheatDetected": "Fraude detetada", - "kingInTheCenter": "Rei no centro", - "threeChecks": "Três xeques", - "raceFinished": "Corrida terminada", - "variantEnding": "Fim da variante", - "newOpponent": "Novo adversário", - "yourOpponentWantsToPlayANewGameWithYou": "O teu adversário quer jogar outra vez contra ti", - "joinTheGame": "Entrar no jogo", - "whitePlays": "Jogam as brancas", - "blackPlays": "Jogam as pretas", - "opponentLeftChoices": "O teu adversário deixou a partida. Podes reivindicar vitória, declarar empate ou aguardar.", - "forceResignation": "Reivindicar vitória", - "forceDraw": "Reivindicar empate", - "talkInChat": "Por favor, sê gentil na conversa!", - "theFirstPersonToComeOnThisUrlWillPlayWithYou": "A primeira pessoa que aceder a este link jogará contra ti.", - "whiteResigned": "As brancas desistiram", - "blackResigned": "As pretas desistiram", - "whiteLeftTheGame": "As brancas deixaram a partida", - "blackLeftTheGame": "As pretas deixaram a partida", - "whiteDidntMove": "As brancas não se moveram", - "blackDidntMove": "As pretas não se moveram", - "requestAComputerAnalysis": "Solicitar uma análise de computador", - "computerAnalysis": "Análise de computador", - "computerAnalysisAvailable": "Análise de computador disponível", - "computerAnalysisDisabled": "Análise de computador desativada", - "analysis": "Análise", - "depthX": "Profundidade {param}", - "usingServerAnalysis": "A usar a análise do servidor", - "loadingEngine": "A carregar o motor de jogo...", - "calculatingMoves": "A calcular as jogadas...", - "engineFailed": "Erro ao carregar o motor", - "cloudAnalysis": "Análise na nuvem", - "goDeeper": "Aprofundar", - "showThreat": "Mostrar ameaça", - "inLocalBrowser": "no navegador local", - "toggleLocalEvaluation": "Ligar/desligar a avaliação local", - "promoteVariation": "Promover variante", - "makeMainLine": "Tornar variante principal", - "deleteFromHere": "Eliminar a partir de aqui", - "collapseVariations": "Recolher variações", - "expandVariations": "Expandir variações", - "forceVariation": "Forçar variante", - "copyVariationPgn": "Copiar variação PGN", - "move": "Jogada", - "variantLoss": "Variante perdida", - "variantWin": "Variante ganha", - "insufficientMaterial": "Material insuficiente", - "pawnMove": "Movimento de peão", - "capture": "Captura", - "close": "Fechar", - "winning": "Ganhas", - "losing": "Perdidas", - "drawn": "Empatado", - "unknown": "Desconhecidos", - "database": "Base de dados", - "whiteDrawBlack": "Brancas / Empate / Pretas", - "averageRatingX": "Pontuação média: {param}", - "recentGames": "Partidas recentes", - "topGames": "Melhores partidas", - "masterDbExplanation": "de partidas OTB de jogadores com +{param1} rating FIDE de {param2} a {param3}", - "dtzWithRounding": "DTZ50'' com arredondamento, baseado no número de meios-movimentos até à próxima captura ou movimento de peão", - "noGameFound": "Nenhum jogo encontrado", - "maxDepthReached": "Nível máximo alcançado!", - "maybeIncludeMoreGamesFromThePreferencesMenu": "Talvez incluir mais jogos no menu de preferências?", - "openings": "Aberturas", - "openingExplorer": "Explorador de aberturas", - "openingEndgameExplorer": "Explorador de Aberturas/Finais", - "xOpeningExplorer": "Explorador de aberturas de {param}", - "playFirstOpeningEndgameExplorerMove": "Jogar o primeiro lance do explorador de aberturas/finais", - "winPreventedBy50MoveRule": "Vitória impedida pela regra dos 50 movimentos", - "lossSavedBy50MoveRule": "Derrota evitada pela regra dos 50 movimentos", - "winOr50MovesByPriorMistake": "Vitória ou 50 movimentos por engano anterior", - "lossOr50MovesByPriorMistake": "Vitória ou 50 movimentos por engano anterior", - "unknownDueToRounding": "Vitória/derrota garantida apenas se a linha da tabela recomendada tiver sido seguida desde a última captura ou movimento de peão, devido a possível arredondamento.", - "allSet": "Tudo a postos!", - "importPgn": "Importar PGN", - "delete": "Eliminar", - "deleteThisImportedGame": "Eliminar este jogo importado?", - "replayMode": "Modo de repetição", - "realtimeReplay": "Tempo real", - "byCPL": "Por CPL", - "openStudy": "Abrir estudo", - "enable": "Ativar", - "bestMoveArrow": "Seta de melhor movimento", - "showVariationArrows": "Ver setas de variação", - "evaluationGauge": "Medidor da avaliação", - "multipleLines": "Múltiplas continuações", - "cpus": "CPUs", - "memory": "Memória", - "infiniteAnalysis": "Análise infinita", - "removesTheDepthLimit": "Remove o limite de profundidade e mantém o teu computador quente", - "engineManager": "Gestão do motor", - "blunder": "Erro grave", - "mistake": "Erro", - "inaccuracy": "Imprecisão", - "moveTimes": "Tempo das jogadas", - "flipBoard": "Inverter o tabuleiro", - "threefoldRepetition": "Repetição tripla", - "claimADraw": "Declarar empate", - "offerDraw": "Propor empate", - "draw": "Empate", - "drawByMutualAgreement": "Empate por acordo mútuo", - "fiftyMovesWithoutProgress": "Cinquenta jogadas sem progresso", - "currentGames": "Partidas a decorrer", - "viewInFullSize": "Ver em tela cheia", - "logOut": "Sair", - "signIn": "Entrar", - "rememberMe": "Lembrar-me", - "youNeedAnAccountToDoThat": "Precisas de uma conta para fazeres isso", - "signUp": "Registar-se", - "computersAreNotAllowedToPlay": "Computadores ou jogadores assistidos por computador não estão autorizados a jogar. Por favor não utilizes assistência de programas de xadrez, bases de dados ou outros jogadores enquanto estiveres a jogar. Além disso, a criação de contas múltiplas é fortemente desencorajada e a sua prática excessiva acarretará banimento.", - "games": "Partidas", - "forum": "Fórum", - "xPostedInForumY": "{param1} publicou no tópico {param2}", - "latestForumPosts": "Últimas publicações no fórum", - "players": "Jogadores", - "friends": "Amigos", - "discussions": "Conversas", - "today": "Hoje", - "yesterday": "Ontem", - "minutesPerSide": "Minutos por jogador", - "variant": "Variante", - "variants": "Variantes", - "timeControl": "Ritmo de jogo", - "realTime": "Em tempo real", - "correspondence": "Correspondência", - "daysPerTurn": "Dias por lance", - "oneDay": "Um dia", - "time": "Tempo", - "rating": "Pontuação", - "ratingStats": "Estatísticas de pontuação", - "username": "Nome de utilizador", - "usernameOrEmail": "Nome ou e-mail do utilizador", - "changeUsername": "Alterar o nome de utilizador", - "changeUsernameNotSame": "Só te é permitido trocar as letras de minúscula para maiúscula e vice-versa. Por exemplo, \"johndoe\" para \"JohnDoe\".", - "changeUsernameDescription": "Altera o teu nome de utilizador. Isso só pode ser feito uma vez e só poderás trocar as letras de minúscula para maiúscula e vice-versa.", - "signupUsernameHint": "Certifique-se que escolhe um nome de utilizador decoroso. Não poderá alterá-lo mais tarde e quaisquer contas com nomes de utilizador inapropriados serão fechadas!", - "signupEmailHint": "Só o usaremos para redefinir a palavra-passe.", - "password": "Palavra-passe", - "changePassword": "Alterar a palavra-passe", - "changeEmail": "Alterar email", - "email": "E-mail", - "passwordReset": "Redefinir a palavra-passe", - "forgotPassword": "Esqueceste-te da tua palavra-passe?", - "error_weakPassword": "Esta senha é extremamente comum, e muito fácil de adivinhar.", - "error_namePassword": "Por favor, não usa o teu nome de utilizador como senha.", - "blankedPassword": "Utilizou a mesma palavra-passe noutro site, e esse site foi comprometido. Para garantir a segurança da sua conta Lichess, precisamos que redefina a palavra-passe. Obrigado pela compreensão.", - "youAreLeavingLichess": "Você está a sair do Lichess", - "neverTypeYourPassword": "Nunca escrevas a tua senha Lichess em outro site!", - "proceedToX": "Continuar para {param}", - "passwordSuggestion": "Não uses uma senha sugerida por outra pessoa. Eles vão utilizar-la para roubar a tua conta.", - "emailSuggestion": "Não uses um email sugerida por outra pessoa. Eles vão utilizar-la para roubar a tua conta.", - "emailConfirmHelp": "Ajuda com a confirmação do endereço eletrónico", - "emailConfirmNotReceived": "Não recebeu no seu correio eletrónico uma mensagem de confirmação após o registo?", - "whatSignupUsername": "Que nome de utilizador usou para se registar?", - "usernameNotFound": "Não foi possível encontrar nenhum usuário com este nome: {param}.", - "usernameCanBeUsedForNewAccount": "Pode usar esse nome de utilizador para criar uma conta", - "emailSent": "Enviámos um correio eletrónico para {param}.", - "emailCanTakeSomeTime": "Pode demorar algum tempo a chegar.", - "refreshInboxAfterFiveMinutes": "Aguarde 5 minutos e atualize a sua caixa de entrada de correio eletrónico.", - "checkSpamFolder": "Verifique também a sua pasta de “spam”, pode estar lá. Se sim, assinale como não “spam”.", - "emailForSignupHelp": "Se tudo falhar, então envie-nos este correio eletrónico:", - "copyTextToEmail": "Copie e cole o texto acima e envie-o para {param}", - "waitForSignupHelp": "Nós entraremos brevemente em contacto para ajudá-lo a completar a inscrição.", - "accountConfirmed": "O utilizador {param} foi confirmado com sucesso.", - "accountCanLogin": "Pode agora aceder como {param}.", - "accountConfirmationEmailNotNeeded": "Não precisa de um endereço eletrónico de confirmação.", - "accountClosed": "A conta {param} está encerrada.", - "accountRegisteredWithoutEmail": "A conta {param} foi registada sem um endereço eletrónico.", - "rank": "Classificação", - "rankX": "Posição: {param}", - "gamesPlayed": "Partidas jogadas", - "cancel": "Cancelar", - "whiteTimeOut": "Acabou o tempo das brancas", - "blackTimeOut": "Acabou o tempo das pretas", - "drawOfferSent": "Proposta de empate enviada", - "drawOfferAccepted": "Proposta de empate aceite", - "drawOfferCanceled": "Proposta de empate cancelada", - "whiteOffersDraw": "As brancas propõem empate", - "blackOffersDraw": "As pretas propõem empate", - "whiteDeclinesDraw": "As brancas recusam o empate", - "blackDeclinesDraw": "As pretas recusam o empate", - "yourOpponentOffersADraw": "O teu adversário propõe empate", - "accept": "Aceitar", - "decline": "Recusar", - "playingRightNow": "A jogar agora", - "eventInProgress": "A decorrer agora", - "finished": "Terminado", - "abortGame": "Cancelar a partida", - "gameAborted": "Partida cancelada", - "standard": "Padrão", - "customPosition": "Posição personalizada", - "unlimited": "Ilimitado", - "mode": "Modo", - "casual": "Amigável", - "rated": "A valer pontos", - "casualTournament": "Amigável", - "ratedTournament": "A valer pontos", - "thisGameIsRated": "Esta partida vale pontos", - "rematch": "Desforra", - "rematchOfferSent": "Pedido de desforra enviado", - "rematchOfferAccepted": "Pedido de desforra aceite", - "rematchOfferCanceled": "Pedido de desforra cancelado", - "rematchOfferDeclined": "Pedido de desforra recusado", - "cancelRematchOffer": "Cancelar o pedido de desforra", - "viewRematch": "Ver a desforra", - "confirmMove": "Confirmar o lance", - "play": "Jogar", - "inbox": "Caixa de entrada", - "chatRoom": "Sala de chat", - "loginToChat": "Inicia sessão para poderes conversar", - "youHaveBeenTimedOut": "Foste impedido de conversar por agora.", - "spectatorRoom": "Sala dos espectadores", - "composeMessage": "Escrever uma mensagem", - "subject": "Assunto", - "send": "Enviar", - "incrementInSeconds": "Incremento em segundos", - "freeOnlineChess": "Xadrez Online Gratuito", - "exportGames": "Exportar partidas", - "ratingRange": "Pontuação entre", - "thisAccountViolatedTos": "Esta conta violou os termos de serviço do Lichess", - "openingExplorerAndTablebase": "Explorador de aberturas & tabelas de finais", - "takeback": "Voltar uma jogada atrás", - "proposeATakeback": "Propor voltar uma jogada atrás", - "takebackPropositionSent": "Proposta de voltar uma jogada atrás enviada", - "takebackPropositionDeclined": "Proposta de voltar uma jogada atrás recusada", - "takebackPropositionAccepted": "Proposta de voltar uma jogada atrás aceite", - "takebackPropositionCanceled": "Proposta de voltar uma jogada atrás cancelada", - "yourOpponentProposesATakeback": "O teu adversário propõe voltar uma jogada atrás", - "bookmarkThisGame": "Adicionar esta partida às favoritas", - "tournament": "Torneio", - "tournaments": "Torneios", - "tournamentPoints": "Pontos de torneio", - "viewTournament": "Ver o torneio", - "backToTournament": "Voltar ao torneio", - "noDrawBeforeSwissLimit": "Num torneio suíço não pode empatar antes de 30 jogadas.", - "thematic": "Temático", - "yourPerfRatingIsProvisional": "A tua pontuação em {param} é provisória", - "yourPerfRatingIsTooHigh": "A tua pontuação em {param1} ({param2}) é demasiado alta", - "yourTopWeeklyPerfRatingIsTooHigh": "A tua pontuação máxima nesta semana em {param1} ({param2}) é demasiado alta", - "yourPerfRatingIsTooLow": "A tua pontuação em {param1} ({param2}) é demasiado baixa", - "ratedMoreThanInPerf": "Pontuação ≥ {param1} em {param2}", - "ratedLessThanInPerf": "Pontuação ≤ {param1} em {param2}", - "mustBeInTeam": "Tens de pertencer à equipa {param}", - "youAreNotInTeam": "Não estás na equipa {param}", - "backToGame": "Voltar à partida", - "siteDescription": "Xadrez online gratuito. Joga xadrez numa interface simples. Sem registos, sem anúncios, sem plugins. Joga xadrez com o computador, amigos ou adversários aleatórios.", - "xJoinedTeamY": "{param1} juntou-se à equipa {param2}", - "xCreatedTeamY": "{param1} criou a equipa {param2}", - "startedStreaming": "começou uma stream", - "xStartedStreaming": "{param} começou uma stream", - "averageElo": "Pontuação média", - "location": "Localização", - "filterGames": "Filtrar partidas", - "reset": "Voltar ao original", - "apply": "Aplicar", - "save": "Guardar", - "leaderboard": "Tabela de liderança", - "screenshotCurrentPosition": "Posição atual da captura de ecrã", - "gameAsGIF": "Jogo como GIF", - "pasteTheFenStringHere": "Coloca a notação FEN aqui", - "pasteThePgnStringHere": "Coloca a notação PGN aqui", - "orUploadPgnFile": "Ou enviar um ficheiro PGN", - "fromPosition": "A partir de uma posição", - "continueFromHere": "Continuar a partir daqui", - "toStudy": "Estudo", - "importGame": "Importar uma partida", - "importGameExplanation": "Coloca aqui o PGN de um jogo, para teres acesso a navegar pela repetição,\nanálise de computador, sala de chat do jogo e link de partilha.", - "importGameCaveat": "As variações serão apagadas. Para mantê-las, importe o PGN através de um estudo.", - "importGameDataPrivacyWarning": "Este PGN pode ser acessada pelo público. Para importar um jogo de forma privada, use um estudo.", - "thisIsAChessCaptcha": "Este é um \"CAPTCHA\" de xadrez.", - "clickOnTheBoardToMakeYourMove": "Clica no tabuleiro para fazeres a tua jogada, provando que és humano.", - "captcha_fail": "Por favor, resolve o captcha.", - "notACheckmate": "Não é xeque-mate.", - "whiteCheckmatesInOneMove": "As brancas dão mate em um movimento", - "blackCheckmatesInOneMove": "As pretas dão mate em um movimento", - "retry": "Tentar novamente", - "reconnecting": "Reconectando", - "noNetwork": "Desligado", - "favoriteOpponents": "Adversários favoritos", - "follow": "Seguir", - "following": "A seguir", - "unfollow": "Deixar de seguir", - "followX": "Seguir {param}", - "unfollowX": "Deixar de seguir {param}", - "block": "Bloquear", - "blocked": "Bloqueado", - "unblock": "Desbloquear", - "followsYou": "Segue-te", - "xStartedFollowingY": "{param1} começou a seguir {param2}", - "more": "Mais", - "memberSince": "Membro desde", - "lastSeenActive": "Ativo {param}", - "player": "Jogador", - "list": "Lista", - "graph": "Gráfico", - "required": "Obrigatório.", - "openTournaments": "Torneios abertos", - "duration": "Duração", - "winner": "Vencedor", - "standing": "Classificação", - "createANewTournament": "Criar um torneio", - "tournamentCalendar": "Calendário de torneios", - "conditionOfEntry": "Condições de participação:", - "advancedSettings": "Configurações avançadas", - "safeTournamentName": "Escolhe um nome totalmente seguro para o torneio.", - "inappropriateNameWarning": "Até uma linguagem ligeiramente inadequada pode levar ao encerramento da tua conta.", - "emptyTournamentName": "Deixe em branco e será atribuído um nome aleatório de um jogador notável ao torneio.", - "makePrivateTournament": "Torna o torneio privado e restrinje o acesso com uma palavra-passe", - "join": "Entrar", - "withdraw": "Sair", - "points": "Pontos", - "wins": "Vitórias", - "losses": "Derrotas", - "createdBy": "Criado por", - "tournamentIsStarting": "O torneio está a começar", - "tournamentPairingsAreNowClosed": "Os emparelhamentos no torneio já estão fechados.", - "standByX": "Aguarda {param}, estamos a emparelhar jogadores, prepara-te!", - "pause": "Pausa", - "resume": "Continuar", - "youArePlaying": "Estás a jogar!", - "winRate": "Taxa de vitórias", - "berserkRate": "Taxa de partidas no modo frenético", - "performance": "Desempenho", - "tournamentComplete": "Torneio terminado", - "movesPlayed": "Movimentos feitos", - "whiteWins": "Vitórias com as brancas", - "blackWins": "Vitórias com as pretas", - "drawRate": "Taxa de empate", - "draws": "Empates", - "nextXTournament": "Próximo torneio de {param}:", - "averageOpponent": "Pontuação média dos adversários", - "boardEditor": "Editor de tabuleiro", - "setTheBoard": "Partilha o tabuleiro", - "popularOpenings": "Aberturas populares", - "endgamePositions": "Posições finais", - "chess960StartPosition": "Posição inicial do Xadrez960: {param}", - "startPosition": "Posição inicial", - "clearBoard": "Limpar o tabuleiro", - "loadPosition": "Carregar uma posição", - "isPrivate": "Privado", - "reportXToModerators": "Reportar {param} aos moderadores", - "profileCompletion": "Perfil completo: {param}", - "xRating": "Pontuação {param}", - "ifNoneLeaveEmpty": "Se não existir, deixa em branco", - "profile": "Perfil", - "editProfile": "Editar o perfil", - "realName": "Nome Real", - "setFlair": "Defina o teu estilo", - "flair": "Estilo", - "youCanHideFlair": "Há uma opção para ocultar todos os estilos dos utilizadores em todo o site.", - "biography": "Biografia", - "countryRegion": "País ou região", - "thankYou": "Obrigado!", - "socialMediaLinks": "Links das redes sociais", - "oneUrlPerLine": "Um URL por linha.", - "inlineNotation": "Anotações em linha", - "makeAStudy": "Para guardar e partilhar, considere fazer um estudo.", - "clearSavedMoves": "Limpar jogadas", - "previouslyOnLichessTV": "Anteriormente na TV Lichess", - "onlinePlayers": "Jogadores online", - "activePlayers": "Jogadores ativos", - "bewareTheGameIsRatedButHasNoClock": "Cuidado, o jogo vale pontos, mas não há limite de tempo!", - "success": "Sucesso", - "automaticallyProceedToNextGameAfterMoving": "Passar automaticamente ao jogo seguinte após a jogada", - "autoSwitch": "Alternar automaticamente", - "puzzles": "Problemas", - "onlineBots": "Bots online", - "name": "Nome", - "description": "Descrição", - "descPrivate": "Descrição privada", - "descPrivateHelp": "Texto que apenas está visível para os membros da equipa. Se definido, substitui a descrição pública dos membros da equipa.", - "no": "Não", - "yes": "Sim", - "help": "Ajuda:", - "createANewTopic": "Criar um novo tópico", - "topics": "Tópicos", - "posts": "Publicações", - "lastPost": "Última publicação", - "views": "Visualizações", - "replies": "Respostas", - "replyToThisTopic": "Responder a este tópico", - "reply": "Responder", - "message": "Mensagem", - "createTheTopic": "Criar o tópico", - "reportAUser": "Denunciar um utilizador", - "user": "Utilizador", - "reason": "Motivo", - "whatIsIheMatter": "Qual é o motivo?", - "cheat": "Batota", - "troll": "Troll", - "other": "Outro", - "reportDescriptionHelp": "Inclui o link do(s) jogo(s) e explica o que há de errado com o comportamento deste utilizador. Não digas apenas \"ele faz batota\"; informa-nos como chegaste a essa conclusão. A tua denúncia será processada mais rapidamente se for escrita em inglês.", - "error_provideOneCheatedGameLink": "Por favor, fornece-nos pelo menos um link para um jogo onde tenha havido batota.", - "by": "por {param}", - "importedByX": "Importado por {param}", - "thisTopicIsNowClosed": "Este tópico foi fechado.", - "blog": "Blog", - "notes": "Notas", - "typePrivateNotesHere": "Escreve notas privadas aqui", - "writeAPrivateNoteAboutThisUser": "Escreva uma nota privada sobre este utilizador", - "noNoteYet": "Ainda sem notas", - "invalidUsernameOrPassword": "Nome de utilizador ou palavra-passe incorretos", - "incorrectPassword": "Palavra-passe incorreta", - "invalidAuthenticationCode": "Código de autenticação inválido", - "emailMeALink": "Envie-me um link por e-mail", - "currentPassword": "Palavra-passe atual", - "newPassword": "Nova palavra-chave", - "newPasswordAgain": "Nova palavra-passe (novamente)", - "newPasswordsDontMatch": "As novas palavras-passe não coincidem", - "newPasswordStrength": "Força da palavra-passe", - "clockInitialTime": "Tempo inicial no relógio", - "clockIncrement": "Incremento no relógio", - "privacy": "Privacidade", - "privacyPolicy": "Política de privacidade", - "letOtherPlayersFollowYou": "Permitir que outros jogadores te sigam", - "letOtherPlayersChallengeYou": "Permitir que outros jogadores te desafiem", - "letOtherPlayersInviteYouToStudy": "Permitir que outros jogadores te convidem para estudos", - "sound": "Som", - "none": "Nenhum", - "fast": "Rápido", - "normal": "Normal", - "slow": "Lento", - "insideTheBoard": "Dentro do tabuleiro", - "outsideTheBoard": "Fora do tabuleiro", - "allSquaresOfTheBoard": "Todas as casas do tabuleiro", - "onSlowGames": "Em jogos lentos", - "always": "Sempre", - "never": "Nunca", - "xCompetesInY": "{param1} compete em {param2}", - "victory": "Vitória", - "defeat": "Derrota", - "victoryVsYInZ": "{param1} contra {param2} em {param3}", - "defeatVsYInZ": "{param1} contra {param2} em {param3}", - "drawVsYInZ": "{param1} contra {param2} em {param3}", - "timeline": "Cronologia", - "starting": "Começa às:", - "allInformationIsPublicAndOptional": "Todas as informações são públicas e opcionais.", - "biographyDescription": "Fala de ti, do que gostas no xadrez, das tuas aberturas favoritas, jogos, jogadores...", - "listBlockedPlayers": "Lista os jogadores que bloqueaste", - "human": "Humano", - "computer": "Computador", - "side": "Cor", - "clock": "Relógio", - "opponent": "Adversário", - "learnMenu": "Aprender", - "studyMenu": "Estudos", - "practice": "Praticar", - "community": "Comunidade", - "tools": "Ferramentas", - "increment": "Incremento", - "error_unknown": "Valor inválido", - "error_required": "Este campo tem de ser preenchido", - "error_email": "Este endereço de e-mail é inválido", - "error_email_acceptable": "Este endereço de e-mail não é aceitável. Por favor verifica-o e tenta outra vez.", - "error_email_unique": "Endereço de e-mail inválido ou já utilizado", - "error_email_different": "Este já é o teu endereço de e-mail", - "error_minLength": "Deve conter pelo menos {param} caracteres", - "error_maxLength": "Deve conter no máximo {param} caracteres", - "error_min": "Deve ser pelo menos {param}", - "error_max": "Deve ser no máximo {param}", - "ifRatingIsPlusMinusX": "Se a pontuação for ± {param}", - "ifRegistered": "Se registado", - "onlyExistingConversations": "Apenas conversas existentes", - "onlyFriends": "Apenas amigos", - "menu": "Menu", - "castling": "Roque", - "whiteCastlingKingside": "Brancas O-O", - "blackCastlingKingside": "Pretas O-O", - "tpTimeSpentPlaying": "Tempo passado a jogar: {param}", - "watchGames": "Ver jogos", - "tpTimeSpentOnTV": "Tempo a ser transmitido na TV: {param}", - "watch": "Observar", - "videoLibrary": "Videoteca", - "streamersMenu": "Streamers", - "mobileApp": "Aplicação móvel", - "webmasters": "Webmasters", - "about": "Sobre", - "aboutX": "Sobre o {param}", - "xIsAFreeYLibreOpenSourceChessServer": "O {param1} é um servidor de xadrez grátis ({param2}), sem publicidades e open-source.", - "really": "a sério", - "contribute": "Contribuir", - "termsOfService": "Termos de serviço", - "sourceCode": "Código fonte", - "simultaneousExhibitions": "Exibições simultâneas", - "host": "Anfitrião", - "hostColorX": "Cor do anfitrião: {param}", - "yourPendingSimuls": "Suas simultâneas pendentes", - "createdSimuls": "Simultâneas criadas recentemente", - "hostANewSimul": "Iniciar uma simultânea", - "signUpToHostOrJoinASimul": "Registra-te para hospedar ou juntar a uma simultânea", - "noSimulFound": "Simultânea não encontrada", - "noSimulExplanation": "Esta exibição simultânea não existe.", - "returnToSimulHomepage": "Voltar à página inicial da simultânea", - "aboutSimul": "As simultâneas envolvem um único jogador contra vários adversários ao mesmo tempo.", - "aboutSimulImage": "Contra 50 adversários, Fischer ganhou 47 jogos, empatou 2 e perdeu 1.", - "aboutSimulRealLife": "O conceito provém de eventos reais, nos quais o simultanista se move de mesa em mesa, executando um movimento de cada vez.", - "aboutSimulRules": "Quando a simultânea começa, cada jogador começa sua partida contra o anfitrião, que joga sempre com as peças brancas. A simultânea termina quando todas as partidas tiverem acabado.", - "aboutSimulSettings": "As simultâneas são sempre partidas amigáveis. Desforras, voltar jogadas atrás e dar mais tempo estão desativados.", - "create": "Criar", - "whenCreateSimul": "Quando crias uma simultânea, podes jogar com vários adversários ao mesmo tempo.", - "simulVariantsHint": "Se selecionares diversas variantes, cada jogador poderá escolher qual delas jogar.", - "simulClockHint": "Configuração de incrementos no relógio. Quanto mais jogadores admitires, mais tempo poderás necessitar.", - "simulAddExtraTime": "Podes acrescentar tempo adicional ao teu relógio, para te ajudar a lidar com a simultânea.", - "simulHostExtraTime": "Tempo adicional do anfitrião", - "simulAddExtraTimePerPlayer": "Adicione tempo inicial ao seu relógio para cada jogador que entra na simulação.", - "simulHostExtraTimePerPlayer": "Tempo extra de relógio por jogador", - "lichessTournaments": "Torneios do Lichess", - "tournamentFAQ": "Perguntas frequentes sobre torneios em arena", - "timeBeforeTournamentStarts": "Contagem decrescente para o início do torneio", - "averageCentipawnLoss": "Perda média de centésimos de peão", - "accuracy": "Precisão", - "keyboardShortcuts": "Atalhos do teclado", - "keyMoveBackwardOrForward": "retroceder/avançar jogada", - "keyGoToStartOrEnd": "ir para início/fim", - "keyCycleSelectedVariation": "Ciclo da variante selecionada", - "keyShowOrHideComments": "mostrar/ocultar os comentários", - "keyEnterOrExitVariation": "entrar/sair da variante", - "keyRequestComputerAnalysis": "Solicite análise do computador, Aprenda com seus erros", - "keyNextLearnFromYourMistakes": "Seguinte (Aprenda com os seus erros)", - "keyNextBlunder": "Próxima gafe", - "keyNextMistake": "Próximo erro", - "keyNextInaccuracy": "Próxima imprecisão", - "keyPreviousBranch": "Ramo anterior", - "keyNextBranch": "Próximo ramo", - "toggleVariationArrows": "Ativar/desactivar seta da variante", - "cyclePreviousOrNextVariation": "Ciclo anterior/próxima variante", - "toggleGlyphAnnotations": "Ativar/desativar anotações com símbolos", - "togglePositionAnnotations": "Ativar/desativar anotações de posição", - "variationArrowsInfo": "Setas de variação permitem navegar sem usar a lista de movimentos.", - "playSelectedMove": "jogar o movimento selecionado", - "newTournament": "Novo torneio", - "tournamentHomeTitle": "Torneios de xadrez com diversos ritmos de jogo e variantes", - "tournamentHomeDescription": "Joga xadrez em ritmo acelerado! Entra num torneio oficial agendado ou cria o teu próprio. Bullet, Rápida, Clássica, Chess960, Rei da Colina, Três Xeques e mais opções disponíveis para uma diversão ilimitada.", - "tournamentNotFound": "Torneio não encontrado", - "tournamentDoesNotExist": "Este torneio não existe.", - "tournamentMayHaveBeenCanceled": "O torneio pode ter sido cancelado, se todos os jogadores tiverem saíram antes do seu começo.", - "returnToTournamentsHomepage": "Voltar à página inicial de torneios", - "weeklyPerfTypeRatingDistribution": "Distribuição semanal de pontuação em {param}", - "yourPerfTypeRatingIsRating": "A tua pontuação em {param1} é {param2}.", - "youAreBetterThanPercentOfPerfTypePlayers": "És melhor que {param1} dos jogadores de {param2}.", - "userIsBetterThanPercentOfPerfTypePlayers": "{param1} é melhor que {param2} dos jogadores de {param3}.", - "betterThanPercentPlayers": "Melhor que {param1} de {param2} jogadores", - "youDoNotHaveAnEstablishedPerfTypeRating": "Não tens uma pontuação estabelecida em {param}.", - "yourRating": "A tua pontuação", - "cumulative": "Acumulativo", - "glicko2Rating": "Pontuação Glicko-2", - "checkYourEmail": "Verifica o teu e-mail", - "weHaveSentYouAnEmailClickTheLink": "Enviámos-te um e-mail. Clica no link nesse e-mail para ativares a tua conta.", - "ifYouDoNotSeeTheEmailCheckOtherPlaces": "Se você não vires o e-mail, verifica outros locais onde este possa estar, como pastas de lixo, spam, social ou outras.", - "weHaveSentYouAnEmailTo": "Enviámos-te um e-mail para {param}. Clica no link nesse e-mail para redefinires a tua palavra-passe.", - "byRegisteringYouAgreeToBeBoundByOur": "Ao criares uma conta, concordas comprometeres-te com os nossos {param}.", - "readAboutOur": "Lê sobre a nossa {param}.", - "networkLagBetweenYouAndLichess": "Atraso na rede entre ti e o Lichess", - "timeToProcessAMoveOnLichessServer": "Tempo para processar um movimento no servidor do Lichess", - "downloadAnnotated": "Transferir anotação", - "downloadRaw": "Transferir texto", - "downloadImported": "Transferir a partida importada", - "crosstable": "Tabela", - "youCanAlsoScrollOverTheBoardToMoveInTheGame": "Também podes rodar a rodinha do rato sobre o tabuleiro para percorreres as jogadas na partida.", - "scrollOverComputerVariationsToPreviewThem": "Passe o rato sobre as variantes do computador para visualizá-las.", - "analysisShapesHowTo": "Pressiona shift+clique ou clica com o botão direito do rato para desenhares círculos e setas no tabuleiro.", - "letOtherPlayersMessageYou": "Permitir que outros jogadores te enviem mensagens", - "receiveForumNotifications": "Olá aOlá a todos", - "shareYourInsightsData": "Compartilhar os teus dados de \"insights\" de xadrez", - "withNobody": "Com ninguém", - "withFriends": "Com amigos", - "withEverybody": "Com todos", - "kidMode": "Modo infantil", - "kidModeIsEnabled": "Modo infantil está ativado.", - "kidModeExplanation": "Iso é sobre segurança. No modo infantil, todas as comunicações do site ficam desactivadas. Activa esta opção para os teus filhos ou alunos, para protegê-los de outros utilizadores da internet.", - "inKidModeTheLichessLogoGetsIconX": "No modo criança, o logótipo do Lichess fica com um ícone {param} para que saibas que as tuas crianças estão seguras.", - "askYourChessTeacherAboutLiftingKidMode": "A sua conta é gerida. Peça ao seu professor de xadrez para retirar o modo infantil.", - "enableKidMode": "Ativar o modo infantil", - "disableKidMode": "Desativar o modo infantil", - "security": "Segurança", - "sessions": "Sessões", - "revokeAllSessions": "desativar todas as sessões", - "playChessEverywhere": "Joga xadrez em qualquer lugar", - "asFreeAsLichess": "Tão gratuito quanto o Lichess", - "builtForTheLoveOfChessNotMoney": "Desenvolvido pelo amor ao xadrez, não pelo dinheiro", - "everybodyGetsAllFeaturesForFree": "Todos têm todos os recursos gratuitamente", - "zeroAdvertisement": "Zero anúncios", - "fullFeatured": "Cheio de recursos", - "phoneAndTablet": "Telemóvel e tablet", - "bulletBlitzClassical": "Bullet, blitz, clássico", - "correspondenceChess": "Xadrez por correspondência", - "onlineAndOfflinePlay": "Jogar online e offline", - "viewTheSolution": "Ver a solução", - "followAndChallengeFriends": "Joga e desafia amigos", - "gameAnalysis": "Análise da partida", - "xHostsY": "{param1} criou a exibição simultânea {param2}", - "xJoinsY": "{param1} entrou em {param2}", - "xLikesY": "{param1} gostou de {param2}", - "quickPairing": "Emparelhamento rápido", - "lobby": "Sala de espera", - "anonymous": "Anônimo", - "yourScore": "O teu resultado: {param}", - "language": "Lingua", - "background": "Fundo", - "light": "Claro", - "dark": "Escuro", - "transparent": "Transparente", - "deviceTheme": "Tema do dispositivo", - "backgroundImageUrl": "URL da imagem de fundo:", - "board": "Tabuleiro", - "size": "Tamanho", - "opacity": "Opacidade", - "brightness": "Brilho", - "hue": "Tonalidade", - "boardReset": "Redefinir cores para o padrão", - "pieceSet": "Peças", - "embedInYourWebsite": "Incorporar no teu site", - "usernameAlreadyUsed": "Este nome de utilizador já existe, por favor escolhe outro.", - "usernamePrefixInvalid": "O nome do utilizador tem começar com uma letra.", - "usernameSuffixInvalid": "O nome do utilizador tem de acabar com uma letra ou número.", - "usernameCharsInvalid": "O nome do utilizador só pode conter letras, números, underscores ou hífenes.", - "usernameUnacceptable": "Este nome de utilizador não é aceitável.", - "playChessInStyle": "Jogar xadrez com estilo", - "chessBasics": "O básico do xadrez", - "coaches": "Treinadores", - "invalidPgn": "PGN inválido", - "invalidFen": "FEN inválido", - "custom": "Personalizado", - "notifications": "Notificações", - "notificationsX": "Notificações: {param1}", - "perfRatingX": "Pontuação: {param}", - "practiceWithComputer": "Praticar com o computador", - "anotherWasX": "Outro seria {param}", - "bestWasX": "{param} seria melhor", - "youBrowsedAway": "Saíste", - "resumePractice": "Continuar a prática", - "drawByFiftyMoves": "O jogo foi empatado de acordo com a regra dos cinquenta lances.", - "theGameIsADraw": "O jogo é um empate.", - "computerThinking": "Computador a pensar...", - "seeBestMove": "Ver o melhor movimento", - "hideBestMove": "Ocultar o melhor movimento", - "getAHint": "Obter uma dica", - "evaluatingYourMove": "A analisar o teu movimento ...", - "whiteWinsGame": "As brancas ganham", - "blackWinsGame": "As pretas ganham", - "learnFromYourMistakes": "Aprende com os teus erros", - "learnFromThisMistake": "Aprende com este erro", - "skipThisMove": "Saltar este movimento", - "next": "Seguinte", - "xWasPlayed": "{param} foi jogado", - "findBetterMoveForWhite": "Encontra um melhor movimento para as brancas", - "findBetterMoveForBlack": "Encontra um melhor movimento para as pretas", - "resumeLearning": "Continuar a aprendizagem", - "youCanDoBetter": "Podes fazer melhor", - "tryAnotherMoveForWhite": "Tenta outro movimento para as brancas", - "tryAnotherMoveForBlack": "Tenta outro movimento para as pretas", - "solution": "Solução", - "waitingForAnalysis": "A aguardar pela análise", - "noMistakesFoundForWhite": "Não foram encontrados erros das brancas", - "noMistakesFoundForBlack": "Não foram encontrados erros das pretas", - "doneReviewingWhiteMistakes": "Terminada a revisão de erros das brancas", - "doneReviewingBlackMistakes": "Terminada a revisão de erros das pretas", - "doItAgain": "Repetir", - "reviewWhiteMistakes": "Rever os erros das brancas", - "reviewBlackMistakes": "Rever os erros das pretas", - "advantage": "Vantagem", - "opening": "Abertura", - "middlegame": "Meio jogo", - "endgame": "Final de jogo", - "conditionalPremoves": "Movimentos antecipados condicionais", - "addCurrentVariation": "Adicionar a variante atual", - "playVariationToCreateConditionalPremoves": "Joga uma variante para criares movimentos antecipados condicionais", - "noConditionalPremoves": "Sem movimentos antecipados condicionais", - "playX": "Joga {param}", - "showUnreadLichessMessage": "Recebestes uma mensagem privada do Lichess.", - "clickHereToReadIt": "Clica aqui para ler", - "sorry": "Desculpa :(", - "weHadToTimeYouOutForAWhile": "Tivemos de te banir por algum tempo.", - "why": "Porquê?", - "pleasantChessExperience": "Tencionamos proporcionar uma experiência de xadrez agradável a todos.", - "goodPractice": "Para isso, temos de nos assegurar que todos os jogadores seguem boas práticas.", - "potentialProblem": "Quando um potencial problema é detetado, exibimos esta mensagem.", - "howToAvoidThis": "Como evitar isto?", - "playEveryGame": "Joga todas as partidas que começares.", - "tryToWin": "Tenta ganhar (ou pelo menos empatar) todas as partida que jogares.", - "resignLostGames": "Desiste em partidas perdidas (não deixes o tempo no relógio acabar).", - "temporaryInconvenience": "Pedimos desculpa pelo incómodo temporário,", - "wishYouGreatGames": "e desejamos-te grandes jogos no lichess.org.", - "thankYouForReading": "Obrigado pela leitura!", - "lifetimeScore": "Pontuação desde sempre", - "currentMatchScore": "Pontuação atual", - "agreementAssistance": "Concordo que nunca recorrerei a assistência durante as minhas partidas (de um computador de xadrez, livro, base de dados ou outra pessoa).", - "agreementNice": "Concordo que serei sempre repeitoso para os outros jogadores.", - "agreementMultipleAccounts": "Concordo que não criarei várias contas (exceto pelas razões indicadas em {param}).", - "agreementPolicy": "Concordo que seguirei todas as políticas do Lichess.", - "searchOrStartNewDiscussion": "Pesquisa ou começa uma nova conversa", - "edit": "Editar", - "bullet": "Bullet", - "blitz": "Rápidas", - "rapid": "Semi-rápidas", - "classical": "Clássicas", - "ultraBulletDesc": "Partidas incrivelmente rápidas: menos de 30 segundos", - "bulletDesc": "Partidas muito rápidas: menos de 3 minutos", - "blitzDesc": "Partidas rápidas: 3 a 8 minutos", - "rapidDesc": "Partidas semi-rápidas: 8 a 25 minutos", - "classicalDesc": "Partidas clássicas: 25 minutos ou mais", - "correspondenceDesc": "Partidas por correspondência: um ou vários dias por lance", - "puzzleDesc": "Treinador de táticas de xadrez", - "important": "Importante", - "yourQuestionMayHaveBeenAnswered": "A tua pergunta pode já ter uma resposta {param1}", - "inTheFAQ": "no F.A.Q. (perguntas frequentes).", - "toReportSomeoneForCheatingOrBadBehavior": "Para reportares um utilizador por fazer batota ou por mau comportamento, {param1}.", - "useTheReportForm": "usa a ficha própria para o fazeres", - "toRequestSupport": "Para solicitares suporte, {param1}.", - "tryTheContactPage": "tenta a página de contacto", - "makeSureToRead": "Certifique-se que lê {param1}", - "theForumEtiquette": "a etiqueta do fórum", - "thisTopicIsArchived": "Este tópico foi arquivado e já não pode ser respondido.", - "joinTheTeamXToPost": "Junta-te a {param1}, para publicares neste fórum", - "teamNamedX": "equipa {param1}", - "youCannotPostYetPlaySomeGames": "Ainda não podes publicar nos fóruns. Joga alguns jogos!", - "subscribe": "Subscrever-se", - "unsubscribe": "Cancelar a subscrição", - "mentionedYouInX": "foste mencionado em \"{param1}\".", - "xMentionedYouInY": "{param1} mencionou-te em \"{param2}\".", - "invitedYouToX": "convidou-te para \"{param1}\".", - "xInvitedYouToY": "{param1} convidou-te para \"{param2}\".", - "youAreNowPartOfTeam": "Já fazes parte da equipa.", - "youHaveJoinedTeamX": "Juntaste-te a \"{param1}\".", - "someoneYouReportedWasBanned": "Alguém que denunciaste foi banido", - "congratsYouWon": "Parabéns! Ganhaste!", - "gameVsX": "Jogo vs {param1}", - "resVsX": "{param1} vs {param2}", - "lostAgainstTOSViolator": "Perdes-te contra alguém que violou as regras do Lichess", - "refundXpointsTimeControlY": "Devolução: {param1} {param2} pontos de Elo.", - "timeAlmostUp": "O tempo está quase a terminar!", - "clickToRevealEmailAddress": "[Clique para revelar o endereço de e-mail]", - "download": "Transferir", - "coachManager": "Gestor de treinadores", - "streamerManager": "Gestor do streamer", - "cancelTournament": "Cancelar o torneio", - "tournDescription": "Descrição do torneio", - "tournDescriptionHelp": "Quer dizer alguma coisa em especial aos participantes? Seja breve. Estão disponíveis ligações de Markdown: [name](https://url)", - "ratedFormHelp": "Os jogos são classificados\ne afetam as avaliações dos jogadores", - "onlyMembersOfTeam": "Apenas membros da equipa", - "noRestriction": "Sem restrições", - "minimumRatedGames": "Jogos com classificação mínima", - "minimumRating": "Classificação mínima", - "maximumWeeklyRating": "Avaliação semanal máxima", - "positionInputHelp": "Cole um FEN válido para iniciar todos os jogos a partir de uma determinada posição.\nSó funciona para os jogos padrão, não com variantes.\nVocê pode usar o {param} para gerar uma posição FEN e, em seguida, colá-lo aqui.\nDeixe em branco para iniciar jogos da posição inicial normal.", - "cancelSimul": "Cancelar a simultânea", - "simulHostcolor": "Cor do anfitrião para cada jogo", - "estimatedStart": "Hora de início prevista", - "simulFeatured": "Em destaque em {param}", - "simulFeaturedHelp": "Mostre a sua simultânea a todos em {param}. Desativar para simultâneas privadas.", - "simulDescription": "Descrição da simultânea", - "simulDescriptionHelp": "Quer dizer alguma coisa aos participantes?", - "markdownAvailable": "{param} está disponível para sintaxe mais avançada.", - "embedsAvailable": "Cole o URL de um jogo ou um URL de um capítulo de estudo para integrá-lo.", - "inYourLocalTimezone": "No seu próprio fuso horário local", - "tournChat": "Chat do torneio", - "noChat": "Sem chat", - "onlyTeamLeaders": "Apenas líderes da equipa", - "onlyTeamMembers": "Apenas membros da equipa", - "navigateMoveTree": "Navegar pela árvore de movimentos", - "mouseTricks": "Movimentos do rato", - "toggleLocalAnalysis": "Ativar/desativar análise local no computador", - "toggleAllAnalysis": "Alternar todas as análises no computador", - "playComputerMove": "Jogar o melhor lance do computador", - "analysisOptions": "Opções de análise", - "focusChat": "Focar no bate-papo", - "showHelpDialog": "Mostrar esta mensagem de ajuda", - "reopenYourAccount": "Reabrir a sua conta", - "closedAccountChangedMind": "Se fechou a sua conta mas desde então mudou de ideias, terá uma oportunidade de recuperar a sua conta.", - "onlyWorksOnce": "Isto só vai funcionar uma única vez.", - "cantDoThisTwice": "Se fechar a conta uma segunda vez, não haverá forma de a recuperar.", - "emailAssociatedToaccount": "Endereço de email associado à conta", - "sentEmailWithLink": "Enviámos-lhe um e-mail com um link.", - "tournamentEntryCode": "Código de entrada do torneio", - "hangOn": "Aguarde!", - "gameInProgress": "Tem um jogo em curso com {param}.", - "abortTheGame": "Cancelar o jogo", - "resignTheGame": "Abandonar o jogo", - "youCantStartNewGame": "Não pode iniciar um novo jogo antes de este estar terminado.", - "since": "Desde", - "until": "Até", - "lichessDbExplanation": "Jogos avaliados por amostragem de todos os jogadores Lichess", - "switchSides": "Trocar de lado", - "closingAccountWithdrawAppeal": "Encerrar a tua conta anula o teu apelo", - "ourEventTips": "Os nossos conselhos para organizar eventos", - "instructions": "Instruções", - "showMeEverything": "Mostra-me tudo", - "lichessPatronInfo": "Lichess é uma instituição de caridade e software de código aberto totalmente livre.\nTodos os custos operacionais, de desenvolvimento e conteúdo são financiados exclusivamente por doações de usuários.", - "nothingToSeeHere": "Nada para ver aqui no momento.", - "opponentLeftCounter": "{count, plural, =1{O teu adversário deixou a partida. Podes reivindicar vitória em {count} segundo.} other{O teu adversário deixou a partida. Podes reivindicar vitória em {count} segundos.}}", - "mateInXHalfMoves": "{count, plural, =1{Xeque-mate em {count} meio-movimento} other{Xeque-mate em {count} meio-movimentos}}", - "nbBlunders": "{count, plural, =1{{count} erro grave} other{{count} erros graves}}", - "nbMistakes": "{count, plural, =1{{count} erro} other{{count} erros}}", - "nbInaccuracies": "{count, plural, =1{{count} imprecisão} other{{count} imprecisões}}", - "nbPlayers": "{count, plural, =1{{count} jogador} other{{count} jogadores}}", - "nbGames": "{count, plural, =1{{count} jogo} other{{count} jogos}}", - "ratingXOverYGames": "{count, plural, =1{{param2} partida {count} avaliada} other{{param2} partidas {count} avaliadas}}", - "nbBookmarks": "{count, plural, =1{{count} favorito} other{{count} favoritos}}", - "nbDays": "{count, plural, =1{{count} dia} other{{count} dias}}", - "nbHours": "{count, plural, =1{{count} hora} other{{count} horas}}", - "nbMinutes": "{count, plural, =1{{count} minuto} other{{count} minutos}}", - "rankIsUpdatedEveryNbMinutes": "{count, plural, =1{As posições são atualizadas a cada minuto} other{As posições são atualizadas a cada {count} minutos}}", - "nbPuzzles": "{count, plural, =1{{count} problema} other{{count} problemas}}", - "nbGamesWithYou": "{count, plural, =1{{count} jogo contigo} other{{count} jogos contigo}}", - "nbRated": "{count, plural, =1{{count} partida a valer pontos} other{{count} partidas a valer pontos}}", - "nbWins": "{count, plural, =1{{count} vitória} other{{count} vitórias}}", - "nbLosses": "{count, plural, =1{{count} derrota} other{{count} derrotas}}", - "nbDraws": "{count, plural, =1{{count} empate} other{{count} empates}}", - "nbPlaying": "{count, plural, =1{{count} a jogar} other{{count} a jogar}}", - "giveNbSeconds": "{count, plural, =1{Dar {count} segundo} other{Dar {count} segundos}}", - "nbTournamentPoints": "{count, plural, =1{{count} ponto de torneio} other{{count} pontos de torneio}}", - "nbStudies": "{count, plural, =1{{count} estudo} other{{count} estudos}}", - "nbSimuls": "{count, plural, =1{{count} simultânea} other{{count} simultâneas}}", - "moreThanNbRatedGames": "{count, plural, =1{≥ {count} partida a valer pontos} other{≥ {count} partidas a valer pontos}}", - "moreThanNbPerfRatedGames": "{count, plural, =1{≥ {count} partida de {param2} a valer pontos} other{≥ {count} partidas de {param2} a valer pontos}}", - "needNbMorePerfGames": "{count, plural, =1{Precisas de jogar mais {count} jogo de {param2} a valer pontos} other{Precisa de jogar mais {count} jogos de {param2} a valer pontos}}", - "needNbMoreGames": "{count, plural, =1{Tens de jogar mais {count} jogo a valer pontos} other{Tens de jogar mais {count} jogos a valer pontos}}", - "nbImportedGames": "{count, plural, =1{{count} partida importada} other{{count} partidas importadas}}", - "nbFriendsOnline": "{count, plural, =1{{count} amigo online} other{{count} amigos online}}", - "nbFollowers": "{count, plural, =1{{count} seguidor} other{{count} seguidores}}", - "nbFollowing": "{count, plural, =1{a seguir {count} jogador} other{a seguir {count} jogadores}}", - "lessThanNbMinutes": "{count, plural, =1{Menos de {count} minuto} other{Menos de {count} minutos}}", - "nbGamesInPlay": "{count, plural, =1{{count} jogo a decorrer} other{{count} jogos a decorrer}}", - "maximumNbCharacters": "{count, plural, =1{Máximo: {count} carácter.} other{Máximo: {count} caracteres.}}", - "blocks": "{count, plural, =1{{count} bloqueado} other{{count} bloqueados}}", - "nbForumPosts": "{count, plural, =1{{count} publicação no fórum} other{{count} publicações no fórum}}", - "nbPerfTypePlayersThisWeek": "{count, plural, =1{{count} jogador ativo esta semana em {param2}.} other{{count} jogadores ativos esta semana em {param2}.}}", - "availableInNbLanguages": "{count, plural, =1{Disponível em {count} língua!} other{Disponível em {count} línguas!}}", - "nbSecondsToPlayTheFirstMove": "{count, plural, =1{{count} segundo para jogar o primeiro movimento} other{{count} segundos para jogar o primeiro movimento}}", - "nbSeconds": "{count, plural, =1{{count} segundo} other{{count} segundos}}", - "andSaveNbPremoveLines": "{count, plural, =1{e guarda {count} variante de movimentos antecipados} other{e guarda {count} variantes de movimentos antecipados}}", - "stormMoveToStart": "Faz um lance para começar", - "stormYouPlayTheWhitePiecesInAllPuzzles": "Jogas com as peças brancas em todos os problemas", - "stormYouPlayTheBlackPiecesInAllPuzzles": "Jogas com as peças pretas em todos os problemas", - "stormPuzzlesSolved": "problemas resolvidos", - "stormNewDailyHighscore": "Novo recorde diário!", - "stormNewWeeklyHighscore": "Novo recorde semanal!", - "stormNewMonthlyHighscore": "Novo recorde mensal!", - "stormNewAllTimeHighscore": "Novo recorde!", - "stormPreviousHighscoreWasX": "O recorde anterior era {param}", - "stormPlayAgain": "Jogar novamente", - "stormHighscoreX": "Recorde: {param}", - "stormScore": "Pontuação", - "stormMoves": "Total de lances", - "stormAccuracy": "Precisão", - "stormCombo": "Combo", - "stormTime": "Tempo", - "stormTimePerMove": "Tempo por jogada", - "stormHighestSolved": "Problema mais difícil resolvido", - "stormPuzzlesPlayed": "Problemas jogados", - "stormNewRun": "Nova partida (tecla: espaço)", - "stormEndRun": "Terminar partida (tecla: Enter)", - "stormHighscores": "Recorde", - "stormViewBestRuns": "Ver as melhores partidas", - "stormBestRunOfDay": "Melhor partida do dia", - "stormRuns": "Partidas", - "stormGetReady": "Preparar!", - "stormWaitingForMorePlayers": "À espera de mais jogadores...", - "stormRaceComplete": "Race concluída!", - "stormSpectating": "A assistir", - "stormJoinTheRace": "Junta-te à corrida!", - "stormStartTheRace": "Começar a corrida", - "stormYourRankX": "A tua pontuação: {param}", - "stormWaitForRematch": "Espera pela desforra", - "stormNextRace": "Próxima corrida", - "stormJoinRematch": "Juntar-se à desforra", - "stormWaitingToStart": "À espera de começar", - "stormCreateNewGame": "Criar um novo jogo", - "stormJoinPublicRace": "Junta-te a uma corrida pública", - "stormRaceYourFriends": "Corre contra os teus amigos", - "stormSkip": "ignorar", - "stormSkipHelp": "Pode pular um movimento por corrida:", - "stormSkipExplanation": "Passa à frente esta jogada para preservares o teu combo! Só podes fazê-lo apenas uma vez por Race.", - "stormFailedPuzzles": "Desafios falhados", - "stormSlowPuzzles": "Desafios lentos", - "stormSkippedPuzzle": "Desafios saltados", - "stormThisWeek": "Esta semana", - "stormThisMonth": "Este mês", - "stormAllTime": "Desde sempre", - "stormClickToReload": "Clique para recarregar", - "stormThisRunHasExpired": "Esta sessão expirou!", - "stormThisRunWasOpenedInAnotherTab": "Esta sessão foi aberta noutra aba!", - "stormXRuns": "{count, plural, =1{1 partida} other{{count} tentativas}}", - "stormPlayedNbRunsOfPuzzleStorm": "{count, plural, =1{Jogou uma partida de {param2}} other{Jogou {count} partidas de {param2}}}", - "streamerLichessStreamers": "Streamers no Lichess", - "studyShareAndExport": "Partilhar & exportar", - "studyStart": "Iniciar" -} \ No newline at end of file diff --git a/lib/l10n/lila_ro.arb b/lib/l10n/lila_ro.arb index 9df471fb1d..06e6ade905 100644 --- a/lib/l10n/lila_ro.arb +++ b/lib/l10n/lila_ro.arb @@ -1,4 +1,15 @@ { + "mobileHomeTab": "Acasă", + "mobileSettingsTab": "Setări", + "mobileMustBeLoggedIn": "Trebuie să te autentifici pentru a accesa această pagină.", + "mobileFeedbackButton": "Feedback", + "mobileOkButton": "OK", + "mobileAllGames": "Toate jocurile", + "mobileShowComments": "Afişează сomentarii", + "mobileShowResult": "Arată rezultatul", + "mobilePuzzleStormSubtitle": "Rezolvă cât mai multe puzzle-uri în 3 minute.", + "mobileGreeting": "Salut, {param}", + "mobileGreetingWithoutName": "Salut", "activityActivity": "Activitate", "activityHostedALiveStream": "A găzduit un live stream", "activityRankedInSwissTournament": "Evaluat #{param1} în {param2}", @@ -496,6 +507,7 @@ "latestForumPosts": "Ultimele postări pe forum", "players": "Jucători", "friends": "Prieteni", + "otherPlayers": "alți jucători", "discussions": "Discuții", "today": "Astăzi", "yesterday": "Ieri", diff --git a/lib/l10n/lila_ru.arb b/lib/l10n/lila_ru.arb index 02bc5b04e2..f27d6066a3 100644 --- a/lib/l10n/lila_ru.arb +++ b/lib/l10n/lila_ru.arb @@ -1,4 +1,47 @@ { + "mobileHomeTab": "Главная", + "mobilePuzzlesTab": "Задачи", + "mobileToolsTab": "Анализ", + "mobileWatchTab": "Просмотр", + "mobileSettingsTab": "Настройки", + "mobileMustBeLoggedIn": "Вы должны войти для просмотра этой страницы.", + "mobileSystemColors": "Цвет интерфейса", + "mobileFeedbackButton": "Отзыв", + "mobileOkButton": "ОК", + "mobileSettingsHapticFeedback": "Виброотклик", + "mobileSettingsImmersiveMode": "Полноэкранный режим", + "mobileSettingsImmersiveModeSubtitle": "Скрывать интерфейс во время игры. Воспользуйтесь, если вам мешает навигация по краям экрана. Применяется в режиме партий и задач.", + "mobileNotFollowingAnyUser": "Вы не подписаны на других пользователей.", + "mobileAllGames": "Все игры", + "mobileRecentSearches": "Последние запросы", + "mobileClearButton": "Очистить", + "mobilePlayersMatchingSearchTerm": "Игроки, содержащие «{param}»", + "mobileNoSearchResults": "Ничего не найденo", + "mobileAreYouSure": "Вы уверены?", + "mobilePuzzleStreakAbortWarning": "Вы потеряете свою текущую серию, и результаты будут сохранены.", + "mobilePuzzleStormNothingToShow": "Ничего нет. Сыграйте несколько попыток.", + "mobileSharePuzzle": "Поделиться задачей", + "mobileShareGameURL": "Поделиться ссылкой на игру", + "mobileShareGamePGN": "Поделиться PGN", + "mobileSharePositionAsFEN": "Поделиться FEN", + "mobileShowVariations": "Показывать варианты", + "mobileHideVariation": "Скрыть варианты", + "mobileShowComments": "Показать комментарии", + "mobilePuzzleStormConfirmEndRun": "Хотите закончить эту попытку?", + "mobilePuzzleStormFilterNothingToShow": "Ничего не найдено, измените фильтры, пожалуйста", + "mobileCancelTakebackOffer": "Отменить предложение о возврате хода", + "mobileCancelDrawOffer": "Отменить предложение ничьей", + "mobileWaitingForOpponentToJoin": "Ожидание соперника...", + "mobileBlindfoldMode": "Игра вслепую", + "mobileLiveStreamers": "Стримеры в эфире", + "mobileCustomGameJoinAGame": "Присоединиться к игре", + "mobileCorrespondenceClearSavedMove": "Очистить сохранённый ход", + "mobileSomethingWentWrong": "Что-то пошло не так.", + "mobileShowResult": "Показать результат", + "mobilePuzzleThemesSubtitle": "Решайте задачи по вашим любимым дебютам или выберите тему.", + "mobilePuzzleStormSubtitle": "Решите как можно больше задач за 3 минуты.", + "mobileGreeting": "Привет, {param}", + "mobileGreetingWithoutName": "Привет", "activityActivity": "Активность", "activityHostedALiveStream": "Проведён стрим", "activityRankedInSwissTournament": "Занято {param1} место в {param2}", @@ -359,7 +402,7 @@ "toInviteSomeoneToPlayGiveThisUrl": "Чтобы пригласить друга, отправьте ему эту ссылку", "gameOver": "Партия окончена", "waitingForOpponent": "Ожидание соперника", - "orLetYourOpponentScanQrCode": "Или дайте вашему сопернику отсканировать этот QR-код", + "orLetYourOpponentScanQrCode": "Или позвольте вашему сопернику отсканировать этот QR-код", "waiting": "Ожидание", "yourTurn": "Ваш ход", "aiNameLevelAiLevel": "{param1} уровня {param2}", @@ -498,6 +541,7 @@ "latestForumPosts": "Последние сообщения на форуме", "players": "Игроки", "friends": "Друзья", + "otherPlayers": "другие игроки", "discussions": "Беседы", "today": "Сегодня", "yesterday": "Вчера", @@ -728,6 +772,7 @@ "ifNoneLeaveEmpty": "Если нет, оставьте пустым", "profile": "Профиль", "editProfile": "Редактировать профиль", + "realName": "Настоящее имя", "setFlair": "Задайте свой эмодзи", "flair": "Эмодзи", "youCanHideFlair": "Эта настройка скрывает все эмодзи пользователей на всём сайте.", @@ -754,6 +799,8 @@ "descPrivateHelp": "Текст, который будут видеть только члены команды(добавленный текст заменит публичное описание для членов команды).", "no": "Нет", "yes": "Да", + "website": "Сайт", + "mobile": "Мобильный", "help": "Помощь:", "createANewTopic": "Создать новую тему", "topics": "Темы", @@ -805,6 +852,7 @@ "slow": "Медленно", "insideTheBoard": "Внутри доски", "outsideTheBoard": "Вне доски", + "allSquaresOfTheBoard": "Все поля на доске", "onSlowGames": "В медленных играх", "always": "Всегда", "never": "Никогда", @@ -1059,7 +1107,7 @@ "potentialProblem": "Когда мы обнаруживаем потенциальную проблему, мы показываем это сообщение.", "howToAvoidThis": "Как избежать этого?", "playEveryGame": "Доигрывайте все партии, которые начинали.", - "tryToWin": "Пытайтесь выиграть (или хотя бы свести на ничью) каждую свою партию.", + "tryToWin": "Попытайтесь выиграть (или хотя бы свести вничью) каждую свою партию.", "resignLostGames": "Сдавайтесь в безнадёжной позиции (а не ждите, когда время закончится).", "temporaryInconvenience": "Приносим извинения за временные неудобства,", "wishYouGreatGames": "и желаем вам отличной игры на lichess.org.", diff --git a/lib/l10n/lila_sk.arb b/lib/l10n/lila_sk.arb index be541258a3..a65796c05f 100644 --- a/lib/l10n/lila_sk.arb +++ b/lib/l10n/lila_sk.arb @@ -1,4 +1,47 @@ { + "mobileHomeTab": "Domov", + "mobilePuzzlesTab": "Úlohy", + "mobileToolsTab": "Nástroje", + "mobileWatchTab": "Sledovať", + "mobileSettingsTab": "Nastavenia", + "mobileMustBeLoggedIn": "Na zobrazenie tejto stránky musíte byť prihlásený.", + "mobileSystemColors": "Farby operačného systému", + "mobileFeedbackButton": "Spätná väzba", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Vibrovanie zariadenia", + "mobileSettingsImmersiveMode": "Režim celej obrazovky", + "mobileSettingsImmersiveModeSubtitle": "Skrytie používateľského rozhrania systému počas hrania. Túto funkciu použite, ak vám prekážajú navigačné gestá systému na okrajoch obrazovky. Vzťahuje sa na obrazovku počas partie a Puzzle Storm.", + "mobileNotFollowingAnyUser": "Nesledujete žiadneho používateľa.", + "mobileAllGames": "Všetky partie", + "mobileRecentSearches": "Posledné vyhľadávania", + "mobileClearButton": "Odstrániť", + "mobilePlayersMatchingSearchTerm": "Hráči s \"{param}\"", + "mobileNoSearchResults": "Nič sa nenašlo", + "mobileAreYouSure": "Ste si istý?", + "mobilePuzzleStreakAbortWarning": "Stratíte svoju aktuálnu sériu a vaše skóre sa uloží.", + "mobilePuzzleStormNothingToShow": "Niet čo zobraziť. Zahrajte si niekoľko kôl Puzzle Storm.", + "mobileSharePuzzle": "Zdieľať túto úlohu", + "mobileShareGameURL": "Zdieľať URL partie", + "mobileShareGamePGN": "Zdieľať PGN", + "mobileSharePositionAsFEN": "Zdieľať pozíciu vo formáte FEN", + "mobileShowVariations": "Zobraziť varianty", + "mobileHideVariation": "Skryť varianty", + "mobileShowComments": "Zobraziť komentáre", + "mobilePuzzleStormConfirmEndRun": "Chcete ukončiť tento pokus?", + "mobilePuzzleStormFilterNothingToShow": "Niet čo zobraziť, prosím, zmeňte filtre", + "mobileCancelTakebackOffer": "Zrušiť žiadosť o vrátenie ťahu", + "mobileCancelDrawOffer": "Zrušiť navrhnutie remízy", + "mobileWaitingForOpponentToJoin": "Čaká sa na pripojenie súpera...", + "mobileBlindfoldMode": "Naslepo", + "mobileLiveStreamers": "Vysielajúci strímeri", + "mobileCustomGameJoinAGame": "Pripojiť sa k partii", + "mobileCorrespondenceClearSavedMove": "Vymazať uložený ťah", + "mobileSomethingWentWrong": "Došlo k chybe.", + "mobileShowResult": "Zobraziť výsledok", + "mobilePuzzleThemesSubtitle": "Riešte úlohy zo svojich obľúbených otvorení alebo si vyberte tému.", + "mobilePuzzleStormSubtitle": "Vyriešte čo najviac úloh za 3 minúty.", + "mobileGreeting": "Ahoj, {param}", + "mobileGreetingWithoutName": "Ahoj", "activityActivity": "Aktivita", "activityHostedALiveStream": "Vysielal naživo", "activityRankedInSwissTournament": "Umiestnený ako #{param1} v {param2}", @@ -202,7 +245,7 @@ "puzzleFailed": "zlyhané", "puzzleStreakDescription": "Riešte postupne ťažšie úlohy a dosiahnite nepretržitú sériu správnych riešení. Nie sú tu žiadne hodiny, takže sa neponáhľajte. Stačí jeden nesprávny ťah a séria sa končí! V každej sérii je však môžete jeden ťah vynechať.", "puzzleYourStreakX": "Vaša séria výhier: {param}", - "puzzleStreakSkipExplanation": "Preskočte tento ťah, aby ste neprerušili sériu! Funguje len raz za sériu.", + "puzzleStreakSkipExplanation": "Preskočte tento ťah, aby ste neprerušili sériu! Funguje len raz za kolo.", "puzzleContinueTheStreak": "Pokračovať v sérii výhier", "puzzleNewStreak": "Nová séria výhier", "puzzleFromMyGames": "Z mojich partií", @@ -213,7 +256,7 @@ "puzzleFromXGamesFound": "{param1} úloh nájdených v {param2} partiách", "puzzlePuzzleDashboardDescription": "Trénujte, analyzujte, zlepšujte sa", "puzzlePercentSolved": "{param} vyriešených", - "puzzleNoPuzzlesToShow": "Niet tu čo ukázať, choďte najprv riešiť pár úloh!", + "puzzleNoPuzzlesToShow": "Niet čo zobraziť, vyriešte najprv zopár úloh!", "puzzleImprovementAreasDescription": "Precvičujte tieto úlohy aby ste napredovali čo najrýchlejšie!", "puzzleStrengthDescription": "Tieto témy Vám idú najlepšie", "puzzlePlayedXTimes": "{count, plural, =1{Hrané {count}-krát} few{Hrané {count}-krát} many{Hrané {count}-krát} other{Hrané {count}-krát}}", @@ -498,6 +541,7 @@ "latestForumPosts": "Najnovšie príspevky", "players": "Hráči", "friends": "Priatelia", + "otherPlayers": "iní hráči", "discussions": "Konverzácie", "today": "Dnes", "yesterday": "Včera", @@ -572,6 +616,7 @@ "abortGame": "Zrušiť hru", "gameAborted": "Partia zrušená", "standard": "Štandard", + "customPosition": "Vlastná pozícia", "unlimited": "Bez času", "mode": "Režim partie", "casual": "Priateľská", @@ -747,12 +792,15 @@ "automaticallyProceedToNextGameAfterMoving": "po ťahu automaticky prejdite k ďalšej hre", "autoSwitch": "Prepnite automaticky", "puzzles": "Šachové úlohy", + "onlineBots": "Online boti", "name": "Meno", "description": "Popis", "descPrivate": "Opis pre členov tímu", "descPrivateHelp": "Text, ktorý uvidia len členovia daného tímu. Ak je zadaný, tak nahrádza verejný opis členov tímu.", "no": "Nie", "yes": "Áno", + "website": "Webstránka", + "mobile": "Mobil", "help": "Pomoc:", "createANewTopic": "Vytvoriť novú tému", "topics": "Témy", @@ -853,7 +901,7 @@ "tpTimeSpentOnTV": "Čas strávený na TV: {param}", "watch": "Sledovať", "videoLibrary": "Video knižnica", - "streamersMenu": "Streameri", + "streamersMenu": "Strímeri", "mobileApp": "Mobilná aplikácia", "webmasters": "Správcovia", "about": "Viac o", @@ -894,6 +942,7 @@ "keyboardShortcuts": "Klávesové skratky", "keyMoveBackwardOrForward": "pohyb dopredu/späť", "keyGoToStartOrEnd": "ísť na začiatok/koniec", + "keyCycleSelectedVariation": "Vybrať variant", "keyShowOrHideComments": "zobraziť/skryť komentáre", "keyEnterOrExitVariation": "zvoliť/opustiť variant", "keyRequestComputerAnalysis": "Požadujte analýzu počítačom, Poučte sa zo svojich chýb", @@ -901,6 +950,14 @@ "keyNextBlunder": "Ďalšia hrubá chyba", "keyNextMistake": "Ďalšia chyba", "keyNextInaccuracy": "Ďalšia nepresnosť", + "keyPreviousBranch": "Predchádzajúca vetva", + "keyNextBranch": "Nasledujúca vetva", + "toggleVariationArrows": "Prepnúť šípky variantov", + "cyclePreviousOrNextVariation": "Zakomponovať predchádzajúci/nasledujúci variant", + "toggleGlyphAnnotations": "Prepnúť poznámky k ťahom", + "togglePositionAnnotations": "Prepnúť poznámky k pozíciám", + "variationArrowsInfo": "Šípky variantov umožňujú navigáciu bez použitia záznamu ťahov.", + "playSelectedMove": "zahrať zvolený ťah", "newTournament": "Nový turnaj", "tournamentHomeTitle": "Šachový turnaj ponúka rôzne časové nastavenia partie a rôzne varianty", "tournamentHomeDescription": "Hrajte šachové turnaje s rýchlym tempom! Pridajte sa k oficiálnym plánovaným turnajom, alebo si vytvorte vlastný turnaj. Bullet, Blitz, Classical, Chess960, King of the Hill, Threecheck, a viac možností na výber pre nekonečnú šachovú zábavu.", @@ -939,6 +996,7 @@ "withFriends": "S priateľmi", "withEverybody": "S každým", "kidMode": "Detský režim", + "kidModeIsEnabled": "Detský režim je povolený.", "kidModeExplanation": "V detskom režime je pre ochranu detí a mládeže pred ostatnými užívateľmi akákoľvek komunikácia zablokovaná.", "inKidModeTheLichessLogoGetsIconX": "Keď je zapnutý detský režim, tak sa pri logu Lichess objaví ikona {param}. Podľa toho viete, že je Vaše dieťa v bezpečí.", "askYourChessTeacherAboutLiftingKidMode": "Váš účet je spravovaný niekým iným. Opýtajte sa svojho učiteľa šachu na zrušenie detského režimu.", @@ -1039,6 +1097,8 @@ "playVariationToCreateConditionalPremoves": "Hrať variant a vytvoriť podmienené predťahy", "noConditionalPremoves": "Žiadne podmienené predťahy", "playX": "Hrať {param}", + "showUnreadLichessMessage": "Obdržali ste súkromnú správu od Lichess.", + "clickHereToReadIt": "Kliknutím sem si ju môžete prečítať", "sorry": "Prepáčte :(", "weHadToTimeYouOutForAWhile": "Na chvíľu sme Vás museli odstaviť.", "why": "Prečo?", @@ -1156,6 +1216,7 @@ "instructions": "Inštrukcie", "showMeEverything": "Ukázať všetko", "lichessPatronInfo": "Lichess je bezplatný a úplne slobodný/nezávislý softvér s otvoreným zdrojovým kódom. Všetky prevádzkové náklady, vývoj a obsah sú financované výlučne z darov používateľov.", + "nothingToSeeHere": "Momentálne tu nie je nič k zobrazeniu.", "opponentLeftCounter": "{count, plural, =1{Váš súper odišiel od šachovnice. O {count} sekundu si môžete nárokovať výhru.} few{Váš súper odišiel od šachovnice. O {count} sekundy si môžete nárokovať výhru.} many{Váš súper odišiel od šachovnice. O {count} sekúnd si môžete nárokovať výhru.} other{Váš súper odišiel od šachovnice. O {count} sekúnd si môžete nárokovať výhru.}}", "mateInXHalfMoves": "{count, plural, =1{Mat v {count}. polťahu} few{Mat v {count}. polťahu} many{Mat v {count}. polťahu} other{Mat v {count}. polťahu}}", "nbBlunders": "{count, plural, =1{{count} hrubá chyba} few{{count} hrubé chyby} many{{count} hrubých chýb} other{{count} hrubých chýb}}", @@ -1217,12 +1278,12 @@ "stormTimePerMove": "Čas na ťah", "stormHighestSolved": "Najťažšia vyriešená úloha", "stormPuzzlesPlayed": "Riešené úlohy", - "stormNewRun": "Nový pokus (kláves. skratka: Medzerník)", - "stormEndRun": "Ukončiť pokus (kláves. skratka: Enter)", + "stormNewRun": "Nové kolo (kláves. skratka: Medzerník)", + "stormEndRun": "Ukončiť kolo (kláves. skratka: Enter)", "stormHighscores": "Najvyššie skóre", - "stormViewBestRuns": "Prezrieť najlepšie pokusy", - "stormBestRunOfDay": "Najlepší pokus dňa", - "stormRuns": "Pokusy", + "stormViewBestRuns": "Prezrieť najlepšie kolá", + "stormBestRunOfDay": "Najlepšie kolo dňa", + "stormRuns": "Kolá", "stormGetReady": "Pripravte sa!", "stormWaitingForMorePlayers": "Čaká sa kým sa pripojí viac hráčov...", "stormRaceComplete": "Preteky ukončené!", @@ -1247,10 +1308,10 @@ "stormThisMonth": "Tento mesiac", "stormAllTime": "Celkovo", "stormClickToReload": "Kliknite pre opätovné načítanie", - "stormThisRunHasExpired": "Tento pokus vypršal!", - "stormThisRunWasOpenedInAnotherTab": "Tento pokus ste otvorili v inej záložke!", - "stormXRuns": "{count, plural, =1{1 pokus} few{{count} pokusy} many{{count} pokusov} other{{count} pokusov}}", - "stormPlayedNbRunsOfPuzzleStorm": "{count, plural, =1{Odohraný jeden pokus {param2}} few{Obohrané {count} pokusy {param2}} many{Odohraných {count} pokusov {param2}} other{Odohraných {count} pokusov {param2}}}", + "stormThisRunHasExpired": "Čas tohto kola vypršal!", + "stormThisRunWasOpenedInAnotherTab": "Toto kolo ste otvorili v inej záložke!", + "stormXRuns": "{count, plural, =1{1 kolo} few{{count} kolá} many{{count} kôl} other{{count} kôl}}", + "stormPlayedNbRunsOfPuzzleStorm": "{count, plural, =1{Odohrané jedeno kolo {param2}} few{Obohrané {count} kolá {param2}} many{Odohraných {count} kôl {param2}} other{Odohraných {count} kôl {param2}}}", "streamerLichessStreamers": "Lichess streameri", "studyShareAndExport": "Zdielať & export", "studyStart": "Štart" diff --git a/lib/l10n/lila_sl.arb b/lib/l10n/lila_sl.arb index a1bf44a3f7..37501bdd02 100644 --- a/lib/l10n/lila_sl.arb +++ b/lib/l10n/lila_sl.arb @@ -1,4 +1,9 @@ { + "mobileShowResult": "Pokaži rezultat", + "mobilePuzzleThemesSubtitle": "Igrajte uganke iz svojih najljubših otvoritev ali izberite temo.", + "mobilePuzzleStormSubtitle": "V 3 minutah rešite čim več ugank.", + "mobileGreeting": "Pozdravljeni {param}", + "mobileGreetingWithoutName": "Živjo", "activityActivity": "Aktivnost", "activityHostedALiveStream": "Gostil prenos v živo", "activityRankedInSwissTournament": "Uvrščen #{param1} v {param2}", diff --git a/lib/l10n/lila_sq.arb b/lib/l10n/lila_sq.arb index c1bd2f97b4..e3d0905673 100644 --- a/lib/l10n/lila_sq.arb +++ b/lib/l10n/lila_sq.arb @@ -1,4 +1,44 @@ { + "mobileHomeTab": "Kreu", + "mobileToolsTab": "Mjete", + "mobileWatchTab": "Shiheni", + "mobileSettingsTab": "Rregullime", + "mobileMustBeLoggedIn": "Që të shihni këtë faqe, duhet të keni bërë hyrjen në llogari.", + "mobileSystemColors": "Ngjyra sistemi", + "mobileFeedbackButton": "Përshtypje", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Dridhje gjatë lëvizjesh", + "mobileSettingsImmersiveModeSubtitle": "Fshihni ndërfaqen e sistemit teksa luani. Përdoreni këtë nëse ju bezdisin gjeste sistemi për lëvizjet në skaje të ekranit. Ka vend për lojëra dhe skena Puzzle Storm.", + "mobileNotFollowingAnyUser": "S’ndiqni ndonjë përdorues.", + "mobileAllGames": "Krejt lojërat", + "mobileRecentSearches": "Kërkime së fundi", + "mobileClearButton": "Spastroje", + "mobilePlayersMatchingSearchTerm": "Lojëtarë me “{param}”", + "mobileNoSearchResults": "S’ka përfundime", + "mobileAreYouSure": "Jeni i sigurt?", + "mobilePuzzleStormNothingToShow": "S’ka gjë për shfaqje. Luani ndonjë raund Puzzle Storm.", + "mobileSharePuzzle": "Ndajeni këtë ushtrim me të tjerët", + "mobileShareGameURL": "Ndani URL loje me të tjerë", + "mobileShareGamePGN": "Ndani PGN me të tjerë", + "mobileSharePositionAsFEN": "Tregojuni të tjerëve pozicionin si FEN", + "mobileShowVariations": "Shfaq variante", + "mobileHideVariation": "Fshihe variantin", + "mobileShowComments": "Shfaq komente", + "mobilePuzzleStormConfirmEndRun": "Doni të përfundohen ku raund?", + "mobilePuzzleStormFilterNothingToShow": "S’ka gjë për t’u shfaqur, ju lutemi, ndryshoni filtrat", + "mobileCancelTakebackOffer": "Anulojeni ofertën për prapakthim", + "mobileCancelDrawOffer": "Anulojeni ofertën për barazim", + "mobileWaitingForOpponentToJoin": "Po pritet që të vijë kundërshtari…", + "mobileBlindfoldMode": "Me sytë lidhur", + "mobileLiveStreamers": "Transmetues drejtpërsëdrejti", + "mobileCustomGameJoinAGame": "Merrni pjesë në një lojë", + "mobileCorrespondenceClearSavedMove": "Spastroje lëvizjen e ruajtur", + "mobileSomethingWentWrong": "Diç shkoi ters.", + "mobileShowResult": "Shfaq përfundimin", + "mobilePuzzleThemesSubtitle": "Luani puzzle-e nga hapjet tuaja të parapëlqyera, ose zgjidhni një temë.", + "mobilePuzzleStormSubtitle": "Zgjidhni sa më shumë puzzle-e të mundeni brenda 3 minutash.", + "mobileGreeting": "Tungjatjeta, {param}", + "mobileGreetingWithoutName": "Tungjatjeta", "activityActivity": "Aktiviteti", "activityHostedALiveStream": "Priti një transmetim të drejtpërdrejtë", "activityRankedInSwissTournament": "Renditur #{param1} në {param2}", @@ -487,6 +527,7 @@ "latestForumPosts": "Postimet më të reja në forum", "players": "Lojtarë", "friends": "Miqtë", + "otherPlayers": "lojtarë të tjerë", "discussions": "Biseda", "today": "Sot", "yesterday": "Dje", @@ -740,6 +781,8 @@ "descPrivateHelp": "Tekst që do ta shohin vetëm anëtarët e ekipit. Në u dhëntë, zëvendëson përshkrimin publik për anëtarët e ekipit.", "no": "Jo", "yes": "Po", + "website": "Sajt", + "mobile": "Celular", "help": "Ndihmë:", "createANewTopic": "Krijoni një temë të re", "topics": "Temat", diff --git a/lib/l10n/lila_sv.arb b/lib/l10n/lila_sv.arb index 7f6e1f72c5..356c119feb 100644 --- a/lib/l10n/lila_sv.arb +++ b/lib/l10n/lila_sv.arb @@ -725,6 +725,7 @@ "ifNoneLeaveEmpty": "Om ingen, lämna tomt", "profile": "Profil", "editProfile": "Ändra profil", + "realName": "Verkligt namn", "setFlair": "Ställ in din flair", "flair": "Flair", "youCanHideFlair": "Det finns en inställning för att dölja alla användarflairs över hela webbplatsen.", diff --git a/lib/l10n/lila_tr.arb b/lib/l10n/lila_tr.arb index 2c33498cee..d59f54004e 100644 --- a/lib/l10n/lila_tr.arb +++ b/lib/l10n/lila_tr.arb @@ -1,4 +1,33 @@ { + "mobileHomeTab": "Ana sayfa", + "mobilePuzzlesTab": "Bulmacalar", + "mobileToolsTab": "Araçlar", + "mobileWatchTab": "İzle", + "mobileSettingsTab": "Ayarlar", + "mobileMustBeLoggedIn": "Bu sayfayı görüntülemek için giriş yapmalısınız.", + "mobileSystemColors": "Sistem renkleri", + "mobileFeedbackButton": "Geri bildirimde bulun", + "mobileOkButton": "Tamam", + "mobileSettingsHapticFeedback": "Titreşimli geri bildirim", + "mobileNotFollowingAnyUser": "Hiçbir kullanıcıyı takip etmiyorsunuz.", + "mobileAllGames": "Tüm oyunlar", + "mobileRecentSearches": "Son aramalar", + "mobileClearButton": "Temizle", + "mobileNoSearchResults": "Sonuç bulunamadı", + "mobileAreYouSure": "Emin misiniz?", + "mobileSharePuzzle": "Bulmacayı paylaş", + "mobileShareGameURL": "Oyun linkini paylaş", + "mobileShareGamePGN": "PGN'yi paylaş", + "mobileSharePositionAsFEN": "Konumu FEN olarak paylaş", + "mobileShowVariations": "Varyasyonları göster", + "mobileHideVariation": "Varyasyonu gizle", + "mobileShowComments": "Yorumları göster", + "mobileCancelTakebackOffer": "Geri alma teklifini iptal et", + "mobileCancelDrawOffer": "Berabere teklifini iptal et", + "mobileWaitingForOpponentToJoin": "Rakip bekleniyor...", + "mobileBlindfoldMode": "Körleme modu", + "mobileCustomGameJoinAGame": "Bir oyuna katıl", + "mobileSomethingWentWrong": "Birşeyler ters gitti.", "activityActivity": "Son Etkinlikler", "activityHostedALiveStream": "Canlı yayın yaptı", "activityRankedInSwissTournament": "{param2} katılımcıları arasında #{param1}. oldu", diff --git a/lib/l10n/lila_tt.arb b/lib/l10n/lila_tt.arb deleted file mode 100644 index c04d080e0e..0000000000 --- a/lib/l10n/lila_tt.arb +++ /dev/null @@ -1,896 +0,0 @@ -{ - "activityActivity": "Эшчәнлек", - "activityHostedALiveStream": "Стрим хуҗасы", - "activityRankedInSwissTournament": "Ранкы #{param1} {param2} өчендә", - "activitySignedUp": "Lichess.org ка кергән", - "activitySupportedNbMonths": "{count, plural, other{lichess.org сайтына {count} айга {param2} буларак ярдәм күрсәтте}}", - "activityPracticedNbPositions": "{count, plural, other{{param2}-да {count} күнегү ясады}}", - "activitySolvedNbPuzzles": "{count, plural, other{{count} тактикалык мәсәлә чиште}}", - "activityPlayedNbGames": "{count, plural, other{{count} {param2} уенын уйнады}}", - "activityPostedNbMessages": "{count, plural, other{{count} хәбәрләрне нәшер итте{param2}}}", - "activityPlayedNbMoves": "{count, plural, other{{count} хәрәкәт уйнады}}", - "activityInNbCorrespondenceGames": "{count, plural, other{{count} хат язышу уенында}}", - "activityCompletedNbGames": "{count, plural, other{Тәмамлады {count} хат язышу уеннарын}}", - "activityFollowedNbPlayers": "{count, plural, other{{count} уйнаучы артыннан кушылды}}", - "activityGainedNbFollowers": "{count, plural, other{{count} яңа артыннан баручылар белән казанган}}", - "activityHostedNbSimuls": "{count, plural, other{{count} Алып барган бер үк вакыттагы күргәзмәләрне}}", - "activityJoinedNbSimuls": "{count, plural, other{Иштирак ителгән {count} бер үк ватыттагы күргәзмәләр}}", - "activityCreatedNbStudies": "{count, plural, other{Яңа {count} өйрәнеш оештырды}}", - "activityCompetedInNbTournaments": "{count, plural, other{Тәмам колынды {count} Мәйдан бәйгеләре}}", - "activityRankedInTournament": "{count, plural, other{Ранкы #{count} (югары{param2}%) {param3} уен белән {param4}}}", - "activityCompetedInNbSwissTournaments": "{count, plural, other{Тәмам колындылар {count} швецар бәйгесе}}", - "activityJoinedNbTeams": "{count, plural, other{{count} җәмәга кушылды}}", - "broadcastBroadcasts": "Ишеттәрешләр", - "broadcastLiveBroadcasts": "Хәяти бәйгеләр ишетләштерешләр", - "challengeChallengeToPlay": "Сынаулар уенда", - "challengeChallengeDeclined": "Сынаулар кире кагылды", - "challengeChallengeAccepted": "Сынаулар алынды!", - "challengeChallengeCanceled": "Сынауны кире кактылар.", - "challengeRegisterToSendChallenges": "Зинһар теркәл сынаулар җибәрер өчен.", - "challengeYouCannotChallengeX": "Сез сыный алмыйсыз {param}.", - "challengeXDoesNotAcceptChallenges": "{param} сезнең сынауны кире какты.", - "challengeYourXRatingIsTooFarFromY": "Сезнең {param1} рейтингыгыз {param2} дан оглы ара.", - "challengeCannotChallengeDueToProvisionalXRating": "Сынау вакытлы {param} рейтингыгыз аркасында кыенлыклар тудыра алмый.", - "challengeXOnlyAcceptsChallengesFromFriends": "{param} ала сынаулар дустлардан гына.", - "challengeDeclineGeneric": "Мин алмыйм сынауларны бу вакытта.", - "challengeDeclineLater": "Бу минем өчен дөрес вакыт түгел, зинһар, соңрак кабат сорагыз.", - "challengeDeclineTooFast": "Бу вакыт тикшерүе бик тиз минем өчен, зинһар сынагыз яңадан озаграк уен белән.", - "challengeDeclineTooSlow": "Бу вакыт тикшерүе бик озак минем өчен, зинһар сынагыз яңадан тиз уен белән.", - "challengeDeclineTimeControl": "Мин алмыйм сынауларны вакыт тикшерүе белән.", - "challengeDeclineRated": "Зинһар җибәрегез миңа рейтинглы сынау урнына.", - "challengeDeclineCasual": "Зинһар җибәрегез миңа бәяләүсез сынау урнына.", - "challengeDeclineStandard": "Мин алмыйм вариантлы сынаулар хәзер.", - "challengeDeclineVariant": "Мин тәләп куймыйм уйнарга бу вариантка хәзер.", - "challengeDeclineNoBot": "Мин алмыйм сынаулар боттан.", - "challengeDeclineOnlyBot": "Мин алам сынаулар боттан гына.", - "contactContact": "Контакт", - "contactContactLichess": "Элемтә Lichess", - "patronDonate": "Хәйрия колмак", - "patronLichessPatron": "Lichess иганәче", - "perfStatPerfStats": "{param} статистикасы", - "perfStatViewTheGames": "Карарга уеннарны", - "perfStatProvisional": "вакытлыча", - "perfStatNotEnoughRatedGames": "Ышанычлы рейтинг булдыру өчен җитәрлек бәяләнгән уеннар уйнамады.", - "perfStatProgressOverLastXGames": "Соңгы {param} уеннарында алга китеш:", - "perfStatRatingDeviation": "Рейтингның тайпылышы:{param}.", - "perfStatTotalGames": "Бөтен уеннар", - "perfStatRatedGames": "Рейтинглы уеннар", - "perfStatTournamentGames": "Бәйге уеннары", - "perfStatBerserkedGames": "Яман уеннар", - "perfStatTimeSpentPlaying": "Уенда уздырылган вакыт", - "perfStatAverageOpponent": "Уртача ярышучы", - "perfStatVictories": "Җиңүләр", - "perfStatDefeats": "Җиңелүләр", - "perfStatDisconnections": "Өзелгән", - "perfStatNotEnoughGames": "Җитми уйналган уеннар", - "perfStatHighestRating": "Иң югары рейтинг {param}", - "perfStatLowestRating": "Иң кече рейтинг {param}", - "perfStatFromXToY": "{param1} дан {param2} га", - "perfStatWinningStreak": "Бер-артлы җиңүләр", - "perfStatLosingStreak": "Бер-артлы җиңүлеләр", - "perfStatLongestStreak": "Иң озын бер-артлы: {param}", - "perfStatCurrentStreak": "Хәзерге бер-артлы: {param}", - "perfStatBestRated": "Иң яхшы рейтинглы җиңүләр", - "perfStatGamesInARow": "Уеннар рәттән уйналды", - "perfStatLessThanOneHour": "Уеннар арасында бер сәгатьтән дә азрак", - "perfStatMaxTimePlaying": "Бер-артлы уйнаган максималь вакыт", - "perfStatNow": "хәзер", - "preferencesPreferences": "Көйләүләр", - "preferencesPrivacy": "Хосусыйлык", - "preferencesPgnLetter": "Хәреф (K, Q, R, B, N)", - "preferencesZenMode": "Зен режимы", - "preferencesNotifyWeb": "Браузер", - "preferencesNotifyDevice": "Җиһаз", - "puzzlePuzzles": "Башваткычлар", - "puzzlePuzzleThemes": "Башваткыч бизәкләре", - "puzzleRecommended": "Тәкдим ителә", - "puzzlePhases": "Фазалар", - "puzzleMotifs": "Зәхәриф", - "puzzleAdvanced": "Өстәмә", - "puzzleLengths": "Озынлык", - "puzzleMates": "Матлар", - "puzzleGoals": "Морады", - "puzzleOrigin": "Чыгыш", - "puzzleSpecialMoves": "Максус хәрәкәтләр", - "puzzleDidYouLikeThisPuzzle": "Сезгә ошадымы башваткыч?", - "puzzleVoteToLoadNextOne": "Киләсе йөкләү өчен тавыш бирегез!", - "puzzleFindTheBestMoveForWhite": "Тап якшы хәрәкәт аклар өчен.", - "puzzleFindTheBestMoveForBlack": "Тап якшы хәрәкәт каралар өчен.", - "puzzleToGetPersonalizedPuzzles": "Персональләштерелгән башваткычлар алу өчен:", - "puzzlePuzzleId": "Башваткыч {param}", - "puzzlePuzzleOfTheDay": "Бүгенге башваткыч", - "puzzleClickToSolve": "Чишер өчен сук", - "puzzleGoodMove": "Якшы хәрәкәт", - "puzzleBestMove": "Иң яхшы хәрәкәт!", - "puzzleKeepGoing": "Юлга дәвам…", - "puzzlePuzzleSuccess": "Уңышлы!", - "puzzlePuzzleComplete": "Башваткыч чишелгән!", - "puzzleNotTheMove": "Бу хәрәкәт түгел!", - "puzzleTrySomethingElse": "Башка нәрсәне сынап карагыз.", - "puzzleRatingX": "Рейтинг: {param}", - "puzzleHidden": "качырылган", - "puzzleFromGameLink": "{param} уендан", - "puzzleContinueTraining": "Күнегүләр дәвамы", - "puzzleDifficultyLevel": "Авырлык дәрәҗәсе", - "puzzleNormal": "Нормаль", - "puzzleEasier": "Җиңелрәк", - "puzzleEasiest": "Иң җиңелрәге", - "puzzleHarder": "Авыррак", - "puzzleHardest": "Иң авыры", - "puzzleExample": "Мәсәлән", - "puzzleAddAnotherTheme": "Икенче тһеманы өстәргә", - "puzzleJumpToNextPuzzleImmediately": "Киләсе Башваткычка шунда ук сикерегез", - "puzzlePuzzleDashboard": "Башваткыч Гөстертактасы", - "puzzleImprovementAreas": "Яхшырту өлкәләре", - "puzzleStrengths": "Көчләр яклары", - "puzzleHistory": "Башваткыч тарихы", - "puzzleSolved": "чишелгән", - "puzzleFailed": "уңышсыз", - "puzzleStreakDescription": "Акрынлап катлаулы башваткычларны чишегез һәм җиңү сызыгы төзегез. Сәгать юк, шуңа күрә вакытыгызны алыгыз. Бер ялгыш хәрәкәт, һәм бу уен бетте! Ләкин сез сессиягә бер хәрәкәтне калдыра аласыз.", - "puzzleYourStreakX": "Сезнең юл {param}", - "puzzleStreakSkipExplanation": "Сезнең юлны саклап калу өчен бу хәрәкәтне ташлагыз! Бер тапкыр гына эшли.", - "puzzleContinueTheStreak": "Сызуны дәвам итегез", - "puzzleNewStreak": "Яңа сызу", - "puzzlePlayedXTimes": "{count, plural, other{Уйналган {count} вакыт}}", - "puzzleNbPointsBelowYourPuzzleRating": "{count, plural, other{{count} сезнең башваткыч рейтингтан бер максад}}", - "puzzleNbPointsAboveYourPuzzleRating": "{count, plural, other{{count} Сезнең башваткыч рейтингтан бер максад}}", - "puzzleThemeAdvancedPawn": "Алга киткән җирле", - "puzzleThemeAdvancedPawnDescription": "Сезнең җәяүлеләрнең берсе көндәш позициясенә тирән керә, бәлки алга җибәрү белән куркытыр.", - "puzzleThemeAdvantage": "Өстенлек", - "puzzleThemeAdvantageDescription": "Хәлиткеч өстенлек алу мөмкинлеген кулланыгыз. (200cp ≤ бәяләү ≤ 600cp)", - "puzzleThemeAnastasiaMate": "Әнәстәсия маты", - "puzzleThemeAnastasiaMateDescription": "Атчы, Тура яки Вәзир командасы каршы шаһны такта ягы белән дуслар арасына тозакка эләктерәләр.", - "puzzleThemeArabianMate": "Гарәп маты", - "puzzleThemeAttackingF2F7": "f2 яки f7-не һөҗүм итү", - "puzzleThemeBodenMate": "Боден маты", - "puzzleThemeBodenMateDescription": "Ике һөҗүм итүче киселешәләр диагональ буенча һәм рәкыйпнең үз дуст сөякләре кома шаулаган шаһына мат куялар.", - "puzzleThemeCrushing": "Изеш", - "puzzleThemeDoubleBishopMate": "Икеләтә филь маты", - "puzzleThemeEquality": "Тигезлек", - "puzzleThemeKingsideAttack": "Шаһ яктагы һөҗүм", - "puzzleThemeKingsideAttackDescription": "Рәкыйп шаһы һөҗүме, алар шаһ ягына куйганнан соң.", - "puzzleThemeClearance": "Чистарту", - "puzzleThemeClearanceDescription": "Киләсе тактик идея өчен квадратны, файлны яки диагональне чистарта торган хәрәкәт.", - "puzzleThemeDefensiveMove": "Калкала хәрәкәте", - "puzzleThemeDefensiveMoveDescription": "Материалны яисә бүтән өстенлекне югалтмас өчен кирәк булган төгәл хәрәкәт яки хәрәкәт эзлеклелеге.", - "puzzleThemeEndgame": "Уен азагы", - "puzzleThemeFork": "Сәнәк", - "puzzleThemeMaster": "Осталарның уеннары", - "puzzleThemeMasterVsMaster": "Осталар арасындагы уеннар", - "puzzleThemeMate": "Мат", - "puzzleThemeMiddlegame": "Уен уртасы", - "puzzleThemeOpening": "Дебют", - "puzzleThemePin": "Беркетү", - "searchSearch": "Табу", - "settingsSettings": "Көйләүләр", - "settingsCloseAccount": "Һисапны ябыш", - "settingsClosingIsDefinitive": "Ябыш анык. Артка кайтыш юк. Ошануыгыз камилме?", - "settingsCantOpenSimilarAccount": "Һәттә очрак башкача булса һәм сезгә бер хил исемдәге яңа һисап ачырга рөхсәт бирелмиде.", - "settingsChangedMindDoNotCloseAccount": "Мин үз фикеремне үзгәртердем, һисапны япмам", - "settingsCloseAccountExplanation": "Һисапны ябышны хуплайсызмы? Һисабыгызны ябыш даими карар. Сез ҺИЧ КАЙЧАН КЕРЕШЕГЕЗ МӨМКИН.", - "settingsThisAccountIsClosed": "Ошбу һисап ябылган.", - "playWithAFriend": "Дустың белән уйнарга", - "playWithTheMachine": "Компьютер белән уйнарга", - "toInviteSomeoneToPlayGiveThisUrl": "Бу сылтама белән уенга чакыру", - "gameOver": "Уен бетте", - "waitingForOpponent": "Ярышучыны көтәбез", - "waiting": "Көтү", - "yourTurn": "Сез йөрисез", - "aiNameLevelAiLevel": "{param1} дәрәҗәсе {param2}", - "level": "Дәрәҗә", - "strength": "Ныгыту", - "toggleTheChat": "Чатны ачу/ябу", - "chat": "Сүхбәт", - "resign": "Җиңелү", - "checkmate": "Мат", - "stalemate": "Пат", - "white": "Ак", - "black": "Кара", - "randomColor": "Очраклы төс", - "createAGame": "Уен башларга", - "whiteIsVictorious": "Ак җиңде", - "blackIsVictorious": "Кара җиңде", - "youPlayTheWhitePieces": "Сез ак фигуралар белән уйныйсыз", - "youPlayTheBlackPieces": "Сез кара фигуралар белән уйныйсыз", - "itsYourTurn": "Сезнең йөрүегез!", - "cheatDetected": "Хәйлә аныкланган", - "kingInTheCenter": "Патша такта уртасында", - "threeChecks": "Өч шах", - "raceFinished": "Ярыш бетте", - "variantEnding": "Уен бетте", - "newOpponent": "Яңа ярышучы", - "yourOpponentWantsToPlayANewGameWithYou": "Ярушычыгыз сезнең белән яңа уен уйнарга тели", - "joinTheGame": "Уенга кушылу", - "whitePlays": "Аклар йөри", - "blackPlays": "Каралар йөри", - "opponentLeftChoices": "Ярышучыгыз уеннан чыкты. Сез җиңүегезне я бер-берегезнең тигезлеген белдерә, я аны көтеп тора аласыз.", - "forceResignation": "Җиңүегезне игълан итү", - "forceDraw": "Тигезлек игълан итү", - "talkInChat": "Сөйләшкәндә әдәпле булыгыз!", - "theFirstPersonToComeOnThisUrlWillPlayWithYou": "Сылтамага кергән беренче кеше сезнең белән уйнар.", - "whiteResigned": "Аклар истифа итте", - "blackResigned": "Каралар истифа итте", - "whiteLeftTheGame": "Ак уеннан чыкты", - "blackLeftTheGame": "Кара уеннан чыкты", - "requestAComputerAnalysis": "Компьютер тикшеревен итү", - "computerAnalysis": "Компьютер тикшереве", - "computerAnalysisAvailable": "Компьютер тикшеревен итә аласыз", - "analysis": "Тикшерү тактасы", - "depthX": "Тирәнлек {param}", - "usingServerAnalysis": "Сервер анализын куллану", - "loadingEngine": "Движок йөкләнә...", - "cloudAnalysis": "Болыт анализы", - "goDeeper": "Тирәңрәк", - "showThreat": "Янауны күрсәтү", - "inLocalBrowser": "браузерда", - "toggleLocalEvaluation": "Җирле анализ күчтерү", - "promoteVariation": "Вариантнын приоритетын күтәрү", - "makeMainLine": "Төп вариант итеп кую", - "deleteFromHere": "Бу урыннан бетерү", - "forceVariation": "Вариантны төп итү", - "move": "Йөрү", - "variantLoss": "Җиңелү юлы", - "variantWin": "Җиңү юлы", - "insufficientMaterial": "Материал җитми", - "pawnMove": "Пешка йөрүе", - "capture": "Алу", - "close": "Ябу", - "winning": "Җиңү", - "losing": "Җиңелү", - "drawn": "Тиңлек", - "unknown": "Билгесез", - "database": "Партияләр архивы", - "whiteDrawBlack": "Аклар / Тиңлек / Каралар", - "averageRatingX": "Уртача рейтинг {param}", - "recentGames": "Соңгы уеннар", - "topGames": "Иң яхшы уеннар", - "masterDbExplanation": "{param2}нче елдан {param3}нче елга кадәр {param1}+ FIDE рейтинглы уенчылары тарафыннан такта артында уйналган 2 миллион уен", - "noGameFound": "Бер уен да табылмады", - "maybeIncludeMoreGamesFromThePreferencesMenu": "Бәлки көйләүләрдә күбрәк уеннарны кабызырсыз?", - "openingExplorer": "Дебютлар базасы", - "xOpeningExplorer": "{param} дебютлар базасы", - "winPreventedBy50MoveRule": "50 йөрү кайгыйдәсе буенча җиңеп булмый", - "lossSavedBy50MoveRule": "50 йөрү кагыйдәсе буенча җиңелеп булмый", - "allSet": "Бөтенесе әзер!", - "importPgn": "PGN импорты", - "delete": "Бетерү", - "deleteThisImportedGame": "Бу импортланган уенны ташларгамы?", - "replayMode": "Кабат карау", - "realtimeReplay": "Чын вакытта", - "byCPL": "Хаталар буенча", - "openStudy": "Өйрәнүне ачу", - "enable": "Кабызылган", - "bestMoveArrow": "Иң яхшы йөрүне күрсәтү", - "evaluationGauge": "Бәяләу шкаласы", - "multipleLines": "Берничә вариант", - "cpus": "Процессорлар", - "memory": "Хәтер", - "infiniteAnalysis": "Чиксез анализ", - "removesTheDepthLimit": "Тикшерү чикләрен бетерә һәм компьютерыгызны җылыта", - "blunder": "Зур хата", - "mistake": "Хата", - "inaccuracy": "Җиңел хата", - "moveTimes": "Йөреш вакыты", - "flipBoard": "Тактаны әйләндерү", - "threefoldRepetition": "Өч тапкыр кабатлау", - "claimADraw": "Тигез уен белдерү", - "offerDraw": "Тигезлекне тәкъдим итү", - "draw": "Тиңлек", - "currentGames": "Хәзерге уеннар", - "viewInFullSize": "Тулысынча күрү", - "logOut": "Чыгу", - "signIn": "Керү", - "youNeedAnAccountToDoThat": "Моның өчен аккаунт кирәк", - "signUp": "Теркәлү", - "computersAreNotAllowedToPlay": "Компьютер булышы тыелган. Зинһар, уйнаганда, шахмат программалары, мәглүмәт базалары я башка уенчылар булышы белән файдаланмагыз. Күп аккаунтлар ясау киңәш ителми һәм кирәк булмаган күп аккаунтлар ясау сезне банга китерер.", - "games": "Уеннар", - "forum": "Форум", - "xPostedInForumY": "{param1} {param2} темасына язу җибәрде", - "latestForumPosts": "Соңгы форум язулары", - "players": "Уенчылар", - "friends": "Дуслар", - "discussions": "Әңгәмәләр", - "today": "Бүген", - "yesterday": "Кичә", - "minutesPerSide": "Һәр якка бирелгән вакыт", - "variant": "Вариант", - "variants": "Вариантлар", - "timeControl": "Вакыт контроле", - "realTime": "Хәзерге вакытта", - "correspondence": "Хат алмашып уйнау", - "daysPerTurn": "Бер йөреш вакыты", - "oneDay": "Бер көн", - "time": "Вакыт", - "rating": "Рейтинг", - "ratingStats": "Рейтинг статистикасы", - "username": "Кулланучы исеме", - "usernameOrEmail": "Кулланычы исеме я эл. почтасы", - "changeUsername": "Кулланучы исемен үзгәртү", - "changeUsernameNotSame": "Хәрефләр регистрын гына үзгәртеп була. Мәсәлән, \"johndoe\"ны \"JohnDoe\"га.", - "changeUsernameDescription": "Кулланучы исемегезне үзгәртегез. Сез моны бер тапкыр гына ясый аласыз һәм хәрефләрнен зурлыгын гына үзгәртә аласыз.", - "password": "Серсүз", - "changePassword": "Серсүзне үзгәртү", - "changeEmail": "Emailны үзгәртү", - "email": "Email", - "passwordReset": "Серсүзне алыштыру", - "forgotPassword": "Серсүзне оныттыгыз?", - "rank": "Урын", - "rankX": "Урын: {param}", - "gamesPlayed": "Уеннар саны", - "cancel": "Булдыртмау", - "whiteTimeOut": "Акларның вакыты чыкты", - "blackTimeOut": "Караларның вакыты чыкты", - "drawOfferSent": "Тиңлек тәкъдиме җибәрелде", - "drawOfferAccepted": "Тиңлек тәкъдиме кабул ителде", - "drawOfferCanceled": "Тиңлек тәкъдиме туктатылды", - "whiteOffersDraw": "Аклар тиңлек тәкъдим итә", - "blackOffersDraw": "Каралар тиңлек тәкъдим итә", - "whiteDeclinesDraw": "Аклар тиңлекне кире кага", - "blackDeclinesDraw": "Каралар тиңлекне кире кага", - "yourOpponentOffersADraw": "Ярышучыгыз тиңлек тәкъдим итә", - "accept": "Кабул итү", - "decline": "Кире кагу", - "playingRightNow": "Хәзер уйнала", - "eventInProgress": "Хәзер уйнала", - "finished": "Тәмамланган", - "abortGame": "Уенны туктату", - "gameAborted": "Уен туктатылды", - "standard": "Стандартлы", - "unlimited": "Чиксез", - "mode": "Режим", - "casual": "Рейтингсыз", - "rated": "Рейтинглы", - "casualTournament": "Рейтингсыз", - "ratedTournament": "Рейтинглы", - "thisGameIsRated": "Бу уен рейтинглы", - "rematch": "Яңадан уйнау", - "rematchOfferSent": "Яңадан уйнау тәкъдим ителде", - "rematchOfferAccepted": "Яңадан уйнау кабул ителде", - "rematchOfferCanceled": "Яңадан уйнау тәкъдиме туктатылды", - "rematchOfferDeclined": "Яңадан уйнау кабул ителмәде", - "cancelRematchOffer": "Яңадан уйнау тәкъдимен туктатырга", - "viewRematch": "Яңадан уйнауны күрү", - "confirmMove": "Йөрүне раслау", - "play": "Уйнау", - "inbox": "Хатлар", - "chatRoom": "Сөйләшү бүлмәсе", - "loginToChat": "Чат куллану өчен керегез", - "youHaveBeenTimedOut": "Чаттан вакытлыча чыгарылдыгыз.", - "spectatorRoom": "Күзәтү бүлмәсе", - "composeMessage": "Хат язу", - "subject": "Хат темасы", - "send": "Җибәрү", - "incrementInSeconds": "Секунд кушыла", - "freeOnlineChess": "Түләүсез Онлайн Шахмат", - "exportGames": "Уеннарны экспортлау", - "ratingRange": "Рейтинг аралыгы", - "thisAccountViolatedTos": "Бу аккаунт Lichessның Куллану Шартларын бозды", - "openingExplorerAndTablebase": "Дебютлар һәм эндшпилләр базасы", - "takeback": "Кире алырга", - "proposeATakeback": "Йөрүне кире алырга сорарга", - "takebackPropositionSent": "Йөрүне кире алу соралды", - "takebackPropositionDeclined": "Йөрүне кире алу кире кагылды", - "takebackPropositionAccepted": "Йөрүне кире алу кабул ителде", - "takebackPropositionCanceled": "Йөрүне кире алу тәкъдиме туктатылды", - "yourOpponentProposesATakeback": "Ярышучыгыз йөрүне кире алырга сорый", - "bookmarkThisGame": "Бу битне кыстыргычларга сакларга", - "tournament": "Бәйге", - "tournaments": "Бәйгеләр", - "tournamentPoints": "Бәйге нокталары", - "viewTournament": "Бәйгене күрү", - "backToTournament": "Бәйгегә кайту", - "thematic": "Тематик", - "yourPerfRatingIsProvisional": "Сезнең {param} рейтингыгыз әле фараз", - "yourPerfRatingIsTooHigh": "Сезнең {param1} рейтингыгыз ({param2}) артык югары", - "yourTopWeeklyPerfRatingIsTooHigh": "Сезнең атналы {param1} рейтингыгыз ({param2}) артык югары", - "yourPerfRatingIsTooLow": "Сезнең {param1} рейтингыгыз ({param2}) кирәкледән кечкенәрәк", - "ratedMoreThanInPerf": "{param2} рейтингы ≥ {param1}", - "ratedLessThanInPerf": "{param2} рейтингы ≤ {param1}", - "mustBeInTeam": "{param} төркемендә булырга тиеш", - "youAreNotInTeam": "Сез {param} төркемендә түгел", - "backToGame": "Уенга кайту", - "siteDescription": "Түләүсез онлайн шахмат серверы. Уңайлы интерфейс. Рекламасыз, регистрация һәм программаны йөкләү кирәкми. Компьютер, дусларыгыз я очраклы каршыдаш белән уйнагыз.", - "xJoinedTeamY": "{param1} {param2} төркеменә кушылды", - "xCreatedTeamY": "{param1} {param2} төркемен ясады", - "xStartedStreaming": "{param} стрим башлады", - "averageElo": "Уртача рейтинг", - "location": "Урын", - "filterGames": "Уеннар фильтры", - "reset": "Яңадан", - "apply": "Саклау", - "save": "Саклау", - "leaderboard": "Лидерлар тактасы", - "gameAsGIF": "GIF итеп саклау", - "pasteTheFenStringHere": "FEN текстын монда кертегез", - "pasteThePgnStringHere": "PGN текстын монда кертегез", - "fromPosition": "Позициядән", - "continueFromHere": "Бу җирдән дәвам итү", - "toStudy": "Өйрәнү", - "importGame": "Уенны импортлау", - "importGameExplanation": "Уенны яңадан күзәтү, компьютерлап анализлау, уен чатын hәм бүлешерлек URL алу өчен уеннын PGN йөкләгез.", - "thisIsAChessCaptcha": "Бу шахматлы CAPTCHA.", - "clickOnTheBoardToMakeYourMove": "Кеше икәнегезне раслау өчен тактага басып, йөрү ясагыз.", - "captcha_fail": "Зинhaр, шахматлы капчаны чишегез.", - "notACheckmate": "Мат түгел", - "whiteCheckmatesInOneMove": "Аклар бер йөрүдә мат куялар", - "blackCheckmatesInOneMove": "Каралар бер йөрүдә мат куялар", - "retry": "Кабатлау", - "reconnecting": "Яңадан бәйләнешү", - "favoriteOpponents": "Яраткан ярышучылар", - "follow": "Язылу", - "following": "Язылгансыз", - "unfollow": "Язылынмау", - "unfollowX": "{param} язылынмау", - "block": "Блоклау", - "blocked": "Блокланган", - "unblock": "Блоктан чыгару", - "followsYou": "Сезгә язылган", - "xStartedFollowingY": "{param1} {param2} исемле уенчыга язылган", - "more": "Тагын", - "memberSince": "Регистрация көне", - "lastSeenActive": "{param} кергән иде", - "player": "Уенчы", - "list": "Тезем", - "graph": "График", - "required": "Тәлап ителгән.", - "openTournaments": "Ачык бәйгеләр", - "duration": "Озаклыгы", - "winner": "Җиңүче", - "standing": "Урыны", - "createANewTournament": "Яңа бәйге башламак", - "tournamentCalendar": "Бәйге календаре", - "conditionOfEntry": "Керу тәлапләре:", - "advancedSettings": "Кушылма көйләүләр", - "safeTournamentName": "Бәйге өчен хуп имин исем куегыз.", - "inappropriateNameWarning": "Әз генә дә килешми торган исем аккаунтыгызның ябылуына китерә ала.", - "emptyTournamentName": "Бәйгегә берәр атаклы шаһматчының исемен бирү өчен буш калдырыгыз.", - "makePrivateTournament": "Бәйгегә серсүз буенча гына керү куя аласыз", - "join": "Катнашу", - "withdraw": "Уеннан чыгу", - "points": "Баллар", - "wins": "Җиңүләр", - "losses": "Җиңелүләр", - "createdBy": "Оештыручы", - "tournamentIsStarting": "Бәйгене башлана", - "tournamentPairingsAreNowClosed": "Бәйге чиратлаштыруы ябылган.", - "standByX": "{param} көтегез, уйнаучылар чиратлаштырыла, әзерләнегез!", - "pause": "Туктату", - "resume": "Дәвам итү", - "youArePlaying": "Сез уйныйсыз!", - "winRate": "Җиңүләр", - "berserkRate": "Берсерк", - "performance": "Перфоманс", - "tournamentComplete": "Бәйге тәмамланды", - "movesPlayed": "Йөрешләр саны", - "whiteWins": "Аклар җиңүләре", - "blackWins": "Каралар җиңүләре", - "draws": "Тиңлекләр", - "nextXTournament": "Киләсе {param} бәйгесе:", - "averageOpponent": "Уртача ярышучы", - "boardEditor": "Тактаны үзгәртү", - "setTheBoard": "Тактаны урнаштыру", - "popularOpenings": "Популяр дебютлар", - "startPosition": "Башлангыч позиция", - "clearBoard": "Тактаны бушату", - "loadPosition": "Позицияне йөкләү", - "isPrivate": "Яшерен", - "reportXToModerators": "{param} турында модераторларга белдерү", - "profileCompletion": "Профиль тәмамлыгы: {param}", - "xRating": "{param} рейтингы", - "ifNoneLeaveEmpty": "Булмаса, буш калдырыгыз", - "profile": "Профиль", - "editProfile": "Профильны үзгәртү", - "biography": "Үзең турында", - "thankYou": "Рәхмәт!", - "socialMediaLinks": "Социаль медиа сылтамалары", - "inlineNotation": "Кертелгән билгеләнеш", - "previouslyOnLichessTV": "Алданлырак Личес ТВда", - "onlinePlayers": "Юрдә уйнаучылар", - "activePlayers": "Актив уйнаучылар", - "bewareTheGameIsRatedButHasNoClock": "Сак бул, бу уен рейтинглы, әмма сәгать юк!", - "success": "Уңышлы", - "automaticallyProceedToNextGameAfterMoving": "Тукталмыйча дәвам ит киләсе уенны алгы йөртүдә", - "autoSwitch": "Үзе күчерә", - "puzzles": "Башваткычлар", - "name": "Исем", - "description": "Тафсиры", - "descPrivate": "Шәхси тафсиры", - "descPrivateHelp": "Язма төркемле уенчыларга гына күренә ала. Әгәр куйсагыз, алыштырсагыз төркем әгъзалары өчен җәмәгать тасвирламасын.", - "no": "Юк", - "yes": "Әйе", - "help": "Булышу:", - "createANewTopic": "Яңа сәрхаү ачу", - "topics": "Сәрхәү", - "posts": "Хәбәрләр", - "lastPost": "Соңгы хәбәр", - "views": "Карамаклар", - "replies": "Җаваплар", - "replyToThisTopic": "Бу сәрхәүгә җавап", - "reply": "Җавап", - "message": "Хәбәр", - "createTheTopic": "Сәрхәү ачу", - "reportAUser": "Кулланучыны белделергә", - "user": "Кулланучы", - "reason": "Сәбаб", - "whatIsIheMatter": "Нәрсә булды?", - "cheat": "Алдамак", - "troll": "Троль", - "other": "Бүтән", - "reportDescriptionHelp": "Уен(нар) сылтамаларын кертегез һәм бу кулланучының тәртибендә дөрес булмаганны аңлатыгыз. \"Алдакчы\" дип кенә әйтмәгез, бу нәтиҗәгә ничек килгәнегезне әйтегез. Сезнең җибәрүегез инглизчә язылган очракта тизрәк эшкәртеләчәк.", - "error_provideOneCheatedGameLink": "Зинһар, алданган уенга ким дигәндә бер сылтама бирегез.", - "by": "{param}дан", - "thisTopicIsNowClosed": "Бу сәрхәү хәзер ябык.", - "blog": "Шәлкемлек", - "notes": "Искәрмәләр", - "typePrivateNotesHere": "Шәхси язма монда калдырыгыз", - "invalidUsernameOrPassword": "Кулланучы исеме яки серсүз яраксыз", - "incorrectPassword": "Бозык серсүз", - "invalidAuthenticationCode": "Аутһентикация коды яраксыз", - "emailMeALink": "Сылтама белән миңа хат", - "currentPassword": "Хәзерге серсүз", - "newPassword": "Яңа серсүз", - "newPasswordAgain": "Яңа серсүз (яңадан)", - "newPasswordsDontMatch": "Яңа серсүз килешми", - "newPasswordStrength": "Серсүз ныклыгы", - "clockInitialTime": "Сәгатьнең баштагы вакыты", - "clockIncrement": "Сәгатьнең артуы", - "privacy": "Шәхсилек", - "privacyPolicy": "Хосуслык сәясәте", - "letOtherPlayersFollowYou": "Башка уенчылар сезгә иярсәләр", - "letOtherPlayersChallengeYou": "Башка кулланучылар сезне сынамышка чакырсалар", - "letOtherPlayersInviteYouToStudy": "Башка кулланучылар укырга чакырсалар", - "sound": "Тавыш", - "none": "Юк", - "fast": "Тиз", - "normal": "Гадәттәгечә", - "slow": "Акрын", - "insideTheBoard": "Тактаның эчендә", - "outsideTheBoard": "Тактаның тышында", - "onSlowGames": "Тыныч уеннарда", - "always": "Һәрвакыт", - "never": "Беркачанда", - "xCompetesInY": "{param1} көндәшлек итә {param2}", - "victory": "Җиңү", - "defeat": "Җиңелде", - "victoryVsYInZ": "{param3} монда {param1} каршы {param2}", - "defeatVsYInZ": "{param3} монда {param1} каршы {param2}", - "drawVsYInZ": "{param3} монда {param1} каршы {param2}", - "timeline": "Вакыт узуы", - "starting": "Башлануы:", - "allInformationIsPublicAndOptional": "Барлык мәгълүмат җәмәгать һәм өстәмә.", - "biographyDescription": "Сөйләгез үзегез хакында, сезнең кызыксындырулар турында, Ни сез яратасыз шаһматта, сезнең яраткан ачылышыгыз, кулланучыгыз,...", - "listBlockedPlayers": "Язмасындагы кулланучыларны сез кисәттегез", - "human": "Кеше", - "computer": "Компьютер", - "side": "Як", - "clock": "Сәгать", - "opponent": "Көндәшегез", - "learnMenu": "Өйрәнү", - "studyMenu": "Өйрәнү", - "practice": "Практика", - "community": "Җәмәгать", - "tools": "Кораллар", - "increment": "Артуы", - "error_required": "Бу алан кирәкле", - "ifRatingIsPlusMinusX": "Әгәр рейтингың ± {param}", - "onlyExistingConversations": "Бары тик сөйләшүләр генә", - "onlyFriends": "Дустлар гына", - "menu": "Меню", - "castling": "Ныгытма", - "whiteCastlingKingside": "Аклар O-O", - "blackCastlingKingside": "Каралар O-O", - "tpTimeSpentPlaying": "Уйнау өчен вакыт: {param}", - "watchGames": "Кара уеннарны", - "tpTimeSpentOnTV": "ТВдан күрсәтелгән вакыт: {param}", - "watch": "Кара", - "videoLibrary": "Видео җиентыгы", - "streamersMenu": "Алып баручылар", - "mobileApp": "Кәрәзле Әсбап", - "webmasters": "Вебмастерлар", - "about": "Хакында", - "aboutX": "{param} хакында", - "xIsAFreeYLibreOpenSourceChessServer": "{param1} ул азат ({param2}), ирекле, комерциясез, ачык чыганаклы шаһмат серверы.", - "really": "чыннанда", - "contribute": "Игътибар итегез", - "termsOfService": "Куллану шартлары", - "sourceCode": "Кодның чыганагы", - "simultaneousExhibitions": "Синхрон күргәзмәләр", - "host": "Хуҗа", - "hostColorX": "Алып бару төсе {param}", - "createdSimuls": "Яңа гына ачылган симул", - "hostANewSimul": "Яңа симулның хуҗасы", - "noSimulFound": "Симул табылмады", - "noSimulExplanation": "Бер үк вакыттагы күргәзмә юк.", - "returnToSimulHomepage": "Симул ал битенә кайтырга", - "aboutSimul": "Симуляцияда бер генэ кеше уйныйала, шул вакытта кайберлэр кешелэр белэн уйный аларга ярый.", - "aboutSimulImage": "50 Рәкыйп чыкты, Фишер 47 уенны җиңде, 2се җиңүсез һәм 1 уенда җиңелде.", - "aboutSimulRealLife": "Концепция хакыкый дөнья вакыйгаларыннан алынган. Хакыкый хаяттә бу бер үк вакытта алып барган хәрәкәтләрне өстәлдән өстәлгә уйнашны үзе хәрәкәт итте.", - "aboutSimulRules": "Берүк башлаганда һәр бер уенчы алып баручы белән уенны уенны башлады. Берүк барча уеннар тутаганнан соң туктый.", - "aboutSimulSettings": "Берүк һаманда рәсми түгел. Кайтаргыч уеннар, кайтарып алулар һәм вакыт өстәү мәгакъ.", - "create": "Ячарга", - "whenCreateSimul": "Качанда сез Берүк ачканда, сезгә уйнау өчен берничә уенчы тугры киләдер.", - "simulVariantsHint": "Әгәр сез берничә вариантны сайласагыз, һәр уйнаучы сайлый ала берне уйнау өчен.", - "simulClockHint": "Фишер Сәгатен үзләштерү. Күбрәк уенчыларны кабул кылсагыз, сезгә кубрәк вакыт кирәк буласы мөмкин.", - "simulAddExtraTime": "Берүктә җиңәр өчен сезгә сәгатькә кушымча вакыт кушышсагыз мөмкин.", - "simulHostExtraTime": "Алып барырга өстәмә сәгать вакытын", - "lichessTournaments": "Личесс бәйгеләре", - "tournamentFAQ": "Бәйге мәйданы ЕБС", - "timeBeforeTournamentStarts": "Бәйге башланыр алдындагы вакыт", - "averageCentipawnLoss": "Уртача урнашу-матерьялы җиңүлүе", - "accuracy": "Төгәллек", - "keyboardShortcuts": "Керткечнең эзмәләре", - "keyMoveBackwardOrForward": "артка/Алга хәрәкәт", - "keyGoToStartOrEnd": "башлануга/бетүгә", - "keyShowOrHideComments": "комментларны ачу/качыру", - "keyEnterOrExitVariation": "керт/чык вариантны", - "newTournament": "Яңа бәйге", - "tournamentHomeTitle": "Шаһмат бәйгесе төрле хосусиятләргә вакытны башкару һәм вариантларга ия", - "tournamentHomeDescription": "Уйна Тизкер шаһмат бәйгесендә! Рәтләштерелгән рәсми бәйгегә шәхсән кушыл яки үзеңнекен ач. Мәрми, Яшен, Хуп, Фишерча, ТауШаһы, ӨчләтәШаһ, һәм тагын имкинлиятлекләр форсаты чиксез шаһмат куанычы өчен.", - "tournamentNotFound": "Бәйге табылмаган", - "tournamentDoesNotExist": "Ошбу бәйге мәүҗуд итмәс.", - "tournamentMayHaveBeenCanceled": "Әгәр барча уенчылар башлангыш алдындан китешкән булса, бәйге бөкер кылынган булуш мөмкин.", - "returnToTournamentsHomepage": "Бәйгеләр албитенә барырга", - "weeklyPerfTypeRatingDistribution": "Атналы {param} рейтинг таратылышы", - "yourPerfTypeRatingIsRating": "Сезнең {param1} рейтингыгыз {param2}.", - "youAreBetterThanPercentOfPerfTypePlayers": "Сез {param1} уйнаучыдан {param2} әхсәндер.", - "userIsBetterThanPercentOfPerfTypePlayers": "{param3} уйнаучылар арасында {param2} караганда {param1} әхсәндер.", - "youDoNotHaveAnEstablishedPerfTypeRating": "Сездә билгеләнгән {param} рейтингы юк.", - "yourRating": "Сезнең рейтингыгыз", - "cumulative": "Кумулятив", - "glicko2Rating": "Glicko-2 рейтингы", - "checkYourEmail": "Тикшерегез э. почтаны", - "weHaveSentYouAnEmailClickTheLink": "Без сезгә электрон почта җибәрдек. Хисап язмагызны активлаштыру өчен электрон почтадагы сылтамага басыгыз.", - "ifYouDoNotSeeTheEmailCheckOtherPlaces": "Электрон почтаны күрмәсәгез, башка урыннарны тикшерегез, сезнең кирәксез, спам, социаль яки бүтән папкалар кебек.", - "weHaveSentYouAnEmailTo": "Безнең {param} җибәрдек. Серсүзне яңадан урнаштыру өчен электрон почтадагы сылтамага басыгыз.", - "byRegisteringYouAgreeToBeBoundByOur": "Теркәлү белән сез {param} белән ризалашасыз.", - "readAboutOur": "Безнең {param} турында укыгыз.", - "networkLagBetweenYouAndLichess": "Челтәр сезнең белән Lichess арасында артта калды", - "timeToProcessAMoveOnLichessServer": "Lichess серверында хәрәкәтне эшкәртү вакыты", - "downloadAnnotated": "Өзешлене йөкләү", - "downloadRaw": "Чималны иңдер", - "downloadImported": "Импортны йөкләү", - "crosstable": "Кросстабель", - "youCanAlsoScrollOverTheBoardToMoveInTheGame": "Сез шулай ук уенга күчү өчен такта өстенә әйләндерә аласыз.", - "analysisShapesHowTo": "Тактада түгәрәкләр һәм уклар сызу өчен shift + чирттерү яки уң төймәгә+чирттерү.", - "letOtherPlayersMessageYou": "Башка уенчылар сезгә хәбәр итсеннәр", - "shareYourInsightsData": "Шаһмат мәгълүматлары белән уртаклашыгыз", - "withNobody": "Беркем беләндә түгел", - "withFriends": "Дустлар белән", - "withEverybody": "Барысы белән", - "kidMode": "Сабыйлар осулы", - "kidModeExplanation": "Бу куркынычсызлык турында. Балалар режимында барлык сайт элемтәләре дә сүндерелгән. Моны балаларыгыз һәм мәктәп укучылары өчен рөхсәт итегез, аларны бүтән интернет кулланучылардан саклагыз.", - "inKidModeTheLichessLogoGetsIconX": "Балалар усулында Lichess тамгасы {param} иконасын ала, шуңа күрә сез балаларыгызның куркынычсыз булуын беләсез.", - "enableKidMode": "Балалар осулын куй", - "disableKidMode": "Сабый осулын кирегә куй", - "security": "Хәвефсезлек", - "revokeAllSessions": "һәр сессиядан чыгу", - "playChessEverywhere": "Уйна шаһмат бөтен җирдә", - "asFreeAsLichess": "Личесс кебек азат", - "builtForTheLoveOfChessNotMoney": "Төздек шаһмат яратучылары өчен, акча түгел", - "everybodyGetsAllFeaturesForFree": "Һәркайсы алы барлык әйберләрен азат", - "zeroAdvertisement": "Сәрмая юк", - "fullFeatured": "Барлык үзенчәлекләр", - "phoneAndTablet": "Кәрәзле телефон һәм планшет", - "bulletBlitzClassical": "Мәрми, яшенчә, хуп", - "correspondenceChess": "Язылу шаһматы", - "onlineAndOfflinePlay": "Чилтәрдә һәм чилтәрсез уйнамак", - "viewTheSolution": "Чишелешне карап алу", - "followAndChallengeFriends": "Иярергә һәм сынарга дутларны", - "gameAnalysis": "Уенны уйланырга", - "xHostsY": "{param1} хуҗасы {param2}", - "xJoinsY": "{param1} Кушлады {param2}", - "xLikesY": "{param1} ошады {param2}", - "quickPairing": "Тизкер парлаштырыш", - "lobby": "Көндәшләр", - "anonymous": "Билгесез", - "yourScore": "Синен бәяләү {param}", - "language": "Тел", - "background": "Җирлек", - "light": "Ачык", - "dark": "Караңгы", - "transparent": "Үтә күренмәле", - "backgroundImageUrl": "Арткы караныш рәсеме URL:", - "pieceSet": "Эйберлэр", - "embedInYourWebsite": "Веб-сайтыгызга җайлаштырылган", - "usernameAlreadyUsed": "Ошбу кулланучынәми әлләкайчан ишләтелгән, фадлыйк башкасын сынап карыйк.", - "usernamePrefixInvalid": "Кулланучынәмә хәрефтән башланырга тиеш.", - "usernameSuffixInvalid": "Кулланучынәмә хәреф яки сан белән тәмамланырга тиеш.", - "usernameCharsInvalid": "Кулланучынәма фәкать харефләр, саннар, астсызыклар вә урта сызыклар гыйбәрәт булыш кирәк. Китмә-киткән астсызыклар вә урта сызыкларга юк куймайды.", - "usernameUnacceptable": "Бу кулланучынәма макбул түгел.", - "playChessInStyle": "Уйна шаһмат стиль белән", - "chessBasics": "Шаһмат нигезләре", - "coaches": "Тренерлар", - "invalidPgn": "Бозык PGN", - "invalidFen": "Бозык FEN", - "custom": "Куелган", - "notifications": "Хәбәр итүләр", - "perfRatingX": "Рейтинг: {param}", - "practiceWithComputer": "Компьютер белән практикалаштыру", - "anotherWasX": "Башкасы {param} иде", - "bestWasX": "Иң якшысы {param}", - "youBrowsedAway": "Сез карадыгыз", - "resumePractice": "Дәвам итергә практиканы", - "theGameIsADraw": "Бу уен җиңүсез.", - "computerThinking": "Компьютер саный ...", - "seeBestMove": "Иң якшы хәрәкәтне кара", - "hideBestMove": "Иң якшы хәрәкәтне качырырга", - "getAHint": "Этәргеч алырга", - "evaluatingYourMove": "Сезнең хәрәкәтне бәяләү ...", - "whiteWinsGame": "Аклар җиңүләре", - "blackWinsGame": "Каралар җиңүләре", - "learnFromYourMistakes": "Хаталардан өйрәнегез", - "learnFromThisMistake": "Бу хатадан өйрәнегез", - "skipThisMove": "Төшереп калдыру бу хәрәкәтне", - "next": "Киләсе", - "xWasPlayed": "{param} уйнады", - "findBetterMoveForWhite": "Эзлә иң якшы хәрәкәтне аклар өчен", - "findBetterMoveForBlack": "Эзлә иң якшы хәрәкәтне каралар өчен", - "resumeLearning": "Өйрәнүгә кайту", - "youCanDoBetter": "Сез яхшырак эшли аласыз", - "tryAnotherMoveForWhite": "Акларга бүтән хәрәкәтне карагыз", - "tryAnotherMoveForBlack": "Караларга бүтән хәрәкәтне карагыз", - "solution": "Чишелеше", - "waitingForAnalysis": "Көтегез тәхлил өчен", - "noMistakesFoundForWhite": "Аклар өчен табылмады хата", - "noMistakesFoundForBlack": "Табылмады караларның хаталары", - "doneReviewingWhiteMistakes": "Аклар хаталарын карау булды", - "doneReviewingBlackMistakes": "Каралар хаталарын карау булды", - "doItAgain": "Кабат ясарга", - "reviewWhiteMistakes": "Тагын карарга аклар хаталарын", - "reviewBlackMistakes": "Тагын карарга каралар хаталарын", - "advantage": "Өстенлек", - "opening": "Башлагыч", - "middlegame": "Урта уен", - "endgame": "Уен азагы", - "conditionalPremoves": "Шартлы хәрәкәтләр", - "addCurrentVariation": "Агымдагы үзгәрешне өстәгез", - "playVariationToCreateConditionalPremoves": "Шартлы хәрәкәтләр ясау өчен вариация уйнагыз", - "noConditionalPremoves": "Юк шартлы хәрәкәтләр", - "playX": "Уйнау {param}", - "sorry": "Юаныч :(", - "weHadToTimeYouOutForAWhile": "Без сезне бераз вакытка чыгарырга тиеш идек.", - "why": "Нигә?", - "pleasantChessExperience": "Без һәркемгә шаһмат тәҗрибәсен тәкъдим итәбез.", - "goodPractice": "Моның өчен без барлык уенчыларның да яхшы практиканы үтәргә тиеш.", - "potentialProblem": "Мөмкин булган мөшәкәт аныкланганда, без ошбу хәбәрне күрсәтербез.", - "howToAvoidThis": "Моннан ничек сакланырга?", - "playEveryGame": "Сез башлаган һәр уенны уйнагыз.", - "tryToWin": "Сез уйнаган һәр уенда җиңәргә (яки ким дигәндә җиңүсезлеккә) тырышыгыз.", - "resignLostGames": "Истифа ителгән җиңелгән уеннар (сәгать эшләмәсен).", - "temporaryInconvenience": "Вакытлыча уңайсызлыклар өчен гафу үтенәбез,", - "wishYouGreatGames": "һәм сезгә lichess.org сайтында зур уеннар телим.", - "thankYouForReading": "Укыган өчен ташаккур!", - "lifetimeScore": "Гомер буе исәпләү", - "currentMatchScore": "Хәзерге матч исәбе", - "agreementAssistance": "Минем уеннар вакытында теләсә кайсы вакытта ярдәм алуыма ризалашам (шахмат компьютерыннан, китаптан, мәгълүмат базасыннан яки бүтән кешедән).", - "agreementNice": "Мин башка уенчыларга һәрвакыт хөрмәт күрсәтермен дип килешәм.", - "agreementPolicy": "Мин барлык Lichess сәясәтен үтәрмен дип килешәм.", - "searchOrStartNewDiscussion": "Яңа сөйләшүне эзләү яки башлау", - "edit": "Үзгәртү", - "blitz": "Блиц", - "rapid": "Тиз", - "classical": "Классика", - "ultraBulletDesc": "Гаҗәеп тиз уеннар: 30 секундтан да азрак", - "bulletDesc": "Бик тиз уеннар: 3 минуттан да азрак", - "blitzDesc": "Тиз уеннар: 3 - 8 минут", - "rapidDesc": "Тиз уеннар 8дән 25минутка кадәр", - "classicalDesc": "Хуп уеннар: 25 минут һәм аннан да күбрәк", - "correspondenceDesc": "Хат язышу уеннары: хәрәкәткә бер-берничә көн", - "puzzleDesc": "Шаһмат тактикалар остасы", - "important": "Мөһим", - "yourQuestionMayHaveBeenAnswered": "Сезнең сорауга {param1} җаваплар булырга мөмкин", - "inTheFAQ": "Еш Сорый торган Сорауларда.", - "toReportSomeoneForCheatingOrBadBehavior": "Алдау яки начар тәртип өчен кулланучыга хәбәр итү өчен, {param1}", - "useTheReportForm": "куллан җибәрү формасын", - "toRequestSupport": "Ярдәм сорашу өчен {param1}", - "tryTheContactPage": "контакт битен карагыз", - "thisTopicIsArchived": "Бу тема архивланган һәм аңа җавап биреп булмый.", - "joinTheTeamXToPost": "Бу форумда урнаштыру өчен {param1} кушылыгыз", - "teamNamedX": "{param1} Җәмәга", - "youCannotPostYetPlaySomeGames": "Сез әле форумда бәрид урнаштыра алмыйсыз. Берничә уен уйнагыз!", - "subscribe": "Кушылмак", - "unsubscribe": "Аерылмак", - "mentionedYouInX": "\"{param1}\" сезне искә алдылар.", - "xMentionedYouInY": "{param1} сезне \"{param2}\" да искә алды.", - "invitedYouToX": "\"{param1}\" сезне яште.", - "xInvitedYouToY": "{param1} сезне \"{param2}\" чакырды.", - "youAreNowPartOfTeam": "Сез хәзер җәмәга әгъзасы.", - "youHaveJoinedTeamX": "Сез \"{param1}\" га кушылдыгыз.", - "someoneYouReportedWasBanned": "Сез хәбәр иткән кеше тыелган", - "congratsYouWon": "Тәбриклийбез, сез җиңдегез!", - "gameVsX": "{param1} каршы уен", - "resVsX": "{param1} vs {param2}", - "lostAgainstTOSViolator": "Сез Lichess TOS кагыйдәләрене бозган кешегә оттырдыгыз", - "refundXpointsTimeControlY": "Кире кайтару {param1} {param2} рейтинг накате.", - "timeAlmostUp": "Вакыт тугады диярлек!", - "download": "Йөкләп алу", - "tournDescription": "Ярыш тасвирламасы", - "hangOn": "Туктагыз!", - "opponentLeftCounter": "{count, plural, other{Ярышучыгыз уеннан чыкты. Сез җиңүегезне {count} секундтан белдерә аласыз.}}", - "mateInXHalfMoves": "{count, plural, other{{count} ярты-йөрүдә мат}}", - "nbBlunders": "{count, plural, other{{count} хаталар}}", - "nbMistakes": "{count, plural, other{{count} хата}}", - "nbInaccuracies": "{count, plural, other{{count} төгәлсезлек}}", - "nbPlayers": "{count, plural, other{{count} уенчы}}", - "nbGames": "{count, plural, other{{count} уен}}", - "nbBookmarks": "{count, plural, other{{count} билгеләнгән}}", - "nbDays": "{count, plural, other{{count} көн}}", - "nbHours": "{count, plural, other{{count} сәгатъ}}", - "nbMinutes": "{count, plural, other{{count} минут}}", - "rankIsUpdatedEveryNbMinutes": "{count, plural, other{Урын hәр {count} минут саен яңартыла}}", - "nbPuzzles": "{count, plural, other{{count} күнегү}}", - "nbGamesWithYou": "{count, plural, other{Сезнең белән {count} уен}}", - "nbRated": "{count, plural, other{{count} рейтинглы}}", - "nbWins": "{count, plural, other{{count} җиңү}}", - "nbLosses": "{count, plural, other{{count} җиңелү}}", - "nbDraws": "{count, plural, other{{count} тиңлек}}", - "nbPlaying": "{count, plural, other{{count} уйнала}}", - "giveNbSeconds": "{count, plural, other{{count} секунд бирү}}", - "nbTournamentPoints": "{count, plural, other{{count} турнир баллары}}", - "nbStudies": "{count, plural, other{{count} өйрәнү}}", - "moreThanNbRatedGames": "{count, plural, other{≥ {count} рейтинглы уен}}", - "moreThanNbPerfRatedGames": "{count, plural, other{≥ {count} рейтинглы {param2} уен}}", - "needNbMorePerfGames": "{count, plural, other{Сезгә тагын {param2} рейтинглы {count} уен уйнарга кирәк}}", - "needNbMoreGames": "{count, plural, other{Сезгә тагын {count} рейтинглы уен уйнарга кирәк}}", - "nbImportedGames": "{count, plural, other{{count} импортланган уен}}", - "nbFriendsOnline": "{count, plural, other{{count} дус челтәрдә}}", - "nbFollowers": "{count, plural, other{{count} язылучы}}", - "nbFollowing": "{count, plural, other{{count} язылганнары}}", - "lessThanNbMinutes": "{count, plural, other{{count} минуттан әзрәк}}", - "nbGamesInPlay": "{count, plural, other{{count} уен уйныйлар}}", - "maximumNbCharacters": "{count, plural, other{Азагында {count} билге.}}", - "blocks": "{count, plural, other{{count} кисетелгән}}", - "nbForumPosts": "{count, plural, other{{count} аралашу хәбәры}}", - "nbPerfTypePlayersThisWeek": "{count, plural, other{{count} {param2} уенчылар бу атнада.}}", - "availableInNbLanguages": "{count, plural, other{{count} телдә бар!}}", - "nbSecondsToPlayTheFirstMove": "{count, plural, other{{count} секунд уйнар өчен беренче хәрәкәтне}}", - "nbSeconds": "{count, plural, other{{count} секунд}}", - "andSaveNbPremoveLines": "{count, plural, other{һәм {count} йөрмәгән линияне}}", - "stormMoveToStart": "Башлар өчен хәрәкәт", - "stormYouPlayTheWhitePiecesInAllPuzzles": "Барлык башваткычларда аклар сөякләрне уйныйсыз", - "stormYouPlayTheBlackPiecesInAllPuzzles": "Барлык башваткычларда каралар кисәкләрне уйныйсыз", - "stormPuzzlesSolved": "табышмаклар чишелде", - "stormNewDailyHighscore": "Яңа көндәлек югары күрсәткеч!", - "stormNewWeeklyHighscore": "Яңа атналык югары күрсәткеч!", - "stormNewMonthlyHighscore": "Яңа айлык югары күрсәткеч!", - "stormNewAllTimeHighscore": "Яңа гел югары күрсәткеч!", - "stormPreviousHighscoreWasX": "Элеккеге югары күрсәткеч {param} иде", - "stormPlayAgain": "Яңадан уйнау", - "stormHighscoreX": "Югары күрсәткеч: {param}", - "stormScore": "Күрсәткеч", - "stormMoves": "Хәрәкәт", - "stormAccuracy": "Төгәллек", - "stormCombo": "Комбо", - "stormTime": "Вакыт", - "stormTimePerMove": "Бер хәрәкәт вакыты", - "stormHighestSolved": "Иң югары чишелгән", - "stormPuzzlesPlayed": "Башваткыч уйналды", - "stormNewRun": "Яңа йөгерү (уңайлытөймә: Space)", - "stormEndRun": "Ахыр йөгерү (уңайлытөймә: Enter)", - "stormHighscores": "Югары күрсәткеч", - "stormViewBestRuns": "Иң яхшы йөгерүне карау", - "stormBestRunOfDay": "Көннең иң яхшы йөгереше", - "stormRuns": "Үтәргә", - "stormGetReady": "Әзер бул!", - "stormWaitingForMorePlayers": "Күбрәк уенчыларның кушылуын көтеп...", - "stormRaceComplete": "Ярыш тәмам!", - "stormSpectating": "Тамаша", - "stormJoinTheRace": "Ярышка кушылыгыз!", - "stormYourRankX": "Сезнең ранк: {param}", - "stormWaitForRematch": "Кайтаргыч уенны көтегез", - "stormNextRace": "Киләсе Ярыш", - "stormJoinRematch": "Кайтаргыч уенга кушылыгыз", - "stormWaitingToStart": "Башлауны көтә", - "stormCreateNewGame": "Яңа уен ясагыз", - "stormJoinPublicRace": "Иҗтимагый ярышка кушылыгыз", - "stormRaceYourFriends": "Сезнең дусларың белән ярыш", - "stormSkip": "отыш", - "stormSkipHelp": "Сез бер ярышка бер хәрәкәтне калдыра аласыз:", - "stormSkipExplanation": "Комбаны саклап калу өчен бу хәрәкәтне ташлагыз! Ярышка бер тапкыр гына эшли.", - "stormThisWeek": "Бу атна", - "stormXRuns": "{count, plural, other{{count} йөгерә}}", - "stormPlayedNbRunsOfPuzzleStorm": "{count, plural, other{{count} уйнаган {param2} йөгерә}}", - "streamerLichessStreamers": "Личесс агымнары", - "studyShareAndExport": "Юшәрик & яшдүр", - "studyStart": "Башла" -} \ No newline at end of file diff --git a/lib/l10n/lila_uk.arb b/lib/l10n/lila_uk.arb index 46225bad04..d027f7aa1b 100644 --- a/lib/l10n/lila_uk.arb +++ b/lib/l10n/lila_uk.arb @@ -1,4 +1,47 @@ { + "mobileHomeTab": "Головна", + "mobilePuzzlesTab": "Задачі", + "mobileToolsTab": "Інструм.", + "mobileWatchTab": "Дивитися", + "mobileSettingsTab": "Налашт.", + "mobileMustBeLoggedIn": "Ви повинні ввійти, аби переглянути цю сторінку.", + "mobileSystemColors": "Системні кольори", + "mobileFeedbackButton": "Відгук", + "mobileOkButton": "Гаразд", + "mobileSettingsHapticFeedback": "Вібрація при ході", + "mobileSettingsImmersiveMode": "Повноекранний режим", + "mobileSettingsImmersiveModeSubtitle": "Приховати інтерфейс системи під час гри. Використовуйте, якщо вас турбують навігаційні жести системи по краях екрану. Застосовується до екранів гри та задач.", + "mobileNotFollowingAnyUser": "Ви ні на кого не підписані.", + "mobileAllGames": "Усі ігри", + "mobileRecentSearches": "Недавні пошуки", + "mobileClearButton": "Очистити", + "mobilePlayersMatchingSearchTerm": "Гравці з «{param}»", + "mobileNoSearchResults": "Немає результатів ", + "mobileAreYouSure": "Ви впевнені?", + "mobilePuzzleStreakAbortWarning": "Ви втратите поточну серію, і ваш рахунок буде збережено.", + "mobilePuzzleStormNothingToShow": "Нічого показати. Зіграйте в гру Puzzle Storm.", + "mobileSharePuzzle": "Поділитися задачею", + "mobileShareGameURL": "Поділитися посиланням на гру", + "mobileShareGamePGN": "Поділитися PGN", + "mobileSharePositionAsFEN": "Поділитися FEN", + "mobileShowVariations": "Показати варіанти", + "mobileHideVariation": "Сховати варіанти", + "mobileShowComments": "Показати коментарі", + "mobilePuzzleStormConfirmEndRun": "Ви хочете закінчити цю серію?", + "mobilePuzzleStormFilterNothingToShow": "Нічого не знайдено, будь ласка, змініть фільтри", + "mobileCancelTakebackOffer": "Скасувати пропозицію повернення ходу", + "mobileCancelDrawOffer": "Скасувати пропозицію нічиєї", + "mobileWaitingForOpponentToJoin": "Очікування на суперника...", + "mobileBlindfoldMode": "Наосліп", + "mobileLiveStreamers": "Стримери в прямому етері", + "mobileCustomGameJoinAGame": "Приєднатися до гри", + "mobileCorrespondenceClearSavedMove": "Очистити збережений хід", + "mobileSomethingWentWrong": "Щось пішло не так.", + "mobileShowResult": "Показати результат", + "mobilePuzzleThemesSubtitle": "Розв'язуйте задачі з улюбленими дебютами або обирайте тему.", + "mobilePuzzleStormSubtitle": "Розв'яжіть якомога більше задач за 3 хвилини.", + "mobileGreeting": "Привіт, {param}", + "mobileGreetingWithoutName": "Привіт", "activityActivity": "Активність", "activityHostedALiveStream": "Проведено пряму трансляцію", "activityRankedInSwissTournament": "Зайняв #{param1} місце в {param2}", @@ -498,6 +541,7 @@ "latestForumPosts": "Останні дописи форуму", "players": "Гравці", "friends": "Друзі", + "otherPlayers": "інші гравці", "discussions": "Обговорення", "today": "Сьогодні", "yesterday": "Вчора", @@ -755,6 +799,8 @@ "descPrivateHelp": "Текст, який побачать лише учасники команди. Якщо встановити, замінить публічний опис для учасників команди.", "no": "Ні", "yes": "Так", + "website": "Вебсайт", + "mobile": "Застосунок", "help": "Допомога:", "createANewTopic": "Створити нову тему", "topics": "Теми", @@ -968,7 +1014,7 @@ "phoneAndTablet": "Для смартфонів та планшетів", "bulletBlitzClassical": "Куля, бліц, класичні шахи", "correspondenceChess": "Заочні", - "onlineAndOfflinePlay": "Гра онлайн та оффлайн", + "onlineAndOfflinePlay": "Гра онлайн та офлайн", "viewTheSolution": "Дивитись рішення", "followAndChallengeFriends": "Спостерігайте і кидайте виклик друзям", "gameAnalysis": "Аналіз гри", diff --git a/lib/l10n/lila_vi.arb b/lib/l10n/lila_vi.arb index f38ad3b9df..a6d4b58b6a 100644 --- a/lib/l10n/lila_vi.arb +++ b/lib/l10n/lila_vi.arb @@ -1,4 +1,44 @@ { + "mobileHomeTab": "Trang chủ", + "mobilePuzzlesTab": "Câu đố", + "mobileToolsTab": "Công cụ", + "mobileWatchTab": "Xem", + "mobileSettingsTab": "Cài đặt", + "mobileMustBeLoggedIn": "Bạn phải đăng nhập để xem trang này.", + "mobileSystemColors": "Màu hệ thống", + "mobileFeedbackButton": "Phản hồi", + "mobileOkButton": "OK", + "mobileSettingsHapticFeedback": "Rung phản hồi", + "mobileSettingsImmersiveMode": "Chế độ toàn màn hình", + "mobileSettingsImmersiveModeSubtitle": "Ẩn UI hệ thống trong khi chơi. Sử dụng điều này nếu bạn bị làm phiền bởi các cử chỉ điều hướng của hệ thống ở các cạnh của màn hình. Áp dụng cho màn hình ván đấu và Puzzle Strom.", + "mobileNotFollowingAnyUser": "Bạn chưa theo dõi người dùng nào.", + "mobileAllGames": "Tất cả ván đấu", + "mobileRecentSearches": "Tìm kiếm gần đây", + "mobileClearButton": "Xóa", + "mobilePlayersMatchingSearchTerm": "chơi với \"{param}\"", + "mobileNoSearchResults": "Không có kết quả", + "mobileAreYouSure": "Bạn chắc chứ?", + "mobilePuzzleStreakAbortWarning": "Bạn sẽ mất chuỗi hiện tại và điểm của bạn sẽ được lưu.", + "mobilePuzzleStormNothingToShow": "Không có gì để xem. Chơi một vài ván Puzzle Storm.", + "mobileSharePuzzle": "Chia sẻ câu đố này", + "mobileShareGameURL": "Chia sẻ URL ván cờ", + "mobileShareGamePGN": "Chia sẻ tập tin PGN", + "mobileSharePositionAsFEN": "Chia sẻ thế cờ dạng FEN", + "mobileShowVariations": "Hiện các biến", + "mobileHideVariation": "Ẩn các biến", + "mobileShowComments": "Hiển thị bình luận", + "mobilePuzzleStormConfirmEndRun": "Bạn có muốn kết thúc lượt chạy này không?", + "mobilePuzzleStormFilterNothingToShow": "Không có gì để hiển thị, vui lòng thay đổi bộ lọc", + "mobileCancelTakebackOffer": "Hủy đề nghị đi lại", + "mobileCancelDrawOffer": "Hủy đề nghị hòa", + "mobileWaitingForOpponentToJoin": "Đang chờ đối thủ tham gia...", + "mobileBlindfoldMode": "Bịt mắt", + "mobileLiveStreamers": "Các Streamer phát trực tiếp", + "mobileCustomGameJoinAGame": "Tham gia một ván cờ", + "mobileCorrespondenceClearSavedMove": "Xóa nước cờ đã lưu", + "mobileSomethingWentWrong": "Đã xảy ra lỗi.", + "mobileShowResult": "Xem kết quả", + "mobilePuzzleThemesSubtitle": "Giải câu đố từ những khai cuộc yêu thích của bạn hoặc chọn một chủ đề.", "activityActivity": "Hoạt động", "activityHostedALiveStream": "Đã phát trực tiếp", "activityRankedInSwissTournament": "Đứng hạng {param1} trong giải {param2}", @@ -17,7 +57,7 @@ "activityJoinedNbSimuls": "{count, plural, other{Đã tham gia {count} sự kiện cờ đồng loạt}}", "activityCreatedNbStudies": "{count, plural, other{Đã tạo {count} nghiên cứu mới}}", "activityCompetedInNbTournaments": "{count, plural, other{Đã hoàn thành {count} giải đấu Đấu trường}}", - "activityRankedInTournament": "{count, plural, other{Được hạng #{count} (lọt top {param2}%) với {param3} ván trong giải {param4}}}", + "activityRankedInTournament": "{count, plural, other{Được hạng #{count} (tốp {param2}%) với {param3} ván trong giải {param4}}}", "activityCompetedInNbSwissTournaments": "{count, plural, other{Đã hoàn thành {count} giải đấu hệ Thụy Sĩ}}", "activityJoinedNbTeams": "{count, plural, other{Đã tham gia {count} đội}}", "broadcastBroadcasts": "Các phát sóng", @@ -161,8 +201,8 @@ "puzzleUpVote": "Thích câu đố", "puzzleDownVote": "Không thích câu đố", "puzzleYourPuzzleRatingWillNotChange": "Hệ số giải câu đố của bạn sẽ không thay đổi. Lưu ý rằng giải câu đố không phải một cuộc thi. Hệ số của bạn nhằm giúp chọn những câu đố phù hợp nhất với trình độ của bạn.", - "puzzleFindTheBestMoveForWhite": "Tìm nước tối ưu cho Trắng.", - "puzzleFindTheBestMoveForBlack": "Tìm nước tối ưu cho Đen.", + "puzzleFindTheBestMoveForWhite": "Tìm nước tối ưu cho bên trắng.", + "puzzleFindTheBestMoveForBlack": "Tìm nước tối ưu cho bên đen.", "puzzleToGetPersonalizedPuzzles": "Để có được các thế cờ dành riêng cho bạn:", "puzzlePuzzleId": "Câu đố {param}", "puzzlePuzzleOfTheDay": "Câu đố của ngày", @@ -376,8 +416,8 @@ "asBlack": "khi chơi quân đen", "randomColor": "Màu quân ngẫu nhiên", "createAGame": "Tạo một ván cờ", - "whiteIsVictorious": "Bên Trắng thắng", - "blackIsVictorious": "Bên Đen thắng", + "whiteIsVictorious": "Bên trắng thắng", + "blackIsVictorious": "Bên đen thắng", "youPlayTheWhitePieces": "Bạn chơi quân trắng", "youPlayTheBlackPieces": "Bạn chơi quân đen", "itsYourTurn": "Đến lượt bạn!", @@ -389,17 +429,17 @@ "newOpponent": "Đối thủ mới", "yourOpponentWantsToPlayANewGameWithYou": "Đối thủ muốn chơi một ván cờ mới với bạn", "joinTheGame": "Tham gia ván cờ", - "whitePlays": "Lượt Trắng đi", - "blackPlays": "Lượt Đen đi", + "whitePlays": "Lượt trắng đi", + "blackPlays": "Lượt đen đi", "opponentLeftChoices": "Đối thủ của bạn đã rời khỏi ván cờ. Bạn có thể tuyên bố chiến thắng, chọn hòa hoặc đợi.", "forceResignation": "Giành chiến thắng", "forceDraw": "Bắt buộc hòa", "talkInChat": "Hãy cư xử thân thiện trong cuộc trò chuyện!", "theFirstPersonToComeOnThisUrlWillPlayWithYou": "Người đầu tiên sử dụng URL này sẽ bắt đầu chơi với bạn.", - "whiteResigned": "Trắng chịu thua", + "whiteResigned": "Bên trắng chịu thua", "blackResigned": "Đen chịu thua", - "whiteLeftTheGame": "Trắng đã rời khỏi ván cờ", - "blackLeftTheGame": "Đen đã rời khỏi ván cờ", + "whiteLeftTheGame": "Bên trắng đã rời khỏi ván cờ", + "blackLeftTheGame": "Bên đen đã rời khỏi ván cờ", "whiteDidntMove": "Bên trắng không đi quân", "blackDidntMove": "Bên đen không đi quân", "requestAComputerAnalysis": "Yêu cầu máy tính phân tích", @@ -436,7 +476,7 @@ "drawn": "Hòa cờ", "unknown": "Không chắc", "database": "Cơ sở dữ liệu", - "whiteDrawBlack": "Trắng / Hòa / Đen", + "whiteDrawBlack": "Trắng thắng / Hòa / Đen thắng", "averageRatingX": "Hệ số bình quân: {param}", "recentGames": "Các ván cờ gần đây", "topGames": "Các ván đấu hàng đầu", @@ -498,6 +538,7 @@ "latestForumPosts": "Bài đăng diễn đàn mới nhất", "players": "Kỳ thủ", "friends": "Bạn bè", + "otherPlayers": "các kỳ thủ khác", "discussions": "Trò chuyện", "today": "Hôm nay", "yesterday": "Hôm qua", @@ -554,15 +595,15 @@ "rankX": "Hạng: {param}", "gamesPlayed": "Số ván đã chơi", "cancel": "Hủy", - "whiteTimeOut": "Trắng hết giờ", - "blackTimeOut": "Đen hết giờ", + "whiteTimeOut": "Bên trắng hết giờ", + "blackTimeOut": "Bên đen hết giờ", "drawOfferSent": "Đã gửi đề nghị hòa", "drawOfferAccepted": "Đề nghị hoà được chấp nhận", "drawOfferCanceled": "Đã hủy bỏ đề nghị hoà", - "whiteOffersDraw": "Trắng đề nghị hòa", - "blackOffersDraw": "Đen đề nghị hòa", - "whiteDeclinesDraw": "Trắng từ chối hòa", - "blackDeclinesDraw": "Đen từ chối hòa", + "whiteOffersDraw": "Bên trắng đề nghị hòa", + "blackOffersDraw": "Bên đen đề nghị hòa", + "whiteDeclinesDraw": "Bên trắng từ chối hòa", + "blackDeclinesDraw": "Bên đen từ chối hòa", "yourOpponentOffersADraw": "Đối thủ xin hoà", "accept": "Chấp nhận", "decline": "Từ chối", @@ -655,8 +696,8 @@ "clickOnTheBoardToMakeYourMove": "Nhấn vào bàn cờ để di chuyển và chứng minh bạn là con người.", "captcha_fail": "Hãy giải mã captcha cờ vua.", "notACheckmate": "Không phải là một nước chiếu hết", - "whiteCheckmatesInOneMove": "Trắng chiếu hết trong một nước đi", - "blackCheckmatesInOneMove": "Đen chiếu hết trong một nước đi", + "whiteCheckmatesInOneMove": "Bên trắng hãy chiếu hết trong một nước đi", + "blackCheckmatesInOneMove": "Bên đen hãy chiếu hết trong một nước đi", "retry": "Thử lại", "reconnecting": "Đang kết nối lại", "noNetwork": "Ngoại tuyến", @@ -755,6 +796,8 @@ "descPrivateHelp": "Mô tả mà chỉ thành viên đội nhìn thấy. Nếu được đặt, sẽ thay thế mô tả thường cho thành viên đội.", "no": "Không", "yes": "Có", + "website": "Trang mạng", + "mobile": "Điện thoại di động", "help": "Hỗ trợ:", "createANewTopic": "Tạo một chủ đề mới", "topics": "Các chủ đề", @@ -887,7 +930,7 @@ "simulAddExtraTime": "Bạn có thể thêm thời gian ban đầu cho đồng hồ của mình để đấu cờ đồng loạt dễ hơn.", "simulHostExtraTime": "Thời gian thêm ban đầu cho người chủ trì", "simulAddExtraTimePerPlayer": "Thêm thời gian ban đầu vào đồng hồ của bạn cho mỗi người chơi tham gia sự kiện đồng loạt.", - "simulHostExtraTimePerPlayer": "Thời gian thêm cho mỗi người tham gia", + "simulHostExtraTimePerPlayer": "Thời gian thêm cho người chủ trì theo số người tham gia", "lichessTournaments": "Các giải đấu của Lichess", "tournamentFAQ": "Các câu hỏi hay gặp về giải đấu Đấu trường", "timeBeforeTournamentStarts": "Thời gian trước khi giải đấu bắt đầu", @@ -1027,12 +1070,12 @@ "skipThisMove": "Bỏ qua nước này", "next": "Tiếp", "xWasPlayed": "Đã chơi {param}", - "findBetterMoveForWhite": "Tìm nước đi tốt hơn cho trắng", + "findBetterMoveForWhite": "Tìm nước đi tốt hơn cho bên trắng", "findBetterMoveForBlack": "Tìm nước đi tốt hơn cho đen", "resumeLearning": "Tiếp tục học", "youCanDoBetter": "Bạn có thể làm tốt hơn", - "tryAnotherMoveForWhite": "Tìm nước đi khác cho trắng", - "tryAnotherMoveForBlack": "Tìm nước đi khác cho đen", + "tryAnotherMoveForWhite": "Tìm nước đi khác cho bên trắng", + "tryAnotherMoveForBlack": "Tìm nước đi khác cho bên đen", "solution": "Đáp án", "waitingForAnalysis": "Đang chờ phân tích", "noMistakesFoundForWhite": "Bên trắng không mắc sai lầm nào", @@ -1040,8 +1083,8 @@ "doneReviewingWhiteMistakes": "Đã hoàn tất phân tích sai lầm của bên trắng", "doneReviewingBlackMistakes": "Đã hoàn tất phân tích sai lầm của bên đen", "doItAgain": "Thử lại một lần nữa", - "reviewWhiteMistakes": "Đánh giá lỗi bên trắng", - "reviewBlackMistakes": "Đánh giá lỗi bên đen", + "reviewWhiteMistakes": "Xem lại sai lầm của bên trắng", + "reviewBlackMistakes": "Xem lại sai lầm của bên đen", "advantage": "Lợi thế", "opening": "Khai cuộc", "middlegame": "Trung cuộc", diff --git a/lib/l10n/lila_zh.arb b/lib/l10n/lila_zh.arb index 1d356ce752..12b2cf1e55 100644 --- a/lib/l10n/lila_zh.arb +++ b/lib/l10n/lila_zh.arb @@ -1,4 +1,47 @@ { + "mobileHomeTab": "主页", + "mobilePuzzlesTab": "谜题", + "mobileToolsTab": "工具", + "mobileWatchTab": "观看", + "mobileSettingsTab": "设置", + "mobileMustBeLoggedIn": "您必须登录才能浏览此页面。", + "mobileSystemColors": "系统颜色", + "mobileFeedbackButton": "问题反馈", + "mobileOkButton": "好", + "mobileSettingsHapticFeedback": "震动反馈", + "mobileSettingsImmersiveMode": "沉浸模式", + "mobileSettingsImmersiveModeSubtitle": "播放时隐藏系统UI。 如果您对屏幕边缘的系统导航手势感到困扰,请使用此功能。 适用于游戏和益智风暴屏幕。", + "mobileNotFollowingAnyUser": "你没有关注任何用户。", + "mobileAllGames": "所有对局", + "mobileRecentSearches": "最近搜索", + "mobileClearButton": "清空", + "mobilePlayersMatchingSearchTerm": "拥有\"{param}\"的玩家", + "mobileNoSearchResults": "无结果", + "mobileAreYouSure": "你确定吗?", + "mobilePuzzleStreakAbortWarning": "你将失去你目前的连胜,你的分数将被保存。", + "mobilePuzzleStormNothingToShow": "没什么好表现的。 玩拼图风暴的一些运行。", + "mobileSharePuzzle": "分享这个谜题", + "mobileShareGameURL": "分享棋局链接", + "mobileShareGamePGN": "分享 PGN", + "mobileSharePositionAsFEN": "保存局面为 FEN", + "mobileShowVariations": "显示变化", + "mobileHideVariation": "隐藏变异", + "mobileShowComments": "显示评论", + "mobilePuzzleStormConfirmEndRun": "你想结束这次跑步吗?", + "mobilePuzzleStormFilterNothingToShow": "没有显示,请更改过滤器", + "mobileCancelTakebackOffer": "取消悔棋请求", + "mobileCancelDrawOffer": "取消和棋请求", + "mobileWaitingForOpponentToJoin": "正在等待对手加入...", + "mobileBlindfoldMode": "盲棋", + "mobileLiveStreamers": "主播", + "mobileCustomGameJoinAGame": "加入一局游戏", + "mobileCorrespondenceClearSavedMove": "清除已保存的移动", + "mobileSomethingWentWrong": "发生一些错误。", + "mobileShowResult": "显示结果", + "mobilePuzzleThemesSubtitle": "从你最喜欢的开口玩拼图,或选择一个主题。", + "mobilePuzzleStormSubtitle": "在3分钟内尽可能多地解决谜题", + "mobileGreeting": "你好,{param}", + "mobileGreetingWithoutName": "你好!", "activityActivity": "动态", "activityHostedALiveStream": "主持了直播", "activityRankedInSwissTournament": "在 {param2} 中获得第 #{param1} 名", @@ -498,6 +541,7 @@ "latestForumPosts": "最新论坛帖子", "players": "棋手", "friends": "棋友", + "otherPlayers": "其他玩家", "discussions": "讨论组", "today": "今天", "yesterday": "昨天", @@ -755,6 +799,8 @@ "descPrivateHelp": "仅团队成员可见,设置后将覆盖公开简介为团队成员展示。", "no": "否", "yes": "是", + "website": "网站", + "mobile": "流动电话", "help": "帮助:", "createANewTopic": "新话题", "topics": "话题", @@ -806,6 +852,7 @@ "slow": "慢", "insideTheBoard": "棋盘内", "outsideTheBoard": "棋盘外", + "allSquaresOfTheBoard": "棋盘上的所有格子", "onSlowGames": "在慢棋时", "always": "总是", "never": "从不", @@ -991,7 +1038,7 @@ "brightness": "亮度", "hue": "色调", "boardReset": "重置颜色设置", - "pieceSet": "棋子设定", + "pieceSet": "棋子风格", "embedInYourWebsite": "嵌入到你的网站上", "usernameAlreadyUsed": "该用户名已被使用,请使用另一个。", "usernamePrefixInvalid": "用户名必须以字母开头。", diff --git a/lib/l10n/lila_zh_TW.arb b/lib/l10n/lila_zh_TW.arb index a52306a594..4ccbf61727 100644 --- a/lib/l10n/lila_zh_TW.arb +++ b/lib/l10n/lila_zh_TW.arb @@ -1,4 +1,22 @@ { + "mobileHomeTab": "主頁", + "mobilePuzzlesTab": "謎題", + "mobileToolsTab": "工具", + "mobileWatchTab": "觀看", + "mobileSettingsTab": "設置", + "mobileMustBeLoggedIn": "你必須登入才能查看此頁面。", + "mobileSystemColors": "系统颜色", + "mobileFeedbackButton": "問題反饋", + "mobileOkButton": "確認", + "mobileSettingsHapticFeedback": "震動回饋", + "mobileSettingsImmersiveMode": "沉浸模式", + "mobileAllGames": "所有遊戲", + "mobileRecentSearches": "最近搜尋", + "mobileClearButton": "清除", + "mobileNoSearchResults": "無結果", + "mobileAreYouSure": "您確定嗎?", + "mobileShareGamePGN": "分享 PGN", + "mobileCustomGameJoinAGame": "加入遊戲", "activityActivity": "活動", "activityHostedALiveStream": "主持一個現場直播", "activityRankedInSwissTournament": "在{param2}中排名{param1}", diff --git a/lib/main.dart b/lib/main.dart index 20cf3d0d66..982f02c275 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -9,11 +9,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_native_splash/flutter_native_splash.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:http/http.dart'; import 'package:lichess_mobile/src/db/database.dart'; import 'package:lichess_mobile/src/intl.dart'; import 'package:lichess_mobile/src/log.dart'; -import 'package:lichess_mobile/src/model/common/http.dart'; import 'package:lichess_mobile/src/model/common/id.dart'; import 'package:lichess_mobile/src/model/correspondence/correspondence_game_storage.dart'; import 'package:lichess_mobile/src/model/correspondence/offline_correspondence_game.dart'; @@ -28,11 +26,7 @@ import 'firebase_options.dart'; import 'src/app.dart'; import 'src/utils/color_palette.dart'; -void main() { - runWithClient(_startFlutterApp, httpClientFactory); -} - -Future _startFlutterApp() async { +Future main() async { final widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); // logging setup @@ -97,7 +91,7 @@ Future _startFlutterApp() async { observers: [ ProviderLogger(), ], - child: const LoadingAppScreen(), + child: const AppInitializationScreen(), ), ); } diff --git a/lib/src/app.dart b/lib/src/app.dart index 9363989448..1b640f5065 100644 --- a/lib/src/app.dart +++ b/lib/src/app.dart @@ -21,14 +21,15 @@ import 'package:lichess_mobile/src/model/settings/general_preferences.dart'; import 'package:lichess_mobile/src/navigation.dart'; import 'package:lichess_mobile/src/notification_service.dart'; import 'package:lichess_mobile/src/styles/styles.dart'; -import 'package:lichess_mobile/src/utils/android.dart'; import 'package:lichess_mobile/src/utils/connectivity.dart'; import 'package:lichess_mobile/src/utils/navigation.dart'; import 'package:lichess_mobile/src/utils/screen.dart'; +import 'package:lichess_mobile/src/utils/system.dart'; import 'package:lichess_mobile/src/view/game/game_screen.dart'; -class LoadingAppScreen extends ConsumerWidget { - const LoadingAppScreen({super.key}); +/// Application initialization and main entry point. +class AppInitializationScreen extends ConsumerWidget { + const AppInitializationScreen({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { @@ -71,7 +72,7 @@ class LoadingAppScreen extends ConsumerWidget { const SizedBox(height: 16.0), ElevatedButton( onPressed: () { - AndroidStorage.instance.clearUserData(); + System.instance.clearUserData(); }, child: const Text('Clear storage'), ), @@ -85,6 +86,10 @@ class LoadingAppScreen extends ConsumerWidget { } } +/// The main application widget. +/// +/// This widget is the root of the application and is responsible for setting up +/// the theme, locale, and other global settings. class Application extends ConsumerStatefulWidget { const Application({super.key}); @@ -135,18 +140,12 @@ class _AppState extends ConsumerState { @override Widget build(BuildContext context) { - final themeMode = ref.watch( - generalPreferencesProvider.select( - (state) => state.themeMode, - ), - ); + final generalPrefs = ref.watch(generalPreferencesProvider); + final brightness = ref.watch(currentBrightnessProvider); final boardTheme = ref.watch( boardPreferencesProvider.select((state) => state.boardTheme), ); - final hasSystemColors = ref.watch( - generalPreferencesProvider.select((state) => state.systemColors), - ); final remainingHeight = estimateRemainingHeightLeftBoard(context); @@ -164,12 +163,13 @@ class _AppState extends ConsumerState { final dynamicColorScheme = brightness == Brightness.light ? fixedLightScheme : fixedDarkScheme; - final colorScheme = hasSystemColors && dynamicColorScheme != null - ? dynamicColorScheme - : ColorScheme.fromSeed( - seedColor: boardTheme.colors.darkSquare, - brightness: brightness, - ); + final colorScheme = + generalPrefs.systemColors && dynamicColorScheme != null + ? dynamicColorScheme + : ColorScheme.fromSeed( + seedColor: boardTheme.colors.darkSquare, + brightness: brightness, + ); final cupertinoColorScheme = ColorScheme.fromSeed( seedColor: boardTheme.colors.darkSquare, @@ -204,6 +204,7 @@ class _AppState extends ConsumerState { localizationsDelegates: AppLocalizations.localizationsDelegates, supportedLocales: kSupportedLocales, onGenerateTitle: (BuildContext context) => 'lichess.org', + locale: generalPrefs.locale, theme: ThemeData.from( colorScheme: colorScheme, textTheme: Theme.of(context).platform == TargetPlatform.iOS @@ -226,7 +227,7 @@ class _AppState extends ConsumerState { ), ], ), - themeMode: themeMode, + themeMode: generalPrefs.themeMode, builder: Theme.of(context).platform == TargetPlatform.iOS ? (context, child) { return CupertinoTheme( @@ -269,6 +270,15 @@ class _AppState extends ConsumerState { } } +/// The entry point widget for the application. +/// +/// This widget needs to be a desendant of [MaterialApp] to be able to handle +/// the [Navigator] properly. +/// +/// This widget is responsible for setting up the bottom navigation scaffold and +/// the main navigation routes. +/// +/// It also sets up the push notifications and handles incoming messages. class _EntryPointWidget extends ConsumerStatefulWidget { const _EntryPointWidget(); @@ -278,6 +288,10 @@ class _EntryPointWidget extends ConsumerStatefulWidget { class _EntryPointState extends ConsumerState<_EntryPointWidget> { StreamSubscription? _fcmTokenRefreshSubscription; + ProviderSubscription>? + _connectivitySubscription; + + bool _pushNotificationsSetup = false; @override Widget build(BuildContext context) { @@ -288,12 +302,24 @@ class _EntryPointState extends ConsumerState<_EntryPointWidget> { void initState() { super.initState(); - _setupPushNotifications(); + _connectivitySubscription = + ref.listenManual(connectivityChangesProvider, (prev, current) async { + // setup push notifications once when the app comes online + if (current.value?.isOnline == true && !_pushNotificationsSetup) { + try { + await _setupPushNotifications(); + _pushNotificationsSetup = true; + } catch (e, st) { + debugPrint('Could not sync correspondence games; $e\n$st'); + } + } + }); } @override void dispose() { _fcmTokenRefreshSubscription?.cancel(); + _connectivitySubscription?.close(); super.dispose(); } @@ -325,7 +351,7 @@ class _EntryPointState extends ConsumerState<_EntryPointWidget> { }); // Register the device with the server. - ref.read(notificationServiceProvider).registerDevice(); + await ref.read(notificationServiceProvider).registerDevice(); // Get any messages which caused the application to open from // a terminated state. diff --git a/lib/src/app_initialization.dart b/lib/src/app_initialization.dart index 3f61b84bfe..61b600704a 100644 --- a/lib/src/app_initialization.dart +++ b/lib/src/app_initialization.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'package:device_info_plus/device_info_plus.dart'; -import 'package:fast_immutable_collections/fast_immutable_collections.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; @@ -17,15 +16,14 @@ import 'package:lichess_mobile/src/model/settings/board_preferences.dart'; import 'package:lichess_mobile/src/model/settings/general_preferences.dart'; import 'package:lichess_mobile/src/utils/color_palette.dart'; import 'package:lichess_mobile/src/utils/string.dart'; +import 'package:lichess_mobile/src/utils/system.dart'; import 'package:logging/logging.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:path/path.dart' as p; import 'package:pub_semver/pub_semver.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:soundpool/soundpool.dart'; import 'package:sqflite/sqflite.dart'; -import 'package:system_info_plus/system_info_plus.dart'; part 'app_initialization.freezed.dart'; part 'app_initialization.g.dart'; @@ -41,8 +39,6 @@ Future appInitialization( final pInfo = await PackageInfo.fromPlatform(); final deviceInfo = await DeviceInfoPlugin().deviceInfo; final prefs = await SharedPreferences.getInstance(); - final soundTheme = GeneralPreferences.fetchFromStorage(prefs).soundTheme; - final soundPool = await ref.watch(soundPoolProvider(soundTheme).future); final dbPath = p.join(await getDatabasesPath(), kLichessDatabaseName); @@ -54,6 +50,15 @@ Future appInitialization( prefs.setString('installed_version', appVersion.canonicalizedVersion); } + // preload sounds + final soundTheme = GeneralPreferences.fetchFromStorage(prefs).soundTheme; + final soundService = ref.read(soundServiceProvider); + try { + await soundService.initialize(soundTheme); + } catch (e) { + _logger.warning('Cannot initialize SoundService: $e'); + } + final db = await openDb(databaseFactory, dbPath); if (prefs.getBool('first_run') ?? true) { @@ -97,36 +102,26 @@ Future appInitialization( final storedSession = await sessionStorage.read(); if (storedSession != null) { - final client = httpClientFactory(); - try { - final response = await client.get( - lichessUri('/api/account'), - headers: { - 'Authorization': 'Bearer ${signBearerToken(storedSession.token)}', - 'User-Agent': - makeUserAgent(pInfo, deviceInfo, sri, storedSession.user), - }, - ).timeout(const Duration(seconds: 3)); - if (response.statusCode == 401) { - await sessionStorage.delete(); - } - } catch (e) { - debugPrint( - 'WARNING: [AppInitialization] Error while checking session: $e', - ); - } finally { - client.close(); + final client = ref.read(defaultClientProvider); + final response = await client.get( + lichessUri('/api/account'), + headers: { + 'Authorization': 'Bearer ${signBearerToken(storedSession.token)}', + 'User-Agent': makeUserAgent(pInfo, deviceInfo, sri, storedSession.user), + }, + ).timeout(const Duration(seconds: 3)); + if (response.statusCode == 401) { + await sessionStorage.delete(); } } - final physicalMemory = await SystemInfoPlus.physicalMemory ?? 256.0; + final physicalMemory = await System.instance.getTotalRam() ?? 256.0; final engineMaxMemory = (physicalMemory / 10).ceil(); return AppInitializationData( packageInfo: pInfo, deviceInfo: deviceInfo, sharedPreferences: prefs, - soundPool: soundPool, userSession: await sessionStorage.read(), database: db, sri: sri, @@ -140,7 +135,6 @@ class AppInitializationData with _$AppInitializationData { required PackageInfo packageInfo, required BaseDeviceInfo deviceInfo, required SharedPreferences sharedPreferences, - required (Soundpool, IMap) soundPool, required AuthSessionState? userSession, required Database database, required String sri, diff --git a/lib/src/constants.dart b/lib/src/constants.dart index 691f9b6c24..c363b4ab46 100644 --- a/lib/src/constants.dart +++ b/lib/src/constants.dart @@ -49,7 +49,6 @@ const kCardTextScaleFactor = 1.64; const kMaxClockTextScaleFactor = 1.94; const kEmptyWidget = SizedBox.shrink(); const kEmptyFen = '8/8/8/8/8/8/8/8 w - - 0 1'; -const kInitialFen = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1'; const kTabletBoardTableSidePadding = 16.0; const kBottomBarHeight = 56.0; const kMaterialPopupMenuMaxWidth = 500.0; @@ -86,7 +85,6 @@ const kSupportedLocales = [ Locale('cs', 'CZ'), Locale('da', 'DK'), Locale('de', 'DE'), - Locale('de', 'CH'), Locale('el', 'GR'), Locale('en', 'US'), Locale('eo', 'UY'), @@ -99,6 +97,7 @@ const kSupportedLocales = [ Locale('fr', 'FR'), Locale('ga', 'IE'), Locale('gl', 'ES'), + Locale('gsw', 'CH'), Locale('he', 'IL'), Locale('hi', 'IN'), Locale('hr', 'HR'), @@ -127,10 +126,8 @@ const kSupportedLocales = [ Locale('sr', 'SP'), Locale('sv', 'SE'), Locale('tr', 'TR'), - Locale('tt', 'RU'), Locale('uk', 'UA'), Locale('vi', 'VN'), - Locale('zh', ''), Locale('zh', 'CN'), Locale('zh', 'TW'), ]; diff --git a/lib/src/model/analysis/analysis_controller.dart b/lib/src/model/analysis/analysis_controller.dart index 1aee12a85c..66957d6bd3 100644 --- a/lib/src/model/analysis/analysis_controller.dart +++ b/lib/src/model/analysis/analysis_controller.dart @@ -383,9 +383,9 @@ class AnalysisController extends _$AnalysisController { ? _root.view : state.root; + final isForward = path.size > state.currentPath.size; if (currentNode is Branch) { if (!replaying) { - final isForward = path.size > state.currentPath.size; if (isForward) { final isCheck = currentNode.sanMove.isCheck; if (currentNode.sanMove.isCapture) { @@ -396,7 +396,7 @@ class AnalysisController extends _$AnalysisController { ref.read(moveFeedbackServiceProvider).moveFeedback(check: isCheck); } } - } else { + } else if (isForward) { final soundService = ref.read(soundServiceProvider); if (currentNode.sanMove.isCapture) { soundService.play(Sound.capture); diff --git a/lib/src/model/broadcast/broadcast.dart b/lib/src/model/broadcast/broadcast.dart index 68331e5a4e..ac8ccdb1e8 100644 --- a/lib/src/model/broadcast/broadcast.dart +++ b/lib/src/model/broadcast/broadcast.dart @@ -20,6 +20,9 @@ class Broadcast with _$Broadcast { required BroadcastTournament tour, required BroadcastRound round, required String? group, + + /// The round to which the user should be brought when cliking on the tournament + required BroadcastRoundId roundToLinkId, }) = _Broadcast; bool get isLive => round.status == RoundStatus.live; @@ -46,15 +49,20 @@ class BroadcastRound with _$BroadcastRound { }) = _BroadcastRound; } +typedef BroadcastRoundGames = IMap; + @freezed class BroadcastGameSnapshot with _$BroadcastGameSnapshot { const BroadcastGameSnapshot._(); const factory BroadcastGameSnapshot({ - required IList players, + required IMap players, required String fen, required Move? lastMove, required String status, + + /// The amount of time that the player whose turn it is has been thinking since his last move + required Duration? thinkTime, }) = _BroadcastGameSnapshot; } diff --git a/lib/src/model/broadcast/broadcast_providers.dart b/lib/src/model/broadcast/broadcast_providers.dart index d750193518..0642c913e6 100644 --- a/lib/src/model/broadcast/broadcast_providers.dart +++ b/lib/src/model/broadcast/broadcast_providers.dart @@ -1,8 +1,6 @@ -import 'package:fast_immutable_collections/fast_immutable_collections.dart'; import 'package:lichess_mobile/src/model/broadcast/broadcast.dart'; import 'package:lichess_mobile/src/model/broadcast/broadcast_repository.dart'; import 'package:lichess_mobile/src/model/common/http.dart'; -import 'package:lichess_mobile/src/model/common/id.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'broadcast_providers.g.dart'; @@ -42,13 +40,3 @@ class BroadcastsPaginator extends _$BroadcastsPaginator { ); } } - -@riverpod -Future> broadcastRound( - BroadcastRoundRef ref, - BroadcastRoundId broadcastRoundId, -) async { - return ref.withClient( - (client) => BroadcastRepository(client).getRound(broadcastRoundId), - ); -} diff --git a/lib/src/model/broadcast/broadcast_repository.dart b/lib/src/model/broadcast/broadcast_repository.dart index 0cf0301ff2..05c6b6e7fb 100644 --- a/lib/src/model/broadcast/broadcast_repository.dart +++ b/lib/src/model/broadcast/broadcast_repository.dart @@ -1,3 +1,4 @@ +import 'package:dartchess/dartchess.dart'; import 'package:deep_pick/deep_pick.dart'; import 'package:fast_immutable_collections/fast_immutable_collections.dart'; import 'package:lichess_mobile/src/model/broadcast/broadcast.dart'; @@ -22,7 +23,7 @@ class BroadcastRepository { ); } - Future> getRound( + Future getRound( BroadcastRoundId broadcastRoundId, ) { return client.readJson( @@ -57,6 +58,7 @@ Broadcast _broadcastFromPick(RequiredPick pick) { : finished ? RoundStatus.finished : RoundStatus.upcoming; + final roundId = pick('round', 'id').asBroadcastRoundIdOrThrow(); return Broadcast( tour: ( @@ -64,7 +66,7 @@ Broadcast _broadcastFromPick(RequiredPick pick) { imageUrl: pick('tour', 'image').asStringOrNull(), ), round: BroadcastRound( - id: pick('round', 'id').asBroadcastRoundIdOrThrow(), + id: roundId, name: pick('round', 'name').asStringOrThrow(), status: status, startsAt: pick('round', 'startsAt') @@ -72,23 +74,36 @@ Broadcast _broadcastFromPick(RequiredPick pick) { .toLocal(), ), group: pick('group').asStringOrNull(), + roundToLinkId: + pick('roundToLink', 'id').asBroadcastRoundIddOrNull() ?? roundId, ); } -IList _makeGamesFromJson(Map json) => +BroadcastRoundGames _makeGamesFromJson(Map json) => _gamesFromPick(pick(json).required()); -IList _gamesFromPick(RequiredPick pick) => - pick('games').asListOrEmpty(_gameFromPick).toIList(); +BroadcastRoundGames _gamesFromPick( + RequiredPick pick, +) => + IMap.fromEntries(pick('games').asListOrThrow(gameFromPick)); -BroadcastGameSnapshot _gameFromPick(RequiredPick pick) { - return BroadcastGameSnapshot( - players: pick('players').asListOrThrow(_playerFromPick).toIList(), - fen: pick('fen').asStringOrNull() ?? Variant.standard.initialPosition.fen, - lastMove: pick('lastMove').asUciMoveOrNull(), - status: pick('status').asStringOrThrow(), - ); -} +MapEntry gameFromPick( + RequiredPick pick, +) => + MapEntry( + pick('id').asBroadcastGameIdOrThrow(), + BroadcastGameSnapshot( + players: IMap({ + Side.white: _playerFromPick(pick('players', 0).required()), + Side.black: _playerFromPick(pick('players', 1).required()), + }), + fen: pick('fen').asStringOrNull() ?? + Variant.standard.initialPosition.fen, + lastMove: pick('lastMove').asUciMoveOrNull(), + status: pick('status').asStringOrThrow(), + thinkTime: pick('thinkTime').asDurationFromSecondsOrNull(), + ), + ); BroadcastPlayer _playerFromPick(RequiredPick pick) { return BroadcastPlayer( diff --git a/lib/src/model/broadcast/broadcast_round_controller.dart b/lib/src/model/broadcast/broadcast_round_controller.dart new file mode 100644 index 0000000000..d14118d8e2 --- /dev/null +++ b/lib/src/model/broadcast/broadcast_round_controller.dart @@ -0,0 +1,128 @@ +import 'dart:async'; + +import 'package:dartchess/dartchess.dart'; +import 'package:deep_pick/deep_pick.dart'; +import 'package:fast_immutable_collections/fast_immutable_collections.dart'; +import 'package:lichess_mobile/src/model/broadcast/broadcast.dart'; +import 'package:lichess_mobile/src/model/broadcast/broadcast_repository.dart'; +import 'package:lichess_mobile/src/model/common/chess.dart'; +import 'package:lichess_mobile/src/model/common/http.dart'; +import 'package:lichess_mobile/src/model/common/id.dart'; +import 'package:lichess_mobile/src/model/common/socket.dart'; +import 'package:lichess_mobile/src/utils/json.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'broadcast_round_controller.g.dart'; + +@riverpod +class BroadcastRoundController extends _$BroadcastRoundController { + static Uri broadcastSocketUri(BroadcastRoundId broadcastRoundId) => + Uri(path: 'study/$broadcastRoundId/socket/v6'); + + StreamSubscription? _subscription; + + late SocketClient _socketClient; + + @override + Future build(BroadcastRoundId broadcastRoundId) async { + _socketClient = ref + .read(socketPoolProvider) + .open(BroadcastRoundController.broadcastSocketUri(broadcastRoundId)); + + _subscription = _socketClient.stream.listen(_handleSocketEvent); + + ref.onDispose(() { + _subscription?.cancel(); + }); + + return await ref.withClient( + (client) => BroadcastRepository(client).getRound(broadcastRoundId), + ); + } + + void _handleSocketEvent(SocketEvent event) { + if (!state.hasValue) return; + + switch (event.topic) { + // Sent when a node is recevied from the broadcast + case 'addNode': + _handleAddNodeEvent(event); + // Sent when a game ends + case 'chapters': + _handleChaptersEvent(event); + // Sent when clocks are updated from the broadcast + case 'clock': + _handleClockEvent(event); + } + } + + void _handleAddNodeEvent(SocketEvent event) { + // The path of the last and current move of the broadcasted game + final currentPath = pick(event.data, 'relayPath').asUciPathOrThrow(); + // The path for the node that was received + final path = pick(event.data, 'p', 'path').asUciPathOrThrow(); + final nodeId = pick(event.data, 'n', 'id').asUciCharPairOrThrow(); + + // We check that the event we received is for the last move of the game + if (currentPath != path + nodeId) return; + + final broadcastGameId = + pick(event.data, 'p', 'chapterId').asBroadcastGameIdOrThrow(); + + final fen = pick(event.data, 'n', 'fen').asStringOrThrow(); + + final playingSide = Setup.parseFen(fen).turn.opposite; + + state = AsyncData( + state.requireValue.update( + broadcastGameId, + (broadcastGameSnapshot) => broadcastGameSnapshot.copyWith( + players: IMap( + { + playingSide: broadcastGameSnapshot.players[playingSide]!.copyWith( + clock: pick(event.data, 'n', 'clock') + .asDurationFromCentiSecondsOrNull(), + ), + playingSide.opposite: + broadcastGameSnapshot.players[playingSide.opposite]!, + }, + ), + fen: fen, + lastMove: pick(event.data, 'n', 'uci').asUciMoveOrThrow(), + thinkTime: null, + ), + ), + ); + } + + void _handleChaptersEvent(SocketEvent event) { + final games = pick(event.data).asListOrThrow(gameFromPick); + state = AsyncData(IMap.fromEntries(games)); + } + + void _handleClockEvent(SocketEvent event) { + final broadcastGameId = + pick(event.data, 'p', 'chapterId').asBroadcastGameIdOrThrow(); + final whiteClock = pick(event.data, 'p', 'relayClocks', 0) + .asDurationFromCentiSecondsOrNull(); + final blackClock = pick(event.data, 'p', 'relayClocks', 1) + .asDurationFromCentiSecondsOrNull(); + state = AsyncData( + state.requireValue.update( + broadcastGameId, + (broadcastGameSnapshot) => broadcastGameSnapshot.copyWith( + players: IMap( + { + Side.white: broadcastGameSnapshot.players[Side.white]!.copyWith( + clock: whiteClock, + ), + Side.black: broadcastGameSnapshot.players[Side.black]!.copyWith( + clock: blackClock, + ), + }, + ), + ), + ), + ); + } +} diff --git a/lib/src/model/common/http.dart b/lib/src/model/common/http.dart index f1e275352b..0c308bf32f 100644 --- a/lib/src/model/common/http.dart +++ b/lib/src/model/common/http.dart @@ -44,6 +44,8 @@ Uri lichessUri(String unencodedPath, [Map? queryParameters]) => : Uri.https(kLichessHost, unencodedPath, queryParameters); /// Creates the appropriate http client for the platform. +/// +/// Do not use directly, use [defaultClient] or [lichessClient] instead. Client httpClientFactory() { const userAgent = 'Lichess Mobile'; if (Platform.isAndroid) { diff --git a/lib/src/model/common/id.dart b/lib/src/model/common/id.dart index 8b192be6d6..4ab5fb6edb 100644 --- a/lib/src/model/common/id.dart +++ b/lib/src/model/common/id.dart @@ -51,6 +51,8 @@ extension type const ChallengeId(String value) implements StringId {} extension type const BroadcastRoundId(String value) implements StringId {} +extension type const BroadcastGameId(String value) implements StringId {} + extension IDPick on Pick { UserId asUserIdOrThrow() { final value = required().value; @@ -165,4 +167,23 @@ extension IDPick on Pick { return null; } } + + BroadcastGameId asBroadcastGameIdOrThrow() { + final value = required().value; + if (value is String) { + return BroadcastGameId(value); + } + throw PickException( + "value $value at $debugParsingExit can't be casted to BroadcastRoundId", + ); + } + + BroadcastGameId? asBroadcastGameIddOrNull() { + if (value == null) return null; + try { + return asBroadcastGameIdOrThrow(); + } catch (_) { + return null; + } + } } diff --git a/lib/src/model/common/service/sound_service.dart b/lib/src/model/common/service/sound_service.dart index bbc95b397b..875de4a4ea 100644 --- a/lib/src/model/common/service/sound_service.dart +++ b/lib/src/model/common/service/sound_service.dart @@ -1,14 +1,14 @@ -import 'package:fast_immutable_collections/fast_immutable_collections.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart' show rootBundle; -import 'package:lichess_mobile/src/app_initialization.dart'; import 'package:lichess_mobile/src/model/settings/general_preferences.dart'; import 'package:lichess_mobile/src/model/settings/sound_theme.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; -import 'package:soundpool/soundpool.dart'; +import 'package:sound_effect/sound_effect.dart'; part 'sound_service.g.dart'; +final _soundEffectPlugin = SoundEffect(); + // Must match name of files in assets/sounds/standard enum Sound { move, @@ -21,92 +21,88 @@ enum Sound { clock, } -typedef SoundMap = IMap; - @Riverpod(keepAlive: true) SoundService soundService(SoundServiceRef ref) { - // requireValue is possible because appInitializationProvider is loaded before - // anything. See: lib/src/app.dart - final deps = ref.read(appInitializationProvider).requireValue; - final (pool, sounds) = deps.soundPool; - return SoundService(pool, sounds, ref); + final service = SoundService(ref); + ref.onDispose(() => service.release()); + return service; } -@Riverpod(keepAlive: true) -Future<(Soundpool, SoundMap)> soundPool( - SoundPoolRef ref, - SoundTheme theme, -) async { - final pool = Soundpool.fromOptions( - options: const SoundpoolOptions( - iosOptions: SoundpoolOptionsIos( - enableRate: false, - audioSessionCategory: AudioSessionCategory.ambient, - ), - ), - ); +final _extension = defaultTargetPlatform == TargetPlatform.iOS ? 'aifc' : 'mp3'; - ref.onDispose(pool.release); - final sounds = await loadSounds(pool, theme); +const Set _emtpySet = {}; - return (pool, sounds); +/// Loads all sounds of the given [SoundTheme]. +Future _loadAllSounds( + SoundTheme soundTheme, { + Set excluded = _emtpySet, +}) async { + await Future.wait( + Sound.values + .where((s) => !excluded.contains(s)) + .map((sound) => _loadSound(soundTheme, sound)), + ); } -final extension = defaultTargetPlatform == TargetPlatform.iOS ? 'aifc' : 'mp3'; - -Future loadSounds(Soundpool pool, SoundTheme soundTheme) async { - await pool.release(); - return IMap({ - for (final sound in Sound.values) - sound: await rootBundle - .load('assets/sounds/${soundTheme.name}/${sound.name}.$extension') - // on iOS if aifc file is not found, load mp3 - .catchError( - (_) => rootBundle - .load('assets/sounds/${soundTheme.name}/${sound.name}.mp3'), - ) - // if not found, load standard theme sound - .catchError( - (_) => rootBundle.load('assets/sounds/standard/${sound.name}.mp3'), - ) - .then((soundData) => pool.load(soundData)), - }); +/// Loads a single sound from the given [SoundTheme]. +Future _loadSound(SoundTheme theme, Sound sound) async { + final themePath = 'assets/sounds/${theme.name}'; + const standardPath = 'assets/sounds/standard'; + final soundId = sound.name; + final file = '$soundId.$_extension'; + String fullPath = '$themePath/$file'; + // If the sound file is not found in the theme, fallback to the standard theme. + try { + await rootBundle.load(fullPath); + } catch (_) { + fullPath = '$standardPath/$file'; + } + await _soundEffectPlugin.load(soundId, fullPath); } +/// Service to play game sounds. class SoundService { - SoundService(this._pool, this._sounds, this._ref); + SoundService(this._ref); - final Soundpool _pool; - SoundMap _sounds; final SoundServiceRef _ref; - (int, Sound)? _currentStream; + /// Initialize the sound service with the given sound theme. + /// + /// This will load the sounds from assets and make them ready to be played. + Future initialize(SoundTheme theme) async { + await _soundEffectPlugin.initialize(); + await _loadAllSounds(theme); + } - Future play(Sound sound) async { + /// Play the given sound if sound is enabled. + Future play(Sound sound) async { final isEnabled = _ref.read(generalPreferencesProvider).isSoundEnabled; - final soundId = _sounds[sound]; - if (soundId != null && isEnabled) { - // Stop current sound only if it is a move or capture sound - if (_currentStream != null && - _currentStream!.$1 > 0 && - (_currentStream!.$2 == Sound.move || - _currentStream!.$2 == Sound.capture)) { - await _pool.stop(_currentStream!.$1); - } - _currentStream = (await _pool.play(soundId), sound); - return _currentStream!.$1; + final volume = _ref.read(generalPreferencesProvider).masterVolume; + if (!isEnabled || volume == 0.0) { + return; } - return null; - } - - Future stopCurrent() async { - if (_currentStream != null) return _pool.stop(_currentStream!.$1); + _soundEffectPlugin.play(sound.name, volume: volume); } - Future changeTheme(SoundTheme theme, {bool playSound = false}) async { - _sounds = await loadSounds(_pool, theme); + /// Change the sound theme and optionally play a move sound. + /// + /// This will release the previous sounds and load the new ones. + /// + /// If [playSound] is true, a move sound will be played. + Future changeTheme( + SoundTheme theme, { + bool playSound = false, + }) async { + await _soundEffectPlugin.release(); + await _soundEffectPlugin.initialize(); + await _loadSound(theme, Sound.move); if (playSound) { play(Sound.move); } + await _loadAllSounds(theme, excluded: {Sound.move}); + } + + Future release() async { + await _soundEffectPlugin.release(); } } diff --git a/lib/src/model/common/socket.dart b/lib/src/model/common/socket.dart index e3ab838f00..58a503ae86 100644 --- a/lib/src/model/common/socket.dart +++ b/lib/src/model/common/socket.dart @@ -298,6 +298,10 @@ class SocketClient { /// /// The [SocketPool] will call this method when the client is no longer needed. void _dispose() { + _socketStreamSubscription?.cancel(); + _pingTimer?.cancel(); + _reconnectTimer?.cancel(); + _ackResendTimer?.cancel(); _streamController.close(); _averageLag.dispose(); isDisposed = true; diff --git a/lib/src/model/settings/board_preferences.dart b/lib/src/model/settings/board_preferences.dart index adaff949cb..9706fd8597 100644 --- a/lib/src/model/settings/board_preferences.dart +++ b/lib/src/model/settings/board_preferences.dart @@ -65,6 +65,14 @@ class BoardPreferences extends _$BoardPreferences { return _save(state.copyWith(pieceAnimation: !state.pieceAnimation)); } + Future toggleMagnifyDraggedPiece() { + return _save( + state.copyWith( + magnifyDraggedPiece: !state.magnifyDraggedPiece, + ), + ); + } + Future toggleShowMaterialDifference() { return _save( state.copyWith(showMaterialDifference: !state.showMaterialDifference), @@ -108,7 +116,8 @@ class BoardPrefs with _$BoardPrefs { required PieceShiftMethod pieceShiftMethod, /// Whether to enable shape drawings on the board for games and puzzles. - @JsonKey(defaultValue: false) required bool enableShapeDrawings, + @JsonKey(defaultValue: true) required bool enableShapeDrawings, + @JsonKey(defaultValue: true) required bool magnifyDraggedPiece, }) = _BoardPrefs; static const defaults = BoardPrefs( @@ -122,9 +131,27 @@ class BoardPrefs with _$BoardPrefs { pieceAnimation: true, showMaterialDifference: true, pieceShiftMethod: PieceShiftMethod.either, - enableShapeDrawings: false, + enableShapeDrawings: true, + magnifyDraggedPiece: true, ); + BoardSettings toBoardSettings() { + return BoardSettings( + pieceAssets: pieceSet.assets, + colorScheme: boardTheme.colors, + showValidMoves: showLegalMoves, + showLastMove: boardHighlights, + enableCoordinates: coordinates, + animationDuration: pieceAnimationDuration, + dragFeedbackSize: magnifyDraggedPiece ? 2.0 : 1.0, + dragFeedbackOffset: Offset(0.0, magnifyDraggedPiece ? -1.0 : 0.0), + pieceShiftMethod: pieceShiftMethod, + drawShape: DrawShapeOptions( + enable: enableShapeDrawings, + ), + ); + } + factory BoardPrefs.fromJson(Map json) { try { return _$BoardPrefsFromJson(json); @@ -223,13 +250,13 @@ enum BoardTheme { Widget get thumbnail => this == BoardTheme.system ? SizedBox( - height: 32, - width: 32 * 6, + height: 44, + width: 44 * 6, child: Row( children: [ for (final c in const [1, 2, 3, 4, 5, 6]) Container( - width: 32, + width: 44, color: c.isEven ? BoardTheme.system.colors.darkSquare : BoardTheme.system.colors.lightSquare, @@ -239,7 +266,7 @@ enum BoardTheme { ) : Image.asset( 'assets/board-thumbnails/$name.jpg', - height: 32, + height: 44, errorBuilder: (context, o, st) => const SizedBox.shrink(), ); } diff --git a/lib/src/model/settings/general_preferences.dart b/lib/src/model/settings/general_preferences.dart index c31e89abd5..44cd15bb94 100644 --- a/lib/src/model/settings/general_preferences.dart +++ b/lib/src/model/settings/general_preferences.dart @@ -39,10 +39,18 @@ class GeneralPreferences extends _$GeneralPreferences { return _save(state.copyWith(isSoundEnabled: !state.isSoundEnabled)); } + Future setLocale(Locale? locale) { + return _save(state.copyWith(locale: locale)); + } + Future setSoundTheme(SoundTheme soundTheme) { return _save(state.copyWith(soundTheme: soundTheme)); } + Future setMasterVolume(double volume) { + return _save(state.copyWith(masterVolume: volume)); + } + Future toggleSystemColors() async { if (defaultTargetPlatform != TargetPlatform.android) { return; @@ -75,27 +83,55 @@ class GeneralPreferences extends _$GeneralPreferences { @Freezed(fromJson: true, toJson: true) class GeneralPrefsState with _$GeneralPrefsState { const factory GeneralPrefsState({ + /// Background theme mode to use in the app @JsonKey(unknownEnumValue: ThemeMode.system) required ThemeMode themeMode, required bool isSoundEnabled, @JsonKey(unknownEnumValue: SoundTheme.standard) required SoundTheme soundTheme, + @JsonKey(defaultValue: 0.8) required double masterVolume, /// Should enable system color palette (android 12+ only) required bool systemColors, + + /// Locale to use in the app, use system locale if null + @JsonKey(toJson: _localeToJson, fromJson: _localeFromJson) Locale? locale, }) = _GeneralPrefsState; static const defaults = GeneralPrefsState( themeMode: ThemeMode.system, isSoundEnabled: true, soundTheme: SoundTheme.standard, + masterVolume: 0.8, systemColors: true, ); factory GeneralPrefsState.fromJson(Map json) { try { return _$GeneralPrefsStateFromJson(json); - } catch (_) { + } catch (e) { + debugPrint('Error parsing GeneralPrefsState: $e'); return defaults; } } } + +Map? _localeToJson(Locale? locale) { + return locale != null + ? { + 'languageCode': locale.languageCode, + 'countryCode': locale.countryCode, + 'scriptCode': locale.scriptCode, + } + : null; +} + +Locale? _localeFromJson(Map? json) { + if (json == null) { + return null; + } + return Locale.fromSubtags( + languageCode: json['languageCode'] as String, + countryCode: json['countryCode'] as String?, + scriptCode: json['scriptCode'] as String?, + ); +} diff --git a/lib/src/utils/connectivity.dart b/lib/src/utils/connectivity.dart index f0895ffb23..c6d37e3483 100644 --- a/lib/src/utils/connectivity.dart +++ b/lib/src/utils/connectivity.dart @@ -27,6 +27,8 @@ class ConnectivityChanges extends _$ConnectivityChanges { final _connectivityChangesDebouncer = Debouncer(const Duration(seconds: 5)); + Client get _defaultClient => ref.read(defaultClientProvider); + @override Future build() { ref.onDispose(() { @@ -74,23 +76,18 @@ class ConnectivityChanges extends _$ConnectivityChanges { final wasOnline = state.requireValue.isOnline; - final client = httpClientFactory(); - try { - _logger.fine('Connectivity changed: $result'); - final isOnline = await _onlineCheck(client); - _logger.fine('Online check result: $isOnline'); - - if (isOnline != wasOnline) { - _logger.info('Connectivity status: $result, isOnline: $isOnline'); - state = AsyncValue.data( - ConnectivityStatus( - isOnline: isOnline, - appState: state.valueOrNull?.appState, - ), - ); - } - } finally { - client.close(); + _logger.fine('Connectivity changed: $result'); + final newIsOnline = await isOnline(_defaultClient); + _logger.fine('Online check result: $isOnline'); + + if (newIsOnline != wasOnline) { + _logger.info('Connectivity status: $result, isOnline: $isOnline'); + state = AsyncValue.data( + ConnectivityStatus( + isOnline: newIsOnline, + appState: state.valueOrNull?.appState, + ), + ); } } @@ -98,18 +95,12 @@ class ConnectivityChanges extends _$ConnectivityChanges { List result, AppLifecycleState? appState, ) async { - final client = httpClientFactory(); - try { - final status = ConnectivityStatus( - isOnline: await _onlineCheck(client), - appState: appState, - ); - _logger - .info('Connectivity status: $result, isOnline: ${status.isOnline}'); - return status; - } finally { - client.close(); - } + final status = ConnectivityStatus( + isOnline: await isOnline(_defaultClient), + appState: appState, + ); + _logger.info('Connectivity status: $result, isOnline: ${status.isOnline}'); + return status; } } @@ -126,7 +117,8 @@ final _internetCheckUris = [ Uri.parse('$kLichessCDNHost/assets/logo/lichess-favicon-32.png'), ]; -Future _onlineCheck(Client client) { +/// Checks if the device is online by making a HEAD request to a list of URIs. +Future isOnline(Client client) { final completer = Completer(); try { int remaining = _internetCheckUris.length; diff --git a/lib/src/utils/json.dart b/lib/src/utils/json.dart index 625d8260f6..6066eaa7b0 100644 --- a/lib/src/utils/json.dart +++ b/lib/src/utils/json.dart @@ -1,4 +1,19 @@ import 'package:deep_pick/deep_pick.dart'; +import 'package:lichess_mobile/src/model/common/uci.dart'; + +extension UciExtension on Pick { + /// Matches a UciCharPair from a string. + UciCharPair asUciCharPairOrThrow() { + final value = required().asStringOrThrow(); + return UciCharPair.fromStringId(value); + } + + /// Matches a UciPath from a string. + UciPath asUciPathOrThrow() { + final value = required().asStringOrThrow(); + return UciPath(value); + } +} extension TimeExtension on Pick { /// Matches a DateTime from milliseconds since unix epoch. diff --git a/lib/src/utils/l10n.dart b/lib/src/utils/l10n.dart index b1f014570d..c3857206af 100644 --- a/lib/src/utils/l10n.dart +++ b/lib/src/utils/l10n.dart @@ -52,3 +52,156 @@ class _LocaleObserver extends WidgetsBindingObserver { _didChangeLocales(locales); } } + +/// Returns a localized string with a single placeholder replaced by a widget. +/// +/// The [textStyle] parameter can be used to style the displayed text parts of the localized string. +/// +/// For example: +/// ```dart +/// String translationFun(String name) { +/// return 'Hello, ${name}!'; +/// } +/// // returns a text widget containing MyFancyWidget('Magnus') in place of the placeholder +/// l10nWithWidget(translationFun, MyFancyWidget('Magnus')); +/// ``` +Text l10nWithWidget( + String Function(String) l10nFunction, + T widget, { + TextStyle? textStyle, +}) { + final localizedStringWithPlaceholder = l10nFunction('%s'); + + final parts = localizedStringWithPlaceholder.split('%s'); + + // Localized string did not actually contain the placeholder + if (parts[0] == localizedStringWithPlaceholder) { + return Text(localizedStringWithPlaceholder); + } + + return Text.rich( + TextSpan( + children: [ + if (parts[0].isNotEmpty) TextSpan(text: parts[0], style: textStyle), + if (parts[0] != localizedStringWithPlaceholder) + WidgetSpan( + child: widget, + alignment: PlaceholderAlignment.middle, + style: textStyle, + ), + if (parts.length > 1 && parts[1].isNotEmpty) + TextSpan(text: parts[1], style: textStyle), + ], + ), + ); +} + +/// Returns a localized locale name. +/// +/// Names taken from https://github.com/lichess-org/lila/blob/master/modules/i18n/src/main/LangList.scala. +/// +/// Not all of these are actually supported in the app currently, but this way we won't have to check the lila code again when we add more languages. +String localeToLocalizedName(Locale locale) => switch (locale) { + Locale(languageCode: 'en', countryCode: 'GB') => 'English', + Locale(languageCode: 'af', countryCode: 'ZA') => 'Afrikaans', + Locale(languageCode: 'an', countryCode: 'ES') => 'Aragonés', + Locale(languageCode: 'ar', countryCode: 'SA') => 'العربية', + Locale(languageCode: 'as', countryCode: 'IN') => 'অসমীয়া', + Locale(languageCode: 'av', countryCode: 'DA') => 'авар мацӀ', + Locale(languageCode: 'az', countryCode: 'AZ') => 'Azərbaycanca', + Locale(languageCode: 'be', countryCode: 'BY') => 'Беларуская', + Locale(languageCode: 'bg', countryCode: 'BG') => 'български език', + Locale(languageCode: 'bn', countryCode: 'BD') => 'বাংলা', + Locale(languageCode: 'br', countryCode: 'FR') => 'Brezhoneg', + Locale(languageCode: 'bs', countryCode: 'BA') => 'Bosanski', + Locale(languageCode: 'ca', countryCode: 'ES') => 'Català, valencià', + Locale(languageCode: 'ckb', countryCode: 'IR') => 'کوردی سۆرانی', + Locale(languageCode: 'co', countryCode: 'FR') => 'Corsu', + Locale(languageCode: 'cs', countryCode: 'CZ') => 'Čeština', + Locale(languageCode: 'cv', countryCode: 'CU') => 'чӑваш чӗлхи', + Locale(languageCode: 'cy', countryCode: 'GB') => 'Cymraeg', + Locale(languageCode: 'da', countryCode: 'DK') => 'Dansk', + Locale(languageCode: 'de', countryCode: 'DE') => 'Deutsch', + Locale(languageCode: 'el', countryCode: 'GR') => 'Ελληνικά', + Locale(languageCode: 'en', countryCode: 'US') => 'English (US)', + Locale(languageCode: 'eo', countryCode: 'UY') => 'Esperanto', + Locale(languageCode: 'es', countryCode: 'ES') => 'Español', + Locale(languageCode: 'et', countryCode: 'EE') => 'Eesti keel', + Locale(languageCode: 'eu', countryCode: 'ES') => 'Euskara', + Locale(languageCode: 'fa', countryCode: 'IR') => 'فارسی', + Locale(languageCode: 'fi', countryCode: 'FI') => 'Suomen kieli', + Locale(languageCode: 'fo', countryCode: 'FO') => 'Føroyskt', + Locale(languageCode: 'fr', countryCode: 'FR') => 'Français', + Locale(languageCode: 'frp', countryCode: 'IT') => 'Arpitan', + Locale(languageCode: 'fy', countryCode: 'NL') => 'Frysk', + Locale(languageCode: 'ga', countryCode: 'IE') => 'Gaeilge', + Locale(languageCode: 'gd', countryCode: 'GB') => 'Gàidhlig', + Locale(languageCode: 'gl', countryCode: 'ES') => 'Galego', + Locale(languageCode: 'gsw', countryCode: 'CH') => 'Schwizerdütsch', + Locale(languageCode: 'gu', countryCode: 'IN') => 'ગુજરાતી', + Locale(languageCode: 'he', countryCode: 'IL') => 'עִבְרִית', + Locale(languageCode: 'hi', countryCode: 'IN') => 'हिन्दी, हिंदी', + Locale(languageCode: 'hr', countryCode: 'HR') => 'Hrvatski', + Locale(languageCode: 'hu', countryCode: 'HU') => 'Magyar', + Locale(languageCode: 'hy', countryCode: 'AM') => 'Հայերեն', + Locale(languageCode: 'ia', countryCode: 'IA') => 'Interlingua', + Locale(languageCode: 'id', countryCode: 'ID') => 'Bahasa Indonesia', + Locale(languageCode: 'io', countryCode: 'EN') => 'Ido', + Locale(languageCode: 'is', countryCode: 'IS') => 'Íslenska', + Locale(languageCode: 'it', countryCode: 'IT') => 'Italiano', + Locale(languageCode: 'ja', countryCode: 'JP') => '日本語', + Locale(languageCode: 'jbo', countryCode: 'EN') => 'Lojban', + Locale(languageCode: 'jv', countryCode: 'ID') => 'Basa Jawa', + Locale(languageCode: 'ka', countryCode: 'GE') => 'ქართული', + Locale(languageCode: 'kab', countryCode: 'DZ') => 'Taqvaylit', + Locale(languageCode: 'kk', countryCode: 'KZ') => 'қазақша', + Locale(languageCode: 'kmr', countryCode: 'TR') => 'Kurdî (Kurmancî)', + Locale(languageCode: 'kn', countryCode: 'IN') => 'ಕನ್ನಡ', + Locale(languageCode: 'ko', countryCode: 'KR') => '한국어', + Locale(languageCode: 'ky', countryCode: 'KG') => 'кыргызча', + Locale(languageCode: 'la', countryCode: 'LA') => 'Lingua Latina', + Locale(languageCode: 'lb', countryCode: 'LU') => 'Lëtzebuergesch', + Locale(languageCode: 'lt', countryCode: 'LT') => 'Lietuvių kalba', + Locale(languageCode: 'lv', countryCode: 'LV') => 'Latviešu valoda', + Locale(languageCode: 'mg', countryCode: 'MG') => 'Fiteny malagasy', + Locale(languageCode: 'mk', countryCode: 'MK') => 'македонски јази', + Locale(languageCode: 'ml', countryCode: 'IN') => 'മലയാളം', + Locale(languageCode: 'mn', countryCode: 'MN') => 'монгол', + Locale(languageCode: 'mr', countryCode: 'IN') => 'मराठी', + Locale(languageCode: 'nb', countryCode: 'NO') => 'Norsk bokmål', + Locale(languageCode: 'ne', countryCode: 'NP') => 'नेपाली', + Locale(languageCode: 'nl', countryCode: 'NL') => 'Nederlands', + Locale(languageCode: 'nn', countryCode: 'NO') => 'Norsk nynorsk', + Locale(languageCode: 'pi', countryCode: 'IN') => 'पालि', + Locale(languageCode: 'pl', countryCode: 'PL') => 'Polski', + Locale(languageCode: 'ps', countryCode: 'AF') => 'پښتو', + Locale(languageCode: 'pt', countryCode: 'PT') => 'Português', + Locale(languageCode: 'pt', countryCode: 'BR') => 'Português (BR)', + Locale(languageCode: 'ro', countryCode: 'RO') => 'Română', + Locale(languageCode: 'ru', countryCode: 'RU') => 'русский язык', + Locale(languageCode: 'ry', countryCode: 'UA') => 'Русинська бисїда', + Locale(languageCode: 'sa', countryCode: 'IN') => 'संस्कृत', + Locale(languageCode: 'sk', countryCode: 'SK') => 'Slovenčina', + Locale(languageCode: 'sl', countryCode: 'SI') => 'Slovenščina', + Locale(languageCode: 'so', countryCode: 'SO') => 'Af Soomaali', + Locale(languageCode: 'sq', countryCode: 'AL') => 'Shqip', + Locale(languageCode: 'sr', countryCode: 'SP') => 'Српски језик', + Locale(languageCode: 'sv', countryCode: 'SE') => 'Svenska', + Locale(languageCode: 'sw', countryCode: 'KE') => 'Kiswahili', + Locale(languageCode: 'ta', countryCode: 'IN') => 'தமிழ்', + Locale(languageCode: 'tg', countryCode: 'TJ') => 'тоҷикӣ', + Locale(languageCode: 'th', countryCode: 'TH') => 'ไทย', + Locale(languageCode: 'tk', countryCode: 'TM') => 'Türkmençe', + Locale(languageCode: 'tl', countryCode: 'PH') => 'Tagalog', + Locale(languageCode: 'tp', countryCode: 'TP') => 'Toki pona', + Locale(languageCode: 'tr', countryCode: 'TR') => 'Türkçe', + Locale(languageCode: 'uk', countryCode: 'UA') => 'українська', + Locale(languageCode: 'ur', countryCode: 'PK') => 'اُردُو', + Locale(languageCode: 'uz', countryCode: 'UZ') => 'oʻzbekcha', + Locale(languageCode: 'vi', countryCode: 'VN') => 'Tiếng Việt', + Locale(languageCode: 'yo', countryCode: 'NG') => 'Yorùbá', + Locale(languageCode: 'zh', countryCode: 'CN') => '中文', + Locale(languageCode: 'zh', countryCode: 'TW') => '繁體中文', + Locale(languageCode: 'zu', countryCode: 'ZA') => 'isiZulu', + _ => locale.toString(), + }; diff --git a/lib/src/utils/android.dart b/lib/src/utils/system.dart similarity index 61% rename from lib/src/utils/android.dart rename to lib/src/utils/system.dart index 9d3ef7702e..70937039de 100644 --- a/lib/src/utils/android.dart +++ b/lib/src/utils/system.dart @@ -5,23 +5,27 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -final androidVersionProvider = - FutureProvider((ref) async { - if (!Platform.isAndroid) { - return null; - } - final info = await DeviceInfoPlugin().androidInfo; - return info.version; -}); +/// Various system utilities. +class System { + const System._(); -class AndroidStorage { - static const _channel = MethodChannel('mobile.lichess.org/storage'); + static const _channel = MethodChannel('mobile.lichess.org/system'); - const AndroidStorage._(); + static const instance = System._(); - static const instance = AndroidStorage._(); + /// Returns the system total RAM in megabytes. + Future getTotalRam() async { + try { + return await _channel.invokeMethod('getTotalRam'); + } on PlatformException catch (e) { + debugPrint('Failed to get total RAM: ${e.message}'); + return null; + } + } /// Clear all user data from the app. + /// + /// Only available on Android. Future clearUserData() async { if (Platform.isAndroid) { try { @@ -37,3 +41,13 @@ class AndroidStorage { throw UnimplementedError('This method is only available on Android'); } } + +/// A provider that returns OS version of an Android device. +final androidVersionProvider = + FutureProvider((ref) async { + if (!Platform.isAndroid) { + return null; + } + final info = await DeviceInfoPlugin().androidInfo; + return info.version; +}); diff --git a/lib/src/view/analysis/analysis_position_choice_screen.dart b/lib/src/view/analysis/analysis_position_choice_screen.dart index 381e7c97f0..b84bc3daca 100644 --- a/lib/src/view/analysis/analysis_position_choice_screen.dart +++ b/lib/src/view/analysis/analysis_position_choice_screen.dart @@ -26,7 +26,7 @@ class AnalysisPositionChoiceScreen extends StatelessWidget { Widget _androidBuilder(BuildContext context) { return Scaffold( appBar: AppBar( - title: Text(context.l10n.analysis), + title: Text(context.l10n.loadPosition), ), body: const _Body(), ); @@ -37,7 +37,7 @@ class AnalysisPositionChoiceScreen extends StatelessWidget { navigationBar: CupertinoNavigationBar( backgroundColor: Styles.cupertinoScaffoldColor.resolveFrom(context), border: null, - middle: Text(context.l10n.analysis), + middle: Text(context.l10n.loadPosition), ), child: const _Body(), ); diff --git a/lib/src/view/analysis/analysis_screen.dart b/lib/src/view/analysis/analysis_screen.dart index aff75712a2..1ded41d6ad 100644 --- a/lib/src/view/analysis/analysis_screen.dart +++ b/lib/src/view/analysis/analysis_screen.dart @@ -499,24 +499,17 @@ class _BoardState extends ConsumerState<_Board> { : IMap({sanMove.move.cg.to: annotation}) : null, ), - settings: cg.BoardSettings( - pieceAssets: boardPrefs.pieceSet.assets, - colorScheme: boardPrefs.boardTheme.colors, - showValidMoves: boardPrefs.showLegalMoves, - showLastMove: boardPrefs.boardHighlights, - enableCoordinates: boardPrefs.coordinates, - animationDuration: boardPrefs.pieceAnimationDuration, - borderRadius: widget.isTablet - ? const BorderRadius.all(Radius.circular(4.0)) - : BorderRadius.zero, - boxShadow: widget.isTablet ? boardShadows : const [], - drawShape: cg.DrawShapeOptions( - enable: true, - onCompleteShape: _onCompleteShape, - onClearShapes: _onClearShapes, - ), - pieceShiftMethod: boardPrefs.pieceShiftMethod, - ), + settings: boardPrefs.toBoardSettings().copyWith( + borderRadius: widget.isTablet + ? const BorderRadius.all(Radius.circular(4.0)) + : BorderRadius.zero, + boxShadow: widget.isTablet ? boardShadows : const [], + drawShape: cg.DrawShapeOptions( + enable: true, + onCompleteShape: _onCompleteShape, + onClearShapes: _onClearShapes, + ), + ), ); } diff --git a/lib/src/view/analysis/analysis_settings.dart b/lib/src/view/analysis/analysis_settings.dart index 33a8ea3749..725619a68a 100644 --- a/lib/src/view/analysis/analysis_settings.dart +++ b/lib/src/view/analysis/analysis_settings.dart @@ -31,10 +31,8 @@ class AnalysisSettings extends ConsumerWidget { ); return DraggableScrollableSheet( - initialChildSize: .7, + initialChildSize: 1.0, expand: false, - snap: true, - snapSizes: const [.7], builder: (context, scrollController) => ListView( controller: scrollController, children: [ diff --git a/lib/src/view/broadcast/broadcast_screen.dart b/lib/src/view/broadcast/broadcast_round_screen.dart similarity index 77% rename from lib/src/view/broadcast/broadcast_screen.dart rename to lib/src/view/broadcast/broadcast_round_screen.dart index 7bc35b9f4e..8d1839a8d8 100644 --- a/lib/src/view/broadcast/broadcast_screen.dart +++ b/lib/src/view/broadcast/broadcast_round_screen.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:chessground/chessground.dart'; import 'package:dartchess/dartchess.dart' as dartchess; import 'package:fast_immutable_collections/fast_immutable_collections.dart'; @@ -6,7 +8,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:lichess_mobile/src/model/broadcast/broadcast.dart'; -import 'package:lichess_mobile/src/model/broadcast/broadcast_providers.dart'; +import 'package:lichess_mobile/src/model/broadcast/broadcast_round_controller.dart'; +import 'package:lichess_mobile/src/model/common/http.dart'; import 'package:lichess_mobile/src/model/common/id.dart'; import 'package:lichess_mobile/src/styles/styles.dart'; import 'package:lichess_mobile/src/utils/chessground_compat.dart'; @@ -23,11 +26,12 @@ const _kPlayerWidgetTextStyle = TextStyle(fontSize: 13, height: 1.0); const _kPlayerWidgetPadding = EdgeInsets.symmetric(vertical: 5.0); -class BroadcastScreen extends StatelessWidget { +/// A screen that displays the live games of a broadcast round. +class BroadcastRoundScreen extends StatelessWidget { final String broadCastTitle; final BroadcastRoundId roundId; - const BroadcastScreen({ + const BroadcastRoundScreen({ super.key, required this.broadCastTitle, required this.roundId, @@ -71,12 +75,12 @@ class _Body extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final games = ref.watch(broadcastRoundProvider(roundId)); + final games = ref.watch(broadcastRoundControllerProvider(roundId)); return games.when( data: (games) => (games.isEmpty) ? const Text('No games to show for now') - : BroadcastPreview(games: games), + : BroadcastPreview(games: games.values.toIList()), loading: () => const Shimmer( child: ShimmerLoading( isLoading: true, @@ -141,15 +145,17 @@ class BroadcastPreview extends StatelessWidget { size: boardWidth, header: _PlayerWidget( width: boardWidth, - player: game.players[1], + player: game.players[dartchess.Side.black]!, gameStatus: game.status, + thinkTime: game.thinkTime, side: Side.black, playingSide: playingSide, ), footer: _PlayerWidget( width: boardWidth, - player: game.players[0], + player: game.players[dartchess.Side.white]!, gameStatus: game.status, + thinkTime: game.thinkTime, side: Side.white, playingSide: playingSide, ), @@ -166,6 +172,7 @@ class _PlayerWidget extends StatelessWidget { required this.width, required this.player, required this.gameStatus, + required this.thinkTime, required this.side, required this.playingSide, }) : _displayShimmerPlaceholder = false; @@ -180,12 +187,14 @@ class _PlayerWidget extends StatelessWidget { federation: null, ), gameStatus = '*', + thinkTime = null, side = Side.white, playingSide = Side.white, _displayShimmerPlaceholder = true; final BroadcastPlayer player; final String gameStatus; + final Duration? thinkTime; final Side side; final Side playingSide; final double width; @@ -225,9 +234,14 @@ class _PlayerWidget extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ if (player.federation != null) ...[ - SvgPicture.network( - lichessFideFedSrc(player.federation!), - height: 12, + Consumer( + builder: (context, widgetRef, _) { + return SvgPicture.network( + lichessFideFedSrc(player.federation!), + height: 12, + httpClient: widgetRef.read(defaultClientProvider), + ); + }, ), ], const SizedBox(width: 5), @@ -267,12 +281,12 @@ class _PlayerWidget extends StatelessWidget { const TextStyle().copyWith(fontWeight: FontWeight.bold), ) else if (player.clock != null) - Text( - player.clock!.toHoursMinutesSeconds(), - style: side == playingSide - ? const TextStyle().copyWith(color: Colors.orange[900]) - : null, - ), + if (side == playingSide) + _Clock( + clock: player.clock! - (thinkTime ?? Duration.zero), + ) + else + Text(player.clock!.toHoursMinutesSeconds()), ], ), ), @@ -280,3 +294,53 @@ class _PlayerWidget extends StatelessWidget { ); } } + +class _Clock extends StatefulWidget { + const _Clock({required this.clock}); + + final Duration clock; + + @override + _ClockState createState() => _ClockState(); +} + +class _ClockState extends State<_Clock> { + Timer? _timer; + late Duration _clock; + + @override + void initState() { + super.initState(); + _clock = widget.clock; + if (_clock.inSeconds <= 0) { + _clock = Duration.zero; + return; + } + _timer = Timer.periodic(const Duration(seconds: 1), (timer) { + setState(() { + _clock = _clock - const Duration(seconds: 1); + }); + if (_clock.inSeconds == 0) { + timer.cancel(); + return; + } + }); + } + + @override + void dispose() { + _timer?.cancel(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Text( + _clock.toHoursMinutesSeconds(), + style: TextStyle( + color: Colors.orange[900], + fontFeatures: const [FontFeature.tabularFigures()], + ), + ); + } +} diff --git a/lib/src/view/broadcast/broadcast_tile.dart b/lib/src/view/broadcast/broadcast_tile.dart index 89b555dd55..2097846ca9 100644 --- a/lib/src/view/broadcast/broadcast_tile.dart +++ b/lib/src/view/broadcast/broadcast_tile.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:lichess_mobile/src/model/broadcast/broadcast.dart'; import 'package:lichess_mobile/src/styles/transparent_image.dart'; import 'package:lichess_mobile/src/utils/navigation.dart'; -import 'package:lichess_mobile/src/view/broadcast/broadcast_screen.dart'; +import 'package:lichess_mobile/src/view/broadcast/broadcast_round_screen.dart'; import 'package:lichess_mobile/src/view/broadcast/default_broadcast_image.dart'; import 'package:lichess_mobile/src/widgets/list.dart'; @@ -27,9 +27,9 @@ class BroadcastTile extends StatelessWidget { onTap: () { pushPlatformRoute( context, - builder: (context) => BroadcastScreen( + builder: (context) => BroadcastRoundScreen( broadCastTitle: broadcast.tour.name, - roundId: broadcast.round.id, + roundId: broadcast.roundToLinkId, ), ); }, diff --git a/lib/src/view/broadcast/broadcasts_list_screen.dart b/lib/src/view/broadcast/broadcasts_list_screen.dart index d296ee2087..ccdf262370 100644 --- a/lib/src/view/broadcast/broadcasts_list_screen.dart +++ b/lib/src/view/broadcast/broadcasts_list_screen.dart @@ -10,7 +10,7 @@ import 'package:lichess_mobile/src/styles/styles.dart'; import 'package:lichess_mobile/src/styles/transparent_image.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; import 'package:lichess_mobile/src/utils/navigation.dart'; -import 'package:lichess_mobile/src/view/broadcast/broadcast_screen.dart'; +import 'package:lichess_mobile/src/view/broadcast/broadcast_round_screen.dart'; import 'package:lichess_mobile/src/view/broadcast/default_broadcast_image.dart'; import 'package:lichess_mobile/src/widgets/buttons.dart'; import 'package:lichess_mobile/src/widgets/platform.dart'; @@ -18,6 +18,7 @@ import 'package:lichess_mobile/src/widgets/shimmer.dart'; final _dateFormatter = DateFormat.MMMd(Intl.getCurrentLocale()).add_Hm(); +/// A screen that displays a paginated list of broadcasts. class BroadcastsListScreen extends StatelessWidget { const BroadcastsListScreen({super.key}); @@ -201,6 +202,7 @@ class BroadcastGridItem extends StatelessWidget { startsAt: DateTime.now(), ), group: null, + roundToLinkId: const BroadcastRoundId(''), ); @override @@ -210,9 +212,9 @@ class BroadcastGridItem extends StatelessWidget { onTap: () { pushPlatformRoute( context, - builder: (context) => BroadcastScreen( + builder: (context) => BroadcastRoundScreen( broadCastTitle: broadcast.tour.name, - roundId: broadcast.round.id, + roundId: broadcast.roundToLinkId, ), ); }, diff --git a/lib/src/view/game/archived_game_screen.dart b/lib/src/view/game/archived_game_screen.dart index 1e65e921ef..5b12811fa7 100644 --- a/lib/src/view/game/archived_game_screen.dart +++ b/lib/src/view/game/archived_game_screen.dart @@ -265,7 +265,7 @@ class _BottomBar extends ConsumerWidget { data: (data) { return Expanded( child: BottomBarButton( - label: 'Show result', + label: context.l10n.mobileShowResult, icon: Icons.info_outline, onTap: () { showAdaptiveDialog( diff --git a/lib/src/view/game/game_body.dart b/lib/src/view/game/game_body.dart index 0c15293f73..5bc42a50d8 100644 --- a/lib/src/view/game/game_body.dart +++ b/lib/src/view/game/game_body.dart @@ -457,7 +457,7 @@ class _GameBottomBar extends ConsumerWidget { if (!gameState.game.playable) Expanded( child: BottomBarButton( - label: 'Show result', + label: context.l10n.mobileShowResult, onTap: () { showAdaptiveDialog( context: context, diff --git a/lib/src/view/game/game_list_tile.dart b/lib/src/view/game/game_list_tile.dart index 924389d965..d8f17a3f43 100644 --- a/lib/src/view/game/game_list_tile.dart +++ b/lib/src/view/game/game_list_tile.dart @@ -2,6 +2,7 @@ import 'package:dartchess/dartchess.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:intl/intl.dart'; import 'package:lichess_mobile/src/model/analysis/analysis_controller.dart'; import 'package:lichess_mobile/src/model/common/http.dart'; import 'package:lichess_mobile/src/model/common/id.dart'; @@ -25,6 +26,8 @@ import 'package:lichess_mobile/src/widgets/list.dart'; import 'package:lichess_mobile/src/widgets/user_full_name.dart'; import 'package:timeago/timeago.dart' as timeago; +final _dateFormatter = DateFormat.yMMMd(Intl.getCurrentLocale()).add_Hm(); + /// A list tile that shows game info. class GameListTile extends StatelessWidget { const GameListTile({ @@ -35,6 +38,7 @@ class GameListTile extends StatelessWidget { this.subtitle, this.trailing, this.onTap, + this.padding, }); final LightArchivedGame game; @@ -45,6 +49,7 @@ class GameListTile extends StatelessWidget { final Widget? subtitle; final Widget? trailing; final GestureTapCallback? onTap; + final EdgeInsetsGeometry? padding; @override Widget build(BuildContext context) { @@ -78,6 +83,7 @@ class GameListTile extends StatelessWidget { ) : null, trailing: trailing, + padding: padding, ); } } @@ -118,6 +124,22 @@ class _ContextMenu extends ConsumerWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0).add( + const EdgeInsets.only(bottom: 8.0), + ), + child: Text( + context.l10n.resVsX( + game.white.fullName(context), + game.black.fullName(context), + ), + style: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.w600, + letterSpacing: -0.5, + ), + ), + ), Padding( padding: const EdgeInsets.symmetric(horizontal: 16.0).add( const EdgeInsets.only(bottom: 8.0), @@ -151,24 +173,19 @@ class _ContextMenu extends ConsumerWidget { CrossAxisAlignment.start, children: [ Text( - context.l10n.resVsX( - game.white.fullName(context), - game.black.fullName(context), - ), + '${game.clockDisplay} • ${game.rated ? context.l10n.rated : context.l10n.casual}', style: const TextStyle( - fontSize: 16, fontWeight: FontWeight.w500, - letterSpacing: -0.5, ), ), - const SizedBox(height: 2.0), Text( - '${game.clockDisplay} • ${game.rated ? context.l10n.rated : context.l10n.casual}', + _dateFormatter.format(game.lastMoveAt), style: TextStyle( color: textShade( context, Styles.subtitleOpacity, ), + fontSize: 12, ), ), ], @@ -418,13 +435,19 @@ class _ContextMenu extends ConsumerWidget { } } -/// A list tile that shows extended game info including an accuracy meter and a result icon. +/// A list tile that shows extended game info including a result icon and analysis icon. class ExtendedGameListTile extends StatelessWidget { - const ExtendedGameListTile({required this.item, this.userId}); + const ExtendedGameListTile({ + required this.item, + this.userId, + this.padding, + }); final LightArchivedGameWithPov item; final UserId? userId; + final EdgeInsetsGeometry? padding; + @override Widget build(BuildContext context) { final (game: game, pov: youAre) = item; @@ -459,6 +482,7 @@ class ExtendedGameListTile extends StatelessWidget { return GameListTile( game: game, mySide: youAre, + padding: padding, onTap: game.variant.isReadSupported ? () { pushPlatformRoute( @@ -485,28 +509,14 @@ class ExtendedGameListTile extends StatelessWidget { aiLevel: opponent.aiLevel, rating: opponent.rating, ), - subtitle: Text( - timeago.format(game.lastMoveAt), - ), + subtitle: Text(timeago.format(game.lastMoveAt)), trailing: Row( mainAxisSize: MainAxisSize.min, children: [ if (me.analysis != null) ...[ - Column( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - CupertinoIcons.chart_bar_alt_fill, - color: textShade(context, 0.5), - ), - Text( - me.analysis!.accuracy.toString(), - style: TextStyle( - fontSize: 10, - color: textShade(context, Styles.subtitleOpacity), - ), - ), - ], + Icon( + CupertinoIcons.chart_bar_alt_fill, + color: textShade(context, 0.5), ), const SizedBox(width: 5), ], diff --git a/lib/src/view/game/game_settings.dart b/lib/src/view/game/game_settings.dart index db63853034..9818b140ae 100644 --- a/lib/src/view/game/game_settings.dart +++ b/lib/src/view/game/game_settings.dart @@ -36,6 +36,20 @@ class GameSettings extends ConsumerWidget { subtitle: const SizedBox.shrink(), ), const SizedBox(height: 8.0), + SwitchSettingTile( + title: Text(context.l10n.sound), + value: isSoundEnabled, + onChanged: (value) { + ref.read(generalPreferencesProvider.notifier).toggleSoundEnabled(); + }, + ), + SwitchSettingTile( + title: Text(context.l10n.mobileSettingsHapticFeedback), + value: boardPrefs.hapticFeedback, + onChanged: (value) { + ref.read(boardPreferencesProvider.notifier).toggleHapticFeedback(); + }, + ), ...userPrefsAsync.maybeWhen( data: (data) { return [ @@ -77,17 +91,18 @@ class GameSettings extends ConsumerWidget { orElse: () => [], ), SwitchSettingTile( - title: Text(context.l10n.sound), - value: isSoundEnabled, - onChanged: (value) { - ref.read(generalPreferencesProvider.notifier).toggleSoundEnabled(); - }, - ), - SwitchSettingTile( - title: Text(context.l10n.mobileSettingsHapticFeedback), - value: boardPrefs.hapticFeedback, + // TODO: Add l10n + title: const Text('Shape drawing'), + subtitle: const Text( + 'Draw shapes using two fingers.', + maxLines: 5, + textAlign: TextAlign.justify, + ), + value: boardPrefs.enableShapeDrawings, onChanged: (value) { - ref.read(boardPreferencesProvider.notifier).toggleHapticFeedback(); + ref + .read(boardPreferencesProvider.notifier) + .toggleEnableShapeDrawings(); }, ), SwitchSettingTile( @@ -131,10 +146,8 @@ class GameSettings extends ConsumerWidget { ]; return DraggableScrollableSheet( - initialChildSize: .7, + initialChildSize: 1.0, expand: false, - snap: true, - snapSizes: const [.7], builder: (context, scrollController) => ListView( controller: scrollController, children: content, diff --git a/lib/src/view/home/home_tab_screen.dart b/lib/src/view/home/home_tab_screen.dart index 6298778c27..7a04182745 100644 --- a/lib/src/view/home/home_tab_screen.dart +++ b/lib/src/view/home/home_tab_screen.dart @@ -13,6 +13,7 @@ import 'package:lichess_mobile/src/navigation.dart'; import 'package:lichess_mobile/src/styles/styles.dart'; import 'package:lichess_mobile/src/utils/chessground_compat.dart'; import 'package:lichess_mobile/src/utils/connectivity.dart'; +import 'package:lichess_mobile/src/utils/l10n.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; import 'package:lichess_mobile/src/utils/navigation.dart'; import 'package:lichess_mobile/src/utils/screen.dart'; @@ -528,11 +529,14 @@ class _HelloWidget extends ConsumerWidget { color: context.lichessColors.brag, ), const SizedBox(width: 5.0), - Text( - 'Hello${user != null ? ', ' : ''}', - style: style, - ), - if (user != null) UserFullNameWidget(user: user, style: style), + if (user != null) + l10nWithWidget( + context.l10n.mobileGreeting, + UserFullNameWidget(user: user, style: style), + textStyle: style, + ) + else + Text(context.l10n.mobileGreetingWithoutName, style: style), ], ), ), diff --git a/lib/src/view/play/create_custom_game_screen.dart b/lib/src/view/play/create_custom_game_screen.dart index 5f3d64a400..fe7c97f903 100644 --- a/lib/src/view/play/create_custom_game_screen.dart +++ b/lib/src/view/play/create_custom_game_screen.dart @@ -98,7 +98,7 @@ class _AndroidBodyState extends State<_AndroidBody> controller: _tabController, tabs: [ Tab(text: context.l10n.createAGame), - const Tab(text: 'Join a game'), + Tab(text: context.l10n.mobileCustomGameJoinAGame), ], ), ), diff --git a/lib/src/view/puzzle/dashboard_screen.dart b/lib/src/view/puzzle/dashboard_screen.dart index 1f6e078d58..147ee226a0 100644 --- a/lib/src/view/puzzle/dashboard_screen.dart +++ b/lib/src/view/puzzle/dashboard_screen.dart @@ -10,6 +10,7 @@ import 'package:lichess_mobile/src/model/puzzle/puzzle_providers.dart'; import 'package:lichess_mobile/src/model/puzzle/puzzle_theme.dart'; import 'package:lichess_mobile/src/styles/styles.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; +import 'package:lichess_mobile/src/utils/screen.dart'; import 'package:lichess_mobile/src/utils/string.dart'; import 'package:lichess_mobile/src/widgets/adaptive_choice_picker.dart'; import 'package:lichess_mobile/src/widgets/buttons.dart'; @@ -115,7 +116,10 @@ class PuzzleDashboardWidget extends ConsumerWidget { Padding( padding: const EdgeInsets.all(10.0), child: AspectRatio( - aspectRatio: 1.2, + aspectRatio: + MediaQuery.sizeOf(context).width > FormFactor.desktop + ? 2.8 + : 1.2, child: PuzzleChart(chartData), ), ), diff --git a/lib/src/view/puzzle/puzzle_feedback_widget.dart b/lib/src/view/puzzle/puzzle_feedback_widget.dart index 5c4105ff27..87576cb802 100644 --- a/lib/src/view/puzzle/puzzle_feedback_widget.dart +++ b/lib/src/view/puzzle/puzzle_feedback_widget.dart @@ -9,6 +9,7 @@ import 'package:lichess_mobile/src/model/settings/brightness.dart'; import 'package:lichess_mobile/src/styles/styles.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; import 'package:lichess_mobile/src/utils/string.dart'; +import 'package:lichess_mobile/src/view/account/rating_pref_aware.dart'; class PuzzleFeedbackWidget extends ConsumerWidget { const PuzzleFeedbackWidget({ @@ -61,7 +62,10 @@ class PuzzleFeedbackWidget extends ConsumerWidget { ), subtitle: onStreak && state.result == PuzzleResult.lose ? null - : Text('$puzzleRating. $playedXTimes.'), + : RatingPrefAware( + orElse: Text('$playedXTimes.'), + child: Text('$puzzleRating. $playedXTimes.'), + ), ); case PuzzleMode.load: case PuzzleMode.play: diff --git a/lib/src/view/puzzle/puzzle_settings_screen.dart b/lib/src/view/puzzle/puzzle_settings_screen.dart index 6274c7e6f8..24660c765c 100644 --- a/lib/src/view/puzzle/puzzle_settings_screen.dart +++ b/lib/src/view/puzzle/puzzle_settings_screen.dart @@ -26,10 +26,8 @@ class PuzzleSettingsScreen extends ConsumerWidget { final boardPrefs = ref.watch(boardPreferencesProvider); return DraggableScrollableSheet( - initialChildSize: .4, + initialChildSize: .6, expand: false, - snap: true, - snapSizes: const [.4, .7], builder: (context, scrollController) => ListView( controller: scrollController, children: [ @@ -57,6 +55,21 @@ class PuzzleSettingsScreen extends ConsumerWidget { .setAutoNext(value); }, ), + SwitchSettingTile( + // TODO: Add l10n + title: const Text('Shape drawing'), + subtitle: const Text( + 'Draw shapes using two fingers.', + maxLines: 5, + textAlign: TextAlign.justify, + ), + value: boardPrefs.enableShapeDrawings, + onChanged: (value) { + ref + .read(boardPreferencesProvider.notifier) + .toggleEnableShapeDrawings(); + }, + ), SwitchSettingTile( title: Text( context.l10n.preferencesPieceAnimation, diff --git a/lib/src/view/puzzle/puzzle_tab_screen.dart b/lib/src/view/puzzle/puzzle_tab_screen.dart index 1e7bdf01fd..7482c3d211 100644 --- a/lib/src/view/puzzle/puzzle_tab_screen.dart +++ b/lib/src/view/puzzle/puzzle_tab_screen.dart @@ -263,8 +263,7 @@ class _PuzzleMenu extends StatelessWidget { _PuzzleMenuListTile( icon: PuzzleIcons.opening, title: context.l10n.puzzlePuzzleThemes, - subtitle: - 'Play puzzles from your favorite openings, or choose a theme.', + subtitle: context.l10n.mobilePuzzleThemesSubtitle, onTap: () { pushPlatformRoute( context, @@ -299,7 +298,7 @@ class _PuzzleMenu extends StatelessWidget { child: _PuzzleMenuListTile( icon: LichessIcons.storm, title: 'Puzzle Storm', - subtitle: 'Solve as many puzzles as possible in 3 minutes.', + subtitle: context.l10n.mobilePuzzleStormSubtitle, onTap: isOnline ? () { pushPlatformRoute( @@ -403,30 +402,14 @@ class _DashboardButton extends ConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final session = ref.watch(authSessionProvider); if (session != null) { - switch (Theme.of(context).platform) { - case TargetPlatform.iOS: - return CupertinoIconButton( - padding: EdgeInsets.zero, - onPressed: () { - ref.invalidate(puzzleDashboardProvider); - _showDashboard(context, session); - }, - semanticsLabel: context.l10n.puzzlePuzzleDashboard, - icon: const Icon(Icons.history), - ); - case TargetPlatform.android: - return IconButton( - tooltip: context.l10n.puzzlePuzzleDashboard, - onPressed: () { - ref.invalidate(puzzleDashboardProvider); - _showDashboard(context, session); - }, - icon: const Icon(Icons.history), - ); - default: - assert(false, 'Unexpected platform $Theme.of(context).platform'); - return const SizedBox.shrink(); - } + return AppBarIconButton( + icon: const Icon(Icons.history), + semanticsLabel: context.l10n.puzzlePuzzleDashboard, + onPressed: () { + ref.invalidate(puzzleDashboardProvider); + _showDashboard(context, session); + }, + ); } return const SizedBox.shrink(); } diff --git a/lib/src/view/settings/theme_mode_screen.dart b/lib/src/view/settings/app_background_mode_screen.dart similarity index 89% rename from lib/src/view/settings/theme_mode_screen.dart rename to lib/src/view/settings/app_background_mode_screen.dart index 5dd04aaca2..dc551a2be7 100644 --- a/lib/src/view/settings/theme_mode_screen.dart +++ b/lib/src/view/settings/app_background_mode_screen.dart @@ -6,8 +6,8 @@ import 'package:lichess_mobile/src/utils/l10n_context.dart'; import 'package:lichess_mobile/src/widgets/platform.dart'; import 'package:lichess_mobile/src/widgets/settings.dart'; -class ThemeModeScreen extends StatelessWidget { - const ThemeModeScreen({super.key}); +class AppBackgroundModeScreen extends StatelessWidget { + const AppBackgroundModeScreen({super.key}); @override Widget build(BuildContext context) { @@ -60,7 +60,8 @@ class _Body extends ConsumerWidget { ChoicePicker( choices: ThemeMode.values, selectedItem: themeMode, - titleBuilder: (t) => Text(ThemeModeScreen.themeTitle(context, t)), + titleBuilder: (t) => + Text(AppBackgroundModeScreen.themeTitle(context, t)), onSelectedItemChanged: onChanged, ), ], diff --git a/lib/src/view/settings/board_behavior_settings_screen.dart b/lib/src/view/settings/board_settings_screen.dart similarity index 91% rename from lib/src/view/settings/board_behavior_settings_screen.dart rename to lib/src/view/settings/board_settings_screen.dart index 2bd1e0c2b2..eefd82f4f2 100644 --- a/lib/src/view/settings/board_behavior_settings_screen.dart +++ b/lib/src/view/settings/board_settings_screen.dart @@ -3,18 +3,18 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:lichess_mobile/src/model/settings/board_preferences.dart'; -import 'package:lichess_mobile/src/utils/android.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; import 'package:lichess_mobile/src/utils/navigation.dart'; import 'package:lichess_mobile/src/utils/screen.dart'; +import 'package:lichess_mobile/src/utils/system.dart'; import 'package:lichess_mobile/src/view/settings/piece_shift_method_settings_screen.dart'; import 'package:lichess_mobile/src/widgets/adaptive_choice_picker.dart'; import 'package:lichess_mobile/src/widgets/list.dart'; import 'package:lichess_mobile/src/widgets/platform.dart'; import 'package:lichess_mobile/src/widgets/settings.dart'; -class BoardBehaviorSettingsScreen extends StatelessWidget { - const BoardBehaviorSettingsScreen({super.key}); +class BoardSettingsScreen extends StatelessWidget { + const BoardSettingsScreen({super.key}); @override Widget build(BuildContext context) { @@ -26,7 +26,7 @@ class BoardBehaviorSettingsScreen extends StatelessWidget { Widget _androidBuilder(BuildContext context) { return Scaffold( - appBar: AppBar(title: Text(context.l10n.preferencesGameBehavior)), + appBar: AppBar(title: Text(context.l10n.board)), body: const _Body(), ); } @@ -87,9 +87,10 @@ class _Body extends ConsumerWidget { }, ), SwitchSettingTile( - title: const Text('Enable shapes drawing'), + // TODO: Add l10n + title: const Text('Shape drawing'), subtitle: const Text( - 'Draw shapes using two fingers on game and puzzle boards (it is always enabled in analysis boards).', + 'Draw shapes using two fingers on game and puzzle boards.', maxLines: 5, textAlign: TextAlign.justify, ), @@ -163,6 +164,15 @@ class _Body extends ConsumerWidget { .toggleCoordinates(); }, ), + SwitchSettingTile( + title: Text(context.l10n.mobilePrefMagnifyDraggedPiece), + value: boardPrefs.magnifyDraggedPiece, + onChanged: (value) { + ref + .read(boardPreferencesProvider.notifier) + .toggleMagnifyDraggedPiece(); + }, + ), SwitchSettingTile( title: Text( context.l10n.preferencesPieceAnimation, diff --git a/lib/src/view/settings/board_theme_screen.dart b/lib/src/view/settings/board_theme_screen.dart index 15de3c4bb9..c005919905 100644 --- a/lib/src/view/settings/board_theme_screen.dart +++ b/lib/src/view/settings/board_theme_screen.dart @@ -3,10 +3,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:lichess_mobile/src/model/settings/board_preferences.dart'; import 'package:lichess_mobile/src/model/settings/general_preferences.dart'; -import 'package:lichess_mobile/src/utils/android.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; +import 'package:lichess_mobile/src/utils/system.dart'; +import 'package:lichess_mobile/src/widgets/list.dart'; import 'package:lichess_mobile/src/widgets/platform.dart'; -import 'package:lichess_mobile/src/widgets/settings.dart'; class BoardThemeScreen extends StatelessWidget { const BoardThemeScreen({super.key}); @@ -61,25 +61,35 @@ class _Body extends ConsumerWidget { .read(boardPreferencesProvider.notifier) .setBoardTheme(value ?? BoardTheme.brown); + final checkedIcon = Theme.of(context).platform == TargetPlatform.android + ? const Icon(Icons.check) + : Icon( + CupertinoIcons.check_mark_circled_solid, + color: CupertinoTheme.of(context).primaryColor, + ); + return SafeArea( - child: ListView( - children: [ - ChoicePicker( - notchedTile: true, - tileContentPadding: const EdgeInsets.symmetric( - horizontal: 16.0, - vertical: 8.0, - ), - choices: choices, - selectedItem: boardTheme, - titleBuilder: (t) => Text(t.label), - subtitleBuilder: (t) => Align( - alignment: Alignment.topLeft, - child: t.thumbnail, - ), - onSelectedItemChanged: onChanged, - ), - ], + child: ListView.separated( + itemBuilder: (context, index) { + final t = choices[index]; + return PlatformListTile( + selected: t == boardTheme, + trailing: t == boardTheme ? checkedIcon : null, + title: Text(t.label), + subtitle: Align(alignment: Alignment.topLeft, child: t.thumbnail), + onTap: () => onChanged(t), + ); + }, + separatorBuilder: (_, __) => PlatformDivider( + height: 1, + // on iOS: 14 (default indent) + 16 (padding) + indent: + Theme.of(context).platform == TargetPlatform.iOS ? 14 + 16 : null, + color: Theme.of(context).platform == TargetPlatform.iOS + ? null + : Colors.transparent, + ), + itemCount: choices.length, ), ); } diff --git a/lib/src/view/settings/piece_set_screen.dart b/lib/src/view/settings/piece_set_screen.dart index 4eb1b146ae..efb1cf2234 100644 --- a/lib/src/view/settings/piece_set_screen.dart +++ b/lib/src/view/settings/piece_set_screen.dart @@ -4,8 +4,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:lichess_mobile/src/model/settings/board_preferences.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; +import 'package:lichess_mobile/src/widgets/list.dart'; import 'package:lichess_mobile/src/widgets/platform.dart'; -import 'package:lichess_mobile/src/widgets/settings.dart'; class PieceSetScreen extends StatelessWidget { const PieceSetScreen({super.key}); @@ -54,30 +54,42 @@ class _Body extends ConsumerWidget { .setPieceSet(value ?? PieceSet.cburnett); return SafeArea( - child: ListView( - children: [ - ChoicePicker( - notchedTile: true, - tileContentPadding: const EdgeInsets.symmetric( - horizontal: 16.0, - vertical: 8.0, - ), - choices: PieceSet.values, - selectedItem: boardPrefs.pieceSet, - titleBuilder: (t) => Text(t.label), - subtitleBuilder: (t) => ConstrainedBox( + child: ListView.separated( + itemCount: PieceSet.values.length, + separatorBuilder: (_, __) => PlatformDivider( + height: 1, + // on iOS: 14 (default indent) + 16 (padding) + indent: + Theme.of(context).platform == TargetPlatform.iOS ? 14 + 16 : null, + color: Theme.of(context).platform == TargetPlatform.iOS + ? null + : Colors.transparent, + ), + itemBuilder: (context, index) { + final set = PieceSet.values[index]; + return PlatformListTile( + trailing: boardPrefs.pieceSet == set + ? Theme.of(context).platform == TargetPlatform.android + ? const Icon(Icons.check) + : Icon( + CupertinoIcons.check_mark_circled_solid, + color: CupertinoTheme.of(context).primaryColor, + ) + : null, + title: Text(set.label), + subtitle: ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 192, + maxWidth: 264, ), child: Stack( children: [ boardPrefs.boardTheme.thumbnail, Row( - children: getPieceImages(t) + children: getPieceImages(set) .map( (img) => Image( image: img, - height: 32, + height: 44, ), ) .toList(), @@ -85,9 +97,10 @@ class _Body extends ConsumerWidget { ], ), ), - onSelectedItemChanged: onChanged, - ), - ], + onTap: () => onChanged(set), + selected: boardPrefs.pieceSet == set, + ); + }, ), ); } diff --git a/lib/src/view/settings/settings_tab_screen.dart b/lib/src/view/settings/settings_tab_screen.dart index 2554f0a07b..688f30a325 100644 --- a/lib/src/view/settings/settings_tab_screen.dart +++ b/lib/src/view/settings/settings_tab_screen.dart @@ -1,20 +1,23 @@ +import 'package:app_settings/app_settings.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:lichess_mobile/src/constants.dart'; import 'package:lichess_mobile/src/model/auth/auth_controller.dart'; import 'package:lichess_mobile/src/model/auth/auth_session.dart'; -import 'package:lichess_mobile/src/model/common/service/sound_service.dart'; import 'package:lichess_mobile/src/model/settings/board_preferences.dart'; import 'package:lichess_mobile/src/model/settings/general_preferences.dart'; -import 'package:lichess_mobile/src/model/settings/sound_theme.dart'; import 'package:lichess_mobile/src/navigation.dart'; import 'package:lichess_mobile/src/styles/lichess_icons.dart'; import 'package:lichess_mobile/src/styles/styles.dart'; -import 'package:lichess_mobile/src/utils/android.dart'; +import 'package:lichess_mobile/src/utils/l10n.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; import 'package:lichess_mobile/src/utils/navigation.dart'; import 'package:lichess_mobile/src/utils/package_info.dart'; +import 'package:lichess_mobile/src/utils/system.dart'; import 'package:lichess_mobile/src/view/account/profile_screen.dart'; +import 'package:lichess_mobile/src/view/settings/app_background_mode_screen.dart'; +import 'package:lichess_mobile/src/view/settings/theme_screen.dart'; import 'package:lichess_mobile/src/widgets/adaptive_action_sheet.dart'; import 'package:lichess_mobile/src/widgets/adaptive_choice_picker.dart'; import 'package:lichess_mobile/src/widgets/feedback.dart'; @@ -26,11 +29,8 @@ import 'package:lichess_mobile/src/widgets/user_full_name.dart'; import 'package:url_launcher/url_launcher.dart'; import 'account_preferences_screen.dart'; -import 'board_behavior_settings_screen.dart'; -import 'board_theme_screen.dart'; -import 'piece_set_screen.dart'; +import 'board_settings_screen.dart'; import 'sound_settings_screen.dart'; -import 'theme_mode_screen.dart'; class SettingsTabScreen extends ConsumerWidget { const SettingsTabScreen({super.key}); @@ -81,22 +81,11 @@ class SettingsTabScreen extends ConsumerWidget { class _Body extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final themeMode = ref.watch( - generalPreferencesProvider.select((state) => state.themeMode), - ); - - final soundTheme = ref.watch( - generalPreferencesProvider.select((state) => state.soundTheme), - ); - - final hasSystemColors = ref.watch( - generalPreferencesProvider.select((state) => state.systemColors), - ); - + final generalPrefs = ref.watch(generalPreferencesProvider); + final boardPrefs = ref.watch(boardPreferencesProvider); final authController = ref.watch(authControllerProvider); final userSession = ref.watch(authSessionProvider); final packageInfo = ref.watch(packageInfoProvider); - final boardPrefs = ref.watch(boardPreferencesProvider); final androidVersionAsync = ref.watch(androidVersionProvider); @@ -198,31 +187,14 @@ class _Body extends ConsumerWidget { SettingsListTile( icon: const Icon(Icons.music_note), settingsLabel: Text(context.l10n.sound), - settingsValue: soundThemeL10n(context, soundTheme), + settingsValue: + '${soundThemeL10n(context, generalPrefs.soundTheme)} (${volumeLabel(generalPrefs.masterVolume)})', onTap: () { - if (Theme.of(context).platform == TargetPlatform.android) { - showChoicePicker( - context, - choices: SoundTheme.values, - selectedItem: soundTheme, - labelBuilder: (t) => Text(soundThemeL10n(context, t)), - onSelectedItemChanged: (SoundTheme? value) { - ref - .read(generalPreferencesProvider.notifier) - .setSoundTheme(value ?? SoundTheme.standard); - ref.read(soundServiceProvider).changeTheme( - value ?? SoundTheme.standard, - playSound: true, - ); - }, - ); - } else { - pushPlatformRoute( - context, - title: context.l10n.sound, - builder: (context) => const SoundSettingsScreen(), - ); - } + pushPlatformRoute( + context, + title: context.l10n.sound, + builder: (context) => const SoundSettingsScreen(), + ); }, ), if (Theme.of(context).platform == TargetPlatform.android) @@ -231,7 +203,7 @@ class _Body extends ConsumerWidget { ? SwitchSettingTile( leading: const Icon(Icons.colorize), title: Text(context.l10n.mobileSystemColors), - value: hasSystemColors, + value: generalPrefs.systemColors, onChanged: (value) { ref .read(generalPreferencesProvider.notifier) @@ -244,15 +216,18 @@ class _Body extends ConsumerWidget { SettingsListTile( icon: const Icon(Icons.brightness_medium), settingsLabel: Text(context.l10n.background), - settingsValue: ThemeModeScreen.themeTitle(context, themeMode), + settingsValue: AppBackgroundModeScreen.themeTitle( + context, + generalPrefs.themeMode, + ), onTap: () { if (Theme.of(context).platform == TargetPlatform.android) { showChoicePicker( context, choices: ThemeMode.values, - selectedItem: themeMode, + selectedItem: generalPrefs.themeMode, labelBuilder: (t) => - Text(ThemeModeScreen.themeTitle(context, t)), + Text(AppBackgroundModeScreen.themeTitle(context, t)), onSelectedItemChanged: (ThemeMode? value) => ref .read(generalPreferencesProvider.notifier) .setThemeMode(value ?? ThemeMode.system), @@ -261,49 +236,61 @@ class _Body extends ConsumerWidget { pushPlatformRoute( context, title: context.l10n.background, - builder: (context) => const ThemeModeScreen(), + builder: (context) => const AppBackgroundModeScreen(), ); } }, ), SettingsListTile( - icon: const Icon(LichessIcons.chess_board), - settingsLabel: Text(context.l10n.board), - settingsValue: boardPrefs.boardTheme.label, + icon: const Icon(Icons.palette), + settingsLabel: const Text('Theme'), + settingsValue: + '${boardPrefs.boardTheme.label} / ${boardPrefs.pieceSet.label}', onTap: () { pushPlatformRoute( context, - title: context.l10n.board, - builder: (context) => const BoardThemeScreen(), - ); - }, - ), - SettingsListTile( - icon: const Icon(LichessIcons.chess_pawn), - settingsLabel: Text(context.l10n.pieceSet), - settingsValue: boardPrefs.pieceSet.label, - onTap: () { - pushPlatformRoute( - context, - title: context.l10n.pieceSet, - builder: (context) => const PieceSetScreen(), + title: 'Theme', + builder: (context) => const ThemeScreen(), ); }, ), PlatformListTile( - leading: const Icon(Icons.gamepad), - title: Text(context.l10n.preferencesGameBehavior), + leading: const Icon(LichessIcons.chess_board), + title: Text(context.l10n.board), trailing: Theme.of(context).platform == TargetPlatform.iOS ? const CupertinoListTileChevron() : null, onTap: () { pushPlatformRoute( context, - title: context.l10n.preferencesGameBehavior, - builder: (context) => const BoardBehaviorSettingsScreen(), + title: context.l10n.board, + builder: (context) => const BoardSettingsScreen(), ); }, ), + SettingsListTile( + icon: const Icon(Icons.language), + settingsLabel: Text(context.l10n.language), + settingsValue: localeToLocalizedName( + generalPrefs.locale ?? Localizations.localeOf(context), + ), + onTap: () { + if (Theme.of(context).platform == TargetPlatform.android) { + showChoicePicker( + context, + choices: kSupportedLocales, + selectedItem: + generalPrefs.locale ?? Localizations.localeOf(context), + labelBuilder: (t) => Text(localeToLocalizedName(t)), + onSelectedItemChanged: (Locale? locale) => ref + .read(generalPreferencesProvider.notifier) + .setLocale(locale), + ); + } else { + AppSettings.openAppSettings(); + } + }, + ), ], ), ListSection( diff --git a/lib/src/view/settings/sound_settings_screen.dart b/lib/src/view/settings/sound_settings_screen.dart index 15a8a09aa2..03737c6d54 100644 --- a/lib/src/view/settings/sound_settings_screen.dart +++ b/lib/src/view/settings/sound_settings_screen.dart @@ -5,9 +5,24 @@ import 'package:lichess_mobile/src/model/common/service/sound_service.dart'; import 'package:lichess_mobile/src/model/settings/general_preferences.dart'; import 'package:lichess_mobile/src/model/settings/sound_theme.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; +import 'package:lichess_mobile/src/widgets/list.dart'; import 'package:lichess_mobile/src/widgets/platform.dart'; import 'package:lichess_mobile/src/widgets/settings.dart'; +const kMasterVolumeValues = [ + 0.0, + 0.1, + 0.2, + 0.3, + 0.4, + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 1.0, +]; + class SoundSettingsScreen extends StatelessWidget { const SoundSettingsScreen({super.key}); @@ -34,17 +49,17 @@ class SoundSettingsScreen extends StatelessWidget { } } +/// Localize the sound theme. String soundThemeL10n(BuildContext context, SoundTheme theme) => theme == SoundTheme.standard ? context.l10n.standard : theme.label; +/// Returns a volume label in percentage. +String volumeLabel(double value) => '${(value * 100).round()}%'; + class _Body extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final soundTheme = ref.watch( - generalPreferencesProvider.select( - (state) => state.soundTheme, - ), - ); + final generalPrefs = ref.watch(generalPreferencesProvider); void onChanged(SoundTheme? value) { ref @@ -59,10 +74,25 @@ class _Body extends ConsumerWidget { return SafeArea( child: ListView( children: [ + ListSection( + children: [ + SliderSettingsTile( + icon: const Icon(Icons.volume_up), + value: generalPrefs.masterVolume, + values: kMasterVolumeValues, + onChangeEnd: (value) { + ref + .read(generalPreferencesProvider.notifier) + .setMasterVolume(value); + }, + labelBuilder: volumeLabel, + ), + ], + ), ChoicePicker( notchedTile: true, choices: SoundTheme.values, - selectedItem: soundTheme, + selectedItem: generalPrefs.soundTheme, titleBuilder: (t) => Text(soundThemeL10n(context, t)), onSelectedItemChanged: onChanged, ), diff --git a/lib/src/view/settings/theme_screen.dart b/lib/src/view/settings/theme_screen.dart new file mode 100644 index 0000000000..3a940a913c --- /dev/null +++ b/lib/src/view/settings/theme_screen.dart @@ -0,0 +1,119 @@ +import 'dart:math' as math; +import 'package:chessground/chessground.dart'; +import 'package:dartchess/dartchess.dart' as dartchess; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:lichess_mobile/src/constants.dart'; +import 'package:lichess_mobile/src/model/settings/board_preferences.dart'; +import 'package:lichess_mobile/src/styles/lichess_icons.dart'; +import 'package:lichess_mobile/src/utils/l10n_context.dart'; +import 'package:lichess_mobile/src/utils/navigation.dart'; +import 'package:lichess_mobile/src/view/settings/board_theme_screen.dart'; +import 'package:lichess_mobile/src/view/settings/piece_set_screen.dart'; +import 'package:lichess_mobile/src/widgets/list.dart'; +import 'package:lichess_mobile/src/widgets/platform.dart'; +import 'package:lichess_mobile/src/widgets/settings.dart'; + +class ThemeScreen extends StatelessWidget { + const ThemeScreen({super.key}); + + @override + Widget build(BuildContext context) { + return PlatformWidget( + androidBuilder: _androidBuilder, + iosBuilder: _iosBuilder, + ); + } + + Widget _androidBuilder(BuildContext context) { + return Scaffold( + appBar: AppBar(title: const Text('Theme')), + body: _Body(), + ); + } + + Widget _iosBuilder(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: const CupertinoNavigationBar(), + child: _Body(), + ); + } +} + +class _Body extends ConsumerWidget { + @override + Widget build(BuildContext context, WidgetRef ref) { + final boardPrefs = ref.watch(boardPreferencesProvider); + + const horizontalPadding = 52.0; + + return SafeArea( + child: ListView( + children: [ + LayoutBuilder( + builder: (context, constraints) { + final double boardSize = math.min( + 290, + constraints.biggest.shortestSide - horizontalPadding * 2, + ); + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: horizontalPadding, + vertical: 16, + ), + child: Center( + child: Board( + size: boardSize, + data: const BoardData( + interactableSide: InteractableSide.none, + orientation: Side.white, + fen: dartchess.kInitialFEN, + ), + settings: BoardSettings( + enableCoordinates: false, + borderRadius: + const BorderRadius.all(Radius.circular(4.0)), + boxShadow: boardShadows, + pieceAssets: boardPrefs.pieceSet.assets, + colorScheme: boardPrefs.boardTheme.colors, + ), + ), + ), + ); + }, + ), + ListSection( + hasLeading: true, + children: [ + SettingsListTile( + icon: const Icon(LichessIcons.chess_board), + settingsLabel: Text(context.l10n.board), + settingsValue: boardPrefs.boardTheme.label, + onTap: () { + pushPlatformRoute( + context, + title: context.l10n.board, + builder: (context) => const BoardThemeScreen(), + ); + }, + ), + SettingsListTile( + icon: const Icon(LichessIcons.chess_pawn), + settingsLabel: Text(context.l10n.pieceSet), + settingsValue: boardPrefs.pieceSet.label, + onTap: () { + pushPlatformRoute( + context, + title: context.l10n.pieceSet, + builder: (context) => const PieceSetScreen(), + ); + }, + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/src/view/user/game_history_screen.dart b/lib/src/view/user/game_history_screen.dart index 2bda25bdc5..a345b9e7fd 100644 --- a/lib/src/view/user/game_history_screen.dart +++ b/lib/src/view/user/game_history_screen.dart @@ -13,6 +13,7 @@ import 'package:lichess_mobile/src/utils/l10n_context.dart'; import 'package:lichess_mobile/src/view/game/game_list_tile.dart'; import 'package:lichess_mobile/src/widgets/adaptive_bottom_sheet.dart'; import 'package:lichess_mobile/src/widgets/feedback.dart'; +import 'package:lichess_mobile/src/widgets/list.dart'; class GameHistoryScreen extends ConsumerWidget { const GameHistoryScreen({ @@ -229,8 +230,18 @@ class _BodyState extends ConsumerState<_Body> { ), ), ) - : ListView.builder( + : ListView.separated( controller: _scrollController, + separatorBuilder: (context, index) => + Theme.of(context).platform == TargetPlatform.iOS + ? const PlatformDivider( + height: 1, + cupertinoHasLeading: true, + ) + : const PlatformDivider( + height: 1, + color: Colors.transparent, + ), itemCount: list.length + (state.isLoading ? 1 : 0), itemBuilder: (context, index) { if (state.isLoading && index == list.length) { @@ -255,6 +266,13 @@ class _BodyState extends ConsumerState<_Body> { return ExtendedGameListTile( item: list[index], userId: widget.user?.id, + // see: https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/cupertino/list_tile.dart#L30 for horizontal padding value + padding: Theme.of(context).platform == TargetPlatform.iOS + ? const EdgeInsets.symmetric( + horizontal: 14.0, + vertical: 12.0, + ) + : null, ); }, ), diff --git a/lib/src/view/user/user_screen.dart b/lib/src/view/user/user_screen.dart index a7d7ba12f6..14250e25e5 100644 --- a/lib/src/view/user/user_screen.dart +++ b/lib/src/view/user/user_screen.dart @@ -7,11 +7,8 @@ import 'package:lichess_mobile/src/model/common/http.dart'; import 'package:lichess_mobile/src/model/relation/relation_repository.dart'; import 'package:lichess_mobile/src/model/user/user.dart'; import 'package:lichess_mobile/src/model/user/user_repository_providers.dart'; -import 'package:lichess_mobile/src/styles/lichess_icons.dart'; import 'package:lichess_mobile/src/styles/styles.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; -import 'package:lichess_mobile/src/utils/navigation.dart'; -import 'package:lichess_mobile/src/view/play/challenge_screen.dart'; import 'package:lichess_mobile/src/view/user/recent_games.dart'; import 'package:lichess_mobile/src/widgets/feedback.dart'; import 'package:lichess_mobile/src/widgets/list.dart'; @@ -177,17 +174,18 @@ class _UserProfileListView extends ConsumerWidget { ListSection( hasLeading: true, children: [ - if (user.canChallenge == true) - PlatformListTile( - title: Text(context.l10n.challengeChallengeToPlay), - leading: const Icon(LichessIcons.crossed_swords), - onTap: () { - pushPlatformRoute( - context, - builder: (context) => ChallengeScreen(user.lightUser), - ); - }, - ), + // TODO: re-enable when challenges are fully supported + // if (user.canChallenge == true) + // PlatformListTile( + // title: Text(context.l10n.challengeChallengeToPlay), + // leading: const Icon(LichessIcons.crossed_swords), + // onTap: () { + // pushPlatformRoute( + // context, + // builder: (context) => ChallengeScreen(user.lightUser), + // ); + // }, + // ), if (user.followable == true && user.following != true) PlatformListTile( leading: const Icon(Icons.person_add), diff --git a/lib/src/view/watch/watch_tab_screen.dart b/lib/src/view/watch/watch_tab_screen.dart index 025bf3fb63..92c839b361 100644 --- a/lib/src/view/watch/watch_tab_screen.dart +++ b/lib/src/view/watch/watch_tab_screen.dart @@ -87,6 +87,13 @@ class _WatchScreenState extends ConsumerState { ); } + List get watchTabWidgets => const [ + // TODO: show widget when broadcasts feature is ready + //_BroadcastWidget(), + _WatchTvWidget(), + _StreamerWidget(), + ]; + Widget _buildAndroid(BuildContext context, WidgetRef ref) { return PopScope( canPop: false, @@ -108,11 +115,7 @@ class _WatchScreenState extends ConsumerState { return orientation == Orientation.portrait ? ListView( controller: watchScrollController, - children: const [ - _BroadcastWidget(), - _WatchTvWidget(), - _StreamerWidget(), - ], + children: watchTabWidgets, ) : GridView( controller: watchScrollController, @@ -121,11 +124,7 @@ class _WatchScreenState extends ConsumerState { crossAxisCount: 2, childAspectRatio: 0.92, ), - children: const [ - _BroadcastWidget(), - _WatchTvWidget(), - _StreamerWidget(), - ], + children: watchTabWidgets, ); }, ), @@ -156,11 +155,7 @@ class _WatchScreenState extends ConsumerState { sliver: orientation == Orientation.portrait ? SliverList( delegate: SliverChildListDelegate( - const [ - _BroadcastWidget(), - _WatchTvWidget(), - _StreamerWidget(), - ], + watchTabWidgets, ), ) : SliverGrid( @@ -169,13 +164,7 @@ class _WatchScreenState extends ConsumerState { crossAxisCount: 2, childAspectRatio: 0.92, ), - delegate: SliverChildListDelegate( - const [ - _BroadcastWidget(), - _WatchTvWidget(), - _StreamerWidget(), - ], - ), + delegate: SliverChildListDelegate(watchTabWidgets), ), ), ], @@ -197,6 +186,8 @@ Future _refreshData(WidgetRef ref) { ]); } +// TODO remove this ignore comment when broadcasts feature is ready +// ignore: unused_element class _BroadcastWidget extends ConsumerWidget { const _BroadcastWidget(); @@ -204,10 +195,6 @@ class _BroadcastWidget extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - // TODO: show widget when broadcasts feature is ready - return const SizedBox.shrink(); - - // ignore: dead_code final broadcastList = ref.watch(broadcastsPaginatorProvider); return broadcastList.when( diff --git a/lib/src/widgets/adaptive_choice_picker.dart b/lib/src/widgets/adaptive_choice_picker.dart index 7a71551ead..933ceaeff8 100644 --- a/lib/src/widgets/adaptive_choice_picker.dart +++ b/lib/src/widgets/adaptive_choice_picker.dart @@ -2,6 +2,11 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:lichess_mobile/src/utils/l10n_context.dart'; +/// Shows a platform adaptive choice picker dialog +/// +/// On Android, it shows a dialog with radio buttons. +/// On iOS, it shows a modal action sheet if the number of choices is less than or equal to 10. +/// Otherwise, it shows a [CupertinoPicker]. Future showChoicePicker( BuildContext context, { required List choices, @@ -11,27 +16,42 @@ Future showChoicePicker( }) { switch (Theme.of(context).platform) { case TargetPlatform.android: + final deviceHeight = MediaQuery.sizeOf(context).height; return showDialog( context: context, builder: (context) { return AlertDialog( contentPadding: const EdgeInsets.only(top: 12), scrollable: true, - content: Column( - mainAxisSize: MainAxisSize.min, - children: choices.map((value) { - return RadioListTile( - title: labelBuilder(value), - value: value, - groupValue: selectedItem, - onChanged: (value) { - if (value != null && onSelectedItemChanged != null) { - onSelectedItemChanged(value); - Navigator.of(context).pop(); - } - }, - ); - }).toList(growable: false), + content: Builder( + builder: (context) { + final List choiceWidgets = choices.map((value) { + return RadioListTile( + title: labelBuilder(value), + value: value, + groupValue: selectedItem, + onChanged: (value) { + if (value != null && onSelectedItemChanged != null) { + onSelectedItemChanged(value); + Navigator.of(context).pop(); + } + }, + ); + }).toList(growable: false); + return choiceWidgets.length >= 10 + ? SizedBox( + width: double.maxFinite, + height: deviceHeight * 0.6, + child: ListView( + shrinkWrap: true, + children: choiceWidgets, + ), + ) + : Column( + mainAxisSize: MainAxisSize.min, + children: choiceWidgets, + ); + }, ), actions: [ TextButton( diff --git a/lib/src/widgets/board_table.dart b/lib/src/widgets/board_table.dart index 70d7f73ef1..7d364113a0 100644 --- a/lib/src/widgets/board_table.dart +++ b/lib/src/widgets/board_table.dart @@ -146,24 +146,17 @@ class _BoardTableState extends ConsumerState { ) : null; - final defaultSettings = BoardSettings( - pieceAssets: boardPrefs.pieceSet.assets, - colorScheme: boardPrefs.boardTheme.colors, - showValidMoves: boardPrefs.showLegalMoves, - showLastMove: boardPrefs.boardHighlights, - enableCoordinates: boardPrefs.coordinates, - animationDuration: boardPrefs.pieceAnimationDuration, - borderRadius: isTablet - ? const BorderRadius.all(Radius.circular(4.0)) - : BorderRadius.zero, - boxShadow: isTablet ? boardShadows : const [], - drawShape: DrawShapeOptions( - enable: boardPrefs.enableShapeDrawings, - onCompleteShape: _onCompleteShape, - onClearShapes: _onClearShapes, - ), - pieceShiftMethod: boardPrefs.pieceShiftMethod, - ); + final defaultSettings = boardPrefs.toBoardSettings().copyWith( + borderRadius: isTablet + ? const BorderRadius.all(Radius.circular(4.0)) + : BorderRadius.zero, + boxShadow: isTablet ? boardShadows : const [], + drawShape: DrawShapeOptions( + enable: boardPrefs.enableShapeDrawings, + onCompleteShape: _onCompleteShape, + onClearShapes: _onClearShapes, + ), + ); final settings = widget.boardSettingsOverrides != null ? widget.boardSettingsOverrides!.merge(defaultSettings) diff --git a/lib/src/widgets/board_thumbnail.dart b/lib/src/widgets/board_thumbnail.dart index 1dc805421c..2b26132d88 100644 --- a/lib/src/widgets/board_thumbnail.dart +++ b/lib/src/widgets/board_thumbnail.dart @@ -1,4 +1,5 @@ import 'package:chessground/chessground.dart'; +import 'package:dartchess/dartchess.dart' as dartchess; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:lichess_mobile/src/constants.dart'; @@ -21,7 +22,7 @@ class BoardThumbnail extends ConsumerStatefulWidget { this.header, this.footer, }) : orientation = Side.white, - fen = kInitialFen, + fen = dartchess.kInitialFEN, lastMove = null, onTap = null; diff --git a/lib/src/widgets/buttons.dart b/lib/src/widgets/buttons.dart index 58c2fa1a40..e52f71eee5 100644 --- a/lib/src/widgets/buttons.dart +++ b/lib/src/widgets/buttons.dart @@ -179,11 +179,14 @@ class AppBarIconButton extends StatelessWidget { @override Widget build(BuildContext context) { return Theme.of(context).platform == TargetPlatform.iOS - ? CupertinoIconButton( - padding: EdgeInsets.zero, - semanticsLabel: semanticsLabel, - onPressed: onPressed, - icon: icon, + ? IconTheme( + data: const IconThemeData(size: 26.0), + child: CupertinoIconButton( + padding: EdgeInsets.zero, + semanticsLabel: semanticsLabel, + onPressed: onPressed, + icon: icon, + ), ) : IconButton( tooltip: semanticsLabel, diff --git a/lib/src/widgets/settings.dart b/lib/src/widgets/settings.dart index 55be552df7..2100a27873 100644 --- a/lib/src/widgets/settings.dart +++ b/lib/src/widgets/settings.dart @@ -15,7 +15,8 @@ class SettingsListTile extends StatelessWidget { super.key, }); - final Icon? icon; + /// The icon of the settings value. + final Widget? icon; /// The label of the settings value. final Text settingsLabel; @@ -97,6 +98,58 @@ class SwitchSettingTile extends StatelessWidget { } } +class SliderSettingsTile extends StatefulWidget { + const SliderSettingsTile({ + this.icon, + required this.value, + required this.values, + required this.onChangeEnd, + this.labelBuilder, + }); + + final Widget? icon; + final double value; + final List values; + final void Function(double value) onChangeEnd; + final String Function(double)? labelBuilder; + + @override + State createState() => _SliderSettingsTileState(); +} + +class _SliderSettingsTileState extends State { + late int _index = widget.values.indexOf(widget.value); + + @override + Widget build(BuildContext context) { + final slider = Slider.adaptive( + value: _index.toDouble(), + min: 0, + max: widget.values.length.toDouble() - 1, + divisions: widget.values.length - 1, + label: widget.labelBuilder?.call(widget.values[_index]) ?? + widget.values[_index].toString(), + onChanged: (value) { + final newIndex = value.toInt(); + setState(() { + _index = newIndex; + }); + }, + onChangeEnd: (value) { + widget.onChangeEnd(widget.values[_index]); + }, + ); + + return PlatformListTile( + leading: widget.icon, + title: slider, + trailing: widget.labelBuilder != null + ? Text(widget.labelBuilder!.call(widget.values[_index])) + : null, + ); + } +} + class SettingsSectionTitle extends StatelessWidget { const SettingsSectionTitle(this.title, {super.key}); @@ -165,8 +218,11 @@ class _SettingsTitle extends StatelessWidget { } } -/// A platform agnostic choice picker -class ChoicePicker extends StatelessWidget { +/// A platform agnostic choice picker. +/// +/// It is best used for settings where the user can choose between a relatively +/// small number of options. +class ChoicePicker extends StatelessWidget { const ChoicePicker({ super.key, required this.choices, diff --git a/pubspec.lock b/pubspec.lock index df00d3a774..33ac8c55d2 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: b46f62516902afb04befa4b30eb6a12ac1f58ca8cb25fb9d632407259555dd3d + sha256: b1595874fbc8f7a50da90f5d8f327bb0bfd6a95dc906c390efe991540c3b54aa url: "https://pub.dev" source: hosted - version: "1.3.39" + version: "1.3.40" _macros: dependency: transitive description: dart @@ -46,6 +46,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" + app_settings: + dependency: "direct main" + description: + name: app_settings + sha256: "09bc7fe0313a507087bec1a3baf555f0576e816a760cbb31813a88890a09d9e5" + url: "https://pub.dev" + source: hosted + version: "5.1.1" archive: dependency: transitive description: @@ -114,18 +122,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7" + sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04 url: "https://pub.dev" source: hosted - version: "2.4.11" + version: "2.4.12" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe + sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 url: "https://pub.dev" source: hosted - version: "7.3.1" + version: "7.3.2" built_collection: dependency: transitive description: @@ -146,26 +154,26 @@ packages: dependency: "direct main" description: name: cached_network_image - sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" + sha256: "4a5d8d2c728b0f3d0245f69f921d7be90cae4c2fd5288f773088672c0893f819" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.4.0" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" + sha256: ff0c949e323d2a1b52be73acce5b4a7b04063e61414c8ca542dbba47281630a7 url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.1.0" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7" + sha256: "6322dde7a5ad92202e64df659241104a43db20ed594c41ca18de1014598d7996" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" characters: dependency: transitive description: @@ -234,18 +242,18 @@ packages: dependency: "direct main" description: name: connectivity_plus - sha256: db7a4e143dc72cc3cb2044ef9b052a7ebfe729513e6a82943bc3526f784365b8 + sha256: "3e7d1d9dbae40ae82cbe6c23c518f0c4ffe32764ee9749b9a99d32cbac8734f6" url: "https://pub.dev" source: hosted - version: "6.0.3" + version: "6.0.4" connectivity_plus_platform_interface: dependency: transitive description: name: connectivity_plus_platform_interface - sha256: b6a56efe1e6675be240de39107281d4034b64ac23438026355b4234042a35adb + sha256: "42657c1715d48b167930d5f34d00222ac100475f73d10162ddf43e714932f204" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.0.1" convert: dependency: transitive description: @@ -266,10 +274,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" + sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" url: "https://pub.dev" source: hosted - version: "0.3.4+1" + version: "0.3.4+2" crypto: dependency: "direct main" description: @@ -362,18 +370,18 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: eead12d1a1ed83d8283ab4c2f3fca23ac4082f29f25f29dff0f758f57d06ec91 + sha256: "93429694c9253d2871b3af80cf11b3cbb5c65660d402ed7bf69854ce4a089f82" url: "https://pub.dev" source: hosted - version: "10.1.0" + version: "10.1.1" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface - sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 + sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.1" dynamic_color: dependency: "direct main" description: @@ -426,66 +434,66 @@ packages: dependency: "direct main" description: name: firebase_core - sha256: "5159984ce9b70727473eb388394650677c02c925aaa6c9439905e1f30966a4d5" + sha256: "3187f4f8e49968573fd7403011dca67ba95aae419bc0d8131500fae160d94f92" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.3.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: "1003a5a03a61fc9a22ef49f37cbcb9e46c86313a7b2e7029b9390cf8c6fc32cb" + sha256: "3c3a1e92d6f4916c32deea79c4a7587aa0e9dbbe5889c7a16afcf005a485ee02" url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "5.2.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "23509cb3cddfb3c910c143279ac3f07f06d3120f7d835e4a5d4b42558e978712" + sha256: e8d1e22de72cb21cdcfc5eed7acddab3e99cd83f3b317f54f7a96c32f25fd11e url: "https://pub.dev" source: hosted - version: "2.17.3" + version: "2.17.4" firebase_crashlytics: dependency: "direct main" description: name: firebase_crashlytics - sha256: da32da3b441d1bee73ca990085a3ae174b9fb3585229f02a278a2ea42454d784 + sha256: "30260e1b8ad1464b41ca4531b44ce63d752daaf2f12c92ca6cdcd82b270abecc" url: "https://pub.dev" source: hosted - version: "4.0.3" + version: "4.0.4" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: b7567106ed57bbadaa0610774cc17a10b82ed04a1aba99790f303385ac4ba78f + sha256: a75e1826d92ea4e86e4a753c7b5d64b844a362676fa653185f1581c859186d18 url: "https://pub.dev" source: hosted - version: "3.6.39" + version: "3.6.40" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: "156c4292aa63a6a7d508c68ded984cb38730d2823c3265e573cb1e94983e2025" + sha256: "1b0a4f9ecbaf9007771bac152afad738ddfacc4b8431a7591c00829480d99553" url: "https://pub.dev" source: hosted - version: "15.0.3" + version: "15.0.4" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "10408c5ca242b7fc632dd5eab4caf8fdf18ebe88db6052980fa71a18d88bd200" + sha256: c5a6443e66ae064fe186901d740ee7ce648ca2a6fd0484b8c5e963849ac0fc28 url: "https://pub.dev" source: hosted - version: "4.5.41" + version: "4.5.42" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: c7a756e3750679407948de665735e69a368cb902940466e5d68a00ea7aba1aaa + sha256: "232ef63b986467ae5b5577a09c2502b26e2e2aebab5b85e6c966a5ca9b038b89" url: "https://pub.dev" source: hosted - version: "3.8.11" + version: "3.8.12" fixnum: dependency: transitive description: @@ -527,10 +535,10 @@ packages: dependency: transitive description: name: flutter_cache_manager - sha256: ceff65d74d907b1b772e22cf04daad60fb472461638977d9fae8b00a63e01e3d + sha256: a77f77806a790eb9ba0118a5a3a936e81c4fea2b61533033b2b0c3d50bbde5ea url: "https://pub.dev" source: hosted - version: "3.3.3" + version: "3.4.0" flutter_displaymode: dependency: "direct main" description: @@ -926,10 +934,10 @@ packages: dependency: transitive description: name: octo_image - sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" + sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" package_config: dependency: transitive description: @@ -942,18 +950,18 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: b93d8b4d624b4ea19b0a5a208b2d6eff06004bc3ce74c06040b120eeadd00ce0 + sha256: "4de6c36df77ffbcef0a5aefe04669d33f2d18397fea228277b852a2d4e58e860" url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "8.0.1" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: f49918f3433a3146047372f9d4f1f847511f2acd5cd030e1f44fe5a50036b70e + sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66 url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.0.1" path: dependency: "direct main" description: @@ -974,18 +982,18 @@ packages: dependency: transitive description: name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 + sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "30c5aa827a6ae95ce2853cdc5fe3971daaac00f6f081c419c013f7f57bff2f5e" + sha256: "490539678396d4c3c0b06efdaab75ae60675c3e0c66f72bc04c2e2c1e0e2abeb" url: "https://pub.dev" source: hosted - version: "2.2.7" + version: "2.2.9" path_provider_foundation: dependency: transitive description: @@ -1158,58 +1166,58 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 + sha256: c272f9cabca5a81adc9b0894381e9c1def363e980f960fa903c604c471b22f68 url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.1" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577" + sha256: "041be4d9d2dc6079cf342bc8b761b03787e3b71192d658220a56cac9c04a0294" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.0" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7" + sha256: "671e7a931f55a08aa45be2a13fe7247f2a41237897df434b30d2012388191833" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.5.0" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" + sha256: "2ba0510d3017f91655b7543e9ee46d48619de2a2af38e5c790423f7007c7ccc1" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.0" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "034650b71e73629ca08a0bd789fd1d83cc63c2d1e405946f7cef7bc37432f93a" + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" + sha256: "59dc807b94d29d52ddbb1b3c0d3b9d0a67fc535a64e62a5542c8db0513fcb6c2" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" + sha256: "398084b47b7f92110683cac45c6dc4aae853db47e470e5ddcd52cab7f7196ab2" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.0" shelf: dependency: transitive description: @@ -1239,15 +1247,14 @@ packages: description: flutter source: sdk version: "0.0.99" - soundpool: + sound_effect: dependency: "direct main" description: - path: "." - ref: "575ba7e5c55986caeef66101f49fa695d65e5a5a" - resolved-ref: "575ba7e5c55986caeef66101f49fa695d65e5a5a" - url: "https://github.com/lichess-org/flutter-soundpool.git" - source: git - version: "2.4.0" + name: sound_effect + sha256: "745885446f835e22946f060572461ba50b34eecd03432fc33b292a4f9a2c79d5" + url: "https://pub.dev" + source: hosted + version: "0.0.2" source_gen: dependency: transitive description: @@ -1308,10 +1315,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "6d17989c0b06a5870b2190d391925186f944cb943e5262d0d3f778fcfca3bc6e" + sha256: fde692580bee3379374af1f624eb3e113ab2865ecb161dbe2d8ac2de9735dbdb url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "2.4.5" stack_trace: dependency: transitive description: @@ -1332,11 +1339,11 @@ packages: dependency: "direct main" description: path: "." - ref: "982a98258676165bdb268024bbcdc272290c9b3a" - resolved-ref: "982a98258676165bdb268024bbcdc272290c9b3a" + ref: "0965a99ea143db00ec495eecbd54dfe10acf70ea" + resolved-ref: "0965a99ea143db00ec495eecbd54dfe10acf70ea" url: "https://github.com/lichess-org/dart-stockfish.git" source: git - version: "1.6.0" + version: "1.6.1" stream_channel: dependency: "direct dev" description: @@ -1369,14 +1376,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0+1" - system_info_plus: - dependency: "direct main" - description: - name: system_info_plus - sha256: b915c811c6605b802f3988859bc2bb79c95f735762a75b5451741f7a2b949d1b - url: "https://pub.dev" - source: hosted - version: "0.0.5" term_glyph: dependency: transitive description: @@ -1437,10 +1436,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "95d8027db36a0e52caf55680f91e33ea6aa12a3ce608c90b06f4e429a21067ac" + sha256: "94d8ad05f44c6d4e2ffe5567ab4d741b82d62e3c8e288cc1fcea45965edf47c9" url: "https://pub.dev" source: hosted - version: "6.3.5" + version: "6.3.8" url_launcher_ios: dependency: transitive description: @@ -1477,10 +1476,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" + sha256: a36e2d7981122fa185006b216eb6b5b97ede3f9a54b7a511bc966971ab98d049 url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" url_launcher_windows: dependency: transitive description: @@ -1549,10 +1548,10 @@ packages: dependency: "direct main" description: name: wakelock_plus - sha256: "14758533319a462ffb5aa3b7ddb198e59b29ac3b02da14173a1715d65d4e6e68" + sha256: "4fa83a128b4127619e385f686b4f080a5d2de46cff8e8c94eccac5fcf76550e5" url: "https://pub.dev" source: hosted - version: "1.2.5" + version: "1.2.7" wakelock_plus_platform_interface: dependency: transitive description: @@ -1597,18 +1596,18 @@ packages: dependency: transitive description: name: win32 - sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 + sha256: "015002c060f1ae9f41a818f2d5640389cc05283e368be19dc8d77cecb43c40c9" url: "https://pub.dev" source: hosted - version: "5.5.1" + version: "5.5.3" win32_registry: dependency: transitive description: name: win32_registry - sha256: "10589e0d7f4e053f2c61023a31c9ce01146656a70b7b7f0828c0b46d7da2a9bb" + sha256: "723b7f851e5724c55409bb3d5a32b203b3afe8587eaf5dafb93a5fed8ecda0d6" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.4" xdg_directories: dependency: transitive description: @@ -1634,5 +1633,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.4.0 <4.0.0" + dart: ">=3.5.0-259.0.dev <4.0.0" flutter: ">=3.22.0" diff --git a/pubspec.yaml b/pubspec.yaml index 8ebfada502..8d1440b2f3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,12 +2,13 @@ name: lichess_mobile description: Lichess mobile app V2 publish_to: "none" -version: 0.9.3+000903 # see README.md for details about versioning +version: 0.9.6+000906 # see README.md for details about versioning environment: sdk: ">=3.3.0 <4.0.0" dependencies: + app_settings: ^5.1.1 async: ^2.10.0 cached_network_image: ^3.2.2 chessground: ^3.2.0 @@ -58,17 +59,13 @@ dependencies: share_plus: ^9.0.0 shared_preferences: ^2.1.0 signal_strength_indicator: ^0.4.1 - soundpool: - git: - url: https://github.com/lichess-org/flutter-soundpool.git - ref: 575ba7e5c55986caeef66101f49fa695d65e5a5a + sound_effect: ^0.0.2 sqflite: ^2.2.5 stockfish: - git: - url: https://github.com/lichess-org/dart-stockfish.git - ref: 982a98258676165bdb268024bbcdc272290c9b3a + git: + url: https://github.com/lichess-org/dart-stockfish.git + ref: 0965a99ea143db00ec495eecbd54dfe10acf70ea stream_transform: ^2.1.0 - system_info_plus: ^0.0.5 timeago: ^3.6.0 url_launcher: ^6.1.9 visibility_detector: ^0.4.0 diff --git a/scripts/firebase/package-lock.json b/scripts/firebase/package-lock.json index f2aad364e6..357111a5e7 100644 --- a/scripts/firebase/package-lock.json +++ b/scripts/firebase/package-lock.json @@ -676,9 +676,9 @@ "optional": true }, "node_modules/fast-xml-parser": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz", - "integrity": "sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", "funding": [ { "type": "github", diff --git a/scripts/update-arb-from-crowdin.mjs b/scripts/update-arb-from-crowdin.mjs index 16b3f0b095..07d0e37ad7 100755 --- a/scripts/update-arb-from-crowdin.mjs +++ b/scripts/update-arb-from-crowdin.mjs @@ -58,10 +58,10 @@ const whiteLists = { // Order of locales with variants matters: the fallback must always be first -// eg: 'de-DE' is before 'de-CH' +// eg: 'pt-PT' is before 'pt-BR' // Note that 'en-GB' is omitted here on purpose because it is the locale used in template ARB. // This list must be consistent with the `kSupportedLocales` constant defined in `lib/constants.dart`. -const locales = ['af-ZA', 'ar-SA', 'az-AZ', 'be-BY', 'bg-BG', 'bn-BD', 'br-FR', 'bs-BA', 'ca-ES', 'cs-CZ', 'da-DK', 'de-DE', 'de-CH', 'el-GR', 'en-US', 'eo-UY', 'es-ES', 'et-EE', 'eu-ES', 'fa-IR', 'fi-FI', 'fo-FO', 'fr-FR', 'ga-IE', 'gl-ES', 'he-IL', 'hi-IN', 'hr-HR', 'hu-HU', 'hy-AM', 'id-ID', 'it-IT', 'ja-JP', 'kk-KZ', 'ko-KR', 'lb-LU', 'lt-LT', 'lv-LV', 'mk-MK', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-PT', 'pt-BR', 'ro-RO', 'ru-RU', 'sk-SK', 'sl-SI', 'sq-AL', 'sr-SP', 'sv-SE', 'tr-TR', 'tt-RU', 'uk-UA', 'vi-VN', 'zh-CN', 'zh-TW'] +const locales = ['af-ZA', 'ar-SA', 'az-AZ', 'be-BY', 'bg-BG', 'bn-BD', 'br-FR', 'bs-BA', 'ca-ES', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-US', 'eo-UY', 'es-ES', 'et-EE', 'eu-ES', 'fa-IR', 'fi-FI', 'fo-FO', 'fr-FR', 'ga-IE', 'gl-ES', 'gsw-CH', 'he-IL', 'hi-IN', 'hr-HR', 'hu-HU', 'hy-AM', 'id-ID', 'it-IT', 'ja-JP', 'kk-KZ', 'ko-KR', 'lb-LU', 'lt-LT', 'lv-LV', 'mk-MK', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-PT', 'pt-BR', 'ro-RO', 'ru-RU', 'sk-SK', 'sl-SI', 'sq-AL', 'sr-SP', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN', 'zh-CN', 'zh-TW'] async function main() { mkdirSync(`${tmpDir}`, {recursive: true}) diff --git a/test/model/broadcast/broadcast_repository_test.dart b/test/model/broadcast/broadcast_repository_test.dart index b5710e8029..2cfd055e69 100644 --- a/test/model/broadcast/broadcast_repository_test.dart +++ b/test/model/broadcast/broadcast_repository_test.dart @@ -1,4 +1,3 @@ -import 'package:fast_immutable_collections/fast_immutable_collections.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:http/testing.dart'; import 'package:lichess_mobile/src/model/broadcast/broadcast.dart'; @@ -61,7 +60,7 @@ void main() { final response = await repo.getRound(const BroadcastRoundId(roundId)); - expect(response, isA>()); + expect(response, isA()); expect(response.length, 5); }); }); diff --git a/test/model/common/service/fake_sound_service.dart b/test/model/common/service/fake_sound_service.dart index c52cbc1930..3e765d133d 100644 --- a/test/model/common/service/fake_sound_service.dart +++ b/test/model/common/service/fake_sound_service.dart @@ -3,13 +3,17 @@ import 'package:lichess_mobile/src/model/settings/sound_theme.dart'; class FakeSoundService implements SoundService { @override - Future play(Sound sound) async { - return null; - } + Future play(Sound sound) async {} @override - Future stopCurrent() async {} + Future changeTheme( + SoundTheme theme, { + bool playSound = false, + }) async {} @override - Future changeTheme(SoundTheme theme, {bool playSound = false}) async {} + Future initialize(SoundTheme theme) async {} + + @override + Future release() async {} } diff --git a/test/test_app.dart b/test/test_app.dart index 2d0d4a9cc5..d8a39d3a02 100644 --- a/test/test_app.dart +++ b/test/test_app.dart @@ -1,5 +1,4 @@ import 'package:device_info_plus/device_info_plus.dart'; -import 'package:fast_immutable_collections/fast_immutable_collections.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -25,7 +24,6 @@ import 'package:logging/logging.dart'; import 'package:mocktail/mocktail.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:soundpool/soundpool.dart'; import 'package:sqflite/sqflite.dart'; import 'package:visibility_detector/visibility_detector.dart'; @@ -37,8 +35,6 @@ import 'model/common/fake_websocket_channel.dart'; import 'model/game/mock_game_storage.dart'; import 'utils/fake_connectivity_changes.dart'; -class MockSoundPool extends Mock implements Soundpool {} - class MockDatabase extends Mock implements Database {} final mockClient = MockClient((request) async { @@ -139,7 +135,6 @@ Future buildTestApp( 'isPhysicalDevice': true, }), sharedPreferences: sharedPreferences, - soundPool: (MockSoundPool(), IMap(const {})), userSession: userSession, database: MockDatabase(), sri: 'test', diff --git a/test/test_container.dart b/test/test_container.dart index 3efe89bb15..adb11bddb6 100644 --- a/test/test_container.dart +++ b/test/test_container.dart @@ -1,5 +1,4 @@ import 'package:device_info_plus/device_info_plus.dart'; -import 'package:fast_immutable_collections/fast_immutable_collections.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; @@ -21,7 +20,6 @@ import 'package:logging/logging.dart'; import 'package:mocktail/mocktail.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:soundpool/soundpool.dart'; import 'package:sqflite/sqflite.dart'; import './fake_crashlytics.dart'; @@ -31,8 +29,6 @@ import 'fake_notification_service.dart'; import 'model/common/fake_websocket_channel.dart'; import 'utils/fake_connectivity_changes.dart'; -class MockSoundPool extends Mock implements Soundpool {} - class MockDatabase extends Mock implements Database {} class MockHttpClient extends Mock implements http.Client {} @@ -112,7 +108,6 @@ Future makeContainer({ 'isPhysicalDevice': true, }), sharedPreferences: sharedPreferences, - soundPool: (MockSoundPool(), IMap(const {})), userSession: userSession, database: MockDatabase(), sri: 'test', diff --git a/test/utils/l10n_test.dart b/test/utils/l10n_test.dart new file mode 100644 index 0000000000..72f178b3a7 --- /dev/null +++ b/test/utils/l10n_test.dart @@ -0,0 +1,64 @@ +import 'package:flutter/widgets.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:lichess_mobile/src/utils/l10n.dart'; + +void main() { + group('l10nWithWidget', () { + const widget = Text('I am a widget'); + test('placeholder in the middle', () { + final text = l10nWithWidget( + (_) => 'foo %s bar', + widget, + ); + final children = (text.textSpan as TextSpan?)?.children; + expect(children!.length, 3); + expect((children[0] as TextSpan).text, 'foo '); + expect((children[1] as WidgetSpan).child, widget); + expect((children[2] as TextSpan).text, ' bar'); + }); + + test('no placeholder', () { + final text = l10nWithWidget( + (_) => 'foo bar', + widget, + ); + expect(text.data, 'foo bar'); + }); + + test('placeholder at the beginning', () { + final text = l10nWithWidget( + (_) => '%s foo bar', + widget, + ); + final children = (text.textSpan as TextSpan?)?.children; + expect(children!.length, 2); + expect((children[0] as WidgetSpan).child, widget); + expect((children[1] as TextSpan).text, ' foo bar'); + }); + + test('placeholder at the end', () { + final text = l10nWithWidget( + (_) => 'foo bar %s', + widget, + ); + final children = (text.textSpan as TextSpan?)?.children; + expect(children!.length, 2); + expect((children[0] as TextSpan).text, 'foo bar '); + expect((children[1] as WidgetSpan).child, widget); + }); + + test('passes textStyle', () { + final text = l10nWithWidget( + (_) => 'foo %s bar', + widget, + textStyle: const TextStyle(fontWeight: FontWeight.bold), + ); + final children = (text.textSpan as TextSpan?)?.children; + expect(children!.length, 3); + expect((children[0] as TextSpan).style?.fontWeight, FontWeight.bold); + expect((children[1] as WidgetSpan).child, widget); + expect((children[2] as TextSpan).style?.fontWeight, FontWeight.bold); + }); + }); +} diff --git a/test/view/puzzle/puzzle_screen_test.dart b/test/view/puzzle/puzzle_screen_test.dart index 46e423fed2..f7e47eb86f 100644 --- a/test/view/puzzle/puzzle_screen_test.dart +++ b/test/view/puzzle/puzzle_screen_test.dart @@ -5,6 +5,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:http/testing.dart'; +import 'package:lichess_mobile/src/model/account/account_preferences.dart'; import 'package:lichess_mobile/src/model/common/http.dart'; import 'package:lichess_mobile/src/model/common/id.dart'; import 'package:lichess_mobile/src/model/common/perf.dart'; @@ -13,6 +14,7 @@ import 'package:lichess_mobile/src/model/puzzle/puzzle_angle.dart'; import 'package:lichess_mobile/src/model/puzzle/puzzle_batch_storage.dart'; import 'package:lichess_mobile/src/model/puzzle/puzzle_storage.dart'; import 'package:lichess_mobile/src/model/puzzle/puzzle_theme.dart'; +import 'package:lichess_mobile/src/utils/string.dart'; import 'package:lichess_mobile/src/view/puzzle/puzzle_screen.dart'; import 'package:lichess_mobile/src/widgets/bottom_bar_button.dart'; import 'package:mocktail/mocktail.dart'; @@ -249,10 +251,9 @@ void main() { }, ); - testWidgets( - 'fails a puzzle', - variant: kPlatformVariant, - (tester) async { + for (final showRatings in [true, false]) { + testWidgets('fails a puzzle, (showRatings: $showRatings)', + variant: kPlatformVariant, (tester) async { final mockClient = MockClient((request) { if (request.url.path == '/api/puzzle/batch/mix') { return mockResponse(batchOf1, 200); @@ -277,6 +278,9 @@ void main() { return mockBatchStorage; }), puzzleStorageProvider.overrideWith((ref) => mockHistoryStorage), + showRatingsPrefProvider.overrideWith((ref) { + return showRatings; + }), ], ); @@ -343,14 +347,24 @@ void main() { find.text('Puzzle complete!'), findsOneWidget, ); + final expectedPlayedXTimes = + 'Played ${puzzle2.puzzle.plays.toString().localizeNumbers()} times.'; + expect( + find.text( + showRatings + ? 'Rating: ${puzzle2.puzzle.rating}. $expectedPlayedXTimes' + : expectedPlayedXTimes, + ), + findsOneWidget, + ); // wait for move animation await tester.pumpAndSettle(); // called once to save solution and once after fetching a new puzzle verify(saveDBReq).called(2); - }, - ); + }); + } testWidgets( 'view solution', diff --git a/test/view/settings/settings_screen_test.dart b/test/view/settings/settigs_tab_screen_test.dart similarity index 98% rename from test/view/settings/settings_screen_test.dart rename to test/view/settings/settigs_tab_screen_test.dart index 18170d9f92..0d6fa2f69a 100644 --- a/test/view/settings/settings_screen_test.dart +++ b/test/view/settings/settigs_tab_screen_test.dart @@ -19,7 +19,7 @@ final client = MockClient((request) { }); void main() { - group('SettingsScreen', () { + group('SettingsTabScreen', () { testWidgets( 'meets accessibility guidelines', (WidgetTester tester) async { diff --git a/translation/source/mobile.xml b/translation/source/mobile.xml index 56b622b6a0..8ea73baed3 100644 --- a/translation/source/mobile.xml +++ b/translation/source/mobile.xml @@ -38,4 +38,10 @@ Join a game Clear saved move Something went wrong. + Show result + Play puzzles from your favorite openings, or choose a theme. + Solve as many puzzles as possible in 3 minutes. + Hello, %s + Hello + Magnify dragged piece