Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add Georgian translation #272

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/i18n/i18n-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export type Locales =
| 'es'
| 'fr'
| 'ja'
| 'ka'
| 'pt-br'
| 'tr'
| 'vi'
Expand Down
1 change: 1 addition & 0 deletions src/i18n/i18n-util.async.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const localeTranslationLoaders = {
es: () => import('./es'),
fr: () => import('./fr'),
ja: () => import('./ja'),
ka: () => import('./ka'),
'pt-br': () => import('./pt-br'),
tr: () => import('./tr'),
vi: () => import('./vi'),
Expand Down
2 changes: 2 additions & 0 deletions src/i18n/i18n-util.sync.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import en from './en'
import es from './es'
import fr from './fr'
import ja from './ja'
import ka from './ka'
import pt_br from './pt-br'
import tr from './tr'
import vi from './vi'
Expand All @@ -21,6 +22,7 @@ const localeTranslations = {
es,
fr,
ja,
ka,
'pt-br': pt_br,
tr,
vi,
Expand Down
1 change: 1 addition & 0 deletions src/i18n/i18n-util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export const locales: Locales[] = [
'es',
'fr',
'ja',
'ka',
'pt-br',
'tr',
'vi',
Expand Down
163 changes: 163 additions & 0 deletions src/i18n/ka/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
import type { BaseTranslation } from '../i18n-types';

const ka = {
addConnection: 'კავშირის დამატება',
allowConnections: 'შეცვალეთ თქვენი სერვერის პარამეტრები, რომ დაუშვათ კავშირი მისამართიდან',
allowMixedContent: 'შერეული შემცველობის დაშვება',
apiKey: 'API-ის გასაღები',
areYouSureYouWantToDeleteAllKnowledge: 'მართლა გნებავთ, ცოდნა მთლიანად წაშალოთ?',
areYouSureYouWantToDeleteAllSessions: 'მართლა გნებავთ, ყველა სესია წაშალოთ?',
areYouSureYouWantToDeleteAllSettings: 'მართლა გნებავთ, ყველა პარამეტრი წაშალოთ?',
areYouSureYouWantToLeave: 'მართლა გნებავთ, გახვიდეთ?\nმიმდინარე პროცესი შეწყდება',
assistant: 'დამხმარე',
automatic: 'ავტო',
automaticallyCheckForUpdates: 'განახლებების ავტომატური შემოწმება',
availableModels: 'ხელმისაწვდომი მოდელები',
baseUrl: 'საბაზისო URL',
browseModels: 'ხელმისაწვდომი მოდელების სიის დათვალიერება',
cancel: 'გაუქმება',
cantConnectToOllamaServer: 'Ollama-ის სერვერთან მიერთება შეუძლებელია',
checkBrowserExtensions:
'ასევე შეამოწმეთ ბრაუზერის გაფართოებები, რომლებსაც მიერთების დაბლოკვა შეუძლიათ',
checkingForUpdates: 'მიმდინარეობს განახლებების შემოწმება...',
checkNow: 'შემოწმება ახლავე',
clear: 'გასუფთავება',
confirmDeletion: 'წაშლის დადასტურება',
connectionType: 'მიერთების ტიპი',
connectionLabelHelp: 'კავშირის იდენტიფიკატორი მოდელების სიაში',
connecting: 'მიერთება...',
connectionIsVerified: 'კავშირი გადამოწმებულია და მზადაა გამოსაყენებლად',
connectionFailedToVerify:
'კავშირის გადამოწმება ჩავარდა. შეამოწმეთ კავშირის პარამეტრები და თავიდან სცადეთ',
content: 'შემცველობა',
controls: 'მართვის ელემენტები',
controlsOnlyAvailableForOllama:
'დამატებითი კონტროლის ელემენტები ამჟამად, მხოლოდ, Ollama-ის მოდელებისთვისაა ხელმისაწვდომი',
copy: 'კოპირება',
couldntCheckForUpdates: 'განახლებების ავტომატური შემოწმება შეუძლებელია',
couldntConnectToOllamaServer: 'Ollama-ის სერვერთან მიერთება შეუძლებელია',
creatingTunnel: 'გვირაბის შექმნა',
currentVersion: 'მიმდინარე ვერსია',
dangerZone: 'სახიფათო ზონა',
dark: 'მუქი',
deleteAllKnowledge: 'ყველა ცოდნის წაშლა',
deleteAllSessions: 'ყველა სესიის წაშლა',
deleteAllSettings: 'ყველა პარამეტრის წაშლა',
deleteKnowledge: 'ცოდნის წაშლა',
deleteServer: 'სერვერის წაშლა',
deleteSession: 'სესიის წაშლა',
disconnected: 'გათიშულია',
dismiss: 'მოცილება',
downloadModel: 'მოდელის გადმოწერა',
edit: 'ჩასწორება',
emptyKnowledge: 'ცოდნის გარეშე',
emptySessions: 'სესიების გარეშე',
error: 'შეცდომა',
f16Kv: 'F16 KV',
frequencyPenalty: 'სიხშირის ჯარიმა',
genericError: 'ვაი. რაღაც არასწორია',
goToDownloads: 'გადმოწერებზე გადასვლა',
goToKnowledge: 'ცოდნაზე გადასვლა',
goToReleases: 'რელიზებზე გადასვლა',
howToObtainOpenAIKey: 'როგორ მივიღო API-ის გასაღები OpenAI-სგან?',
howToUpdateDocker: 'როგორ განვაახლო Docker container?',
interface: 'ინტერფეისი',
internalServerError: 'აღმოჩენილია შიდა შეცდომა. მოგვიანებით სცადეთ',
isCurrentVersionLatest: 'გაქვთ ბოლო ვერსია',
isLatestVersion: 'ხელმისაწვდომია უფრო ახალი ვერსია',
knowledge: 'ცოდნა',
knowledgeSaved: 'ცოდნა შენახულია',
label: 'ჭდე',
language: 'ენა',
lastUsedModels: 'ახლახან გამოყენებული მოდელები',
light: 'ღია',
lowVram: 'მეტისმეტად ცოტა VRAM',
mainGpu: 'მთავარი GPU',
messageOfTheDay: 'დღის შეტყობინება',
messages: 'შეტყობინებები',
minP: 'მინ P',
mirostat: 'Mirostat',
mirostatEta: 'Mirostat ETA',
mirostatTau: 'Mirostat Tau',
modelNotFound: 'მოდელი ვერ ვიპოვე',
modelOptions: 'მოდელის მორგება',
modelWasDownloaded: '{model:string} გადმოწერილია',
modelsFilter: 'მოდელის სახელების ფილტრი',
modelsFilterHelp: 'დამალავს მოდელის სახელებს, რომლებიც ფილტრით არ იწყება',
motd: 'დღის შეტყობინება',
name: 'სახელი',
newKnowledge: 'ახალი ცოდნა',
newSession: 'ახალი სესია',
noApiKey: 'API-ის გასაღების გარეშე',
noKnowledgeChosen: 'შექმენით ახალი ცოდნა ან აირჩიეთ არსებული სიიდან',
noRecentModels: 'ახლახან გამოყენებული მოდელების გარეშე',
noServerConnections: 'სერვერთან მიერთების გარეშე. დასაწყებად ჯერ დაამატეთ',
noSessionChosen: 'შექმენით ახალი სესია ან აირჩიეთ არსებული სიიდან',
notFound: 'გვერდი, რომელსაც ეძებთ, არ არსებობს',
numBatch: 'რიცხვ. პაკეტი',
numCtx: 'კონტექსტის ზომა',
numGpu: 'რიცხვ GPU',
numKeep: 'შენარჩუნების რიცხვ',
numPredict: 'წინასწარ გამოცნ. რიცხვი',
numThread: 'ნაკადების რაოდენობა',
numa: 'NUMA',
ollama: 'Ollama',
ollamaLibrary: 'Ollama-ის ბიბლიოთეკა',
openAIOfficialAPI: 'OpenAI: ოფიციალური API',
openAICompatible: 'OpenAI: თავსებადი სერვერები (მაგ: llama.cpp)',
otherModels: 'სხვა მოდელები',
penalizeNewline: 'ახალი ხაზის სასჯელი',
presencePenalty: 'არსებობის სასჯელი',
prompt: 'მოთხოვნა',
promptPlaceholder: 'დაწერეთ რაც გნებავთ',
pullModel: 'მოდელის გადმოწერა',
pullModelPlaceholder: 'მოდელის ჭდე (მაგ: llama3.1)',
pullingModel: 'მიმდინარეობს მოდელის გადმოწერა',
random: 'შემთხვევითი',
reasoning: 'კამათი',
refreshToUpdate: 'განახლებისთვის ჩატვირთეთ თავიდან',
releaseHistory: 'რელიზების ისტორია',
repeatLastN: 'ბოლო N-ის გამეორება',
repeatPenalty: 'გამეორების სასჯელი',
retry: 'თავიდან ცდა',
run: 'გაშვება',
reVerify: 'თავიდან გადამოწმება',
runtimeOptions: 'გაშვებული პროცესის მორგება',
save: 'შენახვა',
search: 'ძებნა',
searchEmpty: 'შედეგების გარეშე',
seed: 'თესლი',
seeDocs: 'იხილეთ დოკუმენტაცია',
servers: 'სერვერები',
serverSettingsUpdated:
'სერვერის პარამეტრები განახლდა და საწიროა თავიდან გადაამოწმოთ "პარამეტრებში"',
session: 'სესია',
sessions: 'სესიები',
settings: 'მორგება',
somethingWentWrong: 'უკაცრავად, რაღაც არასწორია',
stop: 'გაჩერების მიმდევრობა',
stopCompletion: 'დასრულების გაჩერება',
stopResponse: 'პასუხის გაჩერება',
success: 'წარმატება',
system: 'სისტემა',
systemPrompt: 'სისტემის მოთხოვნა',
temperature: 'ტემპერატურა',
tfsZ: 'TFS Z',
topK: 'Top K',
topP: 'Top P',
tryingToConnectNotLocalhost:
'თუ გნებავთ, მიუერთდეთ Ollama-ის სერვერს, რომელიც ხელმისაწვდომი არაა (ჰოსტისსახელი:სტრიქონზე) ან (IP:სტრიქონზე), სცადეთ',
typicalP: 'ტიპიური P',
useMlock: 'MLOCK-ის გამოყენება',
useMmap: 'MMAP-ის გამოყენება',
useModelsFromThisServer: 'მოდელების გამოყენება ამ სერვერიდან',
verify: 'გადამოწმება',
version: 'ვერსია',
vocabOnly: 'მხოლოდ ვოკაბულა',
writePromptToStart: 'დაწერეთ მოთხოვნის ხაზზე ახალი სესიის დასაწყებად',
you: 'თქვენ',
copiedNotPrivate: 'შემცველობა დაკოპირდა, მაგრამ თქვენი მიერთება კონფიდენციალური არაა',
notCopiedNotPrivate: 'შემცველობის დაკოპირება შეუძლებელია, რადგან მიერთება კონფიდენციალური არაა'
} satisfies BaseTranslation;

export default en;
1 change: 1 addition & 0 deletions src/routes/settings/Interface.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
{ value: 'pt-br', label: 'Português (Brasil)' },
{ value: 'ja', label: '日本語' },
{ value: 'tr', label: 'Türkçe' },
{ value: 'ka', label: 'ქართული' },
{ value: 'vi', label: 'Tiếng Việt' }
]}
/>
Expand Down
15 changes: 15 additions & 0 deletions tests/locales.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -128,4 +128,19 @@ test.describe('Locales', () => {
);
});
});
test.describe('Georgian', () => {
test.use({ locale: 'ka-GE' });
test('default language is Georgian', async ({ page }) => {
await page.goto('/settings');
expect(await page.evaluate(() => navigator.language)).toBe('ka-GE');

await page.evaluate(() => window.localStorage.clear());
await page.reload();
await expect(page.getByText('Servers')).not.toBeVisible();
await expect(page.getByText('სერვერები')).toBeVisible();
expect(await page.evaluate(() => window.localStorage.getItem('hollama-settings'))).toContain(
'"userLanguage":"ka"'
);
});
});
});