diff --git a/Baccarat/Baccarat/Engine/GameState.swift b/Baccarat/Baccarat/Engine/GameState.swift index 7525c50..6012a26 100644 --- a/Baccarat/Baccarat/Engine/GameState.swift +++ b/Baccarat/Baccarat/Engine/GameState.swift @@ -159,11 +159,9 @@ final class GameState { /// Handles data received from iCloud (e.g., after fresh install or from another device). private func handleCloudDataReceived(_ cloudData: BaccaratGameData) { - print("GameState: Received cloud data with \(cloudData.roundsPlayed) rounds") // Only update if cloud has more progress than current state guard cloudData.roundsPlayed > roundHistory.count else { - print("GameState: Local data is newer, ignoring cloud data") return } @@ -181,8 +179,6 @@ final class GameState { bankerPair: saved.bankerPair ) } - - print("GameState: Restored from cloud - \(cloudData.roundsPlayed) rounds, balance: \(cloudData.balance)") } // MARK: - Persistence @@ -208,8 +204,6 @@ final class GameState { bankerPair: saved.bankerPair ) } - - print("GameState: Restored \(savedData.roundsPlayed) rounds, balance: \(savedData.balance)") } /// Saves current game state to iCloud/local storage. diff --git a/Baccarat/Baccarat/Models/GameSettings.swift b/Baccarat/Baccarat/Models/GameSettings.swift index f162f2d..1a593d7 100644 --- a/Baccarat/Baccarat/Models/GameSettings.swift +++ b/Baccarat/Baccarat/Models/GameSettings.swift @@ -295,8 +295,6 @@ final class GameSettings { if let volume = iCloudStore.object(forKey: Keys.soundVolume) as? Double { self.soundVolume = Float(volume) } - - print("GameSettings: Loaded from iCloud") } /// Saves settings to UserDefaults and iCloud. @@ -327,7 +325,6 @@ final class GameSettings { iCloudStore.set(hapticsEnabled, forKey: Keys.hapticsEnabled) iCloudStore.set(Double(soundVolume), forKey: Keys.soundVolume) iCloudStore.synchronize() - print("GameSettings: Saved to iCloud") } } diff --git a/Baccarat/Baccarat/Resources/Localizable.xcstrings b/Baccarat/Baccarat/Resources/Localizable.xcstrings index 7bf7413..4b917c2 100644 --- a/Baccarat/Baccarat/Resources/Localizable.xcstrings +++ b/Baccarat/Baccarat/Resources/Localizable.xcstrings @@ -21,8 +21,8 @@ "value" : "-%lld $" } } - } - }, + } + }, "%lld" : { "comment" : "The number of rounds a player has played in the game.", "localizations" : { @@ -67,8 +67,8 @@ "value" : "%lld." } } - } - }, + } + }, "%lldpx" : { "comment" : "A text label displaying the size of the app icon. The argument is the size of the icon in pixels.", "localizations" : { @@ -113,8 +113,8 @@ "value" : "•" } } - } - }, + } + }, "• Add to Assets.xcassets/AppIcon" : { "comment" : "A step in the process of exporting app icons.", "localizations" : { @@ -158,8 +158,8 @@ "value" : "• Appeler IconRenderer.renderAppIcon(config: .baccarat)" } } - } - }, + } + }, "• Run the preview in Xcode" : { "localizations" : { "en" : { @@ -203,8 +203,8 @@ "value" : "• Enregistrer l'UIImage résultante dans les fichiers" } } - } - }, + } + }, "• Screenshot the 1024px icon" : { "comment" : "A step in the process of exporting app icons, describing how to take a screenshot of a 1024px icon.", "localizations" : { @@ -249,8 +249,8 @@ "value" : "• Utiliser un outil en ligne pour générer toutes les tailles" } } - } - }, + } + }, "↓ then →" : { "comment" : "A textual instruction for using the road map in the game.", "localizations" : { @@ -295,8 +295,8 @@ "value" : "+%lld" } } - } - }, + } + }, "+$%lld" : { "localizations" : { "en" : { @@ -340,8 +340,8 @@ "value" : "2-9: Valeur faciale" } } - } - }, + } + }, "8 : 1" : { "comment" : "The payout ratio for a tie bet.", "localizations" : { @@ -386,8 +386,8 @@ "value" : "10, Valet, Dame, Roi: 0 point" } } - } - }, + } + }, "11 : 1" : { "comment" : "The payout ratio for a pair bet.", "localizations" : { @@ -432,8 +432,8 @@ "value" : "Un Naturel termine la manche immédiatement." } } - } - }, + } + }, "Ace: 1 point" : { "comment" : "Card value description for an Ace.", "localizations" : { @@ -477,8 +477,8 @@ "value" : "Ajoutez %lld$ de plus pour atteindre le minimum" } } - } - }, + } + }, "After generating:" : { "comment" : "A heading for the instructions section of the icon generator view.", "localizations" : { @@ -523,8 +523,8 @@ "value" : "Toutes les tailles" } } - } - }, + } + }, "Alternative: Use an online tool" : { "comment" : "A section header that suggests using an online tool to generate app icon sizes.", "localizations" : { @@ -569,8 +569,8 @@ "value" : "Misez toujours sur le Banquier — il a les meilleures chances (1.06% d'avantage)." } } - } - }, + } + }, "Animate dealing and flipping" : { "comment" : "Subtitle for card animations toggle.", "localizations" : { @@ -615,8 +615,8 @@ "value" : "Icône de l'app" } } - } - }, + } + }, "App Icon Preview" : { "comment" : "A header describing the preview of the app icon.", "localizations" : { @@ -661,8 +661,8 @@ "value" : "Évitez la mise sur Égalité — 14.4% d'avantage maison!" } } - } - }, + } + }, "B Pair" : { "localizations" : { "en" : { @@ -706,8 +706,8 @@ "value" : "Le Baccarat a l'un des plus faibles avantages maison du casino." } } - } - }, + } + }, "Banker" : { "localizations" : { "en" : { @@ -751,8 +751,8 @@ "value" : "BANQUE" } } - } - }, + } + }, "Banker 0-2: Always draws" : { "comment" : "Description of the third card rule for the Banker when the Player's third card is 0-2.", "localizations" : { @@ -797,8 +797,8 @@ "value" : "Banquier 3: Tire sauf si la 3e du Joueur était 8" } } - } - }, + } + }, "Banker 4: Draws if Player's 3rd was 2-7" : { "comment" : "Side bet rule for the Banker when the Player's third card is 4 and it falls between 2 and 7.", "localizations" : { @@ -843,8 +843,8 @@ "value" : "Banquier 5: Tire si la 3e du Joueur était 4-7" } } - } - }, + } + }, "Banker 6: Draws if Player's 3rd was 6-7" : { "comment" : "Description of the betting strategy for the Banker when the Player's third card is 6-7.", "localizations" : { @@ -958,8 +958,8 @@ "value" : "Main du banquier" } } - } - }, + } + }, "Bet on which hand will win: Player, Banker, or Tie." : { "comment" : "Text describing the objective of the baccarat game.", "localizations" : { @@ -1004,8 +1004,8 @@ "value" : "Blackjack" } } - } - }, + } + }, "BONUS" : { "comment" : "The text displayed in the center of the bonus zone.", "localizations" : { @@ -1232,8 +1232,8 @@ "value" : "Effacer toutes les données?" } } - } - }, + } + }, "CLOUD SYNC" : { "localizations" : { "en" : { @@ -1276,8 +1276,8 @@ "value" : "DONNÉES" } } - } - }, + } + }, "Deal" : { "comment" : "The label of a button that deals cards in a game.", "localizations" : { @@ -1322,8 +1322,8 @@ "value" : "Distribution..." } } - } - }, + } + }, "DECK SETTINGS" : { "comment" : "Section header for deck configuration settings.", "localizations" : { @@ -1391,8 +1391,8 @@ "value" : "Afficher le compteur de cartes en haut" } } - } - }, + } + }, "Display result road map" : { "comment" : "Subtitle for show history toggle.", "localizations" : { @@ -1437,8 +1437,8 @@ "value" : "Terminé" } } - } - }, + } + }, "Dragon Bonus" : { "localizations" : { "en" : { @@ -1482,8 +1482,8 @@ "value" : "Le Bonus Dragon est amusant mais a ~2.7% d'avantage maison." } } - } - }, + } + }, "Example: 5♥ + 5♣ = Pair (wins!)" : { "comment" : "Example of a pair bet winning.", "localizations" : { @@ -1528,10 +1528,11 @@ "value" : "Historique" } } - } - }, + } + }, "Game Over" : { "comment" : "The title of the game over screen.", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -1555,6 +1556,7 @@ }, "GAME OVER" : { "comment" : "The title of the game over screen.", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -1574,8 +1576,8 @@ "value" : "FIN DE PARTIE" } } - } - }, + } + }, "Generate & Save Icons" : { "comment" : "A button label that triggers the generation of app icons.", "localizations" : { @@ -1620,8 +1622,8 @@ "value" : "Icônes générées:" } } - } - }, + } + }, "Generating..." : { "comment" : "A text that appears while generating icons.", "localizations" : { @@ -1666,8 +1668,8 @@ "value" : "Les valeurs de main n'utilisent que le dernier chiffre (ex., 7+8=15 → 5)." } } - } - }, + } + }, "handValueFormat" : { "comment" : "Format for displaying hand value. The argument is the numeric value of the hand.", "localizations" : { @@ -1712,8 +1714,8 @@ "value" : "Retour Haptique" } } - } - }, + } + }, "HISTORY" : { "comment" : "A label displayed above the road map view, indicating that it shows a history of past game results.", "localizations" : { @@ -1758,8 +1760,8 @@ "value" : "%lld parties : %lld joueur, %lld banquier, %lld égalités" } } - } - }, + } + }, "How to Export Icons" : { "comment" : "A section header explaining how to export app icons.", "localizations" : { @@ -1804,8 +1806,8 @@ "value" : "Comment jouer" } } - } - }, + } + }, "iCloud Sync" : { "localizations" : { "en" : { @@ -1848,8 +1850,8 @@ "value" : "iCloud non disponible" } } - } - }, + } + }, "Icon" : { "comment" : "The title for the tab that displays the app icon preview.", "localizations" : { @@ -1894,8 +1896,8 @@ "value" : "Générateur d'icônes" } } - } - }, + } + }, "If either hand totals 8 or 9 with two cards, it's a 'Natural'." : { "comment" : "Description of the 'Natural' hand in baccarat, explaining when it occurs and its significance.", "localizations" : { @@ -1940,8 +1942,8 @@ "value" : "Si aucune main n'a un Naturel, les règles de la troisième carte s'appliquent." } } - } - }, + } + }, "If Player draws, Banker's action depends on Player's third card:" : { "comment" : "Explanation of the third card decision for the Banker in the Rules Help view.", "localizations" : { @@ -1986,8 +1988,8 @@ "value" : "Si le Joueur reste, le Banquier tire sur 0-5, reste sur 6-7." } } - } - }, + } + }, "Independent of the main game result." : { "comment" : "Note about the independence of the Pair Bonus from the main game result in the Rules Help view.", "localizations" : { @@ -2098,8 +2100,8 @@ "value" : "Tours joués" } } - } - }, + } + }, "Main Bets" : { "comment" : "Title of a rule page in the \"Rules\" help view, describing the main bets available in baccarat.", "localizations" : { @@ -2144,8 +2146,8 @@ "value" : "MAX" } } - } - }, + } + }, "Natural 9 beats Natural 8." : { "comment" : "Explanation of the payout for a Baccarat hand that is a Natural 9, compared to one that is a Natural 8.", "localizations" : { @@ -2190,8 +2192,8 @@ "value" : "Main naturelle" } } - } - }, + } + }, "Natural Win: 1:1" : { "comment" : "Description of the payout for a 'Natural Win' in the Rules Help view.", "localizations" : { @@ -2371,8 +2373,8 @@ "value" : "Objectif" } } - } - }, + } + }, "Only the rank matters (suits are ignored)." : { "comment" : "Explanation of how to determine if the first two cards in a hand form a pair, focusing on the rank rather than the suit.", "localizations" : { @@ -2645,8 +2647,8 @@ "value" : "Joueur" } } - } - }, + } + }, "PLAYER" : { "comment" : "The label for the player's hand in the cards display area.", "localizations" : { @@ -2737,8 +2739,8 @@ "value" : "Joueur avec 0-5: Tire une troisième carte" } } - } - }, + } + }, "Player with 6-7: Stands" : { "comment" : "Description of the action for the Banker when the Player draws a third card.", "localizations" : { @@ -2783,8 +2785,8 @@ "value" : "Joueur avec 8-9: Naturel (pas de troisième carte)" } } - } - }, + } + }, "Poker" : { "comment" : "The name of a poker game.", "localizations" : { @@ -2828,8 +2830,8 @@ "value" : "Politique de confidentialité" } } - } - }, + } + }, "Reset to Defaults" : { "comment" : "A button label that resets game settings to their default values.", "localizations" : { @@ -2874,8 +2876,8 @@ "value" : "Roulette" } } - } - }, + } + }, "Rounds" : { "localizations" : { "en" : { @@ -2900,6 +2902,7 @@ }, "Rounds Played" : { "comment" : "A label displayed next to the number of rounds played in the game over screen.", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -2988,8 +2991,8 @@ "value" : "Afficher Cartes Restantes" } } - } - }, + } + }, "Show History" : { "comment" : "Toggle label for showing game history.", "localizations" : { @@ -3034,8 +3037,8 @@ "value" : "Mise secondaire sur le Joueur ou Banquier gagnant par une marge." } } - } - }, + } + }, "Side bet on the first two cards being a pair." : { "comment" : "Description of a side bet where the player bets on whether the first two cards dealt in a hand are a pair.", "localizations" : { @@ -3079,8 +3082,8 @@ "value" : "Connectez-vous à iCloud pour synchroniser" } } - } - }, + } + }, "SOUND & HAPTICS" : { "comment" : "Section header for sound and haptic settings.", "localizations" : { @@ -3125,8 +3128,8 @@ "value" : "Effets Sonores" } } - } - }, + } + }, "STARTING BALANCE" : { "comment" : "Section header for starting balance settings.", "localizations" : { @@ -3170,8 +3173,8 @@ "value" : "Statistiques" } } - } - }, + } + }, "Strategy Tips" : { "comment" : "Title of a section in the Rules Help view focused on strategy tips.", "localizations" : { @@ -3284,8 +3287,8 @@ "value" : "%@ $ - %@ $" } } - } - }, + } + }, "The hand closest to 9 wins." : { "comment" : "Explanation of how the hand closest to 9 wins in baccarat.", "localizations" : { @@ -3330,8 +3333,8 @@ "value" : "Aucune compétence requise — profitez simplement du jeu!" } } - } - }, + } + }, "These show how the same pattern works for other games" : { "comment" : "A description below the section of the view that previews icons for other games.", "localizations" : { @@ -3443,8 +3446,8 @@ "value" : "Égalité" } } - } - }, + } + }, "TIE" : { "comment" : "The text displayed in the TIE betting zone.", "localizations" : { @@ -3489,8 +3492,8 @@ "value" : "Mise Égalité: Paie 8:1" } } - } - }, + } + }, "TOTAL" : { "comment" : "A label displayed next to the total winnings in the result banner.", "localizations" : { diff --git a/Baccarat/Baccarat/Views/Sheets/GameOverView.swift b/Baccarat/Baccarat/Views/Sheets/GameOverView.swift deleted file mode 100644 index b7f22e7..0000000 --- a/Baccarat/Baccarat/Views/Sheets/GameOverView.swift +++ /dev/null @@ -1,189 +0,0 @@ -// -// GameOverView.swift -// Baccarat -// -// Game over screen shown when player runs out of money. -// - -import SwiftUI -import CasinoKit - -/// Game over screen shown when player runs out of money. -struct GameOverView: View { - let roundsPlayed: Int - let onPlayAgain: () -> Void - - @State private var showContent = false - @Environment(\.horizontalSizeClass) private var horizontalSizeClass - - /// Maximum width for the modal card on iPad - private var maxModalWidth: CGFloat { - horizontalSizeClass == .regular ? CasinoDesign.Size.maxModalWidth : .infinity - } - - // MARK: - Scaled Font Sizes (Dynamic Type) - - @ScaledMetric(relativeTo: .largeTitle) private var iconSize: CGFloat = Design.BaseFontSize.display - @ScaledMetric(relativeTo: .largeTitle) private var titleFontSize: CGFloat = Design.BaseFontSize.largeTitle - @ScaledMetric(relativeTo: .body) private var messageFontSize: CGFloat = Design.BaseFontSize.xLarge - @ScaledMetric(relativeTo: .body) private var statsFontSize: CGFloat = 17 - @ScaledMetric(relativeTo: .headline) private var buttonFontSize: CGFloat = Design.BaseFontSize.xLarge - - // MARK: - Layout Constants - - private let modalCornerRadius = Design.CornerRadius.xxxLarge - private let statsCornerRadius = Design.CornerRadius.large - private let cardPadding = Design.Spacing.xxxLarge - private let contentSpacing: CGFloat = 28 - private let buttonHorizontalPadding: CGFloat = 48 - private let buttonVerticalPadding: CGFloat = 18 - - // MARK: - Body - - var body: some View { - ZStack { - // Solid dark backdrop - fully opaque - Color.black - .ignoresSafeArea() - - // Modal card - modalContent - } - .onAppear { - withAnimation(.spring(duration: Design.Animation.springDuration, bounce: Design.Animation.springBounce)) { - showContent = true - } - } - .accessibilityElement(children: .contain) - .accessibilityLabel(String(localized: "Game Over")) - .accessibilityAddTraits(.isModal) - } - - // MARK: - Private Views - - private var modalContent: some View { - VStack(spacing: contentSpacing) { - // Broke icon - Image(systemName: "creditcard.trianglebadge.exclamationmark") - .font(.system(size: iconSize)) - .foregroundStyle(.red) - .symbolEffect(.pulse, options: .repeating) - - // Title - Text("GAME OVER") - .font(.system(size: titleFontSize, weight: .black, design: .rounded)) - .foregroundStyle(.white) - - // Message - Text("You've run out of chips!") - .font(.system(size: messageFontSize, weight: .medium)) - .foregroundStyle(.white.opacity(Design.Opacity.strong)) - - // Stats card - statsCard - - // Play Again button - playAgainButton - } - .padding(cardPadding) - .background(modalBackground) - .shadow(color: .red.opacity(Design.Opacity.hint), radius: Design.Shadow.radiusXXLarge) - .frame(maxWidth: maxModalWidth) - .padding(.horizontal, Design.Spacing.xxLarge) - .scaleEffect(showContent ? Design.Scale.normal : Design.Scale.slightShrink) - .opacity(showContent ? 1.0 : 0) - } - - private var statsCard: some View { - VStack(spacing: Design.Spacing.medium) { - HStack { - Text("Rounds Played") - .foregroundStyle(.white.opacity(Design.Opacity.medium)) - Spacer() - Text("\(roundsPlayed)") - .bold() - .foregroundStyle(.white) - } - } - .font(.system(size: statsFontSize)) - .padding() - .background( - RoundedRectangle(cornerRadius: statsCornerRadius) - .fill(Color.white.opacity(Design.Opacity.subtle)) - .overlay( - RoundedRectangle(cornerRadius: statsCornerRadius) - .strokeBorder(Color.white.opacity(Design.Opacity.subtle), lineWidth: Design.LineWidth.thin) - ) - ) - .padding(.horizontal, Design.Spacing.xLarge) - } - - private var playAgainButton: some View { - Button { - onPlayAgain() - } label: { - HStack(spacing: Design.Spacing.small) { - Image(systemName: "arrow.counterclockwise") - Text("Play Again") - } - .font(.system(size: buttonFontSize, weight: .bold)) - .foregroundStyle(.black) - .padding(.horizontal, buttonHorizontalPadding) - .padding(.vertical, buttonVerticalPadding) - .background( - Capsule() - .fill( - LinearGradient( - colors: [Color.CasinoButton.goldLight, Color.CasinoButton.goldDark], - startPoint: .top, - endPoint: .bottom - ) - ) - ) - .shadow(color: .yellow.opacity(Design.Opacity.light), radius: Design.Shadow.radiusXLarge) - } - .padding(.top, Design.Spacing.medium) - } - - private var modalBackground: some View { - RoundedRectangle(cornerRadius: modalCornerRadius) - .fill( - LinearGradient( - colors: [Color.CasinoModal.backgroundLight, Color.CasinoModal.backgroundDark], - startPoint: .top, - endPoint: .bottom - ) - ) - .overlay( - RoundedRectangle(cornerRadius: modalCornerRadius) - .strokeBorder( - LinearGradient( - colors: [ - Color.red.opacity(Design.Opacity.medium), - Color.red.opacity(Design.Opacity.hint) - ], - startPoint: .topLeading, - endPoint: .bottomTrailing - ), - lineWidth: Design.LineWidth.medium - ) - ) - } -} - -// MARK: - Previews - -#Preview("Game Over") { - GameOverView( - roundsPlayed: 42, - onPlayAgain: {} - ) -} - -#Preview("Few Rounds") { - GameOverView( - roundsPlayed: 3, - onPlayAgain: {} - ) -} - diff --git a/CasinoKit/Sources/CasinoKit/Resources/Localizable.xcstrings b/CasinoKit/Sources/CasinoKit/Resources/Localizable.xcstrings index 327a9e2..d858c34 100644 --- a/CasinoKit/Sources/CasinoKit/Resources/Localizable.xcstrings +++ b/CasinoKit/Sources/CasinoKit/Resources/Localizable.xcstrings @@ -1,2156 +1,2160 @@ { - "sourceLanguage": "en", - "strings": { - "%@ (\"we\", \"our\", or \"us\") respects your privacy. This Privacy Policy explains how our casino game apps handle your information.": { - "comment": "A paragraph explaining the purpose of the privacy policy and the role of the developer.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%@ (\"we\", \"our\", or \"us\") respects your privacy. This Privacy Policy explains how our casino game apps handle your information." + "sourceLanguage" : "en", + "strings" : { + "%@ (\"we\", \"our\", or \"us\") respects your privacy. This Privacy Policy explains how our casino game apps handle your information." : { + "comment" : "A paragraph explaining the purpose of the privacy policy and the role of the developer.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ (\"we\", \"our\", or \"us\") respects your privacy. This Privacy Policy explains how our casino game apps handle your information." } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "%@ (\"nosotros\" o \"nuestro\") respeta tu privacidad. Esta Política de Privacidad explica cómo nuestras aplicaciones de juegos de casino manejan tu información." + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ (\"nosotros\" o \"nuestro\") respeta tu privacidad. Esta Política de Privacidad explica cómo nuestras aplicaciones de juegos de casino manejan tu información." } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "%@ (« nous » ou « notre ») respecte votre vie privée. Cette Politique de confidentialité explique comment nos applications de jeux de casino traitent vos informations." + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ (« nous » ou « notre ») respecte votre vie privée. Cette Politique de confidentialité explique comment nos applications de jeux de casino traitent vos informations." } } } }, - "%lld": { - "comment": "A badge displaying a numeric value. The argument is the numeric value to display.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld" + "%lld" : { + "comment" : "A badge displaying a numeric value. The argument is the numeric value to display.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "%lld" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "%lld" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" } } } }, - "%lld dollar bet": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld dollar bet" + "%lld dollar bet" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld dollar bet" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Apuesta de %lld dólares" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apuesta de %lld dólares" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Mise de %lld dollars" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise de %lld dollars" } } } }, - "%lld dollar chip": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld dollar chip" + "%lld dollar chip" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld dollar chip" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Ficha de %lld dólares" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ficha de %lld dólares" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Jeton de %lld dollars" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jeton de %lld dollars" } } } }, - "%lld%%": { - "comment": "A text displaying the current volume percentage. The argument is a value between 0.0 (no volume) and 1.0 (full volume).", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld%%" + "%lld%%" : { + "comment" : "A text displaying the current volume percentage. The argument is a value between 0.0 (no volume) and 1.0 (full volume).", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld%%" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "%lld%%" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld%%" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "%lld%%" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld%%" } } } }, - "%lldpt": { - "comment": "A caption below an app icon that shows its size in points. The argument is the size of the icon in points.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%lldpt" + "%lldpt" : { + "comment" : "A caption below an app icon that shows its size in points. The argument is the size of the icon in points.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lldpt" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "%lldpt" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lldpt" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "%lldpt" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lldpt" } } } }, - "•": { - "comment": "A bullet point indicator.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "•" + "•" : { + "comment" : "A bullet point indicator.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "•" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "•" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "•" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "•" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "•" } } } }, - "$": { - "comment": "The dollar sign used in the top bar.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "$" + "$" : { + "comment" : "The dollar sign used in the top bar.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "$" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "$" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "$" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "$" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "$" } } } }, - "$%@": { - "comment": "The value of the balance displayed in the top bar.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "$%@" + "$%@" : { + "comment" : "The value of the balance displayed in the top bar.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "$%@" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "$%@" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "$%@" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "%@ $" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ $" } } } }, - "$%lld bet": { - "comment": "A value describing the bet amount in the accessibility label. The argument is the bet amount.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "$%lld bet" + "$%lld bet" : { + "comment" : "A value describing the bet amount in the accessibility label. The argument is the bet amount.", + "extractionState" : "stale", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "$%lld bet" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Apuesta de $%lld" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apuesta de $%lld" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Mise de %lld $" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mise de %lld $" } } } }, - "1. Use Xcode's preview to screenshot these icons": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "1. Use Xcode's preview to screenshot these icons" + "1. Use Xcode's preview to screenshot these icons" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1. Use Xcode's preview to screenshot these icons" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "1. Usa la vista previa de Xcode para capturar estos iconos" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "1. Usa la vista previa de Xcode para capturar estos iconos" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "1. Utilisez l'aperçu de Xcode pour capturer ces icônes" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "1. Utilisez l'aperçu de Xcode pour capturer ces icônes" } } } }, - "2. Or use IconRenderer.renderAppIcon() in code": { - "comment": "An instruction in the Icon Export View explaining how to generate app icons using code.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "2. Or use IconRenderer.renderAppIcon() in code" + "2. Or use IconRenderer.renderAppIcon() in code" : { + "comment" : "An instruction in the Icon Export View explaining how to generate app icons using code.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "2. Or use IconRenderer.renderAppIcon() in code" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "2. O usa IconRenderer.renderAppIcon() en el código" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "2. O usa IconRenderer.renderAppIcon() en el código" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "2. Ou utilisez IconRenderer.renderAppIcon() dans le code" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "2. Ou utilisez IconRenderer.renderAppIcon() dans le code" } } } }, - "3. Add generated images to Assets.xcassets/AppIcon": { - "comment": "Instructions for adding generated app icon images to Xcode's asset catalog.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "3. Add generated images to Assets.xcassets/AppIcon" + "3. Add generated images to Assets.xcassets/AppIcon" : { + "comment" : "Instructions for adding generated app icon images to Xcode's asset catalog.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "3. Add generated images to Assets.xcassets/AppIcon" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "3. Agrega las imágenes generadas a Assets.xcassets/AppIcon" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "3. Agrega las imágenes generadas a Assets.xcassets/AppIcon" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "3. Ajoutez les images générées à Assets.xcassets/AppIcon" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "3. Ajoutez les images générées à Assets.xcassets/AppIcon" } } } }, - "Ace": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Ace" + "Ace" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ace" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "As" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "As" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "As" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "As" } } } }, - "All game data is stored:": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "All game data is stored:" + "All game data is stored:" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "All game data is stored:" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Todos los datos del juego se almacenan:" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Todos los datos del juego se almacenan:" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Toutes les données du jeu sont stockées:" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toutes les données du jeu sont stockées:" } } } }, - "App Icon Preview": { - "comment": "A title for the preview section of the icon export view.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "App Icon Preview" + "App Icon Preview" : { + "comment" : "A title for the preview section of the icon export view.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "App Icon Preview" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Vista previa del icono" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vista previa del icono" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Aperçu de l'icône" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aperçu de l'icône" } } } }, - "Apple's iCloud terms and privacy policy apply to this data": { - "comment": "A note explaining that Apple's iCloud terms and privacy policy apply to the data that is synced across devices.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Apple's iCloud terms and privacy policy apply to this data" + "Apple's iCloud terms and privacy policy apply to this data" : { + "comment" : "A note explaining that Apple's iCloud terms and privacy policy apply to the data that is synced across devices.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apple's iCloud terms and privacy policy apply to this data" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Los términos y la política de privacidad de iCloud de Apple se aplican a estos datos" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Los términos y la política de privacidad de iCloud de Apple se aplican a estos datos" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Les conditions et la politique de confidentialité d'iCloud d'Apple s'appliquent à ces données" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les conditions et la politique de confidentialité d'iCloud d'Apple s'appliquent à ces données" } } } }, - "Balance": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Balance" + "Balance" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Balance" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Saldo" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Saldo" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Solde" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Solde" } } } }, - "Betting disabled": { - "comment": "A hint that appears when a betting zone is disabled.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Betting disabled" + "Betting disabled" : { + "comment" : "A hint that appears when a betting zone is disabled.", + "extractionState" : "stale", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Betting disabled" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Apuestas deshabilitadas" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apuestas deshabilitadas" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Mises désactivées" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mises désactivées" } } } }, - "Card face down": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Card face down" + "Card face down" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Card face down" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Carta boca abajo" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carta boca abajo" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Carte face cachée" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carte face cachée" } } } }, - "Casual": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Casual" + "Casual" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Casual" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Casual" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Casual" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Décontracté" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Décontracté" } } } }, - "Changes to This Policy": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Changes to This Policy" + "Changes to This Policy" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Changes to This Policy" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Cambios a esta política" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cambios a esta política" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Modifications de cette politique" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifications de cette politique" } } } }, - "Children's Privacy": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Children's Privacy" + "Children's Privacy" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Children's Privacy" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Privacidad de los niños" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacidad de los niños" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Confidentialité des enfants" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Confidentialité des enfants" } } } }, - "Chip selector": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Chip selector" + "Chip selector" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chip selector" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Selector de fichas" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selector de fichas" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Sélecteur de jetons" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélecteur de jetons" } } } }, - "Clubs": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Clubs" + "Clubs" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clubs" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Tréboles" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tréboles" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Trèfles" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trèfles" } } } }, - "Contact Us": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Contact Us" + "Contact Us" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contact Us" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Contáctanos" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contáctanos" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Contactez-nous" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contactez-nous" } } } }, - "Data Storage": { - "comment": "Title of a section in the Privacy Policy View that discusses how game data is stored.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Data Storage" + "Data Storage" : { + "comment" : "Title of a section in the Privacy Policy View that discusses how game data is stored.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Data Storage" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Almacenamiento de datos" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Almacenamiento de datos" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Stockage des données" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stockage des données" } } } }, - "Dealing Speed": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Dealing Speed" + "Dealing Speed" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dealing Speed" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Velocidad de reparto" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Velocidad de reparto" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Vitesse de distribution" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vitesse de distribution" } } } }, - "Diamonds": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Diamonds" + "Diamonds" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Diamonds" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Diamantes" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Diamantes" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Carreaux" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Carreaux" } } } }, - "Done": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Done" + "Done" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Done" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Listo" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Listo" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Terminé" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Terminé" } } } }, - "Double tap a chip to select bet amount": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Double tap a chip to select bet amount" + "Double tap a chip to select bet amount" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Double tap a chip to select bet amount" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Toca dos veces una ficha para seleccionar la cantidad de apuesta" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toca dos veces una ficha para seleccionar la cantidad de apuesta" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Appuyez deux fois sur un jeton pour sélectionner le montant de la mise" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appuyez deux fois sur un jeton pour sélectionner le montant de la mise" } } } }, - "Double tap to place bet": { - "comment": "A hint text describing the action to take in the betting zone.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Double tap to place bet" + "Double tap to place bet" : { + "comment" : "A hint text describing the action to take in the betting zone.", + "extractionState" : "stale", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Double tap to place bet" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Toca dos veces para apostar" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toca dos veces para apostar" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Appuyez deux fois pour miser" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Appuyez deux fois pour miser" } } } }, - "Eight": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Eight" + "Eight" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eight" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Ocho" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ocho" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Huit" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Huit" } } } }, - "Empty card slot": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Empty card slot" + "Empty card slot" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Empty card slot" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Espacio de carta vacío" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Espacio de carta vacío" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Emplacement de carte vide" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Emplacement de carte vide" } } } }, - "Exclusive VIP room": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Exclusive VIP room" + "Exclusive VIP room" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exclusive VIP room" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Sala VIP exclusiva" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sala VIP exclusiva" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Salle VIP exclusive" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Salle VIP exclusive" } } } }, - "Export Instructions": { - "comment": "A section header describing how to export app icons.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Export Instructions" + "Export Instructions" : { + "comment" : "A section header describing how to export app icons.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Export Instructions" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Instrucciones de exportación" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instrucciones de exportación" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Instructions d'exportation" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instructions d'exportation" } } } }, - "Five": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Five" + "Five" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Five" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Cinco" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cinco" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Cinq" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cinq" } } } }, - "Four": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Four" + "Four" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Four" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Cuatro" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cuatro" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Quatre" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quatre" } } } }, - "Game Over": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Game Over" + "Game Over" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Game Over" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Fin del juego" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fin del juego" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Fin de partie" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fin de partie" } } } }, - "GAME OVER": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "GAME OVER" + "GAME OVER" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "GAME OVER" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "FIN DEL JUEGO" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "FIN DEL JUEGO" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "FIN DE PARTIE" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "FIN DE PARTIE" } } } }, - "Game progress and statistics are stored locally on your device": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Game progress and statistics are stored locally on your device" + "Game progress and statistics are stored locally on your device" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Game progress and statistics are stored locally on your device" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "El progreso del juego y las estadísticas se almacenan localmente en tu dispositivo" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "El progreso del juego y las estadísticas se almacenan localmente en tu dispositivo" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "La progression du jeu et les statistiques sont stockées localement sur votre appareil" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "La progression du jeu et les statistiques sont stockées localement sur votre appareil" } } } }, - "Hearts": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Hearts" + "Hearts" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hearts" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Corazones" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Corazones" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Cœurs" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cœurs" } } } }, - "High roller table": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "High roller table" + "High roller table" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "High roller table" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Mesa para grandes apostadores" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mesa para grandes apostadores" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Table pour gros joueurs" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Table pour gros joueurs" } } } }, - "High Stakes": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "High Stakes" + "High Stakes" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "High Stakes" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Apuestas altas" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apuestas altas" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Grosses mises" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grosses mises" } } } }, - "iCloud Sync": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "iCloud Sync" + "iCloud Sync" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud Sync" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Sincronización iCloud" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sincronización iCloud" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Synchronisation iCloud" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronisation iCloud" } } } }, - "If you choose to enable iCloud sync:": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "If you choose to enable iCloud sync:" + "If you choose to enable iCloud sync:" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you choose to enable iCloud sync:" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Si eliges activar la sincronización de iCloud:" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si eliges activar la sincronización de iCloud:" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Si vous choisissez d'activer la synchronisation iCloud:" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous choisissez d'activer la synchronisation iCloud:" } } } }, - "If you enable iCloud sync, your game data is stored in your personal iCloud account": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "If you enable iCloud sync, your game data is stored in your personal iCloud account" + "If you enable iCloud sync, your game data is stored in your personal iCloud account" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you enable iCloud sync, your game data is stored in your personal iCloud account" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Si activas la sincronización de iCloud, los datos del juego se almacenan en tu cuenta personal de iCloud" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si activas la sincronización de iCloud, los datos del juego se almacenan en tu cuenta personal de iCloud" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Si vous activez la synchronisation iCloud, vos données de jeu sont stockées dans votre compte iCloud personnel" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous activez la synchronisation iCloud, vos données de jeu sont stockées dans votre compte iCloud personnel" } } } }, - "If you have questions about this Privacy Policy, please contact us at:": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "If you have questions about this Privacy Policy, please contact us at:" + "If you have questions about this Privacy Policy, please contact us at:" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If you have questions about this Privacy Policy, please contact us at:" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Si tienes preguntas sobre esta Política de Privacidad, contáctanos en:" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si tienes preguntas sobre esta Política de Privacidad, contáctanos en:" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Si vous avez des questions concernant cette Politique de confidentialité, veuillez nous contacter à:" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si vous avez des questions concernant cette Politique de confidentialité, veuillez nous contacter à:" } } } }, - "In your iCloud account if you enable sync": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "In your iCloud account if you enable sync" + "In your iCloud account if you enable sync" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "In your iCloud account if you enable sync" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "En tu cuenta de iCloud si activas la sincronización" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "En tu cuenta de iCloud si activas la sincronización" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Dans votre compte iCloud si vous activez la synchronisation" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dans votre compte iCloud si vous activez la synchronisation" } } } }, - "Information We Collect": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Information We Collect" + "Information We Collect" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Information We Collect" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Información que recopilamos" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Información que recopilamos" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Informations que nous collectons" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Informations que nous collectons" } } } }, - "Introduction": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Introduction" + "Introduction" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduction" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Introducción" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introducción" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Introduction" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduction" } } } }, - "Jack": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Jack" + "Jack" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jack" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Jota" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jota" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Valet" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Valet" } } } }, - "King": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "King" + "King" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "King" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Rey" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rey" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Roi" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Roi" } } } }, - "Last updated: %@": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Last updated: %@" + "Last updated: %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Last updated: %@" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Última actualización: %@" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Última actualización: %@" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Dernière mise à jour: %@" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dernière mise à jour: %@" } } } }, - "Locally on your device using iOS standard storage": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Locally on your device using iOS standard storage" + "Locally on your device using iOS standard storage" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Locally on your device using iOS standard storage" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Localmente en tu dispositivo usando el almacenamiento estándar de iOS" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Localmente en tu dispositivo usando el almacenamiento estándar de iOS" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Localement sur votre appareil en utilisant le stockage standard iOS" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Localement sur votre appareil en utilisant le stockage standard iOS" } } } }, - "Low Stakes": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Low Stakes" + "Low Stakes" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Low Stakes" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Apuestas bajas" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apuestas bajas" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Petites mises" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Petites mises" } } } }, - "MAX": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "MAX" + "MAX" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "MAX" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "MÁX" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "MÁX" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "MAX" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "MAX" } } } }, - "maximum bet": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "maximum bet" + "maximum bet" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "maximum bet" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "apuesta máxima" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "apuesta máxima" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "mise maximale" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "mise maximale" } } } }, - "Medium Stakes": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Medium Stakes" + "Medium Stakes" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Medium Stakes" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Apuestas medias" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apuestas medias" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Mises moyennes" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mises moyennes" } } } }, - "Nine": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Nine" + "Nine" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nine" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Nueve" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nueve" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Neuf" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Neuf" } } } }, - "No bet": { - "comment": "A description of a zone with no active bet.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No bet" + "No bet" : { + "comment" : "A description of a zone with no active bet.", + "extractionState" : "stale", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No bet" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Sin apuesta" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sin apuesta" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Pas de mise" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pas de mise" } } } }, - "Our apps do not integrate with third-party services that collect user data. We do not share any information with third parties.": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Our apps do not integrate with third-party services that collect user data. We do not share any information with third parties." + "Our apps do not integrate with third-party services that collect user data. We do not share any information with third parties." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Our apps do not integrate with third-party services that collect user data. We do not share any information with third parties." } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Nuestras aplicaciones no se integran con servicios de terceros que recopilan datos de usuarios. No compartimos ninguna información con terceros." + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nuestras aplicaciones no se integran con servicios de terceros que recopilan datos de usuarios. No compartimos ninguna información con terceros." } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Nos applications ne s'intègrent pas avec des services tiers qui collectent des données utilisateur. Nous ne partageons aucune information avec des tiers." + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nos applications ne s'intègrent pas avec des services tiers qui collectent des données utilisateur. Nous ne partageons aucune information avec des tiers." } } } }, - "Our games are designed to work offline and we collect minimal data:": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Our games are designed to work offline and we collect minimal data:" + "Our games are designed to work offline and we collect minimal data:" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Our games are designed to work offline and we collect minimal data:" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Nuestros juegos están diseñados para funcionar sin conexión y recopilamos datos mínimos:" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nuestros juegos están diseñados para funcionar sin conexión y recopilamos datos mínimos:" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Nos jeux sont conçus pour fonctionner hors ligne et nous collectons un minimum de données:" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nos jeux sont conçus pour fonctionner hors ligne et nous collectons un minimum de données:" } } } }, - "Our games are simulated casino games for entertainment only. No real money gambling is involved. We do not knowingly collect information from children under 13.": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Our games are simulated casino games for entertainment only. No real money gambling is involved. We do not knowingly collect information from children under 13." + "Our games are simulated casino games for entertainment only. No real money gambling is involved. We do not knowingly collect information from children under 13." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Our games are simulated casino games for entertainment only. No real money gambling is involved. We do not knowingly collect information from children under 13." } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Nuestros juegos son juegos de casino simulados solo para entretenimiento. No hay apuestas con dinero real. No recopilamos intencionalmente información de niños menores de 13 años." + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nuestros juegos son juegos de casino simulados solo para entretenimiento. No hay apuestas con dinero real. No recopilamos intencionalmente información de niños menores de 13 años." } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Nos jeux sont des jeux de casino simulés uniquement pour le divertissement. Aucun jeu d'argent réel n'est impliqué. Nous ne collectons pas sciemment d'informations auprès d'enfants de moins de 13 ans." + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nos jeux sont des jeux de casino simulés uniquement pour le divertissement. Aucun jeu d'argent réel n'est impliqué. Nous ne collectons pas sciemment d'informations auprès d'enfants de moins de 13 ans." } } } }, - "Perfect for learning": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Perfect for learning" + "Perfect for learning" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Perfect for learning" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Perfecto para aprender" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Perfecto para aprender" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Parfait pour apprendre" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Parfait pour apprendre" } } } }, - "Play Again": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Play Again" + "Play Again" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Play Again" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Jugar de nuevo" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jugar de nuevo" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Rejouer" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rejouer" } } } }, - "Privacy Policy": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Privacy Policy" + "Privacy Policy" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Policy" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Política de privacidad" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Política de privacidad" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Politique de confidentialité" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Politique de confidentialité" } } } }, - "Queen": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Queen" + "Queen" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Queen" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Reina" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reina" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Dame" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dame" } } } }, - "Regular casino table": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Regular casino table" + "Regular casino table" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Regular casino table" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Mesa de casino regular" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mesa de casino regular" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Table de casino standard" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Table de casino standard" } } } }, - "Reset Game": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Reset Game" + "Reset Game" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset Game" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Reiniciar juego" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reiniciar juego" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Réinitialiser" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser" } } } }, - "Rounds Played": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Rounds Played" + "Rounds Played" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rounds Played" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Rondas jugadas" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rondas jugadas" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Parties jouées" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Parties jouées" } } } }, - "Rules": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Rules" + "Rules" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rules" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Reglas" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reglas" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Règles" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Règles" } } } }, - "Selected": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Selected" + "Selected" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selected" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Seleccionado" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleccionado" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Sélectionné" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionné" } } } }, - "Settings": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Settings" + "Settings" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Settings" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Configuración" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuración" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Paramètres" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramètres" } } } }, - "Seven": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Seven" + "Seven" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seven" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Siete" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Siete" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Sept" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sept" } } } }, - "Six": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Six" + "Six" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Six" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Seis" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seis" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Six" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Six" } } } }, - "Size Variants": { - "comment": "A heading for the different sizes of the app icon previews.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Size Variants" + "Size Variants" : { + "comment" : "A heading for the different sizes of the app icon previews.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Size Variants" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Variantes de tamaño" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Variantes de tamaño" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Variantes de taille" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Variantes de taille" } } } }, - "Spades": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Spades" + "Spades" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Spades" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Picas" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Picas" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Piques" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Piques" } } } }, - "Standard mini table": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Standard mini table" + "Standard mini table" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Standard mini table" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Mesa mini estándar" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mesa mini estándar" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Table mini standard" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Table mini standard" } } } }, - "Statistics": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Statistics" + "Statistics" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Statistics" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Estadísticas" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Estadísticas" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Statistiques" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Statistiques" } } } }, - "Ten": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Ten" + "Ten" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ten" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Diez" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Diez" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Dix" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dix" } } } }, - "Third-Party Services": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Third-Party Services" + "Third-Party Services" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Third-Party Services" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Servicios de terceros" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Servicios de terceros" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Services tiers" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Services tiers" } } } }, - "This data is stored in your personal iCloud account, not on our servers": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "This data is stored in your personal iCloud account, not on our servers" + "This data is stored in your personal iCloud account, not on our servers" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "This data is stored in your personal iCloud account, not on our servers" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Estos datos se almacenan en tu cuenta personal de iCloud, no en nuestros servidores" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Estos datos se almacenan en tu cuenta personal de iCloud, no en nuestros servidores" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Ces données sont stockées dans votre compte iCloud personnel, pas sur nos serveurs" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ces données sont stockées dans votre compte iCloud personnel, pas sur nos serveurs" } } } }, - "Three": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Three" + "Three" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Three" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Tres" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tres" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Trois" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trois" } } } }, - "Two": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Two" + "Two" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Two" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Dos" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dos" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Deux" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deux" } } } }, - "VIP": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "VIP" + "VIP" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "VIP" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "VIP" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "VIP" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "VIP" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "VIP" } } } }, - "Volume": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Volume" + "Volume" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volume" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Volumen" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volumen" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Volume" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volume" } } } }, - "We do not collect personal information such as your name, email, or location": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "We do not collect personal information such as your name, email, or location" + "We do not collect personal information such as your name, email, or location" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We do not collect personal information such as your name, email, or location" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "No recopilamos información personal como tu nombre, correo electrónico o ubicación" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "No recopilamos información personal como tu nombre, correo electrónico o ubicación" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Nous ne collectons pas d'informations personnelles telles que votre nom, email ou emplacement" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous ne collectons pas d'informations personnelles telles que votre nom, email ou emplacement" } } } }, - "We do not display advertisements": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "We do not display advertisements" + "We do not display advertisements" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We do not display advertisements" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "No mostramos anuncios" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "No mostramos anuncios" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Nous n'affichons pas de publicités" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous n'affichons pas de publicités" } } } }, - "We do not use analytics or tracking services": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "We do not use analytics or tracking services" + "We do not use analytics or tracking services" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We do not use analytics or tracking services" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "No usamos servicios de análisis ni de seguimiento" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "No usamos servicios de análisis ni de seguimiento" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Nous n'utilisons pas de services d'analyse ou de suivi" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous n'utilisons pas de services d'analyse ou de suivi" } } } }, - "We have no access to your game data": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "We have no access to your game data" + "We have no access to your game data" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We have no access to your game data" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "No tenemos acceso a los datos de tu juego" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "No tenemos acceso a los datos de tu juego" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Nous n'avons pas accès à vos données de jeu" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous n'avons pas accès à vos données de jeu" } } } }, - "We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new policy in the app and updating the \"Last updated\" date.": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new policy in the app and updating the \"Last updated\" date." + "We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new policy in the app and updating the \"Last updated\" date." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new policy in the app and updating the \"Last updated\" date." } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Podemos actualizar esta Política de Privacidad de vez en cuando. Te notificaremos de cualquier cambio publicando la nueva política en la aplicación y actualizando la fecha de \"Última actualización\"." + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Podemos actualizar esta Política de Privacidad de vez en cuando. Te notificaremos de cualquier cambio publicando la nueva política en la aplicación y actualizando la fecha de \"Última actualización\"." } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Nous pouvons mettre à jour cette Politique de confidentialité de temps en temps. Nous vous informerons de tout changement en publiant la nouvelle politique dans l'application et en mettant à jour la date de « Dernière mise à jour »." + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous pouvons mettre à jour cette Politique de confidentialité de temps en temps. Nous vous informerons de tout changement en publiant la nouvelle politique dans l'application et en mettant à jour la date de « Dernière mise à jour »." } } } }, - "WIN": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "WIN" + "WIN" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "WIN" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "GANÓ" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "GANÓ" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "GAGNÉ" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "GAGNÉ" } } } }, - "You can disable iCloud sync at any time in the app settings": { - "comment": "Text in the Privacy Policy View explaining how to disable iCloud sync in the app settings.", - "isCommentAutoGenerated": true, - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "You can disable iCloud sync at any time in the app settings" + "You can disable iCloud sync at any time in the app settings" : { + "comment" : "Text in the Privacy Policy View explaining how to disable iCloud sync in the app settings.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You can disable iCloud sync at any time in the app settings" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Puedes desactivar la sincronización de iCloud en cualquier momento en la configuración de la aplicación" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Puedes desactivar la sincronización de iCloud en cualquier momento en la configuración de la aplicación" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Vous pouvez désactiver la synchronisation iCloud à tout moment dans les paramètres de l'application" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous pouvez désactiver la synchronisation iCloud à tout moment dans les paramètres de l'application" } } } }, - "You've run out of chips!": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "You've run out of chips!" + "You've run out of chips!" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You've run out of chips!" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "¡Te quedaste sin fichas!" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "¡Te quedaste sin fichas!" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Vous n'avez plus de jetons!" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous n'avez plus de jetons!" } } } }, - "Your game progress syncs across your devices using your Apple ID": { - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Your game progress syncs across your devices using your Apple ID" + "Your game progress syncs across your devices using your Apple ID" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your game progress syncs across your devices using your Apple ID" } }, - "es-MX": { - "stringUnit": { - "state": "translated", - "value": "Tu progreso del juego se sincroniza entre tus dispositivos usando tu Apple ID" + "es-MX" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tu progreso del juego se sincroniza entre tus dispositivos usando tu Apple ID" } }, - "fr-CA": { - "stringUnit": { - "state": "translated", - "value": "Votre progression de jeu se synchronise entre vos appareils en utilisant votre identifiant Apple" + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre progression de jeu se synchronise entre vos appareils en utilisant votre identifiant Apple" } } } } }, - "version": "1.1" + "version" : "1.1" } \ No newline at end of file diff --git a/CasinoKit/Sources/CasinoKit/Views/Zones/BettingZone.swift b/CasinoKit/Sources/CasinoKit/Views/Zones/BettingZone.swift deleted file mode 100644 index d61ce3f..0000000 --- a/CasinoKit/Sources/CasinoKit/Views/Zones/BettingZone.swift +++ /dev/null @@ -1,168 +0,0 @@ -// -// BettingZone.swift -// CasinoKit -// -// A reusable betting zone for casino table layouts. -// - -import SwiftUI - -/// A tappable betting zone with label and chip display. -public struct BettingZone: View { - /// The zone label (e.g., "PLAYER", "TIE", "INSURANCE"). - public let label: String - - /// Optional payout info (e.g., "1:1", "8:1"). - public let payoutInfo: String? - - /// Current bet amount (0 if no bet). - public let betAmount: Int - - /// Whether the zone is enabled for betting. - public let isEnabled: Bool - - /// Action when the zone is tapped. - public let onTap: () -> Void - - /// Background color for the zone. - public let backgroundColor: Color - - /// Text color. - public let textColor: Color - - // Layout - @ScaledMetric(relativeTo: .headline) private var labelFontSize: CGFloat = 16 - @ScaledMetric(relativeTo: .caption) private var payoutFontSize: CGFloat = 12 - - /// Creates a betting zone. - public init( - label: String, - payoutInfo: String? = nil, - betAmount: Int = 0, - isEnabled: Bool = true, - backgroundColor: Color = .blue.opacity(0.2), - textColor: Color = .white, - onTap: @escaping () -> Void - ) { - self.label = label - self.payoutInfo = payoutInfo - self.betAmount = betAmount - self.isEnabled = isEnabled - self.backgroundColor = backgroundColor - self.textColor = textColor - self.onTap = onTap - } - - public var body: some View { - Button(action: onTap) { - ZStack { - // Background - RoundedRectangle(cornerRadius: CasinoDesign.CornerRadius.medium) - .fill(backgroundColor) - .overlay( - RoundedRectangle(cornerRadius: CasinoDesign.CornerRadius.medium) - .strokeBorder( - textColor.opacity(CasinoDesign.Opacity.light), - lineWidth: CasinoDesign.LineWidth.thin - ) - ) - - // Content - VStack(spacing: CasinoDesign.Spacing.xxSmall) { - Text(label) - .font(.system(size: labelFontSize, weight: .bold)) - .foregroundStyle(textColor) - - if let payout = payoutInfo { - Text(payout) - .font(.system(size: payoutFontSize, weight: .medium)) - .foregroundStyle(textColor.opacity(CasinoDesign.Opacity.medium)) - } - } - - // Chip badge for bet amount - if betAmount > 0 { - ChipBadge(amount: betAmount) - .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topTrailing) - .padding(CasinoDesign.Spacing.xSmall) - } - } - } - .buttonStyle(.plain) - .disabled(!isEnabled) - .accessibilityLabel(label) - .accessibilityValue(betAmount > 0 ? "$\(betAmount) bet" : "No bet") - .accessibilityHint(isEnabled ? "Double tap to place bet" : "Betting disabled") - } -} - -/// A small chip badge showing bet amount. -public struct ChipBadge: View { - public let amount: Int - - private let badgeSize: CGFloat = 28 - private let fontSize: CGFloat = 10 - - public init(amount: Int) { - self.amount = amount - } - - public var body: some View { - ZStack { - Circle() - .fill(Color.yellow) - .frame(width: badgeSize, height: badgeSize) - - Circle() - .strokeBorder(Color.orange, lineWidth: 2) - .frame(width: badgeSize - 4, height: badgeSize - 4) - - Text(formattedAmount) - .font(.system(size: fontSize, weight: .bold)) - .foregroundStyle(.black) - .minimumScaleFactor(0.5) - } - } - - private var formattedAmount: String { - if amount >= 1_000_000 { - return "\(amount / 1_000_000)M" - } else if amount >= 1_000 { - return "\(amount / 1_000)K" - } - return "\(amount)" - } -} - -#Preview { - ZStack { - Color.CasinoTable.felt.ignoresSafeArea() - - HStack(spacing: 20) { - BettingZone( - label: "PLAYER", - payoutInfo: "1:1", - betAmount: 0, - backgroundColor: .blue.opacity(0.2) - ) { } - .frame(width: 120, height: 80) - - BettingZone( - label: "TIE", - payoutInfo: "8:1", - betAmount: 500, - backgroundColor: .green.opacity(0.2) - ) { } - .frame(width: 80, height: 80) - - BettingZone( - label: "BANKER", - payoutInfo: "0.95:1", - betAmount: 2500, - backgroundColor: .red.opacity(0.2) - ) { } - .frame(width: 120, height: 80) - } - } -} -