Arabic language

This commit is contained in:
viliusle 2021-02-14 18:32:02 +02:00
parent 3f8b4f4058
commit 59b19f69a8
9 changed files with 568 additions and 28 deletions

View File

@ -645,6 +645,10 @@ const menuDefinition = [
{
divider: true
},
{
name: 'عربي',
target: 'tools/translate.translate.ar'
},
{
name: '简体中文',
target: 'tools/translate.translate.zh'

View File

@ -33,6 +33,7 @@ config.themes = [
'green',
];
//no-translate BEGIN
config.FONTS = [
"Arial",
"Courier",
@ -71,6 +72,7 @@ config.FONTS = [
"Titillium Web",
"Ubuntu"
];
//no-translate END
config.TOOLS = [
{

View File

@ -47,7 +47,7 @@ const sidebarTemplate = `
<div id="color_section_picker" class="block_section">
<input id="color_picker_gradient" type="color" aria-label="Color Selection">
<div class="ui_input_group stacked">
<label id="color_hex_label" title="Hex" class="label_width_small">Hex</label>
<label id="color_hex_label" title="Hex" class="label_width_small trn">Hex</label>
<input id="color_hex" aria-labelledby="color_hex_label" value="#000000" maxlength="7" type="text" />
</div>
</div>
@ -113,7 +113,7 @@ const dialogTemplate = `
</div>
<div id="dialog_color_channel_group">
<div class="ui_input_group stacked">
<label id="dialog_color_hex_label" title="Hex" class="label_width_small">Hex</label>
<label id="dialog_color_hex_label" title="Hex" class="label_width_small trn">Hex</label>
<input id="dialog_color_hex" aria-labelledby="dialog_color_hex_label" value="#000000" maxlength="7" type="text" />
</div>
<div class="ui_input_grid stacked">

View File

@ -15,10 +15,10 @@ var template = `
</div>
<div class="canvas_preview_details">
<div class="details">
<input title="Zoom out" class="layer_add" id="zoom_less" type="button" value="-" />
<input title="Reset zoom level" class="layer_add" id="zoom_100" type="button" value="100%" />
<input title="Zoom in" class="layer_add" id="zoom_more" type="button" value="+" />
<input class="layer_add" id="zoom_fit" type="button" value="Fit" />
<button title="Zoom out" class="layer_add trn" id="zoom_less"">-</button>
<button title="Reset zoom level" class="layer_add trn" id="zoom_100"">100%</button>
<button title="Zoom in" class="layer_add trn" id="zoom_more"">+</button>
<button class="layer_add trn" id="zoom_fit">Fit</button>
</div>
<input id="zoom_range" type="range" value="100" min="50" max="1000" step="50" />
</div>

503
src/js/languages/ar.json Normal file
View File

@ -0,0 +1,503 @@
{
"11px Arial": "11 بكسل Arial",
"1em": "1em",
"24-Points star": "24 نقطة نجمة",
"2d": "2 د",
"3a0339": "3a0339",
"480p": "480 ص",
"A problem occurred while removing undo history. It": "حدثت مشكلة أثناء إزالة محفوظات التراجع. هو - هي",
"About": "حول",
"Active": "نشيط",
"Add Borders": "أضف الحدود",
"Aden": "عدن",
"Advanced": "متقدم",
"All": "الجميع",
"Alpha": "ألفا",
"Alpha:": "ألفا:",
"Anonymous": "مجهول",
"Anti aliasing": "مكافحة التعرج",
"Arial": "اريال",
"Arrow": "سهم",
"ArrowDown": "السهم للاسفل",
"ArrowLeft": "السهم لليسار",
"ArrowRight": "السهم الأيمن",
"ArrowUp": "ارووب",
"Author:": "مؤلف:",
"Auto Adjust Colors": "ضبط تلقائي للألوان",
"Auto Kerning": "تقنين تلقائي لتقنين الأحرف",
"Average:": "متوسط:",
"Backspace": "مسافة للخلف",
"Base": "يتمركز",
"Basic": "أساسي",
"Black and White": "اسود و ابيض",
"Blue": "أزرق",
"Blue channel:": "القناة الزرقاء:",
"Blueprint": "مخطط",
"Blur Radius:": "نصف قطر التمويه:",
"Blur Tool": "أداة طمس",
"Blur power:": "قوة طمس:",
"Borders": "الحدود",
"Bottom": "قاع",
"Bottom to Top": "من الأسفل للأعلى",
"Bounds:": "الحدود:",
"Box": "علبة",
"Box Blur": "مربع طمس",
"Box blur": "مربع طمس",
"Brightness": "سطوع",
"Brightness:": "سطوع:",
"Bulge\/Pinch Tool": "أداة انتفاخ \/ قرصة",
"Burn": "حرق",
"Can not animate 1 layer.": "لا يمكن تحريك طبقة واحدة.",
"Can not find previous layer.": "لا يمكن العثور على الطبقة السابقة.",
"Cancel": "يلغي",
"Canvas size": "حجم قماش",
"Center": "مركز",
"Center x:": "المركز x:",
"Center y:": "مركز ص:",
"Center:": "مركز:",
"Change Composition": "تغيير التكوين",
"Change Layer Details": "تغيير تفاصيل الطبقة",
"Change Opacity": "تغيير التعتيم",
"Channel:": "قناة:",
"Circle": "دائرة",
"Clarendon": "كلاريندون",
"Clear": "واضح",
"Clear Selection": "التحديد الواضح",
"Clone Tool": "أداة استنساخ",
"Clone count:": "عدد النسخ:",
"Clone tool disabled for resized image. Sorry.": "تم تعطيل أداة النسخ للصورة التي تم تغيير حجمها. آسف.",
"Cloned edges": "حواف مستنسخة",
"Color #": "اللون #",
"Color Corrections": "تصحيحات اللون",
"Color Palette": "لوحة الألوان",
"Color Zoom": "تكبير اللون",
"Color alpha value can not be zero.": "لا يمكن أن تكون قيمة ألفا للون صفراً.",
"Color to Alpha": "لون ألفا",
"Color zoom": "تكبير اللون",
"Color:": "اللون:",
"Colors": "الألوان",
"Colors:": "الألوان:",
"Common Filters": "مرشحات مشتركة",
"Composition": "تكوين",
"Composition:": "تكوين:",
"Content Fill": "تعبئة المحتوى",
"Contrast": "مقابلة",
"Contrast:": "مقابلة:",
"Convert to Raster": "تحويل إلى نقطي",
"Copy Selection": "نسخ التحديد",
"Copy to Clipboard": "نسخ إلى الحافظة",
"Copy:": "ينسخ:",
"Courier": "ساعي",
"Crop Tool": "أداة المحاصيل",
"Crop on rotated layer is not supported. Convert it to raster to continue.": "القص على الطبقة التي تم تدويرها غير مدعوم. قم بتحويله إلى خطوط المسح للمتابعة.",
"Ctrl+A": "السيطرة + أ",
"Ctrl+C": "Ctrl + C",
"Ctrl+V": "السيطرة + V.",
"Ctrl+Y": "Ctrl + Y",
"Ctrl+Z": "السيطرة + Z",
"Ctrl-P": "السيطرة- P",
"Current": "تيار",
"Current Color Preview": "معاينة اللون الحالي",
"Custom": "مخصص",
"Data URL": "URL البيانات",
"Data URL:": "URL البيانات:",
"Decrease": "تخفيض",
"Decrease Color Depth": "تقليل عمق اللون",
"Degree:": "درجة:",
"Del": "ديل",
"Delete": "حذف",
"Delete Selection": "حذف التحديد",
"Denoise": "يقلل الضوضاء",
"Desaturate Tool": "أداة إزالة التشبع",
"Description:": "وصف:",
"Deutsch": "الألمانية",
"Differences": "اختلافات",
"Differences Down": "الخلافات أسفل",
"Direction:": "اتجاه:",
"Dither": "ثبات",
"Dithering:": "التردد:",
"Dominant color:": "اللون السائد:",
"Dot Screen": "شاشة نقطية",
"Down": "أسفل",
"Duplicate": "ينسخ",
"Duplicate Layer": "طبقة مكررة",
"Dynamic": "متحرك",
"Edge": "حافة",
"Edit": "يحرر",
"Edit text...": "تحرير النص...",
"Effect browser": "متصفح التأثير",
"Effects": "تأثيرات",
"Effects browser": "متصفح التأثيرات",
"Email:": "بريد الالكتروني:",
"Emboss": "زخرف",
"Empty selection": "اختيار فارغ",
"Empty selection or type not image.": "اختيار فارغ أو اكتب ليس صورة.",
"Enable guides:": "تمكين الأدلة:",
"Enable snap:": "تمكين المحاذاة:",
"End": "نهاية",
"English": "الإنجليزية",
"Enrich": "يثرى",
"Enter": "يدخل",
"Erase Tool": "أداة المحو",
"Erase on rotate object is disabled. Sorry.": "تم تعطيل المحو عند تدوير الكائن. آسف.",
"Error": "خطأ",
"Error connecting to service.": "خطأ في الاتصال بالخدمة.",
"Error registering service worker": "خطأ في تسجيل عامل الخدمة",
"Error: can not find filter:": "خطأ: لا يمكن العثور على عامل التصفية:",
"Error: can not find layer with id:": "خطأ: لا يمكن العثور على طبقة بالمعرف:",
"Error: missing details event target": "خطأ: تفاصيل الهدف حدث مفقود",
"Error: unknown layer type:": "خطأ: نوع طبقة غير معروف:",
"Esc": "خروج",
"Escape": "يهرب",
"Español": "الاسبانية",
"Expand edges": "قم بتوسيع الحواف",
"Exponent:": "الأس:",
"Export": "يصدر",
"External": "خارجي",
"Factor:": "عامل:",
"File": "ملف",
"File name:": "اسم الملف:",
"File size:": "حجم الملف:",
"Fill": "ملء",
"Fill Tool": "أداة التعبئة",
"Fit": "ملائم",
"Fit Window": "تناسب النافذة",
"Flatten Image": "تسطيح الصورة",
"Flip": "يواجه",
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
"Font": "الخط",
"Français": "الفرنسية",
"Full HD, 1080p": "دقة Full HD ، 1080 بكسل",
"Full Screen": "تكبير الشاشة",
"Full layers data": "بيانات الطبقات الكاملة",
"Gap:": "الفارق:",
"Gaussian Blur": "التمويه الضبابي",
"Gif delay:": "تأخير Gif:",
"Gingham": "القماش القطني",
"GitHub:": "جيثب:",
"Gradient Radius:": "نصف قطر التدرج:",
"Grains": "بقوليات",
"Graphics Interchange Format": "تنسيق تبادل الرسومات",
"Gray": "رمادي",
"Grayscale": "تدرج الرمادي",
"Green": "لون أخضر",
"Green channel:": "القناة الخضراء:",
"Greyscale:": "الرمادي:",
"Grid": "شبكة",
"Grid on\/off": "الشبكة على \/ قبالة",
"Guides": "خطوط إرشاد",
"Guides enabled.": "تم تمكين الأدلة.",
"H Radius:": "نصف قطر H:",
"H. Align:": "ح. محاذاة:",
"Heatmap": "خريطة الحرارة",
"Height (%):": "ارتفاع (٪):",
"Height:": "ارتفاع:",
"Help": "مساعدة",
"Helvetica": "هيلفيتيكا",
"Hermite": "هيرمايت",
"Hex": "عرافة",
"Histogram": "الرسم البياني",
"Histogram:": "الرسم البياني:",
"Home": "الصفحة الرئيسية",
"Horizontal": "أفقي",
"Horizontal Alignment": "المحاذاة الأفقية",
"Horizontal blur:": "طمس أفقي:",
"Horizontal:": "أفقي:",
"Hue": "مسحة",
"Hue Rotate": "تدوير هوى",
"Hue:": "مسحة:",
"Image": "صورة",
"Image data with multi-layers. Can be opened using miniPaint -": "بيانات الصورة متعددة الطبقات. يمكن فتحه باستخدام miniPaint -",
"Impact": "تأثير",
"Increase": "زيادة",
"Information": "معلومة",
"Inkwell": "محبرة",
"Insert": "إدراج",
"Insert guides": "أدلة إدراج",
"Insert:": "إدراج:",
"Instagram Filters": "مرشحات Instagram",
"Invalid Hex Code": "رمز سداسي عشري غير صالح",
"Italiano": "ايطالي",
"JPG\/JPEG Format": "تنسيق JPG \/ JPEG",
"Kerning:": "تقنين الأحرف:",
"Key-Points": "النقاط الرئيسية",
"KeyU": "KeyU",
"Keyboard Shortcuts": "اختصارات لوحة المفاتيح",
"Keyword:": "الكلمة الرئيسية:",
"Lanczos": "لانكوز",
"Language": "لغة",
"Last modified": "آخر تعديل",
"Layer": "طبقة",
"Layer details": "تفاصيل الطبقة",
"Layer is not compatible with resize": "الطبقة غير متوافقة مع تغيير الحجم",
"Layer is vector, convert it to raster to apply this tool.": "الطبقة متجهية ، قم بتحويلها إلى خطوط نقطية لتطبيق هذه الأداة.",
"Layers": "طبقات",
"Layers:": "طبقات:",
"Left": "اليسار",
"Left to Right": "من اليسار إلى اليمين",
"Level:": "مستوى:",
"Levels:": "المستويات:",
"Lietuvių": "ليتوفيتش",
"Lo-fi": "Lo-fi",
"Luminance:": "الانارة:",
"Luminosity": "لمعان",
"Magic Eraser Tool": "أداة ماجيك ممحاة",
"Merge Down": "دمج أسفل",
"Merge Layers": "دمج الطبقات",
"Merged": "مندمجة",
"Metrics": "المقاييس",
"Middle": "وسط",
"Missing at least 1 size parameter.": "معلمة حجم واحدة مفقودة على الأقل.",
"Missing permissions to write to Clipboard.cc": "أذونات مفقودة للكتابة إلى Clipboard.cc",
"Mode:": "الوضع:",
"Module function not found.": "لم يتم العثور على وظيفة الوحدة النمطية.",
"Modules class not found:": "فئة الوحدات غير موجودة:",
"Monospace": "مونوسبيس",
"Mosaic": "فسيفساء",
"Mouse:": "الفأر:",
"Move": "يتحرك",
"Move Layer": "تحريك الطبقة",
"Move down": "تحرك لأسفل",
"Move up": "تحرك",
"Name:": "اسم:",
"Needs at least 2 layers.": "تحتاج إلى طبقتين على الأقل.",
"Negative": "سلبي",
"New": "جديد",
"New Brush Layer": "طبقة فرشاة جديدة",
"New Ellipse Layer": "طبقة Ellipse جديدة",
"New File": "ملف جديد",
"New Gradient Layer": "طبقة متدرجة جديدة",
"New Layer": "طبقة جديدة",
"New Line Layer": "طبقة خط جديدة",
"New Pencil Layer": "طبقة قلم رصاص جديدة",
"New Rectangle Layer": "طبقة مستطيل جديدة",
"New Text Layer": "طبقة نص جديدة",
"New file": "ملف جديد",
"New from Selection": "جديد من التحديد",
"New layer": "طبقة جديدة",
"New width can not be smaller then current width": "لا يمكن أن يكون العرض الجديد أصغر من العرض الحالي",
"Night Vision": "الرؤية الليلية",
"None": "لا أحد",
"Nothing is selected.": "لم يتم اختيار شيء.",
"Offset X:": "تعويض X:",
"Offset Y:": "تعويض ص:",
"Oil": "زيت",
"Ok": "موافق",
"Online image editor.": "محرر الصور على الإنترنت.",
"Opacity": "العتامة",
"Opacity:": "العتامة:",
"Open": "فتح",
"Open Data URL": "فتح URL البيانات",
"Open Directory": "الدليل المفتوح",
"Open File": "افتح ملف",
"Open File Data URL": "فتح ملف بيانات URL",
"Open File URL": "فتح ملف URL",
"Open File Webcam": "افتح ملف كاميرا الويب",
"Open Image": "صورة مفتوحة",
"Open JSON File": "افتح ملف JSON",
"Open Test Template": "افتح نموذج الاختبار",
"Open URL": "رابط مفتوح",
"Open data URL": "فتح URL البيانات",
"Open from Webcam": "افتح من كاميرا الويب",
"Original Size": "الحجم الأصلي",
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - تحويل الصورة إلى SVG",
"PageDown": "اسفل الصفحة",
"PageUp": "PageUp",
"Palette": "لوحة",
"Parameter #1:": "المعلمة # 1:",
"Parameter #2:": "المعلمة # 2:",
"Paste": "معجون",
"Pencil": "قلم",
"Percentage:": "النسبة المئوية:",
"Pixels:": "بكسل:",
"Placeholder comment for color channels": "تعليق العنصر النائب لقنوات الألوان",
"Placeholder comment for color picker": "تعليق العنصر النائب لمنتقي الألوان",
"Placeholder comment for color swatches": "تعليق العنصر النائب لحوامل اللون",
"Portable Network Graphics": "رسومات الشبكة المحمولة",
"Português": "البرتغالية",
"Position:": "موقع:",
"Power:": "قوة:",
"Preview": "معاينة",
"Previous": "سابق",
"Previous layer must be image, convert it to raster to apply this tool.": "يجب أن تكون الطبقة السابقة صورة ، قم بتحويلها إلى نقطية لتطبيق هذه الأداة.",
"Print": "مطبعة",
"Quality:": "جودة:",
"Quick Load": "تحميل سريع",
"Quick Save": "حفظ سريع",
"REMOVE.BG - Remove Image Background": "؛ REMOVE.BG - إزالة خلفية الصورة",
"Radial": "شعاعي",
"Radial gradient": "شعاعي التدرج",
"Radius:": "نصف القطر:",
"Range:": "نطاق:",
"Red": "أحمر",
"Red channel:": "القناة الحمراء:",
"Redo": "إعادة",
"Remove all": "حذف الكل",
"Rename": "إعادة تسمية",
"Rename Layer": "إعادة تسمية الطبقة",
"Rendered with errors.": "قدمت مع وجود أخطاء.",
"Rendering...": "استدعاء...",
"Replace Color": "استبدل اللون",
"Replace color": "استبدل اللون",
"Replacement:": "إستبدال:",
"Report Issues": "الإبلاغ عن المشكلات",
"Reset": "إعادة ضبط",
"Reset zoom level": "إعادة تعيين مستوى التكبير",
"Resize": "تغيير الحجم",
"Resize Boundary": "تغيير حجم الحدود",
"Resize Layer": "طبقة تغيير الحجم",
"Resize Layers": "تغيير حجم الطبقات",
"Resize Text Layer": "تغيير حجم طبقة النص",
"Resized as background": "تم تغيير الحجم كخلفية",
"Resolution:": "القرار:",
"Restore Alpha": "استعادة ألفا",
"Right": "حق",
"Right angle:": "زاوية مستقيمة:",
"Right to Left": "من اليمين الى اليسار",
"Rotate": "استدارة",
"Rotate Layer": "تدوير طبقة",
"Rotate is not supported on this type of object. Convert to raster?": "التدوير غير مدعوم في هذا النوع من الكائنات. تحويل إلى نقطية؟",
"Rotate left": "استدر يسارا",
"Rotate:": "استدارة:",
"Ruler": "مسطرة",
"SQUOOSH - Compress and Compare Images": "SQUOOSH - ضغط ومقارنة الصور",
"Saturate": "تشبع",
"Saturation": "التشبع",
"Saturation:": "التشبع:",
"Save (Export)": "حفظ (تصدير)",
"Save As": "حفظ باسم",
"Save As Data URL": "حفظ باسم URL البيانات",
"Save as": "حفظ باسم",
"Save as type:": "حفظ كنوع:",
"Save layers:": "حفظ الطبقات:",
"Save resolution:": "حفظ القرار:",
"Scaling up is not supported in Hermite, using Lanczos.": "التوسع غير مدعوم في Hermite ، باستخدام Lanczos.",
"Scroll down": "حرك الفأرة لأسفل",
"Scroll up": "انتقل إلى أعلى",
"Search": "بحث",
"Search Images": "البحث عن الصور",
"Select All": "اختر الكل",
"Select Text Layer": "حدد طبقة النص",
"Select object tool": "حدد أداة الكائن",
"Selected": "المحدد",
"Selection Tool": "آلة الاختيار",
"Sensitivity:": "حساسية:",
"Separated": "منفصل",
"Sepia": "بني داكن",
"Set Image Size": "ضبط حجم الصورة",
"Settings": "إعدادات",
"Shadow": "ظل",
"Shadow:": "ظل:",
"Shapes": "الأشكال",
"Sharpen": "شحذ",
"Sharpen Tool": "أداة شحذ",
"Sharpen:": "شحذ:",
"Shortcut Key:": "مفتاح الاختصار:",
"Show \/ Hide": "اظهر المخفي",
"Show file size:": "إظهار حجم الملف:",
"Simple": "بسيط",
"Size": "مقاس",
"Size is too big, max": "الحجم كبير جدًا ، الحد الأقصى",
"Size:": "مقاس:",
"Skip - layer must be image.": "تخطي - يجب أن تكون الطبقة عبارة عن صورة.",
"Solarize": "شمسي",
"Sorry, cold not load getUserMedia() data:": "عذرا ، لا تقم بتحميل بيانات getUserMedia ():",
"Sorry, image could not be loaded.": "عذرا ، الصورة لا يمكن تحميلها.",
"Sorry, image could not be loaded. Try copy image and paste it.": "عذرا ، الصورة لا يمكن تحميلها. حاول نسخ الصورة ولصقها.",
"Sorry, image is too big, max 5 MB.": "عذرًا ، الصورة كبيرة جدًا ، بحد أقصى 5 ميجا بايت.",
"Source coordinates saved.": "تم حفظ إحداثيات المصدر.",
"Source is empty, right click on image or use long press to save source position.": "المصدر فارغ ، انقر بزر الماوس الأيمن على الصورة أو استخدم الضغط لفترة طويلة لحفظ موضع المصدر.",
"Sprites": "العفاريت",
"Square": "مربع",
"Stream:": "مجرى:",
"Strength:": "قوة:",
"Strict": "صارم",
"TINYPNG - Compress PNG and JPEG": "TINYPNG - ضغط PNG و JPEG",
"Tab": "فاتورة غير مدفوعة",
"Tag Image File Format": "تنسيق ملف صورة العلامة",
"Tahoma": "تاهوما",
"Target:": "استهداف:",
"Theme": "سمة",
"There": "هناك",
"There are no layers behind.": "لا توجد طبقات خلف.",
"There is only 1 layer.": "هناك طبقة واحدة فقط.",
"This layer must contain an image. Please convert it to raster to apply this tool.": "يجب أن تحتوي هذه الطبقة على صورة. يرجى تحويله إلى نقطية لتطبيق هذه الأداة.",
"Tilt Shift": "تحول الإمالة",
"Times New Roman": "تايمز نيو رومان",
"Toaster": "محمصة",
"Toggle": "تبديل",
"Toggle Color Channels": "تبديل قنوات الألوان",
"Toggle Color Picker": "تبديل منتقي الألوان",
"Toggle Menu": "تبديل القائمة",
"Toggle Swatches": "تبديل العينات",
"Tools": "أدوات",
"Top": "قمة",
"Top to Bottom": "من اعلى لاسفل",
"Total pixels:": "إجمالي وحدات البكسل:",
"Translate": "ترجمة",
"Translate Layer": "طبقة الترجمة",
"Translate error, can not find dictionary:": "خطأ في الترجمة ، لا يمكن العثور على القاموس:",
"Transparency background:": "خلفية الشفافية:",
"Transparent:": "شفاف:",
"Trim": "تقليم",
"Trim Layers": "طبقات القطع",
"Trim borders:": "تقليم الحدود:",
"Trim layer:": "طبقة القطع:",
"Trim white color?": "تقليم اللون الأبيض؟",
"Type:": "اكتب:",
"Türkçe": "Türkçe",
"Undo": "الغاء التحميل",
"Unique colors:": "ألوان فريدة:",
"Up": "فوق",
"Update": "تحديث",
"Update Brush Layer": "تحديث طبقة الفرشاة",
"Update Pencil Layer": "تحديث طبقة القلم الرصاص",
"Update guides": "أدلة التحديث",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "استخدم اختصار لوحة المفاتيح Ctrl + V للصق من الحافظة.",
"V Radius:": "نصف القطر الخامس:",
"V. Align:": "V. محاذاة:",
"Valencia": "فالنسيا",
"Verdana": "فيردانا",
"Version:": "الإصدار:",
"Vertical": "رأسي",
"Vertical Alignment": "انحياز عمودي",
"Vertical blur:": "التمويه العمودي:",
"Vertical:": "رأسي:",
"Vibrance": "حيوية",
"View": "رأي",
"Vignette": "المقالة القصيرة",
"ViliusL": "ViliusL",
"Vintage": "كلاسيكي",
"Webcam": "كاميرا ويب",
"Webcam #": "كاميرا ويب #",
"Website:": "موقع الكتروني:",
"Weppy File Format": "تنسيق ملف Weppy",
"Width (%):": "عرض (٪):",
"Width:": "عرض:",
"Windows Bitmap": "Windows Bitmap",
"Word": "كلمة",
"Word + Letter": "كلمة + حرف",
"Wrap At:": "التفاف في:",
"Wrap:": "لف:",
"Wrong dimensions": "أبعاد خاطئة",
"Wrong file type, must be image or json.": "نوع الملف غير صحيح ، يجب أن يكون صورة أو json.",
"X end:": "نهاية X:",
"X position:": "المركز العاشر:",
"X start:": "بداية X:",
"X-Pro II": "اكس برو الثاني",
"Y end:": "نهاية ص:",
"Y position:": "موقف ص:",
"Y start:": "بداية Y:",
"You can also drag and drop items into browser.": "يمكنك أيضًا سحب العناصر وإفلاتها في المتصفح.",
"Your browser does not support canvas or JavaScript is not enabled.": "لا يدعم المستعرض الخاص بك اللوحة القماشية أو لم يتم تمكين JavaScript.",
"Your browser does not support this format.": "متصفحك لا يدعم هذا التنسيق.",
"Your search did not match any images.": "بحثك لم يطابق أي صور.",
"Zoom": "تكبير",
"Zoom Blur": "زووم بلور",
"Zoom In": "تكبير",
"Zoom Out": "تصغير",
"Zoom blur": "زووم طمس",
"Zoom in": "تكبير",
"Zoom out": "تصغير",
"Zoom:": "تكبير:"
}

View File

@ -1,4 +1,5 @@
{
"11px Arial": "",
"1em": "",
"24-Points star": "",
"2d": "",
@ -49,6 +50,7 @@
"Can not animate 1 layer.": "",
"Can not find previous layer.": "",
"Cancel": "",
"Canvas size": "",
"Center": "",
"Center x:": "",
"Center y:": "",
@ -130,6 +132,7 @@
"Emboss": "",
"Empty selection": "",
"Empty selection or type not image.": "",
"Enable guides:": "",
"Enable snap:": "",
"End": "",
"English": "",
@ -139,6 +142,7 @@
"Erase on rotate object is disabled. Sorry.": "",
"Error": "",
"Error connecting to service.": "",
"Error registering service worker": "",
"Error: can not find filter:": "",
"Error: can not find layer with id:": "",
"Error: missing details event target": "",
@ -148,6 +152,7 @@
"Español": "",
"Expand edges": "",
"Exponent:": "",
"Export": "",
"External": "",
"Factor:": "",
"File": "",
@ -163,6 +168,7 @@
"Font": "",
"Français": "",
"Full HD, 1080p": "",
"Full Screen": "",
"Full layers data": "",
"Gap:": "",
"Gaussian Blur": "",
@ -179,6 +185,8 @@
"Greyscale:": "",
"Grid": "",
"Grid on\/off": "",
"Guides": "",
"Guides enabled.": "",
"H Radius:": "",
"H. Align:": "",
"Heatmap": "",
@ -194,6 +202,7 @@
"Horizontal": "",
"Horizontal Alignment": "",
"Horizontal blur:": "",
"Horizontal:": "",
"Hue": "",
"Hue Rotate": "",
"Hue:": "",
@ -203,6 +212,8 @@
"Increase": "",
"Information": "",
"Inkwell": "",
"Insert": "",
"Insert guides": "",
"Insert:": "",
"Instagram Filters": "",
"Invalid Hex Code": "",
@ -210,6 +221,7 @@
"JPG\/JPEG Format": "",
"Kerning:": "",
"Key-Points": "",
"KeyU": "",
"Keyboard Shortcuts": "",
"Keyword:": "",
"Lanczos": "",
@ -303,6 +315,7 @@
"Placeholder comment for color swatches": "",
"Portable Network Graphics": "",
"Português": "",
"Position:": "",
"Power:": "",
"Preview": "",
"Previous": "",
@ -319,6 +332,7 @@
"Red": "",
"Red channel:": "",
"Redo": "",
"Remove all": "",
"Rename": "",
"Rename Layer": "",
"Rendered with errors.": "",
@ -345,11 +359,12 @@
"Rotate is not supported on this type of object. Convert to raster?": "",
"Rotate left": "",
"Rotate:": "",
"Ruler": "",
"SQUOOSH - Compress and Compare Images": "",
"Saturate": "",
"Saturation": "",
"Saturation:": "",
"Save": "",
"Save (Export)": "",
"Save As": "",
"Save As Data URL": "",
"Save as": "",
@ -399,6 +414,7 @@
"Strict": "",
"TINYPNG - Compress PNG and JPEG": "",
"Tab": "",
"Tag Image File Format": "",
"Tahoma": "",
"Target:": "",
"Theme": "",
@ -428,12 +444,15 @@
"Trim borders:": "",
"Trim layer:": "",
"Trim white color?": "",
"Type:": "",
"Türkçe": "",
"Undo": "",
"Unique colors:": "",
"Up": "",
"Update": "",
"Update Brush Layer": "",
"Update Pencil Layer": "",
"Update guides": "",
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "",
"V Radius:": "",
"V. Align:": "",
@ -443,11 +462,12 @@
"Vertical": "",
"Vertical Alignment": "",
"Vertical blur:": "",
"Vertical:": "",
"Vibrance": "",
"View": "",
"Vignette": "",
"ViliusL": "",
"Vintage": "",
"Visible:": "",
"Webcam": "",
"Webcam #": "",
"Website:": "",

View File

@ -12,6 +12,7 @@ $SOURCE_DIRS = [
];
$LANGUAGES = [
'ar',
'de',
'es',
'fr',
@ -22,7 +23,7 @@ $LANGUAGES = [
'pt',
'ru',
'tr',
'zh',
'zh',
];
$LANG_DIR = __DIR__ . '/../../src/js/languages/';

View File

@ -10,14 +10,17 @@ $translator = new Translator();
<title>Translator</title>
</head>
<body>
<h3 style="margin: 10px 0px;"><a href="">Translator</a></h3>
<h3 style="margin: 10px 0;"><a href="">Translator</a></h3>
<form action="" method="post">
<b>Helpers</b>:
<input type="submit" name="action" value="Import" />
<input type="submit" name="action" value="Filter" />
<input type="submit" name="action" value="Translate manually" />
<input type="submit" name="action" value="Merge" />
<br /><br />
<b>Actions</b>:
<input type="submit" name="action" value="Generate empty.json" />
<input style="font-weight:bold;" type="submit" name="action" value="Auto Tanslate" />
<input style="font-weight:bold;" type="submit" name="action" value="Auto Translate" />
<br /><br />
<?php
if (count($_POST) > 0) {
@ -25,13 +28,13 @@ $translator = new Translator();
if ($_POST['action'] == 'Import') {
$translator->scan();
$translator->extract();
echo "<xmp>"; print_r($translator->strings); echo "</xmp>\n";
echo "<pre>"; print_r($translator->strings); echo "</pre>\n";
}
if ($_POST['action'] == 'Filter') {
$translator->scan();
$translator->extract();
$translator->filter();
echo "<xmp>"; print_r($translator->strings); echo "</xmp>\n";
echo "<pre>"; print_r($translator->strings); echo "</pre>\n";
}
if ($_POST['action'] == 'Translate manually') {
//show form
@ -51,7 +54,7 @@ $translator = new Translator();
if ($_POST['action'] == 'Merge') {
$translator->merge();
}
if ($_POST['action'] == 'Auto Tanslate') {
if ($_POST['action'] == 'Auto Translate') {
//prepare
$translator->scan();
$translator->extract();

View File

@ -13,10 +13,11 @@ class Translator {
public $files;
public $strings;
public $translations;
public $lang;
/**
* scan external resources
*
* @throws Exception
*/
public function scan() {
global $SOURCE_DIRS;
@ -51,6 +52,8 @@ class Translator {
/**
* extracts strings from files
*
* @throws Exception
*/
public function extract() {
$this->strings = array();
@ -64,6 +67,9 @@ class Translator {
//drop svg
$content = preg_replace('|<path.*/>|i', '', $content);
//drop exceptions
$content = preg_replace('|\/\/no-translate BEGIN[\s\S]+?\/\/no-translate END|mi', '', $content);
//drop
$content = stripslashes($content);
@ -179,8 +185,6 @@ class Translator {
continue;
}
//$string = $this->my_mb_ucfirst(mb_strtolower($string));
$this->strings[] = $string;
}
$this->strings = array_unique($this->strings);
@ -189,6 +193,8 @@ class Translator {
/**
* prepare strings for translating for user
*
* @throws Exception
*/
public function prepare() {
$this->scan();
@ -201,10 +207,6 @@ class Translator {
if (isset($_POST['in']))
$in_content = $_POST['in'];
$lang = '';
if (isset($_POST['lang']))
$lang = $_POST['lang'];
echo '<textarea name="out" style="width:100%;height:25vh;">' . implode("\n", $data) . '</textarea><br /><br />';
echo 'Translate text above with <a href="https://translate.google.com/">translator</a> and paste result below:<br /><br />';
echo '<textarea name="in" style="width:100%;height:25vh;">' . $in_content . '</textarea><br />';
@ -214,8 +216,9 @@ class Translator {
/**
* combines source strings and manually translated strings to json format
*
* @param array $translation
* @param string $lang 2 lang cde
* @param string $translation
*
* @throws Exception
*/
public function add_translation($translation) {
$translation = trim($translation);
@ -237,6 +240,11 @@ class Translator {
}
}
/**
* translates everything automatically
*
* @throws Exception
*/
public function auto_translate() {
global $LANGUAGES, $LANG_DIR;
@ -308,6 +316,8 @@ class Translator {
/**
* saves current data as empty file
*
* @throws Exception
*/
public function save_empty() {
global $LANG_DIR_EMPTY;
@ -342,6 +352,8 @@ class Translator {
/**
* merge two translations
*
* @throws Exception
*/
public function merge() {
echo 'Old translations: <b>(priority on same keys)</b><br />';
@ -386,9 +398,4 @@ class Translator {
echo '</textarea>';
}
private function my_mb_ucfirst($str) {
$fc = mb_strtoupper(mb_substr($str, 0, 1));
return $fc . mb_substr($str, 1);
}
}