tera-system-ui 0.0.61 → 0.0.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/accordion/Accordion.d.ts +26 -0
- package/dist/components/accordion/Accordion.js +7 -0
- package/dist/components/accordion/components/AccordionContent.svelte +24 -0
- package/dist/components/accordion/components/AccordionContent.svelte.d.ts +3 -0
- package/dist/components/accordion/components/AccordionItem.svelte +12 -0
- package/dist/components/accordion/components/AccordionItem.svelte.d.ts +3 -0
- package/dist/components/accordion/components/AccordionTrigger.svelte +29 -0
- package/dist/components/accordion/components/AccordionTrigger.svelte.d.ts +5 -0
- package/dist/components/accordion/index.js +6 -0
- package/dist/components/input/Input.svelte.d.ts +1 -1
- package/dist/components/side-navigation/SideNavigation.js +3 -3
- package/dist/components/side-navigation/SideNavigation.svelte +10 -3
- package/dist/components/text-area/TextArea.svelte.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/tera-i18n/dev-tools/translator/gpt-translator-calculator-seo.js +79 -0
- package/dist/tera-i18n/dev-tools/translator/gpt-translator-i18n-message.js +18 -4
- package/dist/tera-i18n/projects/common/all-language-data.js +1 -1
- package/dist/tera-i18n/projects/tera-calculator/messages/ar.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/bg.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/bn.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/ca.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/cs.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/da.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/de.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/el.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/en.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/es.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/fi.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/fr.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/he.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/hi.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/hu.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/id.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/it.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/ja.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/ko.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/lt.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/lv.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/ms.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/nl.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/no.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/pl.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/pt.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/ro.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/ru.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/sk.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/sl.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/sq.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/sr.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/sv.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/sw.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/ta.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/te.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/th.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/tl.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/tr.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/uk.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/vi.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/zh-CN.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/messages/zh-TW.json +106 -0
- package/dist/tera-i18n/projects/tera-calculator/project.inlang/project_id +1 -0
- package/dist/tera-i18n/projects/tera-calculator/project.inlang/settings.json +59 -0
- package/dist/tera-i18n/projects/tera-calculator/supported-language.d.ts +1 -0
- package/dist/tera-i18n/projects/tera-calculator/supported-language.js +45 -0
- package/dist/themes/tera-ui-base.css +2 -0
- package/package.json +2 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type VariantProps } from "tailwind-variants";
|
|
2
|
+
export declare const styles: import("tailwind-variants").TVReturnType<{}, undefined, "", import("tailwind-variants/dist/config").TVConfig<{}, {}>, {}, undefined, import("tailwind-variants").TVReturnType<{}, undefined, "", import("tailwind-variants/dist/config").TVConfig<{}, {}>, unknown, unknown, undefined>>;
|
|
3
|
+
type AccordionVariants = VariantProps<typeof styles>;
|
|
4
|
+
export interface AccordionProps extends AccordionVariants {
|
|
5
|
+
children?: any;
|
|
6
|
+
class?: string;
|
|
7
|
+
type: 'multiple' | 'single';
|
|
8
|
+
value: string | string[];
|
|
9
|
+
onchange: (value: string | string[]) => void;
|
|
10
|
+
controlledValue?: boolean;
|
|
11
|
+
ref?: HTMLDivElement;
|
|
12
|
+
}
|
|
13
|
+
export interface AccordionItemProps {
|
|
14
|
+
value: string;
|
|
15
|
+
ref?: HTMLDivElement;
|
|
16
|
+
children?: any;
|
|
17
|
+
}
|
|
18
|
+
export interface AccordionTriggerProps {
|
|
19
|
+
children?: any;
|
|
20
|
+
ref?: HTMLButtonElement;
|
|
21
|
+
}
|
|
22
|
+
export interface AccordionContentProps {
|
|
23
|
+
children?: any;
|
|
24
|
+
ref?: HTMLDivElement;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Accordion as AccordionPrimitive, type WithoutChild } from "bits-ui";
|
|
3
|
+
import {cn} from "../../../utils";
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
ref = $bindable(null),
|
|
7
|
+
class: className,
|
|
8
|
+
children,
|
|
9
|
+
...restProps
|
|
10
|
+
}: WithoutChild<AccordionPrimitive.ContentProps> = $props();
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<AccordionPrimitive.Content
|
|
14
|
+
bind:ref
|
|
15
|
+
class={cn(
|
|
16
|
+
"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm transition-all",
|
|
17
|
+
className
|
|
18
|
+
)}
|
|
19
|
+
{...restProps}
|
|
20
|
+
>
|
|
21
|
+
<div class="pb-4 pt-0">
|
|
22
|
+
{@render children?.()}
|
|
23
|
+
</div>
|
|
24
|
+
</AccordionPrimitive.Content>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Accordion as AccordionPrimitive } from "bits-ui";
|
|
3
|
+
import {cn} from "../../../utils";
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
ref = $bindable(null),
|
|
7
|
+
class: className,
|
|
8
|
+
...restProps
|
|
9
|
+
}: AccordionPrimitive.ItemProps = $props();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<AccordionPrimitive.Item bind:ref class={cn("border-b", className)} {...restProps} />
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Accordion as AccordionPrimitive, type WithoutChild } from "bits-ui";
|
|
3
|
+
import { cn } from "../../../utils";
|
|
4
|
+
import {IconChevronDown} from "../../icons";
|
|
5
|
+
|
|
6
|
+
let {
|
|
7
|
+
ref = $bindable(null),
|
|
8
|
+
class: className,
|
|
9
|
+
level = 3,
|
|
10
|
+
children,
|
|
11
|
+
...restProps
|
|
12
|
+
}: WithoutChild<AccordionPrimitive.TriggerProps> & {
|
|
13
|
+
level?: AccordionPrimitive.HeaderProps["level"];
|
|
14
|
+
} = $props();
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<AccordionPrimitive.Header {level} class="flex">
|
|
18
|
+
<AccordionPrimitive.Trigger
|
|
19
|
+
bind:ref
|
|
20
|
+
class={cn(
|
|
21
|
+
"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
|
|
22
|
+
className
|
|
23
|
+
)}
|
|
24
|
+
{...restProps}
|
|
25
|
+
>
|
|
26
|
+
{@render children?.()}
|
|
27
|
+
<IconChevronDown class="size-4 shrink-0 transition-transform duration-200" />
|
|
28
|
+
</AccordionPrimitive.Trigger>
|
|
29
|
+
</AccordionPrimitive.Header>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Accordion as AccordionPrimitive } from "bits-ui";
|
|
2
|
+
declare const AccordionTrigger: import("svelte").Component<Omit<AccordionPrimitive.TriggerProps, "child"> & {
|
|
3
|
+
level?: AccordionPrimitive.HeaderProps["level"];
|
|
4
|
+
}, {}, "ref">;
|
|
5
|
+
export default AccordionTrigger;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Accordion as AccordionPrimitive } from "bits-ui";
|
|
2
|
+
const Accordion = AccordionPrimitive.Root;
|
|
3
|
+
export { Accordion };
|
|
4
|
+
export { default as AccordionItem } from "./components/AccordionItem.svelte";
|
|
5
|
+
export { default as AccordionContent } from "./components/AccordionContent.svelte";
|
|
6
|
+
export { default as AccordionTrigger } from "./components/AccordionTrigger.svelte";
|
|
@@ -31,13 +31,13 @@ export function toggleSideNavigation() {
|
|
|
31
31
|
let currentSideNavState = getSideNavState();
|
|
32
32
|
let state;
|
|
33
33
|
if (screenWidth < SCREEN_BREAK_POINTS.md) {
|
|
34
|
-
state = currentSideNavState
|
|
34
|
+
state = currentSideNavState !== 'expand' ? "expand" : undefined;
|
|
35
35
|
}
|
|
36
36
|
else if (screenWidth >= SCREEN_BREAK_POINTS.md && screenWidth < SCREEN_BREAK_POINTS.xl) {
|
|
37
|
-
state = currentSideNavState
|
|
37
|
+
state = currentSideNavState !== 'expand' ? "expand" : undefined;
|
|
38
38
|
}
|
|
39
39
|
else if (screenWidth >= SCREEN_BREAK_POINTS.xl) {
|
|
40
|
-
state = currentSideNavState
|
|
40
|
+
state = currentSideNavState === undefined ? "compact" : undefined;
|
|
41
41
|
}
|
|
42
42
|
setSideNavState(state);
|
|
43
43
|
}
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
import * as m from '../../paraglide/messages.js'
|
|
19
19
|
|
|
20
20
|
import {getGlobalContext} from "../tera-ui-context/global-context";
|
|
21
|
+
import {SupportedLanguage as CalculatorSupportedLanguage} from "../../tera-i18n/projects/tera-calculator/supported-language";
|
|
22
|
+
import {SupportedLanguage as ConverterSupportedLanguage} from "../../tera-i18n/projects/tera-converter/supported-language";
|
|
21
23
|
|
|
22
24
|
let {children, sideNavHref, language, ...props}: SideNavigationProps = $props();
|
|
23
25
|
|
|
@@ -50,22 +52,27 @@
|
|
|
50
52
|
|
|
51
53
|
let langPath = (language === 'en' || !language) ? '' : `/${language}`
|
|
52
54
|
|
|
55
|
+
let langForCalculator = (language && CalculatorSupportedLanguage.includes(language)) ? language : 'en'
|
|
56
|
+
let langPathForCalculator = (langForCalculator === 'en' || !langForCalculator) ? '' : `/${langForCalculator}`
|
|
57
|
+
|
|
58
|
+
let langForConverter = (language && ConverterSupportedLanguage.includes(language)) ? language : 'en'
|
|
59
|
+
let langPathForConverter = (langForConverter === 'en' || !langForConverter) ? '' : `/${langForConverter}`
|
|
53
60
|
|
|
54
61
|
const NAV_ITEM = [
|
|
55
62
|
{
|
|
56
|
-
href: `/calculator${
|
|
63
|
+
href: `/calculator${langPathForCalculator}`,
|
|
57
64
|
exactHref: '/calculator',
|
|
58
65
|
icon: IconCalculator,
|
|
59
66
|
title: m.text_calces_scientific_calculator(),
|
|
60
67
|
},
|
|
61
68
|
{
|
|
62
|
-
href: `/convert${
|
|
69
|
+
href: `/convert${langPathForConverter}`,
|
|
63
70
|
exactHref: '/convert',
|
|
64
71
|
icon: IconTransform,
|
|
65
72
|
title: m.text_unit_converter(),
|
|
66
73
|
},
|
|
67
74
|
{
|
|
68
|
-
href: `/convert${
|
|
75
|
+
href: `/convert${langPathForConverter}/currency`,
|
|
69
76
|
exactHref: '/convert/currency',
|
|
70
77
|
icon: IconCoinConvert,
|
|
71
78
|
title: m.text_currency_converter(),
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// Initial import of openai npm package
|
|
2
|
+
import { OpenAI } from 'openai';
|
|
3
|
+
import * as fs from "node:fs";
|
|
4
|
+
import dotenv from "dotenv";
|
|
5
|
+
import { SupportedLanguage as TeraConverterSupportedLangauge } from '../../projects/tera-converter/supported-language';
|
|
6
|
+
import { getLanguagesData } from "../../projects/common/all-language-data";
|
|
7
|
+
dotenv.config();
|
|
8
|
+
let openAiKey = process.env.OPENAI_API_KEY;
|
|
9
|
+
if (!openAiKey) {
|
|
10
|
+
throw new Error("Missing OpenAI API key");
|
|
11
|
+
}
|
|
12
|
+
// Directory
|
|
13
|
+
// - en
|
|
14
|
+
// - content.md
|
|
15
|
+
// - vi
|
|
16
|
+
// - content.md
|
|
17
|
+
async function translateContentDirectory(directory, sourceLanguage, outputLanguage) {
|
|
18
|
+
if (!fs.existsSync(directory)) {
|
|
19
|
+
throw new Error("Directory not found.");
|
|
20
|
+
}
|
|
21
|
+
let messageContent = fs.readFileSync(`${directory}/${sourceLanguage}.json`, "utf8");
|
|
22
|
+
let sourceMessageObject = JSON.parse(messageContent);
|
|
23
|
+
const openai = new OpenAI();
|
|
24
|
+
for (let language of outputLanguage) {
|
|
25
|
+
if (language.code === sourceLanguage) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
let outputDir = `${directory}`;
|
|
29
|
+
if (!fs.existsSync(outputDir)) {
|
|
30
|
+
fs.mkdirSync(outputDir);
|
|
31
|
+
}
|
|
32
|
+
let systemPrompt = "";
|
|
33
|
+
let promptPath = `./prompt/i18n-message-translate-prompt.txt`;
|
|
34
|
+
if (fs.existsSync(promptPath)) {
|
|
35
|
+
systemPrompt = fs.readFileSync(promptPath, "utf8");
|
|
36
|
+
systemPrompt = systemPrompt.replaceAll("{language}", language.name);
|
|
37
|
+
systemPrompt = systemPrompt.replaceAll("{languageCode}", language.code);
|
|
38
|
+
}
|
|
39
|
+
let outputContentFile = `${outputDir}/${language.code}.json`;
|
|
40
|
+
if (!fs.existsSync(outputContentFile)) {
|
|
41
|
+
console.log('Translating metadata for language', language);
|
|
42
|
+
const response = await openai.chat.completions.create({
|
|
43
|
+
messages: [
|
|
44
|
+
{
|
|
45
|
+
role: "system",
|
|
46
|
+
content: systemPrompt
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
role: "user",
|
|
50
|
+
content: messageContent,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
model: "gpt-4o",
|
|
54
|
+
max_tokens: 16384,
|
|
55
|
+
});
|
|
56
|
+
let message = response.choices[0].message;
|
|
57
|
+
let translated = message.content;
|
|
58
|
+
let json = JSON.parse(translated);
|
|
59
|
+
// Ensure the JSON object has the same keys and in the same order as the sourceMessageObject
|
|
60
|
+
let orderedJson = {};
|
|
61
|
+
for (let key of Object.keys(sourceMessageObject)) {
|
|
62
|
+
if (json.hasOwnProperty(key)) {
|
|
63
|
+
orderedJson[key] = json[key];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
fs.writeFileSync(outputContentFile, JSON.stringify(orderedJson, null, 4), 'utf8');
|
|
67
|
+
fs.writeFileSync(outputContentFile, JSON.stringify(json, null, 4), 'utf8');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function main() {
|
|
72
|
+
// generate translated message for tera-converter
|
|
73
|
+
let tasks = getLanguagesData(TeraConverterSupportedLangauge)
|
|
74
|
+
.map(language => {
|
|
75
|
+
return translateContentDirectory("../../projects/tera-converter/messages", "en", [language]);
|
|
76
|
+
});
|
|
77
|
+
await Promise.all(tasks);
|
|
78
|
+
}
|
|
79
|
+
main().then();
|
|
@@ -3,8 +3,9 @@ import { OpenAI } from 'openai';
|
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import dotenv from "dotenv";
|
|
5
5
|
import { SupportedLanguage as TeraConverterSupportedLangauge } from '../../projects/tera-converter/supported-language';
|
|
6
|
+
import { SupportedLanguage as TeraCalculatorSupportedLangauge } from '../../projects/tera-calculator/supported-language';
|
|
6
7
|
import { getLanguagesData } from "../../projects/common/all-language-data";
|
|
7
|
-
dotenv.config();
|
|
8
|
+
dotenv.config({ override: true, path: './.env.local' });
|
|
8
9
|
let openAiKey = process.env.OPENAI_API_KEY;
|
|
9
10
|
if (!openAiKey) {
|
|
10
11
|
throw new Error("Missing OpenAI API key");
|
|
@@ -68,12 +69,25 @@ async function translateContentDirectory(directory, sourceLanguage, outputLangua
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
|
-
async function
|
|
72
|
+
async function translateConverterMessage() {
|
|
72
73
|
// generate translated message for tera-converter
|
|
73
74
|
let tasks = getLanguagesData(TeraConverterSupportedLangauge)
|
|
74
75
|
.map(language => {
|
|
75
|
-
|
|
76
|
+
let directory = "../../projects/tera-converter/messages";
|
|
77
|
+
console.log('Translate', language, directory);
|
|
78
|
+
return translateContentDirectory(directory, "en", [language]);
|
|
76
79
|
});
|
|
77
80
|
await Promise.all(tasks);
|
|
78
81
|
}
|
|
79
|
-
|
|
82
|
+
async function translateCalculatorMessages() {
|
|
83
|
+
// generate translated message for tera-calculator
|
|
84
|
+
let tasks = getLanguagesData(TeraCalculatorSupportedLangauge)
|
|
85
|
+
.map(language => {
|
|
86
|
+
let directory = "../../projects/tera-calculator/messages";
|
|
87
|
+
console.log('Translate', language, directory);
|
|
88
|
+
return translateContentDirectory(directory, "en", [language]);
|
|
89
|
+
});
|
|
90
|
+
await Promise.all(tasks);
|
|
91
|
+
}
|
|
92
|
+
// translateConverterMessage().then()
|
|
93
|
+
translateCalculatorMessages().then();
|
|
@@ -47,7 +47,7 @@ export function getLanguagesData(langCodes) {
|
|
|
47
47
|
return langCodes.map(code => {
|
|
48
48
|
let language = ALL_LANGUAGE_LIST.find(lang => lang.code === code);
|
|
49
49
|
if (!language) {
|
|
50
|
-
throw new Error('Language data missing '
|
|
50
|
+
throw new Error('Language data missing ' + code);
|
|
51
51
|
}
|
|
52
52
|
return language;
|
|
53
53
|
});
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://inlang.com/schema/inlang-message-format",
|
|
3
|
+
"text_history": "السجل",
|
|
4
|
+
"text_variable": "المتغير",
|
|
5
|
+
"text_share_feedback": "شارك برأيك",
|
|
6
|
+
"text_login": "تسجيل الدخول",
|
|
7
|
+
"text_login_to_use_all_feature": "تسجيل الدخول لاستخدام جميع الميزات",
|
|
8
|
+
"text_calculation_history": "تاريخ الحسابات",
|
|
9
|
+
"text_save_and_sync_settings": "حفظ ومزامنة الإعدادات",
|
|
10
|
+
"text_utilize_advanced_features": "استخدام الميزات المتقدمة",
|
|
11
|
+
"text_feedback_title": "آراؤك تهمنا!",
|
|
12
|
+
"text_feedback_description": "شارك بأفكارك، اقتراحاتك، أو تجاربك باستخدام خدماتنا.",
|
|
13
|
+
"text_rating": "التقييم",
|
|
14
|
+
"text_placeholder_contact_email_optional": "Contact@example.com (اختياري)",
|
|
15
|
+
"text_placeholder_feedback_details_optional": "هل هناك شيء تريد إخبارنا به؟ (اختياري)",
|
|
16
|
+
"text_send_feedback": "إرسال الرأي",
|
|
17
|
+
"text_settings": "الإعدادات",
|
|
18
|
+
"text_settings_tab_common": "عام",
|
|
19
|
+
"text_settings_tab_format": "التنسيق",
|
|
20
|
+
"text_settings_tab_more": "المزيد",
|
|
21
|
+
"text_angle_unit": "وحدة الزاوية",
|
|
22
|
+
"text_default_output": "الإخراج الافتراضي",
|
|
23
|
+
"text_implied_multiplication": "الضرب الضمني",
|
|
24
|
+
"text_decimal_number_format_and_decimal_precision": "تنسيق الأرقام العشرية والدقة العشرية",
|
|
25
|
+
"text_precision": "الدقة",
|
|
26
|
+
"text_decimal_number_format": "تنسيق الأرقام العشرية",
|
|
27
|
+
"text_percentage_calculation_type": "نوع حساب النسبة المئوية",
|
|
28
|
+
"text_decimal_separator": "فاصل الأجزاء العشرية",
|
|
29
|
+
"text_thousand_separator": "فاصل الآلاف",
|
|
30
|
+
"text_thousandth_separator": "فاصل الألفية",
|
|
31
|
+
"text_scientific_notation": "الترقيم العلمي",
|
|
32
|
+
"text_use_indian_style_of_digit_grouping": "استخدام نمط التجميع الهندي للأرقام",
|
|
33
|
+
"text_example": "مثال",
|
|
34
|
+
"text_calculator_layout": "تخطيط الآلة الحاسبة",
|
|
35
|
+
"text_select_layout": "اختر التخطيط",
|
|
36
|
+
"text_reset_default_settings": "إعادة تعيين الإعدادات الافتراضية",
|
|
37
|
+
"text_auto": "تلقائي",
|
|
38
|
+
"text_vertical_layout": "تخطيط عمودي",
|
|
39
|
+
"text_horizontal_layout": "تخطيط أفقي",
|
|
40
|
+
"text_change_calculator_layout": "تغيير تخطيط الآلة الحاسبة",
|
|
41
|
+
"text_scientific_constant": "الثوابت العلمية",
|
|
42
|
+
"text_metric_conversions": "تحويلات المترية",
|
|
43
|
+
"text_matrix": "المصفوفة",
|
|
44
|
+
"text_insert_matrix": "إدراج مصفوفة",
|
|
45
|
+
"text_matrix_dimensions": "أبعاد المصفوفة",
|
|
46
|
+
"text_insert": "إدراج",
|
|
47
|
+
"text_close": "إغلاق",
|
|
48
|
+
"text_cancel": "إلغاء",
|
|
49
|
+
"text_confirm": "تأكيد",
|
|
50
|
+
"text_delete_calculation_history_confirm_title": "هل تريد حذف كل تاريخ الحسابات؟",
|
|
51
|
+
"text_delete_variables_confirm_title": "هل ترغب في مسح جميع قيم المتغير؟",
|
|
52
|
+
"text_reset_settings_confirm_title": "تأكيد إعادة تعيين الإعدادات",
|
|
53
|
+
"text_reset_settings_confirm_message": "سيتم حذف إعداداتك نهائيًا والعودة إلى الافتراضية",
|
|
54
|
+
"text_insert_expression_to_editor_confirm_title": "إدراج التعبير في المحرر؟",
|
|
55
|
+
"text_copy_as_plain_text": "نسخ كنص عادي",
|
|
56
|
+
"text_copy_as_latex": "نسخ كـ LaTeX",
|
|
57
|
+
"text_paste": "لصق",
|
|
58
|
+
"text_select_all": "تحديد الكل",
|
|
59
|
+
"text_insert_expression_to_the_editor": "إدراج التعبير في المحرر",
|
|
60
|
+
"text_view_result_format": "عرض صيغة النتيجة",
|
|
61
|
+
"text_result_format": "صيغة النتيجة",
|
|
62
|
+
"text_fraction": "كسر",
|
|
63
|
+
"text_prime_factor": "العامل الأولي",
|
|
64
|
+
"text_repeated_decimal": "عدد عشري مكرر",
|
|
65
|
+
"text_mixed_fraction": "كسر مختلط",
|
|
66
|
+
"text_numeric": "رقمي",
|
|
67
|
+
"text_calculation_feedback": "آراء حول الحسابات",
|
|
68
|
+
"text_result_was_incorrect": "النتيجة كانت غير صحيحة",
|
|
69
|
+
"text_unexpected_result_format": "صيغة النتيجة غير متوقعة",
|
|
70
|
+
"text_calculation_took_too_long": "استغرق الحساب وقتًا طويلاً",
|
|
71
|
+
"text_result_didnt_round_correctly": "النتيجة لم تُقرب بشكل صحيح",
|
|
72
|
+
"text_failed_to_handle_scientific_notation": "فشل في معالجة الترقيم العلمي",
|
|
73
|
+
"text_unexpected_error_happened": "حدث خطأ غير متوقع",
|
|
74
|
+
"text_other": "أخرى",
|
|
75
|
+
"text_provide_email_contact_description": "إعطائك بريدك الإلكتروني يساعدنا في المتابعة معك لحل مشكلتك بشكل أكثر فعالية (اختياري)",
|
|
76
|
+
"text_calculation_feedback_more_details_placeholder": "لا تتردد في إضافة مزيد من التفاصيل",
|
|
77
|
+
"text_submit": "إرسال",
|
|
78
|
+
"text_math_input_placeholder": "أدخل الرياضيات",
|
|
79
|
+
"text_math_input_calc_mode_placeholder": "أدخل قيمة المتغير",
|
|
80
|
+
"text_FUNCTION_NOT_SUPPORT_IN_MODE": "هذه الوظيفة غير مدعومة في الوضع الحالي",
|
|
81
|
+
"text_CANNOT_CONVERT_TO_MIXED_FRACTION": "لا يمكن التحويل إلى كسر مختلط",
|
|
82
|
+
"text_CANNOT_CONVERT_TO_DMS": "لا يمكن التحويل إلى صيغة DMS",
|
|
83
|
+
"text_CANNOT_CONVERT_TO_FRACTION": "لا يمكن التحويل إلى صيغة الكسر",
|
|
84
|
+
"text_unknown_error_occurred": "حدث خطأ غير معروف",
|
|
85
|
+
"text_skip_this_time": "تخطي هذه المرة",
|
|
86
|
+
"text_separator_space": "مسافة",
|
|
87
|
+
"text_separator_comma": "فاصلة",
|
|
88
|
+
"text_separator_dot": "نقطة",
|
|
89
|
+
"text_separator_nothing": "لا شيء",
|
|
90
|
+
"text_separator_apostrophe": "فاصلة عليا",
|
|
91
|
+
"text_separator_underscore": "شرطة تحتية",
|
|
92
|
+
"text_point": "نقطة",
|
|
93
|
+
"text_decimal": "عشري",
|
|
94
|
+
"text_key_will_insert": "سيقوم {keyName} {symbol} بإدراج {text}",
|
|
95
|
+
"text_period_key": "مفتاح النقطة",
|
|
96
|
+
"text_comma_key": "مفتاح الفاصلة",
|
|
97
|
+
"text_function_argument_separator": "فاصل حجة الوظيفة",
|
|
98
|
+
"text_key_mapping_symbol_title": "أي رمز يجب أن يمثل المفتاح {key}؟",
|
|
99
|
+
"text_decimal_separator_will_be_comma_symbol": "فاصل الأجزاء العشرية سيكون رمزًا فاصلة {symbol}",
|
|
100
|
+
"text_you_can_change_the_configuration_later_in_settings": "يمكنك تغيير الإعدادات لاحقًا في الإعدادات",
|
|
101
|
+
"text_save": "حفظ",
|
|
102
|
+
"text_fullscreen_mode": "وضع ملء الشاشة",
|
|
103
|
+
"text_exit_fullscreen_mode": "الخروج من وضع ملء الشاشة",
|
|
104
|
+
"text_success": "نجاح",
|
|
105
|
+
"text_scroll_to_calculator": "التمرير إلى الآلة الحاسبة"
|
|
106
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://inlang.com/schema/inlang-message-format",
|
|
3
|
+
"text_history": "История",
|
|
4
|
+
"text_variable": "Променлива",
|
|
5
|
+
"text_share_feedback": "Споделете обратна връзка",
|
|
6
|
+
"text_login": "Вход",
|
|
7
|
+
"text_login_to_use_all_feature": "Влезте, за да използвате всички функции",
|
|
8
|
+
"text_calculation_history": "История на изчисленията",
|
|
9
|
+
"text_save_and_sync_settings": "Запазване и синхронизиране на настройките",
|
|
10
|
+
"text_utilize_advanced_features": "Използвайте разширени функции",
|
|
11
|
+
"text_feedback_title": "Вашето мнение е важно!",
|
|
12
|
+
"text_feedback_description": "Споделете вашите мисли, предложения или опит при използване на нашите услуги.",
|
|
13
|
+
"text_rating": "Оценка",
|
|
14
|
+
"text_placeholder_contact_email_optional": "Contact@example.com (опционално)",
|
|
15
|
+
"text_placeholder_feedback_details_optional": "Имате нещо, което да ни кажете? (опционално)",
|
|
16
|
+
"text_send_feedback": "Изпратете обратна връзка",
|
|
17
|
+
"text_settings": "Настройки",
|
|
18
|
+
"text_settings_tab_common": "Общи",
|
|
19
|
+
"text_settings_tab_format": "Формат",
|
|
20
|
+
"text_settings_tab_more": "Още",
|
|
21
|
+
"text_angle_unit": "Единица за ъгли",
|
|
22
|
+
"text_default_output": "По подразбиране изход",
|
|
23
|
+
"text_implied_multiplication": "Имплицитно умножение",
|
|
24
|
+
"text_decimal_number_format_and_decimal_precision": "Десетичен формат & Точност на десетичните числа",
|
|
25
|
+
"text_precision": "Точност",
|
|
26
|
+
"text_decimal_number_format": "Десетичен формат",
|
|
27
|
+
"text_percentage_calculation_type": "Тип изчисление на процент",
|
|
28
|
+
"text_decimal_separator": "Десетичен разделител",
|
|
29
|
+
"text_thousand_separator": "Разделител на хилядите",
|
|
30
|
+
"text_thousandth_separator": "Разделител на хилядните",
|
|
31
|
+
"text_scientific_notation": "Научна нотация",
|
|
32
|
+
"text_use_indian_style_of_digit_grouping": "Използвайте индийски стил на групиране на цифри",
|
|
33
|
+
"text_example": "Пример",
|
|
34
|
+
"text_calculator_layout": "Оформление на калкулатора",
|
|
35
|
+
"text_select_layout": "Изберете оформление",
|
|
36
|
+
"text_reset_default_settings": "Нулиране на настройките по подразбиране",
|
|
37
|
+
"text_auto": "Автоматично",
|
|
38
|
+
"text_vertical_layout": "Вертикално оформление",
|
|
39
|
+
"text_horizontal_layout": "Хоризонтално оформление",
|
|
40
|
+
"text_change_calculator_layout": "Променете оформлението на калкулатора",
|
|
41
|
+
"text_scientific_constant": "Научна константа",
|
|
42
|
+
"text_metric_conversions": "Метрични преобразувания",
|
|
43
|
+
"text_matrix": "Матрица",
|
|
44
|
+
"text_insert_matrix": "Вмъкване на матрица",
|
|
45
|
+
"text_matrix_dimensions": "Размери на матрицата",
|
|
46
|
+
"text_insert": "Вмъкване",
|
|
47
|
+
"text_close": "Затвори",
|
|
48
|
+
"text_cancel": "Отказ",
|
|
49
|
+
"text_confirm": "Потвърди",
|
|
50
|
+
"text_delete_calculation_history_confirm_title": "Искате ли да изтриете цялата история на изчисленията?",
|
|
51
|
+
"text_delete_variables_confirm_title": "Искате ли да изтриете всички стойности на променливите?",
|
|
52
|
+
"text_reset_settings_confirm_title": "Потвърждение за нулиране на настройките",
|
|
53
|
+
"text_reset_settings_confirm_message": "Това действие ще изтрие трайно вашите настройки и ще ги върне към първоначалните",
|
|
54
|
+
"text_insert_expression_to_editor_confirm_title": "Да вмъкнем ли израза в редактора?",
|
|
55
|
+
"text_copy_as_plain_text": "Копирайте като обикновен текст",
|
|
56
|
+
"text_copy_as_latex": "Копирайте като LaTeX",
|
|
57
|
+
"text_paste": "Поставете",
|
|
58
|
+
"text_select_all": "Изберете всички",
|
|
59
|
+
"text_insert_expression_to_the_editor": "Вмъкнете израза в редактора",
|
|
60
|
+
"text_view_result_format": "Вижте формата на резултата",
|
|
61
|
+
"text_result_format": "Формат на резултата",
|
|
62
|
+
"text_fraction": "Дроб",
|
|
63
|
+
"text_prime_factor": "Прост множител",
|
|
64
|
+
"text_repeated_decimal": "Повтарящо се десетично число",
|
|
65
|
+
"text_mixed_fraction": "Смесена дроб",
|
|
66
|
+
"text_numeric": "Числов",
|
|
67
|
+
"text_calculation_feedback": "Обратна връзка за изчисление",
|
|
68
|
+
"text_result_was_incorrect": "Резултатът беше неверен",
|
|
69
|
+
"text_unexpected_result_format": "Неочакван формат на резултата",
|
|
70
|
+
"text_calculation_took_too_long": "Изчислението отне твърде много време",
|
|
71
|
+
"text_result_didnt_round_correctly": "Резултатът не се закръгли правилно",
|
|
72
|
+
"text_failed_to_handle_scientific_notation": "Неуспешно обработване на научната нотация",
|
|
73
|
+
"text_unexpected_error_happened": "Настъпи неочаквана грешка",
|
|
74
|
+
"text_other": "Друго",
|
|
75
|
+
"text_provide_email_contact_description": "Предоставянето на вашия имейл ни помага да се свържем с вас, за да разрешим проблема по-ефективно (опционално)",
|
|
76
|
+
"text_calculation_feedback_more_details_placeholder": "Чувствайте се свободни да добавите повече подробности",
|
|
77
|
+
"text_submit": "Изпрати",
|
|
78
|
+
"text_math_input_placeholder": "Въведете математически израз",
|
|
79
|
+
"text_math_input_calc_mode_placeholder": "Въведете стойност на променливата",
|
|
80
|
+
"text_FUNCTION_NOT_SUPPORT_IN_MODE": "Функцията не се поддържа в текущия режим",
|
|
81
|
+
"text_CANNOT_CONVERT_TO_MIXED_FRACTION": "Не може да се преобразува в смесена дроб",
|
|
82
|
+
"text_CANNOT_CONVERT_TO_DMS": "Не може да се преобразува в DMS формат",
|
|
83
|
+
"text_CANNOT_CONVERT_TO_FRACTION": "Не може да се преобразува в дробен формат",
|
|
84
|
+
"text_unknown_error_occurred": "Възникнала е неизвестна грешка",
|
|
85
|
+
"text_skip_this_time": "Пропуснете този път",
|
|
86
|
+
"text_separator_space": "Интервал",
|
|
87
|
+
"text_separator_comma": "Запетая",
|
|
88
|
+
"text_separator_dot": "Точка",
|
|
89
|
+
"text_separator_nothing": "Нищо",
|
|
90
|
+
"text_separator_apostrophe": "Апостроф",
|
|
91
|
+
"text_separator_underscore": "Долно тире",
|
|
92
|
+
"text_point": "Точка",
|
|
93
|
+
"text_decimal": "Десетичен знак",
|
|
94
|
+
"text_key_will_insert": "Клавишът {keyName} {symbol} ще вмъкне {text}",
|
|
95
|
+
"text_period_key": "Клавиш за точка",
|
|
96
|
+
"text_comma_key": "Клавиш за запетая",
|
|
97
|
+
"text_function_argument_separator": "Разделител за аргумент на функция",
|
|
98
|
+
"text_key_mapping_symbol_title": "Кой символ трябва да представя клавишът {key}?",
|
|
99
|
+
"text_decimal_separator_will_be_comma_symbol": "Десетичният разделител ще бъде символ запетая {symbol}",
|
|
100
|
+
"text_you_can_change_the_configuration_later_in_settings": "Можете да промените конфигурацията по-късно в настройките",
|
|
101
|
+
"text_save": "Запазване",
|
|
102
|
+
"text_fullscreen_mode": "Режим на цял екран",
|
|
103
|
+
"text_exit_fullscreen_mode": "Изход от режим на цял екран",
|
|
104
|
+
"text_success": "Успех",
|
|
105
|
+
"text_scroll_to_calculator": "Превъртете до калкулатора"
|
|
106
|
+
}
|