mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-23 15:36:33 +00:00
feat(assistant): one AI tile for assistant, parsing and MCP, a planner-aware chat
The three AI addons share one tile in the integration column; a dialog holds the connection, the assistant's limits and AI parsing, which now reads with the assistant's connection unless an install keeps its own. Existing parsing configs stay where they are and keep winning. The chat sees the map on screen, offers next questions under an answer, shows its live step in the window head, previews waiting changes inside the day list, checks whether a day still works, folds a multi-day plan into a week grid, keeps per-trip notes and can estimate costs. An empty or cut-off answer gets one push instead of ending silently, and the assistant's own step and size limits are raised.
This commit is contained in:
@@ -40,7 +40,7 @@ describe('assistantChatRequestSchema', () => {
|
||||
|
||||
it('refuses blank or overlong text, a bad thread id and unknown keys', () => {
|
||||
expect(assistantChatRequestSchema.safeParse({ ...ctx, threadId: null, text: ' ' }).success).toBe(false);
|
||||
expect(assistantChatRequestSchema.safeParse({ ...ctx, threadId: null, text: 'x'.repeat(4001) }).success).toBe(
|
||||
expect(assistantChatRequestSchema.safeParse({ ...ctx, threadId: null, text: 'x'.repeat(32_001) }).success).toBe(
|
||||
false,
|
||||
);
|
||||
expect(assistantChatRequestSchema.safeParse({ ...ctx, threadId: 0, text: 'hi' }).success).toBe(false);
|
||||
@@ -84,7 +84,7 @@ describe('assistantDecisionsRequestSchema', () => {
|
||||
expect(assistantDecisionsRequestSchema.safeParse({ ...ctx, decisions: [decision] }).success).toBe(true);
|
||||
expect(assistantDecisionsRequestSchema.safeParse({ ...ctx, decisions: [] }).success).toBe(false);
|
||||
expect(
|
||||
assistantDecisionsRequestSchema.safeParse({ ...ctx, decisions: Array.from({ length: 13 }, () => decision) })
|
||||
assistantDecisionsRequestSchema.safeParse({ ...ctx, decisions: Array.from({ length: 51 }, () => decision) })
|
||||
.success,
|
||||
).toBe(false);
|
||||
});
|
||||
@@ -225,8 +225,8 @@ describe('mentions in a chat request', () => {
|
||||
{ kind: 'reservation', id: 2 },
|
||||
];
|
||||
expect(assistantChatRequestSchema.safeParse({ ...base, mentions }).success).toBe(true);
|
||||
const eleven = Array.from({ length: 11 }, () => ({ kind: 'place', id: 4 }));
|
||||
expect(assistantChatRequestSchema.safeParse({ ...base, mentions: eleven }).success).toBe(false);
|
||||
const tooMany = Array.from({ length: 51 }, () => ({ kind: 'place', id: 4 }));
|
||||
expect(assistantChatRequestSchema.safeParse({ ...base, mentions: tooMany }).success).toBe(false);
|
||||
const labelled = [{ kind: 'place', id: 4, label: 'Louvre' }];
|
||||
expect(assistantChatRequestSchema.safeParse({ ...base, mentions: labelled }).success).toBe(false);
|
||||
expect(assistantChatRequestSchema.safeParse({ ...base, mentions: [{ kind: 'trip', id: 4 }] }).success).toBe(false);
|
||||
@@ -325,11 +325,11 @@ describe('assistantFoundPlaceSchema', () => {
|
||||
expect(withPlace({ kind: 'casino' }).success).toBe(false);
|
||||
});
|
||||
|
||||
it('holds at most eight places to a step and counts the rest', () => {
|
||||
const places = Array.from({ length: 9 }, (_, i) => ({ ...place, ref: `toolu_01:${i}` }));
|
||||
it('holds at most twenty places to a step and counts the rest', () => {
|
||||
const places = Array.from({ length: 21 }, (_, i) => ({ ...place, ref: `toolu_01:${i}` }));
|
||||
const step = (body: Record<string, unknown>) =>
|
||||
assistantPlacesSchema.safeParse({ toolCallId: 'toolu_01', ...body });
|
||||
expect(step({ places: places.slice(0, 8), more: 1 }).success).toBe(true);
|
||||
expect(step({ places: places.slice(0, 20), more: 1 }).success).toBe(true);
|
||||
expect(step({ places, more: 0 }).success).toBe(false);
|
||||
expect(step({ places: [], more: -1 }).success).toBe(false);
|
||||
});
|
||||
|
||||
@@ -32,6 +32,8 @@ export const ASSISTANT_ERROR_CODES = [
|
||||
'invalid_key',
|
||||
'provider_unavailable',
|
||||
'max_steps',
|
||||
// The model answered with nothing, not even after it was asked to go on.
|
||||
'empty_answer',
|
||||
'offline',
|
||||
'no_bookings_found',
|
||||
'import_unavailable',
|
||||
@@ -128,11 +130,21 @@ export const assistantMentionSchema = z
|
||||
.strict();
|
||||
export type AssistantMention = z.infer<typeof assistantMentionSchema>;
|
||||
|
||||
/** What the user is looking at when they ask: the selected day, or the places they asked about. */
|
||||
/** The part of the map the planner shows, so "here" and "nearby" mean what is on screen. */
|
||||
export const assistantMapViewSchema = z
|
||||
.object({ south: latSchema, west: lngSchema, north: latSchema, east: lngSchema })
|
||||
.strict();
|
||||
export type AssistantMapView = z.infer<typeof assistantMapViewSchema>;
|
||||
|
||||
/**
|
||||
* What the user is looking at when they ask: the selected day, or the places
|
||||
* they asked about, and the part of the map on screen.
|
||||
*/
|
||||
export const assistantFocusSchema = z
|
||||
.object({
|
||||
dayId: idSchema.optional(),
|
||||
placeIds: z.array(idSchema).max(20).optional(),
|
||||
view: assistantMapViewSchema.optional(),
|
||||
})
|
||||
.strict();
|
||||
export type AssistantFocus = z.infer<typeof assistantFocusSchema>;
|
||||
@@ -148,9 +160,9 @@ export type AssistantClientCtx = z.infer<typeof assistantClientCtxSchema>;
|
||||
export const assistantChatRequestSchema = assistantClientCtxSchema
|
||||
.extend({
|
||||
threadId: idSchema.nullable(),
|
||||
text: z.string().trim().min(1).max(4000),
|
||||
text: z.string().trim().min(1).max(32_000),
|
||||
focus: assistantFocusSchema.optional(),
|
||||
mentions: z.array(assistantMentionSchema).max(10).optional(),
|
||||
mentions: z.array(assistantMentionSchema).max(50).optional(),
|
||||
})
|
||||
.strict();
|
||||
export type AssistantChatRequest = z.infer<typeof assistantChatRequestSchema>;
|
||||
@@ -179,7 +191,7 @@ export type AssistantDecision = z.infer<typeof assistantDecisionSchema>;
|
||||
/** POST /threads/:threadId/decisions: every change the step holds, applied or discarded. */
|
||||
export const assistantDecisionsRequestSchema = assistantClientCtxSchema
|
||||
.extend({
|
||||
decisions: z.array(assistantDecisionSchema).min(1).max(12),
|
||||
decisions: z.array(assistantDecisionSchema).min(1).max(50),
|
||||
})
|
||||
.strict();
|
||||
export type AssistantDecisionsRequest = z.infer<typeof assistantDecisionsRequestSchema>;
|
||||
@@ -299,9 +311,15 @@ export const assistantFoundPlaceSchema = z.object({
|
||||
kind: z.enum(ASSISTANT_FOUND_PLACE_KINDS).nullable(),
|
||||
rating: z.number().min(0).max(5).nullable(),
|
||||
openNow: z.boolean().nullable(),
|
||||
googlePlaceId: z.string().regex(/^[\w-]{1,200}$/).nullable(),
|
||||
googlePlaceId: z
|
||||
.string()
|
||||
.regex(/^[\w-]{1,200}$/)
|
||||
.nullable(),
|
||||
osmId: z.string().max(40).nullable(),
|
||||
photoKey: z.string().regex(/^([\w-]{1,200}|coords:-?\d{1,3}(\.\d{1,12})?,-?\d{1,3}(\.\d{1,12})?)$/).nullable(),
|
||||
photoKey: z
|
||||
.string()
|
||||
.regex(/^([\w-]{1,200}|coords:-?\d{1,3}(\.\d{1,12})?,-?\d{1,3}(\.\d{1,12})?)$/)
|
||||
.nullable(),
|
||||
inTripPlaceId: idSchema.nullable(),
|
||||
});
|
||||
export type AssistantFoundPlace = z.infer<typeof assistantFoundPlaceSchema>;
|
||||
@@ -309,7 +327,7 @@ export type AssistantFoundPlace = z.infer<typeof assistantFoundPlaceSchema>;
|
||||
/** The places one search step found: at most eight, `more` counts the rest. */
|
||||
export const assistantPlacesSchema = z.object({
|
||||
toolCallId: z.string().max(64),
|
||||
places: z.array(assistantFoundPlaceSchema).max(8),
|
||||
places: z.array(assistantFoundPlaceSchema).max(20),
|
||||
more: z.number().int().nonnegative(),
|
||||
});
|
||||
export type AssistantPlaces = z.infer<typeof assistantPlacesSchema>;
|
||||
@@ -375,7 +393,7 @@ export const assistantMentionsSchema = z.object({
|
||||
label: z.string().max(120),
|
||||
}),
|
||||
)
|
||||
.max(10),
|
||||
.max(50),
|
||||
});
|
||||
export type AssistantMentions = z.infer<typeof assistantMentionsSchema>;
|
||||
|
||||
|
||||
@@ -1016,5 +1016,32 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'حذف الفئة',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'حذف الفئة "{name}" وجميع عناصرها؟',
|
||||
'admin.rotateJwt.button': 'تجديد',
|
||||
'admin.addons.ai.name': 'الذكاء الاصطناعي',
|
||||
'admin.addons.ai.description':
|
||||
'اتصال واحد للمساعد ولاستيراد الحجوزات. يتيح MCP لتطبيقات الذكاء الاصطناعي الأخرى استخدام TREK.',
|
||||
'admin.addons.ai.setup': 'إعداد الذكاء الاصطناعي',
|
||||
'admin.addons.ai.dialogSub': 'الاتصال الذي يتشاركه المساعد والتحليل بالذكاء الاصطناعي، وما يُسمح لكل منهما به.',
|
||||
'admin.addons.ai.tab.connection': 'الاتصال',
|
||||
'admin.addons.ai.parsing.readsWith': 'يقرأ الحجوزات باستخدام',
|
||||
'admin.addons.ai.parsing.own': 'اتصال خاص',
|
||||
'admin.addons.ai.parsing.ownHint': 'يُستخدم بدلًا من الاتصال المشترك.',
|
||||
'admin.addons.ai.parsing.useShared': 'استخدام الاتصال المشترك',
|
||||
'admin.addons.ai.parsing.sharedTag': 'مشترك',
|
||||
'admin.addons.ai.parsing.perUser': 'يقرأ كل شخص باتصاله الخاص من إعداداته.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'لا يوجد اتصال بعد. أعدّ اتصالًا للجميع، أو امنح التحليل بالذكاء الاصطناعي اتصالًا خاصًا.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'استخدام اتصال آخر',
|
||||
'admin.addons.ai.parsing.installed': 'مثبتة على الخادم',
|
||||
'admin.addons.ai.parsing.refresh': 'تحديث',
|
||||
'admin.addons.ai.parsing.noModels': 'لا توجد نماذج مثبتة بعد. نزّل واحدًا أدناه.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'تنزيل نموذج موصى به',
|
||||
'admin.addons.ai.parsing.pull': 'تنزيل',
|
||||
'admin.addons.ai.parsing.pulling': 'جارٍ التنزيل…',
|
||||
'admin.addons.ai.parsing.use': 'استخدام',
|
||||
'admin.addons.ai.parsing.selected': 'محدد',
|
||||
'admin.addons.ai.parsing.pulled': 'تم تنزيل النموذج',
|
||||
'admin.addons.ai.parsing.pullFailed': 'تعذّر تنزيل النموذج',
|
||||
'admin.addons.ai.parsing.unreachable': 'تعذّر الوصول إلى الخادم المحلي',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'غالبًا غير مطلوب',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -42,7 +42,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'الحصول على مفتاح',
|
||||
'assistant.connect.hintAnthropic': 'تتضمن باقتا Claude Max وTeam رصيدًا لـ API.',
|
||||
'assistant.connect.hintOpenai': 'أنشئ مفتاحًا في لوحة تحكم OpenAI.',
|
||||
'assistant.connect.hintGemini': 'يوفر AI Studio خطة مجانية بحدود في الدقيقة واليوم، وقد تستخدم Google فيها ما ترسله لتحسين منتجاتها. عند تفعيل الفوترة تكون الحدود أعلى ولا ينطبق ذلك.',
|
||||
'assistant.connect.hintGemini':
|
||||
'يوفر AI Studio خطة مجانية بحدود في الدقيقة واليوم، وقد تستخدم Google فيها ما ترسله لتحسين منتجاتها. عند تفعيل الفوترة تكون الحدود أعلى ولا ينطبق ذلك.',
|
||||
'assistant.connect.hintOpenrouter': 'سجّل الدخول عبر OpenRouter، دون مفتاح لنسخه.',
|
||||
'assistant.connect.openrouter': 'ربط OpenRouter',
|
||||
'assistant.connect.save': 'اتصال',
|
||||
@@ -417,5 +418,75 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'تمت المشاركة',
|
||||
'assistant.share.failed': 'تعذّرت المشاركة. حاول مرة أخرى بعد قليل.',
|
||||
'assistant.share.chatOff': 'محادثة الرحلة متوقفة.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'اتصال الذكاء الاصطناعي الخاص بك: يعمل عليه المساعد، ويقرأ الحجوزات التي تستوردها.',
|
||||
'assistant.connect.descriptionParsingOnly': 'اتصال الذكاء الاصطناعي الخاص بك: يقرأ الحجوزات التي تستوردها.',
|
||||
'assistant.error.emptyAnswer': 'عاد المساعد دون إجابة. هل أحاول مرة أخرى؟',
|
||||
'assistant.followUp.title': 'تابع مع',
|
||||
'assistant.followUp.cheaper': 'الأرخص فقط',
|
||||
'assistant.followUp.closer': 'أقرب إلى مكان إقامتي',
|
||||
'assistant.followUp.openNow': 'ما المفتوح الآن؟',
|
||||
'assistant.followUp.nextDay': 'خطّط لليوم التالي بالطريقة نفسها',
|
||||
'assistant.followUp.relaxed': 'اجعل الخطة أكثر هدوءًا',
|
||||
'assistant.followUp.dinners': 'أضف مطاعم للأمسيات',
|
||||
'assistant.followUp.rain': 'ماذا لو أمطرت؟',
|
||||
'assistant.followUp.sun': 'ما الذي يستحق في الخارج عند صفاء الطقس؟',
|
||||
'assistant.followUp.more': 'أخبرني بالمزيد',
|
||||
'assistant.followUp.next': 'ماذا تقترح الآن؟',
|
||||
'assistant.menu.alternative': 'إيجاد بديل',
|
||||
'assistant.menu.alternativeAsk': 'جد بديلًا جيدًا لـ {place} في الجوار، وقل لماذا يناسب أكثر.',
|
||||
'assistant.menu.foodNearby': 'مطعم قريب',
|
||||
'assistant.menu.foodNearbyAsk': 'اقترح بعض الأماكن الجيدة للأكل قرب {place}.',
|
||||
'assistant.menu.planDay': 'تخطيط هذا اليوم',
|
||||
'assistant.menu.planDayAsk': 'خطّط لي هذا اليوم: أماكن وأوقات ومكانًا للأكل.',
|
||||
'assistant.menu.rainPlan': 'خطة المطر',
|
||||
'assistant.menu.rainPlanAsk': 'ماذا يمكننا أن نفعل في هذا اليوم إذا أمطرت؟ اقترح بدائل داخلية قريبة.',
|
||||
'assistant.preview.title': 'اقتراحات المساعد',
|
||||
'assistant.preview.suggested': 'اقتراح',
|
||||
'assistant.preview.movedHere': 'ينتقل إلى هنا',
|
||||
'assistant.preview.removed': 'يُزال',
|
||||
'assistant.preview.movedAway': 'يُنقل',
|
||||
'assistant.check.ok': 'يتسع له الوقت',
|
||||
'assistant.week.title': 'أيام هذه الخطة',
|
||||
'assistant.week.day': 'يوم',
|
||||
'assistant.memory.title': 'ملاحظات الرحلة',
|
||||
'assistant.memory.edit': 'تعديل ملاحظات الرحلة',
|
||||
'assistant.memory.sub': 'يراعيها المساعد في كل اقتراح لهذه الرحلة.',
|
||||
'assistant.memory.quick': 'رغبات شائعة',
|
||||
'assistant.memory.notes': 'ملاحظاتك',
|
||||
'assistant.memory.placeholder': 'مثلًا: نسافر مع طفل صغير، نحب أكل الشارع، لا استيقاظ مبكر.',
|
||||
'assistant.memory.saved': 'حُفظت ملاحظات الرحلة',
|
||||
'assistant.memory.quick.vegetarian': 'نأكل نباتيًا',
|
||||
'assistant.memory.quick.kids': 'نسافر مع أطفال',
|
||||
'assistant.memory.quick.budget': 'بميزانية محدودة',
|
||||
'assistant.memory.quick.slow': 'إيقاع هادئ بلا استعجال',
|
||||
'assistant.memory.quick.accessible': 'دخول بلا درجات من فضلك',
|
||||
'assistant.memory.quick.noMuseums': 'متاحف قليلة',
|
||||
'assistant.settings.costEstimates': 'تقدير التكاليف',
|
||||
'assistant.settings.costEstimatesHint': 'مع مطعم أو تذكرة يقترح مصروفًا تقديريًا للميزانية، كبطاقة تؤكدها.',
|
||||
'assistant.change.timeline.tight': 'ينقص {count} دقيقة',
|
||||
'assistant.change.timeline.tight.zero': 'ينقص {count} دقيقة',
|
||||
'assistant.change.timeline.tight.one': 'تنقص دقيقة واحدة',
|
||||
'assistant.change.timeline.tight.two': 'تنقص دقيقتان',
|
||||
'assistant.change.timeline.tight.few': 'تنقص {count} دقائق',
|
||||
'assistant.change.timeline.tight.many': 'تنقص {count} دقيقة',
|
||||
'assistant.check.issues': '{count} نقطة للمراجعة',
|
||||
'assistant.check.issues.zero': 'لا نقاط للمراجعة',
|
||||
'assistant.check.issues.one': 'نقطة واحدة للمراجعة',
|
||||
'assistant.check.issues.two': 'نقطتان للمراجعة',
|
||||
'assistant.check.issues.few': '{count} نقاط للمراجعة',
|
||||
'assistant.check.issues.many': '{count} نقطة للمراجعة',
|
||||
'assistant.week.changes': '{count} تغيير',
|
||||
'assistant.week.changes.zero': 'لا تغييرات',
|
||||
'assistant.week.changes.one': 'تغيير واحد',
|
||||
'assistant.week.changes.two': 'تغييران',
|
||||
'assistant.week.changes.few': '{count} تغييرات',
|
||||
'assistant.week.changes.many': '{count} تغييرًا',
|
||||
'assistant.week.showAll': 'عرض كل التغييرات الـ {count}',
|
||||
'assistant.week.showAll.zero': 'لا تغييرات للعرض',
|
||||
'assistant.week.showAll.one': 'عرض التغيير',
|
||||
'assistant.week.showAll.two': 'عرض التغييرين',
|
||||
'assistant.week.showAll.few': 'عرض التغييرات الـ {count}',
|
||||
'assistant.week.showAll.many': 'عرض التغييرات الـ {count}',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -995,6 +995,34 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Kateqoriyanı sil',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': '"{name}" kateqoriyası və bütün elementləri silinsin?',
|
||||
'admin.rotateJwt.button': 'Yenilə',
|
||||
'admin.addons.ai.name': 'Süni intellekt',
|
||||
'admin.addons.ai.description':
|
||||
'Assistent və rezervasiya idxalı üçün bir bağlantı. MCP digər süni intellekt tətbiqlərinə TREK-dən istifadə etməyə imkan verir.',
|
||||
'admin.addons.ai.setup': 'Süni intellekti qur',
|
||||
'admin.addons.ai.dialogSub':
|
||||
'Assistentin və süni intellekt təhlilinin paylaşdığı bağlantı və hər birinin nə edə biləcəyi.',
|
||||
'admin.addons.ai.tab.connection': 'Bağlantı',
|
||||
'admin.addons.ai.parsing.readsWith': 'Rezervasiyaları bununla oxuyur',
|
||||
'admin.addons.ai.parsing.own': 'Öz bağlantısı',
|
||||
'admin.addons.ai.parsing.ownHint': 'Ortaq bağlantının əvəzinə istifadə olunur.',
|
||||
'admin.addons.ai.parsing.useShared': 'Ortaq bağlantıdan istifadə et',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Ortaq',
|
||||
'admin.addons.ai.parsing.perUser': 'Hər kəs öz ayarlarındakı bağlantı ilə oxuyur.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'Hələ bağlantı yoxdur. Hamı üçün birini qurun və ya süni intellekt təhlilinə öz bağlantısını verin.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Başqasından istifadə et',
|
||||
'admin.addons.ai.parsing.installed': 'Serverdə quraşdırılıb',
|
||||
'admin.addons.ai.parsing.refresh': 'Yenilə',
|
||||
'admin.addons.ai.parsing.noModels': 'Hələ quraşdırılmış model yoxdur. Aşağıdan birini endirin.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Tövsiyə olunan modeli endir',
|
||||
'admin.addons.ai.parsing.pull': 'Endir',
|
||||
'admin.addons.ai.parsing.pulling': 'Endirilir…',
|
||||
'admin.addons.ai.parsing.use': 'İstifadə et',
|
||||
'admin.addons.ai.parsing.selected': 'Seçilib',
|
||||
'admin.addons.ai.parsing.pulled': 'Model endirildi',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Modeli endirmək mümkün olmadı',
|
||||
'admin.addons.ai.parsing.unreachable': 'Yerli serverə qoşulmaq mümkün deyil',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Adətən lazım deyil',
|
||||
};
|
||||
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Açar əldə et',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max və Team planlarına API kreditləri daxildir.',
|
||||
'assistant.connect.hintOpenai': 'OpenAI panelinizdə açar yaradın.',
|
||||
'assistant.connect.hintGemini': 'AI Studio-da dəqiqəlik və günlük limitləri olan pulsuz səviyyə var; orada Google göndərdiklərinizi məhsullarını yaxşılaşdırmaq üçün istifadə edə bilər. Ödəniş aktiv olduqda limitlər daha yüksəkdir və bu tətbiq olunmur.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio-da dəqiqəlik və günlük limitləri olan pulsuz səviyyə var; orada Google göndərdiklərinizi məhsullarını yaxşılaşdırmaq üçün istifadə edə bilər. Ödəniş aktiv olduqda limitlər daha yüksəkdir və bu tətbiq olunmur.',
|
||||
'assistant.connect.hintOpenrouter': 'OpenRouter ilə daxil olun, açar kopyalamağa ehtiyac yoxdur.',
|
||||
'assistant.connect.openrouter': 'OpenRouter-i qoş',
|
||||
'assistant.connect.save': 'Qoş',
|
||||
@@ -339,5 +340,61 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Paylaşıldı',
|
||||
'assistant.share.failed': 'Paylaşmaq alınmadı. Bir azdan yenidən cəhd edin.',
|
||||
'assistant.share.chatOff': 'Səyahət söhbəti söndürülüb.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Süni intellekt bağlantınız: assistent onunla işləyir və idxal etdiyiniz rezervasiyaları oxuyur.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Süni intellekt bağlantınız: idxal etdiyiniz rezervasiyaları oxuyur.',
|
||||
'assistant.error.emptyAnswer': 'Assistent cavabsız qayıtdı. Yenidən cəhd edim?',
|
||||
'assistant.followUp.title': 'Sonra',
|
||||
'assistant.followUp.cheaper': 'Yalnız daha ucuzlar',
|
||||
'assistant.followUp.closer': 'Qaldığım yerə daha yaxın',
|
||||
'assistant.followUp.openNow': 'İndi nə açıqdır?',
|
||||
'assistant.followUp.nextDay': 'Növbəti günü də belə planla',
|
||||
'assistant.followUp.relaxed': 'Planı daha rahat et',
|
||||
'assistant.followUp.dinners': 'Axşamlar üçün restoran əlavə et',
|
||||
'assistant.followUp.rain': 'Yağış yağsa?',
|
||||
'assistant.followUp.sun': 'Yaxşı havada çöldə nə etməyə dəyər?',
|
||||
'assistant.followUp.more': 'Daha çox danış',
|
||||
'assistant.followUp.next': 'İndi nə təklif edirsən?',
|
||||
'assistant.menu.alternative': 'Alternativ tap',
|
||||
'assistant.menu.alternativeAsk': '{place} əvəzinə yaxınlıqda yaxşı alternativ tap və niyə daha uyğun olduğunu de.',
|
||||
'assistant.menu.foodNearby': 'Yaxınlıqda restoran',
|
||||
'assistant.menu.foodNearbyAsk': '{place} yaxınlığında yemək üçün bir neçə yaxşı yer təklif et.',
|
||||
'assistant.menu.planDay': 'Bu günü planla',
|
||||
'assistant.menu.planDayAsk': 'Bu günü mənim üçün planla: yerlər, vaxtlar və yemək üçün bir yer.',
|
||||
'assistant.menu.rainPlan': 'Yağış planı',
|
||||
'assistant.menu.rainPlanAsk': 'Bu gün yağış yağsa nə edə bilərik? Yaxınlıqda qapalı alternativlər təklif et.',
|
||||
'assistant.preview.title': 'Assistentin təklifləri',
|
||||
'assistant.preview.suggested': 'Təklif',
|
||||
'assistant.preview.movedHere': 'Bura gəlir',
|
||||
'assistant.preview.removed': 'Çıxarılır',
|
||||
'assistant.preview.movedAway': 'Köçürülür',
|
||||
'assistant.check.ok': 'Vaxta sığır',
|
||||
'assistant.week.title': 'Bu planın günləri',
|
||||
'assistant.week.day': 'Gün',
|
||||
'assistant.memory.title': 'Səyahət qeydləri',
|
||||
'assistant.memory.edit': 'Səyahət qeydlərini redaktə et',
|
||||
'assistant.memory.sub': 'Assistent bu səyahətdə hər təklifdə bunları nəzərə alır.',
|
||||
'assistant.memory.quick': 'Tez-tez istəklər',
|
||||
'assistant.memory.notes': 'Qeydlərin',
|
||||
'assistant.memory.placeholder':
|
||||
'Məsələn: kiçik uşaqla səyahət edirik, küçə yeməklərini sevirik, tezdən durmaq yoxdur.',
|
||||
'assistant.memory.saved': 'Səyahət qeydləri saxlanıldı',
|
||||
'assistant.memory.quick.vegetarian': 'Vegetarian qidalanırıq',
|
||||
'assistant.memory.quick.kids': 'Uşaqlarla səyahət edirik',
|
||||
'assistant.memory.quick.budget': 'Az büdcə ilə',
|
||||
'assistant.memory.quick.slow': 'Sakit temp, tələsmədən',
|
||||
'assistant.memory.quick.accessible': 'Zəhmət olmasa, pilləkənsiz giriş',
|
||||
'assistant.memory.quick.noMuseums': 'Az muzey',
|
||||
'assistant.settings.costEstimates': 'Xərcləri təxmin et',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Restoran və ya bilet üçün büdcəyə təxmini xərc təklif edir, təsdiqlədiyin kart kimi.',
|
||||
'assistant.change.timeline.tight': '{count} dəq çatışmır',
|
||||
'assistant.change.timeline.tight.one': '{count} dəq çatışmır',
|
||||
'assistant.check.issues': 'Yoxlanılacaq {count} məqam',
|
||||
'assistant.check.issues.one': 'Yoxlanılacaq {count} məqam',
|
||||
'assistant.week.changes': '{count} dəyişiklik',
|
||||
'assistant.week.changes.one': '{count} dəyişiklik',
|
||||
'assistant.week.showAll': 'Bütün {count} dəyişikliyi göstər',
|
||||
'assistant.week.showAll.one': '{count} dəyişikliyi göstər',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -968,5 +968,33 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Excluir categoria',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Excluir a categoria "{name}" e todos os seus itens?',
|
||||
'admin.rotateJwt.button': 'Renovar',
|
||||
'admin.addons.ai.name': 'IA',
|
||||
'admin.addons.ai.description':
|
||||
"Ur c'hennask evit ar skoazeller hag enporzhiañ an erlerc'hioù. Gant MCP e c'hall arloadoù IA all implijout TREK.",
|
||||
'admin.addons.ai.setup': 'Kefluniañ an IA',
|
||||
'admin.addons.ai.dialogSub':
|
||||
"Ar c'hennask rannet gant ar skoazeller hag an dielfennañ gant IA, ha petra a c'hall ober pep hini.",
|
||||
'admin.addons.ai.tab.connection': 'Kennask',
|
||||
'admin.addons.ai.parsing.readsWith': "Lenn an erlerc'hioù gant",
|
||||
'admin.addons.ai.parsing.own': 'Kennask dezhañ e-unan',
|
||||
'admin.addons.ai.parsing.ownHint': "Implijet e-lec'h ar c'hennask rannet.",
|
||||
'admin.addons.ai.parsing.useShared': "Implijout ar c'hennask rannet",
|
||||
'admin.addons.ai.parsing.sharedTag': 'Rannet',
|
||||
'admin.addons.ai.parsing.perUser': 'Pep hini a lenn gant e gennask e-unan, kefluniet en e arventennoù.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
"Kennask ebet c'hoazh. Kefluniit unan evit an holl, pe roit unan d'an dielfennañ gant IA.",
|
||||
'admin.addons.ai.parsing.setupOwn': 'Implijout unan all',
|
||||
'admin.addons.ai.parsing.installed': 'Staliet war ar servijer',
|
||||
'admin.addons.ai.parsing.refresh': 'Freskaat',
|
||||
'admin.addons.ai.parsing.noModels': "Patrom ebet staliet c'hoazh. Pellgargit unan amañ dindan.",
|
||||
'admin.addons.ai.parsing.pullTitle': 'Pellgargañ ur patrom erbedet',
|
||||
'admin.addons.ai.parsing.pull': 'Pellgargañ',
|
||||
'admin.addons.ai.parsing.pulling': 'O pellgargañ…',
|
||||
'admin.addons.ai.parsing.use': 'Implijout',
|
||||
'admin.addons.ai.parsing.selected': 'Dibabet',
|
||||
'admin.addons.ai.parsing.pulled': 'Patrom pellgarget',
|
||||
'admin.addons.ai.parsing.pullFailed': "N'eus ket bet gallet pellgargañ ar patrom",
|
||||
'admin.addons.ai.parsing.unreachable': "N'eus ket bet gallet tizhout ar servijer lec'hel",
|
||||
'admin.addons.ai.parsing.apiKeyOptional': "Peurliesañ n'eus ket ezhomm",
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Obter uma chave',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max e Team incluem créditos de API.',
|
||||
'assistant.connect.hintOpenai': 'Crie uma chave no seu painel da OpenAI.',
|
||||
'assistant.connect.hintGemini': 'O AI Studio tem um nível gratuito com limites por minuto e por dia, no qual o Google pode usar o que você envia para melhorar seus produtos. Com o faturamento ativado, os limites são maiores e isso não se aplica.',
|
||||
'assistant.connect.hintGemini':
|
||||
'O AI Studio tem um nível gratuito com limites por minuto e por dia, no qual o Google pode usar o que você envia para melhorar seus produtos. Com o faturamento ativado, os limites são maiores e isso não se aplica.',
|
||||
'assistant.connect.hintOpenrouter': 'Entre com o OpenRouter, sem chave para copiar.',
|
||||
'assistant.connect.openrouter': 'Conectar OpenRouter',
|
||||
'assistant.connect.save': 'Conectar',
|
||||
@@ -94,7 +95,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Ir para a última mensagem',
|
||||
'assistant.attach.button': 'Anexar reserva',
|
||||
'assistant.attach.drop': 'Solte aqui e eu leio a reserva',
|
||||
'assistant.attach.unsupported': 'Não consigo ler este tipo de arquivo. Tente PDF, e-mail, imagem ou cartão da carteira.',
|
||||
'assistant.attach.unsupported':
|
||||
'Não consigo ler este tipo de arquivo. Tente PDF, e-mail, imagem ou cartão da carteira.',
|
||||
'assistant.attach.tooLarge': 'Este arquivo tem mais de 10 MB.',
|
||||
'assistant.composer.placeholder': 'Pergunte qualquer coisa sobre {trip}',
|
||||
'assistant.composer.send': 'Enviar',
|
||||
@@ -338,5 +340,61 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Compartilhado',
|
||||
'assistant.share.failed': 'Não deu para compartilhar. Tente de novo em instantes.',
|
||||
'assistant.share.chatOff': 'O chat da viagem está desativado.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
"Ho kennask IA: ar skoazeller a ya en-dro gantañ, hag e lenn an erlerc'hioù a enporzhiit.",
|
||||
'assistant.connect.descriptionParsingOnly': "Ho kennask IA: lenn a ra an erlerc'hioù a enporzhiit.",
|
||||
'assistant.error.emptyAnswer': 'Distroet eo ar skoazeller hep respont. Klask en-dro?',
|
||||
'assistant.followUp.title': 'Goude',
|
||||
'assistant.followUp.cheaper': "Nemet re marc'hadmatoc'h",
|
||||
'assistant.followUp.closer': "Tostoc'h d'am lojeiz",
|
||||
'assistant.followUp.openNow': 'Petra a zo digor bremañ ?',
|
||||
'assistant.followUp.nextDay': "Steuñv an deiz war-lerc'h en hevelep doare",
|
||||
'assistant.followUp.relaxed': "Gra ar steuñv sioulic'h",
|
||||
'assistant.followUp.dinners': 'Ouzhpenn preti evit an abardaezioù',
|
||||
'assistant.followUp.rain': 'Ha mar bez glav ?',
|
||||
'assistant.followUp.sun': 'Petra a dalv ar boan er-maez gant amzer vrav ?',
|
||||
'assistant.followUp.more': "Lavar din muioc'h",
|
||||
'assistant.followUp.next': 'Petra a ginnigez bremañ ?',
|
||||
'assistant.menu.alternative': 'Kavout un dibab all',
|
||||
'assistant.menu.alternativeAsk': "Kav un dibab mat all e-lec'h {place} tostik ha lavar perak e ya gwelloc'h.",
|
||||
'assistant.menu.foodNearby': 'Preti tostik',
|
||||
'assistant.menu.foodNearbyAsk': "Kinnig un nebeud lec'hioù mat da zebriñ e-kichen {place}.",
|
||||
'assistant.menu.planDay': 'Steuñviñ an deiz-mañ',
|
||||
'assistant.menu.planDayAsk': "Steuñv an deiz-mañ evidon : lec'hioù, eurioù hag ul lec'h da zebriñ.",
|
||||
'assistant.menu.rainPlan': 'Steuñv glav',
|
||||
'assistant.menu.rainPlanAsk': "Petra a c'hallomp ober an deiz-mañ mar bez glav ? Kinnig dibaboù diabarzh tostik.",
|
||||
'assistant.preview.title': 'Kinnigoù ar skoazeller',
|
||||
'assistant.preview.suggested': 'Kinnig',
|
||||
'assistant.preview.movedHere': 'A zeu amañ',
|
||||
'assistant.preview.removed': 'A ya kuit',
|
||||
'assistant.preview.movedAway': "A vez dilec'hiet",
|
||||
'assistant.check.ok': 'A ya gant an amzer',
|
||||
'assistant.week.title': 'Devezhioù ar steuñv-mañ',
|
||||
'assistant.week.day': 'Deiz',
|
||||
'assistant.memory.title': 'Notennoù ar veaj',
|
||||
'assistant.memory.edit': 'Kemmañ notennoù ar veaj',
|
||||
'assistant.memory.sub': "Ar skoazeller a zalc'h kont anezho e pep kinnig evit ar veaj-mañ.",
|
||||
'assistant.memory.quick': "C'hoantoù boas",
|
||||
'assistant.memory.notes': 'Da notennoù',
|
||||
'assistant.memory.placeholder':
|
||||
'Da skouer : beajiñ a reomp gant ur bugelig, karout a reomp boued ar straed, kousket diwezhat.',
|
||||
'assistant.memory.saved': 'Notennoù enrollet',
|
||||
'assistant.memory.quick.vegetarian': 'Debriñ a reomp legumaj',
|
||||
'assistant.memory.quick.kids': 'Beajiñ a reomp gant bugale',
|
||||
'assistant.memory.quick.budget': 'Gant ur budjed bihan',
|
||||
'assistant.memory.quick.slow': 'Lusk sioul, hep hast',
|
||||
'assistant.memory.quick.accessible': 'Mont e-barzh hep derez, mar plij',
|
||||
'assistant.memory.quick.noMuseums': 'Nebeut a virdioù',
|
||||
'assistant.settings.costEstimates': "Priziañ ar c'houstoù",
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Gant ur preti pe ur bilhed e kinnig un dispign priziet evit ar budjed, evel ur gartenn da gadarnaat.',
|
||||
'assistant.change.timeline.tight': '{count} munut re verr',
|
||||
'assistant.change.timeline.tight.one': '{count} munut re verr',
|
||||
'assistant.check.issues': '{count} poent da wiriañ',
|
||||
'assistant.check.issues.one': '{count} poent da wiriañ',
|
||||
'assistant.week.changes': '{count} kemm',
|
||||
'assistant.week.changes.one': "{count} c'hemm",
|
||||
'assistant.week.showAll': 'Diskouez an {count} kemm',
|
||||
'assistant.week.showAll.one': "Diskouez {count} c'hemm",
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -984,5 +984,32 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Elimina la categoria',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Vols eliminar la categoria "{name}" i tots els seus elements?',
|
||||
'admin.rotateJwt.button': 'Renova',
|
||||
'admin.addons.ai.name': 'IA',
|
||||
'admin.addons.ai.description':
|
||||
"Una connexió per a l'assistent i la importació de reserves. MCP permet que altres apps d'IA facin servir TREK.",
|
||||
'admin.addons.ai.setup': 'Configura la IA',
|
||||
'admin.addons.ai.dialogSub': "La connexió que comparteixen l'assistent i l'anàlisi amb IA, i què pot fer cadascun.",
|
||||
'admin.addons.ai.tab.connection': 'Connexió',
|
||||
'admin.addons.ai.parsing.readsWith': 'Llegeix les reserves amb',
|
||||
'admin.addons.ai.parsing.own': 'Connexió pròpia',
|
||||
'admin.addons.ai.parsing.ownHint': "S'utilitza en lloc de la connexió compartida.",
|
||||
'admin.addons.ai.parsing.useShared': 'Utilitza la connexió compartida',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Compartida',
|
||||
'admin.addons.ai.parsing.perUser': 'Cada persona llegeix amb la seva pròpia connexió, configurada als seus ajustos.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
"Encara no hi ha connexió. Configura'n una per a tothom o dona'n una de pròpia a l'anàlisi amb IA.",
|
||||
'admin.addons.ai.parsing.setupOwn': "Utilitza'n una altra",
|
||||
'admin.addons.ai.parsing.installed': 'Instal·lats al servidor',
|
||||
'admin.addons.ai.parsing.refresh': 'Actualitza',
|
||||
'admin.addons.ai.parsing.noModels': "Encara no hi ha models instal·lats. Baixa'n un a sota.",
|
||||
'admin.addons.ai.parsing.pullTitle': 'Baixa un model recomanat',
|
||||
'admin.addons.ai.parsing.pull': 'Baixa',
|
||||
'admin.addons.ai.parsing.pulling': 'Baixant…',
|
||||
'admin.addons.ai.parsing.use': 'Utilitza',
|
||||
'admin.addons.ai.parsing.selected': 'Seleccionat',
|
||||
'admin.addons.ai.parsing.pulled': 'Model baixat',
|
||||
'admin.addons.ai.parsing.pullFailed': "No s'ha pogut baixar el model",
|
||||
'admin.addons.ai.parsing.unreachable': "No s'ha pogut connectar amb el servidor local",
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Normalment no cal',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Obtén una clau',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max i Team inclouen crèdits d’API.',
|
||||
'assistant.connect.hintOpenai': 'Crea una clau al teu tauler d’OpenAI.',
|
||||
'assistant.connect.hintGemini': 'L’AI Studio té un nivell gratuït amb límits per minut i per dia, en què Google pot fer servir el que envies per millorar els seus productes. Amb la facturació activada els límits són més alts i això no s’aplica.',
|
||||
'assistant.connect.hintGemini':
|
||||
'L’AI Studio té un nivell gratuït amb límits per minut i per dia, en què Google pot fer servir el que envies per millorar els seus productes. Amb la facturació activada els límits són més alts i això no s’aplica.',
|
||||
'assistant.connect.hintOpenrouter': 'Inicia sessió amb OpenRouter, sense clau per copiar.',
|
||||
'assistant.connect.openrouter': 'Connecta OpenRouter',
|
||||
'assistant.connect.save': 'Connecta',
|
||||
@@ -94,7 +95,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Ves a l’últim missatge',
|
||||
'assistant.attach.button': 'Adjunta una reserva',
|
||||
'assistant.attach.drop': 'Deixa-ho aquí i llegiré la reserva',
|
||||
'assistant.attach.unsupported': 'No puc llegir aquest tipus de fitxer. Prova amb un PDF, un correu, una imatge o una targeta de cartera.',
|
||||
'assistant.attach.unsupported':
|
||||
'No puc llegir aquest tipus de fitxer. Prova amb un PDF, un correu, una imatge o una targeta de cartera.',
|
||||
'assistant.attach.tooLarge': 'Aquest fitxer fa més de 10 MB.',
|
||||
'assistant.composer.placeholder': 'Pregunta el que vulguis sobre {trip}',
|
||||
'assistant.composer.send': 'Envia',
|
||||
@@ -341,5 +343,61 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Compartit',
|
||||
'assistant.share.failed': 'No s’ha pogut compartir. Torna-ho a provar d’aquí a un moment.',
|
||||
'assistant.share.chatOff': 'El xat del viatge està desactivat.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
"La teva connexió d'IA: l'assistent la fa servir i llegeix les reserves que importes.",
|
||||
'assistant.connect.descriptionParsingOnly': "La teva connexió d'IA: llegeix les reserves que importes.",
|
||||
'assistant.error.emptyAnswer': "L'assistent no ha donat cap resposta. Ho torno a provar?",
|
||||
'assistant.followUp.title': 'Continua amb',
|
||||
'assistant.followUp.cheaper': 'Només més econòmics',
|
||||
'assistant.followUp.closer': "Més a prop de l'allotjament",
|
||||
'assistant.followUp.openNow': 'Què està obert ara?',
|
||||
'assistant.followUp.nextDay': 'Planifica el dia següent de la mateixa manera',
|
||||
'assistant.followUp.relaxed': 'Fes el pla més relaxat',
|
||||
'assistant.followUp.dinners': 'Afegeix restaurants per als vespres',
|
||||
'assistant.followUp.rain': 'I si plou?',
|
||||
'assistant.followUp.sun': "Què val la pena a l'aire lliure amb bon temps?",
|
||||
'assistant.followUp.more': "Explica-me'n més",
|
||||
'assistant.followUp.next': 'Què proposes ara?',
|
||||
'assistant.menu.alternative': 'Trobar una alternativa',
|
||||
'assistant.menu.alternativeAsk': 'Troba una bona alternativa a {place} a prop i explica per què encaixa millor.',
|
||||
'assistant.menu.foodNearby': 'Restaurant a prop',
|
||||
'assistant.menu.foodNearbyAsk': 'Proposa uns quants bons llocs per menjar a prop de {place}.',
|
||||
'assistant.menu.planDay': 'Planificar aquest dia',
|
||||
'assistant.menu.planDayAsk': 'Planifica aquest dia per a mi: llocs, horaris i un lloc per menjar.',
|
||||
'assistant.menu.rainPlan': 'Pla de pluja',
|
||||
'assistant.menu.rainPlanAsk': 'Què podem fer aquest dia si plou? Proposa alternatives a cobert a prop.',
|
||||
'assistant.preview.title': "Propostes de l'assistent",
|
||||
'assistant.preview.suggested': 'Proposta',
|
||||
'assistant.preview.movedHere': 'Ve aquí',
|
||||
'assistant.preview.removed': 'Es treu',
|
||||
'assistant.preview.movedAway': 'Es mou',
|
||||
'assistant.check.ok': "Encaixa en l'horari",
|
||||
'assistant.week.title': "Els dies d'aquest pla",
|
||||
'assistant.week.day': 'Dia',
|
||||
'assistant.memory.title': 'Notes del viatge',
|
||||
'assistant.memory.edit': 'Edita les notes del viatge',
|
||||
'assistant.memory.sub': "L'assistent les té en compte en cada proposta d'aquest viatge.",
|
||||
'assistant.memory.quick': 'Desitjos habituals',
|
||||
'assistant.memory.notes': 'Les teves notes',
|
||||
'assistant.memory.placeholder':
|
||||
'Per exemple: viatgem amb un nen petit, ens encanta el menjar de carrer, res de matinar.',
|
||||
'assistant.memory.saved': 'Notes desades',
|
||||
'assistant.memory.quick.vegetarian': 'Mengem vegetarià',
|
||||
'assistant.memory.quick.kids': 'Viatgem amb nens',
|
||||
'assistant.memory.quick.budget': 'Amb poc pressupost',
|
||||
'assistant.memory.quick.slow': 'Ritme tranquil, sense presses',
|
||||
'assistant.memory.quick.accessible': 'Accés sense graons, si us plau',
|
||||
'assistant.memory.quick.noMuseums': 'Pocs museus',
|
||||
'assistant.settings.costEstimates': 'Estimar costos',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Amb un restaurant o una entrada proposa una despesa estimada per al pressupost, com a targeta que confirmes.',
|
||||
'assistant.change.timeline.tight': 'Falten {count} min',
|
||||
'assistant.change.timeline.tight.one': 'Falta {count} min',
|
||||
'assistant.check.issues': '{count} coses a revisar',
|
||||
'assistant.check.issues.one': '{count} cosa a revisar',
|
||||
'assistant.week.changes': '{count} canvis',
|
||||
'assistant.week.changes.one': '{count} canvi',
|
||||
'assistant.week.showAll': 'Mostra els {count} canvis',
|
||||
'assistant.week.showAll.one': 'Mostra {count} canvi',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -976,5 +976,32 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Smazat kategorii',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Smazat kategorii "{name}" a všechny její položky?',
|
||||
'admin.rotateJwt.button': 'Obnovit',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description':
|
||||
'Jedno připojení pro asistenta a import rezervací. MCP umožní jiným AI aplikacím používat TREK.',
|
||||
'admin.addons.ai.setup': 'Nastavit AI',
|
||||
'admin.addons.ai.dialogSub': 'Připojení, které sdílí asistent a AI zpracování, a co smí každý z nich.',
|
||||
'admin.addons.ai.tab.connection': 'Připojení',
|
||||
'admin.addons.ai.parsing.readsWith': 'Čte rezervace pomocí',
|
||||
'admin.addons.ai.parsing.own': 'Vlastní připojení',
|
||||
'admin.addons.ai.parsing.ownHint': 'Používá se místo sdíleného připojení.',
|
||||
'admin.addons.ai.parsing.useShared': 'Použít sdílené připojení',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Sdílené',
|
||||
'admin.addons.ai.parsing.perUser': 'Každý čte pomocí vlastního připojení ze svého nastavení.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'Zatím žádné připojení. Nastavte jedno pro všechny, nebo dejte AI zpracování vlastní.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Použít jiné',
|
||||
'admin.addons.ai.parsing.installed': 'Nainstalované na serveru',
|
||||
'admin.addons.ai.parsing.refresh': 'Obnovit',
|
||||
'admin.addons.ai.parsing.noModels': 'Zatím nejsou nainstalované žádné modely. Stáhněte si jeden níže.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Stáhnout doporučený model',
|
||||
'admin.addons.ai.parsing.pull': 'Stáhnout',
|
||||
'admin.addons.ai.parsing.pulling': 'Stahování…',
|
||||
'admin.addons.ai.parsing.use': 'Použít',
|
||||
'admin.addons.ai.parsing.selected': 'Vybráno',
|
||||
'admin.addons.ai.parsing.pulled': 'Model stažen',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Model se nepodařilo stáhnout',
|
||||
'admin.addons.ai.parsing.unreachable': 'Místní server není dostupný',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Většinou není potřeba',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -43,7 +43,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Získat klíč',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max a Team zahrnují kredity API.',
|
||||
'assistant.connect.hintOpenai': 'Vytvoř klíč na svém panelu OpenAI.',
|
||||
'assistant.connect.hintGemini': 'AI Studio má bezplatnou úroveň s limity za minutu a za den, ve které může Google to, co odešleš, použít ke zlepšení svých produktů. Se zapnutou fakturací jsou limity vyšší a to neplatí.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio má bezplatnou úroveň s limity za minutu a za den, ve které může Google to, co odešleš, použít ke zlepšení svých produktů. Se zapnutou fakturací jsou limity vyšší a to neplatí.',
|
||||
'assistant.connect.hintOpenrouter': 'Přihlas se přes OpenRouter, žádný klíč kopírovat nemusíš.',
|
||||
'assistant.connect.openrouter': 'Připojit OpenRouter',
|
||||
'assistant.connect.save': 'Připojit',
|
||||
@@ -93,7 +94,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Přejít na poslední zprávu',
|
||||
'assistant.attach.button': 'Přiložit rezervaci',
|
||||
'assistant.attach.drop': 'Pusť to sem a přečtu rezervaci',
|
||||
'assistant.attach.unsupported': 'Tento typ souboru neumím přečíst. Zkus PDF, e-mail, obrázek nebo kartu do peněženky.',
|
||||
'assistant.attach.unsupported':
|
||||
'Tento typ souboru neumím přečíst. Zkus PDF, e-mail, obrázek nebo kartu do peněženky.',
|
||||
'assistant.attach.tooLarge': 'Tento soubor je větší než 10 MB.',
|
||||
'assistant.composer.placeholder': 'Zeptej se na cokoli o {trip}',
|
||||
'assistant.composer.send': 'Odeslat',
|
||||
@@ -357,5 +359,64 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Sdíleno',
|
||||
'assistant.share.failed': 'Sdílení se nepovedlo. Zkus to za chvíli znovu.',
|
||||
'assistant.share.chatOff': 'Chat výletu je vypnutý.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Vaše AI připojení: běží na něm asistent a čte rezervace, které importujete.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Vaše AI připojení: čte rezervace, které importujete.',
|
||||
'assistant.error.emptyAnswer': 'Asistent se vrátil bez odpovědi. Mám to zkusit znovu?',
|
||||
'assistant.followUp.title': 'Dál',
|
||||
'assistant.followUp.cheaper': 'Jen levnější',
|
||||
'assistant.followUp.closer': 'Blíž k mému ubytování',
|
||||
'assistant.followUp.openNow': 'Co má teď otevřeno?',
|
||||
'assistant.followUp.nextDay': 'Naplánuj další den stejně',
|
||||
'assistant.followUp.relaxed': 'Udělej plán volnější',
|
||||
'assistant.followUp.dinners': 'Přidej restaurace na večery',
|
||||
'assistant.followUp.rain': 'Co když bude pršet?',
|
||||
'assistant.followUp.sun': 'Co stojí za to venku za hezkého počasí?',
|
||||
'assistant.followUp.more': 'Řekni mi víc',
|
||||
'assistant.followUp.next': 'Co navrhuješ teď?',
|
||||
'assistant.menu.alternative': 'Najít alternativu',
|
||||
'assistant.menu.alternativeAsk': 'Najdi dobrou alternativu k {place} poblíž a řekni, proč se hodí lépe.',
|
||||
'assistant.menu.foodNearby': 'Restaurace poblíž',
|
||||
'assistant.menu.foodNearbyAsk': 'Navrhni pár dobrých míst k jídlu poblíž {place}.',
|
||||
'assistant.menu.planDay': 'Naplánovat den',
|
||||
'assistant.menu.planDayAsk': 'Naplánuj mi tento den: místa, časy a kde se najíst.',
|
||||
'assistant.menu.rainPlan': 'Plán na déšť',
|
||||
'assistant.menu.rainPlanAsk': 'Co můžeme tento den dělat, když bude pršet? Navrhni vnitřní alternativy poblíž.',
|
||||
'assistant.preview.title': 'Návrhy asistenta',
|
||||
'assistant.preview.suggested': 'Návrh',
|
||||
'assistant.preview.movedHere': 'Přibude sem',
|
||||
'assistant.preview.removed': 'Odpadá',
|
||||
'assistant.preview.movedAway': 'Přesune se',
|
||||
'assistant.check.ok': 'Časově vychází',
|
||||
'assistant.week.title': 'Dny tohoto plánu',
|
||||
'assistant.week.day': 'Den',
|
||||
'assistant.memory.title': 'Poznámky k cestě',
|
||||
'assistant.memory.edit': 'Upravit poznámky k cestě',
|
||||
'assistant.memory.sub': 'Asistent na ně myslí u každého návrhu pro tuto cestu.',
|
||||
'assistant.memory.quick': 'Častá přání',
|
||||
'assistant.memory.notes': 'Tvoje poznámky',
|
||||
'assistant.memory.placeholder': 'Například: cestujeme s batoletem, milujeme street food, žádné brzké vstávání.',
|
||||
'assistant.memory.saved': 'Poznámky uloženy',
|
||||
'assistant.memory.quick.vegetarian': 'Jíme vegetariánsky',
|
||||
'assistant.memory.quick.kids': 'Cestujeme s dětmi',
|
||||
'assistant.memory.quick.budget': 'S malým rozpočtem',
|
||||
'assistant.memory.quick.slow': 'Klidné tempo, bez spěchu',
|
||||
'assistant.memory.quick.accessible': 'Prosím bezbariérově',
|
||||
'assistant.memory.quick.noMuseums': 'Málo muzeí',
|
||||
'assistant.settings.costEstimates': 'Odhadovat náklady',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'U restaurace nebo vstupenky navrhne odhadovaný výdaj do rozpočtu jako kartu k potvrzení.',
|
||||
'assistant.change.timeline.tight': 'Chybí {count} min',
|
||||
'assistant.change.timeline.tight.one': 'Chybí {count} min',
|
||||
'assistant.change.timeline.tight.few': 'Chybí {count} min',
|
||||
'assistant.check.issues': '{count} bodů ke kontrole',
|
||||
'assistant.check.issues.one': '{count} bod ke kontrole',
|
||||
'assistant.check.issues.few': '{count} body ke kontrole',
|
||||
'assistant.week.changes': '{count} změn',
|
||||
'assistant.week.changes.one': '{count} změna',
|
||||
'assistant.week.changes.few': '{count} změny',
|
||||
'assistant.week.showAll': 'Zobrazit všech {count} změn',
|
||||
'assistant.week.showAll.one': 'Zobrazit {count} změnu',
|
||||
'assistant.week.showAll.few': 'Zobrazit všechny {count} změny',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -976,5 +976,32 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Kategorie löschen',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Kategorie "{name}" und alle ihre Einträge löschen?',
|
||||
'admin.rotateJwt.button': 'Erneuern',
|
||||
'admin.addons.ai.name': 'KI',
|
||||
'admin.addons.ai.description':
|
||||
'Eine Verbindung für den Assistenten und das Lesen von Buchungen. MCP öffnet TREK für andere KI-Apps.',
|
||||
'admin.addons.ai.setup': 'KI einrichten',
|
||||
'admin.addons.ai.dialogSub': 'Die Verbindung, die Assistent und KI-Auswertung teilen, und was jeder davon darf.',
|
||||
'admin.addons.ai.tab.connection': 'Verbindung',
|
||||
'admin.addons.ai.parsing.readsWith': 'Liest Buchungen mit',
|
||||
'admin.addons.ai.parsing.own': 'Eigene Verbindung',
|
||||
'admin.addons.ai.parsing.ownHint': 'Wird statt der gemeinsamen Verbindung verwendet.',
|
||||
'admin.addons.ai.parsing.useShared': 'Gemeinsame Verbindung verwenden',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Gemeinsam',
|
||||
'admin.addons.ai.parsing.perUser': 'Jede Person liest mit ihrer eigenen Verbindung aus ihren Einstellungen.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'Noch keine Verbindung. Richte eine für alle ein oder gib der KI-Auswertung eine eigene.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Eine andere verwenden',
|
||||
'admin.addons.ai.parsing.installed': 'Auf dem Server installiert',
|
||||
'admin.addons.ai.parsing.refresh': 'Aktualisieren',
|
||||
'admin.addons.ai.parsing.noModels': 'Noch keine Modelle installiert. Lade unten eins.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Empfohlenes Modell laden',
|
||||
'admin.addons.ai.parsing.pull': 'Laden',
|
||||
'admin.addons.ai.parsing.pulling': 'Lädt…',
|
||||
'admin.addons.ai.parsing.use': 'Verwenden',
|
||||
'admin.addons.ai.parsing.selected': 'Ausgewählt',
|
||||
'admin.addons.ai.parsing.pulled': 'Modell geladen',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Modell konnte nicht geladen werden',
|
||||
'admin.addons.ai.parsing.unreachable': 'Der lokale Server ist nicht erreichbar',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Meist nicht nötig',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -45,7 +45,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Schlüssel holen',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max und Team enthalten API-Guthaben.',
|
||||
'assistant.connect.hintOpenai': 'Leg einen Schlüssel in deinem OpenAI-Dashboard an.',
|
||||
'assistant.connect.hintGemini': 'Im AI Studio gibt es eine Gratis-Stufe mit Limits pro Minute und pro Tag, in der Google deine Eingaben zur Verbesserung seiner Produkte nutzen darf. Mit aktivierter Abrechnung gelten höhere Limits, und das entfällt.',
|
||||
'assistant.connect.hintGemini':
|
||||
'Im AI Studio gibt es eine Gratis-Stufe mit Limits pro Minute und pro Tag, in der Google deine Eingaben zur Verbesserung seiner Produkte nutzen darf. Mit aktivierter Abrechnung gelten höhere Limits, und das entfällt.',
|
||||
'assistant.connect.hintOpenrouter': 'Melde dich bei OpenRouter an, ganz ohne Schlüssel zu kopieren.',
|
||||
'assistant.connect.openrouter': 'Mit OpenRouter verbinden',
|
||||
'assistant.connect.save': 'Verbinden',
|
||||
@@ -338,5 +339,62 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Geteilt',
|
||||
'assistant.share.failed': 'Teilen hat nicht geklappt. Versuch es gleich noch mal.',
|
||||
'assistant.share.chatOff': 'Der Trip-Chat ist ausgeschaltet.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Deine KI-Verbindung: Der Assistent läuft darüber, und sie liest die Buchungen, die du importierst.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Deine KI-Verbindung: Sie liest die Buchungen, die du importierst.',
|
||||
'assistant.error.emptyAnswer': 'Der Assistent kam ohne Antwort zurück. Soll ich es noch mal versuchen?',
|
||||
'assistant.followUp.title': 'Weiter mit',
|
||||
'assistant.followUp.cheaper': 'Nur günstigere',
|
||||
'assistant.followUp.closer': 'Näher an meiner Unterkunft',
|
||||
'assistant.followUp.openNow': 'Was hat gerade geöffnet?',
|
||||
'assistant.followUp.nextDay': 'Plane den nächsten Tag genauso',
|
||||
'assistant.followUp.relaxed': 'Mach den Plan entspannter',
|
||||
'assistant.followUp.dinners': 'Füge Restaurants für die Abende hinzu',
|
||||
'assistant.followUp.rain': 'Was machen wir bei Regen?',
|
||||
'assistant.followUp.sun': 'Was lohnt sich bei schönem Wetter draußen?',
|
||||
'assistant.followUp.more': 'Erzähl mir mehr',
|
||||
'assistant.followUp.next': 'Was schlägst du als Nächstes vor?',
|
||||
'assistant.menu.alternative': 'Alternative finden',
|
||||
'assistant.menu.alternativeAsk':
|
||||
'Finde eine gute Alternative zu {place} in der Nähe und sag, warum sie besser passt.',
|
||||
'assistant.menu.foodNearby': 'Restaurant in der Nähe',
|
||||
'assistant.menu.foodNearbyAsk': 'Schlag ein paar gute Orte zum Essen in der Nähe von {place} vor.',
|
||||
'assistant.menu.planDay': 'Tag planen lassen',
|
||||
'assistant.menu.planDayAsk': 'Plane diesen Tag für mich: Orte, Zeiten und einen Ort zum Essen.',
|
||||
'assistant.menu.rainPlan': 'Regenplan',
|
||||
'assistant.menu.rainPlanAsk':
|
||||
'Was können wir an diesem Tag bei Regen machen? Schlag Alternativen drinnen in der Nähe vor.',
|
||||
'assistant.preview.title': 'Vorschläge des Assistenten',
|
||||
'assistant.preview.suggested': 'Vorschlag',
|
||||
'assistant.preview.movedHere': 'Kommt hierher',
|
||||
'assistant.preview.removed': 'Fällt weg',
|
||||
'assistant.preview.movedAway': 'Wird verschoben',
|
||||
'assistant.check.ok': 'Passt zeitlich',
|
||||
'assistant.week.title': 'Die Tage dieses Plans',
|
||||
'assistant.week.day': 'Tag',
|
||||
'assistant.memory.title': 'Merkzettel',
|
||||
'assistant.memory.edit': 'Merkzettel bearbeiten',
|
||||
'assistant.memory.sub': 'Der Assistent beachtet das bei jedem Vorschlag für diesen Trip.',
|
||||
'assistant.memory.quick': 'Häufige Wünsche',
|
||||
'assistant.memory.notes': 'Deine Notizen',
|
||||
'assistant.memory.placeholder': 'Zum Beispiel: Wir reisen mit Kleinkind, lieben Streetfood, kein frühes Aufstehen.',
|
||||
'assistant.memory.saved': 'Merkzettel gespeichert',
|
||||
'assistant.memory.quick.vegetarian': 'Wir essen vegetarisch',
|
||||
'assistant.memory.quick.kids': 'Wir reisen mit Kindern',
|
||||
'assistant.memory.quick.budget': 'Mit kleinem Budget',
|
||||
'assistant.memory.quick.slow': 'Entspanntes Tempo, keine Hetze',
|
||||
'assistant.memory.quick.accessible': 'Bitte barrierefrei',
|
||||
'assistant.memory.quick.noMuseums': 'Wenig Museen',
|
||||
'assistant.settings.costEstimates': 'Kosten schätzen',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Bei einem Restaurant oder Eintritt schlägt er eine geschätzte Ausgabe fürs Budget vor, als Karte zum Bestätigen.',
|
||||
'assistant.change.timeline.tight': '{count} min zu knapp',
|
||||
'assistant.change.timeline.tight.one': '{count} min zu knapp',
|
||||
'assistant.check.issues': '{count} Hinweise',
|
||||
'assistant.check.issues.one': '{count} Hinweis',
|
||||
'assistant.week.changes': '{count} Änderungen',
|
||||
'assistant.week.changes.one': '{count} Änderung',
|
||||
'assistant.week.showAll': 'Alle {count} Änderungen zeigen',
|
||||
'assistant.week.showAll.one': '{count} Änderung zeigen',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -946,5 +946,31 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Delete category',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Delete the category "{name}" and all its items?',
|
||||
'admin.rotateJwt.button': 'Rotate',
|
||||
'admin.addons.ai.name': 'AI',
|
||||
'admin.addons.ai.description':
|
||||
'One connection for the assistant and booking import. MCP lets other AI apps use TREK.',
|
||||
'admin.addons.ai.setup': 'Set up AI',
|
||||
'admin.addons.ai.dialogSub': 'The connection the assistant and AI parsing share, and what each of them may do.',
|
||||
'admin.addons.ai.tab.connection': 'Connection',
|
||||
'admin.addons.ai.parsing.readsWith': 'Reads bookings with',
|
||||
'admin.addons.ai.parsing.own': 'Own connection',
|
||||
'admin.addons.ai.parsing.ownHint': 'Used instead of the shared connection.',
|
||||
'admin.addons.ai.parsing.useShared': 'Use the shared connection',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Shared',
|
||||
'admin.addons.ai.parsing.perUser': 'Each person reads with their own connection, set up in their settings.',
|
||||
'admin.addons.ai.parsing.none': 'No connection yet. Set one up for everyone, or give AI parsing its own.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Use a different one',
|
||||
'admin.addons.ai.parsing.installed': 'Installed on the server',
|
||||
'admin.addons.ai.parsing.refresh': 'Refresh',
|
||||
'admin.addons.ai.parsing.noModels': 'No models installed yet. Pull one below.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Pull a recommended model',
|
||||
'admin.addons.ai.parsing.pull': 'Pull',
|
||||
'admin.addons.ai.parsing.pulling': 'Pulling…',
|
||||
'admin.addons.ai.parsing.use': 'Use',
|
||||
'admin.addons.ai.parsing.selected': 'Selected',
|
||||
'admin.addons.ai.parsing.pulled': 'Model pulled',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Could not pull the model',
|
||||
'admin.addons.ai.parsing.unreachable': 'Could not reach the local server',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Often not needed',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -43,7 +43,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Get a key',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max and Team include API credits.',
|
||||
'assistant.connect.hintOpenai': 'Create a key in your OpenAI dashboard.',
|
||||
'assistant.connect.hintGemini': 'AI Studio has a free tier with limits per minute and per day, on which Google may use what you send to improve its products. With billing turned on the limits are higher and that does not apply.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio has a free tier with limits per minute and per day, on which Google may use what you send to improve its products. With billing turned on the limits are higher and that does not apply.',
|
||||
'assistant.connect.hintOpenrouter': 'Sign in with OpenRouter, no key to copy.',
|
||||
'assistant.connect.openrouter': 'Connect OpenRouter',
|
||||
'assistant.connect.save': 'Connect',
|
||||
@@ -335,5 +336,60 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Shared',
|
||||
'assistant.share.failed': 'Could not share this. Please try again in a moment.',
|
||||
'assistant.share.chatOff': 'The trip chat is turned off.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Your AI connection: the assistant runs on it, and it reads the bookings you import.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Your AI connection: it reads the bookings you import.',
|
||||
'assistant.error.emptyAnswer': 'The assistant came back without an answer. Shall I try again?',
|
||||
'assistant.followUp.title': 'Ask next',
|
||||
'assistant.followUp.cheaper': 'Only cheaper ones',
|
||||
'assistant.followUp.closer': "Closer to where I'm staying",
|
||||
'assistant.followUp.openNow': 'Which are open right now?',
|
||||
'assistant.followUp.nextDay': 'Plan the next day the same way',
|
||||
'assistant.followUp.relaxed': 'Make the plan more relaxed',
|
||||
'assistant.followUp.dinners': 'Add restaurants for the evenings',
|
||||
'assistant.followUp.rain': 'What if it rains?',
|
||||
'assistant.followUp.sun': "What's best outdoors in good weather?",
|
||||
'assistant.followUp.more': 'Tell me more',
|
||||
'assistant.followUp.next': 'What do you suggest next?',
|
||||
'assistant.menu.alternative': 'Find an alternative',
|
||||
'assistant.menu.alternativeAsk': 'Find a good alternative to {place} nearby, and say why it fits better.',
|
||||
'assistant.menu.foodNearby': 'Restaurant nearby',
|
||||
'assistant.menu.foodNearbyAsk': 'Suggest a few good places to eat near {place}.',
|
||||
'assistant.menu.planDay': 'Plan this day',
|
||||
'assistant.menu.planDayAsk': 'Plan this day for me: places, times and somewhere to eat.',
|
||||
'assistant.menu.rainPlan': 'Plan for rain',
|
||||
'assistant.menu.rainPlanAsk': 'What can we do on this day if it rains? Suggest indoor alternatives nearby.',
|
||||
'assistant.preview.title': 'Suggested by the assistant',
|
||||
'assistant.preview.suggested': 'Suggested',
|
||||
'assistant.preview.movedHere': 'Moves here',
|
||||
'assistant.preview.removed': 'Comes off',
|
||||
'assistant.preview.movedAway': 'Moves away',
|
||||
'assistant.check.ok': 'Fits the time',
|
||||
'assistant.week.title': 'The days of this plan',
|
||||
'assistant.week.day': 'Day',
|
||||
'assistant.memory.title': 'Trip notes',
|
||||
'assistant.memory.edit': 'Edit trip notes',
|
||||
'assistant.memory.sub': 'The assistant keeps these in mind for every suggestion on this trip.',
|
||||
'assistant.memory.quick': 'Common wishes',
|
||||
'assistant.memory.notes': 'Your notes',
|
||||
'assistant.memory.placeholder': 'For example: we travel with a toddler, love street food, no early mornings.',
|
||||
'assistant.memory.saved': 'Trip notes saved',
|
||||
'assistant.memory.quick.vegetarian': 'We eat vegetarian',
|
||||
'assistant.memory.quick.kids': 'We travel with children',
|
||||
'assistant.memory.quick.budget': 'On a tight budget',
|
||||
'assistant.memory.quick.slow': 'A relaxed pace, no rushing',
|
||||
'assistant.memory.quick.accessible': 'Step-free access please',
|
||||
'assistant.memory.quick.noMuseums': 'Few museums',
|
||||
'assistant.settings.costEstimates': 'Estimate costs',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'With a restaurant or a ticket it suggests an estimated expense for the budget, as a card you confirm.',
|
||||
'assistant.change.timeline.tight': '{count} min too tight',
|
||||
'assistant.change.timeline.tight.one': '{count} min too tight',
|
||||
'assistant.check.issues': '{count} things to check',
|
||||
'assistant.check.issues.one': '{count} thing to check',
|
||||
'assistant.week.changes': '{count} changes',
|
||||
'assistant.week.changes.one': '{count} change',
|
||||
'assistant.week.showAll': 'Show all {count} changes',
|
||||
'assistant.week.showAll.one': 'Show {count} change',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -988,5 +988,32 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Eliminar categoría',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': '¿Eliminar la categoría "{name}" y todos sus elementos?',
|
||||
'admin.rotateJwt.button': 'Renovar',
|
||||
'admin.addons.ai.name': 'IA',
|
||||
'admin.addons.ai.description':
|
||||
'Una conexión para el asistente y la importación de reservas. MCP permite que otras apps de IA usen TREK.',
|
||||
'admin.addons.ai.setup': 'Configurar IA',
|
||||
'admin.addons.ai.dialogSub':
|
||||
'La conexión que comparten el asistente y el análisis con IA, y lo que puede hacer cada uno.',
|
||||
'admin.addons.ai.tab.connection': 'Conexión',
|
||||
'admin.addons.ai.parsing.readsWith': 'Lee las reservas con',
|
||||
'admin.addons.ai.parsing.own': 'Conexión propia',
|
||||
'admin.addons.ai.parsing.ownHint': 'Se usa en lugar de la conexión compartida.',
|
||||
'admin.addons.ai.parsing.useShared': 'Usar la conexión compartida',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Compartida',
|
||||
'admin.addons.ai.parsing.perUser': 'Cada persona lee con su propia conexión, configurada en sus ajustes.',
|
||||
'admin.addons.ai.parsing.none': 'Aún no hay conexión. Configura una para todos o dale al análisis con IA una propia.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Usar otra',
|
||||
'admin.addons.ai.parsing.installed': 'Instalados en el servidor',
|
||||
'admin.addons.ai.parsing.refresh': 'Actualizar',
|
||||
'admin.addons.ai.parsing.noModels': 'Aún no hay modelos instalados. Descarga uno abajo.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Descargar un modelo recomendado',
|
||||
'admin.addons.ai.parsing.pull': 'Descargar',
|
||||
'admin.addons.ai.parsing.pulling': 'Descargando…',
|
||||
'admin.addons.ai.parsing.use': 'Usar',
|
||||
'admin.addons.ai.parsing.selected': 'Seleccionado',
|
||||
'admin.addons.ai.parsing.pulled': 'Modelo descargado',
|
||||
'admin.addons.ai.parsing.pullFailed': 'No se pudo descargar el modelo',
|
||||
'admin.addons.ai.parsing.unreachable': 'No se pudo conectar con el servidor local',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Normalmente no hace falta',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -43,7 +43,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Obtener una clave',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max y Team incluyen créditos de API.',
|
||||
'assistant.connect.hintOpenai': 'Crea una clave en tu panel de OpenAI.',
|
||||
'assistant.connect.hintGemini': 'AI Studio tiene un nivel gratuito con límites por minuto y por día, en el que Google puede usar lo que envías para mejorar sus productos. Con la facturación activada, los límites son más altos y esto no se aplica.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio tiene un nivel gratuito con límites por minuto y por día, en el que Google puede usar lo que envías para mejorar sus productos. Con la facturación activada, los límites son más altos y esto no se aplica.',
|
||||
'assistant.connect.hintOpenrouter': 'Inicia sesión con OpenRouter, sin clave que copiar.',
|
||||
'assistant.connect.openrouter': 'Conectar OpenRouter',
|
||||
'assistant.connect.save': 'Conectar',
|
||||
@@ -92,7 +93,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Ir al último mensaje',
|
||||
'assistant.attach.button': 'Adjuntar una reserva',
|
||||
'assistant.attach.drop': 'Suéltalo aquí y leeré la reserva',
|
||||
'assistant.attach.unsupported': 'No puedo leer este tipo de archivo. Prueba con un PDF, un correo, una imagen o un pase de cartera.',
|
||||
'assistant.attach.unsupported':
|
||||
'No puedo leer este tipo de archivo. Prueba con un PDF, un correo, una imagen o un pase de cartera.',
|
||||
'assistant.attach.tooLarge': 'Este archivo supera los 10 MB.',
|
||||
'assistant.composer.placeholder': 'Pregunta lo que quieras sobre {trip}',
|
||||
'assistant.composer.send': 'Enviar',
|
||||
@@ -336,5 +338,61 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Compartido',
|
||||
'assistant.share.failed': 'No se pudo compartir. Inténtalo de nuevo en un momento.',
|
||||
'assistant.share.chatOff': 'El chat del viaje está desactivado.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Tu conexión de IA: el asistente funciona con ella y lee las reservas que importas.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Tu conexión de IA: lee las reservas que importas.',
|
||||
'assistant.error.emptyAnswer': 'El asistente volvió sin respuesta. ¿Lo intento de nuevo?',
|
||||
'assistant.followUp.title': 'Seguir con',
|
||||
'assistant.followUp.cheaper': 'Solo más baratos',
|
||||
'assistant.followUp.closer': 'Más cerca de mi alojamiento',
|
||||
'assistant.followUp.openNow': '¿Qué está abierto ahora?',
|
||||
'assistant.followUp.nextDay': 'Planifica el día siguiente igual',
|
||||
'assistant.followUp.relaxed': 'Haz el plan más relajado',
|
||||
'assistant.followUp.dinners': 'Añade restaurantes para las noches',
|
||||
'assistant.followUp.rain': '¿Y si llueve?',
|
||||
'assistant.followUp.sun': '¿Qué merece la pena al aire libre con buen tiempo?',
|
||||
'assistant.followUp.more': 'Cuéntame más',
|
||||
'assistant.followUp.next': '¿Qué sugieres ahora?',
|
||||
'assistant.menu.alternative': 'Buscar alternativa',
|
||||
'assistant.menu.alternativeAsk': 'Busca una buena alternativa a {place} cerca y explica por qué encaja mejor.',
|
||||
'assistant.menu.foodNearby': 'Restaurante cerca',
|
||||
'assistant.menu.foodNearbyAsk': 'Sugiere algunos buenos sitios para comer cerca de {place}.',
|
||||
'assistant.menu.planDay': 'Planificar este día',
|
||||
'assistant.menu.planDayAsk': 'Planifica este día para mí: lugares, horarios y un sitio para comer.',
|
||||
'assistant.menu.rainPlan': 'Plan para lluvia',
|
||||
'assistant.menu.rainPlanAsk': '¿Qué podemos hacer este día si llueve? Sugiere alternativas bajo techo cerca.',
|
||||
'assistant.preview.title': 'Sugerencias del asistente',
|
||||
'assistant.preview.suggested': 'Sugerencia',
|
||||
'assistant.preview.movedHere': 'Viene aquí',
|
||||
'assistant.preview.removed': 'Se quita',
|
||||
'assistant.preview.movedAway': 'Se mueve',
|
||||
'assistant.check.ok': 'Encaja en el horario',
|
||||
'assistant.week.title': 'Los días de este plan',
|
||||
'assistant.week.day': 'Día',
|
||||
'assistant.memory.title': 'Notas del viaje',
|
||||
'assistant.memory.edit': 'Editar notas del viaje',
|
||||
'assistant.memory.sub': 'El asistente las tiene en cuenta en cada sugerencia de este viaje.',
|
||||
'assistant.memory.quick': 'Deseos habituales',
|
||||
'assistant.memory.notes': 'Tus notas',
|
||||
'assistant.memory.placeholder':
|
||||
'Por ejemplo: viajamos con un niño pequeño, nos encanta la comida callejera, nada de madrugar.',
|
||||
'assistant.memory.saved': 'Notas guardadas',
|
||||
'assistant.memory.quick.vegetarian': 'Comemos vegetariano',
|
||||
'assistant.memory.quick.kids': 'Viajamos con niños',
|
||||
'assistant.memory.quick.budget': 'Con poco presupuesto',
|
||||
'assistant.memory.quick.slow': 'Ritmo tranquilo, sin prisas',
|
||||
'assistant.memory.quick.accessible': 'Acceso sin escalones, por favor',
|
||||
'assistant.memory.quick.noMuseums': 'Pocos museos',
|
||||
'assistant.settings.costEstimates': 'Estimar costes',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Con un restaurante o una entrada propone un gasto estimado para el presupuesto, como tarjeta que confirmas.',
|
||||
'assistant.change.timeline.tight': 'Faltan {count} min',
|
||||
'assistant.change.timeline.tight.one': 'Falta {count} min',
|
||||
'assistant.check.issues': '{count} cosas que revisar',
|
||||
'assistant.check.issues.one': '{count} cosa que revisar',
|
||||
'assistant.week.changes': '{count} cambios',
|
||||
'assistant.week.changes.one': '{count} cambio',
|
||||
'assistant.week.showAll': 'Ver los {count} cambios',
|
||||
'assistant.week.showAll.one': 'Ver {count} cambio',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -969,5 +969,31 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Kustuta kategooria',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Kas kustutada kategooria "{name}" ja kõik selle kirjed?',
|
||||
'admin.rotateJwt.button': 'Vaheta',
|
||||
'admin.addons.ai.name': 'TI',
|
||||
'admin.addons.ai.description':
|
||||
'Üks ühendus assistendile ja broneeringute impordile. MCP laseb teistel TI-rakendustel TREKi kasutada.',
|
||||
'admin.addons.ai.setup': 'Seadista TI',
|
||||
'admin.addons.ai.dialogSub': 'Ühendus, mida jagavad assistent ja TI-analüüs, ning mida kumbki teha tohib.',
|
||||
'admin.addons.ai.tab.connection': 'Ühendus',
|
||||
'admin.addons.ai.parsing.readsWith': 'Loeb broneeringuid ühendusega',
|
||||
'admin.addons.ai.parsing.own': 'Oma ühendus',
|
||||
'admin.addons.ai.parsing.ownHint': 'Kasutatakse jagatud ühenduse asemel.',
|
||||
'admin.addons.ai.parsing.useShared': 'Kasuta jagatud ühendust',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Jagatud',
|
||||
'admin.addons.ai.parsing.perUser': 'Igaüks loeb oma seadetes määratud ühendusega.',
|
||||
'admin.addons.ai.parsing.none': 'Ühendust veel pole. Seadista üks kõigile või anna TI-analüüsile oma ühendus.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Kasuta teist',
|
||||
'admin.addons.ai.parsing.installed': 'Serverisse paigaldatud',
|
||||
'admin.addons.ai.parsing.refresh': 'Värskenda',
|
||||
'admin.addons.ai.parsing.noModels': 'Mudeleid pole veel paigaldatud. Laadi üks allpool.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Laadi soovitatud mudel',
|
||||
'admin.addons.ai.parsing.pull': 'Laadi',
|
||||
'admin.addons.ai.parsing.pulling': 'Laadimine…',
|
||||
'admin.addons.ai.parsing.use': 'Kasuta',
|
||||
'admin.addons.ai.parsing.selected': 'Valitud',
|
||||
'admin.addons.ai.parsing.pulled': 'Mudel laaditud',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Mudelit ei õnnestunud laadida',
|
||||
'admin.addons.ai.parsing.unreachable': 'Kohalikku serverisse ei saa ühendust',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Enamasti pole vaja',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Hangi võti',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max ja Team sisaldavad API-krediiti.',
|
||||
'assistant.connect.hintOpenai': 'Loo võti oma OpenAI juhtpaneelil.',
|
||||
'assistant.connect.hintGemini': 'AI Studios on minuti- ja päevapiirangutega tasuta tase, kus Google võib sinu saadetut oma toodete parandamiseks kasutada. Arveldusega on piirangud suuremad ja see ei kehti.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studios on minuti- ja päevapiirangutega tasuta tase, kus Google võib sinu saadetut oma toodete parandamiseks kasutada. Arveldusega on piirangud suuremad ja see ei kehti.',
|
||||
'assistant.connect.hintOpenrouter': 'Logi sisse OpenRouteriga, võtit pole vaja kopeerida.',
|
||||
'assistant.connect.openrouter': 'Ühenda OpenRouter',
|
||||
'assistant.connect.save': 'Ühenda',
|
||||
@@ -339,5 +340,60 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Jagatud',
|
||||
'assistant.share.failed': 'Jagamine ei õnnestunud. Proovi hetke pärast uuesti.',
|
||||
'assistant.share.chatOff': 'Reisivestlus on välja lülitatud.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Sinu TI-ühendus: sellel töötab assistent ja see loeb imporditud broneeringuid.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Sinu TI-ühendus: see loeb imporditud broneeringuid.',
|
||||
'assistant.error.emptyAnswer': 'Assistent tuli tagasi ilma vastuseta. Kas proovin uuesti?',
|
||||
'assistant.followUp.title': 'Edasi',
|
||||
'assistant.followUp.cheaper': 'Ainult odavamad',
|
||||
'assistant.followUp.closer': 'Majutusele lähemal',
|
||||
'assistant.followUp.openNow': 'Mis on praegu avatud?',
|
||||
'assistant.followUp.nextDay': 'Planeeri järgmine päev samamoodi',
|
||||
'assistant.followUp.relaxed': 'Tee plaan rahulikumaks',
|
||||
'assistant.followUp.dinners': 'Lisa õhtuteks restorane',
|
||||
'assistant.followUp.rain': 'Mis siis, kui sajab?',
|
||||
'assistant.followUp.sun': 'Mis on ilusa ilmaga õues väärt?',
|
||||
'assistant.followUp.more': 'Räägi rohkem',
|
||||
'assistant.followUp.next': 'Mida soovitad edasi?',
|
||||
'assistant.menu.alternative': 'Leia alternatiiv',
|
||||
'assistant.menu.alternativeAsk': 'Leia {place} asemel lähedalt hea alternatiiv ja ütle, miks see paremini sobib.',
|
||||
'assistant.menu.foodNearby': 'Restoran lähedal',
|
||||
'assistant.menu.foodNearbyAsk': 'Soovita mõnda head söögikohta {place} lähedal.',
|
||||
'assistant.menu.planDay': 'Planeeri see päev',
|
||||
'assistant.menu.planDayAsk': 'Planeeri see päev minu jaoks: kohad, ajad ja söögikoht.',
|
||||
'assistant.menu.rainPlan': 'Vihmaplaan',
|
||||
'assistant.menu.rainPlanAsk': 'Mida saame sel päeval vihmaga teha? Soovita lähedal siseruumides alternatiive.',
|
||||
'assistant.preview.title': 'Assistendi ettepanekud',
|
||||
'assistant.preview.suggested': 'Ettepanek',
|
||||
'assistant.preview.movedHere': 'Tuleb siia',
|
||||
'assistant.preview.removed': 'Eemaldatakse',
|
||||
'assistant.preview.movedAway': 'Viiakse mujale',
|
||||
'assistant.check.ok': 'Mahub ajakavasse',
|
||||
'assistant.week.title': 'Selle plaani päevad',
|
||||
'assistant.week.day': 'Päev',
|
||||
'assistant.memory.title': 'Reisimärkmed',
|
||||
'assistant.memory.edit': 'Muuda reisimärkmeid',
|
||||
'assistant.memory.sub': 'Assistent arvestab neid selle reisi iga ettepaneku juures.',
|
||||
'assistant.memory.quick': 'Sagedased soovid',
|
||||
'assistant.memory.notes': 'Sinu märkmed',
|
||||
'assistant.memory.placeholder': 'Näiteks: reisime väikelapsega, armastame tänavatoitu, varahommikud jäävad ära.',
|
||||
'assistant.memory.saved': 'Reisimärkmed salvestatud',
|
||||
'assistant.memory.quick.vegetarian': 'Sööme taimetoitu',
|
||||
'assistant.memory.quick.kids': 'Reisime lastega',
|
||||
'assistant.memory.quick.budget': 'Väikese eelarvega',
|
||||
'assistant.memory.quick.slow': 'Rahulik tempo, ilma kiirustamata',
|
||||
'assistant.memory.quick.accessible': 'Palun treppideta ligipääs',
|
||||
'assistant.memory.quick.noMuseums': 'Vähe muuseume',
|
||||
'assistant.settings.costEstimates': 'Hinda kulusid',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Restorani või pileti puhul soovitab see eelarvesse hinnangulise kulu, kinnitatava kaardina.',
|
||||
'assistant.change.timeline.tight': '{count} min liiga napp',
|
||||
'assistant.change.timeline.tight.one': '{count} min liiga napp',
|
||||
'assistant.check.issues': '{count} asja kontrollida',
|
||||
'assistant.check.issues.one': '{count} asi kontrollida',
|
||||
'assistant.week.changes': '{count} muudatust',
|
||||
'assistant.week.changes.one': '{count} muudatus',
|
||||
'assistant.week.showAll': 'Näita kõiki {count} muudatust',
|
||||
'assistant.week.showAll.one': 'Näita {count} muudatust',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -987,5 +987,33 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Supprimer la catégorie',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Supprimer la catégorie "{name}" et tous ses éléments ?',
|
||||
'admin.rotateJwt.button': 'Renouveler',
|
||||
'admin.addons.ai.name': 'IA',
|
||||
'admin.addons.ai.description':
|
||||
"Une connexion pour l'assistant et l'import de réservations. MCP permet à d'autres applis d'IA d'utiliser TREK.",
|
||||
'admin.addons.ai.setup': "Configurer l'IA",
|
||||
'admin.addons.ai.dialogSub':
|
||||
"La connexion que partagent l'assistant et l'analyse par IA, et ce que chacun peut faire.",
|
||||
'admin.addons.ai.tab.connection': 'Connexion',
|
||||
'admin.addons.ai.parsing.readsWith': 'Lit les réservations avec',
|
||||
'admin.addons.ai.parsing.own': 'Connexion propre',
|
||||
'admin.addons.ai.parsing.ownHint': 'Utilisée à la place de la connexion partagée.',
|
||||
'admin.addons.ai.parsing.useShared': 'Utiliser la connexion partagée',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Partagée',
|
||||
'admin.addons.ai.parsing.perUser': 'Chaque personne lit avec sa propre connexion, configurée dans ses paramètres.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
"Pas encore de connexion. Configurez-en une pour tous, ou donnez-en une propre à l'analyse par IA.",
|
||||
'admin.addons.ai.parsing.setupOwn': 'En utiliser une autre',
|
||||
'admin.addons.ai.parsing.installed': 'Installés sur le serveur',
|
||||
'admin.addons.ai.parsing.refresh': 'Actualiser',
|
||||
'admin.addons.ai.parsing.noModels': 'Aucun modèle installé. Téléchargez-en un ci-dessous.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Télécharger un modèle recommandé',
|
||||
'admin.addons.ai.parsing.pull': 'Télécharger',
|
||||
'admin.addons.ai.parsing.pulling': 'Téléchargement…',
|
||||
'admin.addons.ai.parsing.use': 'Utiliser',
|
||||
'admin.addons.ai.parsing.selected': 'Sélectionné',
|
||||
'admin.addons.ai.parsing.pulled': 'Modèle téléchargé',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Impossible de télécharger le modèle',
|
||||
'admin.addons.ai.parsing.unreachable': 'Impossible de joindre le serveur local',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Souvent inutile',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Obtenir une clé',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max et Team incluent des crédits API.',
|
||||
'assistant.connect.hintOpenai': 'Créez une clé dans votre tableau de bord OpenAI.',
|
||||
'assistant.connect.hintGemini': 'AI Studio propose une offre gratuite avec des limites par minute et par jour, sur laquelle Google peut utiliser ce que tu envoies pour améliorer ses produits. Avec la facturation activée, les limites sont plus élevées et cela ne s’applique pas.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio propose une offre gratuite avec des limites par minute et par jour, sur laquelle Google peut utiliser ce que tu envoies pour améliorer ses produits. Avec la facturation activée, les limites sont plus élevées et cela ne s’applique pas.',
|
||||
'assistant.connect.hintOpenrouter': 'Connectez-vous avec OpenRouter, aucune clé à copier.',
|
||||
'assistant.connect.openrouter': 'Connecter OpenRouter',
|
||||
'assistant.connect.save': 'Connecter',
|
||||
@@ -94,7 +95,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Aller au dernier message',
|
||||
'assistant.attach.button': 'Joindre une réservation',
|
||||
'assistant.attach.drop': 'Dépose-le ici et je lis la réservation',
|
||||
'assistant.attach.unsupported': 'Je ne peux pas lire ce type de fichier. Essaie un PDF, un e-mail, une image ou un pass Wallet.',
|
||||
'assistant.attach.unsupported':
|
||||
'Je ne peux pas lire ce type de fichier. Essaie un PDF, un e-mail, une image ou un pass Wallet.',
|
||||
'assistant.attach.tooLarge': 'Ce fichier dépasse 10 Mo.',
|
||||
'assistant.composer.placeholder': 'Posez une question sur {trip}',
|
||||
'assistant.composer.send': 'Envoyer',
|
||||
@@ -342,5 +344,62 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Partagé',
|
||||
'assistant.share.failed': 'Le partage a échoué. Réessayez dans un instant.',
|
||||
'assistant.share.chatOff': 'Le chat du voyage est désactivé.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
"Votre connexion IA : l'assistant l'utilise, et elle lit les réservations que vous importez.",
|
||||
'assistant.connect.descriptionParsingOnly': 'Votre connexion IA : elle lit les réservations que vous importez.',
|
||||
'assistant.error.emptyAnswer': "L'assistant n'a renvoyé aucune réponse. Je réessaie ?",
|
||||
'assistant.followUp.title': 'Ensuite',
|
||||
'assistant.followUp.cheaper': 'Seulement moins cher',
|
||||
'assistant.followUp.closer': 'Plus près de mon hébergement',
|
||||
'assistant.followUp.openNow': "Qu'est-ce qui est ouvert maintenant ?",
|
||||
'assistant.followUp.nextDay': 'Planifie le jour suivant de la même façon',
|
||||
'assistant.followUp.relaxed': 'Rends le plan plus détendu',
|
||||
'assistant.followUp.dinners': 'Ajoute des restaurants pour les soirées',
|
||||
'assistant.followUp.rain': "Et s'il pleut ?",
|
||||
'assistant.followUp.sun': "Que faire dehors s'il fait beau ?",
|
||||
'assistant.followUp.more': "Dis-m'en plus",
|
||||
'assistant.followUp.next': 'Que proposes-tu ensuite ?',
|
||||
'assistant.menu.alternative': 'Trouver une alternative',
|
||||
'assistant.menu.alternativeAsk':
|
||||
'Trouve une bonne alternative à {place} à proximité et dis pourquoi elle convient mieux.',
|
||||
'assistant.menu.foodNearby': 'Restaurant à proximité',
|
||||
'assistant.menu.foodNearbyAsk': 'Propose quelques bonnes adresses pour manger près de {place}.',
|
||||
'assistant.menu.planDay': 'Planifier ce jour',
|
||||
'assistant.menu.planDayAsk': 'Planifie ce jour pour moi : lieux, horaires et un endroit où manger.',
|
||||
'assistant.menu.rainPlan': 'Plan pluie',
|
||||
'assistant.menu.rainPlanAsk': "Que faire ce jour-là s'il pleut ? Propose des alternatives en intérieur à proximité.",
|
||||
'assistant.preview.title': "Suggestions de l'assistant",
|
||||
'assistant.preview.suggested': 'Suggestion',
|
||||
'assistant.preview.movedHere': 'Arrive ici',
|
||||
'assistant.preview.removed': 'Retiré',
|
||||
'assistant.preview.movedAway': 'Déplacé',
|
||||
'assistant.check.ok': "Tient dans l'horaire",
|
||||
'assistant.week.title': 'Les jours de ce plan',
|
||||
'assistant.week.day': 'Jour',
|
||||
'assistant.memory.title': 'Pense-bête',
|
||||
'assistant.memory.edit': 'Modifier le pense-bête',
|
||||
'assistant.memory.sub': "L'assistant en tient compte pour chaque suggestion de ce voyage.",
|
||||
'assistant.memory.quick': 'Souhaits fréquents',
|
||||
'assistant.memory.notes': 'Vos notes',
|
||||
'assistant.memory.placeholder':
|
||||
'Par exemple : nous voyageons avec un tout-petit, adorons la cuisine de rue, pas de réveil matinal.',
|
||||
'assistant.memory.saved': 'Pense-bête enregistré',
|
||||
'assistant.memory.quick.vegetarian': 'Nous mangeons végétarien',
|
||||
'assistant.memory.quick.kids': 'Nous voyageons avec des enfants',
|
||||
'assistant.memory.quick.budget': 'Petit budget',
|
||||
'assistant.memory.quick.slow': 'Rythme tranquille, sans courir',
|
||||
'assistant.memory.quick.accessible': 'Accès sans marches, svp',
|
||||
'assistant.memory.quick.noMuseums': 'Peu de musées',
|
||||
'assistant.settings.costEstimates': 'Estimer les coûts',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Pour un restaurant ou un billet, il propose une dépense estimée pour le budget, sous forme de carte à confirmer.',
|
||||
'assistant.change.timeline.tight': '{count} min de trop peu',
|
||||
'assistant.change.timeline.tight.one': '{count} min de trop peu',
|
||||
'assistant.check.issues': '{count} points à vérifier',
|
||||
'assistant.check.issues.one': '{count} point à vérifier',
|
||||
'assistant.week.changes': '{count} modifications',
|
||||
'assistant.week.changes.one': '{count} modification',
|
||||
'assistant.week.showAll': 'Afficher les {count} modifications',
|
||||
'assistant.week.showAll.one': 'Afficher {count} modification',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -997,5 +997,33 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Διαγραφή κατηγορίας',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Διαγραφή της κατηγορίας "{name}" και όλων των στοιχείων της;',
|
||||
'admin.rotateJwt.button': 'Εναλλαγή',
|
||||
'admin.addons.ai.name': 'ΤΝ',
|
||||
'admin.addons.ai.description':
|
||||
'Μία σύνδεση για τον βοηθό και την εισαγωγή κρατήσεων. Το MCP επιτρέπει σε άλλες εφαρμογές ΤΝ να χρησιμοποιούν το TREK.',
|
||||
'admin.addons.ai.setup': 'Ρύθμιση ΤΝ',
|
||||
'admin.addons.ai.dialogSub':
|
||||
'Η σύνδεση που μοιράζονται ο βοηθός και η ανάλυση με ΤΝ, και τι μπορεί να κάνει ο καθένας.',
|
||||
'admin.addons.ai.tab.connection': 'Σύνδεση',
|
||||
'admin.addons.ai.parsing.readsWith': 'Διαβάζει κρατήσεις με',
|
||||
'admin.addons.ai.parsing.own': 'Δική της σύνδεση',
|
||||
'admin.addons.ai.parsing.ownHint': 'Χρησιμοποιείται αντί για την κοινή σύνδεση.',
|
||||
'admin.addons.ai.parsing.useShared': 'Χρήση της κοινής σύνδεσης',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Κοινή',
|
||||
'admin.addons.ai.parsing.perUser': 'Ο καθένας διαβάζει με τη δική του σύνδεση από τις ρυθμίσεις του.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'Δεν υπάρχει ακόμη σύνδεση. Ρυθμίστε μία για όλους ή δώστε στην ανάλυση με ΤΝ δική της.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Χρήση άλλης',
|
||||
'admin.addons.ai.parsing.installed': 'Εγκατεστημένα στον διακομιστή',
|
||||
'admin.addons.ai.parsing.refresh': 'Ανανέωση',
|
||||
'admin.addons.ai.parsing.noModels': 'Δεν υπάρχουν ακόμη μοντέλα. Κατεβάστε ένα παρακάτω.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Λήψη προτεινόμενου μοντέλου',
|
||||
'admin.addons.ai.parsing.pull': 'Λήψη',
|
||||
'admin.addons.ai.parsing.pulling': 'Λήψη…',
|
||||
'admin.addons.ai.parsing.use': 'Χρήση',
|
||||
'admin.addons.ai.parsing.selected': 'Επιλεγμένο',
|
||||
'admin.addons.ai.parsing.pulled': 'Το μοντέλο κατέβηκε',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Δεν ήταν δυνατή η λήψη του μοντέλου',
|
||||
'admin.addons.ai.parsing.unreachable': 'Ο τοπικός διακομιστής δεν είναι προσβάσιμος',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Συνήθως δεν χρειάζεται',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -45,7 +45,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Λήψη κλειδιού',
|
||||
'assistant.connect.hintAnthropic': 'Τα Claude Max και Team περιλαμβάνουν μονάδες API.',
|
||||
'assistant.connect.hintOpenai': 'Δημιουργήστε ένα κλειδί στον πίνακα ελέγχου του OpenAI.',
|
||||
'assistant.connect.hintGemini': 'Το AI Studio έχει δωρεάν επίπεδο με όρια ανά λεπτό και ανά ημέρα, όπου η Google μπορεί να χρησιμοποιεί ό,τι στέλνεις για να βελτιώσει τα προϊόντα της. Με ενεργή χρέωση τα όρια είναι υψηλότερα και αυτό δεν ισχύει.',
|
||||
'assistant.connect.hintGemini':
|
||||
'Το AI Studio έχει δωρεάν επίπεδο με όρια ανά λεπτό και ανά ημέρα, όπου η Google μπορεί να χρησιμοποιεί ό,τι στέλνεις για να βελτιώσει τα προϊόντα της. Με ενεργή χρέωση τα όρια είναι υψηλότερα και αυτό δεν ισχύει.',
|
||||
'assistant.connect.hintOpenrouter': 'Συνδεθείτε με το OpenRouter, χωρίς κλειδί για αντιγραφή.',
|
||||
'assistant.connect.openrouter': 'Σύνδεση OpenRouter',
|
||||
'assistant.connect.save': 'Σύνδεση',
|
||||
@@ -96,7 +97,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Μετάβαση στο τελευταίο μήνυμα',
|
||||
'assistant.attach.button': 'Επισύναψη κράτησης',
|
||||
'assistant.attach.drop': 'Άφησέ το εδώ και θα διαβάσω την κράτηση',
|
||||
'assistant.attach.unsupported': 'Δεν μπορώ να διαβάσω αυτόν τον τύπο αρχείου. Δοκίμασε PDF, email, εικόνα ή κάρτα πορτοφολιού.',
|
||||
'assistant.attach.unsupported':
|
||||
'Δεν μπορώ να διαβάσω αυτόν τον τύπο αρχείου. Δοκίμασε PDF, email, εικόνα ή κάρτα πορτοφολιού.',
|
||||
'assistant.attach.tooLarge': 'Αυτό το αρχείο είναι μεγαλύτερο από 10 MB.',
|
||||
'assistant.composer.placeholder': 'Ρωτήστε οτιδήποτε για {trip}',
|
||||
'assistant.composer.send': 'Αποστολή',
|
||||
@@ -342,5 +344,61 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Κοινοποιήθηκε',
|
||||
'assistant.share.failed': 'Η κοινοποίηση απέτυχε. Δοκιμάστε ξανά σε λίγο.',
|
||||
'assistant.share.chatOff': 'Η συνομιλία του ταξιδιού είναι απενεργοποιημένη.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Η σύνδεσή σας ΤΝ: σε αυτήν τρέχει ο βοηθός και διαβάζει τις κρατήσεις που εισάγετε.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Η σύνδεσή σας ΤΝ: διαβάζει τις κρατήσεις που εισάγετε.',
|
||||
'assistant.error.emptyAnswer': 'Ο βοηθός επέστρεψε χωρίς απάντηση. Να δοκιμάσω ξανά;',
|
||||
'assistant.followUp.title': 'Συνέχεια',
|
||||
'assistant.followUp.cheaper': 'Μόνο φθηνότερα',
|
||||
'assistant.followUp.closer': 'Πιο κοντά στο κατάλυμα',
|
||||
'assistant.followUp.openNow': 'Τι είναι ανοιχτό τώρα;',
|
||||
'assistant.followUp.nextDay': 'Σχεδίασε την επόμενη μέρα με τον ίδιο τρόπο',
|
||||
'assistant.followUp.relaxed': 'Κάνε το πρόγραμμα πιο χαλαρό',
|
||||
'assistant.followUp.dinners': 'Πρόσθεσε εστιατόρια για τα βράδια',
|
||||
'assistant.followUp.rain': 'Κι αν βρέχει;',
|
||||
'assistant.followUp.sun': 'Τι αξίζει έξω με καλό καιρό;',
|
||||
'assistant.followUp.more': 'Πες μου περισσότερα',
|
||||
'assistant.followUp.next': 'Τι προτείνεις τώρα;',
|
||||
'assistant.menu.alternative': 'Εύρεση εναλλακτικής',
|
||||
'assistant.menu.alternativeAsk': 'Βρες μια καλή εναλλακτική για το {place} κοντά και πες γιατί ταιριάζει καλύτερα.',
|
||||
'assistant.menu.foodNearby': 'Εστιατόριο κοντά',
|
||||
'assistant.menu.foodNearbyAsk': 'Πρότεινε μερικά καλά μέρη για φαγητό κοντά στο {place}.',
|
||||
'assistant.menu.planDay': 'Σχεδίασε αυτή τη μέρα',
|
||||
'assistant.menu.planDayAsk': 'Σχεδίασε αυτή τη μέρα για μένα: μέρη, ώρες και κάπου να φάμε.',
|
||||
'assistant.menu.rainPlan': 'Πρόγραμμα βροχής',
|
||||
'assistant.menu.rainPlanAsk':
|
||||
'Τι μπορούμε να κάνουμε αυτή τη μέρα αν βρέχει; Πρότεινε εσωτερικές εναλλακτικές κοντά.',
|
||||
'assistant.preview.title': 'Προτάσεις του βοηθού',
|
||||
'assistant.preview.suggested': 'Πρόταση',
|
||||
'assistant.preview.movedHere': 'Έρχεται εδώ',
|
||||
'assistant.preview.removed': 'Αφαιρείται',
|
||||
'assistant.preview.movedAway': 'Μετακινείται',
|
||||
'assistant.check.ok': 'Χωράει στον χρόνο',
|
||||
'assistant.week.title': 'Οι μέρες αυτού του πλάνου',
|
||||
'assistant.week.day': 'Μέρα',
|
||||
'assistant.memory.title': 'Σημειώσεις ταξιδιού',
|
||||
'assistant.memory.edit': 'Επεξεργασία σημειώσεων',
|
||||
'assistant.memory.sub': 'Ο βοηθός τις λαμβάνει υπόψη σε κάθε πρόταση για αυτό το ταξίδι.',
|
||||
'assistant.memory.quick': 'Συχνές επιθυμίες',
|
||||
'assistant.memory.notes': 'Οι σημειώσεις σου',
|
||||
'assistant.memory.placeholder': 'Για παράδειγμα: ταξιδεύουμε με νήπιο, λατρεύουμε το street food, όχι νωρίς το πρωί.',
|
||||
'assistant.memory.saved': 'Οι σημειώσεις αποθηκεύτηκαν',
|
||||
'assistant.memory.quick.vegetarian': 'Τρώμε χορτοφαγικά',
|
||||
'assistant.memory.quick.kids': 'Ταξιδεύουμε με παιδιά',
|
||||
'assistant.memory.quick.budget': 'Με μικρό προϋπολογισμό',
|
||||
'assistant.memory.quick.slow': 'Χαλαρός ρυθμός, χωρίς βιασύνη',
|
||||
'assistant.memory.quick.accessible': 'Πρόσβαση χωρίς σκαλοπάτια, παρακαλώ',
|
||||
'assistant.memory.quick.noMuseums': 'Λίγα μουσεία',
|
||||
'assistant.settings.costEstimates': 'Εκτίμηση κόστους',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Για εστιατόριο ή εισιτήριο προτείνει μια εκτιμώμενη δαπάνη για τον προϋπολογισμό, ως κάρτα που επιβεβαιώνεις.',
|
||||
'assistant.change.timeline.tight': 'Λείπουν {count} λεπτά',
|
||||
'assistant.change.timeline.tight.one': 'Λείπει {count} λεπτό',
|
||||
'assistant.check.issues': '{count} σημεία για έλεγχο',
|
||||
'assistant.check.issues.one': '{count} σημείο για έλεγχο',
|
||||
'assistant.week.changes': '{count} αλλαγές',
|
||||
'assistant.week.changes.one': '{count} αλλαγή',
|
||||
'assistant.week.showAll': 'Εμφάνιση όλων των {count} αλλαγών',
|
||||
'assistant.week.showAll.one': 'Εμφάνιση {count} αλλαγής',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -985,5 +985,33 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Kategória törlése',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Törlöd a(z) "{name}" kategóriát és az összes elemét?',
|
||||
'admin.rotateJwt.button': 'Megújítás',
|
||||
'admin.addons.ai.name': 'MI',
|
||||
'admin.addons.ai.description':
|
||||
'Egy kapcsolat az asszisztensnek és a foglalások beolvasásának. Az MCP-vel más MI-alkalmazások is használhatják a TREK-et.',
|
||||
'admin.addons.ai.setup': 'MI beállítása',
|
||||
'admin.addons.ai.dialogSub':
|
||||
'A kapcsolat, amelyen az asszisztens és az MI-feldolgozás osztozik, és hogy melyik mit tehet.',
|
||||
'admin.addons.ai.tab.connection': 'Kapcsolat',
|
||||
'admin.addons.ai.parsing.readsWith': 'A foglalásokat ezzel olvassa',
|
||||
'admin.addons.ai.parsing.own': 'Saját kapcsolat',
|
||||
'admin.addons.ai.parsing.ownHint': 'A közös kapcsolat helyett használja.',
|
||||
'admin.addons.ai.parsing.useShared': 'A közös kapcsolat használata',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Közös',
|
||||
'admin.addons.ai.parsing.perUser': 'Mindenki a saját beállításaiban megadott kapcsolattal olvas.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'Még nincs kapcsolat. Állíts be egyet mindenkinek, vagy adj az MI-feldolgozásnak sajátot.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Másik használata',
|
||||
'admin.addons.ai.parsing.installed': 'A szerverre telepítve',
|
||||
'admin.addons.ai.parsing.refresh': 'Frissítés',
|
||||
'admin.addons.ai.parsing.noModels': 'Még nincs telepített modell. Tölts le egyet lent.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Ajánlott modell letöltése',
|
||||
'admin.addons.ai.parsing.pull': 'Letöltés',
|
||||
'admin.addons.ai.parsing.pulling': 'Letöltés…',
|
||||
'admin.addons.ai.parsing.use': 'Használat',
|
||||
'admin.addons.ai.parsing.selected': 'Kiválasztva',
|
||||
'admin.addons.ai.parsing.pulled': 'Modell letöltve',
|
||||
'admin.addons.ai.parsing.pullFailed': 'A modellt nem sikerült letölteni',
|
||||
'admin.addons.ai.parsing.unreachable': 'A helyi szerver nem érhető el',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Általában nem kell',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Kulcs igénylése',
|
||||
'assistant.connect.hintAnthropic': 'A Claude Max és Team csomag API-kreditet is tartalmaz.',
|
||||
'assistant.connect.hintOpenai': 'Hozz létre egy kulcsot az OpenAI irányítópultján.',
|
||||
'assistant.connect.hintGemini': 'Az AI Studióban van percenkénti és napi korlátos ingyenes szint, amelyben a Google felhasználhatja, amit küldesz, a termékei fejlesztésére. Bekapcsolt számlázással magasabbak a korlátok, és ez nem érvényes.',
|
||||
'assistant.connect.hintGemini':
|
||||
'Az AI Studióban van percenkénti és napi korlátos ingyenes szint, amelyben a Google felhasználhatja, amit küldesz, a termékei fejlesztésére. Bekapcsolt számlázással magasabbak a korlátok, és ez nem érvényes.',
|
||||
'assistant.connect.hintOpenrouter': 'Jelentkezz be az OpenRouterrel, nem kell kulcsot másolni.',
|
||||
'assistant.connect.openrouter': 'OpenRouter csatlakoztatása',
|
||||
'assistant.connect.save': 'Csatlakoztatás',
|
||||
@@ -95,7 +96,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Ugrás a legújabb üzenethez',
|
||||
'assistant.attach.button': 'Foglalás csatolása',
|
||||
'assistant.attach.drop': 'Engedd el itt, és elolvasom a foglalást',
|
||||
'assistant.attach.unsupported': 'Ezt a fájltípust nem tudom olvasni. Próbálj PDF-et, e-mailt, képet vagy Wallet-kártyát.',
|
||||
'assistant.attach.unsupported':
|
||||
'Ezt a fájltípust nem tudom olvasni. Próbálj PDF-et, e-mailt, képet vagy Wallet-kártyát.',
|
||||
'assistant.attach.tooLarge': 'Ez a fájl nagyobb 10 MB-nál.',
|
||||
'assistant.composer.placeholder': 'Kérdezz bármit erről: {trip}',
|
||||
'assistant.composer.send': 'Küldés',
|
||||
@@ -343,5 +345,61 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Megosztva',
|
||||
'assistant.share.failed': 'A megosztás nem sikerült. Próbáld újra egy pillanat múlva.',
|
||||
'assistant.share.chatOff': 'Az út csevegése ki van kapcsolva.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Az MI-kapcsolatod: ezen fut az asszisztens, és ez olvassa be az importált foglalásokat.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Az MI-kapcsolatod: ez olvassa be az importált foglalásokat.',
|
||||
'assistant.error.emptyAnswer': 'Az asszisztens válasz nélkül tért vissza. Próbáljam újra?',
|
||||
'assistant.followUp.title': 'Folytatás',
|
||||
'assistant.followUp.cheaper': 'Csak olcsóbbak',
|
||||
'assistant.followUp.closer': 'Közelebb a szállásomhoz',
|
||||
'assistant.followUp.openNow': 'Mi van most nyitva?',
|
||||
'assistant.followUp.nextDay': 'Tervezd meg ugyanígy a következő napot',
|
||||
'assistant.followUp.relaxed': 'Legyen lazább a terv',
|
||||
'assistant.followUp.dinners': 'Adj hozzá éttermeket estékre',
|
||||
'assistant.followUp.rain': 'Mi legyen, ha esik?',
|
||||
'assistant.followUp.sun': 'Mit érdemes szép időben kint csinálni?',
|
||||
'assistant.followUp.more': 'Mesélj többet',
|
||||
'assistant.followUp.next': 'Mit javasolsz most?',
|
||||
'assistant.menu.alternative': 'Alternatíva keresése',
|
||||
'assistant.menu.alternativeAsk':
|
||||
'Keress jó alternatívát {place} helyett a közelben, és mondd el, miért illik jobban.',
|
||||
'assistant.menu.foodNearby': 'Étterem a közelben',
|
||||
'assistant.menu.foodNearbyAsk': 'Javasolj néhány jó helyet evésre {place} közelében.',
|
||||
'assistant.menu.planDay': 'Nap megtervezése',
|
||||
'assistant.menu.planDayAsk': 'Tervezd meg nekem ezt a napot: helyek, időpontok és egy hely evésre.',
|
||||
'assistant.menu.rainPlan': 'Esős terv',
|
||||
'assistant.menu.rainPlanAsk': 'Mit csinálhatunk ezen a napon, ha esik? Javasolj fedett alternatívákat a közelben.',
|
||||
'assistant.preview.title': 'Az asszisztens javaslatai',
|
||||
'assistant.preview.suggested': 'Javaslat',
|
||||
'assistant.preview.movedHere': 'Ide kerül',
|
||||
'assistant.preview.removed': 'Kikerül',
|
||||
'assistant.preview.movedAway': 'Áthelyezve',
|
||||
'assistant.check.ok': 'Időben belefér',
|
||||
'assistant.week.title': 'A terv napjai',
|
||||
'assistant.week.day': 'Nap',
|
||||
'assistant.memory.title': 'Útijegyzet',
|
||||
'assistant.memory.edit': 'Útijegyzet szerkesztése',
|
||||
'assistant.memory.sub': 'Az asszisztens minden javaslatnál figyelembe veszi ezt az utazáson.',
|
||||
'assistant.memory.quick': 'Gyakori kívánságok',
|
||||
'assistant.memory.notes': 'Jegyzeteid',
|
||||
'assistant.memory.placeholder': 'Például: kisgyerekkel utazunk, imádjuk az utcai kaját, nincs korai kelés.',
|
||||
'assistant.memory.saved': 'Útijegyzet mentve',
|
||||
'assistant.memory.quick.vegetarian': 'Vegetáriánusan eszünk',
|
||||
'assistant.memory.quick.kids': 'Gyerekekkel utazunk',
|
||||
'assistant.memory.quick.budget': 'Szűkös keretből',
|
||||
'assistant.memory.quick.slow': 'Nyugodt tempó, kapkodás nélkül',
|
||||
'assistant.memory.quick.accessible': 'Akadálymentesen, kérem',
|
||||
'assistant.memory.quick.noMuseums': 'Kevés múzeum',
|
||||
'assistant.settings.costEstimates': 'Költségbecslés',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Étteremnél vagy jegynél becsült kiadást javasol a költségvetésbe, megerősítendő kártyaként.',
|
||||
'assistant.change.timeline.tight': '{count} perccel szűkös',
|
||||
'assistant.change.timeline.tight.one': '{count} perccel szűkös',
|
||||
'assistant.check.issues': '{count} ellenőrizendő pont',
|
||||
'assistant.check.issues.one': '{count} ellenőrizendő pont',
|
||||
'assistant.week.changes': '{count} módosítás',
|
||||
'assistant.week.changes.one': '{count} módosítás',
|
||||
'assistant.week.showAll': 'Mind a {count} módosítás mutatása',
|
||||
'assistant.week.showAll.one': '{count} módosítás mutatása',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -956,5 +956,32 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Hapus kategori',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Hapus kategori "{name}" beserta semua itemnya?',
|
||||
'admin.rotateJwt.button': 'Putar Ulang',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description':
|
||||
'Satu koneksi untuk asisten dan impor pemesanan. MCP memungkinkan aplikasi AI lain memakai TREK.',
|
||||
'admin.addons.ai.setup': 'Atur AI',
|
||||
'admin.addons.ai.dialogSub':
|
||||
'Koneksi yang dipakai bersama oleh asisten dan penguraian AI, serta apa yang boleh dilakukan masing-masing.',
|
||||
'admin.addons.ai.tab.connection': 'Koneksi',
|
||||
'admin.addons.ai.parsing.readsWith': 'Membaca pemesanan dengan',
|
||||
'admin.addons.ai.parsing.own': 'Koneksi sendiri',
|
||||
'admin.addons.ai.parsing.ownHint': 'Dipakai sebagai pengganti koneksi bersama.',
|
||||
'admin.addons.ai.parsing.useShared': 'Gunakan koneksi bersama',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Bersama',
|
||||
'admin.addons.ai.parsing.perUser': 'Setiap orang membaca dengan koneksinya sendiri dari pengaturannya.',
|
||||
'admin.addons.ai.parsing.none': 'Belum ada koneksi. Atur satu untuk semua, atau beri penguraian AI koneksi sendiri.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Gunakan yang lain',
|
||||
'admin.addons.ai.parsing.installed': 'Terpasang di server',
|
||||
'admin.addons.ai.parsing.refresh': 'Muat ulang',
|
||||
'admin.addons.ai.parsing.noModels': 'Belum ada model terpasang. Unduh satu di bawah.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Unduh model yang disarankan',
|
||||
'admin.addons.ai.parsing.pull': 'Unduh',
|
||||
'admin.addons.ai.parsing.pulling': 'Mengunduh…',
|
||||
'admin.addons.ai.parsing.use': 'Gunakan',
|
||||
'admin.addons.ai.parsing.selected': 'Dipilih',
|
||||
'admin.addons.ai.parsing.pulled': 'Model diunduh',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Model tidak dapat diunduh',
|
||||
'admin.addons.ai.parsing.unreachable': 'Server lokal tidak dapat dijangkau',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Biasanya tidak perlu',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Dapatkan kunci',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max dan Team sudah termasuk kredit API.',
|
||||
'assistant.connect.hintOpenai': 'Buat kunci di dasbor OpenAI kamu.',
|
||||
'assistant.connect.hintGemini': 'AI Studio punya tingkat gratis dengan batas per menit dan per hari, di mana Google dapat memakai apa yang kamu kirim untuk meningkatkan produknya. Dengan penagihan aktif, batasnya lebih tinggi dan hal itu tidak berlaku.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio punya tingkat gratis dengan batas per menit dan per hari, di mana Google dapat memakai apa yang kamu kirim untuk meningkatkan produknya. Dengan penagihan aktif, batasnya lebih tinggi dan hal itu tidak berlaku.',
|
||||
'assistant.connect.hintOpenrouter': 'Masuk dengan OpenRouter, tanpa perlu menyalin kunci.',
|
||||
'assistant.connect.openrouter': 'Hubungkan OpenRouter',
|
||||
'assistant.connect.save': 'Hubungkan',
|
||||
@@ -319,5 +320,58 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Dibagikan',
|
||||
'assistant.share.failed': 'Gagal membagikan. Coba lagi sebentar lagi.',
|
||||
'assistant.share.chatOff': 'Obrolan perjalanan dimatikan.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Koneksi AI Anda: asisten berjalan di atasnya, dan koneksi ini membaca pemesanan yang Anda impor.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Koneksi AI Anda: membaca pemesanan yang Anda impor.',
|
||||
'assistant.error.emptyAnswer': 'Asisten kembali tanpa jawaban. Coba lagi?',
|
||||
'assistant.followUp.title': 'Lanjut dengan',
|
||||
'assistant.followUp.cheaper': 'Hanya yang lebih murah',
|
||||
'assistant.followUp.closer': 'Lebih dekat ke penginapan',
|
||||
'assistant.followUp.openNow': 'Apa yang buka sekarang?',
|
||||
'assistant.followUp.nextDay': 'Rencanakan hari berikutnya dengan cara yang sama',
|
||||
'assistant.followUp.relaxed': 'Buat rencananya lebih santai',
|
||||
'assistant.followUp.dinners': 'Tambahkan restoran untuk malam hari',
|
||||
'assistant.followUp.rain': 'Bagaimana kalau hujan?',
|
||||
'assistant.followUp.sun': 'Apa yang seru di luar saat cuaca cerah?',
|
||||
'assistant.followUp.more': 'Ceritakan lebih banyak',
|
||||
'assistant.followUp.next': 'Apa saranmu selanjutnya?',
|
||||
'assistant.menu.alternative': 'Cari alternatif',
|
||||
'assistant.menu.alternativeAsk':
|
||||
'Carikan alternatif yang bagus untuk {place} di dekatnya dan jelaskan kenapa lebih cocok.',
|
||||
'assistant.menu.foodNearby': 'Restoran terdekat',
|
||||
'assistant.menu.foodNearbyAsk': 'Sarankan beberapa tempat makan yang bagus di dekat {place}.',
|
||||
'assistant.menu.planDay': 'Rencanakan hari ini',
|
||||
'assistant.menu.planDayAsk': 'Rencanakan hari ini untukku: tempat, waktu, dan tempat makan.',
|
||||
'assistant.menu.rainPlan': 'Rencana hujan',
|
||||
'assistant.menu.rainPlanAsk':
|
||||
'Apa yang bisa kami lakukan hari ini kalau hujan? Sarankan alternatif di dalam ruangan di dekatnya.',
|
||||
'assistant.preview.title': 'Saran dari asisten',
|
||||
'assistant.preview.suggested': 'Saran',
|
||||
'assistant.preview.movedHere': 'Pindah ke sini',
|
||||
'assistant.preview.removed': 'Dihapus',
|
||||
'assistant.preview.movedAway': 'Dipindahkan',
|
||||
'assistant.check.ok': 'Waktunya cukup',
|
||||
'assistant.week.title': 'Hari-hari dalam rencana ini',
|
||||
'assistant.week.day': 'Hari',
|
||||
'assistant.memory.title': 'Catatan perjalanan',
|
||||
'assistant.memory.edit': 'Ubah catatan perjalanan',
|
||||
'assistant.memory.sub': 'Asisten memperhatikannya di setiap saran untuk perjalanan ini.',
|
||||
'assistant.memory.quick': 'Keinginan umum',
|
||||
'assistant.memory.notes': 'Catatanmu',
|
||||
'assistant.memory.placeholder': 'Misalnya: kami bepergian dengan balita, suka jajanan jalanan, tidak bangun pagi.',
|
||||
'assistant.memory.saved': 'Catatan tersimpan',
|
||||
'assistant.memory.quick.vegetarian': 'Kami makan vegetarian',
|
||||
'assistant.memory.quick.kids': 'Kami bepergian dengan anak-anak',
|
||||
'assistant.memory.quick.budget': 'Dengan anggaran terbatas',
|
||||
'assistant.memory.quick.slow': 'Tempo santai, tanpa terburu-buru',
|
||||
'assistant.memory.quick.accessible': 'Mohon akses tanpa tangga',
|
||||
'assistant.memory.quick.noMuseums': 'Sedikit museum',
|
||||
'assistant.settings.costEstimates': 'Perkirakan biaya',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Untuk restoran atau tiket, ia menyarankan pengeluaran perkiraan untuk anggaran sebagai kartu yang kamu konfirmasi.',
|
||||
'assistant.change.timeline.tight': 'Kurang {count} menit',
|
||||
'assistant.check.issues': '{count} hal perlu dicek',
|
||||
'assistant.week.changes': '{count} perubahan',
|
||||
'assistant.week.showAll': 'Tampilkan semua {count} perubahan',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -980,5 +980,32 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Elimina categoria',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Eliminare la categoria "{name}" e tutte le sue voci?',
|
||||
'admin.rotateJwt.button': 'Rinnova',
|
||||
'admin.addons.ai.name': 'IA',
|
||||
'admin.addons.ai.description':
|
||||
"Una connessione per l'assistente e l'importazione delle prenotazioni. MCP permette ad altre app di IA di usare TREK.",
|
||||
'admin.addons.ai.setup': "Configura l'IA",
|
||||
'admin.addons.ai.dialogSub': 'La connessione condivisa da assistente e analisi con IA, e cosa può fare ciascuno.',
|
||||
'admin.addons.ai.tab.connection': 'Connessione',
|
||||
'admin.addons.ai.parsing.readsWith': 'Legge le prenotazioni con',
|
||||
'admin.addons.ai.parsing.own': 'Connessione propria',
|
||||
'admin.addons.ai.parsing.ownHint': 'Usata al posto della connessione condivisa.',
|
||||
'admin.addons.ai.parsing.useShared': 'Usa la connessione condivisa',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Condivisa',
|
||||
'admin.addons.ai.parsing.perUser': 'Ogni persona legge con la propria connessione, impostata nelle sue impostazioni.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
"Nessuna connessione. Configurane una per tutti o dai all'analisi con IA una propria.",
|
||||
'admin.addons.ai.parsing.setupOwn': "Usane un'altra",
|
||||
'admin.addons.ai.parsing.installed': 'Installati sul server',
|
||||
'admin.addons.ai.parsing.refresh': 'Aggiorna',
|
||||
'admin.addons.ai.parsing.noModels': 'Nessun modello installato. Scaricane uno qui sotto.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Scarica un modello consigliato',
|
||||
'admin.addons.ai.parsing.pull': 'Scarica',
|
||||
'admin.addons.ai.parsing.pulling': 'Download in corso…',
|
||||
'admin.addons.ai.parsing.use': 'Usa',
|
||||
'admin.addons.ai.parsing.selected': 'Selezionato',
|
||||
'admin.addons.ai.parsing.pulled': 'Modello scaricato',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Impossibile scaricare il modello',
|
||||
'admin.addons.ai.parsing.unreachable': 'Impossibile raggiungere il server locale',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Spesso non serve',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Ottieni una chiave',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max e Team includono crediti API.',
|
||||
'assistant.connect.hintOpenai': 'Crea una chiave nella dashboard di OpenAI.',
|
||||
'assistant.connect.hintGemini': 'AI Studio ha un livello gratuito con limiti al minuto e al giorno, in cui Google può usare ciò che invii per migliorare i suoi prodotti. Con la fatturazione attiva i limiti sono più alti e questo non vale.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio ha un livello gratuito con limiti al minuto e al giorno, in cui Google può usare ciò che invii per migliorare i suoi prodotti. Con la fatturazione attiva i limiti sono più alti e questo non vale.',
|
||||
'assistant.connect.hintOpenrouter': 'Accedi con OpenRouter, nessuna chiave da copiare.',
|
||||
'assistant.connect.openrouter': 'Collega OpenRouter',
|
||||
'assistant.connect.save': 'Collega',
|
||||
@@ -95,7 +96,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Vai all’ultimo messaggio',
|
||||
'assistant.attach.button': 'Allega una prenotazione',
|
||||
'assistant.attach.drop': 'Rilascialo qui e leggo la prenotazione',
|
||||
'assistant.attach.unsupported': 'Non riesco a leggere questo tipo di file. Prova con un PDF, un’e-mail, un’immagine o un pass Wallet.',
|
||||
'assistant.attach.unsupported':
|
||||
'Non riesco a leggere questo tipo di file. Prova con un PDF, un’e-mail, un’immagine o un pass Wallet.',
|
||||
'assistant.attach.tooLarge': 'Questo file supera i 10 MB.',
|
||||
'assistant.composer.placeholder': 'Chiedi qualsiasi cosa su {trip}',
|
||||
'assistant.composer.send': 'Invia',
|
||||
@@ -342,5 +344,63 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Condiviso',
|
||||
'assistant.share.failed': 'Condivisione non riuscita. Riprova tra un attimo.',
|
||||
'assistant.share.chatOff': 'La chat del viaggio è disattivata.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
"La tua connessione IA: l'assistente la usa e legge le prenotazioni che importi.",
|
||||
'assistant.connect.descriptionParsingOnly': 'La tua connessione IA: legge le prenotazioni che importi.',
|
||||
'assistant.error.emptyAnswer': "L'assistente non ha dato alcuna risposta. Riprovo?",
|
||||
'assistant.followUp.title': 'Continua con',
|
||||
'assistant.followUp.cheaper': 'Solo più economici',
|
||||
'assistant.followUp.closer': "Più vicino all'alloggio",
|
||||
'assistant.followUp.openNow': 'Cosa è aperto adesso?',
|
||||
'assistant.followUp.nextDay': 'Pianifica il giorno dopo allo stesso modo',
|
||||
'assistant.followUp.relaxed': 'Rendi il piano più rilassato',
|
||||
'assistant.followUp.dinners': 'Aggiungi ristoranti per le serate',
|
||||
'assistant.followUp.rain': 'E se piove?',
|
||||
'assistant.followUp.sun': "Cosa conviene all'aperto con il bel tempo?",
|
||||
'assistant.followUp.more': 'Dimmi di più',
|
||||
'assistant.followUp.next': 'Cosa suggerisci adesso?',
|
||||
'assistant.menu.alternative': "Trova un'alternativa",
|
||||
'assistant.menu.alternativeAsk':
|
||||
'Trova una buona alternativa a {place} nelle vicinanze e spiega perché è più adatta.',
|
||||
'assistant.menu.foodNearby': 'Ristorante vicino',
|
||||
'assistant.menu.foodNearbyAsk': 'Suggerisci qualche buon posto dove mangiare vicino a {place}.',
|
||||
'assistant.menu.planDay': 'Pianifica questo giorno',
|
||||
'assistant.menu.planDayAsk': 'Pianifica questo giorno per me: luoghi, orari e un posto dove mangiare.',
|
||||
'assistant.menu.rainPlan': 'Piano pioggia',
|
||||
'assistant.menu.rainPlanAsk':
|
||||
'Cosa possiamo fare questo giorno se piove? Suggerisci alternative al coperto nelle vicinanze.',
|
||||
'assistant.preview.title': "Proposte dell'assistente",
|
||||
'assistant.preview.suggested': 'Proposta',
|
||||
'assistant.preview.movedHere': 'Arriva qui',
|
||||
'assistant.preview.removed': 'Viene tolto',
|
||||
'assistant.preview.movedAway': 'Viene spostato',
|
||||
'assistant.check.ok': "Rientra nell'orario",
|
||||
'assistant.week.title': 'I giorni di questo piano',
|
||||
'assistant.week.day': 'Giorno',
|
||||
'assistant.memory.title': 'Promemoria',
|
||||
'assistant.memory.edit': 'Modifica il promemoria',
|
||||
'assistant.memory.sub': "L'assistente ne tiene conto in ogni proposta per questo viaggio.",
|
||||
'assistant.memory.quick': 'Desideri frequenti',
|
||||
'assistant.memory.notes': 'Le tue note',
|
||||
'assistant.memory.placeholder':
|
||||
'Per esempio: viaggiamo con un bimbo piccolo, amiamo lo street food, niente sveglie presto.',
|
||||
'assistant.memory.saved': 'Promemoria salvato',
|
||||
'assistant.memory.quick.vegetarian': 'Mangiamo vegetariano',
|
||||
'assistant.memory.quick.kids': 'Viaggiamo con bambini',
|
||||
'assistant.memory.quick.budget': 'Con budget ridotto',
|
||||
'assistant.memory.quick.slow': 'Ritmo tranquillo, senza fretta',
|
||||
'assistant.memory.quick.accessible': 'Accesso senza gradini, per favore',
|
||||
'assistant.memory.quick.noMuseums': 'Pochi musei',
|
||||
'assistant.settings.costEstimates': 'Stima dei costi',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Con un ristorante o un biglietto propone una spesa stimata per il budget, come scheda da confermare.',
|
||||
'assistant.change.timeline.tight': 'Mancano {count} min',
|
||||
'assistant.change.timeline.tight.one': 'Manca {count} min',
|
||||
'assistant.check.issues': '{count} punti da controllare',
|
||||
'assistant.check.issues.one': '{count} punto da controllare',
|
||||
'assistant.week.changes': '{count} modifiche',
|
||||
'assistant.week.changes.one': '{count} modifica',
|
||||
'assistant.week.showAll': 'Mostra tutte le {count} modifiche',
|
||||
'assistant.week.showAll.one': 'Mostra {count} modifica',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -917,5 +917,31 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'カテゴリーを削除',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'カテゴリー「{name}」を、すべての項目ごと削除しますか?',
|
||||
'admin.rotateJwt.button': '更新',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description':
|
||||
'アシスタントと予約の取り込みに使う接続を一つに。MCP を使うと他の AI アプリから TREK を使えます。',
|
||||
'admin.addons.ai.setup': 'AI を設定',
|
||||
'admin.addons.ai.dialogSub': 'アシスタントと AI 解析が共有する接続と、それぞれに許可すること。',
|
||||
'admin.addons.ai.tab.connection': '接続',
|
||||
'admin.addons.ai.parsing.readsWith': '予約の読み取りに使う接続',
|
||||
'admin.addons.ai.parsing.own': '専用の接続',
|
||||
'admin.addons.ai.parsing.ownHint': '共有の接続の代わりに使われます。',
|
||||
'admin.addons.ai.parsing.useShared': '共有の接続を使う',
|
||||
'admin.addons.ai.parsing.sharedTag': '共有',
|
||||
'admin.addons.ai.parsing.perUser': '各ユーザーが自分の設定にある接続で読み取ります。',
|
||||
'admin.addons.ai.parsing.none': 'まだ接続がありません。全員用に設定するか、AI 解析専用の接続を設定してください。',
|
||||
'admin.addons.ai.parsing.setupOwn': '別の接続を使う',
|
||||
'admin.addons.ai.parsing.installed': 'サーバーにインストール済み',
|
||||
'admin.addons.ai.parsing.refresh': '更新',
|
||||
'admin.addons.ai.parsing.noModels': 'まだモデルがありません。下から取得してください。',
|
||||
'admin.addons.ai.parsing.pullTitle': 'おすすめのモデルを取得',
|
||||
'admin.addons.ai.parsing.pull': '取得',
|
||||
'admin.addons.ai.parsing.pulling': '取得中…',
|
||||
'admin.addons.ai.parsing.use': '使う',
|
||||
'admin.addons.ai.parsing.selected': '選択中',
|
||||
'admin.addons.ai.parsing.pulled': 'モデルを取得しました',
|
||||
'admin.addons.ai.parsing.pullFailed': 'モデルを取得できませんでした',
|
||||
'admin.addons.ai.parsing.unreachable': 'ローカルサーバーに接続できません',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': '通常は不要',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'キーを取得',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max と Team には API クレジットが含まれています。',
|
||||
'assistant.connect.hintOpenai': 'OpenAI のダッシュボードでキーを作成してください。',
|
||||
'assistant.connect.hintGemini': 'AI Studio には 1 分あたりと 1 日あたりの制限がある無料枠があり、そこでは送信内容が Google の製品改善に使われることがあります。課金を有効にすると制限が上がり、この扱いはなくなります。',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio には 1 分あたりと 1 日あたりの制限がある無料枠があり、そこでは送信内容が Google の製品改善に使われることがあります。課金を有効にすると制限が上がり、この扱いはなくなります。',
|
||||
'assistant.connect.hintOpenrouter': 'OpenRouter でサインインするだけで、キーのコピーは不要です。',
|
||||
'assistant.connect.openrouter': 'OpenRouter に接続',
|
||||
'assistant.connect.save': '接続',
|
||||
@@ -91,7 +92,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': '最新のメッセージへ移動',
|
||||
'assistant.attach.button': '予約を添付',
|
||||
'assistant.attach.drop': 'ここにドロップすると予約を読み取ります',
|
||||
'assistant.attach.unsupported': 'このファイル形式は読み取れません。PDF、メール、画像、ウォレットパスをお試しください。',
|
||||
'assistant.attach.unsupported':
|
||||
'このファイル形式は読み取れません。PDF、メール、画像、ウォレットパスをお試しください。',
|
||||
'assistant.attach.tooLarge': 'このファイルは 10 MB を超えています。',
|
||||
'assistant.composer.placeholder': '{trip} について何でも質問',
|
||||
'assistant.composer.send': '送信',
|
||||
@@ -316,5 +318,55 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': '共有済み',
|
||||
'assistant.share.failed': '共有できませんでした。少ししてからもう一度お試しください。',
|
||||
'assistant.share.chatOff': '旅行チャットはオフになっています。',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'あなたの AI 接続:アシスタントはこの接続で動き、取り込んだ予約もこの接続で読み取ります。',
|
||||
'assistant.connect.descriptionParsingOnly': 'あなたの AI 接続:取り込んだ予約をこの接続で読み取ります。',
|
||||
'assistant.error.emptyAnswer': 'アシスタントから回答がありませんでした。もう一度試しますか?',
|
||||
'assistant.followUp.title': '次に聞く',
|
||||
'assistant.followUp.cheaper': 'もっと安いものだけ',
|
||||
'assistant.followUp.closer': '宿に近いところ',
|
||||
'assistant.followUp.openNow': '今開いているのは?',
|
||||
'assistant.followUp.nextDay': '次の日も同じように計画して',
|
||||
'assistant.followUp.relaxed': 'もっとゆったりした計画にして',
|
||||
'assistant.followUp.dinners': '夜のレストランを追加して',
|
||||
'assistant.followUp.rain': '雨だったら?',
|
||||
'assistant.followUp.sun': '晴れたら外で何がいい?',
|
||||
'assistant.followUp.more': 'もっと詳しく',
|
||||
'assistant.followUp.next': '次は何がおすすめ?',
|
||||
'assistant.menu.alternative': '代わりを探す',
|
||||
'assistant.menu.alternativeAsk': '{place} の代わりになる近くの良い場所を探して、より合う理由も教えて。',
|
||||
'assistant.menu.foodNearby': '近くのレストラン',
|
||||
'assistant.menu.foodNearbyAsk': '{place} の近くでおすすめの食事処をいくつか教えて。',
|
||||
'assistant.menu.planDay': 'この日を計画',
|
||||
'assistant.menu.planDayAsk': 'この日を計画して:場所、時間、食事の場所。',
|
||||
'assistant.menu.rainPlan': '雨の日プラン',
|
||||
'assistant.menu.rainPlanAsk': 'この日に雨だったら何ができる?近くの屋内の候補を教えて。',
|
||||
'assistant.preview.title': 'アシスタントの提案',
|
||||
'assistant.preview.suggested': '提案',
|
||||
'assistant.preview.movedHere': 'ここへ移動',
|
||||
'assistant.preview.removed': '外れる',
|
||||
'assistant.preview.movedAway': '移動',
|
||||
'assistant.check.ok': '時間内に収まる',
|
||||
'assistant.week.title': 'この計画の日程',
|
||||
'assistant.week.day': '日',
|
||||
'assistant.memory.title': '旅のメモ',
|
||||
'assistant.memory.edit': '旅のメモを編集',
|
||||
'assistant.memory.sub': 'アシスタントはこの旅のすべての提案でこれを考慮します。',
|
||||
'assistant.memory.quick': 'よくある希望',
|
||||
'assistant.memory.notes': 'あなたのメモ',
|
||||
'assistant.memory.placeholder': '例:小さな子ども連れ、屋台料理が好き、早起きはしない。',
|
||||
'assistant.memory.saved': '旅のメモを保存しました',
|
||||
'assistant.memory.quick.vegetarian': 'ベジタリアンです',
|
||||
'assistant.memory.quick.kids': '子ども連れです',
|
||||
'assistant.memory.quick.budget': '予算は控えめ',
|
||||
'assistant.memory.quick.slow': 'ゆったりペースで',
|
||||
'assistant.memory.quick.accessible': '段差のないルートで',
|
||||
'assistant.memory.quick.noMuseums': '美術館・博物館は少なめ',
|
||||
'assistant.settings.costEstimates': '費用を見積もる',
|
||||
'assistant.settings.costEstimatesHint': 'レストランやチケットには、予算用の見積もり支出を確認用カードで提案します。',
|
||||
'assistant.change.timeline.tight': '{count} 分足りません',
|
||||
'assistant.check.issues': '確認事項 {count} 件',
|
||||
'assistant.week.changes': '{count} 件の変更',
|
||||
'assistant.week.showAll': '{count} 件の変更をすべて表示',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -909,5 +909,31 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': '카테고리 삭제',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': '카테고리 "{name}"을(를) 모든 항목과 함께 삭제할까요?',
|
||||
'admin.rotateJwt.button': '교체',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description':
|
||||
'어시스턴트와 예약 가져오기에 쓰는 연결 하나. MCP로 다른 AI 앱에서 TREK을 사용할 수 있습니다.',
|
||||
'admin.addons.ai.setup': 'AI 설정',
|
||||
'admin.addons.ai.dialogSub': '어시스턴트와 AI 분석이 함께 쓰는 연결, 그리고 각각 할 수 있는 일.',
|
||||
'admin.addons.ai.tab.connection': '연결',
|
||||
'admin.addons.ai.parsing.readsWith': '예약을 읽는 연결',
|
||||
'admin.addons.ai.parsing.own': '전용 연결',
|
||||
'admin.addons.ai.parsing.ownHint': '공유 연결 대신 사용됩니다.',
|
||||
'admin.addons.ai.parsing.useShared': '공유 연결 사용',
|
||||
'admin.addons.ai.parsing.sharedTag': '공유',
|
||||
'admin.addons.ai.parsing.perUser': '각 사용자가 자신의 설정에 있는 연결로 읽습니다.',
|
||||
'admin.addons.ai.parsing.none': '아직 연결이 없습니다. 모두를 위한 연결을 설정하거나 AI 분석 전용 연결을 설정하세요.',
|
||||
'admin.addons.ai.parsing.setupOwn': '다른 연결 사용',
|
||||
'admin.addons.ai.parsing.installed': '서버에 설치됨',
|
||||
'admin.addons.ai.parsing.refresh': '새로고침',
|
||||
'admin.addons.ai.parsing.noModels': '아직 설치된 모델이 없습니다. 아래에서 받으세요.',
|
||||
'admin.addons.ai.parsing.pullTitle': '추천 모델 받기',
|
||||
'admin.addons.ai.parsing.pull': '받기',
|
||||
'admin.addons.ai.parsing.pulling': '받는 중…',
|
||||
'admin.addons.ai.parsing.use': '사용',
|
||||
'admin.addons.ai.parsing.selected': '선택됨',
|
||||
'admin.addons.ai.parsing.pulled': '모델을 받았습니다',
|
||||
'admin.addons.ai.parsing.pullFailed': '모델을 받지 못했습니다',
|
||||
'admin.addons.ai.parsing.unreachable': '로컬 서버에 연결할 수 없습니다',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': '보통 필요 없음',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': '키 받기',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max와 Team에는 API 크레딧이 포함되어 있습니다.',
|
||||
'assistant.connect.hintOpenai': 'OpenAI 대시보드에서 키를 만드세요.',
|
||||
'assistant.connect.hintGemini': 'AI Studio에는 분당, 일일 한도가 있는 무료 등급이 있으며, 여기서는 Google이 보낸 내용을 제품 개선에 사용할 수 있습니다. 결제를 켜면 한도가 높아지고 이는 적용되지 않습니다.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio에는 분당, 일일 한도가 있는 무료 등급이 있으며, 여기서는 Google이 보낸 내용을 제품 개선에 사용할 수 있습니다. 결제를 켜면 한도가 높아지고 이는 적용되지 않습니다.',
|
||||
'assistant.connect.hintOpenrouter': 'OpenRouter로 로그인하면 키를 복사할 필요가 없습니다.',
|
||||
'assistant.connect.openrouter': 'OpenRouter 연결',
|
||||
'assistant.connect.save': '연결',
|
||||
@@ -314,5 +315,55 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': '공유됨',
|
||||
'assistant.share.failed': '공유하지 못했습니다. 잠시 후 다시 시도하세요.',
|
||||
'assistant.share.chatOff': '여행 채팅이 꺼져 있습니다.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'내 AI 연결: 어시스턴트가 이 연결로 동작하고, 가져온 예약도 이 연결로 읽습니다.',
|
||||
'assistant.connect.descriptionParsingOnly': '내 AI 연결: 가져온 예약을 이 연결로 읽습니다.',
|
||||
'assistant.error.emptyAnswer': '어시스턴트가 답을 주지 않았습니다. 다시 시도할까요?',
|
||||
'assistant.followUp.title': '이어서 묻기',
|
||||
'assistant.followUp.cheaper': '더 저렴한 곳만',
|
||||
'assistant.followUp.closer': '숙소에서 더 가까운 곳',
|
||||
'assistant.followUp.openNow': '지금 열려 있는 곳은?',
|
||||
'assistant.followUp.nextDay': '다음 날도 같은 방식으로 계획해 줘',
|
||||
'assistant.followUp.relaxed': '일정을 더 여유롭게 해 줘',
|
||||
'assistant.followUp.dinners': '저녁마다 식당을 추가해 줘',
|
||||
'assistant.followUp.rain': '비가 오면?',
|
||||
'assistant.followUp.sun': '날씨가 좋으면 밖에서 뭘 하면 좋을까?',
|
||||
'assistant.followUp.more': '더 알려 줘',
|
||||
'assistant.followUp.next': '다음엔 뭘 추천해?',
|
||||
'assistant.menu.alternative': '대안 찾기',
|
||||
'assistant.menu.alternativeAsk': '{place} 근처에서 좋은 대안을 찾고 왜 더 잘 맞는지 알려 줘.',
|
||||
'assistant.menu.foodNearby': '근처 식당',
|
||||
'assistant.menu.foodNearbyAsk': '{place} 근처에서 식사하기 좋은 곳을 몇 군데 추천해 줘.',
|
||||
'assistant.menu.planDay': '이날 계획하기',
|
||||
'assistant.menu.planDayAsk': '이날을 계획해 줘: 장소, 시간, 식사할 곳.',
|
||||
'assistant.menu.rainPlan': '비 오는 날 계획',
|
||||
'assistant.menu.rainPlanAsk': '이날 비가 오면 뭘 할 수 있을까? 근처 실내 대안을 추천해 줘.',
|
||||
'assistant.preview.title': '어시스턴트의 제안',
|
||||
'assistant.preview.suggested': '제안',
|
||||
'assistant.preview.movedHere': '여기로 옴',
|
||||
'assistant.preview.removed': '빠짐',
|
||||
'assistant.preview.movedAway': '이동됨',
|
||||
'assistant.check.ok': '시간이 맞음',
|
||||
'assistant.week.title': '이 계획의 날짜',
|
||||
'assistant.week.day': '일',
|
||||
'assistant.memory.title': '여행 메모',
|
||||
'assistant.memory.edit': '여행 메모 편집',
|
||||
'assistant.memory.sub': '어시스턴트가 이 여행의 모든 제안에서 이를 반영합니다.',
|
||||
'assistant.memory.quick': '자주 찾는 요청',
|
||||
'assistant.memory.notes': '내 메모',
|
||||
'assistant.memory.placeholder': '예: 어린아이와 함께 여행, 길거리 음식을 좋아함, 일찍 일어나지 않기.',
|
||||
'assistant.memory.saved': '여행 메모를 저장했습니다',
|
||||
'assistant.memory.quick.vegetarian': '채식을 합니다',
|
||||
'assistant.memory.quick.kids': '아이와 함께 여행합니다',
|
||||
'assistant.memory.quick.budget': '예산이 넉넉하지 않음',
|
||||
'assistant.memory.quick.slow': '여유로운 속도, 서두르지 않기',
|
||||
'assistant.memory.quick.accessible': '계단 없는 동선으로',
|
||||
'assistant.memory.quick.noMuseums': '박물관은 적게',
|
||||
'assistant.settings.costEstimates': '비용 추정',
|
||||
'assistant.settings.costEstimatesHint': '식당이나 입장권에는 예산용 예상 지출을 확인용 카드로 제안합니다.',
|
||||
'assistant.change.timeline.tight': '{count}분 부족',
|
||||
'assistant.check.issues': '확인할 점 {count}개',
|
||||
'assistant.week.changes': '변경 {count}개',
|
||||
'assistant.week.showAll': '변경 {count}개 모두 보기',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -977,5 +977,32 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Categorie verwijderen',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Categorie "{name}" en alle items erin verwijderen?',
|
||||
'admin.rotateJwt.button': 'Vernieuwen',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description':
|
||||
'Eén verbinding voor de assistent en het inlezen van boekingen. Met MCP kunnen andere AI-apps TREK gebruiken.',
|
||||
'admin.addons.ai.setup': 'AI instellen',
|
||||
'admin.addons.ai.dialogSub': 'De verbinding die de assistent en AI-verwerking delen, en wat elk ervan mag.',
|
||||
'admin.addons.ai.tab.connection': 'Verbinding',
|
||||
'admin.addons.ai.parsing.readsWith': 'Leest boekingen met',
|
||||
'admin.addons.ai.parsing.own': 'Eigen verbinding',
|
||||
'admin.addons.ai.parsing.ownHint': 'Wordt gebruikt in plaats van de gedeelde verbinding.',
|
||||
'admin.addons.ai.parsing.useShared': 'Gedeelde verbinding gebruiken',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Gedeeld',
|
||||
'admin.addons.ai.parsing.perUser': 'Iedereen leest met de eigen verbinding uit de eigen instellingen.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'Nog geen verbinding. Stel er een in voor iedereen, of geef AI-verwerking een eigen verbinding.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Een andere gebruiken',
|
||||
'admin.addons.ai.parsing.installed': 'Geïnstalleerd op de server',
|
||||
'admin.addons.ai.parsing.refresh': 'Vernieuwen',
|
||||
'admin.addons.ai.parsing.noModels': 'Nog geen modellen geïnstalleerd. Haal er hieronder een op.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Een aanbevolen model ophalen',
|
||||
'admin.addons.ai.parsing.pull': 'Ophalen',
|
||||
'admin.addons.ai.parsing.pulling': 'Ophalen…',
|
||||
'admin.addons.ai.parsing.use': 'Gebruiken',
|
||||
'admin.addons.ai.parsing.selected': 'Geselecteerd',
|
||||
'admin.addons.ai.parsing.pulled': 'Model opgehaald',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Model kon niet worden opgehaald',
|
||||
'admin.addons.ai.parsing.unreachable': 'De lokale server is niet bereikbaar',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Meestal niet nodig',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Sleutel aanvragen',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max en Team bevatten API-tegoed.',
|
||||
'assistant.connect.hintOpenai': 'Maak een sleutel aan in je OpenAI-dashboard.',
|
||||
'assistant.connect.hintGemini': 'AI Studio heeft een gratis niveau met limieten per minuut en per dag, waarin Google wat je stuurt mag gebruiken om zijn producten te verbeteren. Met facturering ingeschakeld zijn de limieten hoger en geldt dat niet.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio heeft een gratis niveau met limieten per minuut en per dag, waarin Google wat je stuurt mag gebruiken om zijn producten te verbeteren. Met facturering ingeschakeld zijn de limieten hoger en geldt dat niet.',
|
||||
'assistant.connect.hintOpenrouter': 'Log in met OpenRouter, geen sleutel om te kopiëren.',
|
||||
'assistant.connect.openrouter': 'OpenRouter koppelen',
|
||||
'assistant.connect.save': 'Koppelen',
|
||||
@@ -93,7 +94,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Naar het nieuwste bericht',
|
||||
'assistant.attach.button': 'Boeking bijvoegen',
|
||||
'assistant.attach.drop': 'Laat hier los, dan lees ik de boeking',
|
||||
'assistant.attach.unsupported': 'Dit bestandstype kan ik niet lezen. Probeer een pdf, e-mail, afbeelding of wallet-pas.',
|
||||
'assistant.attach.unsupported':
|
||||
'Dit bestandstype kan ik niet lezen. Probeer een pdf, e-mail, afbeelding of wallet-pas.',
|
||||
'assistant.attach.tooLarge': 'Dit bestand is groter dan 10 MB.',
|
||||
'assistant.composer.placeholder': 'Vraag alles over {trip}',
|
||||
'assistant.composer.send': 'Versturen',
|
||||
@@ -339,5 +341,61 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Gedeeld',
|
||||
'assistant.share.failed': 'Delen is niet gelukt. Probeer het zo nog eens.',
|
||||
'assistant.share.chatOff': 'De reischat staat uit.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Je AI-verbinding: de assistent draait erop en ze leest de boekingen die je importeert.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Je AI-verbinding: ze leest de boekingen die je importeert.',
|
||||
'assistant.error.emptyAnswer': 'De assistent kwam terug zonder antwoord. Zal ik het opnieuw proberen?',
|
||||
'assistant.followUp.title': 'Verder met',
|
||||
'assistant.followUp.cheaper': 'Alleen goedkopere',
|
||||
'assistant.followUp.closer': 'Dichter bij mijn verblijf',
|
||||
'assistant.followUp.openNow': 'Wat is nu open?',
|
||||
'assistant.followUp.nextDay': 'Plan de volgende dag op dezelfde manier',
|
||||
'assistant.followUp.relaxed': 'Maak het plan rustiger',
|
||||
'assistant.followUp.dinners': 'Voeg restaurants voor de avonden toe',
|
||||
'assistant.followUp.rain': 'Wat als het regent?',
|
||||
'assistant.followUp.sun': 'Wat is buiten de moeite waard bij mooi weer?',
|
||||
'assistant.followUp.more': 'Vertel me meer',
|
||||
'assistant.followUp.next': 'Wat stel je nu voor?',
|
||||
'assistant.menu.alternative': 'Alternatief zoeken',
|
||||
'assistant.menu.alternativeAsk': 'Zoek een goed alternatief voor {place} in de buurt en zeg waarom het beter past.',
|
||||
'assistant.menu.foodNearby': 'Restaurant in de buurt',
|
||||
'assistant.menu.foodNearbyAsk': 'Stel een paar goede plekken voor om te eten bij {place}.',
|
||||
'assistant.menu.planDay': 'Deze dag plannen',
|
||||
'assistant.menu.planDayAsk': 'Plan deze dag voor me: plekken, tijden en een plek om te eten.',
|
||||
'assistant.menu.rainPlan': 'Regenplan',
|
||||
'assistant.menu.rainPlanAsk':
|
||||
'Wat kunnen we deze dag doen als het regent? Stel binnenalternatieven in de buurt voor.',
|
||||
'assistant.preview.title': 'Voorstellen van de assistent',
|
||||
'assistant.preview.suggested': 'Voorstel',
|
||||
'assistant.preview.movedHere': 'Komt hier',
|
||||
'assistant.preview.removed': 'Valt weg',
|
||||
'assistant.preview.movedAway': 'Wordt verplaatst',
|
||||
'assistant.check.ok': 'Past in de tijd',
|
||||
'assistant.week.title': 'De dagen van dit plan',
|
||||
'assistant.week.day': 'Dag',
|
||||
'assistant.memory.title': 'Reisnotities',
|
||||
'assistant.memory.edit': 'Reisnotities bewerken',
|
||||
'assistant.memory.sub': 'De assistent houdt hier bij elk voorstel voor deze reis rekening mee.',
|
||||
'assistant.memory.quick': 'Veelgevraagde wensen',
|
||||
'assistant.memory.notes': 'Je notities',
|
||||
'assistant.memory.placeholder': 'Bijvoorbeeld: we reizen met een peuter, houden van streetfood, niet vroeg op.',
|
||||
'assistant.memory.saved': 'Reisnotities opgeslagen',
|
||||
'assistant.memory.quick.vegetarian': 'We eten vegetarisch',
|
||||
'assistant.memory.quick.kids': 'We reizen met kinderen',
|
||||
'assistant.memory.quick.budget': 'Met een klein budget',
|
||||
'assistant.memory.quick.slow': 'Rustig tempo, geen haast',
|
||||
'assistant.memory.quick.accessible': 'Graag drempelvrij',
|
||||
'assistant.memory.quick.noMuseums': 'Weinig musea',
|
||||
'assistant.settings.costEstimates': 'Kosten schatten',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Bij een restaurant of ticket stelt hij een geschatte uitgave voor het budget voor, als kaart die je bevestigt.',
|
||||
'assistant.change.timeline.tight': '{count} min te krap',
|
||||
'assistant.change.timeline.tight.one': '{count} min te krap',
|
||||
'assistant.check.issues': '{count} aandachtspunten',
|
||||
'assistant.check.issues.one': '{count} aandachtspunt',
|
||||
'assistant.week.changes': '{count} wijzigingen',
|
||||
'assistant.week.changes.one': '{count} wijziging',
|
||||
'assistant.week.showAll': 'Alle {count} wijzigingen tonen',
|
||||
'assistant.week.showAll.one': '{count} wijziging tonen',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -1023,5 +1023,31 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Usuń kategorię',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Usunąć kategorię "{name}" wraz ze wszystkimi jej pozycjami?',
|
||||
'admin.rotateJwt.button': 'Odnów',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description':
|
||||
'Jedno połączenie dla asystenta i importu rezerwacji. MCP pozwala innym aplikacjom AI korzystać z TREK.',
|
||||
'admin.addons.ai.setup': 'Skonfiguruj AI',
|
||||
'admin.addons.ai.dialogSub': 'Połączenie wspólne dla asystenta i analizy AI oraz to, co każde z nich może robić.',
|
||||
'admin.addons.ai.tab.connection': 'Połączenie',
|
||||
'admin.addons.ai.parsing.readsWith': 'Czyta rezerwacje za pomocą',
|
||||
'admin.addons.ai.parsing.own': 'Własne połączenie',
|
||||
'admin.addons.ai.parsing.ownHint': 'Używane zamiast wspólnego połączenia.',
|
||||
'admin.addons.ai.parsing.useShared': 'Użyj wspólnego połączenia',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Wspólne',
|
||||
'admin.addons.ai.parsing.perUser': 'Każda osoba czyta za pomocą własnego połączenia z ustawień.',
|
||||
'admin.addons.ai.parsing.none': 'Brak połączenia. Skonfiguruj jedno dla wszystkich albo daj analizie AI własne.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Użyj innego',
|
||||
'admin.addons.ai.parsing.installed': 'Zainstalowane na serwerze',
|
||||
'admin.addons.ai.parsing.refresh': 'Odśwież',
|
||||
'admin.addons.ai.parsing.noModels': 'Brak zainstalowanych modeli. Pobierz jeden poniżej.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Pobierz zalecany model',
|
||||
'admin.addons.ai.parsing.pull': 'Pobierz',
|
||||
'admin.addons.ai.parsing.pulling': 'Pobieranie…',
|
||||
'admin.addons.ai.parsing.use': 'Użyj',
|
||||
'admin.addons.ai.parsing.selected': 'Wybrany',
|
||||
'admin.addons.ai.parsing.pulled': 'Model pobrany',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Nie udało się pobrać modelu',
|
||||
'admin.addons.ai.parsing.unreachable': 'Nie można połączyć się z lokalnym serwerem',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Zwykle niepotrzebny',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Uzyskaj klucz',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max i Team zawierają środki na API.',
|
||||
'assistant.connect.hintOpenai': 'Utwórz klucz w panelu OpenAI.',
|
||||
'assistant.connect.hintGemini': 'AI Studio ma darmowy poziom z limitami na minutę i na dzień, w którym Google może używać tego, co wysyłasz, do ulepszania swoich produktów. Po włączeniu rozliczeń limity są wyższe i to nie obowiązuje.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio ma darmowy poziom z limitami na minutę i na dzień, w którym Google może używać tego, co wysyłasz, do ulepszania swoich produktów. Po włączeniu rozliczeń limity są wyższe i to nie obowiązuje.',
|
||||
'assistant.connect.hintOpenrouter': 'Zaloguj się przez OpenRouter, bez kopiowania klucza.',
|
||||
'assistant.connect.openrouter': 'Połącz OpenRouter',
|
||||
'assistant.connect.save': 'Połącz',
|
||||
@@ -380,5 +381,69 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Udostępniono',
|
||||
'assistant.share.failed': 'Nie udało się udostępnić. Spróbuj ponownie za chwilę.',
|
||||
'assistant.share.chatOff': 'Czat podróży jest wyłączony.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Twoje połączenie AI: działa na nim asystent i czyta ono importowane rezerwacje.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Twoje połączenie AI: czyta importowane rezerwacje.',
|
||||
'assistant.error.emptyAnswer': 'Asystent wrócił bez odpowiedzi. Spróbować ponownie?',
|
||||
'assistant.followUp.title': 'Dalej',
|
||||
'assistant.followUp.cheaper': 'Tylko tańsze',
|
||||
'assistant.followUp.closer': 'Bliżej mojego noclegu',
|
||||
'assistant.followUp.openNow': 'Co jest teraz otwarte?',
|
||||
'assistant.followUp.nextDay': 'Zaplanuj następny dzień tak samo',
|
||||
'assistant.followUp.relaxed': 'Zrób plan luźniejszym',
|
||||
'assistant.followUp.dinners': 'Dodaj restauracje na wieczory',
|
||||
'assistant.followUp.rain': 'A jeśli będzie padać?',
|
||||
'assistant.followUp.sun': 'Co warto robić na zewnątrz przy ładnej pogodzie?',
|
||||
'assistant.followUp.more': 'Powiedz więcej',
|
||||
'assistant.followUp.next': 'Co proponujesz teraz?',
|
||||
'assistant.menu.alternative': 'Znajdź alternatywę',
|
||||
'assistant.menu.alternativeAsk': 'Znajdź dobrą alternatywę dla {place} w pobliżu i powiedz, dlaczego pasuje lepiej.',
|
||||
'assistant.menu.foodNearby': 'Restauracja w pobliżu',
|
||||
'assistant.menu.foodNearbyAsk': 'Zaproponuj kilka dobrych miejsc do jedzenia w pobliżu {place}.',
|
||||
'assistant.menu.planDay': 'Zaplanuj ten dzień',
|
||||
'assistant.menu.planDayAsk': 'Zaplanuj mi ten dzień: miejsca, godziny i gdzie zjeść.',
|
||||
'assistant.menu.rainPlan': 'Plan na deszcz',
|
||||
'assistant.menu.rainPlanAsk':
|
||||
'Co możemy robić tego dnia, jeśli będzie padać? Zaproponuj alternatywy pod dachem w pobliżu.',
|
||||
'assistant.preview.title': 'Propozycje asystenta',
|
||||
'assistant.preview.suggested': 'Propozycja',
|
||||
'assistant.preview.movedHere': 'Trafia tutaj',
|
||||
'assistant.preview.removed': 'Odpada',
|
||||
'assistant.preview.movedAway': 'Zostaje przeniesione',
|
||||
'assistant.check.ok': 'Mieści się w czasie',
|
||||
'assistant.week.title': 'Dni tego planu',
|
||||
'assistant.week.day': 'Dzień',
|
||||
'assistant.memory.title': 'Notatki podróży',
|
||||
'assistant.memory.edit': 'Edytuj notatki podróży',
|
||||
'assistant.memory.sub': 'Asystent uwzględnia je w każdej propozycji dla tej podróży.',
|
||||
'assistant.memory.quick': 'Częste życzenia',
|
||||
'assistant.memory.notes': 'Twoje notatki',
|
||||
'assistant.memory.placeholder': 'Na przykład: podróżujemy z maluchem, kochamy street food, bez wczesnego wstawania.',
|
||||
'assistant.memory.saved': 'Notatki zapisane',
|
||||
'assistant.memory.quick.vegetarian': 'Jemy wegetariańsko',
|
||||
'assistant.memory.quick.kids': 'Podróżujemy z dziećmi',
|
||||
'assistant.memory.quick.budget': 'Z małym budżetem',
|
||||
'assistant.memory.quick.slow': 'Spokojne tempo, bez pośpiechu',
|
||||
'assistant.memory.quick.accessible': 'Proszę bez schodów',
|
||||
'assistant.memory.quick.noMuseums': 'Mało muzeów',
|
||||
'assistant.settings.costEstimates': 'Szacuj koszty',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Przy restauracji lub bilecie proponuje szacowany wydatek do budżetu jako kartę do potwierdzenia.',
|
||||
'assistant.change.timeline.tight': 'Brakuje {count} min',
|
||||
'assistant.change.timeline.tight.one': 'Brakuje {count} min',
|
||||
'assistant.change.timeline.tight.few': 'Brakuje {count} min',
|
||||
'assistant.change.timeline.tight.many': 'Brakuje {count} min',
|
||||
'assistant.check.issues': '{count} punktu do sprawdzenia',
|
||||
'assistant.check.issues.one': '{count} punkt do sprawdzenia',
|
||||
'assistant.check.issues.few': '{count} punkty do sprawdzenia',
|
||||
'assistant.check.issues.many': '{count} punktów do sprawdzenia',
|
||||
'assistant.week.changes': '{count} zmiany',
|
||||
'assistant.week.changes.one': '{count} zmiana',
|
||||
'assistant.week.changes.few': '{count} zmiany',
|
||||
'assistant.week.changes.many': '{count} zmian',
|
||||
'assistant.week.showAll': 'Pokaż wszystkie {count} zmiany',
|
||||
'assistant.week.showAll.one': 'Pokaż {count} zmianę',
|
||||
'assistant.week.showAll.few': 'Pokaż wszystkie {count} zmiany',
|
||||
'assistant.week.showAll.many': 'Pokaż wszystkie {count} zmian',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -1014,5 +1014,31 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Удалить категорию',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Удалить категорию "{name}" и все её пункты?',
|
||||
'admin.rotateJwt.button': 'Обновить',
|
||||
'admin.addons.ai.name': 'ИИ',
|
||||
'admin.addons.ai.description':
|
||||
'Одно подключение для ассистента и импорта бронирований. MCP позволяет другим ИИ-приложениям работать с TREK.',
|
||||
'admin.addons.ai.setup': 'Настроить ИИ',
|
||||
'admin.addons.ai.dialogSub': 'Подключение, общее для ассистента и ИИ-разбора, и что может каждый из них.',
|
||||
'admin.addons.ai.tab.connection': 'Подключение',
|
||||
'admin.addons.ai.parsing.readsWith': 'Читает бронирования через',
|
||||
'admin.addons.ai.parsing.own': 'Собственное подключение',
|
||||
'admin.addons.ai.parsing.ownHint': 'Используется вместо общего подключения.',
|
||||
'admin.addons.ai.parsing.useShared': 'Использовать общее подключение',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Общее',
|
||||
'admin.addons.ai.parsing.perUser': 'Каждый читает через своё подключение из своих настроек.',
|
||||
'admin.addons.ai.parsing.none': 'Подключения пока нет. Настройте одно для всех или дайте ИИ-разбору собственное.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Использовать другое',
|
||||
'admin.addons.ai.parsing.installed': 'Установлены на сервере',
|
||||
'admin.addons.ai.parsing.refresh': 'Обновить',
|
||||
'admin.addons.ai.parsing.noModels': 'Моделей пока нет. Загрузите одну ниже.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Загрузить рекомендуемую модель',
|
||||
'admin.addons.ai.parsing.pull': 'Загрузить',
|
||||
'admin.addons.ai.parsing.pulling': 'Загрузка…',
|
||||
'admin.addons.ai.parsing.use': 'Использовать',
|
||||
'admin.addons.ai.parsing.selected': 'Выбрано',
|
||||
'admin.addons.ai.parsing.pulled': 'Модель загружена',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Не удалось загрузить модель',
|
||||
'admin.addons.ai.parsing.unreachable': 'Локальный сервер недоступен',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Обычно не нужен',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Получить ключ',
|
||||
'assistant.connect.hintAnthropic': 'В Claude Max и Team входят кредиты API.',
|
||||
'assistant.connect.hintOpenai': 'Создайте ключ в панели управления OpenAI.',
|
||||
'assistant.connect.hintGemini': 'В AI Studio есть бесплатный уровень с лимитами в минуту и в день, на котором Google может использовать то, что ты отправляешь, для улучшения своих продуктов. С включённой оплатой лимиты выше, и это не действует.',
|
||||
'assistant.connect.hintGemini':
|
||||
'В AI Studio есть бесплатный уровень с лимитами в минуту и в день, на котором Google может использовать то, что ты отправляешь, для улучшения своих продуктов. С включённой оплатой лимиты выше, и это не действует.',
|
||||
'assistant.connect.hintOpenrouter': 'Войдите через OpenRouter, копировать ключ не нужно.',
|
||||
'assistant.connect.openrouter': 'Подключить OpenRouter',
|
||||
'assistant.connect.save': 'Подключить',
|
||||
@@ -379,5 +380,70 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Отправлено',
|
||||
'assistant.share.failed': 'Не удалось поделиться. Попробуйте ещё раз чуть позже.',
|
||||
'assistant.share.chatOff': 'Чат поездки выключен.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Ваше ИИ-подключение: на нём работает ассистент, и оно читает импортированные бронирования.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Ваше ИИ-подключение: оно читает импортированные бронирования.',
|
||||
'assistant.error.emptyAnswer': 'Ассистент вернулся без ответа. Попробовать ещё раз?',
|
||||
'assistant.followUp.title': 'Дальше',
|
||||
'assistant.followUp.cheaper': 'Только дешевле',
|
||||
'assistant.followUp.closer': 'Ближе к моему жилью',
|
||||
'assistant.followUp.openNow': 'Что сейчас открыто?',
|
||||
'assistant.followUp.nextDay': 'Спланируй следующий день так же',
|
||||
'assistant.followUp.relaxed': 'Сделай план спокойнее',
|
||||
'assistant.followUp.dinners': 'Добавь рестораны на вечера',
|
||||
'assistant.followUp.rain': 'А если будет дождь?',
|
||||
'assistant.followUp.sun': 'Что стоит сделать на улице в хорошую погоду?',
|
||||
'assistant.followUp.more': 'Расскажи подробнее',
|
||||
'assistant.followUp.next': 'Что предложишь дальше?',
|
||||
'assistant.menu.alternative': 'Найти альтернативу',
|
||||
'assistant.menu.alternativeAsk':
|
||||
'Найди хорошую альтернативу {place} поблизости и объясни, почему она подходит лучше.',
|
||||
'assistant.menu.foodNearby': 'Ресторан рядом',
|
||||
'assistant.menu.foodNearbyAsk': 'Предложи несколько хороших мест, где поесть рядом с {place}.',
|
||||
'assistant.menu.planDay': 'Спланировать день',
|
||||
'assistant.menu.planDayAsk': 'Спланируй для меня этот день: места, время и где поесть.',
|
||||
'assistant.menu.rainPlan': 'План на дождь',
|
||||
'assistant.menu.rainPlanAsk':
|
||||
'Что можно делать в этот день, если пойдёт дождь? Предложи варианты в помещении поблизости.',
|
||||
'assistant.preview.title': 'Предложения ассистента',
|
||||
'assistant.preview.suggested': 'Предложение',
|
||||
'assistant.preview.movedHere': 'Переносится сюда',
|
||||
'assistant.preview.removed': 'Убирается',
|
||||
'assistant.preview.movedAway': 'Переносится',
|
||||
'assistant.check.ok': 'Укладывается во время',
|
||||
'assistant.week.title': 'Дни этого плана',
|
||||
'assistant.week.day': 'День',
|
||||
'assistant.memory.title': 'Заметки к поездке',
|
||||
'assistant.memory.edit': 'Изменить заметки к поездке',
|
||||
'assistant.memory.sub': 'Ассистент учитывает их в каждом предложении для этой поездки.',
|
||||
'assistant.memory.quick': 'Частые пожелания',
|
||||
'assistant.memory.notes': 'Ваши заметки',
|
||||
'assistant.memory.placeholder': 'Например: едем с малышом, любим уличную еду, без ранних подъёмов.',
|
||||
'assistant.memory.saved': 'Заметки сохранены',
|
||||
'assistant.memory.quick.vegetarian': 'Мы вегетарианцы',
|
||||
'assistant.memory.quick.kids': 'Путешествуем с детьми',
|
||||
'assistant.memory.quick.budget': 'С небольшим бюджетом',
|
||||
'assistant.memory.quick.slow': 'Спокойный темп, без спешки',
|
||||
'assistant.memory.quick.accessible': 'Без ступенек, пожалуйста',
|
||||
'assistant.memory.quick.noMuseums': 'Мало музеев',
|
||||
'assistant.settings.costEstimates': 'Оценивать расходы',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Для ресторана или билета предлагает примерный расход в бюджет, карточкой для подтверждения.',
|
||||
'assistant.change.timeline.tight': 'Не хватает {count} мин',
|
||||
'assistant.change.timeline.tight.one': 'Не хватает {count} мин',
|
||||
'assistant.change.timeline.tight.few': 'Не хватает {count} мин',
|
||||
'assistant.change.timeline.tight.many': 'Не хватает {count} мин',
|
||||
'assistant.check.issues': '{count} пункта на проверку',
|
||||
'assistant.check.issues.one': '{count} пункт на проверку',
|
||||
'assistant.check.issues.few': '{count} пункта на проверку',
|
||||
'assistant.check.issues.many': '{count} пунктов на проверку',
|
||||
'assistant.week.changes': '{count} изменения',
|
||||
'assistant.week.changes.one': '{count} изменение',
|
||||
'assistant.week.changes.few': '{count} изменения',
|
||||
'assistant.week.changes.many': '{count} изменений',
|
||||
'assistant.week.showAll': 'Показать все {count} изменения',
|
||||
'assistant.week.showAll.one': 'Показать {count} изменение',
|
||||
'assistant.week.showAll.few': 'Показать все {count} изменения',
|
||||
'assistant.week.showAll.many': 'Показать все {count} изменений',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -986,5 +986,32 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Odstrániť kategóriu',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Odstrániť kategóriu "{name}" a všetky jej položky?',
|
||||
'admin.rotateJwt.button': 'Obnoviť',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description':
|
||||
'Jedno pripojenie pre asistenta a import rezervácií. MCP umožní iným AI aplikáciám používať TREK.',
|
||||
'admin.addons.ai.setup': 'Nastaviť AI',
|
||||
'admin.addons.ai.dialogSub': 'Pripojenie, ktoré zdieľa asistent a AI spracovanie, a čo smie každý z nich.',
|
||||
'admin.addons.ai.tab.connection': 'Pripojenie',
|
||||
'admin.addons.ai.parsing.readsWith': 'Číta rezervácie pomocou',
|
||||
'admin.addons.ai.parsing.own': 'Vlastné pripojenie',
|
||||
'admin.addons.ai.parsing.ownHint': 'Používa sa namiesto zdieľaného pripojenia.',
|
||||
'admin.addons.ai.parsing.useShared': 'Použiť zdieľané pripojenie',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Zdieľané',
|
||||
'admin.addons.ai.parsing.perUser': 'Každý číta pomocou vlastného pripojenia zo svojich nastavení.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'Zatiaľ žiadne pripojenie. Nastavte jedno pre všetkých alebo dajte AI spracovaniu vlastné.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Použiť iné',
|
||||
'admin.addons.ai.parsing.installed': 'Nainštalované na serveri',
|
||||
'admin.addons.ai.parsing.refresh': 'Obnoviť',
|
||||
'admin.addons.ai.parsing.noModels': 'Zatiaľ nie sú nainštalované žiadne modely. Stiahnite si jeden nižšie.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Stiahnuť odporúčaný model',
|
||||
'admin.addons.ai.parsing.pull': 'Stiahnuť',
|
||||
'admin.addons.ai.parsing.pulling': 'Sťahovanie…',
|
||||
'admin.addons.ai.parsing.use': 'Použiť',
|
||||
'admin.addons.ai.parsing.selected': 'Vybrané',
|
||||
'admin.addons.ai.parsing.pulled': 'Model stiahnutý',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Model sa nepodarilo stiahnuť',
|
||||
'admin.addons.ai.parsing.unreachable': 'Miestny server nie je dostupný',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Väčšinou netreba',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -43,7 +43,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Získať kľúč',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max a Team obsahujú kredity pre API.',
|
||||
'assistant.connect.hintOpenai': 'Vytvor kľúč vo svojom prehľade OpenAI.',
|
||||
'assistant.connect.hintGemini': 'AI Studio má bezplatnú úroveň s limitmi za minútu a za deň, v ktorej môže Google to, čo pošleš, použiť na zlepšenie svojich produktov. So zapnutou fakturáciou sú limity vyššie a to neplatí.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio má bezplatnú úroveň s limitmi za minútu a za deň, v ktorej môže Google to, čo pošleš, použiť na zlepšenie svojich produktov. So zapnutou fakturáciou sú limity vyššie a to neplatí.',
|
||||
'assistant.connect.hintOpenrouter': 'Prihlás sa cez OpenRouter, nič nemusíš kopírovať.',
|
||||
'assistant.connect.openrouter': 'Pripojiť OpenRouter',
|
||||
'assistant.connect.save': 'Pripojiť',
|
||||
@@ -69,7 +70,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.privacy.what': 'Čo sa zdieľa?',
|
||||
'assistant.privacy.banner': 'Tvoje správy a údaje o ceste, ktoré asistent číta, idú do {provider}.',
|
||||
'assistant.privacy.ok': 'Rozumiem',
|
||||
'assistant.privacy.shared': 'Tvoje správy a podrobnosti o ceste, ktoré asistent číta, napríklad miesta, dni a rezervácie.',
|
||||
'assistant.privacy.shared':
|
||||
'Tvoje správy a podrobnosti o ceste, ktoré asistent číta, napríklad miesta, dni a rezervácie.',
|
||||
'assistant.privacy.notShared': 'Nie tvoje heslo, tvoje súbory ani tvoje ďalšie cesty.',
|
||||
'assistant.privacy.provider': '{provider} s tým nakladá podľa vlastných podmienok ochrany súkromia.',
|
||||
'assistant.empty.title': 'Čo plánujeme?',
|
||||
@@ -92,7 +94,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Prejsť na najnovšiu správu',
|
||||
'assistant.attach.button': 'Priložiť rezerváciu',
|
||||
'assistant.attach.drop': 'Pusti to sem a prečítam rezerváciu',
|
||||
'assistant.attach.unsupported': 'Tento typ súboru neviem prečítať. Skús PDF, e-mail, obrázok alebo kartu do peňaženky.',
|
||||
'assistant.attach.unsupported':
|
||||
'Tento typ súboru neviem prečítať. Skús PDF, e-mail, obrázok alebo kartu do peňaženky.',
|
||||
'assistant.attach.tooLarge': 'Tento súbor je väčší ako 10 MB.',
|
||||
'assistant.composer.placeholder': 'Opýtaj sa čokoľvek o {trip}',
|
||||
'assistant.composer.send': 'Odoslať',
|
||||
@@ -356,5 +359,64 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Zdieľané',
|
||||
'assistant.share.failed': 'Zdieľanie sa nepodarilo. Skús to o chvíľu znova.',
|
||||
'assistant.share.chatOff': 'Chat výletu je vypnutý.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Vaše AI pripojenie: beží na ňom asistent a číta rezervácie, ktoré importujete.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Vaše AI pripojenie: číta rezervácie, ktoré importujete.',
|
||||
'assistant.error.emptyAnswer': 'Asistent sa vrátil bez odpovede. Mám to skúsiť znova?',
|
||||
'assistant.followUp.title': 'Ďalej',
|
||||
'assistant.followUp.cheaper': 'Len lacnejšie',
|
||||
'assistant.followUp.closer': 'Bližšie k môjmu ubytovaniu',
|
||||
'assistant.followUp.openNow': 'Čo má teraz otvorené?',
|
||||
'assistant.followUp.nextDay': 'Naplánuj ďalší deň rovnako',
|
||||
'assistant.followUp.relaxed': 'Urob plán voľnejší',
|
||||
'assistant.followUp.dinners': 'Pridaj reštaurácie na večery',
|
||||
'assistant.followUp.rain': 'Čo ak bude pršať?',
|
||||
'assistant.followUp.sun': 'Čo sa oplatí vonku za pekného počasia?',
|
||||
'assistant.followUp.more': 'Povedz mi viac',
|
||||
'assistant.followUp.next': 'Čo navrhuješ teraz?',
|
||||
'assistant.menu.alternative': 'Nájsť alternatívu',
|
||||
'assistant.menu.alternativeAsk': 'Nájdi dobrú alternatívu k {place} v okolí a povedz, prečo sa hodí lepšie.',
|
||||
'assistant.menu.foodNearby': 'Reštaurácia v okolí',
|
||||
'assistant.menu.foodNearbyAsk': 'Navrhni pár dobrých miest na jedlo pri {place}.',
|
||||
'assistant.menu.planDay': 'Naplánovať deň',
|
||||
'assistant.menu.planDayAsk': 'Naplánuj mi tento deň: miesta, časy a kde sa najesť.',
|
||||
'assistant.menu.rainPlan': 'Plán na dážď',
|
||||
'assistant.menu.rainPlanAsk': 'Čo môžeme v tento deň robiť, keď bude pršať? Navrhni vnútorné alternatívy v okolí.',
|
||||
'assistant.preview.title': 'Návrhy asistenta',
|
||||
'assistant.preview.suggested': 'Návrh',
|
||||
'assistant.preview.movedHere': 'Pribudne sem',
|
||||
'assistant.preview.removed': 'Odpadá',
|
||||
'assistant.preview.movedAway': 'Presunie sa',
|
||||
'assistant.check.ok': 'Časovo vychádza',
|
||||
'assistant.week.title': 'Dni tohto plánu',
|
||||
'assistant.week.day': 'Deň',
|
||||
'assistant.memory.title': 'Poznámky k ceste',
|
||||
'assistant.memory.edit': 'Upraviť poznámky k ceste',
|
||||
'assistant.memory.sub': 'Asistent na ne myslí pri každom návrhu pre túto cestu.',
|
||||
'assistant.memory.quick': 'Časté želania',
|
||||
'assistant.memory.notes': 'Tvoje poznámky',
|
||||
'assistant.memory.placeholder': 'Napríklad: cestujeme s batoľaťom, milujeme street food, žiadne skoré vstávanie.',
|
||||
'assistant.memory.saved': 'Poznámky uložené',
|
||||
'assistant.memory.quick.vegetarian': 'Jeme vegetariánsky',
|
||||
'assistant.memory.quick.kids': 'Cestujeme s deťmi',
|
||||
'assistant.memory.quick.budget': 'S malým rozpočtom',
|
||||
'assistant.memory.quick.slow': 'Pokojné tempo, bez náhlenia',
|
||||
'assistant.memory.quick.accessible': 'Prosím bezbariérovo',
|
||||
'assistant.memory.quick.noMuseums': 'Málo múzeí',
|
||||
'assistant.settings.costEstimates': 'Odhadovať náklady',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Pri reštaurácii alebo vstupenke navrhne odhadovaný výdavok do rozpočtu ako kartu na potvrdenie.',
|
||||
'assistant.change.timeline.tight': 'Chýba {count} min',
|
||||
'assistant.change.timeline.tight.one': 'Chýba {count} min',
|
||||
'assistant.change.timeline.tight.few': 'Chýbajú {count} min',
|
||||
'assistant.check.issues': '{count} bodov na kontrolu',
|
||||
'assistant.check.issues.one': '{count} bod na kontrolu',
|
||||
'assistant.check.issues.few': '{count} body na kontrolu',
|
||||
'assistant.week.changes': '{count} zmien',
|
||||
'assistant.week.changes.one': '{count} zmena',
|
||||
'assistant.week.changes.few': '{count} zmeny',
|
||||
'assistant.week.showAll': 'Zobraziť všetkých {count} zmien',
|
||||
'assistant.week.showAll.one': 'Zobraziť {count} zmenu',
|
||||
'assistant.week.showAll.few': 'Zobraziť všetky {count} zmeny',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -971,5 +971,31 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Ta bort kategori',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Ta bort kategorin "{name}" och alla dess objekt?',
|
||||
'admin.rotateJwt.button': 'Rotera',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description':
|
||||
'En anslutning för assistenten och bokningsimporten. Med MCP kan andra AI-appar använda TREK.',
|
||||
'admin.addons.ai.setup': 'Konfigurera AI',
|
||||
'admin.addons.ai.dialogSub': 'Anslutningen som assistenten och AI-tolkningen delar, och vad var och en får göra.',
|
||||
'admin.addons.ai.tab.connection': 'Anslutning',
|
||||
'admin.addons.ai.parsing.readsWith': 'Läser bokningar med',
|
||||
'admin.addons.ai.parsing.own': 'Egen anslutning',
|
||||
'admin.addons.ai.parsing.ownHint': 'Används i stället för den delade anslutningen.',
|
||||
'admin.addons.ai.parsing.useShared': 'Använd den delade anslutningen',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Delad',
|
||||
'admin.addons.ai.parsing.perUser': 'Var och en läser med sin egen anslutning från sina inställningar.',
|
||||
'admin.addons.ai.parsing.none': 'Ingen anslutning ännu. Konfigurera en för alla eller ge AI-tolkningen en egen.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Använd en annan',
|
||||
'admin.addons.ai.parsing.installed': 'Installerade på servern',
|
||||
'admin.addons.ai.parsing.refresh': 'Uppdatera',
|
||||
'admin.addons.ai.parsing.noModels': 'Inga modeller installerade ännu. Hämta en nedan.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Hämta en rekommenderad modell',
|
||||
'admin.addons.ai.parsing.pull': 'Hämta',
|
||||
'admin.addons.ai.parsing.pulling': 'Hämtar…',
|
||||
'admin.addons.ai.parsing.use': 'Använd',
|
||||
'admin.addons.ai.parsing.selected': 'Vald',
|
||||
'admin.addons.ai.parsing.pulled': 'Modellen hämtad',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Det gick inte att hämta modellen',
|
||||
'admin.addons.ai.parsing.unreachable': 'Den lokala servern går inte att nå',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Behövs oftast inte',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -15,12 +15,14 @@ const assistant: TranslationStrings = {
|
||||
'assistant.window.deleteConfirm': 'Radera den här chatten? Det går inte att ångra.',
|
||||
'assistant.setup.question': 'Vad vill du chatta med?',
|
||||
'assistant.setup.beta': 'Beta', // same-as-en
|
||||
'assistant.setup.chatgptNote': 'En API-nyckel är det officiella sättet. Inloggning med ChatGPT är fortfarande i beta.',
|
||||
'assistant.setup.chatgptNote':
|
||||
'En API-nyckel är det officiella sättet. Inloggning med ChatGPT är fortfarande i beta.',
|
||||
'assistant.setup.keySubtitle': 'Anthropic, OpenAI, Gemini eller OpenRouter',
|
||||
'assistant.setup.adminOnly': 'Din administratör konfigurerar detta.',
|
||||
'assistant.setup.forEveryone': 'Konfigurera för alla',
|
||||
'assistant.connect.title': 'AI-assistent',
|
||||
'assistant.connect.description': 'Chatta med en assistent som känner till din resa och föreslår ändringar som du bekräftar.',
|
||||
'assistant.connect.description':
|
||||
'Chatta med en assistent som känner till din resa och föreslår ändringar som du bekräftar.',
|
||||
'assistant.connect.chatgpt': 'Logga in med ChatGPT',
|
||||
'assistant.connect.chatgptHint': 'Använder ditt ChatGPT-abonnemang. Ingen nyckel behövs.',
|
||||
'assistant.connect.chatgptStep1': 'Logga in på ChatGPT i den nya fliken.',
|
||||
@@ -43,7 +45,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Skaffa en nyckel',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max och Team inkluderar API-krediter.',
|
||||
'assistant.connect.hintOpenai': 'Skapa en nyckel i din OpenAI-översikt.',
|
||||
'assistant.connect.hintGemini': 'AI Studio har en gratisnivå med gränser per minut och per dag, där Google kan använda det du skickar för att förbättra sina produkter. Med fakturering påslagen är gränserna högre och det gäller inte.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio har en gratisnivå med gränser per minut och per dag, där Google kan använda det du skickar för att förbättra sina produkter. Med fakturering påslagen är gränserna högre och det gäller inte.',
|
||||
'assistant.connect.hintOpenrouter': 'Logga in med OpenRouter, ingen nyckel att kopiera.',
|
||||
'assistant.connect.openrouter': 'Anslut OpenRouter',
|
||||
'assistant.connect.save': 'Anslut',
|
||||
@@ -68,7 +71,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.privacy.what': 'Vad delas?',
|
||||
'assistant.privacy.banner': 'Dina meddelanden och de resedata som assistenten läser skickas till {provider}.',
|
||||
'assistant.privacy.ok': 'Uppfattat',
|
||||
'assistant.privacy.shared': 'Dina meddelanden och de resedetaljer som assistenten läser, som platser, dagar och bokningar.',
|
||||
'assistant.privacy.shared':
|
||||
'Dina meddelanden och de resedetaljer som assistenten läser, som platser, dagar och bokningar.',
|
||||
'assistant.privacy.notShared': 'Inte ditt lösenord, dina filer eller dina andra resor.',
|
||||
'assistant.privacy.provider': '{provider} hanterar detta enligt sina egna integritetsvillkor.',
|
||||
'assistant.empty.title': 'Vad planerar vi?',
|
||||
@@ -91,7 +95,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.thread.scrollDown': 'Gå till det senaste meddelandet',
|
||||
'assistant.attach.button': 'Bifoga en bokning',
|
||||
'assistant.attach.drop': 'Släpp här så läser jag bokningen',
|
||||
'assistant.attach.unsupported': 'Den här filtypen kan jag inte läsa. Prova en pdf, ett mejl, en bild eller ett wallet-kort.',
|
||||
'assistant.attach.unsupported':
|
||||
'Den här filtypen kan jag inte läsa. Prova en pdf, ett mejl, en bild eller ett wallet-kort.',
|
||||
'assistant.attach.tooLarge': 'Filen är större än 10 MB.',
|
||||
'assistant.composer.placeholder': 'Fråga vad som helst om {trip}',
|
||||
'assistant.composer.send': 'Skicka',
|
||||
@@ -335,5 +340,60 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Delat',
|
||||
'assistant.share.failed': 'Det gick inte att dela. Försök igen om en stund.',
|
||||
'assistant.share.chatOff': 'Resans chatt är avstängd.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Din AI-anslutning: assistenten körs på den och den läser bokningarna du importerar.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Din AI-anslutning: den läser bokningarna du importerar.',
|
||||
'assistant.error.emptyAnswer': 'Assistenten kom tillbaka utan svar. Ska jag försöka igen?',
|
||||
'assistant.followUp.title': 'Fortsätt med',
|
||||
'assistant.followUp.cheaper': 'Bara billigare',
|
||||
'assistant.followUp.closer': 'Närmare mitt boende',
|
||||
'assistant.followUp.openNow': 'Vad har öppet nu?',
|
||||
'assistant.followUp.nextDay': 'Planera nästa dag på samma sätt',
|
||||
'assistant.followUp.relaxed': 'Gör planen lugnare',
|
||||
'assistant.followUp.dinners': 'Lägg till restauranger för kvällarna',
|
||||
'assistant.followUp.rain': 'Om det regnar?',
|
||||
'assistant.followUp.sun': 'Vad är värt att göra ute i fint väder?',
|
||||
'assistant.followUp.more': 'Berätta mer',
|
||||
'assistant.followUp.next': 'Vad föreslår du nu?',
|
||||
'assistant.menu.alternative': 'Hitta ett alternativ',
|
||||
'assistant.menu.alternativeAsk': 'Hitta ett bra alternativ till {place} i närheten och säg varför det passar bättre.',
|
||||
'assistant.menu.foodNearby': 'Restaurang i närheten',
|
||||
'assistant.menu.foodNearbyAsk': 'Föreslå några bra ställen att äta på nära {place}.',
|
||||
'assistant.menu.planDay': 'Planera dagen',
|
||||
'assistant.menu.planDayAsk': 'Planera den här dagen åt mig: platser, tider och ett ställe att äta på.',
|
||||
'assistant.menu.rainPlan': 'Regnplan',
|
||||
'assistant.menu.rainPlanAsk': 'Vad kan vi göra den här dagen om det regnar? Föreslå inomhusalternativ i närheten.',
|
||||
'assistant.preview.title': 'Assistentens förslag',
|
||||
'assistant.preview.suggested': 'Förslag',
|
||||
'assistant.preview.movedHere': 'Flyttas hit',
|
||||
'assistant.preview.removed': 'Tas bort',
|
||||
'assistant.preview.movedAway': 'Flyttas bort',
|
||||
'assistant.check.ok': 'Håller tidsmässigt',
|
||||
'assistant.week.title': 'Planens dagar',
|
||||
'assistant.week.day': 'Dag',
|
||||
'assistant.memory.title': 'Resanteckningar',
|
||||
'assistant.memory.edit': 'Redigera resanteckningar',
|
||||
'assistant.memory.sub': 'Assistenten tänker på detta i varje förslag för resan.',
|
||||
'assistant.memory.quick': 'Vanliga önskemål',
|
||||
'assistant.memory.notes': 'Dina anteckningar',
|
||||
'assistant.memory.placeholder': 'Till exempel: vi reser med ett litet barn, älskar gatumat, inga tidiga morgnar.',
|
||||
'assistant.memory.saved': 'Resanteckningar sparade',
|
||||
'assistant.memory.quick.vegetarian': 'Vi äter vegetariskt',
|
||||
'assistant.memory.quick.kids': 'Vi reser med barn',
|
||||
'assistant.memory.quick.budget': 'Med liten budget',
|
||||
'assistant.memory.quick.slow': 'Lugnt tempo, ingen stress',
|
||||
'assistant.memory.quick.accessible': 'Tillgängligt utan trappsteg',
|
||||
'assistant.memory.quick.noMuseums': 'Få museer',
|
||||
'assistant.settings.costEstimates': 'Uppskatta kostnader',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Vid en restaurang eller biljett föreslår den en uppskattad utgift för budgeten, som ett kort du bekräftar.',
|
||||
'assistant.change.timeline.tight': '{count} min för snävt',
|
||||
'assistant.change.timeline.tight.one': '{count} min för snävt',
|
||||
'assistant.check.issues': '{count} saker att kolla',
|
||||
'assistant.check.issues.one': '{count} sak att kolla',
|
||||
'assistant.week.changes': '{count} ändringar',
|
||||
'assistant.week.changes.one': '{count} ändring',
|
||||
'assistant.week.showAll': 'Visa alla {count} ändringar',
|
||||
'assistant.week.showAll.one': 'Visa {count} ändring',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -917,5 +917,31 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'ลบหมวดหมู่',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'ลบหมวดหมู่ "{name}" และรายการทั้งหมดในหมวดนี้หรือไม่',
|
||||
'admin.rotateJwt.button': 'หมุน',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description': 'การเชื่อมต่อเดียวสำหรับผู้ช่วยและการนำเข้าการจอง MCP ช่วยให้แอป AI อื่นใช้ TREK ได้',
|
||||
'admin.addons.ai.setup': 'ตั้งค่า AI',
|
||||
'admin.addons.ai.dialogSub': 'การเชื่อมต่อที่ผู้ช่วยและการวิเคราะห์ด้วย AI ใช้ร่วมกัน และสิ่งที่แต่ละอย่างทำได้',
|
||||
'admin.addons.ai.tab.connection': 'การเชื่อมต่อ',
|
||||
'admin.addons.ai.parsing.readsWith': 'อ่านการจองด้วย',
|
||||
'admin.addons.ai.parsing.own': 'การเชื่อมต่อของตัวเอง',
|
||||
'admin.addons.ai.parsing.ownHint': 'ใช้แทนการเชื่อมต่อที่ใช้ร่วมกัน',
|
||||
'admin.addons.ai.parsing.useShared': 'ใช้การเชื่อมต่อที่ใช้ร่วมกัน',
|
||||
'admin.addons.ai.parsing.sharedTag': 'ใช้ร่วมกัน',
|
||||
'admin.addons.ai.parsing.perUser': 'แต่ละคนอ่านด้วยการเชื่อมต่อของตนเองจากการตั้งค่าของตน',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'ยังไม่มีการเชื่อมต่อ ตั้งค่าหนึ่งรายการสำหรับทุกคน หรือให้การวิเคราะห์ด้วย AI มีของตัวเอง',
|
||||
'admin.addons.ai.parsing.setupOwn': 'ใช้รายการอื่น',
|
||||
'admin.addons.ai.parsing.installed': 'ติดตั้งบนเซิร์ฟเวอร์แล้ว',
|
||||
'admin.addons.ai.parsing.refresh': 'รีเฟรช',
|
||||
'admin.addons.ai.parsing.noModels': 'ยังไม่มีโมเดลที่ติดตั้ง ดาวน์โหลดได้ด้านล่าง',
|
||||
'admin.addons.ai.parsing.pullTitle': 'ดาวน์โหลดโมเดลที่แนะนำ',
|
||||
'admin.addons.ai.parsing.pull': 'ดาวน์โหลด',
|
||||
'admin.addons.ai.parsing.pulling': 'กำลังดาวน์โหลด…',
|
||||
'admin.addons.ai.parsing.use': 'ใช้',
|
||||
'admin.addons.ai.parsing.selected': 'เลือกแล้ว',
|
||||
'admin.addons.ai.parsing.pulled': 'ดาวน์โหลดโมเดลแล้ว',
|
||||
'admin.addons.ai.parsing.pullFailed': 'ดาวน์โหลดโมเดลไม่สำเร็จ',
|
||||
'admin.addons.ai.parsing.unreachable': 'เข้าถึงเซิร์ฟเวอร์ภายในไม่ได้',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'โดยทั่วไปไม่จำเป็น',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -25,7 +25,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.chatgptHint': 'ใช้แพ็กเกจ ChatGPT ของคุณ ไม่ต้องใช้คีย์',
|
||||
'assistant.connect.chatgptStep1': 'ลงชื่อเข้าใช้ ChatGPT ในแท็บใหม่',
|
||||
'assistant.connect.chatgptOpen': 'เปิดหน้าลงชื่อเข้าใช้ ChatGPT',
|
||||
'assistant.connect.chatgptStep2': 'จากนั้นเบราว์เซอร์จะแสดงหน้าข้อผิดพลาด ซึ่งเป็นเรื่องปกติ คัดลอกที่อยู่ด้านบนแล้วกลับมาที่นี่',
|
||||
'assistant.connect.chatgptStep2':
|
||||
'จากนั้นเบราว์เซอร์จะแสดงหน้าข้อผิดพลาด ซึ่งเป็นเรื่องปกติ คัดลอกที่อยู่ด้านบนแล้วกลับมาที่นี่',
|
||||
'assistant.connect.chatgptPaste': 'วางที่อยู่',
|
||||
'assistant.connect.chatgptWrong': 'ที่อยู่นี้ไม่ถูกต้อง ที่อยู่ที่ถูกต้องขึ้นต้นด้วย 127.0.0.1',
|
||||
'assistant.connect.chatgptExpired': 'ใช้เวลานานเกินไป โปรดลงชื่อเข้าใช้อีกครั้ง',
|
||||
@@ -42,7 +43,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'รับคีย์',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max และ Team มีเครดิต API รวมอยู่ด้วย',
|
||||
'assistant.connect.hintOpenai': 'สร้างคีย์ในแดชบอร์ด OpenAI ของคุณ',
|
||||
'assistant.connect.hintGemini': 'AI Studio มีระดับฟรีที่มีขีดจำกัดต่อนาทีและต่อวัน ซึ่ง Google อาจใช้สิ่งที่คุณส่งเพื่อปรับปรุงผลิตภัณฑ์ เมื่อเปิดการเรียกเก็บเงิน ขีดจำกัดจะสูงขึ้นและข้อนี้ไม่มีผล',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio มีระดับฟรีที่มีขีดจำกัดต่อนาทีและต่อวัน ซึ่ง Google อาจใช้สิ่งที่คุณส่งเพื่อปรับปรุงผลิตภัณฑ์ เมื่อเปิดการเรียกเก็บเงิน ขีดจำกัดจะสูงขึ้นและข้อนี้ไม่มีผล',
|
||||
'assistant.connect.hintOpenrouter': 'ลงชื่อเข้าใช้ด้วย OpenRouter ไม่ต้องคัดลอกคีย์',
|
||||
'assistant.connect.openrouter': 'เชื่อมต่อ OpenRouter',
|
||||
'assistant.connect.save': 'เชื่อมต่อ',
|
||||
@@ -312,5 +314,56 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'แชร์แล้ว',
|
||||
'assistant.share.failed': 'แชร์ไม่สำเร็จ โปรดลองอีกครั้งในอีกสักครู่',
|
||||
'assistant.share.chatOff': 'แชตทริปปิดอยู่',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'การเชื่อมต่อ AI ของคุณ: ผู้ช่วยทำงานบนการเชื่อมต่อนี้ และใช้อ่านการจองที่คุณนำเข้า',
|
||||
'assistant.connect.descriptionParsingOnly': 'การเชื่อมต่อ AI ของคุณ: ใช้อ่านการจองที่คุณนำเข้า',
|
||||
'assistant.error.emptyAnswer': 'ผู้ช่วยไม่ได้ให้คำตอบ ลองอีกครั้งไหม',
|
||||
'assistant.followUp.title': 'ถามต่อ',
|
||||
'assistant.followUp.cheaper': 'เฉพาะที่ถูกกว่า',
|
||||
'assistant.followUp.closer': 'ใกล้ที่พักมากขึ้น',
|
||||
'assistant.followUp.openNow': 'ตอนนี้ที่ไหนเปิดอยู่?',
|
||||
'assistant.followUp.nextDay': 'วางแผนวันถัดไปแบบเดียวกัน',
|
||||
'assistant.followUp.relaxed': 'ทำให้แผนสบายขึ้น',
|
||||
'assistant.followUp.dinners': 'เพิ่มร้านอาหารสำหรับมื้อเย็น',
|
||||
'assistant.followUp.rain': 'ถ้าฝนตกล่ะ?',
|
||||
'assistant.followUp.sun': 'อากาศดีแล้วข้างนอกมีอะไรน่าทำ?',
|
||||
'assistant.followUp.more': 'เล่าเพิ่มอีก',
|
||||
'assistant.followUp.next': 'แนะนำอะไรต่อดี?',
|
||||
'assistant.menu.alternative': 'หาทางเลือกอื่น',
|
||||
'assistant.menu.alternativeAsk': 'หาทางเลือกที่ดีแทน {place} ในละแวกนั้น และบอกว่าทำไมเหมาะกว่า',
|
||||
'assistant.menu.foodNearby': 'ร้านอาหารใกล้ๆ',
|
||||
'assistant.menu.foodNearbyAsk': 'แนะนำที่กินดีๆ ใกล้ {place} สักสองสามแห่ง',
|
||||
'assistant.menu.planDay': 'วางแผนวันนี้',
|
||||
'assistant.menu.planDayAsk': 'วางแผนวันนี้ให้ที: สถานที่ เวลา และที่กินข้าว',
|
||||
'assistant.menu.rainPlan': 'แผนวันฝนตก',
|
||||
'assistant.menu.rainPlanAsk': 'วันนี้ถ้าฝนตกจะทำอะไรได้บ้าง? แนะนำที่ในร่มใกล้ๆ',
|
||||
'assistant.preview.title': 'ข้อเสนอของผู้ช่วย',
|
||||
'assistant.preview.suggested': 'ข้อเสนอ',
|
||||
'assistant.preview.movedHere': 'ย้ายมาที่นี่',
|
||||
'assistant.preview.removed': 'ถูกเอาออก',
|
||||
'assistant.preview.movedAway': 'ถูกย้าย',
|
||||
'assistant.check.ok': 'เวลาพอดี',
|
||||
'assistant.week.title': 'วันต่างๆ ในแผนนี้',
|
||||
'assistant.week.day': 'วัน',
|
||||
'assistant.memory.title': 'บันทึกทริป',
|
||||
'assistant.memory.edit': 'แก้ไขบันทึกทริป',
|
||||
'assistant.memory.sub': 'ผู้ช่วยจะคำนึงถึงสิ่งนี้ในทุกข้อเสนอของทริปนี้',
|
||||
'assistant.memory.quick': 'ความต้องการที่พบบ่อย',
|
||||
'assistant.memory.notes': 'บันทึกของคุณ',
|
||||
'assistant.memory.placeholder': 'เช่น เดินทางกับเด็กเล็ก ชอบสตรีทฟู้ด ไม่ตื่นเช้า',
|
||||
'assistant.memory.saved': 'บันทึกทริปแล้ว',
|
||||
'assistant.memory.quick.vegetarian': 'เรากินมังสวิรัติ',
|
||||
'assistant.memory.quick.kids': 'เราเดินทางกับเด็ก',
|
||||
'assistant.memory.quick.budget': 'งบประมาณจำกัด',
|
||||
'assistant.memory.quick.slow': 'จังหวะสบายๆ ไม่เร่งรีบ',
|
||||
'assistant.memory.quick.accessible': 'ขอทางที่ไม่มีขั้นบันได',
|
||||
'assistant.memory.quick.noMuseums': 'พิพิธภัณฑ์น้อยๆ',
|
||||
'assistant.settings.costEstimates': 'ประมาณค่าใช้จ่าย',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'สำหรับร้านอาหารหรือตั๋ว จะเสนอค่าใช้จ่ายโดยประมาณลงงบประมาณเป็นการ์ดให้คุณยืนยัน',
|
||||
'assistant.change.timeline.tight': 'ขาดไป {count} นาที',
|
||||
'assistant.check.issues': 'มี {count} จุดที่ควรตรวจ',
|
||||
'assistant.week.changes': 'การเปลี่ยนแปลง {count} รายการ',
|
||||
'assistant.week.showAll': 'แสดงการเปลี่ยนแปลงทั้ง {count} รายการ',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -977,5 +977,33 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Kategoriyi sil',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': '"{name}" kategorisi ve tüm öğeleri silinsin mi?',
|
||||
'admin.rotateJwt.button': 'Döndür',
|
||||
'admin.addons.ai.name': 'Yapay zekâ',
|
||||
'admin.addons.ai.description':
|
||||
'Asistan ve rezervasyon içe aktarma için tek bağlantı. MCP, diğer yapay zekâ uygulamalarının TREK kullanmasını sağlar.',
|
||||
'admin.addons.ai.setup': 'Yapay zekâyı ayarla',
|
||||
'admin.addons.ai.dialogSub':
|
||||
'Asistanın ve yapay zekâ ayrıştırmanın paylaştığı bağlantı ve her birinin neler yapabileceği.',
|
||||
'admin.addons.ai.tab.connection': 'Bağlantı',
|
||||
'admin.addons.ai.parsing.readsWith': 'Rezervasyonları şununla okur',
|
||||
'admin.addons.ai.parsing.own': 'Kendi bağlantısı',
|
||||
'admin.addons.ai.parsing.ownHint': 'Paylaşılan bağlantının yerine kullanılır.',
|
||||
'admin.addons.ai.parsing.useShared': 'Paylaşılan bağlantıyı kullan',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Paylaşılan',
|
||||
'admin.addons.ai.parsing.perUser': 'Herkes kendi ayarlarındaki bağlantıyla okur.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'Henüz bağlantı yok. Herkes için bir tane kurun ya da yapay zekâ ayrıştırmaya kendi bağlantısını verin.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Başka birini kullan',
|
||||
'admin.addons.ai.parsing.installed': 'Sunucuda kurulu',
|
||||
'admin.addons.ai.parsing.refresh': 'Yenile',
|
||||
'admin.addons.ai.parsing.noModels': 'Henüz kurulu model yok. Aşağıdan birini indirin.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Önerilen bir modeli indir',
|
||||
'admin.addons.ai.parsing.pull': 'İndir',
|
||||
'admin.addons.ai.parsing.pulling': 'İndiriliyor…',
|
||||
'admin.addons.ai.parsing.use': 'Kullan',
|
||||
'admin.addons.ai.parsing.selected': 'Seçildi',
|
||||
'admin.addons.ai.parsing.pulled': 'Model indirildi',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Model indirilemedi',
|
||||
'admin.addons.ai.parsing.unreachable': 'Yerel sunucuya ulaşılamıyor',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Çoğu zaman gerekmez',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -43,7 +43,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Anahtar al',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max ve Team, API kredisi içerir.',
|
||||
'assistant.connect.hintOpenai': 'OpenAI panelinde bir anahtar oluştur.',
|
||||
'assistant.connect.hintGemini': 'AI Studio’da dakika ve gün başına limitleri olan ücretsiz bir katman var; bu katmanda Google gönderdiklerini ürünlerini geliştirmek için kullanabilir. Faturalandırma açıkken limitler daha yüksektir ve bu geçerli olmaz.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio’da dakika ve gün başına limitleri olan ücretsiz bir katman var; bu katmanda Google gönderdiklerini ürünlerini geliştirmek için kullanabilir. Faturalandırma açıkken limitler daha yüksektir ve bu geçerli olmaz.',
|
||||
'assistant.connect.hintOpenrouter': 'OpenRouter ile giriş yap, kopyalanacak anahtar yok.',
|
||||
'assistant.connect.openrouter': 'OpenRouter’ı bağla',
|
||||
'assistant.connect.save': 'Bağla',
|
||||
@@ -338,5 +339,61 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Paylaşıldı',
|
||||
'assistant.share.failed': 'Paylaşılamadı. Birazdan tekrar dene.',
|
||||
'assistant.share.chatOff': 'Seyahat sohbeti kapalı.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Yapay zekâ bağlantınız: asistan bununla çalışır ve içe aktardığınız rezervasyonları okur.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Yapay zekâ bağlantınız: içe aktardığınız rezervasyonları okur.',
|
||||
'assistant.error.emptyAnswer': 'Asistan yanıt vermeden döndü. Tekrar deneyeyim mi?',
|
||||
'assistant.followUp.title': 'Sonraki',
|
||||
'assistant.followUp.cheaper': 'Yalnızca daha ucuzlar',
|
||||
'assistant.followUp.closer': 'Konaklamama daha yakın',
|
||||
'assistant.followUp.openNow': 'Şu an neresi açık?',
|
||||
'assistant.followUp.nextDay': 'Sonraki günü de böyle planla',
|
||||
'assistant.followUp.relaxed': 'Planı daha rahat yap',
|
||||
'assistant.followUp.dinners': 'Akşamlar için restoran ekle',
|
||||
'assistant.followUp.rain': 'Yağmur yağarsa?',
|
||||
'assistant.followUp.sun': 'Güzel havada dışarıda ne yapmaya değer?',
|
||||
'assistant.followUp.more': 'Daha fazla anlat',
|
||||
'assistant.followUp.next': 'Şimdi ne önerirsin?',
|
||||
'assistant.menu.alternative': 'Alternatif bul',
|
||||
'assistant.menu.alternativeAsk': '{place} yerine yakında iyi bir alternatif bul ve neden daha uygun olduğunu söyle.',
|
||||
'assistant.menu.foodNearby': 'Yakındaki restoran',
|
||||
'assistant.menu.foodNearbyAsk': '{place} yakınında yemek için birkaç iyi yer öner.',
|
||||
'assistant.menu.planDay': 'Bu günü planla',
|
||||
'assistant.menu.planDayAsk': 'Bu günü benim için planla: yerler, saatler ve yemek için bir yer.',
|
||||
'assistant.menu.rainPlan': 'Yağmur planı',
|
||||
'assistant.menu.rainPlanAsk': 'Bu gün yağmur yağarsa ne yapabiliriz? Yakında kapalı alan alternatifleri öner.',
|
||||
'assistant.preview.title': 'Asistanın önerileri',
|
||||
'assistant.preview.suggested': 'Öneri',
|
||||
'assistant.preview.movedHere': 'Buraya geliyor',
|
||||
'assistant.preview.removed': 'Çıkarılıyor',
|
||||
'assistant.preview.movedAway': 'Taşınıyor',
|
||||
'assistant.check.ok': 'Zamana uyuyor',
|
||||
'assistant.week.title': 'Bu planın günleri',
|
||||
'assistant.week.day': 'Gün',
|
||||
'assistant.memory.title': 'Gezi notları',
|
||||
'assistant.memory.edit': 'Gezi notlarını düzenle',
|
||||
'assistant.memory.sub': 'Asistan bu gezideki her öneride bunları dikkate alır.',
|
||||
'assistant.memory.quick': 'Sık istekler',
|
||||
'assistant.memory.notes': 'Notların',
|
||||
'assistant.memory.placeholder':
|
||||
'Örneğin: küçük çocukla seyahat ediyoruz, sokak lezzetlerini seviyoruz, erken kalkmak yok.',
|
||||
'assistant.memory.saved': 'Gezi notları kaydedildi',
|
||||
'assistant.memory.quick.vegetarian': 'Vejetaryen besleniyoruz',
|
||||
'assistant.memory.quick.kids': 'Çocuklarla seyahat ediyoruz',
|
||||
'assistant.memory.quick.budget': 'Kısıtlı bütçe',
|
||||
'assistant.memory.quick.slow': 'Sakin tempo, acele yok',
|
||||
'assistant.memory.quick.accessible': 'Lütfen basamaksız erişim',
|
||||
'assistant.memory.quick.noMuseums': 'Az müze',
|
||||
'assistant.settings.costEstimates': 'Masrafları tahmin et',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Bir restoran ya da bilette bütçe için tahmini bir harcama önerir, onayladığın bir kart olarak.',
|
||||
'assistant.change.timeline.tight': '{count} dk yetersiz',
|
||||
'assistant.change.timeline.tight.one': '{count} dk yetersiz',
|
||||
'assistant.check.issues': 'Kontrol edilecek {count} şey',
|
||||
'assistant.check.issues.one': 'Kontrol edilecek {count} şey',
|
||||
'assistant.week.changes': '{count} değişiklik',
|
||||
'assistant.week.changes.one': '{count} değişiklik',
|
||||
'assistant.week.showAll': '{count} değişikliğin tümünü göster',
|
||||
'assistant.week.showAll.one': '{count} değişikliği göster',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -1011,5 +1011,31 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Видалити категорію',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Видалити категорію "{name}" і всі її пункти?',
|
||||
'admin.rotateJwt.button': 'Оновити',
|
||||
'admin.addons.ai.name': 'ШІ',
|
||||
'admin.addons.ai.description':
|
||||
'Одне підключення для асистента й імпорту бронювань. MCP дає іншим ШІ-застосункам працювати з TREK.',
|
||||
'admin.addons.ai.setup': 'Налаштувати ШІ',
|
||||
'admin.addons.ai.dialogSub': 'Підключення, спільне для асистента й ШІ-розбору, і що може кожен із них.',
|
||||
'admin.addons.ai.tab.connection': 'Підключення',
|
||||
'admin.addons.ai.parsing.readsWith': 'Читає бронювання через',
|
||||
'admin.addons.ai.parsing.own': 'Власне підключення',
|
||||
'admin.addons.ai.parsing.ownHint': 'Використовується замість спільного підключення.',
|
||||
'admin.addons.ai.parsing.useShared': 'Використати спільне підключення',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Спільне',
|
||||
'admin.addons.ai.parsing.perUser': 'Кожен читає через власне підключення зі своїх налаштувань.',
|
||||
'admin.addons.ai.parsing.none': 'Підключення ще немає. Налаштуйте одне для всіх або дайте ШІ-розбору власне.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Використати інше',
|
||||
'admin.addons.ai.parsing.installed': 'Встановлені на сервері',
|
||||
'admin.addons.ai.parsing.refresh': 'Оновити',
|
||||
'admin.addons.ai.parsing.noModels': 'Моделей ще немає. Завантажте одну нижче.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Завантажити рекомендовану модель',
|
||||
'admin.addons.ai.parsing.pull': 'Завантажити',
|
||||
'admin.addons.ai.parsing.pulling': 'Завантаження…',
|
||||
'admin.addons.ai.parsing.use': 'Використати',
|
||||
'admin.addons.ai.parsing.selected': 'Вибрано',
|
||||
'admin.addons.ai.parsing.pulled': 'Модель завантажено',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Не вдалося завантажити модель',
|
||||
'admin.addons.ai.parsing.unreachable': 'Локальний сервер недоступний',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Зазвичай не потрібен',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Отримати ключ',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max і Team містять кредити API.',
|
||||
'assistant.connect.hintOpenai': 'Створіть ключ у панелі керування OpenAI.',
|
||||
'assistant.connect.hintGemini': 'В AI Studio є безкоштовний рівень з лімітами на хвилину і на день, на якому Google може використовувати те, що ти надсилаєш, для покращення своїх продуктів. З увімкненою оплатою ліміти вищі, і це не діє.',
|
||||
'assistant.connect.hintGemini':
|
||||
'В AI Studio є безкоштовний рівень з лімітами на хвилину і на день, на якому Google може використовувати те, що ти надсилаєш, для покращення своїх продуктів. З увімкненою оплатою ліміти вищі, і це не діє.',
|
||||
'assistant.connect.hintOpenrouter': 'Увійдіть через OpenRouter, копіювати ключ не треба.',
|
||||
'assistant.connect.openrouter': 'Підключити OpenRouter',
|
||||
'assistant.connect.save': 'Підключити',
|
||||
@@ -379,5 +380,68 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Надіслано',
|
||||
'assistant.share.failed': 'Не вдалося поділитися. Спробуйте ще раз трохи згодом.',
|
||||
'assistant.share.chatOff': 'Чат подорожі вимкнено.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Ваше ШІ-підключення: на ньому працює асистент, і воно читає імпортовані бронювання.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Ваше ШІ-підключення: воно читає імпортовані бронювання.',
|
||||
'assistant.error.emptyAnswer': 'Асистент повернувся без відповіді. Спробувати ще раз?',
|
||||
'assistant.followUp.title': 'Далі',
|
||||
'assistant.followUp.cheaper': 'Лише дешевші',
|
||||
'assistant.followUp.closer': 'Ближче до мого житла',
|
||||
'assistant.followUp.openNow': 'Що зараз відчинено?',
|
||||
'assistant.followUp.nextDay': 'Сплануй наступний день так само',
|
||||
'assistant.followUp.relaxed': 'Зроби план спокійнішим',
|
||||
'assistant.followUp.dinners': 'Додай ресторани на вечори',
|
||||
'assistant.followUp.rain': 'А якщо буде дощ?',
|
||||
'assistant.followUp.sun': 'Що варто робити надворі в гарну погоду?',
|
||||
'assistant.followUp.more': 'Розкажи більше',
|
||||
'assistant.followUp.next': 'Що запропонуєш далі?',
|
||||
'assistant.menu.alternative': 'Знайти альтернативу',
|
||||
'assistant.menu.alternativeAsk': 'Знайди гарну альтернативу {place} поблизу й поясни, чому вона краще підходить.',
|
||||
'assistant.menu.foodNearby': 'Ресторан поруч',
|
||||
'assistant.menu.foodNearbyAsk': 'Запропонуй кілька гарних місць, де поїсти біля {place}.',
|
||||
'assistant.menu.planDay': 'Спланувати день',
|
||||
'assistant.menu.planDayAsk': 'Сплануй для мене цей день: місця, час і де поїсти.',
|
||||
'assistant.menu.rainPlan': 'План на дощ',
|
||||
'assistant.menu.rainPlanAsk': 'Що можна робити цього дня, якщо буде дощ? Запропонуй варіанти в приміщенні поблизу.',
|
||||
'assistant.preview.title': 'Пропозиції асистента',
|
||||
'assistant.preview.suggested': 'Пропозиція',
|
||||
'assistant.preview.movedHere': 'Переходить сюди',
|
||||
'assistant.preview.removed': 'Прибирається',
|
||||
'assistant.preview.movedAway': 'Переноситься',
|
||||
'assistant.check.ok': 'Вкладається в час',
|
||||
'assistant.week.title': 'Дні цього плану',
|
||||
'assistant.week.day': 'День',
|
||||
'assistant.memory.title': 'Нотатки до подорожі',
|
||||
'assistant.memory.edit': 'Змінити нотатки до подорожі',
|
||||
'assistant.memory.sub': 'Асистент враховує їх у кожній пропозиції для цієї подорожі.',
|
||||
'assistant.memory.quick': 'Часті побажання',
|
||||
'assistant.memory.notes': 'Ваші нотатки',
|
||||
'assistant.memory.placeholder': 'Наприклад: їдемо з малюком, любимо вуличну їжу, без ранніх підйомів.',
|
||||
'assistant.memory.saved': 'Нотатки збережено',
|
||||
'assistant.memory.quick.vegetarian': 'Ми вегетаріанці',
|
||||
'assistant.memory.quick.kids': 'Подорожуємо з дітьми',
|
||||
'assistant.memory.quick.budget': 'З невеликим бюджетом',
|
||||
'assistant.memory.quick.slow': 'Спокійний темп, без поспіху',
|
||||
'assistant.memory.quick.accessible': 'Без сходинок, будь ласка',
|
||||
'assistant.memory.quick.noMuseums': 'Мало музеїв',
|
||||
'assistant.settings.costEstimates': 'Оцінювати витрати',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Для ресторану чи квитка пропонує орієнтовну витрату в бюджет, карткою для підтвердження.',
|
||||
'assistant.change.timeline.tight': 'Бракує {count} хв',
|
||||
'assistant.change.timeline.tight.one': 'Бракує {count} хв',
|
||||
'assistant.change.timeline.tight.few': 'Бракує {count} хв',
|
||||
'assistant.change.timeline.tight.many': 'Бракує {count} хв',
|
||||
'assistant.check.issues': '{count} пункту на перевірку',
|
||||
'assistant.check.issues.one': '{count} пункт на перевірку',
|
||||
'assistant.check.issues.few': '{count} пункти на перевірку',
|
||||
'assistant.check.issues.many': '{count} пунктів на перевірку',
|
||||
'assistant.week.changes': '{count} зміни',
|
||||
'assistant.week.changes.one': '{count} зміна',
|
||||
'assistant.week.changes.few': '{count} зміни',
|
||||
'assistant.week.changes.many': '{count} змін',
|
||||
'assistant.week.showAll': 'Показати всі {count} зміни',
|
||||
'assistant.week.showAll.one': 'Показати {count} зміну',
|
||||
'assistant.week.showAll.few': 'Показати всі {count} зміни',
|
||||
'assistant.week.showAll.many': 'Показати всі {count} змін',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -954,5 +954,32 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': 'Xóa danh mục',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': 'Xóa danh mục "{name}" và tất cả mục trong đó?',
|
||||
'admin.rotateJwt.button': 'Quay',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description':
|
||||
'Một kết nối cho trợ lý và việc nhập đặt chỗ. MCP cho phép các ứng dụng AI khác dùng TREK.',
|
||||
'admin.addons.ai.setup': 'Thiết lập AI',
|
||||
'admin.addons.ai.dialogSub': 'Kết nối mà trợ lý và phân tích bằng AI dùng chung, và những gì mỗi bên được làm.',
|
||||
'admin.addons.ai.tab.connection': 'Kết nối',
|
||||
'admin.addons.ai.parsing.readsWith': 'Đọc đặt chỗ bằng',
|
||||
'admin.addons.ai.parsing.own': 'Kết nối riêng',
|
||||
'admin.addons.ai.parsing.ownHint': 'Được dùng thay cho kết nối dùng chung.',
|
||||
'admin.addons.ai.parsing.useShared': 'Dùng kết nối dùng chung',
|
||||
'admin.addons.ai.parsing.sharedTag': 'Dùng chung',
|
||||
'admin.addons.ai.parsing.perUser': 'Mỗi người đọc bằng kết nối riêng trong phần cài đặt của mình.',
|
||||
'admin.addons.ai.parsing.none':
|
||||
'Chưa có kết nối. Thiết lập một kết nối cho mọi người, hoặc cho phân tích bằng AI một kết nối riêng.',
|
||||
'admin.addons.ai.parsing.setupOwn': 'Dùng kết nối khác',
|
||||
'admin.addons.ai.parsing.installed': 'Đã cài trên máy chủ',
|
||||
'admin.addons.ai.parsing.refresh': 'Làm mới',
|
||||
'admin.addons.ai.parsing.noModels': 'Chưa có mô hình nào. Tải một mô hình bên dưới.',
|
||||
'admin.addons.ai.parsing.pullTitle': 'Tải mô hình được đề xuất',
|
||||
'admin.addons.ai.parsing.pull': 'Tải',
|
||||
'admin.addons.ai.parsing.pulling': 'Đang tải…',
|
||||
'admin.addons.ai.parsing.use': 'Dùng',
|
||||
'admin.addons.ai.parsing.selected': 'Đã chọn',
|
||||
'admin.addons.ai.parsing.pulled': 'Đã tải mô hình',
|
||||
'admin.addons.ai.parsing.pullFailed': 'Không thể tải mô hình',
|
||||
'admin.addons.ai.parsing.unreachable': 'Không kết nối được máy chủ cục bộ',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': 'Thường không cần',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -44,7 +44,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': 'Lấy khóa',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max và Team có kèm tín dụng API.',
|
||||
'assistant.connect.hintOpenai': 'Tạo khóa trong bảng điều khiển OpenAI của bạn.',
|
||||
'assistant.connect.hintGemini': 'AI Studio có gói miễn phí với giới hạn theo phút và theo ngày, trong đó Google có thể dùng nội dung bạn gửi để cải thiện sản phẩm. Khi bật thanh toán, giới hạn cao hơn và điều này không áp dụng.',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio có gói miễn phí với giới hạn theo phút và theo ngày, trong đó Google có thể dùng nội dung bạn gửi để cải thiện sản phẩm. Khi bật thanh toán, giới hạn cao hơn và điều này không áp dụng.',
|
||||
'assistant.connect.hintOpenrouter': 'Đăng nhập bằng OpenRouter, không cần sao chép khóa.',
|
||||
'assistant.connect.openrouter': 'Kết nối OpenRouter',
|
||||
'assistant.connect.save': 'Kết nối',
|
||||
@@ -316,5 +317,56 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': 'Đã chia sẻ',
|
||||
'assistant.share.failed': 'Không chia sẻ được. Hãy thử lại sau giây lát.',
|
||||
'assistant.share.chatOff': 'Trò chuyện của chuyến đi đang tắt.',
|
||||
'assistant.connect.descriptionWithParsing':
|
||||
'Kết nối AI của bạn: trợ lý chạy trên kết nối này và nó đọc các đặt chỗ bạn nhập.',
|
||||
'assistant.connect.descriptionParsingOnly': 'Kết nối AI của bạn: nó đọc các đặt chỗ bạn nhập.',
|
||||
'assistant.error.emptyAnswer': 'Trợ lý không trả lời. Thử lại nhé?',
|
||||
'assistant.followUp.title': 'Hỏi tiếp',
|
||||
'assistant.followUp.cheaper': 'Chỉ chỗ rẻ hơn',
|
||||
'assistant.followUp.closer': 'Gần chỗ ở hơn',
|
||||
'assistant.followUp.openNow': 'Chỗ nào đang mở cửa?',
|
||||
'assistant.followUp.nextDay': 'Lên kế hoạch ngày tiếp theo theo cách tương tự',
|
||||
'assistant.followUp.relaxed': 'Làm kế hoạch thong thả hơn',
|
||||
'assistant.followUp.dinners': 'Thêm nhà hàng cho các buổi tối',
|
||||
'assistant.followUp.rain': 'Nếu trời mưa thì sao?',
|
||||
'assistant.followUp.sun': 'Trời đẹp thì ngoài trời có gì đáng làm?',
|
||||
'assistant.followUp.more': 'Kể thêm cho tôi',
|
||||
'assistant.followUp.next': 'Tiếp theo bạn gợi ý gì?',
|
||||
'assistant.menu.alternative': 'Tìm lựa chọn khác',
|
||||
'assistant.menu.alternativeAsk': 'Tìm một lựa chọn tốt thay cho {place} ở gần đó và cho biết vì sao hợp hơn.',
|
||||
'assistant.menu.foodNearby': 'Nhà hàng gần đây',
|
||||
'assistant.menu.foodNearbyAsk': 'Gợi ý vài chỗ ăn ngon gần {place}.',
|
||||
'assistant.menu.planDay': 'Lên kế hoạch ngày này',
|
||||
'assistant.menu.planDayAsk': 'Lên kế hoạch ngày này cho tôi: địa điểm, giờ giấc và chỗ ăn.',
|
||||
'assistant.menu.rainPlan': 'Kế hoạch khi mưa',
|
||||
'assistant.menu.rainPlanAsk': 'Ngày này nếu mưa thì làm gì? Gợi ý lựa chọn trong nhà ở gần.',
|
||||
'assistant.preview.title': 'Đề xuất của trợ lý',
|
||||
'assistant.preview.suggested': 'Đề xuất',
|
||||
'assistant.preview.movedHere': 'Chuyển đến đây',
|
||||
'assistant.preview.removed': 'Bị bỏ',
|
||||
'assistant.preview.movedAway': 'Được chuyển đi',
|
||||
'assistant.check.ok': 'Vừa thời gian',
|
||||
'assistant.week.title': 'Các ngày của kế hoạch này',
|
||||
'assistant.week.day': 'Ngày',
|
||||
'assistant.memory.title': 'Ghi chú chuyến đi',
|
||||
'assistant.memory.edit': 'Sửa ghi chú chuyến đi',
|
||||
'assistant.memory.sub': 'Trợ lý sẽ lưu ý điều này trong mọi đề xuất cho chuyến đi.',
|
||||
'assistant.memory.quick': 'Mong muốn phổ biến',
|
||||
'assistant.memory.notes': 'Ghi chú của bạn',
|
||||
'assistant.memory.placeholder': 'Ví dụ: đi cùng bé nhỏ, thích đồ ăn đường phố, không dậy sớm.',
|
||||
'assistant.memory.saved': 'Đã lưu ghi chú',
|
||||
'assistant.memory.quick.vegetarian': 'Chúng tôi ăn chay',
|
||||
'assistant.memory.quick.kids': 'Chúng tôi đi cùng trẻ em',
|
||||
'assistant.memory.quick.budget': 'Ngân sách eo hẹp',
|
||||
'assistant.memory.quick.slow': 'Nhịp độ thong thả, không vội',
|
||||
'assistant.memory.quick.accessible': 'Lối đi không bậc thang',
|
||||
'assistant.memory.quick.noMuseums': 'Ít bảo tàng',
|
||||
'assistant.settings.costEstimates': 'Ước tính chi phí',
|
||||
'assistant.settings.costEstimatesHint':
|
||||
'Với nhà hàng hoặc vé, trợ lý đề xuất khoản chi ước tính cho ngân sách dưới dạng thẻ để bạn xác nhận.',
|
||||
'assistant.change.timeline.tight': 'Thiếu {count} phút',
|
||||
'assistant.check.issues': '{count} điểm cần xem',
|
||||
'assistant.week.changes': '{count} thay đổi',
|
||||
'assistant.week.showAll': 'Hiện tất cả {count} thay đổi',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -871,5 +871,30 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': '刪除類別',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': '要刪除類別「{name}」及其所有項目嗎?',
|
||||
'admin.rotateJwt.button': '輪換',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description': '助理和預訂匯入共用一個連線。MCP 讓其他 AI 應用程式也能使用 TREK。',
|
||||
'admin.addons.ai.setup': '設定 AI',
|
||||
'admin.addons.ai.dialogSub': '助理和 AI 解析共用的連線,以及各自可以做什麼。',
|
||||
'admin.addons.ai.tab.connection': '連線',
|
||||
'admin.addons.ai.parsing.readsWith': '讀取預訂所用的連線',
|
||||
'admin.addons.ai.parsing.own': '專用連線',
|
||||
'admin.addons.ai.parsing.ownHint': '代替共享連線使用。',
|
||||
'admin.addons.ai.parsing.useShared': '使用共享連線',
|
||||
'admin.addons.ai.parsing.sharedTag': '共享',
|
||||
'admin.addons.ai.parsing.perUser': '每個人使用自己設定中的連線讀取。',
|
||||
'admin.addons.ai.parsing.none': '還沒有連線。為所有人設定一個,或為 AI 解析另外設定一個。',
|
||||
'admin.addons.ai.parsing.setupOwn': '使用其他連線',
|
||||
'admin.addons.ai.parsing.installed': '已安裝在伺服器上',
|
||||
'admin.addons.ai.parsing.refresh': '重新整理',
|
||||
'admin.addons.ai.parsing.noModels': '還沒有安裝模型。在下方取得一個。',
|
||||
'admin.addons.ai.parsing.pullTitle': '取得推薦模型',
|
||||
'admin.addons.ai.parsing.pull': '取得',
|
||||
'admin.addons.ai.parsing.pulling': '正在取得…',
|
||||
'admin.addons.ai.parsing.use': '使用',
|
||||
'admin.addons.ai.parsing.selected': '已選取',
|
||||
'admin.addons.ai.parsing.pulled': '模型已取得',
|
||||
'admin.addons.ai.parsing.pullFailed': '無法取得模型',
|
||||
'admin.addons.ai.parsing.unreachable': '無法連線到本機伺服器',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': '通常不需要',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -42,7 +42,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': '取得金鑰',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max 和 Team 包含 API 額度。',
|
||||
'assistant.connect.hintOpenai': '在你的 OpenAI 主控台建立金鑰。',
|
||||
'assistant.connect.hintGemini': 'AI Studio 提供每分鐘和每天有限額的免費方案,在該方案下 Google 可能會使用你傳送的內容來改進其產品。開啟計費後限額更高,且不適用此項。',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio 提供每分鐘和每天有限額的免費方案,在該方案下 Google 可能會使用你傳送的內容來改進其產品。開啟計費後限額更高,且不適用此項。',
|
||||
'assistant.connect.hintOpenrouter': '使用 OpenRouter 登入,不必複製金鑰。',
|
||||
'assistant.connect.openrouter': '連結 OpenRouter',
|
||||
'assistant.connect.save': '連結',
|
||||
@@ -312,5 +313,54 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': '已分享',
|
||||
'assistant.share.failed': '分享失敗,請稍後再試。',
|
||||
'assistant.share.chatOff': '行程聊天室已關閉。',
|
||||
'assistant.connect.descriptionWithParsing': '你的 AI 連線:助理透過它運作,它也讀取你匯入的預訂。',
|
||||
'assistant.connect.descriptionParsingOnly': '你的 AI 連線:它讀取你匯入的預訂。',
|
||||
'assistant.error.emptyAnswer': '助理沒有給出回答。要再試一次嗎?',
|
||||
'assistant.followUp.title': '繼續問',
|
||||
'assistant.followUp.cheaper': '只要更便宜的',
|
||||
'assistant.followUp.closer': '離住處更近',
|
||||
'assistant.followUp.openNow': '現在哪些有營業?',
|
||||
'assistant.followUp.nextDay': '用同樣方式規劃下一天',
|
||||
'assistant.followUp.relaxed': '讓行程更輕鬆',
|
||||
'assistant.followUp.dinners': '為晚上加入餐廳',
|
||||
'assistant.followUp.rain': '下雨怎麼辦?',
|
||||
'assistant.followUp.sun': '天氣好時戶外有什麼值得做?',
|
||||
'assistant.followUp.more': '再多說一些',
|
||||
'assistant.followUp.next': '接下來你建議什麼?',
|
||||
'assistant.menu.alternative': '找替代',
|
||||
'assistant.menu.alternativeAsk': '在附近為 {place} 找一個好的替代,並說明為什麼更合適。',
|
||||
'assistant.menu.foodNearby': '附近餐廳',
|
||||
'assistant.menu.foodNearbyAsk': '推薦幾家 {place} 附近不錯的用餐地點。',
|
||||
'assistant.menu.planDay': '規劃這一天',
|
||||
'assistant.menu.planDayAsk': '幫我規劃這一天:地點、時間和吃飯的地方。',
|
||||
'assistant.menu.rainPlan': '雨天方案',
|
||||
'assistant.menu.rainPlanAsk': '這一天如果下雨可以做什麼?推薦附近的室內選擇。',
|
||||
'assistant.preview.title': '助理的建議',
|
||||
'assistant.preview.suggested': '建議',
|
||||
'assistant.preview.movedHere': '移到這裡',
|
||||
'assistant.preview.removed': '移除',
|
||||
'assistant.preview.movedAway': '移走',
|
||||
'assistant.check.ok': '時間來得及',
|
||||
'assistant.week.title': '此計畫的日期',
|
||||
'assistant.week.day': '天',
|
||||
'assistant.memory.title': '行程備忘',
|
||||
'assistant.memory.edit': '編輯行程備忘',
|
||||
'assistant.memory.sub': '助理會在此行程的每個建議中考慮這些。',
|
||||
'assistant.memory.quick': '常見需求',
|
||||
'assistant.memory.notes': '你的備忘',
|
||||
'assistant.memory.placeholder': '例如:帶著幼兒出行,喜歡街頭小吃,不早起。',
|
||||
'assistant.memory.saved': '行程備忘已儲存',
|
||||
'assistant.memory.quick.vegetarian': '我們吃素',
|
||||
'assistant.memory.quick.kids': '我們帶孩子出行',
|
||||
'assistant.memory.quick.budget': '預算有限',
|
||||
'assistant.memory.quick.slow': '節奏輕鬆,不趕路',
|
||||
'assistant.memory.quick.accessible': '請選擇無階梯通道',
|
||||
'assistant.memory.quick.noMuseums': '少去博物館',
|
||||
'assistant.settings.costEstimates': '估算費用',
|
||||
'assistant.settings.costEstimatesHint': '遇到餐廳或門票時,會以待確認卡片的形式為預算建議一筆估算支出。',
|
||||
'assistant.change.timeline.tight': '時間差 {count} 分鐘',
|
||||
'assistant.check.issues': '{count} 處需要注意',
|
||||
'assistant.week.changes': '{count} 項變更',
|
||||
'assistant.week.showAll': '顯示全部 {count} 項變更',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
@@ -869,5 +869,30 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.deleteCategoryTitle': '删除类别',
|
||||
'admin.packingTemplates.deleteCategoryConfirm': '要删除类别“{name}”及其所有物品吗?',
|
||||
'admin.rotateJwt.button': '轮换',
|
||||
'admin.addons.ai.name': 'AI', // same-as-en
|
||||
'admin.addons.ai.description': '助手和预订导入共用一个连接。MCP 让其他 AI 应用也能使用 TREK。',
|
||||
'admin.addons.ai.setup': '设置 AI',
|
||||
'admin.addons.ai.dialogSub': '助手和 AI 解析共用的连接,以及各自可以做什么。',
|
||||
'admin.addons.ai.tab.connection': '连接',
|
||||
'admin.addons.ai.parsing.readsWith': '读取预订所用的连接',
|
||||
'admin.addons.ai.parsing.own': '专用连接',
|
||||
'admin.addons.ai.parsing.ownHint': '代替共享连接使用。',
|
||||
'admin.addons.ai.parsing.useShared': '使用共享连接',
|
||||
'admin.addons.ai.parsing.sharedTag': '共享',
|
||||
'admin.addons.ai.parsing.perUser': '每个人使用自己设置中的连接读取。',
|
||||
'admin.addons.ai.parsing.none': '还没有连接。为所有人设置一个,或为 AI 解析单独设置一个。',
|
||||
'admin.addons.ai.parsing.setupOwn': '使用其他连接',
|
||||
'admin.addons.ai.parsing.installed': '已安装在服务器上',
|
||||
'admin.addons.ai.parsing.refresh': '刷新',
|
||||
'admin.addons.ai.parsing.noModels': '还没有安装模型。在下方获取一个。',
|
||||
'admin.addons.ai.parsing.pullTitle': '获取推荐模型',
|
||||
'admin.addons.ai.parsing.pull': '获取',
|
||||
'admin.addons.ai.parsing.pulling': '正在获取…',
|
||||
'admin.addons.ai.parsing.use': '使用',
|
||||
'admin.addons.ai.parsing.selected': '已选择',
|
||||
'admin.addons.ai.parsing.pulled': '模型已获取',
|
||||
'admin.addons.ai.parsing.pullFailed': '无法获取模型',
|
||||
'admin.addons.ai.parsing.unreachable': '无法连接本地服务器',
|
||||
'admin.addons.ai.parsing.apiKeyOptional': '通常不需要',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -42,7 +42,8 @@ const assistant: TranslationStrings = {
|
||||
'assistant.connect.getKey': '获取密钥',
|
||||
'assistant.connect.hintAnthropic': 'Claude Max 和 Team 包含 API 额度。',
|
||||
'assistant.connect.hintOpenai': '在你的 OpenAI 控制台中创建密钥。',
|
||||
'assistant.connect.hintGemini': 'AI Studio 提供每分钟和每天有限额的免费层级,在该层级下 Google 可能会使用你发送的内容来改进其产品。开启结算后限额更高,且不适用此条。',
|
||||
'assistant.connect.hintGemini':
|
||||
'AI Studio 提供每分钟和每天有限额的免费层级,在该层级下 Google 可能会使用你发送的内容来改进其产品。开启结算后限额更高,且不适用此条。',
|
||||
'assistant.connect.hintOpenrouter': '使用 OpenRouter 登录,无需复制密钥。',
|
||||
'assistant.connect.openrouter': '连接 OpenRouter',
|
||||
'assistant.connect.save': '连接',
|
||||
@@ -312,5 +313,54 @@ const assistant: TranslationStrings = {
|
||||
'assistant.share.shared': '已分享',
|
||||
'assistant.share.failed': '分享失败,请稍后再试。',
|
||||
'assistant.share.chatOff': '行程聊天已关闭。',
|
||||
'assistant.connect.descriptionWithParsing': '你的 AI 连接:助手通过它运行,它也读取你导入的预订。',
|
||||
'assistant.connect.descriptionParsingOnly': '你的 AI 连接:它读取你导入的预订。',
|
||||
'assistant.error.emptyAnswer': '助手没有给出回答。要再试一次吗?',
|
||||
'assistant.followUp.title': '继续问',
|
||||
'assistant.followUp.cheaper': '只要更便宜的',
|
||||
'assistant.followUp.closer': '离住处更近',
|
||||
'assistant.followUp.openNow': '现在哪些在营业?',
|
||||
'assistant.followUp.nextDay': '按同样方式规划下一天',
|
||||
'assistant.followUp.relaxed': '让行程更轻松',
|
||||
'assistant.followUp.dinners': '为晚上添加餐厅',
|
||||
'assistant.followUp.rain': '下雨怎么办?',
|
||||
'assistant.followUp.sun': '天气好时户外有什么值得做?',
|
||||
'assistant.followUp.more': '再多说一些',
|
||||
'assistant.followUp.next': '接下来你建议什么?',
|
||||
'assistant.menu.alternative': '找替代',
|
||||
'assistant.menu.alternativeAsk': '在附近为 {place} 找一个好的替代,并说明为什么更合适。',
|
||||
'assistant.menu.foodNearby': '附近餐厅',
|
||||
'assistant.menu.foodNearbyAsk': '推荐几家 {place} 附近不错的用餐地点。',
|
||||
'assistant.menu.planDay': '规划这一天',
|
||||
'assistant.menu.planDayAsk': '帮我规划这一天:地点、时间和吃饭的地方。',
|
||||
'assistant.menu.rainPlan': '雨天方案',
|
||||
'assistant.menu.rainPlanAsk': '这一天如果下雨可以做什么?推荐附近的室内选择。',
|
||||
'assistant.preview.title': '助手的建议',
|
||||
'assistant.preview.suggested': '建议',
|
||||
'assistant.preview.movedHere': '移到这里',
|
||||
'assistant.preview.removed': '移除',
|
||||
'assistant.preview.movedAway': '移走',
|
||||
'assistant.check.ok': '时间来得及',
|
||||
'assistant.week.title': '此计划的日期',
|
||||
'assistant.week.day': '天',
|
||||
'assistant.memory.title': '行程备忘',
|
||||
'assistant.memory.edit': '编辑行程备忘',
|
||||
'assistant.memory.sub': '助手会在此行程的每个建议中考虑这些。',
|
||||
'assistant.memory.quick': '常见需求',
|
||||
'assistant.memory.notes': '你的备忘',
|
||||
'assistant.memory.placeholder': '例如:带着幼儿出行,喜欢街头小吃,不早起。',
|
||||
'assistant.memory.saved': '行程备忘已保存',
|
||||
'assistant.memory.quick.vegetarian': '我们吃素',
|
||||
'assistant.memory.quick.kids': '我们带孩子出行',
|
||||
'assistant.memory.quick.budget': '预算有限',
|
||||
'assistant.memory.quick.slow': '节奏轻松,不赶路',
|
||||
'assistant.memory.quick.accessible': '请选择无台阶通道',
|
||||
'assistant.memory.quick.noMuseums': '少去博物馆',
|
||||
'assistant.settings.costEstimates': '估算费用',
|
||||
'assistant.settings.costEstimatesHint': '遇到餐厅或门票时,会以待确认卡片的形式为预算建议一笔估算支出。',
|
||||
'assistant.change.timeline.tight': '时间差 {count} 分钟',
|
||||
'assistant.check.issues': '{count} 处需要注意',
|
||||
'assistant.week.changes': '{count} 项更改',
|
||||
'assistant.week.showAll': '显示全部 {count} 项更改',
|
||||
};
|
||||
export default assistant;
|
||||
|
||||
Reference in New Issue
Block a user