Skip to content

Commit a4b9ac5

Browse files
authored
Merge pull request #688 from Mat5heus/portuguese-support
feat: Add Portuguese support
2 parents dd99e50 + 9390c34 commit a4b9ac5

13 files changed

+1548
-22
lines changed

arb/app_ar.arb

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
{
2+
"@@locale": "ar",
3+
"friendlyName": "العربية",
4+
"localeTitle": "اللغة",
5+
"defaultLocale": "اللغة الافتراضية",
6+
"loading": "جارٍ التحميل...",
7+
"loadModel": "تحميل النموذج",
8+
"downloadModel": "تنزيل النموذج",
9+
"noModelSelected": "لم يتم اختيار نموذج",
10+
"noModelLoaded": "لم يتم تحميل نموذج",
11+
"localModels": "النماذج المحلية",
12+
"size": "الحجم",
13+
"parameters": "المعلمات",
14+
"delete": "حذف",
15+
"select": "اختيار",
16+
"import": "استيراد",
17+
"export": "تصدير",
18+
"edit": "تعديل",
19+
"regenerate": "إعادة التوليد",
20+
"chatsTitle": "الدردشات",
21+
"newChat": "دردشة جديدة",
22+
"anErrorOccurred": "حدث خطأ",
23+
"errorTitle": "خطأ",
24+
"key": "المفتاح",
25+
"value": "القيمة",
26+
"ok": "موافق",
27+
"proceed": "متابعة",
28+
"done": "تم",
29+
"close": "إغلاق",
30+
"save": "حفظ",
31+
"saveLabel": "حفظ {label}",
32+
"selectTag": "اختيار وسم",
33+
"next": "التالي",
34+
"previous": "السابق",
35+
"contentShared": "تمت مشاركة المحتوى",
36+
"setUserImage": "تعيين صورة المستخدم",
37+
"setAssistantImage": "تعيين صورة المساعد",
38+
"loadUserImage": "تحميل صورة المستخدم",
39+
"loadAssistantImage": "تحميل صورة المساعد",
40+
"userName": "اسم المستخدم",
41+
"assistantName": "اسم المساعد",
42+
"user": "المستخدم",
43+
"assistant": "المساعد",
44+
"cancel": "إلغاء",
45+
"aiEcosystem": "نظام الذكاء الاصطناعي",
46+
"llamaCpp": "Llama CPP",
47+
"llamaCppModel": "نموذج Llama CPP",
48+
"remoteModel": "النموذج البعيد",
49+
"refreshRemoteModels": "تحديث النماذج البعيدة",
50+
"ollama": "Ollama",
51+
"searchLocalNetwork": "البحث في الشبكة المحلية",
52+
"localNetworkSearchTitle": "بحث في الشبكة المحلية",
53+
"localNetworkSearchContent": "تتطلب هذه الميزة أذونات إضافية للبحث عن مثيلات Ollama في شبكتك المحلية.",
54+
"openAI": "OpenAI",
55+
"mistral": "Mistral",
56+
"anthropic": "Anthropic",
57+
"gemini": "Gemini",
58+
"modelParameters": "معلمات النموذج",
59+
"addParameter": "إضافة معلمة",
60+
"removeParameter": "إزالة معلمة",
61+
"saveParameters": "حفظ المعلمات",
62+
"importParameters": "استيراد المعلمات",
63+
"exportParameters": "تصدير المعلمات",
64+
"selectAiEcosystem": "اختيار نظام الذكاء الاصطناعي",
65+
"selectRemoteModel": "اختيار النموذج البعيد",
66+
"selectThemeMode": "اختيار وضع السمة",
67+
"themeMode": "وضع السمة",
68+
"themeModeSystem": "النظام",
69+
"themeModeLight": "فاتح",
70+
"themeModeDark": "داكن",
71+
"themeSeedColor": "لون السمة الأساسي",
72+
"editMessage": "تعديل الرسالة",
73+
"settingsTitle": "الإعدادات",
74+
"aiSettings": "إعدادات {aiType}",
75+
"userSettings": "إعدادات المستخدم",
76+
"assistantSettings": "إعدادات المساعد",
77+
"systemSettings": "إعدادات النظام",
78+
"systemPrompt": "موجه النظام",
79+
"clearChats": "مسح الدردشات",
80+
"resetSettings": "إعادة ضبط الإعدادات",
81+
"clearCache": "مسح ذاكرة التخزين المؤقت",
82+
"aboutTitle": "حول",
83+
"aboutContent": "Maid هو تطبيق مجاني ومفتوح المصدر متعدد المنصات للتعامل مع نماذج llama.cpp محليًا ومع نماذج Ollama وMistral وOpenAI عن بُعد. يدعم Maid بطاقات شخصيات Sillytavern للتفاعل مع جميع شخصياتك المفضلة. يتيح Maid تنزيل قائمة مختارة من النماذج مباشرة من Hugging Face داخل التطبيق. يتم توزيع Maid بموجب ترخيص MIT ويتم توفيره بدون أي ضمان من أي نوع، صريح أو ضمني. Maid غير مرتبط بـ Hugging Face أو Meta (Facebook) أو MistralAI أو OpenAI أو Google أو Microsoft أو أي شركة أخرى تقدم نموذجًا متوافقًا مع هذا التطبيق.",
84+
"leadMaintainer": "المسؤول الرئيسي",
85+
"apiKey": "مفتاح API",
86+
"baseUrl": "عنوان URL الأساسي",
87+
"scrollToRecent": "التمرير إلى الأحدث",
88+
"clearPrompt": "مسح الموجه",
89+
"submitPrompt": "إرسال الموجه",
90+
"stopPrompt": "إيقاف الموجه",
91+
"typeMessage": "اكتب رسالة...",
92+
"code": "كود",
93+
"copyLabel": "نسخ {label}",
94+
"labelCopied": "تم نسخ {label} إلى الحافظة!",
95+
"debugTitle": "تصحيح الأخطاء",
96+
"warning": "تحذير",
97+
"nsfwWarning": "تم تصميم هذا النموذج عمدًا لإنتاج محتوى غير مناسب (NSFW). قد يشمل ذلك محتوى جنسيًا صريحًا أو عنيفًا يتضمن التعذيب أو الاغتصاب أو القتل و/أو السلوك الجنسي المنحرف. إذا كنت حساسًا لمثل هذه الموضوعات، أو إذا كان مناقشة هذه الموضوعات ينتهك القوانين المحلية، فلا تتابع.",
98+
"login": "تسجيل الدخول",
99+
"logout": "تسجيل الخروج",
100+
"register": "تسجيل",
101+
"email": "البريد الإلكتروني",
102+
"password": "كلمة المرور",
103+
"confirmPassword": "تأكيد كلمة المرور",
104+
"resetCode": "رمز إعادة التعيين",
105+
"resetCodeSent": "تم إرسال رمز إعادة التعيين إلى بريدك الإلكتروني.",
106+
"sendResetCode": "إرسال رمز إعادة التعيين",
107+
"sendAgain": "إعادة الإرسال",
108+
"required": "مطلوب",
109+
"invalidEmail": "يرجى إدخال بريد إلكتروني صالح",
110+
"invalidUserName": "يجب أن يكون بين 3-24 حرفًا، أبجديًا رقميًا أو شرطة سفلية",
111+
"invalidPasswordLength": "الحد الأدنى 8 أحرف",
112+
"invalidPassword": "يجب أن يحتوي على أحرف كبيرة وصغيرة وأرقام ورموز",
113+
"passwordNoMatch": "كلمات المرور غير متطابقة",
114+
"createAccount": "إنشاء حساب",
115+
"resetPassword": "إعادة تعيين كلمة المرور",
116+
"backToLogin": "العودة إلى تسجيل الدخول",
117+
"alreadyHaveAccount": "لدي حساب بالفعل",
118+
"success": "نجاح",
119+
"registrationSuccess": "تم التسجيل بنجاح",
120+
"resetSuccess": "تمت إعادة تعيين كلمة المرور بنجاح.",
121+
"emailVerify": "يرجى التحقق من بريدك الإلكتروني للتحقق."
122+
}

arb/app_nl.arb

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
{
2+
"@@locale": "nl",
3+
"friendlyName": "Nederlands",
4+
"localeTitle": "Taal",
5+
"defaultLocale": "Standaardtaal",
6+
"loading": "Laden...",
7+
"loadModel": "Model laden",
8+
"downloadModel": "Model downloaden",
9+
"noModelSelected": "Geen model geselecteerd",
10+
"noModelLoaded": "Geen model geladen",
11+
"localModels": "Lokale modellen",
12+
"size": "Grootte",
13+
"parameters": "Parameters",
14+
"delete": "Verwijderen",
15+
"select": "Selecteren",
16+
"import": "Importeren",
17+
"export": "Exporteren",
18+
"edit": "Bewerken",
19+
"regenerate": "Opnieuw genereren",
20+
"chatsTitle": "Chats",
21+
"newChat": "Nieuwe chat",
22+
"anErrorOccurred": "Er is een fout opgetreden",
23+
"errorTitle": "Fout",
24+
"key": "Sleutel",
25+
"value": "Waarde",
26+
"ok": "OK",
27+
"proceed": "Doorgaan",
28+
"done": "Klaar",
29+
"close": "Sluiten",
30+
"save": "Opslaan",
31+
"saveLabel": "Opslaan {label}",
32+
"selectTag": "Tag selecteren",
33+
"next": "Volgende",
34+
"previous": "Vorige",
35+
"contentShared": "Inhoud gedeeld",
36+
"setUserImage": "Gebruikersafbeelding instellen",
37+
"setAssistantImage": "Assistentafbeelding instellen",
38+
"loadUserImage": "Gebruikersafbeelding laden",
39+
"loadAssistantImage": "Assistentafbeelding laden",
40+
"userName": "Gebruikersnaam",
41+
"assistantName": "Assistentnaam",
42+
"user": "Gebruiker",
43+
"assistant": "Assistent",
44+
"cancel": "Annuleren",
45+
"aiEcosystem": "AI-ecosysteem",
46+
"llamaCpp": "Llama CPP",
47+
"llamaCppModel": "Llama CPP-model",
48+
"remoteModel": "Extern model",
49+
"refreshRemoteModels": "Externe modellen vernieuwen",
50+
"ollama": "Ollama",
51+
"searchLocalNetwork": "Zoek lokaal netwerk",
52+
"localNetworkSearchTitle": "Zoeken in lokaal netwerk",
53+
"localNetworkSearchContent": "Deze functie vereist extra machtigingen om Ollama-instanties in uw lokale netwerk te zoeken.",
54+
"openAI": "OpenAI",
55+
"mistral": "Mistral",
56+
"anthropic": "Anthropic",
57+
"gemini": "Gemini",
58+
"modelParameters": "Modelparameters",
59+
"addParameter": "Parameter toevoegen",
60+
"removeParameter": "Parameter verwijderen",
61+
"saveParameters": "Parameters opslaan",
62+
"importParameters": "Parameters importeren",
63+
"exportParameters": "Parameters exporteren",
64+
"selectAiEcosystem": "AI-ecosysteem selecteren",
65+
"selectRemoteModel": "Extern model selecteren",
66+
"selectThemeMode": "App-thema selecteren",
67+
"themeMode": "Themamodus",
68+
"themeModeSystem": "Systeem",
69+
"themeModeLight": "Licht",
70+
"themeModeDark": "Donker",
71+
"themeSeedColor": "Thema basiskleur",
72+
"editMessage": "Bericht bewerken",
73+
"settingsTitle": "Instellingen",
74+
"aiSettings": "{aiType}-instellingen",
75+
"userSettings": "Gebruikersinstellingen",
76+
"assistantSettings": "Assistentinstellingen",
77+
"systemSettings": "Systeeminstellingen",
78+
"systemPrompt": "Systeemprompt",
79+
"clearChats": "Chats wissen",
80+
"resetSettings": "Instellingen resetten",
81+
"clearCache": "Cache wissen",
82+
"aboutTitle": "Over",
83+
"aboutContent": "Maid is een gratis en open-source cross-platform applicatie voor het lokaal gebruiken van llama.cpp-modellen en het op afstand gebruiken van Ollama-, Mistral- en OpenAI-modellen. Maid ondersteunt Sillytavern-karakterkaarten, zodat je met je favoriete karakters kunt communiceren. Maid biedt de mogelijkheid om een lijst met geselecteerde modellen rechtstreeks vanuit de app te downloaden via Hugging Face. Maid wordt gedistribueerd onder de MIT-licentie en wordt geleverd zonder enige garantie, expliciet of impliciet. Maid is niet verbonden met Hugging Face, Meta (Facebook), MistralAI, OpenAI, Google, Microsoft of andere bedrijven die een compatibel model aanbieden.",
84+
"leadMaintainer": "Hoofdonderhouder",
85+
"apiKey": "API-sleutel",
86+
"baseUrl": "Basis-URL",
87+
"scrollToRecent": "Scroll naar recent",
88+
"clearPrompt": "Prompt wissen",
89+
"submitPrompt": "Prompt indienen",
90+
"stopPrompt": "Prompt stoppen",
91+
"typeMessage": "Typ een bericht...",
92+
"code": "Code",
93+
"copyLabel": "Kopieer {label}",
94+
"labelCopied": "{label} gekopieerd naar klembord!",
95+
"debugTitle": "Debug",
96+
"warning": "Waarschuwing",
97+
"nsfwWarning": "Dit model is opzettelijk ontworpen om NSFW-inhoud te genereren. Dit kan expliciete seksuele of gewelddadige inhoud omvatten met betrekking tot marteling, verkrachting, moord en/of seksueel afwijkend gedrag. Als je gevoelig bent voor dergelijke onderwerpen, of als de bespreking van dergelijke onderwerpen in strijd is met de lokale wetgeving, GA NIET VERDER.",
98+
"login": "Inloggen",
99+
"logout": "Uitloggen",
100+
"register": "Registreren",
101+
"email": "E-mail",
102+
"password": "Wachtwoord",
103+
"confirmPassword": "Bevestig wachtwoord",
104+
"resetCode": "Resetcode",
105+
"resetCodeSent": "Een resetcode is naar je e-mail gestuurd.",
106+
"sendResetCode": "Resetcode verzenden",
107+
"sendAgain": "Opnieuw verzenden",
108+
"required": "Vereist",
109+
"invalidEmail": "Voer een geldig e-mailadres in",
110+
"invalidUserName": "Moet 3-24 tekens bevatten, alfanumeriek of een underscore",
111+
"invalidPasswordLength": "Minimaal 8 tekens",
112+
"invalidPassword": "Inclusief hoofdletters, kleine letters, cijfers en symbolen",
113+
"passwordNoMatch": "Wachtwoorden komen niet overeen",
114+
"createAccount": "Account aanmaken",
115+
"resetPassword": "Wachtwoord resetten",
116+
"backToLogin": "Terug naar inloggen",
117+
"alreadyHaveAccount": "Ik heb al een account",
118+
"success": "Succes",
119+
"registrationSuccess": "Registratie succesvol",
120+
"resetSuccess": "Je wachtwoord is succesvol gereset.",
121+
"emailVerify": "Controleer je e-mail voor verificatie."
122+
}

arb/app_pt.arb

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
{
2+
"@@locale": "pt",
3+
"friendlyName": "Português",
4+
"localeTitle": "Local",
5+
"defaultLocale": "Local Padrão",
6+
"loading": "Carregando...",
7+
"loadModel": "Carregar Modelo",
8+
"downloadModel": "Baixar Modelo",
9+
"noModelSelected": "Nenhum Modelo Selecionado",
10+
"noModelLoaded": "Nenhum Modelo Carregado",
11+
"localModels": "Modelos Locais",
12+
"size": "Tamanho",
13+
"parameters": "Parametros",
14+
"delete": "Apagar",
15+
"select": "Selecionar",
16+
"import": "Importar",
17+
"export": "Exportar",
18+
"edit": "Editar",
19+
"regenerate": "Re-gerar",
20+
"chatsTitle": "Conversas",
21+
"newChat": "Nova Conversa",
22+
"anErrorOccurred": "Ocorreu um erro",
23+
"errorTitle": "Erro",
24+
"key": "Chave",
25+
"value": "Valor",
26+
"ok": "OK",
27+
"proceed": "Proceed",
28+
"done": "Feito",
29+
"close": "Fechar",
30+
"save": "Salvar",
31+
"saveLabel": "Salvar {label}",
32+
"selectTag": "Selecionar Tag",
33+
"next": "Próximo",
34+
"previous": "Anterior",
35+
"contentShared": "Conteúdo Compartilhado",
36+
"setUserImage": "Definir Imagem do Usuário",
37+
"setAssistantImage": "Definir Imagem do Assistente",
38+
"loadUserImage": "Carregar Imagem do Usuário",
39+
"loadAssistantImage": "Carregar Imagem do Assistente",
40+
"userName": "Nome do Usuário",
41+
"assistantName": "Nome do Assistente",
42+
"user": "Usuário",
43+
"assistant": "Assistente",
44+
"cancel": "Cancelar",
45+
"aiEcosystem": "Ecosistema da IA",
46+
"llamaCpp": "Llama CPP",
47+
"llamaCppModel": "Modelo do Llama CPP",
48+
"remoteModel": "Modelo Remoto",
49+
"refreshRemoteModels": "Atualizar Modelos Remotos",
50+
"ollama": "Ollama",
51+
"searchLocalNetwork": "Procurar na Rede Local",
52+
"localNetworkSearchTitle": "Busca na Rede Local",
53+
"localNetworkSearchContent": "Esta função requer permissões adicionais para procurar na sua rede local por instâncias do Ollama.",
54+
"openAI": "OpenAI",
55+
"mistral": "Mistral",
56+
"anthropic": "Anthropic",
57+
"gemini": "Gemini",
58+
"modelParameters": "Parametros do Modelo",
59+
"addParameter": "Adicionar Parametros",
60+
"removeParameter": "Remover Parametro",
61+
"saveParameters": "Salvar Parametros",
62+
"importParameters": "Importar Parametros",
63+
"exportParameters": "Exportar Parametros",
64+
"selectAiEcosystem": "Selecionar Ecosistema de IA",
65+
"selectRemoteModel": "Selecionar Modelo Remoto",
66+
"selectThemeMode": "Selecionar Tema do APP",
67+
"themeMode": "Modo do Tema",
68+
"themeModeSystem": "Sistema",
69+
"themeModeLight": "Claro",
70+
"themeModeDark": "Escuro",
71+
"themeSeedColor": "Cor primária do tema",
72+
"editMessage": "Editar Mensagem",
73+
"settingsTitle": "Configurações",
74+
"aiSettings": "Configurações do {aiType} ",
75+
"userSettings": "Configurações do Usuário",
76+
"assistantSettings": "Configurações do Assistente",
77+
"systemSettings": "Configurações do Sistema",
78+
"systemPrompt": "Prompt do Sistema",
79+
"clearChats": "Apagar Conversas",
80+
"resetSettings": "Voltar a Configuração Padrão",
81+
"clearCache": "Apagar Cache",
82+
"aboutTitle": "Sobre",
83+
"aboutContent": "Maid é um aplicativo gratuito e de código aberto, multiplataforma, para interagir com modelos do llama.cpp localmente, e com os modelos da Ollama, Mistral e OpenAI de forma remota. O Maid é compatível com os cartões de personagens do SillyTavern, permitindo que você interaja com todos os seus personagens favoritos. Ele também permite o download, direto pelo aplicativo, de uma lista selecionada de modelos hospedados no Hugging Face.",
84+
"leadMaintainer": "Responsável Principal pelo Projeto",
85+
"apiKey": "Chave da API",
86+
"baseUrl": "Base URL",
87+
"scrollToRecent": "Scroll to Recent",
88+
"clearPrompt": "Apagar Prompt",
89+
"submitPrompt": "Enviar Prompt",
90+
"stopPrompt": "Pagar Prompt",
91+
"typeMessage": "Escreva uma Mensagem...",
92+
"code": "Código",
93+
"copyLabel": "Copiar {label}",
94+
"labelCopied": "{label} Copiado para a Área de Transferência!",
95+
"debugTitle": "Depurar",
96+
"warning": "Aviso",
97+
"nsfwWarning": "Este modelo foi intencionalmente projetado para gerar conteúdo impróprio (NSFW). Isso pode incluir conteúdo sexual ou violento explícito envolvendo tortura, estupro, assassinato e/ou comportamentos sexualmente desviantes. Se você for sensível a esses temas ou se a discussão desses temas violar leis locais, NÃO PROSSIGA.",
98+
"login": "Entrar",
99+
"logout": "Sair",
100+
"register": "Resgistre-se",
101+
"email": "Email",
102+
"password": "Senha",
103+
"confirmPassword": "Confirme a Senha",
104+
"resetCode": "Código de recuperação",
105+
"resetCodeSent": "Um Código de Reinicio foi enviado para o seu email.",
106+
"sendResetCode": "Enviar código de recuperação",
107+
"sendAgain": "Enviar De Novo",
108+
"required": "Obrigatório",
109+
"invalidEmail": "Por favor digite um email válido",
110+
"invalidUserName": "Deve ter de 3 a 24 caracteres, alfanumérico e underline",
111+
"invalidPasswordLength": "Mínimo de 8 Caracteres",
112+
"invalidPassword": "Inclua Letras Minúsculas, Maiúsculas, Números e Símbolos",
113+
"passwordNoMatch": "As senhas estão diferentes",
114+
"createAccount": "Crie uma conta",
115+
"resetPassword": "Esqueci a Senha",
116+
"backToLogin" : "Voltar ao Login",
117+
"alreadyHaveAccount": "Já tenho uma conta",
118+
"success": "Sucesso",
119+
"registrationSuccess": "Resgistrado com Sucesso",
120+
"resetSuccess": "Sua senha foi reiniciada com sucesso.",
121+
"emailVerify": "Por favor verifique o seu email para concluir a verificação."
122+
}

lib/controllers/artificial_intelligence_controller.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
part of 'package:maid/main.dart';
22

33
abstract class AIController extends ChangeNotifier {
4-
static ValueNotifier<AIController> notifier = ValueNotifier(kIsWeb ? OpenAIController() : LlamaCppController());
5-
static AIController get instance => notifier.value;
4+
static ValueNotifier<AIController?> notifier = ValueNotifier(null);
5+
static AIController get instance => notifier.value ?? defaultController;
66
static set instance(AIController newInstance) {
7+
if (notifier.value != null) {
8+
notifier.value!.save();
9+
}
10+
711
notifier.value = newInstance;
812
}
913

14+
static AIController get defaultController => kIsWeb ? OpenAIController() : LlamaCppController();
15+
1016
static Map<String, String> getTypes(BuildContext context) {
1117
Map<String, String> types = {};
1218

0 commit comments

Comments
 (0)