feat(assistant): the assistant opens outside a trip, as a home chat about all trips

A third scope, home, next to trip and journey: threads that name neither a
trip nor a journey (the CHECK now only forbids both), reached under
/api/assistant by their owner only. A home turn reads the user's trips
through list_trips into a short card (under way, next, later, behind,
undated), offers every read (a trip's on the id the model names, checked by
the tool with the user's rights) and only the writes that take no trip or
journey (atlas, vacation planner, collections, tour library, settings), all
held as change cards. open_trip_chat answers with a card that goes on in
that trip's own chat with the question waiting in its composer.

On the desktop the window opens on the home chat outside a trip; its head
lists the trips to switch into and a switched trip chat has the way back.
On the phone the home chat opens full screen from the dashboard head and the
dock's More list, and the card opens the trip with its chat. Both run on
useAssistantHome.
This commit is contained in:
Maurice
2026-10-23 21:19:25 +02:00
parent cd60d4d859
commit 5d334d7ec8
117 changed files with 3770 additions and 174 deletions
@@ -1,4 +1,4 @@
import { assistantScopeKey, assistantScopeSchema } from './assistant-scope.schema';
import { assistantScopeKey, assistantScopeSchema, HOME_ASSISTANT_SCOPE } from './assistant-scope.schema';
import { assistantFocusSchema } from './assistant.schema';
import { describe, expect, it } from 'vitest';
@@ -21,6 +21,13 @@ describe('assistantScopeSchema', () => {
expect(assistantScopeKey({ kind: 'trip', tripId: 7 })).toBe('trip:7');
expect(assistantScopeKey({ kind: 'journey', journeyId: 7 })).toBe('journey:7');
});
it('ASTSCOPE-006: has a home scope that names no trip and no journey', () => {
expect(assistantScopeSchema.parse({ kind: 'home' })).toEqual(HOME_ASSISTANT_SCOPE);
expect(assistantScopeSchema.safeParse({ kind: 'home', tripId: 5 }).success).toBe(false);
expect(assistantScopeSchema.safeParse({ kind: 'home', journeyId: 12 }).success).toBe(false);
expect(assistantScopeKey(HOME_ASSISTANT_SCOPE)).toBe('home');
});
});
describe('assistantFocusSchema in the Studio', () => {
+15 -7
View File
@@ -3,19 +3,27 @@ import { idSchema } from '../common/primitives.schema';
import { z } from 'zod';
/**
* What an assistant conversation is about: a trip (the planner's chat) or a
* journey (the chat in TREK Studio, which works on the journey's book). A
* thread belongs to exactly one of them, and the tools a turn offers, the
* context it reads and the routes it is reached under follow from it:
* `/api/trips/:tripId/assistant` and `/api/journeys/:journeyId/assistant`.
* What an assistant conversation is about: a trip (the planner's chat), a
* journey (the chat in TREK Studio, which works on the journey's book) or no
* single one (`home`, the chat on the dashboard, Vacay, Atlas, collections and
* settings, which knows all of the user's trips and works on what belongs to
* none of them). A thread belongs to exactly one of them, and the tools a turn
* offers, the context it reads and the routes it is reached under follow from
* it: `/api/trips/:tripId/assistant`, `/api/journeys/:journeyId/assistant` and
* `/api/assistant`.
*/
export const assistantScopeSchema = z.discriminatedUnion('kind', [
z.object({ kind: z.literal('trip'), tripId: idSchema }).strict(),
z.object({ kind: z.literal('journey'), journeyId: idSchema }).strict(),
z.object({ kind: z.literal('home') }).strict(),
]);
export type AssistantScope = z.infer<typeof assistantScopeSchema>;
/** The key a scope's conversations are kept under on a client: `trip:5`, `journey:12`. */
/** The scope of the chat outside any one trip or journey. */
export const HOME_ASSISTANT_SCOPE: AssistantScope = { kind: 'home' };
/** The key a scope's conversations are kept under on a client: `trip:5`, `journey:12`, `home`. */
export function assistantScopeKey(scope: AssistantScope): string {
return scope.kind === 'trip' ? `trip:${scope.tripId}` : `journey:${scope.journeyId}`;
if (scope.kind === 'trip') return `trip:${scope.tripId}`;
return scope.kind === 'journey' ? `journey:${scope.journeyId}` : 'home';
}
@@ -0,0 +1,12 @@
import { tripChatCardSchema } from './trip-chat.card';
export * from './trip-chat.card';
/**
* What the chat outside any one trip (the `home` scope) brings to the
* assistant chat: the card that offers to go on in a trip's own chat. It has
* no change cards of its own; the writes it proposes are the atlas', the
* vacation planner's and the collections'. cards/index.ts spreads the kinds
* into the card union.
*/
export const HOME_CARD_SCHEMAS = [tripChatCardSchema] as const;
+3
View File
@@ -5,6 +5,7 @@ import { BOOKING_CARD_SCHEMAS } from './booking.contract';
import { BUDGET_CARD_SCHEMAS } from './budget.contract';
import { COLLAB_CARD_SCHEMAS } from './collab.contract';
import { COLLECTION_CARD_SCHEMAS } from './collection.contract';
import { HOME_CARD_SCHEMAS } from './home.contract';
import { JOURNEY_CARD_SCHEMAS } from './journey.contract';
import { PACKING_CARD_SCHEMAS } from './packing.contract';
import { ROADTRIP_CARD_SCHEMAS } from './roadtrip.contract';
@@ -21,6 +22,7 @@ export * from './booking.contract';
export * from './budget.contract';
export * from './collab.contract';
export * from './collection.contract';
export * from './home.contract';
export * from './journey.contract';
export * from './packing.contract';
export * from './roadtrip.contract';
@@ -47,6 +49,7 @@ export const trekCardSchema = z.discriminatedUnion('kind', [
...PACKING_CARD_SCHEMAS,
...BOOK_CARD_SCHEMAS,
...BOOK_DESIGN_CARD_SCHEMAS,
...HOME_CARD_SCHEMAS,
]);
export type TrekCard = z.infer<typeof trekCardSchema>;
export type TrekCardKind = TrekCard['kind'];
@@ -0,0 +1,39 @@
import { storedTrekCardSchema, trekCardSchema } from './index';
import { tripChatCardSchema } from './trip-chat.card';
import { describe, expect, it } from 'vitest';
const card = {
kind: 'tripChat',
trip: { id: 5, title: 'Tokyo 2026', startDate: '2026-11-02', endDate: '2026-11-12', phase: 'next', placeCount: 34 },
question: 'What is still missing on day 3?',
} as const;
describe('tripChatCardSchema', () => {
it('TRIPCHAT-001: is part of the card union and reads as itself', () => {
expect(trekCardSchema.parse(card)).toEqual(card);
expect(storedTrekCardSchema.parse(card)).toEqual(card);
});
it('TRIPCHAT-002: takes a trip without dates, places or a question', () => {
const bare = {
kind: 'tripChat',
trip: { id: 9, title: 'Someday', startDate: null, endDate: null, phase: 'undated', placeCount: null },
question: null,
};
expect(tripChatCardSchema.parse(bare)).toEqual(bare);
});
it('TRIPCHAT-003: refuses an unknown phase, a bad date, an empty title or an overlong question', () => {
expect(tripChatCardSchema.safeParse({ ...card, trip: { ...card.trip, phase: 'soon' } }).success).toBe(false);
expect(tripChatCardSchema.safeParse({ ...card, trip: { ...card.trip, startDate: '2.11.2026' } }).success).toBe(
false,
);
expect(tripChatCardSchema.safeParse({ ...card, trip: { ...card.trip, title: '' } }).success).toBe(false);
expect(tripChatCardSchema.safeParse({ ...card, question: 'x'.repeat(501) }).success).toBe(false);
});
it('TRIPCHAT-004: a stored card with a broken trip is left out, not the message around it', () => {
expect(storedTrekCardSchema.parse({ ...card, trip: { id: 0 } })).toBeNull();
});
});
@@ -0,0 +1,30 @@
import { idSchema } from '../../common/primitives.schema';
import { cardCountSchema, cardDateSchema, cardText } from './card-parts';
import { z } from 'zod';
/**
* A trip the chat outside any one trip offers to go on with in that trip's own
* chat: the conversation there knows the trip's days and places and can change
* them, which the chat on the dashboard does not. The question is what the
* user asked about the trip, handed over so it waits there ready to send.
*/
/** Where the trip stands today: under way, the next one to start, later, behind, or without dates. */
export const TRIP_CHAT_PHASES = ['now', 'next', 'upcoming', 'past', 'undated'] as const;
export type TripChatPhase = (typeof TRIP_CHAT_PHASES)[number];
export const tripChatCardSchema = z.object({
kind: z.literal('tripChat'),
trip: z.object({
id: idSchema,
title: cardText(200),
startDate: cardDateSchema.nullable(),
endDate: cardDateSchema.nullable(),
phase: z.enum(TRIP_CHAT_PHASES),
placeCount: cardCountSchema.nullable(),
}),
/** The question to ask in the trip's chat, in the user's words; null when there is none to hand over. */
question: cardText(500).nullable(),
});
export type TripChatCard = z.infer<typeof tripChatCardSchema>;
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'رحلاتك',
'assistant.home.welcome': 'بماذا يمكنني مساعدتك؟',
'assistant.home.placeholder': 'اسأل أي شيء عن رحلاتك',
'assistant.home.switch': 'دردشة حول رحلة واحدة',
'assistant.home.back': 'العودة إلى كل الرحلات',
'assistant.suggest.homeNext': 'ما الرحلة التالية، وما الذي لم يكتمل بعد؟',
'assistant.suggest.homeCompare': 'قارن رحلاتي القادمة',
'assistant.suggest.homeAtlas': 'كم دولة زرت؟',
'assistant.suggest.homeVacay': 'كم يوم إجازة تبقى لي هذا العام؟',
'assistant.card.tripChat.label': 'المتابعة في دردشة رحلة',
'assistant.card.tripChat.eyebrow': 'دردشة الرحلة',
'assistant.card.tripChat.dates': 'من {start} إلى {end}',
'assistant.card.tripChat.noDates': 'لا توجد تواريخ بعد',
'assistant.card.tripChat.question': 'سؤال لطرحه هناك',
'assistant.card.tripChat.open': 'المتابعة في دردشة هذه الرحلة',
'assistant.card.tripChat.phase.now': 'جارية الآن',
'assistant.card.tripChat.phase.next': 'التالية',
'assistant.card.tripChat.phase.upcoming': 'قريبًا',
'assistant.card.tripChat.phase.past': 'انتهت',
'assistant.step.readingTrips': 'أطّلع على رحلاتك',
'assistant.step.openTripChat': 'أبحث عن الرحلة',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Səyahətləriniz',
'assistant.home.welcome': 'Nə ilə kömək edə bilərəm?',
'assistant.home.placeholder': 'Səyahətləriniz haqqında istənilən sualı verin',
'assistant.home.switch': 'Bir səyahət haqqında söhbət',
'assistant.home.back': 'Bütün səyahətlərə qayıt',
'assistant.suggest.homeNext': 'Növbəti səyahət hansıdır və hələ nə qalıb?',
'assistant.suggest.homeCompare': 'Qarşıdakı səyahətlərimi müqayisə et',
'assistant.suggest.homeAtlas': 'Neçə ölkəyə səfər etmişəm?',
'assistant.suggest.homeVacay': 'Bu il neçə məzuniyyət günüm qalıb?',
'assistant.card.tripChat.label': 'Səyahətin söhbətində davam et',
'assistant.card.tripChat.eyebrow': 'Səyahət söhbəti',
'assistant.card.tripChat.dates': '{start} ilə {end} arası',
'assistant.card.tripChat.noDates': 'Hələ tarix yoxdur',
'assistant.card.tripChat.question': 'Orada veriləcək sual',
'assistant.card.tripChat.open': 'Bu səyahətin söhbətində davam et',
'assistant.card.tripChat.phase.now': 'Davam edir',
'assistant.card.tripChat.phase.next': 'Növbəti',
'assistant.card.tripChat.phase.upcoming': 'Tezliklə',
'assistant.card.tripChat.phase.past': 'Keçib',
'assistant.step.readingTrips': 'Səyahətlərinizə baxıram',
'assistant.step.openTripChat': 'Səyahəti tapıram',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Suas viagens',
'assistant.home.welcome': 'Como posso ajudar?',
'assistant.home.placeholder': 'Pergunte qualquer coisa sobre suas viagens',
'assistant.home.switch': 'Conversar sobre uma viagem',
'assistant.home.back': 'Voltar para todas as viagens',
'assistant.suggest.homeNext': 'Qual é a próxima viagem e o que ainda falta?',
'assistant.suggest.homeCompare': 'Compare minhas próximas viagens',
'assistant.suggest.homeAtlas': 'Quantos países eu já visitei?',
'assistant.suggest.homeVacay': 'Quantos dias de férias ainda tenho este ano?',
'assistant.card.tripChat.label': 'Continuar no chat de uma viagem',
'assistant.card.tripChat.eyebrow': 'Chat da viagem',
'assistant.card.tripChat.dates': 'de {start} a {end}',
'assistant.card.tripChat.noDates': 'Ainda sem datas',
'assistant.card.tripChat.question': 'Pergunta para fazer lá',
'assistant.card.tripChat.open': 'Continuar no chat desta viagem',
'assistant.card.tripChat.phase.now': 'Em andamento',
'assistant.card.tripChat.phase.next': 'A próxima',
'assistant.card.tripChat.phase.upcoming': 'Em breve',
'assistant.card.tripChat.phase.past': 'Passada',
'assistant.step.readingTrips': 'Olhando suas viagens',
'assistant.step.openTripChat': 'Procurando a viagem',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Els teus viatges',
'assistant.home.welcome': 'En què et puc ajudar?',
'assistant.home.placeholder': 'Pregunta el que vulguis sobre els teus viatges',
'assistant.home.switch': 'Xatejar sobre un viatge',
'assistant.home.back': 'Tornar a tots els viatges',
'assistant.suggest.homeNext': 'Quin és el proper viatge i què queda pendent?',
'assistant.suggest.homeCompare': 'Compara els meus propers viatges',
'assistant.suggest.homeAtlas': 'Quants països he visitat?',
'assistant.suggest.homeVacay': 'Quants dies de vacances em queden aquest any?',
'assistant.card.tripChat.label': "Continuar al xat d'un viatge",
'assistant.card.tripChat.eyebrow': 'Xat del viatge',
'assistant.card.tripChat.dates': 'del {start} al {end}',
'assistant.card.tripChat.noDates': 'Encara sense dates',
'assistant.card.tripChat.question': 'Pregunta per fer-hi',
'assistant.card.tripChat.open': "Continuar al xat d'aquest viatge",
'assistant.card.tripChat.phase.now': 'En curs',
'assistant.card.tripChat.phase.next': 'El proper',
'assistant.card.tripChat.phase.upcoming': 'Aviat',
'assistant.card.tripChat.phase.past': 'Passat',
'assistant.step.readingTrips': 'Mirant els teus viatges',
'assistant.step.openTripChat': 'Buscant el viatge',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Tvoje cesty',
'assistant.home.welcome': 'S čím ti můžu pomoct?',
'assistant.home.placeholder': 'Zeptej se na cokoli o svých cestách',
'assistant.home.switch': 'Chatovat o jedné cestě',
'assistant.home.back': 'Zpět na všechny cesty',
'assistant.suggest.homeNext': 'Která cesta je na řadě a co ještě zbývá?',
'assistant.suggest.homeCompare': 'Porovnej moje nadcházející cesty',
'assistant.suggest.homeAtlas': 'Kolik zemí jsem navštívil?',
'assistant.suggest.homeVacay': 'Kolik dní dovolené mi letos zbývá?',
'assistant.card.tripChat.label': 'Pokračovat v chatu cesty',
'assistant.card.tripChat.eyebrow': 'Chat cesty',
'assistant.card.tripChat.dates': '{start} až {end}',
'assistant.card.tripChat.noDates': 'Zatím bez termínu',
'assistant.card.tripChat.question': 'Otázka, kterou tam položit',
'assistant.card.tripChat.open': 'Pokračovat v chatu této cesty',
'assistant.card.tripChat.phase.now': 'Probíhá',
'assistant.card.tripChat.phase.next': 'Další',
'assistant.card.tripChat.phase.upcoming': 'Brzy',
'assistant.card.tripChat.phase.past': 'Za tebou',
'assistant.step.readingTrips': 'Prohlížím tvoje cesty',
'assistant.step.openTripChat': 'Hledám cestu',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Deine Reisen',
'assistant.home.welcome': 'Wobei kann ich helfen?',
'assistant.home.placeholder': 'Frag etwas zu deinen Reisen',
'assistant.home.switch': 'Zu einer Reise chatten',
'assistant.home.back': 'Zurück zu allen Reisen',
'assistant.suggest.homeNext': 'Welche Reise steht als Nächstes an, und was ist noch offen?',
'assistant.suggest.homeCompare': 'Vergleiche meine kommenden Reisen',
'assistant.suggest.homeAtlas': 'Wie viele Länder habe ich schon besucht?',
'assistant.suggest.homeVacay': 'Wie viele Urlaubstage habe ich dieses Jahr noch?',
'assistant.card.tripChat.label': 'Im Chat einer Reise weitermachen',
'assistant.card.tripChat.eyebrow': 'Reise-Chat',
'assistant.card.tripChat.dates': '{start} bis {end}',
'assistant.card.tripChat.noDates': 'Noch keine Daten',
'assistant.card.tripChat.question': 'Frage für dort',
'assistant.card.tripChat.open': 'Im Chat dieser Reise weiter',
'assistant.card.tripChat.phase.now': 'Läuft gerade',
'assistant.card.tripChat.phase.next': 'Als Nächstes',
'assistant.card.tripChat.phase.upcoming': 'Demnächst',
'assistant.card.tripChat.phase.past': 'Vorbei',
'assistant.step.readingTrips': 'Schaue mir deine Reisen an',
'assistant.step.openTripChat': 'Suche die Reise',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Your travels',
'assistant.home.welcome': 'What can I help you with?',
'assistant.home.placeholder': 'Ask anything about your trips',
'assistant.home.switch': 'Chat about one trip',
'assistant.home.back': 'Back to all trips',
'assistant.suggest.homeNext': 'Which trip is next, and what is still open?',
'assistant.suggest.homeCompare': 'Compare my upcoming trips',
'assistant.suggest.homeAtlas': 'How many countries have I visited?',
'assistant.suggest.homeVacay': 'How many vacation days do I have left this year?',
'assistant.card.tripChat.label': 'Continue in a trip chat',
'assistant.card.tripChat.eyebrow': 'Trip chat',
'assistant.card.tripChat.dates': '{start} to {end}',
'assistant.card.tripChat.noDates': 'No dates yet',
'assistant.card.tripChat.question': 'Question to ask there',
'assistant.card.tripChat.open': "Continue in this trip's chat",
'assistant.card.tripChat.phase.now': 'Under way',
'assistant.card.tripChat.phase.next': 'Next',
'assistant.card.tripChat.phase.upcoming': 'Coming up',
'assistant.card.tripChat.phase.past': 'Behind you',
'assistant.step.readingTrips': 'Looking at your trips',
'assistant.step.openTripChat': 'Finding the trip',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Tus viajes',
'assistant.home.welcome': '¿En qué puedo ayudarte?',
'assistant.home.placeholder': 'Pregunta lo que quieras sobre tus viajes',
'assistant.home.switch': 'Chatear sobre un viaje',
'assistant.home.back': 'Volver a todos los viajes',
'assistant.suggest.homeNext': '¿Cuál es mi próximo viaje y qué queda pendiente?',
'assistant.suggest.homeCompare': 'Compara mis próximos viajes',
'assistant.suggest.homeAtlas': '¿Cuántos países he visitado?',
'assistant.suggest.homeVacay': '¿Cuántos días de vacaciones me quedan este año?',
'assistant.card.tripChat.label': 'Seguir en el chat de un viaje',
'assistant.card.tripChat.eyebrow': 'Chat del viaje',
'assistant.card.tripChat.dates': 'del {start} al {end}',
'assistant.card.tripChat.noDates': 'Aún sin fechas',
'assistant.card.tripChat.question': 'Pregunta para allí',
'assistant.card.tripChat.open': 'Seguir en el chat de este viaje',
'assistant.card.tripChat.phase.now': 'En curso',
'assistant.card.tripChat.phase.next': 'El próximo',
'assistant.card.tripChat.phase.upcoming': 'Más adelante',
'assistant.card.tripChat.phase.past': 'Pasado',
'assistant.step.readingTrips': 'Mirando tus viajes',
'assistant.step.openTripChat': 'Buscando el viaje',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Sinu reisid',
'assistant.home.welcome': 'Millega saan aidata?',
'assistant.home.placeholder': 'Küsi oma reiside kohta mida iganes',
'assistant.home.switch': 'Vestle ühe reisi üle',
'assistant.home.back': 'Tagasi kõigi reiside juurde',
'assistant.suggest.homeNext': 'Milline reis on järgmine ja mis on veel tegemata?',
'assistant.suggest.homeCompare': 'Võrdle mu eelseisvaid reise',
'assistant.suggest.homeAtlas': 'Mitu riiki olen külastanud?',
'assistant.suggest.homeVacay': 'Mitu puhkusepäeva mul tänavu veel on?',
'assistant.card.tripChat.label': 'Jätka reisi vestluses',
'assistant.card.tripChat.eyebrow': 'Reisi vestlus',
'assistant.card.tripChat.dates': '{start} kuni {end}',
'assistant.card.tripChat.noDates': 'Kuupäevi veel pole',
'assistant.card.tripChat.question': 'Küsimus sinna',
'assistant.card.tripChat.open': 'Jätka selle reisi vestluses',
'assistant.card.tripChat.phase.now': 'Käimas',
'assistant.card.tripChat.phase.next': 'Järgmine',
'assistant.card.tripChat.phase.upcoming': 'Varsti',
'assistant.card.tripChat.phase.past': 'Möödas',
'assistant.step.readingTrips': 'Vaatan su reise',
'assistant.step.openTripChat': 'Otsin reisi üles',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Vos voyages',
'assistant.home.welcome': 'En quoi puis-je vous aider ?',
'assistant.home.placeholder': 'Posez une question sur vos voyages',
'assistant.home.switch': "Discuter d'un voyage",
'assistant.home.back': 'Retour à tous les voyages',
'assistant.suggest.homeNext': 'Quel est le prochain voyage, et que reste-t-il à faire ?',
'assistant.suggest.homeCompare': 'Compare mes prochains voyages',
'assistant.suggest.homeAtlas': 'Combien de pays ai-je visités ?',
'assistant.suggest.homeVacay': 'Combien de jours de congé me reste-t-il cette année ?',
'assistant.card.tripChat.label': "Continuer dans le chat d'un voyage",
'assistant.card.tripChat.eyebrow': 'Chat du voyage',
'assistant.card.tripChat.dates': 'du {start} au {end}',
'assistant.card.tripChat.noDates': 'Pas encore de dates',
'assistant.card.tripChat.question': 'Question à poser là-bas',
'assistant.card.tripChat.open': 'Continuer dans le chat de ce voyage',
'assistant.card.tripChat.phase.now': 'En cours',
'assistant.card.tripChat.phase.next': 'Le prochain',
'assistant.card.tripChat.phase.upcoming': 'À venir',
'assistant.card.tripChat.phase.past': 'Passé',
'assistant.step.readingTrips': 'Je regarde vos voyages',
'assistant.step.openTripChat': 'Je cherche le voyage',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Τα ταξίδια σου',
'assistant.home.welcome': 'Πώς μπορώ να βοηθήσω;',
'assistant.home.placeholder': 'Ρώτα οτιδήποτε για τα ταξίδια σου',
'assistant.home.switch': 'Συνομιλία για ένα ταξίδι',
'assistant.home.back': 'Πίσω σε όλα τα ταξίδια',
'assistant.suggest.homeNext': 'Ποιο ταξίδι είναι το επόμενο και τι μένει ακόμα;',
'assistant.suggest.homeCompare': 'Σύγκρινε τα επερχόμενα ταξίδια μου',
'assistant.suggest.homeAtlas': 'Πόσες χώρες έχω επισκεφθεί;',
'assistant.suggest.homeVacay': 'Πόσες μέρες άδειας μου μένουν φέτος;',
'assistant.card.tripChat.label': 'Συνέχεια στη συνομιλία ενός ταξιδιού',
'assistant.card.tripChat.eyebrow': 'Συνομιλία ταξιδιού',
'assistant.card.tripChat.dates': '{start} έως {end}',
'assistant.card.tripChat.noDates': 'Χωρίς ημερομηνίες ακόμα',
'assistant.card.tripChat.question': 'Ερώτηση για εκεί',
'assistant.card.tripChat.open': 'Συνέχεια στη συνομιλία αυτού του ταξιδιού',
'assistant.card.tripChat.phase.now': 'Σε εξέλιξη',
'assistant.card.tripChat.phase.next': 'Επόμενο',
'assistant.card.tripChat.phase.upcoming': 'Σύντομα',
'assistant.card.tripChat.phase.past': 'Πίσω σου',
'assistant.step.readingTrips': 'Κοιτάζω τα ταξίδια σου',
'assistant.step.openTripChat': 'Βρίσκω το ταξίδι',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Az utazásaid',
'assistant.home.welcome': 'Miben segíthetek?',
'assistant.home.placeholder': 'Kérdezz bármit az utazásaidról',
'assistant.home.switch': 'Csevegés egy utazásról',
'assistant.home.back': 'Vissza az összes utazáshoz',
'assistant.suggest.homeNext': 'Melyik a következő utazás, és mi van még hátra?',
'assistant.suggest.homeCompare': 'Hasonlítsd össze a közelgő utazásaimat',
'assistant.suggest.homeAtlas': 'Hány országban jártam már?',
'assistant.suggest.homeVacay': 'Hány szabadnapom maradt idén?',
'assistant.card.tripChat.label': 'Folytatás egy utazás csevegésében',
'assistant.card.tripChat.eyebrow': 'Utazás csevegés',
'assistant.card.tripChat.dates': '{start} és {end} között',
'assistant.card.tripChat.noDates': 'Még nincs dátum',
'assistant.card.tripChat.question': 'Ott felteendő kérdés',
'assistant.card.tripChat.open': 'Folytatás ennek az utazásnak a csevegésében',
'assistant.card.tripChat.phase.now': 'Folyamatban',
'assistant.card.tripChat.phase.next': 'Következő',
'assistant.card.tripChat.phase.upcoming': 'Hamarosan',
'assistant.card.tripChat.phase.past': 'Elmúlt',
'assistant.step.readingTrips': 'Megnézem az utazásaidat',
'assistant.step.openTripChat': 'Megkeresem az utazást',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Perjalananmu',
'assistant.home.welcome': 'Ada yang bisa saya bantu?',
'assistant.home.placeholder': 'Tanyakan apa saja tentang perjalananmu',
'assistant.home.switch': 'Mengobrol tentang satu perjalanan',
'assistant.home.back': 'Kembali ke semua perjalanan',
'assistant.suggest.homeNext': 'Perjalanan mana yang berikutnya, dan apa yang masih belum beres?',
'assistant.suggest.homeCompare': 'Bandingkan perjalananku yang akan datang',
'assistant.suggest.homeAtlas': 'Sudah berapa negara yang kukunjungi?',
'assistant.suggest.homeVacay': 'Berapa hari cuti yang tersisa tahun ini?',
'assistant.card.tripChat.label': 'Lanjutkan di obrolan perjalanan',
'assistant.card.tripChat.eyebrow': 'Obrolan perjalanan',
'assistant.card.tripChat.dates': '{start} sampai {end}',
'assistant.card.tripChat.noDates': 'Belum ada tanggal',
'assistant.card.tripChat.question': 'Pertanyaan untuk di sana',
'assistant.card.tripChat.open': 'Lanjutkan di obrolan perjalanan ini',
'assistant.card.tripChat.phase.now': 'Sedang berjalan',
'assistant.card.tripChat.phase.next': 'Berikutnya',
'assistant.card.tripChat.phase.upcoming': 'Segera',
'assistant.card.tripChat.phase.past': 'Sudah lewat',
'assistant.step.readingTrips': 'Melihat perjalananmu',
'assistant.step.openTripChat': 'Mencari perjalanannya',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'I tuoi viaggi',
'assistant.home.welcome': 'Come posso aiutarti?',
'assistant.home.placeholder': 'Chiedi qualsiasi cosa sui tuoi viaggi',
'assistant.home.switch': 'Chatta su un viaggio',
'assistant.home.back': 'Torna a tutti i viaggi',
'assistant.suggest.homeNext': 'Qual è il prossimo viaggio e cosa manca ancora?',
'assistant.suggest.homeCompare': 'Confronta i miei prossimi viaggi',
'assistant.suggest.homeAtlas': 'Quanti paesi ho visitato?',
'assistant.suggest.homeVacay': "Quanti giorni di ferie mi restano quest'anno?",
'assistant.card.tripChat.label': 'Continua nella chat di un viaggio',
'assistant.card.tripChat.eyebrow': 'Chat del viaggio',
'assistant.card.tripChat.dates': 'dal {start} al {end}',
'assistant.card.tripChat.noDates': 'Ancora senza date',
'assistant.card.tripChat.question': 'Domanda da fare lì',
'assistant.card.tripChat.open': 'Continua nella chat di questo viaggio',
'assistant.card.tripChat.phase.now': 'In corso',
'assistant.card.tripChat.phase.next': 'Il prossimo',
'assistant.card.tripChat.phase.upcoming': 'In arrivo',
'assistant.card.tripChat.phase.past': 'Passato',
'assistant.step.readingTrips': 'Guardo i tuoi viaggi',
'assistant.step.openTripChat': 'Cerco il viaggio',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'あなたの旅',
'assistant.home.welcome': '何をお手伝いしましょうか?',
'assistant.home.placeholder': '旅について何でも質問',
'assistant.home.switch': 'ひとつの旅についてチャット',
'assistant.home.back': 'すべての旅に戻る',
'assistant.suggest.homeNext': '次の旅はどれで、まだ何が残っていますか?',
'assistant.suggest.homeCompare': '今後の旅を比べて',
'assistant.suggest.homeAtlas': 'これまでに何か国を訪れましたか?',
'assistant.suggest.homeVacay': '今年の休暇はあと何日残っていますか?',
'assistant.card.tripChat.label': '旅のチャットで続ける',
'assistant.card.tripChat.eyebrow': '旅のチャット',
'assistant.card.tripChat.dates': '{start}から{end}まで',
'assistant.card.tripChat.noDates': 'まだ日程がありません',
'assistant.card.tripChat.question': 'そこで聞く質問',
'assistant.card.tripChat.open': 'この旅のチャットで続ける',
'assistant.card.tripChat.phase.now': '旅行中',
'assistant.card.tripChat.phase.next': '次の旅',
'assistant.card.tripChat.phase.upcoming': 'まもなく',
'assistant.card.tripChat.phase.past': '終了',
'assistant.step.readingTrips': '旅を確認しています',
'assistant.step.openTripChat': '旅を探しています',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': '나의 여행',
'assistant.home.welcome': '무엇을 도와드릴까요?',
'assistant.home.placeholder': '여행에 대해 무엇이든 물어보세요',
'assistant.home.switch': '한 여행에 대해 채팅',
'assistant.home.back': '모든 여행으로 돌아가기',
'assistant.suggest.homeNext': '다음 여행은 어디이고 아직 남은 일은 무엇인가요?',
'assistant.suggest.homeCompare': '다가오는 여행들을 비교해 줘',
'assistant.suggest.homeAtlas': '지금까지 몇 개국을 방문했나요?',
'assistant.suggest.homeVacay': '올해 남은 휴가는 며칠인가요?',
'assistant.card.tripChat.label': '여행 채팅에서 계속하기',
'assistant.card.tripChat.eyebrow': '여행 채팅',
'assistant.card.tripChat.dates': '{start}부터 {end}까지',
'assistant.card.tripChat.noDates': '아직 날짜가 없음',
'assistant.card.tripChat.question': '그곳에서 물어볼 질문',
'assistant.card.tripChat.open': '이 여행의 채팅에서 계속하기',
'assistant.card.tripChat.phase.now': '진행 중',
'assistant.card.tripChat.phase.next': '다음',
'assistant.card.tripChat.phase.upcoming': '곧',
'assistant.card.tripChat.phase.past': '지난 여행',
'assistant.step.readingTrips': '여행을 살펴보는 중',
'assistant.step.openTripChat': '여행을 찾는 중',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Je reizen',
'assistant.home.welcome': 'Waarmee kan ik helpen?',
'assistant.home.placeholder': 'Vraag alles over je reizen',
'assistant.home.switch': 'Over één reis chatten',
'assistant.home.back': 'Terug naar alle reizen',
'assistant.suggest.homeNext': 'Welke reis komt als volgende en wat staat er nog open?',
'assistant.suggest.homeCompare': 'Vergelijk mijn komende reizen',
'assistant.suggest.homeAtlas': 'Hoeveel landen heb ik bezocht?',
'assistant.suggest.homeVacay': 'Hoeveel vakantiedagen heb ik dit jaar nog?',
'assistant.card.tripChat.label': 'Verder in de chat van een reis',
'assistant.card.tripChat.eyebrow': 'Reischat',
'assistant.card.tripChat.dates': '{start} tot {end}',
'assistant.card.tripChat.noDates': 'Nog geen data',
'assistant.card.tripChat.question': 'Vraag om daar te stellen',
'assistant.card.tripChat.open': 'Verder in de chat van deze reis',
'assistant.card.tripChat.phase.now': 'Bezig',
'assistant.card.tripChat.phase.next': 'Volgende',
'assistant.card.tripChat.phase.upcoming': 'Binnenkort',
'assistant.card.tripChat.phase.past': 'Voorbij',
'assistant.step.readingTrips': 'Ik bekijk je reizen',
'assistant.step.openTripChat': 'Ik zoek de reis',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Twoje podróże',
'assistant.home.welcome': 'W czym mogę pomóc?',
'assistant.home.placeholder': 'Zapytaj o cokolwiek w sprawie swoich podróży',
'assistant.home.switch': 'Czat o jednej podróży',
'assistant.home.back': 'Wróć do wszystkich podróży',
'assistant.suggest.homeNext': 'Która podróż jest następna i co jeszcze zostało?',
'assistant.suggest.homeCompare': 'Porównaj moje nadchodzące podróże',
'assistant.suggest.homeAtlas': 'Ile krajów odwiedziłem?',
'assistant.suggest.homeVacay': 'Ile dni urlopu zostało mi w tym roku?',
'assistant.card.tripChat.label': 'Kontynuuj na czacie podróży',
'assistant.card.tripChat.eyebrow': 'Czat podróży',
'assistant.card.tripChat.dates': 'od {start} do {end}',
'assistant.card.tripChat.noDates': 'Jeszcze bez dat',
'assistant.card.tripChat.question': 'Pytanie do zadania tam',
'assistant.card.tripChat.open': 'Kontynuuj na czacie tej podróży',
'assistant.card.tripChat.phase.now': 'W trakcie',
'assistant.card.tripChat.phase.next': 'Następna',
'assistant.card.tripChat.phase.upcoming': 'Wkrótce',
'assistant.card.tripChat.phase.past': 'Za tobą',
'assistant.step.readingTrips': 'Przeglądam twoje podróże',
'assistant.step.openTripChat': 'Szukam podróży',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Ваши поездки',
'assistant.home.welcome': 'Чем могу помочь?',
'assistant.home.placeholder': 'Спросите что угодно о своих поездках',
'assistant.home.switch': 'Чат об одной поездке',
'assistant.home.back': 'Назад ко всем поездкам',
'assistant.suggest.homeNext': 'Какая поездка следующая и что ещё не готово?',
'assistant.suggest.homeCompare': 'Сравни мои предстоящие поездки',
'assistant.suggest.homeAtlas': 'Сколько стран я посетил?',
'assistant.suggest.homeVacay': 'Сколько дней отпуска у меня осталось в этом году?',
'assistant.card.tripChat.label': 'Продолжить в чате поездки',
'assistant.card.tripChat.eyebrow': 'Чат поездки',
'assistant.card.tripChat.dates': 'с {start} по {end}',
'assistant.card.tripChat.noDates': 'Даты пока не заданы',
'assistant.card.tripChat.question': 'Вопрос для того чата',
'assistant.card.tripChat.open': 'Продолжить в чате этой поездки',
'assistant.card.tripChat.phase.now': 'Идёт сейчас',
'assistant.card.tripChat.phase.next': 'Следующая',
'assistant.card.tripChat.phase.upcoming': 'Скоро',
'assistant.card.tripChat.phase.past': 'Позади',
'assistant.step.readingTrips': 'Смотрю ваши поездки',
'assistant.step.openTripChat': 'Ищу поездку',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Tvoje cesty',
'assistant.home.welcome': 'S čím ti môžem pomôcť?',
'assistant.home.placeholder': 'Opýtaj sa čokoľvek o svojich cestách',
'assistant.home.switch': 'Chatovať o jednej ceste',
'assistant.home.back': 'Späť na všetky cesty',
'assistant.suggest.homeNext': 'Ktorá cesta je na rade a čo ešte zostáva?',
'assistant.suggest.homeCompare': 'Porovnaj moje nadchádzajúce cesty',
'assistant.suggest.homeAtlas': 'Koľko krajín som navštívil?',
'assistant.suggest.homeVacay': 'Koľko dní dovolenky mi tento rok zostáva?',
'assistant.card.tripChat.label': 'Pokračovať v chate cesty',
'assistant.card.tripChat.eyebrow': 'Chat cesty',
'assistant.card.tripChat.dates': '{start} až {end}',
'assistant.card.tripChat.noDates': 'Zatiaľ bez termínu',
'assistant.card.tripChat.question': 'Otázka, ktorú tam položiť',
'assistant.card.tripChat.open': 'Pokračovať v chate tejto cesty',
'assistant.card.tripChat.phase.now': 'Prebieha',
'assistant.card.tripChat.phase.next': 'Ďalšia',
'assistant.card.tripChat.phase.upcoming': 'Čoskoro',
'assistant.card.tripChat.phase.past': 'Za tebou',
'assistant.step.readingTrips': 'Prezerám tvoje cesty',
'assistant.step.openTripChat': 'Hľadám cestu',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Dina resor',
'assistant.home.welcome': 'Vad kan jag hjälpa till med?',
'assistant.home.placeholder': 'Fråga vad som helst om dina resor',
'assistant.home.switch': 'Chatta om en resa',
'assistant.home.back': 'Tillbaka till alla resor',
'assistant.suggest.homeNext': 'Vilken resa är nästa, och vad återstår?',
'assistant.suggest.homeCompare': 'Jämför mina kommande resor',
'assistant.suggest.homeAtlas': 'Hur många länder har jag besökt?',
'assistant.suggest.homeVacay': 'Hur många semesterdagar har jag kvar i år?',
'assistant.card.tripChat.label': 'Fortsätt i en resas chatt',
'assistant.card.tripChat.eyebrow': 'Resechatt',
'assistant.card.tripChat.dates': '{start} till {end}',
'assistant.card.tripChat.noDates': 'Inga datum ännu',
'assistant.card.tripChat.question': 'Fråga att ställa där',
'assistant.card.tripChat.open': 'Fortsätt i den här resans chatt',
'assistant.card.tripChat.phase.now': 'Pågår',
'assistant.card.tripChat.phase.next': 'Nästa',
'assistant.card.tripChat.phase.upcoming': 'Snart',
'assistant.card.tripChat.phase.past': 'Bakom dig',
'assistant.step.readingTrips': 'Tittar på dina resor',
'assistant.step.openTripChat': 'Letar upp resan',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'ทริปของคุณ',
'assistant.home.welcome': 'ให้ช่วยอะไรดี?',
'assistant.home.placeholder': 'ถามอะไรก็ได้เกี่ยวกับทริปของคุณ',
'assistant.home.switch': 'แชตเกี่ยวกับทริปเดียว',
'assistant.home.back': 'กลับไปที่ทริปทั้งหมด',
'assistant.suggest.homeNext': 'ทริปไหนเป็นทริปถัดไป และยังเหลืออะไรอีกบ้าง?',
'assistant.suggest.homeCompare': 'เปรียบเทียบทริปที่กำลังจะถึงของฉัน',
'assistant.suggest.homeAtlas': 'ฉันไปมาแล้วกี่ประเทศ?',
'assistant.suggest.homeVacay': 'ปีนี้ฉันเหลือวันลาพักร้อนกี่วัน?',
'assistant.card.tripChat.label': 'ไปต่อในแชตของทริป',
'assistant.card.tripChat.eyebrow': 'แชตทริป',
'assistant.card.tripChat.dates': '{start} ถึง {end}',
'assistant.card.tripChat.noDates': 'ยังไม่มีวันที่',
'assistant.card.tripChat.question': 'คำถามที่จะถามที่นั่น',
'assistant.card.tripChat.open': 'ไปต่อในแชตของทริปนี้',
'assistant.card.tripChat.phase.now': 'กำลังเดินทาง',
'assistant.card.tripChat.phase.next': 'ถัดไป',
'assistant.card.tripChat.phase.upcoming': 'เร็วๆ นี้',
'assistant.card.tripChat.phase.past': 'ผ่านไปแล้ว',
'assistant.step.readingTrips': 'กำลังดูทริปของคุณ',
'assistant.step.openTripChat': 'กำลังหาทริป',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Seyahatlerin',
'assistant.home.welcome': 'Sana nasıl yardımcı olabilirim?',
'assistant.home.placeholder': 'Seyahatlerin hakkında her şeyi sor',
'assistant.home.switch': 'Tek bir seyahat hakkında sohbet et',
'assistant.home.back': 'Tüm seyahatlere dön',
'assistant.suggest.homeNext': 'Sıradaki seyahat hangisi ve neler eksik?',
'assistant.suggest.homeCompare': 'Yaklaşan seyahatlerimi karşılaştır',
'assistant.suggest.homeAtlas': 'Kaç ülke ziyaret ettim?',
'assistant.suggest.homeVacay': 'Bu yıl kaç izin günüm kaldı?',
'assistant.card.tripChat.label': 'Bir seyahatin sohbetinde devam et',
'assistant.card.tripChat.eyebrow': 'Seyahat sohbeti',
'assistant.card.tripChat.dates': '{start} ile {end} arası',
'assistant.card.tripChat.noDates': 'Henüz tarih yok',
'assistant.card.tripChat.question': 'Orada sorulacak soru',
'assistant.card.tripChat.open': 'Bu seyahatin sohbetinde devam et',
'assistant.card.tripChat.phase.now': 'Sürüyor',
'assistant.card.tripChat.phase.next': 'Sıradaki',
'assistant.card.tripChat.phase.upcoming': 'Yakında',
'assistant.card.tripChat.phase.past': 'Geride',
'assistant.step.readingTrips': 'Seyahatlerine bakıyorum',
'assistant.step.openTripChat': 'Seyahati buluyorum',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Ваші подорожі',
'assistant.home.welcome': 'Чим можу допомогти?',
'assistant.home.placeholder': 'Запитайте що завгодно про свої подорожі',
'assistant.home.switch': 'Чат про одну подорож',
'assistant.home.back': 'Назад до всіх подорожей',
'assistant.suggest.homeNext': 'Яка подорож наступна і що ще не готово?',
'assistant.suggest.homeCompare': 'Порівняй мої майбутні подорожі',
'assistant.suggest.homeAtlas': 'Скільки країн я відвідав?',
'assistant.suggest.homeVacay': 'Скільки днів відпустки мені лишилося цього року?',
'assistant.card.tripChat.label': 'Продовжити в чаті подорожі',
'assistant.card.tripChat.eyebrow': 'Чат подорожі',
'assistant.card.tripChat.dates': 'з {start} по {end}',
'assistant.card.tripChat.noDates': 'Дат поки немає',
'assistant.card.tripChat.question': 'Питання для того чату',
'assistant.card.tripChat.open': 'Продовжити в чаті цієї подорожі',
'assistant.card.tripChat.phase.now': 'Триває',
'assistant.card.tripChat.phase.next': 'Наступна',
'assistant.card.tripChat.phase.upcoming': 'Незабаром',
'assistant.card.tripChat.phase.past': 'Позаду',
'assistant.step.readingTrips': 'Переглядаю ваші подорожі',
'assistant.step.openTripChat': 'Шукаю подорож',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': 'Các chuyến đi của bạn',
'assistant.home.welcome': 'Tôi có thể giúp gì cho bạn?',
'assistant.home.placeholder': 'Hỏi bất cứ điều gì về các chuyến đi của bạn',
'assistant.home.switch': 'Trò chuyện về một chuyến đi',
'assistant.home.back': 'Quay lại tất cả chuyến đi',
'assistant.suggest.homeNext': 'Chuyến đi nào tiếp theo, và còn gì chưa xong?',
'assistant.suggest.homeCompare': 'So sánh các chuyến đi sắp tới của tôi',
'assistant.suggest.homeAtlas': 'Tôi đã đến bao nhiêu quốc gia?',
'assistant.suggest.homeVacay': 'Năm nay tôi còn bao nhiêu ngày nghỉ phép?',
'assistant.card.tripChat.label': 'Tiếp tục trong cuộc trò chuyện của chuyến đi',
'assistant.card.tripChat.eyebrow': 'Trò chuyện chuyến đi',
'assistant.card.tripChat.dates': 'từ {start} đến {end}',
'assistant.card.tripChat.noDates': 'Chưa có ngày',
'assistant.card.tripChat.question': 'Câu hỏi để hỏi ở đó',
'assistant.card.tripChat.open': 'Tiếp tục trong cuộc trò chuyện của chuyến đi này',
'assistant.card.tripChat.phase.now': 'Đang diễn ra',
'assistant.card.tripChat.phase.next': 'Tiếp theo',
'assistant.card.tripChat.phase.upcoming': 'Sắp tới',
'assistant.card.tripChat.phase.past': 'Đã qua',
'assistant.step.readingTrips': 'Đang xem các chuyến đi của bạn',
'assistant.step.openTripChat': 'Đang tìm chuyến đi',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': '你的旅行',
'assistant.home.welcome': '有什麼可以幫你?',
'assistant.home.placeholder': '關於你的旅行,儘管問',
'assistant.home.switch': '聊聊某一趟旅行',
'assistant.home.back': '返回全部旅行',
'assistant.suggest.homeNext': '下一趟旅行是哪一趟,還有什麼沒處理?',
'assistant.suggest.homeCompare': '比較我即將出發的旅行',
'assistant.suggest.homeAtlas': '我去過幾個國家?',
'assistant.suggest.homeVacay': '今年我還剩幾天假?',
'assistant.card.tripChat.label': '在旅行的聊天中繼續',
'assistant.card.tripChat.eyebrow': '旅行聊天',
'assistant.card.tripChat.dates': '{start} 至 {end}',
'assistant.card.tripChat.noDates': '尚無日期',
'assistant.card.tripChat.question': '要在那裡問的問題',
'assistant.card.tripChat.open': '在這趟旅行的聊天中繼續',
'assistant.card.tripChat.phase.now': '進行中',
'assistant.card.tripChat.phase.next': '下一趟',
'assistant.card.tripChat.phase.upcoming': '即將到來',
'assistant.card.tripChat.phase.past': '已結束',
'assistant.step.readingTrips': '正在查看你的旅行',
'assistant.step.openTripChat': '正在尋找這趟旅行',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,
+27
View File
@@ -0,0 +1,27 @@
import type { TranslationStrings } from '../types';
const assistantHome: TranslationStrings = {
'assistant.home.title': '你的旅行',
'assistant.home.welcome': '有什么可以帮你?',
'assistant.home.placeholder': '关于你的旅行,随便问',
'assistant.home.switch': '聊聊某一次旅行',
'assistant.home.back': '返回全部旅行',
'assistant.suggest.homeNext': '下一次旅行是哪次,还有什么没办好?',
'assistant.suggest.homeCompare': '比较我即将开始的旅行',
'assistant.suggest.homeAtlas': '我去过多少个国家?',
'assistant.suggest.homeVacay': '今年我还剩几天假期?',
'assistant.card.tripChat.label': '在旅行的聊天中继续',
'assistant.card.tripChat.eyebrow': '旅行聊天',
'assistant.card.tripChat.dates': '{start} 至 {end}',
'assistant.card.tripChat.noDates': '尚无日期',
'assistant.card.tripChat.question': '要在那里问的问题',
'assistant.card.tripChat.open': '在这次旅行的聊天中继续',
'assistant.card.tripChat.phase.now': '进行中',
'assistant.card.tripChat.phase.next': '下一次',
'assistant.card.tripChat.phase.upcoming': '即将到来',
'assistant.card.tripChat.phase.past': '已结束',
'assistant.step.readingTrips': '正在查看你的旅行',
'assistant.step.openTripChat': '正在查找这次旅行',
};
export default assistantHome;
+2
View File
@@ -9,6 +9,7 @@ import assistantBudget from './assistantBudget';
import assistantCard from './assistantCard';
import assistantCollab from './assistantCollab';
import assistantCollection from './assistantCollection';
import assistantHome from './assistantHome';
import assistantJourney from './assistantJourney';
import assistantPacking from './assistantPacking';
import assistantRoadtrip from './assistantRoadtrip';
@@ -149,6 +150,7 @@ const locale = {
...assistantCollection,
...assistantAtlas,
...assistantVacay,
...assistantHome,
...assistantJourney,
...assistantPacking,
...studioLayers,