From 13b01189023d5a7e8246d59aa6b2c4d0f6503a2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Thu, 27 Aug 2026 16:56:40 +0200 Subject: [PATCH 1/7] feat(mobile): offer Google Play Kilo Pass purchase --- .../kilo-pass/kilo-pass-native-iap-owner.tsx | 121 ++++++++++--- .../kilo-pass/kilo-pass-play-manage.test.ts | 55 ++++++ .../kilo-pass/kilo-pass-play-manage.ts | 26 +++ .../kilo-pass/kilo-pass-subscription-card.tsx | 51 +++++- .../kilo-pass-subscription-screen.test.ts | 58 +++++- .../kilo-pass-subscription-screen.tsx | 59 ++++-- apps/mobile/src/i18n/locales/af.json | 2 - apps/mobile/src/i18n/locales/am.json | 2 - apps/mobile/src/i18n/locales/ar.json | 2 - apps/mobile/src/i18n/locales/az.json | 2 - apps/mobile/src/i18n/locales/be.json | 2 - apps/mobile/src/i18n/locales/bg.json | 2 - apps/mobile/src/i18n/locales/bn.json | 2 - apps/mobile/src/i18n/locales/bs.json | 2 - apps/mobile/src/i18n/locales/ca.json | 2 - apps/mobile/src/i18n/locales/ckb.json | 2 - apps/mobile/src/i18n/locales/cs.json | 2 - apps/mobile/src/i18n/locales/cy.json | 2 - apps/mobile/src/i18n/locales/da.json | 2 - apps/mobile/src/i18n/locales/de.json | 2 - apps/mobile/src/i18n/locales/el.json | 2 - apps/mobile/src/i18n/locales/en.json | 17 +- apps/mobile/src/i18n/locales/es.json | 2 - apps/mobile/src/i18n/locales/et.json | 2 - apps/mobile/src/i18n/locales/eu.json | 2 - apps/mobile/src/i18n/locales/fa.json | 2 - apps/mobile/src/i18n/locales/fi.json | 2 - apps/mobile/src/i18n/locales/fil.json | 2 - apps/mobile/src/i18n/locales/fr.json | 2 - apps/mobile/src/i18n/locales/ga.json | 2 - apps/mobile/src/i18n/locales/gl.json | 2 - apps/mobile/src/i18n/locales/gu.json | 2 - apps/mobile/src/i18n/locales/ha.json | 2 - apps/mobile/src/i18n/locales/he.json | 2 - apps/mobile/src/i18n/locales/hi.json | 2 - apps/mobile/src/i18n/locales/hr.json | 2 - apps/mobile/src/i18n/locales/ht.json | 2 - apps/mobile/src/i18n/locales/hu.json | 2 - apps/mobile/src/i18n/locales/hy.json | 2 - apps/mobile/src/i18n/locales/id.json | 2 - apps/mobile/src/i18n/locales/ig.json | 2 - apps/mobile/src/i18n/locales/is.json | 2 - apps/mobile/src/i18n/locales/it.json | 2 - apps/mobile/src/i18n/locales/ja.json | 2 - apps/mobile/src/i18n/locales/ka.json | 2 - apps/mobile/src/i18n/locales/kk.json | 2 - apps/mobile/src/i18n/locales/km.json | 2 - apps/mobile/src/i18n/locales/kn.json | 2 - apps/mobile/src/i18n/locales/ko.json | 2 - apps/mobile/src/i18n/locales/lo.json | 2 - apps/mobile/src/i18n/locales/lt.json | 2 - apps/mobile/src/i18n/locales/lv.json | 2 - apps/mobile/src/i18n/locales/mg.json | 2 - apps/mobile/src/i18n/locales/mi.json | 2 - apps/mobile/src/i18n/locales/mk.json | 2 - apps/mobile/src/i18n/locales/ml.json | 2 - apps/mobile/src/i18n/locales/mn.json | 2 - apps/mobile/src/i18n/locales/mr.json | 2 - apps/mobile/src/i18n/locales/ms.json | 2 - apps/mobile/src/i18n/locales/mt.json | 2 - apps/mobile/src/i18n/locales/my.json | 2 - apps/mobile/src/i18n/locales/nb.json | 2 - apps/mobile/src/i18n/locales/ne.json | 2 - apps/mobile/src/i18n/locales/nl.json | 2 - apps/mobile/src/i18n/locales/om.json | 2 - apps/mobile/src/i18n/locales/or.json | 2 - apps/mobile/src/i18n/locales/pa.json | 2 - apps/mobile/src/i18n/locales/pl.json | 2 - apps/mobile/src/i18n/locales/ps.json | 2 - apps/mobile/src/i18n/locales/pt-BR.json | 2 - apps/mobile/src/i18n/locales/pt.json | 2 - apps/mobile/src/i18n/locales/ro.json | 2 - apps/mobile/src/i18n/locales/ru.json | 2 - apps/mobile/src/i18n/locales/si.json | 2 - apps/mobile/src/i18n/locales/sk.json | 2 - apps/mobile/src/i18n/locales/sl.json | 2 - apps/mobile/src/i18n/locales/so.json | 2 - apps/mobile/src/i18n/locales/sq.json | 2 - apps/mobile/src/i18n/locales/sr.json | 2 - apps/mobile/src/i18n/locales/sv.json | 2 - apps/mobile/src/i18n/locales/sw.json | 2 - apps/mobile/src/i18n/locales/ta.json | 2 - apps/mobile/src/i18n/locales/te.json | 2 - apps/mobile/src/i18n/locales/th.json | 2 - apps/mobile/src/i18n/locales/tr.json | 2 - apps/mobile/src/i18n/locales/uk.json | 2 - apps/mobile/src/i18n/locales/ur.json | 2 - apps/mobile/src/i18n/locales/uz.json | 2 - apps/mobile/src/i18n/locales/vi.json | 2 - apps/mobile/src/i18n/locales/yo.json | 2 - apps/mobile/src/i18n/locales/zh-Hans.json | 2 - apps/mobile/src/i18n/locales/zh-Hant.json | 2 - apps/mobile/src/i18n/locales/zu.json | 2 - .../src/lib/kilo-pass/legal-links.test.ts | 10 +- apps/mobile/src/lib/kilo-pass/legal-links.ts | 6 +- .../kilo-pass/store-products-loader.test.ts | 38 ++++ .../lib/kilo-pass/store-products-loader.ts | 15 +- .../src/lib/kilo-pass/store-products.test.ts | 39 ++++ .../src/lib/kilo-pass/store-products.ts | 7 +- .../subscription-card-content-state.test.ts | 65 +++++-- ...scription-card-ownership-preflight.test.ts | 25 +++ .../kilo-pass/subscription-card-state.test.ts | 77 +++++--- .../lib/kilo-pass/subscription-card-state.ts | 70 ++++++-- .../kilo-pass/use-store-kilo-pass-products.ts | 25 ++- .../use-store-kilo-pass-purchase.test.tsx | 168 ++++++++++++++++++ .../kilo-pass/use-store-kilo-pass-purchase.ts | 121 +++++++++++-- .../src/commerce/purchase-presentation.ts | 15 -- 107 files changed, 917 insertions(+), 323 deletions(-) create mode 100644 apps/mobile/src/components/kilo-pass/kilo-pass-play-manage.test.ts create mode 100644 apps/mobile/src/components/kilo-pass/kilo-pass-play-manage.ts diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx index e46b0d3996..beba637e1a 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx @@ -16,6 +16,7 @@ import { fetchProducts as fetchIapProducts, getAvailablePurchases as getAvailableIapPurchases, type ProductOrSubscription, + type ProductSubscription, useIAP, } from 'expo-iap'; @@ -41,6 +42,18 @@ import { } from '@/lib/kilo-pass/use-store-kilo-pass-purchase'; import { useTRPC } from '@/lib/trpc'; +const isIapPlatform = Platform.OS === 'ios' || Platform.OS === 'android'; +const isAndroid = Platform.OS === 'android'; + +function getSubscriptionOfferToken(product: ProductSubscription): string | undefined { + if (product.platform !== 'android') { + return undefined; + } + const offers = product.subscriptionOffers; + const monthly = offers.find(offer => offer.basePlanIdAndroid === 'monthly-v1'); + return (monthly ?? offers[0])?.offerTokenAndroid ?? undefined; +} + function toStoreKiloPassProduct(product: ProductOrSubscription): StoreKiloPassProduct | null { if (product.type !== 'subs') { return null; @@ -51,6 +64,7 @@ function toStoreKiloPassProduct(product: ProductOrSubscription): StoreKiloPassPr displayPrice: product.displayPrice, title: product.title, description: product.description, + offerToken: getSubscriptionOfferToken(product), }; } @@ -90,13 +104,17 @@ export type KiloPassNativeIapContextValue = { isRestoringPurchases: boolean; errorMessage: string | null; clearError: () => void; - /** True when the App Store account already owns a pass on another Kilo account. */ + /** True when the store account already owns a pass on another Kilo account. */ ownedByAnotherAccount: boolean; /** Apple product ID of a Kilo Pass this device already owns, if any. */ ownedAppleProductId: string | null; /** Original transaction ID of that owned purchase, for server-side preflight. */ ownedOriginalTransactionId: string | null; - /** False until StoreKit has answered once with what this device owns. */ + /** Google product ID of a Kilo Pass this device already owns, if any. */ + ownedGoogleProductId: string | null; + /** Play purchase token of that owned purchase, for server-side preflight. */ + ownedGooglePurchaseToken: string | null; + /** False until the store has answered once with what this device owns. */ ownershipChecked: boolean; }; @@ -113,8 +131,8 @@ export function useKiloPassNativeIap(): KiloPassNativeIapContextValue { /** * The single `useIAP` call site. Mounted only when the purchase presentation is - * `native_iap` on iOS, so Android never initializes StoreKit and there is never - * more than one IAP owner on the Kilo Pass route. + * `native_iap` on iOS or Android, so there is never more than one IAP owner on + * the Kilo Pass route. */ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { const trpc = useTRPC(); @@ -135,6 +153,7 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { const completeAppStorePurchase = useMutation( trpc.kiloPass.completeAppStorePurchase.mutationOptions() ); + const completePlayPurchase = useMutation(trpc.kiloPass.completePlayPurchase.mutationOptions()); const releasePurchaseRequest = useCallback(() => { activePurchaseRequestRef.current = null; @@ -155,13 +174,15 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { } }, onPurchaseSuccess: purchase => { - if (!isRecoverableKiloPassPurchase(purchase, enabledAppleProductIds)) { + if ( + !isRecoverableKiloPassPurchase(purchase, enabledAppleProductIds, enabledGoogleProductIds) + ) { releasePurchaseRequest(); return; } if (activePurchaseRequestRef.current?.sku !== purchase.productId) { - // StoreKit answered the in-flight request with a transaction for another + // The store answered the in-flight request with a transaction for another // SKU (an upgrade it refused re-delivers the current subscription), and no // purchase error follows. Release the request or the screen keeps its // "Completing purchase" state forever. The recovery effect below still @@ -191,7 +212,7 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { getAvailablePurchases: refreshAvailablePurchases, } = actionsRef; - // Server-backed fallback for the recovery SKU list: when the StoreKit fetch + // Server-backed fallback for the recovery SKU list: when the store fetch // fails or returns no products, recovery still needs the enabled product IDs // so charged-but-uncompleted transactions are completed instead of released. const serverProductsQuery = useQuery(trpc.kiloPass.getMobileStoreProducts.queryOptions()); @@ -205,21 +226,29 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { } return serverProductsQuery.data?.products.map(product => product.appleProductId) ?? []; }, [productsQuery.products, serverProductsQuery.data]); + const enabledGoogleProductIds = useMemo(() => { + if (productsQuery.products.length > 0) { + return productsQuery.products.map(product => product.googleProductId); + } + return serverProductsQuery.data?.products.map(product => product.googleProductId) ?? []; + }, [productsQuery.products, serverProductsQuery.data]); const ownedPurchase = useMemo(() => { - if (Platform.OS !== 'ios') { + if (!isIapPlatform) { return null; } return ( availablePurchases.find(purchase => - isRecoverableKiloPassPurchase(purchase, enabledAppleProductIds) + isRecoverableKiloPassPurchase(purchase, enabledAppleProductIds, enabledGoogleProductIds) ) ?? null ); - }, [availablePurchases, enabledAppleProductIds]); - const ownedAppleProductId = ownedPurchase?.productId ?? null; + }, [availablePurchases, enabledAppleProductIds, enabledGoogleProductIds]); + const ownedAppleProductId = isAndroid ? null : (ownedPurchase?.productId ?? null); + const ownedGoogleProductId = isAndroid ? (ownedPurchase?.productId ?? null) : null; const ownedOriginalTransactionId = (ownedPurchase as { originalTransactionIdentifierIOS?: string | null } | null) ?.originalTransactionIdentifierIOS ?? null; + const ownedGooglePurchaseToken = isAndroid ? (ownedPurchase?.purchaseToken ?? null) : null; const ownedByAnotherAccount = useMemo( () => @@ -227,9 +256,10 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { availablePurchases, currentAppAccountToken: serverProductsQuery.data?.appAccountToken, enabledAppleProductIds, + enabledGoogleProductIds, platformOS: Platform.OS, }) === 'owned-by-another-account', - [availablePurchases, enabledAppleProductIds, serverProductsQuery.data] + [availablePurchases, enabledAppleProductIds, enabledGoogleProductIds, serverProductsQuery.data] ); const invalidateAfterCompletion = useCallback(async () => { @@ -245,21 +275,30 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { const actions = useMemo( () => createAppStoreKiloPassPurchaseActions({ + storefront: isAndroid ? 'play' : 'app_store', requestPurchase, getAvailablePurchases: getAvailableIapPurchases, restorePurchases: restoreStorePurchases, completeAppStorePurchase: completeAppStorePurchase.mutateAsync, + completePlayPurchase: completePlayPurchase.mutateAsync, enabledAppleProductIds, + enabledGoogleProductIds, loadEnabledAppleProductIds: async () => { const result = await queryClient.fetchQuery( trpc.kiloPass.getMobileStoreProducts.queryOptions() ); return result.products.map(product => product.appleProductId); }, + loadEnabledGoogleProductIds: async () => { + const result = await queryClient.fetchQuery( + trpc.kiloPass.getMobileStoreProducts.queryOptions() + ); + return result.products.map(product => product.googleProductId); + }, finishTransaction, invalidateAfterCompletion, onPurchaseCompleted: () => { - // Completed is emitted server-side by completeAppStorePurchase — do not + // Completed is emitted server-side by the completion mutation — do not // re-add a client capture (double counting). setErrorMessage(null); const onCompleted = pendingPurchaseCompletedCallbackRef.current; @@ -276,7 +315,9 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { }), [ completeAppStorePurchase.mutateAsync, + completePlayPurchase.mutateAsync, enabledAppleProductIds, + enabledGoogleProductIds, finishTransaction, invalidateAfterCompletion, queryClient, @@ -288,11 +329,17 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { const startPurchase = useCallback( async (product: AppStoreKiloPassProduct, options: StoreKiloPassPurchaseOptions = {}) => { - if (activePurchaseRequestRef.current || completeAppStorePurchase.isPending) { + if ( + activePurchaseRequestRef.current || + completeAppStorePurchase.isPending || + completePlayPurchase.isPending + ) { return; } - activePurchaseRequestRef.current = { sku: product.appleProductId }; + activePurchaseRequestRef.current = { + sku: isAndroid ? product.googleProductId : product.appleProductId, + }; setIsRequestingPurchase(true); setErrorMessage(null); captureEvent(KILO_PASS_PURCHASE_STARTED_EVENT); @@ -306,14 +353,20 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { throw error; } }, - [actions, completeAppStorePurchase.isPending, releasePurchaseRequest] + [ + actions, + completeAppStorePurchase.isPending, + completePlayPurchase.isPending, + releasePurchaseRequest, + ] ); const restorePurchases = useCallback(async (): Promise => { if ( activePurchaseRequestRef.current || isRestoringPurchases || - completeAppStorePurchase.isPending + completeAppStorePurchase.isPending || + completePlayPurchase.isPending ) { return 'failed'; } @@ -325,14 +378,19 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { } finally { setIsRestoringPurchases(false); } - }, [actions, completeAppStorePurchase.isPending, isRestoringPurchases]); + }, [ + actions, + completeAppStorePurchase.isPending, + completePlayPurchase.isPending, + isRestoringPurchases, + ]); useEffect(() => { queryClient.removeQueries({ queryKey: ['kilo-pass', 'app-store-products'] }); }, [authEpoch, queryClient]); useEffect(() => { - if (Platform.OS !== 'ios') { + if (!isIapPlatform) { setOwnershipChecked(true); return; } @@ -344,7 +402,7 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { try { await refreshAvailablePurchases(); } finally { - // Purchases are only known after StoreKit answers. Until then the screen + // Purchases are only known after the store answers. Until then the screen // must not start a purchase: a device subscription owned by another Kilo // account would otherwise charge the user before any check can see it. setOwnershipChecked(true); @@ -353,7 +411,10 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { }, [connected, refreshAvailablePurchases]); useEffect(() => { - if (availablePurchases.length === 0 || enabledAppleProductIds.length === 0) { + if ( + availablePurchases.length === 0 || + (enabledAppleProductIds.length === 0 && enabledGoogleProductIds.length === 0) + ) { return; } @@ -385,7 +446,12 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { } })(); } - }, [actions, availablePurchases, enabledAppleProductIds.length]); + }, [ + actions, + availablePurchases, + enabledAppleProductIds.length, + enabledGoogleProductIds.length, + ]); const value = useMemo( () => ({ @@ -396,23 +462,32 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { productsRefetch: productsQuery.refetch, purchase: startPurchase, restorePurchases, - isPending: isRequestingPurchase || completeAppStorePurchase.isPending || isRestoringPurchases, + isPending: + isRequestingPurchase || + completeAppStorePurchase.isPending || + completePlayPurchase.isPending || + isRestoringPurchases, isRestoringPurchases, errorMessage, clearError, ownedByAnotherAccount, ownedAppleProductId, ownedOriginalTransactionId, + ownedGoogleProductId, + ownedGooglePurchaseToken, ownershipChecked, }), [ clearError, completeAppStorePurchase.isPending, + completePlayPurchase.isPending, errorMessage, isRequestingPurchase, isRestoringPurchases, ownedAppleProductId, ownedByAnotherAccount, + ownedGoogleProductId, + ownedGooglePurchaseToken, ownedOriginalTransactionId, ownershipChecked, productsQuery.errorMessage, diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-play-manage.test.ts b/apps/mobile/src/components/kilo-pass/kilo-pass-play-manage.test.ts new file mode 100644 index 0000000000..986be0bc06 --- /dev/null +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-play-manage.test.ts @@ -0,0 +1,55 @@ +import { toast } from 'sonner-native'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +import { openPlaySubscriptionManagement } from './kilo-pass-play-manage'; + +vi.mock('expo-iap', () => ({ + deepLinkToSubscriptions: vi.fn(), +})); + +vi.mock('sonner-native', () => ({ + toast: { error: vi.fn(), info: vi.fn(), success: vi.fn() }, +})); + +const { deepLinkToSubscriptions } = await import('expo-iap'); + +describe('openPlaySubscriptionManagement', () => { + beforeEach(() => { + vi.clearAllMocks(); + vi.useFakeTimers(); + }); + + afterEach(() => { + vi.useRealTimers(); + }); + + it('deep-links to Play subscription management and invalidates after', async () => { + const invalidateAfter = vi.fn().mockResolvedValue(undefined); + vi.mocked(deepLinkToSubscriptions).mockResolvedValue(undefined); + + await openPlaySubscriptionManagement({ + skuAndroid: 'kilopass_tier19', + invalidateAfter, + }); + + expect(deepLinkToSubscriptions).toHaveBeenCalledWith({ + skuAndroid: 'kilopass_tier19', + packageNameAndroid: 'com.kilocode.kiloapp', + }); + expect(invalidateAfter).toHaveBeenCalledTimes(1); + + vi.advanceTimersByTime(2000); + expect(invalidateAfter).toHaveBeenCalledTimes(2); + }); + + it('shows the Play management failure toast when the deeplink fails', async () => { + vi.mocked(deepLinkToSubscriptions).mockRejectedValue(new Error('deeplink failed')); + + await openPlaySubscriptionManagement({ + skuAndroid: 'kilopass_tier19', + invalidateAfter: vi.fn(), + }); + + expect(toast.error).toHaveBeenCalledWith('deeplink failed'); + }); +}); diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-play-manage.ts b/apps/mobile/src/components/kilo-pass/kilo-pass-play-manage.ts new file mode 100644 index 0000000000..66cae3d9a0 --- /dev/null +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-play-manage.ts @@ -0,0 +1,26 @@ +import { deepLinkToSubscriptions } from 'expo-iap'; +import { toast } from 'sonner-native'; + +import { i18n } from '@/i18n'; + +/** + * Android-only Google Play subscription management helper. Loaded lazily from + * an Android branch so iOS never reaches for the Play deeplink. + */ +export async function openPlaySubscriptionManagement(params: { + skuAndroid: string; + invalidateAfter: () => Promise | void; +}): Promise { + try { + await deepLinkToSubscriptions({ + skuAndroid: params.skuAndroid, + packageNameAndroid: 'com.kilocode.kiloapp', + }); + await params.invalidateAfter(); + setTimeout(() => { + void params.invalidateAfter(); + }, 2000); + } catch (error) { + toast.error(error instanceof Error ? error.message : i18n.t('kiloPass.manageFailedPlay')); + } +} diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-card.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-card.tsx index da507121ce..d25014a6e1 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-card.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-card.tsx @@ -1,6 +1,7 @@ import { type Href, useRouter } from 'expo-router'; import * as Haptics from 'expo-haptics'; -import { Linking, Platform, Pressable, View } from 'react-native'; +import { useEffect, useRef } from 'react'; +import { AppState, Linking, Platform, Pressable, View } from 'react-native'; import { useTranslation } from 'react-i18next'; import { useQuery, useQueryClient } from '@tanstack/react-query'; @@ -15,6 +16,12 @@ import { getKiloPassSubscriptionCardContentState, } from '@/lib/kilo-pass/subscription-card-state'; +const GOOGLE_PRODUCT_ID_BY_TIER = { + tier_19: 'kilopass_tier19', + tier_49: 'kilopass_tier49', + tier_199: 'kilopass_tier199', +} as const; + export function KiloPassSubscriptionCard() { const colors = useThemeColors(); const router = useRouter(); @@ -28,6 +35,7 @@ export function KiloPassSubscriptionCard() { platform, storefront, product: 'kilo_pass', + supportsNativePlayKiloPass: true, }) ); const stateQuery = useQuery(trpc.kiloPass.getState.queryOptions()); @@ -60,6 +68,31 @@ export function KiloPassSubscriptionCard() { queryClient.invalidateQueries(trpc.kiloPass.getCreditHistory.pathFilter()), ]); }; + + // Returning to the app may follow a store-management trip (App Store or Play); + // refetch both the presentation and state so the card reflects any change. + const refetchRef = useRef({ + presentation: presentationQuery.refetch, + state: stateQuery.refetch, + }); + useEffect(() => { + refetchRef.current = { + presentation: presentationQuery.refetch, + state: stateQuery.refetch, + }; + }, [presentationQuery.refetch, stateQuery.refetch]); + useEffect(() => { + const appStateSubscription = AppState.addEventListener('change', state => { + if (state === 'active') { + void refetchRef.current.presentation(); + void refetchRef.current.state(); + } + }); + return () => { + appStateSubscription.remove(); + }; + }, []); + const handlePress = () => { if (contentState.kind !== 'card') { return; @@ -79,7 +112,15 @@ export function KiloPassSubscriptionCard() { return; } if (cardState.action === 'open-store-management') { - if (Platform.OS !== 'ios') { + if (Platform.OS === 'android') { + const tier = subscription?.tier; + const skuAndroid = + (tier != null ? GOOGLE_PRODUCT_ID_BY_TIER[tier as keyof typeof GOOGLE_PRODUCT_ID_BY_TIER] : undefined) ?? + 'kilopass_tier19'; + void (async () => { + const { openPlaySubscriptionManagement } = await import('./kilo-pass-play-manage'); + await openPlaySubscriptionManagement({ skuAndroid, invalidateAfter: invalidateKiloPassState }); + })(); return; } void (async () => { @@ -176,10 +217,12 @@ export function KiloPassSubscriptionCard() { {contentState.kind === 'card' && contentState.state.action !== 'none' ? ( ({ ownedByAnotherAccount: false, ownedAppleProductId: null as string | null, ownedOriginalTransactionId: null as string | null, + ownedGoogleProductId: null as string | null, + ownedGooglePurchaseToken: null as string | null, ownershipChecked: true, }, routerPush: vi.fn(), @@ -109,7 +111,7 @@ vi.mock('@/lib/kilo-pass/legal-links', () => ({ { url: 'https://example.com/privacy', label: 'Privacy Policy' }, { url: 'https://example.com/terms', label: 'Terms of Use' }, ], - kiloPassLegalDisclosure: () => '', + kiloPassLegalDisclosure: (_platformOS: string) => '', })); vi.mock('@/lib/kilo-pass/navigation', () => ({ @@ -140,9 +142,6 @@ vi.mock('@/lib/utils', () => ({ vi.mock('@kilocode/app-shared/commerce', () => ({ KILO_PASS_MANAGE_CTA_LABEL: 'Manage', KILO_PASS_TITLE: 'Kilo Pass', - KILO_PASS_UNAVAILABLE_DESCRIPTION: - 'Kilo Pass is not available as an in-app purchase on Android. Manage it on the web.', - KILO_PASS_WEB_MANAGEMENT_DESCRIPTION: 'This Kilo Pass is managed on the web.', })); // The owner is the single `useIAP` call site (plan assumption 8). The mock @@ -246,6 +245,19 @@ function setNativeIapPresentation(): void { mocks.nativeIap.productsIsLoading = false; mocks.nativeIap.ownedAppleProductId = null; mocks.nativeIap.ownedOriginalTransactionId = null; + mocks.nativeIap.ownedGoogleProductId = null; + mocks.nativeIap.ownedGooglePurchaseToken = null; + mocks.nativeIap.ownershipChecked = true; +} + +function setAndroidNativeIapPresentation(): void { + mockedPlatform.OS = 'android'; + mocks.presentation.data = { kind: 'native_iap', webUrl: null }; + mocks.nativeIap.productsIsLoading = false; + mocks.nativeIap.ownedAppleProductId = null; + mocks.nativeIap.ownedOriginalTransactionId = null; + mocks.nativeIap.ownedGoogleProductId = null; + mocks.nativeIap.ownedGooglePurchaseToken = null; mocks.nativeIap.ownershipChecked = true; } @@ -270,6 +282,10 @@ describe('KiloPassSubscriptionScreen', () => { mocks.nativeIap.productsRefetch.mockReset(); mocks.nativeIap.purchase.mockReset(); mocks.nativeIap.ownedByAnotherAccount = false; + mocks.nativeIap.ownedAppleProductId = null; + mocks.nativeIap.ownedOriginalTransactionId = null; + mocks.nativeIap.ownedGoogleProductId = null; + mocks.nativeIap.ownedGooglePurchaseToken = null; mocks.routerPush.mockReset(); }); @@ -293,6 +309,7 @@ describe('KiloPassSubscriptionScreen', () => { platform: 'ios', storefront: 'app_store', product: 'kilo_pass', + supportsNativePlayKiloPass: true, appleProductId: product.appleProductId, appleOriginalTransactionId: null, }); @@ -331,6 +348,7 @@ describe('KiloPassSubscriptionScreen', () => { platform: 'ios', storefront: 'app_store', product: 'kilo_pass', + supportsNativePlayKiloPass: true, appleProductId: product.appleProductId, appleOriginalTransactionId: 'orig-123', }); @@ -427,9 +445,7 @@ describe('KiloPassSubscriptionScreen', () => { const renderer = await renderScreen(); - expect(allText(renderer)).toContain( - 'Kilo Pass is not available as an in-app purchase on Android. Manage it on the web.' - ); + expect(allText(renderer)).toContain('Kilo Pass purchase is not available right now.'); expect(productTiles(renderer)).toHaveLength(0); expect( renderer.root.findAll(node => String(node.type) === 'RestorePurchasesButton') @@ -448,7 +464,7 @@ describe('KiloPassSubscriptionScreen', () => { const renderer = await renderScreen(); - expect(allText(renderer)).toContain('This Kilo Pass is managed on the web.'); + expect(allText(renderer)).toContain('This Kilo Pass is managed on web'); expect(allText(renderer)).toContain('Manage'); expect(productTiles(renderer)).toHaveLength(0); expect(mocks.ownerMount).not.toHaveBeenCalled(); @@ -501,6 +517,32 @@ describe('KiloPassSubscriptionScreen', () => { renderer.unmount(); }); + it('mounts the IAP owner for native_iap on Android', async () => { + setAndroidNativeIapPresentation(); + mocks.nativeIap.products = []; + + const renderer = await renderScreen(); + + expect(mocks.ownerMount).toHaveBeenCalledTimes(1); + + renderer.unmount(); + }); + + it('renders the native IAP screen under the kilo-pass-native-iap testID', async () => { + setNativeIapPresentation(); + mocks.nativeIap.products = []; + + const renderer = await renderScreen(); + + expect( + renderer.root.findAll( + node => (node.props as { testID?: string }).testID === 'kilo-pass-native-iap' + ) + ).toHaveLength(1); + + renderer.unmount(); + }); + it('disables the product tiles while preflight is pending', async () => { setNativeIapPresentation(); mocks.nativeIap.products = [product]; diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx index 63a38db3bd..d3b555d059 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx @@ -27,6 +27,9 @@ import { KILO_PASS_TITLE, type PurchasePresentationKind } from '@kilocode/app-sh import { KiloPassNativeIapOwner, useKiloPassNativeIap } from './kilo-pass-native-iap-owner'; import { RestorePurchasesButton } from './restore-purchases-button'; +const isIapPlatform = Platform.OS === 'ios' || Platform.OS === 'android'; +const isAndroid = Platform.OS === 'android'; + type SubscriptionScreenFeedback = { type: 'success' | 'info' | 'error'; text: string }; /** @@ -105,7 +108,6 @@ function KiloPassPresentationErrorScreen({ onRetry }: { onRetry: () => void }) { /** * Rendered when the server presentation is not `native_iap`. Shows truthful * copy and, for `web_management`, a Manage action that opens the web URL. - * Never imports `expo-iap`, so Android never initializes Play Billing here. */ function KiloPassUnavailableScreen({ presentation, @@ -115,8 +117,8 @@ function KiloPassUnavailableScreen({ const { t } = useTranslation(); const isWebManagement = presentation.kind === 'web_management'; const description = isWebManagement - ? t('kiloPass.webManagementDescription') - : t('kiloPass.unavailableDescription'); + ? t('kiloPass.managedOnWeb') + : t('kiloPass.purchaseUnavailable'); return ( @@ -176,6 +178,8 @@ function KiloPassNativeIapContent() { ownedByAnotherAccount, ownedAppleProductId, ownedOriginalTransactionId, + ownedGoogleProductId, + ownedGooglePurchaseToken, ownershipChecked, } = useKiloPassNativeIap(); useInlinePurchaseErrorOwnership(); @@ -192,7 +196,10 @@ function KiloPassNativeIapContent() { const [preflightFailure, setPreflightFailure] = useState(null); let feedback: SubscriptionScreenFeedback | null = restoreFeedback; if (ownedByAnotherAccount) { - feedback = { type: 'error', text: t('kiloPass.otherAccountCopy') }; + feedback = { + type: 'error', + text: t(isAndroid ? 'kiloPass.otherAccountCopyPlay' : 'kiloPass.otherAccountCopy'), + }; } else if (errorMessage) { feedback = { type: 'error', text: errorMessage }; } else if (preflightFailure) { @@ -227,11 +234,19 @@ function KiloPassNativeIapContent() { let preflight: Awaited>; try { preflight = await preflightPurchase.mutateAsync({ - platform: 'ios', - storefront: 'app_store', + platform: isAndroid ? 'android' : 'ios', + storefront: isAndroid ? 'play' : 'app_store', product: 'kilo_pass', + supportsNativePlayKiloPass: true, appleProductId: product.appleProductId, - appleOriginalTransactionId: ownedOriginalTransactionId, + ...(isAndroid + ? { + googleProductId: product.googleProductId, + googlePurchaseToken: ownedGooglePurchaseToken, + } + : { + appleOriginalTransactionId: ownedOriginalTransactionId, + }), }); } catch { setPreflightFailure({ @@ -264,11 +279,21 @@ function KiloPassNativeIapContent() { const handleProductPress = (product: AppStoreKiloPassProduct) => { void Haptics.selectionAsync(); - // Apple owns tier changes inside a subscription group: requesting another SKU - // while this device already owns one is refused by StoreKit, and the app cannot - // show the proration Apple applies. Send those taps to App Store management. - if (ownedAppleProductId && ownedAppleProductId !== product.appleProductId) { + // The store owns tier changes inside a subscription group: requesting another + // SKU while this device already owns one is refused, and the app cannot show + // the proration the store applies. Send those taps to store management. + const ownedProductId = isAndroid ? ownedGoogleProductId : ownedAppleProductId; + const productId = isAndroid ? product.googleProductId : product.appleProductId; + if (ownedProductId && ownedProductId !== productId) { void (async () => { + if (isAndroid) { + const { openPlaySubscriptionManagement } = await import('./kilo-pass-play-manage'); + await openPlaySubscriptionManagement({ + skuAndroid: ownedProductId, + invalidateAfter: invalidateAfterManagement, + }); + return; + } const { openAppStoreManagement } = await import('./kilo-pass-ios-manage'); await openAppStoreManagement({ invalidateAfter: invalidateAfterManagement }); })(); @@ -279,7 +304,7 @@ function KiloPassNativeIapContent() { }; return ( - + - {t('kiloPass.productsUnavailable')} + {t(isAndroid ? 'kiloPass.productsUnavailablePlay' : 'kiloPass.productsUnavailable')} - {productsError ?? t('kiloPass.productsCouldNotLoad')} + {productsError ?? + t(isAndroid ? 'kiloPass.productsCouldNotLoadPlay' : 'kiloPass.productsCouldNotLoad')} {productsIsRefetching ? t('kiloPass.tryingAgain') : t('common.tryAgain')} @@ -402,7 +428,7 @@ function KiloPassNativeIapContent() { /> - {kiloPassLegalDisclosure()} + {kiloPassLegalDisclosure(Platform.OS)} {t('kiloPass.legalConnectorTerms')} ; } diff --git a/apps/mobile/src/i18n/locales/af.json b/apps/mobile/src/i18n/locales/af.json index d2021655a7..7131a117c2 100644 --- a/apps/mobile/src/i18n/locales/af.json +++ b/apps/mobile/src/i18n/locales/af.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Maak App Store-intekeningsbestuur oop.", "opensPlans": "Maak Kilo Pass-planne oop.", "tryAgainFromProfile": "Probeer weer vanaf Profiel.", - "unavailableDescription": "Kilo Pass is nie as 'n in-program-koop op Android beskikbaar nie. Bestuur dit op die web.", - "webManagementDescription": "Hierdie Kilo Pass word op die web bestuur.", "legalDisclosure": "Kilo Pass is 'n outomaties-hernubare maandelikse intekening. Betaling word by bevestiging van aankoop van jou Apple ID gehef. Intekeninge hernu elke maand outomaties teen die prys wat vertoon word, tensy dit minstens 24 uur voor die einde van die huidige tydperk gekanselleer word. Bestuur of kanselleer enige tyd in jou App Store-rekeninginstellings.", "legalPrivacyPolicy": "Privaatheidsbeleid", "legalTermsOfUse": "Gebruiksvoorwaardes (EULA)", diff --git a/apps/mobile/src/i18n/locales/am.json b/apps/mobile/src/i18n/locales/am.json index faa0d6a8a0..32fb90bcbf 100644 --- a/apps/mobile/src/i18n/locales/am.json +++ b/apps/mobile/src/i18n/locales/am.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "የApp Store ምዝገባ አስተዳደርን ይከፍታል።", "opensPlans": "የKilo Pass እቅዶችን ይከፍታል።", "tryAgainFromProfile": "ከመገለጫ እንደገና ይሞክሩ።", - "unavailableDescription": "Kilo Pass በAndroid ላይ በመተግበሪያ ውስጥ እንደ ግዢ አይገኝም። በድር ላይ ያስተዳድሩት።", - "webManagementDescription": "ይህ Kilo Pass በድር ላይ የሚተዳደር ነው።", "legalDisclosure": "Kilo Pass በራስ-ሰር የሚታደስ ወርሃዊ ምዝገባ ነው። ክፍያው ግዢውን ሲያረጋግጡ በApple ID ዎ ላይ ይጠየቃል። ምዝገባዎች ከወቅቱ ጊዜ ማብቂያ ቢያንስ 24 ሰዓታት በፊት ካልተሰረዙ በስተቀር በየወሩ በተጠቀሰው ዋጋ በራስ-ሰር ይታደሳሉ። በApp Store መለያ ቅንብሮችዎ ውስጥ በማንኛውም ጊዜ ያስተዳድሩ ወይም ይሰርዙ።", "legalPrivacyPolicy": "የግላዊነት ፖሊሲ", "legalTermsOfUse": "የአጠቃቀም ውሎች (EULA)", diff --git a/apps/mobile/src/i18n/locales/ar.json b/apps/mobile/src/i18n/locales/ar.json index a9c4749770..2460a2a9f7 100644 --- a/apps/mobile/src/i18n/locales/ar.json +++ b/apps/mobile/src/i18n/locales/ar.json @@ -2438,8 +2438,6 @@ "opensAppStoreManagement": "يفتح إدارة اشتراك App Store.", "opensPlans": "يفتح خطط Kilo Pass.", "tryAgainFromProfile": "حاول مرة أخرى من الملف الشخصي.", - "unavailableDescription": "Kilo Pass غير متاح كعملية شراء داخل التطبيق على Android. يمكنك إدارته على الويب.", - "webManagementDescription": "تتم إدارة Kilo Pass هذا على الويب.", "legalDisclosure": "Kilo Pass اشتراك شهري متجدد تلقائيًا. يتم خصم الدفعة من Apple ID الخاص بك عند تأكيد الشراء. تتجدد الاشتراكات تلقائيًا كل شهر بالسعر المعروض ما لم يتم الإلغاء قبل 24 ساعة على الأقل من نهاية الفترة الحالية. يمكنك الإدارة أو الإلغاء في أي وقت من إعدادات حسابك في App Store.", "legalPrivacyPolicy": "سياسة الخصوصية", "legalTermsOfUse": "شروط الاستخدام (EULA)", diff --git a/apps/mobile/src/i18n/locales/az.json b/apps/mobile/src/i18n/locales/az.json index 5b7cf28f76..3b900ff93f 100644 --- a/apps/mobile/src/i18n/locales/az.json +++ b/apps/mobile/src/i18n/locales/az.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store abunəlik idarəetməsini açır.", "opensPlans": "Kilo Pass planlarını açır.", "tryAgainFromProfile": "Profildən yenidən cəhd edin.", - "unavailableDescription": "Kilo Pass Android-də tətbiqdaxili alış kimi mövcud deyil. Onu vebdə idarə edin.", - "webManagementDescription": "Bu Kilo Pass vebdə idarə olunur.", "legalDisclosure": "Kilo Pass avtomatik yenilənən aylıq abunədir. Ödəniş alışın təsdiqində Apple ID-nizdən çıxılır. Abunəliklər cari dövrün sonuna ən azı 24 saat qalmış ləğv edilmədiyi halda hər ay göstərilən qiymətlə avtomatik yenilənir. İstənilən vaxt App Store hesabınızın parametrlərində idarə edin və ya ləğv edin.", "legalPrivacyPolicy": "Məxfilik Siyasəti", "legalTermsOfUse": "İstifadə Şərtləri (EULA)", diff --git a/apps/mobile/src/i18n/locales/be.json b/apps/mobile/src/i18n/locales/be.json index f7e76441e0..1407530a11 100644 --- a/apps/mobile/src/i18n/locales/be.json +++ b/apps/mobile/src/i18n/locales/be.json @@ -2880,8 +2880,6 @@ "opensAppStoreManagement": "Адкрывае кіраванне падпіскай у App Store.", "opensPlans": "Адкрывае планы Kilo Pass.", "tryAgainFromProfile": "Паспрабуйце яшчэ раз у Профілі.", - "unavailableDescription": "Kilo Pass недаступны як пакупка ў праграме на Android. Кіруйце ім у вэбе.", - "webManagementDescription": "Гэтым Kilo Pass кіруюць у вэбе.", "legalDisclosure": "Kilo Pass — гэта аўтападоўжвальная штомесячная падпіска. Плацёж спаганяецца з вашага Apple ID пры пацвярджэнні пакупкі. Падпіска аўтаматычна падаўжаецца кожны месяц па паказанай цане, калі яна не адменена не менш чым за 24 гадзіны да заканчэння бягучага перыяду. Кіруйце ёю або адменіце яе ў любы час у наладах уліковага запісу App Store.", "legalPrivacyPolicy": "Палітыка прыватнасці", "legalTermsOfUse": "Умовы выкарыстання (EULA)", diff --git a/apps/mobile/src/i18n/locales/bg.json b/apps/mobile/src/i18n/locales/bg.json index 1c6784f9b2..7ff43ce5d1 100644 --- a/apps/mobile/src/i18n/locales/bg.json +++ b/apps/mobile/src/i18n/locales/bg.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Отваря управлението на абонамента в App Store.", "opensPlans": "Отваря плановете на Kilo Pass.", "tryAgainFromProfile": "Опитайте отново от Профил.", - "unavailableDescription": "Kilo Pass не е наличен като покупка в приложението на Android. Управлявайте го в мрежата.", - "webManagementDescription": "Този Kilo Pass се управлява в мрежата.", "legalDisclosure": "Kilo Pass е автоматично подновявана месечна абонаментна услуга. Плащането се начислява към вашия Apple ID при потвърждаване на покупката. Абонаментът се подновява автоматично всеки месец на показаната цена, освен ако не го отмените поне 24 часа преди края на текущия период. Управлявайте или отменяйте по всяко време в настройките на вашия акаунт в App Store.", "legalPrivacyPolicy": "Политика за поверителност", "legalTermsOfUse": "Условия за ползване (EULA)", diff --git a/apps/mobile/src/i18n/locales/bn.json b/apps/mobile/src/i18n/locales/bn.json index 0fc29baae0..a42b5bbf9b 100644 --- a/apps/mobile/src/i18n/locales/bn.json +++ b/apps/mobile/src/i18n/locales/bn.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store সাবস্ক্রিপশন ব্যবস্থাপনা খোলে।", "opensPlans": "Kilo Pass পরিকল্পনা খোলে।", "tryAgainFromProfile": "প্রোফাইল থেকে আবার চেষ্টা করুন।", - "unavailableDescription": "Kilo Pass Android-এ অ্যাপ-মধ্যস্থ কেনাকাটা হিসেবে উপলব্ধ নয়। এটি ওয়েবে পরিচালনা করুন।", - "webManagementDescription": "এই Kilo Pass ওয়েবে পরিচালিত হয়।", "legalDisclosure": "Kilo Pass একটি স্বয়ংক্রিয়-নবায়নযোগ্য মাসিক সাবস্ক্রিপশন। কেনার নিশ্চিতকরণে আপনার Apple ID থেকে পেমেন্ট নেওয়া হয়। সাবস্ক্রিপশন বর্তমান সময়সীমা শেষ হওয়ার কমপক্ষে 24 ঘণ্টা আগে বাতিল না করা হলে প্রতি মাসে দেখানো দামে স্বয়ংক্রিয়ভাবে নবায়ন হয়। আপনার App Store অ্যাকাউন্ট সেটিংসে যেকোনো সময় পরিচালনা বা বাতিল করুন।", "legalPrivacyPolicy": "গোপনীয়তা নীতি", "legalTermsOfUse": "ব্যবহারের শর্তাবলী (EULA)", diff --git a/apps/mobile/src/i18n/locales/bs.json b/apps/mobile/src/i18n/locales/bs.json index 13e8789e6a..bf32c1dda4 100644 --- a/apps/mobile/src/i18n/locales/bs.json +++ b/apps/mobile/src/i18n/locales/bs.json @@ -2860,8 +2860,6 @@ "opensAppStoreManagement": "Otvara upravljanje pretplatom u App Store-u.", "opensPlans": "Otvara Kilo Pass planove.", "tryAgainFromProfile": "Pokušajte ponovo s Profila.", - "unavailableDescription": "Kilo Pass nije dostupan kao kupovina u aplikaciji na Androidu. Upravljajte njime na webu.", - "webManagementDescription": "Ovim Kilo Pass-om upravlja se na webu.", "legalDisclosure": "Kilo Pass je pretplata s automatskim obnavljanjem. Uplata se naplaćuje na vaš Apple ID pri potvrdi kupovine. Pretplate se automatski obnavljaju svakog mjeseca po prikazanoj cijeni, osim ako ih otkažete najmanje 24 sata prije kraja tekućeg razdoblja. Upravljajte ili otkažite u bilo kojem trenutku u postavkama vašeg App Store računa.", "legalPrivacyPolicy": "Politika privatnosti", "legalTermsOfUse": "Uvjeti korištenja (EULA)", diff --git a/apps/mobile/src/i18n/locales/ca.json b/apps/mobile/src/i18n/locales/ca.json index 937a2245bd..da5f1dd5ff 100644 --- a/apps/mobile/src/i18n/locales/ca.json +++ b/apps/mobile/src/i18n/locales/ca.json @@ -2860,8 +2860,6 @@ "opensAppStoreManagement": "Obre la gestió de la subscripció de l'App Store.", "opensPlans": "Obre els plans de Kilo Pass.", "tryAgainFromProfile": "Torna-ho a provar des del Perfil.", - "unavailableDescription": "Kilo Pass no està disponible com a compra dins de l'aplicació a Android. Gestioneu-lo al web.", - "webManagementDescription": "Aquest Kilo Pass es gestiona al web.", "legalDisclosure": "Kilo Pass és una subscripció mensual de renovació automàtica. El pagament es carrega al vostre Apple ID en confirmar la compra. Les subscripcions es renoven automàticament cada mes al preu mostrat tret que es cancel·lin com a mínim 24 hores abans del final del període actual. Gestioneu-les o cancel·leu-les en qualsevol moment a la configuració del compte de l'App Store.", "legalPrivacyPolicy": "Política de privadesa", "legalTermsOfUse": "Condicions d'ús (EULA)", diff --git a/apps/mobile/src/i18n/locales/ckb.json b/apps/mobile/src/i18n/locales/ckb.json index 705a7018be..a331307d5a 100644 --- a/apps/mobile/src/i18n/locales/ckb.json +++ b/apps/mobile/src/i18n/locales/ckb.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "بەڕێوەبردنی بەشداربوونی App Store دەکاتەوە.", "opensPlans": "پلانەکانی Kilo Pass دەکاتەوە.", "tryAgainFromProfile": "لە پڕۆفایلەوە دووبارە هەوڵبدەرەوە.", - "unavailableDescription": "Kilo Pass وەک کڕین لەناو ئەپ لە Android بەردەست نییە. لە وێبەکەدا بەڕێوەی ببە.", - "webManagementDescription": "ئەم Kilo Passیە لە وێبەکەدا بەڕێوە دەبرێت.", "legalDisclosure": "Kilo Pass بەشداربوونێکی مانگانەیە کە خۆکارانە نوێ دەبێتەوە. لە کاتی پشتڕاستکردنەوەی کڕینەکە، پارە لە Apple IDی تۆ دەبەسترێت. بەشداربوونەکان هەر مانگێک بە بەهای نیشاندراو خۆکارانە نوێ دەبنەوە مەگەر لانیکەم ٢٤ کاتژمێر پێش کۆتایی ماوەی ئێستا هەڵنەوەشێنرێنەوە. لە هەر کاتێکدا لە ڕێکخستنەکانی هەژماری App Store بەڕێوەی ببە یان هەڵیبوەشێنەوە.", "legalPrivacyPolicy": "سیاسەتی تایبەتمەندی", "legalTermsOfUse": "مەرجەکانی بەکارهێنان (EULA)", diff --git a/apps/mobile/src/i18n/locales/cs.json b/apps/mobile/src/i18n/locales/cs.json index 049c132fb4..d365888398 100644 --- a/apps/mobile/src/i18n/locales/cs.json +++ b/apps/mobile/src/i18n/locales/cs.json @@ -2880,8 +2880,6 @@ "opensAppStoreManagement": "Otevře správu předplatného v App Store.", "opensPlans": "Otevře plány Kilo Pass.", "tryAgainFromProfile": "Zkuste to znovu z Profilu.", - "unavailableDescription": "Kilo Pass není na Androidu dostupný jako nákup v aplikaci. Spravujte jej na webu.", - "webManagementDescription": "Tento Kilo Pass je spravován na webu.", "legalDisclosure": "Kilo Pass je měsíční předplatné s automatickou obnovou. Platba je účtována na váš Apple ID při potvrzení nákupu. Předplatné se automaticky obnovuje každý měsíc za uvedenou cenu, pokud jej nezrušíte nejméně 24 hodin před koncem aktuálního období. Předplatné můžete kdykoli spravovat nebo zrušit v nastavení účtu App Store.", "legalPrivacyPolicy": "Zásady ochrany osobních údajů", "legalTermsOfUse": "Podmínky použití (EULA)", diff --git a/apps/mobile/src/i18n/locales/cy.json b/apps/mobile/src/i18n/locales/cy.json index 42e94e38f0..93b6ff148d 100644 --- a/apps/mobile/src/i18n/locales/cy.json +++ b/apps/mobile/src/i18n/locales/cy.json @@ -2920,8 +2920,6 @@ "opensAppStoreManagement": "Yn agor rheolaeth tanysgrifiad App Store.", "opensPlans": "Yn agor cynlluniau Kilo Pass.", "tryAgainFromProfile": "Ceisiwch eto o'r Proffil.", - "unavailableDescription": "Nid yw Kilo Pass ar gael fel pryniant o fewn yr app ar Android. Rheolwch ef ar y we.", - "webManagementDescription": "Mae'r Kilo Pass hwn yn cael ei reoli ar y we.", "legalDisclosure": "Tanysgrifiad misol sy'n adnewyddu'n awtomatig yw Kilo Pass. Codir y taliad i'ch Apple ID ar gadarnhad o'r pryniant. Mae tanysgrifiadau'n adnewyddu'n awtomatig bob mis am y pris a ddangosir oni bai eich bod yn canslo o leiaf 24 awr cyn diwedd y cyfnod cyfredol. Rheolwch neu ganslwch unrhyw bryd yng ngosodiadau cyfrif eich App Store.", "legalPrivacyPolicy": "Polisi Preifatrwydd", "legalTermsOfUse": "Telerau Defnyddio (EULA)", diff --git a/apps/mobile/src/i18n/locales/da.json b/apps/mobile/src/i18n/locales/da.json index ff0a2b7c85..6d62585a98 100644 --- a/apps/mobile/src/i18n/locales/da.json +++ b/apps/mobile/src/i18n/locales/da.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Åbner App Store-abonnementsadministration.", "opensPlans": "Åbner Kilo Pass-planer.", "tryAgainFromProfile": "Prøv igen fra Profil.", - "unavailableDescription": "Kilo Pass er ikke tilgængelig som et køb i appen på Android. Administrér det på nettet.", - "webManagementDescription": "Denne Kilo Pass administreres på nettet.", "legalDisclosure": "Kilo Pass er et automatisk fornyeligt månedligt abonnement. Betaling opkræves på din Apple ID ved bekræftelse af købet. Abonnementer fornyes automatisk hver måned til den viste pris, medmindre de annulleres mindst 24 timer før udløbet af den aktuelle periode. Administrér eller annullér når som helst i dine App Store-kontoindstillinger.", "legalPrivacyPolicy": "Privatlivspolitik", "legalTermsOfUse": "Vilkår for brug (EULA)", diff --git a/apps/mobile/src/i18n/locales/de.json b/apps/mobile/src/i18n/locales/de.json index e09cf7d0d7..5573b9dfad 100644 --- a/apps/mobile/src/i18n/locales/de.json +++ b/apps/mobile/src/i18n/locales/de.json @@ -2386,8 +2386,6 @@ "opensAppStoreManagement": "Öffnet die Abonnementverwaltung des App Store.", "opensPlans": "Öffnet die Kilo Pass-Pläne.", "tryAgainFromProfile": "Versuche es erneut über das Profil.", - "unavailableDescription": "Kilo Pass ist auf Android nicht als In-App-Kauf verfügbar. Verwalte ihn im Web.", - "webManagementDescription": "Dieser Kilo Pass wird im Web verwaltet.", "legalDisclosure": "Kilo Pass ist ein automatisch verlängerbares Monatsabonnement. Die Zahlung wird bei Kaufbestätigung deiner Apple-ID belastet. Abonnements verlängern sich automatisch jeden Monat zum angezeigten Preis, sofern sie nicht mindestens 24 Stunden vor Ende des aktuellen Zeitraums gekündigt werden. Jederzeit in deinen App-Store-Kontoeinstellungen verwalten oder kündigen.", "legalPrivacyPolicy": "Datenschutzrichtlinie", "legalTermsOfUse": "Nutzungsbedingungen (EULA)", diff --git a/apps/mobile/src/i18n/locales/el.json b/apps/mobile/src/i18n/locales/el.json index 9382dc3dfb..59a054d812 100644 --- a/apps/mobile/src/i18n/locales/el.json +++ b/apps/mobile/src/i18n/locales/el.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Ανοίγει τη διαχείριση συνδρομών του App Store.", "opensPlans": "Ανοίγει τα προγράμματα Kilo Pass.", "tryAgainFromProfile": "Δοκιμάστε ξανά από το Προφίλ.", - "unavailableDescription": "Το Kilo Pass δεν είναι διαθέσιμο ως αγορά εντός εφαρμογής σε Android. Διαχειριστείτε το στον ιστό.", - "webManagementDescription": "Αυτό το Kilo Pass διαχειρίζεται στον ιστό.", "legalDisclosure": "Το Kilo Pass είναι μια συνδρομή με αυτόματη ανανέωση σε μηνιαία βάση. Η πληρωμή χρεώνεται στο Apple ID σας κατά την επιβεβαίωση της αγοράς. Οι συνδρομές ανανεώνονται αυτόματα κάθε μήνα στην τιμή που εμφανίζεται, εκτός εάν ακυρωθούν τουλάχιστον 24 ώρες πριν από το τέλος της τρέχουσας περιόδου. Διαχειριστείτε ή ακυρώστε ανά πάσα στιγμή στις ρυθμίσεις του λογαριασμού σας στο App Store.", "legalPrivacyPolicy": "Πολιτική Απορρήτου", "legalTermsOfUse": "Όροι Χρήσης (EULA)", diff --git a/apps/mobile/src/i18n/locales/en.json b/apps/mobile/src/i18n/locales/en.json index ad2061678c..ed5b657ff1 100644 --- a/apps/mobile/src/i18n/locales/en.json +++ b/apps/mobile/src/i18n/locales/en.json @@ -2848,8 +2848,6 @@ "opensAppStoreManagement": "Opens App Store subscription management.", "opensPlans": "Opens Kilo Pass plans.", "tryAgainFromProfile": "Try again from Profile.", - "unavailableDescription": "Kilo Pass is not available as an in-app purchase on Android. Manage it on the web.", - "webManagementDescription": "This Kilo Pass is managed on the web.", "legalDisclosure": "Kilo Pass is an auto-renewable monthly subscription. Payment is charged to your Apple ID at confirmation of purchase. Subscriptions renew automatically each month at the price shown unless canceled at least 24 hours before the end of the current period. Manage or cancel anytime in your App Store account settings.", "legalPrivacyPolicy": "Privacy Policy", "legalTermsOfUse": "Terms of Use (EULA)", @@ -2860,7 +2858,20 @@ "purchaseOwnedByAnotherAccount": "The Kilo Pass on this Apple Account belongs to a different Kilo account.", "couldNotConnectToAppStore": "Could not connect to the App Store. Check your connection and try again.", "noMatchingProducts": "No matching Kilo Pass products were returned by App Store.", - "purchaseMissingSignedTransaction": "App Store purchase did not include a signed transaction JWS." + "purchaseMissingSignedTransaction": "App Store purchase did not include a signed transaction JWS.", + "productsUnavailablePlay": "Google Play products unavailable", + "productsCouldNotLoadPlay": "Kilo Pass products could not be loaded from Google Play.", + "couldNotConnectToPlay": "Could not connect to Google Play. Check your connection and try again.", + "noMatchingProductsPlay": "No matching Kilo Pass products were returned by Google Play.", + "purchaseStartFailedPlay": "Failed to start Google Play purchase.", + "purchaseMissingOfferToken": "Google Play purchase is missing an offer token. Try again.", + "purchaseMissingPurchaseToken": "Google Play purchase did not include a purchase token.", + "otherAccountCopyPlay": "The Kilo Pass on this Google Play account belongs to a different Kilo account. Sign in to that Kilo account to manage it.", + "purchaseOwnedByAnotherAccountPlay": "The Kilo Pass on this Google Play account belongs to a different Kilo account.", + "purchaseDifferentAccountPlay": "This Google Play purchase isn't linked to your Kilo account. Sign in to the Google account used for the purchase, then try again.", + "manageFailedPlay": "Failed to open Google Play subscription management.", + "opensPlayManagement": "Opens Google Play subscription management.", + "legalDisclosurePlay": "Kilo Pass is an auto-renewable monthly subscription. Payment is charged to your Google Play account at confirmation of purchase. Subscriptions renew automatically each month at the price shown unless canceled at least 24 hours before the end of the current period. Manage or cancel anytime in your Google Play account settings." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/es.json b/apps/mobile/src/i18n/locales/es.json index 722e29d1df..45bf234f3a 100644 --- a/apps/mobile/src/i18n/locales/es.json +++ b/apps/mobile/src/i18n/locales/es.json @@ -2399,8 +2399,6 @@ "opensAppStoreManagement": "Abre la gestión de suscripciones de App Store.", "opensPlans": "Abre los planes de Kilo Pass.", "tryAgainFromProfile": "Inténtalo de nuevo desde Perfil.", - "unavailableDescription": "Kilo Pass no está disponible como compra dentro de la aplicación en Android. Gestiona tu suscripción en la web.", - "webManagementDescription": "Este Kilo Pass se gestiona en la web.", "legalDisclosure": "Kilo Pass es una suscripción mensual renovable automáticamente. El pago se cobra en tu Apple ID al confirmar la compra. Las suscripciones se renuevan automáticamente cada mes al precio indicado, a menos que se cancelen al menos 24 horas antes del final del período actual. Puedes gestionar o cancelar la suscripción en cualquier momento en los ajustes de tu cuenta de App Store.", "legalPrivacyPolicy": "Política de privacidad", "legalTermsOfUse": "Términos de uso (EULA)", diff --git a/apps/mobile/src/i18n/locales/et.json b/apps/mobile/src/i18n/locales/et.json index d202c25ed9..ed0c85a093 100644 --- a/apps/mobile/src/i18n/locales/et.json +++ b/apps/mobile/src/i18n/locales/et.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Avaneb App Store tellimuse haldus.", "opensPlans": "Avaneb Kilo Passi plaanid.", "tryAgainFromProfile": "Proovige uuesti profiili kaudu.", - "unavailableDescription": "Kilo Pass pole Androidis rakendusesiseselt ostetav. Halda seda veebis.", - "webManagementDescription": "Seda Kilo Passi hallatakse veebis.", "legalDisclosure": "Kilo Pass on automaatselt uuenev igakuine tellimus. Makse võetakse sinu Apple ID-lt ostu kinnitamisel. Tellimus uueneb iga kuu automaatselt näidatud hinnaga, kui sa seda ei tühista vähemalt 24 tundi enne jooksva perioodi lõppu. Halda või tühista tellimust igal ajal oma App Store konto seadetes.", "legalPrivacyPolicy": "Privaatsuspoliitika", "legalTermsOfUse": "Kasutustingimused (EULA)", diff --git a/apps/mobile/src/i18n/locales/eu.json b/apps/mobile/src/i18n/locales/eu.json index 50d317f8e8..ee4ae2dbe5 100644 --- a/apps/mobile/src/i18n/locales/eu.json +++ b/apps/mobile/src/i18n/locales/eu.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store harpidetza-kudeaketa irekitzen du.", "opensPlans": "Kilo Pass planak irekitzen ditu.", "tryAgainFromProfile": "Saiatu berriro Profiletik.", - "unavailableDescription": "Kilo Pass ez dago erabilgarri aplikazio barruko erosketa gisa Android-en. Kudeatu webgunean.", - "webManagementDescription": "Kilo Pass hau webgunean kudeatzen da.", "legalDisclosure": "Kilo Pass hilero automatikoki berritzen den harpidetza da. Erosketa baieztatzen denean, ordainketa zure Apple ID-ra kobratzen da. Harpidetzak automatikoki berritzen dira hilero agertzen den prezioan, uneko aldia amaitu baino 24 ordu lehenago gutxienez ezeztatu ezean. Kudeatu edo ezeztatu edonoiz zure App Store kontuaren ezarpenetan.", "legalPrivacyPolicy": "Pribatutasun-politika", "legalTermsOfUse": "Erabilera-baldintzak (EULA)", diff --git a/apps/mobile/src/i18n/locales/fa.json b/apps/mobile/src/i18n/locales/fa.json index 3442096581..f965123d6b 100644 --- a/apps/mobile/src/i18n/locales/fa.json +++ b/apps/mobile/src/i18n/locales/fa.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "مدیریت اشتراک App Store را باز می‌کند.", "opensPlans": "برنامه‌های Kilo Pass را باز می‌کند.", "tryAgainFromProfile": "از نمایه دوباره تلاش کنید.", - "unavailableDescription": "Kilo Pass بهعنوان خرید درونبرنامهای در Android در دسترس نیست. آن را در وب مدیریت کنید.", - "webManagementDescription": "این Kilo Pass در وب مدیریت میشود.", "legalDisclosure": "Kilo Pass یک اشتراک ماهانه با تمدید خودکار است. پرداخت در تأیید خرید از Apple ID شما کسر میشود. اشتراکها هر ماه بهصورت خودکار با قیمت نشاندادهشده تمدید میشوند، مگر اینکه حداقل ۲۴ ساعت قبل از پایان دوره فعلی لغو شوند. هر زمان میتوانید در تنظیمات حساب App Store خود آن را مدیریت یا لغو کنید.", "legalPrivacyPolicy": "خطمشی حریم خصوصی", "legalTermsOfUse": "شرایط استفاده (EULA)", diff --git a/apps/mobile/src/i18n/locales/fi.json b/apps/mobile/src/i18n/locales/fi.json index 264b207863..4c7b12f457 100644 --- a/apps/mobile/src/i18n/locales/fi.json +++ b/apps/mobile/src/i18n/locales/fi.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Avaa App Store -tilauksen hallinnan.", "opensPlans": "Avaa Kilo Pass -suunnitelmat.", "tryAgainFromProfile": "Yritä uudelleen profiilista.", - "unavailableDescription": "Kilo Pass ei ole saatavilla sovelluksen sisäisenä ostoksena Androidissa. Hallinnoi sitä verkossa.", - "webManagementDescription": "Tätä Kilo Pass -tilausta hallinnoidaan verkossa.", "legalDisclosure": "Kilo Pass on automaattisesti uusiutuva kuukausitilaus. Maksu veloitetaan Apple ID:stäsi oston vahvistuksen yhteydessä. Tilaus uusiutuu automaattisesti joka kuukausi näytettyyn hintaan, ellei sitä peruuteta vähintään 24 tuntia ennen nykyisen jakson päättymistä. Hallinnoi tai peruuta milloin tahansa App Store -tilin asetuksissa.", "legalPrivacyPolicy": "Tietosuojakäytäntö", "legalTermsOfUse": "Käyttöehdot (EULA)", diff --git a/apps/mobile/src/i18n/locales/fil.json b/apps/mobile/src/i18n/locales/fil.json index e6758ffb9f..2312d68cba 100644 --- a/apps/mobile/src/i18n/locales/fil.json +++ b/apps/mobile/src/i18n/locales/fil.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Bubuksan ang pamamahala ng App Store subscription.", "opensPlans": "Bubuksan ang mga plan ng Kilo Pass.", "tryAgainFromProfile": "Subukang muli mula sa Profile.", - "unavailableDescription": "Hindi available ang Kilo Pass bilang in-app purchase sa Android. Pamahalaan ito sa web.", - "webManagementDescription": "Pinamamahalaan sa web ang Kilo Pass na ito.", "legalDisclosure": "Ang Kilo Pass ay isang auto-renewable na buwanang subscription. Babayaran ang bayad sa iyong Apple ID kapag nakumpirma ang pagbili. Awtomatikong nire-renew ang mga subscription bawat buwan sa ipinapakitang presyo maliban kung kinansela nang hindi bababa sa 24 na oras bago matapos ang kasalukuyang panahon. Pamahalaan o kanselahin anumang oras sa iyong mga setting ng App Store account.", "legalPrivacyPolicy": "Patakaran sa Privacy", "legalTermsOfUse": "Mga Tuntunin ng Paggamit (EULA)", diff --git a/apps/mobile/src/i18n/locales/fr.json b/apps/mobile/src/i18n/locales/fr.json index a30a8b721b..fda388aef3 100644 --- a/apps/mobile/src/i18n/locales/fr.json +++ b/apps/mobile/src/i18n/locales/fr.json @@ -2324,8 +2324,6 @@ "opensAppStoreManagement": "Ouvre la gestion de l'abonnement dans l'App Store.", "opensPlans": "Ouvre les offres Kilo Pass.", "tryAgainFromProfile": "Réessayez depuis le profil.", - "unavailableDescription": "Kilo Pass n'est pas disponible comme achat intégré sur Android. Gérez-le sur le web.", - "webManagementDescription": "Ce Kilo Pass est géré sur le web.", "legalDisclosure": "Kilo Pass est un abonnement mensuel à renouvellement automatique. Le paiement est prélevé sur votre identifiant Apple à la confirmation de l'achat. Les abonnements se renouvellent automatiquement chaque mois au prix indiqué, sauf annulation au moins 24 heures avant la fin de la période en cours. Gérez ou annulez à tout moment dans les réglages de votre compte App Store.", "legalPrivacyPolicy": "Politique de confidentialité", "legalTermsOfUse": "Conditions d'utilisation (CLUF)", diff --git a/apps/mobile/src/i18n/locales/ga.json b/apps/mobile/src/i18n/locales/ga.json index 013c51bedb..8a695e8eb8 100644 --- a/apps/mobile/src/i18n/locales/ga.json +++ b/apps/mobile/src/i18n/locales/ga.json @@ -2900,8 +2900,6 @@ "opensAppStoreManagement": "Osclaíonn bainistíocht sintiúis App Store.", "opensPlans": "Osclaíonn pleananna Kilo Pass.", "tryAgainFromProfile": "Bain triail as arís ó Phróifíl.", - "unavailableDescription": "Níl Kilo Pass ar fáil mar cheannach in-app ar Android. Bainistigh é ar an ngréasán.", - "webManagementDescription": "Tá an Kilo Pass seo bainistithe ar an ngréasán.", "legalDisclosure": "Is síntiús míosúil uath-fhionnuaire é Kilo Pass. Gearrtar an táille ar do Apple ID ag deimhniú an cheannaigh. Déanann síntiúis athnuachan go huathoibríoch gach mí ar an bpraghas a thaispeántar mura gcuirtear ceal orthu 24 uair an chloig ar a laghad roimh dheireadh na tréimhse reatha. Bainistigh nó cuir ceal orthu am ar bith i do shocruithe cuntais App Store.", "legalPrivacyPolicy": "Polasaí Príobháideachta", "legalTermsOfUse": "Téarmaí Úsáide (EULA)", diff --git a/apps/mobile/src/i18n/locales/gl.json b/apps/mobile/src/i18n/locales/gl.json index 0e914c35ef..f23f8ce5ef 100644 --- a/apps/mobile/src/i18n/locales/gl.json +++ b/apps/mobile/src/i18n/locales/gl.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Ábre a xestión de subscricións da App Store.", "opensPlans": "Ábre os plans de Kilo Pass.", "tryAgainFromProfile": "Téntao de novo desde o Perfil.", - "unavailableDescription": "Kilo Pass non está dispoñible como compra dentro da aplicación en Android. Xestiona na web.", - "webManagementDescription": "Este Kilo Pass xestiónase na web.", "legalDisclosure": "Kilo Pass é unha subscrición mensual auto-renovable. O pago cobrase na túa conta de Apple no momento da compra. As subscricións renóvanse automaticamente cada mes ao prezo indicado a menos que se cancelen polo menos 24 horas antes de que remate o período actual. Xestiona ou cancela en calquera momento na configuración da túa conta da App Store.", "legalPrivacyPolicy": "Política de privacidade", "legalTermsOfUse": "Termos de uso (EULA)", diff --git a/apps/mobile/src/i18n/locales/gu.json b/apps/mobile/src/i18n/locales/gu.json index 1d08aaa5a7..8329865b2c 100644 --- a/apps/mobile/src/i18n/locales/gu.json +++ b/apps/mobile/src/i18n/locales/gu.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store સબસ્ક્રિપ્શન મેનેજમેન્ટ ખોલે છે.", "opensPlans": "Kilo Pass યોજનાઓ ખોલે છે.", "tryAgainFromProfile": "પ્રોફાઇલમાંથી ફરી પ્રયાસ કરો.", - "unavailableDescription": "Kilo Pass એ Android પર ઇન-એપ ખરીદી તરીકે ઉપલબ્ધ નથી. તેને વેબ પર મેનેજ કરો.", - "webManagementDescription": "આ Kilo Pass વેબ પર મેનેજ થાય છે.", "legalDisclosure": "Kilo Pass એ આપમેળે રિન્યુ થતું માસિક સબ્સ્ક્રિપ્શન છે. ખરીદીની પુષ્ટિ પર તમારા Apple ID પર ચુકવણી કરવામાં આવે છે. જ્યાં સુધી વર્તમાન સમયગાળાના અંતના 24 કલાક પહેલાં રદ ન કરવામાં આવે ત્યાં સુધી સબ્સ્ક્રિપ્શન દર મહિને દર્શાવેલ કિંમતે આપમેળે રિન્યુ થાય છે. તમારી App Store એકાઉન્ટ સેટિંગ્સમાં ગમે ત્યારે મેનેજ કરો અથવા રદ કરો.", "legalPrivacyPolicy": "ગોપનીયતા નીતિ", "legalTermsOfUse": "ઉપયોગની શરતો (EULA)", diff --git a/apps/mobile/src/i18n/locales/ha.json b/apps/mobile/src/i18n/locales/ha.json index ceeed65651..87d0cceeb7 100644 --- a/apps/mobile/src/i18n/locales/ha.json +++ b/apps/mobile/src/i18n/locales/ha.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Yana buɗe sarrafa biyan kuɗi na App Store.", "opensPlans": "Yana buɗe tsare-tsaren Kilo Pass.", "tryAgainFromProfile": "Sake gwadawa daga Profile.", - "unavailableDescription": "Kilo Pass ba ya samuwa a matsayin siyayyar in-app akan Android. Sarrafa shi a yanar gizo.", - "webManagementDescription": "Wannan Kilo Pass ana sarrafa shi a yanar gizo.", "legalDisclosure": "Kilo Pass biyan kuɗi ne na wata-wata wanda ke sabunta kansa. Ana cajin biyan kuɗi ga Apple ID ɗinka a lokacin tabbatar da siyayya. Biyan kuɗi yana sabuntawa kowace wata a farashin da aka nuna sai dai idan an soke shi aƙalla sa'o'i 24 kafin ƙarshen lokaci na yanzu. Sarrafa ko soke a kowane lokaci a saitunan asusunka na App Store.", "legalPrivacyPolicy": "Manufar Sirri", "legalTermsOfUse": "Sharuɗɗan Amfani (EULA)", diff --git a/apps/mobile/src/i18n/locales/he.json b/apps/mobile/src/i18n/locales/he.json index 91f74dd2eb..cfc66dc73a 100644 --- a/apps/mobile/src/i18n/locales/he.json +++ b/apps/mobile/src/i18n/locales/he.json @@ -2399,8 +2399,6 @@ "opensAppStoreManagement": "פותח את ניהול המינויים ב-App Store.", "opensPlans": "פותח את תוכניות Kilo Pass.", "tryAgainFromProfile": "נסה שוב מהפרופיל.", - "unavailableDescription": "Kilo Pass אינו זמין כרכישה בתוך האפליקציה באנדרואיד. נהל אותו באינטרנט.", - "webManagementDescription": "Kilo Pass זה מנוהל באינטרנט.", "legalDisclosure": "Kilo Pass הוא מנוי חודשי שמתחדש אוטומטית. התשלום נגבה מחשבון Apple שלך בעת אישור הרכישה. המנוי מתחדש אוטומטית בכל חודש במחיר המוצג, אלא אם תבטל לפחות 24 שעות לפני סוף התקופה הנוכחית. נהל או בטל בכל עת בהגדרות חשבון App Store שלך.", "legalPrivacyPolicy": "מדיניות פרטיות", "legalTermsOfUse": "תנאי שימוש (EULA)", diff --git a/apps/mobile/src/i18n/locales/hi.json b/apps/mobile/src/i18n/locales/hi.json index fce85d61e7..9dcc5c908d 100644 --- a/apps/mobile/src/i18n/locales/hi.json +++ b/apps/mobile/src/i18n/locales/hi.json @@ -2386,8 +2386,6 @@ "opensAppStoreManagement": "App Store सदस्यता प्रबंधन खोलता है।", "opensPlans": "Kilo Pass योजनाएं खोलता है।", "tryAgainFromProfile": "प्रोफ़ाइल से फिर से प्रयास करें।", - "unavailableDescription": "Kilo Pass Android पर इन-ऐप खरीदारी के रूप में उपलब्ध नहीं है। इसे वेब पर प्रबंधित करें।", - "webManagementDescription": "यह Kilo Pass वेब पर प्रबंधित किया जाता है।", "legalDisclosure": "Kilo Pass एक स्वतः-नवीकरणीय मासिक सदस्यता है। खरीद की पुष्टि पर भुगतान आपके Apple ID से लिया जाता है। सदस्यताएँ हर महीने दिखाई गई कीमत पर स्वतः नवीकरण होती हैं, जब तक कि वर्तमान अवधि समाप्त होने से कम से कम 24 घंटे पहले रद्द न की जाएँ। इन्हें कभी भी अपनी App Store खाता सेटिंग्स में प्रबंधित या रद्द करें।", "legalPrivacyPolicy": "गोपनीयता नीति", "legalTermsOfUse": "उपयोग की शर्तें (EULA)", diff --git a/apps/mobile/src/i18n/locales/hr.json b/apps/mobile/src/i18n/locales/hr.json index 848f0a886c..39758f2162 100644 --- a/apps/mobile/src/i18n/locales/hr.json +++ b/apps/mobile/src/i18n/locales/hr.json @@ -2860,8 +2860,6 @@ "opensAppStoreManagement": "Otvara upravljanje pretplatama u App Storeu.", "opensPlans": "Otvara Kilo Pass planove.", "tryAgainFromProfile": "Pokušajte ponovno s Profila.", - "unavailableDescription": "Kilo Pass nije dostupan kao kupnja unutar aplikacije na Androidu. Upravljajte njime na webu.", - "webManagementDescription": "Ovim Kilo Passom upravlja se na webu.", "legalDisclosure": "Kilo Pass je mjesečna pretplata s automatskim obnavljanjem. Plaćanje se naplaćuje s vašeg Apple ID-a pri potvrdi kupnje. Pretplate se automatski obnavljaju svakog mjeseca po prikazanoj cijeni osim ako ne otkažete najmanje 24 sata prije kraja tekućeg razdoblja. Upravljajte ili otkažite u bilo kojem trenutku u postavkama svog App Store računa.", "legalPrivacyPolicy": "Politika privatnosti", "legalTermsOfUse": "Uvjeti korištenja (EULA)", diff --git a/apps/mobile/src/i18n/locales/ht.json b/apps/mobile/src/i18n/locales/ht.json index 4650dbaf5c..d45cff706a 100644 --- a/apps/mobile/src/i18n/locales/ht.json +++ b/apps/mobile/src/i18n/locales/ht.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Louvri jesyon abònman App Store.", "opensPlans": "Louvri plan Kilo Pass.", "tryAgainFromProfile": "Eseye ankò soti nan Pwofil.", - "unavailableDescription": "Kilo Pass pa disponib kòm yon acha nan aplikasyon an sou Android. Jere li sou web la.", - "webManagementDescription": "Kilo Pass sa a jere sou web la.", "legalDisclosure": "Kilo Pass se yon abònman chak mwa ki renouvle otomatikman. Peman an chaje sou Apple ID ou lè acha a konfime. Abònman yo renouvle otomatikman chak mwa nan pri ki montre a sòf si yo anile omwen 24 èdtan anvan fen peryòd aktyèl la. Jere oswa anile nenpòt lè nan paramèt kont App Store ou.", "legalPrivacyPolicy": "Politik Vi Prive", "legalTermsOfUse": "Kondisyon Itilizasyon (EULA)", diff --git a/apps/mobile/src/i18n/locales/hu.json b/apps/mobile/src/i18n/locales/hu.json index a653f5a972..c03716ed10 100644 --- a/apps/mobile/src/i18n/locales/hu.json +++ b/apps/mobile/src/i18n/locales/hu.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Megnyitja az App Store előfizetés-kezelést.", "opensPlans": "Megnyitja a Kilo Pass csomagokat.", "tryAgainFromProfile": "Próbáld újra a Profilból.", - "unavailableDescription": "A Kilo Pass nem érhető el alkalmazáson belüli vásárlásként Androidon. Kezelje a weben.", - "webManagementDescription": "Ez a Kilo Pass a weben van kezelve.", "legalDisclosure": "A Kilo Pass automatikusan megújuló havi előfizetés. A fizetés az Apple ID-hoz kerül felszámításra a vásárlás megerősítésekor. Az előfizetés minden hónapban automatikusan megújul a megjelenített áron, hacsak nem mondja le legalább 24 órával az aktuális időszak vége előtt. Kezelje vagy mondja le bármikor az App Store fiókbeállításaiban.", "legalPrivacyPolicy": "Adatvédelmi irányelvek", "legalTermsOfUse": "Felhasználási feltételek (EULA)", diff --git a/apps/mobile/src/i18n/locales/hy.json b/apps/mobile/src/i18n/locales/hy.json index a0ba06ba9b..742261eae6 100644 --- a/apps/mobile/src/i18n/locales/hy.json +++ b/apps/mobile/src/i18n/locales/hy.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Բացում է App Store բաժանորդագրության կառավարումը:", "opensPlans": "Բացում է Kilo Pass պլանները:", "tryAgainFromProfile": "Նորից փորձեք Պրոֆիլից:", - "unavailableDescription": "Kilo Pass-ը Android-ում հասանելի չէ որպես հավելվածի ներսում կատարվող գնում: Կառավարեք այն կայքում:", - "webManagementDescription": "Այս Kilo Pass-ը կառավարվում է կայքում:", "legalDisclosure": "Kilo Pass-ը ավտոմատ թարմացվող ամսական բաժանորդագրություն է: Վճարումը գանձվում է ձեր Apple ID-ից գնումը հաստատելիս: Բաժանորդագրությունը թարմացվում է ամեն ամիս նշված գնով, եթե չեղարկեք ընթացիկ ժամանակաշրջանի ավարտից առնվազն 24 ժամ առաջ: Կառավարեք կամ չեղարկեք ցանկացած պահի ձեր App Store հաշվի կարգավորումներում:", "legalPrivacyPolicy": "Գաղտնիության քաղաքականություն", "legalTermsOfUse": "Օգտագործման պայմաններ (EULA)", diff --git a/apps/mobile/src/i18n/locales/id.json b/apps/mobile/src/i18n/locales/id.json index 71bea3c701..cadd084c39 100644 --- a/apps/mobile/src/i18n/locales/id.json +++ b/apps/mobile/src/i18n/locales/id.json @@ -2386,8 +2386,6 @@ "opensAppStoreManagement": "Membuka pengelolaan langganan App Store.", "opensPlans": "Membuka paket Kilo Pass.", "tryAgainFromProfile": "Coba lagi dari Profil.", - "unavailableDescription": "Kilo Pass tidak tersedia sebagai pembelian dalam aplikasi di Android. Kelola di web.", - "webManagementDescription": "Kilo Pass ini dikelola di web.", "legalDisclosure": "Kilo Pass adalah langganan bulanan yang dapat diperbarui otomatis. Pembayaran dibebankan ke Apple ID Anda saat konfirmasi pembelian. Langganan diperbarui otomatis setiap bulan dengan harga yang ditampilkan kecuali dibatalkan minimal 24 jam sebelum akhir periode berjalan. Kelola atau batalkan kapan saja di pengaturan akun App Store Anda.", "legalPrivacyPolicy": "Kebijakan Privasi", "legalTermsOfUse": "Ketentuan Penggunaan (EULA)", diff --git a/apps/mobile/src/i18n/locales/ig.json b/apps/mobile/src/i18n/locales/ig.json index 7aee4f1b39..cbae731d4a 100644 --- a/apps/mobile/src/i18n/locales/ig.json +++ b/apps/mobile/src/i18n/locales/ig.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Na-emeghe njikwa ndenye aha App Store.", "opensPlans": "Na-emeghe atụmatụ Kilo Pass.", "tryAgainFromProfile": "Nwaa ọzọ site na Profaịlụ.", - "unavailableDescription": "Ọ dịghị ike ịzụta Kilo Pass dị ka ịzụta n'ime ngwa na Android. Jikwaa ya na webụ.", - "webManagementDescription": "A Kilo Pass a na-ejikwa na webụ.", "legalDisclosure": "Kilo Pass bụ ndenye aha kwa ọnwa nke na-emegharị onwe ya. A na-ana ụgwọ na Apple ID gị mgbe ị kwadoro ịzụta. Ndenye aha na-emegharị kwa ọnwa na ọnụahịa egosiri belụsọ na ị kagburu ya ọ dịkarịa ala awa 24 tupu njedebe nke oge ugbu a. Jikwaa ma ọ bụ kagbuo ya mgbe ọ bụla na ntọala akaụntụ App Store gị.", "legalPrivacyPolicy": "Amụma Nzuzo", "legalTermsOfUse": "Ụkpụrụ Ojiji (EULA)", diff --git a/apps/mobile/src/i18n/locales/is.json b/apps/mobile/src/i18n/locales/is.json index 349b872c64..c6d9450557 100644 --- a/apps/mobile/src/i18n/locales/is.json +++ b/apps/mobile/src/i18n/locales/is.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Opnar App Store-áskriftarstjórnun.", "opensPlans": "Opnar Kilo Pass-áætlanir.", "tryAgainFromProfile": "Reyndu aftur frá Prófíl.", - "unavailableDescription": "Kilo Pass er ekki tiltækt sem kaup í forriti á Android. Hafa umsjón með því á vefnum.", - "webManagementDescription": "Þetta Kilo Pass er meðhöndlað á vefnum.", "legalDisclosure": "Kilo Pass er sjálfvirkt endurnýjanleg mánaðaráskrift. Greiðsla er innheimt á Apple ID þinn við staðfestingu kaupa. Áskriftir endurnýjast sjálfkrafa mánaðarlega á sýnandi verði nema sagt sé upp að minnsta kosti 24 klukkustundum fyrir lok gildistímabilsins. Hafa umsjón með eða hætta við hvenær sem er í stillingum App Store reikningsins þíns.", "legalPrivacyPolicy": "Persónuverndarstefna", "legalTermsOfUse": "Notendaskilmálar (EULA)", diff --git a/apps/mobile/src/i18n/locales/it.json b/apps/mobile/src/i18n/locales/it.json index 4cac7cd1a2..8b67ee3e9f 100644 --- a/apps/mobile/src/i18n/locales/it.json +++ b/apps/mobile/src/i18n/locales/it.json @@ -2399,8 +2399,6 @@ "opensAppStoreManagement": "Apre la gestione dell'abbonamento nell'App Store.", "opensPlans": "Apre i piani Kilo Pass.", "tryAgainFromProfile": "Riprova dal profilo.", - "unavailableDescription": "Kilo Pass non è disponibile come acquisto in-app su Android. Gestiscilo sul web.", - "webManagementDescription": "Questo Kilo Pass è gestito sul web.", "legalDisclosure": "Kilo Pass è un abbonamento mensile a rinnovo automatico. Il pagamento viene addebitato sul tuo Apple ID alla conferma dell'acquisto. Gli abbonamenti si rinnovano automaticamente ogni mese al prezzo mostrato, a meno che non vengano annullati almeno 24 ore prima della fine del periodo corrente. Gestisci o annulla in qualsiasi momento nelle impostazioni del tuo account App Store.", "legalPrivacyPolicy": "Informativa sulla privacy", "legalTermsOfUse": "Termini di utilizzo (EULA)", diff --git a/apps/mobile/src/i18n/locales/ja.json b/apps/mobile/src/i18n/locales/ja.json index 11308ff2ef..e2ce8794af 100644 --- a/apps/mobile/src/i18n/locales/ja.json +++ b/apps/mobile/src/i18n/locales/ja.json @@ -2386,8 +2386,6 @@ "opensAppStoreManagement": "App Storeのサブスクリプション管理を開きます。", "opensPlans": "Kilo Passのプランを開きます。", "tryAgainFromProfile": "プロフィールからもう一度お試しください。", - "unavailableDescription": "Kilo Pass は Android のアプリ内課金では利用できません。Web で管理してください。", - "webManagementDescription": "この Kilo Pass は Web で管理されています。", "legalDisclosure": "Kilo Pass は自動更新の月額サブスクリプションです。購入の確認時に、お支払いは Apple ID に請求されます。サブスクリプションは、現在の期間終了の 24 時間前までに解約しない限り、表示された価格で毎月自動更新されます。App Store のアカウント設定でいつでも管理または解約できます。", "legalPrivacyPolicy": "プライバシーポリシー", "legalTermsOfUse": "利用規約 (EULA)", diff --git a/apps/mobile/src/i18n/locales/ka.json b/apps/mobile/src/i18n/locales/ka.json index 6507b403fb..f7cc9b9e81 100644 --- a/apps/mobile/src/i18n/locales/ka.json +++ b/apps/mobile/src/i18n/locales/ka.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store გამოწერის მართვას ხსნის.", "opensPlans": "Kilo Pass გეგმებს ხსნის.", "tryAgainFromProfile": "სცადეთ თავიდან პროფილიდან.", - "unavailableDescription": "Kilo Pass არ არის ხელმისაწვდომი Android-ზე აპლიკაციაში შესყიდვად. მართეთ იგი ინტერნეტში.", - "webManagementDescription": "ეს Kilo Pass ინტერნეტში იმართება.", "legalDisclosure": "Kilo Pass არის ავტომატურად განახლებადი ყოველთვიური გამოწერა. გადახდა ჩამოიჭრება თქვენი Apple ID-დან შეძენის დადასტურებისას. გამოწერა ავტომატურად განახლდება ყოველთვიურად მითითებულ ფასად, თუ არ გააუქმებთ მიმდინარე პერიოდის დასრულებამდე სულ მცირე 24 საათით ადრე. მართეთ ან გააუქმეთ ნებისმიერ დროს თქვენი App Store ანგარიშის პარამეტრებში.", "legalPrivacyPolicy": "კონფიდენციალურობის პოლიტიკა", "legalTermsOfUse": "გამოყენების პირობები (EULA)", diff --git a/apps/mobile/src/i18n/locales/kk.json b/apps/mobile/src/i18n/locales/kk.json index b408d40667..475fc65ba9 100644 --- a/apps/mobile/src/i18n/locales/kk.json +++ b/apps/mobile/src/i18n/locales/kk.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store жазылым басқаруын ашады.", "opensPlans": "Kilo Pass жоспарларын ашады.", "tryAgainFromProfile": "Профильден қайталап көріңіз.", - "unavailableDescription": "Kilo Pass Android-та қолданба ішіндегі сатып алу ретінде қолжетімді емес. Оны веб-сайтта басқарыңыз.", - "webManagementDescription": "Бұл Kilo Pass веб-сайтта басқарылады.", "legalDisclosure": "Kilo Pass — автоматты жаңартылатын айлық жазылым. Төлем сатып алуды растау кезінде Apple ID-ге есептеледі. Ағымдағы кезең аяқталмастан кемінде 24 сағат бұрын тоқтатылмаса, жазылымдар көрсетілген баға бойынша әр ай сайын автоматты түрде жаңартылады. Оны App Store тіркелгі баптауларында кез келген уақытта басқарыңыз немесе тоқтатыңыз.", "legalPrivacyPolicy": "Құпиялылық саясаты", "legalTermsOfUse": "Пайдалану шарттары (EULA)", diff --git a/apps/mobile/src/i18n/locales/km.json b/apps/mobile/src/i18n/locales/km.json index ecb3cb5b4b..42be59b48a 100644 --- a/apps/mobile/src/i18n/locales/km.json +++ b/apps/mobile/src/i18n/locales/km.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "បើកការគ្រប់គ្រងការជាវ App Store ។", "opensPlans": "បើកគម្រោង Kilo Pass ។", "tryAgainFromProfile": "ព្យាយាមម្តងទៀតពី Profile ។", - "unavailableDescription": "Kilo Pass មិនអាចប្រើបានជាការទិញក្នុងកម្មវិធីនៅលើ Android ទេ។ គ្រប់គ្រងវានៅលើបណ្ដាញ។", - "webManagementDescription": "Kilo Pass នេះត្រូវបានគ្រប់គ្រងនៅលើបណ្ដាញ។", "legalDisclosure": "Kilo Pass គឺជាការជាវប្រចាំខែដែលអាចបន្តដោយស្វ័យប្រវត្តិបាន។ ការទូទាត់នឹងត្រូវគិតលើ Apple ID របស់អ្នកនៅពេលបញ្ជាក់ការទិញ។ ការជាវត្រូវបន្តដោយស្វ័យប្រវត្តិរៀងរាល់ខែក្នុងតម្លៃដែលបង្ហាញ លុះត្រាតែលុបចោលយ៉ាងហោចណាស់ 24 ម៉ោងមុនចុងបញ្ចប់នៃរយៈពេលបច្ចុប្បន្ន។ គ្រប់គ្រង ឬលុបចោលនៅពេលណាក៏បាននៅក្នុងការកំណត់គណនី App Store របស់អ្នក។", "legalPrivacyPolicy": "គោលការណ៍ឯកជនភាព", "legalTermsOfUse": "លក្ខខណ្ឌនៃការប្រើប្រាស់ (EULA)", diff --git a/apps/mobile/src/i18n/locales/kn.json b/apps/mobile/src/i18n/locales/kn.json index c3385ec3db..8235583400 100644 --- a/apps/mobile/src/i18n/locales/kn.json +++ b/apps/mobile/src/i18n/locales/kn.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store ಚಂದಾದಾರಿಕೆ ನಿರ್ವಹಣೆಯನ್ನು ತೆರೆಯುತ್ತದೆ.", "opensPlans": "Kilo Pass ಯೋಜನೆಗಳನ್ನು ತೆರೆಯುತ್ತದೆ.", "tryAgainFromProfile": "ಪ್ರೊಫೈಲ್‌ನಿಂದ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.", - "unavailableDescription": "Kilo Pass Android ನಲ್ಲಿ ಇನ್-ಆಪ್ ಖರೀದಿಯಾಗಿ ಲಭ್ಯವಿಲ್ಲ. ಅದನ್ನು ವೆಬ್ನಲ್ಲಿ ನಿರ್ವಹಿಸಿ.", - "webManagementDescription": "ಈ Kilo Pass ವೆಬ್ನಲ್ಲಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ.", "legalDisclosure": "Kilo Pass ಸ್ವಯಂ-ನವೀಕರಿಸುವ ಮಾಸಿಕ ಚಂದಾದಾರಿಕೆಯಾಗಿದೆ. ಖರೀದಿಯ ದೃಢೀಕರಣದ ಸಮಯದಲ್ಲಿ ನಿಮ್ಮ Apple ID ಗೆ ಹಣವನ್ನು ವಿಧಿಸಲಾಗುತ್ತದೆ. ಪ್ರಸ್ತುತ ಅವಧಿಯ ಮುಕ್ತಾಯಕ್ಕೆ ಕನಿಷ್ಠ 24 ಗಂಟೆಗಳ ಮೊದಲು ರದ್ದುಮಾಡದ ಹೊರತು ಚಂದಾದಾರಿಕೆಗಳು ಪ್ರತಿ ತಿಂಗಳು ತೋರಿಸಿದ ಬೆಲೆಯಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನವೀಕರಿಸುತ್ತವೆ. ನಿಮ್ಮ App Store ಖಾತೆ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ನಿರ್ವಹಿಸಿ ಅಥವಾ ರದ್ದುಮಾಡಿ.", "legalPrivacyPolicy": "ಗೌಪ್ಯತಾ ನೀತಿ", "legalTermsOfUse": "ಬಳಕೆಯ ನಿಯಮಗಳು (EULA)", diff --git a/apps/mobile/src/i18n/locales/ko.json b/apps/mobile/src/i18n/locales/ko.json index bbf12f09c0..fb9ae70717 100644 --- a/apps/mobile/src/i18n/locales/ko.json +++ b/apps/mobile/src/i18n/locales/ko.json @@ -2386,8 +2386,6 @@ "opensAppStoreManagement": "App Store 구독 관리를 엽니다.", "opensPlans": "Kilo Pass 요금제를 엽니다.", "tryAgainFromProfile": "프로필에서 다시 시도하세요.", - "unavailableDescription": "Kilo Pass는 Android에서 인앱 구매로 이용할 수 없습니다. 웹에서 관리하세요.", - "webManagementDescription": "이 Kilo Pass는 웹에서 관리됩니다.", "legalDisclosure": "Kilo Pass는 자동 갱신되는 월간 구독입니다. 결제는 구매 확인 시 Apple ID로 청구됩니다. 구독은 현재 기간 종료 24시간 전까지 취소하지 않으면 표시된 가격으로 매월 자동 갱신됩니다. App Store 계정 설정에서 언제든지 관리하거나 취소할 수 있습니다.", "legalPrivacyPolicy": "개인정보 처리방침", "legalTermsOfUse": "이용 약관 (EULA)", diff --git a/apps/mobile/src/i18n/locales/lo.json b/apps/mobile/src/i18n/locales/lo.json index 84902c8cc2..490086b79b 100644 --- a/apps/mobile/src/i18n/locales/lo.json +++ b/apps/mobile/src/i18n/locales/lo.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "ເປີດການຈັດການການສະໝັກ App Store.", "opensPlans": "ເປີດແຜນ Kilo Pass.", "tryAgainFromProfile": "ລອງອີກຈາກ Profile.", - "unavailableDescription": "Kilo Pass ບໍ່ມີໃຫ້ຊື້ພາຍໃນແອັບໃນ Android. ຈັດການມັນຢູ່ເວັບ.", - "webManagementDescription": "Kilo Pass ນີ້ຖືກຈັດການຢູ່ເວັບ.", "legalDisclosure": "Kilo Pass ເປັນການສະໝັກສະມາຊິກລາຍເດືອນທີ່ຕໍ່ອັດຕະໂນມັດ. ການຊຳລະຈະຖືກຄິດຄ່າຈາກ Apple ID ຂອງທ່ານເມື່ອຢືນຢັນການຊື້. ການສະໝັກຈະຕໍ່ອັດຕະໂນມັດທຸກເດືອນໃນລາຄາທີ່ສະແດງ ເວັ້ນເສຍແຕ່ຍົກເລີກຢ່າງໜ້ອຍ 24 ຊົ່ວໂມງກ່ອນສິ້ນສຸດໄລຍະປັດຈຸບັນ. ຈັດການ ຫຼື ຍົກເລີກໄດ້ທຸກເວລາໃນການຕັ້ງຄ່າບັນຊີ App Store.", "legalPrivacyPolicy": "ນະໂຍບາຍຄວາມເປັນສ່ວນຕົວ", "legalTermsOfUse": "ຂໍ້ກຳນົດການນຳໃຊ້ (EULA)", diff --git a/apps/mobile/src/i18n/locales/lt.json b/apps/mobile/src/i18n/locales/lt.json index 91280bc956..537dbc5037 100644 --- a/apps/mobile/src/i18n/locales/lt.json +++ b/apps/mobile/src/i18n/locales/lt.json @@ -2880,8 +2880,6 @@ "opensAppStoreManagement": "Atidaro App Store prenumeratos valdymą.", "opensPlans": "Atidaro Kilo Pass planus.", "tryAgainFromProfile": "Bandykite dar kartą iš profilio.", - "unavailableDescription": "„Kilo Pass“ negalima įsigyti programoje „Android“ sistemoje. Tvarkykite jį internete.", - "webManagementDescription": "Šis „Kilo Pass“ tvarkomas internete.", "legalDisclosure": "„Kilo Pass“ yra automatiškai atnaujinama mėnesinė prenumerata. Mokėjimas nuskaitomas iš jūsų „Apple ID“ patvirtinus pirkimą. Prenumeratos atnaujinamos automatiškai kiekvieną mėnesį nurodyta kaina, nebent atšauksite ne vėliau kaip likus 24 valandoms iki einamojo laikotarpio pabaigos. Tvarkykite arba atšaukite bet kada „App Store“ paskyros nustatymuose.", "legalPrivacyPolicy": "Privatumo politika", "legalTermsOfUse": "Naudojimo sąlygos (EULA)", diff --git a/apps/mobile/src/i18n/locales/lv.json b/apps/mobile/src/i18n/locales/lv.json index 1df0a746ff..61ea44ec27 100644 --- a/apps/mobile/src/i18n/locales/lv.json +++ b/apps/mobile/src/i18n/locales/lv.json @@ -2860,8 +2860,6 @@ "opensAppStoreManagement": "Atver App Store abonementu pārvaldību.", "opensPlans": "Atver Kilo Pass plānus.", "tryAgainFromProfile": "Mēģini vēlreiz no profila.", - "unavailableDescription": "Kilo Pass nav pieejams kā pirkums lietotnē operētājsistēmā Android. Pārvaldiet to tīmeklī.", - "webManagementDescription": "Šis Kilo Pass tiek pārvaldīts tīmeklī.", "legalDisclosure": "Kilo Pass ir automātiski atjaunojams mēneša abonements. Maksājums tiek iekasēts no jūsu Apple ID pirkuma apstiprināšanas brīdī. Abonements katru mēnesi atjaunojas automātiski par norādīto cenu, ja vien tas netiek atcelts vismaz 24 stundas pirms pašreizējā perioda beigām. Pārvaldiet vai atceliet to jebkurā laikā sava App Store konta iestatījumos.", "legalPrivacyPolicy": "Privātuma politika", "legalTermsOfUse": "Lietošanas noteikumi (EULA)", diff --git a/apps/mobile/src/i18n/locales/mg.json b/apps/mobile/src/i18n/locales/mg.json index 129bdd7646..6f3b75c1cd 100644 --- a/apps/mobile/src/i18n/locales/mg.json +++ b/apps/mobile/src/i18n/locales/mg.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Misokatra ny fitantanana abonnement App Store.", "opensPlans": "Misokatra ny drafitra Kilo Pass.", "tryAgainFromProfile": "Andramo indray avy amin'ny Profile.", - "unavailableDescription": "Tsy misy Kilo Pass ho famandrihana ao amin'ny rindranasa amin'ny Android. Tantano amin'ny tranonkala.", - "webManagementDescription": "Io Kilo Pass io dia tantanina amin'ny tranonkala.", "legalDisclosure": "Kilo Pass dia famandrihana isam-bolana azo havaozina ho azy. Alaina amin'ny Apple ID anao ny fandoavam-bola rehefa hamafisina ny fividianana. Havaozina ho azy ny famandrihana isam-bolana amin'ny vidiny aseho raha tsy foanana 24 ora farafahakeliny alohan'ny fiafaran'ny fe-potoana ankehitriny. Tantano na foano isaky ny te ianao amin'ny fikandrana kaonty App Store anao.", "legalPrivacyPolicy": "Politika momba ny fiainana manokana", "legalTermsOfUse": "Fepetran'ny fampiasana (EULA)", diff --git a/apps/mobile/src/i18n/locales/mi.json b/apps/mobile/src/i18n/locales/mi.json index 41bc8b019a..b152f2ed7e 100644 --- a/apps/mobile/src/i18n/locales/mi.json +++ b/apps/mobile/src/i18n/locales/mi.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Ka whakatuwhera i te whakahaere ohaurunga App Store.", "opensPlans": "Ka whakatuwhera i ngā mahere Kilo Pass.", "tryAgainFromProfile": "Whakamātau anō mai i te Kōtaha.", - "unavailableDescription": "Kāore e waatea a Kilo Pass hei hokonga i roto i te taputapu ki runga i te Android. Whakahaerehia i runga i te paetukutuku.", - "webManagementDescription": "Kei te whakahaeretia tēnei Kilo Pass i runga i te paetukutuku.", "legalDisclosure": "He ohinga ā-marama e hoko aunoatia ana a Kilo Pass. Ka utua te utu ki tō Apple ID i te whakaaetanga o te hoko. Ka whakahoutia aunoatia ngā ohinga ia marama ki te utu e whakaaturia ana ki te kore e whakakorengia kia 24 hāora i mua i te mutunga o te wā o nāianei. Whakahaerehia, whakakorea rānei i ngā wā katoa i roto i tō tautuhinga pūkete App Store.", "legalPrivacyPolicy": "Kaupapahere Tūmataiti", "legalTermsOfUse": "Tikanga Whakamahi (EULA)", diff --git a/apps/mobile/src/i18n/locales/mk.json b/apps/mobile/src/i18n/locales/mk.json index bbadeca350..c1bcce8e66 100644 --- a/apps/mobile/src/i18n/locales/mk.json +++ b/apps/mobile/src/i18n/locales/mk.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Отвора управување со претплата во App Store.", "opensPlans": "Отвора Kilo Pass планови.", "tryAgainFromProfile": "Обидете се повторно од Профил.", - "unavailableDescription": "Kilo Pass не е достапен како купување во апликацијата на Android. Управувајте со него на веб.", - "webManagementDescription": "Овој Kilo Pass се управува на веб.", "legalDisclosure": "Kilo Pass е автоматски обновлива месечна претплата. Плаќањето се наплаќа на вашиот Apple ID при потврдување на купувањето. Претплатите автоматски се обновуваат секој месец по прикажаната цена, освен ако не се откажат најмалку 24 часа пред крајот на тековниот период. Управувајте или откажете во секое време во поставките на вашата App Store сметка.", "legalPrivacyPolicy": "Политика за приватност", "legalTermsOfUse": "Услови за користење (EULA)", diff --git a/apps/mobile/src/i18n/locales/ml.json b/apps/mobile/src/i18n/locales/ml.json index 4f9823a3c5..cfdec0465c 100644 --- a/apps/mobile/src/i18n/locales/ml.json +++ b/apps/mobile/src/i18n/locales/ml.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store സബ്സ്ക്രിപ്ഷൻ മാനേജ്മെന്റ് തുറക്കുന്നു.", "opensPlans": "Kilo Pass പ്ലാനുകൾ തുറക്കുന്നു.", "tryAgainFromProfile": "പ്രൊഫൈലിൽ നിന്ന് വീണ്ടും ശ്രമിക്കുക.", - "unavailableDescription": "കിലോ പാസ് Android-ൽ ഒരു ഇൻ-ആപ്പ് വാങ്ങലായി ലഭ്യമല്ല. ഇത് വെബിൽ കൈകാര്യം ചെയ്യുക.", - "webManagementDescription": "ഈ കിലോ പാസ് വെബിൽ കൈകാര്യം ചെയ്യപ്പെടുന്നു.", "legalDisclosure": "കിലോ പാസ് ഒരു യാന്ത്രിക-പുതുക്കാവുന്ന പ്രതിമാസ സബ്സ്ക്രിപ്ഷൻ ആണ്. വാങ്ങൽ സ്ഥിരീകരിക്കുമ്പോൾ നിങ്ങളുടെ Apple ID-യിൽ നിന്ന് പേയ്മെന്റ് ഈടാക്കുന്നു. നിലവിലെ കാലയളവ് അവസാനിക്കുന്നതിന് കുറഞ്ഞത് 24 മണിക്കൂർ മുമ്പ് റദ്ദാക്കിയില്ലെങ്കിൽ സബ്സ്ക്രിപ്ഷനുകൾ ഓരോ മാസവും കാണിച്ചിരിക്കുന്ന വിലയിൽ സ്വയമേവ പുതുക്കുന്നു. നിങ്ങളുടെ App Store അക്കൗണ്ട് ക്രമീകരണങ്ങളിൽ എപ്പോൾ വേണമെങ്കിലും കൈകാര്യം ചെയ്യുക അല്ലെങ്കിൽ റദ്ദാക്കുക.", "legalPrivacyPolicy": "സ്വകാര്യതാ നയം", "legalTermsOfUse": "ഉപയോഗ നിബന്ധനകൾ (EULA)", diff --git a/apps/mobile/src/i18n/locales/mn.json b/apps/mobile/src/i18n/locales/mn.json index ee0e33725b..d56690cf77 100644 --- a/apps/mobile/src/i18n/locales/mn.json +++ b/apps/mobile/src/i18n/locales/mn.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store захиалгын удирдлагыг нээнэ.", "opensPlans": "Kilo Pass төлөвлөгөөг нээнэ.", "tryAgainFromProfile": "Профайлаас дахин оролдоно уу.", - "unavailableDescription": "Kilo Pass нь Android дээр апп доторх худалдан авалтаар авах боломжгүй. Үүнийг вэб дээр удирд.", - "webManagementDescription": "Энэ Kilo Pass вэб дээр удирдагддаг.", "legalDisclosure": "Kilo Pass нь автоматаар шинэчлэгддэг сарын захиалга юм. Худалдан авалтыг баталгаажуулснаар төлбөрийг таны Apple ID-ээс авна. Захиалга нь одоогийн хугацаа дуусахаас дор хаяж 24 цагийн өмнө цуцлахгүй бол харуулсан үнээр сар бүр автоматаар шинэчлэгддэг. App Store бүртгэлийн тохиргооноос хүссэн үедээ удирдах эсвэл цуцлах боломжтой.", "legalPrivacyPolicy": "Нууцлалын бодлого", "legalTermsOfUse": "Ашиглах нөхцөл (EULA)", diff --git a/apps/mobile/src/i18n/locales/mr.json b/apps/mobile/src/i18n/locales/mr.json index 1420c3e6a1..65774f4ede 100644 --- a/apps/mobile/src/i18n/locales/mr.json +++ b/apps/mobile/src/i18n/locales/mr.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store सदस्यत्व व्यवस्थापन उघडते.", "opensPlans": "Kilo Pass प्लॅन्स उघडते.", "tryAgainFromProfile": "प्रोफाइलमधून पुन्हा प्रयत्न करा.", - "unavailableDescription": "Kilo Pass Android वर अॅपमधील खरेदी म्हणून उपलब्ध नाही. ते वेबवर व्यवस्थापित करा.", - "webManagementDescription": "हे Kilo Pass वेबवर व्यवस्थापित केले जाते.", "legalDisclosure": "Kilo Pass ही आपोआप नूतनीकरण होणारी मासिक सदस्यता आहे. खरेदीच्या पुष्टीकरणावर पेमेंट तुमच्या Apple ID वर आकारले जाते. सदस्यता सध्याच्या कालावधीच्या समाप्तीच्या किमान 24 तास आधी रद्द न केल्यास दरमहा दाखवलेल्या किंमतीवर आपोआप नूतनीकरण होते. तुमच्या App Store खाते सेटिंग्जमध्ये कधीही व्यवस्थापित करा किंवा रद्द करा.", "legalPrivacyPolicy": "गोपनीयता धोरण", "legalTermsOfUse": "वापराच्या अटी (EULA)", diff --git a/apps/mobile/src/i18n/locales/ms.json b/apps/mobile/src/i18n/locales/ms.json index 9f60ce34bc..20ac0d342a 100644 --- a/apps/mobile/src/i18n/locales/ms.json +++ b/apps/mobile/src/i18n/locales/ms.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Membuka pengurusan langganan App Store.", "opensPlans": "Membuka pelan Kilo Pass.", "tryAgainFromProfile": "Cuba lagi daripada Profil.", - "unavailableDescription": "Kilo Pass tidak tersedia sebagai pembelian dalam aplikasi pada Android. Urusnya di web.", - "webManagementDescription": "Kilo Pass ini diuruskan di web.", "legalDisclosure": "Kilo Pass ialah langganan bulanan auto-boleh diperbaharui. Bayaran dicaj ke Apple ID anda semasa pengesahan pembelian. Langganan diperbaharui secara automatik setiap bulan pada harga yang dipaparkan melainkan dibatalkan sekurang-kurangnya 24 jam sebelum tamat tempoh semasa. Urus atau batalkan pada bila-bila masa dalam tetapan akaun App Store anda.", "legalPrivacyPolicy": "Dasar Privasi", "legalTermsOfUse": "Terma Penggunaan (EULA)", diff --git a/apps/mobile/src/i18n/locales/mt.json b/apps/mobile/src/i18n/locales/mt.json index c5407394bd..21e0f4d68a 100644 --- a/apps/mobile/src/i18n/locales/mt.json +++ b/apps/mobile/src/i18n/locales/mt.json @@ -2900,8 +2900,6 @@ "opensAppStoreManagement": "Jiftaħ il-ġestjoni tas-sottoskrizzjoni fl-App Store.", "opensPlans": "Jiftaħ il-pjanijiet ta' Kilo Pass.", "tryAgainFromProfile": "Erġa' ipprova mill-Profil.", - "unavailableDescription": "Kilo Pass mhux disponibbli bħala xiri fl-app fuq Android. Immaniġġjah fuq il-web.", - "webManagementDescription": "Dan il-Kilo Pass jitmexxa fuq il-web.", "legalDisclosure": "Kilo Pass huwa abbonament mensili li jiġġedded awtomatikament. Il-ħlas jitħallas mill-Apple ID tiegħek fil-konferma tax-xiri. L-abbonamenti jiġġeddu awtomatikament kull xahar bil-prezz muri sakemm ma jitħassrux mill-inqas 24 siegħa qabel it-tmiem tal-perjodu attwali. Immaniġġja jew ikkanċella fi kwalunkwe ħin fis-settings tal-kont tal-App Store tiegħek.", "legalPrivacyPolicy": "Politika tal-Privatezza", "legalTermsOfUse": "Termini tal-Użu (EULA)", diff --git a/apps/mobile/src/i18n/locales/my.json b/apps/mobile/src/i18n/locales/my.json index fc2fc6c1aa..287f3d491a 100644 --- a/apps/mobile/src/i18n/locales/my.json +++ b/apps/mobile/src/i18n/locales/my.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store subscription စီမံခန့်ခွဲမှုကို ဖွင့်သည်။", "opensPlans": "Kilo Pass အစီအစဉ်များကို ဖွင့်သည်။", "tryAgainFromProfile": "Profile မှ ထပ်ကြိုးစားပါ။", - "unavailableDescription": "Kilo Pass ကို Android တွင် in-app ဝယ်​ယူ​မှု အဖြစ် မရ​ရှိ​နိုင်​ပါ​။ ဝဘ်တွင် စီမံ​ပါ​။", - "webManagementDescription": "ဤ Kilo Pass ကို ဝဘ်တွင် စီမံ​သည်​။", "legalDisclosure": "Kilo Pass သည် အလိုအလျောက် သက်တမ်းတိုးနိုင်သော လစဉ် စာရင်းသွင်းမှု တစ်ခု ဖြစ်သည်။ ဝယ်ယူမှုကို အတည်ပြုချိန်တွင် သင့် Apple ID မှ ငွေကောက်ခံသည်။ လက်ရှိကာလမကုန်မီ အနည်းဆုံး ၂၄ နာရီကြိုတင် မဖျက်သိမ်းပါက စာရင်းသွင်းမှုများသည် ပြသထားသော ဈေးနှုန်းဖြင့် လစဉ် အလိုအလျောက် သက်တမ်းတိုးသည်။ သင့် App Store အကောင့်ဆက်တင်များတွင် အချိန်မရွေး စီမံပါ သို့မဟုတ် ဖျက်သိမ်းပါ။", "legalPrivacyPolicy": "ကိုယ်ရေးကိုယ်တာမူဝါဒ", "legalTermsOfUse": "အသုံးပြုမှု စည်းကမ်းများ (EULA)", diff --git a/apps/mobile/src/i18n/locales/nb.json b/apps/mobile/src/i18n/locales/nb.json index 29fa80abcf..5985a9b4cf 100644 --- a/apps/mobile/src/i18n/locales/nb.json +++ b/apps/mobile/src/i18n/locales/nb.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Åpner App Store-abonnementsadministrasjon.", "opensPlans": "Åpner Kilo Pass-planer.", "tryAgainFromProfile": "Prøv igjen fra Profil.", - "unavailableDescription": "Kilo Pass er ikke tilgjengelig som et kjøp i appen på Android. Administrer det på nettet.", - "webManagementDescription": "Denne Kilo Pass-en administreres på nettet.", "legalDisclosure": "Kilo Pass er et automatisk fornybart månedsabonnement. Betaling belastes Apple-ID-en din ved bekreftelse av kjøpet. Abonnementet fornyes automatisk hver måned til prisen som vises, med mindre det kanselleres minst 24 timer før slutten av gjeldende periode. Administrer eller kanseller når som helst i App Store-kontoinnstillingene.", "legalPrivacyPolicy": "Personvernerklæring", "legalTermsOfUse": "Bruksvilkår (EULA)", diff --git a/apps/mobile/src/i18n/locales/ne.json b/apps/mobile/src/i18n/locales/ne.json index bf1a2d3b17..48fb62facd 100644 --- a/apps/mobile/src/i18n/locales/ne.json +++ b/apps/mobile/src/i18n/locales/ne.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store सदस्यता व्यवस्थापन खोल्छ।", "opensPlans": "Kilo Pass योजनाहरू खोल्छ।", "tryAgainFromProfile": "Profile बाट फेरि प्रयास गर्नुहोस्।", - "unavailableDescription": "Kilo Pass Android मा इन-एप खरिदको रूपमा उपलब्ध छैन। यसलाई वेबमा व्यवस्थापन गर्नुहोस्।", - "webManagementDescription": "यो Kilo Pass वेबमा व्यवस्थापन गरिएको छ।", "legalDisclosure": "Kilo Pass स्वतः नवीकरण हुने मासिक सदस्यता हो। खरिद पुष्टि हुँदा भुक्तानी तपाईंको Apple ID बाट लिइन्छ। हालको अवधि समाप्त हुनु कम्तीमा २४ घण्टा अगाडि रद्द नगरेसम्म सदस्यता प्रत्येक महिना देखाइएको मूल्यमा स्वतः नवीकरण हुन्छ। आफ्नो App Store खाता सेटिङमा जुनसुकै बेला व्यवस्थापन वा रद्द गर्नुहोस्।", "legalPrivacyPolicy": "गोपनीयता नीति", "legalTermsOfUse": "प्रयोगका सर्तहरू (EULA)", diff --git a/apps/mobile/src/i18n/locales/nl.json b/apps/mobile/src/i18n/locales/nl.json index 3193d0272d..e9cae2f148 100644 --- a/apps/mobile/src/i18n/locales/nl.json +++ b/apps/mobile/src/i18n/locales/nl.json @@ -2386,8 +2386,6 @@ "opensAppStoreManagement": "Opent abonnementsbeheer in de App Store.", "opensPlans": "Opent Kilo Pass-abonnementen.", "tryAgainFromProfile": "Probeer het opnieuw via Profiel.", - "unavailableDescription": "Kilo Pass is niet beschikbaar als aankoop in de app op Android. Beheer het op het web.", - "webManagementDescription": "Deze Kilo Pass wordt op het web beheerd.", "legalDisclosure": "Kilo Pass is een maandelijks abonnement dat automatisch wordt verlengd. De betaling wordt bij bevestiging van de aankoop in rekening gebracht op je Apple ID. Abonnementen worden elke maand automatisch verlengd voor de weergegeven prijs, tenzij je ten minste 24 uur voor het einde van de huidige periode opzegt. Beheer of annuleer op elk moment in de accountinstellingen van de App Store.", "legalPrivacyPolicy": "Privacybeleid", "legalTermsOfUse": "Gebruiksvoorwaarden (EULA)", diff --git a/apps/mobile/src/i18n/locales/om.json b/apps/mobile/src/i18n/locales/om.json index 90895dc987..8524560857 100644 --- a/apps/mobile/src/i18n/locales/om.json +++ b/apps/mobile/src/i18n/locales/om.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Bulchiinsa hubboo App Store bana.", "opensPlans": "Karoora Kilo Pass bana.", "tryAgainFromProfile": "Profile irraa ammas yaali.", - "unavailableDescription": "Kilo Pass bilbila Android irratti bitachuu keessatti hin argamu. Weeb irratti bulchi.", - "webManagementDescription": "Kilo Pass kun weeb irratti bulchama.", "legalDisclosure": "Kilo Pass ji'aan haaromsu subscription dha. Kaffaltiin Apple ID kee irratti yeroo bitachuu mirkaneeffamu ni itti baafama. Subscription'n ji'a ji'aan gatii mul'atuun ni haaroma, yoo yeroo dhumaa dura sa'aatii 24 dura hin haaromsine malee. Yeroo kamillee App Store account keessaa bulchi ykn haqi.", "legalPrivacyPolicy": "Imaammata Iccitii", "legalTermsOfUse": "Caaccuu Itti Fayyadamaa (EULA)", diff --git a/apps/mobile/src/i18n/locales/or.json b/apps/mobile/src/i18n/locales/or.json index a1000872cd..f653e783b1 100644 --- a/apps/mobile/src/i18n/locales/or.json +++ b/apps/mobile/src/i18n/locales/or.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store ସବସ୍କ୍ରିପସନ୍ ପରିଚାଳନା ଖୋଲେ।", "opensPlans": "Kilo Pass ଯୋଜନା ଖୋଲେ।", "tryAgainFromProfile": "ପ୍ରୋଫାଇଲରୁ ପୁନର୍ବାର ଚେଷ୍ଟା କରନ୍ତୁ।", - "unavailableDescription": "Kilo Pass ଆଣ୍ଡ୍ରଏଡରେ ଏକ ଇନ୍-ଆପ୍ କିଣିବା ଭାବରେ ଉପଲବ୍ଧ ନୁହେଁ। ଏହାକୁ ୱେବରେ ପରିଚାଳନା କରନ୍ତୁ।", - "webManagementDescription": "ଏହି Kilo Pass ୱେବରେ ପରିଚାଳିତ ହୁଏ।", "legalDisclosure": "Kilo Pass ଏକ ସ୍ୱୟଂ-ନବୀକରଣୀୟ ମାସିକ ସବସ୍କ୍ରିପ୍ସନ୍। କିଣିବା ସମୟରେ ଆପଣଙ୍କ Apple ID ରୁ ଭୁକ୍ତାନ ଆଦାୟ ହୁଏ। ସବସ୍କ୍ରିପ୍ସନ୍ ପ୍ରତି ମାସରେ ଦର୍ଶାଯାଇଥିବା ମୂଲ୍ୟରେ ସ୍ୱୟଂଚାଳିତ ଭାବରେ ନବୀକରଣ ହୁଏ, ଯଦି ବର୍ତ୍ତମାନର ଅବଧି ସମାପ୍ତ ହେବାର ଅତି କମରେ ୨୪ ଘଣ୍ଟା ପୂର୍ବରୁ ବାତିଲ କରାନଯାଏ। ଆପଣଙ୍କ App Store ଆକାଉଣ୍ଟ ସେଟିଂସରେ ଯେକୌଣସି ସମୟରେ ପରିଚାଳନା କିମ୍ବା ବାତିଲ କରନ୍ତୁ।", "legalPrivacyPolicy": "ଗୋପନୀୟତା ନୀତି", "legalTermsOfUse": "ବ୍ୟବହାର ନିୟମାବଳୀ (EULA)", diff --git a/apps/mobile/src/i18n/locales/pa.json b/apps/mobile/src/i18n/locales/pa.json index 8abf5c2d04..aa302577c4 100644 --- a/apps/mobile/src/i18n/locales/pa.json +++ b/apps/mobile/src/i18n/locales/pa.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "ਐਪ ਸਟੋਰ ਗਾਹਕੀ ਪ੍ਰਬੰਧਨ ਖੋਲ੍ਹਦਾ ਹੈ।", "opensPlans": "Kilo Pass ਯੋਜਨਾਵਾਂ ਖੋਲ੍ਹਦਾ ਹੈ।", "tryAgainFromProfile": "ਪ੍ਰੋਫਾਈਲ ਤੋਂ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।", - "unavailableDescription": "Android 'ਤੇ Kilo Pass ਇਨ-ਐਪ ਖਰੀਦ ਵਜੋਂ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਇਸਨੂੰ ਵੈੱਬ 'ਤੇ ਪ੍ਰਬੰਧਿਤ ਕਰੋ।", - "webManagementDescription": "ਇਹ Kilo Pass ਵੈੱਬ 'ਤੇ ਪ੍ਰਬੰਧਿਤ ਹੈ।", "legalDisclosure": "Kilo Pass ਇੱਕ ਆਟੋ-ਰੀਨਿਊ ਹੋਣ ਵਾਲੀ ਮਹੀਨਾਵਾਰ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਹੈ। ਭੁਗਤਾਨ ਖਰੀਦ ਦੀ ਪੁਸ਼ਟੀ 'ਤੇ ਤੁਹਾਡੀ Apple ID ਤੋਂ ਕੱਟਿਆ ਜਾਂਦਾ ਹੈ। ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਮੌਜੂਦਾ ਮਿਆਦ ਦੇ ਖਤਮ ਹੋਣ ਤੋਂ ਘੱਟੋ ਘੱਟ 24 ਘੰਟੇ ਪਹਿਲਾਂ ਰੱਦ ਨਾ ਕੀਤੇ ਜਾਣ 'ਤੇ ਦਿਖਾਈ ਗਈ ਕੀਮਤ 'ਤੇ ਹਰ ਮਹੀਨੇ ਆਪਣੇ ਆਪ ਰੀਨਿਊ ਹੁੰਦੀਆਂ ਹਨ। ਆਪਣੀ App Store ਖਾਤਾ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਕਿਸੇ ਵੀ ਸਮੇਂ ਪ੍ਰਬੰਧਿਤ ਜਾਂ ਰੱਦ ਕਰੋ।", "legalPrivacyPolicy": "ਗੋਪਨੀਯਤਾ ਨੀਤੀ", "legalTermsOfUse": "ਵਰਤੋਂ ਦੀਆਂ ਸ਼ਰਤਾਂ (EULA)", diff --git a/apps/mobile/src/i18n/locales/pl.json b/apps/mobile/src/i18n/locales/pl.json index b70a706d60..589f8b4e2e 100644 --- a/apps/mobile/src/i18n/locales/pl.json +++ b/apps/mobile/src/i18n/locales/pl.json @@ -2412,8 +2412,6 @@ "opensAppStoreManagement": "Otwiera zarządzanie subskrypcją w App Store.", "opensPlans": "Otwiera plany Kilo Pass.", "tryAgainFromProfile": "Spróbuj ponownie z profilu.", - "unavailableDescription": "Kilo Pass nie jest dostępny jako zakup w aplikacji na Androidzie. Zarządzaj nim w sieci.", - "webManagementDescription": "Ten Kilo Pass jest zarządzany w sieci.", "legalDisclosure": "Kilo Pass to automatycznie odnawiana subskrypcja miesięczna. Płatność jest pobierana z Twojego Apple ID przy potwierdzeniu zakupu. Subskrypcja odnawia się automatycznie co miesiąc po podanej cenie, chyba że anulujesz ją co najmniej 24 godziny przed końcem bieżącego okresu. Zarządzaj nią lub anuluj ją w dowolnym momencie w ustawieniach konta App Store.", "legalPrivacyPolicy": "Polityka prywatności", "legalTermsOfUse": "Warunki korzystania (EULA)", diff --git a/apps/mobile/src/i18n/locales/ps.json b/apps/mobile/src/i18n/locales/ps.json index 3c857d5704..3194c859db 100644 --- a/apps/mobile/src/i18n/locales/ps.json +++ b/apps/mobile/src/i18n/locales/ps.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "د App Store د ګډون مدیریت پرانیزي.", "opensPlans": "د Kilo Pass پلانونه پرانیزي.", "tryAgainFromProfile": "له پروفایل څخه بیا هڅه وکړئ.", - "unavailableDescription": "Kilo Pass په Android کې د in-app پیرود په توګه نه شته. دا په ویب کې اداره کړئ.", - "webManagementDescription": "دا Kilo Pass په ویب کې اداره کیږي.", "legalDisclosure": "Kilo Pass یو خودکار تازه کېدونکی میاشتنی ګډون دی. پیسې ستاسو Apple ID ته د پیرود د تایید په وخت کې اخیستل کیږي. ګډونونه هر میاشت په ښودل شوي نرخ باندې په اتوماتیک ډول نوي کیږي، پرته له دې چې د اوسنۍ مودې له پای ته رسېدو ۲۴ ساعته مخکې لغوه شي. هر وخت د خپل App Store حساب تنظیماتو کې اداره یا لغوه کړئ.", "legalPrivacyPolicy": "د محرمیت پالیسي", "legalTermsOfUse": "د استعمال شرایط (EULA)", diff --git a/apps/mobile/src/i18n/locales/pt-BR.json b/apps/mobile/src/i18n/locales/pt-BR.json index 3b9f47d20d..d7ed2ce653 100644 --- a/apps/mobile/src/i18n/locales/pt-BR.json +++ b/apps/mobile/src/i18n/locales/pt-BR.json @@ -2399,8 +2399,6 @@ "opensAppStoreManagement": "Abre o gerenciamento de assinatura da App Store.", "opensPlans": "Abre os planos do Kilo Pass.", "tryAgainFromProfile": "Tente novamente no Perfil.", - "unavailableDescription": "O Kilo Pass não está disponível como compra no app no Android. Gerencie-o na web.", - "webManagementDescription": "Este Kilo Pass é gerenciado na web.", "legalDisclosure": "O Kilo Pass é uma assinatura mensal com renovação automática. O pagamento é cobrado na sua Apple ID na confirmação da compra. As assinaturas são renovadas automaticamente todos os meses pelo preço exibido, a menos que sejam canceladas pelo menos 24 horas antes do fim do período atual. Gerencie ou cancele a qualquer momento nas configurações da sua conta na App Store.", "legalPrivacyPolicy": "Política de Privacidade", "legalTermsOfUse": "Termos de Uso (EULA)", diff --git a/apps/mobile/src/i18n/locales/pt.json b/apps/mobile/src/i18n/locales/pt.json index b61e98ddcc..7c2a89a5d7 100644 --- a/apps/mobile/src/i18n/locales/pt.json +++ b/apps/mobile/src/i18n/locales/pt.json @@ -2860,8 +2860,6 @@ "opensAppStoreManagement": "Abre a gestão de subscrições da App Store.", "opensPlans": "Abre os planos do Kilo Pass.", "tryAgainFromProfile": "Volte a tentar a partir do Perfil.", - "unavailableDescription": "O Kilo Pass não está disponível como compra na aplicação no Android. Faça a gestão na web.", - "webManagementDescription": "Este Kilo Pass é gerido na web.", "legalDisclosure": "O Kilo Pass é uma subscrição mensal renovável automaticamente. O pagamento é cobrado no seu Apple ID na confirmação da compra. As subscrições renovam-se automaticamente todos os meses pelo preço indicado, exceto se forem canceladas pelo menos 24 horas antes do fim do período atual. Faça a gestão ou cancele a qualquer momento nas definições da sua conta da App Store.", "legalPrivacyPolicy": "Política de Privacidade", "legalTermsOfUse": "Termos de Utilização (EULA)", diff --git a/apps/mobile/src/i18n/locales/ro.json b/apps/mobile/src/i18n/locales/ro.json index 1524d52fd3..7464833431 100644 --- a/apps/mobile/src/i18n/locales/ro.json +++ b/apps/mobile/src/i18n/locales/ro.json @@ -2860,8 +2860,6 @@ "opensAppStoreManagement": "Deschide gestionarea abonamentului App Store.", "opensPlans": "Deschide planurile Kilo Pass.", "tryAgainFromProfile": "Încearcă din nou din Profil.", - "unavailableDescription": "Kilo Pass nu este disponibil ca achiziție în aplicație pe Android. Gestionează-l pe web.", - "webManagementDescription": "Acest Kilo Pass este gestionat pe web.", "legalDisclosure": "Kilo Pass este un abonament lunar cu reînnoire automată. Plata este încasată de pe Apple ID la confirmarea achiziției. Abonamentele se reînnoiesc automat în fiecare lună la prețul afișat, dacă nu sunt anulate cu cel puțin 24 de ore înainte de sfârșitul perioadei curente. Gestionează sau anulează oricând în setările contului tău App Store.", "legalPrivacyPolicy": "Politica de confidențialitate", "legalTermsOfUse": "Termeni și condiții (EULA)", diff --git a/apps/mobile/src/i18n/locales/ru.json b/apps/mobile/src/i18n/locales/ru.json index f96ca30b6b..ea47910781 100644 --- a/apps/mobile/src/i18n/locales/ru.json +++ b/apps/mobile/src/i18n/locales/ru.json @@ -2412,8 +2412,6 @@ "opensAppStoreManagement": "Открывает управление подпиской в App Store.", "opensPlans": "Открывает тарифы Kilo Pass.", "tryAgainFromProfile": "Повторите попытку в профиле.", - "unavailableDescription": "Kilo Pass недоступен как покупка в приложении на Android. Управляйте им в веб-версии.", - "webManagementDescription": "Этот Kilo Pass управляется в веб-версии.", "legalDisclosure": "Kilo Pass — это ежемесячная подписка с автоматическим продлением. Платёж списывается с вашего Apple ID при подтверждении покупки. Подписка продлевается автоматически каждый месяц по указанной цене, если её не отменить не менее чем за 24 часа до конца текущего периода. Управляйте подпиской или отменяйте её в любой момент в настройках учётной записи App Store.", "legalPrivacyPolicy": "Политика конфиденциальности", "legalTermsOfUse": "Условия использования (EULA)", diff --git a/apps/mobile/src/i18n/locales/si.json b/apps/mobile/src/i18n/locales/si.json index 5829ff17cf..1429638879 100644 --- a/apps/mobile/src/i18n/locales/si.json +++ b/apps/mobile/src/i18n/locales/si.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store දායකත්ව කළමනාකරණය විවෘත කරයි.", "opensPlans": "Kilo Pass සැලසුම් විවෘත කරයි.", "tryAgainFromProfile": "පැතිකඩෙන් නැවත උත්සාහ කරන්න.", - "unavailableDescription": "Android හි Kilo Pass යෙදුම තුළ මිලදී ගැනීමක් ලෙස ලබා ගත නොහැක. එය වෙබ් අඩවියේ කළමනාකරණය කරන්න.", - "webManagementDescription": "මෙම Kilo Pass වෙබ් අඩවියේ කළමනාකරණය වේ.", "legalDisclosure": "Kilo Pass යනු ස්වයං-අලුත් කළ හැකි මාසික දායකත්වයකි. ගෙවීම ඔබේ Apple ID වෙත මිලදී ගැනීම තහවුරු වූ විට අය කෙරේ. දායකත්ව ස්වයංක්රීයව සෑම මාසයකම පෙන්වන මිලට අලුත් වේ. වත්මන් කාල සීමාව අවසන් වීමට අවම වශයෙන් පැය 24 කට පෙර අවලංගු නොකළහොත්. ඔබේ App Store ගිණුම් සැකසුම් තුළ ඕනෑම අවස්ථාවක කළමනාකරණය කරන්න හෝ අවලංගු කරන්න.", "legalPrivacyPolicy": "රහස්‍යතා ප්‍රතිපත්තිය", "legalTermsOfUse": "භාවිත කොන්දේසි (EULA)", diff --git a/apps/mobile/src/i18n/locales/sk.json b/apps/mobile/src/i18n/locales/sk.json index 54a906cbea..4daf7ef2df 100644 --- a/apps/mobile/src/i18n/locales/sk.json +++ b/apps/mobile/src/i18n/locales/sk.json @@ -2880,8 +2880,6 @@ "opensAppStoreManagement": "Otvorí správu predplatného v App Store.", "opensPlans": "Otvorí plány Kilo Pass.", "tryAgainFromProfile": "Skúste to znova z profilu.", - "unavailableDescription": "Kilo Pass nie je dostupný ako nákup v aplikácii na Androide. Spravujte ho na webe.", - "webManagementDescription": "Tento Kilo Pass sa spravuje na webe.", "legalDisclosure": "Kilo Pass je mesačné predplatné s automatickým obnovením. Platba sa účtuje na vaše Apple ID pri potvrdení nákupu. Predplatné sa automaticky obnovuje každý mesiac za zobrazenú cenu, pokiaľ ho nezrušíte najmenej 24 hodín pred koncom aktuálneho obdobia. Spravujte alebo zrušte ho kedykoľvek v nastaveniach svojho účtu App Store.", "legalPrivacyPolicy": "Zásady ochrany osobných údajov", "legalTermsOfUse": "Podmienky používania (EULA)", diff --git a/apps/mobile/src/i18n/locales/sl.json b/apps/mobile/src/i18n/locales/sl.json index 377b2f0d92..31bd52c52c 100644 --- a/apps/mobile/src/i18n/locales/sl.json +++ b/apps/mobile/src/i18n/locales/sl.json @@ -2880,8 +2880,6 @@ "opensAppStoreManagement": "Odpre upravljanje naročnin App Store.", "opensPlans": "Odpre načrte Kilo Passa.", "tryAgainFromProfile": "Poskusi znova iz profila.", - "unavailableDescription": "Kilo Pass ni na voljo kot nakup v aplikaciji v sistemu Android. Upravljajte ga na spletu.", - "webManagementDescription": "Ta Kilo Pass se upravlja na spletu.", "legalDisclosure": "Kilo Pass je samodejno obnovljiva mesečna naročnina. Plačilo se bremeni vaš Apple ID ob potrditvi nakupa. Naročnine se samodejno obnovijo vsak mesec po prikazani ceni, razen če jih prekličete vsaj 24 ur pred koncem trenutnega obdobja. Upravljajte ali prekličite kadar koli v nastavitvah računa v App Store.", "legalPrivacyPolicy": "Politika zasebnosti", "legalTermsOfUse": "Pogoji uporabe (EULA)", diff --git a/apps/mobile/src/i18n/locales/so.json b/apps/mobile/src/i18n/locales/so.json index 70a7d88296..b2add28b7b 100644 --- a/apps/mobile/src/i18n/locales/so.json +++ b/apps/mobile/src/i18n/locales/so.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Wuxuu furaa maareynta isdiiwaangelinta App Store.", "opensPlans": "Wuxuu furaa qorshayaasha Kilo Pass.", "tryAgainFromProfile": "Mar kale isku day Profile-ka.", - "unavailableDescription": "Kilo Pass laguma heli karo iibsasho ku dhex jirta app-ka ee Android. Ku maareyso shabakadda.", - "webManagementDescription": "Kilo Pass-kan waxaa lagu maareeyaa shabakadda.", "legalDisclosure": "Kilo Pass waa diiwaangelin bil-ah oo is-keeneysa si toos ah. Lacagta waxaa laga qaadaa Apple ID-gaaga markaad xaqiijiso iibsashada. Diiwaangelintu waxay si toos ah u cusbooneysa bil kasta qiimaha la muujiyey ilaa aadan baajin ugu yaraan 24 saacadood ka hor dhamaadka xilli-gii xaafada. Ku maareyso ama baaji wakhti kasta ee goobaha xisaabta App Store.", "legalPrivacyPolicy": "Siyaasadda Asturnaanta", "legalTermsOfUse": "Shuruudaha Isticmaalka (EULA)", diff --git a/apps/mobile/src/i18n/locales/sq.json b/apps/mobile/src/i18n/locales/sq.json index 8e07bb229b..272b9cf283 100644 --- a/apps/mobile/src/i18n/locales/sq.json +++ b/apps/mobile/src/i18n/locales/sq.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Hap menaxhimin e abonimit në App Store.", "opensPlans": "Hap planet e Kilo Pass.", "tryAgainFromProfile": "Provoni përsëri nga Profili.", - "unavailableDescription": "Kilo Pass nuk është i disponueshëm si blerje brenda aplikacionit në Android. Menaxhojeni në ueb.", - "webManagementDescription": "Ky Kilo Pass menaxhohet në ueb.", "legalDisclosure": "Kilo Pass është një abonim mujor me rinovim automatik. Pagesa i ngarkohet Apple ID-së suaj në konfirmim të blerjes. Abonimet rinovohen automatikisht çdo muaj me çmimin e treguar, përveç nëse anulohen të paktën 24 orë para përfundimit të periudhës aktuale. Menaxhojeni ose anuloni në çdo kohë te cilësimet e llogarisë suaj në App Store.", "legalPrivacyPolicy": "Politika e privatësisë", "legalTermsOfUse": "Kushtet e përdorimit (EULA)", diff --git a/apps/mobile/src/i18n/locales/sr.json b/apps/mobile/src/i18n/locales/sr.json index 7ec0d81fd6..56fdbfc776 100644 --- a/apps/mobile/src/i18n/locales/sr.json +++ b/apps/mobile/src/i18n/locales/sr.json @@ -2860,8 +2860,6 @@ "opensAppStoreManagement": "Otvara upravljanje pretplatom u App Store-u.", "opensPlans": "Otvara Kilo Pass planove.", "tryAgainFromProfile": "Pokušajte ponovo iz Profila.", - "unavailableDescription": "Kilo Pass nije dostupan kao kupovina u aplikaciji na Androidu. Upravljajte njime na webu.", - "webManagementDescription": "Ovim Kilo Pass-om se upravlja na webu.", "legalDisclosure": "Kilo Pass je pretplata na mesec dana koja se automatski obnavlja. Plaćanje se naplaćuje sa vašeg Apple ID-ja pri potvrdi kupovine. Pretplate se automatski obnavljaju svakog meseca po prikazanoj ceni, osim ako ih ne otkažete najmanje 24 sata pre kraja tekućeg perioda. Upravljajte ili otkažite u svakom trenutku u podešavanjima naloga u App Store-u.", "legalPrivacyPolicy": "Politika privatnosti", "legalTermsOfUse": "Uslovi korišćenja (EULA)", diff --git a/apps/mobile/src/i18n/locales/sv.json b/apps/mobile/src/i18n/locales/sv.json index cc078d9999..eb7f0e8920 100644 --- a/apps/mobile/src/i18n/locales/sv.json +++ b/apps/mobile/src/i18n/locales/sv.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Öppnar App Store-prenumerationshanteringen.", "opensPlans": "Öppnar Kilo Pass-planer.", "tryAgainFromProfile": "Försök igen från Profil.", - "unavailableDescription": "Kilo Pass är inte tillgängligt som köp i appen på Android. Hantera det på webben.", - "webManagementDescription": "Detta Kilo Pass hanteras på webben.", "legalDisclosure": "Kilo Pass är en automatiskt förnybar månadsprenumeration. Betalning dras från ditt Apple-ID vid köpsbekräftelse. Prenumerationen förnyas automatiskt varje månad till det pris som visas om den inte avbryts minst 24 timmar före slutet av den aktuella perioden. Hantera eller avbryt när som helst i dina App Store-kontoinställningar.", "legalPrivacyPolicy": "Integritetspolicy", "legalTermsOfUse": "Användarvillkor (EULA)", diff --git a/apps/mobile/src/i18n/locales/sw.json b/apps/mobile/src/i18n/locales/sw.json index 1d866ce372..4f414c5dc4 100644 --- a/apps/mobile/src/i18n/locales/sw.json +++ b/apps/mobile/src/i18n/locales/sw.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Hufungua usimamizi wa usajili wa App Store.", "opensPlans": "Hufungua mipango ya Kilo Pass.", "tryAgainFromProfile": "Jaribu tena kutoka kwenye Wasifu.", - "unavailableDescription": "Kilo Pass haipatikani kama ununuzi wa ndani ya programu kwenye Android. Isimamie kwenye wavuti.", - "webManagementDescription": "Kilo Pass hii inasimamiwa kwenye wavuti.", "legalDisclosure": "Kilo Pass ni usajili wa kila mwezi unaofanywa upya kiotomatiki. Malipo yanakatwa kwenye Apple ID yako unapothibitisha ununuzi. Usajili unafanywa upya kiotomatiki kila mwezi kwa bei inayoonyeshwa isipokuwa umeghairi angalau saa 24 kabla ya mwisho wa kipindi cha sasa. Simamia au ghairi wakati wowote katika mipangilio ya akaunti yako ya App Store.", "legalPrivacyPolicy": "Sera ya Faragha", "legalTermsOfUse": "Masharti ya Matumizi (EULA)", diff --git a/apps/mobile/src/i18n/locales/ta.json b/apps/mobile/src/i18n/locales/ta.json index 4884d910e5..d00b6caa02 100644 --- a/apps/mobile/src/i18n/locales/ta.json +++ b/apps/mobile/src/i18n/locales/ta.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store சந்தா நிர்வாகத்தைத் திறக்கிறது.", "opensPlans": "Kilo Pass திட்டங்களைத் திறக்கிறது.", "tryAgainFromProfile": "சுயவிவரத்திலிருந்து மீண்டும் முயற்சிக்கவும்.", - "unavailableDescription": "Kilo Pass Android-ல் ஆப்-இன் வாங்குதலாகக் கிடைக்காது. இதை வலைத்தளத்தில் நிர்வகிக்கவும்.", - "webManagementDescription": "இந்த Kilo Pass வலைத்தளத்தில் நிர்வகிக்கப்படுகிறது.", "legalDisclosure": "Kilo Pass தானாகப் புதுப்பிக்கப்படும் மாதாந்திர சந்தா. வாங்குதல் உறுதிசெய்யப்பட்டதும் உங்கள் Apple ID-க்கு கட்டணம் வசூலிக்கப்படும். நடப்புக் காலகட்டம் முடிவதற்கு 24 மணிநேரத்திற்கு முன்னர் ரத்து செய்யப்படாவிட்டால், சந்தாக்கள் ஒவ்வொரு மாதமும் காட்டப்படும் விலையில் தானாகவே புதுப்பிக்கப்படும். உங்கள் App Store கணக்கு அமைப்புகளில் எப்போது வேண்டுமானாலும் நிர்வகிக்கவும் அல்லது ரத்து செய்யவும்.", "legalPrivacyPolicy": "தனியுரிமைக் கொள்கை", "legalTermsOfUse": "பயன்பாட்டு விதிமுறைகள் (EULA)", diff --git a/apps/mobile/src/i18n/locales/te.json b/apps/mobile/src/i18n/locales/te.json index 8de587ae3a..d915ffb104 100644 --- a/apps/mobile/src/i18n/locales/te.json +++ b/apps/mobile/src/i18n/locales/te.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "యాప్ స్టోర్ చందా నిర్వహణను తెరుస్తుంది.", "opensPlans": "Kilo Pass ప్లాన్లను తెరుస్తుంది.", "tryAgainFromProfile": "ప్రొఫైల్ నుండి మళ్లీ ప్రయత్నించండి.", - "unavailableDescription": "Kilo Pass Androidలో ఇన్-యాప్ కొనుగోలుగా అందుబాటులో లేదు. దీన్ని వెబ్లో నిర్వహించండి.", - "webManagementDescription": "ఈ Kilo Pass వెబ్లో నిర్వహించబడుతుంది.", "legalDisclosure": "Kilo Pass అనేది స్వయంచాలకంగా పునరుద్ధరించబడే నెలవారీ చందా. కొనుగోలు నిర్ధారణ సమయంలో చెల్లింపు మీ Apple IDకి వసూలు చేయబడుతుంది. ప్రస్తుత వ్యవధి ముగిసే 24 గంటల కంటే ముందు రద్దు చేయకపోతే చందాలు ప్రదర్శించిన ధరకు ప్రతి నెల స్వయంచాలకంగా పునరుద్ధరించబడతాయి. మీ App Store ఖాతా సెట్టింగులలో ఎప్పుడైనా నిర్వహించండి లేదా రద్దు చేయండి.", "legalPrivacyPolicy": "గోప్యతా విధానం", "legalTermsOfUse": "వినియోగ నిబంధనలు (EULA)", diff --git a/apps/mobile/src/i18n/locales/th.json b/apps/mobile/src/i18n/locales/th.json index febd822682..6400448def 100644 --- a/apps/mobile/src/i18n/locales/th.json +++ b/apps/mobile/src/i18n/locales/th.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "เปิดการจัดการการสมัครสมาชิก App Store", "opensPlans": "เปิดแผน Kilo Pass", "tryAgainFromProfile": "ลองอีกครั้งจากโปรไฟล์", - "unavailableDescription": "ไม่สามารถซื้อ Kilo Pass ภายในแอปบน Android ได้ จัดการได้บนเว็บ", - "webManagementDescription": "Kilo Pass นี้ถูกจัดการบนเว็บ", "legalDisclosure": "Kilo Pass เป็นการสมัครสมาชิกรายเดือนที่ต่ออายุอัตโนมัติ ค่าธรรมเนียมจะถูกเรียกเก็บจาก Apple ID ของคุณเมื่อยืนยันการซื้อ การสมัครสมาชิกจะต่ออายุอัตโนมัติทุกเดือนในราคาที่แสดง เว้นแต่จะยกเลิกอย่างน้อย 24 ชั่วโมงก่อนสิ้นสุดรอบปัจจุบัน จัดการหรือยกเลิกได้ทุกเมื่อในการตั้งค่าบัญชี App Store", "legalPrivacyPolicy": "นโยบายความเป็นส่วนตัว", "legalTermsOfUse": "ข้อกำหนดการใช้งาน (EULA)", diff --git a/apps/mobile/src/i18n/locales/tr.json b/apps/mobile/src/i18n/locales/tr.json index e9f4396a35..49ba4c131a 100644 --- a/apps/mobile/src/i18n/locales/tr.json +++ b/apps/mobile/src/i18n/locales/tr.json @@ -2386,8 +2386,6 @@ "opensAppStoreManagement": "App Store abonelik yönetimini açar.", "opensPlans": "Kilo Pass planlarını açar.", "tryAgainFromProfile": "Profilden tekrar deneyin.", - "unavailableDescription": "Kilo Pass, Android'de uygulama içi satın alma olarak kullanılamaz. Web üzerinden yönetin.", - "webManagementDescription": "Bu Kilo Pass web üzerinden yönetiliyor.", "legalDisclosure": "Kilo Pass, otomatik yenilenen aylık bir aboneliktir. Ödeme, satın alma onayında Apple Kimliğinize yansıtılır. Abonelikler, geçerli dönemin bitiminden en az 24 saat önce iptal edilmediği sürece her ay gösterilen fiyattan otomatik yenilenir. App Store hesap ayarlarınızdan istediğiniz zaman yönetin veya iptal edin.", "legalPrivacyPolicy": "Gizlilik Politikası", "legalTermsOfUse": "Kullanım Koşulları (EULA)", diff --git a/apps/mobile/src/i18n/locales/uk.json b/apps/mobile/src/i18n/locales/uk.json index 8cb7d61c25..83d738722a 100644 --- a/apps/mobile/src/i18n/locales/uk.json +++ b/apps/mobile/src/i18n/locales/uk.json @@ -2412,8 +2412,6 @@ "opensAppStoreManagement": "Відкриває керування підпискою в App Store.", "opensPlans": "Відкриває тарифи Kilo Pass.", "tryAgainFromProfile": "Спробуйте ще раз у профілі.", - "unavailableDescription": "Kilo Pass недоступний як покупка в застосунку на Android. Керуйте ним у вебверсії.", - "webManagementDescription": "Цим Kilo Pass керують у вебверсії.", "legalDisclosure": "Kilo Pass — це автоматично поновлювана щомісячна підписка. Оплата списується з вашого Apple ID під час підтвердження покупки. Підписка автоматично поновлюється щомісяця за вказаною ціною, якщо її не скасувати щонайменше за 24 години до кінця поточного періоду. Керуйте або скасовуйте її будь-коли в налаштуваннях облікового запису App Store.", "legalPrivacyPolicy": "Політика конфіденційності", "legalTermsOfUse": "Умови використання (EULA)", diff --git a/apps/mobile/src/i18n/locales/ur.json b/apps/mobile/src/i18n/locales/ur.json index 2038ecdf58..e50c506b19 100644 --- a/apps/mobile/src/i18n/locales/ur.json +++ b/apps/mobile/src/i18n/locales/ur.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store سبسکرپشن انتظام کھولتا ہے۔", "opensPlans": "Kilo Pass پلانز کھولتا ہے۔", "tryAgainFromProfile": "پروفائل سے دوبارہ کوشش کریں۔", - "unavailableDescription": "Kilo Pass Android پر ایپ کے اندر خریداری کے طور پر دستیاب نہیں ہے۔ اسے ویب پر منظم کریں۔", - "webManagementDescription": "یہ Kilo Pass ویب پر منظم کیا جاتا ہے۔", "legalDisclosure": "Kilo Pass خودکار تجدید کے ساتھ ماہانہ سبسکرپشن ہے۔ ادائیگی خریداری کی تصدیق پر آپ کے Apple ID سے لی جاتی ہے۔ سبسکرپشنز ہر ماہ دکھائی گئی قیمت پر خود بخود تجدید ہوتی ہیں جب تک کہ موجودہ مدت ختم ہونے سے کم از کم 24 گھنٹے پہلے منسوخ نہ کی جائیں۔ اپنی App Store اکاؤنٹ کی ترتیبات میں کسی بھی وقت منظم یا منسوخ کریں۔", "legalPrivacyPolicy": "رازداری کی پالیسی", "legalTermsOfUse": "استعمال کی شرائط (EULA)", diff --git a/apps/mobile/src/i18n/locales/uz.json b/apps/mobile/src/i18n/locales/uz.json index fd9a0fefde..a6d54190b3 100644 --- a/apps/mobile/src/i18n/locales/uz.json +++ b/apps/mobile/src/i18n/locales/uz.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "App Store obuna boshqaruvini ochadi.", "opensPlans": "Kilo Pass rejalarini ochadi.", "tryAgainFromProfile": "Profildan qayta urinib ko'ring.", - "unavailableDescription": "Kilo Pass Android’da ilova ichidagi xarid sifatida mavjud emas. Uni veb-saytda boshqaring.", - "webManagementDescription": "Bu Kilo Pass veb-saytda boshqariladi.", "legalDisclosure": "Kilo Pass avtomatik yangilanadigan oylik obuna hisoblanadi. To‘lov xaridni tasdiqlashda Apple ID hisobingizdan undiriladi. Obunalar har oy ko‘rsatilgan narxda avtomatik yangilanadi, agar joriy davr tugashidan kamida 24 soat oldin bekor qilinmasa. Istiagan paytda App Store hisob sozlamalaringizda boshqaring yoki bekor qiling.", "legalPrivacyPolicy": "Maxfiylik siyosati", "legalTermsOfUse": "Foydalanish shartlari (EULA)", diff --git a/apps/mobile/src/i18n/locales/vi.json b/apps/mobile/src/i18n/locales/vi.json index ef7b706717..5363b5eaef 100644 --- a/apps/mobile/src/i18n/locales/vi.json +++ b/apps/mobile/src/i18n/locales/vi.json @@ -2386,8 +2386,6 @@ "opensAppStoreManagement": "Mở trang quản lý đăng ký trong App Store.", "opensPlans": "Mở các gói Kilo Pass.", "tryAgainFromProfile": "Thử lại từ Hồ sơ.", - "unavailableDescription": "Kilo Pass không có sẵn dưới dạng giao dịch mua trong ứng dụng trên Android. Quản lý trên web.", - "webManagementDescription": "Kilo Pass này được quản lý trên web.", "legalDisclosure": "Kilo Pass là gói đăng ký hàng tháng tự gia hạn. Khoản thanh toán được tính vào Apple ID của bạn khi xác nhận mua. Gói đăng ký tự động gia hạn mỗi tháng theo giá đã hiển thị trừ khi bạn hủy ít nhất 24 giờ trước khi kết thúc kỳ hiện tại. Quản lý hoặc hủy bất kỳ lúc nào trong cài đặt tài khoản App Store.", "legalPrivacyPolicy": "Chính sách quyền riêng tư", "legalTermsOfUse": "Điều khoản sử dụng (EULA)", diff --git a/apps/mobile/src/i18n/locales/yo.json b/apps/mobile/src/i18n/locales/yo.json index 88f8a9fb49..43e2cca57c 100644 --- a/apps/mobile/src/i18n/locales/yo.json +++ b/apps/mobile/src/i18n/locales/yo.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Ṣii iṣakoso ìfọwọsowọpọ App Store.", "opensPlans": "Ṣii awọn ero Kilo Pass.", "tryAgainFromProfile": "Tun gbiyanju lati Profaìlì.", - "unavailableDescription": "Kilo Pass kò sí gẹ́gẹ́ bí rira inú app lórí Android. Ṣàkóso rẹ̀ lórí wẹ́bù.", - "webManagementDescription": "Kilo Pass yìí ni a ń ṣàkóso lórí wẹ́bù.", "legalDisclosure": "Kilo Pass jẹ́ ìfọwọ́sílẹ̀ oṣooṣu tó máa ń tún ara rẹ̀ ṣe ní àìdáni. Wọ́n máa ń gba owó sí Apple ID rẹ ní ìfìdírí ìrà. Àwọn ìfọwọ́sílẹ̀ máa ń tún ara wọn ṣe lọ́ṣọ̀ọ̀so ní iye tí a fi hàn, àyàfi bí a kò bá fagilé rẹ̀ ni ó kéré tán wákàtí 24 kí ìgbà tí ó ń lọ kí ó parí. Ṣàkóso tàbí fagilé rẹ̀ nígbàkúgbà nínú àwọn ètò àkọọ́lẹ̀ App Store rẹ.", "legalPrivacyPolicy": "Ìlànà Àṣírí", "legalTermsOfUse": "Àwọn Ìlànà Ìlò (EULA)", diff --git a/apps/mobile/src/i18n/locales/zh-Hans.json b/apps/mobile/src/i18n/locales/zh-Hans.json index 79bedf5994..069add3614 100644 --- a/apps/mobile/src/i18n/locales/zh-Hans.json +++ b/apps/mobile/src/i18n/locales/zh-Hans.json @@ -2386,8 +2386,6 @@ "opensAppStoreManagement": "打开 App Store 订阅管理。", "opensPlans": "打开 Kilo Pass 套餐。", "tryAgainFromProfile": "从个人资料页重试。", - "unavailableDescription": "Kilo Pass 在 Android 上不能作为应用内购买使用。请在网页上管理。", - "webManagementDescription": "此 Kilo Pass 在网页上管理。", "legalDisclosure": "Kilo Pass 是可自动续订的月度订阅。付款在购买确认时从您的 Apple ID 扣费。订阅每月按所示价格自动续订,除非在当前周期结束前至少 24 小时取消。可随时在您的 App Store 账户设置中管理或取消。", "legalPrivacyPolicy": "隐私政策", "legalTermsOfUse": "使用条款(EULA)", diff --git a/apps/mobile/src/i18n/locales/zh-Hant.json b/apps/mobile/src/i18n/locales/zh-Hant.json index a86d5b209e..9ef778efc4 100644 --- a/apps/mobile/src/i18n/locales/zh-Hant.json +++ b/apps/mobile/src/i18n/locales/zh-Hant.json @@ -2386,8 +2386,6 @@ "opensAppStoreManagement": "開啟 App Store 訂閱管理。", "opensPlans": "開啟 Kilo Pass 方案。", "tryAgainFromProfile": "請從個人資料頁再試一次。", - "unavailableDescription": "Kilo Pass 無法在 Android 上以應用程式內購買的方式取得。請在網頁上管理。", - "webManagementDescription": "此 Kilo Pass 是在網頁上管理的。", "legalDisclosure": "Kilo Pass 是自動續訂的每月訂閱。款項會在購買確認時從您的 Apple ID 扣款。除非在目前週期結束前至少 24 小時取消,否則訂閱會以顯示的價格每月自動續訂。您可以隨時在 App Store 帳戶設定中管理或取消。", "legalPrivacyPolicy": "隱私權政策", "legalTermsOfUse": "使用條款 (EULA)", diff --git a/apps/mobile/src/i18n/locales/zu.json b/apps/mobile/src/i18n/locales/zu.json index 965ee8c666..143606d4a4 100644 --- a/apps/mobile/src/i18n/locales/zu.json +++ b/apps/mobile/src/i18n/locales/zu.json @@ -2840,8 +2840,6 @@ "opensAppStoreManagement": "Ivula ukuphathwa kokubhalisa kwe-App Store.", "opensPlans": "Ivula izinhlelo ze-Kilo Pass.", "tryAgainFromProfile": "Zama futhi usuka ku-Profile.", - "unavailableDescription": "I-Kilo Pass ayitholakali njengokuthenga ngaphakathi kuhlelo ku-Android. Yilawule kuwebhu.", - "webManagementDescription": "Le Kilo Pass ilawulwa kuwebhu.", "legalDisclosure": "I-Kilo Pass iwukubhalisela kwanyanga ngalinye okuzivuselelayo ngokuzenzakalelayo. Inkokhelo ikhokhiswa ku-Apple ID yakho lapho kuqinisekiswa ukuthenga. Ukubhalisela kuzivuselela ngokuzenzakalelayo nyanga zonke ngentengo ebonisiwe ngaphandle uma kukhanselwe okungenani amahora angu-24 ngaphambi kokuphela kwesikhathi samanje. Lawula noma ukhansela noma nini kuzilungiselelo zekhawunti yakho ye-App Store.", "legalPrivacyPolicy": "Inqubomgomo Yobumfihlo", "legalTermsOfUse": "Imigomo Yokusetshenziswa (EULA)", diff --git a/apps/mobile/src/lib/kilo-pass/legal-links.test.ts b/apps/mobile/src/lib/kilo-pass/legal-links.test.ts index db5204e7fe..67a2a3b891 100644 --- a/apps/mobile/src/lib/kilo-pass/legal-links.test.ts +++ b/apps/mobile/src/lib/kilo-pass/legal-links.test.ts @@ -17,16 +17,22 @@ describe('Kilo Pass legal disclosure links', () => { }); it('uses App Store auto-renewable monthly subscription disclosure copy', () => { - expect(kiloPassLegalDisclosure()).toBe( + expect(kiloPassLegalDisclosure('ios')).toBe( 'Kilo Pass is an auto-renewable monthly subscription. Payment is charged to your Apple ID at confirmation of purchase. Subscriptions renew automatically each month at the price shown unless canceled at least 24 hours before the end of the current period. Manage or cancel anytime in your App Store account settings.' ); }); + it('uses Google Play auto-renewable monthly subscription disclosure copy on Android', () => { + expect(kiloPassLegalDisclosure('android')).toBe( + 'Kilo Pass is an auto-renewable monthly subscription. Payment is charged to your Google Play account at confirmation of purchase. Subscriptions renew automatically each month at the price shown unless canceled at least 24 hours before the end of the current period. Manage or cancel anytime in your Google Play account settings.' + ); + }); + it('composes the full footer disclosure with legal link labels', () => { const [privacyPolicyLink, termsOfUseLink] = getKiloPassLegalLinks('https://app.example.com'); expect( - `${kiloPassLegalDisclosure()} By subscribing, you agree to the ${termsOfUseLink.label} and acknowledge the ${privacyPolicyLink.label}.` + `${kiloPassLegalDisclosure('ios')} By subscribing, you agree to the ${termsOfUseLink.label} and acknowledge the ${privacyPolicyLink.label}.` ).toBe( 'Kilo Pass is an auto-renewable monthly subscription. Payment is charged to your Apple ID at confirmation of purchase. Subscriptions renew automatically each month at the price shown unless canceled at least 24 hours before the end of the current period. Manage or cancel anytime in your App Store account settings. By subscribing, you agree to the Terms of Use (EULA) and acknowledge the Privacy Policy.' ); diff --git a/apps/mobile/src/lib/kilo-pass/legal-links.ts b/apps/mobile/src/lib/kilo-pass/legal-links.ts index 1b8c130a2f..44a8eae08d 100644 --- a/apps/mobile/src/lib/kilo-pass/legal-links.ts +++ b/apps/mobile/src/lib/kilo-pass/legal-links.ts @@ -1,7 +1,9 @@ import { i18n } from '@/i18n'; -export function kiloPassLegalDisclosure(): string { - return i18n.t('kiloPass.legalDisclosure'); +export function kiloPassLegalDisclosure(platformOS: string): string { + return i18n.t( + platformOS === 'android' ? 'kiloPass.legalDisclosurePlay' : 'kiloPass.legalDisclosure' + ); } type KiloPassLegalLink = { diff --git a/apps/mobile/src/lib/kilo-pass/store-products-loader.test.ts b/apps/mobile/src/lib/kilo-pass/store-products-loader.test.ts index f868220a57..7bbabeac01 100644 --- a/apps/mobile/src/lib/kilo-pass/store-products-loader.test.ts +++ b/apps/mobile/src/lib/kilo-pass/store-products-loader.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it, vi } from 'vitest'; import { loadAppStoreKiloPassProducts, NO_MATCHING_KILO_PASS_PRODUCTS_KEY, + NO_MATCHING_KILO_PASS_PRODUCTS_PLAY_KEY, } from './store-products-loader'; import { type BackendStoreKiloPassProduct } from './store-products'; import { i18n } from '@/i18n'; @@ -40,6 +41,7 @@ describe('loadAppStoreKiloPassProducts', () => { ]); const products = await loadAppStoreKiloPassProducts({ + storefront: 'app_store', fetchStoreProducts, loadBackendProducts: vi.fn().mockResolvedValue({ appAccountToken: '550e8400-e29b-41d4-a716-446655440000', @@ -63,6 +65,7 @@ describe('loadAppStoreKiloPassProducts', () => { it('throws the empty App Store message after the store fetch returns no matching products', async () => { await expect( loadAppStoreKiloPassProducts({ + storefront: 'app_store', fetchStoreProducts: vi.fn().mockResolvedValue([]), loadBackendProducts: vi.fn().mockResolvedValue({ appAccountToken: '550e8400-e29b-41d4-a716-446655440000', @@ -71,4 +74,39 @@ describe('loadAppStoreKiloPassProducts', () => { }) ).rejects.toThrow(i18n.t(NO_MATCHING_KILO_PASS_PRODUCTS_KEY)); }); + + it('throws the empty Google Play message after the store fetch returns no matching products', async () => { + await expect( + loadAppStoreKiloPassProducts({ + storefront: 'play', + fetchStoreProducts: vi.fn().mockResolvedValue([]), + loadBackendProducts: vi.fn().mockResolvedValue({ + appAccountToken: '550e8400-e29b-41d4-a716-446655440000', + products: backendProducts, + }), + }) + ).rejects.toThrow(i18n.t(NO_MATCHING_KILO_PASS_PRODUCTS_PLAY_KEY)); + }); + + it('fetches Google product ids for the Play storefront', async () => { + const fetchStoreProducts = vi.fn().mockResolvedValue([ + { + id: 'kilopass_tier19', + displayPrice: '$24.99', + title: 'Kilo Pass 19', + description: 'Kilo Pass', + }, + ]); + + await loadAppStoreKiloPassProducts({ + storefront: 'play', + fetchStoreProducts, + loadBackendProducts: vi.fn().mockResolvedValue({ + appAccountToken: '550e8400-e29b-41d4-a716-446655440000', + products: backendProducts, + }), + }); + + expect(fetchStoreProducts).toHaveBeenCalledWith(['kilopass_tier19', 'kilopass_tier49']); + }); }); diff --git a/apps/mobile/src/lib/kilo-pass/store-products-loader.ts b/apps/mobile/src/lib/kilo-pass/store-products-loader.ts index e46a7a2000..7a3fa05013 100644 --- a/apps/mobile/src/lib/kilo-pass/store-products-loader.ts +++ b/apps/mobile/src/lib/kilo-pass/store-products-loader.ts @@ -8,6 +8,7 @@ import { } from './store-products'; export const NO_MATCHING_KILO_PASS_PRODUCTS_KEY = 'kiloPass.noMatchingProducts'; +export const NO_MATCHING_KILO_PASS_PRODUCTS_PLAY_KEY = 'kiloPass.noMatchingProductsPlay'; export async function loadAppStoreKiloPassProducts(params: { fetchStoreProducts: (productSkus: string[]) => Promise; @@ -15,10 +16,13 @@ export async function loadAppStoreKiloPassProducts(params: { appAccountToken: string; products: readonly BackendStoreKiloPassProduct[]; }>; + storefront: 'app_store' | 'play'; }): Promise { const backendResponse = await params.loadBackendProducts(); const backendProducts = backendResponse.products; - const productSkus = backendProducts.map(product => product.appleProductId); + const productSkus = backendProducts.map(product => + params.storefront === 'play' ? product.googleProductId : product.appleProductId + ); if (productSkus.length === 0) { return []; @@ -29,10 +33,17 @@ export async function loadAppStoreKiloPassProducts(params: { appAccountToken: backendResponse.appAccountToken, backendProducts, storeProducts, + storefront: params.storefront, }); if (products.length === 0) { - throw new Error(i18n.t(NO_MATCHING_KILO_PASS_PRODUCTS_KEY)); + throw new Error( + i18n.t( + params.storefront === 'play' + ? NO_MATCHING_KILO_PASS_PRODUCTS_PLAY_KEY + : NO_MATCHING_KILO_PASS_PRODUCTS_KEY + ) + ); } return products; diff --git a/apps/mobile/src/lib/kilo-pass/store-products.test.ts b/apps/mobile/src/lib/kilo-pass/store-products.test.ts index 451ee4998e..3d4c5fdc11 100644 --- a/apps/mobile/src/lib/kilo-pass/store-products.test.ts +++ b/apps/mobile/src/lib/kilo-pass/store-products.test.ts @@ -26,6 +26,7 @@ describe('joinAppStoreKiloPassProducts', () => { suggestedStoreMonthlyPriceUsd: 63.7, }, ], + storefront: 'app_store', storeProducts: [ { id: 'kilopass.tier19.monthly.v1', @@ -47,4 +48,42 @@ describe('joinAppStoreKiloPassProducts', () => { }), ]); }); + + it('joins backend Google product ids to localized Play subscription metadata', () => { + const products = joinAppStoreKiloPassProducts({ + appAccountToken: '550e8400-e29b-41d4-a716-446655440000', + storefront: 'play', + backendProducts: [ + { + tier: 'tier_19', + cadence: 'monthly', + appleProductId: 'kilopass.tier19.monthly.v1', + googleProductId: 'kilopass_tier19', + googleBasePlanId: 'monthly-v1', + webMonthlyPriceUsd: 19, + suggestedStoreMonthlyPriceUsd: 24.7, + }, + ], + storeProducts: [ + { + id: 'kilopass_tier19', + displayPrice: '$24.99', + title: 'Kilo Pass 19', + description: 'Kilo Pass', + offerToken: 'offer-123', + }, + ], + }); + + expect(products).toEqual([ + expect.objectContaining({ + tier: 'tier_19', + googleProductId: 'kilopass_tier19', + displayPrice: '$24.99', + title: 'Kilo Pass 19', + appAccountToken: '550e8400-e29b-41d4-a716-446655440000', + storeProduct: expect.objectContaining({ offerToken: 'offer-123' }), + }), + ]); + }); }); diff --git a/apps/mobile/src/lib/kilo-pass/store-products.ts b/apps/mobile/src/lib/kilo-pass/store-products.ts index 66677035b3..620e6dd483 100644 --- a/apps/mobile/src/lib/kilo-pass/store-products.ts +++ b/apps/mobile/src/lib/kilo-pass/store-products.ts @@ -18,6 +18,8 @@ export type StoreKiloPassProduct = { displayPrice: string; title: string; description: string; + /** Google Play offer token for the selected base plan; absent on iOS. */ + offerToken?: string; }; export type AppStoreKiloPassProduct = BackendStoreKiloPassProduct & { @@ -32,11 +34,14 @@ export function joinAppStoreKiloPassProducts(params: { appAccountToken: string; backendProducts: readonly BackendStoreKiloPassProduct[]; storeProducts: readonly StoreKiloPassProduct[]; + /** Which storefront the SKUs came from; the join key differs per store. */ + storefront: 'app_store' | 'play'; }): AppStoreKiloPassProduct[] { const storeById = new Map(params.storeProducts.map(product => [product.id, product])); + const joinKey = params.storefront === 'play' ? 'googleProductId' : 'appleProductId'; return params.backendProducts.flatMap(backendProduct => { - const storeProduct = storeById.get(backendProduct.appleProductId); + const storeProduct = storeById.get(backendProduct[joinKey]); if (!storeProduct) { return []; } diff --git a/apps/mobile/src/lib/kilo-pass/subscription-card-content-state.test.ts b/apps/mobile/src/lib/kilo-pass/subscription-card-content-state.test.ts index a96fbf9249..da21b2a3f9 100644 --- a/apps/mobile/src/lib/kilo-pass/subscription-card-content-state.test.ts +++ b/apps/mobile/src/lib/kilo-pass/subscription-card-content-state.test.ts @@ -2,12 +2,7 @@ import { describe, expect, it, vi } from 'vitest'; import { formatDate } from '@/lib/format'; import { parseTimestamp } from '@/lib/utils'; -import { - KILO_PASS_MANAGE_CTA_LABEL, - KILO_PASS_TITLE, - KILO_PASS_UNAVAILABLE_DESCRIPTION, - KILO_PASS_WEB_MANAGEMENT_DESCRIPTION, -} from '@kilocode/app-shared/commerce'; +import { KILO_PASS_MANAGE_CTA_LABEL, KILO_PASS_TITLE } from '@kilocode/app-shared/commerce'; import { getKiloPassSubscriptionCardContentState } from './subscription-card-state'; @@ -100,7 +95,7 @@ describe('getKiloPassSubscriptionCardContentState', () => { state: { action: 'open-native', actionLabel: null, - description: KILO_PASS_UNAVAILABLE_DESCRIPTION, + description: 'Kilo Pass purchase is not available right now.', title: KILO_PASS_TITLE, }, }); @@ -122,7 +117,7 @@ describe('getKiloPassSubscriptionCardContentState', () => { state: { action: 'open-web', actionLabel: KILO_PASS_MANAGE_CTA_LABEL, - description: KILO_PASS_WEB_MANAGEMENT_DESCRIPTION, + description: 'This Kilo Pass is managed on web', title: KILO_PASS_TITLE, }, }); @@ -194,7 +189,7 @@ describe('getKiloPassSubscriptionCardContentState', () => { }); }); - it('renders Google Play subscriptions as inert status cards', () => { + it('renders Google Play subscriptions as actionable management cards', () => { expect( getKiloPassSubscriptionCardContentState({ presentation: { kind: 'native_iap', statusClass: 'healthy' }, @@ -211,12 +206,62 @@ describe('getKiloPassSubscriptionCardContentState', () => { stateIsPending: false, platformOS: 'android', }) + ).toEqual({ + kind: 'card', + state: { + action: 'open-store-management', + actionLabel: 'Manage', + description: '$49 monthly credits · Managed on Google Play', + title: 'Kilo Pass active', + }, + }); + }); + + it('renders canceling Google Play subscriptions with an end date', () => { + expect( + getKiloPassSubscriptionCardContentState({ + presentation: { kind: 'native_iap', statusClass: 'healthy' }, + presentationIsError: false, + presentationIsPending: false, + subscription: { + cancelAtPeriodEnd: true, + currentPeriodBaseCreditsUsd: 49, + paymentProvider: 'google_play', + refillAt: '2026-06-08T15:21:05.000Z', + status: 'active', + }, + stateIsError: false, + stateIsPending: false, + platformOS: 'android', + }) + ).toEqual({ + kind: 'card', + state: { + action: 'open-store-management', + actionLabel: 'Manage', + description: `$49 monthly credits · Ends ${endDate}`, + title: 'Kilo Pass canceling', + }, + }); + }); + + it('renders an App Store subscription owned on a Play device as inert', () => { + expect( + getKiloPassSubscriptionCardContentState({ + presentation: { kind: 'native_iap', statusClass: 'healthy' }, + presentationIsError: false, + presentationIsPending: false, + subscription: activeAppStoreSubscription, + stateIsError: false, + stateIsPending: false, + platformOS: 'android', + }) ).toEqual({ kind: 'card', state: { action: 'none', actionLabel: null, - description: '$49 monthly credits · Managed on Google Play', + description: '$19 monthly credits · Managed in App Store', title: 'Kilo Pass active', }, }); diff --git a/apps/mobile/src/lib/kilo-pass/subscription-card-ownership-preflight.test.ts b/apps/mobile/src/lib/kilo-pass/subscription-card-ownership-preflight.test.ts index 53f1bd3f63..ea4096d9f7 100644 --- a/apps/mobile/src/lib/kilo-pass/subscription-card-ownership-preflight.test.ts +++ b/apps/mobile/src/lib/kilo-pass/subscription-card-ownership-preflight.test.ts @@ -9,6 +9,7 @@ vi.mock('@/lib/hooks/use-language-preference', () => ({ const currentAppAccountToken = '550e8400-e29b-41d4-a716-446655440000'; const otherAppAccountToken = '550e8400-e29b-41d4-a716-446655440001'; const appleProductId = 'com.kilo.pass.tier19.monthly'; +const googleProductId = 'kilopass_tier19'; describe('getAppStoreKiloPassOwnershipPreflight', () => { it('flags an iOS Kilo Pass purchase owned by a different app account token', () => { @@ -24,6 +25,7 @@ describe('getAppStoreKiloPassOwnershipPreflight', () => { ], currentAppAccountToken, enabledAppleProductIds: [appleProductId], + enabledGoogleProductIds: [], platformOS: 'ios', }) ).toBe('owned-by-another-account'); @@ -42,6 +44,7 @@ describe('getAppStoreKiloPassOwnershipPreflight', () => { ], currentAppAccountToken, enabledAppleProductIds: [appleProductId], + enabledGoogleProductIds: [], platformOS: 'ios', }) ).toBeNull(); @@ -60,6 +63,7 @@ describe('getAppStoreKiloPassOwnershipPreflight', () => { ], currentAppAccountToken, enabledAppleProductIds: [appleProductId], + enabledGoogleProductIds: [], platformOS: 'ios', }) ).toBeNull(); @@ -92,6 +96,7 @@ describe('getAppStoreKiloPassOwnershipPreflight', () => { availablePurchases: purchases, currentAppAccountToken, enabledAppleProductIds: [appleProductId], + enabledGoogleProductIds: [], platformOS: 'ios', }) ).toBeNull(); @@ -107,8 +112,28 @@ describe('getAppStoreKiloPassOwnershipPreflight', () => { ], currentAppAccountToken, enabledAppleProductIds: [appleProductId], + enabledGoogleProductIds: [], platformOS: 'android', }) ).toBeNull(); }); + + it('flags an Android Kilo Pass purchase owned by a different Play account id', () => { + expect( + getAppStoreKiloPassOwnershipPreflight({ + availablePurchases: [ + { + obfuscatedAccountIdAndroid: otherAppAccountToken, + productId: googleProductId, + purchaseState: 'purchased', + store: 'google', + }, + ], + currentAppAccountToken, + enabledAppleProductIds: [], + enabledGoogleProductIds: [googleProductId], + platformOS: 'android', + }) + ).toBe('owned-by-another-account'); + }); }); diff --git a/apps/mobile/src/lib/kilo-pass/subscription-card-state.test.ts b/apps/mobile/src/lib/kilo-pass/subscription-card-state.test.ts index febcf9434e..706395ea82 100644 --- a/apps/mobile/src/lib/kilo-pass/subscription-card-state.test.ts +++ b/apps/mobile/src/lib/kilo-pass/subscription-card-state.test.ts @@ -9,12 +9,15 @@ vi.mock('@/lib/hooks/use-language-preference', () => ({ describe('getKiloPassSubscriptionCardAccessibility', () => { it('describes the subscribe action', () => { expect( - getKiloPassSubscriptionCardAccessibility({ - action: 'open-native', - actionLabel: 'Subscribe', - description: 'Monthly credits with bonus progress', - title: 'Kilo Pass', - }) + getKiloPassSubscriptionCardAccessibility( + { + action: 'open-native', + actionLabel: 'Subscribe', + description: 'Monthly credits with bonus progress', + title: 'Kilo Pass', + }, + 'ios' + ) ).toEqual({ accessibilityHint: 'Opens Kilo Pass plans.', accessibilityLabel: 'Kilo Pass. Monthly credits with bonus progress. Subscribe', @@ -23,26 +26,49 @@ describe('getKiloPassSubscriptionCardAccessibility', () => { it('describes App Store management', () => { expect( - getKiloPassSubscriptionCardAccessibility({ - action: 'open-store-management', - actionLabel: 'Manage', - description: '$19 monthly credits · Managed in App Store', - title: 'Kilo Pass active', - }) + getKiloPassSubscriptionCardAccessibility( + { + action: 'open-store-management', + actionLabel: 'Manage', + description: '$19 monthly credits · Managed in App Store', + title: 'Kilo Pass active', + }, + 'ios' + ) ).toEqual({ accessibilityHint: 'Opens App Store subscription management.', accessibilityLabel: 'Kilo Pass active. $19 monthly credits · Managed in App Store. Manage', }); }); + it('describes Google Play management on Android', () => { + expect( + getKiloPassSubscriptionCardAccessibility( + { + action: 'open-store-management', + actionLabel: 'Manage', + description: '$19 monthly credits · Managed on Google Play', + title: 'Kilo Pass active', + }, + 'android' + ) + ).toEqual({ + accessibilityHint: 'Opens Google Play subscription management.', + accessibilityLabel: 'Kilo Pass active. $19 monthly credits · Managed on Google Play. Manage', + }); + }); + it('describes web management', () => { expect( - getKiloPassSubscriptionCardAccessibility({ - action: 'open-web', - actionLabel: 'Manage', - description: '$49 monthly credits · Managed on web', - title: 'Kilo Pass active', - }) + getKiloPassSubscriptionCardAccessibility( + { + action: 'open-web', + actionLabel: 'Manage', + description: '$49 monthly credits · Managed on web', + title: 'Kilo Pass active', + }, + 'ios' + ) ).toEqual({ accessibilityHint: 'Opens Kilo Pass management on web.', accessibilityLabel: 'Kilo Pass active. $49 monthly credits · Managed on web. Manage', @@ -51,12 +77,15 @@ describe('getKiloPassSubscriptionCardAccessibility', () => { it('omits the hint for inert cards', () => { expect( - getKiloPassSubscriptionCardAccessibility({ - action: 'none', - actionLabel: null, - description: '$49 monthly credits · Managed on Google Play', - title: 'Kilo Pass active', - }) + getKiloPassSubscriptionCardAccessibility( + { + action: 'none', + actionLabel: null, + description: '$49 monthly credits · Managed on Google Play', + title: 'Kilo Pass active', + }, + 'ios' + ) ).toEqual({ accessibilityHint: undefined, accessibilityLabel: 'Kilo Pass active. $49 monthly credits · Managed on Google Play', diff --git a/apps/mobile/src/lib/kilo-pass/subscription-card-state.ts b/apps/mobile/src/lib/kilo-pass/subscription-card-state.ts index 9c8e3b0c73..3980485341 100644 --- a/apps/mobile/src/lib/kilo-pass/subscription-card-state.ts +++ b/apps/mobile/src/lib/kilo-pass/subscription-card-state.ts @@ -29,6 +29,7 @@ export type AppStoreKiloPassOwnershipPreflight = 'owned-by-another-account' | nu type AppStoreKiloPassAvailablePurchase = { appAccountToken?: string | null; + obfuscatedAccountIdAndroid?: string | null; productId: string; purchaseState?: string | null; store?: string | null; @@ -55,7 +56,8 @@ type KiloPassSubscriptionCardAccessibility = { }; export function getKiloPassSubscriptionCardAccessibility( - cardState: KiloPassSubscriptionCardState + cardState: KiloPassSubscriptionCardState, + platformOS: string ): KiloPassSubscriptionCardAccessibility { const accessibilityLabel = [cardState.title, cardState.description, cardState.actionLabel] .filter(Boolean) @@ -64,7 +66,11 @@ export function getKiloPassSubscriptionCardAccessibility( if (cardState.action === 'open-web') { accessibilityHint = i18n.t('kiloPass.opensManagementOnWeb'); } else if (cardState.action === 'open-store-management') { - accessibilityHint = i18n.t('kiloPass.opensAppStoreManagement'); + accessibilityHint = i18n.t( + platformOS === 'android' + ? 'kiloPass.opensPlayManagement' + : 'kiloPass.opensAppStoreManagement' + ); } else if (cardState.action === 'open-native') { accessibilityHint = i18n.t('kiloPass.opensPlans'); } @@ -76,24 +82,42 @@ export function getAppStoreKiloPassOwnershipPreflight(params: { availablePurchases: readonly AppStoreKiloPassAvailablePurchase[]; currentAppAccountToken: string | null | undefined; enabledAppleProductIds: readonly string[]; + enabledGoogleProductIds: readonly string[]; platformOS: string; }): AppStoreKiloPassOwnershipPreflight { - if (params.platformOS !== 'ios' || !params.currentAppAccountToken) { + if (!params.currentAppAccountToken) { return null; } - const enabledAppleProductIds = new Set(params.enabledAppleProductIds); // StoreKit returns `Transaction.appAccountToken` as an uppercase `UUID.uuidString`, // while the backend stores the lowercase Postgres uuid. Compare case-insensitively // or every restore on a device that already owns the pass reads as another owner. const currentAppAccountToken = params.currentAppAccountToken.toLowerCase(); + + if (params.platformOS === 'ios') { + const enabledAppleProductIds = new Set(params.enabledAppleProductIds); + const hasDifferentOwnerPurchase = params.availablePurchases.some( + purchase => + purchase.store === 'apple' && + purchase.purchaseState !== 'pending' && + enabledAppleProductIds.has(purchase.productId) && + Boolean(purchase.appAccountToken) && + purchase.appAccountToken?.toLowerCase() !== currentAppAccountToken + ); + + return hasDifferentOwnerPurchase ? 'owned-by-another-account' : null; + } + + // Play uses an obfuscated account id, still case-insensitive, still only for + // enabled Google Play products. + const enabledGoogleProductIds = new Set(params.enabledGoogleProductIds); const hasDifferentOwnerPurchase = params.availablePurchases.some( purchase => - purchase.store === 'apple' && + purchase.store === 'google' && purchase.purchaseState !== 'pending' && - enabledAppleProductIds.has(purchase.productId) && - Boolean(purchase.appAccountToken) && - purchase.appAccountToken?.toLowerCase() !== currentAppAccountToken + enabledGoogleProductIds.has(purchase.productId) && + Boolean(purchase.obfuscatedAccountIdAndroid) && + purchase.obfuscatedAccountIdAndroid?.toLowerCase() !== currentAppAccountToken ); return hasDifferentOwnerPurchase ? 'owned-by-another-account' : null; @@ -142,7 +166,7 @@ export function getKiloPassSubscriptionCardContentState(params: { state: { action: 'open-native', actionLabel: null, - description: i18n.t('kiloPass.unavailableDescription'), + description: i18n.t('kiloPass.purchaseUnavailable'), title: KILO_PASS_TITLE, }, }; @@ -154,7 +178,7 @@ export function getKiloPassSubscriptionCardContentState(params: { state: { action: 'open-web', actionLabel: i18n.t('kiloPass.manage'), - description: i18n.t('kiloPass.webManagementDescription'), + description: i18n.t('kiloPass.managedOnWeb'), title: KILO_PASS_TITLE, }, }; @@ -177,7 +201,7 @@ export function getKiloPassSubscriptionCardContentState(params: { return { kind: 'card', - state: getActiveSubscriptionCardState(subscription, presentation.statusClass), + state: getActiveSubscriptionCardState(subscription, presentation.statusClass, params.platformOS), }; } @@ -213,7 +237,8 @@ function getStatusClassTitle(statusClass: PurchaseStatusClass, cancelAtPeriodEnd function getActiveSubscriptionCardState( subscription: KiloPassSubscriptionCardSubscription, - statusClass: PurchaseStatusClass + statusClass: PurchaseStatusClass, + platformOS: string ): KiloPassSubscriptionCardState { const credits = i18n.t('kiloPass.monthlyCredits', { credits: formatUsd(subscription.currentPeriodBaseCreditsUsd, i18n.language, { @@ -225,18 +250,33 @@ function getActiveSubscriptionCardState( if (subscription.paymentProvider === 'google_play') { return { - action: 'none', - actionLabel: null, + action: 'open-store-management', + actionLabel: i18n.t('kiloPass.manage'), description: subscription.cancelAtPeriodEnd ? `${credits} · ${i18n.t('kiloPass.ends', { date: formatSubscriptionEndDate(subscription.refillAt), - })} · ${i18n.t('kiloPass.managedOnGooglePlay')}` + })}` : `${credits} · ${i18n.t('kiloPass.managedOnGooglePlay')}`, title, }; } if (subscription.paymentProvider === 'app_store') { + if (platformOS !== 'ios') { + // An App Store-owned pass on a Play device is managed in the App Store, + // which the Play device cannot open — show it inert. + return { + action: 'none', + actionLabel: null, + description: subscription.cancelAtPeriodEnd + ? `${credits} · ${i18n.t('kiloPass.ends', { + date: formatSubscriptionEndDate(subscription.refillAt), + })} · ${i18n.t('kiloPass.managedInAppStore')}` + : `${credits} · ${i18n.t('kiloPass.managedInAppStore')}`, + title, + }; + } + return { action: 'open-store-management', actionLabel: i18n.t('kiloPass.manage'), diff --git a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-products.ts b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-products.ts index 44770aa772..f2b6050217 100644 --- a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-products.ts +++ b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-products.ts @@ -10,13 +10,19 @@ import { getStoreKiloPassProductsState } from './store-products-state'; import { loadAppStoreKiloPassProducts } from './store-products-loader'; const STORE_KILO_PASS_PRODUCTS_STALE_TIME_MS = 5 * 60 * 1000; -// Fixed bound on the App Store connection handshake — raise if real +// Fixed bound on the store connection handshake — raise if real // devices routinely need longer than this to connect. -const APP_STORE_CONNECTION_TIMEOUT_MS = 8000; +const STORE_CONNECTION_TIMEOUT_MS = 8000; const APP_STORE_CONNECTION_TIMEOUT_MESSAGE = 'kiloPass.couldNotConnectToAppStore'; +const PLAY_CONNECTION_TIMEOUT_MESSAGE = 'kiloPass.couldNotConnectToPlay'; + +const isIapPlatform = Platform.OS === 'ios' || Platform.OS === 'android'; +const storefront = Platform.OS === 'ios' ? 'app_store' : 'play'; +const storeConnectionTimeoutMessage = + Platform.OS === 'ios' ? APP_STORE_CONNECTION_TIMEOUT_MESSAGE : PLAY_CONNECTION_TIMEOUT_MESSAGE; export type StoreKiloPassProductsOptions = { - /** Whether the App Store connection (from the IAP owner) is established. */ + /** Whether the store connection (from the IAP owner) is established. */ connected: boolean; /** Fetches store SKUs. Injected by the IAP owner so this module never imports `expo-iap`. */ fetchStoreProducts: (productSkus: string[]) => Promise; @@ -29,15 +35,15 @@ export function useStoreKiloPassProducts(options: StoreKiloPassProductsOptions) const [storeErrorMessage, setStoreErrorMessage] = useState(null); const [connectionAttempt, setConnectionAttempt] = useState(0); - // Bounded wait for the StoreKit connection — without this, a stuck + // Bounded wait for the store connection — without this, a stuck // connection leaves the screen showing loading skeletons forever. useEffect(() => { - if (Platform.OS !== 'ios' || options.connected) { + if (!isIapPlatform || options.connected) { return undefined; } const timer = setTimeout(() => { - setStoreErrorMessage(current => current ?? i18n.t(APP_STORE_CONNECTION_TIMEOUT_MESSAGE)); - }, APP_STORE_CONNECTION_TIMEOUT_MS); + setStoreErrorMessage(current => current ?? i18n.t(storeConnectionTimeoutMessage)); + }, STORE_CONNECTION_TIMEOUT_MS); return () => { clearTimeout(timer); }; @@ -54,10 +60,11 @@ export function useStoreKiloPassProducts(options: StoreKiloPassProductsOptions) ); return backendResponse; }, + storefront, }); return loadedProducts; }, - enabled: Platform.OS === 'ios' && options.connected && userId != null, + enabled: isIapPlatform && options.connected && userId != null, staleTime: STORE_KILO_PASS_PRODUCTS_STALE_TIME_MS, }); @@ -88,7 +95,7 @@ export function useStoreKiloPassProducts(options: StoreKiloPassProductsOptions) products: productsState.products, isLoading: storeErrorMessage === null && - (productsQuery.isLoading || (Platform.OS === 'ios' && !options.connected)), + (productsQuery.isLoading || (isIapPlatform && !options.connected)), isRefetching: productsQuery.isRefetching, isError: productsState.isError, errorMessage: productsState.errorMessage, diff --git a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx index ae913cc77a..76752b984d 100644 --- a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx +++ b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx @@ -10,6 +10,7 @@ import { } from '@/components/kilo-pass/kilo-pass-native-iap-owner'; import { createAppStoreKiloPassPurchaseActions, + getKiloPassPurchaseErrorMessage, resetInlinePurchaseErrorOwnership, resetPurchaseErrorToastDedup, useInlinePurchaseErrorOwnership, @@ -137,6 +138,7 @@ vi.mock('@/lib/trpc', () => ({ return { kiloPass: { completeAppStorePurchase: { mutationOptions: () => ({}) }, + completePlayPurchase: { mutationOptions: () => ({}) }, getCreditHistory: { pathFilter: () => ({ queryKey: ['credit-history'] }) }, getMobileStoreProducts: { queryOptions: () => ({ queryKey: ['mobile-products'] }) }, getPurchasePresentation: { pathFilter: () => ({ queryKey: ['purchase-presentation'] }) }, @@ -306,8 +308,11 @@ function createActions( overrides: Partial[0]> = {} ) { return createAppStoreKiloPassPurchaseActions({ + storefront: 'app_store', completeAppStorePurchase: vi.fn(), + completePlayPurchase: vi.fn(), enabledAppleProductIds: [product.appleProductId], + enabledGoogleProductIds: [], finishTransaction: vi.fn(), getAvailablePurchases: vi.fn().mockResolvedValue([]), invalidateAfterCompletion: vi.fn(), @@ -683,8 +688,11 @@ describe('createAppStoreKiloPassPurchaseActions', () => { const onPurchaseCompleted = vi.fn(); const purchase = createPurchase(); const recoveryActions = createAppStoreKiloPassPurchaseActions({ + storefront: 'app_store', completeAppStorePurchase: completeFromRecovery, + completePlayPurchase: vi.fn(), enabledAppleProductIds: [product.appleProductId], + enabledGoogleProductIds: [], finishTransaction: finishFromRecovery, getAvailablePurchases: vi.fn().mockResolvedValue([]), invalidateAfterCompletion: vi.fn(), @@ -693,8 +701,11 @@ describe('createAppStoreKiloPassPurchaseActions', () => { showError: () => undefined, }); const sheetActions = createAppStoreKiloPassPurchaseActions({ + storefront: 'app_store', completeAppStorePurchase: completeFromSheet, + completePlayPurchase: vi.fn(), enabledAppleProductIds: [product.appleProductId], + enabledGoogleProductIds: [], finishTransaction: finishFromSheet, getAvailablePurchases: vi.fn().mockResolvedValue([]), invalidateAfterCompletion: vi.fn(), @@ -859,6 +870,163 @@ describe('createAppStoreKiloPassPurchaseActions', () => { expect(result).toBe('failed'); expect(showError).toHaveBeenCalledWith('Failed to restore purchases. Try again.'); }); + + it('requests a Google Play subscription purchase', async () => { + const requestPurchase = vi.fn().mockResolvedValue(null); + const actions = createActions({ + storefront: 'play', + requestPurchase, + }); + const playProduct = { + ...product, + storeProduct: { ...product.storeProduct, offerToken: 'offer-123' }, + }; + + await actions.purchase(playProduct); + + expect(requestPurchase).toHaveBeenCalledWith({ + request: { + google: { + obfuscatedAccountId: product.appAccountToken, + skus: [product.googleProductId], + subscriptionOffers: [{ sku: product.googleProductId, offerToken: 'offer-123' }], + }, + }, + type: 'subs', + }); + }); + + it('shows a missing-offer-token error without requesting a Play purchase', async () => { + const requestPurchase = vi.fn(); + const showError = vi.fn(); + const actions = createActions({ + storefront: 'play', + requestPurchase, + showError: message => { + showError(message); + }, + }); + + const result = await actions.purchase(product); + + expect(result).toBe(false); + expect(requestPurchase).not.toHaveBeenCalled(); + expect(showError).toHaveBeenCalledWith( + 'Google Play purchase is missing an offer token. Try again.' + ); + }); + + it('reports a missing Play purchase token without completing', async () => { + const finishTransaction = vi.fn(); + const completePlayPurchase = vi.fn(); + const showError = vi.fn(); + const purchase = createPurchase({ + store: 'google', + platform: 'android', + productId: product.googleProductId, + purchaseToken: null, + }); + const actions = createActions({ + storefront: 'play', + completePlayPurchase, + enabledAppleProductIds: [], + enabledGoogleProductIds: [product.googleProductId], + finishTransaction, + showError: message => { + showError(message); + }, + }); + + const completed = await actions.handlePurchaseSuccess(purchase); + + expect(completed).toBe(false); + expect(completePlayPurchase).not.toHaveBeenCalled(); + expect(finishTransaction).not.toHaveBeenCalled(); + expect(showError).toHaveBeenCalledWith( + 'Google Play purchase did not include a purchase token.' + ); + }); + + it('finishes the transaction after Play backend completion succeeds', async () => { + const finishTransaction = vi.fn(); + const completePlayPurchase = vi.fn().mockResolvedValue({ alreadyProcessed: false }); + const purchase = createPurchase({ + store: 'google', + platform: 'android', + productId: product.googleProductId, + purchaseToken: 'play-token', + }); + const actions = createActions({ + storefront: 'play', + completePlayPurchase, + enabledAppleProductIds: [], + enabledGoogleProductIds: [product.googleProductId], + finishTransaction, + }); + + await actions.handlePurchaseSuccess(purchase); + + expect(completePlayPurchase).toHaveBeenCalledWith({ + purchaseToken: 'play-token', + platform: 'android', + storefront: 'play', + product: 'kilo_pass', + }); + expect(finishTransaction).toHaveBeenCalledWith({ purchase, isConsumable: false }); + }); + + it('restores an unfinished Kilo Pass Google Play purchase', async () => { + const purchase = createPurchase({ + store: 'google', + platform: 'android', + productId: product.googleProductId, + purchaseToken: 'play-token', + }); + const completePlayPurchase = vi.fn().mockResolvedValue({ alreadyProcessed: false }); + const finishTransaction = vi.fn(); + const invalidateAfterCompletion = vi.fn(); + const actions = createActions({ + storefront: 'play', + completePlayPurchase, + enabledAppleProductIds: [], + enabledGoogleProductIds: [product.googleProductId], + finishTransaction, + getAvailablePurchases: vi.fn().mockResolvedValue([purchase]), + invalidateAfterCompletion, + restorePurchases: vi.fn().mockResolvedValue(undefined), + }); + + const result = await actions.restorePurchases(); + + expect(result).toBe('restored'); + expect(completePlayPurchase).toHaveBeenCalledWith({ + purchaseToken: 'play-token', + platform: 'android', + storefront: 'play', + product: 'kilo_pass', + }); + expect(finishTransaction).toHaveBeenCalledWith({ purchase, isConsumable: false }); + expect(invalidateAfterCompletion).toHaveBeenCalledTimes(1); + }); + + it('maps Google Play account mismatch strings to Play-specific copy', () => { + expect( + getKiloPassPurchaseErrorMessage( + new Error('Google Play purchase account token does not match the signed-in user.'), + 'fallback' + ) + ).toBe('The Kilo Pass on this Google Play account belongs to a different Kilo account.'); + expect( + getKiloPassPurchaseErrorMessage( + new Error( + "This Google Play purchase isn't linked to your Kilo account. Make sure you're signed in to the Google account that made the purchase, then try again." + ), + 'fallback' + ) + ).toBe( + "This Google Play purchase isn't linked to your Kilo account. Sign in to the Google account used for the purchase, then try again." + ); + }); }); describe('KiloPassNativeIapOwner', () => { diff --git a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.ts b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.ts index 990e4e1f47..bc27de5633 100644 --- a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.ts +++ b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.ts @@ -26,16 +26,33 @@ const APP_STORE_ACCOUNT_TOKEN_MISMATCH_MESSAGE = 'App Store purchase account token does not match the signed-in user.'; const APP_STORE_PURCHASE_NOT_LINKED_TO_ACCOUNT_MESSAGE = "This App Store purchase isn't linked to your Kilo account. Make sure you're signed in to the Apple ID that made the purchase, then try again."; +const GOOGLE_PLAY_ACCOUNT_TOKEN_MISMATCH_MESSAGE = + 'Google Play purchase account token does not match the signed-in user.'; +const GOOGLE_PLAY_PURCHASE_NOT_LINKED_TO_ACCOUNT_MESSAGE = + "This Google Play purchase isn't linked to your Kilo account. Make sure you're signed in to the Google account that made the purchase, then try again."; const PURCHASE_ERROR_TOAST_DEDUPE_MS = 1500; +type StoreKiloPassPurchaseRequest = + | { apple: { appAccountToken: string; sku: string } } + | { + google: { + obfuscatedAccountId: string; + skus: string[]; + subscriptionOffers: { sku: string; offerToken: string }[]; + }; + }; + export type AppStoreKiloPassPurchaseActionsDeps = { + // Which storefront the current device buys from. The owner injects this from + // `Platform.OS` so this module never imports `react-native`. + storefront: 'app_store' | 'play'; // The real implementations (expo-iap's mutateAsync, the tRPC mutation) each // resolve to their own concrete result; this module never reads it, only // awaits it, so `Promise` can't stand in here — `Promise` requires // its real `X` to be assignable to `void`, which none of the callers' true // return types are. requestPurchase: (params: { - request: { apple: { appAccountToken: string; sku: string } }; + request: StoreKiloPassPurchaseRequest; type: 'subs'; // oxlint-disable-next-line anti-slop/no-unknown-returns -- see comment above: the resolved value is intentionally unused and varies per real implementation }) => Promise; @@ -48,9 +65,18 @@ export type AppStoreKiloPassPurchaseActionsDeps = { product: 'kilo_pass'; // oxlint-disable-next-line anti-slop/no-unknown-returns -- see comment above requestPurchase: the resolved value is intentionally unused and varies per real implementation }) => Promise; + completePlayPurchase: (input: { + purchaseToken: string; + platform: 'android'; + storefront: 'play'; + product: 'kilo_pass'; + // oxlint-disable-next-line anti-slop/no-unknown-returns -- see comment above requestPurchase: the resolved value is intentionally unused and varies per real implementation + }) => Promise; finishTransaction: (params: { purchase: Purchase; isConsumable: false }) => Promise; enabledAppleProductIds: readonly string[]; + enabledGoogleProductIds: readonly string[]; loadEnabledAppleProductIds?: () => Promise; + loadEnabledGoogleProductIds?: () => Promise; invalidateAfterCompletion: () => Promise | void; onPurchaseCompleted?: () => void; setPendingPurchaseCompletedCallback?: (callback: (() => void) | null) => void; @@ -104,25 +130,36 @@ type PurchaseSuccessOptions = PurchaseCompletionOptions & { type RecoverPurchasesOptions = PurchaseCompletionOptions & { enabledAppleProductIds?: readonly string[]; + enabledGoogleProductIds?: readonly string[]; }; export function isRecoverableKiloPassPurchase( purchase: Purchase, - enabledAppleProductIds: readonly string[] + enabledAppleProductIds: readonly string[], + enabledGoogleProductIds: readonly string[] = [] ): boolean { if (purchase.purchaseState === 'pending') { return false; } - if (purchase.store !== 'apple') { - return false; + if (purchase.store === 'apple') { + return enabledAppleProductIds.includes(purchase.productId); } - return enabledAppleProductIds.includes(purchase.productId); + if (purchase.store === 'google') { + return enabledGoogleProductIds.includes(purchase.productId); + } + return false; } function getPurchaseToken(purchase: Purchase): string { const token = purchase.purchaseToken; if (!token) { - throw new Error(i18n.t('kiloPass.purchaseMissingSignedTransaction')); + throw new Error( + i18n.t( + purchase.store === 'google' + ? 'kiloPass.purchaseMissingPurchaseToken' + : 'kiloPass.purchaseMissingSignedTransaction' + ) + ); } return token; } @@ -155,6 +192,12 @@ export function getKiloPassPurchaseErrorMessage(error: unknown, fallback: string if (message === APP_STORE_PURCHASE_NOT_LINKED_TO_ACCOUNT_MESSAGE) { return i18n.t('kiloPass.purchaseDifferentAccount'); } + if (message === GOOGLE_PLAY_ACCOUNT_TOKEN_MISMATCH_MESSAGE) { + return i18n.t('kiloPass.purchaseOwnedByAnotherAccountPlay'); + } + if (message === GOOGLE_PLAY_PURCHASE_NOT_LINKED_TO_ACCOUNT_MESSAGE) { + return i18n.t('kiloPass.purchaseDifferentAccountPlay'); + } return message; } @@ -186,13 +229,20 @@ export function createAppStoreKiloPassPurchaseActions(deps: AppStoreKiloPassPurc options: PurchaseCompletionOptions = {} ): Promise { try { - const signedTransactionJws = getPurchaseToken(purchase); - await deps.completeAppStorePurchase({ - signedTransactionJws, - platform: 'ios', - storefront: 'app_store', - product: 'kilo_pass', - }); + const token = getPurchaseToken(purchase); + await (purchase.store === 'google' + ? deps.completePlayPurchase({ + purchaseToken: token, + platform: 'android', + storefront: 'play', + product: 'kilo_pass', + }) + : deps.completeAppStorePurchase({ + signedTransactionJws: token, + platform: 'ios', + storefront: 'app_store', + product: 'kilo_pass', + })); if (options.invalidateAfterCompletion ?? true) { await deps.invalidateAfterCompletion(); } @@ -253,14 +303,25 @@ export function createAppStoreKiloPassPurchaseActions(deps: AppStoreKiloPassPurc return (await deps.loadEnabledAppleProductIds?.()) ?? []; } + async function getEnabledGoogleProductIdsForRestore() { + if (deps.enabledGoogleProductIds.length > 0) { + return deps.enabledGoogleProductIds; + } + return (await deps.loadEnabledGoogleProductIds?.()) ?? []; + } + async function recoverPurchases( purchases: Purchase[], options: RecoverPurchasesOptions = {} ): Promise { const enabledAppleProductIds = options.enabledAppleProductIds ?? deps.enabledAppleProductIds; + const enabledGoogleProductIds = + options.enabledGoogleProductIds ?? deps.enabledGoogleProductIds; const recoveryResults = await Promise.all( purchases - .filter(purchase => isRecoverableKiloPassPurchase(purchase, enabledAppleProductIds)) + .filter(purchase => + isRecoverableKiloPassPurchase(purchase, enabledAppleProductIds, enabledGoogleProductIds) + ) .map(async purchase => { const completed = await handlePurchaseSuccess(purchase, { invalidateAfterCompletion: false, @@ -286,6 +347,26 @@ export function createAppStoreKiloPassPurchaseActions(deps: AppStoreKiloPassPurc ): Promise => { try { deps.setPendingPurchaseCompletedCallback?.(options.onCompleted ?? null); + if (deps.storefront === 'play') { + const offerToken = product.storeProduct.offerToken; + if (!offerToken) { + deps.showError(i18n.t('kiloPass.purchaseMissingOfferToken')); + deps.setPendingPurchaseCompletedCallback?.(null); + return false; + } + await deps.requestPurchase({ + request: { + google: { + obfuscatedAccountId: product.appAccountToken, + skus: [product.googleProductId], + subscriptionOffers: [{ sku: product.googleProductId, offerToken }], + }, + }, + type: 'subs', + }); + return true; + } + await deps.requestPurchase({ request: { apple: { appAccountToken: product.appAccountToken, sku: product.appleProductId }, @@ -296,7 +377,11 @@ export function createAppStoreKiloPassPurchaseActions(deps: AppStoreKiloPassPurc } catch (error) { const message = getKiloPassPurchaseErrorMessage( error, - i18n.t('kiloPass.purchaseStartFailed') + i18n.t( + deps.storefront === 'play' + ? 'kiloPass.purchaseStartFailedPlay' + : 'kiloPass.purchaseStartFailed' + ) ); if (message) { deps.showError(message); @@ -312,13 +397,14 @@ export function createAppStoreKiloPassPurchaseActions(deps: AppStoreKiloPassPurc await deps.restorePurchases(); const availablePurchases = await deps.getAvailablePurchases(); const enabledAppleProductIds = await getEnabledAppleProductIdsForRestore(); - if (enabledAppleProductIds.length === 0) { + const enabledGoogleProductIds = await getEnabledGoogleProductIdsForRestore(); + if (enabledAppleProductIds.length === 0 && enabledGoogleProductIds.length === 0) { deps.showError(i18n.t('kiloPass.restoreFailed')); return 'failed'; } const kiloPassPurchases = availablePurchases.filter(purchase => - isRecoverableKiloPassPurchase(purchase, enabledAppleProductIds) + isRecoverableKiloPassPurchase(purchase, enabledAppleProductIds, enabledGoogleProductIds) ); if (kiloPassPurchases.length === 0) { return 'empty'; @@ -326,6 +412,7 @@ export function createAppStoreKiloPassPurchaseActions(deps: AppStoreKiloPassPurc const completedPurchases = await recoverPurchases(kiloPassPurchases, { enabledAppleProductIds, + enabledGoogleProductIds, notifyErrors: true, }); return completedPurchases.length > 0 ? 'restored' : 'failed'; diff --git a/packages/app-shared/src/commerce/purchase-presentation.ts b/packages/app-shared/src/commerce/purchase-presentation.ts index fdaa9321eb..d4b688c5fa 100644 --- a/packages/app-shared/src/commerce/purchase-presentation.ts +++ b/packages/app-shared/src/commerce/purchase-presentation.ts @@ -9,21 +9,6 @@ /** Kilo Pass plan title. Consumed by mobile and E2E; keep exact. */ export const KILO_PASS_TITLE = 'Kilo Pass'; -/** - * Android unavailable description. The mobile app renders - * `kiloPass.unavailableDescription` from its catalog instead; this constant is - * the English source that web and E2E compare against. Keep the two in step. - */ -export const KILO_PASS_UNAVAILABLE_DESCRIPTION = - 'Kilo Pass is not available as an in-app purchase on Android. Manage it on the web.'; - -/** - * Web-management description. The mobile app renders - * `kiloPass.webManagementDescription` from its catalog instead; this constant - * is the English source that web and E2E compare against. Keep the two in step. - */ -export const KILO_PASS_WEB_MANAGEMENT_DESCRIPTION = 'This Kilo Pass is managed on the web.'; - /** Label for the web-management CTA. Consumed by mobile and E2E; keep exact. */ export const KILO_PASS_MANAGE_CTA_LABEL = 'Manage'; From ea4d4d5fe1c37a8887e9bb4ee057b7158b0eb93d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Thu, 27 Aug 2026 19:15:18 +0200 Subject: [PATCH 2/7] fix(mobile): harden Android Kilo Pass purchase handling --- .../kilo-pass/kilo-pass-native-iap-owner.tsx | 13 +++-- .../kilo-pass-subscription-screen.test.ts | 41 ++++++++++++++++ .../kilo-pass-subscription-screen.tsx | 11 +++-- .../use-store-kilo-pass-purchase.test.tsx | 48 ++++++++++++++++++- .../kilo-pass/use-store-kilo-pass-purchase.ts | 24 +++++++--- 5 files changed, 118 insertions(+), 19 deletions(-) diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx index beba637e1a..34315d60ae 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx @@ -166,7 +166,11 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { pendingPurchaseCompletedCallbackRef.current = null; releasePurchaseRequest(); // A null message means the user cancelled — not a failure. - const message = getKiloPassPurchaseErrorMessage(error, error.message); + const message = getKiloPassPurchaseErrorMessage( + error, + error.message, + isAndroid ? 'play' : 'app_store' + ); if (message) { captureEvent(KILO_PASS_PURCHASE_FAILED_EVENT); showDedupedPurchaseError(message); @@ -446,12 +450,7 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { } })(); } - }, [ - actions, - availablePurchases, - enabledAppleProductIds.length, - enabledGoogleProductIds.length, - ]); + }, [actions, availablePurchases, enabledAppleProductIds.length, enabledGoogleProductIds.length]); const value = useMemo( () => ({ diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts index ed5862cde8..460a9232d8 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts @@ -543,6 +543,47 @@ describe('KiloPassSubscriptionScreen', () => { renderer.unmount(); }); + it('renders the native IAP screen under the kilo-pass-native-iap testID on Android', async () => { + setAndroidNativeIapPresentation(); + mocks.nativeIap.products = []; + + const renderer = await renderScreen(); + + expect( + renderer.root.findAll( + node => (node.props as { testID?: string }).testID === 'kilo-pass-native-iap' + ) + ).toHaveLength(1); + + renderer.unmount(); + }); + + it('sends the Android preflight payload with platform, storefront, googleProductId, and googlePurchaseToken', async () => { + setAndroidNativeIapPresentation(); + const androidProduct = { ...product, googleProductId: 'kilopass_tier49' }; + mocks.nativeIap.products = [androidProduct]; + mocks.nativeIap.ownedGooglePurchaseToken = 'play-token-123'; + mocks.preflightMutateAsync.mockResolvedValue({ + allowed: true, + statusClass: 'healthy', + reason: null, + }); + + const renderer = await renderScreen(); + await press(first(productTiles(renderer))); + + expect(mocks.preflightMutateAsync).toHaveBeenCalledWith( + expect.objectContaining({ + platform: 'android', + storefront: 'play', + googleProductId: 'kilopass_tier49', + googlePurchaseToken: 'play-token-123', + }) + ); + + renderer.unmount(); + }); + it('disables the product tiles while preflight is pending', async () => { setNativeIapPresentation(); mocks.nativeIap.products = [product]; diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx index d3b555d059..4a93eb971d 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx @@ -27,9 +27,6 @@ import { KILO_PASS_TITLE, type PurchasePresentationKind } from '@kilocode/app-sh import { KiloPassNativeIapOwner, useKiloPassNativeIap } from './kilo-pass-native-iap-owner'; import { RestorePurchasesButton } from './restore-purchases-button'; -const isIapPlatform = Platform.OS === 'ios' || Platform.OS === 'android'; -const isAndroid = Platform.OS === 'android'; - type SubscriptionScreenFeedback = { type: 'success' | 'info' | 'error'; text: string }; /** @@ -160,6 +157,7 @@ function KiloPassUnavailableScreen({ } function KiloPassNativeIapContent() { + const isAndroid = Platform.OS === 'android'; const colors = useThemeColors(); const insets = useSafeAreaInsets(); const router = useRouter(); @@ -365,7 +363,11 @@ function KiloPassNativeIapContent() { {productsError ?? - t(isAndroid ? 'kiloPass.productsCouldNotLoadPlay' : 'kiloPass.productsCouldNotLoad')} + t( + isAndroid + ? 'kiloPass.productsCouldNotLoadPlay' + : 'kiloPass.productsCouldNotLoad' + )} {productsIsRefetching ? t('kiloPass.tryingAgain') : t('common.tryAgain')} @@ -475,6 +477,7 @@ export function KiloPassSubscriptionScreen() { const trpc = useTRPC(); const platform = Platform.OS === 'ios' ? 'ios' : 'android'; const storefront = Platform.OS === 'ios' ? 'app_store' : 'play'; + const isIapPlatform = Platform.OS === 'ios' || Platform.OS === 'android'; const presentationQuery = useQuery( trpc.kiloPass.getPurchasePresentation.queryOptions({ platform, diff --git a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx index 76752b984d..e658a20ad4 100644 --- a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx +++ b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx @@ -1013,7 +1013,8 @@ describe('createAppStoreKiloPassPurchaseActions', () => { expect( getKiloPassPurchaseErrorMessage( new Error('Google Play purchase account token does not match the signed-in user.'), - 'fallback' + 'fallback', + 'play' ) ).toBe('The Kilo Pass on this Google Play account belongs to a different Kilo account.'); expect( @@ -1021,12 +1022,55 @@ describe('createAppStoreKiloPassPurchaseActions', () => { new Error( "This Google Play purchase isn't linked to your Kilo account. Make sure you're signed in to the Google account that made the purchase, then try again." ), - 'fallback' + 'fallback', + 'play' ) ).toBe( "This Google Play purchase isn't linked to your Kilo account. Sign in to the Google account used for the purchase, then try again." ); }); + + it('maps AlreadyOwned to Play copy on the Play storefront and Apple copy on the App Store', () => { + expect( + getKiloPassPurchaseErrorMessage( + { code: 'already-owned', message: 'Item already owned' }, + 'fallback', + 'play' + ) + ).toBe('The Kilo Pass on this Google Play account belongs to a different Kilo account.'); + expect( + getKiloPassPurchaseErrorMessage( + { code: 'already-owned', message: 'Item already owned' }, + 'fallback', + 'app_store' + ) + ).toBe('The Kilo Pass on this Apple Account belongs to a different Kilo account.'); + }); + + it('shows Play copy when the Google Play account already owns the subscription', async () => { + const showError = vi.fn(); + const actions = createActions({ + storefront: 'play', + requestPurchase: vi.fn().mockRejectedValue({ + code: 'already-owned', + message: 'Item already owned', + }), + showError: message => { + showError(message); + }, + }); + const playProduct = { + ...product, + storeProduct: { ...product.storeProduct, offerToken: 'offer-123' }, + }; + + await actions.purchase(playProduct); + + expect(showError).toHaveBeenCalledTimes(1); + expect(showError).toHaveBeenCalledWith( + 'The Kilo Pass on this Google Play account belongs to a different Kilo account.' + ); + }); }); describe('KiloPassNativeIapOwner', () => { diff --git a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.ts b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.ts index bc27de5633..9718a255c7 100644 --- a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.ts +++ b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.ts @@ -176,13 +176,21 @@ function getErrorMessage(error: unknown, fallback: string): string { return errorMessageSchema.safeParse(error).data?.message ?? fallback; } -export function getKiloPassPurchaseErrorMessage(error: unknown, fallback: string): string | null { +export function getKiloPassPurchaseErrorMessage( + error: unknown, + fallback: string, + storefront: 'app_store' | 'play' +): string | null { if (isUserCancelledPurchaseError(error)) { return null; } if (isAlreadyOwnedPurchaseError(error)) { - return i18n.t('kiloPass.purchaseOwnedByAnotherAccount'); + return i18n.t( + storefront === 'play' + ? 'kiloPass.purchaseOwnedByAnotherAccountPlay' + : 'kiloPass.purchaseOwnedByAnotherAccount' + ); } const message = getErrorMessage(error, fallback); @@ -249,7 +257,11 @@ export function createAppStoreKiloPassPurchaseActions(deps: AppStoreKiloPassPurc await deps.finishTransaction({ purchase, isConsumable: false }); return { completed: true }; } catch (error) { - const message = getKiloPassPurchaseErrorMessage(error, i18n.t('kiloPass.purchaseFailed')); + const message = getKiloPassPurchaseErrorMessage( + error, + i18n.t('kiloPass.purchaseFailed'), + deps.storefront + ); return { completed: false, errorMessage: message }; } } @@ -315,8 +327,7 @@ export function createAppStoreKiloPassPurchaseActions(deps: AppStoreKiloPassPurc options: RecoverPurchasesOptions = {} ): Promise { const enabledAppleProductIds = options.enabledAppleProductIds ?? deps.enabledAppleProductIds; - const enabledGoogleProductIds = - options.enabledGoogleProductIds ?? deps.enabledGoogleProductIds; + const enabledGoogleProductIds = options.enabledGoogleProductIds ?? deps.enabledGoogleProductIds; const recoveryResults = await Promise.all( purchases .filter(purchase => @@ -381,7 +392,8 @@ export function createAppStoreKiloPassPurchaseActions(deps: AppStoreKiloPassPurc deps.storefront === 'play' ? 'kiloPass.purchaseStartFailedPlay' : 'kiloPass.purchaseStartFailed' - ) + ), + deps.storefront ); if (message) { deps.showError(message); From f3cc02226b21ee4fdc8f52ebc20abc694f916fb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Thu, 27 Aug 2026 19:54:36 +0200 Subject: [PATCH 3/7] fix(mobile): keep cross-store Kilo Pass management inert --- .../kilo-pass-subscription-screen.test.ts | 22 +++++++ .../kilo-pass-subscription-screen.tsx | 6 +- .../subscription-card-content-state.test.ts | 57 +++++++++++++++++++ .../lib/kilo-pass/subscription-card-state.ts | 25 ++++++-- 4 files changed, 103 insertions(+), 7 deletions(-) diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts index 460a9232d8..4a6885b065 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts @@ -584,6 +584,28 @@ describe('KiloPassSubscriptionScreen', () => { renderer.unmount(); }); + it('shows Play copy for an Android preflight owned by another account', async () => { + setAndroidNativeIapPresentation(); + const androidProduct = { ...product, googleProductId: 'kilopass_tier49' }; + mocks.nativeIap.products = [androidProduct]; + mocks.preflightMutateAsync.mockResolvedValue({ + allowed: false, + statusClass: 'terminal', + reason: 'owned_by_another_account', + }); + + const renderer = await renderScreen(); + await press(first(productTiles(renderer))); + + expect(mocks.nativeIap.purchase).not.toHaveBeenCalled(); + expect(allText(renderer)).toContain( + 'The Kilo Pass on this Google Play account belongs to a different Kilo account. Sign in to that Kilo account to manage it.' + ); + expect(allText(renderer)).not.toContain('Apple Account'); + + renderer.unmount(); + }); + it('disables the product tiles while preflight is pending', async () => { setNativeIapPresentation(); mocks.nativeIap.products = [product]; diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx index 4a93eb971d..ed2b059774 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx @@ -38,12 +38,12 @@ type PreflightFailure = | { kind: 'retryable'; message: string; product: AppStoreKiloPassProduct } | { kind: 'nonRetryable'; message: string }; -function getPreflightFailureMessage(reason: string | null): string { +function getPreflightFailureMessage(reason: string | null, isAndroid: boolean): string { if (reason === 'already_subscribed') { return i18n.t('kiloPass.alreadySubscribed'); } if (reason === 'owned_by_another_account') { - return i18n.t('kiloPass.otherAccountCopy'); + return i18n.t(isAndroid ? 'kiloPass.otherAccountCopyPlay' : 'kiloPass.otherAccountCopy'); } return i18n.t('kiloPass.purchaseUnavailable'); } @@ -258,7 +258,7 @@ function KiloPassNativeIapContent() { if (!preflight.allowed) { setPreflightFailure({ kind: 'nonRetryable', - message: getPreflightFailureMessage(preflight.reason), + message: getPreflightFailureMessage(preflight.reason, isAndroid), }); return; } diff --git a/apps/mobile/src/lib/kilo-pass/subscription-card-content-state.test.ts b/apps/mobile/src/lib/kilo-pass/subscription-card-content-state.test.ts index da21b2a3f9..8748f7663e 100644 --- a/apps/mobile/src/lib/kilo-pass/subscription-card-content-state.test.ts +++ b/apps/mobile/src/lib/kilo-pass/subscription-card-content-state.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-lines -- the test file covers every payment provider and platform pairing */ import { describe, expect, it, vi } from 'vitest'; import { formatDate } from '@/lib/format'; @@ -245,6 +246,62 @@ describe('getKiloPassSubscriptionCardContentState', () => { }); }); + it('renders a Google Play subscription owned on an iOS device as inert', () => { + expect( + getKiloPassSubscriptionCardContentState({ + presentation: { kind: 'native_iap', statusClass: 'healthy' }, + presentationIsError: false, + presentationIsPending: false, + subscription: { + cancelAtPeriodEnd: false, + currentPeriodBaseCreditsUsd: 49, + paymentProvider: 'google_play', + refillAt: '2026-06-08T15:21:05.000Z', + status: 'active', + }, + stateIsError: false, + stateIsPending: false, + platformOS: 'ios', + }) + ).toEqual({ + kind: 'card', + state: { + action: 'none', + actionLabel: null, + description: '$49 monthly credits · Managed on Google Play', + title: 'Kilo Pass active', + }, + }); + }); + + it('renders a canceling Google Play subscription owned on an iOS device as inert', () => { + expect( + getKiloPassSubscriptionCardContentState({ + presentation: { kind: 'native_iap', statusClass: 'healthy' }, + presentationIsError: false, + presentationIsPending: false, + subscription: { + cancelAtPeriodEnd: true, + currentPeriodBaseCreditsUsd: 49, + paymentProvider: 'google_play', + refillAt: '2026-06-08T15:21:05.000Z', + status: 'active', + }, + stateIsError: false, + stateIsPending: false, + platformOS: 'ios', + }) + ).toEqual({ + kind: 'card', + state: { + action: 'none', + actionLabel: null, + description: `$49 monthly credits · Ends ${endDate} · Managed on Google Play`, + title: 'Kilo Pass canceling', + }, + }); + }); + it('renders an App Store subscription owned on a Play device as inert', () => { expect( getKiloPassSubscriptionCardContentState({ diff --git a/apps/mobile/src/lib/kilo-pass/subscription-card-state.ts b/apps/mobile/src/lib/kilo-pass/subscription-card-state.ts index 3980485341..d5a7fb5163 100644 --- a/apps/mobile/src/lib/kilo-pass/subscription-card-state.ts +++ b/apps/mobile/src/lib/kilo-pass/subscription-card-state.ts @@ -67,9 +67,7 @@ export function getKiloPassSubscriptionCardAccessibility( accessibilityHint = i18n.t('kiloPass.opensManagementOnWeb'); } else if (cardState.action === 'open-store-management') { accessibilityHint = i18n.t( - platformOS === 'android' - ? 'kiloPass.opensPlayManagement' - : 'kiloPass.opensAppStoreManagement' + platformOS === 'android' ? 'kiloPass.opensPlayManagement' : 'kiloPass.opensAppStoreManagement' ); } else if (cardState.action === 'open-native') { accessibilityHint = i18n.t('kiloPass.opensPlans'); @@ -201,7 +199,11 @@ export function getKiloPassSubscriptionCardContentState(params: { return { kind: 'card', - state: getActiveSubscriptionCardState(subscription, presentation.statusClass, params.platformOS), + state: getActiveSubscriptionCardState( + subscription, + presentation.statusClass, + params.platformOS + ), }; } @@ -249,6 +251,21 @@ function getActiveSubscriptionCardState( const title = getStatusClassTitle(statusClass, subscription.cancelAtPeriodEnd); if (subscription.paymentProvider === 'google_play') { + if (platformOS !== 'android') { + // A Play-owned pass on an iOS device is managed in Google Play, which the + // iOS device cannot open — show it inert. + return { + action: 'none', + actionLabel: null, + description: subscription.cancelAtPeriodEnd + ? `${credits} · ${i18n.t('kiloPass.ends', { + date: formatSubscriptionEndDate(subscription.refillAt), + })} · ${i18n.t('kiloPass.managedOnGooglePlay')}` + : `${credits} · ${i18n.t('kiloPass.managedOnGooglePlay')}`, + title, + }; + } + return { action: 'open-store-management', actionLabel: i18n.t('kiloPass.manage'), From a430f8ab71e84bc93481f7c13d744f04ebc00331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Thu, 27 Aug 2026 22:35:12 +0200 Subject: [PATCH 4/7] feat(i18n): translate the section's new keys --- apps/mobile/src/i18n/locales/af.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/am.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ar.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/az.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/be.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/bg.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/bn.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/bs.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ca.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ckb.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/cs.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/cy.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/da.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/de.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/el.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/es.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/et.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/eu.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/fa.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/fi.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/fil.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/fr.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ga.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/gl.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/gu.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ha.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/he.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/hi.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/hr.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ht.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/hu.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/hy.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/id.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ig.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/is.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/it.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ja.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ka.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/kk.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/km.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/kn.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ko.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/lo.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/lt.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/lv.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/mg.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/mi.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/mk.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ml.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/mn.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/mr.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ms.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/mt.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/my.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/nb.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ne.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/nl.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/om.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/or.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/pa.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/pl.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ps.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/pt-BR.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/pt.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ro.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ru.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/si.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/sk.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/sl.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/so.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/sq.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/sr.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/sv.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/sw.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ta.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/te.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/th.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/tr.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/uk.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/ur.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/uz.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/vi.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/yo.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/zh-Hans.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/zh-Hant.json | 15 ++++++++++++++- apps/mobile/src/i18n/locales/zu.json | 15 ++++++++++++++- 86 files changed, 1204 insertions(+), 86 deletions(-) diff --git a/apps/mobile/src/i18n/locales/af.json b/apps/mobile/src/i18n/locales/af.json index 7131a117c2..fe648ca569 100644 --- a/apps/mobile/src/i18n/locales/af.json +++ b/apps/mobile/src/i18n/locales/af.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Die Kilo Pass op hierdie Apple-rekening behoort aan 'n ander Kilo-rekening.", "couldNotConnectToAppStore": "Kon nie aan die App Store koppel nie. Kontroleer jou verbinding en probeer weer.", "noMatchingProducts": "Geen ooreenstemmende Kilo Pass-produkte is deur App Store teruggegee nie.", - "purchaseMissingSignedTransaction": "App Store-aankoop het nie 'n getekende transaksie-JWS ingesluit nie." + "purchaseMissingSignedTransaction": "App Store-aankoop het nie 'n getekende transaksie-JWS ingesluit nie.", + "couldNotConnectToPlay": "Kon nie met Google Play verbind nie. Gaan jou verbinding na en probeer weer.", + "legalDisclosurePlay": "Kilo Pass is 'n outomaties-hernubare maandelikse intekening. Betaling word by bevestiging van aankoop van jou Google Play-rekening gehef. Intekeninge hernu elke maand outomaties teen die prys wat vertoon word, tensy dit minstens 24 uur voor die einde van die huidige tydperk gekanselleer word. Bestuur of kanselleer enige tyd in jou Google Play-rekeninginstellings.", + "manageFailedPlay": "Kon nie Google Play-intekeningsbestuur oopmaak nie.", + "noMatchingProductsPlay": "Geen ooreenstemmende Kilo Pass-produkte is deur Google Play teruggegee nie.", + "opensPlayManagement": "Maak Google Play-intekeningsbestuur oop.", + "otherAccountCopyPlay": "Die Kilo Pass op hierdie Google Play-rekening behoort aan 'n ander Kilo-rekening. Teken in by daardie Kilo-rekening om dit te bestuur.", + "productsCouldNotLoadPlay": "Kilo Pass-produkte kon nie vanaf Google Play gelaai word nie.", + "productsUnavailablePlay": "Google Play-produkte onbeskikbaar", + "purchaseDifferentAccountPlay": "Hierdie Google Play-aankoop is nie aan jou Kilo-rekening gekoppel nie. Teken in by die Google-rekening wat vir die aankoop gebruik is, en probeer dan weer.", + "purchaseMissingOfferToken": "Google Play-aankoop het nie 'n aanbodteken nie. Probeer weer.", + "purchaseMissingPurchaseToken": "Google Play-aankoop het nie 'n aankoopteken ingesluit nie.", + "purchaseOwnedByAnotherAccountPlay": "Die Kilo Pass op hierdie Google Play-rekening behoort aan 'n ander Kilo-rekening.", + "purchaseStartFailedPlay": "Kon nie Google Play-aankoop begin nie." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/am.json b/apps/mobile/src/i18n/locales/am.json index 32fb90bcbf..13526d4416 100644 --- a/apps/mobile/src/i18n/locales/am.json +++ b/apps/mobile/src/i18n/locales/am.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "በዚህ Apple Account ላይ ያለው Kilo Pass የሌላ የKilo መለያ ነው።", "couldNotConnectToAppStore": "ከApp Store ጋር መገናኘት አልተቻለም። ግንኙነትዎን ያረጋግጡና እንደገና ይሞክሩ።", "noMatchingProducts": "App Store የሚዛመዱ የKilo Pass ምርቶችን አልመለሰም።", - "purchaseMissingSignedTransaction": "የApp Store ግዢ የተፈረመ የግብይት JWS አላካተተም።" + "purchaseMissingSignedTransaction": "የApp Store ግዢ የተፈረመ የግብይት JWS አላካተተም።", + "couldNotConnectToPlay": "ከGoogle Play ጋር መገናኘት አልተቻለም። ግንኙነትዎን ያረጋግጡ እና እንደገና ይሞክሩ።", + "legalDisclosurePlay": "Kilo Pass በራስ-ሰር የሚታደስ ወርሃዊ ምዝገባ ነው። ግዢው ሲጸድቅ ክፍያው ከGoogle Play መለያዎ ይከፈላል። ምዝገባዎች አሁን ያለው ጊዜ ከማብቃቱ ቢያንስ ከ24 ሰዓታት በፊት ካልተሰረዙ በስተቀር በሚታየው ዋጋ በየወሩ በራስ-ሰር ይታደሳሉ። በመለያ ቅንብሮችዎ ውስጥ በማንኛውም ጊዜ ያስተዳድሩ ወይም ይሰርዙ።", + "manageFailedPlay": "የGoogle Play ምዝገባ አስተዳደር መክፈት አልተሳካም።", + "noMatchingProductsPlay": "ተዛማጅ የKilo Pass ምርቶች በGoogle Play አልተመለሱም።", + "opensPlayManagement": "የGoogle Play ምዝገባ አስተዳደርን ይከፍታል።", + "otherAccountCopyPlay": "በዚህ Google Play መለያ ላይ ያለው Kilo Pass የተለየ የKilo መለያ ነው። ለማስተዳደር ወደዚያ የKilo መለያ ይግቡ።", + "productsCouldNotLoadPlay": "የKilo Pass ምርቶች ከGoogle Play መጫን አልተቻለም።", + "productsUnavailablePlay": "የGoogle Play ምርቶች የማይገኙ ናቸው", + "purchaseDifferentAccountPlay": "ይህ የGoogle Play ግዢ ከKilo መለያዎ ጋር የተገናኘ አይደለም። ለግዢው ጥቅም ላይ የዋለውን የGoogle መለያ ይግቡ፣ ከዚያ እንደገና ይሞክሩ።", + "purchaseMissingOfferToken": "የGoogle Play ግዢ የኦፈር ቶከን ይጎድለዋል። እንደገና ይሞክሩ።", + "purchaseMissingPurchaseToken": "የGoogle Play ግዢ የግዢ ቶከን አላካተተም።", + "purchaseOwnedByAnotherAccountPlay": "በዚህ Google Play መለያ ላይ ያለው Kilo Pass የተለየ የKilo መለያ ነው።", + "purchaseStartFailedPlay": "የGoogle Play ግዢ መጀመር አልተሳካም።" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ar.json b/apps/mobile/src/i18n/locales/ar.json index 2460a2a9f7..09ab87675a 100644 --- a/apps/mobile/src/i18n/locales/ar.json +++ b/apps/mobile/src/i18n/locales/ar.json @@ -2448,7 +2448,20 @@ "purchaseOwnedByAnotherAccount": "ينتمي Kilo Pass على حساب Apple هذا إلى حساب Kilo مختلف.", "couldNotConnectToAppStore": "تعذّر الاتصال بـ App Store. تحقق من اتصالك وحاول مرة أخرى.", "noMatchingProducts": "لم يُرجع App Store منتجات Kilo Pass مطابقة.", - "purchaseMissingSignedTransaction": "لم تتضمن عملية الشراء من App Store معاملة موقعة بصيغة JWS." + "purchaseMissingSignedTransaction": "لم تتضمن عملية الشراء من App Store معاملة موقعة بصيغة JWS.", + "couldNotConnectToPlay": "تعذّر الاتصال بـ Google Play. تحقق من اتصالك وحاول مرة أخرى.", + "legalDisclosurePlay": "Kilo Pass اشتراك شهري متجدد تلقائيًا. يتم خصم الدفعة من حساب Google Play الخاص بك عند تأكيد الشراء. تتجدد الاشتراكات تلقائيًا كل شهر بالسعر المعروض ما لم يتم الإلغاء قبل 24 ساعة على الأقل من نهاية الفترة الحالية. يمكنك الإدارة أو الإلغاء في أي وقت من إعدادات حسابك في Google Play.", + "manageFailedPlay": "تعذّر فتح إدارة اشتراك Google Play.", + "noMatchingProductsPlay": "لم يُرجع Google Play منتجات Kilo Pass مطابقة.", + "opensPlayManagement": "يفتح إدارة اشتراك Google Play.", + "otherAccountCopyPlay": "ينتمي Kilo Pass على حساب Google Play هذا إلى حساب Kilo مختلف. سجّل الدخول إلى حساب Kilo ذلك لإدارته.", + "productsCouldNotLoadPlay": "تعذّر تحميل منتجات Kilo Pass من Google Play.", + "productsUnavailablePlay": "منتجات Google Play غير متاحة", + "purchaseDifferentAccountPlay": "عملية الشراء هذه من Google Play غير مرتبطة بحساب Kilo الخاص بك. سجّل الدخول إلى حساب Google المستخدم للشراء، ثم حاول مرة أخرى.", + "purchaseMissingOfferToken": "عملية الشراء من Google Play تفتقد رمز العرض. حاول مرة أخرى.", + "purchaseMissingPurchaseToken": "لم تتضمن عملية الشراء من Google Play رمز الشراء.", + "purchaseOwnedByAnotherAccountPlay": "ينتمي Kilo Pass على حساب Google Play هذا إلى حساب Kilo مختلف.", + "purchaseStartFailedPlay": "فشل بدء عملية شراء من Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/az.json b/apps/mobile/src/i18n/locales/az.json index 3b900ff93f..2a35d60677 100644 --- a/apps/mobile/src/i18n/locales/az.json +++ b/apps/mobile/src/i18n/locales/az.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Bu Apple Hesabındakı Kilo Pass başqa Kilo hesabına aiddir.", "couldNotConnectToAppStore": "App Store-a qoşulmaq mümkün olmadı. Bağlantınızı yoxlayın və yenidən cəhd edin.", "noMatchingProducts": "App Store uyğun Kilo Pass məhsulu qaytarmadı.", - "purchaseMissingSignedTransaction": "App Store alışı imzalanmış əməliyyat JWS-i daxil etmədi." + "purchaseMissingSignedTransaction": "App Store alışı imzalanmış əməliyyat JWS-i daxil etmədi.", + "couldNotConnectToPlay": "Google Play-ə qoşulmaq mümkün olmadı. Bağlantınızı yoxlayın və yenidən cəhd edin.", + "legalDisclosurePlay": "Kilo Pass avtomatik yenilənən aylıq abunədir. Ödəniş alışın təsdiqində Google Play hesabınızdan çıxılır. Abunəliklər cari dövrün sonuna ən azı 24 saat qalmış ləğv edilmədiyi halda hər ay göstərilən qiymətlə avtomatik yenilənir. İstənilən vaxt Google Play hesabınızın parametrlərində idarə edin və ya ləğv edin.", + "manageFailedPlay": "Google Play abunəlik idarəetməsini açmaq mümkün olmadı.", + "noMatchingProductsPlay": "Google Play tərəfindən uyğun Kilo Pass məhsulları qaytarılmadı.", + "opensPlayManagement": "Google Play abunəlik idarəetməsini açır.", + "otherAccountCopyPlay": "Bu Google Play hesabındakı Kilo Pass başqa Kilo hesabına aiddir. Onu idarə etmək üçün həmin Kilo hesabına daxil olun.", + "productsCouldNotLoadPlay": "Kilo Pass məhsulları Google Play-dən yüklənə bilmədi.", + "productsUnavailablePlay": "Google Play məhsulları mövcud deyil", + "purchaseDifferentAccountPlay": "Bu Google Play alışı Kilo hesabınızla əlaqələndirilməyib. Alış üçün istifadə olunan Google hesabına daxil olun və yenidən cəhd edin.", + "purchaseMissingOfferToken": "Google Play alışında təklif tokeni yoxdur. Yenidən cəhd edin.", + "purchaseMissingPurchaseToken": "Google Play alışına alış tokeni daxil edilməyib.", + "purchaseOwnedByAnotherAccountPlay": "Bu Google Play hesabındakı Kilo Pass başqa Kilo hesabına aiddir.", + "purchaseStartFailedPlay": "Google Play alışına başlamaq mümkün olmadı." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/be.json b/apps/mobile/src/i18n/locales/be.json index 1407530a11..6b8e5b073d 100644 --- a/apps/mobile/src/i18n/locales/be.json +++ b/apps/mobile/src/i18n/locales/be.json @@ -2890,7 +2890,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass на гэтым Apple Account належыць іншаму ўліковаму запісу Kilo.", "couldNotConnectToAppStore": "Не атрымалася падключыцца да App Store. Праверце падключэнне і паспрабуйце яшчэ раз.", "noMatchingProducts": "App Store не вярнуў прадукты Kilo Pass, якія адпавядаюць запыту.", - "purchaseMissingSignedTransaction": "Пакупка ў App Store не ўключала падпісаную транзакцыю JWS." + "purchaseMissingSignedTransaction": "Пакупка ў App Store не ўключала падпісаную транзакцыю JWS.", + "couldNotConnectToPlay": "Не атрымалася падключыцца да Google Play. Праверце падключэнне і паспрабуйце яшчэ раз.", + "legalDisclosurePlay": "Kilo Pass — гэта аўтападоўжвальная штомесячная падпіска. Плацёж спаганяецца з вашага ўліковага запісу Google Play пры пацвярджэнні пакупкі. Падпіска аўтаматычна падаўжаецца кожны месяц па паказанай цане, калі яна не адменена не менш чым за 24 гадзіны да заканчэння бягучага перыяду. Кіруйце ёю або адменіце яе ў любы час у наладах уліковага запісу Google Play.", + "manageFailedPlay": "Не ўдалося адкрыць кіраванне падпіскай у Google Play.", + "noMatchingProductsPlay": "Google Play не вярнуў прадукты Kilo Pass, якія адпавядаюць запыту.", + "opensPlayManagement": "Адкрывае кіраванне падпіскай у Google Play.", + "otherAccountCopyPlay": "Kilo Pass на гэтым Google Play належыць іншаму ўліковаму запісу Kilo. Увайдзіце ў той уліковы запіс Kilo, каб кіраваць ім.", + "productsCouldNotLoadPlay": "Прадукты Kilo Pass не ўдалося загрузіць з Google Play.", + "productsUnavailablePlay": "Прадукты Google Play недаступныя", + "purchaseDifferentAccountPlay": "Гэтая пакупка ў Google Play не звязана з вашым уліковым запісам Kilo. Увайдзіце ў Google Account, які выкарыстоўваўся для пакупкі, і паспрабуйце яшчэ раз.", + "purchaseMissingOfferToken": "Пакупка Google Play не змяшчае offer token. Паспрабуйце яшчэ раз.", + "purchaseMissingPurchaseToken": "Пакупка Google Play не ўключала purchase token.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass на гэтым Google Play належыць іншаму ўліковаму запісу Kilo.", + "purchaseStartFailedPlay": "Не атрымалася пачаць пакупку ў Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/bg.json b/apps/mobile/src/i18n/locales/bg.json index 7ff43ce5d1..eb62e76f24 100644 --- a/apps/mobile/src/i18n/locales/bg.json +++ b/apps/mobile/src/i18n/locales/bg.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass на този Apple акаунт принадлежи на друг Kilo акаунт.", "couldNotConnectToAppStore": "Не можахме да се свържем с App Store. Проверете връзката си и опитайте отново.", "noMatchingProducts": "App Store не върна съвпадащи продукти на Kilo Pass.", - "purchaseMissingSignedTransaction": "Покупката в App Store не включва подписана транзакция JWS." + "purchaseMissingSignedTransaction": "Покупката в App Store не включва подписана транзакция JWS.", + "couldNotConnectToPlay": "Не можа да се свържете с Google Play. Проверете връзката си и опитайте отново.", + "legalDisclosurePlay": "Kilo Pass е месечен абонамент с автоматично подновяване. Плащането се таксува от вашия Google Play акаунт при потвърждаване на покупката. Абонаментите се подновяват автоматично всеки месец на показаната цена, освен ако не бъдат отменени най-малко 24 часа преди края на текущия период. Управлявайте или отменете по всяко време в настройките на вашия Google Play акаунт.", + "manageFailedPlay": "Неуспешно отваряне на управлението на абонамента в Google Play.", + "noMatchingProductsPlay": "Google Play не върна съответстващи продукти на Kilo Pass.", + "opensPlayManagement": "Отваря управлението на абонамента в Google Play.", + "otherAccountCopyPlay": "Kilo Pass на този Google Play акаунт принадлежи на друг Kilo акаунт. Влезте в този Kilo акаунт, за да го управлявате.", + "productsCouldNotLoadPlay": "Продуктите на Kilo Pass не можаха да бъдат заредени от Google Play.", + "productsUnavailablePlay": "Продуктите в Google Play са недостъпни", + "purchaseDifferentAccountPlay": "Тази покупка от Google Play не е свързана с вашия Kilo акаунт. Влезте в Google акаунта, използван за покупката, и опитайте отново.", + "purchaseMissingOfferToken": "Покупката от Google Play няма токен за оферта. Опитайте отново.", + "purchaseMissingPurchaseToken": "Покупката от Google Play не включваше токен за покупка.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass на този Google Play акаунт принадлежи на друг Kilo акаунт.", + "purchaseStartFailedPlay": "Неуспешно стартиране на покупката от Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/bn.json b/apps/mobile/src/i18n/locales/bn.json index a42b5bbf9b..e973e706d5 100644 --- a/apps/mobile/src/i18n/locales/bn.json +++ b/apps/mobile/src/i18n/locales/bn.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "এই Apple Account-এ Kilo Pass একটি ভিন্ন Kilo অ্যাকাউন্টের।", "couldNotConnectToAppStore": "App Store-এ সংযোগ করা যায়নি। আপনার সংযোগ পরীক্ষা করুন এবং আবার চেষ্টা করুন।", "noMatchingProducts": "App Store থেকে মিলে যাওয়া কোনো Kilo Pass পণ্য ফেরত দেওয়া হয়নি।", - "purchaseMissingSignedTransaction": "App Store ক্রয়ে স্বাক্ষরিত লেনদেন JWS অন্তর্ভুক্ত ছিল না।" + "purchaseMissingSignedTransaction": "App Store ক্রয়ে স্বাক্ষরিত লেনদেন JWS অন্তর্ভুক্ত ছিল না।", + "couldNotConnectToPlay": "Google Play-তে সংযোগ করা যায়নি। আপনার সংযোগ পরীক্ষা করুন এবং আবার চেষ্টা করুন।", + "legalDisclosurePlay": "Kilo Pass একটি স্বয়ংক্রিয়-নবায়নযোগ্য মাসিক সাবস্ক্রিপশন। কেনার নিশ্চিতকরণে আপনার Google Play অ্যাকাউন্ট থেকে পেমেন্ট নেওয়া হয়। সাবস্ক্রিপশন বর্তমান সময়সীমা শেষ হওয়ার কমপক্ষে 24 ঘণ্টা আগে বাতিল না করা হলে প্রতি মাসে দেখানো দামে স্বয়ংক্রিয়ভাবে নবায়ন হয়। আপনার Google Play অ্যাকাউন্ট সেটিংসে যেকোনো সময় পরিচালনা বা বাতিল করুন।", + "manageFailedPlay": "Google Play সাবস্ক্রিপশন ব্যবস্থাপনা খুলতে ব্যর্থ হয়েছে।", + "noMatchingProductsPlay": "Google Play থেকে মিলে যাওয়া কোনো Kilo Pass পণ্য ফেরত দেওয়া হয়নি।", + "opensPlayManagement": "Google Play সাবস্ক্রিপশন ব্যবস্থাপনা খোলে।", + "otherAccountCopyPlay": "এই Google Play অ্যাকাউন্টে Kilo Pass একটি ভিন্ন Kilo অ্যাকাউন্টের। এটি পরিচালনা করতে সেই Kilo অ্যাকাউন্টে সাইন ইন করুন।", + "productsCouldNotLoadPlay": "Kilo Pass পণ্য Google Play থেকে লোড করা যায়নি।", + "productsUnavailablePlay": "Google Play পণ্য অনুপলব্ধ", + "purchaseDifferentAccountPlay": "এই Google Play ক্রয় আপনার Kilo অ্যাকাউন্টের সাথে সংযুক্ত নয়। ক্রয়ের জন্য ব্যবহৃত Google অ্যাকাউন্টে সাইন ইন করুন, তারপর আবার চেষ্টা করুন।", + "purchaseMissingOfferToken": "Google Play ক্রয়ে একটি অফার টোকেন নেই। আবার চেষ্টা করুন।", + "purchaseMissingPurchaseToken": "Google Play ক্রয়ে একটি ক্রয় টোকেন অন্তর্ভুক্ত ছিল না।", + "purchaseOwnedByAnotherAccountPlay": "এই Google Play অ্যাকাউন্টে Kilo Pass একটি ভিন্ন Kilo অ্যাকাউন্টের।", + "purchaseStartFailedPlay": "Google Play ক্রয় শুরু করতে ব্যর্থ হয়েছে।" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/bs.json b/apps/mobile/src/i18n/locales/bs.json index bf32c1dda4..b3c443ef07 100644 --- a/apps/mobile/src/i18n/locales/bs.json +++ b/apps/mobile/src/i18n/locales/bs.json @@ -2870,7 +2870,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass na ovom Apple nalogu pripada drugom Kilo nalogu.", "couldNotConnectToAppStore": "Nije moguće povezati se s App Store-om. Provjerite vezu i pokušajte ponovo.", "noMatchingProducts": "App Store nije vratio odgovarajuće Kilo Pass proizvode.", - "purchaseMissingSignedTransaction": "Kupovina u App Store-u nije uključivala potpisanu transakciju JWS." + "purchaseMissingSignedTransaction": "Kupovina u App Store-u nije uključivala potpisanu transakciju JWS.", + "couldNotConnectToPlay": "Nije moguće povezati se s Google Play. Provjerite vezu i pokušajte ponovo.", + "legalDisclosurePlay": "Kilo Pass je pretplata s automatskim obnavljanjem. Uplata se naplaćuje na vaš Google Play račun pri potvrdi kupovine. Pretplate se automatski obnavljaju svakog mjeseca po prikazanoj cijeni, osim ako ih otkažete najmanje 24 sata prije kraja tekućeg razdoblja. Upravljajte ili otkažite u bilo kojem trenutku u postavkama vašeg Google Play računa.", + "manageFailedPlay": "Upravljanje pretplatom na Google Play nije moglo biti otvoreno.", + "noMatchingProductsPlay": "Google Play nije vratio odgovarajuće Kilo Pass proizvode.", + "opensPlayManagement": "Otvara upravljanje pretplatom na Google Play.", + "otherAccountCopyPlay": "Kilo Pass na ovom Google Play nalogu pripada drugom Kilo nalogu. Prijavite se na taj Kilo nalog da biste njime upravljali.", + "productsCouldNotLoadPlay": "Kilo Pass proizvodi nisu mogli biti učitani iz Google Playa.", + "productsUnavailablePlay": "Proizvodi Google Playa nedostupni", + "purchaseDifferentAccountPlay": "Ova kupovina na Google Play nije povezana s vašim Kilo nalogom. Prijavite se na Google nalog korišten za kupovinu, zatim pokušajte ponovo.", + "purchaseMissingOfferToken": "Google Play kupovina nema token ponude. Pokušajte ponovo.", + "purchaseMissingPurchaseToken": "Google Play kupovina nije uključivala token kupovine.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass na ovom Google Play nalogu pripada drugom Kilo nalogu.", + "purchaseStartFailedPlay": "Pokretanje kupovine na Google Play nije uspjelo." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ca.json b/apps/mobile/src/i18n/locales/ca.json index da5f1dd5ff..bb6332841f 100644 --- a/apps/mobile/src/i18n/locales/ca.json +++ b/apps/mobile/src/i18n/locales/ca.json @@ -2870,7 +2870,20 @@ "purchaseOwnedByAnotherAccount": "El Kilo Pass d'aquest Apple Account pertany a un compte de Kilo diferent.", "couldNotConnectToAppStore": "No s'ha pogut connectar amb l'App Store. Comprova la connexió i torna-ho a provar.", "noMatchingProducts": "L'App Store no ha retornat cap producte de Kilo Pass que coincideixi.", - "purchaseMissingSignedTransaction": "La compra de l'App Store no incloïa una JWS de transacció signada." + "purchaseMissingSignedTransaction": "La compra de l'App Store no incloïa una JWS de transacció signada.", + "couldNotConnectToPlay": "No s'ha pogut connectar a Google Play. Comprova la connexió i torna-ho a provar.", + "legalDisclosurePlay": "Kilo Pass és una subscripció mensual renovable automàticament. El pagament es carrega al teu compte de Google Play en confirmar la compra. Les subscripcions es renoven automàticament cada mes al preu mostrat, tret que es cancel·lin almenys 24 hores abans del final del període actual. Gestiona-la o cancel·la-la en qualsevol moment a la configuració del teu compte de Google Play.", + "manageFailedPlay": "No s'ha pogut obrir la gestió de subscripcions de Google Play.", + "noMatchingProductsPlay": "Google Play no ha retornat cap producte de Kilo Pass que coincideixi.", + "opensPlayManagement": "Obre la gestió de subscripcions de Google Play.", + "otherAccountCopyPlay": "El Kilo Pass d'aquest compte de Google Play pertany a un compte de Kilo diferent. Inicia la sessió en aquest compte de Kilo per gestionar-lo.", + "productsCouldNotLoadPlay": "No s'han pogut carregar els productes de Kilo Pass des de Google Play.", + "productsUnavailablePlay": "Productes de Google Play no disponibles", + "purchaseDifferentAccountPlay": "Aquesta compra de Google Play no està vinculada al teu compte de Kilo. Inicia la sessió amb el compte de Google que s'ha utilitzat per a la compra i torna-ho a provar.", + "purchaseMissingOfferToken": "A la compra de Google Play li falta un token d'oferta. Torna-ho a provar.", + "purchaseMissingPurchaseToken": "La compra de Google Play no incloïa un token de compra.", + "purchaseOwnedByAnotherAccountPlay": "El Kilo Pass d'aquest compte de Google Play pertany a un compte de Kilo diferent.", + "purchaseStartFailedPlay": "No s'ha pogut iniciar la compra de Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ckb.json b/apps/mobile/src/i18n/locales/ckb.json index a331307d5a..ba6b498602 100644 --- a/apps/mobile/src/i18n/locales/ckb.json +++ b/apps/mobile/src/i18n/locales/ckb.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Passـی ئەم هەژمارەی Apple سەر بە هەژمارەیەکی دیکەی Kilo یە.", "couldNotConnectToAppStore": "نەتوانرا پەیوەندی بە App Store بکرێت. پەیوەندییەکەت بپشکنە و دووبارە هەوڵبدەرەوە.", "noMatchingProducts": "هیچ بەرهەمێکی گونجاوی Kilo Pass لەلایەن App Storeوە نەگەڕێندرایەوە.", - "purchaseMissingSignedTransaction": "کڕینەکەی App Store مامەڵەیەکی واژووکراوی JWSی لەخۆ نەگرتبوو." + "purchaseMissingSignedTransaction": "کڕینەکەی App Store مامەڵەیەکی واژووکراوی JWSی لەخۆ نەگرتبوو.", + "couldNotConnectToPlay": "نەتوانرا پەیوەندی بە Google Play بکرێت. پەیوەندییەکەت بپشکنە و دووبارە هەوڵبدەرەوە.", + "legalDisclosurePlay": "Kilo Pass بەشداربوونێکی مانگانەیە کە خۆکارانە نوێ دەبێتەوە. لە کاتی پشتڕاستکردنەوەی کڕینەکە، پارە لە هەژماری Google Playـی تۆ دەبەسترێت. بەشداربوونەکان هەر مانگێک بە بەهای نیشاندراو خۆکارانە نوێ دەبنەوە مەگەر لانیکەم ٢٤ کاتژمێر پێش کۆتایی ماوەی ئێستا هەڵنەوەشێنرێنەوە. لە هەر کاتێکدا لە ڕێکخستنەکانی هەژماری Google Play بەڕێوەی ببە یان هەڵیبوەشێنەوە.", + "manageFailedPlay": "کردنەوەی بەڕێوەبردنی بەشداربوونی Google Play سەرکەوتوو نەبوو.", + "noMatchingProductsPlay": "هیچ بەرهەمێکی گونجاوی Kilo Pass لەلایەن Google Playوە نەگەڕێندرایەوە.", + "opensPlayManagement": "بەڕێوەبردنی بەشداربوونی Google Play دەکاتەوە.", + "otherAccountCopyPlay": "Kilo Passـی ئەم هەژمارەی Google Play سەر بە هەژمارەیەکی دیکەی Kilo یە. بچۆ ژوورەوە لەو هەژمارەی Kilo بۆ بەڕێوەبردنی.", + "productsCouldNotLoadPlay": "بەرهەمەکانی Kilo Pass نەتوانران لە Google Play باربکرێن.", + "productsUnavailablePlay": "بەرهەمەکانی Google Play بەردەست نین", + "purchaseDifferentAccountPlay": "ئەم کڕینەی Google Play بە هەژماری Kiloـی تۆ نەبەستراوە. بەو هەژمارەی Google بچۆ ژوورەوە کە بۆ کڕینەکە بەکارهاتووە، پاشان دووبارە هەوڵبدەرەوە.", + "purchaseMissingOfferToken": "کڕینەکەی Google Play نیشانەیەکی پێشنیاری (offer token)ی تێدا نییە. دووبارە هەوڵبدەرەوە.", + "purchaseMissingPurchaseToken": "کڕینەکەی Google Play تۆکێنی کڕینی لەخۆ نەگرتبوو.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Passـی ئەم هەژمارەی Google Play سەر بە هەژمارەیەکی دیکەی Kilo یە.", + "purchaseStartFailedPlay": "دەستپێکردنی کڕینی Google Play شکستی هێنا." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/cs.json b/apps/mobile/src/i18n/locales/cs.json index d365888398..591ca0a11b 100644 --- a/apps/mobile/src/i18n/locales/cs.json +++ b/apps/mobile/src/i18n/locales/cs.json @@ -2890,7 +2890,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass na tomto Apple účtu patří k jinému účtu Kilo.", "couldNotConnectToAppStore": "Nepodařilo se připojit k App Store. Zkontrolujte připojení a zkuste to znovu.", "noMatchingProducts": "App Store nevrátil žádné odpovídající produkty Kilo Pass.", - "purchaseMissingSignedTransaction": "Nákup v App Store neobsahoval podepsanou transakci JWS." + "purchaseMissingSignedTransaction": "Nákup v App Store neobsahoval podepsanou transakci JWS.", + "couldNotConnectToPlay": "Nelze se připojit k Google Play. Zkontrolujte připojení a zkuste to znovu.", + "legalDisclosurePlay": "Kilo Pass je měsíční předplatné s automatickou obnovou. Platba je účtována na váš účet Google Play při potvrzení nákupu. Předplatné se automaticky obnovuje každý měsíc za uvedenou cenu, pokud jej nezrušíte nejméně 24 hodin před koncem aktuálního období. Předplatné můžete kdykoli spravovat nebo zrušit v nastavení svého účtu Google Play.", + "manageFailedPlay": "Otevření správy předplatného na Google Play se nezdařilo.", + "noMatchingProductsPlay": "Google Play nevrátil žádné odpovídající produkty Kilo Pass.", + "opensPlayManagement": "Otevře správu předplatného na Google Play.", + "otherAccountCopyPlay": "Kilo Pass na tomto účtu Google Play patří jinému účtu Kilo. Přihlaste se k tomuto účtu Kilo pro jeho správu.", + "productsCouldNotLoadPlay": "Produkty Kilo Pass se nepodařilo načíst z Google Play.", + "productsUnavailablePlay": "Produkty Google Play nejsou k dispozici", + "purchaseDifferentAccountPlay": "Tento nákup na Google Play není propojen s vaším účtem Kilo. Přihlaste se k účtu Google použitému k nákupu a zkuste to znovu.", + "purchaseMissingOfferToken": "Nákupu na Google Play chybí token nabídky. Zkuste to znovu.", + "purchaseMissingPurchaseToken": "Nákup na Google Play neobsahoval token nákupu.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass na tomto účtu Google Play patří jinému účtu Kilo.", + "purchaseStartFailedPlay": "Spuštění nákupu na Google Play se nezdařilo." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/cy.json b/apps/mobile/src/i18n/locales/cy.json index 93b6ff148d..f40683715d 100644 --- a/apps/mobile/src/i18n/locales/cy.json +++ b/apps/mobile/src/i18n/locales/cy.json @@ -2930,7 +2930,20 @@ "purchaseOwnedByAnotherAccount": "Mae'r Kilo Pass ar yr Apple Account hwn yn perthyn i gyfrif Kilo gwahanol.", "couldNotConnectToAppStore": "Ni ellid cysylltu â'r App Store. Gwiriwch eich cysylltiad a cheisiwch eto.", "noMatchingProducts": "Ni ddychwelodd yr App Store unrhyw gynhyrchion Kilo Pass cyfatebol.", - "purchaseMissingSignedTransaction": "Ni chynhwysodd y pryniant App Store drafodiad JWS wedi'i lofnodi." + "purchaseMissingSignedTransaction": "Ni chynhwysodd y pryniant App Store drafodiad JWS wedi'i lofnodi.", + "couldNotConnectToPlay": "Ni ellid cysylltu â Google Play. Gwiriwch eich cysylltiad a cheisiwch eto.", + "legalDisclosurePlay": "Tanysgrifiad misol sy'n adnewyddu'n awtomatig yw Kilo Pass. Codir y taliad i'ch cyfrif Google Play ar gadarnhad o'r pryniant. Mae tanysgrifiadau'n adnewyddu'n awtomatig bob mis am y pris a ddangosir oni bai eich bod yn canslo o leiaf 24 awr cyn diwedd y cyfnod cyfredol. Rheolwch neu ganslwch unrhyw bryd yng ngosodiadau cyfrif eich Google Play.", + "manageFailedPlay": "Methodd agor rheolaeth tanysgrifiad Google Play.", + "noMatchingProductsPlay": "Ni ddychwelodd Google Play unrhyw gynhyrchion Kilo Pass cyfatebol.", + "opensPlayManagement": "Yn agor rheolaeth tanysgrifiad Google Play.", + "otherAccountCopyPlay": "Mae'r Kilo Pass ar y cyfrif Google Play hwn yn perthyn i gyfrif Kilo gwahanol. Mewngofnodwch i'r cyfrif Kilo hwnnw i'w reoli.", + "productsCouldNotLoadPlay": "Ni ellid llwytho cynhyrchion Kilo Pass o Google Play.", + "productsUnavailablePlay": "Cynhyrchion Google Play ar gael", + "purchaseDifferentAccountPlay": "Nid yw'r pryniant Google Play hwn wedi'i gysylltu â'ch cyfrif Kilo. Mewngofnodwch i'r Google Account a ddefnyddiwyd ar gyfer y pryniant, yna rhowch gynnig arall arni.", + "purchaseMissingOfferToken": "Mae'r pryniant Google Play yn colli token cynnig. Ceisiwch eto.", + "purchaseMissingPurchaseToken": "Ni chynhwysodd y pryniant Google Play token pryniant.", + "purchaseOwnedByAnotherAccountPlay": "Mae'r Kilo Pass ar y cyfrif Google Play hwn yn perthyn i gyfrif Kilo gwahanol.", + "purchaseStartFailedPlay": "Methodd cychwyn pryniant Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/da.json b/apps/mobile/src/i18n/locales/da.json index 6d62585a98..7a2c57e454 100644 --- a/apps/mobile/src/i18n/locales/da.json +++ b/apps/mobile/src/i18n/locales/da.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass på denne Apple-konto tilhører en anden Kilo-konto.", "couldNotConnectToAppStore": "Kunne ikke oprette forbindelse til App Store. Tjek din forbindelse, og prøv igen.", "noMatchingProducts": "App Store returnerede ingen matchende Kilo Pass-produkter.", - "purchaseMissingSignedTransaction": "App Store-købet inkluderede ikke en signeret transaktions-JWS." + "purchaseMissingSignedTransaction": "App Store-købet inkluderede ikke en signeret transaktions-JWS.", + "couldNotConnectToPlay": "Kunne ikke oprette forbindelse til Google Play. Tjek din forbindelse, og prøv igen.", + "legalDisclosurePlay": "Kilo Pass er et automatisk fornyeligt månedligt abonnement. Betaling opkræves på din Google Play-konto ved bekræftelse af købet. Abonnementer fornyes automatisk hver måned til den viste pris, medmindre de annulleres mindst 24 timer før udløbet af den aktuelle periode. Administrér eller annullér når som helst i dine Google Play-kontoindstillinger.", + "manageFailedPlay": "Kunne ikke åbne Google Play-abonnementsadministration.", + "noMatchingProductsPlay": "Der blev ikke fundet nogen matchende Kilo Pass-produkter fra Google Play.", + "opensPlayManagement": "Åbner Google Play-abonnementsadministration.", + "otherAccountCopyPlay": "Kilo Pass på denne Google Play-konto tilhører en anden Kilo-konto. Log ind på den Kilo-konto for at administrere den.", + "productsCouldNotLoadPlay": "Kilo Pass-produkter kunne ikke indlæses fra Google Play.", + "productsUnavailablePlay": "Google Play-produkter er utilgængelige", + "purchaseDifferentAccountPlay": "Dette Google Play-køb er ikke knyttet til din Kilo-konto. Log ind på den Google-konto, der blev brugt til købet, og prøv igen.", + "purchaseMissingOfferToken": "Google Play-købet mangler en tilbudstoken. Prøv igen.", + "purchaseMissingPurchaseToken": "Google Play-købet indeholdt ikke en købstoken.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass på denne Google Play-konto tilhører en anden Kilo-konto.", + "purchaseStartFailedPlay": "Kunne ikke starte Google Play-købet." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/de.json b/apps/mobile/src/i18n/locales/de.json index 5573b9dfad..3110624ab8 100644 --- a/apps/mobile/src/i18n/locales/de.json +++ b/apps/mobile/src/i18n/locales/de.json @@ -2396,7 +2396,20 @@ "purchaseOwnedByAnotherAccount": "Der Kilo Pass auf diesem Apple-Konto gehört zu einem anderen Kilo-Konto.", "couldNotConnectToAppStore": "Keine Verbindung zum App Store möglich. Überprüfe deine Verbindung und versuche es erneut.", "noMatchingProducts": "Der App Store hat keine passenden Kilo-Pass-Produkte zurückgegeben.", - "purchaseMissingSignedTransaction": "Der App-Store-Kauf enthielt keine signierte Transaktions-JWS." + "purchaseMissingSignedTransaction": "Der App-Store-Kauf enthielt keine signierte Transaktions-JWS.", + "couldNotConnectToPlay": "Verbindung zu Google Play konnte nicht hergestellt werden. Prüfe deine Verbindung und versuche es erneut.", + "legalDisclosurePlay": "Kilo Pass ist ein automatisch verlängerbares Monatsabonnement. Die Zahlung wird bei Kaufbestätigung deinem Google-Play-Konto belastet. Abonnements verlängern sich automatisch jeden Monat zum angezeigten Preis, sofern sie nicht mindestens 24 Stunden vor Ende des aktuellen Zeitraums gekündigt werden. Jederzeit in deinen Google-Play-Kontoeinstellungen verwalten oder kündigen.", + "manageFailedPlay": "Google Play-Abonnementverwaltung konnte nicht geöffnet werden.", + "noMatchingProductsPlay": "Von Google Play wurden keine passenden Kilo-Pass-Produkte zurückgegeben.", + "opensPlayManagement": "Öffnet die Abonnementverwaltung von Google Play.", + "otherAccountCopyPlay": "Der Kilo Pass auf diesem Google-Konto gehört zu einem anderen Kilo-Konto. Melde dich bei diesem Kilo-Konto an, um ihn zu verwalten.", + "productsCouldNotLoadPlay": "Kilo-Pass-Produkte konnten nicht aus Google Play geladen werden.", + "productsUnavailablePlay": "Google-Play-Produkte nicht verfügbar", + "purchaseDifferentAccountPlay": "Dieser Google-Play-Kauf ist nicht mit deinem Kilo-Konto verknüpft. Melde dich bei dem Google-Konto an, das für den Kauf verwendet wurde, und versuche es erneut.", + "purchaseMissingOfferToken": "Dem Google-Play-Kauf fehlt ein Angebotstoken. Versuche es erneut.", + "purchaseMissingPurchaseToken": "Der Google-Play-Kauf enthielt keinen Kauftoken.", + "purchaseOwnedByAnotherAccountPlay": "Der Kilo Pass auf diesem Google-Konto gehört zu einem anderen Kilo-Konto.", + "purchaseStartFailedPlay": "Google-Play-Kauf konnte nicht gestartet werden." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/el.json b/apps/mobile/src/i18n/locales/el.json index 59a054d812..c03d1d73e5 100644 --- a/apps/mobile/src/i18n/locales/el.json +++ b/apps/mobile/src/i18n/locales/el.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Το Kilo Pass σε αυτόν τον Λογαριασμό Apple ανήκει σε διαφορετικό λογαριασμό Kilo.", "couldNotConnectToAppStore": "Δεν ήταν δυνατή η σύνδεση με το App Store. Ελέγξτε τη σύνδεσή σας και δοκιμάστε ξανά.", "noMatchingProducts": "Το App Store δεν επέστρεψε προϊόντα Kilo Pass που να ταιριάζουν.", - "purchaseMissingSignedTransaction": "Η αγορά στο App Store δεν περιλάμβανε υπογεγραμμένη JWS συναλλαγής." + "purchaseMissingSignedTransaction": "Η αγορά στο App Store δεν περιλάμβανε υπογεγραμμένη JWS συναλλαγής.", + "couldNotConnectToPlay": "Δεν ήταν δυνατή η σύνδεση με το Google Play. Ελέγξτε τη σύνδεσή σας και δοκιμάστε ξανά.", + "legalDisclosurePlay": "Το Kilo Pass είναι μια συνδρομή με αυτόματη ανανέωση σε μηνιαία βάση. Η πληρωμή χρεώνεται στον λογαριασμό σας στο Google Play κατά την επιβεβαίωση της αγοράς. Οι συνδρομές ανανεώνονται αυτόματα κάθε μήνα στην τιμή που εμφανίζεται, εκτός εάν ακυρωθούν τουλάχιστον 24 ώρες πριν από το τέλος της τρέχουσας περιόδου. Διαχειριστείτε ή ακυρώστε ανά πάσα στιγμή στις ρυθμίσεις του λογαριασμού σας στο Google Play.", + "manageFailedPlay": "Αποτυχία ανοίγματος της διαχείρισης συνδρομών του Google Play.", + "noMatchingProductsPlay": "Το Google Play δεν επέστρεψε προϊόντα Kilo Pass που να ταιριάζουν.", + "opensPlayManagement": "Ανοίγει τη διαχείριση συνδρομών του Google Play.", + "otherAccountCopyPlay": "Το Kilo Pass σε αυτόν τον λογαριασμό Google Play ανήκει σε διαφορετικό λογαριασμό Kilo. Συνδεθείτε σε αυτόν τον λογαριασμό Kilo για να τον διαχειριστείτε.", + "productsCouldNotLoadPlay": "Δεν ήταν δυνατή η φόρτωση των προϊόντων Kilo Pass από το Google Play.", + "productsUnavailablePlay": "Τα προϊόντα του Google Play δεν είναι διαθέσιμα", + "purchaseDifferentAccountPlay": "Αυτή η αγορά από το Google Play δεν συνδέεται με τον λογαριασμό σας στο Kilo. Συνδεθείτε με τον λογαριασμό Google που χρησιμοποιήθηκε για την αγορά και δοκιμάστε ξανά.", + "purchaseMissingOfferToken": "Η αγορά στο Google Play δεν περιλαμβάνει διακριτικό προσφοράς. Δοκιμάστε ξανά.", + "purchaseMissingPurchaseToken": "Η αγορά στο Google Play δεν περιλάμβανε διακριτικό αγοράς.", + "purchaseOwnedByAnotherAccountPlay": "Το Kilo Pass σε αυτόν τον λογαριασμό Google Play ανήκει σε διαφορετικό λογαριασμό Kilo.", + "purchaseStartFailedPlay": "Δεν ήταν δυνατή η έναρξη της αγοράς από το Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/es.json b/apps/mobile/src/i18n/locales/es.json index 45bf234f3a..0e82d89dcf 100644 --- a/apps/mobile/src/i18n/locales/es.json +++ b/apps/mobile/src/i18n/locales/es.json @@ -2409,7 +2409,20 @@ "purchaseOwnedByAnotherAccount": "El Kilo Pass de esta cuenta de Apple pertenece a una cuenta de Kilo diferente.", "couldNotConnectToAppStore": "No se pudo conectar con el App Store. Comprueba tu conexión y vuelve a intentarlo.", "noMatchingProducts": "El App Store no devolvió productos de Kilo Pass que coincidieran.", - "purchaseMissingSignedTransaction": "La compra del App Store no incluía una JWS de transacción firmada." + "purchaseMissingSignedTransaction": "La compra del App Store no incluía una JWS de transacción firmada.", + "couldNotConnectToPlay": "No se pudo conectar con Google Play. Comprueba tu conexión y vuelve a intentarlo.", + "legalDisclosurePlay": "Kilo Pass es una suscripción mensual renovable automáticamente. El pago se cobra en tu cuenta de Google Play al confirmar la compra. Las suscripciones se renuevan automáticamente cada mes al precio indicado, a menos que se cancelen al menos 24 horas antes del final del período actual. Puedes gestionar o cancelar la suscripción en cualquier momento en los ajustes de tu cuenta de Google Play.", + "manageFailedPlay": "No se pudo abrir la gestión de suscripciones de Google Play.", + "noMatchingProductsPlay": "Google Play no devolvió productos de Kilo Pass que coincidieran.", + "opensPlayManagement": "Abre la gestión de suscripciones de Google Play.", + "otherAccountCopyPlay": "El Kilo Pass de esta cuenta de Google Play pertenece a una cuenta de Kilo diferente. Inicia sesión en esa cuenta de Kilo para gestionarlo.", + "productsCouldNotLoadPlay": "No se pudieron cargar los productos de Kilo Pass desde Google Play.", + "productsUnavailablePlay": "Productos de Google Play no disponibles", + "purchaseDifferentAccountPlay": "Esta compra de Google Play no está vinculada a tu cuenta de Kilo. Inicia sesión con la cuenta de Google utilizada para la compra e inténtalo de nuevo.", + "purchaseMissingOfferToken": "A la compra de Google Play le falta un token de oferta. Inténtalo de nuevo.", + "purchaseMissingPurchaseToken": "La compra de Google Play no incluía un token de compra.", + "purchaseOwnedByAnotherAccountPlay": "El Kilo Pass de esta cuenta de Google Play pertenece a una cuenta de Kilo diferente.", + "purchaseStartFailedPlay": "No se pudo iniciar la compra de Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/et.json b/apps/mobile/src/i18n/locales/et.json index ed0c85a093..587ada7bc9 100644 --- a/apps/mobile/src/i18n/locales/et.json +++ b/apps/mobile/src/i18n/locales/et.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Selle Apple kontoga seotud Kilo Pass kuulub teisele Kilo kontole.", "couldNotConnectToAppStore": "App Store'iga ühendamine ebaõnnestus. Kontrolli ühendust ja proovi uuesti.", "noMatchingProducts": "App Store ei tagastanud ühtegi sobivat Kilo Passi toodet.", - "purchaseMissingSignedTransaction": "App Store'i ost ei sisaldanud allkirjastatud tehingu JWS-i." + "purchaseMissingSignedTransaction": "App Store'i ost ei sisaldanud allkirjastatud tehingu JWS-i.", + "couldNotConnectToPlay": "Google Playga ühendamine ebaõnnestus. Kontrolli ühendust ja proovi uuesti.", + "legalDisclosurePlay": "Kilo Pass on automaatselt uuenev igakuine tellimus. Makse võetakse sinu Google Play kontolt ostu kinnitamisel. Tellimus uueneb iga kuu automaatselt näidatud hinnaga, kui sa seda ei tühista vähemalt 24 tundi enne jooksva perioodi lõppu. Halda või tühista tellimust igal ajal oma Google Play konto seadetes.", + "manageFailedPlay": "Google Play tellimuse haldust ei õnnestunud avada.", + "noMatchingProductsPlay": "Google Play ei tagastanud ühtegi sobivat Kilo Passi toodet.", + "opensPlayManagement": "Avaneb Google Play tellimuse haldus.", + "otherAccountCopyPlay": "Selle Google Play kontoga seotud Kilo Pass kuulub teisele Kilo kontole. Selle haldamiseks logi sisse sellesse Kilo kontosse.", + "productsCouldNotLoadPlay": "Kilo Passi tooteid ei õnnestunud Google Playst laadida.", + "productsUnavailablePlay": "Google Play tooted pole saadaval", + "purchaseDifferentAccountPlay": "See Google Play ost pole sinu Kilo kontoga seotud. Logi sisse ostuks kasutatud Google kontoga ja proovi uuesti.", + "purchaseMissingOfferToken": "Google Play ostul puudub pakkumise token. Proovi uuesti.", + "purchaseMissingPurchaseToken": "Google Play ost ei sisaldanud ostu tokenit.", + "purchaseOwnedByAnotherAccountPlay": "Selle Google Play kontoga seotud Kilo Pass kuulub teisele Kilo kontole.", + "purchaseStartFailedPlay": "Google Play ostu alustamine ebaõnnestus." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/eu.json b/apps/mobile/src/i18n/locales/eu.json index ee4ae2dbe5..a21e423994 100644 --- a/apps/mobile/src/i18n/locales/eu.json +++ b/apps/mobile/src/i18n/locales/eu.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Apple kontu honetako Kilo Pass beste Kilo kontu bati dagokio.", "couldNotConnectToAppStore": "Ezin izan da App Store-ra konektatu. Egiaztatu konexioa eta saiatu berriro.", "noMatchingProducts": "App Store-k ez du Kilo Pass produktu egokirik itzuli.", - "purchaseMissingSignedTransaction": "App Store erosketak ez du sinatutako transakzio JWS bat barne hartu." + "purchaseMissingSignedTransaction": "App Store erosketak ez du sinatutako transakzio JWS bat barne hartu.", + "couldNotConnectToPlay": "Ezin izan da Google Play-ra konektatu. Egiaztatu konexioa eta saiatu berriro.", + "legalDisclosurePlay": "Kilo Pass hilero automatikoki berritzen den harpidetza da. Erosketa baieztatzen denean, ordainketa zure Google Play kontura kobratzen da. Harpidetzak automatikoki berritzen dira hilero agertzen den prezioan, uneko aldia amaitu baino 24 ordu lehenago gutxienez ezeztatu ezean. Kudeatu edo ezeztatu edonoiz zure Google Play kontuaren ezarpenetan.", + "manageFailedPlay": "Huts egin du Google Play harpidetza-kudeaketa irekitzean.", + "noMatchingProductsPlay": "Google Play-k ez du Kilo Pass produktu egokirik itzuli.", + "opensPlayManagement": "Google Play harpidetza-kudeaketa irekitzen du.", + "otherAccountCopyPlay": "Google Play kontu honetako Kilo Pass beste Kilo kontu bati dagokio. Hasi saioa Kilo kontu horretan kudeatzeko.", + "productsCouldNotLoadPlay": "Ezin izan dira Kilo Pass produktuak Google Play-tik kargatu.", + "productsUnavailablePlay": "Google Play produktuak ez erabilgarri", + "purchaseDifferentAccountPlay": "Google Play-ko erosketa hau ez dago zure Kilo kontuarekin lotuta. Hasi saioa erosketarako erabilitako Google kontuarekin, eta saiatu berriro.", + "purchaseMissingOfferToken": "Google Play erosketak ez du eskaintza-token bat barne hartu. Saiatu berriro.", + "purchaseMissingPurchaseToken": "Google Play erosketak ez du erosketa-token bat barne hartu.", + "purchaseOwnedByAnotherAccountPlay": "Google Play kontu honetako Kilo Pass beste Kilo kontu bati dagokio.", + "purchaseStartFailedPlay": "Ezin izan da Google Play-ko erosketa hasi." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/fa.json b/apps/mobile/src/i18n/locales/fa.json index f965123d6b..367f69fc97 100644 --- a/apps/mobile/src/i18n/locales/fa.json +++ b/apps/mobile/src/i18n/locales/fa.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass روی این Apple Account متعلق به یک حساب Kilo دیگر است.", "couldNotConnectToAppStore": "اتصال به App Store ممکن نشد. اتصال خود را بررسی کنید و دوباره تلاش کنید.", "noMatchingProducts": "App Store هیچ محصول منطبقی از Kilo Pass برنگرداند.", - "purchaseMissingSignedTransaction": "خرید App Store شامل تراکنش امضاشدهٔ JWS نبود." + "purchaseMissingSignedTransaction": "خرید App Store شامل تراکنش امضاشدهٔ JWS نبود.", + "couldNotConnectToPlay": "اتصال به Google Play ممکن نشد. اتصال خود را بررسی کنید و دوباره تلاش کنید.", + "legalDisclosurePlay": "Kilo Pass یک اشتراک ماهانه با تمدید خودکار است. پرداخت در تأیید خرید از حساب Google Play شما کسر میشود. اشتراکها هر ماه بهصورت خودکار با قیمت نشاندادهشده تمدید میشوند، مگر اینکه حداقل ۲۴ ساعت قبل از پایان دوره فعلی لغو شوند. هر زمان میتوانید در تنظیمات حساب Google Play خود آن را مدیریت یا لغو کنید.", + "manageFailedPlay": "باز کردن مدیریت اشتراک Google Play ناموفق بود.", + "noMatchingProductsPlay": "Google Play هیچ محصول منطبقی از Kilo Pass برنگرداند.", + "opensPlayManagement": "مدیریت اشتراک Google Play را باز میکند.", + "otherAccountCopyPlay": "Kilo Pass روی این حساب Google Play متعلق به یک حساب Kilo دیگر است. برای مدیریت آن وارد آن حساب Kilo شوید.", + "productsCouldNotLoadPlay": "محصولات Kilo Pass از Google Play بارگذاری نشدند.", + "productsUnavailablePlay": "محصولات Google Play در دسترس نیستند", + "purchaseDifferentAccountPlay": "این خرید Google Play به حساب Kilo شما متصل نیست. با Google Account مورد استفاده برای خرید وارد شوید، سپس دوباره تلاش کنید.", + "purchaseMissingOfferToken": "خرید Google Play فاقد توکن پیشنهاد است. دوباره تلاش کنید.", + "purchaseMissingPurchaseToken": "خرید Google Play شامل توکن خرید نبود.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass روی این حساب Google Play متعلق به یک حساب Kilo دیگر است.", + "purchaseStartFailedPlay": "شروع خرید Google Play ممکن نشد." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/fi.json b/apps/mobile/src/i18n/locales/fi.json index 4c7b12f457..793297af83 100644 --- a/apps/mobile/src/i18n/locales/fi.json +++ b/apps/mobile/src/i18n/locales/fi.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Tämän Apple-tilin Kilo Pass kuuluu eri Kilo-tilille.", "couldNotConnectToAppStore": "Yhteyden muodostaminen App Storeen epäonnistui. Tarkista yhteys ja yritä uudelleen.", "noMatchingProducts": "App Store ei palauttanut yhtään sopivaa Kilo Pass -tuotetta.", - "purchaseMissingSignedTransaction": "App Store -osto ei sisältänyt allekirjoitettua tapahtuman JWS:ää." + "purchaseMissingSignedTransaction": "App Store -osto ei sisältänyt allekirjoitettua tapahtuman JWS:ää.", + "couldNotConnectToPlay": "Google Playhin ei voitu muodostaa yhteyttä. Tarkista yhteys ja yritä uudelleen.", + "legalDisclosurePlay": "Kilo Pass on automaattisesti uusiutuva kuukausitilaus. Maksu veloitetaan Google Play -tilistäsi oston vahvistuksen yhteydessä. Tilaus uusiutuu automaattisesti joka kuukausi näytettyyn hintaan, ellei sitä peruuteta vähintään 24 tuntia ennen nykyisen jakson päättymistä. Hallinnoi tai peruuta milloin tahansa Google Play -tilin asetuksissa.", + "manageFailedPlay": "Google Play -tilauksen hallinnan avaaminen epäonnistui.", + "noMatchingProductsPlay": "Google Play ei palauttanut yhtään sopivaa Kilo Pass -tuotetta.", + "opensPlayManagement": "Avaa Google Play -tilauksen hallinnan.", + "otherAccountCopyPlay": "Tämän Google Play -tilin Kilo Pass kuuluu eri Kilo-tilille. Kirjaudu sisään siihen Kilo-tiliin hallinnoidaksesi sitä.", + "productsCouldNotLoadPlay": "Kilo Pass -tuotteita ei voitu ladata Google Playsta.", + "productsUnavailablePlay": "Google Play -tuotteet eivät ole käytettävissä", + "purchaseDifferentAccountPlay": "Tämä Google Play -osto ei ole linkitetty Kilo-tiliisi. Kirjaudu sisään oston tekemiseen käytettyyn Google-tiliin ja yritä sitten uudelleen.", + "purchaseMissingOfferToken": "Google Play -ostosta puuttuu tarjoustunnus. Yritä uudelleen.", + "purchaseMissingPurchaseToken": "Google Play -osto ei sisältänyt ostotunnusta.", + "purchaseOwnedByAnotherAccountPlay": "Tämän Google Play -tilin Kilo Pass kuuluu eri Kilo-tilille.", + "purchaseStartFailedPlay": "Google Play -oston käynnistäminen epäonnistui." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/fil.json b/apps/mobile/src/i18n/locales/fil.json index 2312d68cba..b25a5ee691 100644 --- a/apps/mobile/src/i18n/locales/fil.json +++ b/apps/mobile/src/i18n/locales/fil.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Ang Kilo Pass sa Apple Account na ito ay kabilang sa ibang Kilo account.", "couldNotConnectToAppStore": "Hindi makakonekta sa App Store. Suriin ang iyong koneksyon at subukan muli.", "noMatchingProducts": "Walang tumugmang Kilo Pass product na ibinalik ng App Store.", - "purchaseMissingSignedTransaction": "Hindi kasama sa App Store purchase ang naka-sign na transaction JWS." + "purchaseMissingSignedTransaction": "Hindi kasama sa App Store purchase ang naka-sign na transaction JWS.", + "couldNotConnectToPlay": "Hindi makakonekta sa Google Play. Suriin ang iyong koneksyon at subukan muli.", + "legalDisclosurePlay": "Ang Kilo Pass ay isang auto-renewable na buwanang subscription. Babayaran ang bayad sa iyong Google Play account kapag nakumpirma ang pagbili. Awtomatikong nire-renew ang mga subscription bawat buwan sa ipinapakitang presyo maliban kung kinansela nang hindi bababa sa 24 na oras bago matapos ang kasalukuyang panahon. Pamahalaan o kanselahin anumang oras sa iyong mga setting ng Google Play account.", + "manageFailedPlay": "Nabigong buksan ang pamamahala ng subscription sa Google Play.", + "noMatchingProductsPlay": "Walang tumugmang Kilo Pass product na ibinalik ng Google Play.", + "opensPlayManagement": "Bubuksan ang pamamahala ng subscription sa Google Play.", + "otherAccountCopyPlay": "Ang Kilo Pass sa Google Play account na ito ay kabilang sa ibang Kilo account. Mag-sign in sa Kilo account na iyon para pamahalaan ito.", + "productsCouldNotLoadPlay": "Hindi ma-load ang mga Kilo Pass product mula sa Google Play.", + "productsUnavailablePlay": "Hindi available ang mga product sa Google Play", + "purchaseDifferentAccountPlay": "Hindi naka-link ang pagbiling ito sa Google Play sa iyong Kilo account. Mag-sign in sa Google account na ginamit sa pagbili, pagkatapos subukan muli.", + "purchaseMissingOfferToken": "Kulang ng offer token ang pagbili sa Google Play. Subukan muli.", + "purchaseMissingPurchaseToken": "Hindi kasama ang purchase token sa pagbili sa Google Play.", + "purchaseOwnedByAnotherAccountPlay": "Ang Kilo Pass sa Google Play account na ito ay kabilang sa ibang Kilo account.", + "purchaseStartFailedPlay": "Nabigong simulan ang pagbili sa Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/fr.json b/apps/mobile/src/i18n/locales/fr.json index fda388aef3..b0ba19f9d4 100644 --- a/apps/mobile/src/i18n/locales/fr.json +++ b/apps/mobile/src/i18n/locales/fr.json @@ -2334,7 +2334,20 @@ "purchaseOwnedByAnotherAccount": "Le Kilo Pass sur ce compte Apple appartient à un autre compte Kilo.", "couldNotConnectToAppStore": "Impossible de se connecter à l'App Store. Vérifiez votre connexion et réessayez.", "noMatchingProducts": "Aucun produit Kilo Pass correspondant n'a été renvoyé par l'App Store.", - "purchaseMissingSignedTransaction": "L'achat App Store n'incluait pas de transaction signée JWS." + "purchaseMissingSignedTransaction": "L'achat App Store n'incluait pas de transaction signée JWS.", + "couldNotConnectToPlay": "Impossible de se connecter à Google Play. Vérifiez votre connexion et réessayez.", + "legalDisclosurePlay": "Kilo Pass est un abonnement mensuel à renouvellement automatique. Le paiement est prélevé sur votre compte Google Play à la confirmation de l'achat. Les abonnements se renouvellent automatiquement chaque mois au prix indiqué, sauf annulation au moins 24 heures avant la fin de la période en cours. Gérez ou annulez à tout moment dans les paramètres de votre compte Google Play.", + "manageFailedPlay": "Impossible d'ouvrir la gestion des abonnements de Google Play.", + "noMatchingProductsPlay": "Aucun produit Kilo Pass correspondant n'a été renvoyé par Google Play.", + "opensPlayManagement": "Ouvre la gestion de l'abonnement Google Play.", + "otherAccountCopyPlay": "Le Kilo Pass sur ce compte Google Play appartient à un autre compte Kilo. Connectez-vous à ce compte Kilo pour le gérer.", + "productsCouldNotLoadPlay": "Les produits Kilo Pass n'ont pas pu être chargés depuis Google Play.", + "productsUnavailablePlay": "Produits Google Play indisponibles", + "purchaseDifferentAccountPlay": "Cet achat Google Play n'est pas lié à votre compte Kilo. Connectez-vous avec le compte Google utilisé pour l'achat, puis réessayez.", + "purchaseMissingOfferToken": "L'achat Google Play est dépourvu de jeton d'offre. Réessayez.", + "purchaseMissingPurchaseToken": "L'achat Google Play ne comportait pas de jeton d'achat.", + "purchaseOwnedByAnotherAccountPlay": "Le Kilo Pass sur ce compte Google Play appartient à un autre compte Kilo.", + "purchaseStartFailedPlay": "Impossible de démarrer l'achat sur Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ga.json b/apps/mobile/src/i18n/locales/ga.json index 8a695e8eb8..edae9ef762 100644 --- a/apps/mobile/src/i18n/locales/ga.json +++ b/apps/mobile/src/i18n/locales/ga.json @@ -2910,7 +2910,20 @@ "purchaseOwnedByAnotherAccount": "Baineann an Kilo Pass ar an Apple Account seo le cuntas Kilo éagsúil.", "couldNotConnectToAppStore": "Níorbh fhéidir ceangal le App Store. Seiceáil do cheangal agus bain triail as arís.", "noMatchingProducts": "Níor fhill App Store aon táirgí Kilo Pass comhoiriúnacha.", - "purchaseMissingSignedTransaction": "Ní raibh idirbheart sínithe JWS san áireamh i gceannach App Store." + "purchaseMissingSignedTransaction": "Ní raibh idirbheart sínithe JWS san áireamh i gceannach App Store.", + "couldNotConnectToPlay": "Níorbh fhéidir ceangal le Google Play. Seiceáil do cheangal agus bain triail as arís.", + "legalDisclosurePlay": "Is síntiús míosúil uath-fhionnuaire é Kilo Pass. Gearrtar an táille ar do chuntas Google Play ag deimhniú an cheannaigh. Déanann síntiúis athnuachan go huathoibríoch gach mí ar an bpraghas a thaispeántar mura gcuirtear ceal orthu 24 uair an chloig ar a laghad roimh dheireadh na tréimhse reatha. Bainistigh nó cuir ceal orthu am ar bith i do shocruithe cuntais Google Play.", + "manageFailedPlay": "Theip ar bhainistíocht sintiúis Google Play a oscailt.", + "noMatchingProductsPlay": "Níor fhill Google Play aon táirgí Kilo Pass comhoiriúnacha.", + "opensPlayManagement": "Osclaíonn bainistíocht sintiúis Google Play.", + "otherAccountCopyPlay": "Baineann an Kilo Pass ar an gcuntas Google Play seo le cuntas Kilo éagsúil. Sínigh isteach sa chuntas Kilo sin le bainistiú a dhéanamh air.", + "productsCouldNotLoadPlay": "Níorbh fhéidir táirgí Kilo Pass a lódáil ó Google Play.", + "productsUnavailablePlay": "Táirgí Google Play gan fáil", + "purchaseDifferentAccountPlay": "Níl an ceannach Google Play seo nasctha le do chuntas Kilo. Sínigh isteach leis an Google account a úsáideadh don cheannach, ansin bain triail as arís.", + "purchaseMissingOfferToken": "Tá comhartha tairisceana ar iarraidh ó cheannach Google Play. Bain triail as arís.", + "purchaseMissingPurchaseToken": "Ní raibh comhartha ceannaigh san áireamh i gceannach Google Play.", + "purchaseOwnedByAnotherAccountPlay": "Baineann an Kilo Pass ar an gcuntas Google Play seo le cuntas Kilo éagsúil.", + "purchaseStartFailedPlay": "Theip ar cheannach Google Play a thosú." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/gl.json b/apps/mobile/src/i18n/locales/gl.json index f23f8ce5ef..4a68bcd91a 100644 --- a/apps/mobile/src/i18n/locales/gl.json +++ b/apps/mobile/src/i18n/locales/gl.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "O Kilo Pass desta conta de Apple pertence a outra conta de Kilo.", "couldNotConnectToAppStore": "Non se puido conectar coa App Store. Comproba a túa conexión e téntao de novo.", "noMatchingProducts": "A App Store non devolveu ningún produto de Kilo Pass coincidente.", - "purchaseMissingSignedTransaction": "A compra da App Store non incluíu unha transacción asinada en JWS." + "purchaseMissingSignedTransaction": "A compra da App Store non incluíu unha transacción asinada en JWS.", + "couldNotConnectToPlay": "Non se puido conectar con Google Play. Comproba a túa conexión e tenta de novo.", + "legalDisclosurePlay": "Kilo Pass é unha subscrición mensual con renovación automática. O pagamento cárgase na túa conta de Google Play ao confirmar a compra. As subscricións renóvanse automaticamente cada mes ao prezo indicado a menos que se cancelen polo menos 24 horas antes do final do período actual. Xestiona ou cancela en calquera momento na configuración da túa conta de Google Play.", + "manageFailedPlay": "Non se puido abrir a xestión de subscricións de Google Play.", + "noMatchingProductsPlay": "Google Play non devolveu produtos de Kilo Pass que coincidan.", + "opensPlayManagement": "Abre a xestión de subscricións de Google Play.", + "otherAccountCopyPlay": "O Kilo Pass desta conta de Google Play pertence a outra conta de Kilo. Inicia sesión nesa conta de Kilo para xestionalo.", + "productsCouldNotLoadPlay": "Non se puideron cargar os produtos de Kilo Pass desde Google Play.", + "productsUnavailablePlay": "Produtos de Google Play non dispoñibles", + "purchaseDifferentAccountPlay": "Esta compra de Google Play non está ligada á túa conta de Kilo. Inicia sesión na conta de Google usada para a compra e tenta de novo.", + "purchaseMissingOfferToken": "Á compra de Google Play fáltalle un token de oferta. Tenta de novo.", + "purchaseMissingPurchaseToken": "A compra de Google Play non incluíu un token de compra.", + "purchaseOwnedByAnotherAccountPlay": "O Kilo Pass desta conta de Google Play pertence a outra conta de Kilo.", + "purchaseStartFailedPlay": "Non se puido iniciar a compra en Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/gu.json b/apps/mobile/src/i18n/locales/gu.json index 8329865b2c..d981b1b79e 100644 --- a/apps/mobile/src/i18n/locales/gu.json +++ b/apps/mobile/src/i18n/locales/gu.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "આ Apple ખાતા પરનું Kilo Pass એ અલગ Kilo ખાતા સાથે સંબંધિત છે.", "couldNotConnectToAppStore": "App Store થી કનેક્ટ થઈ શકાયું નહીં. તમારું કનેક્શન ચકાસો અને ફરી પ્રયત્ન કરો.", "noMatchingProducts": "App Store દ્વારા કોઈ મેળ ખાતા Kilo Pass ઉત્પાદનો પરત આપવામાં આવ્યા નથી.", - "purchaseMissingSignedTransaction": "App Store ખરીદીમાં સહી કરેલ ટ્રાન્ઝેક્શન JWS સમાવિષ્ટ ન હતું." + "purchaseMissingSignedTransaction": "App Store ખરીદીમાં સહી કરેલ ટ્રાન્ઝેક્શન JWS સમાવિષ્ટ ન હતું.", + "couldNotConnectToPlay": "Google Play સાથે કનેક્ટ થઈ શક્યું નહીં. તમારું કનેક્શન તપાસો અને ફરી પ્રયાસ કરો.", + "legalDisclosurePlay": "Kilo Pass એ આપમેળે રિન્યુ થતું માસિક સબ્સ્ક્રિપ્શન છે. ખરીદીની પુષ્ટિ પર તમારા Google Play એકાઉન્ટ પર ચુકવણી કરવામાં આવે છે. જ્યાં સુધી વર્તમાન સમયગાળાના અંતના 24 કલાક પહેલાં રદ ન કરવામાં આવે ત્યાં સુધી સબ્સ્ક્રિપ્શન દર મહિને દર્શાવેલ કિંમતે આપમેળે રિન્યુ થાય છે. તમારી Google Play એકાઉન્ટ સેટિંગ્સમાં ગમે ત્યારે મેનેજ કરો અથવા રદ કરો.", + "manageFailedPlay": "Google Play સબ્સ્ક્રિપ્શન મેનેજમેન્ટ ખોલવામાં નિષ્ફળ ગયું.", + "noMatchingProductsPlay": "Google Play દ્વારા કોઈ મેળ ખાતા Kilo Pass ઉત્પાદનો પરત આપવામાં આવ્યા નથી.", + "opensPlayManagement": "Google Play સબ્સ્ક્રિપ્શન મેનેજમેન્ટ ખોલે છે.", + "otherAccountCopyPlay": "આ Google Play એકાઉન્ટ પરનું Kilo Pass એ અલગ Kilo ખાતા સાથે સંબંધિત છે. તેને મેનેજ કરવા માટે તે Kilo ખાતામાં સાઇન ઇન કરો.", + "productsCouldNotLoadPlay": "Kilo Pass ઉત્પાદનો Google Play માંથી લોડ કરી શકાયા નહીં.", + "productsUnavailablePlay": "Google Play ઉત્પાદનો ઉપલબ્ધ નથી", + "purchaseDifferentAccountPlay": "આ Google Play ખરીદી તમારા Kilo ખાતા સાથે લિંક થયેલી નથી. ખરીદી માટે વપરાયેલ Google એકાઉન્ટમાં સાઇન ઇન કરો, પછી ફરી પ્રયાસ કરો.", + "purchaseMissingOfferToken": "Google Play ખરીદીમાં ઓફર ટોકન ગુમ છે. ફરી પ્રયાસ કરો.", + "purchaseMissingPurchaseToken": "Google Play ખરીદીમાં ખરીદી ટોકન શામેલ ન હતું.", + "purchaseOwnedByAnotherAccountPlay": "આ Google Play ખાતા પરનું Kilo Pass એ અલગ Kilo ખાતા સાથે સંબંધિત છે.", + "purchaseStartFailedPlay": "Google Play ખરીદી શરૂ કરવામાં નિષ્ફળ ગયું." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ha.json b/apps/mobile/src/i18n/locales/ha.json index 87d0cceeb7..f5038b8a42 100644 --- a/apps/mobile/src/i18n/locales/ha.json +++ b/apps/mobile/src/i18n/locales/ha.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass akan wannan Apple Account na wani asusun Kilo ne daban.", "couldNotConnectToAppStore": "Ba a iya haɗawa da App Store ba. Duba haɗinka ka sake gwadawa.", "noMatchingProducts": "Babu samfuran Kilo Pass da suka dace da App Store ya dawo da su.", - "purchaseMissingSignedTransaction": "Siyayyar App Store ba ta haɗa da JWS na ma'amala mai sa hannu ba." + "purchaseMissingSignedTransaction": "Siyayyar App Store ba ta haɗa da JWS na ma'amala mai sa hannu ba.", + "couldNotConnectToPlay": "Ba a iya haɗawa da Google Play ba. Duba haɗinka ka sake gwadawa.", + "legalDisclosurePlay": "Kilo Pass biyan kuɗi ne na wata-wata wanda ke sabunta kansa. Ana cajin biyan kuɗi ga Google Play account ɗinka a lokacin tabbatar da siyayya. Biyan kuɗi yana sabuntawa kowace wata a farashin da aka nuna sai dai idan an soke shi aƙalla sa'o'i 24 kafin ƙarshen lokaci na yanzu. Sarrafa ko soke a kowane lokaci a saitunan asusunka na Google Play.", + "manageFailedPlay": "An kasa buɗe sarrafa biyan kuɗi na Google Play.", + "noMatchingProductsPlay": "Babu samfuran Kilo Pass da suka dace da Google Play ya dawo da su.", + "opensPlayManagement": "Yana buɗe sarrafa biyan kuɗi na Google Play.", + "otherAccountCopyPlay": "Kilo Pass akan wannan Google Play account na wani asusun Kilo ne daban. Shiga wannan asusun Kilo don sarrafa shi.", + "productsCouldNotLoadPlay": "Ba a iya ɗora samfuran Kilo Pass daga Google Play ba.", + "productsUnavailablePlay": "Samfuran Google Play ba su nan", + "purchaseDifferentAccountPlay": "Wannan sayayyar Google Play ba a haɗa ta da asusunka na Kilo ba. Shiga da Google Play account ɗin da aka yi amfani da shi don sayayyar, sannan sake gwadawa.", + "purchaseMissingOfferToken": "Sayayyar Google Play ba ta haɗa da alamar tayin ba. Sake gwadawa.", + "purchaseMissingPurchaseToken": "Sayayyar Google Play ba ta haɗa da alamar sayayya ba.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass akan wannan Google Play account na wani asusun Kilo ne daban.", + "purchaseStartFailedPlay": "An kasa fara sayayyar Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/he.json b/apps/mobile/src/i18n/locales/he.json index cfc66dc73a..67e5f08d34 100644 --- a/apps/mobile/src/i18n/locales/he.json +++ b/apps/mobile/src/i18n/locales/he.json @@ -2409,7 +2409,20 @@ "purchaseOwnedByAnotherAccount": "ה-Kilo Pass בחשבון Apple הזה שייך לחשבון Kilo אחר.", "couldNotConnectToAppStore": "לא ניתן היה להתחבר ל-App Store. בדוק את החיבור ונסה שוב.", "noMatchingProducts": "לא הוחזרו מוצרי Kilo Pass תואמים מ-App Store.", - "purchaseMissingSignedTransaction": "הרכישה ב-App Store לא כללה JWS עסקה חתום." + "purchaseMissingSignedTransaction": "הרכישה ב-App Store לא כללה JWS עסקה חתום.", + "couldNotConnectToPlay": "לא ניתן היה להתחבר ל-Google Play. בדוק את החיבור ונסה שוב.", + "legalDisclosurePlay": "Kilo Pass הוא מנוי חודשי שמתחדש אוטומטית. התשלום נגבה מחשבון Google Play שלך בעת אישור הרכישה. המנוי מתחדש אוטומטית בכל חודש במחיר המוצג, אלא אם תבטל לפחות 24 שעות לפני סוף התקופה הנוכחית. נהל או בטל בכל עת בהגדרות חשבון Google Play שלך.", + "manageFailedPlay": "לא ניתן היה לפתוח את ניהול המינויים ב-Google Play.", + "noMatchingProductsPlay": "Google Play לא החזיר מוצרי Kilo Pass תואמים.", + "opensPlayManagement": "פותח את ניהול המינויים ב-Google Play.", + "otherAccountCopyPlay": "ה-Kilo Pass בחשבון Google Play הזה שייך לחשבון Kilo אחר. היכנס לחשבון Kilo הזה כדי לנהל אותו.", + "productsCouldNotLoadPlay": "לא ניתן היה לטעון מוצרי Kilo Pass מ-Google Play.", + "productsUnavailablePlay": "מוצרי Google Play לא זמינים", + "purchaseDifferentAccountPlay": "הרכישה הזו ב-Google Play אינה מקושרת לחשבון Kilo שלך. היכנס לחשבון Google שבו בוצעה הרכישה, ונסה שוב.", + "purchaseMissingOfferToken": "הרכישה ב-Google Play חסרה אסימון הצעה. נסה שוב.", + "purchaseMissingPurchaseToken": "הרכישה ב-Google Play לא כללה אסימון רכישה.", + "purchaseOwnedByAnotherAccountPlay": "ה-Kilo Pass בחשבון Google Play הזה שייך לחשבון Kilo אחר.", + "purchaseStartFailedPlay": "לא ניתן היה להתחיל את הרכישה ב-Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/hi.json b/apps/mobile/src/i18n/locales/hi.json index 9dcc5c908d..b7907d089e 100644 --- a/apps/mobile/src/i18n/locales/hi.json +++ b/apps/mobile/src/i18n/locales/hi.json @@ -2396,7 +2396,20 @@ "purchaseOwnedByAnotherAccount": "इस Apple खाते का Kilo Pass किसी दूसरे Kilo खाते से संबंधित है।", "couldNotConnectToAppStore": "App Store से कनेक्ट नहीं हो सका। अपना कनेक्शन जाँचें और फिर से प्रयास करें।", "noMatchingProducts": "App Store द्वारा कोई मिलता-जुलता Kilo Pass उत्पाद नहीं लौटाया गया।", - "purchaseMissingSignedTransaction": "App Store खरीद में हस्ताक्षरित लेन-देन JWS शामिल नहीं था।" + "purchaseMissingSignedTransaction": "App Store खरीद में हस्ताक्षरित लेन-देन JWS शामिल नहीं था।", + "couldNotConnectToPlay": "Google Play से कनेक्ट नहीं हो सका। अपना कनेक्शन जाँचें और फिर से प्रयास करें।", + "legalDisclosurePlay": "Kilo Pass एक स्वतः-नवीकरणीय मासिक सदस्यता है। खरीद की पुष्टि पर भुगतान आपके Google Play खाते से लिया जाता है। सदस्यताएँ हर महीने दिखाई गई कीमत पर स्वतः नवीकरण होती हैं, जब तक कि वर्तमान अवधि समाप्त होने से कम से कम 24 घंटे पहले रद्द न की जाएँ। इन्हें कभी भी अपनी Google Play खाता सेटिंग्स में प्रबंधित या रद्द करें।", + "manageFailedPlay": "Google Play सदस्यता प्रबंधन खोलने में विफल।", + "noMatchingProductsPlay": "Google Play द्वारा कोई मिलता-जुलता Kilo Pass उत्पाद नहीं लौटाया गया।", + "opensPlayManagement": "Google Play सदस्यता प्रबंधन खोलता है।", + "otherAccountCopyPlay": "इस Google Play खाते का Kilo Pass किसी दूसरे Kilo खाते से संबंधित है। इसे प्रबंधित करने के लिए उस Kilo खाते में साइन इन करें।", + "productsCouldNotLoadPlay": "Kilo Pass उत्पाद Google Play से लोड नहीं हो सके।", + "productsUnavailablePlay": "Google Play उत्पाद उपलब्ध नहीं", + "purchaseDifferentAccountPlay": "यह Google Play खरीदारी आपके Kilo खाते से लिंक नहीं है। खरीदारी के लिए उपयोग किए गए Google खाते में साइन इन करें, फिर फिर से प्रयास करें।", + "purchaseMissingOfferToken": "Google Play खरीदारी में ऑफ़र टोकन नहीं है। फिर से प्रयास करें।", + "purchaseMissingPurchaseToken": "Google Play खरीद में खरीद टोकन शामिल नहीं था।", + "purchaseOwnedByAnotherAccountPlay": "इस Google Play खाते का Kilo Pass किसी दूसरे Kilo खाते से संबंधित है।", + "purchaseStartFailedPlay": "Google Play खरीदारी शुरू करने में विफल।" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/hr.json b/apps/mobile/src/i18n/locales/hr.json index 39758f2162..b2bd5eabc2 100644 --- a/apps/mobile/src/i18n/locales/hr.json +++ b/apps/mobile/src/i18n/locales/hr.json @@ -2870,7 +2870,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass na ovom Apple računu pripada drugom Kilo računu.", "couldNotConnectToAppStore": "Nije moguće povezati se s App Storeom. Provjerite vezu i pokušajte ponovno.", "noMatchingProducts": "App Store nije vratio odgovarajuće Kilo Pass proizvode.", - "purchaseMissingSignedTransaction": "Kupnja u App Storeu nije uključivala potpisani transakcijski JWS." + "purchaseMissingSignedTransaction": "Kupnja u App Storeu nije uključivala potpisani transakcijski JWS.", + "couldNotConnectToPlay": "Nije moguće povezati se s Google Playom. Provjerite svoju vezu i pokušajte ponovno.", + "legalDisclosurePlay": "Kilo Pass je mjesečna pretplata s automatskim obnavljanjem. Plaćanje se naplaćuje s vašeg Google Play računa pri potvrdi kupnje. Pretplate se automatski obnavljaju svakog mjeseca po prikazanoj cijeni osim ako ne otkažete najmanje 24 sata prije kraja tekućeg razdoblja. Upravljajte ili otkažite u bilo kojem trenutku u postavkama svog Google Play računa.", + "manageFailedPlay": "Nije moguće otvoriti upravljanje pretplatama na Google Playu.", + "noMatchingProductsPlay": "Google Play nije vratio nijedan odgovarajući Kilo Pass proizvod.", + "opensPlayManagement": "Otvara upravljanje pretplatama na Google Playu.", + "otherAccountCopyPlay": "Kilo Pass na ovom Google Play računu pripada drugom Kilo računu. Prijavite se na taj Kilo račun da biste njime upravljali.", + "productsCouldNotLoadPlay": "Nije moguće učitati Kilo Pass proizvode s Google Playa.", + "productsUnavailablePlay": "Google Play proizvodi nisu dostupni", + "purchaseDifferentAccountPlay": "Ova kupnja na Google Playu nije povezana s vašim Kilo računom. Prijavite se na Google račun korišten za kupnju, a zatim pokušajte ponovno.", + "purchaseMissingOfferToken": "Kupnji na Google Playu nedostaje token ponude. Pokušajte ponovno.", + "purchaseMissingPurchaseToken": "Kupnja na Google Playu nije uključivala token kupnje.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass na ovom Google Play računu pripada drugom Kilo računu.", + "purchaseStartFailedPlay": "Nije moguće započeti kupnju na Google Playu." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ht.json b/apps/mobile/src/i18n/locales/ht.json index d45cff706a..65506b90d9 100644 --- a/apps/mobile/src/i18n/locales/ht.json +++ b/apps/mobile/src/i18n/locales/ht.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass la sou Kont Apple sa a fè pati yon lòt kont Kilo.", "couldNotConnectToAppStore": "Pa t ka konekte ak App Store. Tcheke koneksyon ou epi eseye ankò.", "noMatchingProducts": "App Store pa t retounen pwodwi Kilo Pass ki matche yo.", - "purchaseMissingSignedTransaction": "Acha nan App Store pa t enkli yon JWS transaksyon siyen." + "purchaseMissingSignedTransaction": "Acha nan App Store pa t enkli yon JWS transaksyon siyen.", + "couldNotConnectToPlay": "Pa t ka konekte ak Google Play. Tcheke koneksyon ou epi eseye ankò.", + "legalDisclosurePlay": "Kilo Pass se yon abònman chak mwa ki renouvle otomatikman. Peman an chaje sou kont Google Play ou lè acha a konfime. Abònman yo renouvle otomatikman chak mwa nan pri ki montre a sòf si yo anile omwen 24 èdtan anvan fen peryòd aktyèl la. Jere oswa anile nenpòt lè nan paramèt kont Google Play ou.", + "manageFailedPlay": "Echèk pou louvri jesyon abònman Google Play.", + "noMatchingProductsPlay": "Google Play pa t retounen okenn pwodui Kilo Pass ki koresponn.", + "opensPlayManagement": "Louvri jesyon abònman Google Play.", + "otherAccountCopyPlay": "Kilo Pass la sou kont Google Play sa a fè pati yon lòt kont Kilo. Siyen nan kont Kilo sa a pou jere li.", + "productsCouldNotLoadPlay": "Pwodui Kilo Pass yo pa t ka chaje sot nan Google Play.", + "productsUnavailablePlay": "Pwodui Google Play pa disponib", + "purchaseDifferentAccountPlay": "Acha Google Play sa a pa lye ak kont Kilo ou. Konekte ak kont Google yo te itilize pou acha a, epi eseye ankò.", + "purchaseMissingOfferToken": "Acha Google Play a manke yon tokèn ofr. Eseye ankò.", + "purchaseMissingPurchaseToken": "Acha Google Play a pa t enkli yon tokèn acha.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass la sou kont Google Play sa a fè pati yon lòt kont Kilo.", + "purchaseStartFailedPlay": "Echèk pou kòmanse acha Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/hu.json b/apps/mobile/src/i18n/locales/hu.json index c03716ed10..824789cb9e 100644 --- a/apps/mobile/src/i18n/locales/hu.json +++ b/apps/mobile/src/i18n/locales/hu.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Az ezen Apple-fiókon lévő Kilo Pass egy másik Kilo-fiókhoz tartozik.", "couldNotConnectToAppStore": "Nem sikerült csatlakozni az App Store-hoz. Ellenőrizze a kapcsolatot, és próbálja újra.", "noMatchingProducts": "Az App Store nem adott vissza megfelelő Kilo Pass termékeket.", - "purchaseMissingSignedTransaction": "Az App Store-vásárlás nem tartalmazott aláírt JWS-tranzakciót." + "purchaseMissingSignedTransaction": "Az App Store-vásárlás nem tartalmazott aláírt JWS-tranzakciót.", + "couldNotConnectToPlay": "Nem sikerült csatlakozni a Google Playhez. Ellenőrizd a kapcsolatot, és próbáld újra.", + "legalDisclosurePlay": "A Kilo Pass havi előfizetés, amely automatikusan megújul. A fizetés a Google Play-fiókod terhére történik a vásárlás megerősítésekor. Az előfizetés havonta automatikusan megújul a megjelenített áron, kivéve, ha legalább 24 órával az aktuális időszak vége előtt lemondod. Az előfizetést bármikor kezelheted vagy lemondhatod a Google Play-fiókod beállításaiban.", + "manageFailedPlay": "A Google Play előfizetés-kezelés megnyitása nem sikerült.", + "noMatchingProductsPlay": "A Google Play nem adott vissza megfelelő Kilo Pass termékeket.", + "opensPlayManagement": "Megnyitja a Google Play előfizetés-kezelést.", + "otherAccountCopyPlay": "Az ezen Google Play-fiókon lévő Kilo Pass egy másik Kilo-fiókhoz tartozik. Jelentkezz be abba a Kilo-fiókba a kezeléséhez.", + "productsCouldNotLoadPlay": "A Kilo Pass termékek nem tölthetők be a Google Playből.", + "productsUnavailablePlay": "A Google Play termékek nem érhetők el", + "purchaseDifferentAccountPlay": "Ez a Google Play-vásárlás nincs összekapcsolva a Kilo-fiókoddal. Jelentkezz be a vásárlásra használt Google-fiókba, majd próbáld újra.", + "purchaseMissingOfferToken": "A Google Play-vásárlásból hiányzik egy ajánlattoken. Próbáld újra.", + "purchaseMissingPurchaseToken": "A Google Play-vásárlás nem tartalmazott vásárlási tokent.", + "purchaseOwnedByAnotherAccountPlay": "Az ezen Google Play-fiókon lévő Kilo Pass egy másik Kilo-fiókhoz tartozik.", + "purchaseStartFailedPlay": "A Google Play-vásárlás elindítása nem sikerült." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/hy.json b/apps/mobile/src/i18n/locales/hy.json index 742261eae6..6cd4b3884e 100644 --- a/apps/mobile/src/i18n/locales/hy.json +++ b/apps/mobile/src/i18n/locales/hy.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Այս Apple Account-ի Kilo Pass-ը պատկանում է մեկ այլ Kilo հաշվին:", "couldNotConnectToAppStore": "Չհաջողվեց միանալ App Store-ին: Ստուգեք կապը և կրկին փորձեք:", "noMatchingProducts": "App Store-ը չվերադարձրեց համապատասխան Kilo Pass ապրանքներ:", - "purchaseMissingSignedTransaction": "App Store-ի գնումը չներառեց ստորագրված JWS գործարք:" + "purchaseMissingSignedTransaction": "App Store-ի գնումը չներառեց ստորագրված JWS գործարք:", + "couldNotConnectToPlay": "Չհաջողվեց միանալ Google Play-ին: Ստուգեք ձեր կապը և նորից փորձեք:", + "legalDisclosurePlay": "Kilo Pass-ը ավտոմատ թարմացվող ամսական բաժանորդագրություն է: Վճարումը գանձվում է ձեր Google Play հաշվից գնումը հաստատելիս: Բաժանորդագրությունները թարմացվում են ավտոմատ ամեն ամիս նշված գնով, եթե չեղարկեք ընթացիկ ժամանակաշրջանի ավարտից առնվազն 24 ժամ առաջ: Կառավարեք կամ չեղարկեք ցանկացած պահի ձեր Google Play հաշվի կարգավորումներում:", + "manageFailedPlay": "Չհաջողվեց բացել Google Play բաժանորդագրության կառավարումը:", + "noMatchingProductsPlay": "Google Play-ը չվերադարձրեց համապատասխան Kilo Pass ապրանքներ:", + "opensPlayManagement": "Բացում է Google Play բաժանորդագրության կառավարումը:", + "otherAccountCopyPlay": "Այս Google Play հաշվի Kilo Pass-ը պատկանում է մեկ այլ Kilo հաշվին: Մուտք գործեք այդ Kilo հաշիվ՝ այն կառավարելու համար:", + "productsCouldNotLoadPlay": "Kilo Pass ապրանքները չհաջողվեց բեռնել Google Play-ից:", + "productsUnavailablePlay": "Google Play ապրանքները հասանելի չեն", + "purchaseDifferentAccountPlay": "Այս Google Play գնումը կապված չէ ձեր Kilo հաշվին: Մուտք գործեք գնման համար օգտագործված Google հաշիվ, ապա նորից փորձեք:", + "purchaseMissingOfferToken": "Google Play գնումը չունի offer token: Նորից փորձեք:", + "purchaseMissingPurchaseToken": "Google Play գնումը չէր ներառում purchase token:", + "purchaseOwnedByAnotherAccountPlay": "Այս Google Play հաշվի Kilo Pass-ը պատկանում է մեկ այլ Kilo հաշվին:", + "purchaseStartFailedPlay": "Չհաջողվեց սկսել Google Play գնումը:" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/id.json b/apps/mobile/src/i18n/locales/id.json index cadd084c39..a0340f9e6d 100644 --- a/apps/mobile/src/i18n/locales/id.json +++ b/apps/mobile/src/i18n/locales/id.json @@ -2396,7 +2396,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass di Akun Apple ini milik akun Kilo yang berbeda.", "couldNotConnectToAppStore": "Tidak dapat terhubung ke App Store. Periksa koneksi Anda, lalu coba lagi.", "noMatchingProducts": "App Store tidak mengembalikan produk Kilo Pass yang cocok.", - "purchaseMissingSignedTransaction": "Pembelian App Store tidak menyertakan JWS transaksi yang ditandatangani." + "purchaseMissingSignedTransaction": "Pembelian App Store tidak menyertakan JWS transaksi yang ditandatangani.", + "couldNotConnectToPlay": "Tidak dapat terhubung ke Google Play. Periksa koneksi Anda, lalu coba lagi.", + "legalDisclosurePlay": "Kilo Pass adalah langganan bulanan yang dapat diperbarui otomatis. Pembayaran dibebankan ke akun Google Play Anda saat konfirmasi pembelian. Langganan diperbarui otomatis setiap bulan dengan harga yang ditampilkan kecuali dibatalkan minimal 24 jam sebelum akhir periode berjalan. Kelola atau batalkan kapan saja di pengaturan akun Google Play Anda.", + "manageFailedPlay": "Gagal membuka pengelolaan langganan Google Play.", + "noMatchingProductsPlay": "Google Play tidak mengembalikan produk Kilo Pass yang cocok.", + "opensPlayManagement": "Membuka pengelolaan langganan Google Play.", + "otherAccountCopyPlay": "Kilo Pass di akun Google Play ini milik akun Kilo yang berbeda. Masuk ke akun Kilo tersebut untuk mengelolanya.", + "productsCouldNotLoadPlay": "Produk Kilo Pass tidak dapat dimuat dari Google Play.", + "productsUnavailablePlay": "Produk Google Play tidak tersedia", + "purchaseDifferentAccountPlay": "Pembelian Google Play ini tidak tertaut ke akun Kilo Anda. Masuk dengan Akun Google yang digunakan untuk pembelian, lalu coba lagi.", + "purchaseMissingOfferToken": "Pembelian Google Play tidak menyertakan token penawaran. Coba lagi.", + "purchaseMissingPurchaseToken": "Pembelian Google Play tidak menyertakan token pembelian.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass di akun Google Play ini milik akun Kilo yang berbeda.", + "purchaseStartFailedPlay": "Gagal memulai pembelian Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ig.json b/apps/mobile/src/i18n/locales/ig.json index cbae731d4a..238da59e7d 100644 --- a/apps/mobile/src/i18n/locales/ig.json +++ b/apps/mobile/src/i18n/locales/ig.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass na Akaụntụ Apple a bụ nke akaụntụ Kilo ọzọ.", "couldNotConnectToAppStore": "Enweghị ike ijikọ na App Store. Lelee njikọ gị wee nwaa ọzọ.", "noMatchingProducts": "App Store eweghachiteghị ngwaahịa Kilo Pass dakọtara.", - "purchaseMissingSignedTransaction": "Ịzụrụ ihe na App Store agụnyeghị JWS azụmahịa edere aka." + "purchaseMissingSignedTransaction": "Ịzụrụ ihe na App Store agụnyeghị JWS azụmahịa edere aka.", + "couldNotConnectToPlay": "Enweghị ike ịjikọọ na Google Play. Lelee njikọ gị wee nwaa ọzọ.", + "legalDisclosurePlay": "Kilo Pass bụ ndenye aha kwa ọnwa nke na-emegharị onwe ya. A na-ana ụgwọ na Akaụntụ Google Play gị mgbe ị kwadoro ịzụta. Ndenye aha na-emegharị kwa ọnwa na ọnụahịa egosiri belụsọ na ị kagburu ya ọ dịkarịa ala awa 24 tupu njedebe nke oge ugbu a. Jikwaa ma ọ bụ kagbuo ya mgbe ọ bụla na ntọala akaụntụ Google Play gị.", + "manageFailedPlay": "Ịmepe njikwa ndenye aha Google Play dara.", + "noMatchingProductsPlay": "Enweghị ngwaahịa Kilo Pass dabara adaba nke Google Play weghachitere.", + "opensPlayManagement": "Na-emepe njikwa ndenye aha Google Play.", + "otherAccountCopyPlay": "Kilo Pass na Akaụntụ Google Play a bụ nke akaụntụ Kilo ọzọ. Banye na akaụntụ Kilo ahụ ka ijikwa ya.", + "productsCouldNotLoadPlay": "Enweghị ike ibunye ngwaahịa Kilo Pass site na Google Play.", + "productsUnavailablePlay": "Ngwaahịa Google Play adịghị", + "purchaseDifferentAccountPlay": "Ịzụrụ Google Play a ejikọghị na akaụntụ Kilo gị. Banye na Akaụntụ Google e ji zụọ ya, wee nwaa ọzọ.", + "purchaseMissingOfferToken": "Ịzụrụ Google Play enweghị token onyinye. Nwaa ọzọ.", + "purchaseMissingPurchaseToken": "Ịzụrụ Google Play agụnyeghị token ịzụrụ.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass na Akaụntụ Google Play a bụ nke akaụntụ Kilo ọzọ.", + "purchaseStartFailedPlay": "Ịmalite azụrụ Google Play dara." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/is.json b/apps/mobile/src/i18n/locales/is.json index c6d9450557..3e7ec8c3b9 100644 --- a/apps/mobile/src/i18n/locales/is.json +++ b/apps/mobile/src/i18n/locales/is.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass á þessum Apple-reikningi tilheyrir öðrum Kilo-reikningi.", "couldNotConnectToAppStore": "Gat ekki tengst App Store. Athugaðu tenginguna og reyndu aftur.", "noMatchingProducts": "Engar samsvarandi Kilo Pass-vörur komu frá App Store.", - "purchaseMissingSignedTransaction": "App Store-kaup innihéldu ekki undirritaða færslu JWS." + "purchaseMissingSignedTransaction": "App Store-kaup innihéldu ekki undirritaða færslu JWS.", + "couldNotConnectToPlay": "Ekki tókst að tengjast Google Play. Athugaðu tenginguna og reyndu aftur.", + "legalDisclosurePlay": "Kilo Pass er sjálfvirkt endurnýjandi mánaðarleg áskrift. Greiðsla er rukkuð á Google Play-reikninginn þinn við staðfestingu kaupa. Áskriftir endurnýjast sjálfkrafa í hverjum mánuði á því verði sem sýnt er nema hætt sé við að minnsta kosti 24 klukkustundum fyrir lok núverandi tímabils. Stjórnaðu eða hættu við hvenær sem er í stillingum Google Play-reikningsins þíns.", + "manageFailedPlay": "Ekki tókst að opna Google Play-áskriftarstjórnun.", + "noMatchingProductsPlay": "Engar samsvarandi Kilo Pass-vörur voru skilaðar af Google Play.", + "opensPlayManagement": "Opnar Google Play-áskriftarstjórnun.", + "otherAccountCopyPlay": "Kilo Pass á þessum Google Play-reikningi tilheyrir öðrum Kilo-reikningi. Skráðu þig inn á þann Kilo-reikning til að stjórna honum.", + "productsCouldNotLoadPlay": "Ekki tókst að hlaða Kilo Pass-vörur frá Google Play.", + "productsUnavailablePlay": "Google Play-vörur ótiltækar", + "purchaseDifferentAccountPlay": "Þessi Google Play-kaup eru ekki tengd Kilo-reikningnum þínum. Skráðu þig inn á Google-reikninginn sem notaður var við kaupin, og reyndu svo aftur.", + "purchaseMissingOfferToken": "Google Play-kaup vantar tilboðslykil. Reyndu aftur.", + "purchaseMissingPurchaseToken": "Google Play-kaup innihéldu ekki kauplykil.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass á þessum Google Play-reikningi tilheyrir öðrum Kilo-reikningi.", + "purchaseStartFailedPlay": "Mistókst að hefja Google Play-kaup." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/it.json b/apps/mobile/src/i18n/locales/it.json index 8b67ee3e9f..a179c75fbb 100644 --- a/apps/mobile/src/i18n/locales/it.json +++ b/apps/mobile/src/i18n/locales/it.json @@ -2409,7 +2409,20 @@ "purchaseOwnedByAnotherAccount": "Il Kilo Pass su questo account Apple appartiene a un account Kilo diverso.", "couldNotConnectToAppStore": "Impossibile connettersi all'App Store. Controlla la connessione e riprova.", "noMatchingProducts": "L'App Store non ha restituito prodotti Kilo Pass corrispondenti.", - "purchaseMissingSignedTransaction": "L'acquisto sull'App Store non includeva una JWS di transazione firmata." + "purchaseMissingSignedTransaction": "L'acquisto sull'App Store non includeva una JWS di transazione firmata.", + "couldNotConnectToPlay": "Impossibile connettersi a Google Play. Controlla la connessione e riprova.", + "legalDisclosurePlay": "Kilo Pass è un abbonamento mensile a rinnovo automatico. Il pagamento viene addebitato sul tuo account Google Play alla conferma dell'acquisto. Gli abbonamenti si rinnovano automaticamente ogni mese al prezzo mostrato, a meno che non vengano annullati almeno 24 ore prima della fine del periodo corrente. Gestisci o annulla in qualsiasi momento nelle impostazioni del tuo account Google Play.", + "manageFailedPlay": "Impossibile aprire la gestione degli abbonamenti di Google Play.", + "noMatchingProductsPlay": "Google Play non ha restituito prodotti Kilo Pass corrispondenti.", + "opensPlayManagement": "Apre la gestione dell'abbonamento su Google Play.", + "otherAccountCopyPlay": "Il Kilo Pass su questo account Google Play appartiene a un account Kilo diverso. Accedi a quell'account Kilo per gestirlo.", + "productsCouldNotLoadPlay": "Impossibile caricare i prodotti Kilo Pass da Google Play.", + "productsUnavailablePlay": "Prodotti di Google Play non disponibili", + "purchaseDifferentAccountPlay": "Questo acquisto di Google Play non è collegato al tuo account Kilo. Accedi con l'account Google usato per l'acquisto, poi riprova.", + "purchaseMissingOfferToken": "L'acquisto su Google Play non include un offer token. Riprova.", + "purchaseMissingPurchaseToken": "L'acquisto su Google Play non includeva un purchase token.", + "purchaseOwnedByAnotherAccountPlay": "Il Kilo Pass su questo account Google Play appartiene a un account Kilo diverso.", + "purchaseStartFailedPlay": "Impossibile avviare l'acquisto su Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ja.json b/apps/mobile/src/i18n/locales/ja.json index e2ce8794af..47ea014d7c 100644 --- a/apps/mobile/src/i18n/locales/ja.json +++ b/apps/mobile/src/i18n/locales/ja.json @@ -2396,7 +2396,20 @@ "purchaseOwnedByAnotherAccount": "このAppleアカウントのKilo Passは別のKiloアカウントに属しています。", "couldNotConnectToAppStore": "App Storeに接続できませんでした。接続を確認して、もう一度お試しください。", "noMatchingProducts": "App Storeから一致するKilo Pass製品は返されませんでした。", - "purchaseMissingSignedTransaction": "App Storeの購入に署名済みトランザクションJWSが含まれていませんでした。" + "purchaseMissingSignedTransaction": "App Storeの購入に署名済みトランザクションJWSが含まれていませんでした。", + "couldNotConnectToPlay": "Google Playに接続できませんでした。接続を確認して、もう一度お試しください。", + "legalDisclosurePlay": "Kilo Pass は自動更新の月額サブスクリプションです。購入の確認時に、お支払いは Google Play アカウントに請求されます。サブスクリプションは、現在の期間終了の 24 時間前までに解約しない限り、表示された価格で毎月自動更新されます。Google Play のアカウント設定でいつでも管理または解約できます。", + "manageFailedPlay": "Google Playのサブスクリプション管理を開けませんでした。", + "noMatchingProductsPlay": "Google Playから一致するKilo Pass製品は返されませんでした。", + "opensPlayManagement": "Google Playのサブスクリプション管理を開きます。", + "otherAccountCopyPlay": "このGoogle PlayアカウントのKilo Passは別のKiloアカウントに属しています。管理するにはそのKiloアカウントにサインインしてください。", + "productsCouldNotLoadPlay": "Google PlayからKilo Pass製品を読み込めませんでした。", + "productsUnavailablePlay": "Google Play製品を利用できません", + "purchaseDifferentAccountPlay": "このGoogle Play購入はKiloアカウントにリンクされていません。購入に使用したGoogle Accountにサインインして、もう一度お試しください。", + "purchaseMissingOfferToken": "Google Playの購入にオファートークンがありません。もう一度お試しください。", + "purchaseMissingPurchaseToken": "Google Playの購入に購入トークンが含まれていませんでした。", + "purchaseOwnedByAnotherAccountPlay": "このGoogle PlayアカウントのKilo Passは別のKiloアカウントに属しています。", + "purchaseStartFailedPlay": "Google Playでの購入を開始できませんでした。" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ka.json b/apps/mobile/src/i18n/locales/ka.json index f7cc9b9e81..bf4b9d07b5 100644 --- a/apps/mobile/src/i18n/locales/ka.json +++ b/apps/mobile/src/i18n/locales/ka.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "ეს Apple ანგარიშზე არსებული Kilo Pass სხვა Kilo ანგარიშს ეკუთვნის.", "couldNotConnectToAppStore": "App Store-თან დაკავშირება ვერ მოხერხდა. შეამოწმეთ თქვენი კავშირი და სცადეთ კიდევ.", "noMatchingProducts": "App Store-მა არ დააბრუნა შესაბამისი Kilo Pass პროდუქტები.", - "purchaseMissingSignedTransaction": "App Store-ის შესყიდვა არ შეიცავდა ხელმოწერილ ტრანზაქციის JWS-ს." + "purchaseMissingSignedTransaction": "App Store-ის შესყიდვა არ შეიცავდა ხელმოწერილ ტრანზაქციის JWS-ს.", + "couldNotConnectToPlay": "Google Play-თან დაკავშირება ვერ მოხერხდა. შეამოწმეთ თქვენი კავშირი და სცადეთ კიდევ.", + "legalDisclosurePlay": "Kilo Pass არის ავტომატურად განახლებადი ყოველთვიური გამოწერა. გადახდა ჩამოიჭრება თქვენი Google Play ანგარიშიდან შეძენის დადასტურებისას. გამოწერა ავტომატურად განახლდება ყოველთვიურად მითითებულ ფასად, თუ არ გააუქმებთ მიმდინარე პერიოდის დასრულებამდე სულ მცირე 24 საათით ადრე. მართეთ ან გააუქმეთ ნებისმიერ დროს თქვენი Google Play ანგარიშის პარამეტრებში.", + "manageFailedPlay": "Google Play გამოწერის მართვის გახსნა ვერ მოხერხდა.", + "noMatchingProductsPlay": "Google Play-მა არ დააბრუნა შესაბამისი Kilo Pass პროდუქტები.", + "opensPlayManagement": "Google Play გამოწერის მართვას ხსნის.", + "otherAccountCopyPlay": "ეს Google Play ანგარიშზე არსებული Kilo Pass სხვა Kilo ანგარიშს ეკუთვნის. შედით ამ Kilo ანგარიშში მის სამართავად.", + "productsCouldNotLoadPlay": "Kilo Pass პროდუქტების Google Play-იდან ჩატვირთვა ვერ მოხერხდა.", + "productsUnavailablePlay": "Google Play პროდუქტები მიუწვდომელია", + "purchaseDifferentAccountPlay": "ეს Google Play შესყიდვა არ არის დაკავშირებული თქვენს Kilo ანგარიშთან. შედით იმ Google ანგარიშით, რომელიც გამოიყენებოდა შესყიდვისთვის, შემდეგ კვლავ სცადეთ.", + "purchaseMissingOfferToken": "Google Play შესყიდვას აკლია შეთავაზების ტოკენი. სცადეთ კიდევ.", + "purchaseMissingPurchaseToken": "Google Play-ის შესყიდვა არ შეიცავდა შესყიდვის ტოკენს.", + "purchaseOwnedByAnotherAccountPlay": "ეს Google Play ანგარიშზე არსებული Kilo Pass სხვა Kilo ანგარიშს ეკუთვნის.", + "purchaseStartFailedPlay": "Google Play შესყიდვის დაწყება ვერ მოხერხდა." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/kk.json b/apps/mobile/src/i18n/locales/kk.json index 475fc65ba9..fed5152a6f 100644 --- a/apps/mobile/src/i18n/locales/kk.json +++ b/apps/mobile/src/i18n/locales/kk.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Бұл Apple Аккаунтындағы Kilo Pass басқа Kilo аккаунтына тиесілі.", "couldNotConnectToAppStore": "App Store-ға қосылу мүмкін болмады. Қосылымды тексеріп, қайта көріңіз.", "noMatchingProducts": "App Store сәйкес Kilo Pass өнімдерін қайтармады.", - "purchaseMissingSignedTransaction": "App Store сатып алуы қол қойылған транзакция JWS қамтымады." + "purchaseMissingSignedTransaction": "App Store сатып алуы қол қойылған транзакция JWS қамтымады.", + "couldNotConnectToPlay": "Google Play-ге қосылу мүмкін болмады. Қосылымды тексеріп, қайта көріңіз.", + "legalDisclosurePlay": "Kilo Pass — автоматты жаңартылатын айлық жазылым. Төлем сатып алуды растау кезінде Google Play тіркелгіңізге есептеледі. Ағымдағы кезең аяқталмастан кемінде 24 сағат бұрын тоқтатылмаса, жазылымдар көрсетілген баға бойынша әр ай сайын автоматты түрде жаңартылады. Оны Google Play тіркелгі баптауларында кез келген уақытта басқарыңыз немесе тоқтатыңыз.", + "manageFailedPlay": "Google Play жазылым басқаруын ашу сәтсіз аяқталды.", + "noMatchingProductsPlay": "Google Play сәйкес Kilo Pass өнімдерін қайтармады.", + "opensPlayManagement": "Google Play жазылым басқаруын ашады.", + "otherAccountCopyPlay": "Бұл Google Play Аккаунтындағы Kilo Pass басқа Kilo аккаунтына тиесілі. Оны басқару үшін сол Kilo аккаунтына кіріңіз.", + "productsCouldNotLoadPlay": "Kilo Pass өнімдерін Google Play-ден жүктеу мүмкін болмады.", + "productsUnavailablePlay": "Google Play өнімдері қолжетімсіз", + "purchaseDifferentAccountPlay": "Бұл Google Play сатып алуы Kilo аккаунтыңызға байланыспаған. Сатып алу үшін пайдаланылған Google Аккаунты арқылы кіріңіз де, қайта көріңіз.", + "purchaseMissingOfferToken": "Google Play сатып алуында ұсыныс таңбасы жоқ. Қайта көріңіз.", + "purchaseMissingPurchaseToken": "Google Play сатып алуы сатып алу таңбасын қамтымады.", + "purchaseOwnedByAnotherAccountPlay": "Бұл Google Play Аккаунтындағы Kilo Pass басқа Kilo аккаунтына тиесілі.", + "purchaseStartFailedPlay": "Google Play сатып алуын бастау мүмкін болмады." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/km.json b/apps/mobile/src/i18n/locales/km.json index 42be59b48a..9c35054393 100644 --- a/apps/mobile/src/i18n/locales/km.json +++ b/apps/mobile/src/i18n/locales/km.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass នៅលើ Apple Account នេះជារបស់គណនី Kilo ផ្សេង។", "couldNotConnectToAppStore": "មិនអាចភ្ជាប់ទៅ App Store បានទេ។ ពិនិត្យការតភ្ជាប់របស់អ្នក ហើយព្យាយាមម្តងទៀត។", "noMatchingProducts": "App Store មិនបានប្រគល់ផលិតផល Kilo Pass ដែលត្រូវគ្នាទេ។", - "purchaseMissingSignedTransaction": "ការទិញ App Store មិនបានរួមបញ្ចូល JWS ប្រតិបត្តិការដែលបានចុះហត្ថលេខាទេ។" + "purchaseMissingSignedTransaction": "ការទិញ App Store មិនបានរួមបញ្ចូល JWS ប្រតិបត្តិការដែលបានចុះហត្ថលេខាទេ។", + "couldNotConnectToPlay": "មិនអាចភ្ជាប់ទៅ Google Play បានទេ។ ពិនិត្យការតភ្ជាប់របស់អ្នក ហើយព្យាយាមម្តងទៀត។", + "legalDisclosurePlay": "Kilo Pass គឺជាការជាវប្រចាំខែដែលអាចបន្តដោយស្វ័យប្រវត្តិបាន។ ការទូទាត់នឹងត្រូវគិតលើគណនី Google Play របស់អ្នកនៅពេលបញ្ជាក់ការទិញ។ ការជាវត្រូវបន្តដោយស្វ័យប្រវត្តិរៀងរាល់ខែក្នុងតម្លៃដែលបង្ហាញ លុះត្រាតែលុបចោលយ៉ាងហោចណាស់ 24 ម៉ោងមុនចុងបញ្ចប់នៃរយៈពេលបច្ចុប្បន្ន។ គ្រប់គ្រង ឬលុបចោលនៅពេលណាក៏បាននៅក្នុងការកំណត់គណនី Google Play របស់អ្នក។", + "manageFailedPlay": "មិនអាចបើកការគ្រប់គ្រងការជាវ Google Play បានទេ។", + "noMatchingProductsPlay": "Google Play មិនបានប្រគល់ផលិតផល Kilo Pass ដែលត្រូវគ្នាទេ។", + "opensPlayManagement": "បើកការគ្រប់គ្រងការជាវ Google Play ។", + "otherAccountCopyPlay": "Kilo Pass នៅលើគណនី Google Play នេះជារបស់គណនី Kilo ផ្សេង។ ចូលគណនី Kilo នោះដើម្បីគ្រប់គ្រងវា។", + "productsCouldNotLoadPlay": "មិនអាចផ្ទុកផលិតផល Kilo Pass ពី Google Play បានទេ។", + "productsUnavailablePlay": "ផលិតផល Google Play មិនអាចប្រើបានទេ។", + "purchaseDifferentAccountPlay": "ការទិញ Google Play នេះមិនត្រូវបានភ្ជាប់ទៅគណនី Kilo របស់អ្នកទេ។ ចូលជាមួយគណនី Google ដែលបានប្រើសម្រាប់ការទិញ បន្ទាប់មកព្យាយាមម្តងទៀត។", + "purchaseMissingOfferToken": "ការទិញ Google Play ខ្វះ offer token ។ ព្យាយាមម្តងទៀត។", + "purchaseMissingPurchaseToken": "ការទិញ Google Play មិនបានរួមបញ្ចូល purchase token ទេ។", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass នៅលើគណនី Google Play នេះជារបស់គណនី Kilo ផ្សេង។", + "purchaseStartFailedPlay": "បរាជ័យក្នុងការចាប់ផ្ដើមការទិញ Google Play។" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/kn.json b/apps/mobile/src/i18n/locales/kn.json index 8235583400..a621add6e1 100644 --- a/apps/mobile/src/i18n/locales/kn.json +++ b/apps/mobile/src/i18n/locales/kn.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "ಈ Apple Account ನಲ್ಲಿನ Kilo Pass ಬೇರೆ Kilo ಖಾತೆಗೆ ಸೇರಿದೆ.", "couldNotConnectToAppStore": "App Store ಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ನಿಮ್ಮ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.", "noMatchingProducts": "App Store ನಿಂದ ಹೊಂದಿಕೆಯಾಗುವ Kilo Pass ಉತ್ಪನ್ನಗಳು ಯಾವುವೂ ಹಿಂತಿರುಗಿಸಲಾಗಿಲ್ಲ.", - "purchaseMissingSignedTransaction": "App Store ಖರೀದಿಯು ಸಹಿ ಮಾಡಿದ ವಹಿವಾಟು JWS ಅನ್ನು ಒಳಗೊಂಡಿರಲಿಲ್ಲ." + "purchaseMissingSignedTransaction": "App Store ಖರೀದಿಯು ಸಹಿ ಮಾಡಿದ ವಹಿವಾಟು JWS ಅನ್ನು ಒಳಗೊಂಡಿರಲಿಲ್ಲ.", + "couldNotConnectToPlay": "Google Play ಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ನಿಮ್ಮ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.", + "legalDisclosurePlay": "Kilo Pass ಸ್ವಯಂ-ನವೀಕರಿಸುವ ಮಾಸಿಕ ಚಂದಾದಾರಿಕೆಯಾಗಿದೆ. ಖರೀದಿಯ ದೃಢೀಕರಣದ ಸಮಯದಲ್ಲಿ ನಿಮ್ಮ Google Play ಖಾತೆಗೆ ಹಣವನ್ನು ವಿಧಿಸಲಾಗುತ್ತದೆ. ಪ್ರಸ್ತುತ ಅವಧಿಯ ಮುಕ್ತಾಯಕ್ಕೆ ಕನಿಷ್ಠ 24 ಗಂಟೆಗಳ ಮೊದಲು ರದ್ದುಮಾಡದ ಹೊರತು ಚಂದಾದಾರಿಕೆಗಳು ಪ್ರತಿ ತಿಂಗಳು ತೋರಿಸಿದ ಬೆಲೆಯಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನವೀಕರಿಸುತ್ತವೆ. ನಿಮ್ಮ Google Play ಖಾತೆ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ನಿರ್ವಹಿಸಿ ಅಥವಾ ರದ್ದುಮಾಡಿ.", + "manageFailedPlay": "Google Play ಚಂದಾದಾರಿಕೆ ನಿರ್ವಹಣೆಯನ್ನು ತೆರೆಯಲು ವಿಫಲವಾಗಿದೆ.", + "noMatchingProductsPlay": "Google Play ನಿಂದ ಹೊಂದಿಕೆಯಾಗುವ Kilo Pass ಉತ್ಪನ್ನಗಳು ಯಾವುವೂ ಹಿಂತಿರುಗಿಸಲಾಗಿಲ್ಲ.", + "opensPlayManagement": "Google Play ಚಂದಾದಾರಿಕೆ ನಿರ್ವಹಣೆಯನ್ನು ತೆರೆಯುತ್ತದೆ.", + "otherAccountCopyPlay": "ಈ Google Play ಖಾತೆಯಲ್ಲಿನ Kilo Pass ಬೇರೆ Kilo ಖಾತೆಗೆ ಸೇರಿದೆ. ಅದನ್ನು ನಿರ್ವಹಿಸಲು ಆ Kilo ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.", + "productsCouldNotLoadPlay": "Google Play ನಿಂದ Kilo Pass ಉತ್ಪನ್ನಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.", + "productsUnavailablePlay": "Google Play ಉತ್ಪನ್ನಗಳು ಲಭ್ಯವಿಲ್ಲ", + "purchaseDifferentAccountPlay": "ಈ Google Play ಖರೀದಿಯು ನಿಮ್ಮ Kilo ಖಾತೆಗೆ ಲಿಂಕ್ ಆಗಿಲ್ಲ. ಖರೀದಿಗೆ ಬಳಸಿದ Google ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ, ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.", + "purchaseMissingOfferToken": "Google Play ಖರೀದಿಯಲ್ಲಿ ಆಫರ್ ಟೋಕನ್ ಇಲ್ಲ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.", + "purchaseMissingPurchaseToken": "Google Play ಖರೀದಿಯು ಖರೀದಿ ಟೋಕನ್ ಅನ್ನು ಒಳಗೊಂಡಿರಲಿಲ್ಲ.", + "purchaseOwnedByAnotherAccountPlay": "ಈ Google Play ಖಾತೆಯಲ್ಲಿನ Kilo Pass ಬೇರೆ Kilo ಖಾತೆಗೆ ಸೇರಿದೆ.", + "purchaseStartFailedPlay": "Google Play ಖರೀದಿ ಪ್ರಾರಂಭಿಸಲು ವಿಫಲವಾಗಿದೆ." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ko.json b/apps/mobile/src/i18n/locales/ko.json index fb9ae70717..5f5c9f310d 100644 --- a/apps/mobile/src/i18n/locales/ko.json +++ b/apps/mobile/src/i18n/locales/ko.json @@ -2396,7 +2396,20 @@ "purchaseOwnedByAnotherAccount": "이 Apple 계정의 Kilo Pass는 다른 Kilo 계정에 속합니다.", "couldNotConnectToAppStore": "App Store에 연결할 수 없습니다. 연결을 확인하고 다시 시도하세요.", "noMatchingProducts": "App Store에서 일치하는 Kilo Pass 상품이 반환되지 않았습니다.", - "purchaseMissingSignedTransaction": "App Store 구매에 서명된 거래 JWS가 포함되지 않았습니다." + "purchaseMissingSignedTransaction": "App Store 구매에 서명된 거래 JWS가 포함되지 않았습니다.", + "couldNotConnectToPlay": "Google Play에 연결하지 못했습니다. 연결을 확인하고 다시 시도하세요.", + "legalDisclosurePlay": "Kilo Pass는 자동 갱신되는 월간 구독입니다. 결제는 구매 확인 시 Google Play 계정으로 청구됩니다. 구독은 현재 기간 종료 24시간 전까지 취소하지 않으면 표시된 가격으로 매월 자동 갱신됩니다. Google Play 계정 설정에서 언제든지 관리하거나 취소할 수 있습니다.", + "manageFailedPlay": "Google Play 구독 관리를 열지 못했습니다.", + "noMatchingProductsPlay": "Google Play에서 일치하는 Kilo Pass 제품이 반환되지 않았습니다.", + "opensPlayManagement": "Google Play 구독 관리를 엽니다.", + "otherAccountCopyPlay": "이 Google Play 계정의 Kilo Pass는 다른 Kilo 계정에 속합니다. 해당 Kilo 계정으로 로그인하여 관리하세요.", + "productsCouldNotLoadPlay": "Google Play에서 Kilo Pass 제품을 불러올 수 없습니다.", + "productsUnavailablePlay": "Google Play 제품을 사용할 수 없음", + "purchaseDifferentAccountPlay": "이 Google Play 구매가 Kilo 계정에 연결되어 있지 않습니다. 구매에 사용한 Google 계정으로 로그인한 후 다시 시도하세요.", + "purchaseMissingOfferToken": "Google Play 구매에 오퍼 토큰이 없습니다. 다시 시도하세요.", + "purchaseMissingPurchaseToken": "Google Play 구매에 구매 토큰이 포함되지 않았습니다.", + "purchaseOwnedByAnotherAccountPlay": "이 Google Play 계정의 Kilo Pass는 다른 Kilo 계정에 속합니다.", + "purchaseStartFailedPlay": "Google Play 구매를 시작하지 못했습니다." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/lo.json b/apps/mobile/src/i18n/locales/lo.json index 490086b79b..3b92d4d8d9 100644 --- a/apps/mobile/src/i18n/locales/lo.json +++ b/apps/mobile/src/i18n/locales/lo.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass ໃນ Apple Account ນີ້ເປັນຂອງບັນຊີ Kilo ອື່ນ.", "couldNotConnectToAppStore": "ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບ App Store ໄດ້. ກວດເບິ່ງການເຊື່ອມຕໍ່ຂອງທ່ານ ແລະ ລອງອີກຄັ້ງ.", "noMatchingProducts": "App Store ບໍ່ໄດ້ສົ່ງຄືນສິນຄ້າ Kilo Pass ທີ່ກົງກັນ.", - "purchaseMissingSignedTransaction": "ການຊື້ App Store ບໍ່ໄດ້ລວມມີ JWS ລາຍການທີ່ມີລາຍເຊັນ." + "purchaseMissingSignedTransaction": "ການຊື້ App Store ບໍ່ໄດ້ລວມມີ JWS ລາຍການທີ່ມີລາຍເຊັນ.", + "couldNotConnectToPlay": "ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບ Google Play ໄດ້. ກະລຸນາກວດເບິ່ງການເຊື່ອມຕໍ່ຂອງທ່ານ ແລະ ລອງອີກຄັ້ງ.", + "legalDisclosurePlay": "Kilo Pass ເປັນການສະໝັກສະມາຊິກລາຍເດືອນທີ່ຕໍ່ອາຍຸອັດຕະໂນມັດ. ຄ່າຊຳລະຈະຖືກຫັກຈາກບັນຊີ Google Play ຂອງທ່ານເມື່ອຢືນຢັນການຊື້. ການສະໝັກສະມາຊິກຈະຕໍ່ອາຍຸອັດຕະໂນມັດທຸກເດືອນຕາມລາຄາທີ່ສະແດງ ເວັ້ນເສຍແຕ່ຖືກຍົກເລີກຢ່າງໜ້ອຍ 24 ຊົ່ວໂມງກ່ອນສິ້ນສຸດຮອບປັດຈຸບັນ. ຈັດການ ຫຼື ຍົກເລີກໄດ້ທຸກເວລາໃນການຕັ້ງຄ່າບັນຊີ Google Play ຂອງທ່ານ.", + "manageFailedPlay": "ບໍ່ສາມາດເປີດການຈັດການການສະໝັກສະມາຊິກ Google Play ໄດ້.", + "noMatchingProductsPlay": "Google Play ບໍ່ໄດ້ສົ່ງຄືນຜະລິດຕະພັນ Kilo Pass ທີ່ກົງກັນ.", + "opensPlayManagement": "ເປີດການຈັດການການສະໝັກສະມາຊິກ Google Play.", + "otherAccountCopyPlay": "Kilo Pass ໃນບັນຊີ Google Play ນີ້ເປັນຂອງບັນຊີ Kilo ອື່ນ. ເຂົ້າສູ່ລະບົບບັນຊີ Kilo ນັ້ນເພື່ອຈັດການມັນ.", + "productsCouldNotLoadPlay": "ບໍ່ສາມາດໂຫຼດຜະລິດຕະພັນ Kilo Pass ຈາກ Google Play ໄດ້.", + "productsUnavailablePlay": "ບໍ່ສາມາດໃຊ້ຜະລິດຕະພັນ Google Play ໄດ້", + "purchaseDifferentAccountPlay": "ການຊື້ Google Play ນີ້ບໍ່ກ່ຽວຂ້ອງກັບບັນຊີ Kilo ຂອງທ່ານ. ເຂົ້າສູ່ລະບົບບັນຊີ Google ທີ່ໃຊ້ສຳລັບການຊື້, ຈາກນັ້ນລອງອີກຄັ້ງ.", + "purchaseMissingOfferToken": "ການຊື້ Google Play ຂາດ token ຂໍ້ສະເໜີ. ລອງອີກຄັ້ງ.", + "purchaseMissingPurchaseToken": "ການຊື້ Google Play ບໍ່ລວມມີ token ການຊື້.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass ໃນບັນຊີ Google Play ນີ້ເປັນຂອງບັນຊີ Kilo ອື່ນ.", + "purchaseStartFailedPlay": "ບໍ່ສາມາດເລີ່ມການຊື້ Google Play ໄດ້." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/lt.json b/apps/mobile/src/i18n/locales/lt.json index 537dbc5037..d0e2484e72 100644 --- a/apps/mobile/src/i18n/locales/lt.json +++ b/apps/mobile/src/i18n/locales/lt.json @@ -2890,7 +2890,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass šioje Apple paskyroje priklauso kitai Kilo paskyrai.", "couldNotConnectToAppStore": "Nepavyko prisijungti prie App Store. Patikrinkite ryšį ir bandykite dar kartą.", "noMatchingProducts": "App Store negrąžino jokių atitinkančių Kilo Pass produktų.", - "purchaseMissingSignedTransaction": "App Store pirkinys neapėmė pasirašytos operacijos JWS." + "purchaseMissingSignedTransaction": "App Store pirkinys neapėmė pasirašytos operacijos JWS.", + "couldNotConnectToPlay": "Nepavyko prisijungti prie Google Play. Patikrinkite ryšį ir bandykite dar kartą.", + "legalDisclosurePlay": "„Kilo Pass“ yra automatiškai atnaujinama mėnesinė prenumerata. Mokėjimas nuskaitomas iš jūsų „Google Play“ paskyros patvirtinus pirkimą. Prenumeratos atnaujinamos automatiškai kiekvieną mėnesį nurodyta kaina, nebent atšauksite ne vėliau kaip likus 24 valandoms iki einamojo laikotarpio pabaigos. Tvarkykite arba atšaukite bet kada „Google Play“ paskyros nustatymuose.", + "manageFailedPlay": "Nepavyko atidaryti Google Play prenumeratos valdymo.", + "noMatchingProductsPlay": "Google Play negrąžino jokių atitinkančių Kilo Pass produktų.", + "opensPlayManagement": "Atidaro Google Play prenumeratos valdymą.", + "otherAccountCopyPlay": "Kilo Pass šioje Google Play paskyroje priklauso kitai Kilo paskyrai. Prisijunkite prie tos Kilo paskyros, kad ją valdytumėte.", + "productsCouldNotLoadPlay": "Nepavyko įkelti Kilo Pass produktų iš Google Play.", + "productsUnavailablePlay": "Google Play produktai neprieinami", + "purchaseDifferentAccountPlay": "Šis Google Play pirkinys nesusietas su jūsų Kilo paskyra. Prisijunkite prie Google paskyros, naudotos pirkinį atlikti, tada bandykite dar kartą.", + "purchaseMissingOfferToken": "Google Play pirkinys neturi pasiūlymo ženklo. Bandykite dar kartą.", + "purchaseMissingPurchaseToken": "Google Play pirkinys neapėmė pirkimo ženklo.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass šioje Google Play paskyroje priklauso kitai Kilo paskyrai.", + "purchaseStartFailedPlay": "Nepavyko pradėti Google Play pirkinio." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/lv.json b/apps/mobile/src/i18n/locales/lv.json index 61ea44ec27..15fb0c95b7 100644 --- a/apps/mobile/src/i18n/locales/lv.json +++ b/apps/mobile/src/i18n/locales/lv.json @@ -2870,7 +2870,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass šajā Apple kontā pieder citam Kilo kontam.", "couldNotConnectToAppStore": "Neizdevās savienoties ar App Store. Pārbaudiet savienojumu un mēģiniet vēlreiz.", "noMatchingProducts": "App Store neatgrieza atbilstošus Kilo Pass produktus.", - "purchaseMissingSignedTransaction": "App Store pirkums neietvēra parakstītu darījuma JWS." + "purchaseMissingSignedTransaction": "App Store pirkums neietvēra parakstītu darījuma JWS.", + "couldNotConnectToPlay": "Neizdevās savienoties ar Google Play. Pārbaudiet savienojumu un mēģiniet vēlreiz.", + "legalDisclosurePlay": "Kilo Pass ir automātiski atjaunojams mēneša abonements. Maksājums tiek iekasēts no jūsu Google Play konta pirkuma apstiprināšanas brīdī. Abonements katru mēnesi atjaunojas automātiski par norādīto cenu, ja vien tas netiek atcelts vismaz 24 stundas pirms pašreizējā perioda beigām. Pārvaldiet vai atceliet to jebkurā laikā sava Google Play konta iestatījumos.", + "manageFailedPlay": "Neizdevās atvērt Google Play abonementu pārvaldību.", + "noMatchingProductsPlay": "Google Play neatgrieza atbilstošus Kilo Pass produktus.", + "opensPlayManagement": "Atver Google Play abonementu pārvaldību.", + "otherAccountCopyPlay": "Kilo Pass šajā Google Play kontā pieder citam Kilo kontam. Piesakieties tajā Kilo kontā, lai to pārvaldītu.", + "productsCouldNotLoadPlay": "Kilo Pass produktus nevarēja ielādēt no Google Play.", + "productsUnavailablePlay": "Google Play produkti nav pieejami", + "purchaseDifferentAccountPlay": "Šis Google Play pirkums nav saistīts ar jūsu Kilo kontu. Pierakstieties ar Google kontu, kas tika izmantots pirkumam, un mēģiniet vēlreiz.", + "purchaseMissingOfferToken": "Google Play pirkumam trūkst piedāvājuma marķiera. Mēģiniet vēlreiz.", + "purchaseMissingPurchaseToken": "Google Play pirkums neietvēra pirkuma marķieri.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass šajā Google Play kontā pieder citam Kilo kontam.", + "purchaseStartFailedPlay": "Neizdevās sākt Google Play pirkumu." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/mg.json b/apps/mobile/src/i18n/locales/mg.json index 6f3b75c1cd..be676c95f6 100644 --- a/apps/mobile/src/i18n/locales/mg.json +++ b/apps/mobile/src/i18n/locales/mg.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Ny Kilo Pass amin'ity Apple Account ity dia an'ny kaonty Kilo hafa.", "couldNotConnectToAppStore": "Tsy afaka nifandray tamin'ny App Store. Jereo ny fifandraisanao ary andramana indray.", "noMatchingProducts": "Tsy niverina avy amin'ny App Store ny vokatra Kilo Pass mifanaraka.", - "purchaseMissingSignedTransaction": "Tsy nampidirina tamin'ny fividianana App Store ny JWS transaction sonia." + "purchaseMissingSignedTransaction": "Tsy nampidirina tamin'ny fividianana App Store ny JWS transaction sonia.", + "couldNotConnectToPlay": "Tsy afaka nifandray tamin'ny Google Play. Jereo ny fifandraisanao ary andramo indray.", + "legalDisclosurePlay": "Kilo Pass dia famandrihana isam-bolana azo havaozina ho azy. Alaina amin'ny kaonty Google Play anao ny fandoavam-bola rehefa hamafisina ny fividianana. Havaozina ho azy ny famandrihana isam-bolana amin'ny vidiny aseho raha tsy foanana 24 ora farafahakeliny alohan'ny fiafaran'ny fe-potoana ankehitriny. Tantano na foano isaky ny te ianao amin'ny fikandrana kaonty Google Play anao.", + "manageFailedPlay": "Tsy nahomby ny fanokafana ny fitantanana famandrihana Google Play.", + "noMatchingProductsPlay": "Tsy niverina avy amin'ny Google Play ny vokatra Kilo Pass mifanaraka.", + "opensPlayManagement": "Misokatra ny fitantanana famandrihana Google Play.", + "otherAccountCopyPlay": "Ny Kilo Pass amin'ity kaonty Google Play ity dia an'ny kaonty Kilo hafa. Midira amin'izany kaonty Kilo izany raha hitantana azy.", + "productsCouldNotLoadPlay": "Tsy afaka nampidirina avy amin'ny Google Play ny vokatra Kilo Pass.", + "productsUnavailablePlay": "Tsy misy ny vokatra Google Play", + "purchaseDifferentAccountPlay": "Ity fividianana Google Play ity dia tsy mifandray amin'ny kaonty Kilo anao. Midira amin'ny kaonty Google nampiasaina tamin'ny fividianana, avy eo andramo indray.", + "purchaseMissingOfferToken": "Tsy misy ny offer token amin'ny fividianana Google Play. Andramo indray.", + "purchaseMissingPurchaseToken": "Tsy nampidirina ny purchase token tamin'ny fividianana Google Play.", + "purchaseOwnedByAnotherAccountPlay": "Ny Kilo Pass amin'ity kaonty Google Play ity dia an'ny kaonty Kilo hafa.", + "purchaseStartFailedPlay": "Tsy nahomby ny fanombohana ny fividianana Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/mi.json b/apps/mobile/src/i18n/locales/mi.json index b152f2ed7e..eb7d9f9660 100644 --- a/apps/mobile/src/i18n/locales/mi.json +++ b/apps/mobile/src/i18n/locales/mi.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Ko te Kilo Pass o tēnei Pūkete Apple nō tētahi atu pūkete Kilo.", "couldNotConnectToAppStore": "Kāore i taea te hono ki te App Store. Tirohia tō hononga, whakamātau anō.", "noMatchingProducts": "Kāore he hua Kilo Pass i hoki mai i te App Store e ōrite ana.", - "purchaseMissingSignedTransaction": "Kāore i whakauruhia he JWS tauwhitinga kua hainatia ki te hokonga App Store." + "purchaseMissingSignedTransaction": "Kāore i whakauruhia he JWS tauwhitinga kua hainatia ki te hokonga App Store.", + "couldNotConnectToPlay": "Kāore i taea te hono ki Google Play. Tirohia tō hononga, whakamātau anō.", + "legalDisclosurePlay": "He ohinga ā-marama e hoko aunoatia ana a Kilo Pass. Ka utua te utu ki tō pūkete Google Play i te whakaaetanga o te hoko. Ka whakahoutia aunoatia ngā ohinga ia marama ki te utu e whakaaturia ana ki te kore e whakakorengia kia 24 hāora i mua i te mutunga o te wā o nāianei. Whakahaerehia, whakakorea rānei i ngā wā katoa i roto i tō tautuhinga pūkete Google Play.", + "manageFailedPlay": "I rahua te whakatuwhera i te whakahaere ohaurunga Google Play.", + "noMatchingProductsPlay": "Kāore he hua Kilo Pass i hoki mai i Google Play e ōrite ana.", + "opensPlayManagement": "Ka whakatuwhera i te whakahaere ohaurunga Google Play.", + "otherAccountCopyPlay": "Ko te Kilo Pass o tēnei pūkete Google Play nō tētahi atu pūkete Kilo. Whakauru ki taua pūkete Kilo kia whakahaere.", + "productsCouldNotLoadPlay": "Kāore i taea te uta ngā hua Kilo Pass mai i Google Play.", + "productsUnavailablePlay": "Kāore e wātea ana ngā hua Google Play", + "purchaseDifferentAccountPlay": "Kāore tēnei hokonga Google Play i hono ki tō pūkete Kilo. Takiuru ki te pūkete Google i whakamahia mō te hokonga, kātahi ka whakamātau anō.", + "purchaseMissingOfferToken": "Kāore he tohu tuku i te hokonga Google Play. Whakamātau anō.", + "purchaseMissingPurchaseToken": "Kāore i whakauruhia he tohu hokonga ki te hokonga Google Play.", + "purchaseOwnedByAnotherAccountPlay": "Ko te Kilo Pass o tēnei pūkete Google Play nō tētahi atu pūkete Kilo.", + "purchaseStartFailedPlay": "I rahua te tīmata i te hokonga Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/mk.json b/apps/mobile/src/i18n/locales/mk.json index c1bcce8e66..96fd8d4d52 100644 --- a/apps/mobile/src/i18n/locales/mk.json +++ b/apps/mobile/src/i18n/locales/mk.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass-от на оваа Apple сметка припаѓа на друга Kilo сметка.", "couldNotConnectToAppStore": "Не можеше да се поврзе со App Store. Проверете ја вашата врска и обидете се повторно.", "noMatchingProducts": "App Store не врати соодветни Kilo Pass производи.", - "purchaseMissingSignedTransaction": "Купувањето од App Store не вклучуваше потпишана трансакциска JWS." + "purchaseMissingSignedTransaction": "Купувањето од App Store не вклучуваше потпишана трансакциска JWS.", + "couldNotConnectToPlay": "Не можеше да се поврзе со Google Play. Проверете ја вашата врска и обидете се повторно.", + "legalDisclosurePlay": "Kilo Pass е автоматски обновлива месечна претплата. Плаќањето се наплаќа на вашата Google Play сметка при потврдување на купувањето. Претплатите автоматски се обновуваат секој месец по прикажаната цена, освен ако не се откажат најмалку 24 часа пред крајот на тековниот период. Управувајте или откажете во секое време во поставките на вашата Google Play сметка.", + "manageFailedPlay": "Не успеав да отворам управување со претплатата во Google Play.", + "noMatchingProductsPlay": "Google Play не врати соодветни Kilo Pass производи.", + "opensPlayManagement": "Отвора управување со претплатата во Google Play.", + "otherAccountCopyPlay": "Kilo Pass-от на оваа Google Play сметка припаѓа на друга Kilo сметка. Најавете се на таа Kilo сметка за да ја управувате.", + "productsCouldNotLoadPlay": "Kilo Pass производите не можеа да се вчитаат од Google Play.", + "productsUnavailablePlay": "Производите од Google Play се недостапни", + "purchaseDifferentAccountPlay": "Ова купување од Google Play не е поврзано со вашата Kilo сметка. Најавете се на Google сметката користена за купувањето, па обидете се повторно.", + "purchaseMissingOfferToken": "Купувањето од Google Play нема токен за понуда. Обидете се повторно.", + "purchaseMissingPurchaseToken": "Купувањето од Google Play не вклучи токен за купување.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass-от на оваа Google Play сметка припаѓа на друга Kilo сметка.", + "purchaseStartFailedPlay": "Не успеа започнувањето на купување од Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ml.json b/apps/mobile/src/i18n/locales/ml.json index cfdec0465c..e6b3052fe8 100644 --- a/apps/mobile/src/i18n/locales/ml.json +++ b/apps/mobile/src/i18n/locales/ml.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "ഈ Apple അക്കൗണ്ടിലെ Kilo Pass മറ്റൊരു Kilo അക്കൗണ്ടിന്റേതാണ്.", "couldNotConnectToAppStore": "App Store-ലേക്ക് കണക്റ്റുചെയ്യാൻ കഴിഞ്ഞില്ല. നിങ്ങളുടെ കണക്ഷൻ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.", "noMatchingProducts": "App Store-ൽ നിന്ന് പൊരുത്തപ്പെടുന്ന Kilo Pass ഉൽപ്പന്നങ്ങളൊന്നും ലഭിച്ചില്ല.", - "purchaseMissingSignedTransaction": "App Store വാങ്ങലിൽ ഒപ്പിട്ട ഇടപാട് JWS ഉൾപ്പെടുത്തിയിട്ടില്ല." + "purchaseMissingSignedTransaction": "App Store വാങ്ങലിൽ ഒപ്പിട്ട ഇടപാട് JWS ഉൾപ്പെടുത്തിയിട്ടില്ല.", + "couldNotConnectToPlay": "Google Play കണക്ട് ചെയ്യാൻ കഴിഞ്ഞില്ല. നിങ്ങളുടെ കണക്ഷൻ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.", + "legalDisclosurePlay": "Kilo Pass എന്നത് ഓട്ടോ-റിന്യൂവബിൾ മാസിക സബ്സ്ക്രിപ്ഷനാണ്. വാങ്ങൽ സ്ഥിരീകരിക്കുമ്പോൾ നിങ്ങളുടെ Google Play അക്കൗണ്ടിൽ നിന്ന് പേയ്മെന്റ് ഈടാക്കും. നിലവിലെ കാലയളവ് അവസാനിക്കുന്നതിന് കുറഞ്ഞത് 24 മണിക്കൂർ മുമ്പ് റദ്ദാക്കിയില്ലെങ്കിൽ, സബ്സ്ക്രിപ്ഷനുകൾ എല്ലാ മാസവും കാണിച്ചിരിക്കുന്ന വിലയ്ക്ക് സ്വയം പുതുക്കുന്നു. നിങ്ങളുടെ Google Play അക്കൗണ്ട് ക്രമീകരണങ്ങളിൽ എപ്പോൾ വേണമെങ്കിലും കൈകാര്യം ചെയ്യുക അല്ലെങ്കിൽ റദ്ദാക്കുക.", + "manageFailedPlay": "Google Play സബ്സ്ക്രിപ്ഷൻ മാനേജ്മെന്റ് തുറക്കാൻ പരാജയപ്പെട്ടു.", + "noMatchingProductsPlay": "Google Play-ൽ നിന്ന് പൊരുത്തപ്പെടുന്ന Kilo Pass ഉൽപ്പന്നങ്ങൾ ഒന്നും ലഭിച്ചില്ല.", + "opensPlayManagement": "Google Play സബ്സ്ക്രിപ്ഷൻ മാനേജ്മെന്റ് തുറക്കുന്നു.", + "otherAccountCopyPlay": "ഈ Google Play അക്കൗണ്ടിലെ Kilo Pass മറ്റൊരു Kilo അക്കൗണ്ടിന്റേതാണ്. അത് കൈകാര്യം ചെയ്യാൻ ആ Kilo അക്കൗണ്ടിൽ സൈൻ ഇൻ ചെയ്യുക.", + "productsCouldNotLoadPlay": "Google Play-ൽ നിന്ന് Kilo Pass ഉൽപ്പന്നങ്ങൾ ലോഡ് ചെയ്യാനായില്ല.", + "productsUnavailablePlay": "Google Play ഉൽപ്പന്നങ്ങൾ ലഭ്യമല്ല", + "purchaseDifferentAccountPlay": "ഈ Google Play വാങ്ങൽ നിങ്ങളുടെ Kilo അക്കൗണ്ടുമായി ലിങ്ക് ചെയ്തിട്ടില്ല. വാങ്ങലിന് ഉപയോഗിച്ച Google അക്കൗണ്ടിൽ സൈൻ ഇൻ ചെയ്ത് വീണ്ടും ശ്രമിക്കുക.", + "purchaseMissingOfferToken": "Google Play വാങ്ങലിൽ ഓഫർ ടോക്കൺ ഇല്ല. വീണ്ടും ശ്രമിക്കുക.", + "purchaseMissingPurchaseToken": "Google Play വാങ്ങലിൽ പർച്ചേസ് ടോക്കൺ ഉൾപ്പെട്ടില്ല.", + "purchaseOwnedByAnotherAccountPlay": "ഈ Google Play അക്കൗണ്ടിലെ Kilo Pass മറ്റൊരു Kilo അക്കൗണ്ടിന്റേതാണ്.", + "purchaseStartFailedPlay": "Google Play വാങ്ങൽ ആരംഭിക്കാൻ പരാജയപ്പെട്ടു." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/mn.json b/apps/mobile/src/i18n/locales/mn.json index d56690cf77..ed3dd90267 100644 --- a/apps/mobile/src/i18n/locales/mn.json +++ b/apps/mobile/src/i18n/locales/mn.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Энэ Apple Account дээрх Kilo Pass нь өөр Kilo бүртгэлд харьяалагдана.", "couldNotConnectToAppStore": "App Store-д холбогдох боломжгүй. Холболтоо шалгаад дахин оролдоно уу.", "noMatchingProducts": "App Store тохирох Kilo Pass бүтээгдэхүүн буцаасангүй.", - "purchaseMissingSignedTransaction": "App Store худалдан авалтад гарын үсэгтэй transaction JWS ороогүй байна." + "purchaseMissingSignedTransaction": "App Store худалдан авалтад гарын үсэгтэй transaction JWS ороогүй байна.", + "couldNotConnectToPlay": "Google Play-д холбогдох боломжгүй. Холболтоо шалгаад дахин оролдоно уу.", + "legalDisclosurePlay": "Kilo Pass нь автоматаар шинэчлэгддэг сарын захиалга юм. Худалдан авалтыг баталгаажуулснаар төлбөрийг таны Google Play бүртгэлээс авна. Захиалга нь одоогийн хугацаа дуусахаас дор хаяж 24 цагийн өмнө цуцлахгүй бол харуулсан үнээр сар бүр автоматаар шинэчлэгддэг. Google Play бүртгэлийн тохиргооноос хүссэн үедээ удирдах эсвэл цуцлах боломжтой.", + "manageFailedPlay": "Google Play захиалгын удирдлагыг нээж чадсангүй.", + "noMatchingProductsPlay": "Google Play тохирох Kilo Pass бүтээгдэхүүн буцаасангүй.", + "opensPlayManagement": "Google Play захиалгын удирдлагыг нээнэ.", + "otherAccountCopyPlay": "Энэ Google Play бүртгэл дээрх Kilo Pass нь өөр Kilo бүртгэлд харьяалагдана. Удирдахын тулд тухайн Kilo бүртгэлдээ нэвтэрнэ үү.", + "productsCouldNotLoadPlay": "Kilo Pass бүтээгдэхүүнийг Google Play-оос ачааллах боломжгүй.", + "productsUnavailablePlay": "Google Play бүтээгдэхүүн боломжгүй", + "purchaseDifferentAccountPlay": "Энэ Google Play худалдан авалт таны Kilo бүртгэлтэй холбогдоогүй байна. Худалдан авалтад ашигласан Google бүртгэлд нэвтэрч, дахин оролдоно уу.", + "purchaseMissingOfferToken": "Google Play худалдан авалтад offer token ороогүй байна. Дахин оролдоно уу.", + "purchaseMissingPurchaseToken": "Google Play худалдан авалтад purchase token ороогүй байна.", + "purchaseOwnedByAnotherAccountPlay": "Энэ Google Play бүртгэл дээрх Kilo Pass нь өөр Kilo бүртгэлд харьяалагдана.", + "purchaseStartFailedPlay": "Google Play худалдан авалтыг эхлүүлж чадсангүй." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/mr.json b/apps/mobile/src/i18n/locales/mr.json index 65774f4ede..b35da00db8 100644 --- a/apps/mobile/src/i18n/locales/mr.json +++ b/apps/mobile/src/i18n/locales/mr.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "या Apple खात्यावरील Kilo Pass वेगळ्या Kilo खात्याशी संबंधित आहे.", "couldNotConnectToAppStore": "App Store शी कनेक्ट होता आले नाही. तुमचे कनेक्शन तपासा आणि पुन्हा प्रयत्न करा.", "noMatchingProducts": "App Store ने जुळणारी Kilo Pass उत्पादने परत केली नाहीत.", - "purchaseMissingSignedTransaction": "App Store खरेदीत स्वाक्षरी केलेले व्यवहार JWS समाविष्ट नव्हते." + "purchaseMissingSignedTransaction": "App Store खरेदीत स्वाक्षरी केलेले व्यवहार JWS समाविष्ट नव्हते.", + "couldNotConnectToPlay": "Google Play ला कनेक्ट होऊ शकले नाही. तुमचे कनेक्शन तपासा आणि पुन्हा प्रयत्न करा.", + "legalDisclosurePlay": "Kilo Pass हे स्वयं-नूतनीकरण करणारे मासिक सदस्यत्व आहे. खरेदीच्या पुष्टीकरणावर तुमच्या Google Play खात्यावरून पेमेंट घेतले जाते. सध्याच्या कालावधीच्या समाप्तीच्या किमान 24 तास आधी रद्द केल्याशिवाय दर्शविलेल्या किमतीवर सदस्यत्वे दर महिन्याला स्वयंचलितपणे नूतनीकरण होतात. तुमच्या Google Play खात्याच्या सेटिंग्जमध्ये कधीही व्यवस्थापित किंवा रद्द करा.", + "manageFailedPlay": "Google Play सदस्यत्व व्यवस्थापन उघडण्यात अयशस्वी.", + "noMatchingProductsPlay": "Google Play कडून जुळणारी Kilo Pass उत्पादने परत आली नाहीत.", + "opensPlayManagement": "Google Play सदस्यत्व व्यवस्थापन उघडते.", + "otherAccountCopyPlay": "या Google Play खात्यावरील Kilo Pass वेगळ्या Kilo खात्याचे आहे. ते व्यवस्थापित करण्यासाठी त्या Kilo खात्यावर साइन इन करा.", + "productsCouldNotLoadPlay": "Google Play वरून Kilo Pass उत्पादने लोड करता आली नाहीत.", + "productsUnavailablePlay": "Google Play उत्पादने अनुपलब्ध", + "purchaseDifferentAccountPlay": "ही Google Play खरेदी तुमच्या Kilo खात्याशी लिंक केलेली नाही. खरेदीसाठी वापरलेल्या Google खात्यावर साइन इन करा, नंतर पुन्हा प्रयत्न करा.", + "purchaseMissingOfferToken": "Google Play खरेदीमध्ये ऑफर टोकन नाही. पुन्हा प्रयत्न करा.", + "purchaseMissingPurchaseToken": "Google Play खरेदीमध्ये खरेदी टोकन समाविष्ट नव्हते.", + "purchaseOwnedByAnotherAccountPlay": "या Google Play खात्यावरील Kilo Pass वेगळ्या Kilo खात्याचे आहे.", + "purchaseStartFailedPlay": "Google Play खरेदी सुरू करण्यात अयशस्वी." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ms.json b/apps/mobile/src/i18n/locales/ms.json index 20ac0d342a..8e3285f95e 100644 --- a/apps/mobile/src/i18n/locales/ms.json +++ b/apps/mobile/src/i18n/locales/ms.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass pada Akaun Apple ini kepunyaan akaun Kilo yang berbeza.", "couldNotConnectToAppStore": "Tidak dapat menyambung ke App Store. Semak sambungan anda dan cuba lagi.", "noMatchingProducts": "App Store tidak mengembalikan produk Kilo Pass yang sepadan.", - "purchaseMissingSignedTransaction": "Pembelian App Store tidak menyertakan transaksi JWS yang ditandatangani." + "purchaseMissingSignedTransaction": "Pembelian App Store tidak menyertakan transaksi JWS yang ditandatangani.", + "couldNotConnectToPlay": "Tidak dapat menyambung ke Google Play. Semak sambungan anda dan cuba lagi.", + "legalDisclosurePlay": "Kilo Pass ialah langganan bulanan auto-boleh diperbaharui. Bayaran dicaj ke akaun Google Play anda semasa pengesahan pembelian. Langganan diperbaharui secara automatik setiap bulan pada harga yang dipaparkan melainkan dibatalkan sekurang-kurangnya 24 jam sebelum tamat tempoh semasa. Urus atau batalkan pada bila-bila masa dalam tetapan akaun Google Play anda.", + "manageFailedPlay": "Gagal membuka pengurusan langganan Google Play.", + "noMatchingProductsPlay": "Google Play tidak mengembalikan produk Kilo Pass yang sepadan.", + "opensPlayManagement": "Membuka pengurusan langganan Google Play.", + "otherAccountCopyPlay": "Kilo Pass pada Akaun Google Play ini kepunyaan akaun Kilo yang berbeza. Log masuk ke akaun Kilo itu untuk menguruskannya.", + "productsCouldNotLoadPlay": "Produk Kilo Pass tidak dapat dimuatkan daripada Google Play.", + "productsUnavailablePlay": "Produk Google Play tidak tersedia", + "purchaseDifferentAccountPlay": "Pembelian Google Play ini tidak dipautkan ke akaun Kilo anda. Log masuk ke Akaun Google yang digunakan untuk pembelian, kemudian cuba lagi.", + "purchaseMissingOfferToken": "Pembelian Google Play tidak menyertakan token tawaran. Cuba lagi.", + "purchaseMissingPurchaseToken": "Pembelian Google Play tidak menyertakan token pembelian.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass pada Akaun Google Play ini kepunyaan akaun Kilo yang berbeza.", + "purchaseStartFailedPlay": "Gagal memulakan pembelian Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/mt.json b/apps/mobile/src/i18n/locales/mt.json index 21e0f4d68a..f436c4291b 100644 --- a/apps/mobile/src/i18n/locales/mt.json +++ b/apps/mobile/src/i18n/locales/mt.json @@ -2910,7 +2910,20 @@ "purchaseOwnedByAnotherAccount": "Il-Kilo Pass fuq dan l-Apple Account jappartjeni għal kont ieħor ta' Kilo.", "couldNotConnectToAppStore": "Ma setgħetx tikkonnettja mal-App Store. Iċċekkja l-konnessjoni tiegħek u erġa' pprova.", "noMatchingProducts": "L-ebda prodott ta' Kilo Pass li jaqbel ma rritorna l-App Store.", - "purchaseMissingSignedTransaction": "Ix-xiri tal-App Store ma kienx jinkludi JWS ta' transazzjoni ffirmata." + "purchaseMissingSignedTransaction": "Ix-xiri tal-App Store ma kienx jinkludi JWS ta' transazzjoni ffirmata.", + "couldNotConnectToPlay": "Ma setax jikkonnettja ma' Google Play. Iċċekkja l-konnessjoni tiegħek u erġa' ipprova.", + "legalDisclosurePlay": "Kilo Pass huwa abbonament mensili li jiġġedded awtomatikament. Il-ħlas jitħallas mill-kont tiegħek ta' Google Play fil-konferma tax-xiri. L-abbonamenti jiġġeddu awtomatikament kull xahar bil-prezz muri sakemm ma jitħassrux mill-inqas 24 siegħa qabel it-tmiem tal-perjodu attwali. Immaniġġja jew ikkanċella fi kwalunkwe ħin fis-settings tal-kont ta' Google Play tiegħek.", + "manageFailedPlay": "Ma fetaħx il-ġestjoni tas-sottoskrizzjonijiet ta' Google Play.", + "noMatchingProductsPlay": "L-ebda prodott ta' Kilo Pass li jaqbel ma rritorna Google Play.", + "opensPlayManagement": "Jiftaħ il-ġestjoni tas-sottoskrizzjonijiet ta' Google Play.", + "otherAccountCopyPlay": "Il-Kilo Pass fuq dan il-kont ta' Google Play jappartjeni għal kont ieħor ta' Kilo. Idħol f'dak il-kont ta' Kilo biex timmaniġġjah.", + "productsCouldNotLoadPlay": "Il-prodotti ta' Kilo Pass ma setgħux jitgħabbew minn Google Play.", + "productsUnavailablePlay": "Il-prodotti ta' Google Play mhux disponibbli", + "purchaseDifferentAccountPlay": "Dan ix-xiri ta' Google Play mhux marbut mal-kont tiegħek ta' Kilo. Idħol fil-kont ta' Google użat għax-xiri, imbagħad erġa' ipprova.", + "purchaseMissingOfferToken": "Ix-xiri ta' Google Play m'għandux token ta' offerta. Erġa' ipprova.", + "purchaseMissingPurchaseToken": "Ix-xiri ta' Google Play ma kienx jinkludi token tax-xiri.", + "purchaseOwnedByAnotherAccountPlay": "Il-Kilo Pass fuq dan il-kont ta' Google Play jappartjeni għal kont ieħor ta' Kilo.", + "purchaseStartFailedPlay": "Ma bediex ix-xiri ta' Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/my.json b/apps/mobile/src/i18n/locales/my.json index 287f3d491a..d29b9ba2ac 100644 --- a/apps/mobile/src/i18n/locales/my.json +++ b/apps/mobile/src/i18n/locales/my.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "ဤ Apple Account ရှိ Kilo Pass သည် အခြား Kilo အကောင့်တစ်ခုနှင့် သက်ဆိုင်သည်။", "couldNotConnectToAppStore": "App Store သို့ ချိတ်ဆက်၍မရပါ။ သင့်ချိတ်ဆက်မှုကို စစ်ပြီး ထပ်စမ်းကြည့်ပါ။", "noMatchingProducts": "App Store မှ ကိုက်ညီသော Kilo Pass ထုတ်ကုန်များ ပြန်ပို့ခြင်း မရှိပါ။", - "purchaseMissingSignedTransaction": "App Store ဝယ်ယူမှုတွင် လက်မှတ်ရေးထိုးထားသော ငွေပေးငွေယူ JWS မပါဝင်ပါ။" + "purchaseMissingSignedTransaction": "App Store ဝယ်ယူမှုတွင် လက်မှတ်ရေးထိုးထားသော ငွေပေးငွေယူ JWS မပါဝင်ပါ။", + "couldNotConnectToPlay": "Google Play သို့ ချိတ်ဆက်၍မရပါ။ သင့်ချိတ်ဆက်မှုကို စစ်ပြီး ထပ်စမ်းကြည့်ပါ။", + "legalDisclosurePlay": "Kilo Pass သည် အလိုအလျောက် သက်တမ်းတိုးနိုင်သော လစဉ် စာရင်းသွင်းမှု တစ်ခု ဖြစ်သည်။ ဝယ်ယူမှုကို အတည်ပြုချိန်တွင် သင့် Google Play အကောင့်မှ ငွေကောက်ခံသည်။ လက်ရှိကာလမကုန်မီ အနည်းဆုံး ၂၄ နာရီကြိုတင် မဖျက်သိမ်းပါက စာရင်းသွင်းမှုများသည် ပြသထားသော ဈေးနှုန်းဖြင့် လစဉ် အလိုအလျောက် သက်တမ်းတိုးသည်။ သင့် Google Play အကောင့်ဆက်တင်များတွင် အချိန်မရွေး စီမံပါ သို့မဟုတ် ဖျက်သိမ်းပါ။", + "manageFailedPlay": "Google Play subscription စီမံခန့်ခွဲမှုကို မဖွင့်နိုင်ပါ။", + "noMatchingProductsPlay": "Google Play မှ ကိုက်ညီသော Kilo Pass ထုတ်ကုန်များ ပြန်ပို့ခြင်း မရှိပါ။", + "opensPlayManagement": "Google Play subscription စီမံခန့်ခွဲမှုကို ဖွင့်သည်။", + "otherAccountCopyPlay": "ဤ Google Play အကောင့်ရှိ Kilo Pass သည် အခြား Kilo အကောင့်တစ်ခုနှင့် သက်ဆိုင်သည်။ ၎င်းကို စီမံရန် ထို Kilo အကောင့်ဖြင့် ဝင်ပါ။", + "productsCouldNotLoadPlay": "Google Play မှ Kilo Pass ထုတ်ကုန်များကို မဖွင့်နိုင်ပါ။", + "productsUnavailablePlay": "Google Play ထုတ်ကုန်များ မရနိုင်ပါ", + "purchaseDifferentAccountPlay": "ဤ Google Play ဝယ်ယူမှုသည် သင့် Kilo အကောင့်နှင့် မချိတ်ဆက်ထားပါ။ ဝယ်ယူမှုအတွက် အသုံးပြုခဲ့သော Google အကောင့်ဖြင့် ဝင်ပြီး ထပ်ကြိုးစားပါ။", + "purchaseMissingOfferToken": "Google Play ဝယ်ယူမှုတွင် offer token မပါဝင်ပါ။ ထပ်ကြိုးစားပါ။", + "purchaseMissingPurchaseToken": "Google Play ဝယ်ယူမှုတွင် purchase token မပါဝင်ပါ။", + "purchaseOwnedByAnotherAccountPlay": "ဤ Google Play အကောင့်ရှိ Kilo Pass သည် အခြား Kilo အကောင့်တစ်ခုနှင့် သက်ဆိုင်သည်။", + "purchaseStartFailedPlay": "Google Play ဝယ်ယူမှု စတင်ရန် မအောင်မြင်ပါ။" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/nb.json b/apps/mobile/src/i18n/locales/nb.json index 5985a9b4cf..bf776c3385 100644 --- a/apps/mobile/src/i18n/locales/nb.json +++ b/apps/mobile/src/i18n/locales/nb.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass på denne Apple-kontoen tilhører en annen Kilo-konto.", "couldNotConnectToAppStore": "Kunne ikke koble til App Store. Sjekk tilkoblingen og prøv igjen.", "noMatchingProducts": "App Store returnerte ingen samsvarende Kilo Pass-produkter.", - "purchaseMissingSignedTransaction": "App Store-kjøpet inneholdt ikke en signert transaksjons-JWS." + "purchaseMissingSignedTransaction": "App Store-kjøpet inneholdt ikke en signert transaksjons-JWS.", + "couldNotConnectToPlay": "Kunne ikke koble til Google Play. Sjekk tilkoblingen og prøv igjen.", + "legalDisclosurePlay": "Kilo Pass er et automatisk fornybart månedsabonnement. Betaling belastes Google Play-kontoen din ved bekreftelse av kjøpet. Abonnementet fornyes automatisk hver måned til prisen som vises, med mindre det kanselleres minst 24 timer før slutten av gjeldende periode. Administrer eller kanseller når som helst i Google Play-kontoinnstillingene.", + "manageFailedPlay": "Kunne ikke åpne Google Play-abonnementsadministrasjonen.", + "noMatchingProductsPlay": "Google Play returnerte ingen samsvarende Kilo Pass-produkter.", + "opensPlayManagement": "Åpner Google Play-abonnementsadministrasjon.", + "otherAccountCopyPlay": "Kilo Pass på denne Google Play-kontoen tilhører en annen Kilo-konto. Logg inn på den Kilo-kontoen for å administrere den.", + "productsCouldNotLoadPlay": "Kilo Pass-produktene kunne ikke lastes fra Google Play.", + "productsUnavailablePlay": "Google Play-produkter utilgjengelig", + "purchaseDifferentAccountPlay": "Dette Google Play-kjøpet er ikke knyttet til Kilo-kontoen din. Logg inn på Google-kontoen som ble brukt til kjøpet, og prøv igjen.", + "purchaseMissingOfferToken": "Google Play-kjøpet mangler et offer token. Prøv igjen.", + "purchaseMissingPurchaseToken": "Google Play-kjøpet inneholdt ikke et purchase token.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass på denne Google Play-kontoen tilhører en annen Kilo-konto.", + "purchaseStartFailedPlay": "Kunne ikke starte Google Play-kjøpet." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ne.json b/apps/mobile/src/i18n/locales/ne.json index 48fb62facd..897639b453 100644 --- a/apps/mobile/src/i18n/locales/ne.json +++ b/apps/mobile/src/i18n/locales/ne.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "यो Apple खातामा रहेको Kilo Pass अर्को Kilo खातासँग सम्बन्धित छ।", "couldNotConnectToAppStore": "App Store मा जडान गर्न सकिएन। आफ्नो जडान जाँचेर फेरि प्रयास गर्नुहोस्।", "noMatchingProducts": "App Store बाट कुनै मिल्ने Kilo Pass उत्पादनहरू फर्काइएन।", - "purchaseMissingSignedTransaction": "App Store खरिदमा हस्ताक्षरित लेनदेन JWS समावेश थिएन।" + "purchaseMissingSignedTransaction": "App Store खरिदमा हस्ताक्षरित लेनदेन JWS समावेश थिएन।", + "couldNotConnectToPlay": "Google Play मा जडान गर्न सकिएन। आफ्नो जडान जाँचेर फेरि प्रयास गर्नुहोस्।", + "legalDisclosurePlay": "Kilo Pass एक स्वतः-नवीकरण हुने मासिक सदस्यता हो। खरिदको पुष्टि हुँदा भुक्तानी तपाईंको Google Play खातामा लिइन्छ। सदस्यताहरू अहिलेको अवधि समाप्त हुनुभन्दा कम्तिमा २४ घण्टा अघि रद्द नगरिएसम्म प्रत्येक महिना देखाइएको मूल्यमा स्वतः नवीकरण हुन्छन्। आफ्नो Google Play खाता सेटिङहरूमा कुनै पनि समय व्यवस्थापन वा रद्द गर्नुहोस्।", + "manageFailedPlay": "Google Play सदस्यता व्यवस्थापन खोल्न असफल भयो।", + "noMatchingProductsPlay": "Google Play बाट कुनै मिल्ने Kilo Pass उत्पादनहरू फर्काइएनन्।", + "opensPlayManagement": "Google Play सदस्यता व्यवस्थापन खोल्छ।", + "otherAccountCopyPlay": "यो Google Play खातामा रहेको Kilo Pass अर्को Kilo खातासँग सम्बन्धित छ। यसलाई व्यवस्थापन गर्न त्यो Kilo खातामा साइन इन गर्नुहोस्।", + "productsCouldNotLoadPlay": "Kilo Pass उत्पादनहरू Google Play बाट लोड गर्न सकिएन।", + "productsUnavailablePlay": "Google Play उत्पादनहरू अनुपलब्ध", + "purchaseDifferentAccountPlay": "यो Google Play खरिद तपाईंको Kilo खातासँग जोडिएको छैन। खरिदका लागि प्रयोग गरिएको Google खातामा साइन इन गर्नुहोस्, त्यसपछि फेरि प्रयास गर्नुहोस्।", + "purchaseMissingOfferToken": "Google Play खरिदमा अफर टोकन छैन। फेरि प्रयास गर्नुहोस्।", + "purchaseMissingPurchaseToken": "Google Play खरिदमा खरिद टोकन समावेश थिएन।", + "purchaseOwnedByAnotherAccountPlay": "यो Google Play खातामा रहेको Kilo Pass अर्को Kilo खातासँग सम्बन्धित छ।", + "purchaseStartFailedPlay": "Google Play खरिद सुरु गर्न असफल भयो।" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/nl.json b/apps/mobile/src/i18n/locales/nl.json index e9cae2f148..b03b1f06bb 100644 --- a/apps/mobile/src/i18n/locales/nl.json +++ b/apps/mobile/src/i18n/locales/nl.json @@ -2396,7 +2396,20 @@ "purchaseOwnedByAnotherAccount": "De Kilo Pass op dit Apple-account hoort bij een ander Kilo-account.", "couldNotConnectToAppStore": "Kan geen verbinding maken met de App Store. Controleer je verbinding en probeer het opnieuw.", "noMatchingProducts": "De App Store gaf geen overeenkomende Kilo Pass-producten terug.", - "purchaseMissingSignedTransaction": "De App Store-aankoop bevatte geen ondertekende transactie-JWS." + "purchaseMissingSignedTransaction": "De App Store-aankoop bevatte geen ondertekende transactie-JWS.", + "couldNotConnectToPlay": "Kan geen verbinding maken met Google Play. Controleer je verbinding en probeer het opnieuw.", + "legalDisclosurePlay": "Kilo Pass is een maandelijks abonnement dat automatisch wordt verlengd. De betaling wordt bij bevestiging van de aankoop in rekening gebracht op je Google Play-account. Abonnementen worden elke maand automatisch verlengd voor de weergegeven prijs, tenzij je ten minste 24 uur voor het einde van de huidige periode opzegt. Beheer of annuleer op elk moment in de accountinstellingen van Google Play.", + "manageFailedPlay": "Abonnementsbeheer van Google Play kon niet worden geopend.", + "noMatchingProductsPlay": "Google Play gaf geen overeenkomende Kilo Pass-producten terug.", + "opensPlayManagement": "Opent het abonnementsbeheer van Google Play.", + "otherAccountCopyPlay": "De Kilo Pass op dit Google Play-account hoort bij een ander Kilo-account. Meld je aan bij dat Kilo-account om het te beheren.", + "productsCouldNotLoadPlay": "Kilo Pass-producten konden niet uit Google Play worden geladen.", + "productsUnavailablePlay": "Google Play-producten niet beschikbaar", + "purchaseDifferentAccountPlay": "Deze Google Play-aankoop is niet gekoppeld aan je Kilo-account. Meld je aan bij het Google-account dat voor de aankoop is gebruikt en probeer het opnieuw.", + "purchaseMissingOfferToken": "Bij de Google Play-aankoop ontbreekt een aanbodtoken. Probeer opnieuw.", + "purchaseMissingPurchaseToken": "De Google Play-aankoop bevatte geen aankooptoken.", + "purchaseOwnedByAnotherAccountPlay": "De Kilo Pass op dit Google Play-account hoort bij een ander Kilo-account.", + "purchaseStartFailedPlay": "De Google Play-aankoop kon niet worden gestart." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/om.json b/apps/mobile/src/i18n/locales/om.json index 8524560857..6221356f4e 100644 --- a/apps/mobile/src/i18n/locales/om.json +++ b/apps/mobile/src/i18n/locales/om.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass akkaawuntii Apple kana irratti jiru akkaawuntii Kilo adda biraa keessaa.", "couldNotConnectToAppStore": "App Store waliin walqabachuu hin dandeenye. Walqabii kee ilaaliitii irra deebi'ii yaali.", "noMatchingProducts": "App Store bu'aa Kilo Pass waliin walmaddan hin deebise.", - "purchaseMissingSignedTransaction": "Bittaan App Store JWS daldalaa mallatteeffame hin qabu ture." + "purchaseMissingSignedTransaction": "Bittaan App Store JWS daldalaa mallatteeffame hin qabu ture.", + "couldNotConnectToPlay": "Google Play wajjin walitti qabamuu hin dandeenye. Walqabannaa kee sakatta'iitii deebi'ii yaali.", + "legalDisclosurePlay": "Kilo Pass dubbii ji'oottii ofumaan haara'u dha. Kaffaltiin akaawuntii Google Play keetti yeroo gurgurtaan mirkanaa'utti itti baafama. Dubbiiwwan ji'a ji'aatti gatii agarsiifameen ofumaan haara'u, yoo yeroo xiqqaate sa'aatii 24 osoo xumura yeroo ammaa hin ga'in dura dhaabamanii malee. Yeroo kamuu sirreeffama akaawuntii Google Play keetti bulchi ykn dhaabi.", + "manageFailedPlay": "Bulleessaa dubbii Google Play baneessuun hin milkoofne.", + "noMatchingProductsPlay": "Bu'aan Kilo Pass walsimatu Google Play irraa hin deebi'e.", + "opensPlayManagement": "Bulleessaa dubbii Google Play bana.", + "otherAccountCopyPlay": "Kilo Pass akaawuntii Google Play kana irratti jiru akaawuntii Kilo adda tokko kan ta'e dha. Itti bulchuuf akaawuntii Kilo sana seeni.", + "productsCouldNotLoadPlay": "Bu'aan Kilo Pass Google Play irraa baachuu hin dandeenye.", + "productsUnavailablePlay": "Bu'aan Google Play hin jiru", + "purchaseDifferentAccountPlay": "Gurgurri Google Play kun akaawuntii Kilo keetti hin hidhamne. Akaawuntii Google gurgurtaaf fayyadame sanatti seenii, sana booda deebi'ii yaali.", + "purchaseMissingOfferToken": "Gurgurri Google Play token kennaa tokko hin qabu. Deebi'ii yaali.", + "purchaseMissingPurchaseToken": "Gurgurri Google Play token gurgurtaa hin daballe.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass akaawuntii Google Play kana irratti jiru akaawuntii Kilo adda tokko kan ta'e dha.", + "purchaseStartFailedPlay": "Gurgurtaa Google Play jalqabuun hin milkoofne." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/or.json b/apps/mobile/src/i18n/locales/or.json index f653e783b1..7ea7d640f7 100644 --- a/apps/mobile/src/i18n/locales/or.json +++ b/apps/mobile/src/i18n/locales/or.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "ଏହି Apple ଆକାଉଣ୍ଟରେ ଥିବା Kilo Pass ଅନ୍ୟ ଏକ Kilo ଆକାଉଣ୍ଟର ଅଟେ।", "couldNotConnectToAppStore": "App Store ସହିତ ସଂଯୋଗ ହୋଇପାରିଲା ନାହିଁ। ଆପଣଙ୍କ ସଂଯୋଗ ଯାଞ୍ଚ କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।", "noMatchingProducts": "App Store ଦ୍ୱାରା କୌଣସି ମେଳ ଖାଉଥିବା Kilo Pass ଉତ୍ପାଦ ଫେରସ୍ତ କରାଯାଇ ନାହିଁ।", - "purchaseMissingSignedTransaction": "App Store କ୍ରୟରେ ଏକ ସ୍ୱାକ୍ଷରିତ ଲେଣଦେଣ JWS ଅନ୍ତର୍ଭୁକ୍ତ ନଥିଲା।" + "purchaseMissingSignedTransaction": "App Store କ୍ରୟରେ ଏକ ସ୍ୱାକ୍ଷରିତ ଲେଣଦେଣ JWS ଅନ୍ତର୍ଭୁକ୍ତ ନଥିଲା।", + "couldNotConnectToPlay": "Google Play ସହିତ ସଂଯୋଗ ହୋଇପାରିଲା ନାହିଁ। ଆପଣଙ୍କ ସଂଯୋଗ ଯାଞ୍ଚ କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।", + "legalDisclosurePlay": "Kilo Pass ଏକ ସ୍ୱୟଂ-ନବୀକରଣୀୟ ମାସିକ ସବସ୍କ୍ରିପ୍ସନ୍। କ୍ରୟ ନିଶ୍ଚିତ ହେବା ସମୟରେ ଆପଣଙ୍କ Google Play ଆକାଉଣ୍ଟରୁ ଭୁକ୍ତାନ ଆଦାୟ ହୁଏ। ସବସ୍କ୍ରିପ୍ସନ୍ ପ୍ରତି ମାସରେ ଦର୍ଶାଯାଇଥିବା ମୂଲ୍ୟରେ ସ୍ୱୟଂଚାଳିତ ଭାବରେ ନବୀକରଣ ହୁଏ, ଯଦି ବର୍ତ୍ତମାନର ଅବଧି ସମାପ୍ତ ହେବାର ଅତି କମରେ ୨୪ ଘଣ୍ଟା ପୂର୍ବରୁ ବାତିଲ କରାନଯାଏ। ଆପଣଙ୍କ Google Play ଆକାଉଣ୍ଟ ସେଟିଂସରେ ଯେକୌଣସି ସମୟରେ ପରିଚାଳନା କିମ୍ବା ବାତିଲ କରନ୍ତୁ।", + "manageFailedPlay": "Google Play ସବସ୍କ୍ରିପସନ୍ ପରିଚାଳନା ଖୋଲିବାରେ ବିଫଳ।", + "noMatchingProductsPlay": "Google Play ଦ୍ୱାରା କୌଣସି ମେଳ ଖାଉଥିବା Kilo Pass ଉତ୍ପାଦ ଫେରସ୍ତ କରାଯାଇ ନାହିଁ।", + "opensPlayManagement": "Google Play ସବସ୍କ୍ରିପସନ୍ ପରିଚାଳନା ଖୋଲେ।", + "otherAccountCopyPlay": "ଏହି Google Play ଆକାଉଣ୍ଟରେ ଥିବା Kilo Pass ଅନ୍ୟ ଏକ Kilo ଆକାଉଣ୍ଟର ଅଟେ। ଏହାକୁ ପରିଚାଳନା କରିବାକୁ ସେହି Kilo ଆକାଉଣ୍ଟରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।", + "productsCouldNotLoadPlay": "Kilo Pass ଉତ୍ପାଦଗୁଡ଼ିକ Google Play ରୁ ଲୋଡ୍ ହୋଇପାରିଲା ନାହିଁ।", + "productsUnavailablePlay": "Google Play ଉତ୍ପାଦଗୁଡ଼ିକ ଅନୁପଲବ୍ଧ", + "purchaseDifferentAccountPlay": "ଏହି Google Play କ୍ରୟ ଆପଣଙ୍କ Kilo ଆକାଉଣ୍ଟ ସହିତ ଲିଙ୍କ୍ ହୋଇନାହିଁ। କ୍ରୟ ପାଇଁ ବ୍ୟବହୃତ Google ଆକାଉଣ୍ଟରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ, ତାପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।", + "purchaseMissingOfferToken": "Google Play କ୍ରୟରେ ଏକ ଅଫର୍ ଟୋକେନ୍ ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।", + "purchaseMissingPurchaseToken": "Google Play କ୍ରୟରେ ଏକ କ୍ରୟ ଟୋକେନ୍ ଅନ୍ତର୍ଭୁକ୍ତ ନଥିଲା।", + "purchaseOwnedByAnotherAccountPlay": "ଏହି Google Play ଆକାଉଣ୍ଟରେ ଥିବା Kilo Pass ଅନ୍ୟ ଏକ Kilo ଆକାଉଣ୍ଟର ଅଟେ।", + "purchaseStartFailedPlay": "Google Play କ୍ରୟ ଆରମ୍ଭ କରିବାରେ ବିଫଳ।" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/pa.json b/apps/mobile/src/i18n/locales/pa.json index aa302577c4..145285a230 100644 --- a/apps/mobile/src/i18n/locales/pa.json +++ b/apps/mobile/src/i18n/locales/pa.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "ਇਸ Apple ਖਾਤੇ 'ਤੇ Kilo Pass ਵੱਖਰੇ Kilo ਖਾਤੇ ਨਾਲ ਸਬੰਧਤ ਹੈ।", "couldNotConnectToAppStore": "App Store ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਹੋ ਸਕਿਆ। ਆਪਣਾ ਕਨੈਕਸ਼ਨ ਜਾਂਚੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।", "noMatchingProducts": "App Store ਦੁਆਰਾ ਕੋਈ ਮੇਲ ਖਾਂਦੇ Kilo Pass ਉਤਪਾਦ ਵਾਪਸ ਨਹੀਂ ਕੀਤੇ ਗਏ।", - "purchaseMissingSignedTransaction": "App Store ਖਰੀਦ ਵਿੱਚ ਦਸਤਖਤ ਕੀਤਾ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ JWS ਸ਼ਾਮਲ ਨਹੀਂ ਸੀ।" + "purchaseMissingSignedTransaction": "App Store ਖਰੀਦ ਵਿੱਚ ਦਸਤਖਤ ਕੀਤਾ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ JWS ਸ਼ਾਮਲ ਨਹੀਂ ਸੀ।", + "couldNotConnectToPlay": "Google Play ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਹੋ ਸਕਿਆ। ਆਪਣਾ ਕਨੈਕਸ਼ਨ ਜਾਂਚੋ ਅਤੇ ਦੁਬਾਰਾ ਅਜ਼ਮਾਓ।", + "legalDisclosurePlay": "Kilo Pass ਇੱਕ ਆਟੋ-ਰੀਨਿਊ ਹੋਣ ਵਾਲੀ ਮਾਸਿਕ ਗਾਹਕੀ ਹੈ। ਖਰੀਦ ਦੀ ਪੁਸ਼ਟੀ 'ਤੇ ਭੁਗਤਾਨ ਤੁਹਾਡੇ Google Play ਖਾਤੇ ਤੋਂ ਲਿਆ ਜਾਂਦਾ ਹੈ। ਗਾਹਕੀਆਂ ਹਰ ਮਹੀਨੇ ਦਿਖਾਈ ਗਈ ਕੀਮਤ 'ਤੇ ਆਪਣੇ ਆਪ ਰੀਨਿਊ ਹੁੰਦੀਆਂ ਹਨ, ਜਦੋਂ ਤੱਕ ਮੌਜੂਦਾ ਮਿਆਦ ਖਤਮ ਹੋਣ ਤੋਂ ਘੱਟੋ ਘੱਟ 24 ਘੰਟੇ ਪਹਿਲਾਂ ਰੱਦ ਨਾ ਕੀਤੀ ਜਾਵੇ। ਆਪਣੀ Google Play ਖਾਤਾ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਕਿਸੇ ਵੀ ਸਮੇਂ ਪ੍ਰਬੰਧਿਤ ਕਰੋ ਜਾਂ ਰੱਦ ਕਰੋ।", + "manageFailedPlay": "Google Play ਗਾਹਕੀ ਪ੍ਰਬੰਧਨ ਖੋਲ੍ਹਣ ਵਿੱਚ ਅਸਫਲ।", + "noMatchingProductsPlay": "Google Play ਦੁਆਰਾ ਕੋਈ ਮੇਲ ਖਾਂਦੇ Kilo Pass ਉਤਪਾਦ ਵਾਪਸ ਨਹੀਂ ਕੀਤੇ ਗਏ।", + "opensPlayManagement": "Google Play ਗਾਹਕੀ ਪ੍ਰਬੰਧਨ ਖੋਲ੍ਹਦਾ ਹੈ।", + "otherAccountCopyPlay": "ਇਸ Google Play ਖਾਤੇ 'ਤੇ Kilo Pass ਇੱਕ ਵੱਖਰੇ Kilo ਖਾਤੇ ਨਾਲ ਸਬੰਧਤ ਹੈ। ਇਸ ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਲਈ ਉਸ Kilo ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋ।", + "productsCouldNotLoadPlay": "Kilo Pass ਉਤਪਾਦ Google Play ਤੋਂ ਲੋਡ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕੇ।", + "productsUnavailablePlay": "Google Play ਉਤਪਾਦ ਉਪਲਬਧ ਨਹੀਂ", + "purchaseDifferentAccountPlay": "ਇਹ Google Play ਖਰੀਦ ਤੁਹਾਡੇ Kilo ਖਾਤੇ ਨਾਲ ਲਿੰਕ ਨਹੀਂ ਹੈ। ਖਰੀਦ ਲਈ ਵਰਤੇ ਗਏ Google ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋ, ਫਿਰ ਦੁਬਾਰਾ ਅਜ਼ਮਾਓ।", + "purchaseMissingOfferToken": "Google Play ਖਰੀਦ ਵਿੱਚ ਇੱਕ offer token ਗੁੰਮ ਹੈ। ਦੁਬਾਰਾ ਅਜ਼ਮਾਓ।", + "purchaseMissingPurchaseToken": "Google Play ਖਰੀਦ ਵਿੱਚ ਇੱਕ purchase token ਸ਼ਾਮਲ ਨਹੀਂ ਸੀ।", + "purchaseOwnedByAnotherAccountPlay": "ਇਸ Google Play ਖਾਤੇ 'ਤੇ Kilo Pass ਇੱਕ ਵੱਖਰੇ Kilo ਖਾਤੇ ਨਾਲ ਸਬੰਧਤ ਹੈ।", + "purchaseStartFailedPlay": "Google Play ਖਰੀਦ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਅਸਫਲ।" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/pl.json b/apps/mobile/src/i18n/locales/pl.json index 589f8b4e2e..f78134ec67 100644 --- a/apps/mobile/src/i18n/locales/pl.json +++ b/apps/mobile/src/i18n/locales/pl.json @@ -2422,7 +2422,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass na tym koncie Apple należy do innego konta Kilo.", "couldNotConnectToAppStore": "Nie udało się połączyć z App Store. Sprawdź połączenie i spróbuj ponownie.", "noMatchingProducts": "App Store nie zwróciła pasujących produktów Kilo Pass.", - "purchaseMissingSignedTransaction": "Zakup w App Store nie zawierał podpisanej transakcji JWS." + "purchaseMissingSignedTransaction": "Zakup w App Store nie zawierał podpisanej transakcji JWS.", + "couldNotConnectToPlay": "Nie udało się połączyć z Google Play. Sprawdź połączenie i spróbuj ponownie.", + "legalDisclosurePlay": "Kilo Pass to automatycznie odnawiana subskrypcja miesięczna. Płatność jest pobierana z Twojego konta Google Play przy potwierdzeniu zakupu. Subskrypcja odnawia się automatycznie co miesiąc po podanej cenie, chyba że anulujesz ją co najmniej 24 godziny przed końcem bieżącego okresu. Zarządzaj nią lub anuluj ją w dowolnym momencie w ustawieniach konta Google Play.", + "manageFailedPlay": "Nie udało się otworzyć zarządzania subskrypcjami w Google Play.", + "noMatchingProductsPlay": "Google Play nie zwrócił pasujących produktów Kilo Pass.", + "opensPlayManagement": "Otwiera zarządzanie subskrypcją w Google Play.", + "otherAccountCopyPlay": "Kilo Pass na tym koncie Google Play należy do innego konta Kilo. Zaloguj się na to konto Kilo, aby nim zarządzać.", + "productsCouldNotLoadPlay": "Nie udało się załadować produktów Kilo Pass z Google Play.", + "productsUnavailablePlay": "Produkty Google Play niedostępne", + "purchaseDifferentAccountPlay": "Ten zakup w Google Play nie jest powiązany z Twoim kontem Kilo. Zaloguj się na konto Google użyte do zakupu, a następnie spróbuj ponownie.", + "purchaseMissingOfferToken": "Zakup w Google Play nie zawiera tokenu oferty. Spróbuj ponownie.", + "purchaseMissingPurchaseToken": "Zakup w Google Play nie zawierał tokenu zakupu.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass na tym koncie Google Play należy do innego konta Kilo.", + "purchaseStartFailedPlay": "Nie udało się rozpocząć zakupu w Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ps.json b/apps/mobile/src/i18n/locales/ps.json index 3194c859db..8c0e8840f1 100644 --- a/apps/mobile/src/i18n/locales/ps.json +++ b/apps/mobile/src/i18n/locales/ps.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "دا Apple Account باندې Kilo Pass د بل Kilo حساب پورې اړه لري.", "couldNotConnectToAppStore": "له App Store سره اړیکه نشوه نیول کېدای. خپله اړیکه وګورئ او بیا هڅه وکړئ.", "noMatchingProducts": "د App Store لخوا کوم ورته Kilo Pass محصولات بیرته نه دي راستانه شوي.", - "purchaseMissingSignedTransaction": "د App Store پیرود لاسلیک شوی JWS لیږد نه درلود." + "purchaseMissingSignedTransaction": "د App Store پیرود لاسلیک شوی JWS لیږد نه درلود.", + "couldNotConnectToPlay": "له Google Play سره اړیکه نشوه نیول کېدای. خپله اړیکه وګورئ او بیا هڅه وکړئ.", + "legalDisclosurePlay": "Kilo Pass یو خودکار تازه کېدونکی میاشتنی ګډون دی. پیسې ستاسو Google Play حساب ته د پیرود د تایید په وخت کې اخیستل کیږي. ګډونونه هر میاشت په ښودل شوي نرخ باندې په اتوماتیک ډول نوي کیږي، پرته له دې چې د اوسنۍ مودې له پای ته رسېدو ۲۴ ساعته مخکې لغوه شي. هر وخت د خپل Google Play حساب تنظیماتو کې اداره یا لغوه کړئ.", + "manageFailedPlay": "د Google Play د ګډون مدیریت نه شو خلاصېدلای.", + "noMatchingProductsPlay": "د Google Play لخوا کوم ورته Kilo Pass محصولات بیرته نه دي راستانه شوي.", + "opensPlayManagement": "د Google Play د ګډون مدیریت پرانیزي.", + "otherAccountCopyPlay": "دا Google Play حساب باندې Kilo Pass د بل Kilo حساب پورې اړه لري. د مدیریت لپاره هغه Kilo حساب ته ننوځئ.", + "productsCouldNotLoadPlay": "د Kilo Pass محصولات له Google Play څخه نه شول پورته کېدلای.", + "productsUnavailablePlay": "د Google Play محصولات شتون نلري", + "purchaseDifferentAccountPlay": "دا د Google Play پیرود ستاسو د Kilo حساب سره تړلی نه دی. د پیرود لپاره کارول شوي Google Account ته ننوځئ، بیا هڅه وکړئ.", + "purchaseMissingOfferToken": "د Google Play پیرود د وړاندیز ټوکن نلري. بیا هڅه وکړئ.", + "purchaseMissingPurchaseToken": "د Google Play پیرود د پیرود ټوکن نه درلود.", + "purchaseOwnedByAnotherAccountPlay": "دا Google Play حساب باندې Kilo Pass د بل Kilo حساب پورې اړه لري.", + "purchaseStartFailedPlay": "د Google Play پیرود پیل کول ناکام شول." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/pt-BR.json b/apps/mobile/src/i18n/locales/pt-BR.json index d7ed2ce653..c09782fcee 100644 --- a/apps/mobile/src/i18n/locales/pt-BR.json +++ b/apps/mobile/src/i18n/locales/pt-BR.json @@ -2409,7 +2409,20 @@ "purchaseOwnedByAnotherAccount": "O Kilo Pass desta Conta Apple pertence a uma conta Kilo diferente.", "couldNotConnectToAppStore": "Não foi possível conectar à App Store. Verifique sua conexão e tente novamente.", "noMatchingProducts": "A App Store não retornou produtos Kilo Pass correspondentes.", - "purchaseMissingSignedTransaction": "A compra na App Store não incluiu uma transação assinada JWS." + "purchaseMissingSignedTransaction": "A compra na App Store não incluiu uma transação assinada JWS.", + "couldNotConnectToPlay": "Não foi possível conectar ao Google Play. Verifique sua conexão e tente novamente.", + "legalDisclosurePlay": "O Kilo Pass é uma assinatura mensal com renovação automática. O pagamento é cobrado na sua conta do Google Play na confirmação da compra. As assinaturas são renovadas automaticamente todos os meses pelo preço exibido, a menos que sejam canceladas pelo menos 24 horas antes do fim do período atual. Gerencie ou cancele a qualquer momento nas configurações da sua conta do Google Play.", + "manageFailedPlay": "Não foi possível abrir o gerenciamento de assinaturas do Google Play.", + "noMatchingProductsPlay": "O Google Play não retornou produtos Kilo Pass correspondentes.", + "opensPlayManagement": "Abre o gerenciamento de assinatura do Google Play.", + "otherAccountCopyPlay": "O Kilo Pass nesta conta do Google Play pertence a uma conta Kilo diferente. Entre nessa conta Kilo para gerenciá-lo.", + "productsCouldNotLoadPlay": "Não foi possível carregar os produtos do Kilo Pass do Google Play.", + "productsUnavailablePlay": "Produtos do Google Play indisponíveis", + "purchaseDifferentAccountPlay": "Esta compra do Google Play não está vinculada à sua conta Kilo. Entre na conta do Google usada na compra e tente novamente.", + "purchaseMissingOfferToken": "A compra do Google Play está sem um token de oferta. Tente novamente.", + "purchaseMissingPurchaseToken": "A compra do Google Play não incluiu um token de compra.", + "purchaseOwnedByAnotherAccountPlay": "O Kilo Pass nesta conta do Google Play pertence a uma conta Kilo diferente.", + "purchaseStartFailedPlay": "Não foi possível iniciar a compra no Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/pt.json b/apps/mobile/src/i18n/locales/pt.json index 7c2a89a5d7..2983dd2767 100644 --- a/apps/mobile/src/i18n/locales/pt.json +++ b/apps/mobile/src/i18n/locales/pt.json @@ -2870,7 +2870,20 @@ "purchaseOwnedByAnotherAccount": "O Kilo Pass desta Apple Account pertence a uma conta Kilo diferente.", "couldNotConnectToAppStore": "Não foi possível ligar à App Store. Verifique a sua ligação e tente novamente.", "noMatchingProducts": "A App Store não devolveu produtos Kilo Pass correspondentes.", - "purchaseMissingSignedTransaction": "A compra na App Store não incluiu uma transação assinada JWS." + "purchaseMissingSignedTransaction": "A compra na App Store não incluiu uma transação assinada JWS.", + "couldNotConnectToPlay": "Não foi possível ligar ao Google Play. Verifique a sua ligação e tente novamente.", + "legalDisclosurePlay": "O Kilo Pass é uma subscrição mensal renovável automaticamente. O pagamento é cobrado na sua conta do Google Play na confirmação da compra. As subscrições renovam-se automaticamente todos os meses pelo preço indicado, exceto se forem canceladas pelo menos 24 horas antes do fim do período atual. Faça a gestão ou cancele a qualquer momento nas definições da sua conta do Google Play.", + "manageFailedPlay": "Falha ao abrir a gestão de subscrições do Google Play.", + "noMatchingProductsPlay": "O Google Play não devolveu produtos Kilo Pass correspondentes.", + "opensPlayManagement": "Abre a gestão de subscrições do Google Play.", + "otherAccountCopyPlay": "O Kilo Pass desta conta do Google Play pertence a uma conta Kilo diferente. Inicie sessão nessa conta Kilo para a gerir.", + "productsCouldNotLoadPlay": "Os produtos do Kilo Pass não puderam ser carregados a partir do Google Play.", + "productsUnavailablePlay": "Produtos do Google Play indisponíveis", + "purchaseDifferentAccountPlay": "Esta compra do Google Play não está ligada à sua conta Kilo. Inicie sessão na conta Google utilizada na compra e tente novamente.", + "purchaseMissingOfferToken": "A compra do Google Play não tem um token de oferta. Tente novamente.", + "purchaseMissingPurchaseToken": "A compra do Google Play não incluiu um token de compra.", + "purchaseOwnedByAnotherAccountPlay": "O Kilo Pass desta conta do Google Play pertence a uma conta Kilo diferente.", + "purchaseStartFailedPlay": "Falha ao iniciar a compra no Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ro.json b/apps/mobile/src/i18n/locales/ro.json index 7464833431..da8e758335 100644 --- a/apps/mobile/src/i18n/locales/ro.json +++ b/apps/mobile/src/i18n/locales/ro.json @@ -2870,7 +2870,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass de pe acest Apple Account aparține unui alt cont Kilo.", "couldNotConnectToAppStore": "Nu s-a putut conecta la App Store. Verifică conexiunea și încearcă din nou.", "noMatchingProducts": "App Store nu a returnat produse Kilo Pass corespunzătoare.", - "purchaseMissingSignedTransaction": "Achiziția din App Store nu a inclus o tranzacție semnată JWS." + "purchaseMissingSignedTransaction": "Achiziția din App Store nu a inclus o tranzacție semnată JWS.", + "couldNotConnectToPlay": "Nu s-a putut conecta la Google Play. Verifică conexiunea și încearcă din nou.", + "legalDisclosurePlay": "Kilo Pass este un abonament lunar cu reînnoire automată. Plata este încasată de pe contul tău Google Play la confirmarea achiziției. Abonamentele se reînnoiesc automat în fiecare lună la prețul afișat, dacă nu sunt anulate cu cel puțin 24 de ore înainte de sfârșitul perioadei curente. Gestionează sau anulează oricând în setările contului tău Google Play.", + "manageFailedPlay": "Nu s-a putut deschide gestionarea abonamentului Google Play.", + "noMatchingProductsPlay": "Google Play nu a returnat produse Kilo Pass corespunzătoare.", + "opensPlayManagement": "Deschide gestionarea abonamentului Google Play.", + "otherAccountCopyPlay": "Kilo Pass de pe acest cont Google Play aparține unui alt cont Kilo. Autentifică-te în acel cont Kilo pentru a-l gestiona.", + "productsCouldNotLoadPlay": "Produsele Kilo Pass nu au putut fi încărcate din Google Play.", + "productsUnavailablePlay": "Produse Google Play indisponibile", + "purchaseDifferentAccountPlay": "Această achiziție Google Play nu este asociată contului tău Kilo. Autentifică-te în contul Google folosit pentru achiziție, apoi încearcă din nou.", + "purchaseMissingOfferToken": "Achiziția Google Play nu are un token de ofertă. Încearcă din nou.", + "purchaseMissingPurchaseToken": "Achiziția Google Play nu a inclus un token de achiziție.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass de pe acest cont Google Play aparține unui alt cont Kilo.", + "purchaseStartFailedPlay": "Nu s-a putut începe achiziția Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ru.json b/apps/mobile/src/i18n/locales/ru.json index ea47910781..b334b62e1d 100644 --- a/apps/mobile/src/i18n/locales/ru.json +++ b/apps/mobile/src/i18n/locales/ru.json @@ -2422,7 +2422,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass на этом Apple Account принадлежит другому аккаунту Kilo.", "couldNotConnectToAppStore": "Не удалось подключиться к App Store. Проверьте подключение и попробуйте снова.", "noMatchingProducts": "App Store не вернул подходящих продуктов Kilo Pass.", - "purchaseMissingSignedTransaction": "Покупка в App Store не включала подписанную транзакцию JWS." + "purchaseMissingSignedTransaction": "Покупка в App Store не включала подписанную транзакцию JWS.", + "couldNotConnectToPlay": "Не удалось подключиться к Google Play. Проверьте подключение и попробуйте снова.", + "legalDisclosurePlay": "Kilo Pass — это ежемесячная подписка с автоматическим продлением. Платёж списывается с вашего Google Play аккаунта при подтверждении покупки. Подписка продлевается автоматически каждый месяц по указанной цене, если её не отменить не менее чем за 24 часа до конца текущего периода. Управляйте подпиской или отменяйте её в любой момент в настройках учётной записи Google Play.", + "manageFailedPlay": "Не удалось открыть управление подписками Google Play.", + "noMatchingProductsPlay": "Google Play не вернул подходящих продуктов Kilo Pass.", + "opensPlayManagement": "Открывает управление подпиской в Google Play.", + "otherAccountCopyPlay": "Kilo Pass на этом Google Play аккаунте принадлежит другому аккаунту Kilo. Войдите в тот аккаунт Kilo, чтобы управлять им.", + "productsCouldNotLoadPlay": "Не удалось загрузить продукты Kilo Pass из Google Play.", + "productsUnavailablePlay": "Товары Google Play недоступны", + "purchaseDifferentAccountPlay": "Эта покупка в Google Play не привязана к вашему аккаунту Kilo. Войдите в Google аккаунт, использованный для покупки, и попробуйте снова.", + "purchaseMissingOfferToken": "В покупке Google Play отсутствует маркер предложения. Попробуйте снова.", + "purchaseMissingPurchaseToken": "Покупка Google Play не включала маркер покупки.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass на этом Google Play аккаунте принадлежит другому аккаунту Kilo.", + "purchaseStartFailedPlay": "Не удалось начать покупку в Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/si.json b/apps/mobile/src/i18n/locales/si.json index 1429638879..30d4981de3 100644 --- a/apps/mobile/src/i18n/locales/si.json +++ b/apps/mobile/src/i18n/locales/si.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "මෙම Apple ගිණුමේ Kilo Pass වෙනත් Kilo ගිණුමකට අයත් වේ.", "couldNotConnectToAppStore": "App Store වෙත සම්බන්ධ වීමට නොහැකි විය. ඔබේ සම්බන්ධතාවය පරීක්ෂා කර නැවත උත්සාහ කරන්න.", "noMatchingProducts": "App Store විසින් ගැළපෙන Kilo Pass නිෂ්පාදන ලබා දුන්නේ නැත.", - "purchaseMissingSignedTransaction": "App Store මිලදී ගැනීමේදී අත්සන් කළ JWS ගනුදෙනුවක් ඇතුළත් නොවීය." + "purchaseMissingSignedTransaction": "App Store මිලදී ගැනීමේදී අත්සන් කළ JWS ගනුදෙනුවක් ඇතුළත් නොවීය.", + "couldNotConnectToPlay": "Google Play වෙත සම්බන්ධ විය නොහැකි විය. ඔබගේ සම්බන්ධතාවය පරීක්ෂා කර නැවත උත්සාහ කරන්න.", + "legalDisclosurePlay": "Kilo Pass යනු ස්වයංක්රීයව අලුත් වන මාසික දායකත්වයකි. මිලදී ගැනීම තහවුරු වූ විට ගෙවීම ඔබේ Google Play ගිණුමට අය කෙරේ. වත්මන් කාල සීමාව අවසන් වීමට අවම වශයෙන් පැය 24කට පෙර අවලංගු නොකළහොත් දායකත්ව සෑම මාසයකම දක්වා ඇති මිලට ස්වයංක්රීයව අලුත් වේ. ඔබේ Google Play ගිණුම් සැකසුම් තුළ ඕනෑම වේලාවක කළමනාකරණය කරන්න හෝ අවලංගු කරන්න.", + "manageFailedPlay": "Google Play දායකත්ව කළමනාකරණය විවෘත කිරීමට අසමත් විය.", + "noMatchingProductsPlay": "Google Play විසින් ගැළපෙන Kilo Pass නිෂ්පාදන කිසිවක් ආපසු ලබා දුන්නේ නැත.", + "opensPlayManagement": "Google Play දායකත්ව කළමනාකරණය විවෘත කරයි.", + "otherAccountCopyPlay": "මෙම Google Play ගිණුමේ Kilo Pass වෙනත් Kilo ගිණුමකට අයත් වේ. එය කළමනාකරණය කිරීමට එම Kilo ගිණුමට පුරනය වන්න.", + "productsCouldNotLoadPlay": "Kilo Pass නිෂ්පාදන Google Play වෙතින් පූරණය කළ නොහැකි විය.", + "productsUnavailablePlay": "Google Play නිෂ්පාදන ලබා ගත නොහැක", + "purchaseDifferentAccountPlay": "මෙම Google Play මිලදී ගැනීම ඔබේ Kilo ගිණුමට සම්බන්ධ කර නොමැත. මිලදී ගැනීම සඳහා භාවිතා කළ Google ගිණුමට පුරනය වන්න, ඉන්පසු නැවත උත්සාහ කරන්න.", + "purchaseMissingOfferToken": "Google Play මිලදී ගැනීමේ offer token එකක් අඩුය. නැවත උත්සාහ කරන්න.", + "purchaseMissingPurchaseToken": "Google Play මිලදී ගැනීමේදී purchase token එකක් ඇතුළත් නොවීය.", + "purchaseOwnedByAnotherAccountPlay": "මෙම Google Play ගිණුමේ Kilo Pass වෙනත් Kilo ගිණුමකට අයත් වේ.", + "purchaseStartFailedPlay": "Google Play මිලදී ගැනීම ආරම්භ කිරීමට අසමත් විය." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/sk.json b/apps/mobile/src/i18n/locales/sk.json index 4daf7ef2df..306c0204ac 100644 --- a/apps/mobile/src/i18n/locales/sk.json +++ b/apps/mobile/src/i18n/locales/sk.json @@ -2890,7 +2890,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass na tomto Apple Account patrí inému účtu Kilo.", "couldNotConnectToAppStore": "Nepodarilo sa pripojiť k App Store. Skontrolujte pripojenie a skúste to znova.", "noMatchingProducts": "App Store nevrátil žiadne zodpovedajúce produkty Kilo Pass.", - "purchaseMissingSignedTransaction": "Nákup v App Store neobsahoval podpísanú transakciu JWS." + "purchaseMissingSignedTransaction": "Nákup v App Store neobsahoval podpísanú transakciu JWS.", + "couldNotConnectToPlay": "Nepodarilo sa pripojiť k Google Play. Skontrolujte pripojenie a skúste to znova.", + "legalDisclosurePlay": "Kilo Pass je mesačné predplatné s automatickým obnovením. Platba sa účtuje na váš účet Google Play pri potvrdení nákupu. Predplatné sa automaticky obnovuje každý mesiac za zobrazenú cenu, pokiaľ ho nezrušíte najmenej 24 hodín pred koncom aktuálneho obdobia. Spravujte alebo zrušte ho kedykoľvek v nastaveniach svojho účtu Google Play.", + "manageFailedPlay": "Otvorenie správy predplatného v Google Play zlyhalo.", + "noMatchingProductsPlay": "Google Play nevrátil žiadne zodpovedajúce produkty Kilo Pass.", + "opensPlayManagement": "Otvorí správu predplatného v Google Play.", + "otherAccountCopyPlay": "Kilo Pass na tomto účte Google Play patrí inému účtu Kilo. Prihláste sa do tohto účtu Kilo, aby ste ho spravovali.", + "productsCouldNotLoadPlay": "Produkty Kilo Pass sa nepodarilo načítať z Google Play.", + "productsUnavailablePlay": "Produkty Google Play nie sú k dispozícii", + "purchaseDifferentAccountPlay": "Tento nákup v Google Play nie je prepojený s vaším účtom Kilo. Prihláste sa do účtu Google použitého na nákup a skúste to znova.", + "purchaseMissingOfferToken": "V nákupe v Google Play chýba ponukový token. Skúste to znova.", + "purchaseMissingPurchaseToken": "Nákup v Google Play neobsahoval token nákupu.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass na tomto účte Google Play patrí inému účtu Kilo.", + "purchaseStartFailedPlay": "Nákup v Google Play sa nepodarilo spustiť." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/sl.json b/apps/mobile/src/i18n/locales/sl.json index 31bd52c52c..0309978dac 100644 --- a/apps/mobile/src/i18n/locales/sl.json +++ b/apps/mobile/src/i18n/locales/sl.json @@ -2890,7 +2890,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass na tem Apple računu pripada drugemu Kilo računu.", "couldNotConnectToAppStore": "Ni se bilo mogoče povezati z App Store. Preveri svojo povezavo in poskusi znova.", "noMatchingProducts": "App Store ni vrnil ustreznih izdelkov Kilo Pass.", - "purchaseMissingSignedTransaction": "Nakup v App Store ni vključeval podpisanega zapisa transakcije JWS." + "purchaseMissingSignedTransaction": "Nakup v App Store ni vključeval podpisanega zapisa transakcije JWS.", + "couldNotConnectToPlay": "Ni se bilo mogoče povezati z Google Play. Preverite svojo povezavo in poskusite znova.", + "legalDisclosurePlay": "Kilo Pass je samodejno obnovljiva mesečna naročnina. Plačilo se bremeni vaš Google Play račun ob potrditvi nakupa. Naročnine se samodejno obnovijo vsak mesec po prikazani ceni, razen če jih prekličete vsaj 24 ur pred koncem trenutnega obdobja. Upravljajte ali prekličite kadar koli v nastavitvah svojega Google Play računa.", + "manageFailedPlay": "Upravljanja naročnin Google Play ni bilo mogoče odpreti.", + "noMatchingProductsPlay": "Google Play ni vrnil ustreznih izdelkov Kilo Pass.", + "opensPlayManagement": "Odpre upravljanje naročnin Google Play.", + "otherAccountCopyPlay": "Kilo Pass na tem Google Play računu pripada drugemu Kilo računu. Prijavite se v ta Kilo račun, da ga upravljate.", + "productsCouldNotLoadPlay": "Izdelkov Kilo Passa ni bilo mogoče naložiti iz Google Play.", + "productsUnavailablePlay": "Izdelki v Google Play niso na voljo", + "purchaseDifferentAccountPlay": "Ta nakup v Google Play ni povezan z vašim Kilo računom. Prijavite se v Google račun, s katerim je bil nakup opravljen, nato poskusite znova.", + "purchaseMissingOfferToken": "Nakupu v Google Play manjka žeton ponudbe. Poskusite znova.", + "purchaseMissingPurchaseToken": "Nakup v Google Play ni vključeval žetona nakupa.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass na tem Google Play računu pripada drugemu Kilo računu.", + "purchaseStartFailedPlay": "Nakupa v Google Play ni bilo mogoče začeti." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/so.json b/apps/mobile/src/i18n/locales/so.json index b2add28b7b..f588627add 100644 --- a/apps/mobile/src/i18n/locales/so.json +++ b/apps/mobile/src/i18n/locales/so.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass-ka ku yaal Xisaabtan Apple-ka ah waxaa leh koonto Kilo oo kale.", "couldNotConnectToAppStore": "Lama xiri karin App Store-ka. Hubi xiriirkaaga oo mar kale isku day.", "noMatchingProducts": "App Store-ka ma soo celin badeecado Kilo Pass oo u dhigma.", - "purchaseMissingSignedTransaction": "Iibsashada App Store-ka kuma jirin heshiis la saxiixay oo JWS ah." + "purchaseMissingSignedTransaction": "Iibsashada App Store-ka kuma jirin heshiis la saxiixay oo JWS ah.", + "couldNotConnectToPlay": "Ma xiriiri karin Google Play. Hubi xiriirkaaga oo mar kale isku day.", + "legalDisclosurePlay": "Kilo Pass waa diiwaangelin bil-ah oo is-keeneysa si toos ah. Lacagta waxaa laga qaadaa akoontigaaga Google Play markaad xaqiijiso iibsashada. Diiwaangelintu waxay si toos ah u cusbooneysa bil kasta qiimaha la muujiyey ilaa aadan baajin ugu yaraan 24 saacadood ka hor dhamaadka xilli-gii xaafada. Ku maareyso ama baaji wakhti kasta ee goobaha xisaabta Google Play.", + "manageFailedPlay": "Furista maareynta isdiiwaangelinta Google Play way fashilantay.", + "noMatchingProductsPlay": "Ma jiro alaabo Kilo Pass oo u dhigma oo Google Play soo celisay.", + "opensPlayManagement": "Fura maareynta isdiiwaangelinta Google Play.", + "otherAccountCopyPlay": "Kilo Pass-ka ku yaal Xisaabtan Google Play-ga ah waxaa leh koonto Kilo oo kale. Ku saxiix bax koontada Kilo-ga ah si aad u maamusho.", + "productsCouldNotLoadPlay": "Alaabooyinka Kilo Pass lama soo dejin karin Google Play.", + "productsUnavailablePlay": "Alaabooyinka Google Play ma heli karo", + "purchaseDifferentAccountPlay": "Iibsashadan Google Play kuma xirna akoontigaaga Kilo. Ku soo gal Google Account-ka loo adeegsaday iibsashada, ka dibna mar kale isku day.", + "purchaseMissingOfferToken": "Iibsashada Google Play waxay ka maqan tahay offer token. Mar kale isku day.", + "purchaseMissingPurchaseToken": "Iibsashada Google Play-ga kuma jirin purchase token.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass-ka ku yaal Xisaabtan Google Play-ga ah waxaa leh koonto Kilo oo kale.", + "purchaseStartFailedPlay": "Bilowga iibsashada Google Play waa fashilmay." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/sq.json b/apps/mobile/src/i18n/locales/sq.json index 272b9cf283..4e43f7127e 100644 --- a/apps/mobile/src/i18n/locales/sq.json +++ b/apps/mobile/src/i18n/locales/sq.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass në këtë Apple Account i përket një llogarie tjetër Kilo.", "couldNotConnectToAppStore": "Nuk u arrit të lidheshim me App Store. Kontrollo lidhjen dhe provo përsëri.", "noMatchingProducts": "App Store nuk ktheu produkte Kilo Pass që përputhen.", - "purchaseMissingSignedTransaction": "Blerja në App Store nuk përfshinte një transaksion të nënshkruar JWS." + "purchaseMissingSignedTransaction": "Blerja në App Store nuk përfshinte një transaksion të nënshkruar JWS.", + "couldNotConnectToPlay": "Nuk u arrit të lidhej me Google Play. Kontrolloni lidhjen tuaj dhe provoni përsëri.", + "legalDisclosurePlay": "Kilo Pass është një abonim mujor me rinovim automatik. Pagesa kryhet në llogarinë tuaj të Google Play në konfirmim të blerjes. Abonimet rinovohen automatikisht çdo muaj me çmimin e treguar, përveç rasteve kur anulohen të paktën 24 orë përpara përfundimit të periudhës aktuale. Menaxhojeni ose anulojeni kur të doni në cilësimet e llogarisë tuaj të Google Play.", + "manageFailedPlay": "Dështoi hapja e menaxhimit të abonimit në Google Play.", + "noMatchingProductsPlay": "Google Play nuk ktheu produkte të përputhshme Kilo Pass.", + "opensPlayManagement": "Hap menaxhimin e abonimit në Google Play.", + "otherAccountCopyPlay": "Kilo Pass-i në këtë llogari Google Play i përket një llogarie tjetër Kilo. Hyni në atë llogari Kilo për ta menaxhuar.", + "productsCouldNotLoadPlay": "Produktet Kilo Pass nuk u arritën të ngarkoheshin nga Google Play.", + "productsUnavailablePlay": "Produktet e Google Play nuk janë të disponueshme", + "purchaseDifferentAccountPlay": "Kjo blerje në Google Play nuk është e lidhur me llogarinë tuaj Kilo. Hyni në llogarinë Google të përdorur për blerjen, pastaj provoni përsëri.", + "purchaseMissingOfferToken": "Blerja në Google Play nuk ka një token oferte. Provoni përsëri.", + "purchaseMissingPurchaseToken": "Blerja në Google Play nuk përfshinte një token blerjeje.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass-i në këtë llogari Google Play i përket një llogarie tjetër Kilo.", + "purchaseStartFailedPlay": "Dështoi nisja e blerjes në Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/sr.json b/apps/mobile/src/i18n/locales/sr.json index 56fdbfc776..19792788b3 100644 --- a/apps/mobile/src/i18n/locales/sr.json +++ b/apps/mobile/src/i18n/locales/sr.json @@ -2870,7 +2870,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass na ovom Apple nalogu pripada drugom Kilo nalogu.", "couldNotConnectToAppStore": "Nije moguće povezati se sa App Store-om. Proverite vezu i pokušajte ponovo.", "noMatchingProducts": "App Store nije vratio nijedan odgovarajući Kilo Pass proizvod.", - "purchaseMissingSignedTransaction": "App Store kupovina nije uključivala potpisanu JWS transakciju." + "purchaseMissingSignedTransaction": "App Store kupovina nije uključivala potpisanu JWS transakciju.", + "couldNotConnectToPlay": "Nije moguće povezati se sa Google Play-om. Proverite vezu i pokušajte ponovo.", + "legalDisclosurePlay": "Kilo Pass je pretplata na mesec dana koja se automatski obnavlja. Plaćanje se naplaćuje sa vašeg Google Play naloga pri potvrdi kupovine. Pretplate se automatski obnavljaju svakog meseca po prikazanoj ceni, osim ako ih ne otkažete najmanje 24 sata pre kraja tekućeg perioda. Upravljajte ili otkažite u svakom trenutku u podešavanjima naloga na Google Play-u.", + "manageFailedPlay": "Otvaranje upravljanja pretplatom na Google Play-u nije uspelo.", + "noMatchingProductsPlay": "Google Play nije vratio nijedan odgovarajući Kilo Pass proizvod.", + "opensPlayManagement": "Otvara upravljanje pretplatom na Google Play-u.", + "otherAccountCopyPlay": "Kilo Pass na ovom Google Play nalogu pripada drugom Kilo nalogu. Prijavite se na taj Kilo nalog da biste njime upravljali.", + "productsCouldNotLoadPlay": "Kilo Pass proizvodi nisu mogli biti učitani iz Google Play-a.", + "productsUnavailablePlay": "Google Play proizvodi nisu dostupni", + "purchaseDifferentAccountPlay": "Ova Google Play kupovina nije povezana sa vašim Kilo nalogom. Prijavite se na Google nalog korišćen za kupovinu, a zatim pokušajte ponovo.", + "purchaseMissingOfferToken": "Google Play kupovina nema token ponude. Pokušajte ponovo.", + "purchaseMissingPurchaseToken": "Google Play kupovina nije sadržala token kupovine.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass na ovom Google Play nalogu pripada drugom Kilo nalogu.", + "purchaseStartFailedPlay": "Pokretanje Google Play kupovine nije uspelo." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/sv.json b/apps/mobile/src/i18n/locales/sv.json index eb7f0e8920..a736f0e38f 100644 --- a/apps/mobile/src/i18n/locales/sv.json +++ b/apps/mobile/src/i18n/locales/sv.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass på detta Apple-konto tillhör ett annat Kilo-konto.", "couldNotConnectToAppStore": "Kunde inte ansluta till App Store. Kontrollera anslutningen och försök igen.", "noMatchingProducts": "App Store returnerade inga matchande Kilo Pass-produkter.", - "purchaseMissingSignedTransaction": "App Store-köpet innehöll ingen signerad transaktion JWS." + "purchaseMissingSignedTransaction": "App Store-köpet innehöll ingen signerad transaktion JWS.", + "couldNotConnectToPlay": "Det gick inte att ansluta till Google Play. Kontrollera din anslutning och försök igen.", + "legalDisclosurePlay": "Kilo Pass är en automatiskt förnybar månadsprenumeration. Betalning dras från ditt Google Play-konto vid köpsbekräftelse. Prenumerationen förnyas automatiskt varje månad till det pris som visas om den inte avbryts minst 24 timmar före slutet av den aktuella perioden. Hantera eller avbryt när som helst i dina Google Play-kontoinställningar.", + "manageFailedPlay": "Det gick inte att öppna Google Play-prenumerationshanteringen.", + "noMatchingProductsPlay": "Google Play returnerade inga matchande Kilo Pass-produkter.", + "opensPlayManagement": "Öppnar Google Play-prenumerationshanteringen.", + "otherAccountCopyPlay": "Kilo Pass på detta Google Play-konto tillhör ett annat Kilo-konto. Logga in på det Kilo-kontot för att hantera det.", + "productsCouldNotLoadPlay": "Kilo Pass-produkterna kunde inte laddas från Google Play.", + "productsUnavailablePlay": "Google Play-produkter är inte tillgängliga", + "purchaseDifferentAccountPlay": "Detta Google Play-köp är inte kopplat till ditt Kilo-konto. Logga in på Google-kontot som användes för köpet och försök igen.", + "purchaseMissingOfferToken": "Google Play-köpet saknar en erbjudandetoken. Försök igen.", + "purchaseMissingPurchaseToken": "Google Play-köpet innehöll ingen köptoken.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass på detta Google Play-konto tillhör ett annat Kilo-konto.", + "purchaseStartFailedPlay": "Det gick inte att starta Google Play-köpet." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/sw.json b/apps/mobile/src/i18n/locales/sw.json index 4f414c5dc4..8ea1336fd2 100644 --- a/apps/mobile/src/i18n/locales/sw.json +++ b/apps/mobile/src/i18n/locales/sw.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass kwenye Akaunti hii ya Apple ni ya akaunti nyingine ya Kilo.", "couldNotConnectToAppStore": "Imeshindwa kuunganishwa kwenye App Store. Angalia muunganisho wako na ujaribu tena.", "noMatchingProducts": "App Store haikurudisha bidhaa zinazolingana za Kilo Pass.", - "purchaseMissingSignedTransaction": "Ununuzi wa App Store haukujumuisha JWS ya muamala iliyotiwa saini." + "purchaseMissingSignedTransaction": "Ununuzi wa App Store haukujumuisha JWS ya muamala iliyotiwa saini.", + "couldNotConnectToPlay": "Imeshindwa kuunganishwa kwenye Google Play. Angalia muunganisho wako na ujaribu tena.", + "legalDisclosurePlay": "Kilo Pass ni usajili wa kila mwezi unaofanywa upya kiotomatiki. Malipo yanakatwa kwenye akaunti yako ya Google Play unapothibitisha ununuzi. Usajili unafanywa upya kiotomatiki kila mwezi kwa bei inayoonyeshwa isipokuwa umeghairi angalau saa 24 kabla ya mwisho wa kipindi cha sasa. Simamia au ghairi wakati wowote katika mipangilio ya akaunti yako ya Google Play.", + "manageFailedPlay": "Imeshindwa kufungua usimamizi wa usajili wa Google Play.", + "noMatchingProductsPlay": "Google Play haikurudisha bidhaa zinazolingana za Kilo Pass.", + "opensPlayManagement": "Hufungua usimamizi wa usajili wa Google Play.", + "otherAccountCopyPlay": "Kilo Pass kwenye Akaunti hii ya Google Play ni ya akaunti nyingine ya Kilo. Ingia kwenye akaunti hiyo ya Kilo ili uisimamie.", + "productsCouldNotLoadPlay": "Bidhaa za Kilo Pass hazikuweza kupakiwa kutoka Google Play.", + "productsUnavailablePlay": "Bidhaa za Google Play hazipatikani", + "purchaseDifferentAccountPlay": "Ununuzi huu wa Google Play haujaunganishwa na akaunti yako ya Kilo. Ingia na Akaunti ya Google iliyotumika kwa ununuzi, kisha ujaribu tena.", + "purchaseMissingOfferToken": "Ununuzi wa Google Play hauna tokeni ya ofa. Jaribu tena.", + "purchaseMissingPurchaseToken": "Ununuzi wa Google Play haukujumuisha tokeni ya ununuzi.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass kwenye Akaunti hii ya Google Play ni ya akaunti nyingine ya Kilo.", + "purchaseStartFailedPlay": "Imeshindwa kuanza ununuzi wa Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ta.json b/apps/mobile/src/i18n/locales/ta.json index d00b6caa02..b5fffcb41d 100644 --- a/apps/mobile/src/i18n/locales/ta.json +++ b/apps/mobile/src/i18n/locales/ta.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "இந்த Apple கணக்கில் உள்ள Kilo Pass வேறொரு Kilo கணக்கைச் சேர்ந்தது.", "couldNotConnectToAppStore": "App Store உடன் இணைக்க முடியவில்லை. உங்கள் இணைப்பைச் சரிபார்த்து மீண்டும் முயற்சிக்கவும்.", "noMatchingProducts": "App Store பொருந்தக்கூடிய Kilo Pass தயாரிப்புகளை எதுவும் திருப்பி அனுப்பவில்லை.", - "purchaseMissingSignedTransaction": "App Store வாங்குதலில் கையொப்பமிட்ட பரிவர்த்தனை JWS இல்லை." + "purchaseMissingSignedTransaction": "App Store வாங்குதலில் கையொப்பமிட்ட பரிவர்த்தனை JWS இல்லை.", + "couldNotConnectToPlay": "Google Play உடன் இணைக்க முடியவில்லை. உங்கள் இணைப்பைச் சரிபார்த்து மீண்டும் முயற்சிக்கவும்.", + "legalDisclosurePlay": "Kilo Pass தானாகப் புதுப்பிக்கப்படும் மாதாந்திர சந்தா. வாங்குதல் உறுதிசெய்யப்பட்டதும் உங்கள் Google Play கணக்கிற்கு கட்டணம் வசூலிக்கப்படும். நடப்புக் காலகட்டம் முடிவதற்கு 24 மணிநேரத்திற்கு முன்னர் ரத்து செய்யப்படாவிட்டால், சந்தாக்கள் ஒவ்வொரு மாதமும் காட்டப்படும் விலையில் தானாகவே புதுப்பிக்கப்படும். உங்கள் Google Play கணக்கு அமைப்புகளில் எப்போது வேண்டுமானாலும் நிர்வகிக்கவும் அல்லது ரத்து செய்யவும்.", + "manageFailedPlay": "Google Play சந்தா நிர்வாகத்தைத் திறக்க முடியவில்லை.", + "noMatchingProductsPlay": "Google Play பொருந்தக்கூடிய Kilo Pass தயாரிப்புகளை எதுவும் திருப்பி அனுப்பவில்லை.", + "opensPlayManagement": "Google Play சந்தா நிர்வாகத்தைத் திறக்கிறது.", + "otherAccountCopyPlay": "இந்த Google Play கணக்கில் உள்ள Kilo Pass வேறொரு Kilo கணக்கைச் சேர்ந்தது. அதை நிர்வகிக்க அந்த Kilo கணக்கில் உள்நுழையவும்.", + "productsCouldNotLoadPlay": "Google Playஇலிருந்து Kilo Pass தயாரிப்புகளை ஏற்ற முடியவில்லை.", + "productsUnavailablePlay": "Google Play தயாரிப்புகள் கிடைக்கவில்லை", + "purchaseDifferentAccountPlay": "இந்த Google Play வாங்குதல் உங்கள் Kilo கணக்குடன் இணைக்கப்படவில்லை. வாங்குதலுக்குப் பயன்படுத்திய Google கணக்கில் உள்நுழைந்து, பின்னர் மீண்டும் முயற்சிக்கவும்.", + "purchaseMissingOfferToken": "Google Play வாங்குதலில் offer token இல்லை. மீண்டும் முயற்சிக்கவும்.", + "purchaseMissingPurchaseToken": "Google Play வாங்குதலில் purchase token சேர்க்கப்படவில்லை.", + "purchaseOwnedByAnotherAccountPlay": "இந்த Google Play கணக்கில் உள்ள Kilo Pass வேறொரு Kilo கணக்கைச் சேர்ந்தது.", + "purchaseStartFailedPlay": "Google Play வாங்குதலைத் தொடங்க முடியவில்லை." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/te.json b/apps/mobile/src/i18n/locales/te.json index d915ffb104..0cfad2fc5f 100644 --- a/apps/mobile/src/i18n/locales/te.json +++ b/apps/mobile/src/i18n/locales/te.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "ఈ యాపిల్ ఖాతాలోని Kilo Pass వేరే Kilo ఖాతాకు చెందుతుంది.", "couldNotConnectToAppStore": "App Storeకు కనెక్ట్ చేయలేకపోయింది. మీ కనెక్షన్ను తనిఖీ చేసి మళ్ళీ ప్రయత్నించండి.", "noMatchingProducts": "App Store సరిపోలే Kilo Pass ఉత్పత్తులను ఏవీ తిరిగి ఇవ్వలేదు.", - "purchaseMissingSignedTransaction": "App Store కొనుగోలులో సంతకం చేసిన లావాదేవీ JWS చేర్చబడలేదు." + "purchaseMissingSignedTransaction": "App Store కొనుగోలులో సంతకం చేసిన లావాదేవీ JWS చేర్చబడలేదు.", + "couldNotConnectToPlay": "Google Playకి కనెక్ట్ చేయలేకపోయాము. మీ కనెక్షన్ను తనిఖీ చేసి మళ్లీ ప్రయత్నించండి.", + "legalDisclosurePlay": "Kilo Pass అనేది స్వయంచాలకంగా పునరుద్ధరించబడే నెలవారీ చందా. కొనుగోలు నిర్ధారణ సమయంలో చెల్లింపు మీ Google Play ఖాతాకు వసూలు చేయబడుతుంది. ప్రస్తుత వ్యవధి ముగిసే 24 గంటల కంటే ముందు రద్దు చేయకపోతే చందాలు ప్రదర్శించిన ధరకు ప్రతి నెల స్వయంచాలకంగా పునరుద్ధరించబడతాయి. మీ Google Play ఖాతా సెట్టింగులలో ఎప్పుడైనా నిర్వహించండి లేదా రద్దు చేయండి.", + "manageFailedPlay": "Google Play చందా నిర్వహణను తెరవడంలో విఫలమైంది.", + "noMatchingProductsPlay": "Google Play సరిపోలే Kilo Pass ఉత్పత్తులను ఏవీ తిరిగి ఇవ్వలేదు.", + "opensPlayManagement": "Google Play చందా నిర్వహణను తెరుస్తుంది.", + "otherAccountCopyPlay": "ఈ Google Play ఖాతాలోని Kilo Pass వేరే Kilo ఖాతాకు చెందుతుంది. దానిని నిర్వహించడానికి ఆ Kilo ఖాతాతో సైన్ ఇన్ చేయండి.", + "productsCouldNotLoadPlay": "Google Play నుండి Kilo Pass ఉత్పత్తులను లోడ్ చేయలేకపోయాము.", + "productsUnavailablePlay": "Google Play ఉత్పత్తులు అందుబాటులో లేవు", + "purchaseDifferentAccountPlay": "ఈ Google Play కొనుగోలు మీ Kilo ఖాతాతో లింక్ చేయబడలేదు. కొనుగోలు కోసం ఉపయోగించిన Google ఖాతాతో సైన్ ఇన్ చేసి, మళ్లీ ప్రయత్నించండి.", + "purchaseMissingOfferToken": "Google Play కొనుగోలులో ఆఫర్ టోకెన్ లేదు. మళ్లీ ప్రయత్నించండి.", + "purchaseMissingPurchaseToken": "Google Play కొనుగోలులో కొనుగోలు టోకెన్ చేర్చబడలేదు.", + "purchaseOwnedByAnotherAccountPlay": "ఈ Google Play ఖాతాలోని Kilo Pass వేరే Kilo ఖాతాకు చెందుతుంది.", + "purchaseStartFailedPlay": "Google Play కొనుగోలును ప్రారంభించడంలో విఫలమైంది." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/th.json b/apps/mobile/src/i18n/locales/th.json index 6400448def..8792e0e55e 100644 --- a/apps/mobile/src/i18n/locales/th.json +++ b/apps/mobile/src/i18n/locales/th.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass ใน Apple Account นี้เป็นของบัญชี Kilo อื่น", "couldNotConnectToAppStore": "ไม่สามารถเชื่อมต่อกับ App Store ได้ ตรวจสอบการเชื่อมต่อของคุณแล้วลองอีกครั้ง", "noMatchingProducts": "App Store ไม่ส่งคืนผลิตภัณฑ์ Kilo Pass ที่ตรงกัน", - "purchaseMissingSignedTransaction": "การซื้อใน App Store ไม่รวมธุรกรรม JWS ที่ลงนาม" + "purchaseMissingSignedTransaction": "การซื้อใน App Store ไม่รวมธุรกรรม JWS ที่ลงนาม", + "couldNotConnectToPlay": "ไม่สามารถเชื่อมต่อกับ Google Play ได้ ตรวจสอบการเชื่อมต่อของคุณแล้วลองอีกครั้ง", + "legalDisclosurePlay": "Kilo Pass เป็นการสมัครสมาชิกรายเดือนที่ต่ออายุอัตโนมัติ ค่าธรรมเนียมจะถูกเรียกเก็บจากบัญชี Google Play ของคุณเมื่อยืนยันการซื้อ การสมัครสมาชิกจะต่ออายุอัตโนมัติทุกเดือนในราคาที่แสดง เว้นแต่จะยกเลิกอย่างน้อย 24 ชั่วโมงก่อนสิ้นสุดรอบปัจจุบัน จัดการหรือยกเลิกได้ทุกเมื่อในการตั้งค่าบัญชี Google Play", + "manageFailedPlay": "เปิดการจัดการการสมัครสมาชิก Google Play ไม่สำเร็จ", + "noMatchingProductsPlay": "Google Play ไม่ส่งคืนผลิตภัณฑ์ Kilo Pass ที่ตรงกัน", + "opensPlayManagement": "เปิดการจัดการการสมัครสมาชิก Google Play", + "otherAccountCopyPlay": "Kilo Pass ในบัญชี Google Play นี้เป็นของบัญชี Kilo อื่น ลงชื่อเข้าใช้บัญชี Kilo นั้นเพื่อจัดการ", + "productsCouldNotLoadPlay": "โหลดผลิตภัณฑ์ Kilo Pass จาก Google Play ไม่สำเร็จ", + "productsUnavailablePlay": "ผลิตภัณฑ์ Google Play ไม่พร้อมใช้งาน", + "purchaseDifferentAccountPlay": "การซื้อใน Google Play นี้ไม่ได้เชื่อมโยงกับบัญชี Kilo ของคุณ ลงชื่อเข้า Google Account ที่ใช้สำหรับการซื้อ แล้วลองอีกครั้ง", + "purchaseMissingOfferToken": "การซื้อใน Google Play ไม่มี offer token ลองอีกครั้ง", + "purchaseMissingPurchaseToken": "การซื้อใน Google Play ไม่มี purchase token", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass ในบัญชี Google Play นี้เป็นของบัญชี Kilo อื่น", + "purchaseStartFailedPlay": "เริ่มการซื้อใน Google Play ไม่สำเร็จ" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/tr.json b/apps/mobile/src/i18n/locales/tr.json index 49ba4c131a..62d151d507 100644 --- a/apps/mobile/src/i18n/locales/tr.json +++ b/apps/mobile/src/i18n/locales/tr.json @@ -2396,7 +2396,20 @@ "purchaseOwnedByAnotherAccount": "Bu Apple Hesabındaki Kilo Pass farklı bir Kilo hesabına ait.", "couldNotConnectToAppStore": "App Store'a bağlanılamadı. Bağlantınızı kontrol edin ve tekrar deneyin.", "noMatchingProducts": "App Store eşleşen Kilo Pass ürünü döndürmedi.", - "purchaseMissingSignedTransaction": "App Store satın alımı imzalı bir işlem JWS'si içermiyor." + "purchaseMissingSignedTransaction": "App Store satın alımı imzalı bir işlem JWS'si içermiyor.", + "couldNotConnectToPlay": "Google Play'e bağlanılamadı. Bağlantınızı kontrol edin ve tekrar deneyin.", + "legalDisclosurePlay": "Kilo Pass, otomatik yenilenen aylık bir aboneliktir. Ödeme, satın alma onayında Google Play hesabınıza yansıtılır. Abonelikler, geçerli dönemin bitiminden en az 24 saat önce iptal edilmediği sürece her ay gösterilen fiyattan otomatik yenilenir. Google Play hesap ayarlarınızdan istediğiniz zaman yönetin veya iptal edin.", + "manageFailedPlay": "Google Play abonelik yönetimi açılamadı.", + "noMatchingProductsPlay": "Google Play eşleşen Kilo Pass ürünü döndürmedi.", + "opensPlayManagement": "Google Play abonelik yönetimini açar.", + "otherAccountCopyPlay": "Bu Google Play hesabındaki Kilo Pass farklı bir Kilo hesabına ait. Yönetmek için o Kilo hesabıyla oturum açın.", + "productsCouldNotLoadPlay": "Kilo Pass ürünleri Google Play'den yüklenemedi.", + "productsUnavailablePlay": "Google Play ürünleri kullanılamıyor", + "purchaseDifferentAccountPlay": "Bu Google Play satın alımı Kilo hesabınıza bağlı değil. Satın alım için kullanılan Google hesabıyla oturum açın, sonra tekrar deneyin.", + "purchaseMissingOfferToken": "Google Play satın alımında bir teklif tokeni eksik. Tekrar deneyin.", + "purchaseMissingPurchaseToken": "Google Play satın alımı bir satın alma tokeni içermiyor.", + "purchaseOwnedByAnotherAccountPlay": "Bu Google Play hesabındaki Kilo Pass farklı bir Kilo hesabına ait.", + "purchaseStartFailedPlay": "Google Play satın alımı başlatılamadı." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/uk.json b/apps/mobile/src/i18n/locales/uk.json index 83d738722a..1651f2df7b 100644 --- a/apps/mobile/src/i18n/locales/uk.json +++ b/apps/mobile/src/i18n/locales/uk.json @@ -2422,7 +2422,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass на цьому обліковому записі Apple належить іншому обліковому запису Kilo.", "couldNotConnectToAppStore": "Не вдалося підключитися до App Store. Перевірте з'єднання та спробуйте ще раз.", "noMatchingProducts": "App Store не повернув відповідних продуктів Kilo Pass.", - "purchaseMissingSignedTransaction": "Покупка в App Store не містила підписаної транзакції JWS." + "purchaseMissingSignedTransaction": "Покупка в App Store не містила підписаної транзакції JWS.", + "couldNotConnectToPlay": "Не вдалося з'єднатися з Google Play. Перевірте з'єднання та спробуйте ще раз.", + "legalDisclosurePlay": "Kilo Pass — це щомісячна підписка з автоматичним поновленням. Платіж стягується з вашого облікового запису Google Play під час підтвердження покупки. Підписки автоматично поновлюються щомісяця за вказаною ціною, якщо не скасувати їх щонайменше за 24 години до закінчення поточного періоду. Керуйте або скасовуйте підписку будь-коли в налаштуваннях облікового запису Google Play.", + "manageFailedPlay": "Не вдалося відкрити керування підпискою Google Play.", + "noMatchingProductsPlay": "Google Play не повернув жодних відповідних продуктів Kilo Pass.", + "opensPlayManagement": "Відкриває керування підпискою Google Play.", + "otherAccountCopyPlay": "Kilo Pass у цьому обліковому записі Google Play належить іншому обліковому запису Kilo. Увійдіть у цей обліковий запис Kilo, щоб керувати ним.", + "productsCouldNotLoadPlay": "Не вдалося завантажити продукти Kilo Pass із Google Play.", + "productsUnavailablePlay": "Продукти Google Play недоступні", + "purchaseDifferentAccountPlay": "Ця покупка в Google Play не пов'язана з вашим обліковим записом Kilo. Увійдіть в обліковий запис Google, використаний для покупки, і спробуйте ще раз.", + "purchaseMissingOfferToken": "У покупці Google Play бракує маркера пропозиції. Спробуйте ще раз.", + "purchaseMissingPurchaseToken": "Покупка Google Play не містила маркера покупки.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass у цьому обліковому записі Google Play належить іншому обліковому запису Kilo.", + "purchaseStartFailedPlay": "Не вдалося розпочати покупку в Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/ur.json b/apps/mobile/src/i18n/locales/ur.json index e50c506b19..001215d8fa 100644 --- a/apps/mobile/src/i18n/locales/ur.json +++ b/apps/mobile/src/i18n/locales/ur.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "اس Apple اکاؤنٹ پر Kilo Pass کسی دوسرے Kilo اکاؤنٹ سے تعلق رکھتا ہے۔", "couldNotConnectToAppStore": "App Store سے منسلک نہیں ہو سکا۔ اپنا کنکشن چیک کریں اور دوبارہ کوشش کریں۔", "noMatchingProducts": "App Store نے مماثل Kilo Pass مصنوعات واپس نہیں کیں۔", - "purchaseMissingSignedTransaction": "App Store خریداری میں دستخط شدہ ٹرانزیکشن JWS شامل نہیں تھی۔" + "purchaseMissingSignedTransaction": "App Store خریداری میں دستخط شدہ ٹرانزیکشن JWS شامل نہیں تھی۔", + "couldNotConnectToPlay": "Google Play سے منسلک نہیں ہو سکا۔ اپنا کنکشن چیک کریں اور دوبارہ کوشش کریں۔", + "legalDisclosurePlay": "Kilo Pass خودکار تجدید کے ساتھ ماہانہ سبسکرپشن ہے۔ ادائیگی خریداری کی تصدیق پر آپ کے Google Play اکاؤنٹ سے لی جاتی ہے۔ سبسکرپشنز ہر ماہ دکھائی گئی قیمت پر خود بخود تجدید ہوتی ہیں جب تک کہ موجودہ مدت ختم ہونے سے کم از کم 24 گھنٹے پہلے منسوخ نہ کی جائیں۔ اپنی Google Play اکاؤنٹ کی ترتیبات میں کسی بھی وقت منظم یا منسوخ کریں۔", + "manageFailedPlay": "Google Play سبسکرپشن انتظام کھولنے میں ناکامی۔", + "noMatchingProductsPlay": "Google Play نے مماثل Kilo Pass مصنوعات واپس نہیں کیں۔", + "opensPlayManagement": "Google Play سبسکرپشن انتظام کھولتا ہے۔", + "otherAccountCopyPlay": "اس Google Play اکاؤنٹ پر Kilo Pass کسی دوسرے Kilo اکاؤنٹ سے تعلق رکھتا ہے۔ اسے منظم کرنے کے لیے اس Kilo اکاؤنٹ میں سائن ان کریں۔", + "productsCouldNotLoadPlay": "Kilo Pass مصنوعات Google Play سے لوڈ نہیں ہو سکیں۔", + "productsUnavailablePlay": "Google Play مصنوعات دستیاب نہیں", + "purchaseDifferentAccountPlay": "یہ Google Play خریداری آپ کے Kilo اکاؤنٹ سے منسلک نہیں ہے۔ خریداری کے لیے استعمال شدہ Google اکاؤنٹ میں سائن ان کریں، پھر دوبارہ کوشش کریں۔", + "purchaseMissingOfferToken": "Google Play خریداری میں آفر ٹوکن غائب ہے۔ دوبارہ کوشش کریں۔", + "purchaseMissingPurchaseToken": "Google Play خریداری میں خریداری ٹوکن شامل نہیں تھا۔", + "purchaseOwnedByAnotherAccountPlay": "اس Google Play اکاؤنٹ پر Kilo Pass کسی دوسرے Kilo اکاؤنٹ سے تعلق رکھتا ہے۔", + "purchaseStartFailedPlay": "Google Play خریداری شروع کرنے میں ناکامی۔" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/uz.json b/apps/mobile/src/i18n/locales/uz.json index a6d54190b3..f96948b5d1 100644 --- a/apps/mobile/src/i18n/locales/uz.json +++ b/apps/mobile/src/i18n/locales/uz.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Bu Apple hisobidagi Kilo Pass boshqa Kilo hisobiga tegishli.", "couldNotConnectToAppStore": "App Store'ga ulanib bo'lmadi. Ulanishingizni tekshiring va qayta urinib ko'ring.", "noMatchingProducts": "App Store tomonidan mos Kilo Pass mahsulotlari qaytarilmadi.", - "purchaseMissingSignedTransaction": "App Store xaridi imzolangan tranzaksiya JWS'ini o'z ichiga olmadi." + "purchaseMissingSignedTransaction": "App Store xaridi imzolangan tranzaksiya JWS'ini o'z ichiga olmadi.", + "couldNotConnectToPlay": "Google Play'ga ulanib bo'lmadi. Ulanishingizni tekshiring va qayta urinib ko'ring.", + "legalDisclosurePlay": "Kilo Pass avtomatik yangilanadigan oylik obuna hisoblanadi. To'lov xaridni tasdiqlashda Google Play hisobingizdan undiriladi. Obunalar har oy ko'rsatilgan narxda avtomatik yangilanadi, agar joriy davr tugashidan kamida 24 soat oldin bekor qilinmasa. Istiagan paytda Google Play hisob sozlamalaringizda boshqaring yoki bekor qiling.", + "manageFailedPlay": "Google Play obuna boshqaruvini ochib bo'lmadi.", + "noMatchingProductsPlay": "Google Play tomonidan mos Kilo Pass mahsulotlari qaytarilmadi.", + "opensPlayManagement": "Google Play obuna boshqaruvini ochadi.", + "otherAccountCopyPlay": "Bu Google Play hisobidagi Kilo Pass boshqa Kilo hisobiga tegishli. Uni boshqarish uchun o'sha Kilo hisobiga kiring.", + "productsCouldNotLoadPlay": "Kilo Pass mahsulotlarini Google Play'dan yuklab bo'lmadi.", + "productsUnavailablePlay": "Google Play mahsulotlari mavjud emas", + "purchaseDifferentAccountPlay": "Bu Google Play xaridi Kilo hisobingizga bog'lanmagan. Xarid uchun ishlatilgan Google hisobiga kiring va qayta urinib ko'ring.", + "purchaseMissingOfferToken": "Google Play xaridida taklif tokeni yo'q. Qayta urinib ko'ring.", + "purchaseMissingPurchaseToken": "Google Play xaridi xarid tokenini o'z ichiga olmadi.", + "purchaseOwnedByAnotherAccountPlay": "Bu Google Play hisobidagi Kilo Pass boshqa Kilo hisobiga tegishli.", + "purchaseStartFailedPlay": "Google Play xaridini boshlab bo'lmadi." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/vi.json b/apps/mobile/src/i18n/locales/vi.json index 5363b5eaef..a0bd94c3be 100644 --- a/apps/mobile/src/i18n/locales/vi.json +++ b/apps/mobile/src/i18n/locales/vi.json @@ -2396,7 +2396,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass trên Tài khoản Apple này thuộc về một tài khoản Kilo khác.", "couldNotConnectToAppStore": "Không thể kết nối với App Store. Kiểm tra kết nối của bạn và thử lại.", "noMatchingProducts": "App Store không trả về sản phẩm Kilo Pass nào phù hợp.", - "purchaseMissingSignedTransaction": "Giao dịch mua App Store không bao gồm JWS giao dịch đã ký." + "purchaseMissingSignedTransaction": "Giao dịch mua App Store không bao gồm JWS giao dịch đã ký.", + "couldNotConnectToPlay": "Không thể kết nối với Google Play. Kiểm tra kết nối của bạn và thử lại.", + "legalDisclosurePlay": "Kilo Pass là gói đăng ký hàng tháng tự gia hạn. Khoản thanh toán được tính vào Tài khoản Google Play của bạn khi xác nhận mua. Gói đăng ký tự động gia hạn mỗi tháng theo giá đã hiển thị trừ khi bạn hủy ít nhất 24 giờ trước khi kết thúc kỳ hiện tại. Quản lý hoặc hủy bất kỳ lúc nào trong cài đặt tài khoản Google Play của bạn.", + "manageFailedPlay": "Không thể mở phần quản lý gói đăng ký Google Play.", + "noMatchingProductsPlay": "Không có sản phẩm Kilo Pass phù hợp nào do Google Play trả về.", + "opensPlayManagement": "Mở phần quản lý gói đăng ký Google Play.", + "otherAccountCopyPlay": "Kilo Pass trên Tài khoản Google Play này thuộc về một tài khoản Kilo khác. Hãy đăng nhập vào tài khoản Kilo đó để quản lý.", + "productsCouldNotLoadPlay": "Không thể tải sản phẩm Kilo Pass từ Google Play.", + "productsUnavailablePlay": "Sản phẩm Google Play không khả dụng", + "purchaseDifferentAccountPlay": "Giao dịch mua Google Play này chưa được liên kết với tài khoản Kilo của bạn. Hãy đăng nhập bằng tài khoản Google đã dùng cho giao dịch mua, sau đó thử lại.", + "purchaseMissingOfferToken": "Giao dịch mua Google Play thiếu mã ưu đãi. Thử lại.", + "purchaseMissingPurchaseToken": "Giao dịch mua Google Play không bao gồm mã thông báo giao dịch mua.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass trên Tài khoản Google Play này thuộc về một tài khoản Kilo khác.", + "purchaseStartFailedPlay": "Không thể bắt đầu giao dịch mua Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/yo.json b/apps/mobile/src/i18n/locales/yo.json index 43e2cca57c..0d99aa70b8 100644 --- a/apps/mobile/src/i18n/locales/yo.json +++ b/apps/mobile/src/i18n/locales/yo.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "Kilo Pass lori Apple Account yii jẹ ti Kilo akọọlẹ miiran.", "couldNotConnectToAppStore": "A ko le sopọ si App Store. Ṣayẹwo asopọ rẹ ki o gbiyanju lẹẹkansi.", "noMatchingProducts": "Ko si awọn ọja Kilo Pass ti o baamu ti App Store da pada.", - "purchaseMissingSignedTransaction": "Rírà App Store kò ní JWS ìṣìṣẹ́ tí a fọwọ́ sí." + "purchaseMissingSignedTransaction": "Rírà App Store kò ní JWS ìṣìṣẹ́ tí a fọwọ́ sí.", + "couldNotConnectToPlay": "A ko le sopọ si Google Play. Ṣayẹwo asopọ rẹ ki o gbiyanju lẹẹkansi.", + "legalDisclosurePlay": "Kilo Pass jẹ́ ìfọwọ́sílẹ̀ oṣooṣu tó máa ń tún ara rẹ̀ ṣe ní àìdáni. Wọ́n máa ń gba owó sí Google Play àkọọ́lẹ̀ rẹ ní ìfìdírí ìrà. Àwọn ìfọwọ́sílẹ̀ máa ń tún ara wọn ṣe lọ́ṣọ̀ọ̀so ní iye tí a fi hàn, àyàfi bí a kò bá fagilé rẹ̀ ni ó kéré tán wákàtí 24 kí ìgbà tí ó ń lọ kí ó parí. Ṣàkóso tàbí fagilé rẹ̀ nígbàkúgbà nínú àwọn ètò àkọọ́lẹ̀ Google Play rẹ.", + "manageFailedPlay": "Kuna lati ṣii iṣakoso ìfọwọsowọpọ Google Play.", + "noMatchingProductsPlay": "Ko si awọn ọja Kilo Pass ti o baamu ti Google Play da pada.", + "opensPlayManagement": "Ṣii iṣakoso ìfọwọsowọpọ Google Play.", + "otherAccountCopyPlay": "Kilo Pass lori Google Play àkọọ́lẹ̀ yii jẹ ti Kilo àkọọ́lẹ̀ miiran. Wọle si Kilo àkọọ́lẹ̀ yẹn lati ṣakoso rẹ.", + "productsCouldNotLoadPlay": "A ko le ṣagbewọ awọn ọja Kilo Pass lati Google Play.", + "productsUnavailablePlay": "Awọn ọja Google Play ko si", + "purchaseDifferentAccountPlay": "Rírà Google Play yìí kò ní ìsopọ̀ sí àkọọ́lẹ̀ Kilo rẹ. Wọlé sí Google àkọọ́lẹ̀ tí a lò fún rírà náà, kí o sì gbìyànjú lẹ́ẹ̀kan sí i.", + "purchaseMissingOfferToken": "Rírà Google Play kò ní offer token kan. Gbìyànjú lẹ́ẹ̀kan sí i.", + "purchaseMissingPurchaseToken": "Rírà Google Play kò ní purchase token.", + "purchaseOwnedByAnotherAccountPlay": "Kilo Pass lori Google Play àkọọ́lẹ̀ yii jẹ ti Kilo àkọọ́lẹ̀ miiran.", + "purchaseStartFailedPlay": "Kùnà láti bẹ̀rẹ̀ rírà Google Play." }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/zh-Hans.json b/apps/mobile/src/i18n/locales/zh-Hans.json index 069add3614..358fb98d82 100644 --- a/apps/mobile/src/i18n/locales/zh-Hans.json +++ b/apps/mobile/src/i18n/locales/zh-Hans.json @@ -2396,7 +2396,20 @@ "purchaseOwnedByAnotherAccount": "此 Apple 账户上的 Kilo Pass 属于另一个 Kilo 账户。", "couldNotConnectToAppStore": "无法连接到 App Store。请检查您的网络连接后重试。", "noMatchingProducts": "App Store 未返回匹配的 Kilo Pass 产品。", - "purchaseMissingSignedTransaction": "App Store 购买未包含已签名的交易 JWS。" + "purchaseMissingSignedTransaction": "App Store 购买未包含已签名的交易 JWS。", + "couldNotConnectToPlay": "无法连接到 Google Play。请检查您的连接,然后重试。", + "legalDisclosurePlay": "Kilo Pass 是可自动续订的月度订阅。付款在购买确认时从您的 Google Play 账户扣费。订阅每月按所示价格自动续订,除非在当前周期结束前至少 24 小时取消。可随时在您的 Google Play 账户设置中管理或取消。", + "manageFailedPlay": "无法打开 Google Play 订阅管理。", + "noMatchingProductsPlay": "Google Play 未返回匹配的 Kilo Pass 产品。", + "opensPlayManagement": "打开 Google Play 订阅管理。", + "otherAccountCopyPlay": "此 Google Play 账户上的 Kilo Pass 属于另一个 Kilo 账户。请登录该 Kilo 账户进行管理。", + "productsCouldNotLoadPlay": "无法从 Google Play 加载 Kilo Pass 产品。", + "productsUnavailablePlay": "Google Play 产品不可用", + "purchaseDifferentAccountPlay": "此 Google Play 购买未关联到您的 Kilo 账户。请使用购买时所用的 Google 账户登录,然后重试。", + "purchaseMissingOfferToken": "Google Play 购买缺少优惠令牌。请重试。", + "purchaseMissingPurchaseToken": "Google Play 购买未包含购买令牌。", + "purchaseOwnedByAnotherAccountPlay": "此 Google Play 账户上的 Kilo Pass 属于另一个 Kilo 账户。", + "purchaseStartFailedPlay": "无法启动 Google Play 购买。" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/zh-Hant.json b/apps/mobile/src/i18n/locales/zh-Hant.json index 9ef778efc4..5794489181 100644 --- a/apps/mobile/src/i18n/locales/zh-Hant.json +++ b/apps/mobile/src/i18n/locales/zh-Hant.json @@ -2396,7 +2396,20 @@ "purchaseOwnedByAnotherAccount": "此 Apple 帳戶上的 Kilo Pass 屬於另一個 Kilo 帳戶。", "couldNotConnectToAppStore": "無法連線到 App Store。請檢查連線後再試一次。", "noMatchingProducts": "App Store 沒有傳回相符的 Kilo Pass 產品。", - "purchaseMissingSignedTransaction": "App Store 購買未包含已簽署的交易 JWS。" + "purchaseMissingSignedTransaction": "App Store 購買未包含已簽署的交易 JWS。", + "couldNotConnectToPlay": "無法連線至 Google Play。請檢查連線後再試一次。", + "legalDisclosurePlay": "Kilo Pass 是自動續訂的每月訂閱。款項會在購買確認時從您的 Google Play 帳戶扣款。除非在目前週期結束前至少 24 小時取消,否則訂閱會以顯示的價格每月自動續訂。您可以隨時在 Google Play 帳戶設定中管理或取消。", + "manageFailedPlay": "無法開啟 Google Play 訂閱管理。", + "noMatchingProductsPlay": "Google Play 沒有傳回相符的 Kilo Pass 產品。", + "opensPlayManagement": "開啟 Google Play 訂閱管理。", + "otherAccountCopyPlay": "此 Google Play 帳戶上的 Kilo Pass 屬於另一個 Kilo 帳戶。請登入該 Kilo 帳戶以進行管理。", + "productsCouldNotLoadPlay": "無法從 Google Play 載入 Kilo Pass 產品。", + "productsUnavailablePlay": "Google Play 產品無法使用", + "purchaseDifferentAccountPlay": "此 Google Play 購買未連結至您的 Kilo 帳戶。請登入用於購買的 Google 帳戶,然後再試一次。", + "purchaseMissingOfferToken": "Google Play 購買缺少優惠代碼。請再試一次。", + "purchaseMissingPurchaseToken": "Google Play 購買未包含購買權杖。", + "purchaseOwnedByAnotherAccountPlay": "此 Google Play 帳戶上的 Kilo Pass 屬於另一個 Kilo 帳戶。", + "purchaseStartFailedPlay": "無法開始 Google Play 購買。" }, "consent": { "kilo": "Kilo", diff --git a/apps/mobile/src/i18n/locales/zu.json b/apps/mobile/src/i18n/locales/zu.json index 143606d4a4..e355fe7a6c 100644 --- a/apps/mobile/src/i18n/locales/zu.json +++ b/apps/mobile/src/i18n/locales/zu.json @@ -2850,7 +2850,20 @@ "purchaseOwnedByAnotherAccount": "I-Kilo Pass kule Apple Account ingeyenye i-akhawunti ye-Kilo.", "couldNotConnectToAppStore": "Asikwazanga ukuxhuma ku-App Store. Bheka ukuxhumana kwakho bese uzama futhi.", "noMatchingProducts": "Akukho mikhiqizo ye-Kilo Pass ehambisanayo ebuyiswe yi-App Store.", - "purchaseMissingSignedTransaction": "Ukuthenga kwe-App Store akuzange kufake i-JWS esayiniwe yenqubo." + "purchaseMissingSignedTransaction": "Ukuthenga kwe-App Store akuzange kufake i-JWS esayiniwe yenqubo.", + "couldNotConnectToPlay": "Ayikwazanga ukuxhuma ku-Google Play. Bheka ukuxhumana kwakho bese uzama futhi.", + "legalDisclosurePlay": "I-Kilo Pass iwukubhalisela kwanyanga ngalinye okuzivuselelayo ngokuzenzakalelayo. Inkokhelo ikhokhiswa ku-akhawunti yakho ye-Google Play lapho kuqinisekiswa ukuthenga. Ukubhalisela kuzivuselela ngokuzenzakalelayo nyanga zonke ngentengo ebonisiwe ngaphandle uma kukhanselwe okungenani amahora angu-24 ngaphambi kokuphela kwesikhathi samanje. Lawula noma ukhansela noma nini kuzilungiselelo zekhawunti yakho ye-Google Play.", + "manageFailedPlay": "Ukwenza ngaphandle ukuphathwa kokubhalisa kwe-Google Play kwehlulekile.", + "noMatchingProductsPlay": "Akukho mikhiqizo ye-Kilo Pass ehambisanayo ebuyiswe yi-Google Play.", + "opensPlayManagement": "Ivula ukuphathwa kokubhalisa kwe-Google Play.", + "otherAccountCopyPlay": "I-Kilo Pass kule akhawunti ye-Google Play ingeyenye i-akhawunti ye-Kilo. Ngena kuleyo akhawunti ye-Kilo ukuze uyiphathe.", + "productsCouldNotLoadPlay": "Imikhiqizo ye-Kilo Pass ayikwazanga ukulayishwa ku-Google Play.", + "productsUnavailablePlay": "Imikhiqizo ye-Google Play ayitholakali", + "purchaseDifferentAccountPlay": "Lokhu kuthengwa kwe-Google Play akuxhunyiwe ku-akhawunti yakho ye-Kilo. Ngena nge-Google Account esetshenziselwe ukuthenga, bese uzama futhi.", + "purchaseMissingOfferToken": "Ukuthenga kwe-Google Play akunayo i-otha token. Zama futhi.", + "purchaseMissingPurchaseToken": "Ukuthenga kwe-Google Play akufakanga i-purchase token.", + "purchaseOwnedByAnotherAccountPlay": "I-Kilo Pass kule akhawunti ye-Google Play ingeyenye i-akhawunti ye-Kilo.", + "purchaseStartFailedPlay": "Ukusetha ukuthenga kwe-Google Play kwehlulekile." }, "consent": { "kilo": "I-Kilo", From 6d3125e905083af97d155f4cad4ae5dd7dedc335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Wed, 2 Sep 2026 14:11:49 +0200 Subject: [PATCH 5/7] fix(mobile): repair Kilo Pass store error copy and sheet text Show the app's own localized message when the store SDK fails to load products. The SDK message ("Failed to query product") reached the user and overrode the localized copy. Make the products retry a button. The whole error card was the press target, and it carried a second, different retry label. Drop the KiloClaw mention from the subscribe sheet description in all 87 catalogs. The trailing product list goes with it. The expo-iap 5.x Purchase type no longer carries `platform`; the Play purchase test fixtures set it. Remove the dead field. --- .../kilo-pass/kilo-pass-subscription-card.tsx | 10 +++-- .../kilo-pass-subscription-screen.test.ts | 2 +- .../kilo-pass-subscription-screen.tsx | 38 ++++++++++--------- apps/mobile/src/i18n/locales/af.json | 2 +- apps/mobile/src/i18n/locales/am.json | 2 +- apps/mobile/src/i18n/locales/ar.json | 2 +- apps/mobile/src/i18n/locales/az.json | 2 +- apps/mobile/src/i18n/locales/be.json | 2 +- apps/mobile/src/i18n/locales/bg.json | 2 +- apps/mobile/src/i18n/locales/bn.json | 2 +- apps/mobile/src/i18n/locales/bs.json | 2 +- apps/mobile/src/i18n/locales/ca.json | 2 +- apps/mobile/src/i18n/locales/ckb.json | 2 +- apps/mobile/src/i18n/locales/cs.json | 2 +- apps/mobile/src/i18n/locales/cy.json | 2 +- apps/mobile/src/i18n/locales/da.json | 2 +- apps/mobile/src/i18n/locales/de.json | 2 +- apps/mobile/src/i18n/locales/el.json | 2 +- apps/mobile/src/i18n/locales/en.json | 2 +- apps/mobile/src/i18n/locales/es.json | 2 +- apps/mobile/src/i18n/locales/et.json | 2 +- apps/mobile/src/i18n/locales/eu.json | 2 +- apps/mobile/src/i18n/locales/fa.json | 2 +- apps/mobile/src/i18n/locales/fi.json | 2 +- apps/mobile/src/i18n/locales/fil.json | 2 +- apps/mobile/src/i18n/locales/fr.json | 2 +- apps/mobile/src/i18n/locales/ga.json | 2 +- apps/mobile/src/i18n/locales/gl.json | 2 +- apps/mobile/src/i18n/locales/gu.json | 2 +- apps/mobile/src/i18n/locales/ha.json | 2 +- apps/mobile/src/i18n/locales/he.json | 2 +- apps/mobile/src/i18n/locales/hi.json | 2 +- apps/mobile/src/i18n/locales/hr.json | 2 +- apps/mobile/src/i18n/locales/ht.json | 2 +- apps/mobile/src/i18n/locales/hu.json | 2 +- apps/mobile/src/i18n/locales/hy.json | 2 +- apps/mobile/src/i18n/locales/id.json | 2 +- apps/mobile/src/i18n/locales/ig.json | 2 +- apps/mobile/src/i18n/locales/is.json | 2 +- apps/mobile/src/i18n/locales/it.json | 2 +- apps/mobile/src/i18n/locales/ja.json | 2 +- apps/mobile/src/i18n/locales/ka.json | 2 +- apps/mobile/src/i18n/locales/kk.json | 2 +- apps/mobile/src/i18n/locales/km.json | 2 +- apps/mobile/src/i18n/locales/kn.json | 2 +- apps/mobile/src/i18n/locales/ko.json | 2 +- apps/mobile/src/i18n/locales/lo.json | 2 +- apps/mobile/src/i18n/locales/lt.json | 2 +- apps/mobile/src/i18n/locales/lv.json | 2 +- apps/mobile/src/i18n/locales/mg.json | 2 +- apps/mobile/src/i18n/locales/mi.json | 2 +- apps/mobile/src/i18n/locales/mk.json | 2 +- apps/mobile/src/i18n/locales/ml.json | 2 +- apps/mobile/src/i18n/locales/mn.json | 2 +- apps/mobile/src/i18n/locales/mr.json | 2 +- apps/mobile/src/i18n/locales/ms.json | 2 +- apps/mobile/src/i18n/locales/mt.json | 2 +- apps/mobile/src/i18n/locales/my.json | 2 +- apps/mobile/src/i18n/locales/nb.json | 2 +- apps/mobile/src/i18n/locales/ne.json | 2 +- apps/mobile/src/i18n/locales/nl.json | 2 +- apps/mobile/src/i18n/locales/om.json | 2 +- apps/mobile/src/i18n/locales/or.json | 2 +- apps/mobile/src/i18n/locales/pa.json | 2 +- apps/mobile/src/i18n/locales/pl.json | 2 +- apps/mobile/src/i18n/locales/ps.json | 2 +- apps/mobile/src/i18n/locales/pt-BR.json | 2 +- apps/mobile/src/i18n/locales/pt.json | 2 +- apps/mobile/src/i18n/locales/ro.json | 2 +- apps/mobile/src/i18n/locales/ru.json | 2 +- apps/mobile/src/i18n/locales/si.json | 2 +- apps/mobile/src/i18n/locales/sk.json | 2 +- apps/mobile/src/i18n/locales/sl.json | 2 +- apps/mobile/src/i18n/locales/so.json | 2 +- apps/mobile/src/i18n/locales/sq.json | 2 +- apps/mobile/src/i18n/locales/sr.json | 2 +- apps/mobile/src/i18n/locales/sv.json | 2 +- apps/mobile/src/i18n/locales/sw.json | 2 +- apps/mobile/src/i18n/locales/ta.json | 2 +- apps/mobile/src/i18n/locales/te.json | 2 +- apps/mobile/src/i18n/locales/th.json | 2 +- apps/mobile/src/i18n/locales/tr.json | 2 +- apps/mobile/src/i18n/locales/uk.json | 2 +- apps/mobile/src/i18n/locales/ur.json | 2 +- apps/mobile/src/i18n/locales/uz.json | 2 +- apps/mobile/src/i18n/locales/vi.json | 2 +- apps/mobile/src/i18n/locales/yo.json | 2 +- apps/mobile/src/i18n/locales/zh-Hans.json | 2 +- apps/mobile/src/i18n/locales/zh-Hant.json | 2 +- apps/mobile/src/i18n/locales/zu.json | 2 +- .../kilo-pass/store-products-loader.test.ts | 19 ++++++++++ .../lib/kilo-pass/store-products-loader.ts | 17 ++++++++- .../kilo-pass/use-store-kilo-pass-products.ts | 8 ++-- .../use-store-kilo-pass-purchase.test.tsx | 3 -- 94 files changed, 155 insertions(+), 116 deletions(-) diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-card.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-card.tsx index d25014a6e1..38809326df 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-card.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-card.tsx @@ -115,11 +115,15 @@ export function KiloPassSubscriptionCard() { if (Platform.OS === 'android') { const tier = subscription?.tier; const skuAndroid = - (tier != null ? GOOGLE_PRODUCT_ID_BY_TIER[tier as keyof typeof GOOGLE_PRODUCT_ID_BY_TIER] : undefined) ?? - 'kilopass_tier19'; + (tier != null + ? GOOGLE_PRODUCT_ID_BY_TIER[tier as keyof typeof GOOGLE_PRODUCT_ID_BY_TIER] + : undefined) ?? 'kilopass_tier19'; void (async () => { const { openPlaySubscriptionManagement } = await import('./kilo-pass-play-manage'); - await openPlaySubscriptionManagement({ skuAndroid, invalidateAfter: invalidateKiloPassState }); + await openPlaySubscriptionManagement({ + skuAndroid, + invalidateAfter: invalidateKiloPassState, + }); })(); return; } diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts index 4a6885b065..5a9afaa773 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts @@ -484,7 +484,7 @@ describe('KiloPassSubscriptionScreen', () => { const retryButton = renderer.root.find( node => - String(node.type) === 'Pressable' && + String(node.type) === 'Button' && (node.props as Record).accessibilityLabel === 'Try loading Kilo Pass products again' ); diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx index ed2b059774..0352d44faf 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx @@ -345,23 +345,11 @@ function KiloPassNativeIapContent() { ))} {!productsIsLoading && products.length === 0 && ( - { - void productsRefetch(); - }} - > + {t(isAndroid ? 'kiloPass.productsUnavailablePlay' : 'kiloPass.productsUnavailable')} - + {productsError ?? t( isAndroid @@ -369,10 +357,24 @@ function KiloPassNativeIapContent() { : 'kiloPass.productsCouldNotLoad' )} - - {productsIsRefetching ? t('kiloPass.tryingAgain') : t('common.tryAgain')} - - + + )} {!productsIsLoading && diff --git a/apps/mobile/src/i18n/locales/af.json b/apps/mobile/src/i18n/locales/af.json index 4fb3f7b828..7aa7c4e24f 100644 --- a/apps/mobile/src/i18n/locales/af.json +++ b/apps/mobile/src/i18n/locales/af.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " en erken die ", "manageFailed": "Kon nie App Store-intekeningsbestuur oopmaak nie.", "kiloPassSetup": "Kilo Pass-opstelling", - "subscriptionHeaderDescription": "'n Maandelikse intekening wat krediete by jou Kilo-saldo voeg vir die bestuur van AI-koderingsessies in Kilo App — Cloud Agents, afstandssessies en KiloClaw-gesprekke.", + "subscriptionHeaderDescription": "'n Maandelikse intekening wat krediete by jou Kilo-saldo voeg vir die bestuur van AI-koderingsessies in Kilo App.", "tierDescription": "{{price}} betaalde krediete maandeliks bygevoeg vir Kilo App-gebruik.", "subscribe": "Teken in", "subscribeDescription": "Maandelikse krediete met bonusvordering", diff --git a/apps/mobile/src/i18n/locales/am.json b/apps/mobile/src/i18n/locales/am.json index e6d5271daf..bf931d3f96 100644 --- a/apps/mobile/src/i18n/locales/am.json +++ b/apps/mobile/src/i18n/locales/am.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " እና የሚከተለውን እውቅና ይሰጣሉ፡ ", "manageFailed": "የApp Store ምዝገባ አስተዳደር መክፈት አልተሳካም።", "kiloPassSetup": "የKilo Pass ማዋቀር", - "subscriptionHeaderDescription": "ወርሃዊ ምዝገባ በKilo App ውስጥ የAI ኮዲንግ ክፍለ-ጊዜዎችን ለማስኬድ ወደ Kilo ቀሪ ሂሳብዎ ክሬዲት የሚያክል — Cloud Agents፣ የርቀት ክፍለ-ጊዜዎች እና የKiloClaw ውይይቶች።", + "subscriptionHeaderDescription": "ወርሃዊ ምዝገባ በKilo App ውስጥ የAI ኮዲንግ ክፍለ-ጊዜዎችን ለማስኬድ ወደ Kilo ቀሪ ሂሳብዎ ክሬዲት የሚያክል.", "tierDescription": "ለKilo App አጠቃቀም በየወሩ የሚጨመሩ {{price}} የተከፈለ ክሬዲቶች።", "subscribe": "ይመዝገቡ", "subscribeDescription": "ከጉርሻ እድገት ጋር ወርሃዊ ክሬዲቶች", diff --git a/apps/mobile/src/i18n/locales/ar.json b/apps/mobile/src/i18n/locales/ar.json index ecf1b0d876..05b5cc1b09 100644 --- a/apps/mobile/src/i18n/locales/ar.json +++ b/apps/mobile/src/i18n/locales/ar.json @@ -2472,7 +2472,7 @@ "legalConnectorPrivacy": " وتقر بـ ", "manageFailed": "تعذّر فتح إدارة اشتراك App Store.", "kiloPassSetup": "إعداد Kilo Pass", - "subscriptionHeaderDescription": "اشتراك شهري يضيف أرصدة إلى رصيدك في Kilo لتشغيل جلسات البرمجة بالذكاء الاصطناعي في تطبيق Kilo — وكلاء السحابة، والجلسات عن بُعد، ومحادثات KiloClaw.", + "subscriptionHeaderDescription": "اشتراك شهري يضيف أرصدة إلى رصيدك في Kilo لتشغيل جلسات البرمجة بالذكاء الاصطناعي في تطبيق Kilo.", "tierDescription": "أرصدة مدفوعة بقيمة {{price}} تُضاف شهريًا لاستخدام تطبيق Kilo.", "subscribe": "اشترك", "subscribeDescription": "أرصدة شهرية مع تقدم إضافي", diff --git a/apps/mobile/src/i18n/locales/az.json b/apps/mobile/src/i18n/locales/az.json index 31f3139dfd..ae237f8510 100644 --- a/apps/mobile/src/i18n/locales/az.json +++ b/apps/mobile/src/i18n/locales/az.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " razılaşırsınız və ", "manageFailed": "App Store abunəlik idarəetməsi açıla bilmədi.", "kiloPassSetup": "Kilo Pass quraşdırması", - "subscriptionHeaderDescription": "Kilo App-də AI kodlaşdırma sessiyalarını — Cloud Agentlər, uzaq sessiyalar və KiloClaw söhbətlərini işlətmək üçün Kilo balansınıza kredit əlavə edən aylıq abunəlik.", + "subscriptionHeaderDescription": "Kilo App-də AI kodlaşdırma sessiyalarını.", "tierDescription": "Kilo App istifadəsi üçün aylıq {{price}} ödənilmiş kredit əlavə olunur.", "subscribe": "Abunə ol", "subscribeDescription": "Bonus irəliləyişli aylıq kreditlər", diff --git a/apps/mobile/src/i18n/locales/be.json b/apps/mobile/src/i18n/locales/be.json index ce749f54bc..236a5c7e2f 100644 --- a/apps/mobile/src/i18n/locales/be.json +++ b/apps/mobile/src/i18n/locales/be.json @@ -2912,7 +2912,7 @@ "legalConnectorPrivacy": " і пацвярджаеце ", "manageFailed": "Не ўдалося адкрыць кіраванне падпіскай у App Store.", "kiloPassSetup": "Настройка Kilo Pass", - "subscriptionHeaderDescription": "Штомесячная падпіска, якая дадае крэдыты на ваш баланс Kilo для запуску AI-сеансаў праграмавання ў дадатку Kilo — Cloud Agents, аддаленыя сеансы і чаты KiloClaw.", + "subscriptionHeaderDescription": "Штомесячная падпіска, якая дадае крэдыты на ваш баланс Kilo для запуску AI-сеансаў праграмавання ў дадатку Kilo.", "tierDescription": "{{price}} аплачаных крэдытаў дадаецца штомесяц для карыстання дадаткам Kilo.", "subscribe": "Падпісацца", "subscribeDescription": "Штомесячныя крэдыты з бонусным прагрэсам", diff --git a/apps/mobile/src/i18n/locales/bg.json b/apps/mobile/src/i18n/locales/bg.json index 8be0523235..8c3b94e967 100644 --- a/apps/mobile/src/i18n/locales/bg.json +++ b/apps/mobile/src/i18n/locales/bg.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " и потвърждавате ", "manageFailed": "Неуспешно отваряне на управлението на абонамента в App Store.", "kiloPassSetup": "Настройка на Kilo Pass", - "subscriptionHeaderDescription": "Месечен абонамент, който добавя кредити към вашия Kilo баланс за стартиране на AI сесии за кодиране в приложението Kilo — Cloud Agents, отдалечени сесии и KiloClaw чатове.", + "subscriptionHeaderDescription": "Месечен абонамент, който добавя кредити към вашия Kilo баланс за стартиране на AI сесии за кодиране в приложението Kilo.", "tierDescription": "{{price}} платени кредити, добавени месечно за използване на приложението Kilo.", "subscribe": "Абонирайте се", "subscribeDescription": "Месечни кредити с бонус прогрес", diff --git a/apps/mobile/src/i18n/locales/bn.json b/apps/mobile/src/i18n/locales/bn.json index 2a6a0210f4..587bdaf98d 100644 --- a/apps/mobile/src/i18n/locales/bn.json +++ b/apps/mobile/src/i18n/locales/bn.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " এবং স্বীকার করেন ", "manageFailed": "App Store সাবস্ক্রিপশন ব্যবস্থাপনা খুলতে ব্যর্থ হয়েছে।", "kiloPassSetup": "Kilo Pass সেটআপ", - "subscriptionHeaderDescription": "একটি মাসিক সাবস্ক্রিপশন যা Kilo App-এ AI কোডিং সেশন চালানোর জন্য আপনার Kilo ব্যালেন্সে ক্রেডিট যোগ করে — Cloud Agents, রিমোট সেশন এবং KiloClaw চ্যাট।", + "subscriptionHeaderDescription": "একটি মাসিক সাবস্ক্রিপশন যা Kilo App-এ AI কোডিং সেশন চালানোর জন্য আপনার Kilo ব্যালেন্সে ক্রেডিট যোগ করে।", "tierDescription": "Kilo App ব্যবহারের জন্য মাসিক {{price}} প্রদত্ত ক্রেডিট যোগ করা হয়।", "subscribe": "সাবস্ক্রাইব", "subscribeDescription": "বোনাস অগ্রগতি সহ মাসিক ক্রেডিট", diff --git a/apps/mobile/src/i18n/locales/bs.json b/apps/mobile/src/i18n/locales/bs.json index c4fd55fa0a..b1a34b5282 100644 --- a/apps/mobile/src/i18n/locales/bs.json +++ b/apps/mobile/src/i18n/locales/bs.json @@ -2891,7 +2891,7 @@ "legalConnectorPrivacy": " i potvrđujete ", "manageFailed": "Upravljanje pretplatom u App Store-u nije moglo biti otvoreno.", "kiloPassSetup": "Podešavanje Kilo Passa", - "subscriptionHeaderDescription": "Mjesečna pretplata koja dodaje kredite vašem Kilo saldu za pokretanje AI sesija kodiranja u Kilo App — Cloud Agenti, udaljene sesije i KiloClaw razgovori.", + "subscriptionHeaderDescription": "Mjesečna pretplata koja dodaje kredite vašem Kilo saldu za pokretanje AI sesija kodiranja u Kilo App.", "tierDescription": "{{price}} plaćenih kredita dodaje se mjesečno za upotrebu Kilo Appa.", "subscribe": "Pretplati se", "subscribeDescription": "Mjesečni krediti s bonus napretkom", diff --git a/apps/mobile/src/i18n/locales/ca.json b/apps/mobile/src/i18n/locales/ca.json index 275f70a686..3daefaf388 100644 --- a/apps/mobile/src/i18n/locales/ca.json +++ b/apps/mobile/src/i18n/locales/ca.json @@ -2891,7 +2891,7 @@ "legalConnectorPrivacy": " i reconeixes la ", "manageFailed": "No s'ha pogut obrir la gestió de la subscripció de l'App Store.", "kiloPassSetup": "Configuració de Kilo Pass", - "subscriptionHeaderDescription": "Una subscripció mensual que afegeix crèdits al teu saldo de Kilo per executar sessions de programació d'IA a l'aplicació Kilo: Cloud Agents, sessions remotes i xats de KiloClaw.", + "subscriptionHeaderDescription": "Una subscripció mensual que afegeix crèdits al teu saldo de Kilo per executar sessions de programació d'IA a l'aplicació Kilo.", "tierDescription": "{{price}} en crèdits de pagament afegits mensualment per a l'ús de l'aplicació Kilo.", "subscribe": "Subscriu-te", "subscribeDescription": "Crèdits mensuals amb progrés de bonificació", diff --git a/apps/mobile/src/i18n/locales/ckb.json b/apps/mobile/src/i18n/locales/ckb.json index 0c3f96af67..fab34ce368 100644 --- a/apps/mobile/src/i18n/locales/ckb.json +++ b/apps/mobile/src/i18n/locales/ckb.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " و دان بەوەدا دەنێیت کە ", "manageFailed": "کردنەوەی بەڕێوەبردنی بەشداربوونی App Store سەرکەوتوو نەبوو.", "kiloPassSetup": "ڕێکخستنی Kilo Pass", - "subscriptionHeaderDescription": "بەشداربوونێکی مانگانە کە کرێدت بۆ تەوازنی Kiloـی تۆ زیاد دەکات بۆ بەڕێوەبردنی دانیشتنەکانی کۆدکردنی AI لە ئەپی Kilo — ئەجێنتەکانی هاور، دانیشتنە دوورەکان، و گفتوگۆکانی KiloClaw.", + "subscriptionHeaderDescription": "بەشداربوونێکی مانگانە کە کرێدت بۆ تەوازنی Kiloـی تۆ زیاد دەکات بۆ بەڕێوەبردنی دانیشتنەکانی کۆدکردنی AI لە ئەپی Kilo.", "tierDescription": "{{price}} کرێدتی پارەدراو بۆ بەکارهێنانی ئەپی Kilo هەر مانگێک زیاد دەکرێت.", "subscribe": "بەشداربوون", "subscribeDescription": "کرێدتی مانگانە لەگەڵ پێشکەوتنی بۆنە", diff --git a/apps/mobile/src/i18n/locales/cs.json b/apps/mobile/src/i18n/locales/cs.json index edad89fc0b..8ab54b416e 100644 --- a/apps/mobile/src/i18n/locales/cs.json +++ b/apps/mobile/src/i18n/locales/cs.json @@ -2912,7 +2912,7 @@ "legalConnectorPrivacy": " a potvrzujete ", "manageFailed": "Otevření správy předplatného v App Store se nezdařilo.", "kiloPassSetup": "Nastavení Kilo Pass", - "subscriptionHeaderDescription": "Měsíční předplatné, které přidává kredity do vašeho zůstatku Kilo pro spouštění AI programovacích relací v aplikaci Kilo — Cloud Agents, vzdálené relace a chaty KiloClaw.", + "subscriptionHeaderDescription": "Měsíční předplatné, které přidává kredity do vašeho zůstatku Kilo pro spouštění AI programovacích relací v aplikaci Kilo.", "tierDescription": "{{price}} placených kreditů přidáváno měsíčně pro použití v aplikaci Kilo.", "subscribe": "Předplatit", "subscribeDescription": "Měsíční kredity s bonusovým postupem", diff --git a/apps/mobile/src/i18n/locales/cy.json b/apps/mobile/src/i18n/locales/cy.json index 289c36f88f..bd28905316 100644 --- a/apps/mobile/src/i18n/locales/cy.json +++ b/apps/mobile/src/i18n/locales/cy.json @@ -2954,7 +2954,7 @@ "legalConnectorPrivacy": " ac yn cydnabod y ", "manageFailed": "Methodd agor rheolaeth tanysgrifiad App Store.", "kiloPassSetup": "Cyfluniad Kilo Pass", - "subscriptionHeaderDescription": "Tanysgrifiad misol sy'n ychwanegu credydau at eich balans Kilo ar gyfer rhedeg sesiynau codio AI yn Kilo App — Cloud Agents, sesiynau anghysbell, a sgyrsiau KiloClaw.", + "subscriptionHeaderDescription": "Tanysgrifiad misol sy'n ychwanegu credydau at eich balans Kilo ar gyfer rhedeg sesiynau codio AI yn Kilo App.", "tierDescription": "{{price}} o gredydau wedi'u talu yn cael eu hychwanegu'n fisol ar gyfer defnydd Kilo App.", "subscribe": "Tanysgrifio", "subscribeDescription": "Credydau misol gyda chynnydd bonws", diff --git a/apps/mobile/src/i18n/locales/da.json b/apps/mobile/src/i18n/locales/da.json index 0239615b26..c31959c89f 100644 --- a/apps/mobile/src/i18n/locales/da.json +++ b/apps/mobile/src/i18n/locales/da.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " og anerkender ", "manageFailed": "Kunne ikke åbne App Store-abonnementsadministration.", "kiloPassSetup": "Kilo Pass-opsætning", - "subscriptionHeaderDescription": "Et månedligt abonnement, der tilføjer kreditter til din Kilo-saldo til at køre AI-kodningssessioner i Kilo App — Cloud-agenter, fjernsessioner og KiloClaw-chats.", + "subscriptionHeaderDescription": "Et månedligt abonnement, der tilføjer kreditter til din Kilo-saldo til at køre AI-kodningssessioner i Kilo App.", "tierDescription": "{{price}} betalte kreditter tilføjes månedligt til Kilo App-brug.", "subscribe": "Abonner", "subscribeDescription": "Månedlige kreditter med bonusfremskridt", diff --git a/apps/mobile/src/i18n/locales/de.json b/apps/mobile/src/i18n/locales/de.json index 308aadd9f2..69f56a4f06 100644 --- a/apps/mobile/src/i18n/locales/de.json +++ b/apps/mobile/src/i18n/locales/de.json @@ -2416,7 +2416,7 @@ "legalConnectorPrivacy": " zu und nimmst die ", "manageFailed": "App Store-Abonnementverwaltung konnte nicht geöffnet werden.", "kiloPassSetup": "Kilo Pass einrichten", - "subscriptionHeaderDescription": "Ein monatliches Abonnement, das deinem Kilo-Guthaben Credits für AI-Codierungssitzungen in der Kilo App hinzufügt – Cloud Agents, Remote-Sitzungen und KiloClaw-Chats.", + "subscriptionHeaderDescription": "Ein monatliches Abonnement, das deinem Kilo-Guthaben Credits für AI-Codierungssitzungen in der Kilo App hinzufügt.", "tierDescription": "{{price}} bezahlte Credits monatlich für die Nutzung der Kilo App hinzugefügt.", "subscribe": "Abonnieren", "subscribeDescription": "Monatliche Credits mit Bonus-Fortschritt", diff --git a/apps/mobile/src/i18n/locales/el.json b/apps/mobile/src/i18n/locales/el.json index 078d7765db..c2a19b28d4 100644 --- a/apps/mobile/src/i18n/locales/el.json +++ b/apps/mobile/src/i18n/locales/el.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " και αναγνωρίζετε το ", "manageFailed": "Αποτυχία ανοίγματος της διαχείρισης συνδρομών του App Store.", "kiloPassSetup": "Ρύθμιση Kilo Pass", - "subscriptionHeaderDescription": "Μια μηνιαία συνδρομή που προσθέτει πιστώσεις στο υπόλοιπό σας Kilo για την εκτέλεση συνεδριών προγραμματισμού με AI στην Εφαρμογή Kilo — Cloud Agents, απομακρυσμένες συνεδρίες και συνομιλίες KiloClaw.", + "subscriptionHeaderDescription": "Μια μηνιαία συνδρομή που προσθέτει πιστώσεις στο υπόλοιπό σας Kilo για την εκτέλεση συνεδριών προγραμματισμού με AI στην Εφαρμογή Kilo.", "tierDescription": "Πιστώσεις {{price}} που προστίθενται μηνιαίως για χρήση της Εφαρμογής Kilo.", "subscribe": "Εγγραφή", "subscribeDescription": "Μηνιαίες πιστώσεις με πρόσθετη πρόοδο μπόνους", diff --git a/apps/mobile/src/i18n/locales/en.json b/apps/mobile/src/i18n/locales/en.json index f6fe63df3f..b88bd963c3 100644 --- a/apps/mobile/src/i18n/locales/en.json +++ b/apps/mobile/src/i18n/locales/en.json @@ -2892,7 +2892,7 @@ "legalConnectorPrivacy": " and acknowledge the ", "manageFailed": "Failed to open App Store subscription management.", "kiloPassSetup": "Kilo Pass setup", - "subscriptionHeaderDescription": "A monthly subscription that adds credits to your Kilo balance for running AI coding sessions in Kilo App — Cloud Agents, remote sessions, and KiloClaw chats.", + "subscriptionHeaderDescription": "A monthly subscription that adds credits to your Kilo balance for running AI coding sessions in Kilo App.", "tierDescription": "{{price}} paid credits added monthly for Kilo App usage.", "subscribe": "Subscribe", "subscribeDescription": "Monthly credits with bonus progress", diff --git a/apps/mobile/src/i18n/locales/es.json b/apps/mobile/src/i18n/locales/es.json index 2d066bdc3c..b08718374e 100644 --- a/apps/mobile/src/i18n/locales/es.json +++ b/apps/mobile/src/i18n/locales/es.json @@ -2430,7 +2430,7 @@ "legalConnectorPrivacy": " y reconoces la ", "manageFailed": "No se pudo abrir la gestión de suscripciones del App Store.", "kiloPassSetup": "Configuración de Kilo Pass", - "subscriptionHeaderDescription": "Una suscripción mensual que añade créditos a tu saldo de Kilo para ejecutar sesiones de codificación con IA en Kilo App: Cloud Agents, sesiones remotas y chats de KiloClaw.", + "subscriptionHeaderDescription": "Una suscripción mensual que añade créditos a tu saldo de Kilo para ejecutar sesiones de codificación con IA en Kilo App.", "tierDescription": "{{price}} en créditos pagados añadidos mensualmente para el uso de Kilo App.", "subscribe": "Suscribirse", "subscribeDescription": "Créditos mensuales con progreso de bonificación", diff --git a/apps/mobile/src/i18n/locales/et.json b/apps/mobile/src/i18n/locales/et.json index f96c2e4c55..712e9c46de 100644 --- a/apps/mobile/src/i18n/locales/et.json +++ b/apps/mobile/src/i18n/locales/et.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " ja tunnustate ", "manageFailed": "App Store tellimuse haldust ei õnnestunud avada.", "kiloPassSetup": "Kilo Pass seadistus", - "subscriptionHeaderDescription": "Kuutellimus, mis lisab krediiti sinu Kilo saldole AI kodeerimisseansside käitamiseks Kilo Appis — Cloud Agents, kaugseansid ja KiloClaw vestlused.", + "subscriptionHeaderDescription": "Kuutellimus, mis lisab krediiti sinu Kilo saldole AI kodeerimisseansside käitamiseks Kilo Appis.", "tierDescription": "{{price}} tasulist krediiti lisatakse igakuiselt Kilo Appi kasutuse eest.", "subscribe": "Telli", "subscribeDescription": "Igakuine krediit boonusprogresseerumisega", diff --git a/apps/mobile/src/i18n/locales/eu.json b/apps/mobile/src/i18n/locales/eu.json index 09be4ae952..9902dc1c36 100644 --- a/apps/mobile/src/i18n/locales/eu.json +++ b/apps/mobile/src/i18n/locales/eu.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " eta onartzen duzu ", "manageFailed": "Huts egin du App Store harpidetza-kudeaketa irekitzean.", "kiloPassSetup": "Kilo Pass konfigurazioa", - "subscriptionHeaderDescription": "Hileroko harpidetza bat, zure Kilo saldoari kredituak gehitzen dizkiona Kilo App-en AI kodetze-saioak exekutatzeko — Cloud Agents, urruneko saioak eta KiloClaw txatak.", + "subscriptionHeaderDescription": "Hileroko harpidetza bat, zure Kilo saldoari kredituak gehitzen dizkiona Kilo App-en AI kodetze-saioak exekutatzeko.", "tierDescription": "{{price}} ordaindutako kreditu gehitzen dira hilero Kilo App erabilerarako.", "subscribe": "Harpidetu", "subscribeDescription": "Hileroko kredituak bonus-aurrerapenarekin", diff --git a/apps/mobile/src/i18n/locales/fa.json b/apps/mobile/src/i18n/locales/fa.json index 1837c8690f..1b392a02da 100644 --- a/apps/mobile/src/i18n/locales/fa.json +++ b/apps/mobile/src/i18n/locales/fa.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " و اذعان می‌کنید به ", "manageFailed": "باز کردن مدیریت اشتراک App Store ناموفق بود.", "kiloPassSetup": "راه‌اندازی Kilo Pass", - "subscriptionHeaderDescription": "اشتراک ماهانه که برای اجرای جلسات کدنویسی هوش مصنوعی در Kilo App — Cloud Agents، جلسات از راه دور و گفتگوهای KiloClaw، به موجودی Kilo شما اعتبار اضافه می‌کند.", + "subscriptionHeaderDescription": "اشتراک ماهانه که برای اجرای جلسات کدنویسی هوش مصنوعی در Kilo App.", "tierDescription": "{{price}} اعتبار پرداخت‌شده ماهانه برای استفاده از Kilo App اضافه می‌شود.", "subscribe": "اشتراک", "subscribeDescription": "اعتبار ماهانه با پیشرفت پاداش", diff --git a/apps/mobile/src/i18n/locales/fi.json b/apps/mobile/src/i18n/locales/fi.json index 54fcf3207b..af8f4706d7 100644 --- a/apps/mobile/src/i18n/locales/fi.json +++ b/apps/mobile/src/i18n/locales/fi.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " ja vahvistat ", "manageFailed": "App Store -tilauksen hallinnan avaaminen epäonnistui.", "kiloPassSetup": "Kilo Pass -asetukset", - "subscriptionHeaderDescription": "Kuukausitilaus, joka lisää krediittejä Kilo-saldollesi AI-koodausistuntojen ajamista varten Kilo-sovelluksessa — Cloud Agentit, etäistunnot ja KiloClaw-chatit.", + "subscriptionHeaderDescription": "Kuukausitilaus, joka lisää krediittejä Kilo-saldollesi AI-koodausistuntojen ajamista varten Kilo-sovelluksessa.", "tierDescription": "{{price}} maksettuja krediittejä lisätään kuukausittain Kilo-sovelluksen käyttöä varten.", "subscribe": "Tilaa", "subscribeDescription": "Kuukausikrediitit bonusedistymisen kanssa", diff --git a/apps/mobile/src/i18n/locales/fil.json b/apps/mobile/src/i18n/locales/fil.json index edd727c9c2..a8c1850d94 100644 --- a/apps/mobile/src/i18n/locales/fil.json +++ b/apps/mobile/src/i18n/locales/fil.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " at kinikilala mo ang ", "manageFailed": "Nabigong buksan ang pamamahala ng App Store subscription.", "kiloPassSetup": "Pag-setup ng Kilo Pass", - "subscriptionHeaderDescription": "Isang buwanang subscription na nagdadagdag ng credits sa iyong Kilo balance para sa pagpapatakbo ng mga AI coding session sa Kilo App — Cloud Agents, remote sessions, at KiloClaw chats.", + "subscriptionHeaderDescription": "Isang buwanang subscription na nagdadagdag ng credits sa iyong Kilo balance para sa pagpapatakbo ng mga AI coding session sa Kilo App.", "tierDescription": "{{price}} na bayad na credits na idinaragdag buwan-buwan para sa paggamit ng Kilo App.", "subscribe": "Mag-subscribe", "subscribeDescription": "Buwanang credits na may bonus progress", diff --git a/apps/mobile/src/i18n/locales/fr.json b/apps/mobile/src/i18n/locales/fr.json index 9e269ccebb..e103727d7d 100644 --- a/apps/mobile/src/i18n/locales/fr.json +++ b/apps/mobile/src/i18n/locales/fr.json @@ -2354,7 +2354,7 @@ "legalConnectorPrivacy": " et reconnaissez la ", "manageFailed": "Impossible d'ouvrir la gestion des abonnements de l'App Store.", "kiloPassSetup": "Configuration de Kilo Pass", - "subscriptionHeaderDescription": "Un abonnement mensuel qui ajoute des crédits à votre solde Kilo pour lancer des sessions de codage IA dans Kilo App — Cloud Agents, sessions à distance et discussions KiloClaw.", + "subscriptionHeaderDescription": "Un abonnement mensuel qui ajoute des crédits à votre solde Kilo pour lancer des sessions de codage IA dans Kilo App.", "tierDescription": "{{price}} de crédits payants ajoutés chaque mois pour l'utilisation de Kilo App.", "subscribe": "S'abonner", "subscribeDescription": "Crédits mensuels avec progression bonus", diff --git a/apps/mobile/src/i18n/locales/ga.json b/apps/mobile/src/i18n/locales/ga.json index 59eeb622b6..409c6bc8ae 100644 --- a/apps/mobile/src/i18n/locales/ga.json +++ b/apps/mobile/src/i18n/locales/ga.json @@ -2933,7 +2933,7 @@ "legalConnectorPrivacy": " agus admhaíonn tú an ", "manageFailed": "Theip ar bhainistíocht sintiúis App Store a oscailt.", "kiloPassSetup": "Socrú Kilo Pass", - "subscriptionHeaderDescription": "Sintiús míosúil a chuireann creidmheasanna le do chothromas Kilo le haghaidh seisiúin chódaithe AI a rith in Kilo App — Cloud Agents, seisiúin chianoibre, agus comhráite KiloClaw.", + "subscriptionHeaderDescription": "Sintiús míosúil a chuireann creidmheasanna le do chothromas Kilo le haghaidh seisiúin chódaithe AI a rith in Kilo App.", "tierDescription": "{{price}} i gcreidmheasanna íoctha curtha leis gach mí le haghaidh úsáid Kilo App.", "subscribe": "Liostáil", "subscribeDescription": "Creidmheasanna míosúla le dul chun cinn bónais", diff --git a/apps/mobile/src/i18n/locales/gl.json b/apps/mobile/src/i18n/locales/gl.json index 91bcc55bb9..b552731c58 100644 --- a/apps/mobile/src/i18n/locales/gl.json +++ b/apps/mobile/src/i18n/locales/gl.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " e recoñeces a ", "manageFailed": "Non se puido abrir a xestión de subscricións da App Store.", "kiloPassSetup": "Configuración de Kilo Pass", - "subscriptionHeaderDescription": "Unha subscrición mensual que engade créditos ao teu saldo de Kilo para executar sesións de codificación con IA na app de Kilo — Cloud Agents, sesións remotas e chats de KiloClaw.", + "subscriptionHeaderDescription": "Unha subscrición mensual que engade créditos ao teu saldo de Kilo para executar sesións de codificación con IA na app de Kilo.", "tierDescription": "{{price}} de créditos pagados engadidos mensualmente para o uso da app de Kilo.", "subscribe": "Subscribirse", "subscribeDescription": "Créditos mensuais con progreso de bonificación", diff --git a/apps/mobile/src/i18n/locales/gu.json b/apps/mobile/src/i18n/locales/gu.json index e7b88c0601..58cf302090 100644 --- a/apps/mobile/src/i18n/locales/gu.json +++ b/apps/mobile/src/i18n/locales/gu.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " અને સ્વીકારો છો ", "manageFailed": "App Store સબસ્ક્રિપ્શન મેનેજમેન્ટ ખોલવામાં નિષ્ફળ.", "kiloPassSetup": "Kilo Pass સેટઅપ", - "subscriptionHeaderDescription": "એક માસિક સબસ્ક્રિપ્શન જે Kilo એપમાં AI કોડિંગ સત્રો — ક્લાઉડ એજન્ટ્સ, રિમોટ સત્રો અને KiloClaw ચેટ્સ ચલાવવા માટે તમારી Kilo બેલેન્સમાં ક્રેડિટ ઉમેરે છે.", + "subscriptionHeaderDescription": "એક માસિક સબસ્ક્રિપ્શન જે Kilo એપમાં AI કોડિંગ સત્રો.", "tierDescription": "Kilo એપ વપરાશ માટે {{price}} ચૂકવેલી ક્રેડિટ માસિક ઉમેરાય છે.", "subscribe": "સબસ્ક્રાઇબ કરો", "subscribeDescription": "બોનસ પ્રોગ્રેસ સાથે માસિક ક્રેડિટ", diff --git a/apps/mobile/src/i18n/locales/ha.json b/apps/mobile/src/i18n/locales/ha.json index 2e40bc9fea..779d867d04 100644 --- a/apps/mobile/src/i18n/locales/ha.json +++ b/apps/mobile/src/i18n/locales/ha.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " kuma ka yarda da ", "manageFailed": "An kasa buɗe sarrafa biyan kuɗi na App Store.", "kiloPassSetup": "Saitin Kilo Pass", - "subscriptionHeaderDescription": "Biyan kuɗi na wata-wata wanda ke ƙara credits zuwa ma'aunin Kilo naka don gudanar da zaman shirye-shiryen AI a cikin Kilo App — Cloud Agents, zaman nesa, da tattaunawar KiloClaw.", + "subscriptionHeaderDescription": "Biyan kuɗi na wata-wata wanda ke ƙara credits zuwa ma'aunin Kilo naka don gudanar da zaman shirye-shiryen AI a cikin Kilo App.", "tierDescription": "{{price}} credits da aka biya ana ƙara su kowane wata don amfani da Kilo App.", "subscribe": "Biyan kuɗi", "subscribeDescription": "Credits na wata-wata tare da ci gaban bonus", diff --git a/apps/mobile/src/i18n/locales/he.json b/apps/mobile/src/i18n/locales/he.json index 44d5926af2..50b698546d 100644 --- a/apps/mobile/src/i18n/locales/he.json +++ b/apps/mobile/src/i18n/locales/he.json @@ -2430,7 +2430,7 @@ "legalConnectorPrivacy": " ואתה מאשר את ", "manageFailed": "לא ניתן היה לפתוח את ניהול המנויים ב-App Store.", "kiloPassSetup": "הגדרת Kilo Pass", - "subscriptionHeaderDescription": "מנוי חודשי שמוסיף קרדיטים ליתרת Kilo שלך להרצת מפגשי קידוד בינה מלאכותית ב-Kilo App — Cloud Agents, מפגשים מרחוק וצ'אטים של KiloClaw.", + "subscriptionHeaderDescription": "מנוי חודשי שמוסיף קרדיטים ליתרת Kilo שלך להרצת מפגשי קידוד בינה מלאכותית ב-Kilo App.", "tierDescription": "קרדיטים בתשלום של {{price}} נוספים לשימוש ב-Kilo App מדי חודש.", "subscribe": "הירשם", "subscribeDescription": "קרדיטים חודשיים עם התקדמות לבונוס", diff --git a/apps/mobile/src/i18n/locales/hi.json b/apps/mobile/src/i18n/locales/hi.json index 6f0685f78c..f40977f9d5 100644 --- a/apps/mobile/src/i18n/locales/hi.json +++ b/apps/mobile/src/i18n/locales/hi.json @@ -2416,7 +2416,7 @@ "legalConnectorPrivacy": " और स्वीकार करते हैं ", "manageFailed": "App Store सदस्यता प्रबंधन खोलने में विफल।", "kiloPassSetup": "Kilo Pass सेटअप", - "subscriptionHeaderDescription": "एक मासिक सदस्यता जो Kilo App में AI कोडिंग सत्र चलाने के लिए आपके Kilo बैलेंस में क्रेडिट जोड़ती है — Cloud Agents, रिमोट सत्र और KiloClaw चैट।", + "subscriptionHeaderDescription": "एक मासिक सदस्यता जो Kilo App में AI कोडिंग सत्र चलाने के लिए आपके Kilo बैलेंस में क्रेडिट जोड़ती है।", "tierDescription": "{{price}} भुगतान क्रेडिट Kilo App उपयोग के लिए मासिक जोड़े गए।", "subscribe": "सब्सक्राइब करें", "subscribeDescription": "बोनस प्रगति के साथ मासिक क्रेडिट", diff --git a/apps/mobile/src/i18n/locales/hr.json b/apps/mobile/src/i18n/locales/hr.json index d9b49377d6..3b0fd133a2 100644 --- a/apps/mobile/src/i18n/locales/hr.json +++ b/apps/mobile/src/i18n/locales/hr.json @@ -2891,7 +2891,7 @@ "legalConnectorPrivacy": " i potvrđujete ", "manageFailed": "Nije moguće otvoriti upravljanje pretplatama u App Storeu.", "kiloPassSetup": "Postavljanje Kilo Passa", - "subscriptionHeaderDescription": "Mjesečna pretplata koja dodaje kredite vašem Kilo saldu za pokretanje AI sesija kodiranja u aplikaciji Kilo — Cloud agenti, udaljene sesije i KiloClaw razgovori.", + "subscriptionHeaderDescription": "Mjesečna pretplata koja dodaje kredite vašem Kilo saldu za pokretanje AI sesija kodiranja u aplikaciji Kilo.", "tierDescription": "{{price}} plaćenih kredita dodaje se mjesečno za korištenje aplikacije Kilo.", "subscribe": "Pretplati se", "subscribeDescription": "Mjesečni krediti s bonus napretkom", diff --git a/apps/mobile/src/i18n/locales/ht.json b/apps/mobile/src/i18n/locales/ht.json index add48fe6f3..087f59089c 100644 --- a/apps/mobile/src/i18n/locales/ht.json +++ b/apps/mobile/src/i18n/locales/ht.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " epi ou rekonèt ", "manageFailed": "Echèk pou louvri jesyon abònman App Store.", "kiloPassSetup": "Konfigirasyon Kilo Pass", - "subscriptionHeaderDescription": "Yon abònman chak mwa ki ajoute kredi nan balans Kilo ou pou kouri sesyon kodaj AI nan Kilo App — Cloud Agents, sesyon aleka, ak chat KiloClaw.", + "subscriptionHeaderDescription": "Yon abònman chak mwa ki ajoute kredi nan balans Kilo ou pou kouri sesyon kodaj AI nan Kilo App.", "tierDescription": "{{price}} kredi peye ajoute chak mwa pou itilizasyon Kilo App.", "subscribe": "Abòne", "subscribeDescription": "Kredi chak mwa ak pwogrè bonis", diff --git a/apps/mobile/src/i18n/locales/hu.json b/apps/mobile/src/i18n/locales/hu.json index 3ae0801211..f9100dd9e9 100644 --- a/apps/mobile/src/i18n/locales/hu.json +++ b/apps/mobile/src/i18n/locales/hu.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " és tudomásul veszed a ", "manageFailed": "Az App Store előfizetés-kezelés megnyitása nem sikerült.", "kiloPassSetup": "Kilo Pass beállítás", - "subscriptionHeaderDescription": "Havi előfizetés, amely krediteket ad a Kilo egyenlegedhez AI kódolási munkamenetek futtatásához a Kilo alkalmazásban — Cloud Agents, távoli munkamenetek és KiloClaw csevegések.", + "subscriptionHeaderDescription": "Havi előfizetés, amely krediteket ad a Kilo egyenlegedhez AI kódolási munkamenetek futtatásához a Kilo alkalmazásban.", "tierDescription": "{{price}} fizetett kredit havonta a Kilo alkalmazás használatához.", "subscribe": "Feliratkozás", "subscribeDescription": "Havi kreditek bónusz haladással", diff --git a/apps/mobile/src/i18n/locales/hy.json b/apps/mobile/src/i18n/locales/hy.json index d98932b567..1434e0a032 100644 --- a/apps/mobile/src/i18n/locales/hy.json +++ b/apps/mobile/src/i18n/locales/hy.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " և ընդունում եք ", "manageFailed": "Չհաջողվեց բացել App Store բաժանորդագրության կառավարումը:", "kiloPassSetup": "Kilo Pass կարգավորում", - "subscriptionHeaderDescription": "Ամսական բաժանորդագրություն, որը կրեդիտներ է ավելացնում ձեր Kilo մնացորդին՝ Kilo App-ում AI ծրագրավորման նիստեր վարելու համար — Cloud Agents, հեռակառավարվող նիստեր և KiloClaw զրույցներ:", + "subscriptionHeaderDescription": "Ամսական բաժանորդագրություն, որը կրեդիտներ է ավելացնում ձեր Kilo մնացորդին՝ Kilo App-ում AI ծրագրավորման նիստեր վարելու համար.", "tierDescription": "{{price}} վճարված կրեդիտներ՝ ամսական ավելացված Kilo App օգտագործման համար:", "subscribe": "Բաժանորդագրվել", "subscribeDescription": "Ամսական կրեդիտներ բոնուսային առաջընթացով", diff --git a/apps/mobile/src/i18n/locales/id.json b/apps/mobile/src/i18n/locales/id.json index 6da2ec57d4..2bc9993cf9 100644 --- a/apps/mobile/src/i18n/locales/id.json +++ b/apps/mobile/src/i18n/locales/id.json @@ -2416,7 +2416,7 @@ "legalConnectorPrivacy": " dan mengakui ", "manageFailed": "Gagal membuka pengelolaan langganan App Store.", "kiloPassSetup": "Penyiapan Kilo Pass", - "subscriptionHeaderDescription": "Langganan bulanan yang menambah kredit ke saldo Kilo Anda untuk menjalankan sesi coding AI di Kilo App — Cloud Agents, sesi jarak jauh, dan obrolan KiloClaw.", + "subscriptionHeaderDescription": "Langganan bulanan yang menambah kredit ke saldo Kilo Anda untuk menjalankan sesi coding AI di Kilo App.", "tierDescription": "Kredit berbayar senilai {{price}} ditambahkan setiap bulan untuk penggunaan Kilo App.", "subscribe": "Berlangganan", "subscribeDescription": "Kredit bulanan dengan progres bonus", diff --git a/apps/mobile/src/i18n/locales/ig.json b/apps/mobile/src/i18n/locales/ig.json index 92d155854d..094c5744a6 100644 --- a/apps/mobile/src/i18n/locales/ig.json +++ b/apps/mobile/src/i18n/locales/ig.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " ma kweta na ", "manageFailed": "Enweghị ike imeghe njikwa ndenye aha App Store.", "kiloPassSetup": "Ntọala Kilo Pass", - "subscriptionHeaderDescription": "Ndenye aha kwa ọnwa na-agbakwunye kredit na nguzozi Kilo gị maka ịgba nnọkọ ịde koodu AI na Kilo App — Cloud Agents, nnọkọ dịpụrụ adịpụ, na mkparịta ụka KiloClaw.", + "subscriptionHeaderDescription": "Ndenye aha kwa ọnwa na-agbakwunye kredit na nguzozi Kilo gị maka ịgba nnọkọ ịde koodu AI na Kilo App.", "tierDescription": "{{price}} kredit akwụrụ agbakwunyere kwa ọnwa maka ojiji Kilo App.", "subscribe": "Dee aha", "subscribeDescription": "Kredit kwa ọnwa na ọganihu bonus", diff --git a/apps/mobile/src/i18n/locales/is.json b/apps/mobile/src/i18n/locales/is.json index d22e5518f3..baf219274d 100644 --- a/apps/mobile/src/i18n/locales/is.json +++ b/apps/mobile/src/i18n/locales/is.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " og viðurkennir ", "manageFailed": "Ekki tókst að opna App Store-áskriftarstjórnun.", "kiloPassSetup": "Kilo Pass-uppsetning", - "subscriptionHeaderDescription": "Mánaðarleg áskrift sem bætir kredítum við Kilo-stöðuna þína fyrir að keyra AI-forritunarlotur í Kilo App — Cloud-umboð, fjarlotur og KiloClaw-spjall.", + "subscriptionHeaderDescription": "Mánaðarleg áskrift sem bætir kredítum við Kilo-stöðuna þína fyrir að keyra AI-forritunarlotur í Kilo App.", "tierDescription": "{{price}} greiddar kredítur bættar við mánaðarlega fyrir Kilo App-notkun.", "subscribe": "Gerast áskrifandi", "subscribeDescription": "Mánaðarlegar kredítur með bónusframvindu", diff --git a/apps/mobile/src/i18n/locales/it.json b/apps/mobile/src/i18n/locales/it.json index 748075b438..59ecf899ec 100644 --- a/apps/mobile/src/i18n/locales/it.json +++ b/apps/mobile/src/i18n/locales/it.json @@ -2430,7 +2430,7 @@ "legalConnectorPrivacy": " e riconosci l' ", "manageFailed": "Impossibile aprire la gestione degli abbonamenti dell'App Store.", "kiloPassSetup": "Configurazione Kilo Pass", - "subscriptionHeaderDescription": "Un abbonamento mensile che aggiunge crediti al tuo saldo Kilo per eseguire sessioni di coding AI in Kilo App — Cloud Agents, sessioni remote e chat KiloClaw.", + "subscriptionHeaderDescription": "Un abbonamento mensile che aggiunge crediti al tuo saldo Kilo per eseguire sessioni di coding AI in Kilo App.", "tierDescription": "{{price}} di crediti a pagamento aggiunti ogni mese per l'uso di Kilo App.", "subscribe": "Abbonati", "subscribeDescription": "Crediti mensili con avanzamento bonus", diff --git a/apps/mobile/src/i18n/locales/ja.json b/apps/mobile/src/i18n/locales/ja.json index 9739d05b57..682d963c3a 100644 --- a/apps/mobile/src/i18n/locales/ja.json +++ b/apps/mobile/src/i18n/locales/ja.json @@ -2416,7 +2416,7 @@ "legalConnectorPrivacy": " および以下を確認したものとします: ", "manageFailed": "App Storeのサブスクリプション管理を開けませんでした。", "kiloPassSetup": "Kilo Passセットアップ", - "subscriptionHeaderDescription": "毎月のサブスクリプションで、Kilo AppでのAIコーディングセッション(Cloud Agents、リモートセッション、KiloClawチャット)の実行に使えるクレジットをKilo残高に追加します。", + "subscriptionHeaderDescription": "毎月のサブスクリプションで、Kilo AppでのAIコーディングセッションの実行に使えるクレジットをKilo残高に追加します。", "tierDescription": "Kilo Appの利用に毎月{{price}}の有料クレジットが追加されます。", "subscribe": "登録する", "subscribeDescription": "ボーナス進行付きの月間クレジット", diff --git a/apps/mobile/src/i18n/locales/ka.json b/apps/mobile/src/i18n/locales/ka.json index 9248f41ba4..18cfbdfd84 100644 --- a/apps/mobile/src/i18n/locales/ka.json +++ b/apps/mobile/src/i18n/locales/ka.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " და აღიარებთ ", "manageFailed": "App Store გამოწერის მართვის გახსნა ვერ მოხერხდა.", "kiloPassSetup": "Kilo Pass დაყენება", - "subscriptionHeaderDescription": "ყოველთვიური გამოწერა, რომელიც თქვენს Kilo ბალანსს კრედიტებს ამატებს AI კოდირების სესიებისთვის Kilo აპში — Cloud აგენტები, დისტანციური სესიები და KiloClaw ჩატები.", + "subscriptionHeaderDescription": "ყოველთვიური გამოწერა, რომელიც თქვენს Kilo ბალანსს კრედიტებს ამატებს AI კოდირების სესიებისთვის Kilo აპში.", "tierDescription": "{{price}} გადახდილი კრედიტი ყოველთვიურად Kilo აპის გამოყენებისთვის.", "subscribe": "გამოწერა", "subscribeDescription": "ყოველთვიური კრედიტები ბონუს პროგრესით", diff --git a/apps/mobile/src/i18n/locales/kk.json b/apps/mobile/src/i18n/locales/kk.json index ccbf01f937..260e008df0 100644 --- a/apps/mobile/src/i18n/locales/kk.json +++ b/apps/mobile/src/i18n/locales/kk.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " және мойындайсыз ", "manageFailed": "App Store жазылым басқаруын ашу сәтсіз аяқталды.", "kiloPassSetup": "Kilo Pass баптау", - "subscriptionHeaderDescription": "Kilo App-те AI бағдарламалау сессияларын жүргізу үшін Kilo балансына ай сайын кредит қосатын айлық жазылым — Cloud Agents, қашықтағы сессиялар және KiloClaw чаттары.", + "subscriptionHeaderDescription": "Kilo App-те AI бағдарламалау сессияларын жүргізу үшін Kilo балансына ай сайын кредит қосатын айлық жазылым.", "tierDescription": "Kilo App пайдалану үшін ай сайын {{price}} төленген кредит қосылады.", "subscribe": "Жазылу", "subscribeDescription": "Бонус прогреспен ай сайынғы кредиттер", diff --git a/apps/mobile/src/i18n/locales/km.json b/apps/mobile/src/i18n/locales/km.json index 94878d9c20..0c337ead69 100644 --- a/apps/mobile/src/i18n/locales/km.json +++ b/apps/mobile/src/i18n/locales/km.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " និងទទួលស្គាល់ ", "manageFailed": "មិនអាចបើកការគ្រប់គ្រងការជាវ App Store បានទេ។", "kiloPassSetup": "ការរៀបចំ Kilo Pass", - "subscriptionHeaderDescription": "ការជាវប្រចាំខែដែលបន្ថែមឥណទានទៅសមតុល្យ Kilo របស់អ្នកសម្រាប់ដំណើរការវគ្គសរសេរកូដ AI នៅក្នុង Kilo App — Cloud Agents, វគ្គពីចម្ងាយ, និងការជជែក KiloClaw ។", + "subscriptionHeaderDescription": "ការជាវប្រចាំខែដែលបន្ថែមឥណទានទៅសមតុល្យ Kilo របស់អ្នកសម្រាប់ដំណើរការវគ្គសរសេរកូដ AI នៅក្នុង Kilo App.", "tierDescription": "{{price}} ឥណទានដែលបានបង់បន្ថែមប្រចាំខែសម្រាប់ការប្រើប្រាស់ Kilo App ។", "subscribe": "ជាវ", "subscribeDescription": "ឥណទានប្រចាំខែជាមួយវឌ្ឍនភាពប្រាក់រង្វាន់", diff --git a/apps/mobile/src/i18n/locales/kn.json b/apps/mobile/src/i18n/locales/kn.json index cc80ae4252..07f4567f26 100644 --- a/apps/mobile/src/i18n/locales/kn.json +++ b/apps/mobile/src/i18n/locales/kn.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " ಮತ್ತು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತೀರಿ ", "manageFailed": "App Store ಚಂದಾದಾರಿಕೆ ನಿರ್ವಹಣೆಯನ್ನು ತೆರೆಯಲು ವಿಫಲವಾಗಿದೆ.", "kiloPassSetup": "Kilo Pass ಸೆಟಪ್", - "subscriptionHeaderDescription": "Kilo App ನಲ್ಲಿ AI ಕೋಡಿಂಗ್ ಸೆಷನ್‌ಗಳನ್ನು ಚಲಾಯಿಸಲು ನಿಮ್ಮ Kilo ಬ್ಯಾಲೆನ್ಸ್‌ಗೆ ಕ್ರೆಡಿಟ್‌ಗಳನ್ನು ಸೇರಿಸುವ ಮಾಸಿಕ ಚಂದಾದಾರಿಕೆ — Cloud Agents, ರಿಮೋಟ್ ಸೆಷನ್‌ಗಳು, ಮತ್ತು KiloClaw ಚಾಟ್‌ಗಳು.", + "subscriptionHeaderDescription": "Kilo App ನಲ್ಲಿ AI ಕೋಡಿಂಗ್ ಸೆಷನ್‌ಗಳನ್ನು ಚಲಾಯಿಸಲು ನಿಮ್ಮ Kilo ಬ್ಯಾಲೆನ್ಸ್‌ಗೆ ಕ್ರೆಡಿಟ್‌ಗಳನ್ನು ಸೇರಿಸುವ ಮಾಸಿಕ ಚಂದಾದಾರಿಕೆ.", "tierDescription": "Kilo App ಬಳಕೆಗಾಗಿ ಮಾಸಿಕ ಸೇರಿಸಲಾದ {{price}} ಪಾವತಿಸಿದ ಕ್ರೆಡಿಟ್‌ಗಳು.", "subscribe": "ಚಂದಾದಾರರಾಗಿ", "subscribeDescription": "ಬೋನಸ್ ಪ್ರಗತಿಯೊಂದಿಗೆ ಮಾಸಿಕ ಕ್ರೆಡಿಟ್‌ಗಳು", diff --git a/apps/mobile/src/i18n/locales/ko.json b/apps/mobile/src/i18n/locales/ko.json index e86d2c9002..90d1387a4d 100644 --- a/apps/mobile/src/i18n/locales/ko.json +++ b/apps/mobile/src/i18n/locales/ko.json @@ -2416,7 +2416,7 @@ "legalConnectorPrivacy": " 그리고 다음을 확인합니다 ", "manageFailed": "App Store 구독 관리를 열지 못했습니다.", "kiloPassSetup": "Kilo Pass 설정", - "subscriptionHeaderDescription": "Kilo 앱에서 AI 코딩 세션을 실행하기 위해 Kilo 잔액에 크레딧을 추가하는 월간 구독 — Cloud Agents, 원격 세션, KiloClaw 채팅.", + "subscriptionHeaderDescription": "Kilo 앱에서 AI 코딩 세션을 실행하기 위해 Kilo 잔액에 크레딧을 추가하는 월간 구독.", "tierDescription": "Kilo 앱 사용을 위해 매월 {{price}} 유료 크레딧이 추가됩니다.", "subscribe": "구독", "subscribeDescription": "보너스 진행률이 포함된 월간 크레딧", diff --git a/apps/mobile/src/i18n/locales/lo.json b/apps/mobile/src/i18n/locales/lo.json index ecaa59ae24..fcabec7e6b 100644 --- a/apps/mobile/src/i18n/locales/lo.json +++ b/apps/mobile/src/i18n/locales/lo.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " ແລະ ຮັບຮູ້ ", "manageFailed": "ບໍ່ສາມາດເປີດການຈັດການການສະໝັກ App Store.", "kiloPassSetup": "ການຕັ້ງຄ່າ Kilo Pass", - "subscriptionHeaderDescription": "ການສະໝັກລາຍເດືອນທີ່ເພີ່ມເຄຣດິດໃສ່ຍອດ Kilo ຂອງທ່ານສຳລັບການແລ່ນເຊດຊັນການຂຽນໂຄ້ດ AI ໃນ Kilo App — Cloud Agents, ເຊດຊັນຫ່າງໄກ, ແລະ ການສົນທະນາ KiloClaw.", + "subscriptionHeaderDescription": "ການສະໝັກລາຍເດືອນທີ່ເພີ່ມເຄຣດິດໃສ່ຍອດ Kilo ຂອງທ່ານສຳລັບການແລ່ນເຊດຊັນການຂຽນໂຄ້ດ AI ໃນ Kilo App.", "tierDescription": "ເຄຣດິດທີ່ຊຳລະ {{price}} ເພີ່ມລາຍເດືອນສຳລັບການໃຊ້ Kilo App.", "subscribe": "ສະໝັກ", "subscribeDescription": "ເຄຣດິດລາຍເດືອນພ້ອມຄວາມຄືບໜ້າໂບນັດ", diff --git a/apps/mobile/src/i18n/locales/lt.json b/apps/mobile/src/i18n/locales/lt.json index d7cbeb2e1a..5a8ae54163 100644 --- a/apps/mobile/src/i18n/locales/lt.json +++ b/apps/mobile/src/i18n/locales/lt.json @@ -2912,7 +2912,7 @@ "legalConnectorPrivacy": " ir patvirtinate ", "manageFailed": "Nepavyko atidaryti App Store prenumeratos valdymo.", "kiloPassSetup": "Kilo Pass sąranka", - "subscriptionHeaderDescription": "Mėnesinė prenumerata, kuri prideda kreditų prie jūsų Kilo balanso AI kodavimo sesijoms Kilo programoje — Cloud agentai, nuotolinės sesijos ir KiloClaw pokalbiai.", + "subscriptionHeaderDescription": "Mėnesinė prenumerata, kuri prideda kreditų prie jūsų Kilo balanso AI kodavimo sesijoms Kilo programoje.", "tierDescription": "{{price}} apmokėtų kreditų pridedama kas mėnesį Kilo programos naudojimui.", "subscribe": "Prenumeruoti", "subscribeDescription": "Mėnesiniai kreditai su premijos pažanga", diff --git a/apps/mobile/src/i18n/locales/lv.json b/apps/mobile/src/i18n/locales/lv.json index 62743ff0e5..fb300db971 100644 --- a/apps/mobile/src/i18n/locales/lv.json +++ b/apps/mobile/src/i18n/locales/lv.json @@ -2891,7 +2891,7 @@ "legalConnectorPrivacy": " un atzīsti ", "manageFailed": "Neizdevās atvērt App Store abonementu pārvaldību.", "kiloPassSetup": "Kilo Pass iestatīšana", - "subscriptionHeaderDescription": "Mēneša abonements, kas pievieno kredītus tavam Kilo bilancei AI kodēšanas sesiju vadīšanai Kilo App — Cloud Agents, attālās sesijas un KiloClaw tērzēšanas.", + "subscriptionHeaderDescription": "Mēneša abonements, kas pievieno kredītus tavam Kilo bilancei AI kodēšanas sesiju vadīšanai Kilo App.", "tierDescription": "{{price}} apmaksāti kredīti tiek pievienoti katru mēnesi Kilo App lietošanai.", "subscribe": "Abonēt", "subscribeDescription": "Mēneša kredīti ar bonusa progresu", diff --git a/apps/mobile/src/i18n/locales/mg.json b/apps/mobile/src/i18n/locales/mg.json index cf27376c4f..3b3bdf2271 100644 --- a/apps/mobile/src/i18n/locales/mg.json +++ b/apps/mobile/src/i18n/locales/mg.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " ary manaiky ny ", "manageFailed": "Tsy nahomby ny fanokafana ny fitantanana abonnement App Store.", "kiloPassSetup": "Fikirana Kilo Pass", - "subscriptionHeaderDescription": "Abonnement isam-bolana manampy crédits amin'ny balan Kilo anao ho an'ny session coding AI ao amin'ny Kilo App — Cloud Agents, remote sessions, ary KiloClaw chats.", + "subscriptionHeaderDescription": "Abonnement isam-bolana manampy crédits amin'ny balan Kilo anao ho an'ny session coding AI ao amin'ny Kilo App.", "tierDescription": "{{price}} crédits voaloa ampiana isam-bolana ho an'ny fampiasana Kilo App.", "subscribe": "Abonne", "subscribeDescription": "Crédits isam-bolana miaraka amin'ny fandrosoana bonus", diff --git a/apps/mobile/src/i18n/locales/mi.json b/apps/mobile/src/i18n/locales/mi.json index 90e30caf29..79ae2823e0 100644 --- a/apps/mobile/src/i18n/locales/mi.json +++ b/apps/mobile/src/i18n/locales/mi.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " me te whakaae ki te ", "manageFailed": "I rahua te whakatuwhera i te whakahaere ohaurunga App Store.", "kiloPassSetup": "Te whakatū Kilo Pass", - "subscriptionHeaderDescription": "He ohaurunga ā-marama e tāpiri ana i ngā whiwhinga ki tō toenga Kilo mō te whakahaere i ngā wātū whakawaehere AI i te Taupānga Kilo — Ngā Kaihoko Kapua, ngā wātū mamao, me ngā kōrerorero KiloClaw.", + "subscriptionHeaderDescription": "He ohaurunga ā-marama e tāpiri ana i ngā whiwhinga ki tō toenga Kilo mō te whakahaere i ngā wātū whakawaehere AI i te Taupānga Kilo.", "tierDescription": "E {{price}} ngā whiwhinga kua utua ka tāpiri ā-marama mō te whakamahinga Taupānga Kilo.", "subscribe": "Ohauru", "subscribeDescription": "Ngā whiwhinga ā-marama me te ahunga whakamua bonus", diff --git a/apps/mobile/src/i18n/locales/mk.json b/apps/mobile/src/i18n/locales/mk.json index 6c7af01be4..e20ab771b2 100644 --- a/apps/mobile/src/i18n/locales/mk.json +++ b/apps/mobile/src/i18n/locales/mk.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " и го признавате ", "manageFailed": "Не успеав да отворам управување со претплатата во App Store.", "kiloPassSetup": "Поставување на Kilo Pass", - "subscriptionHeaderDescription": "Месечна претплата што додава кредити на вашата Kilo состојба за извршување на AI сесии за кодирање во Kilo App — Cloud Agents, далечински сесии и KiloClaw разговори.", + "subscriptionHeaderDescription": "Месечна претплата што додава кредити на вашата Kilo состојба за извршување на AI сесии за кодирање во Kilo App.", "tierDescription": "{{price}} платени кредити се додаваат месечно за употреба на Kilo App.", "subscribe": "Претплати се", "subscribeDescription": "Месечни кредити со бонус напредок", diff --git a/apps/mobile/src/i18n/locales/ml.json b/apps/mobile/src/i18n/locales/ml.json index 294dce63f1..9d4beff82d 100644 --- a/apps/mobile/src/i18n/locales/ml.json +++ b/apps/mobile/src/i18n/locales/ml.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " അംഗീകരിക്കുന്നു, കൂടാതെ ", "manageFailed": "App Store സബ്സ്ക്രിപ്ഷൻ മാനേജ്മെന്റ് തുറക്കുന്നതിൽ പരാജയപ്പെട്ടു.", "kiloPassSetup": "Kilo Pass സജ്ജീകരണം", - "subscriptionHeaderDescription": "Kilo App-ലെ AI കോഡിംഗ് സെഷനുകൾ — ക്ലൗഡ് ഏജന്റുകൾ, വിദൂര സെഷനുകൾ, KiloClaw ചാറ്റുകൾ — പ്രവർത്തിപ്പിക്കുന്നതിന് നിങ്ങളുടെ Kilo ബാലൻസിലേക്ക് ക്രെഡിറ്റുകൾ ചേർക്കുന്ന ഒരു പ്രതിമാസ സബ്സ്ക്രിപ്ഷൻ.", + "subscriptionHeaderDescription": "Kilo App-ലെ AI കോഡിംഗ് സെഷനുകൾ.", "tierDescription": "Kilo App ഉപയോഗത്തിനായി {{price}} പണമടച്ച ക്രെഡിറ്റുകൾ പ്രതിമാസം ചേർക്കുന്നു.", "subscribe": "സബ്സ്ക്രൈബ് ചെയ്യുക", "subscribeDescription": "ബോണസ് പുരോഗതിയോടെയുള്ള പ്രതിമാസ ക്രെഡിറ്റുകൾ", diff --git a/apps/mobile/src/i18n/locales/mn.json b/apps/mobile/src/i18n/locales/mn.json index 29fc0c7deb..4f7915ab76 100644 --- a/apps/mobile/src/i18n/locales/mn.json +++ b/apps/mobile/src/i18n/locales/mn.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " -ыг хүлээн зөвшөөрч, ", "manageFailed": "App Store захиалгын удирдлагыг нээж чадсангүй.", "kiloPassSetup": "Kilo Pass тохиргоо", - "subscriptionHeaderDescription": "Kilo App-д — Cloud Agents, алсын сессий, KiloClaw чатууд — AI кодчилолын сессий ажиллуулахын тулд таны Kilo үлдэгдэлд кредит нэмдэг сарын захиалга.", + "subscriptionHeaderDescription": "Kilo App-д.", "tierDescription": "Kilo App ашиглалтад {{price}} төлсөн кредитийг сар бүр нэмдэг.", "subscribe": "Захиалах", "subscribeDescription": "Урамшууллын дэвшлээр сарын кредит", diff --git a/apps/mobile/src/i18n/locales/mr.json b/apps/mobile/src/i18n/locales/mr.json index 2aa56dfcd3..76ed7d4c6d 100644 --- a/apps/mobile/src/i18n/locales/mr.json +++ b/apps/mobile/src/i18n/locales/mr.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " आणि मान्य करता ", "manageFailed": "App Store सदस्यत्व व्यवस्थापन उघडता आले नाही.", "kiloPassSetup": "Kilo Pass सेटअप", - "subscriptionHeaderDescription": "मासिक सदस्यत्व जे Kilo App मध्ये AI कोडिंग सत्रे चालवण्यासाठी तुमच्या Kilo शिल्लकीमध्ये क्रेडिट्स जोडते — Cloud एजंट्स, रिमोट सत्रे आणि KiloClaw चॅट्स.", + "subscriptionHeaderDescription": "मासिक सदस्यत्व जे Kilo App मध्ये AI कोडिंग सत्रे चालवण्यासाठी तुमच्या Kilo शिल्लकीमध्ये क्रेडिट्स जोडते.", "tierDescription": "Kilo App वापरासाठी मासिक जोडलेले {{price}} पैसे दिलेले क्रेडिट्स.", "subscribe": "सदस्यत्व घ्या", "subscribeDescription": "बोनस प्रगतीसह मासिक क्रेडिट्स", diff --git a/apps/mobile/src/i18n/locales/ms.json b/apps/mobile/src/i18n/locales/ms.json index 301d3230f4..f3ae522e9f 100644 --- a/apps/mobile/src/i18n/locales/ms.json +++ b/apps/mobile/src/i18n/locales/ms.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " dan mengakui ", "manageFailed": "Gagal membuka pengurusan langganan App Store.", "kiloPassSetup": "Penyediaan Kilo Pass", - "subscriptionHeaderDescription": "Langganan bulanan yang menambah kredit ke baki Kilo anda untuk menjalankan sesi pengekodan AI dalam Apl Kilo — Ejen Awan, sesi jauh, dan sembang KiloClaw.", + "subscriptionHeaderDescription": "Langganan bulanan yang menambah kredit ke baki Kilo anda untuk menjalankan sesi pengekodan AI dalam Apl Kilo.", "tierDescription": "{{price}} kredit berbayar ditambah setiap bulan untuk penggunaan Apl Kilo.", "subscribe": "Langgan", "subscribeDescription": "Kredit bulanan dengan kemajuan bonus", diff --git a/apps/mobile/src/i18n/locales/mt.json b/apps/mobile/src/i18n/locales/mt.json index 009dd1073a..bbdc5e9c3e 100644 --- a/apps/mobile/src/i18n/locales/mt.json +++ b/apps/mobile/src/i18n/locales/mt.json @@ -2933,7 +2933,7 @@ "legalConnectorPrivacy": " u tirrikonoxxi l- ", "manageFailed": "Ma setgħetx tinfetaħ il-ġestjoni tas-sottoskrizzjoni fl-App Store.", "kiloPassSetup": "Twaqqif ta' Kilo Pass", - "subscriptionHeaderDescription": "Sottoskrizzjoni mensili li żżid krediti mal-bilanċ ta' Kilo tiegħek biex imexxi sessjonijiet ta' kodifikazzjoni bl-AI fl-App Kilo — Cloud Agents, sessjonijiet mill-bogħod, u chats ta' KiloClaw.", + "subscriptionHeaderDescription": "Sottoskrizzjoni mensili li żżid krediti mal-bilanċ ta' Kilo tiegħek biex imexxi sessjonijiet ta' kodifikazzjoni bl-AI fl-App Kilo.", "tierDescription": "{{price}} krediti mħallsa miżjuda kull xahar għall-użu tal-App Kilo.", "subscribe": "Issottoskrivi", "subscribeDescription": "Krediti mensili b'progress bonus", diff --git a/apps/mobile/src/i18n/locales/my.json b/apps/mobile/src/i18n/locales/my.json index 791bd07ea5..6ec637b308 100644 --- a/apps/mobile/src/i18n/locales/my.json +++ b/apps/mobile/src/i18n/locales/my.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " ကို သဘောတူပြီး ", "manageFailed": "App Store subscription စီမံခန့်ခွဲမှုကို မဖွင့်နိုင်ပါ။", "kiloPassSetup": "Kilo Pass ပြင်ဆင်မှု", - "subscriptionHeaderDescription": "Kilo App — Cloud Agents၊ remote session များ နှင့် KiloClaw ချတ်များတွင် AI coding session များ လည်ပတ်ရန် သင့် Kilo လက်ကျန်သို့ credit များ ထည့်ပေးသော လစဉ် subscription တစ်ခု။", + "subscriptionHeaderDescription": "Kilo App.", "tierDescription": "Kilo App အသုံးပြုမှုအတွက် လစဉ် ထည့်ပေးသော credit {{price}} ။", "subscribe": "Subscribe", "subscribeDescription": "bonus တိုးတက်မှုနှင့် လစဉ် credit များ", diff --git a/apps/mobile/src/i18n/locales/nb.json b/apps/mobile/src/i18n/locales/nb.json index ab1442a8fd..296bf709ea 100644 --- a/apps/mobile/src/i18n/locales/nb.json +++ b/apps/mobile/src/i18n/locales/nb.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " and acknowledge the \t og bekrefter ", "manageFailed": "Kunne ikke åpne App Store-abonnementsadministrasjonen.", "kiloPassSetup": "Kilo Pass-oppsett", - "subscriptionHeaderDescription": "Et månedlig abonnement som legger til kreditter på Kilo-saldoen din for å kjøre AI-kodeøkter i Kilo App — Cloud Agents, eksterne økter og KiloClaw-chatter.", + "subscriptionHeaderDescription": "Et månedlig abonnement som legger til kreditter på Kilo-saldoen din for å kjøre AI-kodeøkter i Kilo App.", "tierDescription": "{{price}} betalte kreditter lagt til månedlig for bruk av Kilo App.", "subscribe": "Abonner", "subscribeDescription": "Månedlige kreditter med bonusfremgang", diff --git a/apps/mobile/src/i18n/locales/ne.json b/apps/mobile/src/i18n/locales/ne.json index 77bc7ff6a1..c5b498278b 100644 --- a/apps/mobile/src/i18n/locales/ne.json +++ b/apps/mobile/src/i18n/locales/ne.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " मा सहमत हुनुहुन्छ र ", "manageFailed": "App Store सदस्यता व्यवस्थापन खोल्न असफल भयो।", "kiloPassSetup": "Kilo Pass सेटअप", - "subscriptionHeaderDescription": "Kilo App मा AI कोडिङ सत्रहरू — Cloud Agents, रिमोट सत्रहरू, र KiloClaw च्याटहरू — चलाउन तपाईंको Kilo ब्यालेन्समा क्रेडिट थप्ने मासिक सदस्यता।", + "subscriptionHeaderDescription": "Kilo App मा AI कोडिङ सत्रहरू।", "tierDescription": "Kilo App प्रयोगका लागि मासिक {{price}} भुक्तान गरिएका क्रेडिट थपिन्छन्।", "subscribe": "सदस्यता लिनुहोस्", "subscribeDescription": "बोनस प्रगतिसहित मासिक क्रेडिटहरू", diff --git a/apps/mobile/src/i18n/locales/nl.json b/apps/mobile/src/i18n/locales/nl.json index 3ed3992067..768c93ec66 100644 --- a/apps/mobile/src/i18n/locales/nl.json +++ b/apps/mobile/src/i18n/locales/nl.json @@ -2416,7 +2416,7 @@ "legalConnectorPrivacy": " en erken je het ", "manageFailed": "Abonnementsbeheer van de App Store kon niet worden geopend.", "kiloPassSetup": "Kilo Pass instellen", - "subscriptionHeaderDescription": "Een maandelijks abonnement dat credits toevoegt aan je Kilo-saldo voor AI-coderingssessies in Kilo App — Cloud Agents, externe sessies en KiloClaw-chats.", + "subscriptionHeaderDescription": "Een maandelijks abonnement dat credits toevoegt aan je Kilo-saldo voor AI-coderingssessies in Kilo App.", "tierDescription": "{{price}} betaalde credits maandelijks toegevoegd voor gebruik van de Kilo App.", "subscribe": "Abonneren", "subscribeDescription": "Maandelijkse credits met bonusvoortgang", diff --git a/apps/mobile/src/i18n/locales/om.json b/apps/mobile/src/i18n/locales/om.json index aa839b745b..b03e260421 100644 --- a/apps/mobile/src/i18n/locales/om.json +++ b/apps/mobile/src/i18n/locales/om.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " fi beeku ", "manageFailed": "Bulchiinsa hubboo App Store banuu hin danda'ine.", "kiloPassSetup": "Qophii Kilo Pass", - "subscriptionHeaderDescription": "Hubboo ji'aa kiriiditii baalansii Kilo kee itti dabaluuf, shumarra code AI Kilo App keessatti hojjechuuf — Cloud Agents, shumarra fagoo, fi walmaree KiloClaw.", + "subscriptionHeaderDescription": "Hubboo ji'aa kiriiditii baalansii Kilo kee itti dabaluuf, shumarra code AI Kilo App keessatti hojjechuuf.", "tierDescription": "Kiriiditii {{price}} maallaqaan ji'aa itti dabalamu fayyadama Kilo App.", "subscribe": "Hubboo seeni", "subscribeDescription": "Kiriiditii ji'aa olaantummaa bonus wajjin", diff --git a/apps/mobile/src/i18n/locales/or.json b/apps/mobile/src/i18n/locales/or.json index 7b344c696d..684738bd2d 100644 --- a/apps/mobile/src/i18n/locales/or.json +++ b/apps/mobile/src/i18n/locales/or.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " ଏବଂ ସ୍ୱୀକାର କରନ୍ତି ", "manageFailed": "App Store ସବସ୍କ୍ରିପସନ୍ ପରିଚାଳନା ଖୋଲିବାରେ ବିଫଳ।", "kiloPassSetup": "Kilo Pass ସେଟଅପ୍", - "subscriptionHeaderDescription": "ଏକ ମାସିକ ସବସ୍କ୍ରିପସନ୍ ଯାହା Kilo ଆପ୍ — Cloud Agents, ରିମୋଟ ସେସନ୍, ଏବଂ KiloClaw ଚାଟରେ AI କୋଡିଂ ସେସନ୍ ଚଳାଇବା ପାଇଁ ଆପଣଙ୍କ Kilo ବ୍ୟାଲାନ୍ସରେ କ୍ରେଡିଟ୍ ଯୋଡ଼େ।", + "subscriptionHeaderDescription": "ଏକ ମାସିକ ସବସ୍କ୍ରିପସନ୍ ଯାହା Kilo ଆପ୍।", "tierDescription": "Kilo ଆପ୍ ବ୍ୟବହାର ପାଇଁ ମାସିକ ଯୋଡ଼ାଯାଉଥିବା {{price}} ପୈଠ କ୍ରେଡିଟ୍।", "subscribe": "ସବସ୍କ୍ରାଇବ୍", "subscribeDescription": "ବୋନସ୍ ପ୍ରଗତି ସହିତ ମାସିକ କ୍ରେଡିଟ୍", diff --git a/apps/mobile/src/i18n/locales/pa.json b/apps/mobile/src/i18n/locales/pa.json index a3673bb575..da58ee645f 100644 --- a/apps/mobile/src/i18n/locales/pa.json +++ b/apps/mobile/src/i18n/locales/pa.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " ਅਤੇ ਇਸ ਨੂੰ ਸਵੀਕਾਰ ਕਰਦੇ ਹੋ ", "manageFailed": "ਐਪ ਸਟੋਰ ਗਾਹਕੀ ਪ੍ਰਬੰਧਨ ਖੋਲ੍ਹਣ ਵਿੱਚ ਅਸਫਲ।", "kiloPassSetup": "Kilo Pass ਸੈੱਟਅੱਪ", - "subscriptionHeaderDescription": "ਇੱਕ ਮਾਸਿਕ ਗਾਹਕੀ ਜੋ Kilo ਐਪ ਵਿੱਚ AI ਕੋਡਿੰਗ ਸੈਸ਼ਨ ਚਲਾਉਣ ਲਈ — ਕਲਾਉਡ ਏਜੰਟ, ਰਿਮੋਟ ਸੈਸ਼ਨ, ਅਤੇ KiloClaw ਚੈਟ — ਤੁਹਾਡੇ Kilo ਬੈਲੰਸ ਵਿੱਚ ਕ੍ਰੈਡਿਟ ਜੋੜਦੀ ਹੈ।", + "subscriptionHeaderDescription": "ਇੱਕ ਮਾਸਿਕ ਗਾਹਕੀ ਜੋ Kilo ਐਪ ਵਿੱਚ AI ਕੋਡਿੰਗ ਸੈਸ਼ਨ ਚਲਾਉਣ ਲਈ।", "tierDescription": "Kilo ਐਪ ਵਰਤੋਂ ਲਈ ਮਾਸਿਕ ਤੌਰ 'ਤੇ {{price}} ਅਦਾ ਕੀਤੇ ਕ੍ਰੈਡਿਟ ਜੋੜੇ ਜਾਂਦੇ ਹਨ।", "subscribe": "ਗਾਹਕੀ ਲਓ", "subscribeDescription": "ਬੋਨਸ ਪ੍ਰਗਤੀ ਨਾਲ ਮਾਸਿਕ ਕ੍ਰੈਡਿਟ", diff --git a/apps/mobile/src/i18n/locales/pl.json b/apps/mobile/src/i18n/locales/pl.json index 04a7f12fdd..09186bfec6 100644 --- a/apps/mobile/src/i18n/locales/pl.json +++ b/apps/mobile/src/i18n/locales/pl.json @@ -2444,7 +2444,7 @@ "legalConnectorPrivacy": " i akceptujesz ", "manageFailed": "Nie udało się otworzyć zarządzania subskrypcjami w App Store.", "kiloPassSetup": "Konfiguracja Kilo Pass", - "subscriptionHeaderDescription": "Miesięczna subskrypcja, która dodaje kredyty do Twojego salda Kilo za prowadzenie sesji kodowania AI w aplikacji Kilo — Cloud Agents, sesje zdalne i czaty KiloClaw.", + "subscriptionHeaderDescription": "Miesięczna subskrypcja, która dodaje kredyty do Twojego salda Kilo za prowadzenie sesji kodowania AI w aplikacji Kilo.", "tierDescription": "Płatne kredyty {{price}} dodawane co miesiąc za korzystanie z aplikacji Kilo.", "subscribe": "Subskrybuj", "subscribeDescription": "Miesięczne kredyty z bonusowym postępem", diff --git a/apps/mobile/src/i18n/locales/ps.json b/apps/mobile/src/i18n/locales/ps.json index 29e0f92af2..18b5b29be3 100644 --- a/apps/mobile/src/i18n/locales/ps.json +++ b/apps/mobile/src/i18n/locales/ps.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " او ", "manageFailed": "د App Store د ګډون مدیریت نه شو خلاصېدلای.", "kiloPassSetup": "د Kilo Pass جوړول", - "subscriptionHeaderDescription": "یو میاشتنی ګډون چې ستاسو Kilo توازن ته کریډیټونه اضافه کوي د Kilo App کې د AI کوډ کولو غونډو چلولو لپاره — کلاوډ اجنټان، لرې غونډې، او د KiloClaw خبرې اترې.", + "subscriptionHeaderDescription": "یو میاشتنی ګډون چې ستاسو Kilo توازن ته کریډیټونه اضافه کوي د Kilo App کې د AI کوډ کولو غونډو چلولو لپاره.", "tierDescription": "{{price}} ورکړل شوي کریډیټونه د Kilo App کارولو لپاره میاشتني اضافه کېږي.", "subscribe": "ګډون وکړئ", "subscribeDescription": "د بونس پرمختګ سره میاشتني کریډیټونه", diff --git a/apps/mobile/src/i18n/locales/pt-BR.json b/apps/mobile/src/i18n/locales/pt-BR.json index 9f4f191cc8..074b5bf76d 100644 --- a/apps/mobile/src/i18n/locales/pt-BR.json +++ b/apps/mobile/src/i18n/locales/pt-BR.json @@ -2430,7 +2430,7 @@ "legalConnectorPrivacy": " e reconhece a ", "manageFailed": "Não foi possível abrir o gerenciamento de assinaturas da App Store.", "kiloPassSetup": "Configuração do Kilo Pass", - "subscriptionHeaderDescription": "Uma assinatura mensal que adiciona créditos ao seu saldo Kilo para executar sessões de codificação com IA no Kilo App — Cloud Agents, sessões remotas e conversas do KiloClaw.", + "subscriptionHeaderDescription": "Uma assinatura mensal que adiciona créditos ao seu saldo Kilo para executar sessões de codificação com IA no Kilo App.", "tierDescription": "{{price}} de créditos pagos adicionados mensalmente para uso do Kilo App.", "subscribe": "Assinar", "subscribeDescription": "Créditos mensais com progresso de bônus", diff --git a/apps/mobile/src/i18n/locales/pt.json b/apps/mobile/src/i18n/locales/pt.json index e8927f1357..2471134ab9 100644 --- a/apps/mobile/src/i18n/locales/pt.json +++ b/apps/mobile/src/i18n/locales/pt.json @@ -2891,7 +2891,7 @@ "legalConnectorPrivacy": " e reconhece a ", "manageFailed": "Falha ao abrir a gestão de subscrições da App Store.", "kiloPassSetup": "Configuração do Kilo Pass", - "subscriptionHeaderDescription": "Uma subscrição mensal que adiciona créditos ao seu saldo Kilo para executar sessões de programação com IA na aplicação Kilo — Cloud Agents, sessões remotas e conversas KiloClaw.", + "subscriptionHeaderDescription": "Uma subscrição mensal que adiciona créditos ao seu saldo Kilo para executar sessões de programação com IA na aplicação Kilo.", "tierDescription": "{{price}} em créditos pagos adicionados mensalmente para uso na aplicação Kilo.", "subscribe": "Subscrever", "subscribeDescription": "Créditos mensais com progresso de bónus", diff --git a/apps/mobile/src/i18n/locales/ro.json b/apps/mobile/src/i18n/locales/ro.json index f70e4a4689..bbe3318c2f 100644 --- a/apps/mobile/src/i18n/locales/ro.json +++ b/apps/mobile/src/i18n/locales/ro.json @@ -2891,7 +2891,7 @@ "legalConnectorPrivacy": " și recunoști ", "manageFailed": "Gestionarea abonamentului din App Store nu a putut fi deschisă.", "kiloPassSetup": "Configurare Kilo Pass", - "subscriptionHeaderDescription": "Un abonament lunar care adaugă credite la soldul tău Kilo pentru rularea sesiunilor de codare AI în Kilo App — Cloud Agents, sesiuni de la distanță și chat-uri KiloClaw.", + "subscriptionHeaderDescription": "Un abonament lunar care adaugă credite la soldul tău Kilo pentru rularea sesiunilor de codare AI în Kilo App.", "tierDescription": "{{price}} credite plătite adăugate lunar pentru utilizarea Kilo App.", "subscribe": "Abonează-te", "subscribeDescription": "Credite lunare cu progres bonus", diff --git a/apps/mobile/src/i18n/locales/ru.json b/apps/mobile/src/i18n/locales/ru.json index 769050bc1b..648ed8e8c7 100644 --- a/apps/mobile/src/i18n/locales/ru.json +++ b/apps/mobile/src/i18n/locales/ru.json @@ -2444,7 +2444,7 @@ "legalConnectorPrivacy": " и подтверждаете ", "manageFailed": "Не удалось открыть управление подписками App Store.", "kiloPassSetup": "Настройка Kilo Pass", - "subscriptionHeaderDescription": "Ежемесячная подписка, которая добавляет кредиты на ваш баланс Kilo для проведения ИИ-сессий кодинга в Kilo App — Cloud Agents, удалённые сессии и чаты KiloClaw.", + "subscriptionHeaderDescription": "Ежемесячная подписка, которая добавляет кредиты на ваш баланс Kilo для проведения ИИ-сессий кодинга в Kilo App.", "tierDescription": "{{price}} платных кредитов добавляется ежемесячно за использование Kilo App.", "subscribe": "Подписаться", "subscribeDescription": "Ежемесячные кредиты с бонусным прогрессом", diff --git a/apps/mobile/src/i18n/locales/si.json b/apps/mobile/src/i18n/locales/si.json index d6656a2e92..27ac6870c9 100644 --- a/apps/mobile/src/i18n/locales/si.json +++ b/apps/mobile/src/i18n/locales/si.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " සහ ", "manageFailed": "App Store දායකත්ව කළමනාකරණය විවෘත කිරීම අසාර්ථකයි.", "kiloPassSetup": "Kilo Pass සැකසුම", - "subscriptionHeaderDescription": "Kilo App හි AI කේතීකරණ සැසි ක්‍රියාත්මක කිරීම සඳහා — Cloud Agents, දුරස්ථ සැසි, සහ KiloClaw කතාබස් — ඔබගේ Kilo ශේෂයට ණය එක් කරන මාසික දායකත්වයක්.", + "subscriptionHeaderDescription": "Kilo App හි AI කේතීකරණ සැසි ක්‍රියාත්මක කිරීම සඳහා.", "tierDescription": "Kilo App භාවිතය සඳහා {{price}} ගෙවූ ණය මාසිකව එක් වේ.", "subscribe": "දායක වන්න", "subscribeDescription": "ප්‍රසාද ප්‍රගතිය සමඟ මාසික ණය", diff --git a/apps/mobile/src/i18n/locales/sk.json b/apps/mobile/src/i18n/locales/sk.json index 6bce5e7eee..48ffcdc850 100644 --- a/apps/mobile/src/i18n/locales/sk.json +++ b/apps/mobile/src/i18n/locales/sk.json @@ -2912,7 +2912,7 @@ "legalConnectorPrivacy": " a potvrdzujete ", "manageFailed": "Otvorenie správy predplatného v App Store zlyhalo.", "kiloPassSetup": "Nastavenie Kilo Pass", - "subscriptionHeaderDescription": "Mesačné predplatné, ktoré pridáva kredity do vášho zostatku Kilo na spúšťanie AI programovacích relácií v aplikácii Kilo — Cloud Agents, vzdialené relácie a chaty KiloClaw.", + "subscriptionHeaderDescription": "Mesačné predplatné, ktoré pridáva kredity do vášho zostatku Kilo na spúšťanie AI programovacích relácií v aplikácii Kilo.", "tierDescription": "{{price}} platených kreditov sa pridáva mesačne na používanie aplikácie Kilo.", "subscribe": "Predplatiť", "subscribeDescription": "Mesačné kredity s bonusovým progresom", diff --git a/apps/mobile/src/i18n/locales/sl.json b/apps/mobile/src/i18n/locales/sl.json index 299da82e87..0dd3bd727d 100644 --- a/apps/mobile/src/i18n/locales/sl.json +++ b/apps/mobile/src/i18n/locales/sl.json @@ -2912,7 +2912,7 @@ "legalConnectorPrivacy": " in potrjuješ ", "manageFailed": "Upravljanja naročnin App Store ni bilo mogoče odpreti.", "kiloPassSetup": "Nastavitev Kilo Passa", - "subscriptionHeaderDescription": "Mesečna naročnina, ki tvojemu Kilo stanju doda kredite za izvajanje sej kodiranja z umetno inteligenco v aplikaciji Kilo — oblačni agenti, oddaljene seje in KiloClaw klepeti.", + "subscriptionHeaderDescription": "Mesečna naročnina, ki tvojemu Kilo stanju doda kredite za izvajanje sej kodiranja z umetno inteligenco v aplikaciji Kilo.", "tierDescription": "{{price}} plačanih kreditov, dodanih mesečno za uporabo aplikacije Kilo.", "subscribe": "Naroči se", "subscribeDescription": "Mesečni krediti z bonus napredkom", diff --git a/apps/mobile/src/i18n/locales/so.json b/apps/mobile/src/i18n/locales/so.json index 4df04c08f2..d387f5e876 100644 --- a/apps/mobile/src/i18n/locales/so.json +++ b/apps/mobile/src/i18n/locales/so.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " oo waxaad qirayso ", "manageFailed": "Maareynta isdiiwaangelinta App Store lama furi karin.", "kiloPassSetup": "Dejinta Kilo Pass", - "subscriptionHeaderDescription": "Isdiiwaangelin bil ah oo ku darsa credits dheelitirkaaga Kilo si loogu shaqeeyo kalfadhiyada codeynta AI ee app-ka Kilo — Cloud Agents, kalfadhiyada fog, iyo sheekadaha KiloClaw.", + "subscriptionHeaderDescription": "Isdiiwaangelin bil ah oo ku darsa credits dheelitirkaaga Kilo si loogu shaqeeyo kalfadhiyada codeynta AI ee app-ka Kilo.", "tierDescription": "{{price}} oo credits ah oo la bixiyay bil kasta oo la isticmaalo app-ka Kilo.", "subscribe": "Isdiiwaangeli", "subscribeDescription": "Credits bil ah oo leh horumar dheeraad ah", diff --git a/apps/mobile/src/i18n/locales/sq.json b/apps/mobile/src/i18n/locales/sq.json index c63b70ca63..0fa1b926e8 100644 --- a/apps/mobile/src/i18n/locales/sq.json +++ b/apps/mobile/src/i18n/locales/sq.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " dhe pranoni ", "manageFailed": "Menaxhimi i abonimit në App Store nuk u hap.", "kiloPassSetup": "Konfigurimi i Kilo Pass", - "subscriptionHeaderDescription": "Një abonim mujor që shton kredite në bilancin tuaj Kilo për të drejtuar seanca kodimi me AI në Kilo App — Cloud Agents, seanca në distancë dhe biseda KiloClaw.", + "subscriptionHeaderDescription": "Një abonim mujor që shton kredite në bilancin tuaj Kilo për të drejtuar seanca kodimi me AI në Kilo App.", "tierDescription": "Kredite të paguara prej {{price}} të shtuara çdo muaj për përdorimin e Kilo App.", "subscribe": "Abonohu", "subscribeDescription": "Kredite mujore me progres bonus", diff --git a/apps/mobile/src/i18n/locales/sr.json b/apps/mobile/src/i18n/locales/sr.json index 9a43aa6357..264ae3d943 100644 --- a/apps/mobile/src/i18n/locales/sr.json +++ b/apps/mobile/src/i18n/locales/sr.json @@ -2891,7 +2891,7 @@ "legalConnectorPrivacy": " i potvrđujete ", "manageFailed": "Otvaranje upravljanja pretplatom u App Store-u nije uspelo.", "kiloPassSetup": "Podešavanje Kilo Pass-a", - "subscriptionHeaderDescription": "Mesečna pretplata koja dodaje kredite vašem Kilo saldu za pokretanje AI sesija kodiranja u Kilo aplikaciji — Cloud Agenti, udaljene sesije i KiloClaw ćaskanja.", + "subscriptionHeaderDescription": "Mesečna pretplata koja dodaje kredite vašem Kilo saldu za pokretanje AI sesija kodiranja u Kilo aplikaciji.", "tierDescription": "{{price}} plaćenih kredita dodaje se mesečno za upotrebu Kilo aplikacije.", "subscribe": "Pretplati se", "subscribeDescription": "Mesečni krediti sa bonus napretkom", diff --git a/apps/mobile/src/i18n/locales/sv.json b/apps/mobile/src/i18n/locales/sv.json index 156cb53628..d28a9aa7f5 100644 --- a/apps/mobile/src/i18n/locales/sv.json +++ b/apps/mobile/src/i18n/locales/sv.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " och erkänner ", "manageFailed": "Det gick inte att öppna App Store-prenumerationshanteringen.", "kiloPassSetup": "Kilo Pass-installation", - "subscriptionHeaderDescription": "En månadsprenumeration som lägger till krediter till ditt Kilo-saldo för att köra AI-kodningssessioner i Kilo-appen — Cloud-agenter, fjärrsessioner och KiloClaw-chattar.", + "subscriptionHeaderDescription": "En månadsprenumeration som lägger till krediter till ditt Kilo-saldo för att köra AI-kodningssessioner i Kilo-appen.", "tierDescription": "{{price}} betalda krediter läggs till månadsvis för Kilo-appanvändning.", "subscribe": "Prenumerera", "subscribeDescription": "Månatliga krediter med bonusframsteg", diff --git a/apps/mobile/src/i18n/locales/sw.json b/apps/mobile/src/i18n/locales/sw.json index 5804379eed..a490fc67ec 100644 --- a/apps/mobile/src/i18n/locales/sw.json +++ b/apps/mobile/src/i18n/locales/sw.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " na unatambua ", "manageFailed": "Imeshindwa kufungua usimamizi wa usajili wa App Store.", "kiloPassSetup": "Usanidi wa Kilo Pass", - "subscriptionHeaderDescription": "Usajili wa kila mwezi unaoongeza salio kwenye usawa wako wa Kilo kwa kuendesha vikao vya kuandika msimbo kwa AI katika Kilo App — Cloud Agents, vikao vya mbali, na mazungumzo ya KiloClaw.", + "subscriptionHeaderDescription": "Usajili wa kila mwezi unaoongeza salio kwenye usawa wako wa Kilo kwa kuendesha vikao vya kuandika msimbo kwa AI katika Kilo App.", "tierDescription": "{{price}} ya salio linalolipwa linaongezwa kila mwezi kwa matumizi ya Kilo App.", "subscribe": "Jisajili", "subscribeDescription": "Salio la kila mwezi na maendeleo ya ziada", diff --git a/apps/mobile/src/i18n/locales/ta.json b/apps/mobile/src/i18n/locales/ta.json index 759c2d87f5..5232dc8db9 100644 --- a/apps/mobile/src/i18n/locales/ta.json +++ b/apps/mobile/src/i18n/locales/ta.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " ஐ ஏற்கிறீர்கள் மற்றும் ", "manageFailed": "App Store சந்தா நிர்வாகத்தைத் திறக்க முடியவில்லை.", "kiloPassSetup": "Kilo Pass அமைப்பு", - "subscriptionHeaderDescription": "Kilo App இல் AI குறியீட்டு அமர்வுகளை இயக்க உங்கள் Kilo இருப்புக்கு கிரெடிட்களைச் சேர்க்கும் மாதாந்திர சந்தா — Cloud Agents, தொலைநிலை அமர்வுகள் மற்றும் KiloClaw அரட்டைகள்.", + "subscriptionHeaderDescription": "Kilo App இல் AI குறியீட்டு அமர்வுகளை இயக்க உங்கள் Kilo இருப்புக்கு கிரெடிட்களைச் சேர்க்கும் மாதாந்திர சந்தா.", "tierDescription": "Kilo App பயன்பாட்டிற்காக {{price}} செலுத்திய கிரெடிட்கள் மாதந்தோறும் சேர்க்கப்படும்.", "subscribe": "சந்தா எடு", "subscribeDescription": "போனஸ் முன்னேற்றத்துடன் மாதாந்திர கிரெடிட்கள்", diff --git a/apps/mobile/src/i18n/locales/te.json b/apps/mobile/src/i18n/locales/te.json index 893d091ea8..06d15fafbe 100644 --- a/apps/mobile/src/i18n/locales/te.json +++ b/apps/mobile/src/i18n/locales/te.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " అంగీకరిస్తారు మరియు ", "manageFailed": "యాప్ స్టోర్ చందా నిర్వహణను తెరవడంలో విఫలమైంది.", "kiloPassSetup": "Kilo Pass సెటప్", - "subscriptionHeaderDescription": "Kilo యాప్లో AI కోడింగ్ సెషన్లను నడపడానికి — క్లౌడ్ ఏజెంట్లు, రిమోట్ సెషన్లు మరియు KiloClaw చాట్లు — మీ Kilo బ్యాలెన్స్కు క్రెడిట్లను జోడించే నెలవారీ చందా.", + "subscriptionHeaderDescription": "Kilo యాప్లో AI కోడింగ్ సెషన్లను నడపడానికి.", "tierDescription": "Kilo యాప్ వినియోగం కోసం {{price}} చెల్లించిన క్రెడిట్లు నెలవారీగా జోడించబడతాయి.", "subscribe": "చందాదారుడిగా చేరండి", "subscribeDescription": "బోనస్ ప్రోగ్రెస్తో నెలవారీ క్రెడిట్లు", diff --git a/apps/mobile/src/i18n/locales/th.json b/apps/mobile/src/i18n/locales/th.json index 1200f94f74..2a12c3c670 100644 --- a/apps/mobile/src/i18n/locales/th.json +++ b/apps/mobile/src/i18n/locales/th.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " และรับทราบ ", "manageFailed": "เปิดการจัดการการสมัครสมาชิก App Store ไม่สำเร็จ", "kiloPassSetup": "การตั้งค่า Kilo Pass", - "subscriptionHeaderDescription": "การสมัครสมาชิกรายเดือนที่เพิ่มเครดิตให้กับยอดคงเหลือ Kilo ของคุณสำหรับการรันเซสชันการเขียนโค้ด AI ใน Kilo App — Cloud Agents, เซสชันระยะไกล และการแชท KiloClaw", + "subscriptionHeaderDescription": "การสมัครสมาชิกรายเดือนที่เพิ่มเครดิตให้กับยอดคงเหลือ Kilo ของคุณสำหรับการรันเซสชันการเขียนโค้ด AI ใน Kilo App.", "tierDescription": "เครดิตที่ชำระแล้ว {{price}} ถูกเพิ่มรายเดือนสำหรับการใช้งาน Kilo App", "subscribe": "สมัครสมาชิก", "subscribeDescription": "เครดิตรายเดือนพร้อมความคืบหน้าโบนัส", diff --git a/apps/mobile/src/i18n/locales/tr.json b/apps/mobile/src/i18n/locales/tr.json index 56fbdd6e2d..7a5835c745 100644 --- a/apps/mobile/src/i18n/locales/tr.json +++ b/apps/mobile/src/i18n/locales/tr.json @@ -2416,7 +2416,7 @@ "legalConnectorPrivacy": " ve şunu kabul edin: ", "manageFailed": "App Store abonelik yönetimi açılamadı.", "kiloPassSetup": "Kilo Pass kurulumu", - "subscriptionHeaderDescription": "Kilo App'te AI kodlama oturumları yürütmek için Kilo bakiyenize kredi ekleyen aylık bir abonelik — Cloud Agents, uzak oturumlar ve KiloClaw sohbetleri.", + "subscriptionHeaderDescription": "Kilo App'te AI kodlama oturumları yürütmek için Kilo bakiyenize kredi ekleyen aylık bir abonelik.", "tierDescription": "Kilo App kullanımı için aylık {{price}} ücretli kredi eklenir.", "subscribe": "Abone ol", "subscribeDescription": "Bonus ilerlemeyle aylık krediler", diff --git a/apps/mobile/src/i18n/locales/uk.json b/apps/mobile/src/i18n/locales/uk.json index 4a59ada122..cc2c4bd622 100644 --- a/apps/mobile/src/i18n/locales/uk.json +++ b/apps/mobile/src/i18n/locales/uk.json @@ -2444,7 +2444,7 @@ "legalConnectorPrivacy": " і підтверджуєте ", "manageFailed": "Не вдалося відкрити керування підписками App Store.", "kiloPassSetup": "Налаштування Kilo Pass", - "subscriptionHeaderDescription": "Щомісячна підписка, яка додає кредити на ваш баланс Kilo для запуску AI-сесій кодування в Kilo App — Cloud Agents, віддалених сесій і KiloClaw-чатів.", + "subscriptionHeaderDescription": "Щомісячна підписка, яка додає кредити на ваш баланс Kilo для запуску AI-сесій кодування в Kilo App.", "tierDescription": "{{price}} платних кредитів додається щомісяця за використання Kilo App.", "subscribe": "Підписатися", "subscribeDescription": "Щомісячні кредити з бонусним прогресом", diff --git a/apps/mobile/src/i18n/locales/ur.json b/apps/mobile/src/i18n/locales/ur.json index a51fbf932b..718ea695b2 100644 --- a/apps/mobile/src/i18n/locales/ur.json +++ b/apps/mobile/src/i18n/locales/ur.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " اور اسے تسلیم کرتے ہیں ", "manageFailed": "App Store سبسکرپشن انتظام کھولنے میں ناکامی۔", "kiloPassSetup": "Kilo Pass سیٹ اپ", - "subscriptionHeaderDescription": "ایک ماہانہ سبسکرپشن جو Kilo App میں AI کوڈنگ سیشن چلانے کے لیے آپ کے Kilo بیلنس میں کریڈٹ شامل کرتی ہے — کلاؤڈ ایجنٹس، ریموٹ سیشنز، اور KiloClaw چیٹس۔", + "subscriptionHeaderDescription": "ایک ماہانہ سبسکرپشن جو Kilo App میں AI کوڈنگ سیشن چلانے کے لیے آپ کے Kilo بیلنس میں کریڈٹ شامل کرتی ہے۔", "tierDescription": "Kilo App استعمال کے لیے ماہانہ {{price}} ادا شدہ کریڈٹ شامل کیے جاتے ہیں۔", "subscribe": "سبسکرائب کریں", "subscribeDescription": "بونس پیشرفت کے ساتھ ماہانہ کریڈٹ", diff --git a/apps/mobile/src/i18n/locales/uz.json b/apps/mobile/src/i18n/locales/uz.json index f7fdfc92db..6e4924cf8d 100644 --- a/apps/mobile/src/i18n/locales/uz.json +++ b/apps/mobile/src/i18n/locales/uz.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " va quyidagilarni tan olasiz ", "manageFailed": "App Store obuna boshqaruvini ochib bo'lmadi.", "kiloPassSetup": "Kilo Pass sozlamasi", - "subscriptionHeaderDescription": "Kilo App'idagi AI kodlash sessiyalari — Cloud Agents, masofaviy sessiyalar va KiloClaw suhbatlari — uchun Kilo balansingizga kreditlar qo'shadigan oylik obuna.", + "subscriptionHeaderDescription": "Kilo App'idagi AI kodlash sessiyalari.", "tierDescription": "Kilo App'dan foydalanish uchun oyiga qo'shiladigan {{price}} to'langan kredit.", "subscribe": "Obuna bo'lish", "subscribeDescription": "Bonus progress bilan oylik kreditlar", diff --git a/apps/mobile/src/i18n/locales/vi.json b/apps/mobile/src/i18n/locales/vi.json index 85ea1241c0..2446efb520 100644 --- a/apps/mobile/src/i18n/locales/vi.json +++ b/apps/mobile/src/i18n/locales/vi.json @@ -2416,7 +2416,7 @@ "legalConnectorPrivacy": " và xác nhận ", "manageFailed": "Không thể mở quản lý đăng ký App Store.", "kiloPassSetup": "Thiết lập Kilo Pass", - "subscriptionHeaderDescription": "Gói đăng ký hàng tháng giúp thêm tín dụng vào số dư Kilo của bạn để chạy các phiên lập trình AI trong Kilo App — Cloud Agents, phiên từ xa và trò chuyện KiloClaw.", + "subscriptionHeaderDescription": "Gói đăng ký hàng tháng giúp thêm tín dụng vào số dư Kilo của bạn để chạy các phiên lập trình AI trong Kilo App.", "tierDescription": "{{price}} tín dụng trả phí được thêm hàng tháng cho việc sử dụng Kilo App.", "subscribe": "Đăng ký", "subscribeDescription": "Tín dụng hàng tháng kèm tiến trình thưởng", diff --git a/apps/mobile/src/i18n/locales/yo.json b/apps/mobile/src/i18n/locales/yo.json index cffdacce03..cece43adca 100644 --- a/apps/mobile/src/i18n/locales/yo.json +++ b/apps/mobile/src/i18n/locales/yo.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " o si mọ ", "manageFailed": "Kuna lati ṣii iṣakoso ìfọwọsowọpọ App Store.", "kiloPassSetup": "Eto Kilo Pass", - "subscriptionHeaderDescription": "Ìfọwọsowọpọ oṣooṣu ti n fi awọn kirẹditi kun si iwọntunwọnsi Kilo rẹ fun ṣiṣe awọn igba-ijiroro koodu AI ninu Kilo App — Cloud Agents, awọn igba-ijiroro jijin, ati awọn ijiroro KiloClaw.", + "subscriptionHeaderDescription": "Ìfọwọsowọpọ oṣooṣu ti n fi awọn kirẹditi kun si iwọntunwọnsi Kilo rẹ fun ṣiṣe awọn igba-ijiroro koodu AI ninu Kilo App.", "tierDescription": "{{price}} awọn kirẹditi ti a san ti a fi kun ni oṣooṣu fun lilo Kilo App.", "subscribe": "Fọwọsowọpọ", "subscribeDescription": "Awọn kirẹditi oṣooṣu pẹlu ilọsiwaju ẹbun", diff --git a/apps/mobile/src/i18n/locales/zh-Hans.json b/apps/mobile/src/i18n/locales/zh-Hans.json index e7a2efffe0..ebcb8c6919 100644 --- a/apps/mobile/src/i18n/locales/zh-Hans.json +++ b/apps/mobile/src/i18n/locales/zh-Hans.json @@ -2416,7 +2416,7 @@ "legalConnectorPrivacy": " 并确认 ", "manageFailed": "无法打开 App Store 订阅管理。", "kiloPassSetup": "Kilo Pass 设置", - "subscriptionHeaderDescription": "一项月度订阅,为你的 Kilo 余额添加积分,用于在 Kilo App 中运行 AI 编程会话 — Cloud Agents、远程会话和 KiloClaw 聊天。", + "subscriptionHeaderDescription": "一项月度订阅,为你的 Kilo 余额添加积分,用于在 Kilo App 中运行 AI 编程会话。", "tierDescription": "每月为 Kilo App 使用添加 {{price}} 付费积分。", "subscribe": "订阅", "subscribeDescription": "月度积分及奖励进度", diff --git a/apps/mobile/src/i18n/locales/zh-Hant.json b/apps/mobile/src/i18n/locales/zh-Hant.json index abddebe8c5..ac8ebf262a 100644 --- a/apps/mobile/src/i18n/locales/zh-Hant.json +++ b/apps/mobile/src/i18n/locales/zh-Hant.json @@ -2416,7 +2416,7 @@ "legalConnectorPrivacy": " 並確認 ", "manageFailed": "無法開啟 App Store 訂閱管理。", "kiloPassSetup": "Kilo Pass 設定", - "subscriptionHeaderDescription": "每月訂閱,可將點數加入您的 Kilo 餘額,用於在 Kilo App 中執行 AI 程式設計工作階段 — Cloud Agents、遠端工作階段和 KiloClaw 聊天。", + "subscriptionHeaderDescription": "每月訂閱,可將點數加入您的 Kilo 餘額,用於在 Kilo App 中執行 AI 程式設計工作階段。", "tierDescription": "每月為 Kilo App 使用加入 {{price}} 的付費點數。", "subscribe": "訂閱", "subscribeDescription": "每月點數與獎勵進度", diff --git a/apps/mobile/src/i18n/locales/zu.json b/apps/mobile/src/i18n/locales/zu.json index c11b7205da..086dee40d6 100644 --- a/apps/mobile/src/i18n/locales/zu.json +++ b/apps/mobile/src/i18n/locales/zu.json @@ -2870,7 +2870,7 @@ "legalConnectorPrivacy": " futhi uyavuma ", "manageFailed": "Ukwenza ngaphandle ukuphathwa kokubhalisa kwe-App Store kwehlulekile.", "kiloPassSetup": "Ukusethwa kwe-Kilo Pass", - "subscriptionHeaderDescription": "Ukubhalisa kwanyanga zonke okwengeza amakhredithi kubhalansi yakho ye-Kilo ukuze usebenzise amaseshini okubhala ikhodi e-AI ku-Kilo App — Ama-Cloud Agents, amaseshini akude, nezingxoxo ze-KiloClaw.", + "subscriptionHeaderDescription": "Ukubhalisa kwanyanga zonke okwengeza amakhredithi kubhalansi yakho ye-Kilo ukuze usebenzise amaseshini okubhala ikhodi e-AI ku-Kilo App.", "tierDescription": "Amakhredithi akhokhelwayo angu-{{price}} engezwa nyanga zonke ngokusetshenziswa kwe-Kilo App.", "subscribe": "Bhalisa", "subscribeDescription": "Amakhredithi anyanga zonke ngenqubekelaphambili yebhonasi", diff --git a/apps/mobile/src/lib/kilo-pass/store-products-loader.test.ts b/apps/mobile/src/lib/kilo-pass/store-products-loader.test.ts index 7bbabeac01..e93dc3f739 100644 --- a/apps/mobile/src/lib/kilo-pass/store-products-loader.test.ts +++ b/apps/mobile/src/lib/kilo-pass/store-products-loader.test.ts @@ -1,6 +1,8 @@ import { describe, expect, it, vi } from 'vitest'; import { + getAuthoredProductsErrorMessage, + KiloPassProductsError, loadAppStoreKiloPassProducts, NO_MATCHING_KILO_PASS_PRODUCTS_KEY, NO_MATCHING_KILO_PASS_PRODUCTS_PLAY_KEY, @@ -110,3 +112,20 @@ describe('loadAppStoreKiloPassProducts', () => { expect(fetchStoreProducts).toHaveBeenCalledWith(['kilopass_tier19', 'kilopass_tier49']); }); }); + +describe('getAuthoredProductsErrorMessage', () => { + it('keeps a message this app wrote', () => { + expect( + getAuthoredProductsErrorMessage(new KiloPassProductsError('No matching products.')) + ).toBe('No matching products.'); + }); + + it('drops a store SDK message so the screen uses its own localized copy', () => { + expect(getAuthoredProductsErrorMessage(new Error('Failed to query product'))).toBeNull(); + }); + + it('drops a non-error rejection', () => { + expect(getAuthoredProductsErrorMessage('Failed to query product')).toBeNull(); + expect(getAuthoredProductsErrorMessage(null)).toBeNull(); + }); +}); diff --git a/apps/mobile/src/lib/kilo-pass/store-products-loader.ts b/apps/mobile/src/lib/kilo-pass/store-products-loader.ts index 7a3fa05013..0cbf30dcf1 100644 --- a/apps/mobile/src/lib/kilo-pass/store-products-loader.ts +++ b/apps/mobile/src/lib/kilo-pass/store-products-loader.ts @@ -10,6 +10,21 @@ import { export const NO_MATCHING_KILO_PASS_PRODUCTS_KEY = 'kiloPass.noMatchingProducts'; export const NO_MATCHING_KILO_PASS_PRODUCTS_PLAY_KEY = 'kiloPass.noMatchingProductsPlay'; +/** + * Carries a message this app wrote and translated. The store SDK throws its own + * errors with internal wording ("Failed to query product"), which must never + * reach the screen, so only this class's message is shown to the user. + */ +export class KiloPassProductsError extends Error {} + +/** + * Message for the user, or null when the store SDK failed for its own reasons. + * Null lets the screen render its own localized copy instead of SDK wording. + */ +export function getAuthoredProductsErrorMessage(error: unknown): string | null { + return error instanceof KiloPassProductsError ? error.message : null; +} + export async function loadAppStoreKiloPassProducts(params: { fetchStoreProducts: (productSkus: string[]) => Promise; loadBackendProducts: () => Promise<{ @@ -37,7 +52,7 @@ export async function loadAppStoreKiloPassProducts(params: { }); if (products.length === 0) { - throw new Error( + throw new KiloPassProductsError( i18n.t( params.storefront === 'play' ? NO_MATCHING_KILO_PASS_PRODUCTS_PLAY_KEY diff --git a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-products.ts b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-products.ts index f2b6050217..9286fc407a 100644 --- a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-products.ts +++ b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-products.ts @@ -7,7 +7,10 @@ import { useCurrentUserId } from '@/lib/hooks/use-current-user-id'; import { useTRPC } from '@/lib/trpc'; import { type StoreKiloPassProduct } from './store-products'; import { getStoreKiloPassProductsState } from './store-products-state'; -import { loadAppStoreKiloPassProducts } from './store-products-loader'; +import { + getAuthoredProductsErrorMessage, + loadAppStoreKiloPassProducts, +} from './store-products-loader'; const STORE_KILO_PASS_PRODUCTS_STALE_TIME_MS = 5 * 60 * 1000; // Fixed bound on the store connection handshake — raise if real @@ -75,8 +78,7 @@ export function useStoreKiloPassProducts(options: StoreKiloPassProductsOptions) await refetchProducts(); }, [refetchProducts]); - const queryErrorMessage = - productsQuery.error instanceof Error ? productsQuery.error.message : null; + const queryErrorMessage = getAuthoredProductsErrorMessage(productsQuery.error); useEffect(() => { if (productsQuery.isSuccess) { diff --git a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx index 5241f506c7..2fa68df9a5 100644 --- a/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx +++ b/apps/mobile/src/lib/kilo-pass/use-store-kilo-pass-purchase.test.tsx @@ -921,7 +921,6 @@ describe('createAppStoreKiloPassPurchaseActions', () => { const showError = vi.fn(); const purchase = createPurchase({ store: 'google', - platform: 'android', productId: product.googleProductId, purchaseToken: null, }); @@ -951,7 +950,6 @@ describe('createAppStoreKiloPassPurchaseActions', () => { const completePlayPurchase = vi.fn().mockResolvedValue({ alreadyProcessed: false }); const purchase = createPurchase({ store: 'google', - platform: 'android', productId: product.googleProductId, purchaseToken: 'play-token', }); @@ -977,7 +975,6 @@ describe('createAppStoreKiloPassPurchaseActions', () => { it('restores an unfinished Kilo Pass Google Play purchase', async () => { const purchase = createPurchase({ store: 'google', - platform: 'android', productId: product.googleProductId, purchaseToken: 'play-token', }); From 69a32d6575bae6e87a86418a3cc2db345a22f2b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=A0=C4=87eki=C4=87?= Date: Wed, 2 Sep 2026 14:22:25 +0200 Subject: [PATCH 6/7] fix(mobile): repair Kilo Pass legal text line spacing on Android Android applied the parent line height to each nested link Text, so the legal disclosure grew to many times its height. Drop the leading class. --- .../components/kilo-pass/kilo-pass-subscription-screen.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx index 0352d44faf..eca30a10c4 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx @@ -431,7 +431,9 @@ function KiloPassNativeIapContent() { }} /> - + {/* Do not set a leading class here. Android applies the parent line height + to each nested link Text and the block grows to many times its size. */} + {kiloPassLegalDisclosure(Platform.OS)} {t('kiloPass.legalConnectorTerms')} Date: Wed, 2 Sep 2026 14:33:59 +0200 Subject: [PATCH 7/7] fix(mobile): block purchase when the Play ownership lookup fails The effect marked ownership as checked in a finally block, so a rejected lookup enabled the tiles with an empty owned-purchase list. A pass owned by another Kilo account was then invisible to both the client check and the server preflight, which receives no purchase token. Keep the tiles disabled, show the store connection error and offer a retry. --- .../kilo-pass/kilo-pass-native-iap-owner.tsx | 27 +++++++++++++++-- .../kilo-pass-subscription-screen.test.ts | 29 +++++++++++++++++++ .../kilo-pass-subscription-screen.tsx | 13 +++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx index 34315d60ae..c57948cf9f 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-native-iap-owner.tsx @@ -25,6 +25,7 @@ import { KILO_PASS_PURCHASE_FAILED_EVENT, KILO_PASS_PURCHASE_STARTED_EVENT, } from '@/lib/analytics/posthog'; +import { i18n } from '@/i18n'; import { useAuth } from '@/lib/auth/auth-context'; import { type AppStoreKiloPassProduct, @@ -44,6 +45,10 @@ import { useTRPC } from '@/lib/trpc'; const isIapPlatform = Platform.OS === 'ios' || Platform.OS === 'android'; const isAndroid = Platform.OS === 'android'; +// Shown when the store never answers the ownership lookup. +const STORE_CONNECTION_ERROR_MESSAGE_KEY = isAndroid + ? 'kiloPass.couldNotConnectToPlay' + : 'kiloPass.couldNotConnectToAppStore'; function getSubscriptionOfferToken(product: ProductSubscription): string | undefined { if (product.platform !== 'android') { @@ -116,6 +121,10 @@ export type KiloPassNativeIapContextValue = { ownedGooglePurchaseToken: string | null; /** False until the store has answered once with what this device owns. */ ownershipChecked: boolean; + /** True when the last ownership lookup failed, so purchasing stays blocked. */ + ownershipCheckFailed: boolean; + /** Runs the ownership lookup again after a failure. */ + retryOwnershipCheck: () => void; }; const KiloPassNativeIapContext = createContext(null); @@ -145,6 +154,12 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { setErrorMessage(null); }, []); const [ownershipChecked, setOwnershipChecked] = useState(false); + const [ownershipCheckFailed, setOwnershipCheckFailed] = useState(false); + const [ownershipAttempt, setOwnershipAttempt] = useState(0); + const retryOwnershipCheck = useCallback(() => { + setOwnershipCheckFailed(false); + setOwnershipAttempt(attempt => attempt + 1); + }, []); const recoveredPurchaseIdsRef = useRef(new Set()); const recoveryInFlightPurchaseIdsRef = useRef(new Set()); const activePurchaseRequestRef = useRef<{ sku: string } | null>(null); @@ -405,14 +420,18 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { void (async () => { try { await refreshAvailablePurchases(); - } finally { // Purchases are only known after the store answers. Until then the screen // must not start a purchase: a device subscription owned by another Kilo // account would otherwise charge the user before any check can see it. setOwnershipChecked(true); + } catch { + // A failed lookup answers nothing, so purchasing stays blocked and the + // screen offers a retry instead of charging the user blind. + setOwnershipCheckFailed(true); + setErrorMessage(i18n.t(STORE_CONNECTION_ERROR_MESSAGE_KEY)); } })(); - }, [connected, refreshAvailablePurchases]); + }, [connected, ownershipAttempt, refreshAvailablePurchases]); useEffect(() => { if ( @@ -475,6 +494,8 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { ownedGoogleProductId, ownedGooglePurchaseToken, ownershipChecked, + ownershipCheckFailed, + retryOwnershipCheck, }), [ clearError, @@ -489,6 +510,8 @@ export function KiloPassNativeIapOwner({ children }: { children: ReactNode }) { ownedGooglePurchaseToken, ownedOriginalTransactionId, ownershipChecked, + ownershipCheckFailed, + retryOwnershipCheck, productsQuery.errorMessage, productsQuery.isLoading, productsQuery.isRefetching, diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts index 5a9afaa773..1d3cc8dc51 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts @@ -36,6 +36,8 @@ const mocks = vi.hoisted(() => ({ ownedGoogleProductId: null as string | null, ownedGooglePurchaseToken: null as string | null, ownershipChecked: true, + ownershipCheckFailed: false, + retryOwnershipCheck: vi.fn(), }, routerPush: vi.fn(), })); @@ -286,6 +288,8 @@ describe('KiloPassSubscriptionScreen', () => { mocks.nativeIap.ownedOriginalTransactionId = null; mocks.nativeIap.ownedGoogleProductId = null; mocks.nativeIap.ownedGooglePurchaseToken = null; + mocks.nativeIap.ownershipCheckFailed = false; + mocks.nativeIap.retryOwnershipCheck.mockReset(); mocks.routerPush.mockReset(); }); @@ -330,6 +334,31 @@ describe('KiloPassSubscriptionScreen', () => { renderer.unmount(); }); + it('blocked: a failed ownership lookup keeps tiles disabled and offers a retry', async () => { + setNativeIapPresentation(); + mocks.nativeIap.products = [product]; + mocks.nativeIap.ownershipChecked = false; + mocks.nativeIap.ownershipCheckFailed = true; + + const renderer = await renderScreen(); + + expect((first(productTiles(renderer)).props as { disabled?: boolean }).disabled).toBe(true); + + const retry = renderer.root.findAll( + node => + String(node.type) === 'Button' && + (node.props as { accessibilityLabel?: string }).accessibilityLabel === + 'Retry loading Kilo Pass' + ); + await press(first(retry)); + + expect(mocks.nativeIap.retryOwnershipCheck).toHaveBeenCalledTimes(1); + expect(mocks.preflightMutateAsync).not.toHaveBeenCalled(); + expect(mocks.nativeIap.purchase).not.toHaveBeenCalled(); + + renderer.unmount(); + }); + it('sends the owned original transaction id to preflight', async () => { setNativeIapPresentation(); mocks.nativeIap.products = [product]; diff --git a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx index eca30a10c4..d7187f44ab 100644 --- a/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx +++ b/apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx @@ -179,6 +179,8 @@ function KiloPassNativeIapContent() { ownedGoogleProductId, ownedGooglePurchaseToken, ownershipChecked, + ownershipCheckFailed, + retryOwnershipCheck, } = useKiloPassNativeIap(); useInlinePurchaseErrorOwnership(); const queryClient = useQueryClient(); @@ -326,6 +328,17 @@ function KiloPassNativeIapContent() { )} + {ownershipCheckFailed && ( + + )} + {preflightFailure?.kind === 'retryable' && (